@yina-npm/openrouterx 0.4.20 â 0.4.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/.next/BUILD_ID +1 -1
- package/app/.next/app-path-routes-manifest.json +6 -3
- package/app/.next/build-manifest.json +2 -2
- package/app/.next/routes-manifest.json +18 -0
- package/app/.next/server/app/(dashboard)/dashboard/admin/keys/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/admin/keys/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/admin/keys/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/admin/users/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/admin/users/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/admin/users/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +3 -3
- 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/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 +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js +3 -3
- package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/quota/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/skills/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/user/page.js +3 -3
- package/app/.next/server/app/(dashboard)/dashboard/user/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/user/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error/page.js +3 -3
- package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error.html +1 -1
- package/app/.next/server/app/_global-error.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/_not-found/page.js +2 -2
- package/app/.next/server/app/_not-found/page_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/logout/route.js +1 -1
- package/app/.next/server/app/api/auth/me/route.js +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/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/claude-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/codex-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/copilot-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -0
- package/app/.next/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -0
- package/app/.next/server/app/api/cli-tools/cowork-mcp-registry/route_client-reference-manifest.js +1 -0
- package/app/.next/server/app/api/cli-tools/cowork-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/droid-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/hermes-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/opencode-settings/route.js +2 -2
- package/app/.next/server/app/api/cloud/auth/route.js +1 -1
- package/app/.next/server/app/api/cloud/credentials/update/route.js +1 -1
- package/app/.next/server/app/api/cloud/model/resolve/route.js +1 -1
- package/app/.next/server/app/api/cloud/models/alias/route.js +1 -1
- package/app/.next/server/app/api/combos/[id]/route.js +1 -1
- package/app/.next/server/app/api/combos/route.js +1 -1
- package/app/.next/server/app/api/health/route.js +1 -1
- package/app/.next/server/app/api/init/route.js +1 -1
- package/app/.next/server/app/api/keys/[id]/route.js +1 -1
- package/app/.next/server/app/api/keys/route.js +1 -1
- package/app/.next/server/app/api/locale/route.js +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/elevenlabs/voices/route.js +1 -1
- package/app/.next/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
- package/app/.next/server/app/api/media-providers/tts/voices/route.js +1 -1
- package/app/.next/server/app/api/models/alias/route.js +1 -1
- package/app/.next/server/app/api/models/availability/route.js +1 -1
- package/app/.next/server/app/api/models/custom/route.js +1 -1
- package/app/.next/server/app/api/models/disabled/route.js +1 -1
- package/app/.next/server/app/api/models/route.js +1 -1
- package/app/.next/server/app/api/models/test/route.js +1 -1
- package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +1 -1
- package/app/.next/server/app/api/oauth/cursor/auto-import/route.js +2 -2
- package/app/.next/server/app/api/oauth/cursor/import/route.js +1 -1
- package/app/.next/server/app/api/oauth/gitlab/pat/route.js +1 -1
- package/app/.next/server/app/api/oauth/iflow/cookie/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/auto-import/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/import/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
- package/app/.next/server/app/api/pricing/route.js +1 -1
- package/app/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
- package/app/.next/server/app/api/provider-nodes/route.js +1 -1
- package/app/.next/server/app/api/provider-nodes/validate/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/models/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/test/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/test-models/route.js +1 -1
- package/app/.next/server/app/api/providers/client/route.js +1 -1
- package/app/.next/server/app/api/providers/kilo/free-models/route.js +1 -1
- package/app/.next/server/app/api/providers/route.js +1 -1
- package/app/.next/server/app/api/providers/suggested-models/route.js +1 -1
- package/app/.next/server/app/api/providers/test-batch/route.js +1 -1
- package/app/.next/server/app/api/providers/validate/route.js +1 -1
- package/app/.next/server/app/api/proxy-pools/[id]/route.js +1 -1
- package/app/.next/server/app/api/proxy-pools/[id]/test/route.js +1 -1
- package/app/.next/server/app/api/proxy-pools/route.js +1 -1
- package/app/.next/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
- package/app/.next/server/app/api/settings/database/route.js +1 -1
- package/app/.next/server/app/api/settings/proxy-test/route.js +1 -1
- package/app/.next/server/app/api/settings/require-login/route.js +1 -1
- package/app/.next/server/app/api/settings/route.js +1 -1
- package/app/.next/server/app/api/shutdown/route.js +1 -1
- package/app/.next/server/app/api/tags/route.js +1 -1
- package/app/.next/server/app/api/translator/console-logs/route.js +1 -1
- package/app/.next/server/app/api/translator/console-logs/stream/route.js +2 -2
- package/app/.next/server/app/api/translator/load/route.js +1 -1
- package/app/.next/server/app/api/translator/save/route.js +1 -1
- package/app/.next/server/app/api/translator/send/route.js +1 -1
- package/app/.next/server/app/api/translator/translate/route.js +1 -1
- package/app/.next/server/app/api/tunnel/disable/route.js +1 -1
- package/app/.next/server/app/api/tunnel/enable/route.js +1 -1
- package/app/.next/server/app/api/tunnel/status/route.js +1 -1
- package/app/.next/server/app/api/tunnel/tailscale-check/route.js +1 -1
- package/app/.next/server/app/api/tunnel/tailscale-disable/route.js +1 -1
- package/app/.next/server/app/api/tunnel/tailscale-enable/route.js +1 -1
- package/app/.next/server/app/api/tunnel/tailscale-install/route.js +3 -3
- package/app/.next/server/app/api/tunnel/tailscale-login/route.js +1 -1
- package/app/.next/server/app/api/tunnel/tailscale-start-daemon/route.js +2 -2
- package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
- package/app/.next/server/app/api/usage/api-keys/route.js +1 -1
- package/app/.next/server/app/api/usage/chart/route.js +1 -1
- package/app/.next/server/app/api/usage/history/route.js +1 -1
- package/app/.next/server/app/api/usage/logs/route.js +1 -1
- package/app/.next/server/app/api/usage/providers/route.js +1 -1
- package/app/.next/server/app/api/usage/request-details/route.js +1 -1
- package/app/.next/server/app/api/usage/request-logs/route.js +1 -1
- package/app/.next/server/app/api/usage/stats/route.js +1 -1
- package/app/.next/server/app/api/usage/stream/route.js +2 -2
- package/app/.next/server/app/api/users/[id]/route.js +1 -1
- package/app/.next/server/app/api/users/route.js +1 -1
- package/app/.next/server/app/api/v1/api/chat/route.js +1 -1
- package/app/.next/server/app/api/v1/audio/speech/route.js +1 -1
- package/app/.next/server/app/api/v1/audio/transcriptions/route.js +1 -1
- package/app/.next/server/app/api/v1/audio/voices/route.js +1 -0
- package/app/.next/server/app/api/v1/audio/voices/route.js.nft.json +1 -0
- package/app/.next/server/app/api/v1/audio/voices/route_client-reference-manifest.js +1 -0
- package/app/.next/server/app/api/v1/chat/completions/route.js +1 -1
- package/app/.next/server/app/api/v1/embeddings/route.js +1 -1
- package/app/.next/server/app/api/v1/images/generations/route.js +2 -2
- package/app/.next/server/app/api/v1/messages/count_tokens/route.js +1 -1
- package/app/.next/server/app/api/v1/messages/route.js +1 -1
- package/app/.next/server/app/api/v1/models/[kind]/route.js +1 -1
- package/app/.next/server/app/api/v1/models/info/route.js +1 -0
- package/app/.next/server/app/api/v1/models/info/route.js.nft.json +1 -0
- package/app/.next/server/app/api/v1/models/info/route_client-reference-manifest.js +1 -0
- package/app/.next/server/app/api/v1/models/route.js +1 -1
- package/app/.next/server/app/api/v1/responses/compact/route.js +1 -1
- package/app/.next/server/app/api/v1/responses/route.js +1 -1
- package/app/.next/server/app/api/v1/route.js +1 -1
- package/app/.next/server/app/api/v1/search/route.js +1 -1
- package/app/.next/server/app/api/v1/web/fetch/route.js +1 -1
- package/app/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
- package/app/.next/server/app/api/v1beta/models/route.js +1 -1
- package/app/.next/server/app/api/version/route.js +1 -1
- package/app/.next/server/app/api/version/update/route.js +1 -1
- package/app/.next/server/app/callback/page.js +2 -2
- 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_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/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_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_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/page.js +2 -2
- package/app/.next/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app-paths-manifest.json +6 -3
- package/app/.next/server/chunks/2343.js +1 -1
- package/app/.next/server/chunks/3855.js +1 -1
- package/app/.next/server/chunks/3913.js +1 -1
- package/app/.next/server/chunks/412.js +6 -6
- package/app/.next/server/chunks/4122.js +1 -1
- package/app/.next/server/chunks/4989.js +1 -1
- package/app/.next/server/chunks/5627.js +2 -2
- package/app/.next/server/chunks/5681.js +1 -1
- package/app/.next/server/chunks/6182.js +3 -3
- package/app/.next/server/chunks/6774.js +1 -0
- package/app/.next/server/chunks/7595.js +1 -1
- package/app/.next/server/chunks/7937.js +3 -3
- package/app/.next/server/chunks/9547.js +23 -0
- package/app/.next/server/middleware-build-manifest.js +1 -1
- package/app/.next/server/middleware.js +1 -1
- 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/2TCKT7FIN7PE7ZJ20oAeb/_buildManifest.js +1 -0
- package/app/.next/static/chunks/{1321-764b2073673fc333.js â 1321-b84130cd27e8b78c.js} +1 -1
- package/app/.next/static/chunks/1a258343-5938f676ed376386.js +1 -0
- package/app/.next/static/chunks/2336-5b3617dc05c223ff.js +23 -0
- package/app/.next/static/chunks/5497-a2d728c63029180e.js +7 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/{page-ba226c8b3c01dd8d.js â page-bd677c182bc2aae9.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/{page-cee4e0a7455b73ca.js â page-32b908ea6b23f583.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/{page-28a10e3cb86b9581.js â page-82cfc464b5e01f4f.js} +2 -2
- package/app/.next/static/chunks/app/(dashboard)/dashboard/mitm/{page-99260106103e6a4e.js â page-4473f52ad379b661.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/page-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/layout-7ea5a7abc543b04d.js +1 -0
- package/app/.next/static/chunks/app/_global-error/page-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/auth/login/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/auth/logout/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/auth/me/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/auth/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/credentials/update/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/model/resolve/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/models/alias/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/combos/[id]/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/combos/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/health/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/init/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/keys/[id]/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/keys/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/locale/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/models/alias/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/models/availability/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/models/custom/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/models/disabled/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/models/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/models/test/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/cursor/import/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/import/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/pricing/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/validate/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/models/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/test/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/providers/client/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/providers/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/providers/suggested-models/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/providers/test-batch/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/providers/validate/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/proxy-pools/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/settings/database/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/settings/proxy-test/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/settings/require-login/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/settings/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/shutdown/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/tags/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/translator/console-logs/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/translator/load/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/translator/save/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/translator/send/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/translator/translate/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/disable/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/enable/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/status/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/tailscale-check/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/tailscale-disable/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/tailscale-enable/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/tailscale-install/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/tailscale-login/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/tailscale-start-daemon/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/usage/[connectionId]/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/usage/api-keys/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/usage/chart/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/usage/history/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/usage/logs/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/usage/providers/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/usage/request-details/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/usage/request-logs/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/usage/stats/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/usage/stream/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/users/[id]/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/users/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/v1/api/chat/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/v1/audio/speech/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/v1/audio/voices/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/v1/chat/completions/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/v1/embeddings/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/v1/images/generations/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/v1/messages/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/v1/models/[kind]/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/v1/models/info/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/v1/models/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/v1/responses/compact/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/v1/responses/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/v1/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/v1/search/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/v1/web/fetch/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/v1beta/models/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/version/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/api/version/update/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/manifest.webmanifest/route-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/app/page-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-d1c369e2c3fb727b.js +1 -0
- package/app/.next/static/css/48caf49054c81db9.css +1 -0
- package/app/package.json +1 -1
- package/app/src/lib/updater/updater.js +6 -2
- package/app/src/mitm/dns/dnsConfig.js +1 -1
- package/app/src/mitm/handlers/kiro.js +385 -6
- package/app/src/mitm/manager.js +12 -3
- package/app/src/mitm/paths.js +7 -3
- package/cli.js +4 -3
- package/package.json +1 -1
- package/app/.next/server/chunks/212.js +0 -1
- package/app/.next/server/chunks/2238.js +0 -23
- package/app/.next/static/V2uXdl1SgLstSOcrQU5I9/_buildManifest.js +0 -1
- package/app/.next/static/chunks/1a258343-4878413fb430abba.js +0 -1
- package/app/.next/static/chunks/4295-99e90be71bb8d50c.js +0 -23
- package/app/.next/static/chunks/5497-27af7f632895d68e.js +0 -7
- package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/page-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/layout-edd266e7233eb314.js +0 -1
- package/app/.next/static/chunks/app/_global-error/page-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/auth/login/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/auth/logout/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/auth/me/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/auth/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/credentials/update/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/model/resolve/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/models/alias/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/combos/[id]/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/combos/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/health/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/init/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/keys/[id]/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/keys/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/locale/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/models/alias/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/models/availability/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/models/custom/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/models/disabled/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/models/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/models/test/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/cursor/import/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/import/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/pricing/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/validate/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/models/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/test/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/providers/client/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/providers/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/providers/suggested-models/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/providers/test-batch/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/providers/validate/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/proxy-pools/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/settings/database/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/settings/proxy-test/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/settings/require-login/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/settings/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/shutdown/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/tags/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/translator/console-logs/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/translator/load/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/translator/save/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/translator/send/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/translator/translate/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/disable/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/enable/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/status/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/tailscale-check/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/tailscale-disable/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/tailscale-enable/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/tailscale-install/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/tailscale-login/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/tailscale-start-daemon/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/usage/[connectionId]/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/usage/api-keys/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/usage/chart/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/usage/history/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/usage/logs/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/usage/providers/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/usage/request-details/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/usage/request-logs/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/usage/stats/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/usage/stream/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/users/[id]/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/users/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/v1/api/chat/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/v1/audio/speech/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/v1/chat/completions/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/v1/embeddings/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/v1/images/generations/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/v1/messages/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/v1/models/[kind]/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/v1/models/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/v1/responses/compact/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/v1/responses/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/v1/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/v1/search/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/v1/web/fetch/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/v1beta/models/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/version/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/api/version/update/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/manifest.webmanifest/route-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/app/page-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-badb7034e478a358.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-badb7034e478a358.js +0 -1
- package/app/.next/static/css/76d369cc5468e708.css +0 -1
- /package/app/.next/static/{V2uXdl1SgLstSOcrQU5I9 â 2TCKT7FIN7PE7ZJ20oAeb}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(()=>{var a={};a.id=1451,a.ids=[1451],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},2203:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>E,patchFetch:()=>D,routeModule:()=>z,serverHooks:()=>C,workAsyncStorage:()=>A,workUnitAsyncStorage:()=>B});var d={};c.r(d),c.d(d,{POST:()=>y});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(23211),w=c(62409),x=c(71998);async function y(a){try{let{code:b,codeVerifier:c,provider:d}=await a.json();if(!b||!c)return v.NextResponse.json({error:"Missing required fields"},{status:400});if(!d||!["google","github"].includes(d))return v.NextResponse.json({error:"Invalid provider"},{status:400});let e=new w.v,f=await e.exchangeSocialCode(b,c),g=e.extractEmailFromJWT(f.accessToken),h=await (0,x.createProviderConnection)({provider:"kiro",authType:"oauth",accessToken:f.accessToken,refreshToken:f.refreshToken,expiresAt:new Date(Date.now()+1e3*f.expiresIn).toISOString(),email:g||null,providerSpecificData:{profileArn:f.profileArn,authMethod:d,provider:d.charAt(0).toUpperCase()+d.slice(1)},testStatus:"active"});return v.NextResponse.json({success:!0,connection:{id:h.id,provider:h.provider,email:h.email}})}catch(a){return console.log("Kiro social exchange error:",a),v.NextResponse.json({error:a.message},{status:500})}}let z=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/oauth/kiro/social-exchange/route",pathname:"/api/oauth/kiro/social-exchange",filename:"route",bundlePath:"app/api/oauth/kiro/social-exchange/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/bytedance/Documents/9router/src/app/api/oauth/kiro/social-exchange/route.js",nextConfigOutput:"standalone",userland:d,...{}}),{workAsyncStorage:A,workUnitAsyncStorage:B,serverHooks:C}=z;function D(){return(0,g.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:B})}async function E(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),z.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/oauth/kiro/social-exchange/route";"/index"===d&&(d="/");let e=await z.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,params:v,nextConfig:w,parsedUrl:x,isDraftMode:y,prerenderManifest:A,routerServerContext:B,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,resolvedPathname:E,clientReferenceManifest:F,serverActionsManifest:G}=e,H=(0,k.normalizeAppPath)(d),I=!!(A.dynamicRoutes[H]||A.routes[E]),J=async()=>((null==B?void 0:B.render404)?await B.render404(a,b,x,!1):b.end("This page could not be found"),null);if(I&&!y){let a=!!A.routes[E],b=A.dynamicRoutes[H];if(b&&!1===b.fallback&&!a){if(w.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||z.isDev||y||(K="/index"===(K=E)?"/":K);let L=!0===z.isDev||!I,M=I&&!L;G&&F&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:F,serverActionsManifest:G});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q=!!(null==B?void 0:B.isWrappedByNextServer),R=!!(0,h.getRequestMeta)(a,"minimalMode"),S=(0,h.getRequestMeta)(a,"incrementalCache")||await z.getIncrementalCache(a,w,A,R);null==S||S.resetRequestCache(),globalThis.__incrementalCache=S;let T={params:v,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:L,incrementalCache:S,cacheLifeProfiles:w.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>z.onRequestError(a,b,d,e,B)},sharedContext:{buildId:g}},U=new l.NodeNextRequest(a),V=new l.NodeNextResponse(b),W=m.NextRequestAdapter.fromNodeNextRequest(U,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>z.handle(W,T).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${N} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${N} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!R&&C&&D&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=T.renderOpts.fetchMetrics;let h=T.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=T.renderOpts.collectedTags;if(!I)return await (0,p.I)(U,V,d,T.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==T.renderOpts.collectedRevalidate&&!(T.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&T.renderOpts.collectedRevalidate,e=void 0===T.renderOpts.collectedExpire||T.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:T.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await z.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),b}},k=await z.handleResponse({req:a,nextConfig:w,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:R});if(!I)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});R||b.setHeader("x-nextjs-cache",C?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),y&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return R&&I||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(U,V,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};Q&&P?await h(P):(e=O.getActiveScopeSpan(),await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},h),void 0,!Q))}catch(b){if(b instanceof t.NoFallbackError||await z.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),I)throw b;return await (0,p.I)(U,V,new Response(null,{status:500})),null}}},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},11259:(a,b,c)=>{c.d(b,{Pv:()=>k}),c(73024);var d=c(51455),e=c(76760),f=c(73136);async function g(a,b,c){for(let d=0;d<b;d++)try{return await a()}catch(a){if(d<b-1)await new Promise(a=>setTimeout(a,c));else throw a}}class h{#a;#b;#c=!1;#d=null;#e=null;#f=null;#g=null;#h(a){return this.#g=a,this.#f||=new Promise((a,b)=>{this.#e=[a,b]}),new Promise((a,b)=>{this.#f?.then(a).catch(b)})}async #i(a){this.#c=!0;try{await (0,d.writeFile)(this.#b,a,"utf-8"),await g(async()=>{await (0,d.rename)(this.#b,this.#a)},10,100),this.#d?.[0]()}catch(a){throw a instanceof Error&&this.#d?.[1](a),a}finally{if(this.#c=!1,this.#d=this.#e,this.#e=this.#f=null,null!==this.#g){let a=this.#g;this.#g=null,await this.write(a)}}}constructor(a){this.#a=a,this.#b=function(a){let b=a instanceof URL?(0,f.fileURLToPath)(a):a.toString();return(0,e.join)((0,e.dirname)(b),`.${(0,e.basename)(b)}.tmp`)}(a)}async write(a){return this.#c?this.#h(a):this.#i(a)}}class i{#a;#j;constructor(a){this.#a=a,this.#j=new h(a)}async read(){let a;try{a=await (0,d.readFile)(this.#a,"utf-8")}catch(a){if("ENOENT"===a.code)return null;throw a}return a}write(a){return this.#j.write(a)}}class j{#k;#l;#m;constructor(a,{parse:b,stringify:c}){this.#k=new i(a),this.#l=b,this.#m=c}async read(){let a=await this.#k.read();return null===a?null:this.#l(a)}write(a){return this.#k.write(this.#m(a))}}class k extends j{constructor(a){super(a,{parse:JSON.parse,stringify:a=>JSON.stringify(a,null,2)})}}},12412:a=>{a.exports=require("assert")},21820:a=>{a.exports=require("os")},27910:a=>{a.exports=require("stream")},28354:a=>{a.exports=require("util")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{a.exports=require("path")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},49120:(a,b,c)=>{c.d(b,{n:()=>k});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h);function j(a){return"win32"===process.platform?g().join(process.env.APPDATA||g().join(i().homedir(),"AppData","Roaming"),a):g().join(i().homedir(),`.${a}`)}let k=function(){if(process.env.DATA_DIR)return process.env.DATA_DIR;let a=j("openrouterx"),b=j("9router");return!e().existsSync(a)&&e().existsSync(b)?b:a}()},51455:a=>{a.exports=require("node:fs/promises")},55511:a=>{a.exports=require("crypto")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},71998:(a,b,c)=>{c.d(b,{Fh:()=>d.getProviderNodes,L9:()=>d.L9,Mc:()=>d.Mc,OM:()=>d.OM,P:()=>d.getProviderConnections,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Yd:()=>d.Yd,ZO:()=>d.ZO,c:()=>d.c,createProviderConnection:()=>d.iE,ek:()=>d.ek,fK:()=>d.fK,fv:()=>d.fv,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,o5:()=>d.o5,op:()=>d.op,rj:()=>d.updateProviderConnection,uL:()=>d.uL,ui:()=>d.ui,uv:()=>d.uv});var d=c(89718)},73024:a=>{a.exports=require("node:fs")},73136:a=>{a.exports=require("node:url")},76760:a=>{a.exports=require("node:path")},77598:a=>{a.exports=require("node:crypto")},81115:a=>{a.exports=require("constants")},82996:(a,b,c)=>{c.d(b,{t:()=>d});class d{adapter;data;constructor(a,b){!function(a,b){if(void 0===a)throw Error("lowdb: missing adapter");if(void 0===b)throw Error("lowdb: missing default data")}(a,b),this.adapter=a,this.data=b}async read(){let a=await this.adapter.read();a&&(this.data=a)}async write(){this.data&&await this.adapter.write(this.data)}async update(a){a(this.data),await this.write()}}},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},94735:a=>{a.exports=require("events")}};var b=require("../../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,7502,1813,9718,3245],()=>b(b.s=2203));module.exports=c})();
|
|
1
|
+
"use strict";(()=>{var a={};a.id=1451,a.ids=[1451],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},11259:(a,b,c)=>{c.d(b,{Pv:()=>k}),c(73024);var d=c(51455),e=c(76760),f=c(73136);async function g(a,b,c){for(let d=0;d<b;d++)try{return await a()}catch(a){if(d<b-1)await new Promise(a=>setTimeout(a,c));else throw a}}class h{#a;#b;#c=!1;#d=null;#e=null;#f=null;#g=null;#h(a){return this.#g=a,this.#f||=new Promise((a,b)=>{this.#e=[a,b]}),new Promise((a,b)=>{this.#f?.then(a).catch(b)})}async #i(a){this.#c=!0;try{await (0,d.writeFile)(this.#b,a,"utf-8"),await g(async()=>{await (0,d.rename)(this.#b,this.#a)},10,100),this.#d?.[0]()}catch(a){throw a instanceof Error&&this.#d?.[1](a),a}finally{if(this.#c=!1,this.#d=this.#e,this.#e=this.#f=null,null!==this.#g){let a=this.#g;this.#g=null,await this.write(a)}}}constructor(a){this.#a=a,this.#b=function(a){let b=a instanceof URL?(0,f.fileURLToPath)(a):a.toString();return(0,e.join)((0,e.dirname)(b),`.${(0,e.basename)(b)}.tmp`)}(a)}async write(a){return this.#c?this.#h(a):this.#i(a)}}class i{#a;#j;constructor(a){this.#a=a,this.#j=new h(a)}async read(){let a;try{a=await (0,d.readFile)(this.#a,"utf-8")}catch(a){if("ENOENT"===a.code)return null;throw a}return a}write(a){return this.#j.write(a)}}class j{#k;#l;#m;constructor(a,{parse:b,stringify:c}){this.#k=new i(a),this.#l=b,this.#m=c}async read(){let a=await this.#k.read();return null===a?null:this.#l(a)}write(a){return this.#k.write(this.#m(a))}}class k extends j{constructor(a){super(a,{parse:JSON.parse,stringify:a=>JSON.stringify(a,null,2)})}}},12412:a=>{a.exports=require("assert")},21820:a=>{a.exports=require("os")},27910:a=>{a.exports=require("stream")},28354:a=>{a.exports=require("util")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{a.exports=require("path")},36552:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>E,patchFetch:()=>D,routeModule:()=>z,serverHooks:()=>C,workAsyncStorage:()=>A,workUnitAsyncStorage:()=>B});var d={};c.r(d),c.d(d,{POST:()=>y});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(23211),w=c(62409),x=c(71998);async function y(a){try{let{code:b,codeVerifier:c,provider:d}=await a.json();if(!b||!c)return v.NextResponse.json({error:"Missing required fields"},{status:400});if(!d||!["google","github"].includes(d))return v.NextResponse.json({error:"Invalid provider"},{status:400});let e=new w.v,f=await e.exchangeSocialCode(b,c),g=e.extractEmailFromJWT(f.accessToken),h=await (0,x.createProviderConnection)({provider:"kiro",authType:"oauth",accessToken:f.accessToken,refreshToken:f.refreshToken,expiresAt:new Date(Date.now()+1e3*f.expiresIn).toISOString(),email:g||null,providerSpecificData:{profileArn:f.profileArn,authMethod:d,provider:d.charAt(0).toUpperCase()+d.slice(1)},testStatus:"active"});return v.NextResponse.json({success:!0,connection:{id:h.id,provider:h.provider,email:h.email}})}catch(a){return console.log("Kiro social exchange error:",a),v.NextResponse.json({error:a.message},{status:500})}}let z=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/oauth/kiro/social-exchange/route",pathname:"/api/oauth/kiro/social-exchange",filename:"route",bundlePath:"app/api/oauth/kiro/social-exchange/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/bytedance/Documents/9router/src/app/api/oauth/kiro/social-exchange/route.js",nextConfigOutput:"standalone",userland:d,...{}}),{workAsyncStorage:A,workUnitAsyncStorage:B,serverHooks:C}=z;function D(){return(0,g.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:B})}async function E(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),z.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/oauth/kiro/social-exchange/route";"/index"===d&&(d="/");let e=await z.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,params:v,nextConfig:w,parsedUrl:x,isDraftMode:y,prerenderManifest:A,routerServerContext:B,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,resolvedPathname:E,clientReferenceManifest:F,serverActionsManifest:G}=e,H=(0,k.normalizeAppPath)(d),I=!!(A.dynamicRoutes[H]||A.routes[E]),J=async()=>((null==B?void 0:B.render404)?await B.render404(a,b,x,!1):b.end("This page could not be found"),null);if(I&&!y){let a=!!A.routes[E],b=A.dynamicRoutes[H];if(b&&!1===b.fallback&&!a){if(w.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||z.isDev||y||(K="/index"===(K=E)?"/":K);let L=!0===z.isDev||!I,M=I&&!L;G&&F&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:F,serverActionsManifest:G});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q=!!(null==B?void 0:B.isWrappedByNextServer),R=!!(0,h.getRequestMeta)(a,"minimalMode"),S=(0,h.getRequestMeta)(a,"incrementalCache")||await z.getIncrementalCache(a,w,A,R);null==S||S.resetRequestCache(),globalThis.__incrementalCache=S;let T={params:v,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:L,incrementalCache:S,cacheLifeProfiles:w.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>z.onRequestError(a,b,d,e,B)},sharedContext:{buildId:g}},U=new l.NodeNextRequest(a),V=new l.NodeNextResponse(b),W=m.NextRequestAdapter.fromNodeNextRequest(U,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>z.handle(W,T).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${N} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${N} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!R&&C&&D&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=T.renderOpts.fetchMetrics;let h=T.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=T.renderOpts.collectedTags;if(!I)return await (0,p.I)(U,V,d,T.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==T.renderOpts.collectedRevalidate&&!(T.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&T.renderOpts.collectedRevalidate,e=void 0===T.renderOpts.collectedExpire||T.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:T.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await z.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),b}},k=await z.handleResponse({req:a,nextConfig:w,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:R});if(!I)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});R||b.setHeader("x-nextjs-cache",C?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),y&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return R&&I||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(U,V,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};Q&&P?await h(P):(e=O.getActiveScopeSpan(),await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},h),void 0,!Q))}catch(b){if(b instanceof t.NoFallbackError||await z.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),I)throw b;return await (0,p.I)(U,V,new Response(null,{status:500})),null}}},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},49120:(a,b,c)=>{c.d(b,{n:()=>i}),c(29021);var d,e=c(33873),f=c.n(e),g=c(21820),h=c.n(g);let i=process.env.DATA_DIR?process.env.DATA_DIR:(d="openrouterx","win32"===process.platform?f().join(process.env.APPDATA||f().join(h().homedir(),"AppData","Roaming"),d):f().join(h().homedir(),`.${d}`))},51455:a=>{a.exports=require("node:fs/promises")},55511:a=>{a.exports=require("crypto")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},71998:(a,b,c)=>{c.d(b,{Fh:()=>d.getProviderNodes,L9:()=>d.L9,Mc:()=>d.Mc,OM:()=>d.OM,P:()=>d.getProviderConnections,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Yd:()=>d.Yd,ZO:()=>d.ZO,c:()=>d.c,createProviderConnection:()=>d.iE,ek:()=>d.ek,fK:()=>d.fK,fv:()=>d.fv,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,o5:()=>d.o5,op:()=>d.op,rj:()=>d.updateProviderConnection,uL:()=>d.uL,ui:()=>d.ui,uv:()=>d.uv});var d=c(89718)},73024:a=>{a.exports=require("node:fs")},73136:a=>{a.exports=require("node:url")},76760:a=>{a.exports=require("node:path")},77598:a=>{a.exports=require("node:crypto")},81115:a=>{a.exports=require("constants")},82996:(a,b,c)=>{c.d(b,{t:()=>d});class d{adapter;data;constructor(a,b){!function(a,b){if(void 0===a)throw Error("lowdb: missing adapter");if(void 0===b)throw Error("lowdb: missing default data")}(a,b),this.adapter=a,this.data=b}async read(){let a=await this.adapter.read();a&&(this.data=a)}async write(){this.data&&await this.adapter.write(this.data)}async update(a){a(this.data),await this.write()}}},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},94735:a=>{a.exports=require("events")}};var b=require("../../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,7502,1813,9718,3245],()=>b(b.s=36552));module.exports=c})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{var a={};a.id=8948,a.ids=[8948],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},11259:(a,b,c)=>{"use strict";c.d(b,{Pv:()=>k}),c(73024);var d=c(51455),e=c(76760),f=c(73136);async function g(a,b,c){for(let d=0;d<b;d++)try{return await a()}catch(a){if(d<b-1)await new Promise(a=>setTimeout(a,c));else throw a}}class h{#a;#b;#c=!1;#d=null;#e=null;#f=null;#g=null;#h(a){return this.#g=a,this.#f||=new Promise((a,b)=>{this.#e=[a,b]}),new Promise((a,b)=>{this.#f?.then(a).catch(b)})}async #i(a){this.#c=!0;try{await (0,d.writeFile)(this.#b,a,"utf-8"),await g(async()=>{await (0,d.rename)(this.#b,this.#a)},10,100),this.#d?.[0]()}catch(a){throw a instanceof Error&&this.#d?.[1](a),a}finally{if(this.#c=!1,this.#d=this.#e,this.#e=this.#f=null,null!==this.#g){let a=this.#g;this.#g=null,await this.write(a)}}}constructor(a){this.#a=a,this.#b=function(a){let b=a instanceof URL?(0,f.fileURLToPath)(a):a.toString();return(0,e.join)((0,e.dirname)(b),`.${(0,e.basename)(b)}.tmp`)}(a)}async write(a){return this.#c?this.#h(a):this.#i(a)}}class i{#a;#j;constructor(a){this.#a=a,this.#j=new h(a)}async read(){let a;try{a=await (0,d.readFile)(this.#a,"utf-8")}catch(a){if("ENOENT"===a.code)return null;throw a}return a}write(a){return this.#j.write(a)}}class j{#k;#l;#m;constructor(a,{parse:b,stringify:c}){this.#k=new i(a),this.#l=b,this.#m=c}async read(){let a=await this.#k.read();return null===a?null:this.#l(a)}write(a){return this.#k.write(this.#m(a))}}class k extends j{constructor(a){super(a,{parse:JSON.parse,stringify:a=>JSON.stringify(a,null,2)})}}},12412:a=>{"use strict";a.exports=require("assert")},21551:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>H,patchFetch:()=>G,routeModule:()=>C,serverHooks:()=>F,workAsyncStorage:()=>D,workUnitAsyncStorage:()=>E});var d={};c.r(d),c.d(d,{DELETE:()=>A,GET:()=>y,GET_DEFAULTS:()=>B,PATCH:()=>z});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(23211),w=c(89718),x=c(57341);async function y(){try{let a=await (0,w.r4)();return v.NextResponse.json(a)}catch(a){return console.error("Error fetching pricing:",a),v.NextResponse.json({error:"Failed to fetch pricing"},{status:500})}}async function z(a){try{let b=await a.json();if("object"!=typeof b||null===b)return v.NextResponse.json({error:"Invalid pricing data format"},{status:400});for(let[a,c]of Object.entries(b)){if("object"!=typeof c||null===c)return v.NextResponse.json({error:`Invalid pricing for provider: ${a}`},{status:400});for(let[b,d]of Object.entries(c)){if("object"!=typeof d||null===d)return v.NextResponse.json({error:`Invalid pricing for model: ${a}/${b}`},{status:400});let c=["input","output","cached","reasoning","cache_creation"];for(let[e,f]of Object.entries(d)){if(!c.includes(e))return v.NextResponse.json({error:`Invalid pricing field: ${e} for ${a}/${b}`},{status:400});if("number"!=typeof f||isNaN(f)||f<0)return v.NextResponse.json({error:`Invalid pricing value for ${e} in ${a}/${b}: must be non-negative number`},{status:400})}}}let c=await (0,w.KJ)(b);return v.NextResponse.json(c)}catch(a){return console.error("Error updating pricing:",a),v.NextResponse.json({error:"Failed to update pricing"},{status:500})}}async function A(a){try{let{searchParams:b}=new URL(a.url),c=b.get("provider"),d=b.get("model");c&&d?await (0,w.yF)(c,d):c?await (0,w.yF)(c):await (0,w.VT)();let e=await (0,w.r4)();return v.NextResponse.json(e)}catch(a){return console.error("Error resetting pricing:",a),v.NextResponse.json({error:"Failed to reset pricing"},{status:500})}}async function B(){try{let a=(0,x.ad)();return v.NextResponse.json(a)}catch(a){return console.error("Error fetching default pricing:",a),v.NextResponse.json({error:"Failed to fetch default pricing"},{status:500})}}let C=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/pricing/route",pathname:"/api/pricing",filename:"route",bundlePath:"app/api/pricing/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/bytedance/Documents/9router/src/app/api/pricing/route.js",nextConfigOutput:"standalone",userland:d,...{}}),{workAsyncStorage:D,workUnitAsyncStorage:E,serverHooks:F}=C;function G(){return(0,g.patchFetch)({workAsyncStorage:D,workUnitAsyncStorage:E})}async function H(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),C.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/pricing/route";"/index"===d&&(d="/");let e=await C.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,params:v,nextConfig:w,parsedUrl:x,isDraftMode:y,prerenderManifest:z,routerServerContext:A,isOnDemandRevalidate:B,revalidateOnlyGenerated:D,resolvedPathname:E,clientReferenceManifest:F,serverActionsManifest:G}=e,H=(0,k.normalizeAppPath)(d),I=!!(z.dynamicRoutes[H]||z.routes[E]),J=async()=>((null==A?void 0:A.render404)?await A.render404(a,b,x,!1):b.end("This page could not be found"),null);if(I&&!y){let a=!!z.routes[E],b=z.dynamicRoutes[H];if(b&&!1===b.fallback&&!a){if(w.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||C.isDev||y||(K="/index"===(K=E)?"/":K);let L=!0===C.isDev||!I,M=I&&!L;G&&F&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:F,serverActionsManifest:G});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q=!!(null==A?void 0:A.isWrappedByNextServer),R=!!(0,h.getRequestMeta)(a,"minimalMode"),S=(0,h.getRequestMeta)(a,"incrementalCache")||await C.getIncrementalCache(a,w,z,R);null==S||S.resetRequestCache(),globalThis.__incrementalCache=S;let T={params:v,previewProps:z.preview,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:L,incrementalCache:S,cacheLifeProfiles:w.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>C.onRequestError(a,b,d,e,A)},sharedContext:{buildId:g}},U=new l.NodeNextRequest(a),V=new l.NodeNextResponse(b),W=m.NextRequestAdapter.fromNodeNextRequest(U,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>C.handle(W,T).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${N} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${N} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!R&&B&&D&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=T.renderOpts.fetchMetrics;let h=T.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=T.renderOpts.collectedTags;if(!I)return await (0,p.I)(U,V,d,T.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==T.renderOpts.collectedRevalidate&&!(T.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&T.renderOpts.collectedRevalidate,e=void 0===T.renderOpts.collectedExpire||T.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:T.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await C.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:B})},!1,A),b}},k=await C.handleResponse({req:a,nextConfig:w,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:z,isRoutePPREnabled:!1,isOnDemandRevalidate:B,revalidateOnlyGenerated:D,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:R});if(!I)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});R||b.setHeader("x-nextjs-cache",B?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),y&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return R&&I||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(U,V,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};Q&&P?await h(P):(e=O.getActiveScopeSpan(),await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},h),void 0,!Q))}catch(b){if(b instanceof t.NoFallbackError||await C.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:B})},!1,A),I)throw b;return await (0,p.I)(U,V,new Response(null,{status:500})),null}}},21820:a=>{"use strict";a.exports=require("os")},27910:a=>{"use strict";a.exports=require("stream")},28354:a=>{"use strict";a.exports=require("util")},29021:a=>{"use strict";a.exports=require("fs")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{"use strict";a.exports=require("path")},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},49120:(a,b,c)=>{"use strict";c.d(b,{n:()=>k});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h);function j(a){return"win32"===process.platform?g().join(process.env.APPDATA||g().join(i().homedir(),"AppData","Roaming"),a):g().join(i().homedir(),`.${a}`)}let k=function(){if(process.env.DATA_DIR)return process.env.DATA_DIR;let a=j("openrouterx"),b=j("9router");return!e().existsSync(a)&&e().existsSync(b)?b:a}()},51455:a=>{"use strict";a.exports=require("node:fs/promises")},55511:a=>{"use strict";a.exports=require("crypto")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},73024:a=>{"use strict";a.exports=require("node:fs")},73136:a=>{"use strict";a.exports=require("node:url")},76760:a=>{"use strict";a.exports=require("node:path")},77598:a=>{"use strict";a.exports=require("node:crypto")},78335:()=>{},81115:a=>{"use strict";a.exports=require("constants")},82996:(a,b,c)=>{"use strict";c.d(b,{t:()=>d});class d{adapter;data;constructor(a,b){!function(a,b){if(void 0===a)throw Error("lowdb: missing adapter");if(void 0===b)throw Error("lowdb: missing default data")}(a,b),this.adapter=a,this.data=b}async read(){let a=await this.adapter.read();a&&(this.data=a)}async write(){this.data&&await this.adapter.write(this.data)}async update(a){a(this.data),await this.write()}}},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},94735:a=>{"use strict";a.exports=require("events")},96487:()=>{}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,7502,1813,9718,7341],()=>b(b.s=21551));module.exports=c})();
|
|
1
|
+
(()=>{var a={};a.id=8948,a.ids=[8948],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},11259:(a,b,c)=>{"use strict";c.d(b,{Pv:()=>k}),c(73024);var d=c(51455),e=c(76760),f=c(73136);async function g(a,b,c){for(let d=0;d<b;d++)try{return await a()}catch(a){if(d<b-1)await new Promise(a=>setTimeout(a,c));else throw a}}class h{#a;#b;#c=!1;#d=null;#e=null;#f=null;#g=null;#h(a){return this.#g=a,this.#f||=new Promise((a,b)=>{this.#e=[a,b]}),new Promise((a,b)=>{this.#f?.then(a).catch(b)})}async #i(a){this.#c=!0;try{await (0,d.writeFile)(this.#b,a,"utf-8"),await g(async()=>{await (0,d.rename)(this.#b,this.#a)},10,100),this.#d?.[0]()}catch(a){throw a instanceof Error&&this.#d?.[1](a),a}finally{if(this.#c=!1,this.#d=this.#e,this.#e=this.#f=null,null!==this.#g){let a=this.#g;this.#g=null,await this.write(a)}}}constructor(a){this.#a=a,this.#b=function(a){let b=a instanceof URL?(0,f.fileURLToPath)(a):a.toString();return(0,e.join)((0,e.dirname)(b),`.${(0,e.basename)(b)}.tmp`)}(a)}async write(a){return this.#c?this.#h(a):this.#i(a)}}class i{#a;#j;constructor(a){this.#a=a,this.#j=new h(a)}async read(){let a;try{a=await (0,d.readFile)(this.#a,"utf-8")}catch(a){if("ENOENT"===a.code)return null;throw a}return a}write(a){return this.#j.write(a)}}class j{#k;#l;#m;constructor(a,{parse:b,stringify:c}){this.#k=new i(a),this.#l=b,this.#m=c}async read(){let a=await this.#k.read();return null===a?null:this.#l(a)}write(a){return this.#k.write(this.#m(a))}}class k extends j{constructor(a){super(a,{parse:JSON.parse,stringify:a=>JSON.stringify(a,null,2)})}}},12412:a=>{"use strict";a.exports=require("assert")},21820:a=>{"use strict";a.exports=require("os")},27910:a=>{"use strict";a.exports=require("stream")},28354:a=>{"use strict";a.exports=require("util")},29021:a=>{"use strict";a.exports=require("fs")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{"use strict";a.exports=require("path")},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},49120:(a,b,c)=>{"use strict";c.d(b,{n:()=>i}),c(29021);var d,e=c(33873),f=c.n(e),g=c(21820),h=c.n(g);let i=process.env.DATA_DIR?process.env.DATA_DIR:(d="openrouterx","win32"===process.platform?f().join(process.env.APPDATA||f().join(h().homedir(),"AppData","Roaming"),d):f().join(h().homedir(),`.${d}`))},51455:a=>{"use strict";a.exports=require("node:fs/promises")},55511:a=>{"use strict";a.exports=require("crypto")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},73024:a=>{"use strict";a.exports=require("node:fs")},73136:a=>{"use strict";a.exports=require("node:url")},76760:a=>{"use strict";a.exports=require("node:path")},77598:a=>{"use strict";a.exports=require("node:crypto")},78335:()=>{},81115:a=>{"use strict";a.exports=require("constants")},82996:(a,b,c)=>{"use strict";c.d(b,{t:()=>d});class d{adapter;data;constructor(a,b){!function(a,b){if(void 0===a)throw Error("lowdb: missing adapter");if(void 0===b)throw Error("lowdb: missing default data")}(a,b),this.adapter=a,this.data=b}async read(){let a=await this.adapter.read();a&&(this.data=a)}async write(){this.data&&await this.adapter.write(this.data)}async update(a){a(this.data),await this.write()}}},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},89547:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>H,patchFetch:()=>G,routeModule:()=>C,serverHooks:()=>F,workAsyncStorage:()=>D,workUnitAsyncStorage:()=>E});var d={};c.r(d),c.d(d,{DELETE:()=>A,GET:()=>y,GET_DEFAULTS:()=>B,PATCH:()=>z});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(23211),w=c(89718),x=c(57341);async function y(){try{let a=await (0,w.r4)();return v.NextResponse.json(a)}catch(a){return console.error("Error fetching pricing:",a),v.NextResponse.json({error:"Failed to fetch pricing"},{status:500})}}async function z(a){try{let b=await a.json();if("object"!=typeof b||null===b)return v.NextResponse.json({error:"Invalid pricing data format"},{status:400});for(let[a,c]of Object.entries(b)){if("object"!=typeof c||null===c)return v.NextResponse.json({error:`Invalid pricing for provider: ${a}`},{status:400});for(let[b,d]of Object.entries(c)){if("object"!=typeof d||null===d)return v.NextResponse.json({error:`Invalid pricing for model: ${a}/${b}`},{status:400});let c=["input","output","cached","reasoning","cache_creation"];for(let[e,f]of Object.entries(d)){if(!c.includes(e))return v.NextResponse.json({error:`Invalid pricing field: ${e} for ${a}/${b}`},{status:400});if("number"!=typeof f||isNaN(f)||f<0)return v.NextResponse.json({error:`Invalid pricing value for ${e} in ${a}/${b}: must be non-negative number`},{status:400})}}}let c=await (0,w.KJ)(b);return v.NextResponse.json(c)}catch(a){return console.error("Error updating pricing:",a),v.NextResponse.json({error:"Failed to update pricing"},{status:500})}}async function A(a){try{let{searchParams:b}=new URL(a.url),c=b.get("provider"),d=b.get("model");c&&d?await (0,w.yF)(c,d):c?await (0,w.yF)(c):await (0,w.VT)();let e=await (0,w.r4)();return v.NextResponse.json(e)}catch(a){return console.error("Error resetting pricing:",a),v.NextResponse.json({error:"Failed to reset pricing"},{status:500})}}async function B(){try{let a=(0,x.ad)();return v.NextResponse.json(a)}catch(a){return console.error("Error fetching default pricing:",a),v.NextResponse.json({error:"Failed to fetch default pricing"},{status:500})}}let C=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/pricing/route",pathname:"/api/pricing",filename:"route",bundlePath:"app/api/pricing/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/bytedance/Documents/9router/src/app/api/pricing/route.js",nextConfigOutput:"standalone",userland:d,...{}}),{workAsyncStorage:D,workUnitAsyncStorage:E,serverHooks:F}=C;function G(){return(0,g.patchFetch)({workAsyncStorage:D,workUnitAsyncStorage:E})}async function H(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),C.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/pricing/route";"/index"===d&&(d="/");let e=await C.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,params:v,nextConfig:w,parsedUrl:x,isDraftMode:y,prerenderManifest:z,routerServerContext:A,isOnDemandRevalidate:B,revalidateOnlyGenerated:D,resolvedPathname:E,clientReferenceManifest:F,serverActionsManifest:G}=e,H=(0,k.normalizeAppPath)(d),I=!!(z.dynamicRoutes[H]||z.routes[E]),J=async()=>((null==A?void 0:A.render404)?await A.render404(a,b,x,!1):b.end("This page could not be found"),null);if(I&&!y){let a=!!z.routes[E],b=z.dynamicRoutes[H];if(b&&!1===b.fallback&&!a){if(w.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||C.isDev||y||(K="/index"===(K=E)?"/":K);let L=!0===C.isDev||!I,M=I&&!L;G&&F&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:F,serverActionsManifest:G});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q=!!(null==A?void 0:A.isWrappedByNextServer),R=!!(0,h.getRequestMeta)(a,"minimalMode"),S=(0,h.getRequestMeta)(a,"incrementalCache")||await C.getIncrementalCache(a,w,z,R);null==S||S.resetRequestCache(),globalThis.__incrementalCache=S;let T={params:v,previewProps:z.preview,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:L,incrementalCache:S,cacheLifeProfiles:w.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>C.onRequestError(a,b,d,e,A)},sharedContext:{buildId:g}},U=new l.NodeNextRequest(a),V=new l.NodeNextResponse(b),W=m.NextRequestAdapter.fromNodeNextRequest(U,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>C.handle(W,T).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${N} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${N} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!R&&B&&D&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=T.renderOpts.fetchMetrics;let h=T.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=T.renderOpts.collectedTags;if(!I)return await (0,p.I)(U,V,d,T.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==T.renderOpts.collectedRevalidate&&!(T.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&T.renderOpts.collectedRevalidate,e=void 0===T.renderOpts.collectedExpire||T.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:T.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await C.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:B})},!1,A),b}},k=await C.handleResponse({req:a,nextConfig:w,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:z,isRoutePPREnabled:!1,isOnDemandRevalidate:B,revalidateOnlyGenerated:D,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:R});if(!I)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});R||b.setHeader("x-nextjs-cache",B?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),y&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return R&&I||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(U,V,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};Q&&P?await h(P):(e=O.getActiveScopeSpan(),await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},h),void 0,!Q))}catch(b){if(b instanceof t.NoFallbackError||await C.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:B})},!1,A),I)throw b;return await (0,p.I)(U,V,new Response(null,{status:500})),null}}},94735:a=>{"use strict";a.exports=require("events")},96487:()=>{}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,7502,1813,9718,7341],()=>b(b.s=89547));module.exports=c})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{var a={};a.id=5745,a.ids=[5745],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},11259:(a,b,c)=>{"use strict";c.d(b,{Pv:()=>k}),c(73024);var d=c(51455),e=c(76760),f=c(73136);async function g(a,b,c){for(let d=0;d<b;d++)try{return await a()}catch(a){if(d<b-1)await new Promise(a=>setTimeout(a,c));else throw a}}class h{#a;#b;#c=!1;#d=null;#e=null;#f=null;#g=null;#h(a){return this.#g=a,this.#f||=new Promise((a,b)=>{this.#e=[a,b]}),new Promise((a,b)=>{this.#f?.then(a).catch(b)})}async #i(a){this.#c=!0;try{await (0,d.writeFile)(this.#b,a,"utf-8"),await g(async()=>{await (0,d.rename)(this.#b,this.#a)},10,100),this.#d?.[0]()}catch(a){throw a instanceof Error&&this.#d?.[1](a),a}finally{if(this.#c=!1,this.#d=this.#e,this.#e=this.#f=null,null!==this.#g){let a=this.#g;this.#g=null,await this.write(a)}}}constructor(a){this.#a=a,this.#b=function(a){let b=a instanceof URL?(0,f.fileURLToPath)(a):a.toString();return(0,e.join)((0,e.dirname)(b),`.${(0,e.basename)(b)}.tmp`)}(a)}async write(a){return this.#c?this.#h(a):this.#i(a)}}class i{#a;#j;constructor(a){this.#a=a,this.#j=new h(a)}async read(){let a;try{a=await (0,d.readFile)(this.#a,"utf-8")}catch(a){if("ENOENT"===a.code)return null;throw a}return a}write(a){return this.#j.write(a)}}class j{#k;#l;#m;constructor(a,{parse:b,stringify:c}){this.#k=new i(a),this.#l=b,this.#m=c}async read(){let a=await this.#k.read();return null===a?null:this.#l(a)}write(a){return this.#k.write(this.#m(a))}}class k extends j{constructor(a){super(a,{parse:JSON.parse,stringify:a=>JSON.stringify(a,null,2)})}}},12412:a=>{"use strict";a.exports=require("assert")},21820:a=>{"use strict";a.exports=require("os")},27910:a=>{"use strict";a.exports=require("stream")},28354:a=>{"use strict";a.exports=require("util")},29021:a=>{"use strict";a.exports=require("fs")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{"use strict";a.exports=require("path")},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},49120:(a,b,c)=>{"use strict";c.d(b,{n:()=>k});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h);function j(a){return"win32"===process.platform?g().join(process.env.APPDATA||g().join(i().homedir(),"AppData","Roaming"),a):g().join(i().homedir(),`.${a}`)}let k=function(){if(process.env.DATA_DIR)return process.env.DATA_DIR;let a=j("openrouterx"),b=j("9router");return!e().existsSync(a)&&e().existsSync(b)?b:a}()},51455:a=>{"use strict";a.exports=require("node:fs/promises")},55511:a=>{"use strict";a.exports=require("crypto")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},68878:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>F,patchFetch:()=>E,routeModule:()=>A,serverHooks:()=>D,workAsyncStorage:()=>B,workUnitAsyncStorage:()=>C});var d={};c.r(d),c.d(d,{DELETE:()=>z,PUT:()=>y});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(23211),w=c(71998),x=c(93800);async function y(a,{params:b}){try{let{id:c}=await b,{name:d,prefix:e,apiType:f,baseUrl:g,defaultSize:h}=await a.json(),i=await (0,w.Qu)(c);if(!i)return v.NextResponse.json({error:"Provider node not found"},{status:404});if(!d?.trim())return v.NextResponse.json({error:"Name is required"},{status:400});if(!e?.trim())return v.NextResponse.json({error:"Prefix is required"},{status:400});if("openai-compatible"===i.type&&(!f||!["chat","responses"].includes(f)))return v.NextResponse.json({error:"Invalid OpenAI compatible API type"},{status:400});if(!g?.trim())return v.NextResponse.json({error:"Base URL is required"},{status:400});let j=g.trim(),k=f;if("openai-compatible"===i.type){let a=j.replace(/\/+$/,"");j=(0,x.wl)(j,"openai-compatible"),a!==j&&(k=(0,x.Hl)({url:a}))}"anthropic-compatible"===i.type&&(j=(0,x.wl)(j,"anthropic-compatible")),"custom-image"===i.type&&(j=(0,x.wl)(j,"custom-image")),"custom-embedding"===i.type&&(j=j.replace(/\/$/,"")).endsWith("/embeddings")&&(j=j.slice(0,-11));let l={name:d.trim(),prefix:e.trim(),baseUrl:j};"custom-image"===i.type&&(l.defaultSize=h?.trim()||""),"openai-compatible"===i.type&&(l.apiType=k);let m=await (0,w.ho)(c,l),n=await (0,w.P)({provider:c});return await Promise.all(n.map(a=>(0,w.rj)(a.id,{providerSpecificData:{...a.providerSpecificData||{},prefix:e.trim(),apiType:"openai-compatible"===i.type?k:void 0,baseUrl:j,defaultSize:"custom-image"===i.type?h?.trim()||"":void 0,nodeName:m.name}}))),v.NextResponse.json({node:m})}catch(a){return console.log("Error updating provider node:",a),v.NextResponse.json({error:"Failed to update provider node"},{status:500})}}async function z(a,{params:b}){try{let{id:a}=await b;if(!await (0,w.Qu)(a))return v.NextResponse.json({error:"Provider node not found"},{status:404});return await (0,w.op)(a),await (0,w.Pc)(a),v.NextResponse.json({success:!0})}catch(a){return console.log("Error deleting provider node:",a),v.NextResponse.json({error:"Failed to delete provider node"},{status:500})}}let A=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/provider-nodes/[id]/route",pathname:"/api/provider-nodes/[id]",filename:"route",bundlePath:"app/api/provider-nodes/[id]/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/bytedance/Documents/9router/src/app/api/provider-nodes/[id]/route.js",nextConfigOutput:"standalone",userland:d,...{}}),{workAsyncStorage:B,workUnitAsyncStorage:C,serverHooks:D}=A;function E(){return(0,g.patchFetch)({workAsyncStorage:B,workUnitAsyncStorage:C})}async function F(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),A.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/provider-nodes/[id]/route";"/index"===d&&(d="/");let e=await A.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,params:v,nextConfig:w,parsedUrl:x,isDraftMode:y,prerenderManifest:z,routerServerContext:B,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,resolvedPathname:E,clientReferenceManifest:F,serverActionsManifest:G}=e,H=(0,k.normalizeAppPath)(d),I=!!(z.dynamicRoutes[H]||z.routes[E]),J=async()=>((null==B?void 0:B.render404)?await B.render404(a,b,x,!1):b.end("This page could not be found"),null);if(I&&!y){let a=!!z.routes[E],b=z.dynamicRoutes[H];if(b&&!1===b.fallback&&!a){if(w.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||A.isDev||y||(K="/index"===(K=E)?"/":K);let L=!0===A.isDev||!I,M=I&&!L;G&&F&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:F,serverActionsManifest:G});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q=!!(null==B?void 0:B.isWrappedByNextServer),R=!!(0,h.getRequestMeta)(a,"minimalMode"),S=(0,h.getRequestMeta)(a,"incrementalCache")||await A.getIncrementalCache(a,w,z,R);null==S||S.resetRequestCache(),globalThis.__incrementalCache=S;let T={params:v,previewProps:z.preview,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:L,incrementalCache:S,cacheLifeProfiles:w.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>A.onRequestError(a,b,d,e,B)},sharedContext:{buildId:g}},U=new l.NodeNextRequest(a),V=new l.NodeNextResponse(b),W=m.NextRequestAdapter.fromNodeNextRequest(U,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>A.handle(W,T).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${N} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${N} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!R&&C&&D&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=T.renderOpts.fetchMetrics;let h=T.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=T.renderOpts.collectedTags;if(!I)return await (0,p.I)(U,V,d,T.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==T.renderOpts.collectedRevalidate&&!(T.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&T.renderOpts.collectedRevalidate,e=void 0===T.renderOpts.collectedExpire||T.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:T.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await A.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),b}},k=await A.handleResponse({req:a,nextConfig:w,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:z,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:R});if(!I)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});R||b.setHeader("x-nextjs-cache",C?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),y&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return R&&I||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(U,V,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};Q&&P?await h(P):(e=O.getActiveScopeSpan(),await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},h),void 0,!Q))}catch(b){if(b instanceof t.NoFallbackError||await A.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),I)throw b;return await (0,p.I)(U,V,new Response(null,{status:500})),null}}},71998:(a,b,c)=>{"use strict";c.d(b,{Fh:()=>d.getProviderNodes,L9:()=>d.L9,Mc:()=>d.Mc,OM:()=>d.OM,P:()=>d.getProviderConnections,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Yd:()=>d.Yd,ZO:()=>d.ZO,c:()=>d.c,createProviderConnection:()=>d.iE,ek:()=>d.ek,fK:()=>d.fK,fv:()=>d.fv,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,o5:()=>d.o5,op:()=>d.op,rj:()=>d.updateProviderConnection,uL:()=>d.uL,ui:()=>d.ui,uv:()=>d.uv});var d=c(89718)},73024:a=>{"use strict";a.exports=require("node:fs")},73136:a=>{"use strict";a.exports=require("node:url")},76760:a=>{"use strict";a.exports=require("node:path")},77598:a=>{"use strict";a.exports=require("node:crypto")},78335:()=>{},81115:a=>{"use strict";a.exports=require("constants")},82996:(a,b,c)=>{"use strict";c.d(b,{t:()=>d});class d{adapter;data;constructor(a,b){!function(a,b){if(void 0===a)throw Error("lowdb: missing adapter");if(void 0===b)throw Error("lowdb: missing default data")}(a,b),this.adapter=a,this.data=b}async read(){let a=await this.adapter.read();a&&(this.data=a)}async write(){this.data&&await this.adapter.write(this.data)}async update(a){a(this.data),await this.write()}}},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},93800:(a,b,c)=>{"use strict";function d(a=""){return String(a).trim().replace(/\/+$/,"")}function e(a){try{return new URL(String(a).trim())}catch{return null}}function f(a,b="openai-compatible"){let c=e(a);if(!c)return d(a);let g="anthropic-compatible"===b?function(a=""){let b=d(a);for(let a of["/messages","/models"])if(b.endsWith(a)){b=b.slice(0,-a.length);break}return b||""}(c.pathname):"custom-image"===b?function(a=""){let b=d(a);for(let a of["/images/generations","/images/edits"])if(b.endsWith(a)){b=b.slice(0,-a.length);break}return b||""}(c.pathname):function(a=""){let b=d(a);for(let a of["/chat/completions","/responses","/models"])if(b.endsWith(a)){b=b.slice(0,-a.length);break}return b||""}(c.pathname);return`${c.origin}${g}`.replace(/\/+$/,"")}function g({url:a="",body:b=null}={}){let c=e(a),f=d(c?.pathname||"");if(f.endsWith("/responses"))return"responses";if(f.endsWith("/chat/completions"))return"chat";if(b&&"object"==typeof b){if(!Array.isArray(b.messages)&&void 0!==b.input)return"responses";Array.isArray(b.messages)}return"chat"}c.d(b,{Hl:()=>g,wl:()=>f})},94735:a=>{"use strict";a.exports=require("events")},96487:()=>{}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,7502,1813,9718],()=>b(b.s=68878));module.exports=c})();
|
|
1
|
+
(()=>{var a={};a.id=5745,a.ids=[5745],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},11259:(a,b,c)=>{"use strict";c.d(b,{Pv:()=>k}),c(73024);var d=c(51455),e=c(76760),f=c(73136);async function g(a,b,c){for(let d=0;d<b;d++)try{return await a()}catch(a){if(d<b-1)await new Promise(a=>setTimeout(a,c));else throw a}}class h{#a;#b;#c=!1;#d=null;#e=null;#f=null;#g=null;#h(a){return this.#g=a,this.#f||=new Promise((a,b)=>{this.#e=[a,b]}),new Promise((a,b)=>{this.#f?.then(a).catch(b)})}async #i(a){this.#c=!0;try{await (0,d.writeFile)(this.#b,a,"utf-8"),await g(async()=>{await (0,d.rename)(this.#b,this.#a)},10,100),this.#d?.[0]()}catch(a){throw a instanceof Error&&this.#d?.[1](a),a}finally{if(this.#c=!1,this.#d=this.#e,this.#e=this.#f=null,null!==this.#g){let a=this.#g;this.#g=null,await this.write(a)}}}constructor(a){this.#a=a,this.#b=function(a){let b=a instanceof URL?(0,f.fileURLToPath)(a):a.toString();return(0,e.join)((0,e.dirname)(b),`.${(0,e.basename)(b)}.tmp`)}(a)}async write(a){return this.#c?this.#h(a):this.#i(a)}}class i{#a;#j;constructor(a){this.#a=a,this.#j=new h(a)}async read(){let a;try{a=await (0,d.readFile)(this.#a,"utf-8")}catch(a){if("ENOENT"===a.code)return null;throw a}return a}write(a){return this.#j.write(a)}}class j{#k;#l;#m;constructor(a,{parse:b,stringify:c}){this.#k=new i(a),this.#l=b,this.#m=c}async read(){let a=await this.#k.read();return null===a?null:this.#l(a)}write(a){return this.#k.write(this.#m(a))}}class k extends j{constructor(a){super(a,{parse:JSON.parse,stringify:a=>JSON.stringify(a,null,2)})}}},12412:a=>{"use strict";a.exports=require("assert")},21820:a=>{"use strict";a.exports=require("os")},27910:a=>{"use strict";a.exports=require("stream")},28354:a=>{"use strict";a.exports=require("util")},29021:a=>{"use strict";a.exports=require("fs")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{"use strict";a.exports=require("path")},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},49120:(a,b,c)=>{"use strict";c.d(b,{n:()=>i}),c(29021);var d,e=c(33873),f=c.n(e),g=c(21820),h=c.n(g);let i=process.env.DATA_DIR?process.env.DATA_DIR:(d="openrouterx","win32"===process.platform?f().join(process.env.APPDATA||f().join(h().homedir(),"AppData","Roaming"),d):f().join(h().homedir(),`.${d}`))},51455:a=>{"use strict";a.exports=require("node:fs/promises")},55511:a=>{"use strict";a.exports=require("crypto")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},71998:(a,b,c)=>{"use strict";c.d(b,{Fh:()=>d.getProviderNodes,L9:()=>d.L9,Mc:()=>d.Mc,OM:()=>d.OM,P:()=>d.getProviderConnections,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Yd:()=>d.Yd,ZO:()=>d.ZO,c:()=>d.c,createProviderConnection:()=>d.iE,ek:()=>d.ek,fK:()=>d.fK,fv:()=>d.fv,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,o5:()=>d.o5,op:()=>d.op,rj:()=>d.updateProviderConnection,uL:()=>d.uL,ui:()=>d.ui,uv:()=>d.uv});var d=c(89718)},73024:a=>{"use strict";a.exports=require("node:fs")},73136:a=>{"use strict";a.exports=require("node:url")},76760:a=>{"use strict";a.exports=require("node:path")},77598:a=>{"use strict";a.exports=require("node:crypto")},78335:()=>{},81115:a=>{"use strict";a.exports=require("constants")},82996:(a,b,c)=>{"use strict";c.d(b,{t:()=>d});class d{adapter;data;constructor(a,b){!function(a,b){if(void 0===a)throw Error("lowdb: missing adapter");if(void 0===b)throw Error("lowdb: missing default data")}(a,b),this.adapter=a,this.data=b}async read(){let a=await this.adapter.read();a&&(this.data=a)}async write(){this.data&&await this.adapter.write(this.data)}async update(a){a(this.data),await this.write()}}},83911:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>F,patchFetch:()=>E,routeModule:()=>A,serverHooks:()=>D,workAsyncStorage:()=>B,workUnitAsyncStorage:()=>C});var d={};c.r(d),c.d(d,{DELETE:()=>z,PUT:()=>y});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(23211),w=c(71998),x=c(93800);async function y(a,{params:b}){try{let{id:c}=await b,{name:d,prefix:e,apiType:f,baseUrl:g,defaultSize:h}=await a.json(),i=await (0,w.Qu)(c);if(!i)return v.NextResponse.json({error:"Provider node not found"},{status:404});if(!d?.trim())return v.NextResponse.json({error:"Name is required"},{status:400});if(!e?.trim())return v.NextResponse.json({error:"Prefix is required"},{status:400});if("openai-compatible"===i.type&&(!f||!["chat","responses"].includes(f)))return v.NextResponse.json({error:"Invalid OpenAI compatible API type"},{status:400});if(!g?.trim())return v.NextResponse.json({error:"Base URL is required"},{status:400});let j=g.trim(),k=f;if("openai-compatible"===i.type){let a=j.replace(/\/+$/,"");j=(0,x.wl)(j,"openai-compatible"),a!==j&&(k=(0,x.Hl)({url:a}))}"anthropic-compatible"===i.type&&(j=(0,x.wl)(j,"anthropic-compatible")),"custom-image"===i.type&&(j=(0,x.wl)(j,"custom-image")),"custom-embedding"===i.type&&(j=j.replace(/\/$/,"")).endsWith("/embeddings")&&(j=j.slice(0,-11));let l={name:d.trim(),prefix:e.trim(),baseUrl:j};"custom-image"===i.type&&(l.defaultSize=h?.trim()||""),"openai-compatible"===i.type&&(l.apiType=k);let m=await (0,w.ho)(c,l),n=await (0,w.P)({provider:c});return await Promise.all(n.map(a=>(0,w.rj)(a.id,{providerSpecificData:{...a.providerSpecificData||{},prefix:e.trim(),apiType:"openai-compatible"===i.type?k:void 0,baseUrl:j,defaultSize:"custom-image"===i.type?h?.trim()||"":void 0,nodeName:m.name}}))),v.NextResponse.json({node:m})}catch(a){return console.log("Error updating provider node:",a),v.NextResponse.json({error:"Failed to update provider node"},{status:500})}}async function z(a,{params:b}){try{let{id:a}=await b;if(!await (0,w.Qu)(a))return v.NextResponse.json({error:"Provider node not found"},{status:404});return await (0,w.op)(a),await (0,w.Pc)(a),v.NextResponse.json({success:!0})}catch(a){return console.log("Error deleting provider node:",a),v.NextResponse.json({error:"Failed to delete provider node"},{status:500})}}let A=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/provider-nodes/[id]/route",pathname:"/api/provider-nodes/[id]",filename:"route",bundlePath:"app/api/provider-nodes/[id]/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/bytedance/Documents/9router/src/app/api/provider-nodes/[id]/route.js",nextConfigOutput:"standalone",userland:d,...{}}),{workAsyncStorage:B,workUnitAsyncStorage:C,serverHooks:D}=A;function E(){return(0,g.patchFetch)({workAsyncStorage:B,workUnitAsyncStorage:C})}async function F(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),A.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/provider-nodes/[id]/route";"/index"===d&&(d="/");let e=await A.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,params:v,nextConfig:w,parsedUrl:x,isDraftMode:y,prerenderManifest:z,routerServerContext:B,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,resolvedPathname:E,clientReferenceManifest:F,serverActionsManifest:G}=e,H=(0,k.normalizeAppPath)(d),I=!!(z.dynamicRoutes[H]||z.routes[E]),J=async()=>((null==B?void 0:B.render404)?await B.render404(a,b,x,!1):b.end("This page could not be found"),null);if(I&&!y){let a=!!z.routes[E],b=z.dynamicRoutes[H];if(b&&!1===b.fallback&&!a){if(w.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||A.isDev||y||(K="/index"===(K=E)?"/":K);let L=!0===A.isDev||!I,M=I&&!L;G&&F&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:F,serverActionsManifest:G});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q=!!(null==B?void 0:B.isWrappedByNextServer),R=!!(0,h.getRequestMeta)(a,"minimalMode"),S=(0,h.getRequestMeta)(a,"incrementalCache")||await A.getIncrementalCache(a,w,z,R);null==S||S.resetRequestCache(),globalThis.__incrementalCache=S;let T={params:v,previewProps:z.preview,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:L,incrementalCache:S,cacheLifeProfiles:w.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>A.onRequestError(a,b,d,e,B)},sharedContext:{buildId:g}},U=new l.NodeNextRequest(a),V=new l.NodeNextResponse(b),W=m.NextRequestAdapter.fromNodeNextRequest(U,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>A.handle(W,T).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${N} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${N} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!R&&C&&D&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=T.renderOpts.fetchMetrics;let h=T.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=T.renderOpts.collectedTags;if(!I)return await (0,p.I)(U,V,d,T.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==T.renderOpts.collectedRevalidate&&!(T.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&T.renderOpts.collectedRevalidate,e=void 0===T.renderOpts.collectedExpire||T.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:T.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await A.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),b}},k=await A.handleResponse({req:a,nextConfig:w,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:z,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:R});if(!I)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});R||b.setHeader("x-nextjs-cache",C?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),y&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return R&&I||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(U,V,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};Q&&P?await h(P):(e=O.getActiveScopeSpan(),await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},h),void 0,!Q))}catch(b){if(b instanceof t.NoFallbackError||await A.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),I)throw b;return await (0,p.I)(U,V,new Response(null,{status:500})),null}}},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},93800:(a,b,c)=>{"use strict";function d(a=""){return String(a).trim().replace(/\/+$/,"")}function e(a){try{return new URL(String(a).trim())}catch{return null}}function f(a,b="openai-compatible"){let c=e(a);if(!c)return d(a);let g="anthropic-compatible"===b?function(a=""){let b=d(a);for(let a of["/messages","/models"])if(b.endsWith(a)){b=b.slice(0,-a.length);break}return b||""}(c.pathname):"custom-image"===b?function(a=""){let b=d(a);for(let a of["/images/generations","/images/edits"])if(b.endsWith(a)){b=b.slice(0,-a.length);break}return b||""}(c.pathname):function(a=""){let b=d(a);for(let a of["/chat/completions","/responses","/models"])if(b.endsWith(a)){b=b.slice(0,-a.length);break}return b||""}(c.pathname);return`${c.origin}${g}`.replace(/\/+$/,"")}function g({url:a="",body:b=null}={}){let c=e(a),f=d(c?.pathname||"");if(f.endsWith("/responses"))return"responses";if(f.endsWith("/chat/completions"))return"chat";if(b&&"object"==typeof b){if(!Array.isArray(b.messages)&&void 0!==b.input)return"responses";Array.isArray(b.messages)}return"chat"}c.d(b,{Hl:()=>g,wl:()=>f})},94735:a=>{"use strict";a.exports=require("events")},96487:()=>{}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,7502,1813,9718],()=>b(b.s=83911));module.exports=c})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{var a={};a.id=2121,a.ids=[2121],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},9132:(a,b,c)=>{"use strict";c.d(b,{Mv:()=>j,RG:()=>h,iI:()=>i});var d=c(68658),e=c(89718),f=c(54200);function g(a,b){return a&&"sub_user"===a.role?{role:"sub_user",userId:a.id,username:a.username||null,permissions:Array.isArray(a.permissions)?a.permissions:[],allowedProviders:(0,f.cc)(a),source:b}:null}async function h(a,b=null){let c=b||function(a){let b=a?.headers?.get("Authorization");if(b?.startsWith("Bearer "))return b.slice(7);let c=a?.headers?.get("x-api-key");return c||null}(a);if(c){let a=await (0,e.y7)(c);if(a?.userId){let b=g(await (0,e.kl)(a.userId),"api_key");if(b)return b}}let f=await (0,d.f1)(a);if(!f||"sub_user"!==f.role||!f.userId)return null;let i=await (0,e.kl)(f.userId);return i?g(i,"cookie"):g({id:f.userId,username:f.username||null,role:f.role,permissions:f.permissions||[],allowedProviders:f.allowedProviders},"cookie")}function i(a,b){return!a||"sub_user"!==a.role||a.allowedProviders.includes(b)}function j(a,b){return b&&"sub_user"===b.role?a.filter(a=>i(b,a.provider)):a}},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},12412:a=>{"use strict";a.exports=require("assert")},21820:a=>{"use strict";a.exports=require("os")},27910:a=>{"use strict";a.exports=require("stream")},28354:a=>{"use strict";a.exports=require("util")},29021:a=>{"use strict";a.exports=require("fs")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{"use strict";a.exports=require("path")},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},49120:(a,b,c)=>{"use strict";c.d(b,{n:()=>k});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h);function j(a){return"win32"===process.platform?g().join(process.env.APPDATA||g().join(i().homedir(),"AppData","Roaming"),a):g().join(i().homedir(),`.${a}`)}let k=function(){if(process.env.DATA_DIR)return process.env.DATA_DIR;let a=j("openrouterx"),b=j("9router");return!e().existsSync(a)&&e().existsSync(b)?b:a}()},51455:a=>{"use strict";a.exports=require("node:fs/promises")},54200:(a,b,c)=>{"use strict";c.d(b,{cc:()=>f,vJ:()=>e});let d=["codex","alicode"];function e(a){return Array.isArray(a)?Array.from(new Set(a.map(a=>"string"==typeof a?a.trim():"").filter(Boolean))):[]}function f(a,b=d){return a&&"object"==typeof a&&Object.prototype.hasOwnProperty.call(a,"allowedProviders")?e(a.allowedProviders):e(b)}},54603:(a,b,c)=>{"use strict";c.d(b,{Xj:()=>e});var d=c(19713);async function e(a=null){let b=a||process.env.MACHINE_ID_SALT||"endpoint-proxy-salt";try{let a=(0,d.machineIdSync)();return(await Promise.resolve().then(c.t.bind(c,55511,23))).createHash("sha256").update(a+b).digest("hex").substring(0,16)}catch(a){return console.log("Error getting machine ID:",a),crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){let b=16*Math.random()|0;return("x"==a?b:3&b|8).toString(16)})}}},55511:a=>{"use strict";a.exports=require("crypto")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},66498:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>K,patchFetch:()=>J,routeModule:()=>F,serverHooks:()=>I,workAsyncStorage:()=>G,workUnitAsyncStorage:()=>H});var d={};c.r(d),c.d(d,{GET:()=>D,POST:()=>E,dynamic:()=>B});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(23211),w=c(71998),x=c(75681),y=c(9132),z=c(93800);let A=c(94755).A,B="force-dynamic",C="https://api.openai.com/v1";async function D(a){try{let b=await (0,w.Fh)(),c=await (0,y.RG)(a),d=c?b.filter(a=>(0,y.iI)(c,a.id)):b;return v.NextResponse.json({nodes:d})}catch(a){return console.log("Error fetching provider nodes:",a),v.NextResponse.json({error:"Failed to fetch provider nodes"},{status:500})}}async function E(a){try{let{name:b,prefix:c,apiType:d,baseUrl:e,type:f,defaultSize:g}=await a.json();if(!b?.trim())return v.NextResponse.json({error:"Name is required"},{status:400});if(!c?.trim())return v.NextResponse.json({error:"Prefix is required"},{status:400});let h=f||"openai-compatible";if("openai-compatible"===h){if(!d||!["chat","responses"].includes(d))return v.NextResponse.json({error:"Invalid OpenAI compatible API type"},{status:400});let a=String(e||C).trim().replace(/\/+$/,""),f=(0,z.wl)(e||C,"openai-compatible"),g=a!==f?(0,z.Hl)({url:a}):d,h=await (0,w.i0)({id:`${x.JH}${g}-${A()}`,type:"openai-compatible",prefix:c.trim(),apiType:g,baseUrl:f,name:b.trim()});return v.NextResponse.json({node:h},{status:201})}if("custom-embedding"===h){let a=(e||"https://api.openai.com/v1").trim().replace(/\/$/,"");a.endsWith("/embeddings")&&(a=a.slice(0,-11));let d=await (0,w.i0)({id:`${x.Pd}${A()}`,type:"custom-embedding",prefix:c.trim(),baseUrl:a,name:b.trim()});return v.NextResponse.json({node:d},{status:201})}if("anthropic-compatible"===h){let a=(0,z.wl)(e||"https://api.anthropic.com/v1","anthropic-compatible"),d=await (0,w.i0)({id:`${x.DI}${A()}`,type:"anthropic-compatible",prefix:c.trim(),baseUrl:a,name:b.trim()});return v.NextResponse.json({node:d},{status:201})}if("custom-image"===h){let a=(0,z.wl)(e||C,"custom-image"),d=await (0,w.i0)({id:`${x.ly}${A()}`,type:"custom-image",prefix:c.trim(),baseUrl:a,defaultSize:g?.trim()||"",name:b.trim()});return v.NextResponse.json({node:d},{status:201})}return v.NextResponse.json({error:"Invalid provider node type"},{status:400})}catch(a){return console.log("Error creating provider node:",a),v.NextResponse.json({error:"Failed to create provider node"},{status:500})}}let F=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/provider-nodes/route",pathname:"/api/provider-nodes",filename:"route",bundlePath:"app/api/provider-nodes/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/bytedance/Documents/9router/src/app/api/provider-nodes/route.js",nextConfigOutput:"standalone",userland:d,...{}}),{workAsyncStorage:G,workUnitAsyncStorage:H,serverHooks:I}=F;function J(){return(0,g.patchFetch)({workAsyncStorage:G,workUnitAsyncStorage:H})}async function K(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),F.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/provider-nodes/route";"/index"===d&&(d="/");let e=await F.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,params:v,nextConfig:w,parsedUrl:x,isDraftMode:y,prerenderManifest:z,routerServerContext:A,isOnDemandRevalidate:B,revalidateOnlyGenerated:C,resolvedPathname:D,clientReferenceManifest:E,serverActionsManifest:G}=e,H=(0,k.normalizeAppPath)(d),I=!!(z.dynamicRoutes[H]||z.routes[D]),J=async()=>((null==A?void 0:A.render404)?await A.render404(a,b,x,!1):b.end("This page could not be found"),null);if(I&&!y){let a=!!z.routes[D],b=z.dynamicRoutes[H];if(b&&!1===b.fallback&&!a){if(w.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||F.isDev||y||(K="/index"===(K=D)?"/":K);let L=!0===F.isDev||!I,M=I&&!L;G&&E&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:E,serverActionsManifest:G});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q=!!(null==A?void 0:A.isWrappedByNextServer),R=!!(0,h.getRequestMeta)(a,"minimalMode"),S=(0,h.getRequestMeta)(a,"incrementalCache")||await F.getIncrementalCache(a,w,z,R);null==S||S.resetRequestCache(),globalThis.__incrementalCache=S;let T={params:v,previewProps:z.preview,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:L,incrementalCache:S,cacheLifeProfiles:w.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>F.onRequestError(a,b,d,e,A)},sharedContext:{buildId:g}},U=new l.NodeNextRequest(a),V=new l.NodeNextResponse(b),W=m.NextRequestAdapter.fromNodeNextRequest(U,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>F.handle(W,T).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${N} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${N} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!R&&B&&C&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=T.renderOpts.fetchMetrics;let h=T.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=T.renderOpts.collectedTags;if(!I)return await (0,p.I)(U,V,d,T.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==T.renderOpts.collectedRevalidate&&!(T.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&T.renderOpts.collectedRevalidate,e=void 0===T.renderOpts.collectedExpire||T.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:T.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await F.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:B})},!1,A),b}},k=await F.handleResponse({req:a,nextConfig:w,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:z,isRoutePPREnabled:!1,isOnDemandRevalidate:B,revalidateOnlyGenerated:C,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:R});if(!I)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});R||b.setHeader("x-nextjs-cache",B?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),y&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return R&&I||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(U,V,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};Q&&P?await h(P):(e=O.getActiveScopeSpan(),await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},h),void 0,!Q))}catch(b){if(b instanceof t.NoFallbackError||await F.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:B})},!1,A),I)throw b;return await (0,p.I)(U,V,new Response(null,{status:500})),null}}},68658:(a,b,c)=>{"use strict";c.d(b,{f1:()=>f}),c(23211);var d=c(69614);c(89718),c(54603);let e=new TextEncoder().encode(process.env.JWT_SECRET||"9router-default-secret-change-me");async function f(a){let b=a.cookies.get("auth_token")?.value;if(!b)return null;try{let{payload:a}=await (0,d.V)(b,e);return a}catch{return null}}},69614:(a,b,c)=>{"use strict";c.d(b,{V:()=>p});var d=c(88888),e=c(91356),f=c(99129),g=c(73575),h=c(41570),i=c(19035),j=c(24762),k=c(80308),l=c(55956);async function m(a,b,c){if(!(0,i.Gv)(a))throw new f.Ye("Flattened JWS must be an object");if(void 0===a.protected&&void 0===a.header)throw new f.Ye('Flattened JWS must have either of the "protected" or "header" members');if(void 0!==a.protected&&"string"!=typeof a.protected)throw new f.Ye("JWS Protected Header incorrect type");if(void 0===a.payload)throw new f.Ye("JWS Payload missing");if("string"!=typeof a.signature)throw new f.Ye("JWS Signature missing or incorrect type");if(void 0!==a.header&&!(0,i.Gv)(a.header))throw new f.Ye("JWS Unprotected Header incorrect type");let m={};if(a.protected)try{let b=(0,d.D)(a.protected);m=JSON.parse(g.D0.decode(b))}catch{throw new f.Ye("JWS Protected Header is invalid")}if(!(0,i.fz)(m,a.header))throw new f.Ye("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");let n={...m,...a.header},o=(0,k.n)(f.Ye,new Map([["b64",!0]]),c?.crit,m,n),p=!0;if(o.has("b64")&&"boolean"!=typeof(p=m.b64))throw new f.Ye('The "b64" (base64url-encode payload) Header Parameter must be a boolean');let{alg:q}=n;if("string"!=typeof q||!q)throw new f.Ye('JWS "alg" (Algorithm) Header Parameter missing or invalid');let r=c&&function(a,b){if(void 0!==b&&(!Array.isArray(b)||b.some(a=>"string"!=typeof a)))throw TypeError(`"${a}" option must be an array of strings`);if(b)return new Set(b)}("algorithms",c.algorithms);if(r&&!r.has(q))throw new f.Rb('"alg" (Algorithm) Header Parameter value not allowed');if(p){if("string"!=typeof a.payload)throw new f.Ye("JWS Payload must be a string")}else if("string"!=typeof a.payload&&!(a.payload instanceof Uint8Array))throw new f.Ye("JWS Payload must be a string or an Uint8Array instance");let s=!1;"function"==typeof b&&(b=await b(m,a),s=!0),(0,j.y)(q,b,"verify");let t=(0,g.xW)(void 0!==a.protected?(0,g.lF)(a.protected):new Uint8Array,(0,g.lF)("."),"string"==typeof a.payload?p?(0,g.lF)(a.payload):g.Rd.encode(a.payload):a.payload),u=(0,h.h2)(a.signature,"signature",f.Ye),v=await (0,l.l)(b,q);if(!await (0,e.MX)(q,v,u,t))throw new f.h2;let w={payload:p?(0,h.h2)(a.payload,"payload",f.Ye):"string"==typeof a.payload?g.Rd.encode(a.payload):a.payload};return(void 0!==a.protected&&(w.protectedHeader=m),void 0!==a.header&&(w.unprotectedHeader=a.header),s)?{...w,key:v}:w}async function n(a,b,c){if(a instanceof Uint8Array&&(a=g.D0.decode(a)),"string"!=typeof a)throw new f.Ye("Compact JWS must be a string or Uint8Array");let{0:d,1:e,2:h,length:i}=a.split(".");if(3!==i)throw new f.Ye("Invalid Compact JWS");let j=await m({payload:e,protected:d,signature:h},b,c),k={payload:j.payload,protectedHeader:j.protectedHeader};return"function"==typeof b?{...k,key:j.key}:k}var o=c(17347);async function p(a,b,c){let d=await n(a,b,c);if(d.protectedHeader.crit?.includes("b64")&&!1===d.protectedHeader.b64)throw new f.Dp("JWTs MUST NOT use unencoded payload");let e={payload:(0,o.k6)(d.protectedHeader,d.payload,c),protectedHeader:d.protectedHeader};return"function"==typeof b?{...e,key:d.key}:e}},71998:(a,b,c)=>{"use strict";c.d(b,{Fh:()=>d.getProviderNodes,L9:()=>d.L9,Mc:()=>d.Mc,OM:()=>d.OM,P:()=>d.getProviderConnections,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Yd:()=>d.Yd,ZO:()=>d.ZO,c:()=>d.c,createProviderConnection:()=>d.iE,ek:()=>d.ek,fK:()=>d.fK,fv:()=>d.fv,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,o5:()=>d.o5,op:()=>d.op,rj:()=>d.updateProviderConnection,uL:()=>d.uL,ui:()=>d.ui,uv:()=>d.uv});var d=c(89718)},73024:a=>{"use strict";a.exports=require("node:fs")},73136:a=>{"use strict";a.exports=require("node:url")},76760:a=>{"use strict";a.exports=require("node:path")},77598:a=>{"use strict";a.exports=require("node:crypto")},78335:()=>{},79646:a=>{"use strict";a.exports=require("child_process")},81115:a=>{"use strict";a.exports=require("constants")},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},93800:(a,b,c)=>{"use strict";function d(a=""){return String(a).trim().replace(/\/+$/,"")}function e(a){try{return new URL(String(a).trim())}catch{return null}}function f(a,b="openai-compatible"){let c=e(a);if(!c)return d(a);let g="anthropic-compatible"===b?function(a=""){let b=d(a);for(let a of["/messages","/models"])if(b.endsWith(a)){b=b.slice(0,-a.length);break}return b||""}(c.pathname):"custom-image"===b?function(a=""){let b=d(a);for(let a of["/images/generations","/images/edits"])if(b.endsWith(a)){b=b.slice(0,-a.length);break}return b||""}(c.pathname):function(a=""){let b=d(a);for(let a of["/chat/completions","/responses","/models"])if(b.endsWith(a)){b=b.slice(0,-a.length);break}return b||""}(c.pathname);return`${c.origin}${g}`.replace(/\/+$/,"")}function g({url:a="",body:b=null}={}){let c=e(a),f=d(c?.pathname||"");if(f.endsWith("/responses"))return"responses";if(f.endsWith("/chat/completions"))return"chat";if(b&&"object"==typeof b){if(!Array.isArray(b.messages)&&void 0!==b.input)return"responses";Array.isArray(b.messages)}return"chat"}c.d(b,{Hl:()=>g,wl:()=>f})},94735:a=>{"use strict";a.exports=require("events")},96487:()=>{}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,7502,1813,8838,6184,9718,5681],()=>b(b.s=66498));module.exports=c})();
|
|
1
|
+
(()=>{var a={};a.id=2121,a.ids=[2121],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},9132:(a,b,c)=>{"use strict";c.d(b,{Mv:()=>j,RG:()=>h,iI:()=>i});var d=c(68658),e=c(89718),f=c(54200);function g(a,b){return a&&"sub_user"===a.role?{role:"sub_user",userId:a.id,username:a.username||null,permissions:Array.isArray(a.permissions)?a.permissions:[],allowedProviders:(0,f.cc)(a),source:b}:null}async function h(a,b=null){let c=b||function(a){let b=a?.headers?.get("Authorization");if(b?.startsWith("Bearer "))return b.slice(7);let c=a?.headers?.get("x-api-key");return c||null}(a);if(c){let a=await (0,e.y7)(c);if(a?.userId){let b=g(await (0,e.kl)(a.userId),"api_key");if(b)return b}}let f=await (0,d.f1)(a);if(!f||"sub_user"!==f.role||!f.userId)return null;let i=await (0,e.kl)(f.userId);return i?g(i,"cookie"):g({id:f.userId,username:f.username||null,role:f.role,permissions:f.permissions||[],allowedProviders:f.allowedProviders},"cookie")}function i(a,b){return!a||"sub_user"!==a.role||a.allowedProviders.includes(b)}function j(a,b){return b&&"sub_user"===b.role?a.filter(a=>i(b,a.provider)):a}},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},12412:a=>{"use strict";a.exports=require("assert")},21820:a=>{"use strict";a.exports=require("os")},27910:a=>{"use strict";a.exports=require("stream")},28354:a=>{"use strict";a.exports=require("util")},29021:a=>{"use strict";a.exports=require("fs")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{"use strict";a.exports=require("path")},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},49120:(a,b,c)=>{"use strict";c.d(b,{n:()=>i}),c(29021);var d,e=c(33873),f=c.n(e),g=c(21820),h=c.n(g);let i=process.env.DATA_DIR?process.env.DATA_DIR:(d="openrouterx","win32"===process.platform?f().join(process.env.APPDATA||f().join(h().homedir(),"AppData","Roaming"),d):f().join(h().homedir(),`.${d}`))},51455:a=>{"use strict";a.exports=require("node:fs/promises")},54200:(a,b,c)=>{"use strict";c.d(b,{cc:()=>f,vJ:()=>e});let d=["codex","alicode"];function e(a){return Array.isArray(a)?Array.from(new Set(a.map(a=>"string"==typeof a?a.trim():"").filter(Boolean))):[]}function f(a,b=d){return a&&"object"==typeof a&&Object.prototype.hasOwnProperty.call(a,"allowedProviders")?e(a.allowedProviders):e(b)}},54603:(a,b,c)=>{"use strict";c.d(b,{Xj:()=>e});var d=c(19713);async function e(a=null){let b=a||process.env.MACHINE_ID_SALT||"endpoint-proxy-salt";try{let a=(0,d.machineIdSync)();return(await Promise.resolve().then(c.t.bind(c,55511,23))).createHash("sha256").update(a+b).digest("hex").substring(0,16)}catch(a){return console.log("Error getting machine ID:",a),crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){let b=16*Math.random()|0;return("x"==a?b:3&b|8).toString(16)})}}},55180:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>K,patchFetch:()=>J,routeModule:()=>F,serverHooks:()=>I,workAsyncStorage:()=>G,workUnitAsyncStorage:()=>H});var d={};c.r(d),c.d(d,{GET:()=>D,POST:()=>E,dynamic:()=>B});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(23211),w=c(71998),x=c(75681),y=c(9132),z=c(93800);let A=c(94755).A,B="force-dynamic",C="https://api.openai.com/v1";async function D(a){try{let b=await (0,w.Fh)(),c=await (0,y.RG)(a),d=c?b.filter(a=>(0,y.iI)(c,a.id)):b;return v.NextResponse.json({nodes:d})}catch(a){return console.log("Error fetching provider nodes:",a),v.NextResponse.json({error:"Failed to fetch provider nodes"},{status:500})}}async function E(a){try{let{name:b,prefix:c,apiType:d,baseUrl:e,type:f,defaultSize:g}=await a.json();if(!b?.trim())return v.NextResponse.json({error:"Name is required"},{status:400});if(!c?.trim())return v.NextResponse.json({error:"Prefix is required"},{status:400});let h=f||"openai-compatible";if("openai-compatible"===h){if(!d||!["chat","responses"].includes(d))return v.NextResponse.json({error:"Invalid OpenAI compatible API type"},{status:400});let a=String(e||C).trim().replace(/\/+$/,""),f=(0,z.wl)(e||C,"openai-compatible"),g=a!==f?(0,z.Hl)({url:a}):d,h=await (0,w.i0)({id:`${x.JH}${g}-${A()}`,type:"openai-compatible",prefix:c.trim(),apiType:g,baseUrl:f,name:b.trim()});return v.NextResponse.json({node:h},{status:201})}if("custom-embedding"===h){let a=(e||"https://api.openai.com/v1").trim().replace(/\/$/,"");a.endsWith("/embeddings")&&(a=a.slice(0,-11));let d=await (0,w.i0)({id:`${x.Pd}${A()}`,type:"custom-embedding",prefix:c.trim(),baseUrl:a,name:b.trim()});return v.NextResponse.json({node:d},{status:201})}if("anthropic-compatible"===h){let a=(0,z.wl)(e||"https://api.anthropic.com/v1","anthropic-compatible"),d=await (0,w.i0)({id:`${x.DI}${A()}`,type:"anthropic-compatible",prefix:c.trim(),baseUrl:a,name:b.trim()});return v.NextResponse.json({node:d},{status:201})}if("custom-image"===h){let a=(0,z.wl)(e||C,"custom-image"),d=await (0,w.i0)({id:`${x.ly}${A()}`,type:"custom-image",prefix:c.trim(),baseUrl:a,defaultSize:g?.trim()||"",name:b.trim()});return v.NextResponse.json({node:d},{status:201})}return v.NextResponse.json({error:"Invalid provider node type"},{status:400})}catch(a){return console.log("Error creating provider node:",a),v.NextResponse.json({error:"Failed to create provider node"},{status:500})}}let F=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/provider-nodes/route",pathname:"/api/provider-nodes",filename:"route",bundlePath:"app/api/provider-nodes/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/bytedance/Documents/9router/src/app/api/provider-nodes/route.js",nextConfigOutput:"standalone",userland:d,...{}}),{workAsyncStorage:G,workUnitAsyncStorage:H,serverHooks:I}=F;function J(){return(0,g.patchFetch)({workAsyncStorage:G,workUnitAsyncStorage:H})}async function K(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),F.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/provider-nodes/route";"/index"===d&&(d="/");let e=await F.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,params:v,nextConfig:w,parsedUrl:x,isDraftMode:y,prerenderManifest:z,routerServerContext:A,isOnDemandRevalidate:B,revalidateOnlyGenerated:C,resolvedPathname:D,clientReferenceManifest:E,serverActionsManifest:G}=e,H=(0,k.normalizeAppPath)(d),I=!!(z.dynamicRoutes[H]||z.routes[D]),J=async()=>((null==A?void 0:A.render404)?await A.render404(a,b,x,!1):b.end("This page could not be found"),null);if(I&&!y){let a=!!z.routes[D],b=z.dynamicRoutes[H];if(b&&!1===b.fallback&&!a){if(w.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||F.isDev||y||(K="/index"===(K=D)?"/":K);let L=!0===F.isDev||!I,M=I&&!L;G&&E&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:E,serverActionsManifest:G});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q=!!(null==A?void 0:A.isWrappedByNextServer),R=!!(0,h.getRequestMeta)(a,"minimalMode"),S=(0,h.getRequestMeta)(a,"incrementalCache")||await F.getIncrementalCache(a,w,z,R);null==S||S.resetRequestCache(),globalThis.__incrementalCache=S;let T={params:v,previewProps:z.preview,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:L,incrementalCache:S,cacheLifeProfiles:w.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>F.onRequestError(a,b,d,e,A)},sharedContext:{buildId:g}},U=new l.NodeNextRequest(a),V=new l.NodeNextResponse(b),W=m.NextRequestAdapter.fromNodeNextRequest(U,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>F.handle(W,T).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${N} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${N} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!R&&B&&C&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=T.renderOpts.fetchMetrics;let h=T.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=T.renderOpts.collectedTags;if(!I)return await (0,p.I)(U,V,d,T.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==T.renderOpts.collectedRevalidate&&!(T.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&T.renderOpts.collectedRevalidate,e=void 0===T.renderOpts.collectedExpire||T.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:T.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await F.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:B})},!1,A),b}},k=await F.handleResponse({req:a,nextConfig:w,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:z,isRoutePPREnabled:!1,isOnDemandRevalidate:B,revalidateOnlyGenerated:C,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:R});if(!I)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});R||b.setHeader("x-nextjs-cache",B?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),y&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return R&&I||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(U,V,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};Q&&P?await h(P):(e=O.getActiveScopeSpan(),await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},h),void 0,!Q))}catch(b){if(b instanceof t.NoFallbackError||await F.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:B})},!1,A),I)throw b;return await (0,p.I)(U,V,new Response(null,{status:500})),null}}},55511:a=>{"use strict";a.exports=require("crypto")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},68658:(a,b,c)=>{"use strict";c.d(b,{f1:()=>f}),c(23211);var d=c(69614);c(89718),c(54603);let e=new TextEncoder().encode(process.env.JWT_SECRET||"9router-default-secret-change-me");async function f(a){let b=a.cookies.get("auth_token")?.value;if(!b)return null;try{let{payload:a}=await (0,d.V)(b,e);return a}catch{return null}}},69614:(a,b,c)=>{"use strict";c.d(b,{V:()=>p});var d=c(88888),e=c(91356),f=c(99129),g=c(73575),h=c(41570),i=c(19035),j=c(24762),k=c(80308),l=c(55956);async function m(a,b,c){if(!(0,i.Gv)(a))throw new f.Ye("Flattened JWS must be an object");if(void 0===a.protected&&void 0===a.header)throw new f.Ye('Flattened JWS must have either of the "protected" or "header" members');if(void 0!==a.protected&&"string"!=typeof a.protected)throw new f.Ye("JWS Protected Header incorrect type");if(void 0===a.payload)throw new f.Ye("JWS Payload missing");if("string"!=typeof a.signature)throw new f.Ye("JWS Signature missing or incorrect type");if(void 0!==a.header&&!(0,i.Gv)(a.header))throw new f.Ye("JWS Unprotected Header incorrect type");let m={};if(a.protected)try{let b=(0,d.D)(a.protected);m=JSON.parse(g.D0.decode(b))}catch{throw new f.Ye("JWS Protected Header is invalid")}if(!(0,i.fz)(m,a.header))throw new f.Ye("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");let n={...m,...a.header},o=(0,k.n)(f.Ye,new Map([["b64",!0]]),c?.crit,m,n),p=!0;if(o.has("b64")&&"boolean"!=typeof(p=m.b64))throw new f.Ye('The "b64" (base64url-encode payload) Header Parameter must be a boolean');let{alg:q}=n;if("string"!=typeof q||!q)throw new f.Ye('JWS "alg" (Algorithm) Header Parameter missing or invalid');let r=c&&function(a,b){if(void 0!==b&&(!Array.isArray(b)||b.some(a=>"string"!=typeof a)))throw TypeError(`"${a}" option must be an array of strings`);if(b)return new Set(b)}("algorithms",c.algorithms);if(r&&!r.has(q))throw new f.Rb('"alg" (Algorithm) Header Parameter value not allowed');if(p){if("string"!=typeof a.payload)throw new f.Ye("JWS Payload must be a string")}else if("string"!=typeof a.payload&&!(a.payload instanceof Uint8Array))throw new f.Ye("JWS Payload must be a string or an Uint8Array instance");let s=!1;"function"==typeof b&&(b=await b(m,a),s=!0),(0,j.y)(q,b,"verify");let t=(0,g.xW)(void 0!==a.protected?(0,g.lF)(a.protected):new Uint8Array,(0,g.lF)("."),"string"==typeof a.payload?p?(0,g.lF)(a.payload):g.Rd.encode(a.payload):a.payload),u=(0,h.h2)(a.signature,"signature",f.Ye),v=await (0,l.l)(b,q);if(!await (0,e.MX)(q,v,u,t))throw new f.h2;let w={payload:p?(0,h.h2)(a.payload,"payload",f.Ye):"string"==typeof a.payload?g.Rd.encode(a.payload):a.payload};return(void 0!==a.protected&&(w.protectedHeader=m),void 0!==a.header&&(w.unprotectedHeader=a.header),s)?{...w,key:v}:w}async function n(a,b,c){if(a instanceof Uint8Array&&(a=g.D0.decode(a)),"string"!=typeof a)throw new f.Ye("Compact JWS must be a string or Uint8Array");let{0:d,1:e,2:h,length:i}=a.split(".");if(3!==i)throw new f.Ye("Invalid Compact JWS");let j=await m({payload:e,protected:d,signature:h},b,c),k={payload:j.payload,protectedHeader:j.protectedHeader};return"function"==typeof b?{...k,key:j.key}:k}var o=c(17347);async function p(a,b,c){let d=await n(a,b,c);if(d.protectedHeader.crit?.includes("b64")&&!1===d.protectedHeader.b64)throw new f.Dp("JWTs MUST NOT use unencoded payload");let e={payload:(0,o.k6)(d.protectedHeader,d.payload,c),protectedHeader:d.protectedHeader};return"function"==typeof b?{...e,key:d.key}:e}},71998:(a,b,c)=>{"use strict";c.d(b,{Fh:()=>d.getProviderNodes,L9:()=>d.L9,Mc:()=>d.Mc,OM:()=>d.OM,P:()=>d.getProviderConnections,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Yd:()=>d.Yd,ZO:()=>d.ZO,c:()=>d.c,createProviderConnection:()=>d.iE,ek:()=>d.ek,fK:()=>d.fK,fv:()=>d.fv,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,o5:()=>d.o5,op:()=>d.op,rj:()=>d.updateProviderConnection,uL:()=>d.uL,ui:()=>d.ui,uv:()=>d.uv});var d=c(89718)},73024:a=>{"use strict";a.exports=require("node:fs")},73136:a=>{"use strict";a.exports=require("node:url")},76760:a=>{"use strict";a.exports=require("node:path")},77598:a=>{"use strict";a.exports=require("node:crypto")},78335:()=>{},79646:a=>{"use strict";a.exports=require("child_process")},81115:a=>{"use strict";a.exports=require("constants")},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},93800:(a,b,c)=>{"use strict";function d(a=""){return String(a).trim().replace(/\/+$/,"")}function e(a){try{return new URL(String(a).trim())}catch{return null}}function f(a,b="openai-compatible"){let c=e(a);if(!c)return d(a);let g="anthropic-compatible"===b?function(a=""){let b=d(a);for(let a of["/messages","/models"])if(b.endsWith(a)){b=b.slice(0,-a.length);break}return b||""}(c.pathname):"custom-image"===b?function(a=""){let b=d(a);for(let a of["/images/generations","/images/edits"])if(b.endsWith(a)){b=b.slice(0,-a.length);break}return b||""}(c.pathname):function(a=""){let b=d(a);for(let a of["/chat/completions","/responses","/models"])if(b.endsWith(a)){b=b.slice(0,-a.length);break}return b||""}(c.pathname);return`${c.origin}${g}`.replace(/\/+$/,"")}function g({url:a="",body:b=null}={}){let c=e(a),f=d(c?.pathname||"");if(f.endsWith("/responses"))return"responses";if(f.endsWith("/chat/completions"))return"chat";if(b&&"object"==typeof b){if(!Array.isArray(b.messages)&&void 0!==b.input)return"responses";Array.isArray(b.messages)}return"chat"}c.d(b,{Hl:()=>g,wl:()=>f})},94735:a=>{"use strict";a.exports=require("events")},96487:()=>{}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,7502,1813,8838,6184,9718,5681],()=>b(b.s=55180));module.exports=c})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{var a={};a.id=8814,a.ids=[8814],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},78335:()=>{},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},90290:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>G,patchFetch:()=>F,routeModule:()=>B,serverHooks:()=>E,workAsyncStorage:()=>C,workUnitAsyncStorage:()=>D});var d={};c.r(d),c.d(d,{POST:()=>A});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(23211),w=c(93800);let x=(a,b,c=1e4)=>Promise.race([fetch(a,b),new Promise((a,b)=>setTimeout(()=>b(Error("Request timeout")),c))]),y=a=>401===a||403===a?"API key unauthorized":404===a?"/models endpoint not found - try chat validation with model ID":a>=500?"Server error - try again later":`Unexpected response (${a})`,z=a=>401===a||403===a?"API key unauthorized":400===a?"Invalid model or bad request":404===a?"Chat endpoint not found":a>=500?"Server error - try again later":`Chat request failed (${a})`;async function A(a){try{let{baseUrl:b,apiKey:c,type:d,modelId:e,imageSize:f}=await a.json();if(!b||!c)return v.NextResponse.json({error:"Base URL and API key required"},{status:400});if(!(a=>{try{return new URL(a),!0}catch{return!1}})(b))return v.NextResponse.json({error:"Invalid URL format"},{status:400});if("custom-embedding"===d){let a=(0,w.wl)(b,"openai-compatible");if(!e?.trim())return v.NextResponse.json({valid:!1,error:"Model ID required for embedding validation"});let d=await x(`${a}/embeddings`,{method:"POST",headers:{Authorization:`Bearer ${c}`,"Content-Type":"application/json"},body:JSON.stringify({model:e.trim(),input:"ping"})});if(d.ok){let a=await d.json().catch(()=>null),b=Array.isArray(a?.data?.[0]?.embedding)?a.data[0].embedding.length:null;return v.NextResponse.json({valid:!0,method:"embeddings",dimensions:b})}if(401===d.status||403===d.status)return v.NextResponse.json({valid:!1,error:"API key unauthorized"});let f=await d.text().catch(()=>"");return v.NextResponse.json({valid:!1,error:`Embeddings request failed (${d.status})${f?`: ${f.slice(0,200)}`:""}`,method:"embeddings"})}if("custom-image"===d){let a=(0,w.wl)(b,"custom-image");if(!e?.trim())return v.NextResponse.json({valid:!1,error:"Model ID required for image validation"});let d=await x(`${a}/images/generations`,{method:"POST",headers:{Authorization:`Bearer ${c}`,"Content-Type":"application/json"},body:JSON.stringify({model:e.trim(),prompt:"ping",n:1,size:f?.trim()||"1024x1024"})});if(d.ok||400===d.status||422===d.status)return v.NextResponse.json({valid:!0,method:"images",normalizedBaseUrl:a});if(401===d.status||403===d.status)return v.NextResponse.json({valid:!1,error:"API key unauthorized"});let g=await d.text().catch(()=>"");return v.NextResponse.json({valid:!1,error:`Images request failed (${d.status})${g?`: ${g.slice(0,200)}`:""}`,method:"images",normalizedBaseUrl:a})}if("anthropic-compatible"===d){let a=(0,w.wl)(b,"anthropic-compatible"),d=`${a}/models`,f=await x(d,{method:"GET",headers:{"x-api-key":c,"anthropic-version":"2023-06-01",Authorization:`Bearer ${c}`}});if(f.ok)return v.NextResponse.json({valid:!0});if(401===f.status||403===f.status)return v.NextResponse.json({valid:!1,error:"API key unauthorized"});if(e){let b=await x(`${a}/chat/completions`,{method:"POST",headers:{Authorization:`Bearer ${c}`,"Content-Type":"application/json","x-api-key":c,"anthropic-version":"2023-06-01"},body:JSON.stringify({model:e,messages:[{role:"user",content:"ping"}],max_tokens:1})});if(b.ok)return v.NextResponse.json({valid:!0,method:"chat"});return v.NextResponse.json({valid:!1,error:z(b.status),method:"chat"})}return v.NextResponse.json({valid:!1,error:y(f.status)})}let g=(0,w.wl)(b,"openai-compatible"),h=(0,w.Hl)({url:b,body:null}),i=`${g}/models`,j=await x(i,{headers:{Authorization:`Bearer ${c}`}});if(j.ok)return v.NextResponse.json({valid:!0,normalizedBaseUrl:g,inferredApiType:h});if(401===j.status||403===j.status)return v.NextResponse.json({valid:!1,error:"API key unauthorized"});if(e){let a="responses"===h?"/responses":"/chat/completions",b="responses"===h?{model:e,input:"ping",max_output_tokens:1}:{model:e,messages:[{role:"user",content:"ping"}],max_tokens:1},d=await x(`${g}${a}`,{method:"POST",headers:{Authorization:`Bearer ${c}`,"Content-Type":"application/json"},body:JSON.stringify(b)});if(d.ok)return v.NextResponse.json({valid:!0,method:"responses"===h?"responses":"chat",normalizedBaseUrl:g,inferredApiType:h});return v.NextResponse.json({valid:!1,error:z(d.status),method:"responses"===h?"responses":"chat",normalizedBaseUrl:g,inferredApiType:h})}return v.NextResponse.json({valid:!1,error:y(j.status),normalizedBaseUrl:g,inferredApiType:h})}catch(b){let a=b.cause?.code==="ECONNREFUSED"?"Connection refused - provider node offline or unreachable":b.cause?.code==="ENOTFOUND"?"DNS lookup failed - invalid domain or network issue":b.cause?.code==="ETIMEDOUT"?"Connection timeout - provider node too slow":b.message.includes("timeout")?"Request timeout (>10s) - provider node not responding":b.cause?.code==="CERT_HAS_EXPIRED"?"SSL certificate expired":b.cause?.code==="UNABLE_TO_VERIFY_LEAF_SIGNATURE"?"SSL certificate verification failed":b.cause?.code?`Network error: ${b.cause.code}`:"Network connection failed - check URL and network connectivity";return console.error("Error validating provider node:",{message:b.message,cause:b.cause,code:b.cause?.code,userMessage:a}),v.NextResponse.json({valid:!1,error:a},{status:500})}}let B=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/provider-nodes/validate/route",pathname:"/api/provider-nodes/validate",filename:"route",bundlePath:"app/api/provider-nodes/validate/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/bytedance/Documents/9router/src/app/api/provider-nodes/validate/route.js",nextConfigOutput:"standalone",userland:d,...{}}),{workAsyncStorage:C,workUnitAsyncStorage:D,serverHooks:E}=B;function F(){return(0,g.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:D})}async function G(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),B.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/provider-nodes/validate/route";"/index"===d&&(d="/");let e=await B.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,params:v,nextConfig:w,parsedUrl:x,isDraftMode:y,prerenderManifest:z,routerServerContext:A,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,resolvedPathname:E,clientReferenceManifest:F,serverActionsManifest:G}=e,H=(0,k.normalizeAppPath)(d),I=!!(z.dynamicRoutes[H]||z.routes[E]),J=async()=>((null==A?void 0:A.render404)?await A.render404(a,b,x,!1):b.end("This page could not be found"),null);if(I&&!y){let a=!!z.routes[E],b=z.dynamicRoutes[H];if(b&&!1===b.fallback&&!a){if(w.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||B.isDev||y||(K="/index"===(K=E)?"/":K);let L=!0===B.isDev||!I,M=I&&!L;G&&F&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:F,serverActionsManifest:G});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q=!!(null==A?void 0:A.isWrappedByNextServer),R=!!(0,h.getRequestMeta)(a,"minimalMode"),S=(0,h.getRequestMeta)(a,"incrementalCache")||await B.getIncrementalCache(a,w,z,R);null==S||S.resetRequestCache(),globalThis.__incrementalCache=S;let T={params:v,previewProps:z.preview,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:L,incrementalCache:S,cacheLifeProfiles:w.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>B.onRequestError(a,b,d,e,A)},sharedContext:{buildId:g}},U=new l.NodeNextRequest(a),V=new l.NodeNextResponse(b),W=m.NextRequestAdapter.fromNodeNextRequest(U,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>B.handle(W,T).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${N} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${N} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!R&&C&&D&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=T.renderOpts.fetchMetrics;let h=T.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=T.renderOpts.collectedTags;if(!I)return await (0,p.I)(U,V,d,T.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==T.renderOpts.collectedRevalidate&&!(T.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&T.renderOpts.collectedRevalidate,e=void 0===T.renderOpts.collectedExpire||T.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:T.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await B.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,A),b}},k=await B.handleResponse({req:a,nextConfig:w,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:z,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:R});if(!I)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});R||b.setHeader("x-nextjs-cache",C?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),y&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return R&&I||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(U,V,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};Q&&P?await h(P):(e=O.getActiveScopeSpan(),await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},h),void 0,!Q))}catch(b){if(b instanceof t.NoFallbackError||await B.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,A),I)throw b;return await (0,p.I)(U,V,new Response(null,{status:500})),null}}},93800:(a,b,c)=>{"use strict";function d(a=""){return String(a).trim().replace(/\/+$/,"")}function e(a){try{return new URL(String(a).trim())}catch{return null}}function f(a,b="openai-compatible"){let c=e(a);if(!c)return d(a);let g="anthropic-compatible"===b?function(a=""){let b=d(a);for(let a of["/messages","/models"])if(b.endsWith(a)){b=b.slice(0,-a.length);break}return b||""}(c.pathname):"custom-image"===b?function(a=""){let b=d(a);for(let a of["/images/generations","/images/edits"])if(b.endsWith(a)){b=b.slice(0,-a.length);break}return b||""}(c.pathname):function(a=""){let b=d(a);for(let a of["/chat/completions","/responses","/models"])if(b.endsWith(a)){b=b.slice(0,-a.length);break}return b||""}(c.pathname);return`${c.origin}${g}`.replace(/\/+$/,"")}function g({url:a="",body:b=null}={}){let c=e(a),f=d(c?.pathname||"");if(f.endsWith("/responses"))return"responses";if(f.endsWith("/chat/completions"))return"chat";if(b&&"object"==typeof b){if(!Array.isArray(b.messages)&&void 0!==b.input)return"responses";Array.isArray(b.messages)}return"chat"}c.d(b,{Hl:()=>g,wl:()=>f})},96487:()=>{}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,1813],()=>b(b.s=90290));module.exports=c})();
|
|
1
|
+
(()=>{var a={};a.id=8814,a.ids=[8814],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},70309:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>G,patchFetch:()=>F,routeModule:()=>B,serverHooks:()=>E,workAsyncStorage:()=>C,workUnitAsyncStorage:()=>D});var d={};c.r(d),c.d(d,{POST:()=>A});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(23211),w=c(93800);let x=(a,b,c=1e4)=>Promise.race([fetch(a,b),new Promise((a,b)=>setTimeout(()=>b(Error("Request timeout")),c))]),y=a=>401===a||403===a?"API key unauthorized":404===a?"/models endpoint not found - try chat validation with model ID":a>=500?"Server error - try again later":`Unexpected response (${a})`,z=a=>401===a||403===a?"API key unauthorized":400===a?"Invalid model or bad request":404===a?"Chat endpoint not found":a>=500?"Server error - try again later":`Chat request failed (${a})`;async function A(a){try{let{baseUrl:b,apiKey:c,type:d,modelId:e,imageSize:f}=await a.json();if(!b||!c)return v.NextResponse.json({error:"Base URL and API key required"},{status:400});if(!(a=>{try{return new URL(a),!0}catch{return!1}})(b))return v.NextResponse.json({error:"Invalid URL format"},{status:400});if("custom-embedding"===d){let a=(0,w.wl)(b,"openai-compatible");if(!e?.trim())return v.NextResponse.json({valid:!1,error:"Model ID required for embedding validation"});let d=await x(`${a}/embeddings`,{method:"POST",headers:{Authorization:`Bearer ${c}`,"Content-Type":"application/json"},body:JSON.stringify({model:e.trim(),input:"ping"})});if(d.ok){let a=await d.json().catch(()=>null),b=Array.isArray(a?.data?.[0]?.embedding)?a.data[0].embedding.length:null;return v.NextResponse.json({valid:!0,method:"embeddings",dimensions:b})}if(401===d.status||403===d.status)return v.NextResponse.json({valid:!1,error:"API key unauthorized"});let f=await d.text().catch(()=>"");return v.NextResponse.json({valid:!1,error:`Embeddings request failed (${d.status})${f?`: ${f.slice(0,200)}`:""}`,method:"embeddings"})}if("custom-image"===d){let a=(0,w.wl)(b,"custom-image");if(!e?.trim())return v.NextResponse.json({valid:!1,error:"Model ID required for image validation"});let d=await x(`${a}/images/generations`,{method:"POST",headers:{Authorization:`Bearer ${c}`,"Content-Type":"application/json"},body:JSON.stringify({model:e.trim(),prompt:"ping",n:1,size:f?.trim()||"1024x1024"})});if(d.ok||400===d.status||422===d.status)return v.NextResponse.json({valid:!0,method:"images",normalizedBaseUrl:a});if(401===d.status||403===d.status)return v.NextResponse.json({valid:!1,error:"API key unauthorized"});let g=await d.text().catch(()=>"");return v.NextResponse.json({valid:!1,error:`Images request failed (${d.status})${g?`: ${g.slice(0,200)}`:""}`,method:"images",normalizedBaseUrl:a})}if("anthropic-compatible"===d){let a=(0,w.wl)(b,"anthropic-compatible"),d=`${a}/models`,f=await x(d,{method:"GET",headers:{"x-api-key":c,"anthropic-version":"2023-06-01",Authorization:`Bearer ${c}`}});if(f.ok)return v.NextResponse.json({valid:!0});if(401===f.status||403===f.status)return v.NextResponse.json({valid:!1,error:"API key unauthorized"});if(e){let b=await x(`${a}/chat/completions`,{method:"POST",headers:{Authorization:`Bearer ${c}`,"Content-Type":"application/json","x-api-key":c,"anthropic-version":"2023-06-01"},body:JSON.stringify({model:e,messages:[{role:"user",content:"ping"}],max_tokens:1})});if(b.ok)return v.NextResponse.json({valid:!0,method:"chat"});return v.NextResponse.json({valid:!1,error:z(b.status),method:"chat"})}return v.NextResponse.json({valid:!1,error:y(f.status)})}let g=(0,w.wl)(b,"openai-compatible"),h=(0,w.Hl)({url:b,body:null}),i=`${g}/models`,j=await x(i,{headers:{Authorization:`Bearer ${c}`}});if(j.ok)return v.NextResponse.json({valid:!0,normalizedBaseUrl:g,inferredApiType:h});if(401===j.status||403===j.status)return v.NextResponse.json({valid:!1,error:"API key unauthorized"});if(e){let a="responses"===h?"/responses":"/chat/completions",b="responses"===h?{model:e,input:"ping",max_output_tokens:1}:{model:e,messages:[{role:"user",content:"ping"}],max_tokens:1},d=await x(`${g}${a}`,{method:"POST",headers:{Authorization:`Bearer ${c}`,"Content-Type":"application/json"},body:JSON.stringify(b)});if(d.ok)return v.NextResponse.json({valid:!0,method:"responses"===h?"responses":"chat",normalizedBaseUrl:g,inferredApiType:h});return v.NextResponse.json({valid:!1,error:z(d.status),method:"responses"===h?"responses":"chat",normalizedBaseUrl:g,inferredApiType:h})}return v.NextResponse.json({valid:!1,error:y(j.status),normalizedBaseUrl:g,inferredApiType:h})}catch(b){let a=b.cause?.code==="ECONNREFUSED"?"Connection refused - provider node offline or unreachable":b.cause?.code==="ENOTFOUND"?"DNS lookup failed - invalid domain or network issue":b.cause?.code==="ETIMEDOUT"?"Connection timeout - provider node too slow":b.message.includes("timeout")?"Request timeout (>10s) - provider node not responding":b.cause?.code==="CERT_HAS_EXPIRED"?"SSL certificate expired":b.cause?.code==="UNABLE_TO_VERIFY_LEAF_SIGNATURE"?"SSL certificate verification failed":b.cause?.code?`Network error: ${b.cause.code}`:"Network connection failed - check URL and network connectivity";return console.error("Error validating provider node:",{message:b.message,cause:b.cause,code:b.cause?.code,userMessage:a}),v.NextResponse.json({valid:!1,error:a},{status:500})}}let B=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/provider-nodes/validate/route",pathname:"/api/provider-nodes/validate",filename:"route",bundlePath:"app/api/provider-nodes/validate/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/bytedance/Documents/9router/src/app/api/provider-nodes/validate/route.js",nextConfigOutput:"standalone",userland:d,...{}}),{workAsyncStorage:C,workUnitAsyncStorage:D,serverHooks:E}=B;function F(){return(0,g.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:D})}async function G(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),B.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/provider-nodes/validate/route";"/index"===d&&(d="/");let e=await B.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,params:v,nextConfig:w,parsedUrl:x,isDraftMode:y,prerenderManifest:z,routerServerContext:A,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,resolvedPathname:E,clientReferenceManifest:F,serverActionsManifest:G}=e,H=(0,k.normalizeAppPath)(d),I=!!(z.dynamicRoutes[H]||z.routes[E]),J=async()=>((null==A?void 0:A.render404)?await A.render404(a,b,x,!1):b.end("This page could not be found"),null);if(I&&!y){let a=!!z.routes[E],b=z.dynamicRoutes[H];if(b&&!1===b.fallback&&!a){if(w.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||B.isDev||y||(K="/index"===(K=E)?"/":K);let L=!0===B.isDev||!I,M=I&&!L;G&&F&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:F,serverActionsManifest:G});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q=!!(null==A?void 0:A.isWrappedByNextServer),R=!!(0,h.getRequestMeta)(a,"minimalMode"),S=(0,h.getRequestMeta)(a,"incrementalCache")||await B.getIncrementalCache(a,w,z,R);null==S||S.resetRequestCache(),globalThis.__incrementalCache=S;let T={params:v,previewProps:z.preview,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:L,incrementalCache:S,cacheLifeProfiles:w.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>B.onRequestError(a,b,d,e,A)},sharedContext:{buildId:g}},U=new l.NodeNextRequest(a),V=new l.NodeNextResponse(b),W=m.NextRequestAdapter.fromNodeNextRequest(U,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>B.handle(W,T).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${N} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${N} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!R&&C&&D&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=T.renderOpts.fetchMetrics;let h=T.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=T.renderOpts.collectedTags;if(!I)return await (0,p.I)(U,V,d,T.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==T.renderOpts.collectedRevalidate&&!(T.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&T.renderOpts.collectedRevalidate,e=void 0===T.renderOpts.collectedExpire||T.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:T.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await B.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,A),b}},k=await B.handleResponse({req:a,nextConfig:w,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:z,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:R});if(!I)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});R||b.setHeader("x-nextjs-cache",C?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),y&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return R&&I||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(U,V,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};Q&&P?await h(P):(e=O.getActiveScopeSpan(),await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},h),void 0,!Q))}catch(b){if(b instanceof t.NoFallbackError||await B.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,A),I)throw b;return await (0,p.I)(U,V,new Response(null,{status:500})),null}}},78335:()=>{},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},93800:(a,b,c)=>{"use strict";function d(a=""){return String(a).trim().replace(/\/+$/,"")}function e(a){try{return new URL(String(a).trim())}catch{return null}}function f(a,b="openai-compatible"){let c=e(a);if(!c)return d(a);let g="anthropic-compatible"===b?function(a=""){let b=d(a);for(let a of["/messages","/models"])if(b.endsWith(a)){b=b.slice(0,-a.length);break}return b||""}(c.pathname):"custom-image"===b?function(a=""){let b=d(a);for(let a of["/images/generations","/images/edits"])if(b.endsWith(a)){b=b.slice(0,-a.length);break}return b||""}(c.pathname):function(a=""){let b=d(a);for(let a of["/chat/completions","/responses","/models"])if(b.endsWith(a)){b=b.slice(0,-a.length);break}return b||""}(c.pathname);return`${c.origin}${g}`.replace(/\/+$/,"")}function g({url:a="",body:b=null}={}){let c=e(a),f=d(c?.pathname||"");if(f.endsWith("/responses"))return"responses";if(f.endsWith("/chat/completions"))return"chat";if(b&&"object"==typeof b){if(!Array.isArray(b.messages)&&void 0!==b.input)return"responses";Array.isArray(b.messages)}return"chat"}c.d(b,{Hl:()=>g,wl:()=>f})},96487:()=>{}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,1813],()=>b(b.s=70309));module.exports=c})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(()=>{var a={};a.id=5211,a.ids=[5211],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},643:a=>{a.exports=require("node:perf_hooks")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},4573:a=>{a.exports=require("node:buffer")},7803:(a,b,c)=>{c.r(b),c.d(b,{debug:()=>f,error:()=>i,info:()=>g,maskKey:()=>m,request:()=>j,response:()=>k,stream:()=>l,warn:()=>h});function d(){return new Date().toLocaleTimeString("en-US",{hour12:!1})}function e(a){if(!a)return"";if("string"==typeof a)return a;try{return JSON.stringify(a)}catch{return String(a)}}function f(a,b,c){!0;{let f=c?` ${e(c)}`:"";console.log(`[${d()}] đ [${a}] ${b}${f}`)}}function g(a,b,c){!0;{let f=c?` ${e(c)}`:"";console.log(`[${d()}] âšī¸ [${a}] ${b}${f}`)}}function h(a,b,c){c&&e(c)}function i(a,b,c){!0;{let f=c?` ${e(c)}`:"";console.log(`[${d()}] â [${a}] ${b}${f}`)}}function j(a,b,c){let f=c?` ${e(c)}`:"";console.log(`\x1b[36m[${d()}] đĨ ${a} ${b}${f}\x1b[0m`)}function k(a,b,c){let f=c?` ${e(c)}`:"";console.log(`[${d()}] ${a<400?"\uD83D\uDCE4":"\uD83D\uDCA5"} ${a} (${b}ms)${f}`)}function l(a,b){let c=b?` ${e(b)}`:"";console.log(`[${d()}] đ [STREAM] ${a}${c}`)}function m(a){return!a||a.length<8?"***":`${a.slice(0,4)}...${a.slice(-4)}`}},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},11259:(a,b,c)=>{c.d(b,{Pv:()=>k}),c(73024);var d=c(51455),e=c(76760),f=c(73136);async function g(a,b,c){for(let d=0;d<b;d++)try{return await a()}catch(a){if(d<b-1)await new Promise(a=>setTimeout(a,c));else throw a}}class h{#a;#b;#c=!1;#d=null;#e=null;#f=null;#g=null;#h(a){return this.#g=a,this.#f||=new Promise((a,b)=>{this.#e=[a,b]}),new Promise((a,b)=>{this.#f?.then(a).catch(b)})}async #i(a){this.#c=!0;try{await (0,d.writeFile)(this.#b,a,"utf-8"),await g(async()=>{await (0,d.rename)(this.#b,this.#a)},10,100),this.#d?.[0]()}catch(a){throw a instanceof Error&&this.#d?.[1](a),a}finally{if(this.#c=!1,this.#d=this.#e,this.#e=this.#f=null,null!==this.#g){let a=this.#g;this.#g=null,await this.write(a)}}}constructor(a){this.#a=a,this.#b=function(a){let b=a instanceof URL?(0,f.fileURLToPath)(a):a.toString();return(0,e.join)((0,e.dirname)(b),`.${(0,e.basename)(b)}.tmp`)}(a)}async write(a){return this.#c?this.#h(a):this.#i(a)}}class i{#a;#j;constructor(a){this.#a=a,this.#j=new h(a)}async read(){let a;try{a=await (0,d.readFile)(this.#a,"utf-8")}catch(a){if("ENOENT"===a.code)return null;throw a}return a}write(a){return this.#j.write(a)}}class j{#k;#l;#m;constructor(a,{parse:b,stringify:c}){this.#k=new i(a),this.#l=b,this.#m=c}async read(){let a=await this.#k.read();return null===a?null:this.#l(a)}write(a){return this.#k.write(this.#m(a))}}class k extends j{constructor(a){super(a,{parse:JSON.parse,stringify:a=>JSON.stringify(a,null,2)})}}},12412:a=>{a.exports=require("assert")},14985:a=>{a.exports=require("dns")},16698:a=>{a.exports=require("node:async_hooks")},21820:a=>{a.exports=require("os")},27910:a=>{a.exports=require("stream")},28354:a=>{a.exports=require("util")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},32467:a=>{a.exports=require("node:http2")},33873:a=>{a.exports=require("path")},34589:a=>{a.exports=require("node:assert")},35024:(a,b,c)=>{c.d(b,{Ak:()=>h,xq:()=>g});var d=c(21820);let e={"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},f="https://api.kimi.com/coding/v1/messages",g={claude:{baseUrl:"https://api.anthropic.com/v1/messages",format:"claude",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,context-management-2025-06-27,prompt-caching-scope-2026-01-05,advanced-tool-use-2025-11-20,effort-2025-11-24,structured-outputs-2025-12-15,fast-mode-2026-02-01,redact-thinking-2026-02-12,token-efficient-tools-2026-03-28","Anthropic-Dangerous-Direct-Browser-Access":"true","User-Agent":"claude-cli/2.1.92 (external, sdk-cli)","X-App":"cli","X-Stainless-Helper-Method":"stream","X-Stainless-Retry-Count":"0","X-Stainless-Runtime-Version":"v24.14.0","X-Stainless-Package-Version":"0.80.0","X-Stainless-Runtime":"node","X-Stainless-Lang":"js","X-Stainless-Arch":function(){switch((0,d.arch)()){case"x64":return"x64";case"arm64":return"arm64";case"ia32":return"x86";default:return`other::${(0,d.arch)()}`}}(),"X-Stainless-Os":function(){switch((0,d.platform)()){case"darwin":return"MacOS";case"win32":return"Windows";case"linux":return"Linux";case"freebsd":return"FreeBSD";default:return`Other::${(0,d.platform)()}`}}(),"X-Stainless-Timeout":"600"},clientId:"9d1c250a-e61b-44d9-88ed-5944d1962f5e",tokenUrl:"https://api.anthropic.com/v1/oauth/token"},gemini:{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",format:"gemini",clientId:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecret:"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"},"gemini-cli":{baseUrl:"https://cloudcode-pa.googleapis.com/v1internal",format:"gemini-cli",clientId:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecret:"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"},codex:{baseUrl:"https://chatgpt.com/backend-api/codex/responses",format:"openai-responses",headers:{originator:"codex-cli","User-Agent":"codex-cli/1.0.18 (macOS; arm64)"},clientId:"app_EMoamEEZ73f0CkXaXp7hrann",tokenUrl:"https://auth.openai.com/oauth/token"},qwen:{baseUrl:"https://portal.qwen.ai/v1/chat/completions",format:"openai",clientId:"f0304373b74a44d2b584a3fb70ca9e56",tokenUrl:"https://chat.qwen.ai/api/v1/oauth2/token",authUrl:"https://chat.qwen.ai/api/v1/oauth2/device/code"},iflow:{baseUrl:"https://apis.iflow.cn/v1/chat/completions",format:"openai",headers:{"User-Agent":"iFlow-Cli"},clientId:"10009311001",clientSecret:"4Z3YjXycVsQvyGF1etiNlIBB4RsqSDtW",tokenUrl:"https://iflow.cn/oauth/token",authUrl:"https://iflow.cn/oauth"},qoder:{baseUrl:"https://api.qoder.com/v1/chat/completions",format:"openai",headers:{"User-Agent":"Qoder-Cli"},clientId:process.env.QODER_OAUTH_CLIENT_ID||"10009311001",clientSecret:process.env.QODER_OAUTH_CLIENT_SECRET||"4Z3YjXycVsQvyGF1etiNlIBB4RsqSDtW",tokenUrl:"https://api.qoder.com/oauth/token",authUrl:"https://qoder.com/oauth/authorize"},antigravity:{baseUrls:["https://daily-cloudcode-pa.googleapis.com","https://daily-cloudcode-pa.sandbox.googleapis.com"],format:"antigravity",headers:{"User-Agent":`antigravity/1.107.0 ${(0,d.platform)()}/${(0,d.arch)()}`},clientId:"1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",clientSecret:"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"},openrouter:{baseUrl:"https://openrouter.ai/api/v1/chat/completions",format:"openai",headers:{"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"}},openai:{baseUrl:"https://api.openai.com/v1/chat/completions",format:"openai"},glm:{baseUrl:"https://api.z.ai/api/anthropic/v1/messages",format:"claude",headers:{...e}},"glm-cn":{baseUrl:"https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",format:"openai",headers:{}},kimi:{baseUrl:f,format:"claude",headers:{...e}},minimax:{baseUrl:"https://api.minimax.io/anthropic/v1/messages",format:"claude",headers:{...e}},"minimax-cn":{baseUrl:"https://api.minimaxi.com/anthropic/v1/messages",format:"claude",headers:{...e}},alicode:{baseUrl:"https://coding.dashscope.aliyuncs.com/v1/chat/completions",format:"openai",headers:{}},"alicode-intl":{baseUrl:"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions",format:"openai",headers:{}},"volcengine-ark":{baseUrl:"https://ark.cn-beijing.volces.com/api/coding/v3/chat/completions",format:"openai",headers:{}},byteplus:{baseUrl:"https://ark.ap-southeast.bytepluses.com/api/coding/v3/chat/completions",format:"openai",headers:{}},github:{baseUrl:"https://api.githubcopilot.com/chat/completions",responsesUrl:"https://api.githubcopilot.com/responses",format:"openai",headers:{"copilot-integration-id":"vscode-chat","editor-version":"vscode/1.110.0","editor-plugin-version":"copilot-chat/0.38.0","user-agent":"GitHubCopilotChat/0.38.0","openai-intent":"conversation-panel","x-github-api-version":"2025-04-01","x-vscode-user-agent-library-version":"electron-fetch","X-Initiator":"user",Accept:"application/json","Content-Type":"application/json"},clientId:"Iv1.b507a08c87ecfe98"},kiro:{baseUrl:"https://codewhisperer.us-east-1.amazonaws.com/generateAssistantResponse",format:"kiro",retry:{429:2},headers:{"Content-Type":"application/json",Accept:"application/vnd.amazon.eventstream","X-Amz-Target":"AmazonCodeWhispererStreamingService.GenerateAssistantResponse","User-Agent":"AWS-SDK-JS/3.0.0 kiro-ide/1.0.0","X-Amz-User-Agent":"aws-sdk-js/3.0.0 kiro-ide/1.0.0"},tokenUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",authUrl:"https://prod.us-east-1.auth.desktop.kiro.dev"},cursor:{baseUrl:"https://api2.cursor.sh",chatPath:"/aiserver.v1.ChatService/StreamUnifiedChatWithTools",format:"cursor",headers:{"connect-accept-encoding":"gzip","connect-protocol-version":"1","Content-Type":"application/connect+proto","User-Agent":"connect-es/1.6.1"},clientVersion:"3.1.0"},"kimi-coding":{baseUrl:f,format:"claude",headers:{...e},clientId:"17e5f671-d194-4dfb-9706-5516cb48c098",tokenUrl:"https://auth.kimi.com/api/oauth/token",refreshUrl:"https://auth.kimi.com/api/oauth/token"},kilocode:{baseUrl:"https://api.kilo.ai/api/openrouter/chat/completions",format:"openai",headers:{}},opencode:{baseUrl:"http://localhost:4096/v1/chat/completions",format:"openai",headers:{}},cline:{baseUrl:"https://api.cline.bot/api/v1/chat/completions",format:"openai",headers:{"HTTP-Referer":"https://cline.bot","X-Title":"Cline"},tokenUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh"},nvidia:{baseUrl:"https://integrate.api.nvidia.com/v1/chat/completions",format:"openai"},anthropic:{baseUrl:"https://api.anthropic.com/v1/messages",format:"claude",headers:{...e}},deepseek:{baseUrl:"https://api.deepseek.com/chat/completions",format:"openai"},groq:{baseUrl:"https://api.groq.com/openai/v1/chat/completions",format:"openai"},xai:{baseUrl:"https://api.x.ai/v1/chat/completions",format:"openai"},mistral:{baseUrl:"https://api.mistral.ai/v1/chat/completions",format:"openai"},perplexity:{baseUrl:"https://api.perplexity.ai/chat/completions",format:"openai"},together:{baseUrl:"https://api.together.xyz/v1/chat/completions",format:"openai"},fireworks:{baseUrl:"https://api.fireworks.ai/inference/v1/chat/completions",format:"openai"},cerebras:{baseUrl:"https://api.cerebras.ai/v1/chat/completions",format:"openai"},cohere:{baseUrl:"https://api.cohere.ai/v1/chat/completions",format:"openai"},nebius:{baseUrl:"https://api.studio.nebius.ai/v1/chat/completions",format:"openai"},siliconflow:{baseUrl:"https://api.siliconflow.cn/v1/chat/completions",format:"openai"},hyperbolic:{baseUrl:"https://api.hyperbolic.xyz/v1/chat/completions",format:"openai"},deepgram:{baseUrl:"https://api.deepgram.com/v1/listen",format:"openai"},assemblyai:{baseUrl:"https://api.assemblyai.com/v1/audio/transcriptions",format:"openai"},nanobanana:{baseUrl:"https://api.nanobananaapi.ai/v1/chat/completions",format:"openai"},chutes:{baseUrl:"https://llm.chutes.ai/v1/chat/completions",format:"openai"},ollama:{baseUrl:"https://ollama.com/api/chat",format:"ollama"},"ollama-local":{baseUrl:"http://localhost:11434/api/chat",format:"ollama"},vertex:{baseUrl:"https://aiplatform.googleapis.com",format:"vertex"},"vertex-partner":{baseUrl:"https://aiplatform.googleapis.com",format:"openai"},gitlab:{baseUrl:"https://gitlab.com/api/v4/chat/completions",format:"openai"},codebuddy:{baseUrl:"https://copilot.tencent.com/v1/chat/completions",format:"openai"},opencode:{baseUrl:"https://opencode.ai",format:"openai",headers:{"x-opencode-client":"desktop"},noAuth:!0},"opencode-go":{baseUrl:"https://opencode.ai/zen/go/v1/chat/completions",format:"openai",headers:{}},"grok-web":{baseUrl:"https://grok.com/rest/app-chat/conversations/new",format:"grok-web",authType:"cookie"},"perplexity-web":{baseUrl:"https://www.perplexity.ai/rest/sse/perplexity_ask",format:"perplexity-web",authType:"cookie"},azure:{baseUrl:"",format:"openai",headers:{}},"cloudflare-ai":{baseUrl:"https://api.cloudflare.com/client/v4/accounts/{accountId}/ai/v1/chat/completions",format:"openai"},"xiaomi-mimo":{baseUrl:"https://api.xiaomimimo.com/v1/chat/completions",format:"openai"}};function h(a){return(a?.providerSpecificData?.baseUrl?.trim()||"http://localhost:11434").replace(/\/$/,"")}},37067:a=>{a.exports=require("node:http")},37540:a=>{a.exports=require("node:console")},38522:a=>{a.exports=require("node:zlib")},40610:a=>{a.exports=require("node:dns")},41692:a=>{a.exports=require("node:tls")},41792:a=>{a.exports=require("node:querystring")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},49120:(a,b,c)=>{c.d(b,{n:()=>k});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h);function j(a){return"win32"===process.platform?g().join(process.env.APPDATA||g().join(i().homedir(),"AppData","Roaming"),a):g().join(i().homedir(),`.${a}`)}let k=function(){if(process.env.DATA_DIR)return process.env.DATA_DIR;let a=j("openrouterx"),b=j("9router");return!e().existsSync(a)&&e().existsSync(b)?b:a}()},51455:a=>{a.exports=require("node:fs/promises")},53053:a=>{a.exports=require("node:diagnostics_channel")},55511:a=>{a.exports=require("crypto")},55591:a=>{a.exports=require("https")},57075:a=>{a.exports=require("node:stream")},57975:a=>{a.exports=require("node:util")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},71998:(a,b,c)=>{c.d(b,{Fh:()=>d.getProviderNodes,L9:()=>d.L9,Mc:()=>d.Mc,OM:()=>d.OM,P:()=>d.getProviderConnections,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Yd:()=>d.Yd,ZO:()=>d.ZO,c:()=>d.c,createProviderConnection:()=>d.iE,ek:()=>d.ek,fK:()=>d.fK,fv:()=>d.fv,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,o5:()=>d.o5,op:()=>d.op,rj:()=>d.updateProviderConnection,uL:()=>d.uL,ui:()=>d.ui,uv:()=>d.uv});var d=c(89718)},73024:a=>{a.exports=require("node:fs")},73136:a=>{a.exports=require("node:url")},73429:a=>{a.exports=require("node:util/types")},75919:a=>{a.exports=require("node:worker_threads")},76760:a=>{a.exports=require("node:path")},77030:a=>{a.exports=require("node:net")},77598:a=>{a.exports=require("node:crypto")},78474:a=>{a.exports=require("node:events")},80099:a=>{a.exports=require("node:sqlite")},81115:a=>{a.exports=require("constants")},82996:(a,b,c)=>{c.d(b,{t:()=>d});class d{adapter;data;constructor(a,b){!function(a,b){if(void 0===a)throw Error("lowdb: missing adapter");if(void 0===b)throw Error("lowdb: missing default data")}(a,b),this.adapter=a,this.data=b}async read(){let a=await this.adapter.read();a&&(this.data=a)}async write(){this.data&&await this.adapter.write(this.data)}async update(a){a(this.data),await this.write()}}},83415:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>M,patchFetch:()=>L,routeModule:()=>H,serverHooks:()=>K,workAsyncStorage:()=>I,workUnitAsyncStorage:()=>J});var d={};c.r(d),c.d(d,{GET:()=>G});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(23211),w=c(71998),x=c(75681),y=c(93800),z=c(62409),A=c(92990),B=c(67828),C=c(35024);let D=a=>Array.isArray(a)?a:a?.data||a?.models||a?.results||[],E=a=>({url:a,method:"GET",headers:{"Content-Type":"application/json"},authHeader:"Authorization",authPrefix:"Bearer ",parseResponse:D}),F={claude:{url:"https://api.anthropic.com/v1/models",method:"GET",headers:{"Anthropic-Version":"2023-06-01","Content-Type":"application/json"},authHeader:"x-api-key",parseResponse:a=>a.data||[]},gemini:{url:"https://generativelanguage.googleapis.com/v1beta/models",method:"GET",headers:{"Content-Type":"application/json"},authQuery:"key",parseResponse:a=>a.models||[]},qwen:{url:"https://portal.qwen.ai/v1/models",method:"GET",headers:{"Content-Type":"application/json"},authHeader:"Authorization",authPrefix:"Bearer ",parseResponse:a=>a.data||[]},codex:{url:"https://chatgpt.com/backend-api/codex/models?client_version=1.0.0",method:"GET",headers:{"Content-Type":"application/json",Accept:"application/json"},authHeader:"Authorization",authPrefix:"Bearer ",parseResponse:a=>D(a).flatMap(a=>{let b=a?.id||a?.slug||a?.model||a?.name;if(!b)return[];let c=a?.display_name||a?.displayName||a?.name||b,d={...a,id:b,name:c};return!("image"!==(a?.type||"llm")&&!b.toLowerCase().includes("embed"))||b.endsWith("-review")?[d]:[d,{...d,id:`${b}-review`,name:`${c} Review`,upstreamModelId:b,quotaFamily:"review"}]})},antigravity:{url:"https://daily-cloudcode-pa.sandbox.googleapis.com/v1internal:models",method:"POST",headers:{"Content-Type":"application/json"},authHeader:"Authorization",authPrefix:"Bearer ",body:{},parseResponse:a=>a.models||[]},github:{url:"https://api.githubcopilot.com/models",method:"GET",headers:{"Content-Type":"application/json","Copilot-Integration-Id":"vscode-chat","editor-version":"vscode/1.107.1","editor-plugin-version":"copilot-chat/0.26.7","user-agent":"GitHubCopilotChat/0.26.7"},authHeader:"Authorization",authPrefix:"Bearer ",parseResponse:a=>a?.data?a.data.filter(a=>a.capabilities?.type==="chat").filter(a=>a.policy?.state!=="disabled").map(a=>({id:a.id,name:a.name||a.id,version:a.version,capabilities:a.capabilities,isDefault:!0===a.model_picker_enabled})):[]},openai:E("https://api.openai.com/v1/models"),openrouter:E("https://openrouter.ai/api/v1/models"),anthropic:{url:"https://api.anthropic.com/v1/models",method:"GET",headers:{"Anthropic-Version":"2023-06-01","Content-Type":"application/json"},authHeader:"x-api-key",parseResponse:a=>a.data||[]},alicode:{url:"https://coding.dashscope.aliyuncs.com/v1/models",method:"GET",headers:{"Content-Type":"application/json"},authHeader:"Authorization",authPrefix:"Bearer ",parseResponse:a=>a.data||[]},"alicode-intl":{url:"https://coding-intl.dashscope.aliyuncs.com/v1/models",method:"GET",headers:{"Content-Type":"application/json"},authHeader:"Authorization",authPrefix:"Bearer ",parseResponse:a=>a.data||[]},"volcengine-ark":E("https://ark.cn-beijing.volces.com/api/coding/v3/models"),byteplus:E("https://ark.ap-southeast.bytepluses.com/api/coding/v3/models"),deepseek:E("https://api.deepseek.com/models"),groq:E("https://api.groq.com/openai/v1/models"),xai:E("https://api.x.ai/v1/models"),mistral:E("https://api.mistral.ai/v1/models"),perplexity:E("https://api.perplexity.ai/models"),together:E("https://api.together.xyz/v1/models"),fireworks:E("https://api.fireworks.ai/inference/v1/models"),cerebras:E("https://api.cerebras.ai/v1/models"),cohere:E("https://api.cohere.ai/v1/models"),nebius:E("https://api.studio.nebius.ai/v1/models"),siliconflow:E("https://api.siliconflow.cn/v1/models"),hyperbolic:E("https://api.hyperbolic.xyz/v1/models"),ollama:E("https://ollama.com/api/tags"),nanobanana:E("https://api.nanobananaapi.ai/v1/models"),chutes:E("https://llm.chutes.ai/v1/models"),nvidia:E("https://integrate.api.nvidia.com/v1/models"),assemblyai:E("https://api.assemblyai.com/v1/models")};async function G(a,{params:b}){try{let{id:a}=await b,d=await (0,w.Mc)(a);if(!d)return v.NextResponse.json({error:"Connection not found"},{status:404});if((0,x.mq)(d.provider)){let a=d.providerSpecificData?.baseUrl;if(!a)return v.NextResponse.json({error:"No base URL configured for OpenAI compatible provider"},{status:400});let b=`${(0,y.wl)(a,"openai-compatible")}/models`,c=await fetch(b,{method:"GET",headers:{"Content-Type":"application/json",Authorization:`Bearer ${d.apiKey}`}});if(!c.ok){let a=await c.text();return console.log(`Error fetching models from ${d.provider}:`,a),v.NextResponse.json({error:`Failed to fetch models: ${c.status}`},{status:c.status})}let e=await c.json(),f=e.data||e.models||[];return v.NextResponse.json({provider:d.provider,connectionId:d.id,models:f})}if((0,x.gb)(d.provider)){let a=d.providerSpecificData?.baseUrl;if(!a)return v.NextResponse.json({error:"No base URL configured for Anthropic compatible provider"},{status:400});a=(0,y.wl)(a,"anthropic-compatible");let b=`${a}/models`,c=await fetch(b,{method:"GET",headers:{"Content-Type":"application/json","x-api-key":d.apiKey,"anthropic-version":"2023-06-01",Authorization:`Bearer ${d.apiKey}`}});if(!c.ok){let a=await c.text();return console.log(`Error fetching models from ${d.provider}:`,a),v.NextResponse.json({error:`Failed to fetch models: ${c.status}`},{status:c.status})}let e=await c.json(),f=e.data||e.models||[];return v.NextResponse.json({provider:d.provider,connectionId:d.id,models:f})}if("kiro"===d.provider){let a;try{let a=new z.v,b=d.providerSpecificData?.profileArn,c=d.accessToken,e=d.refreshToken;if(c&&b)try{let e=await a.listAvailableModels(c,b);return v.NextResponse.json({provider:d.provider,connectionId:d.id,models:e})}catch(c){if(c.message.includes("AccessDeniedException")&&e){console.log("Kiro token invalid/expired. Attempting refresh...");let c=await (0,B.Ql)(e,d.providerSpecificData);if(c?.accessToken){await (0,B.vN)(d.id,{accessToken:c.accessToken,refreshToken:c.refreshToken||e,expiresIn:c.expiresIn});let f=await a.listAvailableModels(c.accessToken,b);return v.NextResponse.json({provider:d.provider,connectionId:d.id,models:f})}}throw c}}catch(b){a=`Failed to fetch Kiro models: ${b.message}`,console.log("Failed to fetch Kiro models dynamically, falling back to static:",b.message)}return v.NextResponse.json({provider:d.provider,connectionId:d.id,models:[],warning:a})}if("gemini-cli"===d.provider){let a,{accessToken:b,refreshToken:e}=d;if(!b)return v.NextResponse.json({error:"No valid token found"},{status:401});let f=d.projectId||d.providerSpecificData?.projectId,g=f?{project:f}:{},h=async a=>await fetch("https://cloudcode-pa.googleapis.com/v1internal:fetchAvailableModels",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${a}`,"User-Agent":"google-api-nodejs-client/9.15.1","X-Goog-Api-Client":"google-cloud-sdk vscode_cloudshelleditor/0.1"},body:JSON.stringify(g)});try{let f=await h(b);if(!f.ok&&(401===f.status||403===f.status)&&e){let a=await (0,B.I9)(e,A.LT.clientId,A.LT.clientSecret);a?.accessToken&&(await (0,B.vN)(d.id,{accessToken:a.accessToken,refreshToken:a.refreshToken,expiresIn:a.expiresIn}),f=await h(a.accessToken))}if(f.ok){var c;let a=(c=await f.json(),Array.isArray(c?.models)?c.models.map(a=>{let b=a?.id||a?.model||a?.name;return b?{id:b,name:a?.displayName||a?.name||b}:null}).filter(Boolean):c?.models&&"object"==typeof c.models?Object.entries(c.models).filter(([,a])=>!a?.isInternal).map(([a,b])=>({id:a,name:b?.displayName||b?.name||a})):[]);if(a.length>0)return v.NextResponse.json({provider:d.provider,connectionId:d.id,models:a})}else{let b=await f.text();a=`Failed to fetch Gemini CLI models: ${f.status} ${b}`,console.log("Failed to fetch Gemini CLI models dynamically, falling back to static:",b)}}catch(b){a=`Failed to fetch Gemini CLI models: ${b.message}`,console.log("Failed to fetch Gemini CLI models dynamically, falling back to static:",b.message)}return v.NextResponse.json({provider:d.provider,connectionId:d.id,models:[],warning:a})}if("ollama-local"===d.provider){let a=`${(0,C.Ak)(d)}/api/tags`,b=await fetch(a,{method:"GET",headers:{"Content-Type":"application/json"}});if(!b.ok){let a=await b.text();return console.log("Error fetching models from ollama-local:",a),v.NextResponse.json({error:`Failed to fetch models: ${b.status}`},{status:b.status})}let c=await b.json(),e=D(c);return v.NextResponse.json({provider:d.provider,connectionId:d.id,models:e})}let e=F[d.provider];if(!e)return v.NextResponse.json({error:`Provider ${d.provider} does not support models listing`},{status:400});let f=d.providerSpecificData?.copilotToken||d.accessToken||d.apiKey;if(!f)return v.NextResponse.json({error:"No valid token found"},{status:401});let g=e.url;"qwen"===d.provider&&(g=(a=>{let b="https://portal.qwen.ai/v1/models",c=a?.providerSpecificData?.resourceUrl;if(!c||"string"!=typeof c)return b;let d=c.trim();return d?d.startsWith("http://")||d.startsWith("https://")?`${d.replace(/\/$/,"")}/models`:`https://${d.replace(/\/$/,"")}/v1/models`:b})(d)),e.authQuery&&(g+=`?${e.authQuery}=${f}`);let h={...e.headers};e.authHeader&&!e.authQuery&&(h[e.authHeader]=(e.authPrefix||"")+f);let i={method:e.method,headers:h};e.body&&"POST"===e.method&&(i.body=JSON.stringify(e.body));let j=await fetch(g,i);if(!j.ok){let a=await j.text();return console.log(`Error fetching models from ${d.provider}:`,a),v.NextResponse.json({error:`Failed to fetch models: ${j.status}`},{status:j.status})}let k=await j.json(),l=e.parseResponse(k);return v.NextResponse.json({provider:d.provider,connectionId:d.id,models:l})}catch(a){return console.log("Error fetching provider models:",a),v.NextResponse.json({error:"Failed to fetch models"},{status:500})}}let H=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/providers/[id]/models/route",pathname:"/api/providers/[id]/models",filename:"route",bundlePath:"app/api/providers/[id]/models/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/bytedance/Documents/9router/src/app/api/providers/[id]/models/route.js",nextConfigOutput:"standalone",userland:d,...{}}),{workAsyncStorage:I,workUnitAsyncStorage:J,serverHooks:K}=H;function L(){return(0,g.patchFetch)({workAsyncStorage:I,workUnitAsyncStorage:J})}async function M(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),H.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/providers/[id]/models/route";"/index"===d&&(d="/");let e=await H.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,params:v,nextConfig:w,parsedUrl:x,isDraftMode:y,prerenderManifest:z,routerServerContext:A,isOnDemandRevalidate:B,revalidateOnlyGenerated:C,resolvedPathname:D,clientReferenceManifest:E,serverActionsManifest:F}=e,G=(0,k.normalizeAppPath)(d),I=!!(z.dynamicRoutes[G]||z.routes[D]),J=async()=>((null==A?void 0:A.render404)?await A.render404(a,b,x,!1):b.end("This page could not be found"),null);if(I&&!y){let a=!!z.routes[D],b=z.dynamicRoutes[G];if(b&&!1===b.fallback&&!a){if(w.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||H.isDev||y||(K="/index"===(K=D)?"/":K);let L=!0===H.isDev||!I,M=I&&!L;F&&E&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:E,serverActionsManifest:F});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q=!!(null==A?void 0:A.isWrappedByNextServer),R=!!(0,h.getRequestMeta)(a,"minimalMode"),S=(0,h.getRequestMeta)(a,"incrementalCache")||await H.getIncrementalCache(a,w,z,R);null==S||S.resetRequestCache(),globalThis.__incrementalCache=S;let T={params:v,previewProps:z.preview,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:L,incrementalCache:S,cacheLifeProfiles:w.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>H.onRequestError(a,b,d,e,A)},sharedContext:{buildId:g}},U=new l.NodeNextRequest(a),V=new l.NodeNextResponse(b),W=m.NextRequestAdapter.fromNodeNextRequest(U,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>H.handle(W,T).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${N} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${N} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!R&&B&&C&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=T.renderOpts.fetchMetrics;let h=T.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=T.renderOpts.collectedTags;if(!I)return await (0,p.I)(U,V,d,T.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==T.renderOpts.collectedRevalidate&&!(T.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&T.renderOpts.collectedRevalidate,e=void 0===T.renderOpts.collectedExpire||T.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:T.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await H.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:B})},!1,A),b}},k=await H.handleResponse({req:a,nextConfig:w,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:z,isRoutePPREnabled:!1,isOnDemandRevalidate:B,revalidateOnlyGenerated:C,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:R});if(!I)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});R||b.setHeader("x-nextjs-cache",B?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),y&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return R&&I||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(U,V,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};Q&&P?await h(P):(e=O.getActiveScopeSpan(),await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},h),void 0,!Q))}catch(b){if(b instanceof t.NoFallbackError||await H.onRequestError(a,b,{routerKind:"App Router",routePath:G,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:B})},!1,A),I)throw b;return await (0,p.I)(U,V,new Response(null,{status:500})),null}}},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87997:a=>{a.exports=require("node:timers")},91645:a=>{a.exports=require("net")},93800:(a,b,c)=>{function d(a=""){return String(a).trim().replace(/\/+$/,"")}function e(a){try{return new URL(String(a).trim())}catch{return null}}function f(a,b="openai-compatible"){let c=e(a);if(!c)return d(a);let g="anthropic-compatible"===b?function(a=""){let b=d(a);for(let a of["/messages","/models"])if(b.endsWith(a)){b=b.slice(0,-a.length);break}return b||""}(c.pathname):"custom-image"===b?function(a=""){let b=d(a);for(let a of["/images/generations","/images/edits"])if(b.endsWith(a)){b=b.slice(0,-a.length);break}return b||""}(c.pathname):function(a=""){let b=d(a);for(let a of["/chat/completions","/responses","/models"])if(b.endsWith(a)){b=b.slice(0,-a.length);break}return b||""}(c.pathname);return`${c.origin}${g}`.replace(/\/+$/,"")}function g({url:a="",body:b=null}={}){let c=e(a),f=d(c?.pathname||"");if(f.endsWith("/responses"))return"responses";if(f.endsWith("/chat/completions"))return"chat";if(b&&"object"==typeof b){if(!Array.isArray(b.messages)&&void 0!==b.input)return"responses";Array.isArray(b.messages)}return"chat"}c.d(b,{Hl:()=>g,wl:()=>f})},94735:a=>{a.exports=require("events")}};var b=require("../../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,7502,1813,9718,5681,8590,7828,3245],()=>b(b.s=83415));module.exports=c})();
|
|
1
|
+
"use strict";(()=>{var a={};a.id=5211,a.ids=[5211],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},643:a=>{a.exports=require("node:perf_hooks")},836:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>M,patchFetch:()=>L,routeModule:()=>H,serverHooks:()=>K,workAsyncStorage:()=>I,workUnitAsyncStorage:()=>J});var d={};c.r(d),c.d(d,{GET:()=>G});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(23211),w=c(71998),x=c(75681),y=c(93800),z=c(62409),A=c(92990),B=c(67828),C=c(35024);let D=a=>Array.isArray(a)?a:a?.data||a?.models||a?.results||[],E=a=>({url:a,method:"GET",headers:{"Content-Type":"application/json"},authHeader:"Authorization",authPrefix:"Bearer ",parseResponse:D}),F={claude:{url:"https://api.anthropic.com/v1/models",method:"GET",headers:{"Anthropic-Version":"2023-06-01","Content-Type":"application/json"},authHeader:"x-api-key",parseResponse:a=>a.data||[]},gemini:{url:"https://generativelanguage.googleapis.com/v1beta/models",method:"GET",headers:{"Content-Type":"application/json"},authQuery:"key",parseResponse:a=>a.models||[]},qwen:{url:"https://portal.qwen.ai/v1/models",method:"GET",headers:{"Content-Type":"application/json"},authHeader:"Authorization",authPrefix:"Bearer ",parseResponse:a=>a.data||[]},codex:{url:"https://chatgpt.com/backend-api/codex/models?client_version=1.0.0",method:"GET",headers:{"Content-Type":"application/json",Accept:"application/json"},authHeader:"Authorization",authPrefix:"Bearer ",parseResponse:a=>D(a).flatMap(a=>{let b=a?.id||a?.slug||a?.model||a?.name;if(!b)return[];let c=a?.display_name||a?.displayName||a?.name||b,d={...a,id:b,name:c};return!("image"!==(a?.type||"llm")&&!b.toLowerCase().includes("embed"))||b.endsWith("-review")?[d]:[d,{...d,id:`${b}-review`,name:`${c} Review`,upstreamModelId:b,quotaFamily:"review"}]})},antigravity:{url:"https://daily-cloudcode-pa.sandbox.googleapis.com/v1internal:models",method:"POST",headers:{"Content-Type":"application/json"},authHeader:"Authorization",authPrefix:"Bearer ",body:{},parseResponse:a=>a.models||[]},github:{url:"https://api.githubcopilot.com/models",method:"GET",headers:{"Content-Type":"application/json","Copilot-Integration-Id":"vscode-chat","editor-version":"vscode/1.107.1","editor-plugin-version":"copilot-chat/0.26.7","user-agent":"GitHubCopilotChat/0.26.7"},authHeader:"Authorization",authPrefix:"Bearer ",parseResponse:a=>a?.data?a.data.filter(a=>a.capabilities?.type==="chat").filter(a=>a.policy?.state!=="disabled").map(a=>({id:a.id,name:a.name||a.id,version:a.version,capabilities:a.capabilities,isDefault:!0===a.model_picker_enabled})):[]},openai:E("https://api.openai.com/v1/models"),openrouter:E("https://openrouter.ai/api/v1/models"),anthropic:{url:"https://api.anthropic.com/v1/models",method:"GET",headers:{"Anthropic-Version":"2023-06-01","Content-Type":"application/json"},authHeader:"x-api-key",parseResponse:a=>a.data||[]},alicode:{url:"https://coding.dashscope.aliyuncs.com/v1/models",method:"GET",headers:{"Content-Type":"application/json"},authHeader:"Authorization",authPrefix:"Bearer ",parseResponse:a=>a.data||[]},"alicode-intl":{url:"https://coding-intl.dashscope.aliyuncs.com/v1/models",method:"GET",headers:{"Content-Type":"application/json"},authHeader:"Authorization",authPrefix:"Bearer ",parseResponse:a=>a.data||[]},"volcengine-ark":E("https://ark.cn-beijing.volces.com/api/coding/v3/models"),byteplus:E("https://ark.ap-southeast.bytepluses.com/api/coding/v3/models"),deepseek:E("https://api.deepseek.com/models"),groq:E("https://api.groq.com/openai/v1/models"),xai:E("https://api.x.ai/v1/models"),mistral:E("https://api.mistral.ai/v1/models"),perplexity:E("https://api.perplexity.ai/models"),together:E("https://api.together.xyz/v1/models"),fireworks:E("https://api.fireworks.ai/inference/v1/models"),cerebras:E("https://api.cerebras.ai/v1/models"),cohere:E("https://api.cohere.ai/v1/models"),nebius:E("https://api.studio.nebius.ai/v1/models"),siliconflow:E("https://api.siliconflow.cn/v1/models"),hyperbolic:E("https://api.hyperbolic.xyz/v1/models"),ollama:E("https://ollama.com/api/tags"),nanobanana:E("https://api.nanobananaapi.ai/v1/models"),chutes:E("https://llm.chutes.ai/v1/models"),nvidia:E("https://integrate.api.nvidia.com/v1/models"),assemblyai:E("https://api.assemblyai.com/v1/models")};async function G(a,{params:b}){try{let{id:a}=await b,d=await (0,w.Mc)(a);if(!d)return v.NextResponse.json({error:"Connection not found"},{status:404});if((0,x.mq)(d.provider)){let a=d.providerSpecificData?.baseUrl;if(!a)return v.NextResponse.json({error:"No base URL configured for OpenAI compatible provider"},{status:400});let b=`${(0,y.wl)(a,"openai-compatible")}/models`,c=await fetch(b,{method:"GET",headers:{"Content-Type":"application/json",Authorization:`Bearer ${d.apiKey}`}});if(!c.ok){let a=await c.text();return console.log(`Error fetching models from ${d.provider}:`,a),v.NextResponse.json({error:`Failed to fetch models: ${c.status}`},{status:c.status})}let e=await c.json(),f=e.data||e.models||[];return v.NextResponse.json({provider:d.provider,connectionId:d.id,models:f})}if((0,x.gb)(d.provider)){let a=d.providerSpecificData?.baseUrl;if(!a)return v.NextResponse.json({error:"No base URL configured for Anthropic compatible provider"},{status:400});a=(0,y.wl)(a,"anthropic-compatible");let b=`${a}/models`,c=await fetch(b,{method:"GET",headers:{"Content-Type":"application/json","x-api-key":d.apiKey,"anthropic-version":"2023-06-01",Authorization:`Bearer ${d.apiKey}`}});if(!c.ok){let a=await c.text();return console.log(`Error fetching models from ${d.provider}:`,a),v.NextResponse.json({error:`Failed to fetch models: ${c.status}`},{status:c.status})}let e=await c.json(),f=e.data||e.models||[];return v.NextResponse.json({provider:d.provider,connectionId:d.id,models:f})}if("kiro"===d.provider){let a;try{let a=new z.v,b=d.providerSpecificData?.profileArn,c=d.accessToken,e=d.refreshToken;if(c&&b)try{let e=await a.listAvailableModels(c,b);return v.NextResponse.json({provider:d.provider,connectionId:d.id,models:e})}catch(c){if(c.message.includes("AccessDeniedException")&&e){console.log("Kiro token invalid/expired. Attempting refresh...");let c=await (0,B.Ql)(e,d.providerSpecificData);if(c?.accessToken){await (0,B.vN)(d.id,{accessToken:c.accessToken,refreshToken:c.refreshToken||e,expiresIn:c.expiresIn});let f=await a.listAvailableModels(c.accessToken,b);return v.NextResponse.json({provider:d.provider,connectionId:d.id,models:f})}}throw c}}catch(b){a=`Failed to fetch Kiro models: ${b.message}`,console.log("Failed to fetch Kiro models dynamically, falling back to static:",b.message)}return v.NextResponse.json({provider:d.provider,connectionId:d.id,models:[],warning:a})}if("gemini-cli"===d.provider){let a,{accessToken:b,refreshToken:e}=d;if(!b)return v.NextResponse.json({error:"No valid token found"},{status:401});let f=d.projectId||d.providerSpecificData?.projectId,g=f?{project:f}:{},h=async a=>await fetch("https://cloudcode-pa.googleapis.com/v1internal:fetchAvailableModels",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${a}`,"User-Agent":"google-api-nodejs-client/9.15.1","X-Goog-Api-Client":"google-cloud-sdk vscode_cloudshelleditor/0.1"},body:JSON.stringify(g)});try{let f=await h(b);if(!f.ok&&(401===f.status||403===f.status)&&e){let a=await (0,B.I9)(e,A.LT.clientId,A.LT.clientSecret);a?.accessToken&&(await (0,B.vN)(d.id,{accessToken:a.accessToken,refreshToken:a.refreshToken,expiresIn:a.expiresIn}),f=await h(a.accessToken))}if(f.ok){var c;let a=(c=await f.json(),Array.isArray(c?.models)?c.models.map(a=>{let b=a?.id||a?.model||a?.name;return b?{id:b,name:a?.displayName||a?.name||b}:null}).filter(Boolean):c?.models&&"object"==typeof c.models?Object.entries(c.models).filter(([,a])=>!a?.isInternal).map(([a,b])=>({id:a,name:b?.displayName||b?.name||a})):[]);if(a.length>0)return v.NextResponse.json({provider:d.provider,connectionId:d.id,models:a})}else{let b=await f.text();a=`Failed to fetch Gemini CLI models: ${f.status} ${b}`,console.log("Failed to fetch Gemini CLI models dynamically, falling back to static:",b)}}catch(b){a=`Failed to fetch Gemini CLI models: ${b.message}`,console.log("Failed to fetch Gemini CLI models dynamically, falling back to static:",b.message)}return v.NextResponse.json({provider:d.provider,connectionId:d.id,models:[],warning:a})}if("ollama-local"===d.provider){let a=`${(0,C.Ak)(d)}/api/tags`,b=await fetch(a,{method:"GET",headers:{"Content-Type":"application/json"}});if(!b.ok){let a=await b.text();return console.log("Error fetching models from ollama-local:",a),v.NextResponse.json({error:`Failed to fetch models: ${b.status}`},{status:b.status})}let c=await b.json(),e=D(c);return v.NextResponse.json({provider:d.provider,connectionId:d.id,models:e})}let e=F[d.provider];if(!e)return v.NextResponse.json({error:`Provider ${d.provider} does not support models listing`},{status:400});let f=d.providerSpecificData?.copilotToken||d.accessToken||d.apiKey;if(!f)return v.NextResponse.json({error:"No valid token found"},{status:401});let g=e.url;"qwen"===d.provider&&(g=(a=>{let b="https://portal.qwen.ai/v1/models",c=a?.providerSpecificData?.resourceUrl;if(!c||"string"!=typeof c)return b;let d=c.trim();return d?d.startsWith("http://")||d.startsWith("https://")?`${d.replace(/\/$/,"")}/models`:`https://${d.replace(/\/$/,"")}/v1/models`:b})(d)),e.authQuery&&(g+=`?${e.authQuery}=${f}`);let h={...e.headers};e.authHeader&&!e.authQuery&&(h[e.authHeader]=(e.authPrefix||"")+f);let i={method:e.method,headers:h};e.body&&"POST"===e.method&&(i.body=JSON.stringify(e.body));let j=await fetch(g,i);if(!j.ok){let a=await j.text();return console.log(`Error fetching models from ${d.provider}:`,a),v.NextResponse.json({error:`Failed to fetch models: ${j.status}`},{status:j.status})}let k=await j.json(),l=e.parseResponse(k);return v.NextResponse.json({provider:d.provider,connectionId:d.id,models:l})}catch(a){return console.log("Error fetching provider models:",a),v.NextResponse.json({error:"Failed to fetch models"},{status:500})}}let H=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/providers/[id]/models/route",pathname:"/api/providers/[id]/models",filename:"route",bundlePath:"app/api/providers/[id]/models/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/bytedance/Documents/9router/src/app/api/providers/[id]/models/route.js",nextConfigOutput:"standalone",userland:d,...{}}),{workAsyncStorage:I,workUnitAsyncStorage:J,serverHooks:K}=H;function L(){return(0,g.patchFetch)({workAsyncStorage:I,workUnitAsyncStorage:J})}async function M(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),H.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/providers/[id]/models/route";"/index"===d&&(d="/");let e=await H.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,params:v,nextConfig:w,parsedUrl:x,isDraftMode:y,prerenderManifest:z,routerServerContext:A,isOnDemandRevalidate:B,revalidateOnlyGenerated:C,resolvedPathname:D,clientReferenceManifest:E,serverActionsManifest:F}=e,G=(0,k.normalizeAppPath)(d),I=!!(z.dynamicRoutes[G]||z.routes[D]),J=async()=>((null==A?void 0:A.render404)?await A.render404(a,b,x,!1):b.end("This page could not be found"),null);if(I&&!y){let a=!!z.routes[D],b=z.dynamicRoutes[G];if(b&&!1===b.fallback&&!a){if(w.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||H.isDev||y||(K="/index"===(K=D)?"/":K);let L=!0===H.isDev||!I,M=I&&!L;F&&E&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:E,serverActionsManifest:F});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q=!!(null==A?void 0:A.isWrappedByNextServer),R=!!(0,h.getRequestMeta)(a,"minimalMode"),S=(0,h.getRequestMeta)(a,"incrementalCache")||await H.getIncrementalCache(a,w,z,R);null==S||S.resetRequestCache(),globalThis.__incrementalCache=S;let T={params:v,previewProps:z.preview,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:L,incrementalCache:S,cacheLifeProfiles:w.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>H.onRequestError(a,b,d,e,A)},sharedContext:{buildId:g}},U=new l.NodeNextRequest(a),V=new l.NodeNextResponse(b),W=m.NextRequestAdapter.fromNodeNextRequest(U,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>H.handle(W,T).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${N} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${N} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!R&&B&&C&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=T.renderOpts.fetchMetrics;let h=T.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=T.renderOpts.collectedTags;if(!I)return await (0,p.I)(U,V,d,T.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==T.renderOpts.collectedRevalidate&&!(T.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&T.renderOpts.collectedRevalidate,e=void 0===T.renderOpts.collectedExpire||T.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:T.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await H.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:B})},!1,A),b}},k=await H.handleResponse({req:a,nextConfig:w,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:z,isRoutePPREnabled:!1,isOnDemandRevalidate:B,revalidateOnlyGenerated:C,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:R});if(!I)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});R||b.setHeader("x-nextjs-cache",B?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),y&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return R&&I||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(U,V,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};Q&&P?await h(P):(e=O.getActiveScopeSpan(),await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},h),void 0,!Q))}catch(b){if(b instanceof t.NoFallbackError||await H.onRequestError(a,b,{routerKind:"App Router",routePath:G,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:B})},!1,A),I)throw b;return await (0,p.I)(U,V,new Response(null,{status:500})),null}}},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},4573:a=>{a.exports=require("node:buffer")},7803:(a,b,c)=>{c.r(b),c.d(b,{debug:()=>f,error:()=>i,info:()=>g,maskKey:()=>m,request:()=>j,response:()=>k,stream:()=>l,warn:()=>h});function d(){return new Date().toLocaleTimeString("en-US",{hour12:!1})}function e(a){if(!a)return"";if("string"==typeof a)return a;try{return JSON.stringify(a)}catch{return String(a)}}function f(a,b,c){!0;{let f=c?` ${e(c)}`:"";console.log(`[${d()}] đ [${a}] ${b}${f}`)}}function g(a,b,c){!0;{let f=c?` ${e(c)}`:"";console.log(`[${d()}] âšī¸ [${a}] ${b}${f}`)}}function h(a,b,c){c&&e(c)}function i(a,b,c){!0;{let f=c?` ${e(c)}`:"";console.log(`[${d()}] â [${a}] ${b}${f}`)}}function j(a,b,c){let f=c?` ${e(c)}`:"";console.log(`\x1b[36m[${d()}] đĨ ${a} ${b}${f}\x1b[0m`)}function k(a,b,c){let f=c?` ${e(c)}`:"";console.log(`[${d()}] ${a<400?"\uD83D\uDCE4":"\uD83D\uDCA5"} ${a} (${b}ms)${f}`)}function l(a,b){let c=b?` ${e(b)}`:"";console.log(`[${d()}] đ [STREAM] ${a}${c}`)}function m(a){return!a||a.length<8?"***":`${a.slice(0,4)}...${a.slice(-4)}`}},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},11259:(a,b,c)=>{c.d(b,{Pv:()=>k}),c(73024);var d=c(51455),e=c(76760),f=c(73136);async function g(a,b,c){for(let d=0;d<b;d++)try{return await a()}catch(a){if(d<b-1)await new Promise(a=>setTimeout(a,c));else throw a}}class h{#a;#b;#c=!1;#d=null;#e=null;#f=null;#g=null;#h(a){return this.#g=a,this.#f||=new Promise((a,b)=>{this.#e=[a,b]}),new Promise((a,b)=>{this.#f?.then(a).catch(b)})}async #i(a){this.#c=!0;try{await (0,d.writeFile)(this.#b,a,"utf-8"),await g(async()=>{await (0,d.rename)(this.#b,this.#a)},10,100),this.#d?.[0]()}catch(a){throw a instanceof Error&&this.#d?.[1](a),a}finally{if(this.#c=!1,this.#d=this.#e,this.#e=this.#f=null,null!==this.#g){let a=this.#g;this.#g=null,await this.write(a)}}}constructor(a){this.#a=a,this.#b=function(a){let b=a instanceof URL?(0,f.fileURLToPath)(a):a.toString();return(0,e.join)((0,e.dirname)(b),`.${(0,e.basename)(b)}.tmp`)}(a)}async write(a){return this.#c?this.#h(a):this.#i(a)}}class i{#a;#j;constructor(a){this.#a=a,this.#j=new h(a)}async read(){let a;try{a=await (0,d.readFile)(this.#a,"utf-8")}catch(a){if("ENOENT"===a.code)return null;throw a}return a}write(a){return this.#j.write(a)}}class j{#k;#l;#m;constructor(a,{parse:b,stringify:c}){this.#k=new i(a),this.#l=b,this.#m=c}async read(){let a=await this.#k.read();return null===a?null:this.#l(a)}write(a){return this.#k.write(this.#m(a))}}class k extends j{constructor(a){super(a,{parse:JSON.parse,stringify:a=>JSON.stringify(a,null,2)})}}},12412:a=>{a.exports=require("assert")},14985:a=>{a.exports=require("dns")},16698:a=>{a.exports=require("node:async_hooks")},21820:a=>{a.exports=require("os")},27910:a=>{a.exports=require("stream")},28354:a=>{a.exports=require("util")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},32467:a=>{a.exports=require("node:http2")},33873:a=>{a.exports=require("path")},34589:a=>{a.exports=require("node:assert")},35024:(a,b,c)=>{c.d(b,{Ak:()=>h,xq:()=>g});var d=c(21820);let e={"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},f="https://api.kimi.com/coding/v1/messages",g={claude:{baseUrl:"https://api.anthropic.com/v1/messages",format:"claude",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,context-management-2025-06-27,prompt-caching-scope-2026-01-05,advanced-tool-use-2025-11-20,effort-2025-11-24,structured-outputs-2025-12-15,fast-mode-2026-02-01,redact-thinking-2026-02-12,token-efficient-tools-2026-03-28","Anthropic-Dangerous-Direct-Browser-Access":"true","User-Agent":"claude-cli/2.1.92 (external, sdk-cli)","X-App":"cli","X-Stainless-Helper-Method":"stream","X-Stainless-Retry-Count":"0","X-Stainless-Runtime-Version":"v24.14.0","X-Stainless-Package-Version":"0.80.0","X-Stainless-Runtime":"node","X-Stainless-Lang":"js","X-Stainless-Arch":function(){switch((0,d.arch)()){case"x64":return"x64";case"arm64":return"arm64";case"ia32":return"x86";default:return`other::${(0,d.arch)()}`}}(),"X-Stainless-Os":function(){switch((0,d.platform)()){case"darwin":return"MacOS";case"win32":return"Windows";case"linux":return"Linux";case"freebsd":return"FreeBSD";default:return`Other::${(0,d.platform)()}`}}(),"X-Stainless-Timeout":"600"},clientId:"9d1c250a-e61b-44d9-88ed-5944d1962f5e",tokenUrl:"https://api.anthropic.com/v1/oauth/token"},gemini:{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",format:"gemini",clientId:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecret:"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"},"gemini-cli":{baseUrl:"https://cloudcode-pa.googleapis.com/v1internal",format:"gemini-cli",clientId:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecret:"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"},codex:{baseUrl:"https://chatgpt.com/backend-api/codex/responses",format:"openai-responses",headers:{originator:"codex-cli","User-Agent":"codex-cli/1.0.18 (macOS; arm64)"},clientId:"app_EMoamEEZ73f0CkXaXp7hrann",tokenUrl:"https://auth.openai.com/oauth/token"},qwen:{baseUrl:"https://portal.qwen.ai/v1/chat/completions",format:"openai",clientId:"f0304373b74a44d2b584a3fb70ca9e56",tokenUrl:"https://chat.qwen.ai/api/v1/oauth2/token",authUrl:"https://chat.qwen.ai/api/v1/oauth2/device/code"},iflow:{baseUrl:"https://apis.iflow.cn/v1/chat/completions",format:"openai",headers:{"User-Agent":"iFlow-Cli"},clientId:"10009311001",clientSecret:"4Z3YjXycVsQvyGF1etiNlIBB4RsqSDtW",tokenUrl:"https://iflow.cn/oauth/token",authUrl:"https://iflow.cn/oauth"},qoder:{baseUrl:"https://api.qoder.com/v1/chat/completions",format:"openai",headers:{"User-Agent":"Qoder-Cli"},clientId:process.env.QODER_OAUTH_CLIENT_ID||"10009311001",clientSecret:process.env.QODER_OAUTH_CLIENT_SECRET||"4Z3YjXycVsQvyGF1etiNlIBB4RsqSDtW",tokenUrl:"https://api.qoder.com/oauth/token",authUrl:"https://qoder.com/oauth/authorize"},antigravity:{baseUrls:["https://daily-cloudcode-pa.googleapis.com","https://daily-cloudcode-pa.sandbox.googleapis.com"],format:"antigravity",headers:{"User-Agent":`antigravity/1.107.0 ${(0,d.platform)()}/${(0,d.arch)()}`},clientId:"1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",clientSecret:"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"},openrouter:{baseUrl:"https://openrouter.ai/api/v1/chat/completions",format:"openai",headers:{"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"}},openai:{baseUrl:"https://api.openai.com/v1/chat/completions",format:"openai"},glm:{baseUrl:"https://api.z.ai/api/anthropic/v1/messages",format:"claude",headers:{...e}},"glm-cn":{baseUrl:"https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",format:"openai",headers:{}},kimi:{baseUrl:f,format:"claude",headers:{...e}},minimax:{baseUrl:"https://api.minimax.io/anthropic/v1/messages",format:"claude",headers:{...e}},"minimax-cn":{baseUrl:"https://api.minimaxi.com/anthropic/v1/messages",format:"claude",headers:{...e}},alicode:{baseUrl:"https://coding.dashscope.aliyuncs.com/v1/chat/completions",format:"openai",headers:{}},"alicode-intl":{baseUrl:"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions",format:"openai",headers:{}},"volcengine-ark":{baseUrl:"https://ark.cn-beijing.volces.com/api/coding/v3/chat/completions",format:"openai",headers:{}},byteplus:{baseUrl:"https://ark.ap-southeast.bytepluses.com/api/coding/v3/chat/completions",format:"openai",headers:{}},github:{baseUrl:"https://api.githubcopilot.com/chat/completions",responsesUrl:"https://api.githubcopilot.com/responses",format:"openai",headers:{"copilot-integration-id":"vscode-chat","editor-version":"vscode/1.110.0","editor-plugin-version":"copilot-chat/0.38.0","user-agent":"GitHubCopilotChat/0.38.0","openai-intent":"conversation-panel","x-github-api-version":"2025-04-01","x-vscode-user-agent-library-version":"electron-fetch","X-Initiator":"user",Accept:"application/json","Content-Type":"application/json"},clientId:"Iv1.b507a08c87ecfe98"},kiro:{baseUrl:"https://codewhisperer.us-east-1.amazonaws.com/generateAssistantResponse",format:"kiro",retry:{429:2},headers:{"Content-Type":"application/json",Accept:"application/vnd.amazon.eventstream","X-Amz-Target":"AmazonCodeWhispererStreamingService.GenerateAssistantResponse","User-Agent":"AWS-SDK-JS/3.0.0 kiro-ide/1.0.0","X-Amz-User-Agent":"aws-sdk-js/3.0.0 kiro-ide/1.0.0"},tokenUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",authUrl:"https://prod.us-east-1.auth.desktop.kiro.dev"},cursor:{baseUrl:"https://api2.cursor.sh",chatPath:"/aiserver.v1.ChatService/StreamUnifiedChatWithTools",format:"cursor",headers:{"connect-accept-encoding":"gzip","connect-protocol-version":"1","Content-Type":"application/connect+proto","User-Agent":"connect-es/1.6.1"},clientVersion:"3.1.0"},"kimi-coding":{baseUrl:f,format:"claude",headers:{...e},clientId:"17e5f671-d194-4dfb-9706-5516cb48c098",tokenUrl:"https://auth.kimi.com/api/oauth/token",refreshUrl:"https://auth.kimi.com/api/oauth/token"},kilocode:{baseUrl:"https://api.kilo.ai/api/openrouter/chat/completions",format:"openai",headers:{}},opencode:{baseUrl:"http://localhost:4096/v1/chat/completions",format:"openai",headers:{}},cline:{baseUrl:"https://api.cline.bot/api/v1/chat/completions",format:"openai",headers:{"HTTP-Referer":"https://cline.bot","X-Title":"Cline"},tokenUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh"},nvidia:{baseUrl:"https://integrate.api.nvidia.com/v1/chat/completions",format:"openai"},anthropic:{baseUrl:"https://api.anthropic.com/v1/messages",format:"claude",headers:{...e}},deepseek:{baseUrl:"https://api.deepseek.com/chat/completions",format:"openai"},groq:{baseUrl:"https://api.groq.com/openai/v1/chat/completions",format:"openai"},xai:{baseUrl:"https://api.x.ai/v1/chat/completions",format:"openai"},mistral:{baseUrl:"https://api.mistral.ai/v1/chat/completions",format:"openai"},perplexity:{baseUrl:"https://api.perplexity.ai/chat/completions",format:"openai"},together:{baseUrl:"https://api.together.xyz/v1/chat/completions",format:"openai"},fireworks:{baseUrl:"https://api.fireworks.ai/inference/v1/chat/completions",format:"openai"},cerebras:{baseUrl:"https://api.cerebras.ai/v1/chat/completions",format:"openai"},cohere:{baseUrl:"https://api.cohere.ai/v1/chat/completions",format:"openai"},nebius:{baseUrl:"https://api.studio.nebius.ai/v1/chat/completions",format:"openai"},siliconflow:{baseUrl:"https://api.siliconflow.cn/v1/chat/completions",format:"openai"},hyperbolic:{baseUrl:"https://api.hyperbolic.xyz/v1/chat/completions",format:"openai"},deepgram:{baseUrl:"https://api.deepgram.com/v1/listen",format:"openai"},assemblyai:{baseUrl:"https://api.assemblyai.com/v1/audio/transcriptions",format:"openai"},nanobanana:{baseUrl:"https://api.nanobananaapi.ai/v1/chat/completions",format:"openai"},chutes:{baseUrl:"https://llm.chutes.ai/v1/chat/completions",format:"openai"},ollama:{baseUrl:"https://ollama.com/api/chat",format:"ollama"},"ollama-local":{baseUrl:"http://localhost:11434/api/chat",format:"ollama"},vertex:{baseUrl:"https://aiplatform.googleapis.com",format:"vertex"},"vertex-partner":{baseUrl:"https://aiplatform.googleapis.com",format:"openai"},gitlab:{baseUrl:"https://gitlab.com/api/v4/chat/completions",format:"openai"},codebuddy:{baseUrl:"https://copilot.tencent.com/v1/chat/completions",format:"openai"},opencode:{baseUrl:"https://opencode.ai",format:"openai",headers:{"x-opencode-client":"desktop"},noAuth:!0},"opencode-go":{baseUrl:"https://opencode.ai/zen/go/v1/chat/completions",format:"openai",headers:{}},"grok-web":{baseUrl:"https://grok.com/rest/app-chat/conversations/new",format:"grok-web",authType:"cookie"},"perplexity-web":{baseUrl:"https://www.perplexity.ai/rest/sse/perplexity_ask",format:"perplexity-web",authType:"cookie"},azure:{baseUrl:"",format:"openai",headers:{}},"cloudflare-ai":{baseUrl:"https://api.cloudflare.com/client/v4/accounts/{accountId}/ai/v1/chat/completions",format:"openai"},"xiaomi-mimo":{baseUrl:"https://api.xiaomimimo.com/v1/chat/completions",format:"openai"}};function h(a){return(a?.providerSpecificData?.baseUrl?.trim()||"http://localhost:11434").replace(/\/$/,"")}},37067:a=>{a.exports=require("node:http")},37540:a=>{a.exports=require("node:console")},38522:a=>{a.exports=require("node:zlib")},40610:a=>{a.exports=require("node:dns")},41692:a=>{a.exports=require("node:tls")},41792:a=>{a.exports=require("node:querystring")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},49120:(a,b,c)=>{c.d(b,{n:()=>i}),c(29021);var d,e=c(33873),f=c.n(e),g=c(21820),h=c.n(g);let i=process.env.DATA_DIR?process.env.DATA_DIR:(d="openrouterx","win32"===process.platform?f().join(process.env.APPDATA||f().join(h().homedir(),"AppData","Roaming"),d):f().join(h().homedir(),`.${d}`))},51455:a=>{a.exports=require("node:fs/promises")},53053:a=>{a.exports=require("node:diagnostics_channel")},55511:a=>{a.exports=require("crypto")},55591:a=>{a.exports=require("https")},57075:a=>{a.exports=require("node:stream")},57975:a=>{a.exports=require("node:util")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},71998:(a,b,c)=>{c.d(b,{Fh:()=>d.getProviderNodes,L9:()=>d.L9,Mc:()=>d.Mc,OM:()=>d.OM,P:()=>d.getProviderConnections,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Yd:()=>d.Yd,ZO:()=>d.ZO,c:()=>d.c,createProviderConnection:()=>d.iE,ek:()=>d.ek,fK:()=>d.fK,fv:()=>d.fv,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,o5:()=>d.o5,op:()=>d.op,rj:()=>d.updateProviderConnection,uL:()=>d.uL,ui:()=>d.ui,uv:()=>d.uv});var d=c(89718)},73024:a=>{a.exports=require("node:fs")},73136:a=>{a.exports=require("node:url")},73429:a=>{a.exports=require("node:util/types")},75919:a=>{a.exports=require("node:worker_threads")},76760:a=>{a.exports=require("node:path")},77030:a=>{a.exports=require("node:net")},77598:a=>{a.exports=require("node:crypto")},78474:a=>{a.exports=require("node:events")},80099:a=>{a.exports=require("node:sqlite")},81115:a=>{a.exports=require("constants")},82996:(a,b,c)=>{c.d(b,{t:()=>d});class d{adapter;data;constructor(a,b){!function(a,b){if(void 0===a)throw Error("lowdb: missing adapter");if(void 0===b)throw Error("lowdb: missing default data")}(a,b),this.adapter=a,this.data=b}async read(){let a=await this.adapter.read();a&&(this.data=a)}async write(){this.data&&await this.adapter.write(this.data)}async update(a){a(this.data),await this.write()}}},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87997:a=>{a.exports=require("node:timers")},91645:a=>{a.exports=require("net")},93800:(a,b,c)=>{function d(a=""){return String(a).trim().replace(/\/+$/,"")}function e(a){try{return new URL(String(a).trim())}catch{return null}}function f(a,b="openai-compatible"){let c=e(a);if(!c)return d(a);let g="anthropic-compatible"===b?function(a=""){let b=d(a);for(let a of["/messages","/models"])if(b.endsWith(a)){b=b.slice(0,-a.length);break}return b||""}(c.pathname):"custom-image"===b?function(a=""){let b=d(a);for(let a of["/images/generations","/images/edits"])if(b.endsWith(a)){b=b.slice(0,-a.length);break}return b||""}(c.pathname):function(a=""){let b=d(a);for(let a of["/chat/completions","/responses","/models"])if(b.endsWith(a)){b=b.slice(0,-a.length);break}return b||""}(c.pathname);return`${c.origin}${g}`.replace(/\/+$/,"")}function g({url:a="",body:b=null}={}){let c=e(a),f=d(c?.pathname||"");if(f.endsWith("/responses"))return"responses";if(f.endsWith("/chat/completions"))return"chat";if(b&&"object"==typeof b){if(!Array.isArray(b.messages)&&void 0!==b.input)return"responses";Array.isArray(b.messages)}return"chat"}c.d(b,{Hl:()=>g,wl:()=>f})},94735:a=>{a.exports=require("events")}};var b=require("../../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,7502,1813,9718,5681,8590,7828,3245],()=>b(b.s=836));module.exports=c})();
|