aigetwey 1.3.2 → 1.3.4
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/CHANGELOG.md +23 -0
- package/dashboard/.next/BUILD_ID +1 -0
- package/dashboard/.next/app-path-routes-manifest.json +22 -0
- package/dashboard/.next/build/56416d4ae4ce586f.js +6 -0
- package/dashboard/.next/build/56416d4ae4ce586f.js.map +5 -0
- package/dashboard/.next/build/chunks/[root-of-the-server]__0oj80bi._.js +206 -0
- package/dashboard/.next/build/chunks/[root-of-the-server]__0oj80bi._.js.map +8 -0
- package/dashboard/.next/build/chunks/[root-of-the-server]__1f933tp._.js +500 -0
- package/dashboard/.next/build/chunks/[root-of-the-server]__1f933tp._.js.map +11 -0
- package/dashboard/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_0b7xl6g._.js +13 -0
- package/dashboard/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_0b7xl6g._.js.map +5 -0
- package/dashboard/.next/build/chunks/[turbopack]_runtime.js +890 -0
- package/dashboard/.next/build/chunks/[turbopack]_runtime.js.map +11 -0
- package/dashboard/.next/build/chunks/node_modules_20v-8wl._.js +6824 -0
- package/dashboard/.next/build/chunks/node_modules_20v-8wl._.js.map +47 -0
- package/dashboard/.next/build/package.json +1 -0
- package/dashboard/.next/build-manifest.json +22 -0
- package/dashboard/.next/cache/.previewinfo +1 -0
- package/dashboard/.next/cache/.rscinfo +1 -0
- package/dashboard/.next/diagnostics/build-diagnostics.json +6 -0
- package/dashboard/.next/diagnostics/framework.json +1 -0
- package/dashboard/.next/diagnostics/route-bundle-stats.json +208 -0
- package/dashboard/.next/export-marker.json +6 -0
- package/dashboard/.next/fallback-build-manifest.json +13 -0
- package/dashboard/.next/images-manifest.json +68 -0
- package/dashboard/.next/next-minimal-server.js.nft.json +1 -0
- package/dashboard/.next/next-server.js.nft.json +1 -0
- package/dashboard/.next/package.json +1 -0
- package/dashboard/.next/prerender-manifest.json +306 -0
- package/dashboard/.next/required-server-files.js +337 -0
- package/dashboard/.next/required-server-files.json +337 -0
- package/dashboard/.next/routes-manifest.json +174 -0
- package/dashboard/.next/server/app/(console)/combos/page/app-paths-manifest.json +3 -0
- package/dashboard/.next/server/app/(console)/combos/page/build-manifest.json +18 -0
- package/dashboard/.next/server/app/(console)/combos/page/next-font-manifest.json +11 -0
- package/dashboard/.next/server/app/(console)/combos/page/react-loadable-manifest.json +1 -0
- package/dashboard/.next/server/app/(console)/combos/page/server-reference-manifest.json +4 -0
- package/dashboard/.next/server/app/(console)/combos/page.js +15 -0
- package/dashboard/.next/server/app/(console)/combos/page.js.map +5 -0
- package/dashboard/.next/server/app/(console)/combos/page.js.nft.json +1 -0
- package/dashboard/.next/server/app/(console)/combos/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/server/app/(console)/config/page/app-paths-manifest.json +3 -0
- package/dashboard/.next/server/app/(console)/config/page/build-manifest.json +18 -0
- package/dashboard/.next/server/app/(console)/config/page/next-font-manifest.json +11 -0
- package/dashboard/.next/server/app/(console)/config/page/react-loadable-manifest.json +1 -0
- package/dashboard/.next/server/app/(console)/config/page/server-reference-manifest.json +4 -0
- package/dashboard/.next/server/app/(console)/config/page.js +15 -0
- package/dashboard/.next/server/app/(console)/config/page.js.map +5 -0
- package/dashboard/.next/server/app/(console)/config/page.js.nft.json +1 -0
- package/dashboard/.next/server/app/(console)/config/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/server/app/(console)/console/page/app-paths-manifest.json +3 -0
- package/dashboard/.next/server/app/(console)/console/page/build-manifest.json +18 -0
- package/dashboard/.next/server/app/(console)/console/page/next-font-manifest.json +11 -0
- package/dashboard/.next/server/app/(console)/console/page/react-loadable-manifest.json +1 -0
- package/dashboard/.next/server/app/(console)/console/page/server-reference-manifest.json +4 -0
- package/dashboard/.next/server/app/(console)/console/page.js +15 -0
- package/dashboard/.next/server/app/(console)/console/page.js.map +5 -0
- package/dashboard/.next/server/app/(console)/console/page.js.nft.json +1 -0
- package/dashboard/.next/server/app/(console)/console/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/server/app/(console)/endpoint/page/app-paths-manifest.json +3 -0
- package/dashboard/.next/server/app/(console)/endpoint/page/build-manifest.json +18 -0
- package/dashboard/.next/server/app/(console)/endpoint/page/next-font-manifest.json +11 -0
- package/dashboard/.next/server/app/(console)/endpoint/page/react-loadable-manifest.json +1 -0
- package/dashboard/.next/server/app/(console)/endpoint/page/server-reference-manifest.json +4 -0
- package/dashboard/.next/server/app/(console)/endpoint/page.js +15 -0
- package/dashboard/.next/server/app/(console)/endpoint/page.js.map +5 -0
- package/dashboard/.next/server/app/(console)/endpoint/page.js.nft.json +1 -0
- package/dashboard/.next/server/app/(console)/endpoint/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/server/app/(console)/page/app-paths-manifest.json +3 -0
- package/dashboard/.next/server/app/(console)/page/build-manifest.json +18 -0
- package/dashboard/.next/server/app/(console)/page/next-font-manifest.json +11 -0
- package/dashboard/.next/server/app/(console)/page/react-loadable-manifest.json +1 -0
- package/dashboard/.next/server/app/(console)/page/server-reference-manifest.json +4 -0
- package/dashboard/.next/server/app/(console)/page.js +15 -0
- package/dashboard/.next/server/app/(console)/page.js.map +5 -0
- package/dashboard/.next/server/app/(console)/page.js.nft.json +1 -0
- package/dashboard/.next/server/app/(console)/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/server/app/(console)/providers/[id]/page/app-paths-manifest.json +3 -0
- package/dashboard/.next/server/app/(console)/providers/[id]/page/build-manifest.json +18 -0
- package/dashboard/.next/server/app/(console)/providers/[id]/page/next-font-manifest.json +11 -0
- package/dashboard/.next/server/app/(console)/providers/[id]/page/react-loadable-manifest.json +1 -0
- package/dashboard/.next/server/app/(console)/providers/[id]/page/server-reference-manifest.json +4 -0
- package/dashboard/.next/server/app/(console)/providers/[id]/page.js +15 -0
- package/dashboard/.next/server/app/(console)/providers/[id]/page.js.map +5 -0
- package/dashboard/.next/server/app/(console)/providers/[id]/page.js.nft.json +1 -0
- package/dashboard/.next/server/app/(console)/providers/[id]/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/server/app/(console)/providers/page/app-paths-manifest.json +3 -0
- package/dashboard/.next/server/app/(console)/providers/page/build-manifest.json +18 -0
- package/dashboard/.next/server/app/(console)/providers/page/next-font-manifest.json +11 -0
- package/dashboard/.next/server/app/(console)/providers/page/react-loadable-manifest.json +1 -0
- package/dashboard/.next/server/app/(console)/providers/page/server-reference-manifest.json +4 -0
- package/dashboard/.next/server/app/(console)/providers/page.js +15 -0
- package/dashboard/.next/server/app/(console)/providers/page.js.map +5 -0
- package/dashboard/.next/server/app/(console)/providers/page.js.nft.json +1 -0
- package/dashboard/.next/server/app/(console)/providers/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/server/app/(console)/quota/page/app-paths-manifest.json +3 -0
- package/dashboard/.next/server/app/(console)/quota/page/build-manifest.json +18 -0
- package/dashboard/.next/server/app/(console)/quota/page/next-font-manifest.json +11 -0
- package/dashboard/.next/server/app/(console)/quota/page/react-loadable-manifest.json +1 -0
- package/dashboard/.next/server/app/(console)/quota/page/server-reference-manifest.json +4 -0
- package/dashboard/.next/server/app/(console)/quota/page.js +15 -0
- package/dashboard/.next/server/app/(console)/quota/page.js.map +5 -0
- package/dashboard/.next/server/app/(console)/quota/page.js.nft.json +1 -0
- package/dashboard/.next/server/app/(console)/quota/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/server/app/(console)/tools/[id]/page/app-paths-manifest.json +3 -0
- package/dashboard/.next/server/app/(console)/tools/[id]/page/build-manifest.json +18 -0
- package/dashboard/.next/server/app/(console)/tools/[id]/page/next-font-manifest.json +11 -0
- package/dashboard/.next/server/app/(console)/tools/[id]/page/react-loadable-manifest.json +1 -0
- package/dashboard/.next/server/app/(console)/tools/[id]/page/server-reference-manifest.json +4 -0
- package/dashboard/.next/server/app/(console)/tools/[id]/page.js +15 -0
- package/dashboard/.next/server/app/(console)/tools/[id]/page.js.map +5 -0
- package/dashboard/.next/server/app/(console)/tools/[id]/page.js.nft.json +1 -0
- package/dashboard/.next/server/app/(console)/tools/[id]/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/server/app/(console)/tools/page/app-paths-manifest.json +3 -0
- package/dashboard/.next/server/app/(console)/tools/page/build-manifest.json +18 -0
- package/dashboard/.next/server/app/(console)/tools/page/next-font-manifest.json +11 -0
- package/dashboard/.next/server/app/(console)/tools/page/react-loadable-manifest.json +1 -0
- package/dashboard/.next/server/app/(console)/tools/page/server-reference-manifest.json +4 -0
- package/dashboard/.next/server/app/(console)/tools/page.js +15 -0
- package/dashboard/.next/server/app/(console)/tools/page.js.map +5 -0
- package/dashboard/.next/server/app/(console)/tools/page.js.nft.json +1 -0
- package/dashboard/.next/server/app/(console)/tools/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/server/app/(console)/usage/page/app-paths-manifest.json +3 -0
- package/dashboard/.next/server/app/(console)/usage/page/build-manifest.json +18 -0
- package/dashboard/.next/server/app/(console)/usage/page/next-font-manifest.json +11 -0
- package/dashboard/.next/server/app/(console)/usage/page/react-loadable-manifest.json +1 -0
- package/dashboard/.next/server/app/(console)/usage/page/server-reference-manifest.json +4 -0
- package/dashboard/.next/server/app/(console)/usage/page.js +16 -0
- package/dashboard/.next/server/app/(console)/usage/page.js.map +5 -0
- package/dashboard/.next/server/app/(console)/usage/page.js.nft.json +1 -0
- package/dashboard/.next/server/app/(console)/usage/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/server/app/_global-error/page/app-paths-manifest.json +3 -0
- package/dashboard/.next/server/app/_global-error/page/build-manifest.json +18 -0
- package/dashboard/.next/server/app/_global-error/page/next-font-manifest.json +6 -0
- package/dashboard/.next/server/app/_global-error/page/react-loadable-manifest.json +1 -0
- package/dashboard/.next/server/app/_global-error/page/server-reference-manifest.json +4 -0
- package/dashboard/.next/server/app/_global-error/page.js +9 -0
- package/dashboard/.next/server/app/_global-error/page.js.map +5 -0
- package/dashboard/.next/server/app/_global-error/page.js.nft.json +1 -0
- package/dashboard/.next/server/app/_global-error/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/server/app/_global-error.html +1 -0
- package/dashboard/.next/server/app/_global-error.meta +15 -0
- package/dashboard/.next/server/app/_global-error.rsc +14 -0
- package/dashboard/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +5 -0
- package/dashboard/.next/server/app/_global-error.segments/_full.segment.rsc +14 -0
- package/dashboard/.next/server/app/_global-error.segments/_head.segment.rsc +5 -0
- package/dashboard/.next/server/app/_global-error.segments/_index.segment.rsc +5 -0
- package/dashboard/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
- package/dashboard/.next/server/app/_not-found/page/app-paths-manifest.json +3 -0
- package/dashboard/.next/server/app/_not-found/page/build-manifest.json +18 -0
- package/dashboard/.next/server/app/_not-found/page/next-font-manifest.json +11 -0
- package/dashboard/.next/server/app/_not-found/page/react-loadable-manifest.json +1 -0
- package/dashboard/.next/server/app/_not-found/page/server-reference-manifest.json +4 -0
- package/dashboard/.next/server/app/_not-found/page.js +13 -0
- package/dashboard/.next/server/app/_not-found/page.js.map +5 -0
- package/dashboard/.next/server/app/_not-found/page.js.nft.json +1 -0
- package/dashboard/.next/server/app/_not-found/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/server/app/_not-found.html +1 -0
- package/dashboard/.next/server/app/_not-found.meta +16 -0
- package/dashboard/.next/server/app/_not-found.rsc +20 -0
- package/dashboard/.next/server/app/_not-found.segments/_full.segment.rsc +20 -0
- package/dashboard/.next/server/app/_not-found.segments/_head.segment.rsc +6 -0
- package/dashboard/.next/server/app/_not-found.segments/_index.segment.rsc +9 -0
- package/dashboard/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -0
- package/dashboard/.next/server/app/_not-found.segments/_not-found.segment.rsc +5 -0
- package/dashboard/.next/server/app/_not-found.segments/_tree.segment.rsc +3 -0
- package/dashboard/.next/server/app/api/cli-detect/[tool]/route/app-paths-manifest.json +3 -0
- package/dashboard/.next/server/app/api/cli-detect/[tool]/route/build-manifest.json +9 -0
- package/dashboard/.next/server/app/api/cli-detect/[tool]/route/server-reference-manifest.json +4 -0
- package/dashboard/.next/server/app/api/cli-detect/[tool]/route.js +7 -0
- package/dashboard/.next/server/app/api/cli-detect/[tool]/route.js.map +5 -0
- package/dashboard/.next/server/app/api/cli-detect/[tool]/route.js.nft.json +1 -0
- package/dashboard/.next/server/app/api/cli-detect/[tool]/route_client-reference-manifest.js +3 -0
- package/dashboard/.next/server/app/api/gw/[...path]/route/app-paths-manifest.json +3 -0
- package/dashboard/.next/server/app/api/gw/[...path]/route/build-manifest.json +9 -0
- package/dashboard/.next/server/app/api/gw/[...path]/route/server-reference-manifest.json +4 -0
- package/dashboard/.next/server/app/api/gw/[...path]/route.js +7 -0
- package/dashboard/.next/server/app/api/gw/[...path]/route.js.map +5 -0
- package/dashboard/.next/server/app/api/gw/[...path]/route.js.nft.json +1 -0
- package/dashboard/.next/server/app/api/gw/[...path]/route_client-reference-manifest.js +3 -0
- package/dashboard/.next/server/app/api/login/route/app-paths-manifest.json +3 -0
- package/dashboard/.next/server/app/api/login/route/build-manifest.json +9 -0
- package/dashboard/.next/server/app/api/login/route/server-reference-manifest.json +4 -0
- package/dashboard/.next/server/app/api/login/route.js +7 -0
- package/dashboard/.next/server/app/api/login/route.js.map +5 -0
- package/dashboard/.next/server/app/api/login/route.js.nft.json +1 -0
- package/dashboard/.next/server/app/api/login/route_client-reference-manifest.js +3 -0
- package/dashboard/.next/server/app/api/logout/route/app-paths-manifest.json +3 -0
- package/dashboard/.next/server/app/api/logout/route/build-manifest.json +9 -0
- package/dashboard/.next/server/app/api/logout/route/server-reference-manifest.json +4 -0
- package/dashboard/.next/server/app/api/logout/route.js +7 -0
- package/dashboard/.next/server/app/api/logout/route.js.map +5 -0
- package/dashboard/.next/server/app/api/logout/route.js.nft.json +1 -0
- package/dashboard/.next/server/app/api/logout/route_client-reference-manifest.js +3 -0
- package/dashboard/.next/server/app/api/password/route/app-paths-manifest.json +3 -0
- package/dashboard/.next/server/app/api/password/route/build-manifest.json +9 -0
- package/dashboard/.next/server/app/api/password/route/server-reference-manifest.json +4 -0
- package/dashboard/.next/server/app/api/password/route.js +7 -0
- package/dashboard/.next/server/app/api/password/route.js.map +5 -0
- package/dashboard/.next/server/app/api/password/route.js.nft.json +1 -0
- package/dashboard/.next/server/app/api/password/route_client-reference-manifest.js +3 -0
- package/dashboard/.next/server/app/combos.html +1 -0
- package/dashboard/.next/server/app/combos.meta +16 -0
- package/dashboard/.next/server/app/combos.rsc +25 -0
- package/dashboard/.next/server/app/combos.segments/!KGNvbnNvbGUp/combos/__PAGE__.segment.rsc +6 -0
- package/dashboard/.next/server/app/combos.segments/!KGNvbnNvbGUp/combos.segment.rsc +5 -0
- package/dashboard/.next/server/app/combos.segments/!KGNvbnNvbGUp.segment.rsc +6 -0
- package/dashboard/.next/server/app/combos.segments/_full.segment.rsc +25 -0
- package/dashboard/.next/server/app/combos.segments/_head.segment.rsc +6 -0
- package/dashboard/.next/server/app/combos.segments/_index.segment.rsc +9 -0
- package/dashboard/.next/server/app/combos.segments/_tree.segment.rsc +5 -0
- package/dashboard/.next/server/app/config.html +1 -0
- package/dashboard/.next/server/app/config.meta +16 -0
- package/dashboard/.next/server/app/config.rsc +25 -0
- package/dashboard/.next/server/app/config.segments/!KGNvbnNvbGUp/config/__PAGE__.segment.rsc +6 -0
- package/dashboard/.next/server/app/config.segments/!KGNvbnNvbGUp/config.segment.rsc +5 -0
- package/dashboard/.next/server/app/config.segments/!KGNvbnNvbGUp.segment.rsc +6 -0
- package/dashboard/.next/server/app/config.segments/_full.segment.rsc +25 -0
- package/dashboard/.next/server/app/config.segments/_head.segment.rsc +6 -0
- package/dashboard/.next/server/app/config.segments/_index.segment.rsc +9 -0
- package/dashboard/.next/server/app/config.segments/_tree.segment.rsc +5 -0
- package/dashboard/.next/server/app/console.html +1 -0
- package/dashboard/.next/server/app/console.meta +16 -0
- package/dashboard/.next/server/app/console.rsc +28 -0
- package/dashboard/.next/server/app/console.segments/!KGNvbnNvbGUp/console/__PAGE__.segment.rsc +9 -0
- package/dashboard/.next/server/app/console.segments/!KGNvbnNvbGUp/console.segment.rsc +5 -0
- package/dashboard/.next/server/app/console.segments/!KGNvbnNvbGUp.segment.rsc +6 -0
- package/dashboard/.next/server/app/console.segments/_full.segment.rsc +28 -0
- package/dashboard/.next/server/app/console.segments/_head.segment.rsc +6 -0
- package/dashboard/.next/server/app/console.segments/_index.segment.rsc +9 -0
- package/dashboard/.next/server/app/console.segments/_tree.segment.rsc +5 -0
- package/dashboard/.next/server/app/endpoint.html +1 -0
- package/dashboard/.next/server/app/endpoint.meta +16 -0
- package/dashboard/.next/server/app/endpoint.rsc +25 -0
- package/dashboard/.next/server/app/endpoint.segments/!KGNvbnNvbGUp/endpoint/__PAGE__.segment.rsc +6 -0
- package/dashboard/.next/server/app/endpoint.segments/!KGNvbnNvbGUp/endpoint.segment.rsc +5 -0
- package/dashboard/.next/server/app/endpoint.segments/!KGNvbnNvbGUp.segment.rsc +6 -0
- package/dashboard/.next/server/app/endpoint.segments/_full.segment.rsc +25 -0
- package/dashboard/.next/server/app/endpoint.segments/_head.segment.rsc +6 -0
- package/dashboard/.next/server/app/endpoint.segments/_index.segment.rsc +9 -0
- package/dashboard/.next/server/app/endpoint.segments/_tree.segment.rsc +5 -0
- package/dashboard/.next/server/app/icon.svg/route/app-paths-manifest.json +3 -0
- package/dashboard/.next/server/app/icon.svg/route/build-manifest.json +9 -0
- package/dashboard/.next/server/app/icon.svg/route.js +6 -0
- package/dashboard/.next/server/app/icon.svg/route.js.map +5 -0
- package/dashboard/.next/server/app/icon.svg/route.js.nft.json +1 -0
- package/dashboard/.next/server/app/icon.svg.body +8 -0
- package/dashboard/.next/server/app/icon.svg.meta +1 -0
- package/dashboard/.next/server/app/index.html +1 -0
- package/dashboard/.next/server/app/index.meta +15 -0
- package/dashboard/.next/server/app/index.rsc +23 -0
- package/dashboard/.next/server/app/index.segments/!KGNvbnNvbGUp/__PAGE__.segment.rsc +6 -0
- package/dashboard/.next/server/app/index.segments/!KGNvbnNvbGUp.segment.rsc +6 -0
- package/dashboard/.next/server/app/index.segments/_full.segment.rsc +23 -0
- package/dashboard/.next/server/app/index.segments/_head.segment.rsc +6 -0
- package/dashboard/.next/server/app/index.segments/_index.segment.rsc +9 -0
- package/dashboard/.next/server/app/index.segments/_tree.segment.rsc +5 -0
- package/dashboard/.next/server/app/login/page/app-paths-manifest.json +3 -0
- package/dashboard/.next/server/app/login/page/build-manifest.json +18 -0
- package/dashboard/.next/server/app/login/page/next-font-manifest.json +11 -0
- package/dashboard/.next/server/app/login/page/react-loadable-manifest.json +1 -0
- package/dashboard/.next/server/app/login/page/server-reference-manifest.json +4 -0
- package/dashboard/.next/server/app/login/page.js +14 -0
- package/dashboard/.next/server/app/login/page.js.map +5 -0
- package/dashboard/.next/server/app/login/page.js.nft.json +1 -0
- package/dashboard/.next/server/app/login/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/server/app/login.html +1 -0
- package/dashboard/.next/server/app/login.meta +15 -0
- package/dashboard/.next/server/app/login.rsc +26 -0
- package/dashboard/.next/server/app/login.segments/_full.segment.rsc +26 -0
- package/dashboard/.next/server/app/login.segments/_head.segment.rsc +6 -0
- package/dashboard/.next/server/app/login.segments/_index.segment.rsc +9 -0
- package/dashboard/.next/server/app/login.segments/_tree.segment.rsc +5 -0
- package/dashboard/.next/server/app/login.segments/login/__PAGE__.segment.rsc +9 -0
- package/dashboard/.next/server/app/login.segments/login.segment.rsc +5 -0
- package/dashboard/.next/server/app/providers.html +1 -0
- package/dashboard/.next/server/app/providers.meta +16 -0
- package/dashboard/.next/server/app/providers.rsc +25 -0
- package/dashboard/.next/server/app/providers.segments/!KGNvbnNvbGUp/providers/__PAGE__.segment.rsc +6 -0
- package/dashboard/.next/server/app/providers.segments/!KGNvbnNvbGUp/providers.segment.rsc +5 -0
- package/dashboard/.next/server/app/providers.segments/!KGNvbnNvbGUp.segment.rsc +6 -0
- package/dashboard/.next/server/app/providers.segments/_full.segment.rsc +25 -0
- package/dashboard/.next/server/app/providers.segments/_head.segment.rsc +6 -0
- package/dashboard/.next/server/app/providers.segments/_index.segment.rsc +9 -0
- package/dashboard/.next/server/app/providers.segments/_tree.segment.rsc +5 -0
- package/dashboard/.next/server/app/quota.html +1 -0
- package/dashboard/.next/server/app/quota.meta +16 -0
- package/dashboard/.next/server/app/quota.rsc +25 -0
- package/dashboard/.next/server/app/quota.segments/!KGNvbnNvbGUp/quota/__PAGE__.segment.rsc +6 -0
- package/dashboard/.next/server/app/quota.segments/!KGNvbnNvbGUp/quota.segment.rsc +5 -0
- package/dashboard/.next/server/app/quota.segments/!KGNvbnNvbGUp.segment.rsc +6 -0
- package/dashboard/.next/server/app/quota.segments/_full.segment.rsc +25 -0
- package/dashboard/.next/server/app/quota.segments/_head.segment.rsc +6 -0
- package/dashboard/.next/server/app/quota.segments/_index.segment.rsc +9 -0
- package/dashboard/.next/server/app/quota.segments/_tree.segment.rsc +5 -0
- package/dashboard/.next/server/app/tools.html +1 -0
- package/dashboard/.next/server/app/tools.meta +16 -0
- package/dashboard/.next/server/app/tools.rsc +25 -0
- package/dashboard/.next/server/app/tools.segments/!KGNvbnNvbGUp/tools/__PAGE__.segment.rsc +6 -0
- package/dashboard/.next/server/app/tools.segments/!KGNvbnNvbGUp/tools.segment.rsc +5 -0
- package/dashboard/.next/server/app/tools.segments/!KGNvbnNvbGUp.segment.rsc +6 -0
- package/dashboard/.next/server/app/tools.segments/_full.segment.rsc +25 -0
- package/dashboard/.next/server/app/tools.segments/_head.segment.rsc +6 -0
- package/dashboard/.next/server/app/tools.segments/_index.segment.rsc +9 -0
- package/dashboard/.next/server/app/tools.segments/_tree.segment.rsc +5 -0
- package/dashboard/.next/server/app-paths-manifest.json +22 -0
- package/dashboard/.next/server/chunks/[externals]__1j91pjf._.js +3 -0
- package/dashboard/.next/server/chunks/[externals]__1j91pjf._.js.map +1 -0
- package/dashboard/.next/server/chunks/[externals]__1v5t_x8._.js +3 -0
- package/dashboard/.next/server/chunks/[externals]__1v5t_x8._.js.map +1 -0
- package/dashboard/.next/server/chunks/[root-of-the-server]__0-6ukjk._.js +3 -0
- package/dashboard/.next/server/chunks/[root-of-the-server]__0-6ukjk._.js.map +1 -0
- package/dashboard/.next/server/chunks/[root-of-the-server]__043un18._.js +20 -0
- package/dashboard/.next/server/chunks/[root-of-the-server]__043un18._.js.map +1 -0
- package/dashboard/.next/server/chunks/[root-of-the-server]__07euc03._.js +3 -0
- package/dashboard/.next/server/chunks/[root-of-the-server]__07euc03._.js.map +1 -0
- package/dashboard/.next/server/chunks/[root-of-the-server]__082azhr._.js +3 -0
- package/dashboard/.next/server/chunks/[root-of-the-server]__082azhr._.js.map +1 -0
- package/dashboard/.next/server/chunks/[root-of-the-server]__0das32e._.js +3 -0
- package/dashboard/.next/server/chunks/[root-of-the-server]__0das32e._.js.map +1 -0
- package/dashboard/.next/server/chunks/[root-of-the-server]__0pp7rn-._.js +3 -0
- package/dashboard/.next/server/chunks/[root-of-the-server]__0pp7rn-._.js.map +1 -0
- package/dashboard/.next/server/chunks/[root-of-the-server]__0uqpr_c._.js +3 -0
- package/dashboard/.next/server/chunks/[root-of-the-server]__0uqpr_c._.js.map +1 -0
- package/dashboard/.next/server/chunks/[root-of-the-server]__0xuaoik._.js +13 -0
- package/dashboard/.next/server/chunks/[root-of-the-server]__0xuaoik._.js.map +1 -0
- package/dashboard/.next/server/chunks/[turbopack]_runtime.js +903 -0
- package/dashboard/.next/server/chunks/[turbopack]_runtime.js.map +11 -0
- package/dashboard/.next/server/chunks/_0digmky._.js +3 -0
- package/dashboard/.next/server/chunks/_0digmky._.js.map +1 -0
- package/dashboard/.next/server/chunks/_next-internal_server_app_api_cli-detect_[tool]_route_actions_0ffw-gg.js +3 -0
- package/dashboard/.next/server/chunks/_next-internal_server_app_api_cli-detect_[tool]_route_actions_0ffw-gg.js.map +1 -0
- package/dashboard/.next/server/chunks/_next-internal_server_app_api_gw_[___path]_route_actions_0ytl4km.js +3 -0
- package/dashboard/.next/server/chunks/_next-internal_server_app_api_gw_[___path]_route_actions_0ytl4km.js.map +1 -0
- package/dashboard/.next/server/chunks/_next-internal_server_app_api_login_route_actions_1apjjct.js +3 -0
- package/dashboard/.next/server/chunks/_next-internal_server_app_api_login_route_actions_1apjjct.js.map +1 -0
- package/dashboard/.next/server/chunks/_next-internal_server_app_api_logout_route_actions_0gzx3on.js +3 -0
- package/dashboard/.next/server/chunks/_next-internal_server_app_api_logout_route_actions_0gzx3on.js.map +1 -0
- package/dashboard/.next/server/chunks/_next-internal_server_app_api_password_route_actions_0xecc0j.js +3 -0
- package/dashboard/.next/server/chunks/_next-internal_server_app_api_password_route_actions_0xecc0j.js.map +1 -0
- package/dashboard/.next/server/chunks/_next-internal_server_app_icon_svg_route_actions_1r2h_ub.js +3 -0
- package/dashboard/.next/server/chunks/_next-internal_server_app_icon_svg_route_actions_1r2h_ub.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0559wxx._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0559wxx._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__09pxn-h._.js +33 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__09pxn-h._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0_fihdn._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0_fihdn._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0cx5pj3._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0cx5pj3._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0d-itp1._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0d-itp1._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0dk7lif._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0dk7lif._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0qvkt1y._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0qvkt1y._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0unr06k._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0unr06k._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0x-617o._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0x-617o._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0zf4yft._.js +27 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0zf4yft._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__11t16qi._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__11t16qi._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__12q01a8._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__12q01a8._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__179ut8i._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__179ut8i._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1dky4g0._.js +33 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1dky4g0._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1inj1w-._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1inj1w-._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1jidl81._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1jidl81._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1mg2t8f._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1mg2t8f._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1w2pq2s._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1w2pq2s._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1w31jjb._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1w31jjb._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/[turbopack]_runtime.js +903 -0
- package/dashboard/.next/server/chunks/ssr/[turbopack]_runtime.js.map +11 -0
- package/dashboard/.next/server/chunks/ssr/_0g1n0z2._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/_0g1n0z2._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/_1jt-_lv._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/_1jt-_lv._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/_1mumvwn._.js +6 -0
- package/dashboard/.next/server/chunks/ssr/_1mumvwn._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_combos_page_actions_07o3lus.js +3 -0
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_combos_page_actions_07o3lus.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_config_page_actions_1d2383s.js +3 -0
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_config_page_actions_1d2383s.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_console_page_actions_0w-3r_g.js +3 -0
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_console_page_actions_0w-3r_g.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_endpoint_page_actions_00tzpzh.js +3 -0
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_endpoint_page_actions_00tzpzh.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_page_actions_0u8zxvt.js +3 -0
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_page_actions_0u8zxvt.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_providers_[id]_page_actions_20yozi-.js +3 -0
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_providers_[id]_page_actions_20yozi-.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_providers_page_actions_1bdc8gv.js +3 -0
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_providers_page_actions_1bdc8gv.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_quota_page_actions_02l-zu_.js +3 -0
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_quota_page_actions_02l-zu_.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_tools_[id]_page_actions_01qi9of.js +3 -0
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_tools_[id]_page_actions_01qi9of.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_tools_page_actions_18gis7c.js +3 -0
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_tools_page_actions_18gis7c.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_usage_page_actions_1twl-ym.js +3 -0
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_usage_page_actions_1twl-ym.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app__global-error_page_actions_0zi5s8-.js +3 -0
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app__global-error_page_actions_0zi5s8-.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app__not-found_page_actions_0pt47yr.js +3 -0
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app__not-found_page_actions_0pt47yr.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_login_page_actions_04fnjo0.js +3 -0
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_login_page_actions_04fnjo0.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_1ivn_d-._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_1ivn_d-._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_1iemwhs._.js +6 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_1iemwhs._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_0uboya6._.js +6 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_0uboya6._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_1enzot_._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_1enzot_._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_1map00z._.js +19 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_1map00z._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_client_components_0bew68i._.js +33 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_client_components_0bew68i._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_client_components_0wpq8j3._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_client_components_0wpq8j3._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0symwr9.js +3 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0symwr9.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0-o-goa.js +3 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0-o-goa.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0x.js +3 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0x.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_00x0c-2.js +4 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_00x0c-2.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_01n345n.js +4 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_01n345n.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_02jwx28.js +4 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_02jwx28.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08g_4le.js +4 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08g_4le.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0_xbpm0.js +4 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0_xbpm0.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0tx5zxe.js +4 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0tx5zxe.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_15dprgl.js +4 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_15dprgl.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_18twt8j.js +4 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_18twt8j.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_19--w_z.js +4 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_19--w_z.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1bycsv3.js +4 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1bycsv3.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1i1atml.js +4 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1i1atml.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1n7v8np.js +4 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1n7v8np.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1q72yyr.js +4 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1q72yyr.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_20gk3id.js +4 -0
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_20gk3id.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/src_02ocd5c._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/src_02ocd5c._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/src_0az41dg._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/src_0az41dg._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/src_0wrskl4._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/src_0wrskl4._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/src_app_(console)_console_page_tsx_1g8gnmy._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/src_app_(console)_console_page_tsx_1g8gnmy._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/src_components_0kr-r_t._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/src_components_0kr-r_t._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/src_components_0nuo5yx._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/src_components_0nuo5yx._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/src_components_10h9ide._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/src_components_10h9ide._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/src_components_11ckzq_._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/src_components_11ckzq_._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/src_components_12gk6sc._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/src_components_12gk6sc._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/src_components_17nnhsa._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/src_components_17nnhsa._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/src_components_1kc5vh2._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/src_components_1kc5vh2._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/src_components_1zwow63._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/src_components_1zwow63._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/src_components_BudgetTracker_tsx_1-xevea._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/src_components_BudgetTracker_tsx_1-xevea._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/src_components_EndpointView_tsx_0awdzb5._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/src_components_EndpointView_tsx_0awdzb5._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/src_components_ModelPicker_tsx_1jisxh6._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/src_components_ModelPicker_tsx_1jisxh6._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/src_components_ProviderDetail_tsx_06sxu0r._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/src_components_ProviderDetail_tsx_06sxu0r._.js.map +1 -0
- package/dashboard/.next/server/chunks/ssr/src_components_ToolDetail_tsx_0qperd-._.js +3 -0
- package/dashboard/.next/server/chunks/ssr/src_components_ToolDetail_tsx_0qperd-._.js.map +1 -0
- package/dashboard/.next/server/functions-config-manifest.json +14 -0
- package/dashboard/.next/server/interception-route-rewrite-manifest.js +1 -0
- package/dashboard/.next/server/middleware/middleware-manifest.json +6 -0
- package/dashboard/.next/server/middleware-build-manifest.js +22 -0
- package/dashboard/.next/server/middleware-manifest.json +6 -0
- package/dashboard/.next/server/middleware.js +5 -0
- package/dashboard/.next/server/middleware.js.map +5 -0
- package/dashboard/.next/server/middleware.js.nft.json +1 -0
- package/dashboard/.next/server/next-font-manifest.js +1 -0
- package/dashboard/.next/server/next-font-manifest.json +59 -0
- package/dashboard/.next/server/pages/404.html +1 -0
- package/dashboard/.next/server/pages/500.html +1 -0
- package/dashboard/.next/server/pages-manifest.json +4 -0
- package/dashboard/.next/server/prefetch-hints.json +1 -0
- package/dashboard/.next/server/server-reference-manifest.js +1 -0
- package/dashboard/.next/server/server-reference-manifest.json +5 -0
- package/dashboard/.next/static/chunks/00415cmd3ji2s.js +1 -0
- package/dashboard/.next/static/chunks/05-c3ty_6dwfk.js +1 -0
- package/dashboard/.next/static/chunks/05i93ivai9obr.js +1 -0
- package/dashboard/.next/static/chunks/0_fo_1xhw25rd.js +1 -0
- package/dashboard/.next/static/chunks/0cz1d0mv5g_q7.js +1 -0
- package/dashboard/.next/static/chunks/0mk1g55o6kl1e.js +2 -0
- package/dashboard/.next/static/chunks/0mr7sg_sr6f99.js +1 -0
- package/dashboard/.next/static/chunks/1-r9spn081_wo.js +1 -0
- package/dashboard/.next/static/chunks/13ge_ybuj8rl3.js +1 -0
- package/dashboard/.next/static/chunks/14mrh2-p_w84d.js +1 -0
- package/dashboard/.next/static/chunks/17nxt0zmkvdgv.js +1 -0
- package/dashboard/.next/static/chunks/2284qz1hy9776.css +3 -0
- package/dashboard/.next/static/chunks/22r7w355mazs8.js +1 -0
- package/dashboard/.next/static/chunks/27jktro2p5rq9.js +4 -0
- package/dashboard/.next/static/chunks/2t3rqr0rkspb7.js +1 -0
- package/dashboard/.next/static/chunks/2zho1fpijk0fu.js +1 -0
- package/dashboard/.next/static/chunks/30uw-uiehs39o.js +1 -0
- package/dashboard/.next/static/chunks/36ssnkm0cjgq6.js +31 -0
- package/dashboard/.next/static/chunks/3i6nr2y3h_7s2.js +1 -0
- package/dashboard/.next/static/chunks/3j9pm5otqxm82.js +1 -0
- package/dashboard/.next/static/chunks/3jat3x6f_2a6o.js +1 -0
- package/dashboard/.next/static/chunks/3nrz6v06gppob.js +1 -0
- package/dashboard/.next/static/chunks/40pm83c1_d0jz.js +25 -0
- package/dashboard/.next/static/chunks/turbopack-28-wpvvyttgwq.js +1 -0
- package/dashboard/.next/static/dkqYdDLx-R5NmenO8DP0C/_buildManifest.js +11 -0
- package/dashboard/.next/static/dkqYdDLx-R5NmenO8DP0C/_clientMiddlewareManifest.js +6 -0
- package/dashboard/.next/static/dkqYdDLx-R5NmenO8DP0C/_ssgManifest.js +1 -0
- package/dashboard/.next/static/media/13bf9871fe164e7f-s.2f7nqdagzwx2-.woff2 +0 -0
- package/dashboard/.next/static/media/1bffadaabf893a1e-s.3-6t-g6q0vh0a.woff2 +0 -0
- package/dashboard/.next/static/media/2bbe8d2671613f1f-s.0k62hbripvv8p.woff2 +0 -0
- package/dashboard/.next/static/media/2c55a0e60120577a-s.0-dom-5bn10r2.woff2 +0 -0
- package/dashboard/.next/static/media/3fe682a82f50d426-s.0vfdmo25voy_0.woff2 +0 -0
- package/dashboard/.next/static/media/5476f68d60460930-s.2uwcyprjm3xu3.woff2 +0 -0
- package/dashboard/.next/static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2 +0 -0
- package/dashboard/.next/static/media/71b036adf157cdcf-s.0bp8oijd_gu96.woff2 +0 -0
- package/dashboard/.next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2 +0 -0
- package/dashboard/.next/static/media/89b21bb081cb7469-s.1fby2rem9ngyr.woff2 +0 -0
- package/dashboard/.next/static/media/9c72aa0f40e4eef8-s.1y4-pdgsjb-pw.woff2 +0 -0
- package/dashboard/.next/static/media/ad66f9afd8947f86-s.3lvt2whj97whp.woff2 +0 -0
- package/dashboard/.next/static/media/cc545e633e20c56d-s.176arc174-8zp.woff2 +0 -0
- package/dashboard/.next/static/media/icon.43yv9zw_mes0x.svg +8 -0
- package/dashboard/.next/trace +1 -0
- package/dashboard/.next/trace-build +1 -0
- package/dashboard/.next/turbopack +0 -0
- package/dashboard/.next/types/cache-life.d.ts +145 -0
- package/dashboard/.next/types/routes.d.ts +88 -0
- package/dashboard/.next/types/validator.ts +223 -0
- package/dist/cli.js +16 -5
- package/dist/cli.js.map +1 -1
- package/package.json +3 -1
- package/scripts/postinstall.cjs +66 -0
- package/src/cli.ts +16 -5
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[18622,(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"))},56704,(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"))},32319,(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"))},24725,(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"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},93695,(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"))},66680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},76509,e=>{"use strict";var t=e.i(75601);function r(){return(process.env.GATEWAY_URL??"http://127.0.0.1:18080").replace(/\/$/,"")}async function n(e,n,a){let o;try{o=await fetch(r()+n,{method:e,headers:{authorization:`Bearer ${await (0,t.currentPassword)()}`,...void 0!==a?{"content-type":"application/json"}:{}},body:void 0!==a?JSON.stringify(a):void 0,cache:"no-store"})}catch(e){return{ok:!1,status:0,data:null,error:`gateway unreachable: ${e.message}`}}let s=await o.text(),i=null;try{i=s?JSON.parse(s):null}catch{i=null}if(!o.ok){let e=i?.error??`gateway returned ${o.status}`;return{ok:!1,status:o.status,data:i,error:e}}return{ok:!0,status:o.status,data:i}}async function a(e){try{return(await fetch(r()+"/admin/providers",{headers:{authorization:`Bearer ${e}`},cache:"no-store"})).ok}catch{return!1}}e.s(["checkGatewayAuth",0,a,"gateway",0,{providers:()=>n("GET","/admin/providers"),budgets:()=>n("GET","/admin/budgets"),models:()=>n("GET","/admin/models"),logs:(e=100)=>n("GET",`/admin/logs?limit=${e}`),usage:(e=0)=>n("GET",`/admin/usage?since=${e}`),usageSeries:(e,t)=>n("GET",`/admin/usage/series?since=${e}&bucket=${t}`),config:()=>n("GET","/admin/config"),putConfig:e=>n("PUT","/admin/config",{text:e}),changePassword:(e,t)=>n("PUT","/admin/password",{current:e,next:t}),addProvider:e=>n("POST","/admin/providers",e),editProvider:(e,t)=>n("PUT",`/admin/providers/${encodeURIComponent(e)}`,t),removeProvider:e=>n("DELETE",`/admin/providers/${encodeURIComponent(e)}`),addKey:(e,t)=>n("POST",`/admin/providers/${encodeURIComponent(e)}/keys`,{key:t}),removeKey:(e,t)=>n("DELETE",`/admin/providers/${encodeURIComponent(e)}/keys/${t}`),addProviderModel:(e,t,r)=>n("POST",`/admin/providers/${encodeURIComponent(e)}/models`,{model:t,...r}),addProviderModels:(e,t)=>n("POST",`/admin/providers/${encodeURIComponent(e)}/models`,{models:t}),removeProviderModel:(e,t)=>n("DELETE",`/admin/providers/${encodeURIComponent(e)}/models/${encodeURIComponent(t)}`),clearProviderModels:e=>n("DELETE",`/admin/providers/${encodeURIComponent(e)}/models`),testProvider:e=>n("POST",`/admin/providers/${encodeURIComponent(e)}/test`),discoverModels:e=>n("POST",`/admin/providers/${encodeURIComponent(e)}/connect`),setRoute:(e,t)=>n("PUT",`/admin/routes/${encodeURIComponent(e)}`,t),removeRoute:e=>n("DELETE",`/admin/routes/${encodeURIComponent(e)}`),endpoint:()=>n("GET","/admin/endpoint"),setRtk:e=>n("PUT","/admin/endpoint/rtk",{enabled:e}),setCaveman:e=>n("PUT","/admin/endpoint/caveman",{level:e}),setPonytail:e=>n("PUT","/admin/endpoint/ponytail",{level:e}),addServerKey:e=>n("POST","/admin/endpoint/keys",{key:e}),removeServerKey:e=>n("DELETE",`/admin/endpoint/keys/${e}`)}])},77020,e=>{"use strict";var t=e.i(47909),r=e.i(74017),n=e.i(96250),a=e.i(59756),o=e.i(61916),s=e.i(74677),i=e.i(69741),d=e.i(16795),l=e.i(87718),p=e.i(95169),u=e.i(47587),c=e.i(66012),m=e.i(70101),v=e.i(26937),h=e.i(10372),R=e.i(93695);e.i(20232);var x=e.i(220),g=e.i(89171),E=e.i(93458),w=e.i(75601),y=e.i(76509);async function f(e){let{current:t,next:r}=await e.json().catch(()=>({}));if(!t||!r)return g.NextResponse.json({error:"current and next are required"},{status:400});if(r.length<4)return g.NextResponse.json({error:"new password must be at least 4 characters"},{status:400});let n=await y.gateway.changePassword(t,r);return n.ok?((await (0,E.cookies)()).set(w.SESSION_COOKIE,(0,w.sealSession)(r),{httpOnly:!0,sameSite:"lax",secure:!0,path:"/",maxAge:43200}),g.NextResponse.json({ok:!0})):g.NextResponse.json({error:n.error??"could not change password"},{status:n.status||400})}e.s(["POST",0,f],73442);var T=e.i(73442);let C=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/password/route",pathname:"/api/password",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/password/route.ts",nextConfigOutput:"",userland:T,...{}}),{workAsyncStorage:P,workUnitAsyncStorage:S,serverHooks:k}=C;async function U(e,t,n){n.requestMeta&&(0,a.setRequestMeta)(e,n.requestMeta),C.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/password/route";g=g.replace(/\/index$/,"")||"/";let E=await C.prepare(e,t,{srcPage:g,multiZoneDraftMode:!1});if(!E)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:w,deploymentId:y,params:f,nextConfig:T,parsedUrl:P,isDraftMode:S,prerenderManifest:k,routerServerContext:U,isOnDemandRevalidate:b,revalidateOnlyGenerated:A,resolvedPathname:O,clientReferenceManifest:$,serverActionsManifest:N}=E,I=(0,i.normalizeAppPath)(g),q=!!(k.dynamicRoutes[I]||k.routes[O]),_=async()=>((null==U?void 0:U.render404)?await U.render404(e,t,P,!1):t.end("This page could not be found"),null);if(q&&!S){let e=!!k.routes[O],t=k.dynamicRoutes[I];if(t&&!1===t.fallback&&!e){if(T.adapterPath)return await _();throw new R.NoFallbackError}}let j=null;!q||C.isDev||S||(j="/index"===(j=O)?"/":j);let M=!0===C.isDev||!q,D=q&&!M;N&&$&&(0,s.setManifestsSingleton)({page:g,clientReferenceManifest:$,serverActionsManifest:N});let H=e.method||"GET",G=(0,o.getTracer)(),K=G.getActiveScopeSpan(),L=!!(null==U?void 0:U.isWrappedByNextServer),B=!!(0,a.getRequestMeta)(e,"minimalMode"),F=(0,a.getRequestMeta)(e,"incrementalCache")||await C.getIncrementalCache(e,T,k,B);null==F||F.resetRequestCache(),globalThis.__incrementalCache=F;let W={params:f,previewProps:k.preview,renderOpts:{experimental:{authInterrupts:!!T.experimental.authInterrupts},cacheComponents:!!T.cacheComponents,supportsDynamicResponse:M,incrementalCache:F,cacheLifeProfiles:T.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,a)=>C.onRequestError(e,t,n,a,U)},sharedContext:{buildId:w,deploymentId:y}},z=new d.NodeNextRequest(e),V=new d.NodeNextResponse(t),X=l.NextRequestAdapter.fromNodeNextRequest(z,(0,l.signalFromNodeResponse)(t));try{let a,s=async e=>C.handle(X,W).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=G.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 n=r.get("next.route");if(n){let t=`${H} ${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(`${H} ${g}`)}),i=async a=>{var o,i;let d=async({previousCacheEntry:r})=>{try{if(!B&&b&&A&&!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 d=W.renderOpts.collectedTags;if(!q)return await (0,c.sendResponse)(z,V,o,W.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(o.headers);d&&(t[h.NEXT_CACHE_TAGS_HEADER]=d),!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:x.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 C.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:b})},!1,U),t}},l=await C.handleResponse({req:e,nextConfig:T,cacheKey:j,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:k,isRoutePPREnabled:!1,isOnDemandRevalidate:b,revalidateOnlyGenerated:A,responseGenerator:d,waitUntil:n.waitUntil,isMinimalMode:B});if(!q)return null;if((null==l||null==(o=l.value)?void 0:o.kind)!==x.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==l||null==(i=l.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});B||t.setHeader("x-nextjs-cache",b?"REVALIDATED":l.isMiss?"MISS":l.isStale?"STALE":"HIT"),S&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,m.fromNodeOutgoingHttpHeaders)(l.value.headers);return B&&q||p.delete(h.NEXT_CACHE_TAGS_HEADER),!l.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,v.getCacheControlHeader)(l.cacheControl)),await (0,c.sendResponse)(z,V,new Response(l.value.body,{headers:p,status:l.value.status||200})),null};L&&K?await i(K):(a=G.getActiveScopeSpan(),await G.withPropagatedContext(e.headers,()=>G.trace(p.BaseServerSpan.handleRequest,{spanName:`${H} ${g}`,kind:o.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},i),void 0,!L))}catch(t){if(t instanceof R.NoFallbackError||await C.onRequestError(e,t,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:b})},!1,U),q)throw t;return await (0,c.sendResponse)(z,V,new Response(null,{status:500})),null}}e.s(["handler",0,U,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:P,workUnitAsyncStorage:S})},"routeModule",0,C,"serverHooks",0,k,"workAsyncStorage",0,P,"workUnitAsyncStorage",0,S],77020)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__07euc03._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/gateway.ts","../../../src/app/api/password/route.ts","../../../node_modules/next/dist/esm/build/templates/app-route.js"],"sourcesContent":["import \"server-only\";\nimport { currentPassword } from \"./session\";\n\n/**\n * Server-side proxy to the gateway admin API. Runs only in Next.js server\n * context (route handlers / server components) — injects the admin password as\n * a Bearer token so it never reaches the browser.\n *\n * Scoped to the admin surface the gateway exposes today (usage, logs, providers,\n * budgets, whole-config CRUD). Granular provider/combo mutation helpers are added\n * alongside the pages that drive them in phase 11.\n */\nfunction gatewayUrl(): string {\n return (process.env.GATEWAY_URL ?? \"http://127.0.0.1:18080\").replace(/\\/$/, \"\");\n}\n\nexport interface GatewayResult<T> {\n ok: boolean;\n status: number;\n data: T | null;\n error?: string;\n}\n\nasync function call<T>(method: string, path: string, body?: unknown): Promise<GatewayResult<T>> {\n let res: Response;\n try {\n res = await fetch(gatewayUrl() + path, {\n method,\n headers: {\n authorization: `Bearer ${await currentPassword()}`,\n ...(body !== undefined ? { \"content-type\": \"application/json\" } : {}),\n },\n body: body !== undefined ? JSON.stringify(body) : undefined,\n cache: \"no-store\",\n });\n } catch (e) {\n return { ok: false, status: 0, data: null, error: `gateway unreachable: ${(e as Error).message}` };\n }\n\n const text = await res.text();\n let data: T | null = null;\n try {\n data = text ? (JSON.parse(text) as T) : null;\n } catch {\n data = null;\n }\n if (!res.ok) {\n const err = (data as { error?: string } | null)?.error ?? `gateway returned ${res.status}`;\n return { ok: false, status: res.status, data, error: err };\n }\n return { ok: true, status: res.status, data };\n}\n\n/** Verify a specific admin password against the gateway (used at login, before a\n * session cookie exists). */\nexport async function checkGatewayAuth(password: string): Promise<boolean> {\n try {\n const res = await fetch(gatewayUrl() + \"/admin/providers\", {\n headers: { authorization: `Bearer ${password}` },\n cache: \"no-store\",\n });\n return res.ok;\n } catch {\n return false;\n }\n}\n\nexport const gateway = {\n providers: () => call<{ providers: ProviderSnapshot[] }>(\"GET\", \"/admin/providers\"),\n budgets: () => call<{ budgets: BudgetStatus[] }>(\"GET\", \"/admin/budgets\"),\n models: () => call<ModelsPayload>(\"GET\", \"/admin/models\"),\n logs: (limit = 100) => call<{ logs: UsageLog[] }>(\"GET\", `/admin/logs?limit=${limit}`),\n usage: (since = 0) => call<UsageSummary>(\"GET\", `/admin/usage?since=${since}`),\n usageSeries: (since: number, bucket: number) =>\n call<{ series: UsageSeriesPoint[] }>(\"GET\", `/admin/usage/series?since=${since}&bucket=${bucket}`),\n config: () => call<MaskedConfig>(\"GET\", \"/admin/config\"),\n putConfig: (text: string) => call<{ ok: boolean; config: MaskedConfig }>(\"PUT\", \"/admin/config\", { text }),\n changePassword: (current: string, next: string) =>\n call<{ ok: boolean }>(\"PUT\", \"/admin/password\", { current, next }),\n\n // ---- provider mutations (reply carries the fresh masked config) ----\n addProvider: (p: {\n id: string;\n format: WireFormat;\n base_url: string;\n api_key?: string;\n free?: boolean;\n auto_models?: boolean;\n service_account?: string;\n }) => call<ConfigReply>(\"POST\", \"/admin/providers\", p),\n editProvider: (id: string, patch: { base_url?: string; format?: WireFormat }) =>\n call<ConfigReply>(\"PUT\", `/admin/providers/${encodeURIComponent(id)}`, patch),\n removeProvider: (id: string) => call<ConfigReply>(\"DELETE\", `/admin/providers/${encodeURIComponent(id)}`),\n addKey: (id: string, key: string) =>\n call<ConfigReply>(\"POST\", `/admin/providers/${encodeURIComponent(id)}/keys`, { key }),\n removeKey: (id: string, index: number) =>\n call<ConfigReply>(\"DELETE\", `/admin/providers/${encodeURIComponent(id)}/keys/${index}`),\n addProviderModel: (id: string, model: string, price?: { price_in?: number; price_out?: number }) =>\n call<ConfigReply>(\"POST\", `/admin/providers/${encodeURIComponent(id)}/models`, { model, ...price }),\n addProviderModels: (id: string, models: string[]) =>\n call<ConfigReply>(\"POST\", `/admin/providers/${encodeURIComponent(id)}/models`, { models }),\n removeProviderModel: (id: string, model: string) =>\n call<ConfigReply>(\"DELETE\", `/admin/providers/${encodeURIComponent(id)}/models/${encodeURIComponent(model)}`),\n clearProviderModels: (id: string) =>\n call<ConfigReply>(\"DELETE\", `/admin/providers/${encodeURIComponent(id)}/models`),\n testProvider: (id: string) => call<PingResult>(\"POST\", `/admin/providers/${encodeURIComponent(id)}/test`),\n discoverModels: (id: string) =>\n call<{ ok: boolean; models: Array<{ id: string; added: boolean }> }>(\n \"POST\",\n `/admin/providers/${encodeURIComponent(id)}/connect`,\n ),\n\n // ---- combos: alias + ordered provider chain + strategy ----\n setRoute: (\n alias: string,\n body: { target: string[]; model?: string | string[]; strategy?: \"fallback\" | \"round-robin\"; price_in?: number; price_out?: number },\n ) => call<ConfigReply>(\"PUT\", `/admin/routes/${encodeURIComponent(alias)}`, body),\n removeRoute: (alias: string) => call<ConfigReply>(\"DELETE\", `/admin/routes/${encodeURIComponent(alias)}`),\n\n // ---- endpoint: toggles + gateway keys ----\n endpoint: () => call<EndpointPayload>(\"GET\", \"/admin/endpoint\"),\n setRtk: (enabled: boolean) => call<ConfigReply>(\"PUT\", \"/admin/endpoint/rtk\", { enabled }),\n setCaveman: (level: InjectLevel) => call<ConfigReply>(\"PUT\", \"/admin/endpoint/caveman\", { level }),\n setPonytail: (level: InjectLevel) => call<ConfigReply>(\"PUT\", \"/admin/endpoint/ponytail\", { level }),\n addServerKey: (key: string) => call<ConfigReply>(\"POST\", \"/admin/endpoint/keys\", { key }),\n removeServerKey: (index: number) => call<ConfigReply>(\"DELETE\", `/admin/endpoint/keys/${index}`),\n};\n\n// ---- shapes mirrored from the gateway admin API ----\n\nexport type WireFormat = \"openai\" | \"anthropic\" | \"gemini\";\nexport type InjectLevel = \"off\" | \"lite\" | \"full\" | \"ultra\";\n\nexport interface ConfigReply {\n ok: boolean;\n config: MaskedConfig;\n}\n\nexport interface MaskedRoute {\n alias: string;\n target: string[];\n model?: string | string[];\n strategy: \"fallback\" | \"round-robin\";\n price_in?: number;\n price_out?: number;\n}\nexport interface MaskedProvider {\n id: string;\n name?: string;\n format: WireFormat;\n base_url: string;\n api_key?: string;\n api_keys?: string[];\n /** optional friendly label per key, keyed by the MASKED key string. */\n key_names?: Record<string, string>;\n free: boolean;\n auto_models: boolean;\n service_account?: string;\n models: Array<{ id: string; price_in?: number; price_out?: number }>;\n cooldown_base_ms: number;\n max_retries: number;\n disabled_keys?: number[];\n disabled?: boolean;\n strategy?: \"fallback\" | \"round-robin\";\n sticky?: number;\n}\nexport interface MaskedConfig {\n server: { host: string; port: number; api_keys: string[] };\n endpoint: { rtk: boolean; caveman: InjectLevel; ponytail: InjectLevel };\n providers: MaskedProvider[];\n models: MaskedRoute[];\n}\n\nexport interface EndpointPayload {\n port: number;\n rtk: boolean;\n caveman: InjectLevel;\n ponytail: InjectLevel;\n headroom: { enabled: boolean; url: string; compress_user_messages: boolean };\n keys: Array<{ key: string; fingerprint: string; name?: string; models?: string[]; rpm?: number; expires?: number }>;\n}\n\nexport interface KeyUsageRow {\n fingerprint: string;\n name: string;\n masked: string;\n expires?: number;\n spent: number;\n tokens: number;\n budget: {\n unit: \"usd\" | \"tokens\";\n limit: number;\n spent: number;\n pct: number;\n window: \"5h\" | \"24h\" | \"7day\" | \"30day\";\n reset_in_ms: number;\n exhausted: boolean;\n alert: boolean;\n } | null;\n}\n\nexport interface HeadroomStatusReply {\n installed: boolean;\n path: string | null;\n running: boolean;\n python: string | null;\n localUrl: boolean;\n canStart: boolean;\n url: string;\n managedPid: number | null;\n enabled: boolean;\n compress_user_messages: boolean;\n}\n\nexport interface PingResult {\n reachable: boolean;\n status?: number;\n ok: boolean;\n error?: string;\n}\n\nexport interface PricingModel {\n id: string;\n price_in: number | null;\n price_out: number | null;\n default_in: number | null;\n default_out: number | null;\n}\nexport interface PricingPayload {\n providers: Array<{ id: string; models: PricingModel[] }>;\n}\n\nexport interface ModelsPayload {\n providers: Array<{\n id: string;\n format: WireFormat;\n models: Array<{ id: string; ref: string; price_in?: number; price_out?: number }>;\n }>;\n routes: MaskedRoute[];\n}\n\nexport interface KeySnapshot {\n key: string;\n healthy: boolean;\n cooldown_ms: number;\n fail_count: number;\n last_error: { message: string; status?: number; at: number } | null;\n}\nexport interface ProviderSnapshot {\n id: string;\n format: WireFormat;\n keys: KeySnapshot[];\n}\nexport type BudgetScope =\n | { type: \"global\" }\n | { type: \"provider\"; id: string }\n | { type: \"model\"; id: string }\n | { type: \"key\"; id: string };\n\nexport interface BudgetStatus {\n scope: BudgetScope;\n key: string;\n label: string;\n note?: string;\n unit: \"usd\" | \"tokens\";\n limit: number;\n spent: number;\n pct: number;\n alert: boolean;\n alert_at: number;\n exhausted: boolean;\n est_converse: number | null;\n reset_in_ms: number;\n window: \"5h\" | \"24h\" | \"7day\" | \"30day\";\n}\nexport interface UsageLog {\n ts: number;\n alias: string;\n provider: string;\n model: string;\n tokens_in: number;\n tokens_out: number;\n reasoning_tokens: number;\n cached_tokens: number;\n cost: number;\n status: number;\n latency_ms: number;\n stream: number;\n}\nexport interface UsageSummary {\n total: { requests: number; tokens_in: number; tokens_out: number; cost: number };\n by_provider: Array<{ provider: string; requests: number; tokens_in: number; tokens_out: number; cost: number }>;\n by_model: Array<{ alias: string; model: string; requests: number; tokens_in: number; tokens_out: number; cost: number }>;\n}\nexport interface UsageSeriesPoint {\n ts: number;\n requests: number;\n tokens_in: number;\n tokens_out: number;\n cost: number;\n}\n","import { NextResponse } from \"next/server\";\nimport { cookies } from \"next/headers\";\nimport { sealSession, SESSION_COOKIE } from \"@/lib/session\";\nimport { gateway } from \"@/lib/gateway\";\n\n/**\n * Change the admin password. The gateway verifies the current password and\n * persists the new hash; on success we re-issue the session cookie carrying the\n * new password so this browser stays logged in (other sessions must re-login).\n */\nexport async function POST(req: Request): Promise<NextResponse> {\n const { current, next } = (await req.json().catch(() => ({}))) as { current?: string; next?: string };\n if (!current || !next) {\n return NextResponse.json({ error: \"current and next are required\" }, { status: 400 });\n }\n if (next.length < 4) {\n return NextResponse.json({ error: \"new password must be at least 4 characters\" }, { status: 400 });\n }\n\n const r = await gateway.changePassword(current, next);\n if (!r.ok) {\n return NextResponse.json({ error: r.error ?? \"could not change password\" }, { status: r.status || 400 });\n }\n\n const jar = await cookies();\n jar.set(SESSION_COOKIE, sealSession(next), {\n httpOnly: true,\n sameSite: \"lax\",\n secure: process.env.NODE_ENV === \"production\",\n path: \"/\",\n maxAge: 60 * 60 * 12,\n });\n return NextResponse.json({ ok: true });\n}\n","import { AppRouteRouteModule } from \"next/dist/esm/server/route-modules/app-route/module.compiled\";\nimport { RouteKind } from \"next/dist/esm/server/route-kind\";\nimport { patchFetch as _patchFetch } from \"next/dist/esm/server/lib/patch-fetch\";\nimport { addRequestMeta, getRequestMeta, setRequestMeta } from \"next/dist/esm/server/request-meta\";\nimport { getTracer, SpanKind } from \"next/dist/esm/server/lib/trace/tracer\";\nimport { setManifestsSingleton } from \"next/dist/esm/server/app-render/manifests-singleton\";\nimport { normalizeAppPath } from \"next/dist/esm/shared/lib/router/utils/app-paths\";\nimport { NodeNextRequest, NodeNextResponse } from \"next/dist/esm/server/base-http/node\";\nimport { NextRequestAdapter, signalFromNodeResponse } from \"next/dist/esm/server/web/spec-extension/adapters/next-request\";\nimport { BaseServerSpan } from \"next/dist/esm/server/lib/trace/constants\";\nimport { getRevalidateReason } from \"next/dist/esm/server/instrumentation/utils\";\nimport { sendResponse } from \"next/dist/esm/server/send-response\";\nimport { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from \"next/dist/esm/server/web/utils\";\nimport { getCacheControlHeader } from \"next/dist/esm/server/lib/cache-control\";\nimport { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from \"next/dist/esm/lib/constants\";\nimport { NoFallbackError } from \"next/dist/esm/shared/lib/no-fallback-error.external\";\nimport { CachedRouteKind } from \"next/dist/esm/server/response-cache\";\nimport * as userland from \"INNER_APP_ROUTE\";\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\nconst nextConfigOutput = \"\"\nconst routeModule = new AppRouteRouteModule({\n definition: {\n kind: RouteKind.APP_ROUTE,\n page: \"/api/password/route\",\n pathname: \"/api/password\",\n filename: \"route\",\n bundlePath: \"\"\n },\n distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '',\n relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '',\n resolvedPagePath: \"[project]/src/app/api/password/route.ts\",\n nextConfigOutput,\n // The static import is used for initialization (methods, dynamic, etc.).\n userland: userland,\n // In Turbopack dev mode, also provide a getter that calls require() on every\n // request. This re-reads from devModuleCache so HMR updates are picked up,\n // and the async wrapper unwraps async-module Promises (ESM-only\n // serverExternalPackages) automatically.\n ...process.env.TURBOPACK && process.env.__NEXT_DEV_SERVER ? {\n getUserland: ()=>import(\"INNER_APP_ROUTE\")\n } : {}\n});\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule;\nfunction patchFetch() {\n return _patchFetch({\n workAsyncStorage,\n workUnitAsyncStorage\n });\n}\nexport { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, };\nexport async function handler(req, res, ctx) {\n if (ctx.requestMeta) {\n setRequestMeta(req, ctx.requestMeta);\n }\n if (routeModule.isDev) {\n addRequestMeta(req, 'devRequestTimingInternalsEnd', process.hrtime.bigint());\n }\n let srcPage = \"/api/password/route\";\n // turbopack doesn't normalize `/index` in the page name\n // so we need to to process dynamic routes properly\n // TODO: fix turbopack providing differing value from webpack\n if (process.env.TURBOPACK) {\n srcPage = srcPage.replace(/\\/index$/, '') || '/';\n } else if (srcPage === '/index') {\n // we always normalize /index specifically\n srcPage = '/';\n }\n const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE;\n const prepareResult = await routeModule.prepare(req, res, {\n srcPage,\n multiZoneDraftMode\n });\n if (!prepareResult) {\n res.statusCode = 400;\n res.end('Bad Request');\n ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve());\n return null;\n }\n const { buildId, deploymentId, params, nextConfig, parsedUrl, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname, clientReferenceManifest, serverActionsManifest } = prepareResult;\n const normalizedSrcPage = normalizeAppPath(srcPage);\n let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]);\n const render404 = async ()=>{\n // TODO: should route-module itself handle rendering the 404\n if (routerServerContext == null ? void 0 : routerServerContext.render404) {\n await routerServerContext.render404(req, res, parsedUrl, false);\n } else {\n res.end('This page could not be found');\n }\n return null;\n };\n if (isIsr && !isDraftMode) {\n const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]);\n const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage];\n if (prerenderInfo) {\n if (prerenderInfo.fallback === false && !isPrerendered) {\n if (nextConfig.adapterPath) {\n return await render404();\n }\n throw new NoFallbackError();\n }\n }\n }\n let cacheKey = null;\n if (isIsr && !routeModule.isDev && !isDraftMode) {\n cacheKey = resolvedPathname;\n // ensure /index and / is normalized to one key\n cacheKey = cacheKey === '/index' ? '/' : cacheKey;\n }\n const supportsDynamicResponse = // If we're in development, we always support dynamic HTML\n routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports\n // dynamic HTML.\n !isIsr;\n // This is a revalidation request if the request is for a static\n // page and it is not being resumed from a postponed render and\n // it is not a dynamic RSC request then it is a revalidation\n // request.\n const isStaticGeneration = isIsr && !supportsDynamicResponse;\n // Before rendering (which initializes component tree modules), we have to\n // set the reference manifests to our global store so Server Action's\n // encryption util can access to them at the top level of the page module.\n if (serverActionsManifest && clientReferenceManifest) {\n setManifestsSingleton({\n page: srcPage,\n clientReferenceManifest,\n serverActionsManifest\n });\n }\n const method = req.method || 'GET';\n const tracer = getTracer();\n const activeSpan = tracer.getActiveScopeSpan();\n const isWrappedByNextServer = Boolean(routerServerContext == null ? void 0 : routerServerContext.isWrappedByNextServer);\n const isMinimalMode = Boolean(getRequestMeta(req, 'minimalMode'));\n const incrementalCache = getRequestMeta(req, 'incrementalCache') || await routeModule.getIncrementalCache(req, nextConfig, prerenderManifest, isMinimalMode);\n incrementalCache == null ? void 0 : incrementalCache.resetRequestCache();\n globalThis.__incrementalCache = incrementalCache;\n const context = {\n params,\n previewProps: prerenderManifest.preview,\n renderOpts: {\n experimental: {\n authInterrupts: Boolean(nextConfig.experimental.authInterrupts)\n },\n cacheComponents: Boolean(nextConfig.cacheComponents),\n supportsDynamicResponse,\n incrementalCache,\n cacheLifeProfiles: nextConfig.cacheLife,\n waitUntil: ctx.waitUntil,\n onClose: (cb)=>{\n res.on('close', cb);\n },\n onAfterTaskError: undefined,\n onInstrumentationRequestError: (error, _request, errorContext, silenceLog)=>routeModule.onRequestError(req, error, errorContext, silenceLog, routerServerContext)\n },\n sharedContext: {\n buildId,\n deploymentId\n }\n };\n const nodeNextReq = new NodeNextRequest(req);\n const nodeNextRes = new NodeNextResponse(res);\n const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res));\n try {\n let parentSpan;\n const invokeRouteModule = async (span)=>{\n return routeModule.handle(nextReq, context).finally(()=>{\n if (!span) return;\n span.setAttributes({\n 'http.status_code': res.statusCode,\n 'next.rsc': false\n });\n const rootSpanAttributes = tracer.getRootSpanAttributes();\n // We were unable to get attributes, probably OTEL is not enabled\n if (!rootSpanAttributes) {\n return;\n }\n if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) {\n console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`);\n return;\n }\n const route = rootSpanAttributes.get('next.route');\n if (route) {\n const name = `${method} ${route}`;\n span.setAttributes({\n 'next.route': route,\n 'http.route': route,\n 'next.span_name': name\n });\n span.updateName(name);\n // Propagate http.route to the parent span if one exists (e.g.\n // a platform-created HTTP span in adapter deployments).\n if (parentSpan && parentSpan !== span) {\n parentSpan.setAttribute('http.route', route);\n parentSpan.updateName(name);\n }\n } else {\n span.updateName(`${method} ${srcPage}`);\n }\n });\n };\n const handleResponse = async (currentSpan)=>{\n var _cacheEntry_value;\n const responseGenerator = async ({ previousCacheEntry })=>{\n try {\n if (!isMinimalMode && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) {\n res.statusCode = 404;\n // on-demand revalidate always sets this header\n res.setHeader('x-nextjs-cache', 'REVALIDATED');\n res.end('This page could not be found');\n return null;\n }\n const response = await invokeRouteModule(currentSpan);\n req.fetchMetrics = context.renderOpts.fetchMetrics;\n let pendingWaitUntil = context.renderOpts.pendingWaitUntil;\n // Attempt using provided waitUntil if available\n // if it's not we fallback to sendResponse's handling\n if (pendingWaitUntil) {\n if (ctx.waitUntil) {\n ctx.waitUntil(pendingWaitUntil);\n pendingWaitUntil = undefined;\n }\n }\n const cacheTags = context.renderOpts.collectedTags;\n // If the request is for a static response, we can cache it so long\n // as it's not edge.\n if (isIsr) {\n const blob = await response.blob();\n // Copy the headers from the response.\n const headers = toNodeOutgoingHttpHeaders(response.headers);\n if (cacheTags) {\n headers[NEXT_CACHE_TAGS_HEADER] = cacheTags;\n }\n if (!headers['content-type'] && blob.type) {\n headers['content-type'] = blob.type;\n }\n const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate;\n const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire;\n // Create the cache entry for the response.\n const cacheEntry = {\n value: {\n kind: CachedRouteKind.APP_ROUTE,\n status: response.status,\n body: Buffer.from(await blob.arrayBuffer()),\n headers\n },\n cacheControl: {\n revalidate,\n expire\n }\n };\n return cacheEntry;\n } else {\n // send response without caching if not ISR\n await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil);\n return null;\n }\n } catch (err) {\n // if this is a background revalidate we need to report\n // the request error here as it won't be bubbled\n if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) {\n const silenceLog = false;\n await routeModule.onRequestError(req, err, {\n routerKind: 'App Router',\n routePath: srcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate\n })\n }, silenceLog, routerServerContext);\n }\n throw err;\n }\n };\n const cacheEntry = await routeModule.handleResponse({\n req,\n nextConfig,\n cacheKey,\n routeKind: RouteKind.APP_ROUTE,\n isFallback: false,\n prerenderManifest,\n isRoutePPREnabled: false,\n isOnDemandRevalidate,\n revalidateOnlyGenerated,\n responseGenerator,\n waitUntil: ctx.waitUntil,\n isMinimalMode\n });\n // we don't create a cacheEntry for ISR\n if (!isIsr) {\n return null;\n }\n if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) {\n var _cacheEntry_value1;\n throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), \"__NEXT_ERROR_CODE\", {\n value: \"E701\",\n enumerable: false,\n configurable: true\n });\n }\n if (!isMinimalMode) {\n res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT');\n }\n // Draft mode should never be cached\n if (isDraftMode) {\n res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate');\n }\n const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers);\n if (!(isMinimalMode && isIsr)) {\n headers.delete(NEXT_CACHE_TAGS_HEADER);\n }\n // If cache control is already set on the response we don't\n // override it to allow users to customize it via next.config\n if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) {\n headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl));\n }\n await sendResponse(nodeNextReq, nodeNextRes, // @ts-expect-error - Argument of type 'Buffer<ArrayBufferLike>' is not assignable to parameter of type 'BodyInit | null | undefined'.\n new Response(cacheEntry.value.body, {\n headers,\n status: cacheEntry.value.status || 200\n }));\n return null;\n };\n // TODO: activeSpan code path is for when wrapped by\n // next-server can be removed when this is no longer used\n if (isWrappedByNextServer && activeSpan) {\n await handleResponse(activeSpan);\n } else {\n parentSpan = tracer.getActiveScopeSpan();\n await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, {\n spanName: `${method} ${srcPage}`,\n kind: SpanKind.SERVER,\n attributes: {\n 'http.method': method,\n 'http.target': req.url\n }\n }, handleResponse), undefined, !isWrappedByNextServer);\n }\n } catch (err) {\n if (!(err instanceof NoFallbackError)) {\n const silenceLog = false;\n await routeModule.onRequestError(req, err, {\n routerKind: 'App Router',\n routePath: normalizedSrcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate\n })\n }, silenceLog, routerServerContext);\n }\n // rethrow so that we can handle serving error page\n // If this is during static generation, throw the error again.\n if (isIsr) throw err;\n // Otherwise, send a 500 response.\n await sendResponse(nodeNextReq, nodeNextRes, new Response(null, {\n status: 500\n }));\n return null;\n }\n}\n\n//# sourceMappingURL=app-route.js.map\n"],"names":["gatewayUrl","process","env","GATEWAY_URL","replace","call","method","path","body","res","fetch","headers","authorization","undefined","JSON","stringify","cache","e","ok","status","data","error","message","text","parse","err","checkGatewayAuth","password","gateway","providers","budgets","models","logs","limit","usage","since","usageSeries","bucket","config","putConfig","changePassword","current","next","addProvider","p","editProvider","id","patch","encodeURIComponent","removeProvider","addKey","key","removeKey","index","addProviderModel","model","price","addProviderModels","removeProviderModel","clearProviderModels","testProvider","discoverModels","setRoute","alias","removeRoute","endpoint","setRtk","enabled","setCaveman","level","setPonytail","addServerKey","removeServerKey","POST","req","json","catch","length","r","jar","set","httpOnly","sameSite","secure","maxAge"],"mappings":"4jCACA,IAAA,EAAA,EAAA,CAAA,CAAA,OAWA,SAASA,IACP,MAAO,CAACC,QAAQC,GAAG,CAACC,WAAW,EAAI,wBAAA,CAAwB,CAAEC,OAAO,CAAC,MAAO,GAC9E,CASA,eAAeC,EAAQC,CAAc,CAAEC,CAAY,CAAEC,CAAc,MAC7DC,EACJ,GAAI,CACFA,EAAM,MAAMC,MAAMV,IAAeO,EAAM,QACrCD,EACAK,QAAS,CACPC,cAAe,CAAC,OAAO,EAAE,MAAM,CAAA,EAAA,EAAA,eAAA,AAAe,IAAA,CAAI,CAClD,QAAaC,IAATL,EAAqB,CAAE,eAAgB,kBAAmB,EAAI,CAAC,CAAC,AACtE,EACAA,UAAeK,IAATL,EAAqBM,KAAKC,SAAS,CAACP,QAAQK,EAClDG,MAAO,UACT,EACF,CAAE,MAAOC,EAAG,CACV,MAAO,CAAEC,IAAI,EAAOC,OAAQ,EAAGC,KAAM,KAAMC,MAAO,CAAC,qBAAqB,EAAGJ,EAAYK,OAAO,CAAA,CAAE,AAAC,CACnG,CAEA,IAAMC,EAAO,MAAMd,EAAIc,IAAI,GACvBH,EAAiB,KACrB,GAAI,CACFA,EAAOG,EAAQT,KAAKU,KAAK,CAACD,GAAc,IAC1C,CAAE,KAAM,CACNH,EAAO,IACT,CACA,GAAI,CAACX,EAAIS,EAAE,CAAE,CACX,IAAMO,EAAOL,GAAoCC,OAAS,CAAC,iBAAiB,EAAEZ,EAAIU,MAAM,CAAA,CAAE,CAC1F,MAAO,CAAED,IAAI,EAAOC,OAAQV,EAAIU,MAAM,CAAEC,OAAMC,MAAOI,CAAI,CAC3D,CACA,MAAO,CAAEP,IAAI,EAAMC,OAAQV,EAAIU,MAAM,MAAEC,CAAK,CAC9C,CAIO,eAAeM,EAAiBC,CAAgB,EACrD,GAAI,CAKF,MAAOlB,CAJK,MAAMC,MAAMV,IAAe,mBAAoB,CACzDW,QAAS,CAAEC,cAAe,CAAC,OAAO,EAAEe,EAAAA,CAAU,AAAC,EAC/CX,MAAO,UACT,EAAA,EACWE,EAAE,AACf,CAAE,KAAM,CACN,OAAO,CACT,CACF,yCAEuB,CACrBW,UAAW,IAAMxB,EAAwC,MAAO,oBAChEyB,QAAS,IAAMzB,EAAkC,MAAO,kBACxD0B,OAAQ,IAAM1B,EAAoB,MAAO,iBACzC2B,KAAM,CAACC,EAAQ,GAAG,GAAK5B,EAA2B,MAAO,CAAC,kBAAkB,EAAE4B,EAAAA,CAAO,EACrFC,MAAO,CAACC,EAAQ,CAAC,GAAK9B,EAAmB,MAAO,CAAC,mBAAmB,EAAE8B,EAAAA,CAAO,EAC7EC,YAAa,CAACD,EAAeE,IAC3BhC,EAAqC,MAAO,CAAC,0BAA0B,EAAE8B,EAAM,QAAQ,EAAEE,EAAAA,CAAQ,EACnGC,OAAQ,IAAMjC,EAAmB,MAAO,iBACxCkC,UAAW,AAAChB,GAAiBlB,EAA4C,MAAO,gBAAiB,MAAEkB,CAAK,GACxGiB,eAAgB,CAACC,EAAiBC,IAChCrC,EAAsB,MAAO,kBAAmB,SAAEoC,OAASC,CAAK,GAGlEC,YAAcC,AAAD,GAQPvC,EAAkB,OAAQ,mBAAoBuC,GACpDC,aAAc,CAACC,EAAYC,IACzB1C,EAAkB,MAAO,CAAC,iBAAiB,EAAE2C,mBAAmBF,GAAAA,CAAK,CAAEC,GACzEE,eAAgB,AAACH,GAAezC,EAAkB,SAAU,CAAC,iBAAiB,EAAE2C,mBAAmBF,GAAAA,CAAK,EACxGI,OAAQ,CAACJ,EAAYK,IACnB9C,EAAkB,OAAQ,CAAC,iBAAiB,EAAE2C,mBAAmBF,GAAI,KAAK,CAAC,CAAE,KAAEK,CAAI,GACrFC,UAAW,CAACN,EAAYO,IACtBhD,EAAkB,SAAU,CAAC,iBAAiB,EAAE2C,mBAAmBF,GAAI,MAAM,EAAEO,EAAAA,CAAO,EACxFC,iBAAkB,CAACR,EAAYS,EAAeC,IAC5CnD,EAAkB,OAAQ,CAAC,iBAAiB,EAAE2C,mBAAmBF,GAAI,OAAO,CAAC,CAAE,OAAES,EAAO,GAAGC,CAAK,AAAC,GACnGC,kBAAmB,CAACX,EAAYf,IAC9B1B,EAAkB,OAAQ,CAAC,iBAAiB,EAAE2C,mBAAmBF,GAAI,OAAO,CAAC,CAAE,QAAEf,CAAO,GAC1F2B,oBAAqB,CAACZ,EAAYS,IAChClD,EAAkB,SAAU,CAAC,iBAAiB,EAAE2C,mBAAmBF,GAAI,QAAQ,EAAEE,mBAAmBO,GAAAA,CAAQ,EAC9GI,oBAAqB,AAACb,GACpBzC,EAAkB,SAAU,CAAC,iBAAiB,EAAE2C,mBAAmBF,GAAI,OAAO,CAAC,EACjFc,aAAc,AAACd,GAAezC,EAAiB,OAAQ,CAAC,iBAAiB,EAAE2C,mBAAmBF,GAAI,KAAK,CAAC,EACxGe,eAAgB,AAACf,GACfzC,EACE,OACA,CAAC,iBAAiB,EAAE2C,mBAAmBF,GAAI,QAAQ,CAAC,EAIxDgB,SAAU,CACRC,EACAvD,IACGH,EAAkB,MAAO,CAAC,cAAc,EAAE2C,mBAAmBe,GAAAA,CAAQ,CAAEvD,GAC5EwD,YAAa,AAACD,GAAkB1D,EAAkB,SAAU,CAAC,cAAc,EAAE2C,mBAAmBe,GAAAA,CAAQ,EAGxGE,SAAU,IAAM5D,EAAsB,MAAO,mBAC7C6D,OAAQ,AAACC,GAAqB9D,EAAkB,MAAO,sBAAuB,SAAE8D,CAAQ,GACxFC,WAAY,AAACC,GAAuBhE,EAAkB,MAAO,0BAA2B,OAAEgE,CAAM,GAChGC,YAAa,AAACD,GAAuBhE,EAAkB,MAAO,2BAA4B,OAAEgE,CAAM,GAClGE,aAAc,AAACpB,GAAgB9C,EAAkB,OAAQ,uBAAwB,KAAE8C,CAAI,GACvFqB,gBAAiB,AAACnB,GAAkBhD,EAAkB,SAAU,CAAC,qBAAqB,EAAEgD,EAAAA,CAAO,CACjG,4BE9HA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACAb,EAAAA,EAAAA,CAAAA,CAAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,CAAA,CAAA,OAAA,IAAA,EAAA,EAAA,CAAA,CAAA,KDhBA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OAOO,eAAeiC,EAAKC,CAAY,EACrC,GAAM,SAAEjC,CAAO,CAAEC,MAAI,CAAE,CAAI,MAAMgC,EAAIC,IAAI,GAAGC,KAAK,CAAC,IAAM,CAAC,EAAC,CAAC,EAC3D,GAAI,CAACnC,GAAW,CAACC,EACf,IADqB,GACd,EAAA,YAAY,CAACiC,IAAI,CAAC,CAAEtD,MAAO,+BAAgC,EAAG,CAAEF,OAAQ,GAAI,GAErF,GAAIuB,EAAKmC,MAAM,CAAG,EAChB,CADmB,MACZ,EAAA,YAAY,CAACF,IAAI,CAAC,CAAEtD,MAAO,4CAA6C,EAAG,CAAEF,OAAQ,GAAI,GAGlG,IAAM2D,EAAI,MAAM,EAAA,OAAO,CAACtC,cAAc,CAACC,EAASC,UAChD,AAAKoC,EAAE5D,EAAH,AAAK,EAAE,AAKX6D,CADY,MAAM,CAAA,EAAA,EAAA,OAAA,AAAO,GAAA,EACrBC,GAAG,CAAC,EAAA,cAAc,CAAE,CAAA,EAAA,EAAA,WAAA,AAAW,EAACtC,GAAO,CACzCuC,UAAU,EACVC,SAAU,MACVC,QAAQ,EACR5E,KAAM,IACN6E,OAAQ,KAAK,AACf,GACO,EAAA,AAFa,YAED,CAACT,IAAI,CAAC,CAAEzD,GAAI,CAJI,CAIC,IAX3B,EAAA,YAAY,CAACyD,IAAI,CAAC,CAAEtD,MAAOyD,EAAEzD,KAAK,EAAI,2BAA4B,EAAG,CAAEF,OAAQ2D,EAAE3D,MAAM,EAAI,GAAI,EAY1G,yBChBA,IAAA,EAAA,EAAA,CAAA,CAAA,OAIA,IAAM,EAAc,IAAI,EAAA,mBAAmB,CAAC,CACxC,WAAY,CACR,KAAM,EAAA,SAAS,CAAC,SAAS,CACzB,KAAM,sBACN,SAAU,gBACV,SAAU,QACV,WAAY,EAChB,EACA,QAAS,CAAA,OACT,IADiD,eACc,CAA3C,EACpB,iBAAkB,0CAClB,iBAZqB,GAcrB,SAAU,EAKV,GAAG,AAEC,CAAC,CAAC,AACV,GAIM,kBAAE,CAAgB,cAPwC,QAOtC,CAAoB,aAAE,CAAW,CAAE,CAAG,EAQzD,eAAe,EAAQ,CAAG,CAAE,CAAG,CAAE,CAAG,EACnC,EAAI,WAAW,EACf,AADiB,CACjB,EAAA,EAAA,cAAA,AAAc,EAAC,EAAK,EAAI,WAAW,EAEnC,EAAY,KAAK,EAAE,AACnB,CAAA,EAAA,EAAA,cAAA,AAAc,EAAC,EAAK,+BAAgC,QAAQ,MAAM,CAAC,MAAM,IAE7E,IAAI,EAAU,sBAKV,EAAU,EAAQ,OAAO,CAAC,WAAY,KAAO,IAMjD,IAAM,EAAgB,MAAM,EAAY,OAAO,CAAC,EAAK,EAAK,SACtD,EACA,mBAHE,CAAA,CAIN,GACA,GAAI,CAAC,EAID,OAHA,EAAI,IADY,MACF,CAAG,IACjB,EAAI,GAAG,CAAC,eACS,MAAjB,CAAwB,CAApB,IAAyB,KAAhB,EAAoB,EAAI,SAAS,CAAC,IAAI,CAAC,EAAK,QAAQ,OAAO,IACjE,KAEX,GAAM,SAAE,CAAO,cAAE,CAAY,CAAE,QAAM,YAAE,CAAU,WAAE,CAAS,aAAE,CAAW,mBAAE,CAAiB,qBAAE,CAAmB,sBAAE,CAAoB,yBAAE,CAAuB,CAAE,kBAAgB,CAAE,yBAAuB,uBAAE,CAAqB,CAAE,CAAG,EACjO,EAAoB,CAAA,EAAA,EAAA,gBAAgB,AAAhB,EAAiB,GACvC,EAAQ,GAAQ,EAAkB,aAAa,CAAC,EAAkB,EAAI,EAAkB,MAAM,CAAC,EAAA,AAAiB,EAC9G,EAAY,WAEa,MAAvB,EAA8B,KAAK,EAAI,EAAoB,SAAA,AAAS,EACpE,AADsE,MAChE,EAAoB,SAAS,CAAC,EAAK,EAAK,GAAW,GAEzD,EAAI,GAAG,CAAC,gCAEL,MAEX,GAAI,GAAS,CAAC,EAAa,CACvB,IAAM,GAAgB,CAAQ,EAAkB,MAAM,CAAC,EAAiB,CAClE,EAAgB,EAAkB,aAAa,CAAC,EAAkB,CACxE,GAAI,GACI,CAA2B,MAAb,KADH,GACW,EAAc,CAAC,EAAe,CACpD,GAAI,EAAW,WAAW,CACtB,CADwB,MACjB,MAAM,GAEjB,OAAM,IAAI,EAAA,eACd,AAD6B,CAGrC,CACA,IAAI,EAAW,MACX,GAAU,EAAY,IAAb,CAAkB,EAAK,EAAD,EAG/B,EAAW,AAAa,OAHqB,KAC7C,EAAW,CAAA,EAEwB,IAAM,CAAA,EAE7C,IAAM,GACgB,IAAtB,EAAY,EAAkB,GAAb,EAEjB,CAAC,EAKK,EAAqB,GAAS,CAAC,EAIjC,GAAyB,GACzB,CAAA,EAAA,EAAA,iBADkD,IAClD,AAAqB,EAAC,CAClB,KAAM,EACN,WAd2F,eAe3F,uBACJ,GAEJ,IAAM,EAAS,EAAI,MAAM,EAAI,MACvB,EAAS,CAAA,EAAA,EAAA,SAAA,AAAS,IAClB,EAAa,EAAO,kBAAkB,GACtC,GAAwB,EAA+B,MAAvB,EAA8B,KAAK,EAAI,EAAoB,qBAAA,AAAqB,EAChH,GAAgB,CAAQ,CAAA,EAAA,EAAA,cAAA,AAAc,EAAC,EAAK,eAC5C,EAAmB,CAAA,EAAA,EAAA,cAAA,AAAc,EAAC,EAAK,qBAAuB,MAAM,EAAY,mBAAmB,CAAC,EAAK,EAAY,EAAmB,EAC9I,AAAoB,OAAO,GAAS,EAAJ,AAAqB,iBAAiB,GACtE,WAAW,kBAAkB,CAAG,EAChC,IAAM,EAAU,QACZ,EACA,aAAc,EAAkB,OAAO,CACvC,WAAY,CACR,aAAc,CACV,gBAAgB,CAAQ,EAAW,YAAY,CAAC,cAAc,AAClE,EACA,iBAAiB,CAAQ,EAAW,eAAe,yBACnD,mBACA,EACA,kBAAmB,EAAW,SAAS,CACvC,UAAW,EAAI,SAAS,CACxB,QAAS,AAAC,IACN,EAAI,EAAE,CAAC,QAAS,EACpB,EACA,sBAAkB,EAClB,8BAA+B,CAAC,EAAO,EAAU,EAAc,IAAa,EAAY,cAAc,CAAC,EAAK,EAAO,EAAc,EAAY,EACjJ,EACA,cAAe,SACX,eACA,CACJ,CACJ,EACM,EAAc,IAAI,EAAA,eAAe,CAAC,GAClC,EAAc,IAAI,EAAA,gBAAgB,CAAC,GACnC,EAAU,EAAA,kBAAkB,CAAC,mBAAmB,CAAC,EAAa,CAAA,EAAA,EAAA,sBAAA,AAAsB,EAAC,IAC3F,GAAI,CAEA,IADI,EACE,EAAoB,MAAO,GACtB,EAAY,MAAM,CAAC,EAAS,GAAS,OAAO,CAAC,KAChD,GAAI,CAAC,EAAM,OACX,EAAK,aAAa,CAAC,CACf,mBAAoB,EAAI,UAAU,CAClC,YAAY,CAChB,GACA,IAAM,EAAqB,EAAO,qBAAqB,GAEvD,GAAI,CAAC,EACD,OAEJ,GAAI,EAAmB,GAAG,CAAC,EAHF,kBAGwB,EAAA,cAAc,CAAC,aAAa,CAAE,YAC3E,QAAQ,IAAI,CAAC,CAAC,2BAA2B,EAAE,EAAmB,GAAG,CAAC,kBAAkB,qEAAqE,CAAC,EAG9J,IAAM,EAAQ,EAAmB,GAAG,CAAC,cACrC,GAAI,EAAO,CACP,IAAM,EAAO,CAAA,EAAG,EAAO,CAAC,EAAE,EAAA,CAAO,CACjC,EAAK,aAAa,CAAC,CACf,aAAc,EACd,aAAc,EACd,iBAAkB,CACtB,GACA,EAAK,UAAU,CAAC,GAGZ,GAAc,IAAe,IAC7B,EADmC,AACxB,YAAY,CAAC,aAAc,GACtC,EAAW,UAAU,CAAC,GAE9B,MACI,CADG,CACE,UAAU,CAAC,CAAA,EAAG,EAAO,CAAC,EAAE,EAAA,CAAS,CAE9C,GAEE,EAAiB,MAAO,QACtB,EA4FI,EA3FR,IAAM,EAAoB,MAAO,oBAAE,CAAkB,CAAE,IACnD,GAAI,CACA,GAAI,CAAC,GAAiB,GAAwB,GAA2B,CAAC,EAKtE,OAJA,EAAI,SADsF,CAC5E,CAAG,IAEjB,EAAI,SAAS,CAAC,iBAAkB,eAChC,EAAI,GAAG,CAAC,gCACD,KAEX,IAAM,EAAW,MAAM,EAAkB,GACzC,EAAI,YAAY,CAAG,EAAQ,UAAU,CAAC,YAAY,CAClD,IAAI,EAAmB,EAAQ,UAAU,CAAC,gBAAgB,CAGtD,GACI,EAAI,SAAS,EAAE,CACf,CAFc,CAEV,SAAS,CAAC,GACd,OAAmB,GAG3B,IAAM,EAAY,EAAQ,UAAU,CAAC,aAAa,CAGlD,IAAI,EA6BA,OADA,MAAM,CAAA,EAAA,EAAA,YAAA,AAAY,EAAC,EAAa,EAAa,EAAU,EAAQ,UAAU,CAAC,gBAAgB,EACnF,IA7BA,EACP,IAAM,EAAO,MAAM,EAAS,IAAI,GAE1B,EAAU,CAAA,EAAA,EAAA,yBAAA,AAAyB,EAAC,EAAS,OAAO,EACtD,IACA,CAAO,CAAC,EAAA,GADG,mBACmB,CAAC,CAAG,CAAA,EAElC,CAAC,CAAO,CAAC,eAAe,EAAI,EAAK,IAAI,EAAE,CACvC,CAAO,CAAC,eAAe,CAAG,EAAK,IAAA,AAAI,EAEvC,IAAM,EAAa,AAAkD,SAA3C,EAAQ,UAAU,CAAC,mBAAmB,IAAoB,EAAQ,UAAU,CAAC,mBAAmB,EAAI,EAAA,cAAA,AAAc,GAAG,AAAQ,EAAQ,UAAU,CAAC,mBAAmB,CACvL,EAAS,AAA8C,SAAvC,EAAQ,UAAU,CAAC,eAAe,EAAoB,EAAQ,UAAU,CAAC,eAAe,EAAI,EAAA,cAAc,MAAG,EAAY,EAAQ,UAAU,CAAC,eAAe,CAcjL,MAZmB,CACf,AAWG,MAXI,CACH,KAAM,EAAA,eAAe,CAAC,SAAS,CAC/B,OAAQ,EAAS,MAAM,CACvB,KAAM,OAAO,IAAI,CAAC,MAAM,EAAK,WAAW,YACxC,CACJ,EACA,aAAc,YACV,SACA,CACJ,CACJ,CAEJ,CAKJ,CAAE,KALS,CAKF,EAAK,CAeV,MAZI,AAAsB,QAAO,KAAK,EAAI,EAAmB,OAAA,AAAO,EAAE,CAElE,MAAM,EAAY,cAAc,CAAC,EAAK,EAAK,CACvC,WAAY,aACZ,UAAW,EACX,UAAW,QACX,iBAAkB,CAAA,EAAA,EAAA,mBAAA,AAAmB,EAAC,oBAClC,uBACA,CACJ,EACJ,GAAG,AATgB,EASJ,GAEb,CACV,CACJ,EACM,EAAa,MAAM,EAAY,cAAc,CAAC,KAChD,aACA,WACA,EACA,UAAW,EAAA,SAAS,CAAC,SAAS,CAC9B,YAAY,EACZ,oBACA,mBAAmB,uBACnB,0BACA,oBACA,EACA,UAAW,EAAI,SAAS,eACxB,CACJ,GAEA,GAAI,CAAC,EACD,KADQ,EACD,KAEX,GAAI,CAAe,MAAd,CAAqB,EAAS,AAA0C,GAA9C,IAAK,EAAoB,EAAW,KAAA,AAAK,EAAY,KAAK,EAAI,EAAkB,IAAI,IAAM,EAAA,eAAe,CAAC,SAAS,CAE9I,CAFgJ,KAE1I,OAAO,cAAc,CAAC,AAAI,MAAM,CAAC,kDAAkD,EAAgB,MAAd,CAAqB,EAAS,AAA2C,GAA/C,IAAK,EAAqB,EAAW,KAAA,AAAK,EAAY,KAAK,EAAI,EAAmB,IAAI,CAAA,CAAE,EAAG,oBAAqB,CACjO,MAAO,OACP,YAAY,EACZ,cAAc,CAClB,EAEA,CAAC,GACD,EAAI,SAAS,CADG,AACF,iBAAkB,EAAuB,cAAgB,EAAW,MAAM,CAAG,OAAS,EAAW,OAAO,CAAG,QAAU,OAGnI,GACA,EAAI,QADS,CACA,CAAC,gBAAiB,2DAEnC,IAAM,EAAU,CAAA,EAAA,EAAA,2BAAA,AAA2B,EAAC,EAAW,KAAK,CAAC,OAAO,EAcpE,OAbI,AAAE,CAAD,EAAkB,GACnB,EADwB,AAChB,GADmB,GACb,CAAC,EAAA,sBAAsB,GAIrC,EAAW,YAAY,EAAK,EAAD,AAAK,SAAS,CAAC,kBAAqB,EAAD,AAAS,GAAG,CAAC,kBAAkB,AAC7F,EAAQ,GAAG,CAAC,gBAAiB,CAAA,EAAA,EAAA,qBAAA,AAAqB,EAAC,EAAW,YAAY,GAE9E,MAAM,CAAA,EAAA,EAAA,YAAY,AAAZ,EAAa,EAAa,EAChC,IAAI,SAAS,EAAW,KAAK,CAAC,IAAI,CAAE,SAChC,EACA,OAAQ,EAAW,KAAK,CAAC,MAAM,EAAI,GACvC,IACO,IACX,CAGI,IAAyB,EACzB,MAAM,EAAe,EADgB,EAGrC,EAAa,EAAO,kBAAkB,GACtC,MAAM,EAAO,qBAAqB,CAAC,EAAI,OAAO,CAAE,IAAI,EAAO,KAAK,CAAC,EAAA,cAAc,CAAC,aAAa,CAAE,CACvF,SAAU,CAAA,EAAG,EAAO,CAAC,EAAE,EAAA,CAAS,CAChC,KAAM,EAAA,QAAQ,CAAC,MAAM,CACrB,WAAY,CACR,cAAe,EACf,cAAe,EAAI,GAAG,AAC1B,CACJ,EAAG,QAAiB,EAAW,CAAC,GAE5C,CAAE,MAAO,EAAK,CAeV,GAdM,aAAe,EAAA,eAAe,EAEhC,CAFmC,KAE7B,EAAY,cAAc,CAAC,EAAK,EAAK,CACvC,WAAY,aACZ,UAAW,EACX,UAAW,QACX,iBAAkB,CAAA,EAAA,EAAA,mBAAA,AAAmB,EAAC,oBAClC,uBACA,CACJ,EACJ,EATmB,CAShB,EAAY,GAIf,EAAO,MAAM,EAKjB,OAHA,MAAM,CAAA,EAAA,EAAA,YAAY,AAAZ,EAAa,EAAa,EAAa,IAAI,SAAS,KAAM,CAC5D,OAAQ,GACZ,IACO,IACX,CACJ,mCA5TA,SAAS,EACL,MAAO,CAAA,EAAA,EAAA,UAAA,AAAW,EAAC,kBACf,uBACA,CACJ,EACJ","ignoreList":[2]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[18622,(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"))},56704,(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"))},32319,(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"))},24725,(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"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},93695,(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"))},66680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},72932,e=>{"use strict";var t=e.i(47909),r=e.i(74017),a=e.i(96250),n=e.i(59756),s=e.i(61916),o=e.i(74677),i=e.i(69741),l=e.i(16795),u=e.i(87718),d=e.i(95169),p=e.i(47587),c=e.i(66012),h=e.i(70101),x=e.i(26937),R=e.i(10372),v=e.i(93695);e.i(20232);var w=e.i(220),m=e.i(89171),f=e.i(75601);async function g(e,t){let r,a,n=t.join("/");if(!n.startsWith("admin/"))return m.NextResponse.json({error:"not found"},{status:404});let s=e.nextUrl.search,o=`${(process.env.GATEWAY_URL??"http://127.0.0.1:18080").replace(/\/$/,"")}/${n}${s}`;if("admin/console/stream"===n)try{let e=await fetch(o,{headers:{authorization:`Bearer ${await (0,f.currentPassword)()}`},cache:"no-store"});if(!e.body)return m.NextResponse.json({error:"no stream"},{status:502});return new Response(e.body,{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache, no-transform",Connection:"keep-alive","X-Accel-Buffering":"no"}})}catch(e){return m.NextResponse.json({error:`gateway unreachable: ${e.message}`},{status:502})}"GET"!==e.method&&"DELETE"!==e.method&&(r=await e.text());try{a=await fetch(o,{method:e.method,headers:{authorization:`Bearer ${await (0,f.currentPassword)()}`,...r?{"content-type":"application/json"}:{}},body:r||void 0,cache:"no-store"})}catch(e){return m.NextResponse.json({error:`gateway unreachable: ${e.message}`},{status:502})}let i=await a.text();return new m.NextResponse(i||"{}",{status:a.status,headers:{"content-type":"application/json"}})}async function y(e,t){return g(e,(await t.params).path)}async function E(e,t){return g(e,(await t.params).path)}async function C(e,t){return g(e,(await t.params).path)}async function b(e,t){return g(e,(await t.params).path)}e.s(["DELETE",0,b,"GET",0,y,"POST",0,E,"PUT",0,C],51225);var A=e.i(51225);let T=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/gw/[...path]/route",pathname:"/api/gw/[...path]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/gw/[...path]/route.ts",nextConfigOutput:"",userland:A,...{}}),{workAsyncStorage:N,workUnitAsyncStorage:P,serverHooks:q}=T;async function j(e,t,a){a.requestMeta&&(0,n.setRequestMeta)(e,a.requestMeta),T.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let m="/api/gw/[...path]/route";m=m.replace(/\/index$/,"")||"/";let f=await T.prepare(e,t,{srcPage:m,multiZoneDraftMode:!1});if(!f)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:g,deploymentId:y,params:E,nextConfig:C,parsedUrl:b,isDraftMode:A,prerenderManifest:N,routerServerContext:P,isOnDemandRevalidate:q,revalidateOnlyGenerated:j,resolvedPathname:S,clientReferenceManifest:_,serverActionsManifest:k}=f,O=(0,i.normalizeAppPath)(m),U=!!(N.dynamicRoutes[O]||N.routes[S]),H=async()=>((null==P?void 0:P.render404)?await P.render404(e,t,b,!1):t.end("This page could not be found"),null);if(U&&!A){let e=!!N.routes[S],t=N.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(C.adapterPath)return await H();throw new v.NoFallbackError}}let $=null;!U||T.isDev||A||($="/index"===($=S)?"/":$);let I=!0===T.isDev||!U,D=U&&!I;k&&_&&(0,o.setManifestsSingleton)({page:m,clientReferenceManifest:_,serverActionsManifest:k});let M=e.method||"GET",B=(0,s.getTracer)(),F=B.getActiveScopeSpan(),K=!!(null==P?void 0:P.isWrappedByNextServer),L=!!(0,n.getRequestMeta)(e,"minimalMode"),G=(0,n.getRequestMeta)(e,"incrementalCache")||await T.getIncrementalCache(e,C,N,L);null==G||G.resetRequestCache(),globalThis.__incrementalCache=G;let W={params:E,previewProps:N.preview,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts},cacheComponents:!!C.cacheComponents,supportsDynamicResponse:I,incrementalCache:G,cacheLifeProfiles:C.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>T.onRequestError(e,t,a,n,P)},sharedContext:{buildId:g,deploymentId:y}},X=new l.NodeNextRequest(e),z=new l.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(X,(0,u.signalFromNodeResponse)(t));try{let n,o=async e=>T.handle(V,W).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")!==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 a=r.get("next.route");if(a){let t=`${M} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",a),n.updateName(t))}else e.updateName(`${M} ${m}`)}),i=async n=>{var s,i;let l=async({previousCacheEntry:r})=>{try{if(!L&&q&&j&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await o(n);e.fetchMetrics=W.renderOpts.fetchMetrics;let i=W.renderOpts.pendingWaitUntil;i&&a.waitUntil&&(a.waitUntil(i),i=void 0);let l=W.renderOpts.collectedTags;if(!U)return await (0,c.sendResponse)(X,z,s,W.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[R.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>=R.INFINITE_CACHE)&&W.renderOpts.collectedRevalidate,a=void 0===W.renderOpts.collectedExpire||W.renderOpts.collectedExpire>=R.INFINITE_CACHE?void 0:W.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await T.onRequestError(e,t,{routerKind:"App Router",routePath:m,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:q})},!1,P),t}},u=await T.handleResponse({req:e,nextConfig:C,cacheKey:$,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:N,isRoutePPREnabled:!1,isOnDemandRevalidate:q,revalidateOnlyGenerated:j,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:L});if(!U)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==w.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});L||t.setHeader("x-nextjs-cache",q?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return L&&U||d.delete(R.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,x.getCacheControlHeader)(u.cacheControl)),await (0,c.sendResponse)(X,z,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};K&&F?await i(F):(n=B.getActiveScopeSpan(),await B.withPropagatedContext(e.headers,()=>B.trace(d.BaseServerSpan.handleRequest,{spanName:`${M} ${m}`,kind:s.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},i),void 0,!K))}catch(t){if(t instanceof v.NoFallbackError||await T.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:q})},!1,P),U)throw t;return await (0,c.sendResponse)(X,z,new Response(null,{status:500})),null}}e.s(["handler",0,j,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:N,workUnitAsyncStorage:P})},"routeModule",0,T,"serverHooks",0,q,"workAsyncStorage",0,N,"workUnitAsyncStorage",0,P],72932)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__082azhr._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/next/dist/esm/build/templates/app-route.js","../../../src/app/api/gw/%5B...path%5D/route.ts"],"sourcesContent":["import { AppRouteRouteModule } from \"next/dist/esm/server/route-modules/app-route/module.compiled\";\nimport { RouteKind } from \"next/dist/esm/server/route-kind\";\nimport { patchFetch as _patchFetch } from \"next/dist/esm/server/lib/patch-fetch\";\nimport { addRequestMeta, getRequestMeta, setRequestMeta } from \"next/dist/esm/server/request-meta\";\nimport { getTracer, SpanKind } from \"next/dist/esm/server/lib/trace/tracer\";\nimport { setManifestsSingleton } from \"next/dist/esm/server/app-render/manifests-singleton\";\nimport { normalizeAppPath } from \"next/dist/esm/shared/lib/router/utils/app-paths\";\nimport { NodeNextRequest, NodeNextResponse } from \"next/dist/esm/server/base-http/node\";\nimport { NextRequestAdapter, signalFromNodeResponse } from \"next/dist/esm/server/web/spec-extension/adapters/next-request\";\nimport { BaseServerSpan } from \"next/dist/esm/server/lib/trace/constants\";\nimport { getRevalidateReason } from \"next/dist/esm/server/instrumentation/utils\";\nimport { sendResponse } from \"next/dist/esm/server/send-response\";\nimport { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from \"next/dist/esm/server/web/utils\";\nimport { getCacheControlHeader } from \"next/dist/esm/server/lib/cache-control\";\nimport { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from \"next/dist/esm/lib/constants\";\nimport { NoFallbackError } from \"next/dist/esm/shared/lib/no-fallback-error.external\";\nimport { CachedRouteKind } from \"next/dist/esm/server/response-cache\";\nimport * as userland from \"INNER_APP_ROUTE\";\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\nconst nextConfigOutput = \"\"\nconst routeModule = new AppRouteRouteModule({\n definition: {\n kind: RouteKind.APP_ROUTE,\n page: \"/api/gw/[...path]/route\",\n pathname: \"/api/gw/[...path]\",\n filename: \"route\",\n bundlePath: \"\"\n },\n distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '',\n relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '',\n resolvedPagePath: \"[project]/src/app/api/gw/[...path]/route.ts\",\n nextConfigOutput,\n // The static import is used for initialization (methods, dynamic, etc.).\n userland: userland,\n // In Turbopack dev mode, also provide a getter that calls require() on every\n // request. This re-reads from devModuleCache so HMR updates are picked up,\n // and the async wrapper unwraps async-module Promises (ESM-only\n // serverExternalPackages) automatically.\n ...process.env.TURBOPACK && process.env.__NEXT_DEV_SERVER ? {\n getUserland: ()=>import(\"INNER_APP_ROUTE\")\n } : {}\n});\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule;\nfunction patchFetch() {\n return _patchFetch({\n workAsyncStorage,\n workUnitAsyncStorage\n });\n}\nexport { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, };\nexport async function handler(req, res, ctx) {\n if (ctx.requestMeta) {\n setRequestMeta(req, ctx.requestMeta);\n }\n if (routeModule.isDev) {\n addRequestMeta(req, 'devRequestTimingInternalsEnd', process.hrtime.bigint());\n }\n let srcPage = \"/api/gw/[...path]/route\";\n // turbopack doesn't normalize `/index` in the page name\n // so we need to to process dynamic routes properly\n // TODO: fix turbopack providing differing value from webpack\n if (process.env.TURBOPACK) {\n srcPage = srcPage.replace(/\\/index$/, '') || '/';\n } else if (srcPage === '/index') {\n // we always normalize /index specifically\n srcPage = '/';\n }\n const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE;\n const prepareResult = await routeModule.prepare(req, res, {\n srcPage,\n multiZoneDraftMode\n });\n if (!prepareResult) {\n res.statusCode = 400;\n res.end('Bad Request');\n ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve());\n return null;\n }\n const { buildId, deploymentId, params, nextConfig, parsedUrl, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname, clientReferenceManifest, serverActionsManifest } = prepareResult;\n const normalizedSrcPage = normalizeAppPath(srcPage);\n let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]);\n const render404 = async ()=>{\n // TODO: should route-module itself handle rendering the 404\n if (routerServerContext == null ? void 0 : routerServerContext.render404) {\n await routerServerContext.render404(req, res, parsedUrl, false);\n } else {\n res.end('This page could not be found');\n }\n return null;\n };\n if (isIsr && !isDraftMode) {\n const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]);\n const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage];\n if (prerenderInfo) {\n if (prerenderInfo.fallback === false && !isPrerendered) {\n if (nextConfig.adapterPath) {\n return await render404();\n }\n throw new NoFallbackError();\n }\n }\n }\n let cacheKey = null;\n if (isIsr && !routeModule.isDev && !isDraftMode) {\n cacheKey = resolvedPathname;\n // ensure /index and / is normalized to one key\n cacheKey = cacheKey === '/index' ? '/' : cacheKey;\n }\n const supportsDynamicResponse = // If we're in development, we always support dynamic HTML\n routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports\n // dynamic HTML.\n !isIsr;\n // This is a revalidation request if the request is for a static\n // page and it is not being resumed from a postponed render and\n // it is not a dynamic RSC request then it is a revalidation\n // request.\n const isStaticGeneration = isIsr && !supportsDynamicResponse;\n // Before rendering (which initializes component tree modules), we have to\n // set the reference manifests to our global store so Server Action's\n // encryption util can access to them at the top level of the page module.\n if (serverActionsManifest && clientReferenceManifest) {\n setManifestsSingleton({\n page: srcPage,\n clientReferenceManifest,\n serverActionsManifest\n });\n }\n const method = req.method || 'GET';\n const tracer = getTracer();\n const activeSpan = tracer.getActiveScopeSpan();\n const isWrappedByNextServer = Boolean(routerServerContext == null ? void 0 : routerServerContext.isWrappedByNextServer);\n const isMinimalMode = Boolean(getRequestMeta(req, 'minimalMode'));\n const incrementalCache = getRequestMeta(req, 'incrementalCache') || await routeModule.getIncrementalCache(req, nextConfig, prerenderManifest, isMinimalMode);\n incrementalCache == null ? void 0 : incrementalCache.resetRequestCache();\n globalThis.__incrementalCache = incrementalCache;\n const context = {\n params,\n previewProps: prerenderManifest.preview,\n renderOpts: {\n experimental: {\n authInterrupts: Boolean(nextConfig.experimental.authInterrupts)\n },\n cacheComponents: Boolean(nextConfig.cacheComponents),\n supportsDynamicResponse,\n incrementalCache,\n cacheLifeProfiles: nextConfig.cacheLife,\n waitUntil: ctx.waitUntil,\n onClose: (cb)=>{\n res.on('close', cb);\n },\n onAfterTaskError: undefined,\n onInstrumentationRequestError: (error, _request, errorContext, silenceLog)=>routeModule.onRequestError(req, error, errorContext, silenceLog, routerServerContext)\n },\n sharedContext: {\n buildId,\n deploymentId\n }\n };\n const nodeNextReq = new NodeNextRequest(req);\n const nodeNextRes = new NodeNextResponse(res);\n const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res));\n try {\n let parentSpan;\n const invokeRouteModule = async (span)=>{\n return routeModule.handle(nextReq, context).finally(()=>{\n if (!span) return;\n span.setAttributes({\n 'http.status_code': res.statusCode,\n 'next.rsc': false\n });\n const rootSpanAttributes = tracer.getRootSpanAttributes();\n // We were unable to get attributes, probably OTEL is not enabled\n if (!rootSpanAttributes) {\n return;\n }\n if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) {\n console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`);\n return;\n }\n const route = rootSpanAttributes.get('next.route');\n if (route) {\n const name = `${method} ${route}`;\n span.setAttributes({\n 'next.route': route,\n 'http.route': route,\n 'next.span_name': name\n });\n span.updateName(name);\n // Propagate http.route to the parent span if one exists (e.g.\n // a platform-created HTTP span in adapter deployments).\n if (parentSpan && parentSpan !== span) {\n parentSpan.setAttribute('http.route', route);\n parentSpan.updateName(name);\n }\n } else {\n span.updateName(`${method} ${srcPage}`);\n }\n });\n };\n const handleResponse = async (currentSpan)=>{\n var _cacheEntry_value;\n const responseGenerator = async ({ previousCacheEntry })=>{\n try {\n if (!isMinimalMode && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) {\n res.statusCode = 404;\n // on-demand revalidate always sets this header\n res.setHeader('x-nextjs-cache', 'REVALIDATED');\n res.end('This page could not be found');\n return null;\n }\n const response = await invokeRouteModule(currentSpan);\n req.fetchMetrics = context.renderOpts.fetchMetrics;\n let pendingWaitUntil = context.renderOpts.pendingWaitUntil;\n // Attempt using provided waitUntil if available\n // if it's not we fallback to sendResponse's handling\n if (pendingWaitUntil) {\n if (ctx.waitUntil) {\n ctx.waitUntil(pendingWaitUntil);\n pendingWaitUntil = undefined;\n }\n }\n const cacheTags = context.renderOpts.collectedTags;\n // If the request is for a static response, we can cache it so long\n // as it's not edge.\n if (isIsr) {\n const blob = await response.blob();\n // Copy the headers from the response.\n const headers = toNodeOutgoingHttpHeaders(response.headers);\n if (cacheTags) {\n headers[NEXT_CACHE_TAGS_HEADER] = cacheTags;\n }\n if (!headers['content-type'] && blob.type) {\n headers['content-type'] = blob.type;\n }\n const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate;\n const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire;\n // Create the cache entry for the response.\n const cacheEntry = {\n value: {\n kind: CachedRouteKind.APP_ROUTE,\n status: response.status,\n body: Buffer.from(await blob.arrayBuffer()),\n headers\n },\n cacheControl: {\n revalidate,\n expire\n }\n };\n return cacheEntry;\n } else {\n // send response without caching if not ISR\n await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil);\n return null;\n }\n } catch (err) {\n // if this is a background revalidate we need to report\n // the request error here as it won't be bubbled\n if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) {\n const silenceLog = false;\n await routeModule.onRequestError(req, err, {\n routerKind: 'App Router',\n routePath: srcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate\n })\n }, silenceLog, routerServerContext);\n }\n throw err;\n }\n };\n const cacheEntry = await routeModule.handleResponse({\n req,\n nextConfig,\n cacheKey,\n routeKind: RouteKind.APP_ROUTE,\n isFallback: false,\n prerenderManifest,\n isRoutePPREnabled: false,\n isOnDemandRevalidate,\n revalidateOnlyGenerated,\n responseGenerator,\n waitUntil: ctx.waitUntil,\n isMinimalMode\n });\n // we don't create a cacheEntry for ISR\n if (!isIsr) {\n return null;\n }\n if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) {\n var _cacheEntry_value1;\n throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), \"__NEXT_ERROR_CODE\", {\n value: \"E701\",\n enumerable: false,\n configurable: true\n });\n }\n if (!isMinimalMode) {\n res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT');\n }\n // Draft mode should never be cached\n if (isDraftMode) {\n res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate');\n }\n const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers);\n if (!(isMinimalMode && isIsr)) {\n headers.delete(NEXT_CACHE_TAGS_HEADER);\n }\n // If cache control is already set on the response we don't\n // override it to allow users to customize it via next.config\n if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) {\n headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl));\n }\n await sendResponse(nodeNextReq, nodeNextRes, // @ts-expect-error - Argument of type 'Buffer<ArrayBufferLike>' is not assignable to parameter of type 'BodyInit | null | undefined'.\n new Response(cacheEntry.value.body, {\n headers,\n status: cacheEntry.value.status || 200\n }));\n return null;\n };\n // TODO: activeSpan code path is for when wrapped by\n // next-server can be removed when this is no longer used\n if (isWrappedByNextServer && activeSpan) {\n await handleResponse(activeSpan);\n } else {\n parentSpan = tracer.getActiveScopeSpan();\n await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, {\n spanName: `${method} ${srcPage}`,\n kind: SpanKind.SERVER,\n attributes: {\n 'http.method': method,\n 'http.target': req.url\n }\n }, handleResponse), undefined, !isWrappedByNextServer);\n }\n } catch (err) {\n if (!(err instanceof NoFallbackError)) {\n const silenceLog = false;\n await routeModule.onRequestError(req, err, {\n routerKind: 'App Router',\n routePath: normalizedSrcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate\n })\n }, silenceLog, routerServerContext);\n }\n // rethrow so that we can handle serving error page\n // If this is during static generation, throw the error again.\n if (isIsr) throw err;\n // Otherwise, send a 500 response.\n await sendResponse(nodeNextReq, nodeNextRes, new Response(null, {\n status: 500\n }));\n return null;\n }\n}\n\n//# sourceMappingURL=app-route.js.map\n","import { NextResponse } from \"next/server\";\nimport type { NextRequest } from \"next/server\";\nimport { currentPassword } from \"@/lib/session\";\n\n/**\n * Catch-all proxy to the gateway admin API. Client components call\n * `/api/gw/admin/...`; this forwards the method, body, and query to the gateway\n * with the admin password injected as a Bearer (never reaches the browser).\n *\n * Session-gated by middleware (every /api/* but login/logout needs a valid\n * session), so only a logged-in browser can drive it. One thin file replaces a\n * per-endpoint proxy for each admin route.\n */\nfunction gatewayUrl(): string {\n return (process.env.GATEWAY_URL ?? \"http://127.0.0.1:18080\").replace(/\\/$/, \"\");\n}\n\nasync function proxy(req: NextRequest, path: string[]): Promise<NextResponse | Response> {\n const sub = path.join(\"/\");\n if (!sub.startsWith(\"admin/\")) {\n return NextResponse.json({ error: \"not found\" }, { status: 404 });\n }\n const search = req.nextUrl.search;\n const target = `${gatewayUrl()}/${sub}${search}`;\n\n // SSE passthrough for console stream\n if (sub === \"admin/console/stream\") {\n try {\n const res = await fetch(target, {\n headers: { authorization: `Bearer ${await currentPassword()}` },\n cache: \"no-store\",\n });\n if (!res.body) return NextResponse.json({ error: \"no stream\" }, { status: 502 });\n return new Response(res.body, {\n headers: {\n \"Content-Type\": \"text/event-stream\",\n \"Cache-Control\": \"no-cache, no-transform\",\n Connection: \"keep-alive\",\n // don't let Next's prod server buffer the proxied stream.\n \"X-Accel-Buffering\": \"no\",\n },\n });\n } catch (e) {\n return NextResponse.json({ error: `gateway unreachable: ${(e as Error).message}` }, { status: 502 });\n }\n }\n\n const hasBody = req.method !== \"GET\" && req.method !== \"DELETE\";\n let body: string | undefined;\n if (hasBody) {\n body = await req.text();\n }\n\n let res: Response;\n try {\n res = await fetch(target, {\n method: req.method,\n headers: {\n authorization: `Bearer ${await currentPassword()}`,\n ...(body ? { \"content-type\": \"application/json\" } : {}),\n },\n body: body || undefined,\n cache: \"no-store\",\n });\n } catch (e) {\n return NextResponse.json({ error: `gateway unreachable: ${(e as Error).message}` }, { status: 502 });\n }\n\n const text = await res.text();\n return new NextResponse(text || \"{}\", {\n status: res.status,\n headers: { \"content-type\": \"application/json\" },\n });\n}\n\ntype Ctx = { params: Promise<{ path: string[] }> };\n\nexport async function GET(req: NextRequest, ctx: Ctx) {\n return proxy(req, (await ctx.params).path);\n}\nexport async function POST(req: NextRequest, ctx: Ctx) {\n return proxy(req, (await ctx.params).path);\n}\nexport async function PUT(req: NextRequest, ctx: Ctx) {\n return proxy(req, (await ctx.params).path);\n}\nexport async function DELETE(req: NextRequest, ctx: Ctx) {\n return proxy(req, (await ctx.params).path);\n}\n"],"names":["gatewayUrl","process","env","GATEWAY_URL","replace","headers","proxy","req","path","sub","join","startsWith","json","error","status","search","nextUrl","target","method","res","fetch","authorization","cache","text","body","Response","e","message","Connection","hasBody","undefined","GET","ctx","params","POST","PUT","DELETE"],"mappings":"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","ignoreList":[0]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[33405,(e,t,n)=>{t.exports=e.x("child_process",()=>require("child_process"))},24868,(e,t,n)=>{t.exports=e.x("fs/promises",()=>require("fs/promises"))},46786,(e,t,n)=>{t.exports=e.x("os",()=>require("os"))},33793,e=>{"use strict";var t=e.i(47909),n=e.i(74017),a=e.i(96250),i=e.i(59756),o=e.i(61916),r=e.i(74677),s=e.i(69741),p=e.i(16795),u=e.i(87718),c=e.i(95169),l=e.i(47587),d=e.i(66012),g=e.i(70101),m=e.i(26937),h=e.i(10372),x=e.i(93695);e.i(20232);var w=e.i(220),v=e.i(89171),k=e.i(33405),O=e.i(24361),f=e.i(24868),F=e.i(14747),W=e.i(46786);function R(e,t){return RegExp("^"+e.split("*").map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join(".*")+"$","i").test(t)}let y={vision:!1,pdf:!1,audioInput:!1,videoInput:!1,imageOutput:!1,audioOutput:!1,search:!1,tools:!0,reasoning:!1,thinkingFormat:null,thinkingCanDisable:!0,thinkingRange:null,contextWindow:2e5,maxOutput:64e3},C={"claude-opus-4.6":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4.7":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4-6":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-4.6":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:64e3},"claude-sonnet-4-6":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:64e3},"gpt-image-1":{imageOutput:!0,tools:!1},"glm-4.6v":{vision:!0,reasoning:!0,thinkingFormat:"zai",contextWindow:128e3},"vision-model":{vision:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6},"coder-model":{reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6}},b={"codebuddy-cn":{"glm-5.2":{reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:48e3},"glm-5.1":{reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:48e3},"glm-5.0":{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:48e3},"glm-5.0-turbo":{reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:48e3},"glm-5v-turbo":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:38e3},"glm-4.7":{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:48e3},"minimax-m3":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:512e3,maxOutput:48e3},"minimax-m2.7":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:48e3},"kimi-k2.7":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:256e3,maxOutput:32e3},"kimi-k2.6":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:256e3,maxOutput:32e3},"kimi-k2.5":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:164e3,maxOutput:32e3},"hy3-preview":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:192e3,maxOutput:64e3},"deepseek-v4-pro":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:5e4},"deepseek-v4-flash":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:5e4},"deepseek-v3-2-volc":{reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:96e3,maxOutput:32e3}}},E=[{pattern:"*claude*opus-4.6*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*opus-4.7*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*opus-4.8*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*sonnet-4.6*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*sonnet-4.7*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*haiku*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget"}},{pattern:"*claude*opus*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget"}},{pattern:"*claude*sonnet*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget"}},{pattern:"*claude*fable*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget",contextWindow:1e6,maxOutput:128e3}},{pattern:"*claude*mythos*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget",contextWindow:1e6,maxOutput:128e3}},{pattern:"*claude-3*",caps:{vision:!0}},{pattern:"*claude*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget"}},{pattern:"*gemini*image*",caps:{vision:!0,imageOutput:!0,contextWindow:1048576}},{pattern:"*gemini-3*pro*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-level",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:65535}},{pattern:"*gemini-3*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-level",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini-2.5*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-budget",thinkingRange:{min:0,max:24576},contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini-2*",caps:{vision:!0,audioInput:!0,videoInput:!0,search:!0,contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini*",caps:{vision:!0,search:!0,contextWindow:1048576}},{pattern:"*gemma*",caps:{vision:!0,contextWindow:128e3}},{pattern:"*nanobanana*",caps:{vision:!0,imageOutput:!0}},{pattern:"*gpt-5*image*",caps:{imageOutput:!0}},{pattern:"*gpt-5*codex*",caps:{reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:4e5,maxOutput:128e3}},{pattern:"*gpt-5*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:4e5,maxOutput:128e3}},{pattern:"*gpt-4o*",caps:{vision:!0,search:!0,contextWindow:128e3,maxOutput:16384}},{pattern:"*gpt-4.1*",caps:{vision:!0,contextWindow:1e6,maxOutput:32768}},{pattern:"*gpt-4-turbo*",caps:{vision:!0,contextWindow:128e3}},{pattern:"*gpt-4*",caps:{contextWindow:128e3}},{pattern:"*gpt-3.5*",caps:{contextWindow:16385,maxOutput:4096}},{pattern:"*gpt-oss*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:128e3}},{pattern:"*o1-mini*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:128e3}},{pattern:"*o1*",caps:{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:1e5}},{pattern:"*o3*",caps:{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:1e5}},{pattern:"*o4*",caps:{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:1e5}},{pattern:"*grok*image*",caps:{imageOutput:!0}},{pattern:"*grok-code*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:256e3}},{pattern:"*grok-4*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:256e3}},{pattern:"*grok-3*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:131072}},{pattern:"*grok*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:256e3}},{pattern:"*qwen*vl*",caps:{vision:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:262144}},{pattern:"*qwen*max*",caps:{vision:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen*plus*",caps:{vision:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen*235b*",caps:{reasoning:!0,thinkingFormat:"qwen",contextWindow:262144}},{pattern:"*qwen*coder*",caps:{reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6}},{pattern:"*qwq*",caps:{reasoning:!0,thinkingFormat:"qwen",thinkingCanDisable:!1,contextWindow:131072}},{pattern:"*qwen*",caps:{reasoning:!0,thinkingFormat:"qwen",contextWindow:262144}},{pattern:"*kimi*k2.7*code*",caps:{vision:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:262144,maxOutput:262144}},{pattern:"*kimi*k2*",caps:{vision:!0,reasoning:!0,thinkingFormat:"kimi",contextWindow:262144,maxOutput:262144}},{pattern:"*kimi*",caps:{reasoning:!0,thinkingFormat:"kimi",contextWindow:262144}},{pattern:"*glm-5*",caps:{reasoning:!0,thinkingFormat:"zai",contextWindow:2e5,maxOutput:128e3}},{pattern:"*glm-4.7*",caps:{reasoning:!0,thinkingFormat:"zai",contextWindow:2e5,maxOutput:128e3}},{pattern:"*glm-4*",caps:{reasoning:!0,thinkingFormat:"zai",contextWindow:2e5}},{pattern:"*glm*",caps:{reasoning:!0,thinkingFormat:"zai",contextWindow:2e5}},{pattern:"*deepseek-v4*",caps:{reasoning:!0,thinkingFormat:"deepseek",contextWindow:1e6,maxOutput:384e3}},{pattern:"*reasoner*",caps:{reasoning:!0,thinkingFormat:"deepseek",thinkingCanDisable:!1,contextWindow:128e3}},{pattern:"*deepseek-r*",caps:{reasoning:!0,thinkingFormat:"deepseek",thinkingCanDisable:!1,contextWindow:128e3}},{pattern:"*deepseek-chat*",caps:{contextWindow:128e3}},{pattern:"*deepseek*",caps:{reasoning:!0,thinkingFormat:"deepseek",contextWindow:128e3}},{pattern:"*minimax*image*",caps:{imageOutput:!0}},{pattern:"*minimax-m3*",caps:{vision:!0,reasoning:!0,thinkingFormat:"minimax",contextWindow:1048576,maxOutput:512e3}},{pattern:"*minimax-m2.7*",caps:{reasoning:!0,thinkingFormat:"minimax",thinkingCanDisable:!1,contextWindow:204800,maxOutput:131072}},{pattern:"*minimax*",caps:{reasoning:!0,thinkingFormat:"minimax",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:131072}},{pattern:"*mimo*v2.5*",caps:{vision:!0,contextWindow:1048576,maxOutput:131072}},{pattern:"*mimo*omni*",caps:{vision:!0,audioInput:!0,contextWindow:262144,maxOutput:131072}},{pattern:"*mimo*",caps:{vision:!0,contextWindow:262144,maxOutput:131072}},{pattern:"*llama-4*",caps:{vision:!0,contextWindow:1e6}},{pattern:"*llama*",caps:{contextWindow:128e3}},{pattern:"*codestral*",caps:{contextWindow:256e3}},{pattern:"*mistral-large*",caps:{vision:!0,contextWindow:256e3}},{pattern:"*mistral*",caps:{contextWindow:128e3}},{pattern:"*command-a-vision*",caps:{vision:!0,contextWindow:128e3}},{pattern:"*command*",caps:{contextWindow:128e3}},{pattern:"*sonar*",caps:{search:!0,contextWindow:128e3}},{pattern:"*pplx*",caps:{search:!0,contextWindow:128e3}},{pattern:"*perplexity*",caps:{search:!0,contextWindow:128e3}},{pattern:"*hunyuan*",caps:{reasoning:!0,thinkingFormat:"hunyuan",contextWindow:262144,maxOutput:262144}},{pattern:"hy3*",caps:{reasoning:!0,thinkingFormat:"hunyuan",contextWindow:262144,maxOutput:262144}},{pattern:"*step-*",caps:{reasoning:!0,thinkingFormat:"step",contextWindow:128e3}},{pattern:"*nemotron*",caps:{reasoning:!0,contextWindow:128e3}},{pattern:"*ling-*",caps:{reasoning:!0,contextWindow:128e3}}],A=(0,O.promisify)(k.exec);async function _(e){try{let t="win32"===W.default.platform()?"TURBOPACK unreachable":`which ${e}`;return await A(t,{windowsHide:!0}),!0}catch{return!1}}async function T(e){try{return await f.default.access(e),!0}catch{return!1}}function N(e){try{return JSON.parse(e.replace(/,(\s*[}\]])/g,"$1"))}catch{return null}}let D=()=>F.default.join(W.default.homedir(),".claude","settings.json"),I=["ANTHROPIC_BASE_URL","ANTHROPIC_AUTH_TOKEN","ANTHROPIC_DEFAULT_OPUS_MODEL","ANTHROPIC_DEFAULT_SONNET_MODEL","ANTHROPIC_DEFAULT_HAIKU_MODEL","API_TIMEOUT_MS"];async function P(e){if(!e.base)return{error:"base is required"};let t=D();await f.default.mkdir(F.default.dirname(t),{recursive:!0});let n={};try{n=N(await f.default.readFile(t,"utf-8"))??{}}catch{n={}}let a={ANTHROPIC_BASE_URL:e.base,API_TIMEOUT_MS:"600000"};e.key&&(a.ANTHROPIC_AUTH_TOKEN=e.key),e.models?.opus&&(a.ANTHROPIC_DEFAULT_OPUS_MODEL=e.models.opus),e.models?.sonnet&&(a.ANTHROPIC_DEFAULT_SONNET_MODEL=e.models.sonnet),e.models?.haiku&&(a.ANTHROPIC_DEFAULT_HAIKU_MODEL=e.models.haiku);let i={...n,hasCompletedOnboarding:!0,env:{...n.env??{},...a}};return await f.default.writeFile(t,JSON.stringify(i,null,2)),{success:!0,path:t}}let U="aigetwey",S=()=>F.default.join(W.default.homedir(),".config","opencode"),q=()=>F.default.join(S(),"opencode.json");async function H(e){let t=(e.models??[]).filter(Boolean);if(!e.base||0===t.length)return{error:"base and at least one model are required"};let n=q();await f.default.mkdir(S(),{recursive:!0});let a={};try{a=N(await f.default.readFile(n,"utf-8"))??{}}catch{a={}}let i=e.base.endsWith("/v1")?e.base:`${e.base}/v1`,o=a.provider??{},r=o[U]??{npm:"@ai-sdk/openai-compatible",options:{},models:{}};r.options={...r.options??{},baseURL:i,apiKey:e.key||"aigetwey"};let s=r.models??{};for(let e of t)s[e]={name:e,modalities:function(e){let t=e.indexOf("/"),n=function(e,t){if(!t)return{...y};if(e&&b[e]?.[t])return{...y,...b[e][t]};let n=(t.includes("/")?t.split("/").pop():t)??t;if(C[n])return{...y,...C[n]};if(C[t])return{...y,...C[t]};for(let{pattern:e,caps:a}of E)if(R(e,n)||R(e,t))return{...y,...a};return{...y}}(t>0?e.slice(0,t):null,t>0?e.slice(t+1):e),a=["text"];n.vision&&a.push("image"),n.pdf&&a.push("pdf"),n.audioInput&&a.push("audio"),n.videoInput&&a.push("video");let i=["text"];return n.imageOutput&&i.push("image"),n.audioOutput&&i.push("audio"),{input:a,output:i}}(e)};r.models=s,o[U]=r,a.provider=o;let p=e.active&&t.includes(e.active)?e.active:t[0];return a.model=`${U}/${p}`,await f.default.writeFile(n,JSON.stringify(a,null,2)),{success:!0,path:n}}let L={"claude-code":{status:async function(){if(!(await _("claude")||await T(D())))return{installed:!1};let e=null;try{e=N(await f.default.readFile(D(),"utf-8"))}catch{e=null}let t=e?.env??{};return{installed:!0,configured:"string"==typeof t.ANTHROPIC_BASE_URL,path:D(),baseUrl:t.ANTHROPIC_BASE_URL??null,modelSlots:{opus:t.ANTHROPIC_DEFAULT_OPUS_MODEL??null,sonnet:t.ANTHROPIC_DEFAULT_SONNET_MODEL??null,haiku:t.ANTHROPIC_DEFAULT_HAIKU_MODEL??null}}},apply:e=>P(e),reset:async function(){let e,t=D();try{e=N(await f.default.readFile(t,"utf-8"))??{}}catch{return{success:!0}}let n=e.env;if(n){for(let e of I)delete n[e];0===Object.keys(n).length&&delete e.env}return await f.default.writeFile(t,JSON.stringify(e,null,2)),{success:!0}}},opencode:{status:async function(){if(!(await _("opencode")||await T(q())))return{installed:!1};let e=null;try{e=N(await f.default.readFile(q(),"utf-8"))}catch{e=null}let t=e?.provider?.[U],n=t?.models?Object.keys(t.models):[],a="string"==typeof e?.model&&e.model.startsWith(`${U}/`)?e.model.slice(U.length+1):null;return{installed:!0,configured:!!t,path:q(),models:n,activeModel:a,baseUrl:t?.options?.baseURL??null}},apply:e=>H(e),reset:async function(){let e,t=q();try{e=N(await f.default.readFile(t,"utf-8"))??{}}catch{return{success:!0}}let n=e.provider;return n&&delete n[U],"string"==typeof e.model&&e.model.startsWith(`${U}/`)&&delete e.model,await f.default.writeFile(t,JSON.stringify(e,null,2)),{success:!0}}}};async function M(e,t){let{tool:n}=await t.params,a=L[n];if(!a)return v.NextResponse.json({installed:!1,auto:!1});try{return v.NextResponse.json({auto:!0,...await a.status()})}catch(e){return v.NextResponse.json({error:e.message},{status:500})}}async function j(e,t){let{tool:n}=await t.params,a=L[n];if(!a)return v.NextResponse.json({error:"tool does not support auto-config"},{status:400});try{let t=await e.json(),n=await a.apply(t);if(n.error)return v.NextResponse.json(n,{status:400});return v.NextResponse.json(n)}catch(e){return v.NextResponse.json({error:e.message},{status:500})}}async function $(e,t){let{tool:n}=await t.params,a=L[n];if(!a)return v.NextResponse.json({error:"tool does not support auto-config"},{status:400});try{return v.NextResponse.json(await a.reset())}catch(e){return v.NextResponse.json({error:e.message},{status:500})}}e.s(["DELETE",0,$,"GET",0,M,"POST",0,j],58851);var K=e.i(58851);let B=new t.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/cli-detect/[tool]/route",pathname:"/api/cli-detect/[tool]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/cli-detect/[tool]/route.ts",nextConfigOutput:"",userland:K,...{}}),{workAsyncStorage:z,workUnitAsyncStorage:J,serverHooks:G}=B;async function V(e,t,a){a.requestMeta&&(0,i.setRequestMeta)(e,a.requestMeta),B.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/cli-detect/[tool]/route";v=v.replace(/\/index$/,"")||"/";let k=await B.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!k)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:O,deploymentId:f,params:F,nextConfig:W,parsedUrl:R,isDraftMode:y,prerenderManifest:C,routerServerContext:b,isOnDemandRevalidate:E,revalidateOnlyGenerated:A,resolvedPathname:_,clientReferenceManifest:T,serverActionsManifest:N}=k,D=(0,s.normalizeAppPath)(v),I=!!(C.dynamicRoutes[D]||C.routes[_]),P=async()=>((null==b?void 0:b.render404)?await b.render404(e,t,R,!1):t.end("This page could not be found"),null);if(I&&!y){let e=!!C.routes[_],t=C.dynamicRoutes[D];if(t&&!1===t.fallback&&!e){if(W.adapterPath)return await P();throw new x.NoFallbackError}}let U=null;!I||B.isDev||y||(U="/index"===(U=_)?"/":U);let S=!0===B.isDev||!I,q=I&&!S;N&&T&&(0,r.setManifestsSingleton)({page:v,clientReferenceManifest:T,serverActionsManifest:N});let H=e.method||"GET",L=(0,o.getTracer)(),M=L.getActiveScopeSpan(),j=!!(null==b?void 0:b.isWrappedByNextServer),$=!!(0,i.getRequestMeta)(e,"minimalMode"),K=(0,i.getRequestMeta)(e,"incrementalCache")||await B.getIncrementalCache(e,W,C,$);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let z={params:F,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!W.experimental.authInterrupts},cacheComponents:!!W.cacheComponents,supportsDynamicResponse:S,incrementalCache:K,cacheLifeProfiles:W.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,n,a,i)=>B.onRequestError(e,t,a,i,b)},sharedContext:{buildId:O,deploymentId:f}},J=new p.NodeNextRequest(e),G=new p.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(J,(0,u.signalFromNodeResponse)(t));try{let i,r=async e=>B.handle(V,z).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let n=L.getRootSpanAttributes();if(!n)return;if(n.get("next.span_type")!==c.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${n.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=n.get("next.route");if(a){let t=`${H} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),i&&i!==e&&(i.setAttribute("http.route",a),i.updateName(t))}else e.updateName(`${H} ${v}`)}),s=async i=>{var o,s;let p=async({previousCacheEntry:n})=>{try{if(!$&&E&&A&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=await r(i);e.fetchMetrics=z.renderOpts.fetchMetrics;let s=z.renderOpts.pendingWaitUntil;s&&a.waitUntil&&(a.waitUntil(s),s=void 0);let p=z.renderOpts.collectedTags;if(!I)return await (0,d.sendResponse)(J,G,o,z.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(o.headers);p&&(t[h.NEXT_CACHE_TAGS_HEADER]=p),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let n=void 0!==z.renderOpts.collectedRevalidate&&!(z.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&z.renderOpts.collectedRevalidate,a=void 0===z.renderOpts.collectedExpire||z.renderOpts.collectedExpire>=h.INFINITE_CACHE?void 0:z.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:o.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:n,expire:a}}}}catch(t){throw(null==n?void 0:n.isStale)&&await B.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,l.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:E})},!1,b),t}},u=await B.handleResponse({req:e,nextConfig:W,cacheKey:U,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:E,revalidateOnlyGenerated:A,responseGenerator:p,waitUntil:a.waitUntil,isMinimalMode:$});if(!I)return null;if((null==u||null==(o=u.value)?void 0:o.kind)!==w.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(s=u.value)?void 0:s.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});$||t.setHeader("x-nextjs-cache",E?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),y&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,g.fromNodeOutgoingHttpHeaders)(u.value.headers);return $&&I||c.delete(h.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,m.getCacheControlHeader)(u.cacheControl)),await (0,d.sendResponse)(J,G,new Response(u.value.body,{headers:c,status:u.value.status||200})),null};j&&M?await s(M):(i=L.getActiveScopeSpan(),await L.withPropagatedContext(e.headers,()=>L.trace(c.BaseServerSpan.handleRequest,{spanName:`${H} ${v}`,kind:o.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},s),void 0,!j))}catch(t){if(t instanceof x.NoFallbackError||await B.onRequestError(e,t,{routerKind:"App Router",routePath:D,routeType:"route",revalidateReason:(0,l.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:E})},!1,b),I)throw t;return await (0,d.sendResponse)(J,G,new Response(null,{status:500})),null}}e.s(["handler",0,V,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:z,workUnitAsyncStorage:J})},"routeModule",0,B,"serverHooks",0,G,"workAsyncStorage",0,z,"workUnitAsyncStorage",0,J],33793)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__0das32e._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/app/api/cli-detect/%5Btool%5D/route.ts","../../../node_modules/next/dist/esm/build/templates/app-route.js","../../../src/lib/capabilities.ts"],"sourcesContent":["import { NextResponse } from \"next/server\";\nimport type { NextRequest } from \"next/server\";\nimport { exec } from \"child_process\";\nimport { promisify } from \"util\";\nimport fs from \"fs/promises\";\nimport path from \"path\";\nimport os from \"os\";\nimport { modalitiesForModel } from \"@/lib/capabilities\";\n\n/**\n * Local CLI-tool detection + auto-config. These run in the Next.js server (which,\n * like the gateway, lives on the operator's machine), so they can read/write the\n * tool's own config files — the trick behind aigetwey's \"it just detects and\n * configures itself\". Session-gated by middleware like every other /api route.\n *\n * Only claude-code + opencode auto-configure (the two with a stable local config\n * file we can safely merge into). Others report installed:false → the UI falls\n * back to the manual env block.\n */\nconst execAsync = promisify(exec);\n\ntype Json = Record<string, unknown>;\n\nasync function onPath(bin: string): Promise<boolean> {\n try {\n const cmd = os.platform() === \"win32\" ? `where ${bin}` : `which ${bin}`;\n await execAsync(cmd, { windowsHide: true });\n return true;\n } catch {\n return false;\n }\n}\n\nasync function fileExists(p: string): Promise<boolean> {\n try {\n await fs.access(p);\n return true;\n } catch {\n return false;\n }\n}\n\n// tolerate JSONC (trailing commas) and unparseable files (treat as \"no config\").\nfunction readJson(content: string): Json | null {\n try {\n return JSON.parse(content.replace(/,(\\s*[}\\]])/g, \"$1\")) as Json;\n } catch {\n return null;\n }\n}\n\n// ─── Claude Code: ~/.claude/settings.json env block ─────────────────────────\nconst claudePath = () => path.join(os.homedir(), \".claude\", \"settings.json\");\nconst CLAUDE_KEYS = [\n \"ANTHROPIC_BASE_URL\",\n \"ANTHROPIC_AUTH_TOKEN\",\n \"ANTHROPIC_DEFAULT_OPUS_MODEL\",\n \"ANTHROPIC_DEFAULT_SONNET_MODEL\",\n \"ANTHROPIC_DEFAULT_HAIKU_MODEL\",\n \"API_TIMEOUT_MS\",\n];\n\nasync function claudeStatus() {\n const installed = (await onPath(\"claude\")) || (await fileExists(claudePath()));\n if (!installed) return { installed: false as const };\n let settings: Json | null = null;\n try {\n settings = readJson(await fs.readFile(claudePath(), \"utf-8\"));\n } catch {\n settings = null;\n }\n const env = (settings?.env as Json | undefined) ?? {};\n return {\n installed: true as const,\n configured: typeof env.ANTHROPIC_BASE_URL === \"string\",\n path: claudePath(),\n baseUrl: (env.ANTHROPIC_BASE_URL as string) ?? null,\n modelSlots: {\n opus: (env.ANTHROPIC_DEFAULT_OPUS_MODEL as string) ?? null,\n sonnet: (env.ANTHROPIC_DEFAULT_SONNET_MODEL as string) ?? null,\n haiku: (env.ANTHROPIC_DEFAULT_HAIKU_MODEL as string) ?? null,\n },\n };\n}\n\nasync function claudeApply(body: { base?: string; key?: string; models?: Record<string, string> }) {\n if (!body.base) return { error: \"base is required\" };\n const p = claudePath();\n await fs.mkdir(path.dirname(p), { recursive: true });\n let cur: Json = {};\n try {\n cur = readJson(await fs.readFile(p, \"utf-8\")) ?? {};\n } catch {\n cur = {};\n }\n const env: Record<string, string> = {\n ANTHROPIC_BASE_URL: body.base,\n API_TIMEOUT_MS: \"600000\",\n };\n if (body.key) env.ANTHROPIC_AUTH_TOKEN = body.key;\n if (body.models?.opus) env.ANTHROPIC_DEFAULT_OPUS_MODEL = body.models.opus;\n if (body.models?.sonnet) env.ANTHROPIC_DEFAULT_SONNET_MODEL = body.models.sonnet;\n if (body.models?.haiku) env.ANTHROPIC_DEFAULT_HAIKU_MODEL = body.models.haiku;\n const next = { ...cur, hasCompletedOnboarding: true, env: { ...((cur.env as Json) ?? {}), ...env } };\n await fs.writeFile(p, JSON.stringify(next, null, 2));\n return { success: true, path: p };\n}\n\nasync function claudeReset() {\n const p = claudePath();\n let cur: Json;\n try {\n cur = readJson(await fs.readFile(p, \"utf-8\")) ?? {};\n } catch {\n return { success: true };\n }\n const env = cur.env as Json | undefined;\n if (env) {\n for (const k of CLAUDE_KEYS) delete env[k];\n if (Object.keys(env).length === 0) delete cur.env;\n }\n await fs.writeFile(p, JSON.stringify(cur, null, 2));\n return { success: true };\n}\n\n// ─── opencode: ~/.config/opencode/opencode.json provider entry ──────────────\nconst OC_PROVIDER = \"aigetwey\";\nconst ocDir = () => path.join(os.homedir(), \".config\", \"opencode\");\nconst ocPath = () => path.join(ocDir(), \"opencode.json\");\n\nasync function opencodeStatus() {\n const installed = (await onPath(\"opencode\")) || (await fileExists(ocPath()));\n if (!installed) return { installed: false as const };\n let cfg: Json | null = null;\n try {\n cfg = readJson(await fs.readFile(ocPath(), \"utf-8\"));\n } catch {\n cfg = null;\n }\n const prov = (cfg?.provider as Json | undefined)?.[OC_PROVIDER] as Json | undefined;\n const models = prov?.models ? Object.keys(prov.models as Json) : [];\n const active = typeof cfg?.model === \"string\" && cfg.model.startsWith(`${OC_PROVIDER}/`)\n ? cfg.model.slice(OC_PROVIDER.length + 1)\n : null;\n return {\n installed: true as const,\n configured: !!prov,\n path: ocPath(),\n models,\n activeModel: active,\n baseUrl: ((prov?.options as Json | undefined)?.baseURL as string) ?? null,\n };\n}\n\nasync function opencodeApply(body: { base?: string; key?: string; models?: string[]; active?: string }) {\n const models = (body.models ?? []).filter(Boolean);\n if (!body.base || models.length === 0) return { error: \"base and at least one model are required\" };\n const p = ocPath();\n await fs.mkdir(ocDir(), { recursive: true });\n let cfg: Json = {};\n try {\n cfg = readJson(await fs.readFile(p, \"utf-8\")) ?? {};\n } catch {\n cfg = {};\n }\n const baseURL = body.base.endsWith(\"/v1\") ? body.base : `${body.base}/v1`;\n const provider = (cfg.provider as Json | undefined) ?? {};\n const existing = (provider[OC_PROVIDER] as Json | undefined) ?? {\n npm: \"@ai-sdk/openai-compatible\",\n options: {},\n models: {},\n };\n existing.options = { ...((existing.options as Json) ?? {}), baseURL, apiKey: body.key || \"aigetwey\" };\n const modelMap = (existing.models as Json) ?? {};\n for (const m of models) modelMap[m] = { name: m, modalities: modalitiesForModel(m) };\n existing.models = modelMap;\n provider[OC_PROVIDER] = existing;\n cfg.provider = provider;\n const active = body.active && models.includes(body.active) ? body.active : models[0];\n cfg.model = `${OC_PROVIDER}/${active}`;\n await fs.writeFile(p, JSON.stringify(cfg, null, 2));\n return { success: true, path: p };\n}\n\nasync function opencodeReset() {\n const p = ocPath();\n let cfg: Json;\n try {\n cfg = readJson(await fs.readFile(p, \"utf-8\")) ?? {};\n } catch {\n return { success: true };\n }\n const provider = cfg.provider as Json | undefined;\n if (provider) delete provider[OC_PROVIDER];\n if (typeof cfg.model === \"string\" && cfg.model.startsWith(`${OC_PROVIDER}/`)) delete cfg.model;\n await fs.writeFile(p, JSON.stringify(cfg, null, 2));\n return { success: true };\n}\n\ntype ApplyBody = { base?: string; key?: string; models?: string[] | Record<string, string>; active?: string };\nconst HANDLERS: Record<\n string,\n { status: () => Promise<unknown>; apply: (b: ApplyBody) => Promise<unknown>; reset: () => Promise<unknown> }\n> = {\n \"claude-code\": {\n status: claudeStatus,\n apply: (b) => claudeApply(b as { base?: string; key?: string; models?: Record<string, string> }),\n reset: claudeReset,\n },\n opencode: {\n status: opencodeStatus,\n apply: (b) => opencodeApply(b as { base?: string; key?: string; models?: string[]; active?: string }),\n reset: opencodeReset,\n },\n};\n\ntype Ctx = { params: Promise<{ tool: string }> };\n\nexport async function GET(_req: NextRequest, ctx: Ctx) {\n const { tool } = await ctx.params;\n const h = HANDLERS[tool];\n if (!h) return NextResponse.json({ installed: false, auto: false });\n try {\n return NextResponse.json({ auto: true, ...(await h.status() as object) });\n } catch (e) {\n return NextResponse.json({ error: (e as Error).message }, { status: 500 });\n }\n}\n\nexport async function POST(req: NextRequest, ctx: Ctx) {\n const { tool } = await ctx.params;\n const h = HANDLERS[tool];\n if (!h) return NextResponse.json({ error: \"tool does not support auto-config\" }, { status: 400 });\n try {\n const body = (await req.json()) as ApplyBody;\n const res = (await h.apply(body)) as { error?: string };\n if (res.error) return NextResponse.json(res, { status: 400 });\n return NextResponse.json(res);\n } catch (e) {\n return NextResponse.json({ error: (e as Error).message }, { status: 500 });\n }\n}\n\nexport async function DELETE(_req: NextRequest, ctx: Ctx) {\n const { tool } = await ctx.params;\n const h = HANDLERS[tool];\n if (!h) return NextResponse.json({ error: \"tool does not support auto-config\" }, { status: 400 });\n try {\n return NextResponse.json(await h.reset() as object);\n } catch (e) {\n return NextResponse.json({ error: (e as Error).message }, { status: 500 });\n }\n}\n","import { AppRouteRouteModule } from \"next/dist/esm/server/route-modules/app-route/module.compiled\";\nimport { RouteKind } from \"next/dist/esm/server/route-kind\";\nimport { patchFetch as _patchFetch } from \"next/dist/esm/server/lib/patch-fetch\";\nimport { addRequestMeta, getRequestMeta, setRequestMeta } from \"next/dist/esm/server/request-meta\";\nimport { getTracer, SpanKind } from \"next/dist/esm/server/lib/trace/tracer\";\nimport { setManifestsSingleton } from \"next/dist/esm/server/app-render/manifests-singleton\";\nimport { normalizeAppPath } from \"next/dist/esm/shared/lib/router/utils/app-paths\";\nimport { NodeNextRequest, NodeNextResponse } from \"next/dist/esm/server/base-http/node\";\nimport { NextRequestAdapter, signalFromNodeResponse } from \"next/dist/esm/server/web/spec-extension/adapters/next-request\";\nimport { BaseServerSpan } from \"next/dist/esm/server/lib/trace/constants\";\nimport { getRevalidateReason } from \"next/dist/esm/server/instrumentation/utils\";\nimport { sendResponse } from \"next/dist/esm/server/send-response\";\nimport { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from \"next/dist/esm/server/web/utils\";\nimport { getCacheControlHeader } from \"next/dist/esm/server/lib/cache-control\";\nimport { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from \"next/dist/esm/lib/constants\";\nimport { NoFallbackError } from \"next/dist/esm/shared/lib/no-fallback-error.external\";\nimport { CachedRouteKind } from \"next/dist/esm/server/response-cache\";\nimport * as userland from \"INNER_APP_ROUTE\";\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\nconst nextConfigOutput = \"\"\nconst routeModule = new AppRouteRouteModule({\n definition: {\n kind: RouteKind.APP_ROUTE,\n page: \"/api/cli-detect/[tool]/route\",\n pathname: \"/api/cli-detect/[tool]\",\n filename: \"route\",\n bundlePath: \"\"\n },\n distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '',\n relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '',\n resolvedPagePath: \"[project]/src/app/api/cli-detect/[tool]/route.ts\",\n nextConfigOutput,\n // The static import is used for initialization (methods, dynamic, etc.).\n userland: userland,\n // In Turbopack dev mode, also provide a getter that calls require() on every\n // request. This re-reads from devModuleCache so HMR updates are picked up,\n // and the async wrapper unwraps async-module Promises (ESM-only\n // serverExternalPackages) automatically.\n ...process.env.TURBOPACK && process.env.__NEXT_DEV_SERVER ? {\n getUserland: ()=>import(\"INNER_APP_ROUTE\")\n } : {}\n});\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule;\nfunction patchFetch() {\n return _patchFetch({\n workAsyncStorage,\n workUnitAsyncStorage\n });\n}\nexport { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, };\nexport async function handler(req, res, ctx) {\n if (ctx.requestMeta) {\n setRequestMeta(req, ctx.requestMeta);\n }\n if (routeModule.isDev) {\n addRequestMeta(req, 'devRequestTimingInternalsEnd', process.hrtime.bigint());\n }\n let srcPage = \"/api/cli-detect/[tool]/route\";\n // turbopack doesn't normalize `/index` in the page name\n // so we need to to process dynamic routes properly\n // TODO: fix turbopack providing differing value from webpack\n if (process.env.TURBOPACK) {\n srcPage = srcPage.replace(/\\/index$/, '') || '/';\n } else if (srcPage === '/index') {\n // we always normalize /index specifically\n srcPage = '/';\n }\n const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE;\n const prepareResult = await routeModule.prepare(req, res, {\n srcPage,\n multiZoneDraftMode\n });\n if (!prepareResult) {\n res.statusCode = 400;\n res.end('Bad Request');\n ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve());\n return null;\n }\n const { buildId, deploymentId, params, nextConfig, parsedUrl, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname, clientReferenceManifest, serverActionsManifest } = prepareResult;\n const normalizedSrcPage = normalizeAppPath(srcPage);\n let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]);\n const render404 = async ()=>{\n // TODO: should route-module itself handle rendering the 404\n if (routerServerContext == null ? void 0 : routerServerContext.render404) {\n await routerServerContext.render404(req, res, parsedUrl, false);\n } else {\n res.end('This page could not be found');\n }\n return null;\n };\n if (isIsr && !isDraftMode) {\n const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]);\n const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage];\n if (prerenderInfo) {\n if (prerenderInfo.fallback === false && !isPrerendered) {\n if (nextConfig.adapterPath) {\n return await render404();\n }\n throw new NoFallbackError();\n }\n }\n }\n let cacheKey = null;\n if (isIsr && !routeModule.isDev && !isDraftMode) {\n cacheKey = resolvedPathname;\n // ensure /index and / is normalized to one key\n cacheKey = cacheKey === '/index' ? '/' : cacheKey;\n }\n const supportsDynamicResponse = // If we're in development, we always support dynamic HTML\n routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports\n // dynamic HTML.\n !isIsr;\n // This is a revalidation request if the request is for a static\n // page and it is not being resumed from a postponed render and\n // it is not a dynamic RSC request then it is a revalidation\n // request.\n const isStaticGeneration = isIsr && !supportsDynamicResponse;\n // Before rendering (which initializes component tree modules), we have to\n // set the reference manifests to our global store so Server Action's\n // encryption util can access to them at the top level of the page module.\n if (serverActionsManifest && clientReferenceManifest) {\n setManifestsSingleton({\n page: srcPage,\n clientReferenceManifest,\n serverActionsManifest\n });\n }\n const method = req.method || 'GET';\n const tracer = getTracer();\n const activeSpan = tracer.getActiveScopeSpan();\n const isWrappedByNextServer = Boolean(routerServerContext == null ? void 0 : routerServerContext.isWrappedByNextServer);\n const isMinimalMode = Boolean(getRequestMeta(req, 'minimalMode'));\n const incrementalCache = getRequestMeta(req, 'incrementalCache') || await routeModule.getIncrementalCache(req, nextConfig, prerenderManifest, isMinimalMode);\n incrementalCache == null ? void 0 : incrementalCache.resetRequestCache();\n globalThis.__incrementalCache = incrementalCache;\n const context = {\n params,\n previewProps: prerenderManifest.preview,\n renderOpts: {\n experimental: {\n authInterrupts: Boolean(nextConfig.experimental.authInterrupts)\n },\n cacheComponents: Boolean(nextConfig.cacheComponents),\n supportsDynamicResponse,\n incrementalCache,\n cacheLifeProfiles: nextConfig.cacheLife,\n waitUntil: ctx.waitUntil,\n onClose: (cb)=>{\n res.on('close', cb);\n },\n onAfterTaskError: undefined,\n onInstrumentationRequestError: (error, _request, errorContext, silenceLog)=>routeModule.onRequestError(req, error, errorContext, silenceLog, routerServerContext)\n },\n sharedContext: {\n buildId,\n deploymentId\n }\n };\n const nodeNextReq = new NodeNextRequest(req);\n const nodeNextRes = new NodeNextResponse(res);\n const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res));\n try {\n let parentSpan;\n const invokeRouteModule = async (span)=>{\n return routeModule.handle(nextReq, context).finally(()=>{\n if (!span) return;\n span.setAttributes({\n 'http.status_code': res.statusCode,\n 'next.rsc': false\n });\n const rootSpanAttributes = tracer.getRootSpanAttributes();\n // We were unable to get attributes, probably OTEL is not enabled\n if (!rootSpanAttributes) {\n return;\n }\n if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) {\n console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`);\n return;\n }\n const route = rootSpanAttributes.get('next.route');\n if (route) {\n const name = `${method} ${route}`;\n span.setAttributes({\n 'next.route': route,\n 'http.route': route,\n 'next.span_name': name\n });\n span.updateName(name);\n // Propagate http.route to the parent span if one exists (e.g.\n // a platform-created HTTP span in adapter deployments).\n if (parentSpan && parentSpan !== span) {\n parentSpan.setAttribute('http.route', route);\n parentSpan.updateName(name);\n }\n } else {\n span.updateName(`${method} ${srcPage}`);\n }\n });\n };\n const handleResponse = async (currentSpan)=>{\n var _cacheEntry_value;\n const responseGenerator = async ({ previousCacheEntry })=>{\n try {\n if (!isMinimalMode && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) {\n res.statusCode = 404;\n // on-demand revalidate always sets this header\n res.setHeader('x-nextjs-cache', 'REVALIDATED');\n res.end('This page could not be found');\n return null;\n }\n const response = await invokeRouteModule(currentSpan);\n req.fetchMetrics = context.renderOpts.fetchMetrics;\n let pendingWaitUntil = context.renderOpts.pendingWaitUntil;\n // Attempt using provided waitUntil if available\n // if it's not we fallback to sendResponse's handling\n if (pendingWaitUntil) {\n if (ctx.waitUntil) {\n ctx.waitUntil(pendingWaitUntil);\n pendingWaitUntil = undefined;\n }\n }\n const cacheTags = context.renderOpts.collectedTags;\n // If the request is for a static response, we can cache it so long\n // as it's not edge.\n if (isIsr) {\n const blob = await response.blob();\n // Copy the headers from the response.\n const headers = toNodeOutgoingHttpHeaders(response.headers);\n if (cacheTags) {\n headers[NEXT_CACHE_TAGS_HEADER] = cacheTags;\n }\n if (!headers['content-type'] && blob.type) {\n headers['content-type'] = blob.type;\n }\n const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate;\n const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire;\n // Create the cache entry for the response.\n const cacheEntry = {\n value: {\n kind: CachedRouteKind.APP_ROUTE,\n status: response.status,\n body: Buffer.from(await blob.arrayBuffer()),\n headers\n },\n cacheControl: {\n revalidate,\n expire\n }\n };\n return cacheEntry;\n } else {\n // send response without caching if not ISR\n await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil);\n return null;\n }\n } catch (err) {\n // if this is a background revalidate we need to report\n // the request error here as it won't be bubbled\n if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) {\n const silenceLog = false;\n await routeModule.onRequestError(req, err, {\n routerKind: 'App Router',\n routePath: srcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate\n })\n }, silenceLog, routerServerContext);\n }\n throw err;\n }\n };\n const cacheEntry = await routeModule.handleResponse({\n req,\n nextConfig,\n cacheKey,\n routeKind: RouteKind.APP_ROUTE,\n isFallback: false,\n prerenderManifest,\n isRoutePPREnabled: false,\n isOnDemandRevalidate,\n revalidateOnlyGenerated,\n responseGenerator,\n waitUntil: ctx.waitUntil,\n isMinimalMode\n });\n // we don't create a cacheEntry for ISR\n if (!isIsr) {\n return null;\n }\n if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) {\n var _cacheEntry_value1;\n throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), \"__NEXT_ERROR_CODE\", {\n value: \"E701\",\n enumerable: false,\n configurable: true\n });\n }\n if (!isMinimalMode) {\n res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT');\n }\n // Draft mode should never be cached\n if (isDraftMode) {\n res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate');\n }\n const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers);\n if (!(isMinimalMode && isIsr)) {\n headers.delete(NEXT_CACHE_TAGS_HEADER);\n }\n // If cache control is already set on the response we don't\n // override it to allow users to customize it via next.config\n if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) {\n headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl));\n }\n await sendResponse(nodeNextReq, nodeNextRes, // @ts-expect-error - Argument of type 'Buffer<ArrayBufferLike>' is not assignable to parameter of type 'BodyInit | null | undefined'.\n new Response(cacheEntry.value.body, {\n headers,\n status: cacheEntry.value.status || 200\n }));\n return null;\n };\n // TODO: activeSpan code path is for when wrapped by\n // next-server can be removed when this is no longer used\n if (isWrappedByNextServer && activeSpan) {\n await handleResponse(activeSpan);\n } else {\n parentSpan = tracer.getActiveScopeSpan();\n await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, {\n spanName: `${method} ${srcPage}`,\n kind: SpanKind.SERVER,\n attributes: {\n 'http.method': method,\n 'http.target': req.url\n }\n }, handleResponse), undefined, !isWrappedByNextServer);\n }\n } catch (err) {\n if (!(err instanceof NoFallbackError)) {\n const silenceLog = false;\n await routeModule.onRequestError(req, err, {\n routerKind: 'App Router',\n routePath: normalizedSrcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate\n })\n }, silenceLog, routerServerContext);\n }\n // rethrow so that we can handle serving error page\n // If this is during static generation, throw the error again.\n if (isIsr) throw err;\n // Otherwise, send a 500 response.\n await sendResponse(nodeNextReq, nodeNextRes, new Response(null, {\n status: 500\n }));\n return null;\n }\n}\n\n//# sourceMappingURL=app-route.js.map\n","// Model capabilities — what each model can read/do beyond plain text.\n//\n// Fallback order (first match wins), result merged over DEFAULT_CAPABILITIES:\n// 1. PROVIDER_CAPABILITIES[provider][model] — provider-specific override\n// 2. MODEL_CAPABILITIES[model] — canonical exact id (handles exceptions)\n// 3. PATTERN_CAPABILITIES — glob match, ordered specific -> generic\n// 4. DEFAULT_CAPABILITIES — safe floor (always returned)\n//\n// ── HOW TO ADD / UPDATE A MODEL ──────────────────────────────────────\n// Authoritative data source: https://models.dev/api.json (145 providers, 4000+\n// models, MIT). Each model exposes the exact fields we map below:\n// modalities.input [\"text\",\"image\",\"pdf\",\"audio\",\"video\"] -> vision / pdf / audioInput / videoInput\n// modalities.output [\"text\",\"image\",\"audio\"] -> imageOutput / audioOutput\n// reasoning -> reasoning tool_call -> tools\n// limit.context -> contextWindow limit.output -> maxOutput\n// Look up the model id, then:\n// • If a PATTERN below already covers it correctly -> nothing to do.\n// • If it is an exception (pattern would mis-match) -> add an exact entry to\n// MODEL_CAPABILITIES (only the fields that differ from DEFAULT).\n// • If a whole new family -> add an ordered PATTERN (specific before generic).\n// NOTE: models.dev has NO \"search\" flag (web search is a runtime tool, not a\n// model spec); set `search` from vendor docs (Claude 4.x+, GPT-5.x/4o, Gemini\n// 2.0+, Grok, Perplexity). Verify with: curl -s https://models.dev/api.json\n\n\n/**\n * Safe floor — every resolved result is merged over this so consumers\n * never need null-checks. Most modern LLMs meet these limits.\n */\nexport interface Caps {\n vision: boolean;\n pdf: boolean;\n audioInput: boolean;\n videoInput: boolean;\n imageOutput: boolean;\n audioOutput: boolean;\n search: boolean;\n tools: boolean;\n reasoning: boolean;\n thinkingFormat: string | null;\n thinkingCanDisable: boolean;\n thinkingRange: { min: number; max: number } | null;\n contextWindow: number;\n maxOutput: number;\n}\n\n/**\n * Glob (* = wildcard) match, anchored + case-insensitive. aigetwey's\n * pricing.matchPattern so capabilities resolve identically.\n */\nexport function matchPattern(pattern: string, model: string): boolean {\n const regex = new RegExp(\n \"^\" + pattern.split(\"*\").map((s) => s.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")).join(\".*\") + \"$\",\n \"i\",\n );\n return regex.test(model);\n}\n\nexport const DEFAULT_CAPABILITIES: Caps = {\n // input modalities\n vision: false, // read images\n pdf: false, // read PDF / documents\n audioInput: false, // read audio\n videoInput: false, // read video\n // output modalities\n imageOutput: false, // generate images\n audioOutput: false, // generate audio\n // features\n search: false, // built-in web search tool / grounding\n tools: true, // function / tool calling\n reasoning: false, // thinking / reasoning\n // thinking wire format (only meaningful when reasoning:true). null → derive from transport.format.\n // enum: openai|claude-adaptive|claude-budget|gemini-level|gemini-budget|zai|qwen|deepseek|kimi|minimax|hunyuan|step\n thinkingFormat: null,\n thinkingCanDisable: true, // false → model cannot turn thinking off (clamp to min instead of disable)\n thinkingRange: null, // { min, max } for budget formats; null = no clamp\n // limits (tokens)\n contextWindow: 200000,\n maxOutput: 64000,\n};\n\n// User-added model metadata can carry dashboard service kinds instead of the\n// runtime capability names used here. Map those typed model kinds into input /\n// output capabilities so custom vision models are not treated as text-only.\nconst SERVICE_KIND_CAPABILITIES: Record<string, Partial<Caps>> = {\n imageToText: { vision: true },\n image: { imageOutput: true },\n stt: { audioInput: true },\n tts: { audioOutput: true },\n embedding: { tools: false },\n};\n\nexport function capabilitiesFromServiceKind(kind: string): Partial<Caps> | null {\n return SERVICE_KIND_CAPABILITIES[kind] || null;\n}\n\n/**\n * Canonical exact-id overrides — used for exceptions that patterns would\n * otherwise mis-match. Only declare deltas vs DEFAULT.\n */\nexport const MODEL_CAPABILITIES: Record<string, Partial<Caps>> = {\n // Claude 4.6/4.7 have 1M context + adaptive thinking (override generic claude pattern)\n \"claude-opus-4.6\": { vision: true, reasoning: true, search: true, thinkingFormat: \"claude-adaptive\", contextWindow: 1000000, maxOutput: 128000 },\n \"claude-opus-4.7\": { vision: true, reasoning: true, search: true, thinkingFormat: \"claude-adaptive\", contextWindow: 1000000, maxOutput: 128000 },\n \"claude-opus-4-6\": { vision: true, reasoning: true, search: true, thinkingFormat: \"claude-adaptive\", contextWindow: 1000000, maxOutput: 128000 },\n \"claude-sonnet-4.6\": { vision: true, reasoning: true, search: true, thinkingFormat: \"claude-adaptive\", contextWindow: 1000000, maxOutput: 64000 },\n \"claude-sonnet-4-6\": { vision: true, reasoning: true, search: true, thinkingFormat: \"claude-adaptive\", contextWindow: 1000000, maxOutput: 64000 },\n\n // Gemini image-gen / OpenAI image / xai image variants\n \"gpt-image-1\": { imageOutput: true, tools: false },\n\n // GLM vision variant (text GLM has no vision)\n \"glm-4.6v\": { vision: true, reasoning: true, thinkingFormat: \"zai\", contextWindow: 128000 },\n\n // Qwen plain coder/text (no vision) — registry \"vision-model\" / \"coder-model\" aliases\n \"vision-model\": { vision: true, reasoning: true, thinkingFormat: \"qwen\", contextWindow: 1000000 },\n \"coder-model\": { reasoning: true, thinkingFormat: \"qwen\", contextWindow: 1000000 },\n};\n\n/**\n * Provider-specific capability overrides. Keyed by provider alias/id.\n */\nexport const PROVIDER_CAPABILITIES: Record<string, Record<string, Partial<Caps>>> = {\n // CodeBuddy.cn — authoritative per-model metadata from the gateway's model\n // config (contextWindow=maxInputTokens, maxOutput=maxOutputTokens, vision=\n // supportsImages). Every model reasons via OpenAI-style reasoning_effort\n // (see registry thinkingFormat). `onlyReasoning` models can't turn thinking\n // off → thinkingCanDisable:false (clamped to minimal instead of disabled).\n \"codebuddy-cn\": {\n \"glm-5.2\": { reasoning: true, thinkingFormat: \"openai\", thinkingCanDisable: false, contextWindow: 1000000, maxOutput: 48000 },\n \"glm-5.1\": { reasoning: true, thinkingFormat: \"openai\", thinkingCanDisable: false, contextWindow: 200000, maxOutput: 48000 },\n \"glm-5.0\": { reasoning: true, thinkingFormat: \"openai\", contextWindow: 200000, maxOutput: 48000 },\n \"glm-5.0-turbo\": { reasoning: true, thinkingFormat: \"openai\", thinkingCanDisable: false, contextWindow: 200000, maxOutput: 48000 },\n \"glm-5v-turbo\": { vision: true, reasoning: true, thinkingFormat: \"openai\", thinkingCanDisable: false, contextWindow: 200000, maxOutput: 38000 },\n \"glm-4.7\": { reasoning: true, thinkingFormat: \"openai\", contextWindow: 200000, maxOutput: 48000 },\n \"minimax-m3\": { vision: true, reasoning: true, thinkingFormat: \"openai\", thinkingCanDisable: false, contextWindow: 512000, maxOutput: 48000 },\n \"minimax-m2.7\": { vision: true, reasoning: true, thinkingFormat: \"openai\", thinkingCanDisable: false, contextWindow: 200000, maxOutput: 48000 },\n \"kimi-k2.7\": { vision: true, reasoning: true, thinkingFormat: \"openai\", thinkingCanDisable: false, contextWindow: 256000, maxOutput: 32000 },\n \"kimi-k2.6\": { vision: true, reasoning: true, thinkingFormat: \"openai\", thinkingCanDisable: false, contextWindow: 256000, maxOutput: 32000 },\n \"kimi-k2.5\": { vision: true, reasoning: true, thinkingFormat: \"openai\", thinkingCanDisable: false, contextWindow: 164000, maxOutput: 32000 },\n \"hy3-preview\": { vision: true, reasoning: true, thinkingFormat: \"openai\", thinkingCanDisable: false, contextWindow: 192000, maxOutput: 64000 },\n \"deepseek-v4-pro\": { vision: true, reasoning: true, thinkingFormat: \"openai\", thinkingCanDisable: false, contextWindow: 1000000, maxOutput: 50000 },\n \"deepseek-v4-flash\": { vision: true, reasoning: true, thinkingFormat: \"openai\", thinkingCanDisable: false, contextWindow: 1000000, maxOutput: 50000 },\n \"deepseek-v3-2-volc\": { reasoning: true, thinkingFormat: \"openai\", thinkingCanDisable: false, contextWindow: 96000, maxOutput: 32000 },\n },\n};\n\n/**\n * Pattern fallback — glob (* = wildcard), matched case-insensitively and\n * anchored (^...$) so a pattern must match the full model id. ORDER MATTERS:\n * vision/specific variants first, text-only/generic families last, to avoid\n * a broad family pattern swallowing an exception (e.g. glm-4.6v vs glm-5).\n */\nexport const PATTERN_CAPABILITIES: Array<{ pattern: string; caps: Partial<Caps> }> = [\n // ── Claude (4.6+ = adaptive thinking; older/haiku = budget) ──────\n { pattern: \"*claude*opus-4.6*\", caps: { vision: true, reasoning: true, search: true, thinkingFormat: \"claude-adaptive\" } },\n { pattern: \"*claude*opus-4.7*\", caps: { vision: true, reasoning: true, search: true, thinkingFormat: \"claude-adaptive\" } },\n { pattern: \"*claude*opus-4.8*\", caps: { vision: true, reasoning: true, search: true, thinkingFormat: \"claude-adaptive\" } },\n { pattern: \"*claude*sonnet-4.6*\", caps: { vision: true, reasoning: true, search: true, thinkingFormat: \"claude-adaptive\" } },\n { pattern: \"*claude*sonnet-4.7*\", caps: { vision: true, reasoning: true, search: true, thinkingFormat: \"claude-adaptive\" } },\n { pattern: \"*claude*haiku*\", caps: { vision: true, reasoning: true, search: true, thinkingFormat: \"claude-budget\" } },\n { pattern: \"*claude*opus*\", caps: { vision: true, reasoning: true, search: true, thinkingFormat: \"claude-budget\" } },\n { pattern: \"*claude*sonnet*\", caps: { vision: true, reasoning: true, search: true, thinkingFormat: \"claude-budget\" } },\n { pattern: \"*claude*fable*\", caps: { vision: true, reasoning: true, search: true, thinkingFormat: \"claude-budget\", contextWindow: 1000000, maxOutput: 128000 } },\n { pattern: \"*claude*mythos*\", caps: { vision: true, reasoning: true, search: true, thinkingFormat: \"claude-budget\", contextWindow: 1000000, maxOutput: 128000 } },\n { pattern: \"*claude-3*\", caps: { vision: true } },\n { pattern: \"*claude*\", caps: { vision: true, reasoning: true, search: true, thinkingFormat: \"claude-budget\" } },\n\n // ── Gemini (all 2.0+ multimodal + google_search grounding, 1M ctx) ─\n { pattern: \"*gemini*image*\", caps: { vision: true, imageOutput: true, contextWindow: 1048576 } },\n { pattern: \"*gemini-3*pro*\", caps: { vision: true, audioInput: true, videoInput: true, reasoning: true, search: true, thinkingFormat: \"gemini-level\", thinkingCanDisable: false, contextWindow: 1048576, maxOutput: 65535 } },\n { pattern: \"*gemini-3*\", caps: { vision: true, audioInput: true, videoInput: true, reasoning: true, search: true, thinkingFormat: \"gemini-level\", thinkingCanDisable: false, contextWindow: 1048576, maxOutput: 65536 } },\n { pattern: \"*gemini-2.5*\", caps: { vision: true, audioInput: true, videoInput: true, reasoning: true, search: true, thinkingFormat: \"gemini-budget\", thinkingRange: { min: 0, max: 24576 }, contextWindow: 1048576, maxOutput: 65536 } },\n { pattern: \"*gemini-2*\", caps: { vision: true, audioInput: true, videoInput: true, search: true, contextWindow: 1048576, maxOutput: 65536 } },\n { pattern: \"*gemini*\", caps: { vision: true, search: true, contextWindow: 1048576 } },\n { pattern: \"*gemma*\", caps: { vision: true, contextWindow: 128000 } },\n { pattern: \"*nanobanana*\", caps: { vision: true, imageOutput: true } },\n\n // ── OpenAI GPT-5.x (vision + thinking + web search) ──────────────\n { pattern: \"*gpt-5*image*\", caps: { imageOutput: true } },\n { pattern: \"*gpt-5*codex*\", caps: { reasoning: true, search: true, thinkingFormat: \"openai\", contextWindow: 400000, maxOutput: 128000 } },\n { pattern: \"*gpt-5*\", caps: { vision: true, reasoning: true, search: true, thinkingFormat: \"openai\", contextWindow: 400000, maxOutput: 128000 } },\n { pattern: \"*gpt-4o*\", caps: { vision: true, search: true, contextWindow: 128000, maxOutput: 16384 } },\n { pattern: \"*gpt-4.1*\", caps: { vision: true, contextWindow: 1000000, maxOutput: 32768 } },\n { pattern: \"*gpt-4-turbo*\", caps: { vision: true, contextWindow: 128000 } },\n { pattern: \"*gpt-4*\", caps: { contextWindow: 128000 } },\n { pattern: \"*gpt-3.5*\", caps: { contextWindow: 16385, maxOutput: 4096 } },\n { pattern: \"*gpt-oss*\", caps: { reasoning: true, thinkingFormat: \"openai\", contextWindow: 128000 } },\n\n // ── OpenAI o-series (reasoning, vision) ──────────────────────────\n { pattern: \"*o1-mini*\", caps: { reasoning: true, thinkingFormat: \"openai\", contextWindow: 128000 } },\n { pattern: \"*o1*\", caps: { vision: true, reasoning: true, thinkingFormat: \"openai\", contextWindow: 200000, maxOutput: 100000 } },\n { pattern: \"*o3*\", caps: { vision: true, reasoning: true, thinkingFormat: \"openai\", contextWindow: 200000, maxOutput: 100000 } },\n { pattern: \"*o4*\", caps: { vision: true, reasoning: true, thinkingFormat: \"openai\", contextWindow: 200000, maxOutput: 100000 } },\n\n // ── Grok (vision + Live Search) ──────────────────────────────────\n { pattern: \"*grok*image*\", caps: { imageOutput: true } },\n { pattern: \"*grok-code*\", caps: { reasoning: true, thinkingFormat: \"openai\", contextWindow: 256000 } },\n { pattern: \"*grok-4*\", caps: { vision: true, reasoning: true, search: true, thinkingFormat: \"openai\", contextWindow: 256000 } },\n { pattern: \"*grok-3*\", caps: { vision: true, reasoning: true, search: true, thinkingFormat: \"openai\", contextWindow: 131072 } },\n { pattern: \"*grok*\", caps: { vision: true, reasoning: true, search: true, thinkingFormat: \"openai\", contextWindow: 256000 } },\n\n // ── Qwen (enable_thinking + thinking_budget; QwQ = thinking-only) ─\n { pattern: \"*qwen*vl*\", caps: { vision: true, reasoning: true, thinkingFormat: \"qwen\", contextWindow: 262144 } },\n { pattern: \"*qwen*max*\", caps: { vision: true, reasoning: true, thinkingFormat: \"qwen\", contextWindow: 1000000, maxOutput: 65536 } },\n { pattern: \"*qwen*plus*\", caps: { vision: true, reasoning: true, thinkingFormat: \"qwen\", contextWindow: 1000000, maxOutput: 65536 } },\n { pattern: \"*qwen*235b*\", caps: { reasoning: true, thinkingFormat: \"qwen\", contextWindow: 262144 } },\n { pattern: \"*qwen*coder*\", caps: { reasoning: true, thinkingFormat: \"qwen\", contextWindow: 1000000 } },\n { pattern: \"*qwq*\", caps: { reasoning: true, thinkingFormat: \"qwen\", thinkingCanDisable: false, contextWindow: 131072 } },\n { pattern: \"*qwen*\", caps: { reasoning: true, thinkingFormat: \"qwen\", contextWindow: 262144 } },\n\n // ── Kimi (enabled→reasoning_effort; K2.7-code cannot disable) ─────\n { pattern: \"*kimi*k2.7*code*\", caps: { vision: true, reasoning: true, thinkingFormat: \"kimi\", thinkingCanDisable: false, contextWindow: 262144, maxOutput: 262144 } },\n { pattern: \"*kimi*k2*\", caps: { vision: true, reasoning: true, thinkingFormat: \"kimi\", contextWindow: 262144, maxOutput: 262144 } },\n { pattern: \"*kimi*\", caps: { reasoning: true, thinkingFormat: \"kimi\", contextWindow: 262144 } },\n\n // ── GLM / Z.ai (thinking.enabled; disable via enable_thinking:false) ─\n { pattern: \"*glm-5*\", caps: { reasoning: true, thinkingFormat: \"zai\", contextWindow: 200000, maxOutput: 128000 } },\n { pattern: \"*glm-4.7*\", caps: { reasoning: true, thinkingFormat: \"zai\", contextWindow: 200000, maxOutput: 128000 } },\n { pattern: \"*glm-4*\", caps: { reasoning: true, thinkingFormat: \"zai\", contextWindow: 200000 } },\n { pattern: \"*glm*\", caps: { reasoning: true, thinkingFormat: \"zai\", contextWindow: 200000 } },\n\n // ── DeepSeek (thinking.enabled + reasoning_effort; r1 = thinking-only) ─\n { pattern: \"*deepseek-v4*\", caps: { reasoning: true, thinkingFormat: \"deepseek\", contextWindow: 1000000, maxOutput: 384000 } },\n { pattern: \"*reasoner*\", caps: { reasoning: true, thinkingFormat: \"deepseek\", thinkingCanDisable: false, contextWindow: 128000 } },\n { pattern: \"*deepseek-r*\", caps: { reasoning: true, thinkingFormat: \"deepseek\", thinkingCanDisable: false, contextWindow: 128000 } },\n { pattern: \"*deepseek-chat*\", caps: { contextWindow: 128000 } },\n { pattern: \"*deepseek*\", caps: { reasoning: true, thinkingFormat: \"deepseek\", contextWindow: 128000 } },\n\n // ── MiniMax (M3 = adaptive; M2.x cannot disable) ─────────────────\n { pattern: \"*minimax*image*\", caps: { imageOutput: true } },\n { pattern: \"*minimax-m3*\", caps: { vision: true, reasoning: true, thinkingFormat: \"minimax\", contextWindow: 1048576, maxOutput: 512000 } },\n { pattern: \"*minimax-m2.7*\", caps: { reasoning: true, thinkingFormat: \"minimax\", thinkingCanDisable: false, contextWindow: 204800, maxOutput: 131072 } },\n { pattern: \"*minimax*\", caps: { reasoning: true, thinkingFormat: \"minimax\", thinkingCanDisable: false, contextWindow: 200000, maxOutput: 131072 } },\n\n // ── Xiaomi MiMo (vision, 1M / 262K ctx) ──────────────────────────\n { pattern: \"*mimo*v2.5*\", caps: { vision: true, contextWindow: 1048576, maxOutput: 131072 } },\n { pattern: \"*mimo*omni*\", caps: { vision: true, audioInput: true, contextWindow: 262144, maxOutput: 131072 } },\n { pattern: \"*mimo*\", caps: { vision: true, contextWindow: 262144, maxOutput: 131072 } },\n\n // ── Llama (4 = vision/1M; 3.x = text-only/128K) ──────────────────\n { pattern: \"*llama-4*\", caps: { vision: true, contextWindow: 1000000 } },\n { pattern: \"*llama*\", caps: { contextWindow: 128000 } },\n\n // ── Mistral (Large 3 = vision/256K; codestral text) ──────────────\n { pattern: \"*codestral*\", caps: { contextWindow: 256000 } },\n { pattern: \"*mistral-large*\", caps: { vision: true, contextWindow: 256000 } },\n { pattern: \"*mistral*\", caps: { contextWindow: 128000 } },\n\n // ── Cohere (Command A Vision = vision; others text) ──────────────\n { pattern: \"*command-a-vision*\", caps: { vision: true, contextWindow: 128000 } },\n { pattern: \"*command*\", caps: { contextWindow: 128000 } },\n\n // ── Perplexity (web search native) ───────────────────────────────\n { pattern: \"*sonar*\", caps: { search: true, contextWindow: 128000 } },\n { pattern: \"*pplx*\", caps: { search: true, contextWindow: 128000 } },\n { pattern: \"*perplexity*\", caps: { search: true, contextWindow: 128000 } },\n\n // ── Others ───────────────────────────────────────────────────────\n { pattern: \"*hunyuan*\", caps: { reasoning: true, thinkingFormat: \"hunyuan\", contextWindow: 262144, maxOutput: 262144 } },\n { pattern: \"hy3*\", caps: { reasoning: true, thinkingFormat: \"hunyuan\", contextWindow: 262144, maxOutput: 262144 } },\n { pattern: \"*step-*\", caps: { reasoning: true, thinkingFormat: \"step\", contextWindow: 128000 } },\n { pattern: \"*nemotron*\", caps: { reasoning: true, contextWindow: 128000 } },\n { pattern: \"*ling-*\", caps: { reasoning: true, contextWindow: 128000 } },\n];\n\n/**\n * Resolve capabilities for a model using the 4-step fallback chain,\n * merged over DEFAULT_CAPABILITIES so the result is always complete.\n *\n * @param {string} provider\n * @param {string} model\n * @returns {object} full capabilities object\n */\n/**\n * models.dev-style modalities for a model ref, derived from its capabilities.\n * Ref may be a `provider/model` (vendor prefix tolerated) or a bare combo alias.\n * Mirrors what opencode/aigetwey store per model in opencode.json.\n */\nexport function modalitiesForModel(ref: string): { input: string[]; output: string[] } {\n const slash = ref.indexOf(\"/\");\n const provider = slash > 0 ? ref.slice(0, slash) : null;\n const model = slash > 0 ? ref.slice(slash + 1) : ref;\n const c = getCapabilitiesForModel(provider, model);\n const input = [\"text\"];\n if (c.vision) input.push(\"image\");\n if (c.pdf) input.push(\"pdf\");\n if (c.audioInput) input.push(\"audio\");\n if (c.videoInput) input.push(\"video\");\n const output = [\"text\"];\n if (c.imageOutput) output.push(\"image\");\n if (c.audioOutput) output.push(\"audio\");\n return { input, output };\n}\n\nexport function getCapabilitiesForModel(provider: string | null, model: string): Caps {\n if (!model) return { ...DEFAULT_CAPABILITIES };\n\n // 1. Provider-specific override\n if (provider && PROVIDER_CAPABILITIES[provider]?.[model]) {\n return { ...DEFAULT_CAPABILITIES, ...PROVIDER_CAPABILITIES[provider][model] };\n }\n\n // 2. Canonical exact (strip vendor prefix: \"anthropic/claude-opus-4.7\" -> \"claude-opus-4.7\")\n const baseModel = (model.includes(\"/\") ? model.split(\"/\").pop() : model) ?? model;\n if (MODEL_CAPABILITIES[baseModel]) return { ...DEFAULT_CAPABILITIES, ...MODEL_CAPABILITIES[baseModel] };\n if (MODEL_CAPABILITIES[model]) return { ...DEFAULT_CAPABILITIES, ...MODEL_CAPABILITIES[model] };\n\n // 3. Pattern match (first match wins)\n for (const { pattern, caps } of PATTERN_CAPABILITIES) {\n if (matchPattern(pattern, baseModel) || matchPattern(pattern, model)) {\n return { ...DEFAULT_CAPABILITIES, ...caps };\n }\n }\n\n // 4. Floor\n return { ...DEFAULT_CAPABILITIES };\n}\n"],"names":["matchPattern","pattern","model","regex","RegExp","split","map","s","replace","join","test","DEFAULT_CAPABILITIES","vision","pdf","audioInput","videoInput","imageOutput","audioOutput","search","tools","reasoning","thinkingFormat","thinkingCanDisable","thinkingRange","contextWindow","maxOutput","tts","capabilitiesFromServiceKind","SERVICE_KIND_CAPABILITIES","imageToText","image","stt","embedding","kind","MODEL_CAPABILITIES","PROVIDER_CAPABILITIES","PATTERN_CAPABILITIES","caps","min","max","modalitiesForModel","ref","slash","indexOf","provider","slice","c","getCapabilitiesForModel","input","push","output","baseModel","includes","pop"],"mappings":"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","ignoreList":[1]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[18622,(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"))},56704,(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"))},32319,(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"))},24725,(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"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},93695,(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"))},66680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},80787,e=>{"use strict";var t=e.i(47909),r=e.i(74017),a=e.i(96250),n=e.i(59756),o=e.i(61916),s=e.i(74677),i=e.i(69741),l=e.i(16795),d=e.i(87718),u=e.i(95169),p=e.i(47587),c=e.i(66012),h=e.i(70101),x=e.i(26937),R=e.i(10372),v=e.i(93695);e.i(20232);var g=e.i(220),f=e.i(89171),w=e.i(93458),m=e.i(75601);async function E(){return(await (0,w.cookies)()).delete(m.SESSION_COOKIE),f.NextResponse.json({ok:!0})}e.s(["POST",0,E],33752);var y=e.i(33752);let C=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/logout/route",pathname:"/api/logout",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/logout/route.ts",nextConfigOutput:"",userland:y,...{}}),{workAsyncStorage:A,workUnitAsyncStorage:b,serverHooks:N}=C;async function S(e,t,a){a.requestMeta&&(0,n.setRequestMeta)(e,a.requestMeta),C.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let f="/api/logout/route";f=f.replace(/\/index$/,"")||"/";let w=await C.prepare(e,t,{srcPage:f,multiZoneDraftMode:!1});if(!w)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:m,deploymentId:E,params:y,nextConfig:A,parsedUrl:b,isDraftMode:N,prerenderManifest:S,routerServerContext:T,isOnDemandRevalidate:q,revalidateOnlyGenerated:O,resolvedPathname:P,clientReferenceManifest:k,serverActionsManifest:_}=w,j=(0,i.normalizeAppPath)(f),I=!!(S.dynamicRoutes[j]||S.routes[P]),H=async()=>((null==T?void 0:T.render404)?await T.render404(e,t,b,!1):t.end("This page could not be found"),null);if(I&&!N){let e=!!S.routes[P],t=S.dynamicRoutes[j];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await H();throw new v.NoFallbackError}}let U=null;!I||C.isDev||N||(U="/index"===(U=P)?"/":U);let M=!0===C.isDev||!I,D=I&&!M;_&&k&&(0,s.setManifestsSingleton)({page:f,clientReferenceManifest:k,serverActionsManifest:_});let K=e.method||"GET",$=(0,o.getTracer)(),F=$.getActiveScopeSpan(),B=!!(null==T?void 0:T.isWrappedByNextServer),L=!!(0,n.getRequestMeta)(e,"minimalMode"),G=(0,n.getRequestMeta)(e,"incrementalCache")||await C.getIncrementalCache(e,A,S,L);null==G||G.resetRequestCache(),globalThis.__incrementalCache=G;let V={params:y,previewProps:S.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:M,incrementalCache:G,cacheLifeProfiles:A.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>C.onRequestError(e,t,a,n,T)},sharedContext:{buildId:m,deploymentId:E}},W=new l.NodeNextRequest(e),X=new l.NodeNextResponse(t),z=d.NextRequestAdapter.fromNodeNextRequest(W,(0,d.signalFromNodeResponse)(t));try{let n,s=async e=>C.handle(z,V).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=$.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.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 a=r.get("next.route");if(a){let t=`${K} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",a),n.updateName(t))}else e.updateName(`${K} ${f}`)}),i=async n=>{var o,i;let l=async({previousCacheEntry:r})=>{try{if(!L&&q&&O&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=await s(n);e.fetchMetrics=V.renderOpts.fetchMetrics;let i=V.renderOpts.pendingWaitUntil;i&&a.waitUntil&&(a.waitUntil(i),i=void 0);let l=V.renderOpts.collectedTags;if(!I)return await (0,c.sendResponse)(W,X,o,V.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(o.headers);l&&(t[R.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==V.renderOpts.collectedRevalidate&&!(V.renderOpts.collectedRevalidate>=R.INFINITE_CACHE)&&V.renderOpts.collectedRevalidate,a=void 0===V.renderOpts.collectedExpire||V.renderOpts.collectedExpire>=R.INFINITE_CACHE?void 0:V.renderOpts.collectedExpire;return{value:{kind:g.CachedRouteKind.APP_ROUTE,status:o.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await C.onRequestError(e,t,{routerKind:"App Router",routePath:f,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:q})},!1,T),t}},d=await C.handleResponse({req:e,nextConfig:A,cacheKey:U,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:S,isRoutePPREnabled:!1,isOnDemandRevalidate:q,revalidateOnlyGenerated:O,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:L});if(!I)return null;if((null==d||null==(o=d.value)?void 0:o.kind)!==g.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(i=d.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});L||t.setHeader("x-nextjs-cache",q?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),N&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,h.fromNodeOutgoingHttpHeaders)(d.value.headers);return L&&I||u.delete(R.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,x.getCacheControlHeader)(d.cacheControl)),await (0,c.sendResponse)(W,X,new Response(d.value.body,{headers:u,status:d.value.status||200})),null};B&&F?await i(F):(n=$.getActiveScopeSpan(),await $.withPropagatedContext(e.headers,()=>$.trace(u.BaseServerSpan.handleRequest,{spanName:`${K} ${f}`,kind:o.SpanKind.SERVER,attributes:{"http.method":K,"http.target":e.url}},i),void 0,!B))}catch(t){if(t instanceof v.NoFallbackError||await C.onRequestError(e,t,{routerKind:"App Router",routePath:j,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:q})},!1,T),I)throw t;return await (0,c.sendResponse)(W,X,new Response(null,{status:500})),null}}e.s(["handler",0,S,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:b})},"routeModule",0,C,"serverHooks",0,N,"workAsyncStorage",0,A,"workUnitAsyncStorage",0,b],80787)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__0pp7rn-._.js.map
|