aigetwey 1.4.2 → 1.4.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 +35 -0
- package/README.md +8 -1
- package/dashboard/.next/standalone/.next/BUILD_ID +1 -0
- package/dashboard/.next/standalone/.next/build-manifest.json +22 -0
- package/dashboard/.next/standalone/.next/required-server-files.json +338 -0
- package/dashboard/.next/standalone/.next/server/app/(console)/combos/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/standalone/.next/server/app/(console)/config/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/standalone/.next/server/app/(console)/console/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/standalone/.next/server/app/(console)/endpoint/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/standalone/.next/server/app/(console)/keys/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/standalone/.next/server/app/(console)/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/standalone/.next/server/app/(console)/providers/[id]/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/standalone/.next/server/app/(console)/providers/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/standalone/.next/server/app/(console)/quota/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/standalone/.next/server/app/(console)/tools/[id]/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/standalone/.next/server/app/(console)/tools/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/standalone/.next/server/app/(console)/usage/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/standalone/.next/server/app/_global-error.html +1 -0
- package/dashboard/.next/standalone/.next/server/app/_global-error.rsc +14 -0
- package/dashboard/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +5 -0
- package/dashboard/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +14 -0
- package/dashboard/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +5 -0
- package/dashboard/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +5 -0
- package/dashboard/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
- package/dashboard/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/standalone/.next/server/app/_not-found.html +1 -0
- package/dashboard/.next/standalone/.next/server/app/_not-found.rsc +20 -0
- package/dashboard/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +20 -0
- package/dashboard/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +6 -0
- package/dashboard/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +9 -0
- package/dashboard/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -0
- package/dashboard/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +5 -0
- package/dashboard/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +3 -0
- package/dashboard/.next/standalone/.next/server/app/combos.html +1 -0
- package/dashboard/.next/standalone/.next/server/app/combos.rsc +25 -0
- package/dashboard/.next/standalone/.next/server/app/combos.segments/!KGNvbnNvbGUp/combos/__PAGE__.segment.rsc +6 -0
- package/dashboard/.next/standalone/.next/server/app/combos.segments/!KGNvbnNvbGUp/combos.segment.rsc +5 -0
- package/dashboard/.next/standalone/.next/server/app/combos.segments/!KGNvbnNvbGUp.segment.rsc +6 -0
- package/dashboard/.next/standalone/.next/server/app/combos.segments/_full.segment.rsc +25 -0
- package/dashboard/.next/standalone/.next/server/app/combos.segments/_head.segment.rsc +6 -0
- package/dashboard/.next/standalone/.next/server/app/combos.segments/_index.segment.rsc +9 -0
- package/dashboard/.next/standalone/.next/server/app/combos.segments/_tree.segment.rsc +5 -0
- package/dashboard/.next/standalone/.next/server/app/config.html +1 -0
- package/dashboard/.next/standalone/.next/server/app/config.rsc +25 -0
- package/dashboard/.next/standalone/.next/server/app/config.segments/!KGNvbnNvbGUp/config/__PAGE__.segment.rsc +6 -0
- package/dashboard/.next/standalone/.next/server/app/config.segments/!KGNvbnNvbGUp/config.segment.rsc +5 -0
- package/dashboard/.next/standalone/.next/server/app/config.segments/!KGNvbnNvbGUp.segment.rsc +6 -0
- package/dashboard/.next/standalone/.next/server/app/config.segments/_full.segment.rsc +25 -0
- package/dashboard/.next/standalone/.next/server/app/config.segments/_head.segment.rsc +6 -0
- package/dashboard/.next/standalone/.next/server/app/config.segments/_index.segment.rsc +9 -0
- package/dashboard/.next/standalone/.next/server/app/config.segments/_tree.segment.rsc +5 -0
- package/dashboard/.next/standalone/.next/server/app/console.html +1 -0
- package/dashboard/.next/standalone/.next/server/app/console.rsc +28 -0
- package/dashboard/.next/standalone/.next/server/app/console.segments/!KGNvbnNvbGUp/console/__PAGE__.segment.rsc +9 -0
- package/dashboard/.next/standalone/.next/server/app/console.segments/!KGNvbnNvbGUp/console.segment.rsc +5 -0
- package/dashboard/.next/standalone/.next/server/app/console.segments/!KGNvbnNvbGUp.segment.rsc +6 -0
- package/dashboard/.next/standalone/.next/server/app/console.segments/_full.segment.rsc +28 -0
- package/dashboard/.next/standalone/.next/server/app/console.segments/_head.segment.rsc +6 -0
- package/dashboard/.next/standalone/.next/server/app/console.segments/_index.segment.rsc +9 -0
- package/dashboard/.next/standalone/.next/server/app/console.segments/_tree.segment.rsc +5 -0
- package/dashboard/.next/standalone/.next/server/app/endpoint.html +1 -0
- package/dashboard/.next/standalone/.next/server/app/endpoint.rsc +25 -0
- package/dashboard/.next/standalone/.next/server/app/endpoint.segments/!KGNvbnNvbGUp/endpoint/__PAGE__.segment.rsc +6 -0
- package/dashboard/.next/standalone/.next/server/app/endpoint.segments/!KGNvbnNvbGUp/endpoint.segment.rsc +5 -0
- package/dashboard/.next/standalone/.next/server/app/endpoint.segments/!KGNvbnNvbGUp.segment.rsc +6 -0
- package/dashboard/.next/standalone/.next/server/app/endpoint.segments/_full.segment.rsc +25 -0
- package/dashboard/.next/standalone/.next/server/app/endpoint.segments/_head.segment.rsc +6 -0
- package/dashboard/.next/standalone/.next/server/app/endpoint.segments/_index.segment.rsc +9 -0
- package/dashboard/.next/standalone/.next/server/app/endpoint.segments/_tree.segment.rsc +5 -0
- package/dashboard/.next/standalone/.next/server/app/index.html +1 -0
- package/dashboard/.next/standalone/.next/server/app/index.rsc +23 -0
- package/dashboard/.next/standalone/.next/server/app/index.segments/!KGNvbnNvbGUp/__PAGE__.segment.rsc +6 -0
- package/dashboard/.next/standalone/.next/server/app/index.segments/!KGNvbnNvbGUp.segment.rsc +6 -0
- package/dashboard/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +23 -0
- package/dashboard/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +6 -0
- package/dashboard/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +9 -0
- package/dashboard/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +5 -0
- package/dashboard/.next/standalone/.next/server/app/keys.html +1 -0
- package/dashboard/.next/standalone/.next/server/app/keys.rsc +25 -0
- package/dashboard/.next/standalone/.next/server/app/keys.segments/!KGNvbnNvbGUp/keys/__PAGE__.segment.rsc +6 -0
- package/dashboard/.next/standalone/.next/server/app/keys.segments/!KGNvbnNvbGUp/keys.segment.rsc +5 -0
- package/dashboard/.next/standalone/.next/server/app/keys.segments/!KGNvbnNvbGUp.segment.rsc +6 -0
- package/dashboard/.next/standalone/.next/server/app/keys.segments/_full.segment.rsc +25 -0
- package/dashboard/.next/standalone/.next/server/app/keys.segments/_head.segment.rsc +6 -0
- package/dashboard/.next/standalone/.next/server/app/keys.segments/_index.segment.rsc +9 -0
- package/dashboard/.next/standalone/.next/server/app/keys.segments/_tree.segment.rsc +5 -0
- package/dashboard/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/standalone/.next/server/app/login.html +1 -0
- package/dashboard/.next/standalone/.next/server/app/login.rsc +26 -0
- package/dashboard/.next/standalone/.next/server/app/login.segments/_full.segment.rsc +26 -0
- package/dashboard/.next/standalone/.next/server/app/login.segments/_head.segment.rsc +6 -0
- package/dashboard/.next/standalone/.next/server/app/login.segments/_index.segment.rsc +9 -0
- package/dashboard/.next/standalone/.next/server/app/login.segments/_tree.segment.rsc +5 -0
- package/dashboard/.next/standalone/.next/server/app/login.segments/login/__PAGE__.segment.rsc +9 -0
- package/dashboard/.next/standalone/.next/server/app/login.segments/login.segment.rsc +5 -0
- package/dashboard/.next/standalone/.next/server/app/providers.html +1 -0
- package/dashboard/.next/standalone/.next/server/app/providers.rsc +25 -0
- package/dashboard/.next/standalone/.next/server/app/providers.segments/!KGNvbnNvbGUp/providers/__PAGE__.segment.rsc +6 -0
- package/dashboard/.next/standalone/.next/server/app/providers.segments/!KGNvbnNvbGUp/providers.segment.rsc +5 -0
- package/dashboard/.next/standalone/.next/server/app/providers.segments/!KGNvbnNvbGUp.segment.rsc +6 -0
- package/dashboard/.next/standalone/.next/server/app/providers.segments/_full.segment.rsc +25 -0
- package/dashboard/.next/standalone/.next/server/app/providers.segments/_head.segment.rsc +6 -0
- package/dashboard/.next/standalone/.next/server/app/providers.segments/_index.segment.rsc +9 -0
- package/dashboard/.next/standalone/.next/server/app/providers.segments/_tree.segment.rsc +5 -0
- package/dashboard/.next/standalone/.next/server/app/quota.html +1 -0
- package/dashboard/.next/standalone/.next/server/app/quota.rsc +25 -0
- package/dashboard/.next/standalone/.next/server/app/quota.segments/!KGNvbnNvbGUp/quota/__PAGE__.segment.rsc +6 -0
- package/dashboard/.next/standalone/.next/server/app/quota.segments/!KGNvbnNvbGUp/quota.segment.rsc +5 -0
- package/dashboard/.next/standalone/.next/server/app/quota.segments/!KGNvbnNvbGUp.segment.rsc +6 -0
- package/dashboard/.next/standalone/.next/server/app/quota.segments/_full.segment.rsc +25 -0
- package/dashboard/.next/standalone/.next/server/app/quota.segments/_head.segment.rsc +6 -0
- package/dashboard/.next/standalone/.next/server/app/quota.segments/_index.segment.rsc +9 -0
- package/dashboard/.next/standalone/.next/server/app/quota.segments/_tree.segment.rsc +5 -0
- package/dashboard/.next/standalone/.next/server/app/tools.html +1 -0
- package/dashboard/.next/standalone/.next/server/app/tools.rsc +25 -0
- package/dashboard/.next/standalone/.next/server/app/tools.segments/!KGNvbnNvbGUp/tools/__PAGE__.segment.rsc +6 -0
- package/dashboard/.next/standalone/.next/server/app/tools.segments/!KGNvbnNvbGUp/tools.segment.rsc +5 -0
- package/dashboard/.next/standalone/.next/server/app/tools.segments/!KGNvbnNvbGUp.segment.rsc +6 -0
- package/dashboard/.next/standalone/.next/server/app/tools.segments/_full.segment.rsc +25 -0
- package/dashboard/.next/standalone/.next/server/app/tools.segments/_head.segment.rsc +6 -0
- package/dashboard/.next/standalone/.next/server/app/tools.segments/_index.segment.rsc +9 -0
- package/dashboard/.next/standalone/.next/server/app/tools.segments/_tree.segment.rsc +5 -0
- package/dashboard/.next/standalone/.next/server/chunks/[root-of-the-server]__0-6ukjk._.js +3 -0
- package/dashboard/.next/standalone/.next/server/chunks/[root-of-the-server]__07euc03._.js +3 -0
- package/dashboard/.next/standalone/.next/server/chunks/[root-of-the-server]__082azhr._.js +3 -0
- package/dashboard/.next/standalone/.next/server/chunks/[root-of-the-server]__0das32e._.js +3 -0
- package/dashboard/.next/standalone/.next/server/chunks/[root-of-the-server]__0pp7rn-._.js +3 -0
- package/dashboard/.next/standalone/.next/server/chunks/[root-of-the-server]__0uqpr_c._.js +3 -0
- package/dashboard/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0zf4yft._.js +27 -0
- package/dashboard/.next/standalone/.next/server/chunks/ssr/_0p90gyy._.js +3 -0
- package/dashboard/.next/standalone/.next/server/chunks/ssr/src_components_10h9ide._.js +3 -0
- package/dashboard/.next/standalone/.next/server/chunks/ssr/src_components_ProviderDetail_tsx_06sxu0r._.js +3 -0
- package/dashboard/.next/standalone/.next/server/chunks/ssr/src_components_ProviderManager_tsx_09d2dzw._.js +3 -0
- package/dashboard/.next/standalone/.next/server/middleware-build-manifest.js +22 -0
- package/dashboard/.next/standalone/.next/server/pages/404.html +1 -0
- package/dashboard/.next/standalone/.next/server/pages/500.html +1 -0
- package/dashboard/.next/standalone/package.json +32 -0
- package/dashboard/.next/standalone/server.js +38 -0
- package/dashboard/.next/standalone/vendor/@img/colour/color.cjs +1596 -0
- package/dashboard/.next/standalone/vendor/@img/colour/index.cjs +1 -0
- package/dashboard/.next/standalone/vendor/@img/colour/package.json +58 -0
- package/dashboard/.next/standalone/vendor/@img/sharp-libvips-linux-x64/README.md +46 -0
- package/dashboard/.next/standalone/vendor/@img/sharp-libvips-linux-x64/lib/glib-2.0/include/glibconfig.h +221 -0
- package/dashboard/.next/standalone/vendor/@img/sharp-libvips-linux-x64/lib/index.js +1 -0
- package/dashboard/.next/standalone/vendor/@img/sharp-libvips-linux-x64/lib/libvips-cpp.so.8.17.3 +0 -0
- package/dashboard/.next/standalone/vendor/@img/sharp-libvips-linux-x64/package.json +42 -0
- package/dashboard/.next/standalone/vendor/@img/sharp-libvips-linux-x64/versions.json +30 -0
- package/dashboard/.next/standalone/vendor/@img/sharp-linux-x64/lib/sharp-linux-x64.node +0 -0
- package/dashboard/.next/standalone/vendor/@img/sharp-linux-x64/package.json +46 -0
- package/dashboard/.next/standalone/vendor/@next/env/dist/index.js +1 -0
- package/dashboard/.next/standalone/vendor/@next/env/package.json +36 -0
- package/dashboard/.next/standalone/vendor/@swc/helpers/cjs/_interop_require_default.cjs +6 -0
- package/dashboard/.next/standalone/vendor/@swc/helpers/cjs/_interop_require_wildcard.cjs +38 -0
- package/dashboard/.next/standalone/vendor/@swc/helpers/package.json +471 -0
- package/dashboard/.next/standalone/vendor/client-only/package.json +19 -0
- package/dashboard/.next/standalone/vendor/detect-libc/lib/detect-libc.js +313 -0
- package/dashboard/.next/standalone/vendor/detect-libc/lib/elf.js +39 -0
- package/dashboard/.next/standalone/vendor/detect-libc/lib/filesystem.js +51 -0
- package/dashboard/.next/standalone/vendor/detect-libc/lib/process.js +24 -0
- package/dashboard/.next/standalone/vendor/detect-libc/package.json +44 -0
- package/dashboard/.next/standalone/vendor/next/dist/build/adapter/setup-node-env.external.js +15 -0
- package/dashboard/.next/standalone/vendor/next/dist/build/define-env.js +255 -0
- package/dashboard/.next/standalone/vendor/next/dist/build/duration-to-string.js +99 -0
- package/dashboard/.next/standalone/vendor/next/dist/build/get-supported-browsers.js +38 -0
- package/dashboard/.next/standalone/vendor/next/dist/build/next-config-ts/require-hook.js +85 -0
- package/dashboard/.next/standalone/vendor/next/dist/build/next-config-ts/transpile-config.js +251 -0
- package/dashboard/.next/standalone/vendor/next/dist/build/output/format.js +84 -0
- package/dashboard/.next/standalone/vendor/next/dist/build/output/log.js +135 -0
- package/dashboard/.next/standalone/vendor/next/dist/build/segment-config/app/app-segment-config.js +162 -0
- package/dashboard/.next/standalone/vendor/next/dist/build/segment-config/app/app-segments.js +137 -0
- package/dashboard/.next/standalone/vendor/next/dist/build/segment-config/app/collect-root-param-keys.js +52 -0
- package/dashboard/.next/standalone/vendor/next/dist/build/static-paths/app/extract-pathname-route-param-segments-from-loader-tree.js +137 -0
- package/dashboard/.next/standalone/vendor/next/dist/build/static-paths/app.js +736 -0
- package/dashboard/.next/standalone/vendor/next/dist/build/static-paths/pages.js +169 -0
- package/dashboard/.next/standalone/vendor/next/dist/build/static-paths/utils.js +119 -0
- package/dashboard/.next/standalone/vendor/next/dist/build/swc/helpers.js +15 -0
- package/dashboard/.next/standalone/vendor/next/dist/build/swc/index.js +1348 -0
- package/dashboard/.next/standalone/vendor/next/dist/build/swc/install-bindings.js +30 -0
- package/dashboard/.next/standalone/vendor/next/dist/build/swc/jest-transformer.js +76 -0
- package/dashboard/.next/standalone/vendor/next/dist/build/swc/loaderWorkerPool.js +40 -0
- package/dashboard/.next/standalone/vendor/next/dist/build/swc/options.js +403 -0
- package/dashboard/.next/standalone/vendor/next/dist/build/swc/types.js +6 -0
- package/dashboard/.next/standalone/vendor/next/dist/build/utils.js +1216 -0
- package/dashboard/.next/standalone/vendor/next/dist/cli/next-test.js +170 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/add-base-path.js +24 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/app-call-server.js +34 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/app-find-source-map-url.js +39 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/assign-location.js +29 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/app-router-announcer.js +78 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/app-router-headers.js +138 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/app-router-instance.js +397 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/app-router-utils.js +62 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/app-router.js +514 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/builtin/default.js +35 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/builtin/error-styles.js +165 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/builtin/global-error.js +100 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/dev-root-http-access-fallback-boundary.js +52 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/error-boundary.js +144 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/errors/graceful-degrade-boundary.js +86 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/errors/root-error-boundary.js +41 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/forbidden.js +48 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/handle-isr-error.js +30 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/hooks-server-context.js +42 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/http-access-fallback/error-boundary.js +125 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/http-access-fallback/http-access-fallback.js +72 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/is-next-router-error.js +23 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/links.js +299 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/match-segments.js +32 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/nav-failure-handler.js +61 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/navigation-devtools.js +126 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/navigation-untracked.js +67 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/navigation.js +225 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/navigation.react-server.js +75 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/not-found.js +42 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/readonly-url-search-params.js +41 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/redirect-boundary.js +107 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/redirect-error.js +43 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/redirect-status-code.js +24 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/redirect.js +91 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/router-reducer/compute-changed-path.js +201 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/router-reducer/create-href-from-url.js +21 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/router-reducer/create-initial-router-state.js +153 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/router-reducer/create-router-cache-key.js +32 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/router-reducer/fetch-server-response.js +457 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/router-reducer/is-navigating-to-new-root-layout.js +59 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/router-reducer/ppr-navigations.js +1341 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/router-reducer/reducers/committed-state.js +49 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/router-reducer/reducers/find-head-in-cache.js +63 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/router-reducer/reducers/has-interception-route-in-current-tree.js +38 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/router-reducer/reducers/hmr-refresh-reducer.js +23 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/router-reducer/reducers/navigate-reducer.js +56 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/router-reducer/reducers/refresh-reducer.js +83 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/router-reducer/reducers/restore-reducer.js +62 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/router-reducer/reducers/server-action-reducer.js +320 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/router-reducer/reducers/server-patch-reducer.js +58 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/router-reducer/router-reducer-types.js +70 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/router-reducer/router-reducer.js +66 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/router-reducer/set-cache-busting-search-param.js +66 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/segment-cache/bfcache.js +128 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/segment-cache/cache-key.js +28 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/segment-cache/cache-map.js +305 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/segment-cache/cache.js +1933 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/segment-cache/lru.js +152 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/segment-cache/navigation-testing-lock.js +194 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/segment-cache/navigation.js +597 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/segment-cache/optimistic-routes.js +543 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/segment-cache/prefetch.js +31 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/segment-cache/scheduler.js +1249 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/segment-cache/types.js +69 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/segment-cache/vary-path.js +278 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/static-generation-bailout.js +42 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/unauthorized.js +49 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/unrecognized-action-error.js +39 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/unresolved-thenable.js +23 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/unstable-rethrow.browser.js +28 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/unstable-rethrow.js +25 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/unstable-rethrow.server.js +32 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/components/use-action-queue.js +148 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/dev/debug-channel.js +172 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/flight-data-helpers.js +232 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/has-base-path.js +23 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/lib/console.js +177 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/lib/javascript-url.js +32 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/navigation-build-id.js +53 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/normalize-trailing-slash.js +36 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/remove-base-path.js +32 -0
- package/dashboard/.next/standalone/vendor/next/dist/client/route-params.js +247 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/@edge-runtime/cookies/index.js +339 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/@edge-runtime/cookies/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/@edge-runtime/ponyfill/index.js +46 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/@edge-runtime/ponyfill/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/@edge-runtime/primitives/abort-controller.js.text.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/@edge-runtime/primitives/console.js.text.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/@edge-runtime/primitives/events.js.text.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/@edge-runtime/primitives/index.js +5 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/@edge-runtime/primitives/load.js +18713 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/@edge-runtime/primitives/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/@edge-runtime/primitives/stream.js +44 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/@edge-runtime/primitives/timers.js.text.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/@edge-runtime/primitives/url.js.text.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/@hapi/accept/index.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/@hapi/accept/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/@mswjs/interceptors/ClientRequest/index.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/@mswjs/interceptors/ClientRequest/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/@napi-rs/triples/index.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/@napi-rs/triples/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/@opentelemetry/api/index.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/@opentelemetry/api/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/async-retry/index.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/async-retry/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/async-sema/index.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/async-sema/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/busboy/index.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/busboy/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/bytes/index.js +8 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/bytes/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/ci-info/index.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/ci-info/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/commander/index.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/commander/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/comment-json/index.js +7 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/comment-json/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/compression/index.js +58 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/compression/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/conf/index.js +15 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/conf/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/content-disposition/index.js +6 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/content-disposition/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/cookie/index.js +7 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/cookie/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/cross-spawn/index.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/cross-spawn/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/debug/index.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/debug/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/edge-runtime/index.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/edge-runtime/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/find-up/index.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/find-up/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/fresh/index.js +8 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/fresh/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/http-proxy/index.js +34 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/http-proxy/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/image-detector/detector.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/image-size/index.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/image-size/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/ipaddr.js/ipaddr.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/ipaddr.js/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/is-animated/index.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/is-animated/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/is-docker/index.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/is-docker/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/is-wsl/index.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/is-wsl/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/jsonwebtoken/index.js +11 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/jsonwebtoken/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/nanoid/index.cjs +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/nanoid/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js +54 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js +54 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/next-server/app-route-turbo.runtime.prod.js +6 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +20 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/p-limit/index.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/p-limit/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/p-queue/index.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/p-queue/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/path-browserify/index.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/path-browserify/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/path-to-regexp/index.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/path-to-regexp/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/picomatch/index.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/picomatch/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/react-is/cjs/react-is.development.js +133 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/react-is/cjs/react-is.production.js +130 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/react-is/index.js +7 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/react-is/package.json +26 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/regenerator-runtime/package.json +19 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/regenerator-runtime/runtime.js +729 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/semver/index.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/semver/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/send/index.js +70 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/send/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/source-map/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/source-map/source-map.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/stacktrace-parser/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/string-hash/index.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/string-hash/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/strip-ansi/index.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/strip-ansi/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/superstruct/index.cjs +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/superstruct/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/tar/index.min.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/tar/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/text-table/index.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/text-table/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/watchpack/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/watchpack/watchpack.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/ws/index.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/ws/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/zod/index.cjs +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/zod/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/zod-validation-error/index.js +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/compiled/zod-validation-error/package.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/experimental/testmode/context.js +57 -0
- package/dashboard/.next/standalone/vendor/next/dist/experimental/testmode/fetch.js +142 -0
- package/dashboard/.next/standalone/vendor/next/dist/experimental/testmode/httpget.js +26 -0
- package/dashboard/.next/standalone/vendor/next/dist/experimental/testmode/server-edge.js +32 -0
- package/dashboard/.next/standalone/vendor/next/dist/experimental/testmode/server.js +62 -0
- package/dashboard/.next/standalone/vendor/next/dist/export/helpers/create-incremental-cache.js +61 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/batcher.js +65 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/build-custom-route.js +46 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/bundler.js +97 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/client-and-server-references.js +54 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/coalesced-function.js +39 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/compile-error.js +14 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/constants.js +420 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/create-client-router-filter.js +67 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/default-transpiled-packages.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/detached-promise.js +32 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/detect-typo.js +51 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/download-swc.js +183 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/error-telemetry-utils.js +42 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/fallback.js +100 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/fatal-error.js +14 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/file-exists.js +53 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/find-config.js +102 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/find-pages-dir.js +65 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/find-root.js +126 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/format-cli-help-output.js +84 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/format-dynamic-import-path.js +24 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/format-server-error.js +75 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/framework/boundary-components.js +62 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/framework/boundary-constants.js +36 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/fs/rename.js +87 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/fs/write-atomic.js +28 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/generate-interception-routes-rewrites.js +52 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/get-files-in-dir.js +33 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/get-network-host.js +44 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/get-package-version.js +118 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/get-project-dir.js +51 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/has-necessary-dependencies.js +49 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/helpers/get-cache-directory.js +66 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/helpers/get-npx-command.js +29 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/helpers/get-online.js +50 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/helpers/get-pkg-manager.js +63 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/helpers/get-registry.js +45 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/helpers/get-reserved-port.js +116 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/helpers/install.js +83 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/import-next-warning.js +50 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/inline-static-env.js +112 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/install-dependencies.js +40 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/interop-default.js +16 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/is-api-route.js +15 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/is-app-page-route.js +15 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/is-app-route-route.js +15 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/is-edge-runtime.js +16 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/is-error.js +78 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/is-interception-route-rewrite.js +18 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/is-internal-component.js +36 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/is-serializable-props.js +106 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/known-edge-safe-packages.json +1 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/load-custom-routes.js +594 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/memory/gc-observer.js +53 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/memory/shutdown.js +29 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/memory/startup.js +47 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/memory/trace.js +109 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/metadata/constants.js +40 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/metadata/default-metadata.js +82 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/metadata/generate/icon-mark.js +22 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/metadata/generate/utils.js +52 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/metadata/get-metadata-route.js +123 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/metadata/is-metadata-route.js +221 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/metadata/metadata-context.js +18 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/metadata/metadata.js +1686 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/metadata/resolve-metadata.js +884 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/metadata/resolvers/resolve-basics.js +232 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/metadata/resolvers/resolve-icons.js +56 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/metadata/resolvers/resolve-opengraph.js +199 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/metadata/resolvers/resolve-title.js +40 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/metadata/resolvers/resolve-url.js +135 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/metadata/types/alternative-urls-types.js +7 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/metadata/types/extra-types.js +9 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/metadata/types/icons.js +6 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/metadata/types/manifest-types.js +6 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/metadata/types/metadata-interface.js +18 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/metadata/types/metadata-types.js +10 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/metadata/types/opengraph-types.js +6 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/metadata/types/resolvers.js +6 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/metadata/types/twitter-types.js +7 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/mime-type.js +20 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/mkcert.js +204 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/multi-file-writer.js +75 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/needs-experimental-react.js +16 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/non-nullable.js +15 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/normalize-path.js +21 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/oxford-comma-list.js +15 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/page-types.js +18 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/patch-incorrect-lockfile.js +185 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/pick.js +19 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/picocolors.js +177 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/pretty-bytes.js +74 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/realpath.js +20 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/recursive-copy.js +76 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/recursive-delete.js +137 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/recursive-readdir.js +124 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/redirect-status.js +46 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/require-instrumentation-client.js +26 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/resolve-build-paths.js +154 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/resolve-from.js +65 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/route-pattern-normalizer.js +107 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/scheduler.js +64 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/semver-noop.js +18 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/server-external-packages.jsonc +103 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/setup-exception-listeners.js +11 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/static-env.js +92 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/try-to-parse-path.js +67 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/turbopack-warning.js +185 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/typescript/diagnosticFormatter.js +243 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/typescript/getTypeScriptConfiguration.js +153 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/typescript/getTypeScriptIntent.js +52 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/typescript/missingDependencyError.js +27 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/typescript/runTypeCheck.js +149 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/typescript/type-paths.js +51 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/typescript/writeAppTypeDeclarations.js +75 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/typescript/writeConfigurationDefaults.js +395 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/url.js +75 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/verify-partytown-setup.js +115 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/verify-root-layout.js +165 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/verify-typescript-setup.js +228 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/wait.js +19 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/with-promise-cache.js +24 -0
- package/dashboard/.next/standalone/vendor/next/dist/lib/worker.js +234 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/ReactDOMServerPages.js +16 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/accept-header.js +132 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/after/after-context.js +140 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/after/after.js +26 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/after/awaiter.js +74 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/after/builtin-request-context.js +38 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/after/index.js +21 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/after/run-with-after.js +35 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/api-utils/get-cookie-parser.js +22 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/api-utils/index.js +201 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/api-utils/node/api-resolver.js +395 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/api-utils/node/parse-body.js +79 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/api-utils/node/try-get-preview-data.js +86 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/api-utils/web.js +17 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/action-async-storage-instance.js +14 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/action-async-storage.external.js +13 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/action-handler.js +1027 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/after-task-async-storage-instance.js +14 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/after-task-async-storage.external.js +13 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/app-render-prerender-utils.js +167 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/app-render-render-utils.js +76 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/app-render-scheduling.js +188 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/app-render.js +4522 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/async-local-storage.js +76 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/cache-signal.js +181 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/collect-segment-data.js +616 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/console-async-storage-instance.js +14 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/console-async-storage.external.js +13 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/create-component-styles-and-scripts.js +33 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/create-component-tree.js +870 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/create-error-handler.js +189 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/create-flight-router-state-from-loader-tree.js +102 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/csrf-protection.js +86 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/debug-channel-server.js +30 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/debug-channel-server.web.js +71 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/dynamic-access-async-storage-instance.js +14 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/dynamic-access-async-storage.external.js +13 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/dynamic-rendering.js +1144 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/encryption-utils-server.js +114 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/encryption-utils.js +93 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/encryption.js +259 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/entry-base.js +256 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/flight-render-result.js +28 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/get-asset-query-string.js +29 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/get-css-inlined-link-tags.js +49 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/get-layer-assets.js +65 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/get-preloadable-fonts.js +39 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/get-script-nonce-from-header.js +32 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/get-short-dynamic-param-type.js +25 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/has-loading-component-in-tree.js +19 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/instant-validation/boundary-constants.js +13 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/instant-validation/boundary-impl.js +103 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/instant-validation/boundary-tracking.js +18 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/instant-validation/instant-config.js +181 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/instant-validation/instant-samples-client.js +128 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/instant-validation/instant-samples.js +432 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/instant-validation/instant-validation-error.js +33 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/instant-validation/instant-validation.js +713 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/instant-validation/stream-utils.js +96 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/interop-default.js +17 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/make-get-server-inserted-html.js +92 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/manifests-singleton.js +264 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/metadata-insertion/create-server-inserted-metadata.js +29 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/module-loading/track-dynamic-import.js +57 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/module-loading/track-module-loading.external.js +32 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/module-loading/track-module-loading.instance.js +66 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/parse-and-validate-flight-router-state.js +49 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/postponed-state.js +157 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/prospective-render-utils.js +74 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/react-large-shell-error.js +17 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/react-server.node.js +39 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/render-css-resource.js +52 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/required-scripts.js +76 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/rsc/postpone.js +18 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/rsc/preloads.js +74 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/rsc/taint.js +79 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/segment-explorer-path.js +128 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/server-inserted-html.js +77 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/staged-rendering.js +343 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/stale-time.js +111 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/stream-ops.js +106 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/stream-ops.web.js +163 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/strip-flight-headers.js +18 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/types.js +65 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/use-flight-response.js +214 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/vary-params.js +336 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/walk-tree-with-flight-router-state.js +232 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/work-async-storage-instance.js +14 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/work-async-storage.external.js +13 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/work-unit-async-storage-instance.js +14 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/app-render/work-unit-async-storage.external.js +280 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/async-storage/draft-mode-provider.js +62 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/async-storage/request-store.js +144 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/async-storage/with-store.js +6 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/async-storage/work-store.js +92 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/base-http/helpers.js +36 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/base-http/index.js +54 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/base-http/node.js +147 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/base-http/web.js +124 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/base-server.js +1882 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/body-streams.js +114 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/cache-dir.js +26 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/capsize-font-metrics.json +181516 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/ci-info.js +41 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/client-component-renderer-logger.js +70 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/config-schema.js +727 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/config-shared.js +369 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/config-utils.js +185 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/config.js +1545 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/create-deduped-by-callsite-server-error-logger.js +96 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/crypto-utils.js +70 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/dev/browser-logs/file-logger.js +186 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/dev/browser-logs/receive-logs.js +558 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/dev/browser-logs/source-map.js +222 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/dev/debug-channel.js +87 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/dev/dev-indicator-server-state.js +15 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/dev/get-source-map-from-file.js +100 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/dev/hot-middleware.js +274 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/dev/hot-reloader-rspack.js +171 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/dev/hot-reloader-shared-utils.js +56 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/dev/hot-reloader-turbopack.js +1480 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/dev/hot-reloader-types.js +58 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/dev/hot-reloader-webpack.js +1386 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/dev/log-requests.js +149 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/dev/messages.js +74 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/dev/middleware-turbopack.js +403 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/dev/middleware-webpack.js +483 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/dev/node-stack-frames.js +72 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/dev/on-demand-entry-handler.js +773 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/dev/parse-version-info.js +108 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/dev/require-cache.js +79 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/dev/serialized-errors.js +67 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/dev/server-action-logger.js +37 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/dev/static-paths-worker.js +105 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/dev/turbopack-utils.js +687 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/dynamic-rendering-utils.js +108 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/font-utils.js +43 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/get-app-route-from-entrypoint.js +30 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/get-page-files.js +23 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/get-route-from-entrypoint.js +35 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/image-optimizer.js +1240 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/instrumentation/types.js +6 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/instrumentation/utils.js +21 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/internal-utils.js +39 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/is-private-ip.js +36 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/app-dir-module.js +59 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/app-info-log.js +132 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/async-callback-set.js +29 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/cache-control.js +22 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/cache-handlers/default.external.js +18 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/cache-handlers/default.js +160 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/cache-handlers/types.js +8 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/chrome-devtools-workspace.js +116 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/clone-response.js +77 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/cpu-profile.js +59 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/decode-query-path-parameter.js +26 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/dedupe-fetch.js +163 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/dev-bundler-service.js +95 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/disk-lru-cache.external.js +57 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/encode-cache-tag.js +45 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/etag.js +56 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/experimental/create-env-definitions.js +48 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/experimental/ppr.js +47 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/find-page-file.js +147 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/fix-mojibake.js +25 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/format-hostname.js +16 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/i18n-provider.js +129 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/implicit-tags.js +80 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/incremental-cache/file-system-cache.js +335 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/incremental-cache/index.js +501 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/incremental-cache/memory-cache.external.js +57 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js +73 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/incremental-cache/tags-manifest.external.js +55 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/install-code-frame.js +22 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/is-ipv6.js +41 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/is-rsc-request.js +18 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/lazy-result.js +46 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/lru-cache.js +191 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/match-next-data-pathname.js +18 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/mock-request.js +441 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/module-loader/module-loader.js +8 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/module-loader/node-module-loader.js +25 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/module-loader/route-module-loader.js +26 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/node-fs-methods.js +28 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/parse-stack.js +46 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/patch-fetch.js +982 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/patch-set-header.js +45 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/postponed-request-body.js +64 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/render-server.js +155 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/router-server.js +699 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/router-utils/block-cross-site-dev.js +110 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/router-utils/build-data-route.js +48 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/router-utils/build-prefetch-segment-data-route.js +50 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/router-utils/cache-life-type-utils.js +211 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/router-utils/decode-path-params.js +42 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/router-utils/filesystem.js +591 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/router-utils/instrumentation-globals.external.js +89 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/router-utils/instrumentation-node-extensions.js +96 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/router-utils/is-postpone.js +16 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/router-utils/proxy-request.js +118 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/router-utils/resolve-routes.js +643 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/router-utils/route-types-utils.js +286 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/router-utils/router-server-context.js +26 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/router-utils/typegen.js +858 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/router-utils/types.js +6 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/server-action-request-meta.js +53 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/server-ipc/utils.js +83 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/source-maps.js +196 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/start-server.js +494 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/streaming-metadata.js +38 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/to-route.js +37 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/trace/constants.js +203 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/trace/tracer.js +280 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/trace/utils.js +16 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/types.js +6 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/utils.js +278 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/lib/worker-utils.js +36 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/load-components.js +179 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/load-default-error-components.js +41 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/load-manifest.external.js +117 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/match-bundle.js +25 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/mcp/get-mcp-middleware.js +49 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/mcp/get-or-create-mcp-server.js +41 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/mcp/mcp-telemetry-tracker.js +82 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/mcp/tools/get-errors.js +114 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/mcp/tools/get-logs.js +67 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/mcp/tools/get-page-metadata.js +188 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/mcp/tools/get-project-metadata.js +59 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/mcp/tools/get-routes.js +136 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/mcp/tools/get-server-action-by-id.js +121 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/mcp/tools/next-instance-error-state.js +31 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/mcp/tools/utils/browser-communication.js +90 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/mcp/tools/utils/format-errors.js +137 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/next-server.js +1429 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/next-typescript.js +13 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/next.js +455 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/node-environment-baseline.js +25 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/node-environment-extensions/console-dim.external.js +301 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/node-environment-extensions/console-exit.js +49 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/node-environment-extensions/console-file.js +56 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/node-environment-extensions/date.js +52 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/node-environment-extensions/error-inspect.js +8 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/node-environment-extensions/fast-set-immediate.external.js +577 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/node-environment-extensions/global-behaviors.js +33 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/node-environment-extensions/io-utils.js +195 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/node-environment-extensions/node-crypto.js +103 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/node-environment-extensions/process-error-handlers.js +91 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/node-environment-extensions/random.js +28 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/node-environment-extensions/unhandled-rejection.external.js +508 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/node-environment-extensions/web-crypto.js +45 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/node-environment.js +19 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/node-polyfill-crypto.js +21 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/normalizers/absolute-filename-normalizer.js +33 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/normalizers/built/app/app-bundle-path-normalizer.js +54 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/normalizers/built/app/app-filename-normalizer.js +22 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/normalizers/built/app/app-page-normalizer.js +40 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/normalizers/built/app/app-pathname-normalizer.js +55 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/normalizers/built/app/index.js +42 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/normalizers/built/pages/index.js +44 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/normalizers/built/pages/pages-bundle-path-normalizer.js +55 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/normalizers/built/pages/pages-filename-normalizer.js +22 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/normalizers/built/pages/pages-page-normalizer.js +19 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/normalizers/built/pages/pages-pathname-normalizer.js +19 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/normalizers/locale-route-normalizer.js +26 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/normalizers/normalizer.js +6 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/normalizers/normalizers.js +23 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/normalizers/prefixing-normalizer.js +26 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/normalizers/request/base-path.js +25 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/normalizers/request/next-data.js +38 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/normalizers/request/pathname-normalizer.js +6 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/normalizers/request/prefix.js +39 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/normalizers/request/rsc.js +19 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/normalizers/request/segment-prefix-rsc.js +33 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/normalizers/request/suffix.js +27 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/normalizers/underscore-normalizer.js +17 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/normalizers/wrap-normalizer-fn.js +17 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/og/image-response.js +53 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/patch-error-inspect.js +453 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/pipe-readable.js +140 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/post-process.js +39 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/render-result.js +204 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/render.js +1148 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/request/connection.js +133 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/request/cookies.js +235 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/request/draft-mode.js +230 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/request/fallback-params.js +95 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/request/headers.js +229 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/request/params.js +527 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/request/pathname.js +119 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/request/root-params.js +194 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/request/search-params.js +526 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/request/utils.js +51 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/request-meta.js +55 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/require-hook.js +82 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/require.js +109 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/response-cache/index.js +311 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/response-cache/types.js +41 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/response-cache/utils.js +104 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/response-cache/web.js +101 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/resume-data-cache/cache-store.js +96 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/resume-data-cache/resume-data-cache.js +124 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/revalidation-utils.js +157 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-definitions/app-page-route-definition.js +16 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-definitions/app-route-route-definition.js +6 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-definitions/locale-route-definition.js +6 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-definitions/pages-api-route-definition.js +6 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-definitions/pages-route-definition.js +6 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-definitions/route-definition.js +6 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-kind.js +32 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-matcher-managers/default-route-matcher-manager.js +239 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-matcher-managers/dev-route-matcher-manager.js +120 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-matcher-managers/route-matcher-manager.js +6 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-matcher-providers/app-page-route-matcher-provider.js +55 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-matcher-providers/app-route-route-matcher-provider.js +43 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-matcher-providers/dev/dev-app-page-route-matcher-provider.js +91 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-matcher-providers/dev/dev-app-route-route-matcher-provider.js +112 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-matcher-providers/dev/dev-pages-api-route-matcher-provider.js +77 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-matcher-providers/dev/dev-pages-route-matcher-provider.js +77 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-matcher-providers/dev/file-cache-route-matcher-provider.js +28 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-matcher-providers/dev/helpers/file-reader/batched-file-reader.js +106 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-matcher-providers/dev/helpers/file-reader/default-file-reader.js +42 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-matcher-providers/dev/helpers/file-reader/file-reader.js +6 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-matcher-providers/helpers/cached-route-matcher-provider.js +30 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-matcher-providers/helpers/manifest-loaders/manifest-loader.js +6 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-matcher-providers/helpers/manifest-loaders/node-manifest-loader.js +34 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-matcher-providers/helpers/manifest-loaders/server-manifest-loader.js +20 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-matcher-providers/manifest-route-matcher-provider.js +21 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-matcher-providers/pages-api-route-matcher-provider.js +55 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-matcher-providers/pages-route-matcher-provider.js +64 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-matcher-providers/route-matcher-provider.js +6 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-matchers/app-page-route-matcher.js +18 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-matchers/app-route-route-matcher.js +15 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-matchers/locale-route-matcher.js +68 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-matchers/pages-api-route-matcher.js +30 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-matchers/pages-route-matcher.js +30 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-matchers/route-matcher.js +54 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-matches/app-page-route-match.js +6 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-matches/app-route-route-match.js +6 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-matches/locale-route-match.js +6 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-matches/pages-api-route-match.js +16 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-matches/pages-route-match.js +6 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-matches/route-match.js +6 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-page/helpers/prerender-manifest-matcher.js +51 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-page/module.compiled.js +36 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-page/module.js +162 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-page/module.render.js +24 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-page/normalize-request-url.js +25 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-page/vendored/contexts/app-router-context.js +4 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-page/vendored/contexts/entrypoints.js +87 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-page/vendored/contexts/head-manager-context.js +4 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-page/vendored/contexts/hooks-client-context.js +4 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-page/vendored/contexts/image-config-context.js +4 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-page/vendored/contexts/router-context.js +4 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-page/vendored/contexts/server-inserted-html.js +4 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-page/vendored/rsc/entrypoints.js +140 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-page/vendored/rsc/react-compiler-runtime.js +4 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-page/vendored/rsc/react-dom.js +4 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime.js +4 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime.js +4 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-turbopack-server.js +4 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-turbopack-static.js +4 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server.js +4 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-static.js +4 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-page/vendored/rsc/react.js +4 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-page/vendored/ssr/entrypoints.js +125 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-page/vendored/ssr/react-compiler-runtime.js +4 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-page/vendored/ssr/react-dom-server.js +4 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-page/vendored/ssr/react-dom.js +4 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js +4 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js +4 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-page/vendored/ssr/react-server-dom-turbopack-client.js +4 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-page/vendored/ssr/react-server-dom-webpack-client.js +4 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-page/vendored/ssr/react.js +4 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-route/helpers/auto-implement-methods.js +85 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-route/helpers/clean-url.js +24 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-route/helpers/get-pathname-from-absolute-path.js +29 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-route/helpers/is-static-gen-enabled.js +15 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-route/helpers/parsed-url-query-to-params.js +20 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-route/module.compiled.js +36 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-route/module.js +915 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/app-route/shared-modules.js +56 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/checks.js +45 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/pages/builtin/_error.js +100 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/pages/module.compiled.js +20 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/pages/module.js +92 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/pages/module.render.js +24 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/pages/pages-handler.js +545 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/pages/vendored/contexts/app-router-context.js +4 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/pages/vendored/contexts/entrypoints.js +102 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/pages/vendored/contexts/head-manager-context.js +4 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/pages/vendored/contexts/hooks-client-context.js +4 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/pages/vendored/contexts/html-context.js +4 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/pages/vendored/contexts/image-config-context.js +4 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/pages/vendored/contexts/loadable-context.js +4 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/pages/vendored/contexts/loadable.js +4 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/pages/vendored/contexts/router-context.js +4 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/pages/vendored/contexts/server-inserted-html.js +4 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/pages-api/module.compiled.js +20 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/pages-api/module.js +58 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/route-modules/route-module.js +660 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/runtime-reacts.external.js +46 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/send-payload.js +88 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/send-response.js +70 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/serve-static.js +66 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/server-route-utils.js +30 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/server-utils.js +340 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/setup-http-agent-env.js +31 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/stream-utils/encoded-tags.js +122 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/stream-utils/node-web-streams-helper.js +918 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/stream-utils/uint8array-helpers.js +74 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/typescript/constant.js +98 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/typescript/index.js +199 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/typescript/rules/client-boundary.js +97 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/typescript/rules/config.js +512 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/typescript/rules/entry.js +149 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/typescript/rules/error.js +38 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/typescript/rules/metadata.js +234 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/typescript/rules/server-boundary.js +115 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/typescript/rules/server.js +79 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/typescript/utils.js +212 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/use-cache/cache-life.js +163 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/use-cache/cache-tag.js +52 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/use-cache/constants.js +28 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/use-cache/handlers.js +121 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/use-cache/use-cache-errors.js +36 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/use-cache/use-cache-wrapper.js +1588 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/utils.js +73 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/web/adapter.js +395 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/web/edge-route-module-wrapper.js +124 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/web/error.js +54 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/web/exports/index.js +56 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/web/get-edge-preview-props.js +23 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/web/globals.js +128 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/web/http.js +39 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/web/internal-edge-wait-until.js +64 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/web/next-url.js +199 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/web/sandbox/context.js +462 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/web/sandbox/fetch-inline-assets.js +35 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/web/sandbox/index.js +28 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/web/sandbox/resource-managers.js +88 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/web/sandbox/sandbox.js +137 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/web/spec-extension/adapters/headers.js +192 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/web/spec-extension/adapters/next-request.js +142 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/web/spec-extension/adapters/reflect.js +30 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/web/spec-extension/adapters/request-cookies.js +211 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/web/spec-extension/cookies.js +29 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/web/spec-extension/fetch-event.js +98 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/web/spec-extension/image-response.js +22 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/web/spec-extension/request.js +99 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/web/spec-extension/response.js +136 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/web/spec-extension/revalidate.js +215 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/web/spec-extension/unstable-cache.js +293 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/web/spec-extension/unstable-no-store.js +51 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/web/spec-extension/url-pattern.js +14 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/web/spec-extension/user-agent.js +46 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/web/types.js +6 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/web/utils.js +151 -0
- package/dashboard/.next/standalone/vendor/next/dist/server/web/web-on-close.js +87 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/action-revalidation-kind.js +31 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/app-router-context.shared-runtime.js +50 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/app-router-types.js +46 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/constants.js +448 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/deep-freeze.js +30 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/deployment-id.js +63 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/dset.js +34 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/encode-uri-path.js +15 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/entry-constants.js +36 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/error-source.js +36 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/errors/canary-only-config-error.js +39 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/errors/code-frame.js +20 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/errors/constants.js +19 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/errors/empty-generate-static-params-error.js +24 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/errors/hard-deprecated-config-error.js +20 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/escape-regexp.js +22 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/get-hostname.js +23 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/hash.js +42 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/head-manager-context.shared-runtime.js +18 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/head.js +163 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/hooks-client-context.shared-runtime.js +60 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/html-context.shared-runtime.js +40 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/htmlescape.js +52 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/i18n/detect-domain-locale.js +25 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/i18n/get-locale-redirect.js +59 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/i18n/normalize-locale-path.js +54 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/image-blur-svg.js +22 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/image-config-context.shared-runtime.js +19 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/image-config.js +77 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/invariant-error.js +18 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/is-plain-object.js +42 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/is-thenable.js +20 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/isomorphic/path.js +14 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js +37 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/loadable-context.shared-runtime.js +19 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/loadable.shared-runtime.js +246 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/match-local-pattern.js +46 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/match-remote-pattern.js +63 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/modern-browserslist-target.js +15 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/no-fallback-error.external.js +18 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/normalized-asset-prefix.js +28 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/page-path/absolute-path-to-page.js +26 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/page-path/denormalize-page-path.js +18 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/page-path/ensure-leading-slash.js +18 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/page-path/get-page-paths.js +40 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/page-path/normalize-data-path.js +23 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/page-path/normalize-page-path.js +26 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/page-path/normalize-path-sep.js +19 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/page-path/remove-page-path-tail.js +20 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/promise-with-resolvers.js +26 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/adapters.js +136 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/routes/app.js +134 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/add-locale.js +28 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/add-path-prefix.js +20 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/add-path-suffix.js +20 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/app-paths.js +62 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/as-path-to-search-params.js +17 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/cache-busting-search-param.js +70 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/escape-path-delimiters.js +16 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/format-next-pathname-info.js +27 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/format-url.js +111 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/get-dynamic-param.js +174 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/get-next-pathname-info.js +52 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/get-route-from-asset-path.js +25 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/get-segment-param.js +90 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/html-bots.js +17 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/index.js +30 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/interception-prefix-from-param-type.js +33 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/interception-routes.js +108 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/is-bot.js +57 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/is-dynamic.js +26 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/middleware-route-matcher.js +31 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/parse-loader-tree.js +30 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/parse-path.js +33 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/parse-relative-url.js +43 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/parse-url.js +38 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/path-has-prefix.js +20 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/path-match.js +49 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/prepare-destination.js +292 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/querystring.js +79 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/relativize-url.js +40 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/remove-path-prefix.js +39 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/remove-trailing-slash.js +21 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/resolve-param-value.js +116 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/route-match-utils.js +113 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/route-matcher.js +45 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/route-regex.js +256 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router/utils/sorted-routes.js +244 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/router-context.shared-runtime.js +18 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/segment-cache/segment-value-encoding.js +99 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/segment-cache/vary-params-decoding.js +32 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/segment.js +102 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/server-inserted-html.shared-runtime.js +35 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/server-reference-info.js +56 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/side-effect.js +63 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/size-limit.js +40 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/turbopack/internal-error.js +53 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/utils/reflect-utils.js +69 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/utils/warn-once.js +22 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/utils.js +207 -0
- package/dashboard/.next/standalone/vendor/next/dist/shared/lib/zod.js +101 -0
- package/dashboard/.next/standalone/vendor/next/dist/telemetry/anonymous-meta.js +89 -0
- package/dashboard/.next/standalone/vendor/next/dist/telemetry/detached-flush.js +56 -0
- package/dashboard/.next/standalone/vendor/next/dist/telemetry/events/build.js +174 -0
- package/dashboard/.next/standalone/vendor/next/dist/telemetry/events/index.js +41 -0
- package/dashboard/.next/standalone/vendor/next/dist/telemetry/events/plugins.js +51 -0
- package/dashboard/.next/standalone/vendor/next/dist/telemetry/events/swc-load-failure.js +55 -0
- package/dashboard/.next/standalone/vendor/next/dist/telemetry/events/version.js +66 -0
- package/dashboard/.next/standalone/vendor/next/dist/telemetry/flush-telemetry.js +19 -0
- package/dashboard/.next/standalone/vendor/next/dist/telemetry/post-telemetry-payload.js +48 -0
- package/dashboard/.next/standalone/vendor/next/dist/telemetry/project-id.js +48 -0
- package/dashboard/.next/standalone/vendor/next/dist/telemetry/storage.js +301 -0
- package/dashboard/.next/standalone/vendor/next/dist/trace/index.js +58 -0
- package/dashboard/.next/standalone/vendor/next/dist/trace/report/index.js +37 -0
- package/dashboard/.next/standalone/vendor/next/dist/trace/report/to-json-build.js +40 -0
- package/dashboard/.next/standalone/vendor/next/dist/trace/report/to-json.js +165 -0
- package/dashboard/.next/standalone/vendor/next/dist/trace/report/to-telemetry.js +36 -0
- package/dashboard/.next/standalone/vendor/next/dist/trace/shared.js +39 -0
- package/dashboard/.next/standalone/vendor/next/dist/trace/trace.js +211 -0
- package/dashboard/.next/standalone/vendor/next/package.json +378 -0
- package/dashboard/.next/standalone/vendor/react/cjs/react-compiler-runtime.production.js +16 -0
- package/dashboard/.next/standalone/vendor/react/cjs/react-jsx-dev-runtime.production.js +14 -0
- package/dashboard/.next/standalone/vendor/react/cjs/react-jsx-runtime.production.js +34 -0
- package/dashboard/.next/standalone/vendor/react/cjs/react.development.js +1284 -0
- package/dashboard/.next/standalone/vendor/react/cjs/react.production.js +542 -0
- package/dashboard/.next/standalone/vendor/react/compiler-runtime.js +14 -0
- package/dashboard/.next/standalone/vendor/react/index.js +7 -0
- package/dashboard/.next/standalone/vendor/react/jsx-dev-runtime.js +7 -0
- package/dashboard/.next/standalone/vendor/react/jsx-runtime.js +7 -0
- package/dashboard/.next/standalone/vendor/react/package.json +51 -0
- package/dashboard/.next/standalone/vendor/react-dom/cjs/react-dom-server-legacy.browser.production.js +6603 -0
- package/dashboard/.next/standalone/vendor/react-dom/cjs/react-dom-server-legacy.node.production.js +6692 -0
- package/dashboard/.next/standalone/vendor/react-dom/cjs/react-dom-server.browser.production.js +7410 -0
- package/dashboard/.next/standalone/vendor/react-dom/cjs/react-dom-server.edge.production.js +7512 -0
- package/dashboard/.next/standalone/vendor/react-dom/cjs/react-dom-server.node.production.js +7707 -0
- package/dashboard/.next/standalone/vendor/react-dom/cjs/react-dom.production.js +210 -0
- package/dashboard/.next/standalone/vendor/react-dom/index.js +38 -0
- package/dashboard/.next/standalone/vendor/react-dom/package.json +117 -0
- package/dashboard/.next/standalone/vendor/react-dom/server.browser.js +16 -0
- package/dashboard/.next/standalone/vendor/react-dom/server.edge.js +17 -0
- package/dashboard/.next/standalone/vendor/react-dom/server.node.js +18 -0
- package/dashboard/.next/standalone/vendor/react-dom/static.node.js +14 -0
- package/dashboard/.next/standalone/vendor/semver/classes/comparator.js +143 -0
- package/dashboard/.next/standalone/vendor/semver/classes/range.js +577 -0
- package/dashboard/.next/standalone/vendor/semver/classes/semver.js +350 -0
- package/dashboard/.next/standalone/vendor/semver/functions/cmp.js +54 -0
- package/dashboard/.next/standalone/vendor/semver/functions/coerce.js +62 -0
- package/dashboard/.next/standalone/vendor/semver/functions/compare.js +7 -0
- package/dashboard/.next/standalone/vendor/semver/functions/eq.js +5 -0
- package/dashboard/.next/standalone/vendor/semver/functions/gt.js +5 -0
- package/dashboard/.next/standalone/vendor/semver/functions/gte.js +5 -0
- package/dashboard/.next/standalone/vendor/semver/functions/lt.js +5 -0
- package/dashboard/.next/standalone/vendor/semver/functions/lte.js +5 -0
- package/dashboard/.next/standalone/vendor/semver/functions/neq.js +5 -0
- package/dashboard/.next/standalone/vendor/semver/functions/parse.js +18 -0
- package/dashboard/.next/standalone/vendor/semver/functions/satisfies.js +12 -0
- package/dashboard/.next/standalone/vendor/semver/internal/constants.js +37 -0
- package/dashboard/.next/standalone/vendor/semver/internal/debug.js +11 -0
- package/dashboard/.next/standalone/vendor/semver/internal/identifiers.js +29 -0
- package/dashboard/.next/standalone/vendor/semver/internal/lrucache.js +42 -0
- package/dashboard/.next/standalone/vendor/semver/internal/parse-options.js +17 -0
- package/dashboard/.next/standalone/vendor/semver/internal/re.js +223 -0
- package/dashboard/.next/standalone/vendor/semver/package.json +78 -0
- package/dashboard/.next/standalone/vendor/sharp/lib/channel.js +177 -0
- package/dashboard/.next/standalone/vendor/sharp/lib/colour.js +195 -0
- package/dashboard/.next/standalone/vendor/sharp/lib/composite.js +212 -0
- package/dashboard/.next/standalone/vendor/sharp/lib/constructor.js +499 -0
- package/dashboard/.next/standalone/vendor/sharp/lib/index.js +16 -0
- package/dashboard/.next/standalone/vendor/sharp/lib/input.js +809 -0
- package/dashboard/.next/standalone/vendor/sharp/lib/is.js +143 -0
- package/dashboard/.next/standalone/vendor/sharp/lib/libvips.js +207 -0
- package/dashboard/.next/standalone/vendor/sharp/lib/operation.js +1016 -0
- package/dashboard/.next/standalone/vendor/sharp/lib/output.js +1666 -0
- package/dashboard/.next/standalone/vendor/sharp/lib/resize.js +595 -0
- package/dashboard/.next/standalone/vendor/sharp/lib/sharp.js +121 -0
- package/dashboard/.next/standalone/vendor/sharp/lib/utility.js +291 -0
- package/dashboard/.next/standalone/vendor/sharp/package.json +202 -0
- package/dashboard/.next/standalone/vendor/styled-jsx/dist/index/index.js +499 -0
- package/dashboard/.next/standalone/vendor/styled-jsx/index.js +1 -0
- package/dashboard/.next/standalone/vendor/styled-jsx/package.json +132 -0
- package/dashboard/.next/standalone/vendor/styled-jsx/style.js +1 -0
- package/dist/cli/tray/autostart.js +3 -3
- package/dist/cli/tray/autostart.js.map +1 -1
- package/dist/cli.js +30 -7
- package/dist/cli.js.map +1 -1
- package/dist/core/handler.js +23 -3
- package/dist/core/handler.js.map +1 -1
- package/dist/routes/admin.js +28 -0
- package/dist/routes/admin.js.map +1 -1
- package/dist/routes/v1.js +4 -2
- package/dist/routes/v1.js.map +1 -1
- package/dist/server.js +32 -5
- package/dist/server.js.map +1 -1
- package/package.json +5 -3
- package/src/cli/tray/autostart.ts +3 -3
- package/src/cli.ts +32 -7
- package/src/core/handler.ts +22 -3
- package/src/routes/admin.ts +27 -0
- package/src/routes/v1.ts +4 -2
- package/src/server.ts +33 -5
- package/dashboard/.next/BUILD_ID +0 -1
- package/dashboard/.next/build/56416d4ae4ce586f.js +0 -6
- package/dashboard/.next/build/56416d4ae4ce586f.js.map +0 -5
- package/dashboard/.next/build/chunks/[root-of-the-server]__0oj80bi._.js +0 -206
- package/dashboard/.next/build/chunks/[root-of-the-server]__0oj80bi._.js.map +0 -8
- package/dashboard/.next/build/chunks/[root-of-the-server]__1f933tp._.js +0 -500
- package/dashboard/.next/build/chunks/[root-of-the-server]__1f933tp._.js.map +0 -11
- package/dashboard/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_0b7xl6g._.js +0 -13
- package/dashboard/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_0b7xl6g._.js.map +0 -5
- package/dashboard/.next/build/chunks/[turbopack]_runtime.js +0 -890
- package/dashboard/.next/build/chunks/[turbopack]_runtime.js.map +0 -11
- package/dashboard/.next/build/chunks/node_modules_20v-8wl._.js +0 -6824
- package/dashboard/.next/build/chunks/node_modules_20v-8wl._.js.map +0 -47
- package/dashboard/.next/build-manifest.json +0 -22
- package/dashboard/.next/cache/.previewinfo +0 -1
- package/dashboard/.next/cache/.rscinfo +0 -1
- package/dashboard/.next/diagnostics/build-diagnostics.json +0 -6
- package/dashboard/.next/diagnostics/framework.json +0 -1
- package/dashboard/.next/diagnostics/route-bundle-stats.json +0 -225
- package/dashboard/.next/export-marker.json +0 -6
- package/dashboard/.next/fallback-build-manifest.json +0 -13
- package/dashboard/.next/images-manifest.json +0 -68
- package/dashboard/.next/next-minimal-server.js.nft.json +0 -1
- package/dashboard/.next/next-server.js.nft.json +0 -1
- package/dashboard/.next/package.json +0 -1
- package/dashboard/.next/required-server-files.js +0 -337
- package/dashboard/.next/required-server-files.json +0 -337
- package/dashboard/.next/server/app/(console)/combos/page_client-reference-manifest.js +0 -3
- package/dashboard/.next/server/app/(console)/config/page_client-reference-manifest.js +0 -3
- package/dashboard/.next/server/app/(console)/console/page_client-reference-manifest.js +0 -3
- package/dashboard/.next/server/app/(console)/endpoint/page_client-reference-manifest.js +0 -3
- package/dashboard/.next/server/app/(console)/keys/page_client-reference-manifest.js +0 -3
- package/dashboard/.next/server/app/(console)/page_client-reference-manifest.js +0 -3
- package/dashboard/.next/server/app/(console)/providers/[id]/page_client-reference-manifest.js +0 -3
- package/dashboard/.next/server/app/(console)/providers/page_client-reference-manifest.js +0 -3
- package/dashboard/.next/server/app/(console)/quota/page_client-reference-manifest.js +0 -3
- package/dashboard/.next/server/app/(console)/tools/[id]/page_client-reference-manifest.js +0 -3
- package/dashboard/.next/server/app/(console)/tools/page_client-reference-manifest.js +0 -3
- package/dashboard/.next/server/app/(console)/usage/page_client-reference-manifest.js +0 -3
- package/dashboard/.next/server/app/_global-error.html +0 -1
- package/dashboard/.next/server/app/_global-error.rsc +0 -14
- package/dashboard/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +0 -5
- package/dashboard/.next/server/app/_global-error.segments/_full.segment.rsc +0 -14
- package/dashboard/.next/server/app/_global-error.segments/_head.segment.rsc +0 -5
- package/dashboard/.next/server/app/_global-error.segments/_index.segment.rsc +0 -5
- package/dashboard/.next/server/app/_global-error.segments/_tree.segment.rsc +0 -1
- package/dashboard/.next/server/app/_not-found/page_client-reference-manifest.js +0 -3
- package/dashboard/.next/server/app/_not-found.html +0 -1
- package/dashboard/.next/server/app/_not-found.rsc +0 -20
- package/dashboard/.next/server/app/_not-found.segments/_full.segment.rsc +0 -20
- package/dashboard/.next/server/app/_not-found.segments/_head.segment.rsc +0 -6
- package/dashboard/.next/server/app/_not-found.segments/_index.segment.rsc +0 -9
- package/dashboard/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +0 -5
- package/dashboard/.next/server/app/_not-found.segments/_not-found.segment.rsc +0 -5
- package/dashboard/.next/server/app/_not-found.segments/_tree.segment.rsc +0 -3
- package/dashboard/.next/server/app/combos.html +0 -1
- package/dashboard/.next/server/app/combos.rsc +0 -25
- package/dashboard/.next/server/app/combos.segments/!KGNvbnNvbGUp/combos/__PAGE__.segment.rsc +0 -6
- package/dashboard/.next/server/app/combos.segments/!KGNvbnNvbGUp/combos.segment.rsc +0 -5
- package/dashboard/.next/server/app/combos.segments/!KGNvbnNvbGUp.segment.rsc +0 -6
- package/dashboard/.next/server/app/combos.segments/_full.segment.rsc +0 -25
- package/dashboard/.next/server/app/combos.segments/_head.segment.rsc +0 -6
- package/dashboard/.next/server/app/combos.segments/_index.segment.rsc +0 -9
- package/dashboard/.next/server/app/combos.segments/_tree.segment.rsc +0 -5
- package/dashboard/.next/server/app/config.html +0 -1
- package/dashboard/.next/server/app/config.rsc +0 -25
- package/dashboard/.next/server/app/config.segments/!KGNvbnNvbGUp/config/__PAGE__.segment.rsc +0 -6
- package/dashboard/.next/server/app/config.segments/!KGNvbnNvbGUp/config.segment.rsc +0 -5
- package/dashboard/.next/server/app/config.segments/!KGNvbnNvbGUp.segment.rsc +0 -6
- package/dashboard/.next/server/app/config.segments/_full.segment.rsc +0 -25
- package/dashboard/.next/server/app/config.segments/_head.segment.rsc +0 -6
- package/dashboard/.next/server/app/config.segments/_index.segment.rsc +0 -9
- package/dashboard/.next/server/app/config.segments/_tree.segment.rsc +0 -5
- package/dashboard/.next/server/app/console.html +0 -1
- package/dashboard/.next/server/app/console.rsc +0 -28
- package/dashboard/.next/server/app/console.segments/!KGNvbnNvbGUp/console/__PAGE__.segment.rsc +0 -9
- package/dashboard/.next/server/app/console.segments/!KGNvbnNvbGUp/console.segment.rsc +0 -5
- package/dashboard/.next/server/app/console.segments/!KGNvbnNvbGUp.segment.rsc +0 -6
- package/dashboard/.next/server/app/console.segments/_full.segment.rsc +0 -28
- package/dashboard/.next/server/app/console.segments/_head.segment.rsc +0 -6
- package/dashboard/.next/server/app/console.segments/_index.segment.rsc +0 -9
- package/dashboard/.next/server/app/console.segments/_tree.segment.rsc +0 -5
- package/dashboard/.next/server/app/endpoint.html +0 -1
- package/dashboard/.next/server/app/endpoint.rsc +0 -25
- package/dashboard/.next/server/app/endpoint.segments/!KGNvbnNvbGUp/endpoint/__PAGE__.segment.rsc +0 -6
- package/dashboard/.next/server/app/endpoint.segments/!KGNvbnNvbGUp/endpoint.segment.rsc +0 -5
- package/dashboard/.next/server/app/endpoint.segments/!KGNvbnNvbGUp.segment.rsc +0 -6
- package/dashboard/.next/server/app/endpoint.segments/_full.segment.rsc +0 -25
- package/dashboard/.next/server/app/endpoint.segments/_head.segment.rsc +0 -6
- package/dashboard/.next/server/app/endpoint.segments/_index.segment.rsc +0 -9
- package/dashboard/.next/server/app/endpoint.segments/_tree.segment.rsc +0 -5
- package/dashboard/.next/server/app/index.html +0 -1
- package/dashboard/.next/server/app/index.rsc +0 -23
- package/dashboard/.next/server/app/index.segments/!KGNvbnNvbGUp/__PAGE__.segment.rsc +0 -6
- package/dashboard/.next/server/app/index.segments/!KGNvbnNvbGUp.segment.rsc +0 -6
- package/dashboard/.next/server/app/index.segments/_full.segment.rsc +0 -23
- package/dashboard/.next/server/app/index.segments/_head.segment.rsc +0 -6
- package/dashboard/.next/server/app/index.segments/_index.segment.rsc +0 -9
- package/dashboard/.next/server/app/index.segments/_tree.segment.rsc +0 -5
- package/dashboard/.next/server/app/keys.html +0 -1
- package/dashboard/.next/server/app/keys.rsc +0 -25
- package/dashboard/.next/server/app/keys.segments/!KGNvbnNvbGUp/keys/__PAGE__.segment.rsc +0 -6
- package/dashboard/.next/server/app/keys.segments/!KGNvbnNvbGUp/keys.segment.rsc +0 -5
- package/dashboard/.next/server/app/keys.segments/!KGNvbnNvbGUp.segment.rsc +0 -6
- package/dashboard/.next/server/app/keys.segments/_full.segment.rsc +0 -25
- package/dashboard/.next/server/app/keys.segments/_head.segment.rsc +0 -6
- package/dashboard/.next/server/app/keys.segments/_index.segment.rsc +0 -9
- package/dashboard/.next/server/app/keys.segments/_tree.segment.rsc +0 -5
- package/dashboard/.next/server/app/login/page_client-reference-manifest.js +0 -3
- package/dashboard/.next/server/app/login.html +0 -1
- package/dashboard/.next/server/app/login.rsc +0 -26
- package/dashboard/.next/server/app/login.segments/_full.segment.rsc +0 -26
- package/dashboard/.next/server/app/login.segments/_head.segment.rsc +0 -6
- package/dashboard/.next/server/app/login.segments/_index.segment.rsc +0 -9
- package/dashboard/.next/server/app/login.segments/_tree.segment.rsc +0 -5
- package/dashboard/.next/server/app/login.segments/login/__PAGE__.segment.rsc +0 -9
- package/dashboard/.next/server/app/login.segments/login.segment.rsc +0 -5
- package/dashboard/.next/server/app/providers.html +0 -1
- package/dashboard/.next/server/app/providers.rsc +0 -25
- package/dashboard/.next/server/app/providers.segments/!KGNvbnNvbGUp/providers/__PAGE__.segment.rsc +0 -6
- package/dashboard/.next/server/app/providers.segments/!KGNvbnNvbGUp/providers.segment.rsc +0 -5
- package/dashboard/.next/server/app/providers.segments/!KGNvbnNvbGUp.segment.rsc +0 -6
- package/dashboard/.next/server/app/providers.segments/_full.segment.rsc +0 -25
- package/dashboard/.next/server/app/providers.segments/_head.segment.rsc +0 -6
- package/dashboard/.next/server/app/providers.segments/_index.segment.rsc +0 -9
- package/dashboard/.next/server/app/providers.segments/_tree.segment.rsc +0 -5
- package/dashboard/.next/server/app/quota.html +0 -1
- package/dashboard/.next/server/app/quota.rsc +0 -25
- package/dashboard/.next/server/app/quota.segments/!KGNvbnNvbGUp/quota/__PAGE__.segment.rsc +0 -6
- package/dashboard/.next/server/app/quota.segments/!KGNvbnNvbGUp/quota.segment.rsc +0 -5
- package/dashboard/.next/server/app/quota.segments/!KGNvbnNvbGUp.segment.rsc +0 -6
- package/dashboard/.next/server/app/quota.segments/_full.segment.rsc +0 -25
- package/dashboard/.next/server/app/quota.segments/_head.segment.rsc +0 -6
- package/dashboard/.next/server/app/quota.segments/_index.segment.rsc +0 -9
- package/dashboard/.next/server/app/quota.segments/_tree.segment.rsc +0 -5
- package/dashboard/.next/server/app/tools.html +0 -1
- package/dashboard/.next/server/app/tools.rsc +0 -25
- package/dashboard/.next/server/app/tools.segments/!KGNvbnNvbGUp/tools/__PAGE__.segment.rsc +0 -6
- package/dashboard/.next/server/app/tools.segments/!KGNvbnNvbGUp/tools.segment.rsc +0 -5
- package/dashboard/.next/server/app/tools.segments/!KGNvbnNvbGUp.segment.rsc +0 -6
- package/dashboard/.next/server/app/tools.segments/_full.segment.rsc +0 -25
- package/dashboard/.next/server/app/tools.segments/_head.segment.rsc +0 -6
- package/dashboard/.next/server/app/tools.segments/_index.segment.rsc +0 -9
- package/dashboard/.next/server/app/tools.segments/_tree.segment.rsc +0 -5
- package/dashboard/.next/server/chunks/[externals]__1j91pjf._.js.map +0 -1
- package/dashboard/.next/server/chunks/[externals]__1v5t_x8._.js.map +0 -1
- package/dashboard/.next/server/chunks/[root-of-the-server]__0-6ukjk._.js +0 -3
- package/dashboard/.next/server/chunks/[root-of-the-server]__0-6ukjk._.js.map +0 -1
- package/dashboard/.next/server/chunks/[root-of-the-server]__043un18._.js.map +0 -1
- package/dashboard/.next/server/chunks/[root-of-the-server]__07euc03._.js +0 -3
- package/dashboard/.next/server/chunks/[root-of-the-server]__07euc03._.js.map +0 -1
- package/dashboard/.next/server/chunks/[root-of-the-server]__082azhr._.js +0 -3
- package/dashboard/.next/server/chunks/[root-of-the-server]__082azhr._.js.map +0 -1
- package/dashboard/.next/server/chunks/[root-of-the-server]__0das32e._.js +0 -3
- package/dashboard/.next/server/chunks/[root-of-the-server]__0das32e._.js.map +0 -1
- package/dashboard/.next/server/chunks/[root-of-the-server]__0pp7rn-._.js +0 -3
- package/dashboard/.next/server/chunks/[root-of-the-server]__0pp7rn-._.js.map +0 -1
- package/dashboard/.next/server/chunks/[root-of-the-server]__0uqpr_c._.js +0 -3
- package/dashboard/.next/server/chunks/[root-of-the-server]__0uqpr_c._.js.map +0 -1
- package/dashboard/.next/server/chunks/[root-of-the-server]__0xuaoik._.js.map +0 -1
- package/dashboard/.next/server/chunks/[turbopack]_runtime.js.map +0 -11
- package/dashboard/.next/server/chunks/_0digmky._.js.map +0 -1
- package/dashboard/.next/server/chunks/_next-internal_server_app_api_cli-detect_[tool]_route_actions_0ffw-gg.js.map +0 -1
- package/dashboard/.next/server/chunks/_next-internal_server_app_api_gw_[___path]_route_actions_0ytl4km.js.map +0 -1
- package/dashboard/.next/server/chunks/_next-internal_server_app_api_login_route_actions_1apjjct.js.map +0 -1
- package/dashboard/.next/server/chunks/_next-internal_server_app_api_logout_route_actions_0gzx3on.js.map +0 -1
- package/dashboard/.next/server/chunks/_next-internal_server_app_api_password_route_actions_0xecc0j.js.map +0 -1
- package/dashboard/.next/server/chunks/_next-internal_server_app_icon_svg_route_actions_1r2h_ub.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__006jvp_._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0559wxx._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0_fihdn._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0cx5pj3._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0d-itp1._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0dk7lif._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0qvkt1y._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0unr06k._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0zf4yft._.js +0 -27
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0zf4yft._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__11t16qi._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__12q01a8._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__179ut8i._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1dky4g0._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1eeunp8._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1inj1w-._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1jidl81._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1mg2t8f._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1t7z0yw._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1w2pq2s._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1w31jjb._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/[turbopack]_runtime.js.map +0 -11
- package/dashboard/.next/server/chunks/ssr/_0g1n0z2._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/_0p90gyy._.js +0 -3
- package/dashboard/.next/server/chunks/ssr/_0p90gyy._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/_1mumvwn._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_combos_page_actions_07o3lus.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_config_page_actions_1d2383s.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_console_page_actions_0w-3r_g.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_endpoint_page_actions_00tzpzh.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_keys_page_actions_1--ho2b.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_page_actions_0u8zxvt.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_providers_[id]_page_actions_20yozi-.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_providers_page_actions_1bdc8gv.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_quota_page_actions_02l-zu_.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_tools_[id]_page_actions_01qi9of.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_tools_page_actions_18gis7c.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_usage_page_actions_1twl-ym.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app__global-error_page_actions_0zi5s8-.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app__not-found_page_actions_0pt47yr.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_login_page_actions_04fnjo0.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/node_modules_1ivn_d-._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/node_modules_next_1iemwhs._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_0uboya6._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_1enzot_._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_1map00z._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_client_components_0bew68i._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_client_components_0wpq8j3._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0symwr9.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0-o-goa.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0x.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0-auga4.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_00x0c-2.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_01n345n.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_02jwx28.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08g_4le.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0_xbpm0.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0tx5zxe.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_15dprgl.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_18twt8j.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_19--w_z.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1bycsv3.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1i1atml.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1n7v8np.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1q72yyr.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_20gk3id.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/src_0wrskl4._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/src_13mfqac._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/src_16zsfd3._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/src_app_(console)_console_page_tsx_1g8gnmy._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/src_components_0-kkrr9._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/src_components_0dgasfb._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/src_components_0kr-r_t._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/src_components_0q5pldo._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/src_components_10h9ide._.js +0 -3
- package/dashboard/.next/server/chunks/ssr/src_components_10h9ide._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/src_components_11ckzq_._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/src_components_11dtfns._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/src_components_1e6kjgr._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/src_components_1eg_jit._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/src_components_1pu8z89._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/src_components_1z4akp5._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/src_components_BudgetTracker_tsx_1-xevea._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/src_components_KeyManager_tsx_0r7iyz8._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/src_components_ProviderDetail_tsx_06sxu0r._.js +0 -3
- package/dashboard/.next/server/chunks/ssr/src_components_ProviderDetail_tsx_06sxu0r._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/src_components_ProviderManager_tsx_09d2dzw._.js +0 -3
- package/dashboard/.next/server/chunks/ssr/src_components_ProviderManager_tsx_09d2dzw._.js.map +0 -1
- package/dashboard/.next/server/chunks/ssr/src_components_ToolDetail_tsx_0qperd-._.js.map +0 -1
- package/dashboard/.next/server/interception-route-rewrite-manifest.js +0 -1
- package/dashboard/.next/server/middleware/middleware-manifest.json +0 -6
- package/dashboard/.next/server/middleware-build-manifest.js +0 -22
- package/dashboard/.next/server/middleware.js.map +0 -5
- package/dashboard/.next/server/middleware.js.nft.json +0 -1
- package/dashboard/.next/server/pages/404.html +0 -1
- package/dashboard/.next/server/pages/500.html +0 -1
- package/dashboard/.next/static/chunks/0-qqj0_fg6ef0.js +0 -1
- package/dashboard/.next/static/chunks/0347y27liw05t.js +0 -1
- package/dashboard/.next/static/chunks/03xhjt1ta90pp.js +0 -1
- package/dashboard/.next/static/chunks/05-c3ty_6dwfk.js +0 -1
- package/dashboard/.next/static/chunks/0cz1d0mv5g_q7.js +0 -1
- package/dashboard/.next/static/chunks/0iv69e64f1ywa.css +0 -3
- package/dashboard/.next/static/chunks/0mk1g55o6kl1e.js +0 -2
- package/dashboard/.next/static/chunks/0mou1p6uwiu19.js +0 -1
- package/dashboard/.next/static/chunks/0mr7sg_sr6f99.js +0 -1
- package/dashboard/.next/static/chunks/0zdns9uijk264.js +0 -1
- package/dashboard/.next/static/chunks/13ge_ybuj8rl3.js +0 -1
- package/dashboard/.next/static/chunks/14mrh2-p_w84d.js +0 -1
- package/dashboard/.next/static/chunks/15d148buj9byd.js +0 -1
- package/dashboard/.next/static/chunks/19nfww990cvv7.js +0 -1
- package/dashboard/.next/static/chunks/1t87-rpltg53e.js +0 -1
- package/dashboard/.next/static/chunks/1wn1c2w4ibyg_.js +0 -1
- package/dashboard/.next/static/chunks/27jktro2p5rq9.js +0 -4
- package/dashboard/.next/static/chunks/29bgf5j_v6h2z.js +0 -1
- package/dashboard/.next/static/chunks/2t3rqr0rkspb7.js +0 -1
- package/dashboard/.next/static/chunks/2uvgdots59tjl.js +0 -1
- package/dashboard/.next/static/chunks/36ssnkm0cjgq6.js +0 -31
- package/dashboard/.next/static/chunks/3chs_cdkdx2h9.js +0 -1
- package/dashboard/.next/static/chunks/3j9pm5otqxm82.js +0 -1
- package/dashboard/.next/static/chunks/3jat3x6f_2a6o.js +0 -1
- package/dashboard/.next/static/chunks/40pm83c1_d0jz.js +0 -25
- package/dashboard/.next/static/chunks/turbopack-28-wpvvyttgwq.js +0 -1
- package/dashboard/.next/static/jKcczqYA93-Kuqa9A9H9h/_buildManifest.js +0 -11
- package/dashboard/.next/static/jKcczqYA93-Kuqa9A9H9h/_clientMiddlewareManifest.js +0 -6
- package/dashboard/.next/static/jKcczqYA93-Kuqa9A9H9h/_ssgManifest.js +0 -1
- 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 +0 -8
- package/dashboard/.next/trace +0 -1
- package/dashboard/.next/trace-build +0 -1
- package/dashboard/.next/types/cache-life.d.ts +0 -145
- package/dashboard/.next/types/routes.d.ts +0 -89
- package/dashboard/.next/types/validator.ts +0 -232
- package/dashboard/next-env.d.ts +0 -6
- package/dashboard/next.config.ts +0 -18
- package/dashboard/package-lock.json +0 -1827
- package/dashboard/postcss.config.mjs +0 -5
- package/dashboard/src/app/(console)/combos/page.tsx +0 -10
- package/dashboard/src/app/(console)/config/page.tsx +0 -5
- package/dashboard/src/app/(console)/console/page.tsx +0 -92
- package/dashboard/src/app/(console)/endpoint/page.tsx +0 -5
- package/dashboard/src/app/(console)/keys/page.tsx +0 -5
- package/dashboard/src/app/(console)/layout.tsx +0 -17
- package/dashboard/src/app/(console)/page.tsx +0 -8
- package/dashboard/src/app/(console)/providers/[id]/page.tsx +0 -6
- package/dashboard/src/app/(console)/providers/page.tsx +0 -5
- package/dashboard/src/app/(console)/quota/page.tsx +0 -5
- package/dashboard/src/app/(console)/tools/[id]/page.tsx +0 -6
- package/dashboard/src/app/(console)/tools/page.tsx +0 -5
- package/dashboard/src/app/(console)/usage/page.tsx +0 -24
- package/dashboard/src/app/api/cli-detect/[tool]/route.ts +0 -252
- package/dashboard/src/app/api/gw/[...path]/route.ts +0 -89
- package/dashboard/src/app/api/login/route.ts +0 -30
- package/dashboard/src/app/api/logout/route.ts +0 -9
- package/dashboard/src/app/api/password/route.ts +0 -34
- package/dashboard/src/app/globals.css +0 -388
- package/dashboard/src/app/icon.svg +0 -8
- package/dashboard/src/app/layout.tsx +0 -29
- package/dashboard/src/app/login/page.tsx +0 -60
- package/dashboard/src/components/AreaChart.tsx +0 -115
- package/dashboard/src/components/Badge.tsx +0 -33
- package/dashboard/src/components/BudgetForm.tsx +0 -256
- package/dashboard/src/components/BudgetTracker.tsx +0 -181
- package/dashboard/src/components/Button.tsx +0 -60
- package/dashboard/src/components/CapacityBadges.tsx +0 -40
- package/dashboard/src/components/Checkbox.tsx +0 -40
- package/dashboard/src/components/CliToolConfig.tsx +0 -63
- package/dashboard/src/components/ConfigEditor.tsx +0 -199
- package/dashboard/src/components/ConfirmModal.tsx +0 -36
- package/dashboard/src/components/CooldownTimer.tsx +0 -42
- package/dashboard/src/components/EndpointView.tsx +0 -359
- package/dashboard/src/components/Icon.tsx +0 -25
- package/dashboard/src/components/KeyManager.tsx +0 -252
- package/dashboard/src/components/KeyReveal.tsx +0 -78
- package/dashboard/src/components/KeyScopeModal.tsx +0 -184
- package/dashboard/src/components/Lamp.tsx +0 -8
- package/dashboard/src/components/LogTable.tsx +0 -298
- package/dashboard/src/components/LogoutButton.tsx +0 -20
- package/dashboard/src/components/ModelPicker.tsx +0 -129
- package/dashboard/src/components/ModelSelectModal.tsx +0 -126
- package/dashboard/src/components/PasswordEditor.tsx +0 -86
- package/dashboard/src/components/PricingEditor.tsx +0 -171
- package/dashboard/src/components/ProviderDetail.tsx +0 -569
- package/dashboard/src/components/ProviderManager.tsx +0 -415
- package/dashboard/src/components/Rail.tsx +0 -83
- package/dashboard/src/components/RichCard.tsx +0 -46
- package/dashboard/src/components/RoutingView.tsx +0 -333
- package/dashboard/src/components/ThemeProvider.tsx +0 -36
- package/dashboard/src/components/ToastProvider.tsx +0 -58
- package/dashboard/src/components/ToolDetail.tsx +0 -616
- package/dashboard/src/components/TopBar.tsx +0 -220
- package/dashboard/src/components/UsageView.tsx +0 -170
- package/dashboard/src/components/ui.tsx +0 -59
- package/dashboard/src/lib/capabilities.ts +0 -318
- package/dashboard/src/lib/cliTools.ts +0 -77
- package/dashboard/src/lib/client.ts +0 -210
- package/dashboard/src/lib/gateway.ts +0 -302
- package/dashboard/src/lib/session.ts +0 -76
- package/dashboard/src/proxy.ts +0 -39
- /package/dashboard/.next/{app-path-routes-manifest.json → standalone/.next/app-path-routes-manifest.json} +0 -0
- /package/dashboard/.next/{build → standalone/.next}/package.json +0 -0
- /package/dashboard/.next/{prerender-manifest.json → standalone/.next/prerender-manifest.json} +0 -0
- /package/dashboard/.next/{routes-manifest.json → standalone/.next/routes-manifest.json} +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/combos/page/app-paths-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/combos/page/build-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/combos/page/next-font-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/combos/page/react-loadable-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/combos/page/server-reference-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/combos/page.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/combos/page.js.map +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/combos/page.js.nft.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/config/page/app-paths-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/config/page/build-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/config/page/next-font-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/config/page/react-loadable-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/config/page/server-reference-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/config/page.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/config/page.js.map +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/config/page.js.nft.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/console/page/app-paths-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/console/page/build-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/console/page/next-font-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/console/page/react-loadable-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/console/page/server-reference-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/console/page.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/console/page.js.map +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/console/page.js.nft.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/endpoint/page/app-paths-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/endpoint/page/build-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/endpoint/page/next-font-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/endpoint/page/react-loadable-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/endpoint/page/server-reference-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/endpoint/page.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/endpoint/page.js.map +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/endpoint/page.js.nft.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/keys/page/app-paths-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/keys/page/build-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/keys/page/next-font-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/keys/page/react-loadable-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/keys/page/server-reference-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/keys/page.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/keys/page.js.map +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/keys/page.js.nft.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/page/app-paths-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/page/build-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/page/next-font-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/page/react-loadable-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/page/server-reference-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/page.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/page.js.map +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/page.js.nft.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/providers/[id]/page/app-paths-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/providers/[id]/page/build-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/providers/[id]/page/next-font-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/providers/[id]/page/react-loadable-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/providers/[id]/page/server-reference-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/providers/[id]/page.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/providers/[id]/page.js.map +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/providers/[id]/page.js.nft.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/providers/page/app-paths-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/providers/page/build-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/providers/page/next-font-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/providers/page/react-loadable-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/providers/page/server-reference-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/providers/page.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/providers/page.js.map +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/providers/page.js.nft.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/quota/page/app-paths-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/quota/page/build-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/quota/page/next-font-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/quota/page/react-loadable-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/quota/page/server-reference-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/quota/page.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/quota/page.js.map +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/quota/page.js.nft.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/tools/[id]/page/app-paths-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/tools/[id]/page/build-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/tools/[id]/page/next-font-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/tools/[id]/page/react-loadable-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/tools/[id]/page/server-reference-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/tools/[id]/page.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/tools/[id]/page.js.map +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/tools/[id]/page.js.nft.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/tools/page/app-paths-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/tools/page/build-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/tools/page/next-font-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/tools/page/react-loadable-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/tools/page/server-reference-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/tools/page.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/tools/page.js.map +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/tools/page.js.nft.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/usage/page/app-paths-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/usage/page/build-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/usage/page/next-font-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/usage/page/react-loadable-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/usage/page/server-reference-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/usage/page.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/usage/page.js.map +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/(console)/usage/page.js.nft.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/_global-error/page/app-paths-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/_global-error/page/build-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/_global-error/page/next-font-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/_global-error/page/react-loadable-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/_global-error/page/server-reference-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/_global-error/page.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/_global-error/page.js.map +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/_global-error/page.js.nft.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/_global-error/page_client-reference-manifest.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/_global-error.meta +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/_not-found/page/app-paths-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/_not-found/page/build-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/_not-found/page/next-font-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/_not-found/page/react-loadable-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/_not-found/page/server-reference-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/_not-found/page.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/_not-found/page.js.map +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/_not-found/page.js.nft.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/_not-found.meta +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/cli-detect/[tool]/route/app-paths-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/cli-detect/[tool]/route/build-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/cli-detect/[tool]/route/server-reference-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/cli-detect/[tool]/route.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/cli-detect/[tool]/route.js.map +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/cli-detect/[tool]/route.js.nft.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/cli-detect/[tool]/route_client-reference-manifest.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/gw/[...path]/route/app-paths-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/gw/[...path]/route/build-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/gw/[...path]/route/server-reference-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/gw/[...path]/route.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/gw/[...path]/route.js.map +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/gw/[...path]/route.js.nft.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/gw/[...path]/route_client-reference-manifest.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/login/route/app-paths-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/login/route/build-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/login/route/server-reference-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/login/route.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/login/route.js.map +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/login/route.js.nft.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/login/route_client-reference-manifest.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/logout/route/app-paths-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/logout/route/build-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/logout/route/server-reference-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/logout/route.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/logout/route.js.map +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/logout/route.js.nft.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/logout/route_client-reference-manifest.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/password/route/app-paths-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/password/route/build-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/password/route/server-reference-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/password/route.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/password/route.js.map +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/password/route.js.nft.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/api/password/route_client-reference-manifest.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/combos.meta +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/config.meta +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/console.meta +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/endpoint.meta +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/icon.svg/route/app-paths-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/icon.svg/route/build-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/icon.svg/route.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/icon.svg/route.js.map +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/icon.svg/route.js.nft.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/icon.svg.body +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/icon.svg.meta +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/index.meta +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/keys.meta +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/login/page/app-paths-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/login/page/build-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/login/page/next-font-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/login/page/react-loadable-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/login/page/server-reference-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/login/page.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/login/page.js.map +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/login/page.js.nft.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/login.meta +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/providers.meta +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/quota.meta +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app/tools.meta +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/app-paths-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/[externals]__1j91pjf._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/[externals]__1v5t_x8._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/[root-of-the-server]__043un18._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/[root-of-the-server]__0xuaoik._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/[turbopack]_runtime.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/_0digmky._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/_next-internal_server_app_api_cli-detect_[tool]_route_actions_0ffw-gg.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/_next-internal_server_app_api_gw_[___path]_route_actions_0ytl4km.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/_next-internal_server_app_api_login_route_actions_1apjjct.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/_next-internal_server_app_api_logout_route_actions_0gzx3on.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/_next-internal_server_app_api_password_route_actions_0xecc0j.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/_next-internal_server_app_icon_svg_route_actions_1r2h_ub.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/[root-of-the-server]__006jvp_._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/[root-of-the-server]__0559wxx._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/[root-of-the-server]__0_fihdn._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/[root-of-the-server]__0cx5pj3._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/[root-of-the-server]__0d-itp1._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/[root-of-the-server]__0dk7lif._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/[root-of-the-server]__0qvkt1y._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/[root-of-the-server]__0unr06k._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/[root-of-the-server]__11t16qi._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/[root-of-the-server]__12q01a8._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/[root-of-the-server]__179ut8i._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/[root-of-the-server]__1dky4g0._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/[root-of-the-server]__1eeunp8._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/[root-of-the-server]__1inj1w-._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/[root-of-the-server]__1jidl81._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/[root-of-the-server]__1mg2t8f._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/[root-of-the-server]__1t7z0yw._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/[root-of-the-server]__1w2pq2s._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/[root-of-the-server]__1w31jjb._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/[turbopack]_runtime.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/_0g1n0z2._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/_1mumvwn._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/_next-internal_server_app_(console)_combos_page_actions_07o3lus.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/_next-internal_server_app_(console)_config_page_actions_1d2383s.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/_next-internal_server_app_(console)_console_page_actions_0w-3r_g.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/_next-internal_server_app_(console)_endpoint_page_actions_00tzpzh.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/_next-internal_server_app_(console)_keys_page_actions_1--ho2b.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/_next-internal_server_app_(console)_page_actions_0u8zxvt.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/_next-internal_server_app_(console)_providers_[id]_page_actions_20yozi-.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/_next-internal_server_app_(console)_providers_page_actions_1bdc8gv.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/_next-internal_server_app_(console)_quota_page_actions_02l-zu_.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/_next-internal_server_app_(console)_tools_[id]_page_actions_01qi9of.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/_next-internal_server_app_(console)_tools_page_actions_18gis7c.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/_next-internal_server_app_(console)_usage_page_actions_1twl-ym.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/_next-internal_server_app__global-error_page_actions_0zi5s8-.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/_next-internal_server_app__not-found_page_actions_0pt47yr.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/_next-internal_server_app_login_page_actions_04fnjo0.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/node_modules_1ivn_d-._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/node_modules_next_1iemwhs._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/node_modules_next_dist_0uboya6._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/node_modules_next_dist_1enzot_._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/node_modules_next_dist_1map00z._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/node_modules_next_dist_client_components_0bew68i._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/node_modules_next_dist_client_components_0wpq8j3._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0symwr9.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0-o-goa.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0x.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0-auga4.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_00x0c-2.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_01n345n.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_02jwx28.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08g_4le.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0_xbpm0.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0tx5zxe.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_15dprgl.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_18twt8j.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_19--w_z.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1bycsv3.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1i1atml.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1n7v8np.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1q72yyr.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_20gk3id.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/src_0wrskl4._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/src_13mfqac._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/src_16zsfd3._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/src_app_(console)_console_page_tsx_1g8gnmy._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/src_components_0-kkrr9._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/src_components_0dgasfb._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/src_components_0kr-r_t._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/src_components_0q5pldo._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/src_components_11ckzq_._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/src_components_11dtfns._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/src_components_1e6kjgr._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/src_components_1eg_jit._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/src_components_1pu8z89._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/src_components_1z4akp5._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/src_components_BudgetTracker_tsx_1-xevea._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/src_components_KeyManager_tsx_0r7iyz8._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/chunks/ssr/src_components_ToolDetail_tsx_0qperd-._.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/functions-config-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/middleware-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/middleware.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/next-font-manifest.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/next-font-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/pages-manifest.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/prefetch-hints.json +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/server-reference-manifest.js +0 -0
- /package/dashboard/.next/{server → standalone/.next/server}/server-reference-manifest.json +0 -0
- /package/dashboard/.next/{turbopack → standalone/vendor/client-only/index.js} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ui.tsx","../../../../src/components/Badge.tsx","../../../../src/components/RichCard.tsx","../../../../src/components/CooldownTimer.tsx"],"sourcesContent":["/** Small formatting helpers shared across the console. */\nexport const fmt = {\n int(n: number): string {\n return n.toLocaleString(\"en-US\");\n },\n /** compact number: 1.2K, 3.4M */\n compact(n: number): string {\n if (Math.abs(n) >= 1_000_000) return `${(n / 1_000_000).toFixed(1)}M`;\n if (Math.abs(n) >= 1_000) return `${(n / 1_000).toFixed(1)}K`;\n return String(Math.round(n));\n },\n cost(n: number): string {\n if (n === 0) return \"$0\";\n return n < 0.01 ? `$${n.toFixed(4)}` : `$${n.toFixed(2)}`;\n },\n time(ts: number): string {\n return new Date(ts).toLocaleString(\"en-US\", { hour12: false });\n },\n /** DD/MM/YYYY (local) */\n date(ts: number): string {\n const d = new Date(ts);\n return `${String(d.getDate()).padStart(2, \"0\")}/${String(d.getMonth() + 1).padStart(2, \"0\")}/${d.getFullYear()}`;\n },\n /** \"3m\", \"2h\", \"5d\" — coarse relative age */\n ago(ts: number): string {\n const s = Math.max(0, Math.round((Date.now() - ts) / 1000));\n if (s < 60) return `${s}s`;\n if (s < 3600) return `${Math.floor(s / 60)}m`;\n if (s < 86400) return `${Math.floor(s / 3600)}h`;\n return `${Math.floor(s / 86400)}d`;\n },\n /** ms duration -> \"Xs\", \"Xm Ys\", \"Xh Ym\" for budget/cooldown countdowns */\n duration(ms: number): string {\n const s = Math.max(0, Math.round(ms / 1000));\n if (s < 60) return `${s}s`;\n if (s < 3600) return `${Math.floor(s / 60)}m ${s % 60}s`;\n const h = Math.floor(s / 3600);\n const m = Math.floor((s % 3600) / 60);\n if (h < 24) return `${h}h ${m}m`;\n const d = Math.floor(h / 24);\n return `${d}d ${h % 24}h`;\n },\n};\n\n/** A labelled stat block — number over a caption. */\nexport function Stat({ label, value, sub }: { label: string; value: React.ReactNode; sub?: string }) {\n return (\n <div className=\"rounded-brand-lg border border-border bg-surface px-4 py-3.5 shadow-soft\">\n <div className=\"text-[11px] font-medium uppercase tracking-wider text-text-subtle\">{label}</div>\n <div className=\"mt-1 tnum text-[22px] font-semibold tracking-tight text-text\">{value}</div>\n {sub && <div className=\"mt-0.5 text-[12px] text-text-muted\">{sub}</div>}\n </div>\n );\n}\n\n/** Empty-state hint inside a card body. */\nexport function Empty({ children }: { children: React.ReactNode }) {\n return <div className=\"px-1 py-8 text-center text-[13px] text-text-muted\">{children}</div>;\n}\n","type Tone = \"live\" | \"down\" | \"warn\" | \"info\" | \"neutral\" | \"danger\";\n\nconst TONES: Record<Tone, string> = {\n live: \"bg-success/12 text-success\",\n down: \"bg-danger/12 text-danger\",\n danger: \"bg-danger/12 text-danger\",\n warn: \"bg-warning/12 text-warning\",\n info: \"bg-info/12 text-info\",\n neutral: \"bg-surface-2 text-text-muted\",\n};\n\nexport function Badge({\n tone = \"neutral\",\n children,\n className,\n}: {\n tone?: Tone;\n children: React.ReactNode;\n className?: string;\n}) {\n return (\n <span\n className={`inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[11px] font-medium ${TONES[tone]}${className ? ` ${className}` : \"\"}`}\n >\n {children}\n </span>\n );\n}\n\n/** Format badge for a provider's wire format. */\nexport function FormatBadge({ format }: { format: \"openai\" | \"anthropic\" | \"gemini\" }) {\n return <Badge tone=\"info\">{format}</Badge>;\n}\n","/**\n * Rich content card — header (title slot + trailing slot), body, optional footer.\n * Softly rounded, subtle border, warm surface. The Haulix-style workhorse.\n */\nexport function RichCard({\n header,\n footer,\n children,\n className,\n}: {\n header?: React.ReactNode;\n footer?: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n}) {\n return (\n <section\n className={`overflow-hidden rounded-brand-lg border border-border bg-surface shadow-soft${className ? ` ${className}` : \"\"}`}\n >\n {header && (\n <header className=\"flex items-center justify-between gap-3 border-b border-border-subtle px-4 py-3\">\n {header}\n </header>\n )}\n <div className=\"p-4\">{children}</div>\n {footer && (\n <footer className=\"flex items-center justify-between gap-3 border-t border-border-subtle bg-bg-alt px-4 py-2.5\">\n {footer}\n </footer>\n )}\n </section>\n );\n}\n\n/** Title + optional subtitle, for the header slot. */\nexport function CardTitle({ title, sub, icon }: { title: string; sub?: string; icon?: React.ReactNode }) {\n return (\n <div className=\"flex items-center gap-2.5 min-w-0\">\n {icon}\n <div className=\"min-w-0\">\n <div className=\"truncate text-[14px] font-semibold tracking-tight text-text\">{title}</div>\n {sub && <div className=\"truncate text-[12px] text-text-muted\">{sub}</div>}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { Icon } from \"./Icon\";\nimport { fmt } from \"./ui\";\n\n/**\n * Live countdown from a gateway-snapshot remaining-ms. Counts down locally each\n * second from render. Used for both key cooldowns (danger tone) and budget window\n * resets (muted tone). Renders nothing once it hits zero unless `keepZero`.\n */\nexport function CooldownTimer({\n ms,\n tone = \"danger\",\n icon = \"timer\",\n keepZero = false,\n}: {\n ms: number;\n tone?: \"danger\" | \"muted\";\n icon?: string;\n keepZero?: boolean;\n}) {\n const [until] = useState(() => Date.now() + ms);\n const [remaining, setRemaining] = useState(() => Math.max(0, ms));\n\n useEffect(() => {\n const tick = () => setRemaining(Math.max(0, until - Date.now()));\n tick();\n const id = setInterval(tick, 1000);\n return () => clearInterval(id);\n }, [until]);\n\n if (remaining <= 0 && !keepZero) return null;\n\n const color = tone === \"danger\" ? \"text-danger\" : \"text-text-muted\";\n return (\n <span className={`inline-flex items-center gap-1 tnum text-[12px] ${color}`}>\n <Icon name={icon} size={13} />\n {remaining <= 0 ? \"now\" : fmt.duration(remaining)}\n </span>\n );\n}\n"],"names":["fmt","int","n","toLocaleString","compact","Math","abs","toFixed","String","round","cost","time","ts","Date","hour12","date","d","getDate","padStart","getMonth","getFullYear","ago","s","max","now","floor","duration","ms","h","m","Stat","label","value","sub","className","Empty","children","TONES","live","down","danger","warn","info","neutral","Badge","tone","FormatBadge","format","RichCard","header","footer","CardTitle","title","icon","CooldownTimer","keepZero","until","remaining","setRemaining","tick","id","setInterval","clearInterval","color","name","size"],"mappings":"uCAAwD,IAAA,EAAA,EAAA,CAAA,CAAA,sBAwDjD,SAASmC,AAAM,CAAEC,UAAQ,CAAiC,EAC/D,MAAO,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIF,UAAU,6DAAqDE,GAC7E,WAbO,SAASN,AAAK,CAAEC,OAAK,CAAEC,OAAK,KAAEC,CAAG,CAA2D,EACjG,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIC,UAAU,qFACb,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIA,UAAU,6EAAqEH,IACpF,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIG,UAAU,wEAAgEF,IAC9EC,GAAO,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIC,UAAU,8CAAsCD,MAGnE,UApDmB,KACjBhC,AAAIC,CAAS,EACJA,EAAEC,cAAc,CAAC,iBAG1BC,AAAQF,CAAS,EACXG,AAAJ,KAASC,GAAG,CAACJ,IAAM,IAAkB,CAAA,EAAG,CAACA,EAAI,CAAf,EAAe,CAAS,CAAEK,OAAO,CAAC,GAAG,CAAC,CAAC,CACjEF,KAAKC,GAAG,CAACJ,IAAM,IAAc,CAAA,EAAP,AAAU,CAACA,EAAI,GAAA,CAAK,CAAEK,OAAO,CAAC,GAAG,CAAC,CAAC,CACtDC,OAAOH,KAAKI,KAAK,CAACP,SAE3BQ,AAAKR,CAAS,EACZ,AAAU,GAAG,CAATA,EAAgB,KACbA,EAAI,IAAO,CAAC,CAAC,EAAEA,EAAEK,OAAO,CAAC,GAAA,CAAI,CAAG,CAAC,CAAC,EAAEL,EAAEK,OAAO,CAAC,GAAA,CAAI,MAE3DI,AAAKC,EAAU,CACN,IAAIC,KAAKD,GAAIT,cAAc,CAAC,QAAS,CAAEW,QAAQ,CAAM,GAG9DC,KAAKH,CAAU,EACb,IAAMI,EAAI,IAAIH,KAAKD,GACnB,MAAO,CAAA,EAAGJ,OAAOQ,EAAEC,OAAO,IAAIC,QAAQ,CAAC,EAAG,KAAK,CAAC,EAAEV,OAAOQ,EAAEG,QAAQ,GAAK,GAAGD,QAAQ,CAAC,EAAG,KAAK,CAAC,EAAEF,EAAEI,WAAW,GAAA,CAAI,AAClH,EAEAC,IAAIT,CAAU,EACZ,IAAMU,EAAIjB,KAAKkB,GAAG,CAAC,EAAGlB,KAAKI,KAAK,CAAC,CAACI,KAAKW,GAAG,GAAKZ,CAAAA,CAAE,CAAI,aACrD,AAAIU,EAAI,GAAW,CAAP,AAAO,EAAGA,EAAE,CAAC,CAAC,CACtBA,EAAI,KAAa,CAAP,AAAO,EAAGjB,KAAKoB,KAAK,CAACH,EAAI,IAAI,CAAC,CAAC,CACzCA,EAAI,MAAc,CAAP,AAAO,EAAGjB,KAAKoB,KAAK,CAACH,EAAI,MAAM,CAAC,CAAC,CACzC,CAAA,EAAGjB,KAAKoB,KAAK,CAACH,EAAI,OAAO,CAAC,CAAC,AACpC,EAEAI,SAASC,CAAU,EACjB,IAAML,EAAIjB,KAAKkB,GAAG,CAAC,EAAGlB,KAAKI,KAAK,CAACkB,EAAK,MACtC,GAAIL,EAAI,GAAI,MAAO,CAAA,EAAGA,EAAE,CAAC,CAAC,CAC1B,GAAIA,EAAI,KAAM,MAAO,CAAA,EAAGjB,KAAKoB,KAAK,CAACH,EAAI,IAAI,EAAE,EAAEA,EAAI,GAAG,CAAC,CAAC,CACxD,IAAMM,EAAIvB,KAAKoB,KAAK,CAACH,EAAI,MACnBO,EAAIxB,KAAKoB,KAAK,CAAEH,EAAI,KAAQ,IAClC,GAAIM,EAAI,GAAI,MAAO,CAAA,EAAGA,EAAE,EAAE,EAAEC,EAAE,CAAC,CAAC,CAChC,IAAMb,EAAIX,KAAKoB,KAAK,CAACG,EAAI,IACzB,MAAO,CAAA,EAAGZ,EAAE,EAAE,EAAEY,EAAI,GAAG,CAAC,CAAC,AAC3B,CACF,4CCxCA,IAAMS,EAA8B,CAClCC,KAAM,6BACNC,KAAM,2BACNC,OAAQ,2BACRC,KAAM,6BACNC,KAAM,uBACNC,QAAS,8BACX,EAEO,SAASC,EAAM,MACpBC,EAAO,SAAS,UAChBT,CAAQ,WACRF,CAAS,CAKV,EACC,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CACCA,UAAW,CAAC,gFAAgF,EAAEG,CAAK,CAACQ,EAAK,CAAA,EAAGX,EAAY,CAAC,CAAC,EAAEA,EAAAA,CAAW,CAAG,GAAA,CAAI,UAE7IE,GAGP,kCAGO,SAASU,AAAY,CAAEC,QAAM,CAAiD,EACnF,MAAO,CAAA,EAAA,EAAA,GAAA,EAACH,EAAAA,CAAMC,KAAK,gBAAQE,GAC7B,4BC7BC,IAAA,EAAA,EAAA,CAAA,CAAA,0BAgCM,SAASI,AAAU,OAAEC,CAAK,KAAEnB,CAAG,CAAEoB,MAAI,CAA2D,EACrG,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAInB,UAAU,8CACZmB,EACD,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAInB,UAAU,oBACb,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIA,UAAU,uEAA+DkB,IAC7EnB,GAAO,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIC,UAAU,gDAAwCD,SAIvE,eAzCO,SAASe,AAAS,CACvBC,QAAM,QACNC,CAAM,UACNd,CAAQ,WACRF,CAAS,CAMV,EACC,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,CACCA,UAAW,CAAC,4EAA4E,EAAEA,EAAY,CAAC,CAAC,EAAEA,EAAAA,CAAW,CAAG,GAAA,CAAI,WAE3He,GACC,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAOf,UAAU,2FACfe,IAGL,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIf,UAAU,eAAOE,IACrBc,GACC,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAOhB,UAAU,uGACfgB,MAKX,4CC9BA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,8BAOO,SAASI,AAAc,IAC5B3B,CAAE,MACFkB,EAAO,QAAQ,MACfQ,EAAO,OAAO,UACdE,GAAW,CAAK,CAMjB,EACC,GAAM,CAACC,EAAM,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IAAM3C,KAAKW,GAAG,GAAKG,GACtC,CAAC8B,EAAWC,EAAa,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IAAMrD,KAAKkB,GAAG,CAAC,EAAGI,UAS7D,CAPA,CAAA,EAAA,EAAA,SAAS,AAAT,EAAU,KACR,IAAMgC,EAAO,IAAMD,EAAarD,KAAKkB,GAAG,CAAC,EAAGiC,EAAQ3C,KAAKW,GAAG,KAC5DmC,IACA,IAAMC,EAAKC,YAAYF,EAAM,KAC7B,MAAO,IAAMG,cAAcF,EAC7B,EAAG,CAACJ,EAAM,EAENC,GAAa,GAAK,CAACF,GAAiB,KAItC,CAAA,CAJ+B,CAI/B,EAAA,IAAA,EAAC,OAAA,CAAKrB,UAAW,CAAC,gDAAgD,EAAE6B,AAF/C,WAATlB,EAAoB,cAAgB,kBAEoBkB,CAAO,WACzE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,IAAI,CAAA,CAACC,KAAMX,EAAMY,KAAM,KACvBR,GAAa,EAAI,MAAQ,EAAA,GAAG,CAAC/B,QAAQ,CAAC+B,KAG7C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ui.tsx","../../../../src/components/Badge.tsx","../../../../src/components/RichCard.tsx","../../../../src/components/Lamp.tsx","../../../../src/components/RoutingView.tsx"],"sourcesContent":["/** Small formatting helpers shared across the console. */\nexport const fmt = {\n int(n: number): string {\n return n.toLocaleString(\"en-US\");\n },\n /** compact number: 1.2K, 3.4M */\n compact(n: number): string {\n if (Math.abs(n) >= 1_000_000) return `${(n / 1_000_000).toFixed(1)}M`;\n if (Math.abs(n) >= 1_000) return `${(n / 1_000).toFixed(1)}K`;\n return String(Math.round(n));\n },\n cost(n: number): string {\n if (n === 0) return \"$0\";\n return n < 0.01 ? `$${n.toFixed(4)}` : `$${n.toFixed(2)}`;\n },\n time(ts: number): string {\n return new Date(ts).toLocaleString(\"en-US\", { hour12: false });\n },\n /** DD/MM/YYYY (local) */\n date(ts: number): string {\n const d = new Date(ts);\n return `${String(d.getDate()).padStart(2, \"0\")}/${String(d.getMonth() + 1).padStart(2, \"0\")}/${d.getFullYear()}`;\n },\n /** \"3m\", \"2h\", \"5d\" — coarse relative age */\n ago(ts: number): string {\n const s = Math.max(0, Math.round((Date.now() - ts) / 1000));\n if (s < 60) return `${s}s`;\n if (s < 3600) return `${Math.floor(s / 60)}m`;\n if (s < 86400) return `${Math.floor(s / 3600)}h`;\n return `${Math.floor(s / 86400)}d`;\n },\n /** ms duration -> \"Xs\", \"Xm Ys\", \"Xh Ym\" for budget/cooldown countdowns */\n duration(ms: number): string {\n const s = Math.max(0, Math.round(ms / 1000));\n if (s < 60) return `${s}s`;\n if (s < 3600) return `${Math.floor(s / 60)}m ${s % 60}s`;\n const h = Math.floor(s / 3600);\n const m = Math.floor((s % 3600) / 60);\n if (h < 24) return `${h}h ${m}m`;\n const d = Math.floor(h / 24);\n return `${d}d ${h % 24}h`;\n },\n};\n\n/** A labelled stat block — number over a caption. */\nexport function Stat({ label, value, sub }: { label: string; value: React.ReactNode; sub?: string }) {\n return (\n <div className=\"rounded-brand-lg border border-border bg-surface px-4 py-3.5 shadow-soft\">\n <div className=\"text-[11px] font-medium uppercase tracking-wider text-text-subtle\">{label}</div>\n <div className=\"mt-1 tnum text-[22px] font-semibold tracking-tight text-text\">{value}</div>\n {sub && <div className=\"mt-0.5 text-[12px] text-text-muted\">{sub}</div>}\n </div>\n );\n}\n\n/** Empty-state hint inside a card body. */\nexport function Empty({ children }: { children: React.ReactNode }) {\n return <div className=\"px-1 py-8 text-center text-[13px] text-text-muted\">{children}</div>;\n}\n","type Tone = \"live\" | \"down\" | \"warn\" | \"info\" | \"neutral\" | \"danger\";\n\nconst TONES: Record<Tone, string> = {\n live: \"bg-success/12 text-success\",\n down: \"bg-danger/12 text-danger\",\n danger: \"bg-danger/12 text-danger\",\n warn: \"bg-warning/12 text-warning\",\n info: \"bg-info/12 text-info\",\n neutral: \"bg-surface-2 text-text-muted\",\n};\n\nexport function Badge({\n tone = \"neutral\",\n children,\n className,\n}: {\n tone?: Tone;\n children: React.ReactNode;\n className?: string;\n}) {\n return (\n <span\n className={`inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[11px] font-medium ${TONES[tone]}${className ? ` ${className}` : \"\"}`}\n >\n {children}\n </span>\n );\n}\n\n/** Format badge for a provider's wire format. */\nexport function FormatBadge({ format }: { format: \"openai\" | \"anthropic\" | \"gemini\" }) {\n return <Badge tone=\"info\">{format}</Badge>;\n}\n","/**\n * Rich content card — header (title slot + trailing slot), body, optional footer.\n * Softly rounded, subtle border, warm surface. The Haulix-style workhorse.\n */\nexport function RichCard({\n header,\n footer,\n children,\n className,\n}: {\n header?: React.ReactNode;\n footer?: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n}) {\n return (\n <section\n className={`overflow-hidden rounded-brand-lg border border-border bg-surface shadow-soft${className ? ` ${className}` : \"\"}`}\n >\n {header && (\n <header className=\"flex items-center justify-between gap-3 border-b border-border-subtle px-4 py-3\">\n {header}\n </header>\n )}\n <div className=\"p-4\">{children}</div>\n {footer && (\n <footer className=\"flex items-center justify-between gap-3 border-t border-border-subtle bg-bg-alt px-4 py-2.5\">\n {footer}\n </footer>\n )}\n </section>\n );\n}\n\n/** Title + optional subtitle, for the header slot. */\nexport function CardTitle({ title, sub, icon }: { title: string; sub?: string; icon?: React.ReactNode }) {\n return (\n <div className=\"flex items-center gap-2.5 min-w-0\">\n {icon}\n <div className=\"min-w-0\">\n <div className=\"truncate text-[14px] font-semibold tracking-tight text-text\">{title}</div>\n {sub && <div className=\"truncate text-[12px] text-text-muted\">{sub}</div>}\n </div>\n </div>\n );\n}\n","/** Status lamp — green when serving, red pulse on cooldown, grey when idle. */\nexport function Lamp({ state, title }: { state: \"live\" | \"idle\" | \"down\"; title?: string }) {\n return <span className={`lamp lamp-${state}`} title={title} aria-label={state} />;\n}\n\nexport function lampFor(healthy: boolean): \"live\" | \"down\" {\n return healthy ? \"live\" : \"down\";\n}\n","\"use client\";\n\nimport { useEffect, useState, useCallback } from \"react\";\nimport { adminApi } from \"@/lib/client\";\nimport { Lamp } from \"@/components/Lamp\";\nimport { Badge } from \"@/components/Badge\";\nimport { RichCard, CardTitle } from \"@/components/RichCard\";\nimport { Button, Input, Select, Field } from \"@/components/Button\";\nimport { ModelPicker, type ModelGroup } from \"@/components/ModelPicker\";\nimport { Icon } from \"@/components/Icon\";\nimport { ConfirmModal } from \"@/components/ConfirmModal\";\nimport { fmt, Empty } from \"@/components/ui\";\nimport type { MaskedConfig, MaskedRoute, ProviderSnapshot } from \"@/lib/gateway\";\n\n/** Upstream model id for the i-th target of a route (mirrors GatewayConfig). */\nfunction modelFor(route: MaskedRoute, i: number): string {\n if (Array.isArray(route.model)) return route.model[i] ?? route.model[0] ?? route.alias;\n if (typeof route.model === \"string\") return route.model;\n return route.alias;\n}\n\nexport function RoutingView() {\n const [config, setConfig] = useState<MaskedConfig | null>(null);\n const [health, setHealth] = useState<ProviderSnapshot[]>([]);\n const [error, setError] = useState(\"\");\n const [adding, setAdding] = useState(false);\n const [busy, setBusy] = useState(\"\");\n const [chainTest, setChainTest] = useState<Record<string, Record<number, \"testing\" | \"ok\" | \"fail\">>>({});\n const [chainBusy, setChainBusy] = useState<string | null>(null);\n const [pendingDelete, setPendingDelete] = useState<string | null>(null);\n const [editing, setEditing] = useState<MaskedRoute | null>(null);\n\n const reload = useCallback(async () => {\n const [cfgRes, prov] = await Promise.all([fetch(\"/api/gw/admin/config\"), adminApi.providers()]);\n if (!cfgRes.ok) {\n setError(\"could not reach the gateway\");\n return;\n }\n setError(\"\");\n setConfig((await cfgRes.json()) as MaskedConfig);\n setHealth(prov.data?.providers ?? []);\n }, []);\n\n useEffect(() => {\n void reload();\n }, [reload]);\n\n if (error) return <Empty>{error}</Empty>;\n if (!config) return <Empty>Loading…</Empty>;\n\n const healthy = (pid: string) => {\n const h = health.find((x) => x.id === pid);\n return h ? h.keys.some((k) => k.healthy) : true;\n };\n\n async function del(alias: string) {\n setBusy(alias);\n const r = await adminApi.removeRoute(alias);\n setBusy(\"\");\n if (!r.ok) setError(r.error ?? \"failed\");\n else await reload();\n }\n\n async function testChain(route: MaskedRoute) {\n setChainBusy(route.alias);\n setChainTest((prev) => ({ ...prev, [route.alias]: {} }));\n for (let i = 0; i < route.target.length; i++) {\n setChainTest((prev) => ({ ...prev, [route.alias]: { ...prev[route.alias], [i]: \"testing\" } }));\n const r = await adminApi.testProvider(route.target[i]!);\n const ok = r.ok && r.data?.ok;\n setChainTest((prev) => ({ ...prev, [route.alias]: { ...prev[route.alias], [i]: ok ? \"ok\" : \"fail\" } }));\n if (i < route.target.length - 1) await new Promise((resolve) => setTimeout(resolve, 400));\n }\n setChainBusy(null);\n }\n\n return (\n <div>\n <div className=\"mb-5 flex items-center justify-between gap-3\">\n <div>\n <h1 className=\"text-[22px] font-semibold tracking-tight text-text\">Combos & Routing</h1>\n <p className=\"mt-1 text-[13px] text-text-muted\">\n A combo is an alias your CLI tool calls, routed to a chain of providers. Fallback tries them in order; round-robin spreads load.\n </p>\n </div>\n <Button onClick={() => setAdding((v) => !v)}>\n <Icon name={adding ? \"close\" : \"add\"} size={17} />\n {adding ? \"Cancel\" : \"Add combo\"}\n </Button>\n </div>\n\n {adding && (\n <RouteForm\n providers={config.providers.filter((p) => !p.disabled)}\n onDone={() => { setAdding(false); void reload(); }}\n />\n )}\n\n {editing && !adding && (\n <RouteForm\n providers={config.providers.filter((p) => !p.disabled)}\n initial={editing}\n onDone={() => { setEditing(null); void reload(); }}\n onCancel={() => setEditing(null)}\n />\n )}\n\n {config.models.length === 0 ? (\n <Empty>No combos yet. Add one to expose a model alias to your CLI tools.</Empty>\n ) : (\n <div className=\"grid gap-3 lg:grid-cols-2\">\n {config.models.map((route) => (\n <RichCard\n key={route.alias}\n header={\n <>\n <CardTitle title={route.alias} sub={`${route.target.length} in chain`} />\n <div className=\"flex items-center gap-2\">\n <button\n onClick={() => testChain(route)}\n disabled={chainBusy === route.alias}\n className=\"flex items-center gap-1 rounded px-2 py-1 text-[11px] text-text-subtle transition-colors hover:bg-surface-2 hover:text-text disabled:opacity-60\"\n title=\"Test each provider in this chain\"\n >\n <Icon name={chainBusy === route.alias ? \"progress_activity\" : \"sync\"} size={14} />\n Test\n </button>\n <Badge tone={route.strategy === \"round-robin\" ? \"info\" : \"neutral\"}>{route.strategy}</Badge>\n {(route.price_in !== undefined || route.price_out !== undefined) && (\n <Badge tone=\"neutral\">\n {fmt.cost(route.price_in ?? 0)}/{fmt.cost(route.price_out ?? 0)} per 1M\n </Badge>\n )}\n <button onClick={() => setEditing(route)} className=\"text-text-subtle hover:text-text\" aria-label=\"Edit combo\">\n <Icon name=\"edit\" size={16} />\n </button>\n <button onClick={() => setPendingDelete(route.alias)} disabled={busy === route.alias} className=\"text-text-subtle hover:text-danger\" aria-label=\"Remove alias\">\n <Icon name=\"delete\" size={16} />\n </button>\n </div>\n </>\n }\n >\n <ol className=\"space-y-1.5\">\n {route.target.map((pid, i) => {\n const ct = chainTest[route.alias]?.[i];\n const testLamp = ct === \"ok\" ? \"live\" : ct === \"fail\" ? \"down\" : ct === \"testing\" ? \"idle\" : null;\n return (\n <li key={pid + i} className=\"flex items-center gap-2.5 rounded-brand border border-border-subtle px-3 py-2\">\n <span className=\"tnum text-[11px] text-text-subtle\">{i === 0 ? \"primary\" : `#${i + 1}`}</span>\n <Lamp state={testLamp ?? (healthy(pid) ? \"live\" : \"down\")} />\n <span className=\"text-[13px] text-text\">{pid}</span>\n <span className=\"ml-auto tnum text-[12px] text-text-muted\">{modelFor(route, i)}</span>\n {ct === \"ok\" && <Icon name=\"check_circle\" size={14} className=\"text-success\" />}\n {ct === \"fail\" && <Icon name=\"cancel\" size={14} className=\"text-danger\" />}\n {ct === \"testing\" && <Icon name=\"progress_activity\" size={14} className=\"text-text-subtle\" />}\n </li>\n );\n })}\n </ol>\n </RichCard>\n ))}\n </div>\n )}\n\n {pendingDelete && (\n <ConfirmModal\n title=\"Remove combo\"\n message={`Delete \"${pendingDelete}\"? CLI tools using this alias will stop working.`}\n confirmLabel=\"Remove\"\n busy={busy === pendingDelete}\n onCancel={() => setPendingDelete(null)}\n onConfirm={() => {\n void del(pendingDelete).then(() => setPendingDelete(null));\n }}\n />\n )}\n </div>\n );\n}\n\n// Combo create form, for aigetwey's ComboFormModal: a name + ONE ordered\n// list of concrete `provider/model` entries (fallback priority), picked from the\n// providers' catalogs. On save each entry splits into target[i]/model[i].\ntype ProviderOption = { id: string; models: { id: string }[] };\n\nfunction RouteForm({ providers, onDone, initial, onCancel }: { providers: ProviderOption[]; onDone: () => void; initial?: MaskedRoute; onCancel?: () => void }) {\n const isEdit = !!initial;\n const [alias, setAlias] = useState(initial?.alias ?? \"\");\n const [entries, setEntries] = useState<string[]>(() => {\n if (!initial) return [];\n return initial.target.map((pid, i) => {\n const m = Array.isArray(initial.model) ? initial.model[i] ?? initial.model[0] : initial.model ?? initial.alias;\n return `${pid}/${m}`;\n });\n });\n const [pickerOpen, setPickerOpen] = useState(false);\n const [strategy, setStrategy] = useState<\"fallback\" | \"round-robin\">(initial?.strategy ?? \"fallback\");\n const [priceIn, setPriceIn] = useState(initial?.price_in?.toString() ?? \"\");\n const [priceOut, setPriceOut] = useState(initial?.price_out?.toString() ?? \"\");\n const [busy, setBusy] = useState(false);\n const [err, setErr] = useState(\"\");\n const [dragIdx, setDragIdx] = useState<number | null>(null);\n\n // aigetwey-style picker: provider-grouped, click a model to add/remove it.\n const groups: ModelGroup[] = providers\n .filter((p) => p.models.length > 0)\n .map((p) => ({ label: p.id, items: p.models.map((m) => ({ value: `${p.id}/${m.id}`, label: `${p.id}/${m.id}` })) }));\n\n function toggle(v: string) {\n setErr(\"\");\n setEntries((e) => (e.includes(v) ? e.filter((x) => x !== v) : [...e, v]));\n }\n\n // reorder fallback priority: dropping entry #from onto slot #to\n function move(from: number, to: number) {\n setEntries((e) => {\n const next = [...e];\n const [moved] = next.splice(from, 1);\n next.splice(to, 0, moved);\n return next;\n });\n }\n\n async function submit(e: React.FormEvent) {\n e.preventDefault();\n if (!alias || entries.length === 0) {\n setErr(\"a name and at least one model are required\");\n return;\n }\n setBusy(true);\n setErr(\"\");\n const target = entries.map((x) => x.slice(0, x.indexOf(\"/\")));\n const model = entries.map((x) => x.slice(x.indexOf(\"/\") + 1));\n const r = await adminApi.setRoute(alias, {\n target,\n model,\n strategy,\n price_in: priceIn ? Number(priceIn) : undefined,\n price_out: priceOut ? Number(priceOut) : undefined,\n });\n // rename: the new alias is saved above; drop the old one so it doesn't linger.\n if (r.ok && isEdit && initial!.alias !== alias) {\n await adminApi.removeRoute(initial!.alias);\n }\n setBusy(false);\n if (r.ok) onDone();\n else setErr(r.error ?? \"failed\");\n }\n\n return (\n <form onSubmit={submit} className=\"mb-5 rounded-brand-lg border border-border bg-surface p-4 shadow-soft\">\n <div className=\"grid gap-3 sm:grid-cols-2\">\n <Field label=\"Alias\" hint=\"the name your CLI requests as a model\">\n <Input value={alias} onChange={(e) => setAlias(e.target.value)} placeholder=\"my-claude\" />\n </Field>\n <Field label=\"Strategy\" hint=\"how the chain is tried\">\n <Select value={strategy} onChange={(e) => setStrategy(e.target.value as \"fallback\" | \"round-robin\")}>\n <option value=\"fallback\">Fallback — try in order, next on failure</option>\n <option value=\"round-robin\">Round Robin — rotate to spread load</option>\n </Select>\n </Field>\n <Field label=\"Price in\" hint=\"per 1M, optional\"><Input value={priceIn} onChange={(e) => setPriceIn(e.target.value)} placeholder=\"3\" /></Field>\n <Field label=\"Price out\" hint=\"per 1M, optional\"><Input value={priceOut} onChange={(e) => setPriceOut(e.target.value)} placeholder=\"15\" /></Field>\n </div>\n\n <div className=\"mt-3\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-[11px] font-medium uppercase tracking-wider text-text-subtle\">\n Models — fallback order (drag to reorder)\n </span>\n <Button type=\"button\" variant=\"ghost\" onClick={() => setPickerOpen(true)}>\n <Icon name=\"add\" size={16} /> Add models\n </Button>\n </div>\n\n {entries.length === 0 ? (\n <div className=\"mt-2 rounded-brand border border-dashed border-border-subtle px-3 py-4 text-center text-[12px] text-text-subtle\">\n No models yet. Click <span className=\"text-text-muted\">Add models</span> and pick from your providers.\n </div>\n ) : (\n <ul className=\"mt-2 space-y-1.5\">\n {entries.map((entry, i) => (\n <li\n key={entry}\n draggable\n onDragStart={() => setDragIdx(i)}\n onDragOver={(e) => e.preventDefault()}\n onDrop={() => {\n if (dragIdx !== null && dragIdx !== i) move(dragIdx, i);\n setDragIdx(null);\n }}\n onDragEnd={() => setDragIdx(null)}\n className={`flex cursor-grab items-center gap-2.5 rounded-brand border px-3 py-2 active:cursor-grabbing ${\n dragIdx === i ? \"border-accent bg-accent-soft\" : \"border-border-subtle\"\n }`}\n >\n <Icon name=\"drag_indicator\" size={16} className=\"text-text-subtle\" />\n <span className=\"tnum text-[11px] text-text-subtle\">{i === 0 ? \"primary\" : `#${i + 1}`}</span>\n <span className=\"tnum truncate text-[13px] text-text\">{entry}</span>\n <button\n type=\"button\"\n onClick={() => setEntries((e) => e.filter((_, idx) => idx !== i))}\n className=\"ml-auto flex-none text-text-subtle hover:text-danger\"\n aria-label={`Remove ${entry}`}\n >\n <Icon name=\"close\" size={14} />\n </button>\n </li>\n ))}\n </ul>\n )}\n </div>\n\n {err && <div className=\"mt-2 text-[12px] text-danger\">{err}</div>}\n <div className=\"mt-3 flex justify-end gap-2\">\n {onCancel && <Button type=\"button\" variant=\"ghost\" onClick={onCancel}>Cancel</Button>}\n <Button type=\"submit\" disabled={busy}>{busy ? \"Saving…\" : isEdit ? \"Update combo\" : \"Save combo\"}</Button>\n </div>\n\n {pickerOpen && (\n <ModelPicker\n title=\"Add models to the chain\"\n note=\"Click a model to add it, click again to remove. Drag to reorder after.\"\n groups={groups}\n selected={entries}\n onToggle={toggle}\n onClose={() => setPickerOpen(false)}\n />\n )}\n </form>\n );\n}\n"],"names":["fmt","int","n","toLocaleString","compact","Math","abs","toFixed","String","round","cost","time","ts","Date","hour12","date","d","getDate","padStart","getMonth","getFullYear","ago","s","max","now","floor","duration","ms","h","m","Stat","label","value","sub","className","Empty","children","TONES","live","down","danger","warn","info","neutral","Badge","tone","FormatBadge","format","RichCard","header","footer","CardTitle","title","icon","Lamp","state","lampFor","healthy","modelFor","route","i","Array","isArray","model","alias","RoutingView","config","setConfig","health","setHealth","error","setError","adding","setAdding","busy","setBusy","chainTest","setChainTest","chainBusy","setChainBusy","pendingDelete","setPendingDelete","editing","setEditing","reload","cfgRes","prov","Promise","all","fetch","providers","ok","json","data","pid","find","x","id","keys","some","k","del","r","removeRoute","testChain","prev","target","length","testProvider","resolve","setTimeout","onClick","v","name","size","RouteForm","filter","p","disabled","onDone","initial","onCancel","models","map","strategy","price_in","undefined","price_out","ct","testLamp","message","confirmLabel","onConfirm","then","isEdit","setAlias","entries","setEntries","pickerOpen","setPickerOpen","setStrategy","priceIn","setPriceIn","toString","priceOut","setPriceOut","err","setErr","dragIdx","setDragIdx","groups","items","toggle","e","includes","move","from","to","next","moved","splice","submit","preventDefault","slice","indexOf","setRoute","Number","onSubmit","hint","onChange","placeholder","type","variant","entry","draggable","onDragStart","onDragOver","onDrop","onDragEnd","_","idx","note","selected","onToggle","onClose"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/BudgetTracker.tsx","../../../../src/components/BudgetForm.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { adminApi } from \"@/lib/client\";\nimport { Badge } from \"@/components/Badge\";\nimport { RichCard, CardTitle } from \"@/components/RichCard\";\nimport { CooldownTimer } from \"@/components/CooldownTimer\";\nimport { fmt, Empty } from \"@/components/ui\";\nimport { BudgetForm } from \"@/components/BudgetForm\";\nimport { Button } from \"@/components/Button\";\nimport { Icon } from \"@/components/Icon\";\nimport type { BudgetStatus, KeyUsageRow } from \"@/lib/gateway\";\n\n/**\n * Budget Tracker — scoped spend budgets (global / per-provider / per-model /\n * per-key) with an Add / Edit / Remove flow: consumption vs limit, a fill bar,\n * and a live reset countdown.\n */\nexport function BudgetTracker() {\n const [budgets, setBudgets] = useState<BudgetStatus[]>([]);\n const [keys, setKeys] = useState<KeyUsageRow[]>([]);\n const [loaded, setLoaded] = useState(false);\n const [form, setForm] = useState<{ open: boolean; initial: BudgetStatus | null }>({ open: false, initial: null });\n const [error, setError] = useState(\"\");\n\n const refresh = () => {\n void adminApi.budgets().then((r) => {\n if (!r.ok) setError(r.error ?? \"could not reach the gateway\");\n else { setBudgets(r.data?.budgets ?? []); }\n setLoaded(true);\n });\n void adminApi.keysUsage().then((r) => { if (r.ok) setKeys(r.data?.keys ?? []); });\n };\n\n useEffect(() => { refresh(); }, []);\n\n if (error) return <Empty>{error}</Empty>;\n if (!loaded) return <Empty>Loading...</Empty>;\n\n return (\n <div>\n <div className=\"mb-6\">\n <h1 className=\"text-[22px] font-semibold tracking-tight text-text\">Budgets</h1>\n <p className=\"mt-1 text-[13px] text-text-muted\">\n Spend caps (USD or tokens) with live reset countdowns.\n </p>\n </div>\n\n {/* -- Budgets -- */}\n <div className=\"mb-6\">\n <div className=\"mb-3 flex items-center justify-between\">\n <h2 className=\"text-[15px] font-semibold text-text\">Overall</h2>\n {!form.open && (\n <Button onClick={() => setForm({ open: true, initial: null })}>\n <Icon name=\"add\" size={16} /> Add budget\n </Button>\n )}\n </div>\n\n {form.open && (\n <BudgetForm\n key={form.initial?.key ?? \"new\"}\n initial={form.initial}\n onSaved={() => { setForm({ open: false, initial: null }); refresh(); }}\n onCancel={() => setForm({ open: false, initial: null })}\n />\n )}\n\n {budgets.filter((b) => b.scope.type !== \"key\").length === 0 ? (\n !form.open && <Empty>No budgets yet. Add one to cap spend globally, per provider, or per model.</Empty>\n ) : (\n <div className=\"grid gap-3 sm:grid-cols-2 lg:grid-cols-3\">\n {budgets.filter((b) => b.scope.type !== \"key\").map((b) => (\n <RichCard\n key={b.key}\n header={\n <>\n <CardTitle title={b.label} sub={`${b.scope.type} · ${b.window}`} />\n <Badge tone={b.exhausted ? \"down\" : b.alert ? \"warn\" : \"live\"}>\n {b.exhausted ? \"exhausted\" : b.alert ? \"alert\" : \"active\"}\n </Badge>\n </>\n }\n >\n <div className=\"space-y-2.5\">\n {b.note && <p className=\"text-[12px] text-text-muted\">{b.note}</p>}\n <div className=\"h-1.5 overflow-hidden rounded-full bg-surface-2\">\n <div\n className={`h-full rounded-full transition-all ${b.exhausted ? \"bg-danger\" : b.alert ? \"bg-warning\" : \"bg-accent\"}`}\n style={{ width: `${Math.min(100, Math.round(b.pct * 100))}%` }}\n />\n </div>\n <div className=\"flex items-center justify-between text-[12px]\">\n <span className=\"tnum text-text-muted\">\n {b.unit === \"usd\"\n ? `$${b.spent.toFixed(2)} / $${b.limit.toFixed(2)}`\n : `${fmt.compact(b.spent)} / ${fmt.compact(b.limit)} tokens`}\n {b.est_converse != null\n ? b.unit === \"usd\" ? ` · ~${fmt.compact(b.est_converse)} tok` : ` · ~$${b.est_converse.toFixed(2)}`\n : \" · —\"}\n </span>\n <CooldownTimer ms={b.reset_in_ms} tone=\"muted\" icon=\"restart_alt\" keepZero />\n </div>\n <div className=\"flex items-center gap-2 border-t border-border-subtle pt-2.5\">\n <Button variant=\"ghost\" className=\"px-2.5 py-1 text-[12px]\" onClick={() => setForm({ open: true, initial: b })}>\n <Icon name=\"edit\" size={14} /> Edit\n </Button>\n <Button\n variant=\"danger\"\n className=\"px-2.5 py-1 text-[12px]\"\n onClick={async () => { const r = await adminApi.clearBudget(b.key); if (!r.ok) setError(r.error ?? \"could not remove budget\"); refresh(); }}\n >\n <Icon name=\"delete\" size={14} /> Remove\n </Button>\n </div>\n </div>\n </RichCard>\n ))}\n </div>\n )}\n </div>\n\n {/* -- Keys -- */}\n <div>\n <h2 className=\"mb-3 text-[15px] font-semibold text-text\">Keys</h2>\n {keys.length === 0 ? (\n <Empty>No gateway keys yet. Add one on the Endpoint page.</Empty>\n ) : (\n <div className=\"grid gap-3 sm:grid-cols-2 lg:grid-cols-3\">\n {keys.map((k) => (\n <RichCard\n key={k.fingerprint}\n header={\n <>\n <CardTitle title={k.name} sub={k.budget ? `key · ${k.budget.window}` : \"key · no limit\"} />\n {k.expires && Date.now() > k.expires ? (\n <Badge tone=\"down\">expired</Badge>\n ) : k.budget?.exhausted ? (\n <Badge tone=\"down\">exhausted</Badge>\n ) : (\n <Badge tone=\"live\">active</Badge>\n )}\n </>\n }\n >\n <div className=\"space-y-2.5\">\n {k.budget ? (\n <>\n <div className=\"h-1.5 overflow-hidden rounded-full bg-surface-2\">\n <div\n className={`h-full rounded-full transition-all ${k.budget.exhausted ? \"bg-danger\" : k.budget.alert ? \"bg-warning\" : \"bg-accent\"}`}\n style={{ width: `${Math.min(100, Math.round(k.budget.pct * 100))}%` }}\n />\n </div>\n <div className=\"flex items-center justify-between text-[12px]\">\n <span className=\"tnum text-text-muted\">\n {k.budget.unit === \"usd\"\n ? `$${k.budget.spent.toFixed(2)} / $${k.budget.limit.toFixed(2)}`\n : `${fmt.compact(k.budget.spent)} / ${fmt.compact(k.budget.limit)} tokens`}\n </span>\n <CooldownTimer ms={k.budget.reset_in_ms} tone=\"muted\" icon=\"restart_alt\" keepZero />\n </div>\n </>\n ) : (\n <div className=\"flex items-center justify-between text-[12px]\">\n <span className=\"tnum text-text-muted\">${k.spent.toFixed(2)} spent</span>\n <span className=\"text-text-subtle\">no limit</span>\n </div>\n )}\n <div className=\"text-[11px] text-text-subtle\">\n {k.expires ? `expires ${fmt.date(k.expires)}` : \"no expiry\"}\n </div>\n </div>\n </RichCard>\n ))}\n </div>\n )}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { adminApi } from \"@/lib/client\";\nimport { Button, Input, Field } from \"@/components/Button\";\nimport { Icon } from \"@/components/Icon\";\nimport { ModelPicker, type ModelGroup } from \"@/components/ModelPicker\";\nimport type { BudgetStatus, ModelsPayload } from \"@/lib/gateway\";\n\nconst WINDOWS = [\"5h\", \"24h\", \"7day\", \"30day\"] as const;\ntype ScopeType = \"global\" | \"provider\" | \"model\";\n\n/** Segment-pill button style — selected = accent, matches the Unit toggle. */\nconst pill = (active: boolean): string =>\n `rounded-brand px-3 py-1.5 text-[13px] font-medium transition-colors ${\n active ? \"bg-accent/12 text-accent\" : \"bg-surface-2 text-text-muted hover:text-text\"\n }`;\n\n/**\n * A labelled field group for BUTTON controls. Unlike `Field` (a <label>, which\n * forwards a pointer click to its first control and would swallow pill clicks),\n * this is a plain <div> so each pill button receives its own click.\n */\nfunction Group({ label, children }: { label: string; children: React.ReactNode }) {\n return (\n <div className=\"flex flex-col gap-1.5\">\n <span className=\"text-[11px] font-medium uppercase tracking-wider text-text-subtle\">{label}</span>\n {children}\n </div>\n );\n}\n\nconst SCOPES: { id: ScopeType; icon: string; label: string; hint: string }[] = [\n { id: \"global\", icon: \"public\", label: \"Global\", hint: \"Cap total spend across the whole gateway.\" },\n { id: \"provider\", icon: \"dns\", label: \"Per provider\", hint: \"Cap one provider's spend.\" },\n { id: \"model\", icon: \"neurology\", label: \"Per model\", hint: \"Cap one upstream model's spend.\" },\n];\n\n/**\n * Inline Add / Edit panel for a scoped budget — same shape as the \"Add a\n * provider\" flow: step 1 picks the scope (card grid, add only), step 2 is the\n * field set. Editing jumps straight to step 2 with the scope locked (the scope\n * is the budget's identity); every other field stays editable.\n */\nexport function BudgetForm({\n initial,\n onSaved,\n onCancel,\n}: {\n initial: BudgetStatus | null;\n onSaved: () => void;\n onCancel: () => void;\n}) {\n const editing = initial !== null;\n const [scopeType, setScopeType] = useState<ScopeType | null>(\n initial && initial.scope.type !== \"key\" ? initial.scope.type : null,\n );\n const [scopeId, setScopeId] = useState(\n initial && initial.scope.type !== \"global\" && initial.scope.type !== \"key\" ? initial.scope.id : \"\",\n );\n const [catalog, setCatalog] = useState<ModelsPayload | null>(null);\n const [pickerOpen, setPickerOpen] = useState(false);\n const [unit, setUnit] = useState<\"usd\" | \"tokens\">(initial?.unit ?? \"usd\");\n const [limit, setLimit] = useState(String(initial?.limit ?? \"\"));\n const [window, setWindow] = useState<(typeof WINDOWS)[number]>(initial?.window ?? \"30day\");\n const [alertAt, setAlertAt] = useState(initial ? String(Math.round(initial.alert_at * 100)) : \"80\");\n const [note, setNote] = useState(initial?.note ?? \"\");\n const [error, setError] = useState(\"\");\n const [saving, setSaving] = useState(false);\n\n useEffect(() => {\n void adminApi.models().then((r) => { if (r.ok && r.data) setCatalog(r.data); });\n }, []);\n\n const providerGroups: ModelGroup[] = catalog?.providers.length\n ? [{ label: \"Providers\", items: catalog.providers.map((p) => ({ value: p.id, label: p.id })) }]\n : [];\n // one entry per distinct upstream model id (a budget keys on usage.model), grouped by provider.\n const modelGroups: ModelGroup[] = (catalog?.providers ?? [])\n .filter((p) => p.models.length > 0)\n .map((p) => ({ label: p.id, items: p.models.map((m) => ({ value: m.id, label: m.id })) }));\n const scopeIdLabel = scopeId;\n\n async function save() {\n const limitNum = Number(limit);\n if (!Number.isFinite(limitNum) || limitNum <= 0) return setError(\"limit must be a positive number\");\n const alertPct = Number(alertAt);\n if (!Number.isFinite(alertPct) || alertPct <= 0 || alertPct > 100) return setError(\"alert % must be 1–100\");\n if (scopeType !== \"global\" && !scopeId.trim()) return setError(`pick a ${scopeType}`);\n const scope =\n scopeType === \"global\" ? { type: \"global\" as const } : { type: scopeType!, id: scopeId.trim() };\n setSaving(true);\n setError(\"\");\n try {\n const r = await adminApi.setBudget({ scope, unit, limit: limitNum, window, alert_at: alertPct / 100, note: note.trim() || undefined });\n if (!r.ok) return setError(r.error ?? \"could not save budget\");\n onSaved();\n } finally {\n setSaving(false);\n }\n }\n\n const panel = \"mb-5 rounded-brand-lg border border-border bg-surface p-5 shadow-soft\";\n\n // step 1 (add only): pick the scope.\n if (scopeType === null) {\n return (\n <div className={panel}>\n <div className=\"flex items-start justify-between gap-3\">\n <div>\n <h2 className=\"text-[14px] font-semibold text-text\">Add a budget</h2>\n <p className=\"mt-0.5 text-[12.5px] text-text-muted\">Pick what this budget caps — the rest is one short form.</p>\n </div>\n <button type=\"button\" onClick={onCancel} className=\"flex-none text-text-subtle hover:text-text\" aria-label=\"Cancel\">\n <Icon name=\"close\" size={18} />\n </button>\n </div>\n <div className=\"mt-4 grid gap-3 sm:grid-cols-3\">\n {SCOPES.map((s) => (\n <button\n key={s.id}\n type=\"button\"\n onClick={() => { setScopeType(s.id); setScopeId(\"\"); }}\n className=\"group flex items-start gap-3 rounded-brand-lg border border-border bg-bg p-4 text-left transition-colors hover:border-accent hover:bg-accent-soft\"\n >\n <span className=\"flex h-10 w-10 flex-none items-center justify-center rounded-brand bg-surface-2 text-text-muted group-hover:text-accent\">\n <Icon name={s.icon} size={20} />\n </span>\n <span className=\"min-w-0\">\n <span className=\"block text-[13.5px] font-semibold text-text\">{s.label}</span>\n <span className=\"mt-1 block text-[11.5px] text-text-muted\">{s.hint}</span>\n </span>\n </button>\n ))}\n </div>\n </div>\n );\n }\n\n const scopeMeta = SCOPES.find((s) => s.id === scopeType)!;\n\n // step 2: the field set.\n return (\n <div className={panel}>\n <div className=\"mb-4 flex items-center gap-2.5 border-b border-border-subtle pb-4\">\n <span className=\"flex h-8 w-8 items-center justify-center rounded-brand bg-surface-2 text-text-muted\">\n <Icon name={scopeMeta.icon} size={17} />\n </span>\n <div>\n <div className=\"text-[13.5px] font-semibold text-text\">{editing ? \"Edit budget\" : scopeMeta.label}</div>\n <div className=\"tnum text-[11px] text-text-subtle\">\n {scopeType === \"global\" ? \"whole gateway\" : `${scopeType} · ${editing ? initial!.label : scopeIdLabel || \"—\"}`}\n </div>\n </div>\n {editing ? null : (\n <button\n type=\"button\"\n onClick={() => { setScopeType(null); setError(\"\"); }}\n className=\"ml-auto inline-flex items-center gap-1 text-[12px] text-text-subtle hover:text-text\"\n >\n <Icon name=\"arrow_back\" size={14} /> change scope\n </button>\n )}\n </div>\n\n <div className=\"space-y-3\">\n {/* scope target — only when adding; editing locks the scope (shown in the header) */}\n {!editing && scopeType !== \"global\" && (\n <Group label={scopeType === \"provider\" ? \"Provider\" : scopeType === \"model\" ? \"Model\" : \"API key\"}>\n <button\n type=\"button\"\n onClick={() => setPickerOpen(true)}\n className=\"flex w-full items-center justify-between rounded-brand border border-border bg-bg px-3 py-2 text-left text-[13px] transition-colors hover:border-accent\"\n >\n <span className={scopeId ? \"text-text\" : \"text-text-subtle\"}>\n {scopeId ? scopeIdLabel : scopeType === \"provider\" ? \"Choose a provider…\" : scopeType === \"model\" ? \"Choose a model…\" : \"Choose an API key…\"}\n </span>\n <Icon name=\"search\" size={15} className=\"text-text-subtle\" />\n </button>\n </Group>\n )}\n\n <Group label=\"Unit\">\n <div className=\"flex flex-wrap gap-2\">\n <button type=\"button\" onClick={() => setUnit(\"usd\")} className={pill(unit === \"usd\")}>USD</button>\n <button type=\"button\" onClick={() => setUnit(\"tokens\")} className={pill(unit === \"tokens\")}>Tokens</button>\n </div>\n </Group>\n <Field label=\"Limit\" hint={unit === \"usd\" ? \"$\" : \"tokens\"}>\n <Input value={limit} onChange={(e) => setLimit(e.target.value)} inputMode=\"decimal\" placeholder={unit === \"usd\" ? \"50.00\" : \"1000000\"} />\n </Field>\n <Group label=\"Window\">\n <div className=\"flex flex-wrap gap-2\">\n {WINDOWS.map((w) => (\n <button key={w} type=\"button\" onClick={() => setWindow(w)} className={pill(window === w)}>{w}</button>\n ))}\n </div>\n </Group>\n <Group label=\"Alert at\">\n <div className=\"flex items-center gap-3\">\n <input\n type=\"range\"\n min={0}\n max={100}\n step={1}\n value={Math.max(0, Math.min(100, Number(alertAt) || 0))}\n onChange={(e) => setAlertAt(e.target.value)}\n className=\"range-accent flex-1\"\n style={{\n background: `linear-gradient(to right, var(--color-accent) ${Math.max(0, Math.min(100, Number(alertAt) || 0))}%, var(--color-surface-2) ${Math.max(0, Math.min(100, Number(alertAt) || 0))}%)`,\n }}\n aria-label=\"Alert threshold percent\"\n />\n <div className=\"relative w-16 flex-none\">\n <Input\n value={alertAt}\n onChange={(e) => {\n const v = e.target.value.replace(/[^\\d]/g, \"\");\n if (v === \"\") return setAlertAt(\"\");\n setAlertAt(String(Math.max(0, Math.min(100, Number(v)))));\n }}\n inputMode=\"numeric\"\n className=\"pr-5 text-center tnum\"\n aria-label=\"Alert threshold percent (type)\"\n />\n <span className=\"pointer-events-none absolute right-2 top-1/2 -translate-y-1/2 text-[12px] text-text-subtle\">%</span>\n </div>\n </div>\n <p className=\"text-[11px] text-text-subtle\">Warn once spend crosses this share of the limit.</p>\n </Group>\n <Field label=\"Note\" hint=\"optional\">\n <Input value={note} onChange={(e) => setNote(e.target.value)} maxLength={200} placeholder=\"e.g. client X cap\" />\n </Field>\n </div>\n\n {error && <div className=\"mt-2 text-[12px] text-danger\">{error}</div>}\n <div className=\"mt-4 flex justify-end gap-2\">\n <Button type=\"button\" variant=\"ghost\" onClick={onCancel}>Cancel</Button>\n <Button type=\"button\" disabled={saving} onClick={save}>{saving ? \"Saving…\" : editing ? \"Save changes\" : \"Add budget\"}</Button>\n </div>\n\n {pickerOpen && scopeType !== \"global\" && (\n <ModelPicker\n title={scopeType === \"provider\" ? \"Select a provider\" : \"Select a model\"}\n note={`Click a ${scopeType} to scope this budget to it.`}\n searchPlaceholder={scopeType === \"provider\" ? \"Search providers…\" : \"Search models…\"}\n groups={scopeType === \"provider\" ? providerGroups : modelGroups}\n selected={scopeId ? [scopeId] : []}\n onToggle={(v) => { setScopeId(v); setPickerOpen(false); }}\n onClose={() => setPickerOpen(false)}\n showThinkingHint={scopeType === \"model\"}\n />\n )}\n </div>\n );\n}\n"],"names":["WINDOWS","pill","active","Group","label","children","className","SCOPES","id","icon","hint","BudgetForm","initial","onSaved","onCancel","editing","scopeType","setScopeType","scope","type","scopeId","setScopeId","catalog","setCatalog","pickerOpen","setPickerOpen","unit","setUnit","limit","setLimit","String","window","setWindow","alertAt","setAlertAt","Math","round","alert_at","note","setNote","error","setError","saving","setSaving","models","then","r","ok","data","providerGroups","providers","length","items","map","p","value","modelGroups","filter","m","scopeIdLabel","save","limitNum","Number","isFinite","alertPct","trim","setBudget","undefined","panel","onClick","name","size","s","scopeMeta","find","onChange","e","target","inputMode","placeholder","w","min","max","step","style","background","v","replace","maxLength","variant","disabled","title","searchPlaceholder","groups","selected","onToggle","onClose","showThinkingHint"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/KeyManager.tsx","../../../../src/components/KeyScopeModal.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useState, useCallback } from \"react\";\nimport { adminApi } from \"@/lib/client\";\nimport { Button, Input } from \"@/components/Button\";\nimport { Icon } from \"@/components/Icon\";\nimport { Badge } from \"@/components/Badge\";\nimport { ConfirmModal } from \"@/components/ConfirmModal\";\nimport { Empty, fmt } from \"@/components/ui\";\nimport { KeyScopeModal } from \"@/components/KeyScopeModal\";\nimport type { EndpointPayload, MaskedConfig } from \"@/lib/gateway\";\nimport type { ModelGroup } from \"@/components/ModelPicker\";\n\ntype ServerKey = EndpointPayload[\"keys\"][number];\n\nfunction generateKey(): string {\n const bytes = new Uint8Array(24);\n crypto.getRandomValues(bytes);\n return `aig-${Array.from(bytes, (b) => b.toString(16).padStart(2, \"0\")).join(\"\")}`;\n}\n\nexport function KeyManager() {\n const [ep, setEp] = useState<EndpointPayload | null>(null);\n const [error, setError] = useState(\"\");\n const [busy, setBusy] = useState(\"\");\n const [keyName, setKeyName] = useState(\"\");\n const [created, setCreated] = useState<{ key: string; name: string } | null>(null);\n const [pendingDel, setPendingDel] = useState<{ i: number; label: string } | null>(null);\n const [scopeKey, setScopeKey] = useState<number | null>(null);\n const [groups, setGroups] = useState<ModelGroup[]>([]);\n const [keyBudgets, setKeyBudgets] = useState<Record<string, { limit: number; window: string }>>({});\n\n const reload = useCallback(async () => {\n const r = await adminApi.endpoint();\n if (!r.ok) { setError(r.error ?? \"could not reach gateway\"); return; }\n setError(\"\");\n setEp(r.data);\n }, []);\n\n useEffect(() => {\n void reload();\n void (async () => {\n try {\n const res = await fetch(\"/api/gw/admin/config\");\n if (!res.ok) return;\n const cfg = (await res.json()) as MaskedConfig;\n const grps: ModelGroup[] = [];\n if (cfg.models.length) grps.push({ label: \"Combos\", items: cfg.models.map((m) => ({ value: m.alias, label: m.alias })) });\n for (const p of cfg.providers) {\n if (p.models.length) grps.push({ label: p.id, items: p.models.map((m) => ({ value: `${p.id}/${m.id}`, label: `${p.id}/${m.id}` })) });\n }\n setGroups(grps);\n } catch { /* non-critical */ }\n })();\n void adminApi.budgets().then((r) => {\n if (!r.ok || !r.data) return;\n const map: Record<string, { limit: number; window: string }> = {};\n for (const b of r.data.budgets) {\n if (b.scope.type === \"key\") map[b.scope.id] = { limit: b.limit, window: b.window };\n }\n setKeyBudgets(map);\n });\n }, [reload]);\n\n async function run(label: string, fn: () => Promise<{ ok: boolean; error?: string }>) {\n setBusy(label);\n const r = await fn();\n setBusy(\"\");\n if (!r.ok) setError(r.error ?? \"action failed\");\n else { setError(\"\"); await reload(); }\n }\n\n async function addKey(label: string, rawKey: string) {\n const name = (label || \"Gateway key\").trim();\n if (ep && ep.keys.some((k) => k.name === name)) {\n setError(`Key name \"${name}\" already exists`);\n return;\n }\n setBusy(\"genkey\");\n const r = await adminApi.addServerKey(rawKey, name);\n setBusy(\"\");\n if (!r.ok) { setError(r.error ?? \"could not add key\"); return; }\n setError(\"\");\n setKeyName(\"\");\n setCreated({ key: rawKey, name });\n await reload();\n }\n\n if (!ep) return <Empty>Loading…</Empty>;\n\n const activeKey = scopeKey !== null ? ep.keys[scopeKey] : null;\n\n return (\n <div>\n <div className=\"mb-6 flex items-center justify-between gap-3\">\n <div>\n <h1 className=\"text-[22px] font-semibold tracking-tight text-text\">Access Keys</h1>\n <p className=\"mt-1 text-[13px] text-text-muted\">Client API keys — each can have its own models, rate limit, and budget.</p>\n </div>\n <div className=\"flex items-center gap-2\">\n <Input value={keyName} onChange={(e) => setKeyName(e.target.value)} placeholder=\"Search or name new key…\" className=\"w-48\" />\n <Button disabled={busy === \"genkey\"} onClick={() => addKey(keyName, generateKey())} className=\"whitespace-nowrap\">\n <Icon name=\"add\" size={16} />{busy === \"genkey\" ? \"Adding…\" : \"Add key\"}\n </Button>\n </div>\n </div>\n\n {error && (\n <div className=\"mb-4 flex items-center justify-between gap-2 rounded-brand border border-danger/30 bg-danger/8 px-4 py-2.5 text-[13px] text-danger\">\n <span>{error}</span>\n <button onClick={() => setError(\"\")} className=\"hover:text-text\"><Icon name=\"close\" size={15} /></button>\n </div>\n )}\n\n {ep.keys.length === 0 ? (\n <Empty>No keys — auth is DISABLED (localhost only). Add one above.</Empty>\n ) : (\n <div className=\"grid gap-3 sm:grid-cols-2 lg:grid-cols-3\">\n {ep.keys.map((k, i) => {\n if (keyName && !(k.name ?? \"\").toLowerCase().includes(keyName.toLowerCase()) && !k.key.toLowerCase().includes(keyName.toLowerCase())) return null;\n const expired = !!k.expires && Date.now() > k.expires;\n const budget = keyBudgets[k.fingerprint];\n return (\n <div\n key={i}\n className={`group rounded-brand-lg border bg-surface p-4 shadow-soft transition-colors ${\n expired ? \"border-danger/35 opacity-70\" : \"border-border hover:border-text-subtle\"\n }`}\n >\n {/* header row */}\n <div className=\"flex items-start justify-between gap-2\">\n <KeyRevealInline\n name={k.name || \"Unnamed key\"}\n masked={k.key}\n reveal={async () => { const r = await adminApi.revealServerKey(i); return r.ok ? r.data?.key ?? null : null; }}\n />\n <Badge tone={expired ? \"danger\" : \"live\"}>{expired ? \"expired\" : \"active\"}</Badge>\n </div>\n\n {/* tags */}\n <div className=\"mt-3 flex flex-wrap gap-1.5\">\n <Badge tone={k.models?.length ? \"info\" : \"neutral\"}>{k.models?.length ? `${k.models.length} model${k.models.length > 1 ? \"s\" : \"\"}` : \"all models\"}</Badge>\n {k.rpm && <Badge tone=\"neutral\">{k.rpm}/min</Badge>}\n {budget && <Badge tone=\"info\">${budget.limit}/{budget.window}</Badge>}\n {k.expires && !expired && <Badge tone=\"neutral\">expires {fmt.date(k.expires)}</Badge>}\n </div>\n\n {/* actions */}\n <div className=\"mt-4 flex items-center gap-2\">\n <button onClick={() => { setScopeKey(i); }} className=\"inline-flex items-center gap-1.5 rounded-brand border border-border px-3 py-1.5 text-[12.5px] text-text-muted hover:border-text-subtle hover:text-text\">\n <Icon name=\"edit\" size={14} /> Edit\n </button>\n <button onClick={() => setPendingDel({ i, label: k.name || k.key })} className=\"inline-flex items-center gap-1.5 rounded-brand border border-border px-3 py-1.5 text-[12.5px] text-text-muted hover:border-danger/40 hover:text-danger\">\n <Icon name=\"delete\" size={14} /> Remove\n </button>\n </div>\n </div>\n );\n })}\n </div>\n )}\n\n {/* Scope modal */}\n {scopeKey !== null && activeKey && (\n <KeyScopeModal\n keyIndex={scopeKey}\n k={activeKey}\n fingerprint={activeKey.fingerprint}\n groups={groups}\n keyBudget={keyBudgets[activeKey.fingerprint]}\n onClose={() => setScopeKey(null)}\n onSave={() => { setScopeKey(null); void reload(); }}\n />\n )}\n\n {/* New key reveal modal */}\n {created && (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/60 p-6\" onClick={() => setCreated(null)}>\n <div className=\"w-full max-w-sm rounded-brand-lg border border-border bg-surface p-5 shadow-elevated\" onClick={(e) => e.stopPropagation()}>\n <h2 className=\"mb-2 text-[14px] font-semibold text-text\">Key created — copy it now</h2>\n <p className=\"mb-3 text-[12px] text-text-muted\">This is the only time the full key is shown.</p>\n <div className=\"flex items-center gap-2 rounded-brand bg-bg px-3 py-2\">\n <code className=\"flex-1 break-all text-[11.5px] text-text\">{created.key}</code>\n <button onClick={() => void navigator.clipboard.writeText(created.key)} className=\"text-text-subtle hover:text-text\"><Icon name=\"content_copy\" size={14} /></button>\n </div>\n <Button className=\"mt-4 w-full\" onClick={() => setCreated(null)}>Done</Button>\n </div>\n </div>\n )}\n\n {/* Delete confirm */}\n {pendingDel && (\n <ConfirmModal\n title=\"Remove key?\"\n message={`\"${pendingDel.label}\" will stop working immediately.`}\n confirmLabel=\"Remove\"\n busy={busy === `delkey${pendingDel.i}`}\n onConfirm={() => run(`delkey${pendingDel.i}`, async () => { const r = await adminApi.removeServerKey(pendingDel.i); if (r.ok) setPendingDel(null); return r; })}\n onCancel={() => setPendingDel(null)}\n />\n )}\n </div>\n );\n}\n\nfunction KeyRevealInline({ name, masked, reveal }: { name: string; masked: string; reveal: () => Promise<string | null> }) {\n const [real, setReal] = useState<string | null>(null);\n const [shown, setShown] = useState(false);\n const [loading, setLoading] = useState(false);\n const [copied, setCopied] = useState(false);\n\n async function toggle() {\n if (shown) { setShown(false); return; }\n if (real === null) {\n setLoading(true);\n const k = await reveal();\n setLoading(false);\n if (k === null) return;\n setReal(k);\n }\n setShown(true);\n }\n\n return (\n <div className=\"min-w-0\">\n <span className=\"flex items-center gap-1.5\">\n <span className=\"truncate text-[13.5px] font-semibold text-text\">{name}</span>\n <button\n onClick={toggle}\n disabled={loading}\n className=\"flex-none text-text-subtle transition-colors hover:text-text disabled:opacity-40\"\n aria-label={shown ? \"Hide key\" : \"Show key\"}\n title={shown ? \"Hide key\" : \"Show key\"}\n >\n <Icon name={loading ? \"hourglass_empty\" : shown ? \"visibility_off\" : \"visibility\"} size={14} />\n </button>\n </span>\n <span className={`flex items-center gap-1.5 text-[12px] text-text-subtle tnum ${shown ? \"break-all\" : \"\"}`}>\n <span className={shown ? \"\" : \"truncate\"}>{shown && real ? real : masked}</span>\n {shown && real && (\n <button\n onClick={() => { void navigator.clipboard.writeText(real); setCopied(true); setTimeout(() => setCopied(false), 1200); }}\n className=\"flex-none text-text-subtle hover:text-text\"\n title=\"Copy\"\n >\n <Icon name={copied ? \"check\" : \"content_copy\"} size={13} />\n </button>\n )}\n </span>\n </div>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { adminApi } from \"@/lib/client\";\nimport { Button, Input } from \"@/components/Button\";\nimport { Icon } from \"@/components/Icon\";\nimport { ModelPicker, type ModelGroup } from \"@/components/ModelPicker\";\nimport { fmt } from \"@/components/ui\";\nimport type { EndpointPayload } from \"@/lib/gateway\";\n\ntype ServerKey = EndpointPayload[\"keys\"][number];\n\nconst DAY_MS = 86_400_000;\nconst EXPIRY_MS: Record<\"24h\" | \"7day\" | \"30day\", number> = {\n \"24h\": DAY_MS,\n \"7day\": 7 * DAY_MS,\n \"30day\": 30 * DAY_MS,\n};\n\nconst pill = (active: boolean) =>\n `rounded-brand px-3 py-1.5 text-[13px] font-medium transition-colors ${\n active ? \"bg-accent/12 text-accent\" : \"bg-surface-2 text-text-muted hover:text-text\"\n }`;\n\nexport interface KeyScopeModalProps {\n keyIndex: number;\n k: ServerKey;\n fingerprint: string;\n groups: ModelGroup[];\n keyBudget: { limit: number; window: string } | undefined;\n onClose: () => void;\n onSave: () => void;\n}\n\nexport function KeyScopeModal({ keyIndex, k, fingerprint, groups, keyBudget, onClose, onSave }: KeyScopeModalProps) {\n const [keyName, setKeyName] = useState(k.name ?? \"\");\n const [scopeModels, setScopeModels] = useState<string[]>(k.models ?? []);\n const [scopeRpm, setScopeRpm] = useState(k.rpm ? String(k.rpm) : \"\");\n const [scopeExpiry, setScopeExpiry] = useState<\"keep\" | \"never\" | \"24h\" | \"7day\" | \"30day\" | \"custom\">(k.expires ? \"keep\" : \"never\");\n const [scopeCustomDays, setScopeCustomDays] = useState(\"\");\n const [scopeLimit, setScopeLimit] = useState(keyBudget ? String(keyBudget.limit) : \"\");\n const [scopeWindow, setScopeWindow] = useState<\"5h\" | \"24h\" | \"7day\" | \"30day\">((keyBudget?.window as \"5h\" | \"24h\" | \"7day\" | \"30day\") ?? \"30day\");\n const [pickerOpen, setPickerOpen] = useState(false);\n const [busy, setBusy] = useState(false);\n const [error, setError] = useState(\"\");\n\n async function save() {\n setBusy(true);\n setError(\"\");\n const trimmedName = keyName.trim();\n if (trimmedName !== (k.name ?? \"\")) {\n const rn = await adminApi.editServerKey(keyIndex, trimmedName);\n if (!rn.ok) { setError(rn.error ?? \"rename failed\"); setBusy(false); return; }\n }\n const expires =\n scopeExpiry === \"keep\" ? undefined\n : scopeExpiry === \"never\" ? null\n : scopeExpiry === \"custom\" ? (scopeCustomDays ? Date.now() + Number(scopeCustomDays) * DAY_MS : null)\n : Date.now() + EXPIRY_MS[scopeExpiry];\n const r = await adminApi.setServerKeyScope(keyIndex, {\n models: scopeModels,\n rpm: scopeRpm ? Number(scopeRpm) : null,\n expires,\n });\n if (!r.ok) { setError(r.error ?? \"save failed\"); setBusy(false); return; }\n const limit = scopeLimit ? Number(scopeLimit) : 0;\n if (limit > 0) {\n await adminApi.setBudget({ scope: { type: \"key\", id: fingerprint }, unit: \"usd\", limit, window: scopeWindow });\n } else if (keyBudget) {\n await adminApi.clearBudget(`key:${fingerprint}`);\n }\n setBusy(false);\n onSave();\n }\n\n return (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/60 p-6\" onClick={onClose}>\n <div\n className=\"w-full max-w-md rounded-brand-lg border border-border bg-surface p-5 shadow-elevated\"\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"mb-4 flex items-start justify-between gap-3\">\n <div>\n <h2 className=\"text-[14px] font-semibold text-text\">Edit key scope</h2>\n <p className=\"text-[11.5px] text-text-subtle font-mono mt-0.5\">{k.name ? `${k.name} · ` : \"\"}{k.key}</p>\n </div>\n <button onClick={onClose} className=\"text-text-subtle hover:text-text\"><Icon name=\"close\" size={17} /></button>\n </div>\n\n <div className=\"space-y-4\">\n {/* Name */}\n <div>\n <div className=\"mb-1.5 text-[11px] font-medium uppercase tracking-wider text-text-subtle\">Key name</div>\n <Input value={keyName} onChange={(e) => setKeyName(e.target.value)} placeholder=\"Unnamed key\" />\n </div>\n\n {/* Model allowlist */}\n <div>\n <div className=\"mb-1.5 text-[11px] font-medium uppercase tracking-wider text-text-subtle\">Allowed models</div>\n <div className=\"flex flex-wrap items-center gap-1.5\">\n {scopeModels.length === 0 ? (\n <span className=\"text-[12px] text-text-subtle\">All models (unrestricted)</span>\n ) : (\n scopeModels.map((m) => (\n <span key={m} className=\"inline-flex items-center gap-1 rounded border border-accent bg-accent-soft px-2 py-0.5 text-[12px] text-accent\">\n <span className=\"tnum\">{m}</span>\n <button onClick={() => setScopeModels((s) => s.filter((x) => x !== m))} className=\"hover:text-danger\"><Icon name=\"close\" size={12} /></button>\n </span>\n ))\n )}\n </div>\n <Button type=\"button\" variant=\"ghost\" className=\"mt-1.5\" onClick={() => setPickerOpen(true)}>\n <Icon name=\"add\" size={15} /> Pick models\n </Button>\n </div>\n\n {/* Rate limit */}\n <div>\n <div className=\"mb-1.5 text-[11px] font-medium uppercase tracking-wider text-text-subtle\">Rate limit</div>\n <div className=\"flex items-center gap-2\">\n <Input inputMode=\"numeric\" value={scopeRpm} onChange={(e) => setScopeRpm(e.target.value.replace(/[^\\d]/g, \"\"))} placeholder=\"req/min (blank = unlimited)\" className=\"flex-1\" />\n </div>\n </div>\n\n {/* Expiry */}\n <div>\n <div className=\"mb-1.5 text-[11px] font-medium uppercase tracking-wider text-text-subtle\">Access expiry</div>\n {k.expires && (\n <div className=\"mb-1.5 text-[11px] text-text-subtle\">\n currently {Date.now() > k.expires ? <span className=\"text-danger\">expired</span> : `expires ${fmt.date(k.expires)}`}\n </div>\n )}\n <div className=\"flex flex-wrap gap-1\">\n {(k.expires\n ? ([\"keep\", \"never\", \"24h\", \"7day\", \"30day\", \"custom\"] as const)\n : ([\"never\", \"24h\", \"7day\", \"30day\", \"custom\"] as const)\n ).map((opt) => (\n <button key={opt} type=\"button\" onClick={() => setScopeExpiry(opt)} className={pill(scopeExpiry === opt)}>\n {opt === \"never\" ? \"no expiry\" : opt}\n </button>\n ))}\n </div>\n {scopeExpiry === \"custom\" && (\n <div className=\"mt-1.5 flex items-center gap-1.5\">\n <Input inputMode=\"numeric\" value={scopeCustomDays} onChange={(e) => setScopeCustomDays(e.target.value.replace(/[^\\d]/g, \"\"))} placeholder=\"days\" className=\"w-24\" />\n <span className=\"text-[11px] text-text-subtle\">days from now</span>\n </div>\n )}\n </div>\n\n {/* Budget */}\n <div>\n <div className=\"mb-1.5 text-[11px] font-medium uppercase tracking-wider text-text-subtle\">Spend cap (USD)</div>\n <Input inputMode=\"decimal\" value={scopeLimit} onChange={(e) => setScopeLimit(e.target.value.replace(/[^\\d.]/g, \"\"))} placeholder=\"USD (blank = no cap)\" />\n {scopeLimit && (\n <div className=\"mt-1.5 flex items-center gap-1.5\">\n <span className=\"text-[11px] text-text-subtle\">resets every</span>\n {([\"5h\", \"24h\", \"7day\", \"30day\"] as const).map((w) => (\n <button key={w} type=\"button\" onClick={() => setScopeWindow(w)} className={pill(scopeWindow === w)}>{w}</button>\n ))}\n </div>\n )}\n </div>\n </div>\n\n {error && <p className=\"mt-3 text-[12px] text-danger\">{error}</p>}\n\n <div className=\"mt-5 flex gap-2\">\n <Button variant=\"ghost\" onClick={onClose} className=\"flex-none\">Cancel</Button>\n <Button disabled={busy} onClick={save} className=\"flex-1\">{busy ? \"Saving…\" : \"Save\"}</Button>\n </div>\n </div>\n\n {pickerOpen && (\n <ModelPicker\n groups={groups}\n selected={scopeModels}\n onToggle={(m) => { setScopeModels((s) => s.includes(m) ? s.filter((x) => x !== m) : [...s, m]); }}\n onClose={() => setPickerOpen(false)}\n />\n )}\n </div>\n );\n}\n"],"names":["DAY_MS","EXPIRY_MS","pill","active","KeyScopeModal","keyIndex","k","fingerprint","groups","keyBudget","onClose","onSave","keyName","setKeyName","name","scopeModels","setScopeModels","models","scopeRpm","setScopeRpm","rpm","String","scopeExpiry","setScopeExpiry","expires","scopeCustomDays","setScopeCustomDays","scopeLimit","setScopeLimit","limit","scopeWindow","setScopeWindow","window","pickerOpen","setPickerOpen","busy","setBusy","error","setError","save","trimmedName","trim","rn","editServerKey","ok","undefined","Date","now","Number","r","setServerKeyScope","setBudget","scope","type","id","unit","clearBudget","className","onClick","e","stopPropagation","key","size","value","onChange","target","placeholder","length","map","m","s","filter","x","variant","inputMode","replace","date","opt","w","disabled","selected","onToggle","includes"],"mappings":"wDAEA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OCFA,EAAA,EAAA,CAAA,CAAA,OAOA,IAAMC,EAAsD,CAC1D,OAAOD,KACP,OAAQ,IAAIA,GACZ,QAAS,KAAKA,CAChB,EAEME,EAAO,AAACC,GACZ,CAAC,oEAAoE,EACnEA,EAAS,2BAA6B,+CAAA,CACtC,CAYG,SAASC,EAAc,UAAEC,CAAQ,GAAEC,CAAC,aAAEC,CAAW,QAAEC,CAAM,WAAEC,CAAS,SAAEC,CAAO,CAAEC,QAAM,CAAsB,EAChH,GAAM,CAACC,EAASC,EAAW,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAACP,EAAEQ,IAAI,EAAI,IAC3C,CAACC,EAAaC,EAAe,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAWV,EAAEW,MAAM,EAAI,EAAE,EACjE,CAACC,EAAUC,EAAY,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAACb,EAAEc,GAAG,CAAGC,OAAOf,EAAEc,GAAG,EAAI,IAC3D,CAACE,EAAaC,EAAe,CAAG,CAAA,EAAA,EAAA,QAAQ,AAAR,EAAiEjB,EAAEkB,OAAO,CAAG,OAAS,SACtH,CAACC,EAAiBC,EAAmB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IACjD,CAACC,EAAYC,EAAc,CAAG,CAAA,EAAA,EAAA,QAAQ,AAAR,EAASnB,EAAYY,OAAOZ,EAAUoB,KAAK,EAAI,IAC7E,CAACC,EAAaC,EAAe,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAmCtB,GAAWuB,QAA8C,SACpI,CAACC,EAAYC,EAAc,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GACvC,CAACC,EAAMC,EAAQ,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GAC3B,CAACC,EAAOC,EAAS,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IAEnC,eAAeC,IACbH,GAAQ,GACRE,EAAS,IACT,IAAME,EAAc5B,EAAQ6B,IAAI,GAChC,GAAID,KAAiBlC,EAAEQ,IAAI,EAAI,EAAA,CAAE,AAAb,CAAgB,CAClC,IAAM4B,EAAK,MAAM,EAAA,QAAQ,CAACC,aAAa,CAACtC,EAAUmC,GAClD,GAAI,CAACE,EAAGE,EAAE,CAAE,CAAEN,EAASI,EAAGL,KAAK,EAAI,iBAAkBD,GAAQ,GAAQ,MAAQ,CAC/E,CACA,IAAMZ,EACY,SAAhBF,EAAyBuB,OACP,UAAhBvB,EAA0B,KACV,WAAhBA,EAA4BG,EAAkBqB,KAAKC,GAAG,GA7C/C,MA6CoDC,OAAOvB,GAA4B,KAC9FqB,KAAKC,GAAG,GAD6E/C,AACxEC,CAAS,CAACqB,EAAY,CACjC2B,EAAI,MAAM,EAAA,QAAQ,CAACC,iBAAiB,CAAC7C,EAAU,CACnDY,OAAQF,EACRK,IAAKF,EAAW8B,OAAO9B,GAAY,aACnCM,CACF,GACA,GAAI,CAACyB,EAAEL,EAAE,CAAE,CAAEN,EAASW,EAAEZ,KAAK,EAAI,eAAgBD,GAAQ,GAAQ,MAAQ,CACzE,IAAMP,EAAQF,EAAaqB,OAAOrB,GAAc,EAC5CE,EAAQ,EACV,CADa,KACP,EAAA,QAAQ,CAACsB,SAAS,CAAC,CAAEC,MAAO,CAAEC,KAAM,MAAOC,GAAI/C,CAAY,EAAGgD,KAAM,YAAO1B,EAAOG,OAAQF,CAAY,GACnGrB,GACT,MAAM,EAAA,AADc,QACN,CAAC+C,WAAW,CAAC,CAAC,IAAI,EAAEjD,EAAAA,CAAa,EAEjD6B,EAAQ,IACRzB,GACF,CAEA,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI8C,UAAU,sEAAsEC,QAAShD,YAC5F,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CACC+C,UAAU,uFACVC,QAAS,AAACC,GAAMA,EAAEC,eAAe,aAEjC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIH,UAAU,wDACb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACC,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGA,UAAU,+CAAsC,mBACpD,CAAA,EAAA,EAAA,IAAA,EAAC,IAAA,CAAEA,UAAU,4DAAmDnD,EAAEQ,IAAI,CAAG,CAAA,EAAGR,EAAEQ,IAAI,CAAC,MAAG,CAAC,CAAG,GAAIR,EAAEuD,GAAG,OAErG,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAOH,QAAShD,EAAS+C,UAAU,4CAAmC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,IAAI,CAAA,CAAC3C,KAAK,QAAQgD,KAAM,UAGlG,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIL,UAAU,sBAEb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACC,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIA,UAAU,oFAA2E,aAC1F,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAACM,MAAOnD,EAASoD,SAAU,AAACL,GAAM9C,EAAW8C,EAAEM,MAAM,CAACF,KAAK,EAAGG,YAAY,mBAIlF,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACC,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIT,UAAU,oFAA2E,mBAC1F,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIA,UAAU,+CACW,IAAvB1C,EAAYoD,MAAM,CACjB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKV,UAAU,wCAA+B,8BAE/C1C,EAAYqD,GAAG,CAAC,AAACC,GACf,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAaZ,UAAU,2HACtB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKA,UAAU,gBAAQY,IACxB,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAOX,QAAS,IAAM1C,EAAgBsD,AAAD,GAAOA,EAAEC,MAAM,CAAC,AAACC,GAAMA,IAAMH,IAAKZ,UAAU,6BAAoB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,IAAI,CAAA,CAAC3C,KAAK,QAAQgD,KAAM,SAFtHO,MAOjB,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,MAAM,CAAA,CAAChB,KAAK,SAASoB,QAAQ,QAAQhB,UAAU,SAASC,QAAS,IAAMxB,GAAc,aACpF,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,IAAI,CAAA,CAACpB,KAAK,MAAMgD,KAAM,KAAM,qBAKjC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACC,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIL,UAAU,oFAA2E,eAC1F,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIA,UAAU,mCACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAACiB,UAAU,UAAUX,MAAO7C,EAAU8C,SAAU,AAACL,GAAMxC,EAAYwC,EAAEM,MAAM,CAACF,KAAK,CAACY,OAAO,CAAC,SAAU,KAAMT,YAAY,8BAA8BT,UAAU,gBAKxK,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACC,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIA,UAAU,oFAA2E,kBACzFnD,EAAEkB,OAAO,EACR,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIiC,UAAU,gDAAsC,aACxCX,KAAKC,GAAG,GAAKzC,EAAEkB,OAAO,CAAG,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKiC,UAAU,uBAAc,YAAiB,CAAC,QAAQ,EAAE,EAAA,GAAG,CAACmB,IAAI,CAACtE,EAAEkB,OAAO,EAAA,CAAG,IAGvH,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIiC,UAAU,gCACZ,CAACnD,EAAEkB,OAAO,CACN,CAAC,OAAQ,QAAS,MAAO,OAAQ,QAAS,SAAS,CACnD,CAAC,QAAS,MAAO,OAAQ,QAAS,SACvC,EAAE4C,GAAG,CAAES,AAAD,GACJ,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAiBxB,KAAK,SAASK,QAAS,IAAMnC,EAAesD,GAAMpB,UAAWvD,EAAKoB,IAAgBuD,YACzF,UAARA,EAAkB,YAAcA,GADtBA,MAKhBvD,AAAgB,cACf,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAImC,UAAU,6CACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAACiB,UAAU,UAAUX,MAAOtC,EAAiBuC,SAAU,AAACL,GAAMjC,EAAmBiC,EAAEM,MAAM,CAACF,KAAK,CAACY,OAAO,CAAC,SAAU,KAAMT,YAAY,OAAOT,UAAU,SAC3J,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKA,UAAU,wCAA+B,wBAMrD,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACC,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIA,UAAU,oFAA2E,oBAC1F,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAACiB,UAAU,UAAUX,MAAOpC,EAAYqC,SAAU,AAACL,GAAM/B,EAAc+B,EAAEM,MAAM,CAACF,KAAK,CAACY,OAAO,CAAC,UAAW,KAAMT,YAAY,yBAChIvC,GACC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI8B,UAAU,6CACb,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKA,UAAU,wCAA+B,iBAC7C,CAAC,KAAM,MAAO,OAAQ,QAAQ,CAAWW,GAAG,CAAC,AAACU,GAC9C,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAezB,KAAK,SAASK,QAAS,IAAM3B,EAAe+C,GAAIrB,UAAWvD,EAAK4B,IAAgBgD,YAAKA,GAAxFA,aAOtBzC,GAAS,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEoB,UAAU,wCAAgCpB,IAEvD,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIoB,UAAU,4BACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAACgB,QAAQ,QAAQf,QAAShD,EAAS+C,UAAU,qBAAY,WAChE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAACsB,SAAU5C,EAAMuB,QAASnB,EAAMkB,UAAU,kBAAUtB,EAAO,UAAY,eAIjFF,GACC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,WAAW,CAAA,CACVzB,OAAQA,EACRwE,SAAUjE,EACVkE,SAAU,AAACZ,IAAQrD,EAAe,AAACsD,GAAMA,EAAEY,QAAQ,CAACb,GAAKC,EAAEC,MAAM,CAAEC,AAAD,GAAOA,IAAMH,GAAK,IAAIC,EAAGD,EAAE,CAAG,EAChG3D,QAAS,IAAMwB,GAAc,OAKvC,CDsBA,SAAS,EAAgB,MAAE,CAAI,QAAE,CAAM,QAAE,CAAM,CAA0E,EACvH,GAAM,CAAC,EAAM,EAAQ,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAgB,MAC1C,CAAC,EAAO,EAAS,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GAC7B,CAAC,EAAS,EAAW,CAAG,CAAA,EAAA,EAAA,QAAQ,AAAR,GAAS,GACjC,CAAC,EAAQ,EAAU,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GAErC,eAAe,IACb,GAAI,EAAO,YAAE,GAAS,GACtB,GAAa,OAAT,EAAe,CACjB,GAAW,GACX,IAAM,EAAI,MAAM,IAEhB,GADA,GAAW,GACD,OAAN,EAAY,OAChB,EAAQ,EACV,CACA,GAAS,EACX,CAEA,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oBACb,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,UAAU,sCACd,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,0DAAkD,IAClE,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACC,QAAS,EACT,SAAU,EACV,UAAU,mFACV,aAAY,EAAQ,WAAa,WACjC,MAAO,EAAQ,WAAa,oBAE5B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,IAAI,CAAA,CAAC,KAAM,EAAU,kBAAoB,EAAQ,iBAAmB,aAAc,KAAM,UAG7F,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,UAAW,CAAC,4DAA4D,EAAE,EAAQ,YAAc,GAAA,CAAI,WACxG,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAW,EAAQ,GAAK,oBAAa,GAAS,EAAO,EAAO,IACjE,GAAS,GACR,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACC,QAAS,KAAa,UAAU,SAAS,CAAC,SAAS,CAAC,GAAO,EAAU,IAAO,WAAW,IAAM,GAAU,GAAQ,KAAO,EACtH,UAAU,6CACV,MAAM,gBAEN,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,IAAI,CAAA,CAAC,KAAM,EAAS,QAAU,eAAgB,KAAM,YAMjE,qBAtOO,SAAS,EACd,GAAM,CAAC,EAAI,EAAM,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAyB,MAC/C,CAAC,EAAO,EAAS,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IAC7B,CAAC,EAAM,EAAQ,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IAC3B,CAAC,EAAS,EAAW,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IACjC,CAAC,EAAS,EAAW,CAAG,CAAA,EAAA,EAAA,QAAQ,AAAR,EAA+C,MACvE,CAAC,EAAY,EAAc,CAAG,CAAA,EAAA,EAAA,QAAQ,AAAR,EAA8C,MAC5E,CAAC,EAAU,EAAY,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAgB,MAClD,CAAC,EAAQ,EAAU,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAe,EAAE,EAC/C,CAAC,EAAY,EAAc,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAoD,CAAC,GAE3FV,EAAS,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,UACzB,IAAM,EAAI,MAAME,EAAAA,QAAQ,CAAC,QAAQ,EACjC,CAAK,EAAE,CAAH,CAAK,EAAE,AACX,EAAS,IACT,EAAM,EAAE,IAAI,GAFC,EAAS,EAAE,KAAK,EAAI,0BAGnCI,EAAG,EAAE,EA2BLc,eAAeK,EAAI,CAAa,CAAE,CAAkD,EAClF,EAAQ,GACR,IAAM,EAAI,MAAM,IAChB,EAAQ,IACH,EAAE,EAAE,EACF,EAAS,IAAK,MAAM,KADhB,EAAS,EAAEG,KAAK,EAAIC,gBAEjC,CAEA,eAAe,EAAO,CAAa,CAAE,CAAc,EACjD,IAAM,EAAO,CAAC,GAAS,aAAA,CAAa,CAAE,IAAI,GAC1C,GAAI,GAAM,EAAG1C,IAAI,CAAC,IAAI,CAAC,AAAC,GAAM,EAAE,IAAI,GAAK,GAAO8C,YAC9C,EAAS,CAAC,UAAU,EAAE,EAAK,gBAAgB,CAAC,EAG9C,EAAQ,UACR,IAAM,EAAI,MAAMA,EAAAA,QAAQ,CAAC,YAAY,CAAC,EAAQ,EAE9C,EADA,EACI,AADI,IACH,EAAE,EAAE,EAAE,CACX,EAAS,IACT,EAAW,IACX,EAAW,CAAE,IAAK,EAAQ,MAAK,GAC/B,MAAM,KAJO,EAAS,EAAE,KAAK,EAAI,oBAKnC,CAEA,GAjDA,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACH,IACA,CAAC,UACJ,GAAI,CACF,IAAM,EAAM,MAAM,MAAM,wBACxB,GAAI,CAAC,EAAI,EAAE,CAAEvB,OACb,IAAM,EAAO,MAAM,EAAI,IAAIC,GACrB,EAAqB,EAAE,CAE7B,IAAK,IAAM,KADP,EAAI,MAAM,CAAC,MAAM,EAAE,EAAK,IAAI,CAAC,CAAE,MAAO,SAAU,MAAO,EAAI,MAAM,CAAC,GAAG,CAAE,AAAD,IAAO,AAACK,CAAE,MAAO,EAAE,KAAK,CAAE,MAAO,EAAE,KAAK,CAAC,CAAC,CAAG,GACvG,EAAI,SAAS,CAAE,CACzB,EAAE,MAAMG,CAAC,MAAM,EAAE,EAAKtC,IAAI,CAAC,CAAE,MAAO,EAAE,EAAE,CAAE,MAAO,EAAE,MAAMqC,CAAC,GAAG,CAAC,AAAC,IAAM,AAAC,CAAE,MAAO,CAAA,EAAG,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAA,CAAE,CAAE,MAAON,CAAAA,EAAG,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAA,CAAE,CAAC,CAAC,CAAG,GAErI,EAAU,EACZ,CAAE,KAAM,CAAqB,EAC/B,CAAC,GACI,EAAA,QAAQ,CAAC,OAAO,GAAG,IAAId,CAAC,AAAC,IAC5B,GAAI,CAAC,EAAE,EAAE,EAAI,CAAC,EAAE,IAAI,CAAE,OACtB,IAAM,EAAyD,CAAC,EAChE,IAAK,IAAM,KAAK,EAAE,IAAI,CAAC,OAAO2B,CAAE,AACT,QAAjB,EAAE,KAAK,CAAC,IAAI,GAAY,CAAG,CAAC,EAAE,KAAK,CAAC,EAAE,CAAChC,CAAG,CAAE,MAAO,EAAE,KAAK,CAAE,OAAQ,EAAE,MAAM,CAAC,EAEnF,EAAc,EAChB,EACF,EAAG,CAAC,EAAO,EA0BP,CAAC,EAAI,MAAO,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,UAAC,aAEvB,IAAM,EAAyB,OAAb,EAAoB,EAAG,IAAI,CAAC,EAAS,CAAG,KAE1D,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,yDACb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACC,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,8DAAqD,gBACnE,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,4CAAmC,+EAElD,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oCACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC,MAAO,EAAS,SAAU,AAAC,GAAM,EAAW,EAAE,MAAM,CAAC,KAAK,EAAG,YAAY,0BAA0B,UAAUiD,SACpH,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,MAAM,CAAA,CAAC,SAAmB,WAAT,EAAmB,QAAS,KArFtD,aAqF4D,EAAO,GArF7D,EAAQ,IAAI,AAqF0D,WArF/C,IAC7B,OAAO,eAAe,CAAC,GAChB,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,EAAO,AAAC,GAAM,EAAE,QAAQ,CAAC,IAAI,QAAQ,CAAC,EAAG,MAAM,IAAI,CAAC,IAAA,CAAK,IAmFU,UAAUT,8BAC5F,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,IAAI,CAAA,CAAC,KAAK,MAAM,KAAM,KAAgB,WAAT,EAAoB,UAAY,mBAKnE,GACC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,+IACb,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAM,IACP,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAO,QAAS,IAAM,EAASA,IAAK,UAAU,2BAAkB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,IAAI,CAAA,CAAC,KAAK,QAAQ,KAAM,UAI1E,IAAnB,EAAG,IAAI,CAAC,MAAM,CACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,UAAC,gEAEP,CAAA,EAAA,EAAA,GAAA,EAACa,MAAAA,CAAI,UAAU,oDACZxD,EAAG,IAAI,CAAC,GAAG,CAAC,CAACgD,EAAG,KACf,GAAI,GAAW,CAAC,CAAC,EAAE,IAAI,EAAI,EAAA,CAAE,CAAE,WAAW,GAAG,QAAQ,CAAC,EAAQ,WAAW,KAAO,CAAC,EAAE,GAAG,CAAC,WAAW,GAAG,QAAQ,CAAC,EAAQ,WAAW,IAAK,OAAO,KAC7I,IAAM,EAAU,CAAC,CAAC,EAAE,OAAO,EAAI,KAAK,GAAG,GAAK,EAAE,OAAO,CAC/C,EAAS,CAAU,CAAC,EAAE,WAAW,CAAC,CACxC,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAEC,UAAW,CAAC,2EAA2E,EACrF,EAAU,8BAAgC,yCAAA,CAC1C,WAGFI,CAAAA,EAAAA,EAAAA,IAAAA,EAAC,MAAA,CAAI,UAAU,mDACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CACC,KAAM,EAAE,IAAI,EAAI,cAChB,OAAQ,EAAE,GAAG,CACb,OAAQ,UAAc,IAAM,EAAI,MAAM,EAAA,QAAQ,CAAC,eAAe,CAAC,GAAI,OAAO,EAAE,EAAE,CAAG1C,EAAE,IAAI,EAAE,KAAO,KAAO,IAAM,IAE/G,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC,KAAM,EAAU,SAAW,gBAASuB,EAAUvB,UAAY,cAInE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,wCACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC,KAAM,EAAE,MAAM,EAAE,OAAS,OAAS,mBAAY,EAAE,MAAM,EAAE,OAAS,CAAA,EAAG,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,CAAG,EAAI,IAAM,GAAA,CAAI,CAAG,eACrI,EAAE,GAAG,EAAI,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,KAAK,CAAA,CAAC,KAAK,oBAAW,EAAE,GAAG,CAAC,UACtC,GAAU,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,KAAK,CAAA,CAAC,KAAK,iBAAO,IAAE,EAAO,KAAKD,CAAC,IAAE,EAAO,MAAM,IAC3D,EAAE,OAAO,EAAI,CAAC,GAAW,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,KAAK,CAAA,CAAC,KAAK,oBAAU,WAAS,EAAA,GAAG,CAAC,IAAI,CAACsD,EAAE,OAAO,QAI7E,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,yCACb,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CAAO,QAAS,KAAQ,EAAY,EAAIH,EAAG,UAAU,mKACpD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,IAAI,CAAA,CAAC,KAAK,OAAO,KAAM,KAAM,WAEhC,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CAAO,QAAS,IAAM,EAAc,GAAE,EAAG,MAAO,EAAE,IAAI,EAAI,EAAE,GAAG,AAAC,GAAI,UAAU,mKAC7E,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,IAAI,CAAA,CAAC,KAAK,SAAS,KAAM,KAAM,kBA7B/B,EAkCX,KAKU,OAAb,GAAqB,GACpB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CACC,SAAU,EACV,EAAG,EACH,YAAa,EAAU,WAAW,CAClC,OAAQ,EACR,UAAW,CAAU,CAAC,EAAU,WAAWjB,CAAC,CAC5C,QAAS,IAAM,EAAY,MAC3B,OAAQ,KAAQ,EAAY,MAAY,GAAU,IAKrD,GACC,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,sEAAsE,QAAS,IAAM,EAAW,eAC7G,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,uFAAuF,QAAS,AAAC,GAAM,EAAE,eAAe,aACrI,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAUxB,oDAA2C,8BACzD,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,4CAAmC,iDAChDoC,CAAAA,EAAAA,EAAAA,IAAAA,EAAC,MAAA,CAAI,UAAU,kEACb,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,oDAA4C,EAAQ,GAAG,GACvE,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAO,QAAS,IAAM,KAAK,UAAU,SAAS,CAAC,SAAS,CAAC,EAAQ,GAAG,EAAG,UAAU,4CAAmC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,IAAI,CAAA,CAAC,KAAK,eAAe,KAAM,UAEvJ,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,UAAU,cAAc,QAAS,IAAM,EAAW,eAAO,cAMtE,GACC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,YAAY,CAAA,CACX,MAAM,cACN,QAAS,CAAC,CAAC,EAAE,EAAW,KAAK,CAAC,gCAAgC,CAAC,CAC/D,aAAa,SACb,KAAM,IAAS,CAAC,MAAM,EAAE,EAAW,CAAC,CAAA,CAAE,CACtC,UAAW,IAAM,EAAI,CAAC,MAAM,EAAE,EAAW,CAAC,CAAA,CAAE,CAAE,UAAc,IAAM,EAAI,MAAM,EAAA,QAAQ,CAAC,eAAe,CAAC,EAAW,CAAC,EAAkC,OAA3B,EAAE,EAAE,EAAE,EAAc,MAAc,CAAG,GAC7J,SAAU,IAAM,EAAc,UAKxC"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[33410,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(50944),e=a.i(56173),f=a.i(47153),g=a.i(2693),h=a.i(2799),i=a.i(85732),j=a.i(7078),k=a.i(93026),l=a.i(58918);function m({checked:a,indeterminate:c,onChange:d,className:e,ariaLabel:f}){let g=a||c;return(0,b.jsx)("button",{type:"button",role:"checkbox","aria-checked":c?"mixed":a,"aria-label":f,onClick:a=>{a.stopPropagation(),d()},className:`flex h-[18px] w-[18px] flex-none items-center justify-center rounded-[5px] border transition-colors ${g?"border-accent bg-accent text-accent-ink":"border-border bg-bg text-transparent hover:border-text-subtle"}${e?` ${e}`:""}`,children:(0,b.jsx)(k.Icon,{name:c?"remove":"check",size:13})})}function n({models:a,busy:d,onAdd:e,onClose:f}){let[g,h]=(0,c.useState)(""),[i,l]=(0,c.useState)(()=>new Set(a.filter(a=>!a.added).map(a=>a.id))),o=(0,c.useMemo)(()=>{let b=g.trim().toLowerCase();return b?a.filter(a=>a.id.toLowerCase().includes(b)):a},[a,g]);function p(a){l(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})}let q=o.filter(a=>i.has(a.id)).length,r=o.length>0&&q===o.length;function s(){l(a=>{let b=new Set(a);return r?o.forEach(a=>b.delete(a.id)):o.forEach(a=>b.add(a.id)),b})}return(0,b.jsx)("div",{className:"fixed inset-0 z-50 grid place-items-center bg-black/50 p-6",onClick:f,children:(0,b.jsxs)("div",{className:"flex max-h-[80vh] w-full max-w-[480px] flex-col overflow-hidden rounded-brand-lg border border-border bg-surface shadow-elevated",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("header",{className:"flex items-center justify-between border-b border-border-subtle px-4 py-3",children:[(0,b.jsxs)("span",{className:"text-[14px] font-semibold text-text",children:[a.length," models found"]}),(0,b.jsx)("button",{onClick:f,className:"text-text-subtle hover:text-text","aria-label":"Close",children:(0,b.jsx)(k.Icon,{name:"close",size:18})})]}),(0,b.jsx)("div",{className:"border-b border-border-subtle px-4 py-2.5",children:(0,b.jsx)(j.Input,{value:g,onChange:a=>h(a.target.value),placeholder:"filter…",autoFocus:!0})}),o.length>0&&(0,b.jsxs)("button",{onClick:s,className:"flex items-center gap-2.5 border-b border-border-subtle px-4 py-2 text-left hover:bg-surface-2",children:[(0,b.jsx)(m,{checked:r,indeterminate:q>0&&!r,onChange:s,ariaLabel:"Select all"}),(0,b.jsxs)("span",{className:"text-[12.5px] font-medium text-text",children:["Select all",g?" (filtered)":""]}),(0,b.jsxs)("span",{className:"ml-auto tnum text-[11px] text-text-subtle",children:[q,"/",o.length]})]}),(0,b.jsx)("div",{className:"flex-1 overflow-y-auto px-2 py-2",children:0===o.length?(0,b.jsx)("div",{className:"px-2 py-6 text-center text-[13px] text-text-muted",children:"No matches."}):o.map(a=>{let c=i.has(a.id);return(0,b.jsxs)("button",{onClick:()=>p(a.id),className:`flex w-full items-center gap-2.5 rounded-brand border px-2.5 py-2 text-left transition-colors ${c?"border-accent/40 bg-accent-soft":"border-transparent hover:bg-surface-2"}`,children:[(0,b.jsx)(m,{checked:c,onChange:()=>p(a.id),ariaLabel:a.id}),(0,b.jsx)("span",{className:"flex-1 truncate text-[12.5px] text-text",children:a.id}),a.added&&(0,b.jsx)("span",{className:"text-[11px] text-text-subtle",children:"in catalog"})]},a.id)})}),(0,b.jsxs)("footer",{className:"flex items-center justify-between gap-3 border-t border-border-subtle bg-bg-alt px-4 py-2.5",children:[(0,b.jsxs)("span",{className:"tnum text-[12px] text-text-muted",children:[i.size," selected"]}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)(j.Button,{variant:"ghost",onClick:f,children:"Cancel"}),(0,b.jsx)(j.Button,{disabled:0===i.size||d,onClick:()=>e([...i]),children:d?"Adding…":`Add ${i.size}`})]})]})]})})}var o=a.i(52065),p=a.i(73858);function q({k:a,v:c}){return(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,b.jsx)("span",{className:"text-text-subtle",children:a}),(0,b.jsx)("span",{className:"truncate text-text",children:c})]})}a.s(["ProviderDetail",0,function({id:a}){let m=(0,d.useRouter)(),[r,s]=(0,c.useState)(null),[t,u]=(0,c.useState)(null),[v,w]=(0,c.useState)(""),[x,y]=(0,c.useState)(null),[z,A]=(0,c.useState)(""),[B,C]=(0,c.useState)(""),[D,E]=(0,c.useState)(""),[F,G]=(0,c.useState)(null),[H,I]=(0,c.useState)(""),[J,K]=(0,c.useState)(""),[L,M]=(0,c.useState)(""),[N,O]=(0,c.useState)(""),[P,Q]=(0,c.useState)(null),[R,S]=(0,c.useState)({}),[T,U]=(0,c.useState)({}),[V,W]=(0,c.useState)(!1),[X,Y]=(0,c.useState)(null),Z=(0,c.useRef)(!1),[$,_]=(0,c.useState)(!1),[aa,ab]=(0,c.useState)(""),[ac,ad]=(0,c.useState)(""),[ae,af]=(0,c.useState)(""),[ag,ah]=(0,c.useState)({}),[ai,aj]=(0,c.useState)(!1);async function ak(b){S(a=>({...a,[b]:"testing"}));let c=await e.adminApi.testModel(a,b);S(a=>({...a,[b]:c.ok&&c.data?.ok?"ok":"fail"}))}async function al(b){U(a=>({...a,[b]:"testing"}));let c=await e.adminApi.testKey(a,b);U(a=>({...a,[b]:c.data??{ok:!1,reachable:!1,status:0,error:c.error}}))}async function am(b){Z.current=!1,W(!0),Y(null),U({});let c=0,d=0;for(let f=0;f<b&&!Z.current;f++){U(a=>({...a,[f]:"testing"}));let g=await e.adminApi.testKey(a,f),h=g.data??{ok:!1,reachable:!1,status:0,error:g.error};U(a=>({...a,[f]:h})),h.ok?c++:d++,f<b-1&&!Z.current&&await new Promise(a=>setTimeout(a,500))}W(!1),Y({total:b,passed:c,failed:d})}let an=(0,c.useCallback)(async()=>{let[b,c]=await Promise.all([fetch("/api/gw/admin/config"),e.adminApi.providers()]);if(!b.ok)return void w("could not reach the gateway");let d=(await b.json()).providers.find(b=>b.id===a)??null;d?(w(""),s(d),u(c.data?.providers.find(b=>b.id===a)??null)):w(`provider "${a}" not found`)},[a]);if((0,c.useEffect)(()=>{an()},[an]),v)return(0,b.jsx)(l.Empty,{children:v});if(!r)return(0,b.jsx)(l.Empty,{children:"Loading…"});let ao=r.api_keys??(r.api_key?[r.api_key]:[]),ap=N.trim().toLowerCase(),aq=ap?r.models.filter(a=>a.id.toLowerCase().includes(ap)):r.models;async function ar(a,b){A(a);let c=await b();A(""),c.ok?(w(""),await an()):w(c.error??"action failed")}return(0,b.jsxs)("div",{children:[(0,b.jsxs)("button",{onClick:()=>m.push("/providers"),className:"mb-4 inline-flex items-center gap-1 text-[12px] text-text-muted hover:text-text",children:[(0,b.jsx)(k.Icon,{name:"arrow_back",size:15})," Providers"]}),(0,b.jsxs)("div",{className:"mb-6 flex items-center gap-3",children:[(0,b.jsx)(f.Lamp,{state:r.disabled?"idle":t?.keys.some(a=>a.healthy)??!0?"live":"down"}),(0,b.jsxs)("div",{children:[(0,b.jsx)("h1",{className:"text-[22px] font-semibold tracking-tight text-text",children:r.name||r.id}),r.name&&(0,b.jsxs)("span",{className:"text-[12px] text-text-subtle",children:[r.id,"/"]})]}),(0,b.jsx)(g.FormatBadge,{format:r.format}),r.free&&(0,b.jsx)(g.Badge,{tone:"info",children:"free"}),r.service_account&&(0,b.jsx)(g.Badge,{tone:"info",children:"service-account"}),r.disabled&&(0,b.jsx)(g.Badge,{tone:"down",children:"disabled"})]}),(0,b.jsxs)("div",{className:`grid gap-4 lg:grid-cols-2 transition-opacity ${r.disabled?"opacity-50":""}`,children:[(0,b.jsx)(i.RichCard,{header:(0,b.jsx)(i.CardTitle,{title:"Connection"}),children:$?(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsx)(j.Field,{label:"Label",hint:"display name in dashboard (optional, does not affect routing)",children:(0,b.jsx)(j.Input,{value:ae,onChange:a=>af(a.target.value),placeholder:ac||"e.g. My Provider",className:"text-[12.5px]"})}),(0,b.jsx)(j.Field,{label:"ID / Prefix",hint:"the call prefix (id/model) — changing this breaks CLI tools",children:(0,b.jsx)(j.Input,{value:ac,onChange:a=>ad(a.target.value),placeholder:"e.g. openai",className:"font-mono text-[12.5px]"})}),ac.trim()&&ac.trim()!==a&&(0,b.jsxs)("p",{className:"flex items-start gap-1.5 rounded-brand border border-warning/40 bg-warning/8 px-2.5 py-2 text-[11.5px] text-warning",children:[(0,b.jsx)(k.Icon,{name:"warning",size:14,className:"mt-0.5 flex-none"}),(0,b.jsxs)("span",{children:["Renaming rewrites the call string. CLI tools pointing at"," ",(0,b.jsxs)("code",{className:"tnum",children:[a,"/…"]})," will break until repointed; combos that target it are updated automatically."]})]}),(0,b.jsx)(j.Field,{label:"Base URL",children:(0,b.jsx)(j.Input,{value:aa,onChange:a=>ab(a.target.value),placeholder:"https://...",className:"font-mono text-[12.5px]"})}),(0,b.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,b.jsx)(j.Button,{variant:"ghost",onClick:()=>_(!1),children:"Cancel"}),(0,b.jsx)(j.Button,{disabled:"editconn"===z,onClick:()=>ar("editconn",async()=>{let b=ac.trim(),c=a;if(b&&b!==a){let d=await e.adminApi.renameProvider(a,b);if(!d.ok)return d;c=b}let d=ae.trim()||void 0,f=await e.adminApi.editProvider(c,{base_url:aa.trim()||void 0,name:d});return f.ok&&(_(!1),c!==a&&m.push(`/providers/${encodeURIComponent(c)}`)),f}),children:"Save"})]})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"space-y-2 text-[13px]",children:[r.name&&(0,b.jsx)(q,{k:"Label",v:r.name}),(0,b.jsx)(q,{k:"ID / Prefix",v:r.id}),(0,b.jsx)(q,{k:"Base URL",v:r.base_url}),(0,b.jsx)(q,{k:"Format",v:r.format}),(0,b.jsx)(q,{k:"Cooldown base",v:`${r.cooldown_base_ms}ms`}),(0,b.jsx)(q,{k:"Max retries",v:String(r.max_retries)})]}),(0,b.jsxs)("div",{className:"mt-4 flex items-center gap-2",children:[(0,b.jsxs)(j.Button,{variant:"ghost",onClick:()=>{_(!0),ab(r.base_url),ad(r.id),af(r.name??"")},children:[(0,b.jsx)(k.Icon,{name:"edit",size:15})," Edit"]}),(0,b.jsxs)(j.Button,{variant:"ghost",disabled:"test"===z,onClick:()=>ar("test",async()=>{let b=await e.adminApi.testProvider(a);return b.ok&&y(b.data),b}),children:[(0,b.jsx)(k.Icon,{name:"wifi_tethering",size:16})," ","test"===z?"Testing…":"Test connection"]}),(0,b.jsxs)(j.Button,{variant:"ghost",disabled:"discover"===z,onClick:()=>ar("discover",async()=>{let b=await e.adminApi.discoverModels(a);return b.ok&&Q(b.data?.models??[]),b}),children:[(0,b.jsx)(k.Icon,{name:"sync",size:16})," ","discover"===z?"Fetching…":"Fetch models"]})]}),x&&(0,b.jsxs)("div",{className:"mt-3 text-[12px]",children:[(0,b.jsx)(g.Badge,{tone:x.ok?"live":x.reachable?"warn":"down",children:x.ok?`ok (${x.status})`:x.reachable?`reachable (${x.status})`:"unreachable"}),x.error&&(0,b.jsx)("span",{className:"ml-2 text-text-subtle",children:x.error})]})]})}),(0,b.jsxs)(i.RichCard,{header:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(i.CardTitle,{title:"Keys",sub:`${ao.length} configured`}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[ao.length>1&&(0,b.jsxs)(j.Button,{variant:"ghost",disabled:V,onClick:()=>am(ao.length),children:[(0,b.jsx)(k.Icon,{name:V?"progress_activity":"sync",size:15}),V?"Testing…":"Test All"]}),V&&(0,b.jsxs)(j.Button,{variant:"ghost",onClick:()=>{Z.current=!0},children:[(0,b.jsx)(k.Icon,{name:"stop",size:15})," Stop"]}),(0,b.jsx)("span",{className:"text-[11px] text-text-subtle",children:"Round Robin"}),(0,b.jsx)("button",{onClick:()=>{let b="round-robin"===r.strategy?null:"round-robin";e.adminApi.setProviderStrategy(a,b,r.sticky??1).then(()=>an())},className:`relative h-5 w-9 rounded-full transition-colors ${"round-robin"===r.strategy?"bg-accent":"bg-border-subtle"}`,"aria-label":"Toggle round-robin",children:(0,b.jsx)("span",{className:`absolute left-0.5 top-0.5 h-4 w-4 rounded-full bg-white transition-transform ${"round-robin"===r.strategy?"translate-x-[18px]":"translate-x-0"}`})}),"round-robin"===r.strategy&&(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)("span",{className:"text-[11px] text-text-subtle",children:"Sticky:"}),(0,b.jsxs)("div",{className:"flex items-center rounded-brand border border-border-subtle",children:[(0,b.jsx)("button",{type:"button",disabled:(r.sticky??1)<=1,onClick:()=>void e.adminApi.setProviderStrategy(a,"round-robin",Math.max(1,(r.sticky??1)-1)).then(()=>an()),className:"px-1.5 py-0.5 text-text-subtle transition-colors hover:text-text disabled:opacity-30","aria-label":"Decrease sticky",children:(0,b.jsx)(k.Icon,{name:"remove",size:13})}),(0,b.jsx)("span",{className:"tnum w-6 text-center text-[11px] text-text",children:r.sticky??1}),(0,b.jsx)("button",{type:"button",onClick:()=>void e.adminApi.setProviderStrategy(a,"round-robin",(r.sticky??1)+1).then(()=>an()),className:"px-1.5 py-0.5 text-text-subtle transition-colors hover:text-text","aria-label":"Increase sticky",children:(0,b.jsx)(k.Icon,{name:"add",size:13})})]})]})]})]}),children:[X&&(0,b.jsx)("div",{className:"mb-3 flex items-center gap-2 text-[11.5px]",children:(0,b.jsxs)(g.Badge,{tone:0===X.failed?"live":"warn",children:[X.total," tested: ",X.passed," valid, ",X.failed," failed"]})}),0===ao.length?(0,b.jsx)(l.Empty,{children:"No keys (free / service-account provider)."}):(0,b.jsx)("div",{className:"space-y-1.5",children:ao.map((c,d)=>{let i=t?.keys[d],l=T[d],m=l&&"testing"!==l?l:null,n=m?m.ok?"live":m.reachable?"idle":"down":i?i.healthy?"live":"down":"idle",o=r.key_names?.[c],p=r.disabled_keys?.includes(d)??!1;return F===d?(0,b.jsxs)("div",{className:"space-y-2 rounded-brand border border-accent bg-accent-soft/40 px-3 py-2.5",children:[(0,b.jsx)(j.Input,{value:H,onChange:a=>I(a.target.value),placeholder:"key name (optional)"}),(0,b.jsx)(j.Input,{value:J,onChange:a=>K(a.target.value),placeholder:"new key value (leave blank to keep)",className:"font-mono text-[12.5px]"}),(0,b.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,b.jsx)(j.Button,{variant:"ghost",onClick:()=>G(null),children:"Cancel"}),(0,b.jsx)(j.Button,{disabled:z===`editkey${d}`,onClick:()=>ar(`editkey${d}`,async()=>{let b=await e.adminApi.editKey(a,d,{name:H,key:J.trim()||void 0});return b.ok&&G(null),b}),children:"Save"})]})]},d):(0,b.jsxs)("div",{className:`rounded-brand border border-border-subtle px-3 py-2${p?" opacity-60":""}`,children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)("div",{className:"flex flex-col",children:[(0,b.jsx)("button",{onClick:()=>ar(`reorder${d}up`,()=>e.adminApi.reorderKey(a,d,d-1)),disabled:0===d,className:"p-0.5 text-text-subtle hover:text-text disabled:opacity-30","aria-label":"Move up",children:(0,b.jsx)(k.Icon,{name:"keyboard_arrow_up",size:14})}),(0,b.jsx)("button",{onClick:()=>ar(`reorder${d}dn`,()=>e.adminApi.reorderKey(a,d,d+1)),disabled:d===ao.length-1,className:"p-0.5 text-text-subtle hover:text-text disabled:opacity-30","aria-label":"Move down",children:(0,b.jsx)(k.Icon,{name:"keyboard_arrow_down",size:14})})]}),(0,b.jsx)(f.Lamp,{state:n}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[o&&(0,b.jsx)("div",{className:"text-[12px] font-semibold text-text-muted",children:o}),(0,b.jsx)("span",{className:"block truncate font-mono text-[12.5px] text-text",children:ag[d]??c})]}),ag[d]&&(0,b.jsx)("button",{onClick:()=>{navigator.clipboard.writeText(ag[d])},className:"flex-none rounded p-1 text-text-subtle transition-colors hover:text-text","aria-label":"Copy key",title:"Copy to clipboard",children:(0,b.jsx)(k.Icon,{name:"content_copy",size:14})}),i&&i.cooldown_ms>0&&(0,b.jsx)(h.CooldownTimer,{ms:i.cooldown_ms}),(0,b.jsx)("button",{onClick:async()=>{if(ag[d])return void ah(a=>{let b={...a};return delete b[d],b});let b=await e.adminApi.revealKey(a,d);b.ok&&b.data?.key&&ah(a=>({...a,[d]:b.data.key}))},className:"flex-none rounded p-1 text-text-subtle transition-colors hover:text-text","aria-label":ag[d]?"Hide key":"Show key",title:ag[d]?"Hide key":"Show key",children:(0,b.jsx)(k.Icon,{name:ag[d]?"visibility_off":"visibility",size:15})}),(0,b.jsx)("button",{onClick:()=>ar(`toggle${d}`,()=>e.adminApi.toggleKey(a,d,p)),className:"flex-none rounded p-1 text-text-subtle transition-colors hover:text-text","aria-label":p?"Enable key":"Disable key",title:p?"Enable this key":"Disable this key",children:(0,b.jsx)(k.Icon,{name:p?"toggle_off":"toggle_on",size:20,className:p?"text-text-subtle":"text-success"})}),(0,b.jsx)("button",{onClick:()=>al(d),disabled:"testing"===l,className:"flex-none rounded p-1 text-text-subtle transition-colors hover:text-text disabled:opacity-60","aria-label":`Check key ${d+1}`,title:"Check this key against the base URL",children:(0,b.jsx)(k.Icon,{name:"testing"===l?"progress_activity":"wifi_tethering",size:15})}),(0,b.jsx)("button",{onClick:()=>{G(d),I(o??""),K("")},className:"flex-none rounded p-1 text-text-subtle transition-colors hover:text-text","aria-label":`Edit key ${d+1}`,title:"Rename or replace this key",children:(0,b.jsx)(k.Icon,{name:"edit",size:15})}),(0,b.jsx)("button",{onClick:()=>ar(`rmkey${d}`,()=>e.adminApi.removeKey(a,d)),className:"flex-none rounded p-1 text-text-subtle transition-colors hover:text-danger","aria-label":"Remove key",children:(0,b.jsx)(k.Icon,{name:"delete",size:15})})]}),m&&(0,b.jsxs)("div",{className:"mt-1.5 flex items-center gap-2 pl-8 text-[11.5px]",children:[(0,b.jsx)(g.Badge,{tone:m.ok?"live":m.reachable?"warn":"down",children:m.ok?"valid":m.reachable?`reachable (${m.status})`:"invalid"}),m.error&&(0,b.jsx)("span",{className:"truncate text-danger",children:m.error})]}),!m&&i?.last_error&&(0,b.jsxs)("div",{className:"mt-1.5 flex items-center gap-2 pl-8 text-[11.5px]",children:[(0,b.jsxs)("span",{className:"text-danger",children:[i.last_error.status?`${i.last_error.status}: `:"",i.last_error.message]}),(0,b.jsx)("span",{className:"text-text-subtle",children:new Date(i.last_error.at).toLocaleTimeString()})]})]},d)})}),(0,b.jsxs)("div",{className:"mt-3 space-y-2",children:[(0,b.jsx)(j.Input,{value:D,onChange:a=>E(a.target.value),placeholder:"key name (optional, e.g. primary)"}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)(j.Input,{value:B,onChange:a=>C(a.target.value),placeholder:"add a key…",className:"font-mono text-[12.5px]"}),(0,b.jsx)(j.Button,{disabled:!B||"addkey"===z,onClick:()=>ar("addkey",async()=>{let b=await e.adminApi.addKey(a,B,D.trim()||void 0);return b.ok&&(C(""),E("")),b}),children:"Add"})]})]})]}),(0,b.jsxs)(i.RichCard,{className:"lg:col-span-2",header:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(i.CardTitle,{title:"Models served",sub:`${r.models.length} in catalog`}),r.models.length>0&&(0,b.jsx)("button",{onClick:()=>ar("clear",()=>e.adminApi.clearModels(a)),disabled:"clear"===z,className:"text-[12px] text-text-subtle hover:text-danger",children:"Clear all"})]}),children:[0===r.models.length?(0,b.jsx)(l.Empty,{children:"No models. Add one below, or fetch them for a free/auto provider."}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("p",{className:"mb-2.5 text-[12px] text-text-subtle",children:["Call any of these as ",(0,b.jsxs)("span",{className:"tnum text-text-muted",children:[r.id,"/<model>"]}),", as a combo alias, or by the bare id."]}),r.models.length>8&&(0,b.jsxs)("div",{className:"mb-2.5 flex items-center gap-2",children:[(0,b.jsxs)("div",{className:"relative flex-1",children:[(0,b.jsx)(k.Icon,{name:"search",size:15,className:"pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-text-subtle"}),(0,b.jsx)(j.Input,{value:N,onChange:a=>O(a.target.value),placeholder:"filter models…",className:"pl-8"})]}),(0,b.jsx)("span",{className:"tnum whitespace-nowrap text-[12px] text-text-subtle",children:ap?`${aq.length} of ${r.models.length}`:`${r.models.length}`})]}),0===aq.length?(0,b.jsxs)(l.Empty,{children:["No model matches “",N,"”."]}):(0,b.jsx)("div",{className:"max-h-[360px] divide-y divide-border-subtle overflow-y-auto rounded-brand border border-border-subtle",children:aq.map(c=>{let d=R[c.id];return(0,b.jsxs)("div",{className:"group flex items-center justify-between gap-3 px-3 py-2 hover:bg-bg",children:[(0,b.jsxs)("div",{className:"flex min-w-0 items-center gap-2",children:[(0,b.jsx)(k.Icon,{name:"ok"===d?"check_circle":"fail"===d?"cancel":"smart_toy",size:15,className:`flex-none ${"ok"===d?"text-success":"fail"===d?"text-danger":"text-text-subtle"}`}),(0,b.jsxs)("span",{className:"tnum truncate text-[12.5px]",children:[(0,b.jsxs)("span",{className:"text-text-subtle",children:[r.id,"/"]}),(0,b.jsx)("span",{className:"text-text",children:c.id})]}),(0,b.jsx)(o.CapacityBadges,{model:c.id,provider:r.id}),(void 0!==c.price_in||void 0!==c.price_out)&&(0,b.jsxs)("span",{className:"tnum whitespace-nowrap text-[11px] text-text-subtle",children:[l.fmt.cost(c.price_in??0),"/",l.fmt.cost(c.price_out??0)," per 1M"]})]}),(0,b.jsxs)("div",{className:"flex flex-none items-center gap-0.5",children:[(0,b.jsx)("button",{onClick:()=>ak(c.id),disabled:"testing"===d,className:"rounded p-1 text-text-subtle transition-colors hover:bg-surface hover:text-accent disabled:opacity-60","aria-label":`Test ${c.id}`,title:"fail"===d?"Test failed — click to retry":"Test this model",children:(0,b.jsx)(k.Icon,{name:"testing"===d?"progress_activity":"science",size:15})}),(0,b.jsx)("button",{onClick:()=>ar(`rmmodel${c.id}`,()=>e.adminApi.removeModel(a,c.id)),disabled:z===`rmmodel${c.id}`,className:"rounded p-1 text-text-subtle transition-colors hover:bg-surface hover:text-danger disabled:opacity-40","aria-label":`Remove ${c.id}`,children:(0,b.jsx)(k.Icon,{name:"delete",size:16})})]})]},c.id)})})]}),(0,b.jsxs)("div",{className:"mt-3 flex gap-2",children:[(0,b.jsx)(j.Input,{value:L,onChange:a=>M(a.target.value),placeholder:"add a model id…"}),(0,b.jsx)(j.Button,{disabled:!L||"addmodel"===z,onClick:()=>ar("addmodel",async()=>{let b=await e.adminApi.addModel(a,L);return b.ok&&M(""),b}),children:"Add"})]})]})]}),P&&(0,b.jsx)(n,{models:P,busy:"addmodels"===z,onClose:()=>Q(null),onAdd:b=>ar("addmodels",async()=>{let c=await e.adminApi.addModels(a,b);return c.ok&&Q(null),c})}),(0,b.jsx)("div",{className:"mt-6",children:(0,b.jsxs)(j.Button,{variant:"danger",onClick:()=>aj(!0),children:[(0,b.jsx)(k.Icon,{name:"delete",size:16})," Remove provider"]})}),ai&&(0,b.jsx)(p.ConfirmModal,{title:"Remove provider",message:`Delete "${r.name??a}"? All keys and model associations will be lost.`,confirmLabel:"Remove",busy:"rmprov"===z,onCancel:()=>aj(!1),onConfirm:()=>ar("rmprov",async()=>{let b=await e.adminApi.removeProvider(a);return b.ok?m.push("/providers"):aj(!1),b})})]})}],33410)}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=src_components_ProviderDetail_tsx_06sxu0r._.js.map
|
package/dashboard/.next/server/chunks/ssr/src_components_ProviderDetail_tsx_06sxu0r._.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ProviderDetail.tsx","../../../../src/components/Checkbox.tsx","../../../../src/components/ModelSelectModal.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useState, useCallback, useRef } from \"react\";\nimport { useRouter } from \"next/navigation\";\nimport { adminApi } from \"@/lib/client\";\nimport { Lamp } from \"@/components/Lamp\";\nimport { Badge, FormatBadge } from \"@/components/Badge\";\nimport { CooldownTimer } from \"@/components/CooldownTimer\";\nimport { RichCard, CardTitle } from \"@/components/RichCard\";\nimport { Button, Input, Field } from \"@/components/Button\";\nimport { Icon } from \"@/components/Icon\";\nimport { fmt, Empty } from \"@/components/ui\";\nimport { ModelSelectModal, type DiscoveredModel } from \"@/components/ModelSelectModal\";\nimport { CapacityBadges } from \"@/components/CapacityBadges\";\nimport { ConfirmModal } from \"@/components/ConfirmModal\";\nimport type { MaskedConfig, MaskedProvider, ProviderSnapshot, PingResult } from \"@/lib/gateway\";\n\nexport function ProviderDetail({ id }: { id: string }) {\n const router = useRouter();\n const [provider, setProvider] = useState<MaskedProvider | null>(null);\n const [health, setHealth] = useState<ProviderSnapshot | null>(null);\n const [error, setError] = useState(\"\");\n const [ping, setPing] = useState<PingResult | null>(null);\n const [busy, setBusy] = useState(\"\");\n const [newKey, setNewKey] = useState(\"\");\n const [newKeyName, setNewKeyName] = useState(\"\");\n const [editIdx, setEditIdx] = useState<number | null>(null);\n const [editName, setEditName] = useState(\"\");\n const [editVal, setEditVal] = useState(\"\");\n const [newModel, setNewModel] = useState(\"\");\n const [modelFilter, setModelFilter] = useState(\"\");\n const [discovered, setDiscovered] = useState<DiscoveredModel[] | null>(null);\n const [modelTest, setModelTest] = useState<Record<string, \"testing\" | \"ok\" | \"fail\">>({});\n const [keyTest, setKeyTest] = useState<Record<number, \"testing\" | PingResult>>({});\n const [testingAll, setTestingAll] = useState(false);\n const [testAllSummary, setTestAllSummary] = useState<{ total: number; passed: number; failed: number } | null>(null);\n const stopTestAll = useRef(false);\n const [editingConn, setEditingConn] = useState(false);\n const [connUrl, setConnUrl] = useState(\"\");\n const [connPrefix, setConnPrefix] = useState(\"\");\n const [connLabel, setConnLabel] = useState(\"\");\n const [revealedKeys, setRevealedKeys] = useState<Record<number, string>>({});\n const [confirmDelete, setConfirmDelete] = useState(false);\n\n async function testModel(mid: string) {\n setModelTest((t) => ({ ...t, [mid]: \"testing\" }));\n const r = await adminApi.testModel(id, mid);\n setModelTest((t) => ({ ...t, [mid]: r.ok && r.data?.ok ? \"ok\" : \"fail\" }));\n }\n\n async function testKey(i: number) {\n setKeyTest((t) => ({ ...t, [i]: \"testing\" }));\n const r = await adminApi.testKey(id, i);\n setKeyTest((t) => ({ ...t, [i]: r.data ?? { ok: false, reachable: false, status: 0, error: r.error } }));\n }\n\n async function testAllKeys(count: number) {\n stopTestAll.current = false;\n setTestingAll(true);\n setTestAllSummary(null);\n setKeyTest({});\n let passed = 0;\n let failed = 0;\n for (let i = 0; i < count; i++) {\n if (stopTestAll.current) break;\n setKeyTest((t) => ({ ...t, [i]: \"testing\" }));\n const r = await adminApi.testKey(id, i);\n const result = r.data ?? { ok: false, reachable: false, status: 0, error: r.error };\n setKeyTest((t) => ({ ...t, [i]: result }));\n if (result.ok) passed++;\n else failed++;\n if (i < count - 1 && !stopTestAll.current) await new Promise((resolve) => setTimeout(resolve, 500));\n }\n setTestingAll(false);\n setTestAllSummary({ total: count, passed, failed });\n }\n\n const reload = useCallback(async () => {\n const [cfgRes, provRes] = await Promise.all([fetch(\"/api/gw/admin/config\"), adminApi.providers()]);\n if (!cfgRes.ok) {\n setError(\"could not reach the gateway\");\n return;\n }\n const cfg = (await cfgRes.json()) as MaskedConfig;\n const p = cfg.providers.find((x) => x.id === id) ?? null;\n if (!p) {\n setError(`provider \"${id}\" not found`);\n return;\n }\n setError(\"\");\n setProvider(p);\n setHealth(provRes.data?.providers.find((x) => x.id === id) ?? null);\n }, [id]);\n\n useEffect(() => {\n void reload();\n }, [reload]);\n\n if (error) return <Empty>{error}</Empty>;\n if (!provider) return <Empty>Loading…</Empty>;\n\n const keys = provider.api_keys ?? (provider.api_key ? [provider.api_key] : []);\n const q = modelFilter.trim().toLowerCase();\n const shownModels = q ? provider.models.filter((m) => m.id.toLowerCase().includes(q)) : provider.models;\n\n async function run(label: string, fn: () => Promise<{ ok: boolean; error?: string }>) {\n setBusy(label);\n const res = await fn();\n setBusy(\"\");\n if (!res.ok) setError(res.error ?? \"action failed\");\n else {\n setError(\"\");\n await reload();\n }\n }\n\n return (\n <div>\n <button onClick={() => router.push(\"/providers\")} className=\"mb-4 inline-flex items-center gap-1 text-[12px] text-text-muted hover:text-text\">\n <Icon name=\"arrow_back\" size={15} /> Providers\n </button>\n\n <div className=\"mb-6 flex items-center gap-3\">\n <Lamp state={provider.disabled ? \"idle\" : (health?.keys.some((k) => k.healthy) ?? true) ? \"live\" : \"down\"} />\n <div>\n <h1 className=\"text-[22px] font-semibold tracking-tight text-text\">{provider.name || provider.id}</h1>\n {provider.name && <span className=\"text-[12px] text-text-subtle\">{provider.id}/</span>}\n </div>\n <FormatBadge format={provider.format} />\n {provider.free && <Badge tone=\"info\">free</Badge>}\n {provider.service_account && <Badge tone=\"info\">service-account</Badge>}\n {/* enable/disable lives on the Providers list (one place); here we just\n flag the state. Disabled = red badge + the content below fades. */}\n {provider.disabled && <Badge tone=\"down\">disabled</Badge>}\n </div>\n\n <div className={`grid gap-4 lg:grid-cols-2 transition-opacity ${provider.disabled ? \"opacity-50\" : \"\"}`}>\n <RichCard header={<CardTitle title=\"Connection\" />}>\n {editingConn ? (\n <div className=\"space-y-3\">\n <Field label=\"Label\" hint=\"display name in dashboard (optional, does not affect routing)\">\n <Input value={connLabel} onChange={(e) => setConnLabel(e.target.value)} placeholder={connPrefix || \"e.g. My Provider\"} className=\"text-[12.5px]\" />\n </Field>\n <Field label=\"ID / Prefix\" hint=\"the call prefix (id/model) — changing this breaks CLI tools\">\n <Input value={connPrefix} onChange={(e) => setConnPrefix(e.target.value)} placeholder=\"e.g. openai\" className=\"font-mono text-[12.5px]\" />\n </Field>\n {connPrefix.trim() && connPrefix.trim() !== id && (\n <p className=\"flex items-start gap-1.5 rounded-brand border border-warning/40 bg-warning/8 px-2.5 py-2 text-[11.5px] text-warning\">\n <Icon name=\"warning\" size={14} className=\"mt-0.5 flex-none\" />\n <span>\n Renaming rewrites the call string. CLI tools pointing at{\" \"}\n <code className=\"tnum\">{id}/…</code> will break until repointed; combos that target it are\n updated automatically.\n </span>\n </p>\n )}\n <Field label=\"Base URL\">\n <Input value={connUrl} onChange={(e) => setConnUrl(e.target.value)} placeholder=\"https://...\" className=\"font-mono text-[12.5px]\" />\n </Field>\n <div className=\"flex justify-end gap-2\">\n <Button variant=\"ghost\" onClick={() => setEditingConn(false)}>Cancel</Button>\n <Button disabled={busy === \"editconn\"} onClick={() => run(\"editconn\", async () => {\n const newId = connPrefix.trim();\n let activeId = id;\n if (newId && newId !== id) {\n const rr = await adminApi.renameProvider(id, newId);\n if (!rr.ok) return rr;\n activeId = newId;\n }\n const newName = connLabel.trim() || undefined;\n const r = await adminApi.editProvider(activeId, { base_url: connUrl.trim() || undefined, name: newName });\n if (r.ok) {\n setEditingConn(false);\n if (activeId !== id) { router.push(`/providers/${encodeURIComponent(activeId)}`); return r; }\n }\n return r;\n })}>Save</Button>\n </div>\n </div>\n ) : (\n <>\n <div className=\"space-y-2 text-[13px]\">\n {provider.name && <Row k=\"Label\" v={provider.name} />}\n <Row k=\"ID / Prefix\" v={provider.id} />\n <Row k=\"Base URL\" v={provider.base_url} />\n <Row k=\"Format\" v={provider.format} />\n <Row k=\"Cooldown base\" v={`${provider.cooldown_base_ms}ms`} />\n <Row k=\"Max retries\" v={String(provider.max_retries)} />\n </div>\n <div className=\"mt-4 flex items-center gap-2\">\n <Button variant=\"ghost\" onClick={() => { setEditingConn(true); setConnUrl(provider.base_url); setConnPrefix(provider.id); setConnLabel(provider.name ?? \"\"); }}>\n <Icon name=\"edit\" size={15} /> Edit\n </Button>\n <Button variant=\"ghost\" disabled={busy === \"test\"} onClick={() => run(\"test\", async () => {\n const r = await adminApi.testProvider(id);\n if (r.ok) setPing(r.data);\n return r;\n })}>\n <Icon name=\"wifi_tethering\" size={16} /> {busy === \"test\" ? \"Testing…\" : \"Test connection\"}\n </Button>\n <Button variant=\"ghost\" disabled={busy === \"discover\"} onClick={() => run(\"discover\", async () => {\n const r = await adminApi.discoverModels(id);\n if (r.ok) setDiscovered(r.data?.models ?? []);\n return r;\n })}>\n <Icon name=\"sync\" size={16} /> {busy === \"discover\" ? \"Fetching…\" : \"Fetch models\"}\n </Button>\n </div>\n {ping && (\n <div className=\"mt-3 text-[12px]\">\n <Badge tone={ping.ok ? \"live\" : ping.reachable ? \"warn\" : \"down\"}>\n {ping.ok ? `ok (${ping.status})` : ping.reachable ? `reachable (${ping.status})` : \"unreachable\"}\n </Badge>\n {ping.error && <span className=\"ml-2 text-text-subtle\">{ping.error}</span>}\n </div>\n )}\n </>\n )}\n </RichCard>\n\n <RichCard\n header={\n <>\n <CardTitle title=\"Keys\" sub={`${keys.length} configured`} />\n <div className=\"flex flex-wrap items-center gap-3\">\n {keys.length > 1 && (\n <Button variant=\"ghost\" disabled={testingAll} onClick={() => testAllKeys(keys.length)}>\n <Icon name={testingAll ? \"progress_activity\" : \"sync\"} size={15} />\n {testingAll ? \"Testing…\" : \"Test All\"}\n </Button>\n )}\n {testingAll && (\n <Button variant=\"ghost\" onClick={() => { stopTestAll.current = true; }}>\n <Icon name=\"stop\" size={15} /> Stop\n </Button>\n )}\n <span className=\"text-[11px] text-text-subtle\">Round Robin</span>\n <button\n onClick={() => {\n const next = provider.strategy === \"round-robin\" ? null : \"round-robin\";\n void adminApi.setProviderStrategy(id, next as \"round-robin\" | null, provider.sticky ?? 1).then(() => reload());\n }}\n className={`relative h-5 w-9 rounded-full transition-colors ${provider.strategy === \"round-robin\" ? \"bg-accent\" : \"bg-border-subtle\"}`}\n aria-label=\"Toggle round-robin\"\n >\n <span className={`absolute left-0.5 top-0.5 h-4 w-4 rounded-full bg-white transition-transform ${provider.strategy === \"round-robin\" ? \"translate-x-[18px]\" : \"translate-x-0\"}`} />\n </button>\n {provider.strategy === \"round-robin\" && (\n <div className=\"flex items-center gap-1.5\">\n <span className=\"text-[11px] text-text-subtle\">Sticky:</span>\n <div className=\"flex items-center rounded-brand border border-border-subtle\">\n <button\n type=\"button\"\n disabled={(provider.sticky ?? 1) <= 1}\n onClick={() => void adminApi.setProviderStrategy(id, \"round-robin\", Math.max(1, (provider.sticky ?? 1) - 1)).then(() => reload())}\n className=\"px-1.5 py-0.5 text-text-subtle transition-colors hover:text-text disabled:opacity-30\"\n aria-label=\"Decrease sticky\"\n >\n <Icon name=\"remove\" size={13} />\n </button>\n <span className=\"tnum w-6 text-center text-[11px] text-text\">{provider.sticky ?? 1}</span>\n <button\n type=\"button\"\n onClick={() => void adminApi.setProviderStrategy(id, \"round-robin\", (provider.sticky ?? 1) + 1).then(() => reload())}\n className=\"px-1.5 py-0.5 text-text-subtle transition-colors hover:text-text\"\n aria-label=\"Increase sticky\"\n >\n <Icon name=\"add\" size={13} />\n </button>\n </div>\n </div>\n )}\n </div>\n </>\n }\n >\n {testAllSummary && (\n <div className=\"mb-3 flex items-center gap-2 text-[11.5px]\">\n <Badge tone={testAllSummary.failed === 0 ? \"live\" : \"warn\"}>\n {testAllSummary.total} tested: {testAllSummary.passed} valid, {testAllSummary.failed} failed\n </Badge>\n </div>\n )}\n {keys.length === 0 ? (\n <Empty>No keys (free / service-account provider).</Empty>\n ) : (\n <div className=\"space-y-1.5\">\n {keys.map((k, i) => {\n const ks = health?.keys[i];\n const test = keyTest[i];\n const tested = test && test !== \"testing\" ? test : null;\n const lamp = tested ? (tested.ok ? \"live\" : tested.reachable ? \"idle\" : \"down\") : ks ? (ks.healthy ? \"live\" : \"down\") : \"idle\";\n const name = provider.key_names?.[k];\n const disabled = provider.disabled_keys?.includes(i) ?? false;\n if (editIdx === i) {\n return (\n <div key={i} className=\"space-y-2 rounded-brand border border-accent bg-accent-soft/40 px-3 py-2.5\">\n <Input value={editName} onChange={(e) => setEditName(e.target.value)} placeholder=\"key name (optional)\" />\n <Input value={editVal} onChange={(e) => setEditVal(e.target.value)} placeholder=\"new key value (leave blank to keep)\" className=\"font-mono text-[12.5px]\" />\n <div className=\"flex justify-end gap-2\">\n <Button variant=\"ghost\" onClick={() => setEditIdx(null)}>Cancel</Button>\n <Button disabled={busy === `editkey${i}`} onClick={() => run(`editkey${i}`, async () => {\n const r = await adminApi.editKey(id, i, { name: editName, key: editVal.trim() || undefined });\n if (r.ok) setEditIdx(null);\n return r;\n })}>Save</Button>\n </div>\n </div>\n );\n }\n return (\n <div key={i} className={`rounded-brand border border-border-subtle px-3 py-2${disabled ? \" opacity-60\" : \"\"}`}>\n <div className=\"flex items-center gap-2\">\n {/* reorder */}\n <div className=\"flex flex-col\">\n <button\n onClick={() => run(`reorder${i}up`, () => adminApi.reorderKey(id, i, i - 1))}\n disabled={i === 0}\n className=\"p-0.5 text-text-subtle hover:text-text disabled:opacity-30\"\n aria-label=\"Move up\"\n >\n <Icon name=\"keyboard_arrow_up\" size={14} />\n </button>\n <button\n onClick={() => run(`reorder${i}dn`, () => adminApi.reorderKey(id, i, i + 1))}\n disabled={i === keys.length - 1}\n className=\"p-0.5 text-text-subtle hover:text-text disabled:opacity-30\"\n aria-label=\"Move down\"\n >\n <Icon name=\"keyboard_arrow_down\" size={14} />\n </button>\n </div>\n <Lamp state={lamp} />\n <div className=\"min-w-0 flex-1\">\n {name && <div className=\"text-[12px] font-semibold text-text-muted\">{name}</div>}\n <span className=\"block truncate font-mono text-[12.5px] text-text\">{revealedKeys[i] ?? k}</span>\n </div>\n {revealedKeys[i] && (\n <button\n onClick={() => { void navigator.clipboard.writeText(revealedKeys[i]!); }}\n className=\"flex-none rounded p-1 text-text-subtle transition-colors hover:text-text\"\n aria-label=\"Copy key\"\n title=\"Copy to clipboard\"\n >\n <Icon name=\"content_copy\" size={14} />\n </button>\n )}\n {ks && ks.cooldown_ms > 0 && <CooldownTimer ms={ks.cooldown_ms} />}\n {/* actions: reveal > toggle > test > edit > delete */}\n <button\n onClick={async () => {\n if (revealedKeys[i]) { setRevealedKeys((r) => { const n = { ...r }; delete n[i]; return n; }); return; }\n const r = await adminApi.revealKey(id, i);\n if (r.ok && r.data?.key) setRevealedKeys((prev) => ({ ...prev, [i]: r.data!.key }));\n }}\n className=\"flex-none rounded p-1 text-text-subtle transition-colors hover:text-text\"\n aria-label={revealedKeys[i] ? \"Hide key\" : \"Show key\"}\n title={revealedKeys[i] ? \"Hide key\" : \"Show key\"}\n >\n <Icon name={revealedKeys[i] ? \"visibility_off\" : \"visibility\"} size={15} />\n </button>\n <button\n onClick={() => run(`toggle${i}`, () => adminApi.toggleKey(id, i, disabled))}\n className=\"flex-none rounded p-1 text-text-subtle transition-colors hover:text-text\"\n aria-label={disabled ? \"Enable key\" : \"Disable key\"}\n title={disabled ? \"Enable this key\" : \"Disable this key\"}\n >\n <Icon name={disabled ? \"toggle_off\" : \"toggle_on\"} size={20} className={disabled ? \"text-text-subtle\" : \"text-success\"} />\n </button>\n <button\n onClick={() => testKey(i)}\n disabled={test === \"testing\"}\n className=\"flex-none rounded p-1 text-text-subtle transition-colors hover:text-text disabled:opacity-60\"\n aria-label={`Check key ${i + 1}`}\n title=\"Check this key against the base URL\"\n >\n <Icon name={test === \"testing\" ? \"progress_activity\" : \"wifi_tethering\"} size={15} />\n </button>\n <button\n onClick={() => { setEditIdx(i); setEditName(name ?? \"\"); setEditVal(\"\"); }}\n className=\"flex-none rounded p-1 text-text-subtle transition-colors hover:text-text\"\n aria-label={`Edit key ${i + 1}`}\n title=\"Rename or replace this key\"\n >\n <Icon name=\"edit\" size={15} />\n </button>\n <button\n onClick={() => run(`rmkey${i}`, () => adminApi.removeKey(id, i))}\n className=\"flex-none rounded p-1 text-text-subtle transition-colors hover:text-danger\"\n aria-label=\"Remove key\"\n >\n <Icon name=\"delete\" size={15} />\n </button>\n </div>\n {tested && (\n <div className=\"mt-1.5 flex items-center gap-2 pl-8 text-[11.5px]\">\n <Badge tone={tested.ok ? \"live\" : tested.reachable ? \"warn\" : \"down\"}>\n {tested.ok ? \"valid\" : tested.reachable ? `reachable (${tested.status})` : \"invalid\"}\n </Badge>\n {tested.error && <span className=\"truncate text-danger\">{tested.error}</span>}\n </div>\n )}\n {!tested && ks?.last_error && (\n <div className=\"mt-1.5 flex items-center gap-2 pl-8 text-[11.5px]\">\n <span className=\"text-danger\">{ks.last_error.status ? `${ks.last_error.status}: ` : \"\"}{ks.last_error.message}</span>\n <span className=\"text-text-subtle\">{new Date(ks.last_error.at).toLocaleTimeString()}</span>\n </div>\n )}\n </div>\n );\n })}\n </div>\n )}\n <div className=\"mt-3 space-y-2\">\n <Input value={newKeyName} onChange={(e) => setNewKeyName(e.target.value)} placeholder=\"key name (optional, e.g. primary)\" />\n <div className=\"flex gap-2\">\n <Input value={newKey} onChange={(e) => setNewKey(e.target.value)} placeholder=\"add a key…\" className=\"font-mono text-[12.5px]\" />\n <Button disabled={!newKey || busy === \"addkey\"} onClick={() => run(\"addkey\", async () => {\n const r = await adminApi.addKey(id, newKey, newKeyName.trim() || undefined);\n if (r.ok) { setNewKey(\"\"); setNewKeyName(\"\"); }\n return r;\n })}>Add</Button>\n </div>\n </div>\n </RichCard>\n\n <RichCard\n className=\"lg:col-span-2\"\n header={\n <>\n <CardTitle title=\"Models served\" sub={`${provider.models.length} in catalog`} />\n {provider.models.length > 0 && (\n <button\n onClick={() => run(\"clear\", () => adminApi.clearModels(id))}\n disabled={busy === \"clear\"}\n className=\"text-[12px] text-text-subtle hover:text-danger\"\n >\n Clear all\n </button>\n )}\n </>\n }\n >\n {provider.models.length === 0 ? (\n <Empty>No models. Add one below, or fetch them for a free/auto provider.</Empty>\n ) : (\n <>\n <p className=\"mb-2.5 text-[12px] text-text-subtle\">\n Call any of these as <span className=\"tnum text-text-muted\">{provider.id}/<model></span>, as a combo alias, or by the bare id.\n </p>\n {/* filter only earns its space once the catalog is long enough to scroll */}\n {provider.models.length > 8 && (\n <div className=\"mb-2.5 flex items-center gap-2\">\n <div className=\"relative flex-1\">\n <Icon name=\"search\" size={15} className=\"pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-text-subtle\" />\n <Input value={modelFilter} onChange={(e) => setModelFilter(e.target.value)} placeholder=\"filter models…\" className=\"pl-8\" />\n </div>\n <span className=\"tnum whitespace-nowrap text-[12px] text-text-subtle\">\n {q ? `${shownModels.length} of ${provider.models.length}` : `${provider.models.length}`}\n </span>\n </div>\n )}\n {shownModels.length === 0 ? (\n <Empty>No model matches “{modelFilter}”.</Empty>\n ) : (\n <div className=\"max-h-[360px] divide-y divide-border-subtle overflow-y-auto rounded-brand border border-border-subtle\">\n {shownModels.map((m) => {\n const st = modelTest[m.id];\n const statusIcon = st === \"ok\" ? \"check_circle\" : st === \"fail\" ? \"cancel\" : \"smart_toy\";\n const statusColor = st === \"ok\" ? \"text-success\" : st === \"fail\" ? \"text-danger\" : \"text-text-subtle\";\n return (\n <div key={m.id} className=\"group flex items-center justify-between gap-3 px-3 py-2 hover:bg-bg\">\n <div className=\"flex min-w-0 items-center gap-2\">\n <Icon name={statusIcon} size={15} className={`flex-none ${statusColor}`} />\n {/* the prefix (= provider id) is what makes the call string; show it aigetwey-style */}\n <span className=\"tnum truncate text-[12.5px]\">\n <span className=\"text-text-subtle\">{provider.id}/</span>\n <span className=\"text-text\">{m.id}</span>\n </span>\n <CapacityBadges model={m.id} provider={provider.id} />\n {(m.price_in !== undefined || m.price_out !== undefined) && (\n <span className=\"tnum whitespace-nowrap text-[11px] text-text-subtle\">\n {fmt.cost(m.price_in ?? 0)}/{fmt.cost(m.price_out ?? 0)} per 1M\n </span>\n )}\n </div>\n <div className=\"flex flex-none items-center gap-0.5\">\n <button\n onClick={() => testModel(m.id)}\n disabled={st === \"testing\"}\n className=\"rounded p-1 text-text-subtle transition-colors hover:bg-surface hover:text-accent disabled:opacity-60\"\n aria-label={`Test ${m.id}`}\n title={st === \"fail\" ? \"Test failed — click to retry\" : \"Test this model\"}\n >\n <Icon name={st === \"testing\" ? \"progress_activity\" : \"science\"} size={15} />\n </button>\n <button\n onClick={() => run(`rmmodel${m.id}`, () => adminApi.removeModel(id, m.id))}\n disabled={busy === `rmmodel${m.id}`}\n className=\"rounded p-1 text-text-subtle transition-colors hover:bg-surface hover:text-danger disabled:opacity-40\"\n aria-label={`Remove ${m.id}`}\n >\n <Icon name=\"delete\" size={16} />\n </button>\n </div>\n </div>\n );\n })}\n </div>\n )}\n </>\n )}\n <div className=\"mt-3 flex gap-2\">\n <Input value={newModel} onChange={(e) => setNewModel(e.target.value)} placeholder=\"add a model id…\" />\n <Button disabled={!newModel || busy === \"addmodel\"} onClick={() => run(\"addmodel\", async () => {\n const r = await adminApi.addModel(id, newModel);\n if (r.ok) setNewModel(\"\");\n return r;\n })}>Add</Button>\n </div>\n </RichCard>\n </div>\n\n {discovered && (\n <ModelSelectModal\n models={discovered}\n busy={busy === \"addmodels\"}\n onClose={() => setDiscovered(null)}\n onAdd={(ids) => run(\"addmodels\", async () => {\n const r = await adminApi.addModels(id, ids);\n if (r.ok) setDiscovered(null);\n return r;\n })}\n />\n )}\n\n <div className=\"mt-6\">\n <Button variant=\"danger\" onClick={() => setConfirmDelete(true)}>\n <Icon name=\"delete\" size={16} /> Remove provider\n </Button>\n </div>\n\n {confirmDelete && (\n <ConfirmModal\n title=\"Remove provider\"\n message={`Delete \"${provider.name ?? id}\"? All keys and model associations will be lost.`}\n confirmLabel=\"Remove\"\n busy={busy === \"rmprov\"}\n onCancel={() => setConfirmDelete(false)}\n onConfirm={() => run(\"rmprov\", async () => {\n const r = await adminApi.removeProvider(id);\n if (r.ok) router.push(\"/providers\");\n else setConfirmDelete(false);\n return r;\n })}\n />\n )}\n </div>\n );\n}\n\nfunction Row({ k, v }: { k: string; v: string }) {\n return (\n <div className=\"flex items-center justify-between gap-3\">\n <span className=\"text-text-subtle\">{k}</span>\n <span className=\"truncate text-text\">{v}</span>\n </div>\n );\n}\n","import { Icon } from \"./Icon\";\n\n/**\n * Themed checkbox. Native checkboxes look out of place on the dark Haulix\n * surface, so this is a button styled to match: filled with the accent + a\n * check glyph when on, a bordered box when off. `indeterminate` renders a dash\n * for \"some selected\" (drives the select-all row).\n */\nexport function Checkbox({\n checked,\n indeterminate,\n onChange,\n className,\n ariaLabel,\n}: {\n checked: boolean;\n indeterminate?: boolean;\n onChange: () => void;\n className?: string;\n ariaLabel?: string;\n}) {\n const on = checked || indeterminate;\n return (\n <button\n type=\"button\"\n role=\"checkbox\"\n aria-checked={indeterminate ? \"mixed\" : checked}\n aria-label={ariaLabel}\n onClick={(e) => {\n e.stopPropagation();\n onChange();\n }}\n className={`flex h-[18px] w-[18px] flex-none items-center justify-center rounded-[5px] border transition-colors ${\n on ? \"border-accent bg-accent text-accent-ink\" : \"border-border bg-bg text-transparent hover:border-text-subtle\"\n }${className ? ` ${className}` : \"\"}`}\n >\n <Icon name={indeterminate ? \"remove\" : \"check\"} size={13} />\n </button>\n );\n}\n","\"use client\";\n\nimport { useState, useMemo } from \"react\";\nimport { Button, Input } from \"@/components/Button\";\nimport { Checkbox } from \"@/components/Checkbox\";\nimport { Icon } from \"@/components/Icon\";\n\nexport interface DiscoveredModel {\n id: string;\n added: boolean; // already in the provider catalog\n}\n\n/**\n * Pick which discovered models to add. Free providers can return hundreds of\n * ids, so this is a filterable checklist (defaulting to only the not-yet-added\n * ones selected) rather than dumping everything into the catalog.\n */\nexport function ModelSelectModal({\n models,\n busy,\n onAdd,\n onClose,\n}: {\n models: DiscoveredModel[];\n busy: boolean;\n onAdd: (ids: string[]) => void;\n onClose: () => void;\n}) {\n const [filter, setFilter] = useState(\"\");\n const [picked, setPicked] = useState<Set<string>>(() => new Set(models.filter((m) => !m.added).map((m) => m.id)));\n\n const shown = useMemo(() => {\n const q = filter.trim().toLowerCase();\n return q ? models.filter((m) => m.id.toLowerCase().includes(q)) : models;\n }, [models, filter]);\n\n function toggle(id: string) {\n setPicked((s) => {\n const next = new Set(s);\n if (next.has(id)) next.delete(id);\n else next.add(id);\n return next;\n });\n }\n\n const shownPickedCount = shown.filter((m) => picked.has(m.id)).length;\n const allShownPicked = shown.length > 0 && shownPickedCount === shown.length;\n const someShownPicked = shownPickedCount > 0 && !allShownPicked;\n function toggleAllShown() {\n setPicked((s) => {\n const next = new Set(s);\n if (allShownPicked) shown.forEach((m) => next.delete(m.id));\n else shown.forEach((m) => next.add(m.id));\n return next;\n });\n }\n\n return (\n <div className=\"fixed inset-0 z-50 grid place-items-center bg-black/50 p-6\" onClick={onClose}>\n <div\n className=\"flex max-h-[80vh] w-full max-w-[480px] flex-col overflow-hidden rounded-brand-lg border border-border bg-surface shadow-elevated\"\n onClick={(e) => e.stopPropagation()}\n >\n <header className=\"flex items-center justify-between border-b border-border-subtle px-4 py-3\">\n <span className=\"text-[14px] font-semibold text-text\">{models.length} models found</span>\n <button onClick={onClose} className=\"text-text-subtle hover:text-text\" aria-label=\"Close\">\n <Icon name=\"close\" size={18} />\n </button>\n </header>\n\n <div className=\"border-b border-border-subtle px-4 py-2.5\">\n <Input value={filter} onChange={(e) => setFilter(e.target.value)} placeholder=\"filter…\" autoFocus />\n </div>\n\n {/* select-all row: an obvious clickable control, not an ambiguous button */}\n {shown.length > 0 && (\n <button\n onClick={toggleAllShown}\n className=\"flex items-center gap-2.5 border-b border-border-subtle px-4 py-2 text-left hover:bg-surface-2\"\n >\n <Checkbox checked={allShownPicked} indeterminate={someShownPicked} onChange={toggleAllShown} ariaLabel=\"Select all\" />\n <span className=\"text-[12.5px] font-medium text-text\">Select all{filter ? \" (filtered)\" : \"\"}</span>\n <span className=\"ml-auto tnum text-[11px] text-text-subtle\">\n {shownPickedCount}/{shown.length}\n </span>\n </button>\n )}\n\n <div className=\"flex-1 overflow-y-auto px-2 py-2\">\n {shown.length === 0 ? (\n <div className=\"px-2 py-6 text-center text-[13px] text-text-muted\">No matches.</div>\n ) : (\n shown.map((m) => {\n const sel = picked.has(m.id);\n return (\n <button\n key={m.id}\n onClick={() => toggle(m.id)}\n className={`flex w-full items-center gap-2.5 rounded-brand border px-2.5 py-2 text-left transition-colors ${\n sel ? \"border-accent/40 bg-accent-soft\" : \"border-transparent hover:bg-surface-2\"\n }`}\n >\n <Checkbox checked={sel} onChange={() => toggle(m.id)} ariaLabel={m.id} />\n <span className=\"flex-1 truncate text-[12.5px] text-text\">{m.id}</span>\n {m.added && <span className=\"text-[11px] text-text-subtle\">in catalog</span>}\n </button>\n );\n })\n )}\n </div>\n\n <footer className=\"flex items-center justify-between gap-3 border-t border-border-subtle bg-bg-alt px-4 py-2.5\">\n <span className=\"tnum text-[12px] text-text-muted\">{picked.size} selected</span>\n <div className=\"flex gap-2\">\n <Button variant=\"ghost\" onClick={onClose}>\n Cancel\n </Button>\n <Button disabled={picked.size === 0 || busy} onClick={() => onAdd([...picked])}>\n {busy ? \"Adding…\" : `Add ${picked.size}`}\n </Button>\n </div>\n </footer>\n </div>\n </div>\n );\n}\n"],"names":["Checkbox","checked","indeterminate","onChange","className","ariaLabel","on","type","role","onClick","e","stopPropagation","name","size"],"mappings":"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"}
|