omniroute 3.4.7 → 3.4.8
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/build-manifest.json +3 -3
- package/app/.next/prerender-manifest.json +3 -3
- package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/audit/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cache/page_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/memory/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/search-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/503/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/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_full.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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/system/version/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/api/chat/route.js +15 -15
- package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/audio/speech/route.js +11 -11
- package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/audio/transcriptions/route.js +5 -5
- package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/chat/completions/route.js +14 -14
- package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/completions/route.js +14 -14
- package/app/.next/server/app/api/v1/completions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/images/generations/route.js +10 -10
- package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/messages/route.js +16 -16
- package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/models/route.js +5 -5
- package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/moderations/route.js +9 -9
- package/app/.next/server/app/api/v1/moderations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/music/generations/route.js +10 -10
- package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js +16 -16
- package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js +7 -7
- package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js +10 -10
- package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/rerank/route.js +9 -9
- package/app/.next/server/app/api/v1/rerank/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/responses/[...path]/route.js +16 -16
- package/app/.next/server/app/api/v1/responses/[...path]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/responses/route.js +16 -16
- package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/route.js +5 -5
- package/app/.next/server/app/api/v1/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/search/analytics/route.js +7 -7
- package/app/.next/server/app/api/v1/search/analytics/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/videos/generations/route.js +10 -10
- package/app/.next/server/app/api/v1beta/models/[...path]/route.js +14 -14
- package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
- package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__0nxyldc._.js → [root-of-the-server]__0-zca2p._.js} +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__0urvs3.._.js → [root-of-the-server]__01hbf~_._.js} +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__01ojood._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__030_-af._.js +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__0j~-yu1._.js → [root-of-the-server]__03l6k3k._.js} +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__01b8762._.js → [root-of-the-server]__05~jdzu._.js} +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__07eee_s._.js → [root-of-the-server]__08~6j3q._.js} +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0a8ozdb._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0bd4ccn._.js +2 -2
- package/app/.next/server/chunks/{[root-of-the-server]__0_a98vk._.js → [root-of-the-server]__0d6bqbw._.js} +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__0_c_.ye._.js → [root-of-the-server]__0f2rz58._.js} +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0jp3yj4._.js +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__06stuoz._.js → [root-of-the-server]__0jvnjwl._.js} +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0mj7x5~._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0n-~kvf._.js +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__0-y3k-t._.js → [root-of-the-server]__0nzi7ym._.js} +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0ofxxzh._.js +2 -2
- package/app/.next/server/chunks/{[root-of-the-server]__0uu3t5x._.js → [root-of-the-server]__0pd~24c._.js} +2 -2
- package/app/.next/server/chunks/[root-of-the-server]__0s1dq3.._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0tsl88m._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0u5-mph._.js +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__0vi3.0k._.js → [root-of-the-server]__0uryxsh._.js} +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__0lwc40h._.js → [root-of-the-server]__0v1kwmx._.js} +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__04y3b4q._.js → [root-of-the-server]__0vt49c9._.js} +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__0pylsu2._.js → [root-of-the-server]__0vy97gy._.js} +2 -2
- package/app/.next/server/chunks/{[root-of-the-server]__0~s45~f._.js → [root-of-the-server]__0wd~o5b._.js} +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0x5yxjy._.js +2 -2
- package/app/.next/server/chunks/{[root-of-the-server]__0vmajf6._.js → [root-of-the-server]__0x_hqjb._.js} +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0~0hd.s._.js +2 -2
- package/app/.next/server/chunks/{[root-of-the-server]__10~-ypp._.js → [root-of-the-server]__11ptf~3._.js} +1 -1
- package/app/.next/server/chunks/_00.pgsp._.js +1 -1
- package/app/.next/server/chunks/_013gowh._.js +1 -1
- package/app/.next/server/chunks/{_0ucpa5q._.js → _02._8wx._.js} +1 -1
- package/app/.next/server/chunks/_036lxbr._.js +1 -1
- package/app/.next/server/chunks/_05reh6o._.js +1 -1
- package/app/.next/server/chunks/{_0-~thzo._.js → _083_x9z._.js} +2 -2
- package/app/.next/server/chunks/_083a5zg._.js +1 -1
- package/app/.next/server/chunks/{_004r3br._.js → _08cwbl2._.js} +2 -2
- package/app/.next/server/chunks/_0a3.3sc._.js +1 -1
- package/app/.next/server/chunks/_0c.abwr._.js +1 -1
- package/app/.next/server/chunks/_0dfpto1._.js +1 -1
- package/app/.next/server/chunks/_0due8oe._.js +1 -1
- package/app/.next/server/chunks/_0h-j8c2._.js +1 -1
- package/app/.next/server/chunks/_0vx-r0i._.js +2 -2
- package/app/.next/server/chunks/_0w4f3bm._.js +1 -1
- package/app/.next/server/chunks/_10.rw9f._.js +1 -1
- package/app/.next/server/chunks/open-sse_0dawtxk._.js +2 -2
- package/app/.next/server/chunks/open-sse_0p~.88y._.js +1 -1
- package/app/.next/server/chunks/open-sse_0sthby3._.js +1 -1
- package/app/.next/server/chunks/src_0cbm0~g._.js +1 -1
- package/app/.next/server/chunks/src_shared_utils_apiKey_ts_0gzf59_._.js +1 -1
- package/app/.next/server/chunks/src_shared_utils_apiKey_ts_12~h.oz._.js +1 -1
- package/app/.next/server/chunks/ssr/_008ht2n._.js +1 -1
- package/app/.next/server/chunks/ssr/_0oo1f90._.js +1 -1
- package/app/.next/server/chunks/ssr/src_04s-8a5._.js +1 -1
- package/app/.next/server/chunks/ssr/src_0vjsxxr._.js +1 -1
- package/app/.next/server/chunks/ssr/src_shared_utils_apiKey_ts_0l8g1z8._.js +1 -1
- package/app/.next/server/middleware-build-manifest.js +3 -3
- 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/chunks/0ipwpwjb2g0uv.js +1 -0
- package/app/.next/static/chunks/0~c--kcvaumm~.js +1 -0
- package/app/.next/static/chunks/{02q7h~xz7j6i3.js → 0~v1trn07bitv.js} +1 -1
- package/app/CHANGELOG.md +12 -0
- package/app/bin/reset-password.mjs +3 -1
- package/app/docs/openapi.yaml +1 -1
- package/app/open-sse/config/registryUtils.ts +1 -0
- package/app/open-sse/config/videoRegistry.ts +1 -3
- package/app/open-sse/executors/antigravity.ts +22 -12
- package/app/open-sse/executors/gemini-cli.ts +3 -1
- package/app/open-sse/executors/qoder.ts +1 -8
- package/app/open-sse/handlers/audioSpeech.ts +1 -0
- package/app/open-sse/handlers/chatCore.ts +2 -1
- package/app/open-sse/handlers/embeddings.ts +1 -0
- package/app/open-sse/handlers/imageGeneration.ts +6 -2
- package/app/open-sse/handlers/musicGeneration.ts +9 -2
- package/app/open-sse/handlers/search.ts +1 -0
- package/app/open-sse/handlers/videoGeneration.ts +11 -3
- package/app/open-sse/mcp-server/index.ts +0 -1
- package/app/open-sse/package.json +1 -1
- package/app/open-sse/services/claudeCodeCompatible.ts +2 -2
- package/app/open-sse/services/modelCapabilities.ts +3 -4
- package/app/open-sse/services/qoderCli.ts +5 -2
- package/app/open-sse/services/tokenRefresh.ts +3 -1
- package/app/open-sse/services/usage.ts +13 -9
- package/app/open-sse/services/workflowFSM.ts +298 -61
- package/app/open-sse/translator/index.ts +5 -1
- package/app/open-sse/translator/response/gemini-to-openai.ts +5 -1
- package/app/open-sse/utils/progressTracker.ts +4 -1
- package/app/open-sse/utils/stream.ts +7 -1
- package/app/open-sse/utils/streamPayloadCollector.ts +5 -1
- package/app/package-lock.json +3 -3
- package/app/package.json +1 -1
- package/app/scripts/check-route-validation.mjs +3 -1
- package/app/scripts/i18n/apply-priority-overrides.mjs +7 -1
- package/app/scripts/prepublish.mjs +2 -2
- package/app/scripts/run-protocol-clients-tests.mjs +7 -1
- package/app/src/app/(dashboard)/dashboard/analytics/components/DiversityScoreCard.tsx +1 -1
- package/app/src/app/(dashboard)/dashboard/auto-combo/page.tsx +0 -1
- package/app/src/app/(dashboard)/dashboard/media/MediaPageClient.tsx +9 -3
- package/app/src/app/(dashboard)/dashboard/providers/[id]/page.tsx +25 -23
- package/app/src/app/(dashboard)/dashboard/search-tools/components/SearchHistory.tsx +3 -1
- package/app/src/app/api/auth/status/route.ts +1 -3
- package/app/src/app/api/mcp/sse/route.ts +2 -2
- package/app/src/app/api/mcp/status/route.ts +1 -2
- package/app/src/app/api/mcp/stream/route.ts +5 -3
- package/app/src/app/api/openapi/spec/route.ts +4 -1
- package/app/src/app/api/openapi/try/route.ts +4 -1
- package/app/src/app/api/providers/[id]/models/route.ts +4 -4
- package/app/src/app/api/providers/[id]/sync-models/route.ts +9 -3
- package/app/src/app/api/settings/auto-disable-accounts/route.ts +6 -1
- package/app/src/app/api/skills/[id]/route.ts +4 -1
- package/app/src/app/api/v1/issues/report/route.ts +9 -1
- package/app/src/app/api/v1beta/models/route.ts +8 -6
- package/app/src/app/api/webhooks/[id]/route.ts +9 -7
- package/app/src/domain/fallbackPolicy.ts +0 -1
- package/app/src/domain/modelAvailability.ts +0 -1
- package/app/src/domain/providerExpiration.ts +2 -6
- package/app/src/lib/db/models.ts +23 -13
- package/app/src/lib/evals/evalRunner.ts +0 -1
- package/app/src/lib/evals/scheduler.ts +2 -6
- package/app/src/lib/oauth/services/antigravity.ts +6 -1
- package/app/src/lib/oauth/services/kiro.ts +12 -2
- package/app/src/lib/oauth/services/oauth.ts +10 -2
- package/app/src/lib/oauth/utils/server.ts +4 -1
- package/app/src/lib/plugins/index.ts +2 -8
- package/app/src/lib/usageAnalytics.ts +5 -1
- package/app/src/mitm/manager.js +1 -1
- package/app/src/mitm/manager.ts +1 -1
- package/app/src/shared/components/Button.tsx +0 -1
- package/app/src/shared/components/Card.tsx +0 -2
- package/app/src/shared/components/FilterBar.tsx +4 -12
- package/app/src/shared/components/Input.tsx +1 -1
- package/app/src/shared/components/Modal.tsx +0 -1
- package/app/src/shared/components/NotificationToast.tsx +1 -3
- package/app/src/shared/components/Select.tsx +1 -1
- package/app/src/shared/components/Sidebar.tsx +3 -3
- package/app/src/shared/components/ThemeToggle.tsx +7 -1
- package/app/src/shared/constants/cliCompatProviders.ts +0 -1
- package/app/src/shared/constants/errorCodes.ts +114 -19
- package/app/src/shared/utils/apiKey.ts +2 -4
- package/app/src/shared/utils/fetchTimeout.ts +0 -1
- package/app/src/shared/utils/inputSanitizer.ts +8 -4
- package/app/src/shared/utils/requestTimeout.ts +5 -1
- package/app/src/sse/handlers/chat.ts +1 -0
- package/app/src/sse/services/auth.ts +8 -3
- package/app/src/sse/services/streamState.ts +5 -1
- package/app/src/store/notificationStore.ts +3 -7
- package/app/tests/unit/t20-t22-provider-headers.test.mjs +3 -1
- package/bin/reset-password.mjs +3 -1
- package/open-sse/mcp-server/__tests__/glmCodingProviderConfig.test.ts +5 -1
- package/open-sse/mcp-server/index.ts +0 -1
- package/package.json +1 -1
- package/app/.next/server/chunks/_0-jnvci._.js +0 -19
- package/app/.next/static/chunks/0l88mho31mflv.js +0 -1
- package/app/.next/static/chunks/0wt-4zl7_gil8.js +0 -1
- /package/app/.next/static/{ri1SkwBU-ygQ2qIDe8jf2 → 1dZBzAZ8QsddVCQRQtqjg}/_buildManifest.js +0 -0
- /package/app/.next/static/{ri1SkwBU-ygQ2qIDe8jf2 → 1dZBzAZ8QsddVCQRQtqjg}/_clientMiddlewareManifest.js +0 -0
- /package/app/.next/static/{ri1SkwBU-ygQ2qIDe8jf2 → 1dZBzAZ8QsddVCQRQtqjg}/_ssgManifest.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
module.exports=[446786,(e,t,r)=>{t.exports=e.x("os",()=>require("os"))},814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},522734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},918622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},324725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},270406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},193695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},442315,(e,t,r)=>{"use strict";t.exports=e.r(918622)},347540,(e,t,r)=>{"use strict";t.exports=e.r(442315).vendored["react-rsc"].React},819481,(e,t,r)=>{"use strict";var n=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,s=Object.prototype.hasOwnProperty,i={},l={RequestCookies:()=>h,ResponseCookies:()=>g,parseCookie:()=>c,parseSetCookie:()=>p,stringifyCookie:()=>d};for(var u in l)n(i,u,{get:l[u],enumerable:!0});function d(e){var t;let r=["path"in e&&e.path&&`Path=${e.path}`,"expires"in e&&(e.expires||0===e.expires)&&`Expires=${("number"==typeof e.expires?new Date(e.expires):e.expires).toUTCString()}`,"maxAge"in e&&"number"==typeof e.maxAge&&`Max-Age=${e.maxAge}`,"domain"in e&&e.domain&&`Domain=${e.domain}`,"secure"in e&&e.secure&&"Secure","httpOnly"in e&&e.httpOnly&&"HttpOnly","sameSite"in e&&e.sameSite&&`SameSite=${e.sameSite}`,"partitioned"in e&&e.partitioned&&"Partitioned","priority"in e&&e.priority&&`Priority=${e.priority}`].filter(Boolean),n=`${e.name}=${encodeURIComponent(null!=(t=e.value)?t:"")}`;return 0===r.length?n:`${n}; ${r.join("; ")}`}function c(e){let t=new Map;for(let r of e.split(/; */)){if(!r)continue;let e=r.indexOf("=");if(-1===e){t.set(r,"true");continue}let[n,a]=[r.slice(0,e),r.slice(e+1)];try{t.set(n,decodeURIComponent(null!=a?a:"true"))}catch{}}return t}function p(e){if(!e)return;let[[t,r],...n]=c(e),{domain:a,expires:o,httponly:s,maxage:i,path:l,samesite:u,secure:d,partitioned:p,priority:h}=Object.fromEntries(n.map(([e,t])=>[e.toLowerCase().replace(/-/g,""),t]));{var g,y,v={name:t,value:decodeURIComponent(r),domain:a,...o&&{expires:new Date(o)},...s&&{httpOnly:!0},..."string"==typeof i&&{maxAge:Number(i)},path:l,...u&&{sameSite:m.includes(g=(g=u).toLowerCase())?g:void 0},...d&&{secure:!0},...h&&{priority:f.includes(y=(y=h).toLowerCase())?y:void 0},...p&&{partitioned:!0}};let e={};for(let t in v)v[t]&&(e[t]=v[t]);return e}}t.exports=((e,t,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let i of o(t))s.call(e,i)||void 0===i||n(e,i,{get:()=>t[i],enumerable:!(r=a(t,i))||r.enumerable});return e})(n({},"__esModule",{value:!0}),i);var m=["strict","lax","none"],f=["low","medium","high"],h=class{constructor(e){this._parsed=new Map,this._headers=e;const t=e.get("cookie");if(t)for(const[e,r]of c(t))this._parsed.set(e,{name:e,value:r})}[Symbol.iterator](){return this._parsed[Symbol.iterator]()}get size(){return this._parsed.size}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed);if(!e.length)return r.map(([e,t])=>t);let n="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(([e])=>e===n).map(([e,t])=>t)}has(e){return this._parsed.has(e)}set(...e){let[t,r]=1===e.length?[e[0].name,e[0].value]:e,n=this._parsed;return n.set(t,{name:t,value:r}),this._headers.set("cookie",Array.from(n).map(([e,t])=>d(t)).join("; ")),this}delete(e){let t=this._parsed,r=Array.isArray(e)?e.map(e=>t.delete(e)):t.delete(e);return this._headers.set("cookie",Array.from(t).map(([e,t])=>d(t)).join("; ")),r}clear(){return this.delete(Array.from(this._parsed.keys())),this}[Symbol.for("edge-runtime.inspect.custom")](){return`RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(e=>`${e.name}=${encodeURIComponent(e.value)}`).join("; ")}},g=class{constructor(e){var t,r,n;this._parsed=new Map,this._headers=e;const a=null!=(n=null!=(r=null==(t=e.getSetCookie)?void 0:t.call(e))?r:e.get("set-cookie"))?n:[];for(const e of Array.isArray(a)?a:function(e){if(!e)return[];var t,r,n,a,o,s=[],i=0;function l(){for(;i<e.length&&/\s/.test(e.charAt(i));)i+=1;return i<e.length}for(;i<e.length;){for(t=i,o=!1;l();)if(","===(r=e.charAt(i))){for(n=i,i+=1,l(),a=i;i<e.length&&"="!==(r=e.charAt(i))&&";"!==r&&","!==r;)i+=1;i<e.length&&"="===e.charAt(i)?(o=!0,i=a,s.push(e.substring(t,n)),t=i):i=n+1}else i+=1;(!o||i>=e.length)&&s.push(e.substring(t,e.length))}return s}(a)){const t=p(e);t&&this._parsed.set(t.name,t)}}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed.values());if(!e.length)return r;let n="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(e=>e.name===n)}has(e){return this._parsed.has(e)}set(...e){let[t,r,n]=1===e.length?[e[0].name,e[0].value,e[0]]:e,a=this._parsed;return a.set(t,function(e={name:"",value:""}){return"number"==typeof e.expires&&(e.expires=new Date(e.expires)),e.maxAge&&(e.expires=new Date(Date.now()+1e3*e.maxAge)),(null===e.path||void 0===e.path)&&(e.path="/"),e}({name:t,value:r,...n})),function(e,t){for(let[,r]of(t.delete("set-cookie"),e)){let e=d(r);t.append("set-cookie",e)}}(a,this._headers),this}delete(...e){let[t,r]="string"==typeof e[0]?[e[0]]:[e[0].name,e[0]];return this.set({...r,name:t,value:"",expires:new Date(0)})}[Symbol.for("edge-runtime.inspect.custom")](){return`ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(d).join("; ")}}},233405,(e,t,r)=>{t.exports=e.x("child_process",()=>require("child_process"))},924868,(e,t,r)=>{t.exports=e.x("fs/promises",()=>require("fs/promises"))},997953,(e,t,r)=>{"use strict";t.exports=e.r(442315).vendored["react-rsc"].ReactServerDOMTurbopackServer},745015,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"registerServerReference",{enumerable:!0,get:function(){return n.registerServerReference}});let n=e.r(997953)},195975,(e,t,r)=>{"use strict";function n(e){for(let t=0;t<e.length;t++){let r=e[t];if("function"!=typeof r)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof r}.
|
|
2
|
-
Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ensureServerEntryExports",{enumerable:!0,get:function(){return n}})},266240,e=>{"use strict";let t,r,n,a,o,s,i,l,u;var d=e.i(924868),c=e.i(522734),p=e.i(446786),m=e.i(814747),f=e.i(233405);let h=new Set(["auto","host","container"]),g=new Set(["0","false","no","off"]),y={claude:{defaultCommand:"claude",envBinKey:"CLI_CLAUDE_BIN",requiresBinary:!0,healthcheckTimeoutMs:4e3,paths:{settings:".claude/settings.json"}},codex:{defaultCommand:"codex",envBinKey:"CLI_CODEX_BIN",requiresBinary:!0,healthcheckTimeoutMs:4e3,paths:{config:".codex/config.toml",auth:".codex/auth.json"}},droid:{defaultCommand:"droid",envBinKey:"CLI_DROID_BIN",requiresBinary:!0,healthcheckTimeoutMs:8e3,paths:{settings:".factory/settings.json"}},openclaw:{defaultCommand:"openclaw",envBinKey:"CLI_OPENCLAW_BIN",requiresBinary:!0,healthcheckTimeoutMs:15e3,paths:{settings:".openclaw/openclaw.json"}},cursor:{defaultCommands:["agent","cursor"],envBinKey:"CLI_CURSOR_BIN",requiresBinary:!0,healthcheckTimeoutMs:15e3,paths:{config:".cursor/cli-config.json",auth:".config/cursor/auth.json",state:".cursor/agent-cli-state.json"}},windsurf:{defaultCommand:null,envBinKey:"CLI_WINDSURF_BIN",requiresBinary:!1,healthcheckTimeoutMs:4e3,paths:{}},cline:{defaultCommand:"cline",envBinKey:"CLI_CLINE_BIN",requiresBinary:!0,healthcheckTimeoutMs:12e3,paths:{globalState:".cline/data/globalState.json",secrets:".cline/data/secrets.json"}},kilo:{defaultCommand:"kilocode",envBinKey:"CLI_KILO_BIN",requiresBinary:!0,healthcheckTimeoutMs:15e3,paths:{auth:".local/share/kilo/auth.json"}},continue:{defaultCommand:null,envBinKey:"CLI_CONTINUE_BIN",requiresBinary:!1,healthcheckTimeoutMs:15e3,paths:{settings:".continue/config.json"}},opencode:{defaultCommand:"opencode",envBinKey:"CLI_OPENCODE_BIN",requiresBinary:!0,healthcheckTimeoutMs:15e3,paths:{config:".config/opencode/opencode.json"}},qoder:{defaultCommand:"qodercli",envBinKey:"CLI_QODER_BIN",requiresBinary:!0,healthcheckTimeoutMs:12e3,paths:{config:".qoder/settings.json",auth:".qoder/auth.json"}}},v=(e,t,{env:r,timeoutMs:n=3e3}={})=>new Promise(a=>{let o="",s="",i=!1,l=!1,u=(0,f.spawn)(e,t,{env:r,stdio:["ignore","pipe","pipe"],..."win32"===process.platform?"TURBOPACK unreachable":{}}),d=setTimeout(()=>{i=!0,u.kill("SIGKILL")},n),c=e=>{l||(l=!0,clearTimeout(d),a(e))};u.stdout.on("data",e=>{o+=e.toString()}),u.stderr.on("data",e=>{s+=e.toString()}),u.on("error",e=>{c({ok:!1,code:null,stdout:o.trim(),stderr:s.trim(),timedOut:i,error:e?.message||"spawn_error"})}),u.on("close",e=>{c({ok:!i&&0===e,code:e,stdout:o.trim(),stderr:s.trim(),timedOut:i,error:i?"timeout":null})})}),C=["&","|",";","<",">","(",")","`","$","^","%","!"],x=(e,t)=>{let r=e=>m.default.normalize(e).toLowerCase().replace(/\\/g,"/"),n=r(e),a=r(t);if(n===a)return!0;let o=a.endsWith("/")?a:a+"/";return n.startsWith(o)},_=e=>!(!e||!m.default.isAbsolute(e)||C.some(t=>e.includes(t))),b=(e,t)=>{if(!e)return"";let r=e.trim();if(!m.default.isAbsolute(r)||C.some(e=>r.includes(e)))return"";let n=m.default.normalize(r);return n.includes("..")||t.length>0&&!t.some(e=>x(n,e))?"":n},P=()=>{if(void 0!==t)return t;let e=String(process.env.npm_config_prefix||"").trim();if(e&&m.default.isAbsolute(e))return t=e;try{let e=(0,f.execFileSync)("npm",["config","get","prefix"],{timeout:5e3,encoding:"utf8",stdio:["ignore","pipe","ignore"],..."win32"===process.platform?"TURBOPACK unreachable":{}}).trim();if(e&&m.default.isAbsolute(e)&&!C.some(t=>e.includes(t)))return t=e}catch{}return t=""},A=(r=p.default.homedir(),n=process.env.USERPROFILE||r,a=b(process.env.APPDATA,[r,n]),o=b(process.env.LOCALAPPDATA,[m.default.join(r,"AppData","Local"),m.default.join(n,"AppData","Local"),n]),s=b(process.env.ProgramFiles,["C:\\Program Files","C:\\Program Files (x86)"]),i=b(process.env["ProgramFiles(x86)"],["C:\\Program Files","C:\\Program Files (x86)"]),l=P(),u=[m.default.join(r,"bin"),m.default.join(r,".local","bin")],[r,...u,n,a,o,s,i,l].filter(Boolean)),R=async e=>{if(!_(e))return{installed:!1,commandPath:null,reason:"unsafe_path"};try{await d.default.access(e,d.default.constants.F_OK)}catch{return{installed:!1,commandPath:null,reason:"not_found"}}try{return await d.default.access(e,d.default.constants.X_OK),{installed:!0,commandPath:e,reason:null}}catch{return{installed:!0,commandPath:e,reason:"not_executable"}}},w=async(e,t)=>{if(!e)return{installed:!1,commandPath:null,reason:"missing_command"};if(e.includes("/")||e.includes("\\"))return R(e);process.platform;let r=await v("sh",["-c",'command -v -- "$1"',"sh",e],{env:t,timeoutMs:3e3});return r.ok&&r.stdout?{installed:!0,commandPath:e,reason:null}:{installed:!1,commandPath:null,reason:"not_found"}},E=async e=>{if(!m.default.isAbsolute(e))return{installed:!1,commandPath:null,reason:"not_absolute"};if(!_(e))return{installed:!1,commandPath:null,reason:"unsafe_path"};try{let t=await d.default.realpath(e);if(!A.some(e=>x(t,e)))return{installed:!1,commandPath:null,reason:"symlink_escape"};let r=await d.default.stat(t);if(!r.isFile())return{installed:!1,commandPath:null,reason:"not_file"};if(r.size<30||r.size>0x15e00000)return{installed:!1,commandPath:null,reason:"suspicious_size"}}catch(t){let e=t.code;if("ENOENT"===e)return{installed:!1,commandPath:null,reason:"not_found"};if("EINVAL"===e)return{installed:!1,commandPath:null,reason:"invalid_path"};return{installed:!1,commandPath:null,reason:"access_error"}}try{return await d.default.access(e,d.default.constants.X_OK),{installed:!0,commandPath:e,reason:null}}catch{return{installed:!0,commandPath:e,reason:"not_executable"}}},O=async(e,t,r)=>{if(!Array.isArray(e)||0===e.length)return{command:null,installed:!1,commandPath:null,reason:"missing_command"};if(r)for(let t of(e=>{let t=p.default.homedir(),r=[],n=P();if(process.execPath.toLowerCase().includes("nvm")&&m.default.dirname(process.execPath),"win32"===process.platform);else for(let[,a]of({claude:[["claude.cmd","claude"],["claude.exe","claude"]],codex:[["codex.cmd","codex"]],droid:[["droid.cmd","droid"],["droid.exe","droid"]],openclaw:[["openclaw.cmd","openclaw"]],cursor:[["agent.cmd","agent"],["cursor.cmd","cursor"]],cline:[["cline.cmd","cline"]],kilo:[["kilocode.cmd","kilocode"]],opencode:[["opencode.cmd","opencode"]],qoder:[["qodercli.exe","qodercli"]]})[e]||[]){let o=m.default.dirname(process.execPath);r.push(m.default.join(o,a)),n&&r.push(m.default.join(n,"bin",a)),r.push(m.default.join(t,".local","bin",a)),c.default.existsSync("/usr/local/bin")&&r.push(m.default.join("/usr","local","bin",a)),c.default.existsSync("/usr/bin")&&r.push(m.default.join("/usr","bin",a)),"opencode"===e&&r.push(m.default.join(t,".opencode","bin",a)),"claude"===e&&r.push(m.default.join(t,".claude","bin",a))}return r})(r)){let r=await E(t);if(r.installed&&null===r.reason)return{command:e[0],installed:!0,commandPath:r.commandPath,reason:null}}for(let r of e){let e=await w(r,t);if(e.installed||"not_found"!==e.reason)return{command:r,...e}}return{command:e[0],installed:!1,commandPath:null,reason:"not_found"}},S=async(e,t,r=4e3)=>{let n={PATH:t.PATH,HOME:t.HOME||t.USERPROFILE,USERPROFILE:t.USERPROFILE,APPDATA:t.APPDATA,LOCALAPPDATA:t.LOCALAPPDATA,TEMP:t.TEMP,TMP:t.TMP,SystemRoot:t.SystemRoot,ComSpec:t.ComSpec,PATHEXT:t.PATHEXT};for(let t of[["--version"],["-v"]]){let a=await v(e,t,{env:n,timeoutMs:r});if(a.ok&&a.stdout.length>0&&a.stdout.length<4096)return{runnable:!0,reason:null,version:a.stdout.trim()}}return{runnable:!1,reason:"healthcheck_failed"}},I=()=>((e=process.platform,t=process.env,r=p.default.homedir())=>m.default.join(((e=process.platform,t=process.env,r=p.default.homedir())=>"win32"===e?String(t.APPDATA||"").trim()||m.default.join(r,"AppData","Roaming"):String(t.XDG_CONFIG_HOME||"").trim()||m.default.join(r,".config"))(e,t,r),"opencode","opencode.json"))(),j=e=>{let t=y[e];if(!t)return null;if("opencode"===e)return{config:I()};let r=(()=>{let e=String(process.env.CLI_CONFIG_HOME||"").trim();if(!e||!m.default.isAbsolute(e)||C.some(t=>e.includes(t))||m.default.normalize(e).includes(".."))return p.default.homedir();let t=p.default.homedir(),r=m.default.normalize(e);return x(r,t)?r:t})();return Object.fromEntries(Object.entries(t.paths).map(([e,t])=>[e,m.default.join(r,t)]))},T=async e=>{let t,r,n,a=y[e],o=(t=String(process.env.CLI_MODE||"auto").trim().toLowerCase(),h.has(t)?t:"auto");if(!a)return{installed:!1,runnable:!1,command:null,commandPath:null,reason:"unknown_tool",runtimeMode:o,requiresBinary:!1};let s=(r={...process.env},(n=String(process.env.CLI_EXTRA_PATHS||"").split(m.default.delimiter).map(e=>e.trim()).filter(Boolean).filter(e=>!(!m.default.isAbsolute(e)||C.some(t=>e.includes(t))||m.default.normalize(e).includes("..")))).length>0&&(r.PATH=[...n,r.PATH||""].filter(Boolean).join(m.default.delimiter)),r),i=(e=>{let t=y[e];if(!t)return[];let r=String(process.env[t.envBinKey]||"").trim();return r?[r]:Array.isArray(t.defaultCommands)&&t.defaultCommands.length>0?t.defaultCommands.filter(Boolean):t.defaultCommand?[t.defaultCommand]:[]})(e),l=!1!==a.requiresBinary;if(!l&&0===i.length)return{installed:!0,runnable:!0,command:null,commandPath:null,reason:"not_required",runtimeMode:o,requiresBinary:l};let u=String(process.env[a.envBinKey]||"").trim(),d=await O(i,s,u?void 0:e),c=d.command;if(!d.installed)return{installed:!1,runnable:!1,command:c,commandPath:null,reason:d.reason||"not_found",runtimeMode:o,requiresBinary:l};if("not_executable"===d.reason)return{installed:!0,runnable:!1,command:c,commandPath:d.commandPath,reason:"not_executable",runtimeMode:o,requiresBinary:l};let p=await S(d.commandPath,s,Number(a.healthcheckTimeoutMs||4e3));return{installed:!0,runnable:p.runnable,command:c,commandPath:d.commandPath,reason:p.reason,runtimeMode:o,requiresBinary:l}},k=Object.keys(y);e.s(["CLI_TOOL_IDS",0,k,"ensureCliConfigWriteAllowed",0,()=>((e,t=!0)=>null==e||""===e?t:!g.has(String(e).trim().toLowerCase()))(process.env.CLI_ALLOW_CONFIG_WRITES,!0)?null:"CLI config writes are disabled (CLI_ALLOW_CONFIG_WRITES=false)","getCliConfigPaths",0,j,"getCliPrimaryConfigPath",0,e=>{let t=j(e);if(!t)return null;let r=Object.keys(t)[0];return r?t[r]:null},"getCliRuntimeStatus",0,T,"getOpenCodeConfigPath",0,I])},653870,e=>{"use strict";var t=e.i(747909),r=e.i(174017),n=e.i(996250),a=e.i(759756),o=e.i(561916),s=e.i(174677),i=e.i(869741),l=e.i(316795),u=e.i(487718),d=e.i(995169),c=e.i(47587),p=e.i(666012),m=e.i(570101),f=e.i(626937),h=e.i(10372),g=e.i(193695);e.i(820232);var y=e.i(600220),v=e.i(745015),C=e.i(89171),x=e.i(266240);async function _(e,{params:t}){try{let{toolId:e}=await t,r=String(e||"").trim().toLowerCase();if(!x.CLI_TOOL_IDS.includes(r))return C.NextResponse.json({error:"Unsupported CLI tool"},{status:404});let n=await (0,x.getCliRuntimeStatus)(r);return C.NextResponse.json({...n,toolId:r,configPath:(0,x.getCliPrimaryConfigPath)(r),message:"not_required"===n.reason?"This integration is guide-based and does not require a local CLI binary":n.installed&&n.runnable?"CLI detected and runnable":n.installed?"CLI detected but not runnable":"CLI not detected"})}catch(e){return console.log("Error checking CLI runtime:",e),C.NextResponse.json({error:"Failed to check CLI runtime"},{status:500})}}(0,e.i(195975).ensureServerEntryExports)([_]),(0,v.registerServerReference)(_,"604b1387f7880d5f663c3b85ab9b0432fa92e2bf7e",null),e.s(["GET",0,_],735115);var b=e.i(735115);let P=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/cli-tools/runtime/[toolId]/route",pathname:"/api/cli-tools/runtime/[toolId]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/cli-tools/runtime/[toolId]/route.ts",nextConfigOutput:"standalone",userland:b,...{}}),{workAsyncStorage:A,workUnitAsyncStorage:R,serverHooks:w}=P;async function E(e,t,n){n.requestMeta&&(0,a.setRequestMeta)(e,n.requestMeta),P.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/cli-tools/runtime/[toolId]/route";v=v.replace(/\/index$/,"")||"/";let C=await P.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!C)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:x,params:_,nextConfig:b,parsedUrl:A,isDraftMode:R,prerenderManifest:w,routerServerContext:E,isOnDemandRevalidate:O,revalidateOnlyGenerated:S,resolvedPathname:I,clientReferenceManifest:j,serverActionsManifest:T}=C,k=(0,i.normalizeAppPath)(v),L=!!(w.dynamicRoutes[k]||w.routes[I]),N=async()=>((null==E?void 0:E.render404)?await E.render404(e,t,A,!1):t.end("This page could not be found"),null);if(L&&!R){let e=!!w.routes[I],t=w.dynamicRoutes[k];if(t&&!1===t.fallback&&!e){if(b.adapterPath)return await N();throw new g.NoFallbackError}}let q=null;!L||P.isDev||R||(q="/index"===(q=I)?"/":q);let B=!0===P.isDev||!L,M=L&&!B;T&&j&&(0,s.setManifestsSingleton)({page:v,clientReferenceManifest:j,serverActionsManifest:T});let D=e.method||"GET",U=(0,o.getTracer)(),H=U.getActiveScopeSpan(),K=!!(null==E?void 0:E.isWrappedByNextServer),F=!!(0,a.getRequestMeta)(e,"minimalMode"),$=(0,a.getRequestMeta)(e,"incrementalCache")||await P.getIncrementalCache(e,b,w,F);null==$||$.resetRequestCache(),globalThis.__incrementalCache=$;let W={params:_,previewProps:w.preview,renderOpts:{experimental:{authInterrupts:!!b.experimental.authInterrupts},cacheComponents:!!b.cacheComponents,supportsDynamicResponse:B,incrementalCache:$,cacheLifeProfiles:b.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,a)=>P.onRequestError(e,t,n,a,E)},sharedContext:{buildId:x}},z=new l.NodeNextRequest(e),X=new l.NodeNextResponse(t),G=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let a,s=async e=>P.handle(G,W).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=U.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${D} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),a&&a!==e&&(a.setAttribute("http.route",n),a.updateName(t))}else e.updateName(`${D} ${v}`)}),i=async a=>{var o,i;let l=async({previousCacheEntry:r})=>{try{if(!F&&O&&S&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=await s(a);e.fetchMetrics=W.renderOpts.fetchMetrics;let i=W.renderOpts.pendingWaitUntil;i&&n.waitUntil&&(n.waitUntil(i),i=void 0);let l=W.renderOpts.collectedTags;if(!L)return await (0,p.sendResponse)(z,X,o,W.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(o.headers);l&&(t[h.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==W.renderOpts.collectedRevalidate&&!(W.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&W.renderOpts.collectedRevalidate,n=void 0===W.renderOpts.collectedExpire||W.renderOpts.collectedExpire>=h.INFINITE_CACHE?void 0:W.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:o.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await P.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:O})},!1,E),t}},u=await P.handleResponse({req:e,nextConfig:b,cacheKey:q,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:w,isRoutePPREnabled:!1,isOnDemandRevalidate:O,revalidateOnlyGenerated:S,responseGenerator:l,waitUntil:n.waitUntil,isMinimalMode:F});if(!L)return null;if((null==u||null==(o=u.value)?void 0:o.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(i=u.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});F||t.setHeader("x-nextjs-cache",O?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),R&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,m.fromNodeOutgoingHttpHeaders)(u.value.headers);return F&&L||d.delete(h.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(z,X,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};K&&H?await i(H):(a=U.getActiveScopeSpan(),await U.withPropagatedContext(e.headers,()=>U.trace(d.BaseServerSpan.handleRequest,{spanName:`${D} ${v}`,kind:o.SpanKind.SERVER,attributes:{"http.method":D,"http.target":e.url}},i),void 0,!K))}catch(t){if(t instanceof g.NoFallbackError||await P.onRequestError(e,t,{routerKind:"App Router",routePath:k,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:O})},!1,E),L)throw t;return await (0,p.sendResponse)(z,X,new Response(null,{status:500})),null}}e.s(["handler",0,E,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:R})},"routeModule",0,P,"serverHooks",0,w,"workAsyncStorage",0,A,"workUnitAsyncStorage",0,R],653870)}];
|
|
2
|
+
Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ensureServerEntryExports",{enumerable:!0,get:function(){return n}})},266240,e=>{"use strict";let t,r,n,a,o,s,i,l,u;var d=e.i(924868),c=e.i(522734),p=e.i(446786),m=e.i(814747),f=e.i(233405);let h=new Set(["auto","host","container"]),g=new Set(["0","false","no","off"]),y={claude:{defaultCommand:"claude",envBinKey:"CLI_CLAUDE_BIN",requiresBinary:!0,healthcheckTimeoutMs:4e3,paths:{settings:".claude/settings.json"}},codex:{defaultCommand:"codex",envBinKey:"CLI_CODEX_BIN",requiresBinary:!0,healthcheckTimeoutMs:4e3,paths:{config:".codex/config.toml",auth:".codex/auth.json"}},droid:{defaultCommand:"droid",envBinKey:"CLI_DROID_BIN",requiresBinary:!0,healthcheckTimeoutMs:8e3,paths:{settings:".factory/settings.json"}},openclaw:{defaultCommand:"openclaw",envBinKey:"CLI_OPENCLAW_BIN",requiresBinary:!0,healthcheckTimeoutMs:15e3,paths:{settings:".openclaw/openclaw.json"}},cursor:{defaultCommands:["agent","cursor"],envBinKey:"CLI_CURSOR_BIN",requiresBinary:!0,healthcheckTimeoutMs:15e3,paths:{config:".cursor/cli-config.json",auth:".config/cursor/auth.json",state:".cursor/agent-cli-state.json"}},windsurf:{defaultCommand:null,envBinKey:"CLI_WINDSURF_BIN",requiresBinary:!1,healthcheckTimeoutMs:4e3,paths:{}},cline:{defaultCommand:"cline",envBinKey:"CLI_CLINE_BIN",requiresBinary:!0,healthcheckTimeoutMs:12e3,paths:{globalState:".cline/data/globalState.json",secrets:".cline/data/secrets.json"}},kilo:{defaultCommand:"kilocode",envBinKey:"CLI_KILO_BIN",requiresBinary:!0,healthcheckTimeoutMs:15e3,paths:{auth:".local/share/kilo/auth.json"}},continue:{defaultCommand:null,envBinKey:"CLI_CONTINUE_BIN",requiresBinary:!1,healthcheckTimeoutMs:15e3,paths:{settings:".continue/config.json"}},opencode:{defaultCommand:"opencode",envBinKey:"CLI_OPENCODE_BIN",requiresBinary:!0,healthcheckTimeoutMs:15e3,paths:{config:".config/opencode/opencode.json"}},qoder:{defaultCommand:"qodercli",envBinKey:"CLI_QODER_BIN",requiresBinary:!0,healthcheckTimeoutMs:12e3,paths:{config:".qoder/settings.json",auth:".qoder/auth.json"}}},v=(e,t,{env:r,timeoutMs:n=3e3}={})=>new Promise(a=>{let o="",s="",i=!1,l=!1,u=(0,f.spawn)(e,t,{env:r,stdio:["ignore","pipe","pipe"],..."win32"===process.platform?"TURBOPACK unreachable":{}}),d=setTimeout(()=>{i=!0,u.kill("SIGKILL")},n),c=e=>{l||(l=!0,clearTimeout(d),a(e))};u.stdout.on("data",e=>{o+=e.toString()}),u.stderr.on("data",e=>{s+=e.toString()}),u.on("error",e=>{c({ok:!1,code:null,stdout:o.trim(),stderr:s.trim(),timedOut:i,error:e?.message||"spawn_error"})}),u.on("close",e=>{c({ok:!i&&0===e,code:e,stdout:o.trim(),stderr:s.trim(),timedOut:i,error:i?"timeout":null})})}),C=["&","|",";","<",">","(",")","`","$","^","%","!"],x=(e,t)=>{let r=e=>m.default.normalize(e).toLowerCase().replace(/\\/g,"/"),n=r(e),a=r(t);if(n===a)return!0;let o=a.endsWith("/")?a:a+"/";return n.startsWith(o)},_=e=>!(!e||!m.default.isAbsolute(e)||C.some(t=>e.includes(t))),P=(e,t)=>{if(!e)return"";let r=e.trim();if(!m.default.isAbsolute(r)||C.some(e=>r.includes(e)))return"";let n=m.default.normalize(r);return n.includes("..")||t.length>0&&!t.some(e=>x(n,e))?"":n},b=()=>{if(void 0!==t)return t;let e=String(process.env.npm_config_prefix||"").trim();if(e&&m.default.isAbsolute(e))return t=e;try{let e=(0,f.execFileSync)("npm",["config","get","prefix"],{timeout:5e3,encoding:"utf8",stdio:["ignore","pipe","ignore"],..."win32"===process.platform?"TURBOPACK unreachable":{}}).trim();if(e&&m.default.isAbsolute(e)&&!C.some(t=>e.includes(t)))return t=e}catch{}return t=""},A=(r=p.default.homedir(),n=process.env.USERPROFILE||r,a=P(process.env.APPDATA,[r,n]),o=P(process.env.LOCALAPPDATA,[m.default.join(r,"AppData","Local"),m.default.join(n,"AppData","Local"),n]),s=P(process.env.ProgramFiles,["C:\\Program Files","C:\\Program Files (x86)"]),i=P(process.env["ProgramFiles(x86)"],["C:\\Program Files","C:\\Program Files (x86)"]),l=b(),u=[m.default.join(r,"bin"),m.default.join(r,".local","bin")],[r,...u,n,a,o,s,i,l].filter(Boolean)),R=async e=>{if(!_(e))return{installed:!1,commandPath:null,reason:"unsafe_path"};try{await d.default.access(e,d.default.constants.F_OK)}catch{return{installed:!1,commandPath:null,reason:"not_found"}}try{return await d.default.access(e,d.default.constants.X_OK),{installed:!0,commandPath:e,reason:null}}catch{return{installed:!0,commandPath:e,reason:"not_executable"}}},w=async(e,t)=>{if(!e)return{installed:!1,commandPath:null,reason:"missing_command"};if(e.includes("/")||e.includes("\\"))return R(e);process.platform;let r=await v("sh",["-c",'command -v -- "$1"',"sh",e],{env:t,timeoutMs:3e3});return r.ok&&r.stdout?{installed:!0,commandPath:e,reason:null}:{installed:!1,commandPath:null,reason:"not_found"}},E=async e=>{if(!m.default.isAbsolute(e))return{installed:!1,commandPath:null,reason:"not_absolute"};if(!_(e))return{installed:!1,commandPath:null,reason:"unsafe_path"};try{let t=await d.default.realpath(e);if(!A.some(e=>x(t,e)))return{installed:!1,commandPath:null,reason:"symlink_escape"};let r=await d.default.stat(t);if(!r.isFile())return{installed:!1,commandPath:null,reason:"not_file"};if(r.size<30||r.size>0x15e00000)return{installed:!1,commandPath:null,reason:"suspicious_size"}}catch(t){let e=t.code;if("ENOENT"===e)return{installed:!1,commandPath:null,reason:"not_found"};if("EINVAL"===e)return{installed:!1,commandPath:null,reason:"invalid_path"};return{installed:!1,commandPath:null,reason:"access_error"}}try{return await d.default.access(e,d.default.constants.X_OK),{installed:!0,commandPath:e,reason:null}}catch{return{installed:!0,commandPath:e,reason:"not_executable"}}},O=async(e,t,r)=>{if(!Array.isArray(e)||0===e.length)return{command:null,installed:!1,commandPath:null,reason:"missing_command"};if(r)for(let t of(e=>{let t=p.default.homedir(),r=[],n=b();if(process.execPath.toLowerCase().includes("nvm")&&m.default.dirname(process.execPath),"win32"===process.platform);else for(let[,a]of({claude:[["claude.cmd","claude"],["claude.exe","claude"]],codex:[["codex.cmd","codex"]],droid:[["droid.cmd","droid"],["droid.exe","droid"]],openclaw:[["openclaw.cmd","openclaw"]],cursor:[["agent.cmd","agent"],["cursor.cmd","cursor"]],cline:[["cline.cmd","cline"]],kilo:[["kilocode.cmd","kilocode"]],opencode:[["opencode.cmd","opencode"]],qoder:[["qodercli.exe","qodercli"]]})[e]||[]){let o=m.default.dirname(process.execPath);r.push(m.default.join(o,a)),n&&r.push(m.default.join(n,"bin",a)),r.push(m.default.join(t,".local","bin",a)),c.default.existsSync("/usr/local/bin")&&r.push(m.default.join("/usr","local","bin",a)),c.default.existsSync("/usr/bin")&&r.push(m.default.join("/usr","bin",a)),"opencode"===e&&r.push(m.default.join(t,".opencode","bin",a)),"claude"===e&&r.push(m.default.join(t,".claude","bin",a))}return r})(r)){let r=await E(t);if(r.installed&&null===r.reason)return{command:e[0],installed:!0,commandPath:r.commandPath,reason:null}}for(let r of e){let e=await w(r,t);if(e.installed||"not_found"!==e.reason)return{command:r,...e}}return{command:e[0],installed:!1,commandPath:null,reason:"not_found"}},S=async(e,t,r=4e3)=>{let n={PATH:t.PATH,HOME:t.HOME||t.USERPROFILE,USERPROFILE:t.USERPROFILE,APPDATA:t.APPDATA,LOCALAPPDATA:t.LOCALAPPDATA,TEMP:t.TEMP,TMP:t.TMP,SystemRoot:t.SystemRoot,ComSpec:t.ComSpec,PATHEXT:t.PATHEXT};for(let t of[["--version"],["-v"]]){let a=await v(e,t,{env:n,timeoutMs:r});if(a.ok&&a.stdout.length>0&&a.stdout.length<4096)return{runnable:!0,reason:null,version:a.stdout.trim()}}return{runnable:!1,reason:"healthcheck_failed"}},I=()=>((e=process.platform,t=process.env,r=p.default.homedir())=>m.default.join(((e=process.platform,t=process.env,r=p.default.homedir())=>"win32"===e?String(t.APPDATA||"").trim()||m.default.join(r,"AppData","Roaming"):String(t.XDG_CONFIG_HOME||"").trim()||m.default.join(r,".config"))(e,t,r),"opencode","opencode.json"))(),j=e=>{let t=y[e];if(!t)return null;if("opencode"===e)return{config:I()};let r=(()=>{let e=String(process.env.CLI_CONFIG_HOME||"").trim();if(!e||!m.default.isAbsolute(e)||C.some(t=>e.includes(t))||m.default.normalize(e).includes(".."))return p.default.homedir();let t=p.default.homedir(),r=m.default.normalize(e);return x(r,t)?r:t})();return Object.fromEntries(Object.entries(t.paths).map(([e,t])=>[e,m.default.join(r,t)]))},T=async e=>{let t,r,n,a=y[e],o=(t=String(process.env.CLI_MODE||"auto").trim().toLowerCase(),h.has(t)?t:"auto");if(!a)return{installed:!1,runnable:!1,command:null,commandPath:null,reason:"unknown_tool",runtimeMode:o,requiresBinary:!1};let s=(r={...process.env},(n=String(process.env.CLI_EXTRA_PATHS||"").split(m.default.delimiter).map(e=>e.trim()).filter(Boolean).filter(e=>!(!m.default.isAbsolute(e)||C.some(t=>e.includes(t))||m.default.normalize(e).includes("..")))).length>0&&(r.PATH=[...n,r.PATH||""].filter(Boolean).join(m.default.delimiter)),r),i=(e=>{let t=y[e];if(!t)return[];let r=String(process.env[t.envBinKey]||"").trim();return r?[r]:Array.isArray(t.defaultCommands)&&t.defaultCommands.length>0?t.defaultCommands.filter(Boolean):t.defaultCommand?[t.defaultCommand]:[]})(e),l=!1!==a.requiresBinary;if(!l&&0===i.length)return{installed:!0,runnable:!0,command:null,commandPath:null,reason:"not_required",runtimeMode:o,requiresBinary:l};let u=String(process.env[a.envBinKey]||"").trim(),d=await O(i,s,u?void 0:e),c=d.command;if(!d.installed)return{installed:!1,runnable:!1,command:c,commandPath:null,reason:d.reason||"not_found",runtimeMode:o,requiresBinary:l};if("not_executable"===d.reason)return{installed:!0,runnable:!1,command:c,commandPath:d.commandPath,reason:"not_executable",runtimeMode:o,requiresBinary:l};let p=await S(d.commandPath,s,Number(a.healthcheckTimeoutMs||4e3));return{installed:!0,runnable:p.runnable,command:c,commandPath:d.commandPath,reason:p.reason,runtimeMode:o,requiresBinary:l}},k=Object.keys(y);e.s(["CLI_TOOL_IDS",0,k,"ensureCliConfigWriteAllowed",0,()=>((e,t=!0)=>null==e||""===e?t:!g.has(String(e).trim().toLowerCase()))(process.env.CLI_ALLOW_CONFIG_WRITES,!0)?null:"CLI config writes are disabled (CLI_ALLOW_CONFIG_WRITES=false)","getCliConfigPaths",0,j,"getCliPrimaryConfigPath",0,e=>{let t=j(e);if(!t)return null;let r=Object.keys(t)[0];return r?t[r]:null},"getCliRuntimeStatus",0,T,"getOpenCodeConfigPath",0,I])},653870,e=>{"use strict";var t=e.i(747909),r=e.i(174017),n=e.i(996250),a=e.i(759756),o=e.i(561916),s=e.i(174677),i=e.i(869741),l=e.i(316795),u=e.i(487718),d=e.i(995169),c=e.i(47587),p=e.i(666012),m=e.i(570101),f=e.i(626937),h=e.i(10372),g=e.i(193695);e.i(820232);var y=e.i(600220),v=e.i(745015),C=e.i(89171),x=e.i(266240);async function _(e,{params:t}){try{let{toolId:e}=await t,r=String(e||"").trim().toLowerCase();if(!x.CLI_TOOL_IDS.includes(r))return C.NextResponse.json({error:"Unsupported CLI tool"},{status:404});let n=await (0,x.getCliRuntimeStatus)(r);return C.NextResponse.json({...n,toolId:r,configPath:(0,x.getCliPrimaryConfigPath)(r),message:"not_required"===n.reason?"This integration is guide-based and does not require a local CLI binary":n.installed&&n.runnable?"CLI detected and runnable":n.installed?"CLI detected but not runnable":"CLI not detected"})}catch(e){return console.log("Error checking CLI runtime:",e),C.NextResponse.json({error:"Failed to check CLI runtime"},{status:500})}}(0,e.i(195975).ensureServerEntryExports)([_]),(0,v.registerServerReference)(_,"60ae9cf22896421b52aec82382b180a3e2516f7ff9",null),e.s(["GET",0,_],735115);var P=e.i(735115);let b=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/cli-tools/runtime/[toolId]/route",pathname:"/api/cli-tools/runtime/[toolId]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/cli-tools/runtime/[toolId]/route.ts",nextConfigOutput:"standalone",userland:P,...{}}),{workAsyncStorage:A,workUnitAsyncStorage:R,serverHooks:w}=b;async function E(e,t,n){n.requestMeta&&(0,a.setRequestMeta)(e,n.requestMeta),b.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/cli-tools/runtime/[toolId]/route";v=v.replace(/\/index$/,"")||"/";let C=await b.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!C)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:x,params:_,nextConfig:P,parsedUrl:A,isDraftMode:R,prerenderManifest:w,routerServerContext:E,isOnDemandRevalidate:O,revalidateOnlyGenerated:S,resolvedPathname:I,clientReferenceManifest:j,serverActionsManifest:T}=C,k=(0,i.normalizeAppPath)(v),L=!!(w.dynamicRoutes[k]||w.routes[I]),N=async()=>((null==E?void 0:E.render404)?await E.render404(e,t,A,!1):t.end("This page could not be found"),null);if(L&&!R){let e=!!w.routes[I],t=w.dynamicRoutes[k];if(t&&!1===t.fallback&&!e){if(P.adapterPath)return await N();throw new g.NoFallbackError}}let q=null;!L||b.isDev||R||(q="/index"===(q=I)?"/":q);let B=!0===b.isDev||!L,M=L&&!B;T&&j&&(0,s.setManifestsSingleton)({page:v,clientReferenceManifest:j,serverActionsManifest:T});let D=e.method||"GET",U=(0,o.getTracer)(),H=U.getActiveScopeSpan(),K=!!(null==E?void 0:E.isWrappedByNextServer),F=!!(0,a.getRequestMeta)(e,"minimalMode"),$=(0,a.getRequestMeta)(e,"incrementalCache")||await b.getIncrementalCache(e,P,w,F);null==$||$.resetRequestCache(),globalThis.__incrementalCache=$;let W={params:_,previewProps:w.preview,renderOpts:{experimental:{authInterrupts:!!P.experimental.authInterrupts},cacheComponents:!!P.cacheComponents,supportsDynamicResponse:B,incrementalCache:$,cacheLifeProfiles:P.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,a)=>b.onRequestError(e,t,n,a,E)},sharedContext:{buildId:x}},z=new l.NodeNextRequest(e),X=new l.NodeNextResponse(t),G=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let a,s=async e=>b.handle(G,W).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=U.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${D} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),a&&a!==e&&(a.setAttribute("http.route",n),a.updateName(t))}else e.updateName(`${D} ${v}`)}),i=async a=>{var o,i;let l=async({previousCacheEntry:r})=>{try{if(!F&&O&&S&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=await s(a);e.fetchMetrics=W.renderOpts.fetchMetrics;let i=W.renderOpts.pendingWaitUntil;i&&n.waitUntil&&(n.waitUntil(i),i=void 0);let l=W.renderOpts.collectedTags;if(!L)return await (0,p.sendResponse)(z,X,o,W.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(o.headers);l&&(t[h.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==W.renderOpts.collectedRevalidate&&!(W.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&W.renderOpts.collectedRevalidate,n=void 0===W.renderOpts.collectedExpire||W.renderOpts.collectedExpire>=h.INFINITE_CACHE?void 0:W.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:o.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await b.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:O})},!1,E),t}},u=await b.handleResponse({req:e,nextConfig:P,cacheKey:q,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:w,isRoutePPREnabled:!1,isOnDemandRevalidate:O,revalidateOnlyGenerated:S,responseGenerator:l,waitUntil:n.waitUntil,isMinimalMode:F});if(!L)return null;if((null==u||null==(o=u.value)?void 0:o.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(i=u.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});F||t.setHeader("x-nextjs-cache",O?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),R&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,m.fromNodeOutgoingHttpHeaders)(u.value.headers);return F&&L||d.delete(h.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(z,X,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};K&&H?await i(H):(a=U.getActiveScopeSpan(),await U.withPropagatedContext(e.headers,()=>U.trace(d.BaseServerSpan.handleRequest,{spanName:`${D} ${v}`,kind:o.SpanKind.SERVER,attributes:{"http.method":D,"http.target":e.url}},i),void 0,!K))}catch(t){if(t instanceof g.NoFallbackError||await b.onRequestError(e,t,{routerKind:"App Router",routePath:k,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:O})},!1,E),L)throw t;return await (0,p.sendResponse)(z,X,new Response(null,{status:500})),null}}e.s(["handler",0,E,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:R})},"routeModule",0,b,"serverHooks",0,w,"workAsyncStorage",0,A,"workUnitAsyncStorage",0,R],653870)}];
|
|
3
3
|
|
|
4
4
|
//# sourceMappingURL=%5Broot-of-the-server%5D__0jp3yj4._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
module.exports=[677850,e=>e.a(async(a,i)=>{try{let a=await e.y("zod");e.n(a),i()}catch(e){i(e)}},!0),200392,e=>e.a(async(a,i)=>{try{var r=e.i(677850),t=a([r]);[r]=t.then?(await t)():t,r.z.object({password:r.z.string().min(1,"Password is required").max(200)}),e.s(["isValidationFailure",0,function(e){return!1===e.success},"validateBody",0,function(e,a){let i=e.safeParse(a);if(i.success)return{success:!0,data:i.data};let r=Array.isArray(i.error?.issues)?i.error.issues:[];return{success:!1,error:{message:"Invalid request",details:r.map(e=>({field:e.path.join("."),message:e.message}))}}}]),i()}catch(e){i(e)}},!1),41244,e=>{"use strict";e.s(["HIDEABLE_SIDEBAR_ITEM_IDS",0,["home","endpoints","api-manager","providers","combos","auto-combo","costs","analytics","limits","cache","cli-tools","agents","memory","skills","translator","playground","media","search-tools","health","logs","audit","settings","docs","issues"]])},224010,e=>{"use strict";let a=process.env.CORS_ORIGIN||"*";e.s(["CORS_HEADERS",0,{"Access-Control-Allow-Origin":a,"Access-Control-Allow-Methods":"GET, POST, PUT, DELETE, OPTIONS","Access-Control-Allow-Headers":"Content-Type, Authorization, x-api-key, anthropic-version"},"CORS_ORIGIN",0,a])},699064,e=>{"use strict";e.s(["buildAuthHeaders",0,function(e,a){if("none"===e.authType||"none"===e.authHeader||!a)return{};switch(e.authHeader){case"token":return{Authorization:`Token ${a}`};case"xi-api-key":return{"xi-api-key":a};case"x-api-key":return{"x-api-key":a};default:return{Authorization:`Bearer ${a}`}}},"getAllModelsFromRegistry",0,function(e,a){let i=[];for(let[r,t]of Object.entries(e)){let e=a?a(r,t):{};for(let a of t.models)i.push({id:`${r}/${a.id}`,name:a.name,provider:r,...e})}return i},"parseModelFromRegistry",0,function(e,a){if(!e)return{provider:null,model:null};for(let[i]of Object.entries(a))if(e.startsWith(i+"/"))return{provider:i,model:e.slice(i.length+1)};for(let[i,r]of Object.entries(a))if(r.models.some(a=>a.id===e))return{provider:i,model:e};return{provider:null,model:e}}])},501323,e=>{"use strict";let a={openai:{id:"openai",baseUrl:"https://api.openai.com/v1/audio/transcriptions",authType:"apikey",authHeader:"bearer",models:[{id:"whisper-1",name:"Whisper 1"},{id:"gpt-4o-transcription",name:"GPT-4o Transcription"}]},groq:{id:"groq",baseUrl:"https://api.groq.com/openai/v1/audio/transcriptions",authType:"apikey",authHeader:"bearer",models:[{id:"whisper-large-v3",name:"Whisper Large v3"},{id:"whisper-large-v3-turbo",name:"Whisper Large v3 Turbo"},{id:"distil-whisper-large-v3-en",name:"Distil Whisper Large v3 EN"}]},deepgram:{id:"deepgram",baseUrl:"https://api.deepgram.com/v1/listen",authType:"apikey",authHeader:"token",format:"deepgram",models:[{id:"nova-3",name:"Nova 3"},{id:"nova-2",name:"Nova 2"},{id:"whisper-large",name:"Whisper Large"}]},assemblyai:{id:"assemblyai",baseUrl:"https://api.assemblyai.com/v2/transcript",authType:"apikey",authHeader:"bearer",async:!0,format:"assemblyai",models:[{id:"universal-3-pro",name:"Universal 3 Pro"},{id:"universal-2",name:"Universal 2"}]},nvidia:{id:"nvidia",baseUrl:"https://integrate.api.nvidia.com/v1/audio/transcriptions",authType:"apikey",authHeader:"bearer",format:"nvidia-asr",models:[{id:"nvidia/parakeet-ctc-1.1b-asr",name:"Parakeet CTC 1.1B"}]},huggingface:{id:"huggingface",baseUrl:"https://api-inference.huggingface.co/models",authType:"apikey",authHeader:"bearer",format:"huggingface-asr",models:[{id:"openai/whisper-large-v3",name:"Whisper Large v3 (HF)"},{id:"openai/whisper-small",name:"Whisper Small (HF)"}]},qwen:{id:"qwen",baseUrl:"http://localhost:8000/v1/audio/transcriptions",authType:"none",authHeader:"none",format:"openai",models:[{id:"qwen3-asr",name:"Qwen3 ASR"}]}},i={openai:{id:"openai",baseUrl:"https://api.openai.com/v1/audio/speech",authType:"apikey",authHeader:"bearer",models:[{id:"tts-1",name:"TTS 1"},{id:"tts-1-hd",name:"TTS 1 HD"},{id:"gpt-4o-mini-tts",name:"GPT-4o Mini TTS"}]},hyperbolic:{id:"hyperbolic",baseUrl:"https://api.hyperbolic.xyz/v1/audio/generation",authType:"apikey",authHeader:"bearer",format:"hyperbolic",models:[{id:"melo-tts",name:"Melo TTS"}]},deepgram:{id:"deepgram",baseUrl:"https://api.deepgram.com/v1/speak",authType:"apikey",authHeader:"token",format:"deepgram",models:[{id:"aura-asteria-en",name:"Aura Asteria (EN)"},{id:"aura-luna-en",name:"Aura Luna (EN)"},{id:"aura-stella-en",name:"Aura Stella (EN)"}]},nvidia:{id:"nvidia",baseUrl:"https://integrate.api.nvidia.com/v1/audio/speech",authType:"apikey",authHeader:"bearer",format:"nvidia-tts",models:[{id:"nvidia/fastpitch",name:"FastPitch"},{id:"nvidia/tacotron2",name:"Tacotron2"}]},elevenlabs:{id:"elevenlabs",baseUrl:"https://api.elevenlabs.io/v1/text-to-speech",authType:"apikey",authHeader:"xi-api-key",format:"elevenlabs",models:[{id:"eleven_multilingual_v2",name:"Eleven Multilingual v2"},{id:"eleven_turbo_v2_5",name:"Eleven Turbo v2.5"}]},huggingface:{id:"huggingface",baseUrl:"https://api-inference.huggingface.co/models",authType:"apikey",authHeader:"bearer",format:"huggingface-tts",models:[{id:"facebook/mms-tts-eng",name:"MMS TTS English"},{id:"microsoft/speecht5_tts",name:"SpeechT5 TTS"}]},coqui:{id:"coqui",baseUrl:"http://localhost:5002/api/tts",authType:"none",authHeader:"none",format:"coqui",models:[{id:"tts_models/en/ljspeech/tacotron2-DDC",name:"Tacotron2 DDC (LJSpeech)"}]},tortoise:{id:"tortoise",baseUrl:"http://localhost:5000/api/tts",authType:"none",authHeader:"none",format:"tortoise",models:[{id:"tortoise-v2",name:"Tortoise v2"}]},qwen:{id:"qwen",baseUrl:"http://localhost:8000/v1/audio/speech",authType:"none",authHeader:"none",format:"openai",models:[{id:"qwen3-tts",name:"Qwen3 TTS"}]},inworld:{id:"inworld",baseUrl:"https://api.inworld.ai/tts/v1/voice",authType:"apikey",authHeader:"basic",format:"inworld",models:[{id:"inworld-tts-1.5-max",name:"Inworld TTS 1.5 Max"},{id:"inworld-tts-1.5-mini",name:"Inworld TTS 1.5 Mini"}]},cartesia:{id:"cartesia",baseUrl:"https://api.cartesia.ai/tts/bytes",authType:"apikey",authHeader:"x-api-key",format:"cartesia",models:[{id:"sonic-2",name:"Sonic 2"},{id:"sonic-3",name:"Sonic 3"}]},playht:{id:"playht",baseUrl:"https://api.play.ht/api/v2/tts/stream",authType:"apikey",authHeader:"playht",format:"playht",models:[{id:"PlayDialog",name:"PlayDialog"},{id:"Play3.0-mini",name:"Play3.0 Mini"}]}};function r(e,a,i){if(!e)return{provider:null,model:null};for(let[i]of Object.entries(a))if(e.startsWith(i+"/"))return{provider:i,model:e.slice(i.length+1)};for(let[i,r]of Object.entries(a))if(r.models.some(a=>a.id===e))return{provider:i,model:e};if(i){for(let a of i)if(e.startsWith(a.id+"/"))return{provider:a.id,model:e.slice(a.id.length+1)}}return{provider:null,model:e}}e.s(["buildDynamicAudioProvider",0,function(e,a){if(!e.prefix||!e.baseUrl)throw Error("Invalid provider_node: missing prefix or baseUrl");let i=e.baseUrl.replace(/\/+$/,"");return{id:e.prefix,baseUrl:`${i}${a}`,authType:"none",authHeader:"none",models:[]}},"getAllAudioModels",0,function(){let e=[];for(let[i,r]of Object.entries(a))for(let a of r.models)e.push({id:a.id.startsWith(`${i}/`)?a.id:`${i}/${a.id}`,name:a.name,provider:i,subtype:"transcription"});for(let[a,r]of Object.entries(i))for(let i of r.models)e.push({id:i.id.startsWith(`${a}/`)?i.id:`${a}/${i.id}`,name:i.name,provider:a,subtype:"speech"});return e},"getSpeechProvider",0,function(e){return i[e]||null},"getTranscriptionProvider",0,function(e){return a[e]||null},"parseSpeechModel",0,function(e,a){return r(e,i,a)},"parseTranscriptionModel",0,function(e,i){return r(e,a,i)}])},606102,e=>{e.v(e=>Promise.resolve().then(()=>e(548941)))},789543,e=>{e.v(e=>Promise.resolve().then(()=>e(385498)))},579042,e=>{e.v(a=>Promise.all(["server/chunks/src_shared_utils_apiKey_ts_12~h.oz._.js"].map(a=>e.l(a))).then(()=>a(65448)))},49794,e=>{e.v(a=>Promise.all(["server/chunks/src_shared_constants_pricing_ts_0hk12it._.js"].map(a=>e.l(a))).then(()=>a(404503)))},386305,e=>{e.v(e=>Promise.resolve().then(()=>e(878947)))}];
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__0jvnjwl._.js.map
|
|
@@ -5,6 +5,6 @@ ${r}`.trim()}let i=Array.isArray(e.tool_calls)?e.tool_calls:[];if(i.length>0){le
|
|
|
5
5
|
${r}
|
|
6
6
|
${e}`.trim()}return`${o}:
|
|
7
7
|
${r}`.trim()}(e);t&&o.push(t)}return o.push("Reply now with the assistant response only."),o.filter(Boolean).join("\n\n")},"createQoderErrorResponse",0,function(e){return new Response(JSON.stringify({error:{message:e.message,type:401===e.status?"authentication_error":"provider_error",code:e.code}}),{status:e.status,headers:{"Content-Type":"application/json"}})},"extractTextFromQoderEnvelope",0,function(e){let t=a(e),o=a(t.message).content??t.content??t.delta??t.text??null;return"string"==typeof o?o:Array.isArray(o)?o.map(e=>{let t=a(e),o=n(t.type).trim();return"text"!==o&&o?"":n(t.text)}).filter(Boolean).join(""):""},"getQoderCliCommand",0,s,"getQoderCliWorkspace",0,l,"getStaticQoderModels",0,function(){return i.map(e=>({...e}))},"mapQoderModelToLevel",0,c,"normalizeQoderPatProviderData",0,function(e={}){return{...e,authMode:"pat",transport:"qodercli"}},"parseQoderCliFailure",0,d,"runQoderCliCommand",0,p,"validateQoderCliPat",0,u])},102835,e=>e.a(async(t,o)=>{try{var r=e.i(677850),i=t([r]);[r]=i.then?(await i)():i;let a=r.z.object({id:r.z.string().min(1),alias:r.z.string().min(1).optional(),name:r.z.string().min(1),icon:r.z.string().min(1),color:r.z.string().regex(/^#[0-9A-Fa-f]{6}$/,"Must be a valid hex color (#RRGGBB)"),textIcon:r.z.string().optional(),website:r.z.string().url().optional(),passthroughModels:r.z.boolean().optional(),deprecated:r.z.boolean().optional(),deprecationReason:r.z.string().optional(),hasFree:r.z.boolean().optional(),freeNote:r.z.string().optional(),authHint:r.z.string().optional(),apiHint:r.z.string().optional()}),n=r.z.record(r.z.string(),a);e.s(["validateProviders",0,function(e,t){let o=n.safeParse(e);if(!o.success){let e=o.error.issues.map(e=>` ${e.path.join(".")}: ${e.message}`).join("\n");throw console.error(`[PROVIDER VALIDATION] ${t} has invalid entries:
|
|
8
|
-
${e}`),Error(`Provider validation failed for ${t}`)}}]),o()}catch(e){o(e)}},!1),963219,e=>e.a(async(t,o)=>{try{var r=e.i(102835),i=t([r]);[r]=i.then?(await i)():i;let a={qoder:{id:"qoder",alias:"if",name:"Qoder AI",icon:"water_drop",color:"#6366F1"},qwen:{id:"qwen",alias:"qw",name:"Qwen Code",icon:"psychology",color:"#10B981"},"gemini-cli":{id:"gemini-cli",alias:"gemini-cli",name:"Gemini CLI",icon:"terminal",color:"#4285F4",deprecated:!0,deprecationReason:"Google restricts third-party OAuth usage for Gemini CLI (Mar 2026). Pro models require paid plans. Use 'gemini' (API key) provider instead."},kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"}},n={claude:{id:"claude",alias:"cc",name:"Claude Code",icon:"smart_toy",color:"#D97757"},antigravity:{id:"antigravity",alias:void 0,name:"Antigravity",icon:"rocket_launch",color:"#F59E0B"},codex:{id:"codex",alias:"cx",name:"OpenAI Codex",icon:"code",color:"#3B82F6"},github:{id:"github",alias:"gh",name:"GitHub Copilot",icon:"code",color:"#333333"},cursor:{id:"cursor",alias:"cu",name:"Cursor IDE",icon:"edit_note",color:"#00D4AA"},"kimi-coding":{id:"kimi-coding",alias:"kmc",name:"Kimi Coding",icon:"psychology",color:"#1E40AF",textIcon:"KC"},kilocode:{id:"kilocode",alias:"kc",name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC"},cline:{id:"cline",alias:"cl",name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL"}},s={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",passthroughModels:!0,website:"https://openrouter.ai"},glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},"bailian-coding-plan":{id:"bailian-coding-plan",alias:"bcp",name:"Alibaba Coding Plan",icon:"code",color:"#FF6A00",textIcon:"BCP",website:"https://www.alibabacloud.com/help/en/model-studio/coding-plan"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},"kimi-coding-apikey":{id:"kimi-coding-apikey",alias:"kmca",name:"Kimi Coding (API Key)",icon:"psychology",color:"#1E40AF",textIcon:"KC",website:"https://kimi.com"},minimax:{id:"minimax",alias:"minimax",name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com"},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com"},alicode:{id:"alicode",alias:"alicode",name:"Alibaba",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://bailian.console.aliyun.com"},"alicode-intl":{id:"alicode-intl",alias:"alicode-intl",name:"Alibaba Intl",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://modelstudio.console.alibabacloud.com"},openai:{id:"openai",alias:"openai",name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com"},anthropic:{id:"anthropic",alias:"anthropic",name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com"},gemini:{id:"gemini",alias:"gemini",name:"Gemini (Google AI Studio)",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev",hasFree:!0,freeNote:"Free forever: 1,500 req/day for Gemini 2.5 Flash — no credit card, get key at aistudio.google.com"},deepseek:{id:"deepseek",alias:"ds",name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com"},groq:{id:"groq",alias:"groq",name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com",hasFree:!0,freeNote:"Free tier: 30 RPM / 14.4K RPD — no credit card"},blackbox:{id:"blackbox",alias:"bb",name:"Blackbox AI",icon:"view_in_ar",color:"#1A1A2E",textIcon:"BB",website:"https://blackbox.ai"},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai"},mistral:{id:"mistral",alias:"mistral",name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai"},perplexity:{id:"perplexity",alias:"pplx",name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai"},together:{id:"together",alias:"together",name:"Together AI",icon:"group_work",color:"#0F6FFF",textIcon:"TG",website:"https://www.together.ai",hasFree:!0,freeNote:"$25 signup credits + 3 permanently free models: Llama 3.3 70B, Vision, DeepSeek-R1 distill"},fireworks:{id:"fireworks",alias:"fireworks",name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai"},cerebras:{id:"cerebras",alias:"cerebras",name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://inference.cerebras.ai",hasFree:!0,freeNote:"Free: 1M tokens/day, 60K TPM — world's fastest inference"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://build.nvidia.com",hasFree:!0,freeNote:"Free dev access: ~40 RPM, 70+ models (Kimi K2.5, GLM 4.7, DeepSeek V3.2...)"},nebius:{id:"nebius",alias:"nebius",name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com"},siliconflow:{id:"siliconflow",alias:"siliconflow",name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com"},hyperbolic:{id:"hyperbolic",alias:"hyp",name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz"},deepgram:{id:"deepgram",alias:"dg",name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com"},assemblyai:{id:"assemblyai",alias:"aai",name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com"},nanobanana:{id:"nanobanana",alias:"nb",name:"NanoBanana",icon:"image",color:"#FFD700",textIcon:"NB",website:"https://nanobananaapi.ai"},"ollama-cloud":{id:"ollama-cloud",alias:"ollamacloud",name:"Ollama Cloud",icon:"cloud",color:"#58A6FF",textIcon:"OC",website:"https://ollama.com/settings/api-keys"},elevenlabs:{id:"elevenlabs",alias:"el",name:"ElevenLabs",icon:"record_voice_over",color:"#6C47FF",textIcon:"EL",website:"https://elevenlabs.io"},cartesia:{id:"cartesia",alias:"cartesia",name:"Cartesia",icon:"spatial_audio",color:"#FF4F8B",textIcon:"CA",website:"https://cartesia.ai"},playht:{id:"playht",alias:"playht",name:"PlayHT",icon:"play_circle",color:"#00B4D8",textIcon:"PH",website:"https://play.ht"},inworld:{id:"inworld",alias:"inworld",name:"Inworld",icon:"voice_chat",color:"#7B2EF2",textIcon:"IW",website:"https://inworld.ai"},sdwebui:{id:"sdwebui",alias:"sdwebui",name:"SD WebUI",icon:"brush",color:"#FF7043",textIcon:"SD",website:"https://github.com/AUTOMATIC1111/stable-diffusion-webui"},comfyui:{id:"comfyui",alias:"comfyui",name:"ComfyUI",icon:"account_tree",color:"#4CAF50",textIcon:"CF",website:"https://github.com/comfyanonymous/ComfyUI"},huggingface:{id:"huggingface",alias:"hf",name:"HuggingFace",icon:"face",color:"#FFD21E",textIcon:"HF",website:"https://huggingface.co",hasFree:!0,freeNote:"Free Inference API for thousands of models (Whisper, VITS, SDXL…)"},synthetic:{id:"synthetic",alias:"synthetic",name:"Synthetic",icon:"verified_user",color:"#6366F1",textIcon:"SY",website:"https://synthetic.new",passthroughModels:!0},"kilo-gateway":{id:"kilo-gateway",alias:"kg",name:"Kilo Gateway",icon:"hub",color:"#617A91",textIcon:"KG",website:"https://kilo.ai",passthroughModels:!0},vertex:{id:"vertex",alias:"vertex",name:"Vertex AI",icon:"cloud",color:"#4285F4",textIcon:"VA",website:"https://cloud.google.com/vertex-ai",authHint:"Provide Service Account JSON or OAuth access_token"},zai:{id:"zai",alias:"zai",name:"Z.AI",icon:"psychology",color:"#2563EB",textIcon:"ZA",website:"https://open.bigmodel.cn",apiHint:"API key from https://open.bigmodel.cn/usercenter/apikeys"},"perplexity-search":{id:"perplexity-search",alias:"pplx-search",name:"Perplexity Search",icon:"search",color:"#20808D",textIcon:"PS",website:"https://docs.perplexity.ai/guides/search-quickstart",authHint:"Same API key as Perplexity (pplx-...)"},"serper-search":{id:"serper-search",alias:"serper-search",name:"Serper Search",icon:"search",color:"#4285F4",textIcon:"SP",website:"https://serper.dev",authHint:"API key from serper.dev dashboard"},"brave-search":{id:"brave-search",alias:"brave-search",name:"Brave Search",icon:"travel_explore",color:"#FB542B",textIcon:"BR",website:"https://brave.com/search/api",authHint:"Subscription token from Brave Search API dashboard"},"exa-search":{id:"exa-search",alias:"exa-search",name:"Exa Search",icon:"neurology",color:"#1E40AF",textIcon:"EX",website:"https://exa.ai",authHint:"API key from dashboard.exa.ai"},"tavily-search":{id:"tavily-search",alias:"tavily-search",name:"Tavily Search",icon:"manage_search",color:"#5B4FDB",textIcon:"TV",website:"https://tavily.com",authHint:"API key from app.tavily.com (format: tvly-...)"},"opencode-zen":{id:"opencode-zen",alias:"opencode-zen",name:"OpenCode Zen",icon:"opencode",color:"#6366f1",website:"https://opencode.ai/zen"},"opencode-go":{id:"opencode-go",alias:"opencode-go",name:"OpenCode Go",icon:"opencode",color:"#6366f1",website:"https://opencode.ai/zen/go"},alibaba:{id:"alibaba",alias:"ali",name:"Alibaba Cloud (DashScope)",icon:"cloud_queue",color:"#FF6600",textIcon:"AL",website:"https://dashscope-intl.aliyuncs.com",hasFree:!1},longcat:{id:"longcat",alias:"lc",name:"LongCat AI",icon:"auto_awesome",color:"#FF6B9D",textIcon:"LC",website:"https://longcat.chat",hasFree:!0,freeNote:"50M tokens/day (Flash-Lite) + 500K/day (Chat/Thinking) — 100% free while public beta"},pollinations:{id:"pollinations",alias:"pol",name:"Pollinations AI",icon:"local_florist",color:"#4CAF50",textIcon:"PO",website:"https://pollinations.ai",hasFree:!0,freeNote:"No API key needed — access GPT-5, Claude, Gemini, DeepSeek V3, Llama 4 free (1 req/15s)"},puter:{id:"puter",alias:"pu",name:"Puter AI",icon:"cloud_circle",color:"#6366F1",textIcon:"PU",website:"https://puter.com",hasFree:!0,freeNote:"500+ models (GPT-5, Claude Opus 4, Gemini 3 Pro, Grok 4, DeepSeek V3...) — Users pay via free Puter account",passthroughModels:!0,authHint:"Get token at puter.com/dashboard → Copy Auth Token"},"cloudflare-ai":{id:"cloudflare-ai",alias:"cf",name:"Cloudflare Workers AI",icon:"cloud",color:"#F48120",textIcon:"CF",website:"https://developers.cloudflare.com/workers-ai/",hasFree:!0,freeNote:"Free 10K Neurons/day: ~150 LLM responses or 500s Whisper audio — edge inference globally",authHint:"Requires API Token AND Account ID (found at dash.cloudflare.com)"},scaleway:{id:"scaleway",alias:"scw",name:"Scaleway AI",icon:"cloud",color:"#4F0599",textIcon:"SCW",website:"https://www.scaleway.com/en/ai/generative-apis/",hasFree:!0,freeNote:"1M free tokens for new accounts — EU/GDPR compliant (Paris), Qwen3 235B & Llama 70B"},aimlapi:{id:"aimlapi",alias:"aiml",name:"AI/ML API",icon:"hub",color:"#6366F1",textIcon:"AI",website:"https://aimlapi.com",hasFree:!0,freeNote:"$0.025/day free credits — 200+ models (GPT-4o, Claude, Gemini, Llama) via single endpoint",passthroughModels:!0},novita:{id:"novita",alias:"novita",name:"Novita AI",icon:"auto_awesome",color:"#FF4081",textIcon:"NV",website:"https://novita.ai",passthroughModels:!0},piapi:{id:"piapi",alias:"pi",name:"PiAPI",icon:"api",color:"#7C4DFF",textIcon:"PI",website:"https://piapi.ai",passthroughModels:!0},getgoapi:{id:"getgoapi",alias:"ggo",name:"GoAPI",icon:"rocket_launch",color:"#FF6D00",textIcon:"GO",website:"https://api.getgoapi.com",passthroughModels:!0},laozhang:{id:"laozhang",alias:"lz",name:"LaoZhang AI",icon:"hub",color:"#FF1744",textIcon:"LZ",website:"https://api.laozhang.ai",passthroughModels:!0}},l="openai-compatible-",c="anthropic-compatible-",d="anthropic-compatible-cc-",p={...a,...n,...s,cliproxyapi:{id:"cliproxyapi",alias:"cpa",name:"CLIProxyAPI",icon:"proxy",color:"#6366F1",textIcon:"CPA",website:"https://github.com/router-for-me/CLIProxyAPI",defaultPort:8317,healthEndpoint:"/v1/models",managementPrefix:"/v0/management",configDir:"~/.cli-proxy-api",binaryName:"cli-proxy-api",githubRepo:"router-for-me/CLIProxyAPI"}},u=Object.values(p).reduce((e,t)=>(t.alias&&(e[t.alias]=t.id),e),{});Object.values(p).reduce((e,t)=>(e[t.id]=t.alias||t.id,e),{}),(0,r.validateProviders)(a,"FREE_PROVIDERS"),(0,r.validateProviders)(n,"OAUTH_PROVIDERS"),(0,r.validateProviders)(s,"APIKEY_PROVIDERS"),e.s(["AI_PROVIDERS",0,p,"ALIAS_TO_ID",0,u,"ANTHROPIC_COMPATIBLE_PREFIX",0,c,"APIKEY_PROVIDERS",0,s,"CLAUDE_CODE_COMPATIBLE_PREFIX",0,d,"FREE_PROVIDERS",0,a,"OAUTH_PROVIDERS",0,n,"OPENAI_COMPATIBLE_PREFIX",0,l,"USAGE_SUPPORTED_PROVIDERS",0,["antigravity","gemini-cli","kiro","github","codex","claude","kimi-coding","glm"],"getProviderAlias",0,function(e){let t=p[e];return t?.alias||e},"isAnthropicCompatibleProvider",0,function(e){return"string"==typeof e&&e.startsWith(c)},"isClaudeCodeCompatibleProvider",0,function(e){return"string"==typeof e&&e.startsWith(d)},"isOpenAICompatibleProvider",0,function(e){return"string"==typeof e&&e.startsWith(l)}]),o()}catch(e){o(e)}},!1),617325,e=>e.a(async(t,o)=>{try{var r=e.i(878947),i=e.i(963219),a=t([i]);[i]=a.then?(await a)():a,Object.entries(i.AI_PROVIDERS).filter(([,e])=>e.passthroughModels).map(([e])=>e);let n=Object.entries(r.PROVIDER_MODELS).flatMap(([e,t])=>t.map(t=>({provider:e,model:t.id,name:t.name})));e.s(["AI_MODELS",0,n]),o()}catch(e){o(e)}},!1),712943,e=>{"use strict";e.s(["default",0,{name:"omniroute",version:"3.4.7",description:"Smart AI Router with auto fallback — route to FREE & cheap models, zero downtime. Works with Cursor, Cline, Claude Desktop, Codex, and any OpenAI-compatible tool.",type:"module",bin:{omniroute:"bin/omniroute.mjs","omniroute-reset-password":"bin/reset-password.mjs"},files:["bin/","app/","open-sse/mcp-server/","src/shared/contracts/","scripts/postinstall.mjs","scripts/native-binary-compat.mjs","README.md","LICENSE"],workspaces:["open-sse"],engines:{node:">=18.0.0 <24.0.0"},keywords:["ai","router","proxy","openai","claude","anthropic","gemini","fallback","cursor","cline","codex","llm","auto-fallback"],license:"MIT",author:"diegosouzapw",repository:{type:"git",url:"https://github.com/diegosouzapw/OmniRoute"},homepage:"https://omniroute.online",scripts:{dev:"node scripts/run-next.mjs dev",build:"node scripts/build-next-isolated.mjs","build:cli":"node scripts/prepublish.mjs",start:"node scripts/run-next.mjs start",lint:"eslint .","electron:dev":'concurrently "npm run dev" "wait-on http://localhost:20128 && cd electron && npm run dev"',"electron:build":"npm run build && cd electron && npm run build","electron:build:win":"npm run build && cd electron && npm run build:win","electron:build:mac":"npm run build && cd electron && npm run build:mac","electron:build:linux":"npm run build && cd electron && npm run build:linux",test:"node --import tsx/esm --test tests/unit/*.test.mjs","test:unit":"node --import tsx/esm --test tests/unit/*.test.mjs","test:plan3":"node --import tsx/esm --test tests/unit/plan3-p0.test.mjs","test:fixes":"node --import tsx/esm --test tests/unit/fixes-p1.test.mjs","test:security":"node --import tsx/esm --test tests/unit/security-fase01.test.mjs","check:cycles":"node scripts/check-cycles.mjs","check:route-validation:t06":"node scripts/check-route-validation.mjs","check:any-budget:t11":"node scripts/check-t11-any-budget.mjs","check:docs-sync":"node scripts/check-docs-sync.mjs","typecheck:core":"tsc --pretty false -p tsconfig.typecheck-core.json","typecheck:noimplicit:core":"tsc --pretty false -p tsconfig.typecheck-noimplicit-core.json","test:integration":"node --import tsx/esm --test tests/integration/*.test.mjs","test:e2e":"node scripts/run-playwright-tests.mjs test tests/e2e/*.spec.ts","test:protocols:e2e":"node scripts/run-protocol-clients-tests.mjs","test:vitest":"vitest run open-sse/mcp-server/__tests__/*.test.ts open-sse/services/autoCombo/__tests__/*.test.ts","test:ecosystem":"node scripts/run-ecosystem-tests.mjs","test:coverage":"c8 --exclude=tests/** --exclude=**/*.test.* --reporter=text-summary --reporter=html --reporter=json-summary --reporter=lcov --check-coverage --statements 55 --lines 55 --functions 55 --branches 60 node --import tsx/esm --test tests/unit/*.test.mjs","test:coverage:legacy":"c8 --exclude=open-sse --check-coverage --lines 50 --functions 50 --branches 50 node --import tsx/esm --test tests/unit/*.test.mjs","coverage:report":"c8 report --exclude=tests/** --exclude=**/*.test.* --reporter=text --reporter=text-summary --reporter=html --reporter=json-summary --reporter=lcov","coverage:report:legacy":"c8 report --exclude=open-sse --reporter=text --reporter=text-summary","test:all":"npm run test:unit && npm run test:vitest && npm run test:ecosystem && npm run test:e2e",check:"npm run lint && npm run test",prepublishOnly:"npm run build:cli",postinstall:"node scripts/postinstall.mjs",prepare:"husky","system-info":"node scripts/system-info.mjs"},dependencies:{"@lobehub/icons":"^5.0.1","@modelcontextprotocol/sdk":"^1.27.1","@monaco-editor/react":"^4.7.0","@swc/helpers":"0.5.19",bcryptjs:"^3.0.3","better-sqlite3":"^12.6.2",bottleneck:"^2.19.5",dompurify:"^3.3.2",express:"^5.2.1","fetch-socks":"^1.3.2","http-proxy-middleware":"^3.0.5","https-proxy-agent":"^8.0.0",jose:"^6.1.3","js-yaml":"^4.1.0",lowdb:"^7.0.1","monaco-editor":"^0.55.1",next:"^16.0.10","next-intl":"^4.8.3","node-machine-id":"^1.1.12",open:"^11.0.0",ora:"^9.1.0",pino:"^10.3.1","pino-pretty":"^13.1.3",react:"19.2.4","react-dom":"19.2.4",recharts:"^3.7.0",selfsigned:"^5.5.0",tsx:"^4.21.0",undici:"^7.19.2",uuid:"^13.0.0","wreq-js":"^2.0.1",yazl:"^3.3.1",zod:"^4.3.6",zustand:"^5.0.10"},optionalDependencies:{keytar:"^7.9.0"},devDependencies:{"@playwright/test":"^1.58.2","@tailwindcss/postcss":"^4.1.18","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@types/bcryptjs":"^3.0.0","@types/better-sqlite3":"^7.6.13","@types/keytar":"^4.4.0","@types/node":"^25.2.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.0.1",c8:"^11.0.0",concurrently:"^9.2.1","cross-env":"^10.1.0",eslint:"^9.39.2","eslint-config-next":"^16.0.10",husky:"^9.1.7",jsdom:"^29.0.1","lint-staged":"^16.2.7",prettier:"^3.8.1","prop-types":"^15.8.1",tailwindcss:"^4",typescript:"^5.9.3","typescript-eslint":"^8.56.0",vitest:"^4.0.18","wait-on":"^9.0.4"},"lint-staged":{"*.{js,jsx,ts,tsx,mjs}":["prettier --write","eslint --fix --no-error-on-unmatched-pattern"],"*.{json,md,yml,yaml,css}":["prettier --write"]},pnpm:{onlyBuiltDependencies:["@parcel/watcher","@swc/core","better-sqlite3","esbuild","omniroute","sharp"]},overrides:{"lodash-es":"^4.18.1",dompurify:"^3.3.2","path-to-regexp":"^8.4.0",react:"$react","react-dom":"$react-dom"}}])},651948,e=>e.a(async(t,o)=>{try{var r=e.i(712943),i=e.i(963219),a=e.i(617325),n=t([i,a]);[i,a]=n.then?(await n)():n;let s={name:"OmniRoute",description:"AI Gateway for Multi-Provider LLMs",version:r.default.version};e.s(["APP_CONFIG",0,s]),o()}catch(e){o(e)}},!1),834202,e=>e.a(async(t,o)=>{try{var r=e.i(89171);e.i(180725);var i=e.i(385498),a=e.i(548941),n=e.i(651948),s=e.i(963219),l=e.i(250875),c=e.i(639173),d=e.i(676088),p=e.i(200392),u=e.i(679468),m=t([n,s,d,p]);async function h(){try{let e=(await (0,i.getProviderConnections)()).map(e=>({...e,apiKey:void 0,accessToken:void 0,refreshToken:void 0,idToken:void 0}));return r.NextResponse.json({connections:e})}catch(e){return console.log("Error fetching providers:",e),r.NextResponse.json({error:"Failed to fetch providers"},{status:500})}}async function y(e){try{let t=await e.json(),o=(0,p.validateBody)(d.createProviderSchema,t);if((0,p.isValidationFailure)(o))return r.NextResponse.json({error:o.error},{status:400});let{provider:a,apiKey:n,name:l,priority:c,globalPriority:m,defaultModel:h,testStatus:y,providerSpecificData:f}=o.data;if(!(s.APIKEY_PROVIDERS[a]||"qoder"===a||(0,s.isOpenAICompatibleProvider)(a)||(0,s.isAnthropicCompatibleProvider)(a)))return r.NextResponse.json({error:"Invalid provider"},{status:400});let x=f||null,b="true"===process.env.ALLOW_MULTI_CONNECTIONS_PER_COMPAT_NODE;if("qoder"===a&&(x=(0,u.normalizeQoderPatProviderData)(x||{})),(0,s.isOpenAICompatibleProvider)(a)){let e=await (0,i.getProviderNodeById)(a);if(!e)return r.NextResponse.json({error:"OpenAI Compatible node not found"},{status:404});let t=await (0,i.getProviderConnections)({provider:a});if(!b&&t.length>0)return r.NextResponse.json({error:"Only one connection is allowed for this OpenAI Compatible node"},{status:400});x={...x||{},prefix:e.prefix,apiType:e.apiType,baseUrl:e.baseUrl,nodeName:e.name,...e.chatPath?{chatPath:e.chatPath}:{},...e.modelsPath?{modelsPath:e.modelsPath}:{}}}else if((0,s.isAnthropicCompatibleProvider)(a)){let e=await (0,i.getProviderNodeById)(a);if(!e)return r.NextResponse.json({error:(0,s.isClaudeCodeCompatibleProvider)(a)?"CC Compatible node not found":"Anthropic Compatible node not found"},{status:404});let t=await (0,i.getProviderConnections)({provider:a});if(!b&&t.length>0)return r.NextResponse.json({error:"Only one connection is allowed for this Anthropic Compatible node"},{status:400});x={...x||{},prefix:e.prefix,baseUrl:e.baseUrl,nodeName:e.name,...e.chatPath?{chatPath:e.chatPath}:{},...e.modelsPath?{modelsPath:e.modelsPath}:{}}}let v={...await (0,i.createProviderConnection)({provider:a,authType:"apikey",name:l,apiKey:n,priority:c||1,globalPriority:m||null,defaultModel:h||null,providerSpecificData:x,isActive:!0,testStatus:y||"unknown"})};return delete v.apiKey,await g(),r.NextResponse.json({connection:v},{status:201})}catch(e){return console.log("Error creating provider:",e),r.NextResponse.json({error:"Failed to create provider"},{status:500})}}async function g(){try{if(!await (0,a.isCloudEnabled)())return;let e=await (0,l.getConsistentMachineId)();await (0,c.syncToCloud)(e)}catch(e){console.log("Error syncing providers to cloud:",e)}}[n,s,d,p]=m.then?(await m)():m,e.s(["GET",0,h,"POST",0,y]),o()}catch(e){o(e)}},!1),367003,e=>e.a(async(t,o)=>{try{var r=e.i(747909),i=e.i(174017),a=e.i(996250),n=e.i(759756),s=e.i(561916),l=e.i(174677),c=e.i(869741),d=e.i(316795),p=e.i(487718),u=e.i(995169),m=e.i(47587),h=e.i(666012),y=e.i(570101),g=e.i(626937),f=e.i(10372),x=e.i(193695);e.i(820232);var b=e.i(600220),v=e.i(834202),w=t([v]);[v]=w.then?(await w)():w;let I=new r.AppRouteRouteModule({definition:{kind:i.RouteKind.APP_ROUTE,page:"/api/providers/route",pathname:"/api/providers",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/providers/route.ts",nextConfigOutput:"standalone",userland:v,...{}}),{workAsyncStorage:C,workUnitAsyncStorage:k,serverHooks:_}=I;async function A(e,t,o){o.requestMeta&&(0,n.setRequestMeta)(e,o.requestMeta),I.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let r="/api/providers/route";r=r.replace(/\/index$/,"")||"/";let a=await I.prepare(e,t,{srcPage:r,multiZoneDraftMode:!1});if(!a)return t.statusCode=400,t.end("Bad Request"),null==o.waitUntil||o.waitUntil.call(o,Promise.resolve()),null;let{buildId:v,params:w,nextConfig:A,parsedUrl:C,isDraftMode:k,prerenderManifest:_,routerServerContext:P,isOnDemandRevalidate:R,revalidateOnlyGenerated:E,resolvedPathname:O,clientReferenceManifest:S,serverActionsManifest:F}=a,j=(0,c.normalizeAppPath)(r),D=!!(_.dynamicRoutes[j]||_.routes[O]),N=async()=>((null==P?void 0:P.render404)?await P.render404(e,t,C,!1):t.end("This page could not be found"),null);if(D&&!k){let e=!!_.routes[O],t=_.dynamicRoutes[j];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await N();throw new x.NoFallbackError}}let T=null;!D||I.isDev||k||(T=O,T="/index"===T?"/":T);let M=!0===I.isDev||!D,L=D&&!M;F&&S&&(0,l.setManifestsSingleton)({page:r,clientReferenceManifest:S,serverActionsManifest:F});let q=e.method||"GET",B=(0,s.getTracer)(),U=B.getActiveScopeSpan(),$=!!(null==P?void 0:P.isWrappedByNextServer),z=!!(0,n.getRequestMeta)(e,"minimalMode"),K=(0,n.getRequestMeta)(e,"incrementalCache")||await I.getIncrementalCache(e,A,_,z);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let H={params:w,previewProps:_.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:M,incrementalCache:K,cacheLifeProfiles:A.cacheLife,waitUntil:o.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,o,r,i)=>I.onRequestError(e,t,r,i,P)},sharedContext:{buildId:v}},G=new d.NodeNextRequest(e),Q=new d.NodeNextResponse(t),V=p.NextRequestAdapter.fromNodeNextRequest(G,(0,p.signalFromNodeResponse)(t));try{let a,n=async e=>I.handle(V,H).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let o=B.getRootSpanAttributes();if(!o)return;if(o.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${o.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let i=o.get("next.route");if(i){let t=`${q} ${i}`;e.setAttributes({"next.route":i,"http.route":i,"next.span_name":t}),e.updateName(t),a&&a!==e&&(a.setAttribute("http.route",i),a.updateName(t))}else e.updateName(`${q} ${r}`)}),l=async a=>{var s,l;let c=async({previousCacheEntry:i})=>{try{if(!z&&R&&E&&!i)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let r=await n(a);e.fetchMetrics=H.renderOpts.fetchMetrics;let s=H.renderOpts.pendingWaitUntil;s&&o.waitUntil&&(o.waitUntil(s),s=void 0);let l=H.renderOpts.collectedTags;if(!D)return await (0,h.sendResponse)(G,Q,r,H.renderOpts.pendingWaitUntil),null;{let e=await r.blob(),t=(0,y.toNodeOutgoingHttpHeaders)(r.headers);l&&(t[f.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let o=void 0!==H.renderOpts.collectedRevalidate&&!(H.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&H.renderOpts.collectedRevalidate,i=void 0===H.renderOpts.collectedExpire||H.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:H.renderOpts.collectedExpire;return{value:{kind:b.CachedRouteKind.APP_ROUTE,status:r.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:o,expire:i}}}}catch(t){throw(null==i?void 0:i.isStale)&&await I.onRequestError(e,t,{routerKind:"App Router",routePath:r,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:R})},!1,P),t}},d=await I.handleResponse({req:e,nextConfig:A,cacheKey:T,routeKind:i.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:_,isRoutePPREnabled:!1,isOnDemandRevalidate:R,revalidateOnlyGenerated:E,responseGenerator:c,waitUntil:o.waitUntil,isMinimalMode:z});if(!D)return null;if((null==d||null==(s=d.value)?void 0:s.kind)!==b.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(l=d.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});z||t.setHeader("x-nextjs-cache",R?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),k&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,y.fromNodeOutgoingHttpHeaders)(d.value.headers);return z&&D||p.delete(f.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,g.getCacheControlHeader)(d.cacheControl)),await (0,h.sendResponse)(G,Q,new Response(d.value.body,{headers:p,status:d.value.status||200})),null};$&&U?await l(U):(a=B.getActiveScopeSpan(),await B.withPropagatedContext(e.headers,()=>B.trace(u.BaseServerSpan.handleRequest,{spanName:`${q} ${r}`,kind:s.SpanKind.SERVER,attributes:{"http.method":q,"http.target":e.url}},l),void 0,!$))}catch(t){if(t instanceof x.NoFallbackError||await I.onRequestError(e,t,{routerKind:"App Router",routePath:j,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:R})},!1,P),D)throw t;return await (0,h.sendResponse)(G,Q,new Response(null,{status:500})),null}}e.s(["handler",0,A,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:k})},"routeModule",0,I,"serverHooks",0,_,"workAsyncStorage",0,C,"workUnitAsyncStorage",0,k]),o()}catch(e){o(e)}},!1),606102,e=>{e.v(e=>Promise.resolve().then(()=>e(548941)))},789543,e=>{e.v(e=>Promise.resolve().then(()=>e(385498)))},579042,e=>{e.v(t=>Promise.all(["server/chunks/src_shared_utils_apiKey_ts_12~h.oz._.js"].map(t=>e.l(t))).then(()=>t(65448)))},49794,e=>{e.v(t=>Promise.all(["server/chunks/src_shared_constants_pricing_ts_0hk12it._.js"].map(t=>e.l(t))).then(()=>t(404503)))},386305,e=>{e.v(e=>Promise.resolve().then(()=>e(878947)))},485685,e=>{e.v(e=>Promise.resolve().then(()=>e(254799)))}];
|
|
8
|
+
${e}`),Error(`Provider validation failed for ${t}`)}}]),o()}catch(e){o(e)}},!1),963219,e=>e.a(async(t,o)=>{try{var r=e.i(102835),i=t([r]);[r]=i.then?(await i)():i;let a={qoder:{id:"qoder",alias:"if",name:"Qoder AI",icon:"water_drop",color:"#6366F1"},qwen:{id:"qwen",alias:"qw",name:"Qwen Code",icon:"psychology",color:"#10B981"},"gemini-cli":{id:"gemini-cli",alias:"gemini-cli",name:"Gemini CLI",icon:"terminal",color:"#4285F4",deprecated:!0,deprecationReason:"Google restricts third-party OAuth usage for Gemini CLI (Mar 2026). Pro models require paid plans. Use 'gemini' (API key) provider instead."},kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"}},n={claude:{id:"claude",alias:"cc",name:"Claude Code",icon:"smart_toy",color:"#D97757"},antigravity:{id:"antigravity",alias:void 0,name:"Antigravity",icon:"rocket_launch",color:"#F59E0B"},codex:{id:"codex",alias:"cx",name:"OpenAI Codex",icon:"code",color:"#3B82F6"},github:{id:"github",alias:"gh",name:"GitHub Copilot",icon:"code",color:"#333333"},cursor:{id:"cursor",alias:"cu",name:"Cursor IDE",icon:"edit_note",color:"#00D4AA"},"kimi-coding":{id:"kimi-coding",alias:"kmc",name:"Kimi Coding",icon:"psychology",color:"#1E40AF",textIcon:"KC"},kilocode:{id:"kilocode",alias:"kc",name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC"},cline:{id:"cline",alias:"cl",name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL"}},s={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",passthroughModels:!0,website:"https://openrouter.ai"},glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},"bailian-coding-plan":{id:"bailian-coding-plan",alias:"bcp",name:"Alibaba Coding Plan",icon:"code",color:"#FF6A00",textIcon:"BCP",website:"https://www.alibabacloud.com/help/en/model-studio/coding-plan"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},"kimi-coding-apikey":{id:"kimi-coding-apikey",alias:"kmca",name:"Kimi Coding (API Key)",icon:"psychology",color:"#1E40AF",textIcon:"KC",website:"https://kimi.com"},minimax:{id:"minimax",alias:"minimax",name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com"},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com"},alicode:{id:"alicode",alias:"alicode",name:"Alibaba",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://bailian.console.aliyun.com"},"alicode-intl":{id:"alicode-intl",alias:"alicode-intl",name:"Alibaba Intl",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://modelstudio.console.alibabacloud.com"},openai:{id:"openai",alias:"openai",name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com"},anthropic:{id:"anthropic",alias:"anthropic",name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com"},gemini:{id:"gemini",alias:"gemini",name:"Gemini (Google AI Studio)",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev",hasFree:!0,freeNote:"Free forever: 1,500 req/day for Gemini 2.5 Flash — no credit card, get key at aistudio.google.com"},deepseek:{id:"deepseek",alias:"ds",name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com"},groq:{id:"groq",alias:"groq",name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com",hasFree:!0,freeNote:"Free tier: 30 RPM / 14.4K RPD — no credit card"},blackbox:{id:"blackbox",alias:"bb",name:"Blackbox AI",icon:"view_in_ar",color:"#1A1A2E",textIcon:"BB",website:"https://blackbox.ai"},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai"},mistral:{id:"mistral",alias:"mistral",name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai"},perplexity:{id:"perplexity",alias:"pplx",name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai"},together:{id:"together",alias:"together",name:"Together AI",icon:"group_work",color:"#0F6FFF",textIcon:"TG",website:"https://www.together.ai",hasFree:!0,freeNote:"$25 signup credits + 3 permanently free models: Llama 3.3 70B, Vision, DeepSeek-R1 distill"},fireworks:{id:"fireworks",alias:"fireworks",name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai"},cerebras:{id:"cerebras",alias:"cerebras",name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://inference.cerebras.ai",hasFree:!0,freeNote:"Free: 1M tokens/day, 60K TPM — world's fastest inference"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://build.nvidia.com",hasFree:!0,freeNote:"Free dev access: ~40 RPM, 70+ models (Kimi K2.5, GLM 4.7, DeepSeek V3.2...)"},nebius:{id:"nebius",alias:"nebius",name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com"},siliconflow:{id:"siliconflow",alias:"siliconflow",name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com"},hyperbolic:{id:"hyperbolic",alias:"hyp",name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz"},deepgram:{id:"deepgram",alias:"dg",name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com"},assemblyai:{id:"assemblyai",alias:"aai",name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com"},nanobanana:{id:"nanobanana",alias:"nb",name:"NanoBanana",icon:"image",color:"#FFD700",textIcon:"NB",website:"https://nanobananaapi.ai"},"ollama-cloud":{id:"ollama-cloud",alias:"ollamacloud",name:"Ollama Cloud",icon:"cloud",color:"#58A6FF",textIcon:"OC",website:"https://ollama.com/settings/api-keys"},elevenlabs:{id:"elevenlabs",alias:"el",name:"ElevenLabs",icon:"record_voice_over",color:"#6C47FF",textIcon:"EL",website:"https://elevenlabs.io"},cartesia:{id:"cartesia",alias:"cartesia",name:"Cartesia",icon:"spatial_audio",color:"#FF4F8B",textIcon:"CA",website:"https://cartesia.ai"},playht:{id:"playht",alias:"playht",name:"PlayHT",icon:"play_circle",color:"#00B4D8",textIcon:"PH",website:"https://play.ht"},inworld:{id:"inworld",alias:"inworld",name:"Inworld",icon:"voice_chat",color:"#7B2EF2",textIcon:"IW",website:"https://inworld.ai"},sdwebui:{id:"sdwebui",alias:"sdwebui",name:"SD WebUI",icon:"brush",color:"#FF7043",textIcon:"SD",website:"https://github.com/AUTOMATIC1111/stable-diffusion-webui"},comfyui:{id:"comfyui",alias:"comfyui",name:"ComfyUI",icon:"account_tree",color:"#4CAF50",textIcon:"CF",website:"https://github.com/comfyanonymous/ComfyUI"},huggingface:{id:"huggingface",alias:"hf",name:"HuggingFace",icon:"face",color:"#FFD21E",textIcon:"HF",website:"https://huggingface.co",hasFree:!0,freeNote:"Free Inference API for thousands of models (Whisper, VITS, SDXL…)"},synthetic:{id:"synthetic",alias:"synthetic",name:"Synthetic",icon:"verified_user",color:"#6366F1",textIcon:"SY",website:"https://synthetic.new",passthroughModels:!0},"kilo-gateway":{id:"kilo-gateway",alias:"kg",name:"Kilo Gateway",icon:"hub",color:"#617A91",textIcon:"KG",website:"https://kilo.ai",passthroughModels:!0},vertex:{id:"vertex",alias:"vertex",name:"Vertex AI",icon:"cloud",color:"#4285F4",textIcon:"VA",website:"https://cloud.google.com/vertex-ai",authHint:"Provide Service Account JSON or OAuth access_token"},zai:{id:"zai",alias:"zai",name:"Z.AI",icon:"psychology",color:"#2563EB",textIcon:"ZA",website:"https://open.bigmodel.cn",apiHint:"API key from https://open.bigmodel.cn/usercenter/apikeys"},"perplexity-search":{id:"perplexity-search",alias:"pplx-search",name:"Perplexity Search",icon:"search",color:"#20808D",textIcon:"PS",website:"https://docs.perplexity.ai/guides/search-quickstart",authHint:"Same API key as Perplexity (pplx-...)"},"serper-search":{id:"serper-search",alias:"serper-search",name:"Serper Search",icon:"search",color:"#4285F4",textIcon:"SP",website:"https://serper.dev",authHint:"API key from serper.dev dashboard"},"brave-search":{id:"brave-search",alias:"brave-search",name:"Brave Search",icon:"travel_explore",color:"#FB542B",textIcon:"BR",website:"https://brave.com/search/api",authHint:"Subscription token from Brave Search API dashboard"},"exa-search":{id:"exa-search",alias:"exa-search",name:"Exa Search",icon:"neurology",color:"#1E40AF",textIcon:"EX",website:"https://exa.ai",authHint:"API key from dashboard.exa.ai"},"tavily-search":{id:"tavily-search",alias:"tavily-search",name:"Tavily Search",icon:"manage_search",color:"#5B4FDB",textIcon:"TV",website:"https://tavily.com",authHint:"API key from app.tavily.com (format: tvly-...)"},"opencode-zen":{id:"opencode-zen",alias:"opencode-zen",name:"OpenCode Zen",icon:"opencode",color:"#6366f1",website:"https://opencode.ai/zen"},"opencode-go":{id:"opencode-go",alias:"opencode-go",name:"OpenCode Go",icon:"opencode",color:"#6366f1",website:"https://opencode.ai/zen/go"},alibaba:{id:"alibaba",alias:"ali",name:"Alibaba Cloud (DashScope)",icon:"cloud_queue",color:"#FF6600",textIcon:"AL",website:"https://dashscope-intl.aliyuncs.com",hasFree:!1},longcat:{id:"longcat",alias:"lc",name:"LongCat AI",icon:"auto_awesome",color:"#FF6B9D",textIcon:"LC",website:"https://longcat.chat",hasFree:!0,freeNote:"50M tokens/day (Flash-Lite) + 500K/day (Chat/Thinking) — 100% free while public beta"},pollinations:{id:"pollinations",alias:"pol",name:"Pollinations AI",icon:"local_florist",color:"#4CAF50",textIcon:"PO",website:"https://pollinations.ai",hasFree:!0,freeNote:"No API key needed — access GPT-5, Claude, Gemini, DeepSeek V3, Llama 4 free (1 req/15s)"},puter:{id:"puter",alias:"pu",name:"Puter AI",icon:"cloud_circle",color:"#6366F1",textIcon:"PU",website:"https://puter.com",hasFree:!0,freeNote:"500+ models (GPT-5, Claude Opus 4, Gemini 3 Pro, Grok 4, DeepSeek V3...) — Users pay via free Puter account",passthroughModels:!0,authHint:"Get token at puter.com/dashboard → Copy Auth Token"},"cloudflare-ai":{id:"cloudflare-ai",alias:"cf",name:"Cloudflare Workers AI",icon:"cloud",color:"#F48120",textIcon:"CF",website:"https://developers.cloudflare.com/workers-ai/",hasFree:!0,freeNote:"Free 10K Neurons/day: ~150 LLM responses or 500s Whisper audio — edge inference globally",authHint:"Requires API Token AND Account ID (found at dash.cloudflare.com)"},scaleway:{id:"scaleway",alias:"scw",name:"Scaleway AI",icon:"cloud",color:"#4F0599",textIcon:"SCW",website:"https://www.scaleway.com/en/ai/generative-apis/",hasFree:!0,freeNote:"1M free tokens for new accounts — EU/GDPR compliant (Paris), Qwen3 235B & Llama 70B"},aimlapi:{id:"aimlapi",alias:"aiml",name:"AI/ML API",icon:"hub",color:"#6366F1",textIcon:"AI",website:"https://aimlapi.com",hasFree:!0,freeNote:"$0.025/day free credits — 200+ models (GPT-4o, Claude, Gemini, Llama) via single endpoint",passthroughModels:!0},novita:{id:"novita",alias:"novita",name:"Novita AI",icon:"auto_awesome",color:"#FF4081",textIcon:"NV",website:"https://novita.ai",passthroughModels:!0},piapi:{id:"piapi",alias:"pi",name:"PiAPI",icon:"api",color:"#7C4DFF",textIcon:"PI",website:"https://piapi.ai",passthroughModels:!0},getgoapi:{id:"getgoapi",alias:"ggo",name:"GoAPI",icon:"rocket_launch",color:"#FF6D00",textIcon:"GO",website:"https://api.getgoapi.com",passthroughModels:!0},laozhang:{id:"laozhang",alias:"lz",name:"LaoZhang AI",icon:"hub",color:"#FF1744",textIcon:"LZ",website:"https://api.laozhang.ai",passthroughModels:!0}},l="openai-compatible-",c="anthropic-compatible-",d="anthropic-compatible-cc-",p={...a,...n,...s,cliproxyapi:{id:"cliproxyapi",alias:"cpa",name:"CLIProxyAPI",icon:"proxy",color:"#6366F1",textIcon:"CPA",website:"https://github.com/router-for-me/CLIProxyAPI",defaultPort:8317,healthEndpoint:"/v1/models",managementPrefix:"/v0/management",configDir:"~/.cli-proxy-api",binaryName:"cli-proxy-api",githubRepo:"router-for-me/CLIProxyAPI"}},u=Object.values(p).reduce((e,t)=>(t.alias&&(e[t.alias]=t.id),e),{});Object.values(p).reduce((e,t)=>(e[t.id]=t.alias||t.id,e),{}),(0,r.validateProviders)(a,"FREE_PROVIDERS"),(0,r.validateProviders)(n,"OAUTH_PROVIDERS"),(0,r.validateProviders)(s,"APIKEY_PROVIDERS"),e.s(["AI_PROVIDERS",0,p,"ALIAS_TO_ID",0,u,"ANTHROPIC_COMPATIBLE_PREFIX",0,c,"APIKEY_PROVIDERS",0,s,"CLAUDE_CODE_COMPATIBLE_PREFIX",0,d,"FREE_PROVIDERS",0,a,"OAUTH_PROVIDERS",0,n,"OPENAI_COMPATIBLE_PREFIX",0,l,"USAGE_SUPPORTED_PROVIDERS",0,["antigravity","gemini-cli","kiro","github","codex","claude","kimi-coding","glm"],"getProviderAlias",0,function(e){let t=p[e];return t?.alias||e},"isAnthropicCompatibleProvider",0,function(e){return"string"==typeof e&&e.startsWith(c)},"isClaudeCodeCompatibleProvider",0,function(e){return"string"==typeof e&&e.startsWith(d)},"isOpenAICompatibleProvider",0,function(e){return"string"==typeof e&&e.startsWith(l)}]),o()}catch(e){o(e)}},!1),617325,e=>e.a(async(t,o)=>{try{var r=e.i(878947),i=e.i(963219),a=t([i]);[i]=a.then?(await a)():a,Object.entries(i.AI_PROVIDERS).filter(([,e])=>e.passthroughModels).map(([e])=>e);let n=Object.entries(r.PROVIDER_MODELS).flatMap(([e,t])=>t.map(t=>({provider:e,model:t.id,name:t.name})));e.s(["AI_MODELS",0,n]),o()}catch(e){o(e)}},!1),712943,e=>{"use strict";e.s(["default",0,{name:"omniroute",version:"3.4.8",description:"Smart AI Router with auto fallback — route to FREE & cheap models, zero downtime. Works with Cursor, Cline, Claude Desktop, Codex, and any OpenAI-compatible tool.",type:"module",bin:{omniroute:"bin/omniroute.mjs","omniroute-reset-password":"bin/reset-password.mjs"},files:["bin/","app/","open-sse/mcp-server/","src/shared/contracts/","scripts/postinstall.mjs","scripts/native-binary-compat.mjs","README.md","LICENSE"],workspaces:["open-sse"],engines:{node:">=18.0.0 <24.0.0"},keywords:["ai","router","proxy","openai","claude","anthropic","gemini","fallback","cursor","cline","codex","llm","auto-fallback"],license:"MIT",author:"diegosouzapw",repository:{type:"git",url:"https://github.com/diegosouzapw/OmniRoute"},homepage:"https://omniroute.online",scripts:{dev:"node scripts/run-next.mjs dev",build:"node scripts/build-next-isolated.mjs","build:cli":"node scripts/prepublish.mjs",start:"node scripts/run-next.mjs start",lint:"eslint .","electron:dev":'concurrently "npm run dev" "wait-on http://localhost:20128 && cd electron && npm run dev"',"electron:build":"npm run build && cd electron && npm run build","electron:build:win":"npm run build && cd electron && npm run build:win","electron:build:mac":"npm run build && cd electron && npm run build:mac","electron:build:linux":"npm run build && cd electron && npm run build:linux",test:"node --import tsx/esm --test tests/unit/*.test.mjs","test:unit":"node --import tsx/esm --test tests/unit/*.test.mjs","test:plan3":"node --import tsx/esm --test tests/unit/plan3-p0.test.mjs","test:fixes":"node --import tsx/esm --test tests/unit/fixes-p1.test.mjs","test:security":"node --import tsx/esm --test tests/unit/security-fase01.test.mjs","check:cycles":"node scripts/check-cycles.mjs","check:route-validation:t06":"node scripts/check-route-validation.mjs","check:any-budget:t11":"node scripts/check-t11-any-budget.mjs","check:docs-sync":"node scripts/check-docs-sync.mjs","typecheck:core":"tsc --pretty false -p tsconfig.typecheck-core.json","typecheck:noimplicit:core":"tsc --pretty false -p tsconfig.typecheck-noimplicit-core.json","test:integration":"node --import tsx/esm --test tests/integration/*.test.mjs","test:e2e":"node scripts/run-playwright-tests.mjs test tests/e2e/*.spec.ts","test:protocols:e2e":"node scripts/run-protocol-clients-tests.mjs","test:vitest":"vitest run open-sse/mcp-server/__tests__/*.test.ts open-sse/services/autoCombo/__tests__/*.test.ts","test:ecosystem":"node scripts/run-ecosystem-tests.mjs","test:coverage":"c8 --exclude=tests/** --exclude=**/*.test.* --reporter=text-summary --reporter=html --reporter=json-summary --reporter=lcov --check-coverage --statements 55 --lines 55 --functions 55 --branches 60 node --import tsx/esm --test tests/unit/*.test.mjs","test:coverage:legacy":"c8 --exclude=open-sse --check-coverage --lines 50 --functions 50 --branches 50 node --import tsx/esm --test tests/unit/*.test.mjs","coverage:report":"c8 report --exclude=tests/** --exclude=**/*.test.* --reporter=text --reporter=text-summary --reporter=html --reporter=json-summary --reporter=lcov","coverage:report:legacy":"c8 report --exclude=open-sse --reporter=text --reporter=text-summary","test:all":"npm run test:unit && npm run test:vitest && npm run test:ecosystem && npm run test:e2e",check:"npm run lint && npm run test",prepublishOnly:"npm run build:cli",postinstall:"node scripts/postinstall.mjs",prepare:"husky","system-info":"node scripts/system-info.mjs"},dependencies:{"@lobehub/icons":"^5.0.1","@modelcontextprotocol/sdk":"^1.27.1","@monaco-editor/react":"^4.7.0","@swc/helpers":"0.5.19",bcryptjs:"^3.0.3","better-sqlite3":"^12.6.2",bottleneck:"^2.19.5",dompurify:"^3.3.2",express:"^5.2.1","fetch-socks":"^1.3.2","http-proxy-middleware":"^3.0.5","https-proxy-agent":"^8.0.0",jose:"^6.1.3","js-yaml":"^4.1.0",lowdb:"^7.0.1","monaco-editor":"^0.55.1",next:"^16.0.10","next-intl":"^4.8.3","node-machine-id":"^1.1.12",open:"^11.0.0",ora:"^9.1.0",pino:"^10.3.1","pino-pretty":"^13.1.3",react:"19.2.4","react-dom":"19.2.4",recharts:"^3.7.0",selfsigned:"^5.5.0",tsx:"^4.21.0",undici:"^7.19.2",uuid:"^13.0.0","wreq-js":"^2.0.1",yazl:"^3.3.1",zod:"^4.3.6",zustand:"^5.0.10"},optionalDependencies:{keytar:"^7.9.0"},devDependencies:{"@playwright/test":"^1.58.2","@tailwindcss/postcss":"^4.1.18","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@types/bcryptjs":"^3.0.0","@types/better-sqlite3":"^7.6.13","@types/keytar":"^4.4.0","@types/node":"^25.2.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.0.1",c8:"^11.0.0",concurrently:"^9.2.1","cross-env":"^10.1.0",eslint:"^9.39.2","eslint-config-next":"^16.0.10",husky:"^9.1.7",jsdom:"^29.0.1","lint-staged":"^16.2.7",prettier:"^3.8.1","prop-types":"^15.8.1",tailwindcss:"^4",typescript:"^5.9.3","typescript-eslint":"^8.56.0",vitest:"^4.0.18","wait-on":"^9.0.4"},"lint-staged":{"*.{js,jsx,ts,tsx,mjs}":["prettier --write","eslint --fix --no-error-on-unmatched-pattern"],"*.{json,md,yml,yaml,css}":["prettier --write"]},pnpm:{onlyBuiltDependencies:["@parcel/watcher","@swc/core","better-sqlite3","esbuild","omniroute","sharp"]},overrides:{"lodash-es":"^4.18.1",dompurify:"^3.3.2","path-to-regexp":"^8.4.0",react:"$react","react-dom":"$react-dom"}}])},651948,e=>e.a(async(t,o)=>{try{var r=e.i(712943),i=e.i(963219),a=e.i(617325),n=t([i,a]);[i,a]=n.then?(await n)():n;let s={name:"OmniRoute",description:"AI Gateway for Multi-Provider LLMs",version:r.default.version};e.s(["APP_CONFIG",0,s]),o()}catch(e){o(e)}},!1),834202,e=>e.a(async(t,o)=>{try{var r=e.i(89171);e.i(180725);var i=e.i(385498),a=e.i(548941),n=e.i(651948),s=e.i(963219),l=e.i(250875),c=e.i(639173),d=e.i(676088),p=e.i(200392),u=e.i(679468),m=t([n,s,d,p]);async function h(){try{let e=(await (0,i.getProviderConnections)()).map(e=>({...e,apiKey:void 0,accessToken:void 0,refreshToken:void 0,idToken:void 0}));return r.NextResponse.json({connections:e})}catch(e){return console.log("Error fetching providers:",e),r.NextResponse.json({error:"Failed to fetch providers"},{status:500})}}async function y(e){try{let t=await e.json(),o=(0,p.validateBody)(d.createProviderSchema,t);if((0,p.isValidationFailure)(o))return r.NextResponse.json({error:o.error},{status:400});let{provider:a,apiKey:n,name:l,priority:c,globalPriority:m,defaultModel:h,testStatus:y,providerSpecificData:f}=o.data;if(!(s.APIKEY_PROVIDERS[a]||"qoder"===a||(0,s.isOpenAICompatibleProvider)(a)||(0,s.isAnthropicCompatibleProvider)(a)))return r.NextResponse.json({error:"Invalid provider"},{status:400});let x=f||null,b="true"===process.env.ALLOW_MULTI_CONNECTIONS_PER_COMPAT_NODE;if("qoder"===a&&(x=(0,u.normalizeQoderPatProviderData)(x||{})),(0,s.isOpenAICompatibleProvider)(a)){let e=await (0,i.getProviderNodeById)(a);if(!e)return r.NextResponse.json({error:"OpenAI Compatible node not found"},{status:404});let t=await (0,i.getProviderConnections)({provider:a});if(!b&&t.length>0)return r.NextResponse.json({error:"Only one connection is allowed for this OpenAI Compatible node"},{status:400});x={...x||{},prefix:e.prefix,apiType:e.apiType,baseUrl:e.baseUrl,nodeName:e.name,...e.chatPath?{chatPath:e.chatPath}:{},...e.modelsPath?{modelsPath:e.modelsPath}:{}}}else if((0,s.isAnthropicCompatibleProvider)(a)){let e=await (0,i.getProviderNodeById)(a);if(!e)return r.NextResponse.json({error:(0,s.isClaudeCodeCompatibleProvider)(a)?"CC Compatible node not found":"Anthropic Compatible node not found"},{status:404});let t=await (0,i.getProviderConnections)({provider:a});if(!b&&t.length>0)return r.NextResponse.json({error:"Only one connection is allowed for this Anthropic Compatible node"},{status:400});x={...x||{},prefix:e.prefix,baseUrl:e.baseUrl,nodeName:e.name,...e.chatPath?{chatPath:e.chatPath}:{},...e.modelsPath?{modelsPath:e.modelsPath}:{}}}let v={...await (0,i.createProviderConnection)({provider:a,authType:"apikey",name:l,apiKey:n,priority:c||1,globalPriority:m||null,defaultModel:h||null,providerSpecificData:x,isActive:!0,testStatus:y||"unknown"})};return delete v.apiKey,await g(),r.NextResponse.json({connection:v},{status:201})}catch(e){return console.log("Error creating provider:",e),r.NextResponse.json({error:"Failed to create provider"},{status:500})}}async function g(){try{if(!await (0,a.isCloudEnabled)())return;let e=await (0,l.getConsistentMachineId)();await (0,c.syncToCloud)(e)}catch(e){console.log("Error syncing providers to cloud:",e)}}[n,s,d,p]=m.then?(await m)():m,e.s(["GET",0,h,"POST",0,y]),o()}catch(e){o(e)}},!1),367003,e=>e.a(async(t,o)=>{try{var r=e.i(747909),i=e.i(174017),a=e.i(996250),n=e.i(759756),s=e.i(561916),l=e.i(174677),c=e.i(869741),d=e.i(316795),p=e.i(487718),u=e.i(995169),m=e.i(47587),h=e.i(666012),y=e.i(570101),g=e.i(626937),f=e.i(10372),x=e.i(193695);e.i(820232);var b=e.i(600220),v=e.i(834202),w=t([v]);[v]=w.then?(await w)():w;let I=new r.AppRouteRouteModule({definition:{kind:i.RouteKind.APP_ROUTE,page:"/api/providers/route",pathname:"/api/providers",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/providers/route.ts",nextConfigOutput:"standalone",userland:v,...{}}),{workAsyncStorage:C,workUnitAsyncStorage:k,serverHooks:_}=I;async function A(e,t,o){o.requestMeta&&(0,n.setRequestMeta)(e,o.requestMeta),I.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let r="/api/providers/route";r=r.replace(/\/index$/,"")||"/";let a=await I.prepare(e,t,{srcPage:r,multiZoneDraftMode:!1});if(!a)return t.statusCode=400,t.end("Bad Request"),null==o.waitUntil||o.waitUntil.call(o,Promise.resolve()),null;let{buildId:v,params:w,nextConfig:A,parsedUrl:C,isDraftMode:k,prerenderManifest:_,routerServerContext:P,isOnDemandRevalidate:R,revalidateOnlyGenerated:E,resolvedPathname:O,clientReferenceManifest:S,serverActionsManifest:F}=a,j=(0,c.normalizeAppPath)(r),D=!!(_.dynamicRoutes[j]||_.routes[O]),N=async()=>((null==P?void 0:P.render404)?await P.render404(e,t,C,!1):t.end("This page could not be found"),null);if(D&&!k){let e=!!_.routes[O],t=_.dynamicRoutes[j];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await N();throw new x.NoFallbackError}}let T=null;!D||I.isDev||k||(T=O,T="/index"===T?"/":T);let M=!0===I.isDev||!D,L=D&&!M;F&&S&&(0,l.setManifestsSingleton)({page:r,clientReferenceManifest:S,serverActionsManifest:F});let q=e.method||"GET",B=(0,s.getTracer)(),U=B.getActiveScopeSpan(),$=!!(null==P?void 0:P.isWrappedByNextServer),z=!!(0,n.getRequestMeta)(e,"minimalMode"),K=(0,n.getRequestMeta)(e,"incrementalCache")||await I.getIncrementalCache(e,A,_,z);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let H={params:w,previewProps:_.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:M,incrementalCache:K,cacheLifeProfiles:A.cacheLife,waitUntil:o.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,o,r,i)=>I.onRequestError(e,t,r,i,P)},sharedContext:{buildId:v}},G=new d.NodeNextRequest(e),Q=new d.NodeNextResponse(t),V=p.NextRequestAdapter.fromNodeNextRequest(G,(0,p.signalFromNodeResponse)(t));try{let a,n=async e=>I.handle(V,H).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let o=B.getRootSpanAttributes();if(!o)return;if(o.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${o.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let i=o.get("next.route");if(i){let t=`${q} ${i}`;e.setAttributes({"next.route":i,"http.route":i,"next.span_name":t}),e.updateName(t),a&&a!==e&&(a.setAttribute("http.route",i),a.updateName(t))}else e.updateName(`${q} ${r}`)}),l=async a=>{var s,l;let c=async({previousCacheEntry:i})=>{try{if(!z&&R&&E&&!i)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let r=await n(a);e.fetchMetrics=H.renderOpts.fetchMetrics;let s=H.renderOpts.pendingWaitUntil;s&&o.waitUntil&&(o.waitUntil(s),s=void 0);let l=H.renderOpts.collectedTags;if(!D)return await (0,h.sendResponse)(G,Q,r,H.renderOpts.pendingWaitUntil),null;{let e=await r.blob(),t=(0,y.toNodeOutgoingHttpHeaders)(r.headers);l&&(t[f.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let o=void 0!==H.renderOpts.collectedRevalidate&&!(H.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&H.renderOpts.collectedRevalidate,i=void 0===H.renderOpts.collectedExpire||H.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:H.renderOpts.collectedExpire;return{value:{kind:b.CachedRouteKind.APP_ROUTE,status:r.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:o,expire:i}}}}catch(t){throw(null==i?void 0:i.isStale)&&await I.onRequestError(e,t,{routerKind:"App Router",routePath:r,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:R})},!1,P),t}},d=await I.handleResponse({req:e,nextConfig:A,cacheKey:T,routeKind:i.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:_,isRoutePPREnabled:!1,isOnDemandRevalidate:R,revalidateOnlyGenerated:E,responseGenerator:c,waitUntil:o.waitUntil,isMinimalMode:z});if(!D)return null;if((null==d||null==(s=d.value)?void 0:s.kind)!==b.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(l=d.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});z||t.setHeader("x-nextjs-cache",R?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),k&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,y.fromNodeOutgoingHttpHeaders)(d.value.headers);return z&&D||p.delete(f.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,g.getCacheControlHeader)(d.cacheControl)),await (0,h.sendResponse)(G,Q,new Response(d.value.body,{headers:p,status:d.value.status||200})),null};$&&U?await l(U):(a=B.getActiveScopeSpan(),await B.withPropagatedContext(e.headers,()=>B.trace(u.BaseServerSpan.handleRequest,{spanName:`${q} ${r}`,kind:s.SpanKind.SERVER,attributes:{"http.method":q,"http.target":e.url}},l),void 0,!$))}catch(t){if(t instanceof x.NoFallbackError||await I.onRequestError(e,t,{routerKind:"App Router",routePath:j,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:R})},!1,P),D)throw t;return await (0,h.sendResponse)(G,Q,new Response(null,{status:500})),null}}e.s(["handler",0,A,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:k})},"routeModule",0,I,"serverHooks",0,_,"workAsyncStorage",0,C,"workUnitAsyncStorage",0,k]),o()}catch(e){o(e)}},!1),606102,e=>{e.v(e=>Promise.resolve().then(()=>e(548941)))},789543,e=>{e.v(e=>Promise.resolve().then(()=>e(385498)))},579042,e=>{e.v(t=>Promise.all(["server/chunks/src_shared_utils_apiKey_ts_12~h.oz._.js"].map(t=>e.l(t))).then(()=>t(65448)))},49794,e=>{e.v(t=>Promise.all(["server/chunks/src_shared_constants_pricing_ts_0hk12it._.js"].map(t=>e.l(t))).then(()=>t(404503)))},386305,e=>{e.v(e=>Promise.resolve().then(()=>e(878947)))},485685,e=>{e.v(e=>Promise.resolve().then(()=>e(254799)))}];
|
|
9
9
|
|
|
10
10
|
//# sourceMappingURL=%5Broot-of-the-server%5D__0mj7x5~._.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
module.exports=[918622,(e,t,o)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,t,o)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,t,o)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},324725,(e,t,o)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},270406,(e,t,o)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},193695,(e,t,o)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},442315,(e,t,o)=>{"use strict";t.exports=e.r(918622)},347540,(e,t,o)=>{"use strict";t.exports=e.r(442315).vendored["react-rsc"].React},819481,(e,t,o)=>{"use strict";var i=Object.defineProperty,r=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,s=Object.prototype.hasOwnProperty,n={},c={RequestCookies:()=>g,ResponseCookies:()=>y,parseCookie:()=>d,parseSetCookie:()=>u,stringifyCookie:()=>p};for(var l in c)i(n,l,{get:c[l],enumerable:!0});function p(e){var t;let o=["path"in e&&e.path&&`Path=${e.path}`,"expires"in e&&(e.expires||0===e.expires)&&`Expires=${("number"==typeof e.expires?new Date(e.expires):e.expires).toUTCString()}`,"maxAge"in e&&"number"==typeof e.maxAge&&`Max-Age=${e.maxAge}`,"domain"in e&&e.domain&&`Domain=${e.domain}`,"secure"in e&&e.secure&&"Secure","httpOnly"in e&&e.httpOnly&&"HttpOnly","sameSite"in e&&e.sameSite&&`SameSite=${e.sameSite}`,"partitioned"in e&&e.partitioned&&"Partitioned","priority"in e&&e.priority&&`Priority=${e.priority}`].filter(Boolean),i=`${e.name}=${encodeURIComponent(null!=(t=e.value)?t:"")}`;return 0===o.length?i:`${i}; ${o.join("; ")}`}function d(e){let t=new Map;for(let o of e.split(/; */)){if(!o)continue;let e=o.indexOf("=");if(-1===e){t.set(o,"true");continue}let[i,r]=[o.slice(0,e),o.slice(e+1)];try{t.set(i,decodeURIComponent(null!=r?r:"true"))}catch{}}return t}function u(e){if(!e)return;let[[t,o],...i]=d(e),{domain:r,expires:a,httponly:s,maxage:n,path:c,samesite:l,secure:p,partitioned:u,priority:g}=Object.fromEntries(i.map(([e,t])=>[e.toLowerCase().replace(/-/g,""),t]));{var y,b,x={name:t,value:decodeURIComponent(o),domain:r,...a&&{expires:new Date(a)},...s&&{httpOnly:!0},..."string"==typeof n&&{maxAge:Number(n)},path:c,...l&&{sameSite:m.includes(y=(y=l).toLowerCase())?y:void 0},...p&&{secure:!0},...g&&{priority:h.includes(b=(b=g).toLowerCase())?b:void 0},...u&&{partitioned:!0}};let e={};for(let t in x)x[t]&&(e[t]=x[t]);return e}}t.exports=((e,t,o)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let n of a(t))s.call(e,n)||void 0===n||i(e,n,{get:()=>t[n],enumerable:!(o=r(t,n))||o.enumerable});return e})(i({},"__esModule",{value:!0}),n);var m=["strict","lax","none"],h=["low","medium","high"],g=class{constructor(e){this._parsed=new Map,this._headers=e;const t=e.get("cookie");if(t)for(const[e,o]of d(t))this._parsed.set(e,{name:e,value:o})}[Symbol.iterator](){return this._parsed[Symbol.iterator]()}get size(){return this._parsed.size}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let o=Array.from(this._parsed);if(!e.length)return o.map(([e,t])=>t);let i="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return o.filter(([e])=>e===i).map(([e,t])=>t)}has(e){return this._parsed.has(e)}set(...e){let[t,o]=1===e.length?[e[0].name,e[0].value]:e,i=this._parsed;return i.set(t,{name:t,value:o}),this._headers.set("cookie",Array.from(i).map(([e,t])=>p(t)).join("; ")),this}delete(e){let t=this._parsed,o=Array.isArray(e)?e.map(e=>t.delete(e)):t.delete(e);return this._headers.set("cookie",Array.from(t).map(([e,t])=>p(t)).join("; ")),o}clear(){return this.delete(Array.from(this._parsed.keys())),this}[Symbol.for("edge-runtime.inspect.custom")](){return`RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(e=>`${e.name}=${encodeURIComponent(e.value)}`).join("; ")}},y=class{constructor(e){var t,o,i;this._parsed=new Map,this._headers=e;const r=null!=(i=null!=(o=null==(t=e.getSetCookie)?void 0:t.call(e))?o:e.get("set-cookie"))?i:[];for(const e of Array.isArray(r)?r:function(e){if(!e)return[];var t,o,i,r,a,s=[],n=0;function c(){for(;n<e.length&&/\s/.test(e.charAt(n));)n+=1;return n<e.length}for(;n<e.length;){for(t=n,a=!1;c();)if(","===(o=e.charAt(n))){for(i=n,n+=1,c(),r=n;n<e.length&&"="!==(o=e.charAt(n))&&";"!==o&&","!==o;)n+=1;n<e.length&&"="===e.charAt(n)?(a=!0,n=r,s.push(e.substring(t,i)),t=n):n=i+1}else n+=1;(!a||n>=e.length)&&s.push(e.substring(t,e.length))}return s}(r)){const t=u(e);t&&this._parsed.set(t.name,t)}}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let o=Array.from(this._parsed.values());if(!e.length)return o;let i="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return o.filter(e=>e.name===i)}has(e){return this._parsed.has(e)}set(...e){let[t,o,i]=1===e.length?[e[0].name,e[0].value,e[0]]:e,r=this._parsed;return r.set(t,function(e={name:"",value:""}){return"number"==typeof e.expires&&(e.expires=new Date(e.expires)),e.maxAge&&(e.expires=new Date(Date.now()+1e3*e.maxAge)),(null===e.path||void 0===e.path)&&(e.path="/"),e}({name:t,value:o,...i})),function(e,t){for(let[,o]of(t.delete("set-cookie"),e)){let e=p(o);t.append("set-cookie",e)}}(r,this._headers),this}delete(...e){let[t,o]="string"==typeof e[0]?[e[0]]:[e[0].name,e[0]];return this.set({...o,name:t,value:"",expires:new Date(0)})}[Symbol.for("edge-runtime.inspect.custom")](){return`ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(p).join("; ")}}},677850,e=>e.a(async(t,o)=>{try{let t=await e.y("zod");e.n(t),o()}catch(e){o(e)}},!0),102835,e=>e.a(async(t,o)=>{try{var i=e.i(677850),r=t([i]);[i]=r.then?(await r)():r;let a=i.z.object({id:i.z.string().min(1),alias:i.z.string().min(1).optional(),name:i.z.string().min(1),icon:i.z.string().min(1),color:i.z.string().regex(/^#[0-9A-Fa-f]{6}$/,"Must be a valid hex color (#RRGGBB)"),textIcon:i.z.string().optional(),website:i.z.string().url().optional(),passthroughModels:i.z.boolean().optional(),deprecated:i.z.boolean().optional(),deprecationReason:i.z.string().optional(),hasFree:i.z.boolean().optional(),freeNote:i.z.string().optional(),authHint:i.z.string().optional(),apiHint:i.z.string().optional()}),s=i.z.record(i.z.string(),a);e.s(["validateProviders",0,function(e,t){let o=s.safeParse(e);if(!o.success){let e=o.error.issues.map(e=>` ${e.path.join(".")}: ${e.message}`).join("\n");throw console.error(`[PROVIDER VALIDATION] ${t} has invalid entries:
|
|
2
|
-
${e}`),Error(`Provider validation failed for ${t}`)}}]),o()}catch(e){o(e)}},!1),963219,e=>e.a(async(t,o)=>{try{var i=e.i(102835),r=t([i]);[i]=r.then?(await r)():r;let a={qoder:{id:"qoder",alias:"if",name:"Qoder AI",icon:"water_drop",color:"#6366F1"},qwen:{id:"qwen",alias:"qw",name:"Qwen Code",icon:"psychology",color:"#10B981"},"gemini-cli":{id:"gemini-cli",alias:"gemini-cli",name:"Gemini CLI",icon:"terminal",color:"#4285F4",deprecated:!0,deprecationReason:"Google restricts third-party OAuth usage for Gemini CLI (Mar 2026). Pro models require paid plans. Use 'gemini' (API key) provider instead."},kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"}},s={claude:{id:"claude",alias:"cc",name:"Claude Code",icon:"smart_toy",color:"#D97757"},antigravity:{id:"antigravity",alias:void 0,name:"Antigravity",icon:"rocket_launch",color:"#F59E0B"},codex:{id:"codex",alias:"cx",name:"OpenAI Codex",icon:"code",color:"#3B82F6"},github:{id:"github",alias:"gh",name:"GitHub Copilot",icon:"code",color:"#333333"},cursor:{id:"cursor",alias:"cu",name:"Cursor IDE",icon:"edit_note",color:"#00D4AA"},"kimi-coding":{id:"kimi-coding",alias:"kmc",name:"Kimi Coding",icon:"psychology",color:"#1E40AF",textIcon:"KC"},kilocode:{id:"kilocode",alias:"kc",name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC"},cline:{id:"cline",alias:"cl",name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL"}},n={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",passthroughModels:!0,website:"https://openrouter.ai"},glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},"bailian-coding-plan":{id:"bailian-coding-plan",alias:"bcp",name:"Alibaba Coding Plan",icon:"code",color:"#FF6A00",textIcon:"BCP",website:"https://www.alibabacloud.com/help/en/model-studio/coding-plan"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},"kimi-coding-apikey":{id:"kimi-coding-apikey",alias:"kmca",name:"Kimi Coding (API Key)",icon:"psychology",color:"#1E40AF",textIcon:"KC",website:"https://kimi.com"},minimax:{id:"minimax",alias:"minimax",name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com"},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com"},alicode:{id:"alicode",alias:"alicode",name:"Alibaba",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://bailian.console.aliyun.com"},"alicode-intl":{id:"alicode-intl",alias:"alicode-intl",name:"Alibaba Intl",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://modelstudio.console.alibabacloud.com"},openai:{id:"openai",alias:"openai",name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com"},anthropic:{id:"anthropic",alias:"anthropic",name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com"},gemini:{id:"gemini",alias:"gemini",name:"Gemini (Google AI Studio)",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev",hasFree:!0,freeNote:"Free forever: 1,500 req/day for Gemini 2.5 Flash — no credit card, get key at aistudio.google.com"},deepseek:{id:"deepseek",alias:"ds",name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com"},groq:{id:"groq",alias:"groq",name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com",hasFree:!0,freeNote:"Free tier: 30 RPM / 14.4K RPD — no credit card"},blackbox:{id:"blackbox",alias:"bb",name:"Blackbox AI",icon:"view_in_ar",color:"#1A1A2E",textIcon:"BB",website:"https://blackbox.ai"},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai"},mistral:{id:"mistral",alias:"mistral",name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai"},perplexity:{id:"perplexity",alias:"pplx",name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai"},together:{id:"together",alias:"together",name:"Together AI",icon:"group_work",color:"#0F6FFF",textIcon:"TG",website:"https://www.together.ai",hasFree:!0,freeNote:"$25 signup credits + 3 permanently free models: Llama 3.3 70B, Vision, DeepSeek-R1 distill"},fireworks:{id:"fireworks",alias:"fireworks",name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai"},cerebras:{id:"cerebras",alias:"cerebras",name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://inference.cerebras.ai",hasFree:!0,freeNote:"Free: 1M tokens/day, 60K TPM — world's fastest inference"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://build.nvidia.com",hasFree:!0,freeNote:"Free dev access: ~40 RPM, 70+ models (Kimi K2.5, GLM 4.7, DeepSeek V3.2...)"},nebius:{id:"nebius",alias:"nebius",name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com"},siliconflow:{id:"siliconflow",alias:"siliconflow",name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com"},hyperbolic:{id:"hyperbolic",alias:"hyp",name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz"},deepgram:{id:"deepgram",alias:"dg",name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com"},assemblyai:{id:"assemblyai",alias:"aai",name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com"},nanobanana:{id:"nanobanana",alias:"nb",name:"NanoBanana",icon:"image",color:"#FFD700",textIcon:"NB",website:"https://nanobananaapi.ai"},"ollama-cloud":{id:"ollama-cloud",alias:"ollamacloud",name:"Ollama Cloud",icon:"cloud",color:"#58A6FF",textIcon:"OC",website:"https://ollama.com/settings/api-keys"},elevenlabs:{id:"elevenlabs",alias:"el",name:"ElevenLabs",icon:"record_voice_over",color:"#6C47FF",textIcon:"EL",website:"https://elevenlabs.io"},cartesia:{id:"cartesia",alias:"cartesia",name:"Cartesia",icon:"spatial_audio",color:"#FF4F8B",textIcon:"CA",website:"https://cartesia.ai"},playht:{id:"playht",alias:"playht",name:"PlayHT",icon:"play_circle",color:"#00B4D8",textIcon:"PH",website:"https://play.ht"},inworld:{id:"inworld",alias:"inworld",name:"Inworld",icon:"voice_chat",color:"#7B2EF2",textIcon:"IW",website:"https://inworld.ai"},sdwebui:{id:"sdwebui",alias:"sdwebui",name:"SD WebUI",icon:"brush",color:"#FF7043",textIcon:"SD",website:"https://github.com/AUTOMATIC1111/stable-diffusion-webui"},comfyui:{id:"comfyui",alias:"comfyui",name:"ComfyUI",icon:"account_tree",color:"#4CAF50",textIcon:"CF",website:"https://github.com/comfyanonymous/ComfyUI"},huggingface:{id:"huggingface",alias:"hf",name:"HuggingFace",icon:"face",color:"#FFD21E",textIcon:"HF",website:"https://huggingface.co",hasFree:!0,freeNote:"Free Inference API for thousands of models (Whisper, VITS, SDXL…)"},synthetic:{id:"synthetic",alias:"synthetic",name:"Synthetic",icon:"verified_user",color:"#6366F1",textIcon:"SY",website:"https://synthetic.new",passthroughModels:!0},"kilo-gateway":{id:"kilo-gateway",alias:"kg",name:"Kilo Gateway",icon:"hub",color:"#617A91",textIcon:"KG",website:"https://kilo.ai",passthroughModels:!0},vertex:{id:"vertex",alias:"vertex",name:"Vertex AI",icon:"cloud",color:"#4285F4",textIcon:"VA",website:"https://cloud.google.com/vertex-ai",authHint:"Provide Service Account JSON or OAuth access_token"},zai:{id:"zai",alias:"zai",name:"Z.AI",icon:"psychology",color:"#2563EB",textIcon:"ZA",website:"https://open.bigmodel.cn",apiHint:"API key from https://open.bigmodel.cn/usercenter/apikeys"},"perplexity-search":{id:"perplexity-search",alias:"pplx-search",name:"Perplexity Search",icon:"search",color:"#20808D",textIcon:"PS",website:"https://docs.perplexity.ai/guides/search-quickstart",authHint:"Same API key as Perplexity (pplx-...)"},"serper-search":{id:"serper-search",alias:"serper-search",name:"Serper Search",icon:"search",color:"#4285F4",textIcon:"SP",website:"https://serper.dev",authHint:"API key from serper.dev dashboard"},"brave-search":{id:"brave-search",alias:"brave-search",name:"Brave Search",icon:"travel_explore",color:"#FB542B",textIcon:"BR",website:"https://brave.com/search/api",authHint:"Subscription token from Brave Search API dashboard"},"exa-search":{id:"exa-search",alias:"exa-search",name:"Exa Search",icon:"neurology",color:"#1E40AF",textIcon:"EX",website:"https://exa.ai",authHint:"API key from dashboard.exa.ai"},"tavily-search":{id:"tavily-search",alias:"tavily-search",name:"Tavily Search",icon:"manage_search",color:"#5B4FDB",textIcon:"TV",website:"https://tavily.com",authHint:"API key from app.tavily.com (format: tvly-...)"},"opencode-zen":{id:"opencode-zen",alias:"opencode-zen",name:"OpenCode Zen",icon:"opencode",color:"#6366f1",website:"https://opencode.ai/zen"},"opencode-go":{id:"opencode-go",alias:"opencode-go",name:"OpenCode Go",icon:"opencode",color:"#6366f1",website:"https://opencode.ai/zen/go"},alibaba:{id:"alibaba",alias:"ali",name:"Alibaba Cloud (DashScope)",icon:"cloud_queue",color:"#FF6600",textIcon:"AL",website:"https://dashscope-intl.aliyuncs.com",hasFree:!1},longcat:{id:"longcat",alias:"lc",name:"LongCat AI",icon:"auto_awesome",color:"#FF6B9D",textIcon:"LC",website:"https://longcat.chat",hasFree:!0,freeNote:"50M tokens/day (Flash-Lite) + 500K/day (Chat/Thinking) — 100% free while public beta"},pollinations:{id:"pollinations",alias:"pol",name:"Pollinations AI",icon:"local_florist",color:"#4CAF50",textIcon:"PO",website:"https://pollinations.ai",hasFree:!0,freeNote:"No API key needed — access GPT-5, Claude, Gemini, DeepSeek V3, Llama 4 free (1 req/15s)"},puter:{id:"puter",alias:"pu",name:"Puter AI",icon:"cloud_circle",color:"#6366F1",textIcon:"PU",website:"https://puter.com",hasFree:!0,freeNote:"500+ models (GPT-5, Claude Opus 4, Gemini 3 Pro, Grok 4, DeepSeek V3...) — Users pay via free Puter account",passthroughModels:!0,authHint:"Get token at puter.com/dashboard → Copy Auth Token"},"cloudflare-ai":{id:"cloudflare-ai",alias:"cf",name:"Cloudflare Workers AI",icon:"cloud",color:"#F48120",textIcon:"CF",website:"https://developers.cloudflare.com/workers-ai/",hasFree:!0,freeNote:"Free 10K Neurons/day: ~150 LLM responses or 500s Whisper audio — edge inference globally",authHint:"Requires API Token AND Account ID (found at dash.cloudflare.com)"},scaleway:{id:"scaleway",alias:"scw",name:"Scaleway AI",icon:"cloud",color:"#4F0599",textIcon:"SCW",website:"https://www.scaleway.com/en/ai/generative-apis/",hasFree:!0,freeNote:"1M free tokens for new accounts — EU/GDPR compliant (Paris), Qwen3 235B & Llama 70B"},aimlapi:{id:"aimlapi",alias:"aiml",name:"AI/ML API",icon:"hub",color:"#6366F1",textIcon:"AI",website:"https://aimlapi.com",hasFree:!0,freeNote:"$0.025/day free credits — 200+ models (GPT-4o, Claude, Gemini, Llama) via single endpoint",passthroughModels:!0},novita:{id:"novita",alias:"novita",name:"Novita AI",icon:"auto_awesome",color:"#FF4081",textIcon:"NV",website:"https://novita.ai",passthroughModels:!0},piapi:{id:"piapi",alias:"pi",name:"PiAPI",icon:"api",color:"#7C4DFF",textIcon:"PI",website:"https://piapi.ai",passthroughModels:!0},getgoapi:{id:"getgoapi",alias:"ggo",name:"GoAPI",icon:"rocket_launch",color:"#FF6D00",textIcon:"GO",website:"https://api.getgoapi.com",passthroughModels:!0},laozhang:{id:"laozhang",alias:"lz",name:"LaoZhang AI",icon:"hub",color:"#FF1744",textIcon:"LZ",website:"https://api.laozhang.ai",passthroughModels:!0}},c="openai-compatible-",l="anthropic-compatible-",p="anthropic-compatible-cc-",d={...a,...s,...n,cliproxyapi:{id:"cliproxyapi",alias:"cpa",name:"CLIProxyAPI",icon:"proxy",color:"#6366F1",textIcon:"CPA",website:"https://github.com/router-for-me/CLIProxyAPI",defaultPort:8317,healthEndpoint:"/v1/models",managementPrefix:"/v0/management",configDir:"~/.cli-proxy-api",binaryName:"cli-proxy-api",githubRepo:"router-for-me/CLIProxyAPI"}},u=Object.values(d).reduce((e,t)=>(t.alias&&(e[t.alias]=t.id),e),{});Object.values(d).reduce((e,t)=>(e[t.id]=t.alias||t.id,e),{}),(0,i.validateProviders)(a,"FREE_PROVIDERS"),(0,i.validateProviders)(s,"OAUTH_PROVIDERS"),(0,i.validateProviders)(n,"APIKEY_PROVIDERS"),e.s(["AI_PROVIDERS",0,d,"ALIAS_TO_ID",0,u,"ANTHROPIC_COMPATIBLE_PREFIX",0,l,"APIKEY_PROVIDERS",0,n,"CLAUDE_CODE_COMPATIBLE_PREFIX",0,p,"FREE_PROVIDERS",0,a,"OAUTH_PROVIDERS",0,s,"OPENAI_COMPATIBLE_PREFIX",0,c,"USAGE_SUPPORTED_PROVIDERS",0,["antigravity","gemini-cli","kiro","github","codex","claude","kimi-coding","glm"],"getProviderAlias",0,function(e){let t=d[e];return t?.alias||e},"isAnthropicCompatibleProvider",0,function(e){return"string"==typeof e&&e.startsWith(l)},"isClaudeCodeCompatibleProvider",0,function(e){return"string"==typeof e&&e.startsWith(p)},"isOpenAICompatibleProvider",0,function(e){return"string"==typeof e&&e.startsWith(c)}]),o()}catch(e){o(e)}},!1),617325,e=>e.a(async(t,o)=>{try{var i=e.i(878947),r=e.i(963219),a=t([r]);[r]=a.then?(await a)():a,Object.entries(r.AI_PROVIDERS).filter(([,e])=>e.passthroughModels).map(([e])=>e);let s=Object.entries(i.PROVIDER_MODELS).flatMap(([e,t])=>t.map(t=>({provider:e,model:t.id,name:t.name})));e.s(["AI_MODELS",0,s]),o()}catch(e){o(e)}},!1),712943,e=>{"use strict";e.s(["default",0,{name:"omniroute",version:"3.4.7",description:"Smart AI Router with auto fallback — route to FREE & cheap models, zero downtime. Works with Cursor, Cline, Claude Desktop, Codex, and any OpenAI-compatible tool.",type:"module",bin:{omniroute:"bin/omniroute.mjs","omniroute-reset-password":"bin/reset-password.mjs"},files:["bin/","app/","open-sse/mcp-server/","src/shared/contracts/","scripts/postinstall.mjs","scripts/native-binary-compat.mjs","README.md","LICENSE"],workspaces:["open-sse"],engines:{node:">=18.0.0 <24.0.0"},keywords:["ai","router","proxy","openai","claude","anthropic","gemini","fallback","cursor","cline","codex","llm","auto-fallback"],license:"MIT",author:"diegosouzapw",repository:{type:"git",url:"https://github.com/diegosouzapw/OmniRoute"},homepage:"https://omniroute.online",scripts:{dev:"node scripts/run-next.mjs dev",build:"node scripts/build-next-isolated.mjs","build:cli":"node scripts/prepublish.mjs",start:"node scripts/run-next.mjs start",lint:"eslint .","electron:dev":'concurrently "npm run dev" "wait-on http://localhost:20128 && cd electron && npm run dev"',"electron:build":"npm run build && cd electron && npm run build","electron:build:win":"npm run build && cd electron && npm run build:win","electron:build:mac":"npm run build && cd electron && npm run build:mac","electron:build:linux":"npm run build && cd electron && npm run build:linux",test:"node --import tsx/esm --test tests/unit/*.test.mjs","test:unit":"node --import tsx/esm --test tests/unit/*.test.mjs","test:plan3":"node --import tsx/esm --test tests/unit/plan3-p0.test.mjs","test:fixes":"node --import tsx/esm --test tests/unit/fixes-p1.test.mjs","test:security":"node --import tsx/esm --test tests/unit/security-fase01.test.mjs","check:cycles":"node scripts/check-cycles.mjs","check:route-validation:t06":"node scripts/check-route-validation.mjs","check:any-budget:t11":"node scripts/check-t11-any-budget.mjs","check:docs-sync":"node scripts/check-docs-sync.mjs","typecheck:core":"tsc --pretty false -p tsconfig.typecheck-core.json","typecheck:noimplicit:core":"tsc --pretty false -p tsconfig.typecheck-noimplicit-core.json","test:integration":"node --import tsx/esm --test tests/integration/*.test.mjs","test:e2e":"node scripts/run-playwright-tests.mjs test tests/e2e/*.spec.ts","test:protocols:e2e":"node scripts/run-protocol-clients-tests.mjs","test:vitest":"vitest run open-sse/mcp-server/__tests__/*.test.ts open-sse/services/autoCombo/__tests__/*.test.ts","test:ecosystem":"node scripts/run-ecosystem-tests.mjs","test:coverage":"c8 --exclude=tests/** --exclude=**/*.test.* --reporter=text-summary --reporter=html --reporter=json-summary --reporter=lcov --check-coverage --statements 55 --lines 55 --functions 55 --branches 60 node --import tsx/esm --test tests/unit/*.test.mjs","test:coverage:legacy":"c8 --exclude=open-sse --check-coverage --lines 50 --functions 50 --branches 50 node --import tsx/esm --test tests/unit/*.test.mjs","coverage:report":"c8 report --exclude=tests/** --exclude=**/*.test.* --reporter=text --reporter=text-summary --reporter=html --reporter=json-summary --reporter=lcov","coverage:report:legacy":"c8 report --exclude=open-sse --reporter=text --reporter=text-summary","test:all":"npm run test:unit && npm run test:vitest && npm run test:ecosystem && npm run test:e2e",check:"npm run lint && npm run test",prepublishOnly:"npm run build:cli",postinstall:"node scripts/postinstall.mjs",prepare:"husky","system-info":"node scripts/system-info.mjs"},dependencies:{"@lobehub/icons":"^5.0.1","@modelcontextprotocol/sdk":"^1.27.1","@monaco-editor/react":"^4.7.0","@swc/helpers":"0.5.19",bcryptjs:"^3.0.3","better-sqlite3":"^12.6.2",bottleneck:"^2.19.5",dompurify:"^3.3.2",express:"^5.2.1","fetch-socks":"^1.3.2","http-proxy-middleware":"^3.0.5","https-proxy-agent":"^8.0.0",jose:"^6.1.3","js-yaml":"^4.1.0",lowdb:"^7.0.1","monaco-editor":"^0.55.1",next:"^16.0.10","next-intl":"^4.8.3","node-machine-id":"^1.1.12",open:"^11.0.0",ora:"^9.1.0",pino:"^10.3.1","pino-pretty":"^13.1.3",react:"19.2.4","react-dom":"19.2.4",recharts:"^3.7.0",selfsigned:"^5.5.0",tsx:"^4.21.0",undici:"^7.19.2",uuid:"^13.0.0","wreq-js":"^2.0.1",yazl:"^3.3.1",zod:"^4.3.6",zustand:"^5.0.10"},optionalDependencies:{keytar:"^7.9.0"},devDependencies:{"@playwright/test":"^1.58.2","@tailwindcss/postcss":"^4.1.18","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@types/bcryptjs":"^3.0.0","@types/better-sqlite3":"^7.6.13","@types/keytar":"^4.4.0","@types/node":"^25.2.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.0.1",c8:"^11.0.0",concurrently:"^9.2.1","cross-env":"^10.1.0",eslint:"^9.39.2","eslint-config-next":"^16.0.10",husky:"^9.1.7",jsdom:"^29.0.1","lint-staged":"^16.2.7",prettier:"^3.8.1","prop-types":"^15.8.1",tailwindcss:"^4",typescript:"^5.9.3","typescript-eslint":"^8.56.0",vitest:"^4.0.18","wait-on":"^9.0.4"},"lint-staged":{"*.{js,jsx,ts,tsx,mjs}":["prettier --write","eslint --fix --no-error-on-unmatched-pattern"],"*.{json,md,yml,yaml,css}":["prettier --write"]},pnpm:{onlyBuiltDependencies:["@parcel/watcher","@swc/core","better-sqlite3","esbuild","omniroute","sharp"]},overrides:{"lodash-es":"^4.18.1",dompurify:"^3.3.2","path-to-regexp":"^8.4.0",react:"$react","react-dom":"$react-dom"}}])},651948,e=>e.a(async(t,o)=>{try{var i=e.i(712943),r=e.i(963219),a=e.i(617325),s=t([r,a]);[r,a]=s.then?(await s)():s;let n={name:"OmniRoute",description:"AI Gateway for Multi-Provider LLMs",version:i.default.version};e.s(["APP_CONFIG",0,n]),o()}catch(e){o(e)}},!1),949423,e=>e.a(async(t,o)=>{try{var i=e.i(89171);e.i(245272);var r=e.i(385498),a=e.i(548941),s=e.i(651948),n=e.i(963219),c=t([s,n]);async function l(){try{let{getAllCircuitBreakerStatuses:t}=await e.A(970016),{getAllRateLimitStatus:o}=await e.A(134636),{getAllModelLockouts:c}=await e.A(730711),{getInflightCount:l}=await e.A(38026),p=await (0,a.getSettings)(),d=await (0,r.getProviderConnections)(),u=t(),m=o(),h=c(),{getAllHealthStatuses:g}=await e.A(338694),y={version:s.APP_CONFIG.version,nodeVersion:process.version,uptime:process.uptime(),memoryUsage:process.memoryUsage(),pid:process.pid,platform:process.platform},b={};for(let e of u)e.name.startsWith("test-")||e.name.startsWith("test_")||(b[e.name]={state:e.state,failures:e.failureCount||0,lastFailure:e.lastFailureTime});let x=new Set(d.map(e=>e.provider)),v=new Set(d.filter(e=>!1!==e.isActive).map(e=>e.provider));return i.NextResponse.json({status:"healthy",timestamp:new Date().toISOString(),system:y,providerHealth:b,providerSummary:{catalogCount:Object.keys(n.AI_PROVIDERS).length,configuredCount:x.size,activeCount:v.size,monitoredCount:Object.keys(b).length},localProviders:g(),rateLimitStatus:m,lockouts:h,dedup:{inflightRequests:l()},cryptography:{status:process.env.STORAGE_ENCRYPTION_KEY&&process.env.STORAGE_ENCRYPTION_KEY.length>=32?"healthy":"missing_or_invalid",provider:"aes-256-gcm"},setupComplete:p?.setupComplete||!1})}catch(e){return console.error("[API] GET /api/monitoring/health error:",e),i.NextResponse.json({status:"error",error:"Health check failed"},{status:500})}}async function p(){try{let{resetAllCircuitBreakers:t,getAllCircuitBreakerStatuses:o}=await e.A(970016),r=o().length;return t(),console.log(`[API] DELETE /api/monitoring/health — Reset ${r} circuit breakers`),i.NextResponse.json({success:!0,message:`Reset ${r} circuit breaker(s) to healthy state`,resetCount:r})}catch(e){return console.error("[API] DELETE /api/monitoring/health error:",e),i.NextResponse.json({error:"Failed to reset circuit breakers"},{status:500})}}[s,n]=c.then?(await c)():c,e.s(["DELETE",0,p,"GET",0,l]),o()}catch(e){o(e)}},!1),984654,e=>e.a(async(t,o)=>{try{var i=e.i(747909),r=e.i(174017),a=e.i(996250),s=e.i(759756),n=e.i(561916),c=e.i(174677),l=e.i(869741),p=e.i(316795),d=e.i(487718),u=e.i(995169),m=e.i(47587),h=e.i(666012),g=e.i(570101),y=e.i(626937),b=e.i(10372),x=e.i(193695);e.i(820232);var v=e.i(600220),f=e.i(949423),w=t([f]);[f]=w.then?(await w)():w;let A=new i.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/monitoring/health/route",pathname:"/api/monitoring/health",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/monitoring/health/route.ts",nextConfigOutput:"standalone",userland:f,...{}}),{workAsyncStorage:_,workUnitAsyncStorage:k,serverHooks:C}=A;async function I(e,t,o){o.requestMeta&&(0,s.setRequestMeta)(e,o.requestMeta),A.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let i="/api/monitoring/health/route";i=i.replace(/\/index$/,"")||"/";let a=await A.prepare(e,t,{srcPage:i,multiZoneDraftMode:!1});if(!a)return t.statusCode=400,t.end("Bad Request"),null==o.waitUntil||o.waitUntil.call(o,Promise.resolve()),null;let{buildId:f,params:w,nextConfig:I,parsedUrl:_,isDraftMode:k,prerenderManifest:C,routerServerContext:P,isOnDemandRevalidate:R,revalidateOnlyGenerated:F,resolvedPathname:E,clientReferenceManifest:O,serverActionsManifest:j}=a,S=(0,l.normalizeAppPath)(i),D=!!(C.dynamicRoutes[S]||C.routes[E]),N=async()=>((null==P?void 0:P.render404)?await P.render404(e,t,_,!1):t.end("This page could not be found"),null);if(D&&!k){let e=!!C.routes[E],t=C.dynamicRoutes[S];if(t&&!1===t.fallback&&!e){if(I.adapterPath)return await N();throw new x.NoFallbackError}}let M=null;!D||A.isDev||k||(M=E,M="/index"===M?"/":M);let T=!0===A.isDev||!D,q=D&&!T;j&&O&&(0,c.setManifestsSingleton)({page:i,clientReferenceManifest:O,serverActionsManifest:j});let L=e.method||"GET",B=(0,n.getTracer)(),z=B.getActiveScopeSpan(),G=!!(null==P?void 0:P.isWrappedByNextServer),H=!!(0,s.getRequestMeta)(e,"minimalMode"),U=(0,s.getRequestMeta)(e,"incrementalCache")||await A.getIncrementalCache(e,I,C,H);null==U||U.resetRequestCache(),globalThis.__incrementalCache=U;let $={params:w,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!I.experimental.authInterrupts},cacheComponents:!!I.cacheComponents,supportsDynamicResponse:T,incrementalCache:U,cacheLifeProfiles:I.cacheLife,waitUntil:o.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,o,i,r)=>A.onRequestError(e,t,i,r,P)},sharedContext:{buildId:f}},K=new p.NodeNextRequest(e),V=new p.NodeNextResponse(t),W=d.NextRequestAdapter.fromNodeNextRequest(K,(0,d.signalFromNodeResponse)(t));try{let a,s=async e=>A.handle(W,$).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let o=B.getRootSpanAttributes();if(!o)return;if(o.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${o.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=o.get("next.route");if(r){let t=`${L} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),a&&a!==e&&(a.setAttribute("http.route",r),a.updateName(t))}else e.updateName(`${L} ${i}`)}),c=async a=>{var n,c;let l=async({previousCacheEntry:r})=>{try{if(!H&&R&&F&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await s(a);e.fetchMetrics=$.renderOpts.fetchMetrics;let n=$.renderOpts.pendingWaitUntil;n&&o.waitUntil&&(o.waitUntil(n),n=void 0);let c=$.renderOpts.collectedTags;if(!D)return await (0,h.sendResponse)(K,V,i,$.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(i.headers);c&&(t[b.NEXT_CACHE_TAGS_HEADER]=c),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let o=void 0!==$.renderOpts.collectedRevalidate&&!($.renderOpts.collectedRevalidate>=b.INFINITE_CACHE)&&$.renderOpts.collectedRevalidate,r=void 0===$.renderOpts.collectedExpire||$.renderOpts.collectedExpire>=b.INFINITE_CACHE?void 0:$.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:o,expire:r}}}}catch(t){throw(null==r?void 0:r.isStale)&&await A.onRequestError(e,t,{routerKind:"App Router",routePath:i,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:R})},!1,P),t}},p=await A.handleResponse({req:e,nextConfig:I,cacheKey:M,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:R,revalidateOnlyGenerated:F,responseGenerator:l,waitUntil:o.waitUntil,isMinimalMode:H});if(!D)return null;if((null==p||null==(n=p.value)?void 0:n.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==p||null==(c=p.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});H||t.setHeader("x-nextjs-cache",R?"REVALIDATED":p.isMiss?"MISS":p.isStale?"STALE":"HIT"),k&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,g.fromNodeOutgoingHttpHeaders)(p.value.headers);return H&&D||d.delete(b.NEXT_CACHE_TAGS_HEADER),!p.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,y.getCacheControlHeader)(p.cacheControl)),await (0,h.sendResponse)(K,V,new Response(p.value.body,{headers:d,status:p.value.status||200})),null};G&&z?await c(z):(a=B.getActiveScopeSpan(),await B.withPropagatedContext(e.headers,()=>B.trace(u.BaseServerSpan.handleRequest,{spanName:`${L} ${i}`,kind:n.SpanKind.SERVER,attributes:{"http.method":L,"http.target":e.url}},c),void 0,!G))}catch(t){if(t instanceof x.NoFallbackError||await A.onRequestError(e,t,{routerKind:"App Router",routePath:S,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:R})},!1,P),D)throw t;return await (0,h.sendResponse)(K,V,new Response(null,{status:500})),null}}e.s(["handler",0,I,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:_,workUnitAsyncStorage:k})},"routeModule",0,A,"serverHooks",0,C,"workAsyncStorage",0,_,"workUnitAsyncStorage",0,k]),o()}catch(e){o(e)}},!1),606102,e=>{e.v(e=>Promise.resolve().then(()=>e(548941)))},789543,e=>{e.v(e=>Promise.resolve().then(()=>e(385498)))},579042,e=>{e.v(t=>Promise.all(["server/chunks/src_shared_utils_apiKey_ts_12~h.oz._.js"].map(t=>e.l(t))).then(()=>t(65448)))},49794,e=>{e.v(t=>Promise.all(["server/chunks/src_shared_constants_pricing_ts_0hk12it._.js"].map(t=>e.l(t))).then(()=>t(404503)))},386305,e=>{e.v(e=>Promise.resolve().then(()=>e(878947)))},970016,e=>{e.v(t=>Promise.all(["server/chunks/src_0f_le~m._.js"].map(t=>e.l(t))).then(()=>t(260222)))},134636,e=>{e.v(t=>Promise.all(["server/chunks/_01zmant._.js","server/chunks/open-sse_services_tokenRefresh_ts_02a7bpg._.js","server/chunks/open-sse_executors_00c59i8._.js","server/chunks/_13z4e_s._.js","server/chunks/_0nj4-b3._.js","server/chunks/open-sse_0dawtxk._.js"].map(t=>e.l(t))).then(()=>t(20870)))},730711,e=>{e.v(t=>Promise.all(["server/chunks/_0g5otws._.js"].map(t=>e.l(t))).then(()=>t(441637)))},38026,e=>{e.v(t=>Promise.all(["server/chunks/open-sse_services_requestDedup_ts_0mk6k0w._.js"].map(t=>e.l(t))).then(()=>t(951700)))},338694,e=>{e.v(t=>Promise.all(["server/chunks/src_lib_localHealthCheck_ts_016oyu2._.js"].map(t=>e.l(t))).then(()=>t(181666)))}];
|
|
2
|
+
${e}`),Error(`Provider validation failed for ${t}`)}}]),o()}catch(e){o(e)}},!1),963219,e=>e.a(async(t,o)=>{try{var i=e.i(102835),r=t([i]);[i]=r.then?(await r)():r;let a={qoder:{id:"qoder",alias:"if",name:"Qoder AI",icon:"water_drop",color:"#6366F1"},qwen:{id:"qwen",alias:"qw",name:"Qwen Code",icon:"psychology",color:"#10B981"},"gemini-cli":{id:"gemini-cli",alias:"gemini-cli",name:"Gemini CLI",icon:"terminal",color:"#4285F4",deprecated:!0,deprecationReason:"Google restricts third-party OAuth usage for Gemini CLI (Mar 2026). Pro models require paid plans. Use 'gemini' (API key) provider instead."},kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"}},s={claude:{id:"claude",alias:"cc",name:"Claude Code",icon:"smart_toy",color:"#D97757"},antigravity:{id:"antigravity",alias:void 0,name:"Antigravity",icon:"rocket_launch",color:"#F59E0B"},codex:{id:"codex",alias:"cx",name:"OpenAI Codex",icon:"code",color:"#3B82F6"},github:{id:"github",alias:"gh",name:"GitHub Copilot",icon:"code",color:"#333333"},cursor:{id:"cursor",alias:"cu",name:"Cursor IDE",icon:"edit_note",color:"#00D4AA"},"kimi-coding":{id:"kimi-coding",alias:"kmc",name:"Kimi Coding",icon:"psychology",color:"#1E40AF",textIcon:"KC"},kilocode:{id:"kilocode",alias:"kc",name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC"},cline:{id:"cline",alias:"cl",name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL"}},n={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",passthroughModels:!0,website:"https://openrouter.ai"},glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},"bailian-coding-plan":{id:"bailian-coding-plan",alias:"bcp",name:"Alibaba Coding Plan",icon:"code",color:"#FF6A00",textIcon:"BCP",website:"https://www.alibabacloud.com/help/en/model-studio/coding-plan"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},"kimi-coding-apikey":{id:"kimi-coding-apikey",alias:"kmca",name:"Kimi Coding (API Key)",icon:"psychology",color:"#1E40AF",textIcon:"KC",website:"https://kimi.com"},minimax:{id:"minimax",alias:"minimax",name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com"},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com"},alicode:{id:"alicode",alias:"alicode",name:"Alibaba",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://bailian.console.aliyun.com"},"alicode-intl":{id:"alicode-intl",alias:"alicode-intl",name:"Alibaba Intl",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://modelstudio.console.alibabacloud.com"},openai:{id:"openai",alias:"openai",name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com"},anthropic:{id:"anthropic",alias:"anthropic",name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com"},gemini:{id:"gemini",alias:"gemini",name:"Gemini (Google AI Studio)",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev",hasFree:!0,freeNote:"Free forever: 1,500 req/day for Gemini 2.5 Flash — no credit card, get key at aistudio.google.com"},deepseek:{id:"deepseek",alias:"ds",name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com"},groq:{id:"groq",alias:"groq",name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com",hasFree:!0,freeNote:"Free tier: 30 RPM / 14.4K RPD — no credit card"},blackbox:{id:"blackbox",alias:"bb",name:"Blackbox AI",icon:"view_in_ar",color:"#1A1A2E",textIcon:"BB",website:"https://blackbox.ai"},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai"},mistral:{id:"mistral",alias:"mistral",name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai"},perplexity:{id:"perplexity",alias:"pplx",name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai"},together:{id:"together",alias:"together",name:"Together AI",icon:"group_work",color:"#0F6FFF",textIcon:"TG",website:"https://www.together.ai",hasFree:!0,freeNote:"$25 signup credits + 3 permanently free models: Llama 3.3 70B, Vision, DeepSeek-R1 distill"},fireworks:{id:"fireworks",alias:"fireworks",name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai"},cerebras:{id:"cerebras",alias:"cerebras",name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://inference.cerebras.ai",hasFree:!0,freeNote:"Free: 1M tokens/day, 60K TPM — world's fastest inference"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://build.nvidia.com",hasFree:!0,freeNote:"Free dev access: ~40 RPM, 70+ models (Kimi K2.5, GLM 4.7, DeepSeek V3.2...)"},nebius:{id:"nebius",alias:"nebius",name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com"},siliconflow:{id:"siliconflow",alias:"siliconflow",name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com"},hyperbolic:{id:"hyperbolic",alias:"hyp",name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz"},deepgram:{id:"deepgram",alias:"dg",name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com"},assemblyai:{id:"assemblyai",alias:"aai",name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com"},nanobanana:{id:"nanobanana",alias:"nb",name:"NanoBanana",icon:"image",color:"#FFD700",textIcon:"NB",website:"https://nanobananaapi.ai"},"ollama-cloud":{id:"ollama-cloud",alias:"ollamacloud",name:"Ollama Cloud",icon:"cloud",color:"#58A6FF",textIcon:"OC",website:"https://ollama.com/settings/api-keys"},elevenlabs:{id:"elevenlabs",alias:"el",name:"ElevenLabs",icon:"record_voice_over",color:"#6C47FF",textIcon:"EL",website:"https://elevenlabs.io"},cartesia:{id:"cartesia",alias:"cartesia",name:"Cartesia",icon:"spatial_audio",color:"#FF4F8B",textIcon:"CA",website:"https://cartesia.ai"},playht:{id:"playht",alias:"playht",name:"PlayHT",icon:"play_circle",color:"#00B4D8",textIcon:"PH",website:"https://play.ht"},inworld:{id:"inworld",alias:"inworld",name:"Inworld",icon:"voice_chat",color:"#7B2EF2",textIcon:"IW",website:"https://inworld.ai"},sdwebui:{id:"sdwebui",alias:"sdwebui",name:"SD WebUI",icon:"brush",color:"#FF7043",textIcon:"SD",website:"https://github.com/AUTOMATIC1111/stable-diffusion-webui"},comfyui:{id:"comfyui",alias:"comfyui",name:"ComfyUI",icon:"account_tree",color:"#4CAF50",textIcon:"CF",website:"https://github.com/comfyanonymous/ComfyUI"},huggingface:{id:"huggingface",alias:"hf",name:"HuggingFace",icon:"face",color:"#FFD21E",textIcon:"HF",website:"https://huggingface.co",hasFree:!0,freeNote:"Free Inference API for thousands of models (Whisper, VITS, SDXL…)"},synthetic:{id:"synthetic",alias:"synthetic",name:"Synthetic",icon:"verified_user",color:"#6366F1",textIcon:"SY",website:"https://synthetic.new",passthroughModels:!0},"kilo-gateway":{id:"kilo-gateway",alias:"kg",name:"Kilo Gateway",icon:"hub",color:"#617A91",textIcon:"KG",website:"https://kilo.ai",passthroughModels:!0},vertex:{id:"vertex",alias:"vertex",name:"Vertex AI",icon:"cloud",color:"#4285F4",textIcon:"VA",website:"https://cloud.google.com/vertex-ai",authHint:"Provide Service Account JSON or OAuth access_token"},zai:{id:"zai",alias:"zai",name:"Z.AI",icon:"psychology",color:"#2563EB",textIcon:"ZA",website:"https://open.bigmodel.cn",apiHint:"API key from https://open.bigmodel.cn/usercenter/apikeys"},"perplexity-search":{id:"perplexity-search",alias:"pplx-search",name:"Perplexity Search",icon:"search",color:"#20808D",textIcon:"PS",website:"https://docs.perplexity.ai/guides/search-quickstart",authHint:"Same API key as Perplexity (pplx-...)"},"serper-search":{id:"serper-search",alias:"serper-search",name:"Serper Search",icon:"search",color:"#4285F4",textIcon:"SP",website:"https://serper.dev",authHint:"API key from serper.dev dashboard"},"brave-search":{id:"brave-search",alias:"brave-search",name:"Brave Search",icon:"travel_explore",color:"#FB542B",textIcon:"BR",website:"https://brave.com/search/api",authHint:"Subscription token from Brave Search API dashboard"},"exa-search":{id:"exa-search",alias:"exa-search",name:"Exa Search",icon:"neurology",color:"#1E40AF",textIcon:"EX",website:"https://exa.ai",authHint:"API key from dashboard.exa.ai"},"tavily-search":{id:"tavily-search",alias:"tavily-search",name:"Tavily Search",icon:"manage_search",color:"#5B4FDB",textIcon:"TV",website:"https://tavily.com",authHint:"API key from app.tavily.com (format: tvly-...)"},"opencode-zen":{id:"opencode-zen",alias:"opencode-zen",name:"OpenCode Zen",icon:"opencode",color:"#6366f1",website:"https://opencode.ai/zen"},"opencode-go":{id:"opencode-go",alias:"opencode-go",name:"OpenCode Go",icon:"opencode",color:"#6366f1",website:"https://opencode.ai/zen/go"},alibaba:{id:"alibaba",alias:"ali",name:"Alibaba Cloud (DashScope)",icon:"cloud_queue",color:"#FF6600",textIcon:"AL",website:"https://dashscope-intl.aliyuncs.com",hasFree:!1},longcat:{id:"longcat",alias:"lc",name:"LongCat AI",icon:"auto_awesome",color:"#FF6B9D",textIcon:"LC",website:"https://longcat.chat",hasFree:!0,freeNote:"50M tokens/day (Flash-Lite) + 500K/day (Chat/Thinking) — 100% free while public beta"},pollinations:{id:"pollinations",alias:"pol",name:"Pollinations AI",icon:"local_florist",color:"#4CAF50",textIcon:"PO",website:"https://pollinations.ai",hasFree:!0,freeNote:"No API key needed — access GPT-5, Claude, Gemini, DeepSeek V3, Llama 4 free (1 req/15s)"},puter:{id:"puter",alias:"pu",name:"Puter AI",icon:"cloud_circle",color:"#6366F1",textIcon:"PU",website:"https://puter.com",hasFree:!0,freeNote:"500+ models (GPT-5, Claude Opus 4, Gemini 3 Pro, Grok 4, DeepSeek V3...) — Users pay via free Puter account",passthroughModels:!0,authHint:"Get token at puter.com/dashboard → Copy Auth Token"},"cloudflare-ai":{id:"cloudflare-ai",alias:"cf",name:"Cloudflare Workers AI",icon:"cloud",color:"#F48120",textIcon:"CF",website:"https://developers.cloudflare.com/workers-ai/",hasFree:!0,freeNote:"Free 10K Neurons/day: ~150 LLM responses or 500s Whisper audio — edge inference globally",authHint:"Requires API Token AND Account ID (found at dash.cloudflare.com)"},scaleway:{id:"scaleway",alias:"scw",name:"Scaleway AI",icon:"cloud",color:"#4F0599",textIcon:"SCW",website:"https://www.scaleway.com/en/ai/generative-apis/",hasFree:!0,freeNote:"1M free tokens for new accounts — EU/GDPR compliant (Paris), Qwen3 235B & Llama 70B"},aimlapi:{id:"aimlapi",alias:"aiml",name:"AI/ML API",icon:"hub",color:"#6366F1",textIcon:"AI",website:"https://aimlapi.com",hasFree:!0,freeNote:"$0.025/day free credits — 200+ models (GPT-4o, Claude, Gemini, Llama) via single endpoint",passthroughModels:!0},novita:{id:"novita",alias:"novita",name:"Novita AI",icon:"auto_awesome",color:"#FF4081",textIcon:"NV",website:"https://novita.ai",passthroughModels:!0},piapi:{id:"piapi",alias:"pi",name:"PiAPI",icon:"api",color:"#7C4DFF",textIcon:"PI",website:"https://piapi.ai",passthroughModels:!0},getgoapi:{id:"getgoapi",alias:"ggo",name:"GoAPI",icon:"rocket_launch",color:"#FF6D00",textIcon:"GO",website:"https://api.getgoapi.com",passthroughModels:!0},laozhang:{id:"laozhang",alias:"lz",name:"LaoZhang AI",icon:"hub",color:"#FF1744",textIcon:"LZ",website:"https://api.laozhang.ai",passthroughModels:!0}},c="openai-compatible-",l="anthropic-compatible-",p="anthropic-compatible-cc-",d={...a,...s,...n,cliproxyapi:{id:"cliproxyapi",alias:"cpa",name:"CLIProxyAPI",icon:"proxy",color:"#6366F1",textIcon:"CPA",website:"https://github.com/router-for-me/CLIProxyAPI",defaultPort:8317,healthEndpoint:"/v1/models",managementPrefix:"/v0/management",configDir:"~/.cli-proxy-api",binaryName:"cli-proxy-api",githubRepo:"router-for-me/CLIProxyAPI"}},u=Object.values(d).reduce((e,t)=>(t.alias&&(e[t.alias]=t.id),e),{});Object.values(d).reduce((e,t)=>(e[t.id]=t.alias||t.id,e),{}),(0,i.validateProviders)(a,"FREE_PROVIDERS"),(0,i.validateProviders)(s,"OAUTH_PROVIDERS"),(0,i.validateProviders)(n,"APIKEY_PROVIDERS"),e.s(["AI_PROVIDERS",0,d,"ALIAS_TO_ID",0,u,"ANTHROPIC_COMPATIBLE_PREFIX",0,l,"APIKEY_PROVIDERS",0,n,"CLAUDE_CODE_COMPATIBLE_PREFIX",0,p,"FREE_PROVIDERS",0,a,"OAUTH_PROVIDERS",0,s,"OPENAI_COMPATIBLE_PREFIX",0,c,"USAGE_SUPPORTED_PROVIDERS",0,["antigravity","gemini-cli","kiro","github","codex","claude","kimi-coding","glm"],"getProviderAlias",0,function(e){let t=d[e];return t?.alias||e},"isAnthropicCompatibleProvider",0,function(e){return"string"==typeof e&&e.startsWith(l)},"isClaudeCodeCompatibleProvider",0,function(e){return"string"==typeof e&&e.startsWith(p)},"isOpenAICompatibleProvider",0,function(e){return"string"==typeof e&&e.startsWith(c)}]),o()}catch(e){o(e)}},!1),617325,e=>e.a(async(t,o)=>{try{var i=e.i(878947),r=e.i(963219),a=t([r]);[r]=a.then?(await a)():a,Object.entries(r.AI_PROVIDERS).filter(([,e])=>e.passthroughModels).map(([e])=>e);let s=Object.entries(i.PROVIDER_MODELS).flatMap(([e,t])=>t.map(t=>({provider:e,model:t.id,name:t.name})));e.s(["AI_MODELS",0,s]),o()}catch(e){o(e)}},!1),712943,e=>{"use strict";e.s(["default",0,{name:"omniroute",version:"3.4.8",description:"Smart AI Router with auto fallback — route to FREE & cheap models, zero downtime. Works with Cursor, Cline, Claude Desktop, Codex, and any OpenAI-compatible tool.",type:"module",bin:{omniroute:"bin/omniroute.mjs","omniroute-reset-password":"bin/reset-password.mjs"},files:["bin/","app/","open-sse/mcp-server/","src/shared/contracts/","scripts/postinstall.mjs","scripts/native-binary-compat.mjs","README.md","LICENSE"],workspaces:["open-sse"],engines:{node:">=18.0.0 <24.0.0"},keywords:["ai","router","proxy","openai","claude","anthropic","gemini","fallback","cursor","cline","codex","llm","auto-fallback"],license:"MIT",author:"diegosouzapw",repository:{type:"git",url:"https://github.com/diegosouzapw/OmniRoute"},homepage:"https://omniroute.online",scripts:{dev:"node scripts/run-next.mjs dev",build:"node scripts/build-next-isolated.mjs","build:cli":"node scripts/prepublish.mjs",start:"node scripts/run-next.mjs start",lint:"eslint .","electron:dev":'concurrently "npm run dev" "wait-on http://localhost:20128 && cd electron && npm run dev"',"electron:build":"npm run build && cd electron && npm run build","electron:build:win":"npm run build && cd electron && npm run build:win","electron:build:mac":"npm run build && cd electron && npm run build:mac","electron:build:linux":"npm run build && cd electron && npm run build:linux",test:"node --import tsx/esm --test tests/unit/*.test.mjs","test:unit":"node --import tsx/esm --test tests/unit/*.test.mjs","test:plan3":"node --import tsx/esm --test tests/unit/plan3-p0.test.mjs","test:fixes":"node --import tsx/esm --test tests/unit/fixes-p1.test.mjs","test:security":"node --import tsx/esm --test tests/unit/security-fase01.test.mjs","check:cycles":"node scripts/check-cycles.mjs","check:route-validation:t06":"node scripts/check-route-validation.mjs","check:any-budget:t11":"node scripts/check-t11-any-budget.mjs","check:docs-sync":"node scripts/check-docs-sync.mjs","typecheck:core":"tsc --pretty false -p tsconfig.typecheck-core.json","typecheck:noimplicit:core":"tsc --pretty false -p tsconfig.typecheck-noimplicit-core.json","test:integration":"node --import tsx/esm --test tests/integration/*.test.mjs","test:e2e":"node scripts/run-playwright-tests.mjs test tests/e2e/*.spec.ts","test:protocols:e2e":"node scripts/run-protocol-clients-tests.mjs","test:vitest":"vitest run open-sse/mcp-server/__tests__/*.test.ts open-sse/services/autoCombo/__tests__/*.test.ts","test:ecosystem":"node scripts/run-ecosystem-tests.mjs","test:coverage":"c8 --exclude=tests/** --exclude=**/*.test.* --reporter=text-summary --reporter=html --reporter=json-summary --reporter=lcov --check-coverage --statements 55 --lines 55 --functions 55 --branches 60 node --import tsx/esm --test tests/unit/*.test.mjs","test:coverage:legacy":"c8 --exclude=open-sse --check-coverage --lines 50 --functions 50 --branches 50 node --import tsx/esm --test tests/unit/*.test.mjs","coverage:report":"c8 report --exclude=tests/** --exclude=**/*.test.* --reporter=text --reporter=text-summary --reporter=html --reporter=json-summary --reporter=lcov","coverage:report:legacy":"c8 report --exclude=open-sse --reporter=text --reporter=text-summary","test:all":"npm run test:unit && npm run test:vitest && npm run test:ecosystem && npm run test:e2e",check:"npm run lint && npm run test",prepublishOnly:"npm run build:cli",postinstall:"node scripts/postinstall.mjs",prepare:"husky","system-info":"node scripts/system-info.mjs"},dependencies:{"@lobehub/icons":"^5.0.1","@modelcontextprotocol/sdk":"^1.27.1","@monaco-editor/react":"^4.7.0","@swc/helpers":"0.5.19",bcryptjs:"^3.0.3","better-sqlite3":"^12.6.2",bottleneck:"^2.19.5",dompurify:"^3.3.2",express:"^5.2.1","fetch-socks":"^1.3.2","http-proxy-middleware":"^3.0.5","https-proxy-agent":"^8.0.0",jose:"^6.1.3","js-yaml":"^4.1.0",lowdb:"^7.0.1","monaco-editor":"^0.55.1",next:"^16.0.10","next-intl":"^4.8.3","node-machine-id":"^1.1.12",open:"^11.0.0",ora:"^9.1.0",pino:"^10.3.1","pino-pretty":"^13.1.3",react:"19.2.4","react-dom":"19.2.4",recharts:"^3.7.0",selfsigned:"^5.5.0",tsx:"^4.21.0",undici:"^7.19.2",uuid:"^13.0.0","wreq-js":"^2.0.1",yazl:"^3.3.1",zod:"^4.3.6",zustand:"^5.0.10"},optionalDependencies:{keytar:"^7.9.0"},devDependencies:{"@playwright/test":"^1.58.2","@tailwindcss/postcss":"^4.1.18","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@types/bcryptjs":"^3.0.0","@types/better-sqlite3":"^7.6.13","@types/keytar":"^4.4.0","@types/node":"^25.2.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.0.1",c8:"^11.0.0",concurrently:"^9.2.1","cross-env":"^10.1.0",eslint:"^9.39.2","eslint-config-next":"^16.0.10",husky:"^9.1.7",jsdom:"^29.0.1","lint-staged":"^16.2.7",prettier:"^3.8.1","prop-types":"^15.8.1",tailwindcss:"^4",typescript:"^5.9.3","typescript-eslint":"^8.56.0",vitest:"^4.0.18","wait-on":"^9.0.4"},"lint-staged":{"*.{js,jsx,ts,tsx,mjs}":["prettier --write","eslint --fix --no-error-on-unmatched-pattern"],"*.{json,md,yml,yaml,css}":["prettier --write"]},pnpm:{onlyBuiltDependencies:["@parcel/watcher","@swc/core","better-sqlite3","esbuild","omniroute","sharp"]},overrides:{"lodash-es":"^4.18.1",dompurify:"^3.3.2","path-to-regexp":"^8.4.0",react:"$react","react-dom":"$react-dom"}}])},651948,e=>e.a(async(t,o)=>{try{var i=e.i(712943),r=e.i(963219),a=e.i(617325),s=t([r,a]);[r,a]=s.then?(await s)():s;let n={name:"OmniRoute",description:"AI Gateway for Multi-Provider LLMs",version:i.default.version};e.s(["APP_CONFIG",0,n]),o()}catch(e){o(e)}},!1),949423,e=>e.a(async(t,o)=>{try{var i=e.i(89171);e.i(245272);var r=e.i(385498),a=e.i(548941),s=e.i(651948),n=e.i(963219),c=t([s,n]);async function l(){try{let{getAllCircuitBreakerStatuses:t}=await e.A(970016),{getAllRateLimitStatus:o}=await e.A(134636),{getAllModelLockouts:c}=await e.A(730711),{getInflightCount:l}=await e.A(38026),p=await (0,a.getSettings)(),d=await (0,r.getProviderConnections)(),u=t(),m=o(),h=c(),{getAllHealthStatuses:g}=await e.A(338694),y={version:s.APP_CONFIG.version,nodeVersion:process.version,uptime:process.uptime(),memoryUsage:process.memoryUsage(),pid:process.pid,platform:process.platform},b={};for(let e of u)e.name.startsWith("test-")||e.name.startsWith("test_")||(b[e.name]={state:e.state,failures:e.failureCount||0,lastFailure:e.lastFailureTime});let x=new Set(d.map(e=>e.provider)),v=new Set(d.filter(e=>!1!==e.isActive).map(e=>e.provider));return i.NextResponse.json({status:"healthy",timestamp:new Date().toISOString(),system:y,providerHealth:b,providerSummary:{catalogCount:Object.keys(n.AI_PROVIDERS).length,configuredCount:x.size,activeCount:v.size,monitoredCount:Object.keys(b).length},localProviders:g(),rateLimitStatus:m,lockouts:h,dedup:{inflightRequests:l()},cryptography:{status:process.env.STORAGE_ENCRYPTION_KEY&&process.env.STORAGE_ENCRYPTION_KEY.length>=32?"healthy":"missing_or_invalid",provider:"aes-256-gcm"},setupComplete:p?.setupComplete||!1})}catch(e){return console.error("[API] GET /api/monitoring/health error:",e),i.NextResponse.json({status:"error",error:"Health check failed"},{status:500})}}async function p(){try{let{resetAllCircuitBreakers:t,getAllCircuitBreakerStatuses:o}=await e.A(970016),r=o().length;return t(),console.log(`[API] DELETE /api/monitoring/health — Reset ${r} circuit breakers`),i.NextResponse.json({success:!0,message:`Reset ${r} circuit breaker(s) to healthy state`,resetCount:r})}catch(e){return console.error("[API] DELETE /api/monitoring/health error:",e),i.NextResponse.json({error:"Failed to reset circuit breakers"},{status:500})}}[s,n]=c.then?(await c)():c,e.s(["DELETE",0,p,"GET",0,l]),o()}catch(e){o(e)}},!1),984654,e=>e.a(async(t,o)=>{try{var i=e.i(747909),r=e.i(174017),a=e.i(996250),s=e.i(759756),n=e.i(561916),c=e.i(174677),l=e.i(869741),p=e.i(316795),d=e.i(487718),u=e.i(995169),m=e.i(47587),h=e.i(666012),g=e.i(570101),y=e.i(626937),b=e.i(10372),x=e.i(193695);e.i(820232);var v=e.i(600220),f=e.i(949423),w=t([f]);[f]=w.then?(await w)():w;let A=new i.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/monitoring/health/route",pathname:"/api/monitoring/health",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/monitoring/health/route.ts",nextConfigOutput:"standalone",userland:f,...{}}),{workAsyncStorage:_,workUnitAsyncStorage:k,serverHooks:C}=A;async function I(e,t,o){o.requestMeta&&(0,s.setRequestMeta)(e,o.requestMeta),A.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let i="/api/monitoring/health/route";i=i.replace(/\/index$/,"")||"/";let a=await A.prepare(e,t,{srcPage:i,multiZoneDraftMode:!1});if(!a)return t.statusCode=400,t.end("Bad Request"),null==o.waitUntil||o.waitUntil.call(o,Promise.resolve()),null;let{buildId:f,params:w,nextConfig:I,parsedUrl:_,isDraftMode:k,prerenderManifest:C,routerServerContext:P,isOnDemandRevalidate:R,revalidateOnlyGenerated:F,resolvedPathname:E,clientReferenceManifest:O,serverActionsManifest:j}=a,S=(0,l.normalizeAppPath)(i),D=!!(C.dynamicRoutes[S]||C.routes[E]),N=async()=>((null==P?void 0:P.render404)?await P.render404(e,t,_,!1):t.end("This page could not be found"),null);if(D&&!k){let e=!!C.routes[E],t=C.dynamicRoutes[S];if(t&&!1===t.fallback&&!e){if(I.adapterPath)return await N();throw new x.NoFallbackError}}let M=null;!D||A.isDev||k||(M=E,M="/index"===M?"/":M);let T=!0===A.isDev||!D,q=D&&!T;j&&O&&(0,c.setManifestsSingleton)({page:i,clientReferenceManifest:O,serverActionsManifest:j});let L=e.method||"GET",B=(0,n.getTracer)(),z=B.getActiveScopeSpan(),G=!!(null==P?void 0:P.isWrappedByNextServer),H=!!(0,s.getRequestMeta)(e,"minimalMode"),U=(0,s.getRequestMeta)(e,"incrementalCache")||await A.getIncrementalCache(e,I,C,H);null==U||U.resetRequestCache(),globalThis.__incrementalCache=U;let $={params:w,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!I.experimental.authInterrupts},cacheComponents:!!I.cacheComponents,supportsDynamicResponse:T,incrementalCache:U,cacheLifeProfiles:I.cacheLife,waitUntil:o.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,o,i,r)=>A.onRequestError(e,t,i,r,P)},sharedContext:{buildId:f}},K=new p.NodeNextRequest(e),V=new p.NodeNextResponse(t),W=d.NextRequestAdapter.fromNodeNextRequest(K,(0,d.signalFromNodeResponse)(t));try{let a,s=async e=>A.handle(W,$).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let o=B.getRootSpanAttributes();if(!o)return;if(o.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${o.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=o.get("next.route");if(r){let t=`${L} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),a&&a!==e&&(a.setAttribute("http.route",r),a.updateName(t))}else e.updateName(`${L} ${i}`)}),c=async a=>{var n,c;let l=async({previousCacheEntry:r})=>{try{if(!H&&R&&F&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await s(a);e.fetchMetrics=$.renderOpts.fetchMetrics;let n=$.renderOpts.pendingWaitUntil;n&&o.waitUntil&&(o.waitUntil(n),n=void 0);let c=$.renderOpts.collectedTags;if(!D)return await (0,h.sendResponse)(K,V,i,$.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(i.headers);c&&(t[b.NEXT_CACHE_TAGS_HEADER]=c),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let o=void 0!==$.renderOpts.collectedRevalidate&&!($.renderOpts.collectedRevalidate>=b.INFINITE_CACHE)&&$.renderOpts.collectedRevalidate,r=void 0===$.renderOpts.collectedExpire||$.renderOpts.collectedExpire>=b.INFINITE_CACHE?void 0:$.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:o,expire:r}}}}catch(t){throw(null==r?void 0:r.isStale)&&await A.onRequestError(e,t,{routerKind:"App Router",routePath:i,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:R})},!1,P),t}},p=await A.handleResponse({req:e,nextConfig:I,cacheKey:M,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:R,revalidateOnlyGenerated:F,responseGenerator:l,waitUntil:o.waitUntil,isMinimalMode:H});if(!D)return null;if((null==p||null==(n=p.value)?void 0:n.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==p||null==(c=p.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});H||t.setHeader("x-nextjs-cache",R?"REVALIDATED":p.isMiss?"MISS":p.isStale?"STALE":"HIT"),k&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,g.fromNodeOutgoingHttpHeaders)(p.value.headers);return H&&D||d.delete(b.NEXT_CACHE_TAGS_HEADER),!p.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,y.getCacheControlHeader)(p.cacheControl)),await (0,h.sendResponse)(K,V,new Response(p.value.body,{headers:d,status:p.value.status||200})),null};G&&z?await c(z):(a=B.getActiveScopeSpan(),await B.withPropagatedContext(e.headers,()=>B.trace(u.BaseServerSpan.handleRequest,{spanName:`${L} ${i}`,kind:n.SpanKind.SERVER,attributes:{"http.method":L,"http.target":e.url}},c),void 0,!G))}catch(t){if(t instanceof x.NoFallbackError||await A.onRequestError(e,t,{routerKind:"App Router",routePath:S,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:R})},!1,P),D)throw t;return await (0,h.sendResponse)(K,V,new Response(null,{status:500})),null}}e.s(["handler",0,I,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:_,workUnitAsyncStorage:k})},"routeModule",0,A,"serverHooks",0,C,"workAsyncStorage",0,_,"workUnitAsyncStorage",0,k]),o()}catch(e){o(e)}},!1),606102,e=>{e.v(e=>Promise.resolve().then(()=>e(548941)))},789543,e=>{e.v(e=>Promise.resolve().then(()=>e(385498)))},579042,e=>{e.v(t=>Promise.all(["server/chunks/src_shared_utils_apiKey_ts_12~h.oz._.js"].map(t=>e.l(t))).then(()=>t(65448)))},49794,e=>{e.v(t=>Promise.all(["server/chunks/src_shared_constants_pricing_ts_0hk12it._.js"].map(t=>e.l(t))).then(()=>t(404503)))},386305,e=>{e.v(e=>Promise.resolve().then(()=>e(878947)))},970016,e=>{e.v(t=>Promise.all(["server/chunks/src_0f_le~m._.js"].map(t=>e.l(t))).then(()=>t(260222)))},134636,e=>{e.v(t=>Promise.all(["server/chunks/_01zmant._.js","server/chunks/open-sse_services_tokenRefresh_ts_02a7bpg._.js","server/chunks/open-sse_executors_00c59i8._.js","server/chunks/_13z4e_s._.js","server/chunks/_0nj4-b3._.js","server/chunks/open-sse_0dawtxk._.js"].map(t=>e.l(t))).then(()=>t(20870)))},730711,e=>{e.v(t=>Promise.all(["server/chunks/_0g5otws._.js"].map(t=>e.l(t))).then(()=>t(441637)))},38026,e=>{e.v(t=>Promise.all(["server/chunks/open-sse_services_requestDedup_ts_0mk6k0w._.js"].map(t=>e.l(t))).then(()=>t(951700)))},338694,e=>{e.v(t=>Promise.all(["server/chunks/src_lib_localHealthCheck_ts_016oyu2._.js"].map(t=>e.l(t))).then(()=>t(181666)))}];
|
|
3
3
|
|
|
4
4
|
//# sourceMappingURL=%5Broot-of-the-server%5D__0n-~kvf._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
module.exports=[677850,e=>e.a(async(t,r)=>{try{let t=await e.y("zod");e.n(t),r()}catch(e){r(e)}},!0),200392,e=>e.a(async(t,r)=>{try{var a=e.i(677850),s=t([a]);[a]=s.then?(await s)():s,a.z.object({password:a.z.string().min(1,"Password is required").max(200)}),e.s(["isValidationFailure",0,function(e){return!1===e.success},"validateBody",0,function(e,t){let r=e.safeParse(t);if(r.success)return{success:!0,data:r.data};let a=Array.isArray(r.error?.issues)?r.error.issues:[];return{success:!1,error:{message:"Invalid request",details:a.map(e=>({field:e.path.join("."),message:e.message}))}}}]),r()}catch(e){r(e)}},!1),41244,e=>{"use strict";e.s(["HIDEABLE_SIDEBAR_ITEM_IDS",0,["home","endpoints","api-manager","providers","combos","auto-combo","costs","analytics","limits","cache","cli-tools","agents","memory","skills","translator","playground","media","search-tools","health","logs","audit","settings","docs","issues"]])},224361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},233405,(e,t,r)=>{t.exports=e.x("child_process",()=>require("child_process"))},663370,632802,477468,e=>{"use strict";let t=new TextEncoder,r=new TextDecoder;function a(e){if(Uint8Array.prototype.toBase64)return e.toBase64();let t=[];for(let r=0;r<e.length;r+=32768)t.push(String.fromCharCode.apply(null,e.subarray(r,r+32768)));return btoa(t.join(""))}function s(e){if(Uint8Array.fromBase64)return Uint8Array.fromBase64(e);let t=atob(e),r=new Uint8Array(t.length);for(let e=0;e<t.length;e++)r[e]=t.charCodeAt(e);return r}e.s(["concat",0,function(...e){let t=new Uint8Array(e.reduce((e,{length:t})=>e+t,0)),r=0;for(let a of e)t.set(a,r),r+=a.length;return t},"decoder",0,r,"encode",0,function(e){let t=new Uint8Array(e.length);for(let r=0;r<e.length;r++){let a=e.charCodeAt(r);if(a>127)throw TypeError("non-ASCII string encountered in encode()");t[r]=a}return t},"encoder",0,t],632802),e.s(["decodeBase64",0,s,"encodeBase64",0,a],477468),e.s(["decode",0,function(e){if(Uint8Array.fromBase64)return Uint8Array.fromBase64("string"==typeof e?e:r.decode(e),{alphabet:"base64url"});let t=e;t instanceof Uint8Array&&(t=r.decode(t)),t=t.replace(/-/g,"+").replace(/_/g,"/");try{return s(t)}catch{throw TypeError("The input to be decoded is not correctly encoded.")}},"encode",0,function(e){let r=e;return("string"==typeof r&&(r=t.encode(r)),Uint8Array.prototype.toBase64)?r.toBase64({alphabet:"base64url",omitPadding:!0}):a(r).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}],663370)},865466,e=>{"use strict";class t extends Error{static code="ERR_JOSE_GENERIC";code="ERR_JOSE_GENERIC";constructor(e,t){super(e,t),this.name=this.constructor.name,Error.captureStackTrace?.(this,this.constructor)}}class r extends t{[Symbol.asyncIterator];static code="ERR_JWKS_MULTIPLE_MATCHING_KEYS";code="ERR_JWKS_MULTIPLE_MATCHING_KEYS";constructor(e="multiple matching keys found in the JSON Web Key Set",t){super(e,t)}}e.s(["JOSEAlgNotAllowed",0,class extends t{static code="ERR_JOSE_ALG_NOT_ALLOWED";code="ERR_JOSE_ALG_NOT_ALLOWED"},"JOSENotSupported",0,class extends t{static code="ERR_JOSE_NOT_SUPPORTED";code="ERR_JOSE_NOT_SUPPORTED"},"JWSInvalid",0,class extends t{static code="ERR_JWS_INVALID";code="ERR_JWS_INVALID"},"JWSSignatureVerificationFailed",0,class extends t{static code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED";code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED";constructor(e="signature verification failed",t){super(e,t)}},"JWTClaimValidationFailed",0,class extends t{static code="ERR_JWT_CLAIM_VALIDATION_FAILED";code="ERR_JWT_CLAIM_VALIDATION_FAILED";claim;reason;payload;constructor(e,t,r="unspecified",a="unspecified"){super(e,{cause:{claim:r,reason:a,payload:t}}),this.claim=r,this.reason=a,this.payload=t}},"JWTExpired",0,class extends t{static code="ERR_JWT_EXPIRED";code="ERR_JWT_EXPIRED";claim;reason;payload;constructor(e,t,r="unspecified",a="unspecified"){super(e,{cause:{claim:r,reason:a,payload:t}}),this.claim=r,this.reason=a,this.payload=t}},"JWTInvalid",0,class extends t{static code="ERR_JWT_INVALID";code="ERR_JWT_INVALID"}])},177278,e=>{"use strict";function t(e){if("object"!=typeof e||null===e||"[object Object]"!==Object.prototype.toString.call(e))return!1;if(null===Object.getPrototypeOf(e))return!0;let t=e;for(;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}e.s(["isDisjoint",0,function(...e){let t,r=e.filter(Boolean);if(0===r.length||1===r.length)return!0;for(let e of r){let r=Object.keys(e);if(!t||0===t.size){t=new Set(r);continue}for(let e of r){if(t.has(e))return!1;t.add(e)}}return!0},"isJWK",0,e=>t(e)&&"string"==typeof e.kty,"isObject",0,t,"isPrivateJWK",0,e=>"oct"!==e.kty&&("AKP"===e.kty&&"string"==typeof e.priv||"string"==typeof e.d),"isPublicJWK",0,e=>"oct"!==e.kty&&void 0===e.d&&void 0===e.priv,"isSecretJWK",0,e=>"oct"===e.kty&&"string"==typeof e.k])},363704,e=>e.a(async(t,r)=>{try{var a=e.i(224010),s=e.i(311250),n=e.i(352812),o=e.i(719201),i=e.i(16023),l=e.i(828059),c=e.i(676088),d=e.i(200392),u=t([s,c,d]);[s,c,d]=u.then?(await u)():u;let R=!1;async function p(){R||(await (0,n.initTranslators)(),R=!0)}async function h(){return new Response(null,{headers:{"Access-Control-Allow-Origin":a.CORS_ORIGIN,"Access-Control-Allow-Methods":"GET, POST, OPTIONS","Access-Control-Allow-Headers":"*"}})}async function _(e,{params:t}){let r,{provider:a}=await t,n=(0,l.getRegistryEntry)(a);if(!n)return(0,o.errorResponse)(i.HTTP_STATUS.BAD_REQUEST,`Unknown provider: ${a}`);let u=n.alias||n.id;await p();try{r=await e.json()}catch{return(0,o.errorResponse)(i.HTTP_STATUS.BAD_REQUEST,"Invalid JSON body")}let h=(0,d.validateBody)(c.providerChatCompletionSchema,r);if((0,d.isValidationFailure)(h))return(0,o.errorResponse)(i.HTTP_STATUS.BAD_REQUEST,h.error.message);let R=h.data;if(R.model){let e=R.model.split("/"),t=e.length>=2,r=t?e[0]:null;if(t&&r!==u&&r!==a&&r!==n.id)return(0,o.errorResponse)(i.HTTP_STATUS.BAD_REQUEST,`Model "${R.model}" does not belong to provider "${a}". Expected prefix: ${u}/`);t||(R.model=`${u}/${R.model}`)}let E=new Request(e.url,{method:e.method,headers:e.headers,body:JSON.stringify(R)});return await (0,s.handleChat)(E,(0,s.buildClientRawRequest)(e,r))}e.s(["OPTIONS",0,h,"POST",0,_]),r()}catch(e){r(e)}},!1),136739,e=>e.a(async(t,r)=>{try{var a=e.i(747909),s=e.i(174017),n=e.i(996250),o=e.i(759756),i=e.i(561916),l=e.i(174677),c=e.i(869741),d=e.i(316795),u=e.i(487718),p=e.i(995169),h=e.i(47587),_=e.i(666012),R=e.i(570101),E=e.i(626937),f=e.i(10372),v=e.i(193695);e.i(820232);var y=e.i(600220),m=e.i(363704),g=t([m]);[m]=g.then?(await g)():g;let T=new a.AppRouteRouteModule({definition:{kind:s.RouteKind.APP_ROUTE,page:"/api/v1/providers/[provider]/chat/completions/route",pathname:"/api/v1/providers/[provider]/chat/completions",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/v1/providers/[provider]/chat/completions/route.ts",nextConfigOutput:"standalone",userland:m,...{}}),{workAsyncStorage:S,workUnitAsyncStorage:w,serverHooks:I}=T;async function A(e,t,r){r.requestMeta&&(0,o.setRequestMeta)(e,r.requestMeta),T.isDev&&(0,o.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let a="/api/v1/providers/[provider]/chat/completions/route";a=a.replace(/\/index$/,"")||"/";let n=await T.prepare(e,t,{srcPage:a,multiZoneDraftMode:!1});if(!n)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:m,params:g,nextConfig:A,parsedUrl:S,isDraftMode:w,prerenderManifest:I,routerServerContext:O,isOnDemandRevalidate:C,revalidateOnlyGenerated:P,resolvedPathname:b,clientReferenceManifest:x,serverActionsManifest:N}=n,U=(0,c.normalizeAppPath)(a),D=!!(I.dynamicRoutes[U]||I.routes[b]),J=async()=>((null==O?void 0:O.render404)?await O.render404(e,t,S,!1):t.end("This page could not be found"),null);if(D&&!w){let e=!!I.routes[b],t=I.dynamicRoutes[U];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await J();throw new v.NoFallbackError}}let k=null;!D||T.isDev||w||(k=b,k="/index"===k?"/":k);let j=!0===T.isDev||!D,L=D&&!j;N&&x&&(0,l.setManifestsSingleton)({page:a,clientReferenceManifest:x,serverActionsManifest:N});let W=e.method||"GET",B=(0,i.getTracer)(),H=B.getActiveScopeSpan(),q=!!(null==O?void 0:O.isWrappedByNextServer),M=!!(0,o.getRequestMeta)(e,"minimalMode"),K=(0,o.getRequestMeta)(e,"incrementalCache")||await T.getIncrementalCache(e,A,I,M);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let F={params:g,previewProps:I.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:j,incrementalCache:K,cacheLifeProfiles:A.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,s)=>T.onRequestError(e,t,a,s,O)},sharedContext:{buildId:m}},V=new d.NodeNextRequest(e),$=new d.NodeNextResponse(t),G=u.NextRequestAdapter.fromNodeNextRequest(V,(0,u.signalFromNodeResponse)(t));try{let n,o=async e=>T.handle(G,F).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=B.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=r.get("next.route");if(s){let t=`${W} ${s}`;e.setAttributes({"next.route":s,"http.route":s,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",s),n.updateName(t))}else e.updateName(`${W} ${a}`)}),l=async n=>{var i,l;let c=async({previousCacheEntry:s})=>{try{if(!M&&C&&P&&!s)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await o(n);e.fetchMetrics=F.renderOpts.fetchMetrics;let i=F.renderOpts.pendingWaitUntil;i&&r.waitUntil&&(r.waitUntil(i),i=void 0);let l=F.renderOpts.collectedTags;if(!D)return await (0,_.sendResponse)(V,$,a,F.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,R.toNodeOutgoingHttpHeaders)(a.headers);l&&(t[f.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==F.renderOpts.collectedRevalidate&&!(F.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&F.renderOpts.collectedRevalidate,s=void 0===F.renderOpts.collectedExpire||F.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:F.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:s}}}}catch(t){throw(null==s?void 0:s.isStale)&&await T.onRequestError(e,t,{routerKind:"App Router",routePath:a,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:C})},!1,O),t}},d=await T.handleResponse({req:e,nextConfig:A,cacheKey:k,routeKind:s.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:I,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:P,responseGenerator:c,waitUntil:r.waitUntil,isMinimalMode:M});if(!D)return null;if((null==d||null==(i=d.value)?void 0:i.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(l=d.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});M||t.setHeader("x-nextjs-cache",C?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),w&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,R.fromNodeOutgoingHttpHeaders)(d.value.headers);return M&&D||u.delete(f.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,E.getCacheControlHeader)(d.cacheControl)),await (0,_.sendResponse)(V,$,new Response(d.value.body,{headers:u,status:d.value.status||200})),null};q&&H?await l(H):(n=B.getActiveScopeSpan(),await B.withPropagatedContext(e.headers,()=>B.trace(p.BaseServerSpan.handleRequest,{spanName:`${W} ${a}`,kind:i.SpanKind.SERVER,attributes:{"http.method":W,"http.target":e.url}},l),void 0,!q))}catch(t){if(t instanceof v.NoFallbackError||await T.onRequestError(e,t,{routerKind:"App Router",routePath:U,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:C})},!1,O),D)throw t;return await (0,_.sendResponse)(V,$,new Response(null,{status:500})),null}}e.s(["handler",0,A,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:S,workUnitAsyncStorage:w})},"routeModule",0,T,"serverHooks",0,I,"workAsyncStorage",0,S,"workUnitAsyncStorage",0,w]),r()}catch(e){r(e)}},!1),606102,e=>{e.v(e=>Promise.resolve().then(()=>e(548941)))},789543,e=>{e.v(e=>Promise.resolve().then(()=>e(385498)))},579042,e=>{e.v(t=>Promise.all(["server/chunks/src_shared_utils_apiKey_ts_12~h.oz._.js"].map(t=>e.l(t))).then(()=>t(65448)))},49794,e=>{e.v(t=>Promise.all(["server/chunks/src_shared_constants_pricing_ts_0hk12it._.js"].map(t=>e.l(t))).then(()=>t(404503)))},386305,e=>{e.v(e=>Promise.resolve().then(()=>e(878947)))},605589,e=>{e.v(t=>Promise.all(["server/chunks/src_lib_localDb_ts_0ml5l_h._.js"].map(t=>e.l(t))).then(()=>t(969738)))},901259,e=>{e.v(t=>Promise.all(["server/chunks/[externals]_http2_0j-h654._.js"].map(t=>e.l(t))).then(()=>t(925328)))},828068,e=>{e.v(t=>Promise.all(["server/chunks/src_lib_promptCache_index_ts_0jus6ym._.js"].map(t=>e.l(t))).then(()=>t(198426)))},537776,e=>{e.v(t=>Promise.all(["server/chunks/src_lib_usageDb_ts_0oz3f~n._.js"].map(t=>e.l(t))).then(()=>t(36197)))}];
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__0nzi7ym._.js.map
|