@whxway/loom 1.0.1 → 1.1.0
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/.next/BUILD_ID +1 -1
- package/.next/build/56416d4ae4ce586f.js +6 -0
- package/.next/build/56416d4ae4ce586f.js.map +5 -0
- package/.next/build/chunks/[root-of-the-server]__0oj80bi._.js +206 -0
- package/.next/build/chunks/[root-of-the-server]__0oj80bi._.js.map +8 -0
- package/.next/build/chunks/[root-of-the-server]__1f933tp._.js +500 -0
- package/.next/build/chunks/[root-of-the-server]__1f933tp._.js.map +11 -0
- package/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_0b7xl6g._.js +13 -0
- package/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_0b7xl6g._.js.map +5 -0
- package/.next/build/chunks/[turbopack]_runtime.js +890 -0
- package/.next/build/chunks/[turbopack]_runtime.js.map +11 -0
- package/.next/build/chunks/node_modules_20v-8wl._.js +6824 -0
- package/.next/build/chunks/node_modules_20v-8wl._.js.map +47 -0
- package/.next/build/package.json +1 -0
- package/.next/build-manifest.json +3 -3
- package/.next/cache/.previewinfo +1 -0
- package/.next/cache/.rscinfo +1 -0
- package/.next/cache/.tsbuildinfo +1 -0
- package/.next/diagnostics/build-diagnostics.json +6 -0
- package/.next/diagnostics/framework.json +1 -0
- package/.next/diagnostics/route-bundle-stats.json +488 -0
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/app/(auth)/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/logs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/mcp/page.js.nft.json +1 -1
- package/.next/server/app/(dashboard)/mcp/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/mcp/presets/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/models/[name]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/playground/audio/speech/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/playground/audio/transcription/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/playground/chat/page.js.nft.json +1 -1
- package/.next/server/app/(dashboard)/playground/chat/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/playground/embedding/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/playground/image/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/playground/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/playground/video/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/providers/[name]/page.js.nft.json +1 -1
- package/.next/server/app/(dashboard)/providers/[name]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/providers/page.js.nft.json +1 -1
- package/.next/server/app/(dashboard)/providers/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/settings/api-keys/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
- package/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/settings/users/page.js.nft.json +1 -1
- package/.next/server/app/(dashboard)/settings/users/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +2 -2
- package/.next/server/app/_not-found.rsc +3 -3
- package/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/adapters/route.js.nft.json +1 -1
- package/.next/server/app/api/apikeys/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/apikeys/route.js.nft.json +1 -1
- package/.next/server/app/api/capabilities/route.js.nft.json +1 -1
- package/.next/server/app/api/conversations/[id]/messages/route.js.nft.json +1 -1
- package/.next/server/app/api/conversations/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/conversations/route.js.nft.json +1 -1
- package/.next/server/app/api/health/route.js.nft.json +1 -1
- package/.next/server/app/api/login/route.js.nft.json +1 -1
- package/.next/server/app/api/logout/route.js.nft.json +1 -1
- package/.next/server/app/api/logs/generations/[id]/images/[idx]/route.js.nft.json +1 -1
- package/.next/server/app/api/logs/generations/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/logs/generations/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/presets/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[id]/check/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[id]/tools/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -1
- package/.next/server/app/api/messages/[id]/rate/route.js.nft.json +1 -1
- package/.next/server/app/api/models/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/models/route.js.nft.json +1 -1
- package/.next/server/app/api/ping/route.js.nft.json +1 -1
- package/.next/server/app/api/playground/chat/route.js.nft.json +1 -1
- package/.next/server/app/api/playground/embedding/route.js.nft.json +1 -1
- package/.next/server/app/api/providers/[id]/check/route.js.nft.json +1 -1
- package/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
- package/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/providers/probe/route.js.nft.json +1 -1
- package/.next/server/app/api/providers/reload/route.js.nft.json +1 -1
- package/.next/server/app/api/providers/route.js.nft.json +1 -1
- package/.next/server/app/api/stats/models/[name]/route.js.nft.json +1 -1
- package/.next/server/app/api/stats/route.js.nft.json +1 -1
- package/.next/server/app/api/tools/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/tools/route.js.nft.json +1 -1
- package/.next/server/app/api/users/[username]/route.js.nft.json +1 -1
- package/.next/server/app/api/users/me/preferences/route.js.nft.json +1 -1
- package/.next/server/app/api/users/me/route.js.nft.json +1 -1
- package/.next/server/app/api/users/route.js.nft.json +1 -1
- package/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
- package/.next/server/app/api/v1/models/route.js.nft.json +1 -1
- package/.next/server/app/api/v1/rerank/route.js.nft.json +1 -1
- package/.next/server/app/api/v1/videos/[id]/content/route.js.nft.json +1 -1
- package/.next/server/app/api/v1/videos/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/v1/videos/route.js.nft.json +1 -1
- package/.next/server/app/api/variants/route.js.nft.json +1 -1
- package/.next/server/app/index.html +2 -2
- package/.next/server/app/index.rsc +3 -3
- package/.next/server/app/index.segments/!KGRhc2hib2FyZCk/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/index.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login.html +2 -2
- package/.next/server/app/login.rsc +3 -3
- package/.next/server/app/login.segments/!KGF1dGgp/login/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/login.segments/!KGF1dGgp/login.segment.rsc +1 -1
- package/.next/server/app/login.segments/!KGF1dGgp.segment.rsc +1 -1
- package/.next/server/app/login.segments/_full.segment.rsc +3 -3
- package/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/.next/server/app/login.segments/_index.segment.rsc +2 -2
- package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/logs.html +2 -2
- package/.next/server/app/logs.rsc +3 -3
- package/.next/server/app/logs.segments/!KGRhc2hib2FyZCk/logs/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/logs.segments/!KGRhc2hib2FyZCk/logs.segment.rsc +1 -1
- package/.next/server/app/logs.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/.next/server/app/logs.segments/_full.segment.rsc +3 -3
- package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/logs.segments/_index.segment.rsc +2 -2
- package/.next/server/app/logs.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/mcp/presets.html +2 -2
- package/.next/server/app/mcp/presets.rsc +5 -5
- package/.next/server/app/mcp/presets.segments/!KGRhc2hib2FyZCk/mcp/presets/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/mcp/presets.segments/!KGRhc2hib2FyZCk/mcp/presets.segment.rsc +1 -1
- package/.next/server/app/mcp/presets.segments/!KGRhc2hib2FyZCk/mcp.segment.rsc +1 -1
- package/.next/server/app/mcp/presets.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/.next/server/app/mcp/presets.segments/_full.segment.rsc +5 -5
- package/.next/server/app/mcp/presets.segments/_head.segment.rsc +1 -1
- package/.next/server/app/mcp/presets.segments/_index.segment.rsc +2 -2
- package/.next/server/app/mcp/presets.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/mcp.html +2 -2
- package/.next/server/app/mcp.rsc +5 -5
- package/.next/server/app/mcp.segments/!KGRhc2hib2FyZCk/mcp/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/mcp.segments/!KGRhc2hib2FyZCk/mcp.segment.rsc +1 -1
- package/.next/server/app/mcp.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/.next/server/app/mcp.segments/_full.segment.rsc +5 -5
- package/.next/server/app/mcp.segments/_head.segment.rsc +1 -1
- package/.next/server/app/mcp.segments/_index.segment.rsc +2 -2
- package/.next/server/app/mcp.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/playground/audio/speech.html +2 -2
- package/.next/server/app/playground/audio/speech.rsc +3 -3
- package/.next/server/app/playground/audio/speech.segments/!KGRhc2hib2FyZCk/playground/audio/speech/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/playground/audio/speech.segments/!KGRhc2hib2FyZCk/playground/audio/speech.segment.rsc +1 -1
- package/.next/server/app/playground/audio/speech.segments/!KGRhc2hib2FyZCk/playground/audio.segment.rsc +1 -1
- package/.next/server/app/playground/audio/speech.segments/!KGRhc2hib2FyZCk/playground.segment.rsc +1 -1
- package/.next/server/app/playground/audio/speech.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/.next/server/app/playground/audio/speech.segments/_full.segment.rsc +3 -3
- package/.next/server/app/playground/audio/speech.segments/_head.segment.rsc +1 -1
- package/.next/server/app/playground/audio/speech.segments/_index.segment.rsc +2 -2
- package/.next/server/app/playground/audio/speech.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/playground/audio/transcription.html +2 -2
- package/.next/server/app/playground/audio/transcription.rsc +3 -3
- package/.next/server/app/playground/audio/transcription.segments/!KGRhc2hib2FyZCk/playground/audio/transcription/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/playground/audio/transcription.segments/!KGRhc2hib2FyZCk/playground/audio/transcription.segment.rsc +1 -1
- package/.next/server/app/playground/audio/transcription.segments/!KGRhc2hib2FyZCk/playground/audio.segment.rsc +1 -1
- package/.next/server/app/playground/audio/transcription.segments/!KGRhc2hib2FyZCk/playground.segment.rsc +1 -1
- package/.next/server/app/playground/audio/transcription.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/.next/server/app/playground/audio/transcription.segments/_full.segment.rsc +3 -3
- package/.next/server/app/playground/audio/transcription.segments/_head.segment.rsc +1 -1
- package/.next/server/app/playground/audio/transcription.segments/_index.segment.rsc +2 -2
- package/.next/server/app/playground/audio/transcription.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/playground/chat.html +2 -2
- package/.next/server/app/playground/chat.rsc +5 -5
- package/.next/server/app/playground/chat.segments/!KGRhc2hib2FyZCk/playground/chat/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/playground/chat.segments/!KGRhc2hib2FyZCk/playground/chat.segment.rsc +1 -1
- package/.next/server/app/playground/chat.segments/!KGRhc2hib2FyZCk/playground.segment.rsc +1 -1
- package/.next/server/app/playground/chat.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/.next/server/app/playground/chat.segments/_full.segment.rsc +5 -5
- package/.next/server/app/playground/chat.segments/_head.segment.rsc +1 -1
- package/.next/server/app/playground/chat.segments/_index.segment.rsc +2 -2
- package/.next/server/app/playground/chat.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/playground/embedding.html +2 -2
- package/.next/server/app/playground/embedding.rsc +3 -3
- package/.next/server/app/playground/embedding.segments/!KGRhc2hib2FyZCk/playground/embedding/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/playground/embedding.segments/!KGRhc2hib2FyZCk/playground/embedding.segment.rsc +1 -1
- package/.next/server/app/playground/embedding.segments/!KGRhc2hib2FyZCk/playground.segment.rsc +1 -1
- package/.next/server/app/playground/embedding.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/.next/server/app/playground/embedding.segments/_full.segment.rsc +3 -3
- package/.next/server/app/playground/embedding.segments/_head.segment.rsc +1 -1
- package/.next/server/app/playground/embedding.segments/_index.segment.rsc +2 -2
- package/.next/server/app/playground/embedding.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/playground/image.html +2 -2
- package/.next/server/app/playground/image.rsc +3 -3
- package/.next/server/app/playground/image.segments/!KGRhc2hib2FyZCk/playground/image/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/playground/image.segments/!KGRhc2hib2FyZCk/playground/image.segment.rsc +1 -1
- package/.next/server/app/playground/image.segments/!KGRhc2hib2FyZCk/playground.segment.rsc +1 -1
- package/.next/server/app/playground/image.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/.next/server/app/playground/image.segments/_full.segment.rsc +3 -3
- package/.next/server/app/playground/image.segments/_head.segment.rsc +1 -1
- package/.next/server/app/playground/image.segments/_index.segment.rsc +2 -2
- package/.next/server/app/playground/image.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/playground/video.html +2 -2
- package/.next/server/app/playground/video.rsc +3 -3
- package/.next/server/app/playground/video.segments/!KGRhc2hib2FyZCk/playground/video/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/playground/video.segments/!KGRhc2hib2FyZCk/playground/video.segment.rsc +1 -1
- package/.next/server/app/playground/video.segments/!KGRhc2hib2FyZCk/playground.segment.rsc +1 -1
- package/.next/server/app/playground/video.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/.next/server/app/playground/video.segments/_full.segment.rsc +3 -3
- package/.next/server/app/playground/video.segments/_head.segment.rsc +1 -1
- package/.next/server/app/playground/video.segments/_index.segment.rsc +2 -2
- package/.next/server/app/playground/video.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/playground.html +2 -2
- package/.next/server/app/playground.rsc +3 -3
- package/.next/server/app/playground.segments/!KGRhc2hib2FyZCk/playground/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/playground.segments/!KGRhc2hib2FyZCk/playground.segment.rsc +1 -1
- package/.next/server/app/playground.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/.next/server/app/playground.segments/_full.segment.rsc +3 -3
- package/.next/server/app/playground.segments/_head.segment.rsc +1 -1
- package/.next/server/app/playground.segments/_index.segment.rsc +2 -2
- package/.next/server/app/playground.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/providers.html +2 -2
- package/.next/server/app/providers.rsc +5 -5
- package/.next/server/app/providers.segments/!KGRhc2hib2FyZCk/providers/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/providers.segments/!KGRhc2hib2FyZCk/providers.segment.rsc +1 -1
- package/.next/server/app/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/.next/server/app/providers.segments/_full.segment.rsc +5 -5
- package/.next/server/app/providers.segments/_head.segment.rsc +1 -1
- package/.next/server/app/providers.segments/_index.segment.rsc +2 -2
- package/.next/server/app/providers.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings/api-keys.html +2 -2
- package/.next/server/app/settings/api-keys.rsc +3 -3
- package/.next/server/app/settings/api-keys.segments/!KGRhc2hib2FyZCk/settings/api-keys/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/settings/api-keys.segments/!KGRhc2hib2FyZCk/settings/api-keys.segment.rsc +1 -1
- package/.next/server/app/settings/api-keys.segments/!KGRhc2hib2FyZCk/settings.segment.rsc +1 -1
- package/.next/server/app/settings/api-keys.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/.next/server/app/settings/api-keys.segments/_full.segment.rsc +3 -3
- package/.next/server/app/settings/api-keys.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings/api-keys.segments/_index.segment.rsc +2 -2
- package/.next/server/app/settings/api-keys.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings/users.html +2 -2
- package/.next/server/app/settings/users.rsc +5 -5
- package/.next/server/app/settings/users.segments/!KGRhc2hib2FyZCk/settings/users/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/settings/users.segments/!KGRhc2hib2FyZCk/settings/users.segment.rsc +1 -1
- package/.next/server/app/settings/users.segments/!KGRhc2hib2FyZCk/settings.segment.rsc +1 -1
- package/.next/server/app/settings/users.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/.next/server/app/settings/users.segments/_full.segment.rsc +5 -5
- package/.next/server/app/settings/users.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings/users.segments/_index.segment.rsc +2 -2
- package/.next/server/app/settings/users.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings.html +2 -2
- package/.next/server/app/settings.rsc +5 -5
- package/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings.segment.rsc +1 -1
- package/.next/server/app/settings.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_full.segment.rsc +5 -5
- package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_index.segment.rsc +2 -2
- package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/.next/server/chunks/[root-of-the-server]__02sypva._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__02sypva._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__0g3mnim._.js +4 -1
- package/.next/server/chunks/[root-of-the-server]__0g3mnim._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__0myi8j1._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__0myi8j1._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__1qg3d87._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__1qg3d87._.js.map +1 -1
- package/.next/server/chunks/ssr/_001fhst._.js +3 -0
- package/.next/server/chunks/ssr/_001fhst._.js.map +1 -0
- package/.next/server/chunks/ssr/_02wtd-0._.js +3 -0
- package/.next/server/chunks/ssr/_02wtd-0._.js.map +1 -0
- package/.next/server/chunks/ssr/_05ufvn1._.js +9 -0
- package/.next/server/chunks/ssr/_05ufvn1._.js.map +1 -0
- package/.next/server/chunks/ssr/{_1fd20ju._.js → _066w-6f._.js} +2 -2
- package/.next/server/chunks/ssr/{_1fd20ju._.js.map → _066w-6f._.js.map} +1 -1
- package/.next/server/chunks/ssr/_0gd7kq_._.js +1 -1
- package/.next/server/chunks/ssr/_0gd7kq_._.js.map +1 -1
- package/.next/server/chunks/ssr/_0k-6auj._.js +3 -0
- package/.next/server/chunks/ssr/_0k-6auj._.js.map +1 -0
- package/.next/server/chunks/ssr/_0qo9tx1._.js +3 -0
- package/.next/server/chunks/ssr/_0qo9tx1._.js.map +1 -0
- package/.next/server/chunks/ssr/_0uom5g-._.js +9 -0
- package/.next/server/chunks/ssr/_0uom5g-._.js.map +1 -0
- package/.next/server/chunks/ssr/_1b09eqp._.js +1 -1
- package/.next/server/chunks/ssr/_1b09eqp._.js.map +1 -1
- package/.next/server/chunks/ssr/_1oi0iqt._.js +9 -0
- package/.next/server/chunks/ssr/_1oi0iqt._.js.map +1 -0
- package/.next/server/chunks/ssr/_1q3gglq._.js +3 -0
- package/.next/server/chunks/ssr/_1q3gglq._.js.map +1 -0
- package/.next/server/chunks/ssr/_1y5sreb._.js +3 -0
- package/.next/server/chunks/ssr/_1y5sreb._.js.map +1 -0
- package/.next/server/chunks/ssr/_1zlpzyk._.js +1 -1
- package/.next/server/chunks/ssr/_1zlpzyk._.js.map +1 -1
- package/.next/server/chunks/ssr/app_(dashboard)_mcp_page_tsx_0cg7pz9._.js +1 -1
- package/.next/server/chunks/ssr/app_(dashboard)_mcp_page_tsx_0cg7pz9._.js.map +1 -1
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/pages/404.html +2 -2
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/0brzabhj3foow.js +1 -0
- package/.next/static/chunks/0cbg1vmtl84ae.css +1 -0
- package/.next/static/chunks/0hf0pedij0d6a.js +7 -0
- package/.next/static/chunks/1lo5yg9gvb9eg.js +7 -0
- package/.next/static/chunks/1s-rfyrjre6lb.js +1 -0
- package/.next/static/chunks/27siz43i4h5l7.js +9 -0
- package/.next/static/chunks/29p-wdja_cbgh.js +11 -0
- package/.next/static/chunks/396ikhrcofosq.js +7 -0
- package/.next/static/chunks/3m3fw3fmcc301.js +7 -0
- package/.next/trace +2 -0
- package/.next/trace-build +1 -1
- package/.next/types/cache-life.d.ts +145 -0
- package/.next/types/routes.d.ts +139 -0
- package/.next/types/validator.ts +682 -0
- package/bin/loom.mjs +80 -21
- package/package.json +1 -1
- package/.next/server/chunks/ssr/_0g6iz5n._.js +0 -3
- package/.next/server/chunks/ssr/_0g6iz5n._.js.map +0 -1
- package/.next/server/chunks/ssr/_0mim08o._.js +0 -3
- package/.next/server/chunks/ssr/_0mim08o._.js.map +0 -1
- package/.next/server/chunks/ssr/_0xm-krv._.js +0 -9
- package/.next/server/chunks/ssr/_0xm-krv._.js.map +0 -1
- package/.next/server/chunks/ssr/_0zxn_u0._.js +0 -3
- package/.next/server/chunks/ssr/_0zxn_u0._.js.map +0 -1
- package/.next/server/chunks/ssr/_151pht4._.js +0 -9
- package/.next/server/chunks/ssr/_151pht4._.js.map +0 -1
- package/.next/server/chunks/ssr/_18tl_0o._.js +0 -9
- package/.next/server/chunks/ssr/_18tl_0o._.js.map +0 -1
- package/.next/server/chunks/ssr/_19nuoa6._.js +0 -9
- package/.next/server/chunks/ssr/_19nuoa6._.js.map +0 -1
- package/.next/server/chunks/ssr/_1ax02l9._.js +0 -3
- package/.next/server/chunks/ssr/_1ax02l9._.js.map +0 -1
- package/.next/server/chunks/ssr/_1fze3ic._.js +0 -9
- package/.next/server/chunks/ssr/_1fze3ic._.js.map +0 -1
- package/.next/static/chunks/0zryggvaj_s87.js +0 -7
- package/.next/static/chunks/16bx44gr1d_ij.js +0 -7
- package/.next/static/chunks/172e7ymu9a3w9.js +0 -1
- package/.next/static/chunks/1_w-1rm5wy0l7.css +0 -1
- package/.next/static/chunks/2j_bpzzylp1un.js +0 -9
- package/.next/static/chunks/2r2pwisd9bptv.js +0 -11
- package/.next/static/chunks/3at-42v-_yh7y.js +0 -7
- package/.next/static/chunks/3bp0ieicfxx5n.js +0 -1
- package/.next/static/chunks/3et56kszc9f9a.js +0 -7
- /package/.next/static/{S-TxD5uw__EHY12mebgvS → wCZkC7ZaYrxG37d-e2tac}/_buildManifest.js +0 -0
- /package/.next/static/{S-TxD5uw__EHY12mebgvS → wCZkC7ZaYrxG37d-e2tac}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{S-TxD5uw__EHY12mebgvS → wCZkC7ZaYrxG37d-e2tac}/_ssgManifest.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../components/ui/card.tsx","../../../../components/ui/input.tsx","../../../../node_modules/%40radix-ui/react-label/dist/index.mjs","../../../../components/ui/label.tsx","../../../../node_modules/%40radix-ui/react-use-previous/src/use-previous.tsx","../../../../lib/api/models.ts","../../../../node_modules/%40radix-ui/number/src/number.ts","../../../../node_modules/lucide-react/src/icons/chevron-down.ts","../../../../components/ProviderIcon.tsx","../../../../node_modules/lucide-react/src/icons/search.ts","../../../../node_modules/lucide-react/src/icons/bot.ts","../../../../node_modules/lucide-react/src/icons/trash-2.ts","../../../../node_modules/%40radix-ui/react-alert-dialog/dist/index.mjs","../../../../components/ui/alert-dialog.tsx","../../../../components/ui/confirm-dialog.tsx","../../../../components/ui/table.tsx","../../../../node_modules/lucide-react/src/icons/plus.ts","../../../../components/ui/data-table.tsx","../../../../node_modules/lucide-react/src/icons/inbox.ts","../../../../node_modules/lucide-react/src/icons/user.ts"],"sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Card({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card\"\n className={cn(\n \"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6\", className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center px-6 [.border-t]:pt-6\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n \"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\n","\"use client\";\n\n// src/label.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Label\";\nvar Label = React.forwardRef((props, forwardedRef) => {\n return /* @__PURE__ */ jsx(\n Primitive.label,\n {\n ...props,\n ref: forwardedRef,\n onMouseDown: (event) => {\n const target = event.target;\n if (target.closest(\"button, input, select, textarea\")) return;\n props.onMouseDown?.(event);\n if (!event.defaultPrevented && event.detail > 1) event.preventDefault();\n }\n }\n );\n});\nLabel.displayName = NAME;\nvar Root = Label;\nexport {\n Label,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Label }\n","import * as React from 'react';\n\nfunction usePrevious<T>(value: T) {\n const ref = React.useRef({ value, previous: value });\n\n // We compare values before making an update to ensure that\n // a change has been made. This ensures the previous value is\n // persisted correctly between renders.\n return React.useMemo(() => {\n if (ref.current.value !== value) {\n ref.current.previous = ref.current.value;\n ref.current.value = value;\n }\n return ref.current.previous;\n }, [value]);\n}\n\nexport { usePrevious };\n","import { defineResource } from \"./resource\";\nimport type { ModelCreateInput, ModelDTO, ModelUpdateInput } from \"@/lib/schemas/model\";\n\nexport const models = defineResource<\n ModelDTO,\n ModelCreateInput,\n ModelUpdateInput,\n Record<string, unknown>,\n ModelDTO[]\n>({\n path: \"/models\",\n key: \"models\",\n listShape: \"array\",\n staleTime: 60_000,\n invalidates: [\"providers\"],\n});\n","function clamp(value: number, [min, max]: [number, number]): number {\n return Math.min(max, Math.max(min, value));\n}\n\nexport { clamp };\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm6 9 6 6 6-6', key: 'qrunsl' }]];\n\n/**\n * @component @name ChevronDown\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/chevron-down\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronDown = createLucideIcon('chevron-down', __iconNode);\n\nexport default ChevronDown;\n","import React, { useState, memo } from 'react';\nimport { cn } from '@/lib/utils';\n\ninterface ProviderIconProps {\n providerName: string;\n className?: string;\n width?: number;\n height?: number;\n}\n\nconst PROVIDER_LOGOS: Record<string, string> = {\n 'openai': '/providers/openai.svg',\n 'claude': '/providers/claude.svg',\n 'anthropic': '/providers/claude.svg',\n 'gemini': '/providers/gemini.svg',\n 'google': '/providers/gemini.svg',\n 'vertexai': '/providers/vertexai.svg',\n 'vertex': '/providers/vertex.svg',\n 'deepseek': '/providers/deepseek.png',\n 'moonshot': '/providers/moonshot.png',\n 'zhipu': '/providers/zhipu.png',\n 'aliyun': '/providers/alibabacloud.png',\n 'alibabacloud': '/providers/alibabacloud.png',\n 'siliconflow': '/providers/siliconflow.svg',\n 'tei': '/providers/tei.svg',\n 'transformers': '/providers/transformers.svg',\n 'baichuan': '/providers/baichuan.png',\n 'volcengine': '/providers/volcengine.png',\n 'stepfun': '/providers/stepfun.png',\n};\n\nconst DARK_INVERT_PROVIDERS = new Set(['openai', 'vertex', 'vertexai', 'siliconflow']);\n\nexport const ProviderIcon = memo(function ProviderIcon({\n providerName,\n className,\n width = 24,\n height = 24\n}: ProviderIconProps) {\n const [imgError, setImgError] = useState(false);\n\n const normalizedName = providerName.toLowerCase().replace(/[^a-z0-9_]/g, '');\n const logoSrc = PROVIDER_LOGOS[normalizedName];\n const isDarkInvert = DARK_INVERT_PROVIDERS.has(normalizedName);\n\n if (logoSrc && !imgError) {\n return (\n <img\n src={logoSrc}\n alt=\"\"\n width={width}\n height={height}\n loading=\"lazy\"\n className={cn(\"object-contain shrink-0\", isDarkInvert && \"dark:invert\", className)}\n onError={() => setImgError(true)}\n />\n );\n }\n\n return (\n <span\n className={cn(\n \"rounded bg-muted flex items-center justify-center text-[8px] font-bold shrink-0\",\n className\n )}\n style={{ width, height }}\n >\n {providerName.substring(0, 2).toUpperCase()}\n </span>\n );\n})\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm21 21-4.34-4.34', key: '14j7rj' }],\n ['circle', { cx: '11', cy: '11', r: '8', key: '4ej97u' }],\n];\n\n/**\n * @component @name Search\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/search\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Search = createLucideIcon('search', __iconNode);\n\nexport default Search;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 8V4H8', key: 'hb8ula' }],\n ['rect', { width: '16', height: '12', x: '4', y: '8', rx: '2', key: 'enze0r' }],\n ['path', { d: 'M2 14h2', key: 'vft8re' }],\n ['path', { d: 'M20 14h2', key: '4cs60a' }],\n ['path', { d: 'M15 13v2', key: '1xurst' }],\n ['path', { d: 'M9 13v2', key: 'rq6x2g' }],\n];\n\n/**\n * @component @name Bot\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/bot\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Bot = createLucideIcon('bot', __iconNode);\n\nexport default Bot;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M10 11v6', key: 'nco0om' }],\n ['path', { d: 'M14 11v6', key: 'outv1u' }],\n ['path', { d: 'M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6', key: 'miytrc' }],\n ['path', { d: 'M3 6h18', key: 'd0wm0j' }],\n ['path', { d: 'M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2', key: 'e791ji' }],\n];\n\n/**\n * @component @name Trash2\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/trash-2\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Trash2 = createLucideIcon('trash-2', __iconNode);\n\nexport default Trash2;\n","\"use client\";\n\n// src/alert-dialog.tsx\nimport * as React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { createDialogScope } from \"@radix-ui/react-dialog\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createSlottable } from \"@radix-ui/react-slot\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar ROOT_NAME = \"AlertDialog\";\nvar [createAlertDialogContext, createAlertDialogScope] = createContextScope(ROOT_NAME, [\n createDialogScope\n]);\nvar useDialogScope = createDialogScope();\nvar AlertDialog = (props) => {\n const { __scopeAlertDialog, ...alertDialogProps } = props;\n const dialogScope = useDialogScope(__scopeAlertDialog);\n return /* @__PURE__ */ jsx(DialogPrimitive.Root, { ...dialogScope, ...alertDialogProps, modal: true });\n};\nAlertDialog.displayName = ROOT_NAME;\nvar TRIGGER_NAME = \"AlertDialogTrigger\";\nvar AlertDialogTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeAlertDialog, ...triggerProps } = props;\n const dialogScope = useDialogScope(__scopeAlertDialog);\n return /* @__PURE__ */ jsx(DialogPrimitive.Trigger, { ...dialogScope, ...triggerProps, ref: forwardedRef });\n }\n);\nAlertDialogTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"AlertDialogPortal\";\nvar AlertDialogPortal = (props) => {\n const { __scopeAlertDialog, ...portalProps } = props;\n const dialogScope = useDialogScope(__scopeAlertDialog);\n return /* @__PURE__ */ jsx(DialogPrimitive.Portal, { ...dialogScope, ...portalProps });\n};\nAlertDialogPortal.displayName = PORTAL_NAME;\nvar OVERLAY_NAME = \"AlertDialogOverlay\";\nvar AlertDialogOverlay = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeAlertDialog, ...overlayProps } = props;\n const dialogScope = useDialogScope(__scopeAlertDialog);\n return /* @__PURE__ */ jsx(DialogPrimitive.Overlay, { ...dialogScope, ...overlayProps, ref: forwardedRef });\n }\n);\nAlertDialogOverlay.displayName = OVERLAY_NAME;\nvar CONTENT_NAME = \"AlertDialogContent\";\nvar [AlertDialogContentProvider, useAlertDialogContentContext] = createAlertDialogContext(CONTENT_NAME);\nvar Slottable = createSlottable(\"AlertDialogContent\");\nvar AlertDialogContent = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeAlertDialog, children, ...contentProps } = props;\n const dialogScope = useDialogScope(__scopeAlertDialog);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n const cancelRef = React.useRef(null);\n return /* @__PURE__ */ jsx(\n DialogPrimitive.WarningProvider,\n {\n contentName: CONTENT_NAME,\n titleName: TITLE_NAME,\n docsSlug: \"alert-dialog\",\n children: /* @__PURE__ */ jsx(AlertDialogContentProvider, { scope: __scopeAlertDialog, cancelRef, children: /* @__PURE__ */ jsxs(\n DialogPrimitive.Content,\n {\n role: \"alertdialog\",\n ...dialogScope,\n ...contentProps,\n ref: composedRefs,\n onOpenAutoFocus: composeEventHandlers(contentProps.onOpenAutoFocus, (event) => {\n event.preventDefault();\n cancelRef.current?.focus({ preventScroll: true });\n }),\n onPointerDownOutside: (event) => event.preventDefault(),\n onInteractOutside: (event) => event.preventDefault(),\n children: [\n /* @__PURE__ */ jsx(Slottable, { children }),\n /* @__PURE__ */ jsx(DescriptionWarning, { contentRef })\n ]\n }\n ) })\n }\n );\n }\n);\nAlertDialogContent.displayName = CONTENT_NAME;\nvar TITLE_NAME = \"AlertDialogTitle\";\nvar AlertDialogTitle = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeAlertDialog, ...titleProps } = props;\n const dialogScope = useDialogScope(__scopeAlertDialog);\n return /* @__PURE__ */ jsx(DialogPrimitive.Title, { ...dialogScope, ...titleProps, ref: forwardedRef });\n }\n);\nAlertDialogTitle.displayName = TITLE_NAME;\nvar DESCRIPTION_NAME = \"AlertDialogDescription\";\nvar AlertDialogDescription = React.forwardRef((props, forwardedRef) => {\n const { __scopeAlertDialog, ...descriptionProps } = props;\n const dialogScope = useDialogScope(__scopeAlertDialog);\n return /* @__PURE__ */ jsx(DialogPrimitive.Description, { ...dialogScope, ...descriptionProps, ref: forwardedRef });\n});\nAlertDialogDescription.displayName = DESCRIPTION_NAME;\nvar ACTION_NAME = \"AlertDialogAction\";\nvar AlertDialogAction = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeAlertDialog, ...actionProps } = props;\n const dialogScope = useDialogScope(__scopeAlertDialog);\n return /* @__PURE__ */ jsx(DialogPrimitive.Close, { ...dialogScope, ...actionProps, ref: forwardedRef });\n }\n);\nAlertDialogAction.displayName = ACTION_NAME;\nvar CANCEL_NAME = \"AlertDialogCancel\";\nvar AlertDialogCancel = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeAlertDialog, ...cancelProps } = props;\n const { cancelRef } = useAlertDialogContentContext(CANCEL_NAME, __scopeAlertDialog);\n const dialogScope = useDialogScope(__scopeAlertDialog);\n const ref = useComposedRefs(forwardedRef, cancelRef);\n return /* @__PURE__ */ jsx(DialogPrimitive.Close, { ...dialogScope, ...cancelProps, ref });\n }\n);\nAlertDialogCancel.displayName = CANCEL_NAME;\nvar DescriptionWarning = ({ contentRef }) => {\n const MESSAGE = `\\`${CONTENT_NAME}\\` requires a description for the component to be accessible for screen reader users.\n\nYou can add a description to the \\`${CONTENT_NAME}\\` by passing a \\`${DESCRIPTION_NAME}\\` component as a child, which also benefits sighted users by adding visible context to the dialog.\n\nAlternatively, you can use your own component as a description by assigning it an \\`id\\` and passing the same value to the \\`aria-describedby\\` prop in \\`${CONTENT_NAME}\\`. If the description is confusing or duplicative for sighted users, you can use the \\`@radix-ui/react-visually-hidden\\` primitive as a wrapper around your description component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/alert-dialog`;\n React.useEffect(() => {\n const hasDescription = document.getElementById(\n contentRef.current?.getAttribute(\"aria-describedby\")\n );\n if (!hasDescription) console.warn(MESSAGE);\n }, [MESSAGE, contentRef]);\n return null;\n};\nvar Root2 = AlertDialog;\nvar Trigger2 = AlertDialogTrigger;\nvar Portal2 = AlertDialogPortal;\nvar Overlay2 = AlertDialogOverlay;\nvar Content2 = AlertDialogContent;\nvar Action = AlertDialogAction;\nvar Cancel = AlertDialogCancel;\nvar Title2 = AlertDialogTitle;\nvar Description2 = AlertDialogDescription;\nexport {\n Action,\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n Cancel,\n Content2 as Content,\n Description2 as Description,\n Overlay2 as Overlay,\n Portal2 as Portal,\n Root2 as Root,\n Title2 as Title,\n Trigger2 as Trigger,\n createAlertDialogScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\"\n\nimport { cn } from \"@/lib/utils\"\nimport { buttonVariants } from \"@/components/ui/button\"\n\nconst AlertDialog = AlertDialogPrimitive.Root\n\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger\n\nconst AlertDialogPortal = AlertDialogPrimitive.Portal\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Overlay\n className={cn(\n \"fixed inset-0 z-50 bg-black/50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n ref={ref}\n />\n))\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName\n\nconst AlertDialogContent = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n ref={ref}\n className={cn(\n // Animation kept minimal — fade + subtle zoom only,\n // matching the regular Dialog primitive. The default\n // shadcn classes (slide-in-from-left-1/2 +\n // slide-in-from-top-[48%]) caused a jarring\n // edge-fly effect for what's already a centered\n // modal. Visual style follows the Dialog primitive\n // verbatim (rounded-lg + gap-4 + p-6 + max-w-lg).\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg duration-200 outline-none\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n className\n )}\n {...props}\n />\n </AlertDialogPortal>\n))\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName\n\nconst AlertDialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-2 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n)\nAlertDialogHeader.displayName = \"AlertDialogHeader\"\n\nconst AlertDialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n)\nAlertDialogFooter.displayName = \"AlertDialogFooter\"\n\nconst AlertDialogTitle = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold\", className)}\n {...props}\n />\n))\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName\n\nconst AlertDialogDescription = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nAlertDialogDescription.displayName =\n AlertDialogPrimitive.Description.displayName\n\nconst AlertDialogAction = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Action>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Action\n ref={ref}\n className={cn(buttonVariants(), className)}\n {...props}\n />\n))\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName\n\nconst AlertDialogCancel = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Cancel\n ref={ref}\n className={cn(\n buttonVariants({ variant: \"outline\" }),\n \"mt-2 sm:mt-0\",\n className\n )}\n {...props}\n />\n))\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName\n\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { AlertTriangle, Loader2 } from \"lucide-react\"\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from \"@/components/ui/alert-dialog\"\nimport { cn } from \"@/lib/utils\"\n\ninterface ConfirmDialogProps {\n /** Truthy → dialog open. Passing the resource being acted on (e.g. the\n * row to delete) doubles as the open flag — the caller stores it in\n * state, then `onOpenChange(false)` clears it. */\n open: boolean\n onOpenChange: (open: boolean) => void\n title: React.ReactNode\n description: React.ReactNode\n /** Action button label. Default: \"Confirm\". */\n confirmLabel?: React.ReactNode\n cancelLabel?: React.ReactNode\n /** When true, action button is styled as destructive (red) and a\n * warning icon is prepended to the title. */\n destructive?: boolean\n /** Disable buttons + show a spinner on the action while the mutation runs. */\n isLoading?: boolean\n onConfirm: () => void\n}\n\n/**\n * Single source of truth for confirm-style alert dialogs (delete, revoke,\n * etc.). Replaces ~25 lines of AlertDialog boilerplate at every call site.\n *\n * Idiomatic usage:\n * const [toDelete, setToDelete] = useState<X | null>(null)\n * const remove = xResource.useDelete({ onSuccess: () => setToDelete(null) })\n * <ConfirmDialog\n * open={!!toDelete}\n * onOpenChange={(o) => !o && setToDelete(null)}\n * title=\"Delete X?\"\n * description={<>This will permanently delete <b>{toDelete?.name}</b>.</>}\n * destructive\n * isLoading={remove.isPending}\n * onConfirm={() => toDelete && remove.mutate(toDelete.id)}\n * />\n */\nexport function ConfirmDialog({\n open,\n onOpenChange,\n title,\n description,\n confirmLabel = \"Confirm\",\n cancelLabel = \"Cancel\",\n destructive,\n isLoading,\n onConfirm,\n}: ConfirmDialogProps) {\n return (\n <AlertDialog open={open} onOpenChange={onOpenChange}>\n <AlertDialogContent>\n <AlertDialogHeader>\n <div className=\"flex items-start gap-3\">\n {destructive && (\n <div className=\"mt-0.5 flex h-9 w-9 shrink-0 items-center justify-center rounded-full bg-destructive/10 text-destructive\">\n <AlertTriangle className=\"h-4 w-4\" />\n </div>\n )}\n <div className=\"flex-1 space-y-1.5\">\n <AlertDialogTitle className={cn(destructive && \"text-foreground\")}>\n {title}\n </AlertDialogTitle>\n <AlertDialogDescription>{description}</AlertDialogDescription>\n </div>\n </div>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel disabled={isLoading}>{cancelLabel}</AlertDialogCancel>\n <AlertDialogAction\n onClick={(e) => {\n e.preventDefault()\n onConfirm()\n }}\n disabled={isLoading}\n className={cn(\n destructive &&\n \"bg-destructive text-white shadow-sm shadow-destructive/30 hover:bg-destructive/90 focus-visible:ring-destructive/40\",\n )}\n >\n {isLoading && <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />}\n {confirmLabel}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n <div\n data-slot=\"table-container\"\n className=\"relative w-full overflow-x-auto\"\n >\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b\", className)}\n {...props}\n />\n )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n \"hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"text-muted-foreground mt-4 text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'M12 5v14', key: 's699le' }],\n];\n\n/**\n * @component @name Plus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/plus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Plus = createLucideIcon('plus', __iconNode);\n\nexport default Plus;\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Inbox } from \"lucide-react\"\n\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@/components/ui/table\"\nimport { cn } from \"@/lib/utils\"\n\n/**\n * Shared visual contract for dashboard data tables (currently used by\n * /logs and /providers#models). Pages compose these primitives so the\n * \"Loom dashboard table\" look — sticky muted header, uppercase head text,\n * zebra rows, hover highlight, consistent padding — lives in exactly one\n * place. Future style tweaks touch this file only.\n *\n * These primitives are visual-only by design (SRP). They do not know\n * about sorting, pagination, or data fetching; callers wire those.\n */\n\nexport function DataTableShell({\n className,\n ...props\n}: React.ComponentProps<\"table\">) {\n return (\n <div className=\"overflow-hidden\">\n <Table className={className} {...props} />\n </div>\n )\n}\n\nexport function DataTableHeader({\n className,\n ...props\n}: React.ComponentProps<\"thead\">) {\n return (\n <TableHeader\n className={cn(\"bg-muted/40 sticky top-0 z-10\", className)}\n {...props}\n />\n )\n}\n\nexport function DataTableHeaderRow({\n className,\n ...props\n}: React.ComponentProps<\"tr\">) {\n return (\n <TableRow\n className={cn(\n \"hover:bg-transparent border-b-muted/60 shadow-sm\",\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function DataTableHead({\n className,\n ...props\n}: React.ComponentProps<\"th\">) {\n return (\n <TableHead\n className={cn(\n \"h-10 text-xs font-semibold uppercase tracking-wide text-muted-foreground/80 first:pl-4 last:pr-4\",\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function DataTableRow({\n className,\n interactive = true,\n ...props\n}: React.ComponentProps<\"tr\"> & { interactive?: boolean }) {\n return (\n <TableRow\n className={cn(\n \"h-10 border-b-muted/20 even:bg-muted/50 group\",\n interactive && \"cursor-pointer hover:bg-muted/90\",\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function DataTableCell({\n className,\n ...props\n}: React.ComponentProps<\"td\">) {\n return (\n <TableCell\n className={cn(\"py-2 first:pl-4 last:pr-4\", className)}\n {...props}\n />\n )\n}\n\nexport function DataTableEmpty({\n colSpan,\n children: _children,\n}: {\n colSpan: number\n children?: React.ReactNode\n}) {\n void _children\n return (\n <TableRow className=\"hover:bg-transparent\">\n <TableCell\n colSpan={colSpan}\n className=\"h-48 text-center align-middle text-muted-foreground/40\"\n >\n <div className=\"flex items-center justify-center\">\n <Inbox className=\"h-8 w-8\" aria-label=\"empty\" />\n </div>\n </TableCell>\n </TableRow>\n )\n}\n\nexport { TableBody as DataTableBody }\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['polyline', { points: '22 12 16 12 14 15 10 15 8 12 2 12', key: 'o97t9d' }],\n [\n 'path',\n {\n d: 'M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z',\n key: 'oot6mr',\n },\n ],\n];\n\n/**\n * @component @name Inbox\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/inbox\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Inbox = createLucideIcon('inbox', __iconNode);\n\nexport default Inbox;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2', key: '975kel' }],\n ['circle', { cx: '12', cy: '7', r: '4', key: '17ys0d' }],\n];\n\n/**\n * @component @name User\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/user\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst User = createLucideIcon('user', __iconNode);\n\nexport default User;\n"],"names":["Card","className","props","CardHeader","CardTitle","CardDescription","CardAction","CardContent","CardFooter","Input","type","NAME","Label","forwardedRef","label","ref","onMouseDown","event","target","closest","defaultPrevented","detail","preventDefault","displayName","Root","models","path","key","listShape","staleTime","invalidates","PROVIDER_LOGOS","DARK_INVERT_PROVIDERS","Set","ProviderIcon","providerName","width","height","imgError","setImgError","normalizedName","toLowerCase","replace","logoSrc","isDarkInvert","has","src","alt","loading","onError","style","substring","toUpperCase","ROOT_NAME","createAlertDialogContext","createAlertDialogScope","useDialogScope","AlertDialog","__scopeAlertDialog","alertDialogProps","dialogScope","modal","TRIGGER_NAME","AlertDialogTrigger","triggerProps","PORTAL_NAME","AlertDialogPortal","portalProps","OVERLAY_NAME","AlertDialogOverlay","overlayProps","CONTENT_NAME","AlertDialogContentProvider","useAlertDialogContentContext","Slottable","AlertDialogContent","children","contentProps","contentRef","composedRefs","cancelRef","contentName","titleName","TITLE_NAME","docsSlug","scope","role","onOpenAutoFocus","current","focus","preventScroll","onPointerDownOutside","onInteractOutside","DescriptionWarning","AlertDialogTitle","titleProps","DESCRIPTION_NAME","AlertDialogDescription","descriptionProps","ACTION_NAME","AlertDialogAction","actionProps","CANCEL_NAME","AlertDialogCancel","cancelProps","MESSAGE","hasDescription","document","getElementById","getAttribute","console","warn","Root2","Trigger2","Portal2","Overlay2","Content2","Action","Cancel","Title2","Description2","Table","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption"],"mappings":"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","ignoreList":[2,9,10,11,12,16,18,19]}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[290669,a=>{"use strict";let b=(0,a.i(883706).default)("activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);a.s(["Activity",0,b],290669)},634755,a=>{"use strict";var b=a.i(187924),c=a.i(965733),d=a.i(572131),e=a.i(823292),f=a.i(596221);a.i(506122);var g=a.i(187527),h=a.i(524634),i=a.i(324546),j=a.i(74761),k=a.i(340695),l=a.i(205522),m=a.i(917171),n=a.i(280281),o=a.i(546893),p=a.i(887682);function q({mode:a,model:c,defaultProviderId:s,onSaved:t,onCancel:u}){let{data:v}=i.providers.useList(),{data:w}=g.capabilities.useList(),{data:x}=j.variants.useList(),[y,z]=(0,d.useState)(""),[A,B]=(0,d.useState)(""),[C,D]=(0,d.useState)(""),[E,F]=(0,d.useState)("chat"),[G,H]=(0,d.useState)(""),[I,J]=(0,d.useState)(""),[K,L]=(0,d.useState)(""),[M,N]=(0,d.useState)(""),[O,P]=(0,d.useState)(""),[Q,R]=(0,d.useState)("{}"),[S,T]=(0,d.useState)(!0),[U,V]=(0,d.useState)(null),W=(0,d.useMemo)(()=>"create"===a&&!!c?.is_discovered,[a,c?.is_discovered]),X="edit"===a||W;(0,d.useEffect)(()=>{c?(z(c.name),B(c.provider_id??""),D(c.model_id??c.name),F(c.type??"chat"),H(c.api_variant_id??c.resolved_variant_id??""),J(c.context_window?.toString()??""),L(c.max_tokens?.toString()??""),N(c.output_dimension?.toString()??""),P(c.description??""),R(JSON.stringify(c.default_params??{},null,2)),T(!1!==c.enabled)):(z(""),B(s??""),D(""),F("chat"),H(""),J(""),L(""),N(""),P(""),R("{}"),T(!0)),V(null)},[a,c,s]);let Y=h.models.useCreate({onSuccess:a=>{e.toast.success("Saved"),t?.(a)},onError:a=>e.toast.error(a.message||"Save failed")}),Z=h.models.useUpdate({onSuccess:a=>{e.toast.success("Saved"),t?.(a??null)},onError:a=>e.toast.error(a.message||"Save failed")}),$=Y.isPending||Z.isPending,_=c||"edit"===a?"Save":"Create",aa=(0,d.useMemo)(()=>(x??[]).filter(a=>a.capability===E),[x,E]),ab=(0,d.useMemo)(()=>(v??[]).find(a=>a.id===A),[v,A]);return(0,b.jsxs)("form",{onSubmit:b=>{if(b.preventDefault(),!y.trim())return e.toast.error("Name required");if(!A)return e.toast.error("Provider required");if(!C.trim())return e.toast.error("Upstream model id required");let d={};try{d=Q.trim()?JSON.parse(Q):{},V(null)}catch(a){V(a instanceof Error?a.message:"Invalid JSON");return}let f={name:y.trim(),provider_id:A,upstream_model_id:C.trim(),type:E,api_variant_id:G||null,default_params:d,context_window:I?Number(I):null,max_tokens:K?Number(K):null,output_dimension:M?Number(M):null,description:O||null,enabled:S};W&&c?.meta?.raw!=null&&(f.discovered_metadata=c.meta.raw),"create"===a?Y.mutate(f):c&&Z.mutate({id:c.id,data:f})},className:"space-y-4",children:[(0,b.jsxs)("div",{className:"grid sm:grid-cols-2 gap-3",children:[(0,b.jsx)(r,{label:"Display name",htmlFor:"m-name",children:(0,b.jsx)(l.Input,{id:"m-name",value:y,onChange:a=>z(a.target.value),placeholder:"gpt-4o-mini",className:"h-9 text-sm font-mono"})}),(0,b.jsx)(r,{label:"Upstream model ID",htmlFor:"m-up",children:(0,b.jsx)(l.Input,{id:"m-up",value:C,onChange:a=>D(a.target.value),placeholder:"gpt-4o-mini",className:"h-9 text-sm font-mono"})})]}),(0,b.jsxs)("div",{className:"grid sm:grid-cols-2 gap-3",children:[(0,b.jsx)(r,{label:"Provider",children:X?(0,b.jsx)(l.Input,{value:ab?.name??A,readOnly:!0,disabled:!0,className:"h-9 text-sm font-mono bg-muted/40"}):(0,b.jsxs)(p.Select,{value:A,onValueChange:B,children:[(0,b.jsx)(p.SelectTrigger,{className:"h-9 text-sm",children:(0,b.jsx)(p.SelectValue,{placeholder:"Select provider"})}),(0,b.jsx)(p.SelectContent,{children:(v??[]).map(a=>(0,b.jsx)(p.SelectItem,{value:a.id,children:a.name},a.id))})]})}),(0,b.jsx)(r,{label:"Capability",children:(0,b.jsxs)(p.Select,{value:E,onValueChange:F,children:[(0,b.jsx)(p.SelectTrigger,{className:"h-9 text-sm",children:(0,b.jsx)(p.SelectValue,{})}),(0,b.jsxs)(p.SelectContent,{children:[(w??[]).map(a=>(0,b.jsx)(p.SelectItem,{value:a.id,children:a.label},a.id)),E&&!(w??[]).some(a=>a.id===E)&&(0,b.jsx)(p.SelectItem,{value:E,children:E})]})]})})]}),aa.length>1&&G&&(0,b.jsx)(r,{label:"Upstream API",children:(0,b.jsxs)(p.Select,{value:G,onValueChange:H,children:[(0,b.jsx)(p.SelectTrigger,{className:"h-9 text-sm",children:(0,b.jsx)(p.SelectValue,{})}),(0,b.jsxs)(p.SelectContent,{children:[aa.map(a=>(0,b.jsx)(p.SelectItem,{value:a.id,children:(0,b.jsx)("span",{className:"font-mono text-xs",children:a.id})},a.id)),!aa.some(a=>a.id===G)&&(0,b.jsx)(p.SelectItem,{value:G,children:(0,b.jsx)("span",{className:"font-mono text-xs",children:G})})]})]})}),(0,b.jsxs)("div",{className:"grid sm:grid-cols-3 gap-3",children:[(0,b.jsx)(r,{label:"Context window",htmlFor:"m-ctx",children:(0,b.jsx)(l.Input,{id:"m-ctx",type:"number",value:I,onChange:a=>J(a.target.value),className:"h-9 text-sm"})}),(0,b.jsx)(r,{label:"Max tokens",htmlFor:"m-max",children:(0,b.jsx)(l.Input,{id:"m-max",type:"number",value:K,onChange:a=>L(a.target.value),className:"h-9 text-sm"})}),(0,b.jsx)(r,{label:"Output dim",htmlFor:"m-dim",children:(0,b.jsx)(l.Input,{id:"m-dim",type:"number",value:M,onChange:a=>N(a.target.value),className:"h-9 text-sm"})})]}),(0,b.jsx)(r,{label:"Description",htmlFor:"m-desc",children:(0,b.jsx)(l.Input,{id:"m-desc",value:O,onChange:a=>P(a.target.value),className:"h-9 text-sm"})}),(0,b.jsxs)(r,{label:"Default params (JSON)",htmlFor:"m-params",children:[(0,b.jsx)(o.Textarea,{id:"m-params",value:Q,onChange:a=>R(a.target.value),rows:5,className:"text-xs font-mono"}),U&&(0,b.jsx)("span",{className:"text-xs text-destructive",children:U})]}),(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)(m.Label,{htmlFor:"m-enabled",className:"text-xs",children:"Enabled"}),(0,b.jsx)(n.Switch,{id:"m-enabled",checked:S,onCheckedChange:T})]}),(0,b.jsxs)("div",{className:"flex items-center justify-end gap-2 pt-2",children:[(0,b.jsx)(k.Button,{type:"button",variant:"outline",size:"sm",onClick:u,disabled:$,children:"Cancel"}),(0,b.jsxs)(k.Button,{type:"submit",size:"sm",disabled:$,children:[$&&(0,b.jsx)(f.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),_]})]})]})}function r({label:a,htmlFor:c,children:d}){return(0,b.jsxs)("div",{className:"grid gap-1.5 min-w-0",children:[(0,b.jsx)(m.Label,{htmlFor:c,className:"text-xs",children:a}),d]})}a.s(["ModelFormDialog",0,function({open:a,onOpenChange:d,mode:e,model:f,defaultProviderId:g}){let h=f||"edit"===e?"Edit":"Add model";return(0,b.jsx)(c.Dialog,{open:a,onOpenChange:d,children:(0,b.jsxs)(c.DialogContent,{className:"sm:max-w-[640px] max-h-[90vh] overflow-y-auto",onOpenAutoFocus:f?a=>a.preventDefault():void 0,children:[(0,b.jsx)(c.DialogHeader,{children:(0,b.jsx)(c.DialogTitle,{children:h})}),a&&(0,b.jsx)(q,{mode:e,model:f,defaultProviderId:g,onSaved:()=>d(!1),onCancel:()=>d(!1)})]})})}],634755)},328790,a=>{"use strict";let b=(0,a.i(883706).default)("refresh-ccw",[["path",{d:"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"14sxne"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16",key:"1hlbsb"}],["path",{d:"M16 16h5v5",key:"ccwih5"}]]);a.s(["RefreshCcw",0,b],328790)},158880,649865,a=>{"use strict";var b=a.i(187924);let c=(0,a.i(883706).default)("inbox",[["polyline",{points:"22 12 16 12 14 15 10 15 8 12 2 12",key:"o97t9d"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}]]);var d=a.i(588237),e=a.i(497895);a.s(["DataTableCell",0,function({className:a,...c}){return(0,b.jsx)(d.TableCell,{className:(0,e.cn)("py-2 first:pl-4 last:pr-4",a),...c})},"DataTableEmpty",0,function({colSpan:a,children:e}){return(0,b.jsx)(d.TableRow,{className:"hover:bg-transparent",children:(0,b.jsx)(d.TableCell,{colSpan:a,className:"h-48 text-center align-middle text-muted-foreground/40",children:(0,b.jsx)("div",{className:"flex items-center justify-center",children:(0,b.jsx)(c,{className:"h-8 w-8","aria-label":"empty"})})})})},"DataTableHead",0,function({className:a,...c}){return(0,b.jsx)(d.TableHead,{className:(0,e.cn)("h-10 text-xs font-semibold uppercase tracking-wide text-muted-foreground/80 first:pl-4 last:pr-4",a),...c})},"DataTableHeader",0,function({className:a,...c}){return(0,b.jsx)(d.TableHeader,{className:(0,e.cn)("bg-muted/40 sticky top-0 z-10",a),...c})},"DataTableHeaderRow",0,function({className:a,...c}){return(0,b.jsx)(d.TableRow,{className:(0,e.cn)("hover:bg-transparent border-b-muted/60 shadow-sm",a),...c})},"DataTableRow",0,function({className:a,interactive:c=!0,...f}){return(0,b.jsx)(d.TableRow,{className:(0,e.cn)("h-10 border-b-muted/20 even:bg-muted/50 group",c&&"cursor-pointer hover:bg-muted/90",a),...f})},"DataTableShell",0,function({className:a,...c}){return(0,b.jsx)("div",{className:"overflow-hidden",children:(0,b.jsx)(d.Table,{className:a,...c})})}],158880),a.s(["DataTableBody",()=>d.TableBody],649865)},131191,a=>{"use strict";let b={chat:"Chat",embedding:"Embedding",image:"Image","audio.speech":"Speech","audio.transcription":"Transcription",rerank:"Rerank"};a.s(["capabilityLabel",0,function(a){return a?b[a]?b[a]:(a.includes(".")?a.split(".").pop():a).replace(/[-_]/g," ").replace(/\b\w/g,a=>a.toUpperCase()):"—"}])},705151,a=>{"use strict";let b=(0,a.i(883706).default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);a.s(["Copy",0,b],705151)},104720,a=>{"use strict";let b=(0,a.i(883706).default)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);a.s(["FileText",0,b],104720)},842586,a=>{"use strict";var b=a.i(187924),c=a.i(654816),d=a.i(497895);let e={ok:{label:"Operational",dot:"bg-green-500 ring-green-200",text:"text-green-600 dark:text-green-400"},down:{label:"Down",dot:"bg-red-500 ring-red-200",text:"text-red-600 dark:text-red-400"},unchecked:{label:"Unchecked",dot:"bg-muted-foreground/40 ring-muted-foreground/10",text:"text-muted-foreground"}};a.s(["ProviderHealthPill",0,function({provider:a,size:f="sm"}){var g;let h;if(!a.health_check_url)return null;let i=e[a.last_health_status??"unchecked"],j=(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)("span",{className:(0,d.cn)("rounded-full ring-1 ring-offset-1 transition-colors duration-300","sm"===f?"h-1 w-1":"h-1.5 w-1.5",i.dot)}),(0,b.jsx)("span",{className:(0,d.cn)("font-medium uppercase tracking-wide","sm"===f?"text-[10px]":"text-xs",i.text),children:i.label})]}),k=(h=(g=a).last_health_checked_at,"down"===g.last_health_status?(0,b.jsxs)("div",{className:"space-y-1 text-xs",children:[(0,b.jsx)("div",{className:"font-semibold",children:"Health check failed"}),g.last_health_error&&(0,b.jsx)("div",{className:"font-mono text-[11px] opacity-80",children:g.last_health_error}),h&&(0,b.jsxs)("div",{className:"opacity-60",children:["Last checked: ",new Date(h).toLocaleString()]})]}):"ok"===g.last_health_status&&h?(0,b.jsxs)("div",{className:"text-xs",children:["Last checked: ",new Date(h).toLocaleString()]}):g.last_health_status?null:(0,b.jsx)("div",{className:"text-xs",children:"Provider has a health-check URL but has not been probed yet."}));return k?(0,b.jsx)(c.TooltipProvider,{children:(0,b.jsxs)(c.Tooltip,{children:[(0,b.jsx)(c.TooltipTrigger,{asChild:!0,children:j}),(0,b.jsx)(c.TooltipContent,{side:"top",className:"max-w-[280px] break-words",children:k})]})}):j}])},653407,a=>{"use strict";var b=a.i(187924),c=a.i(50944),d=a.i(823292),e=a.i(705151),f=a.i(699464),g=a.i(781560),h=a.i(254161),i=a.i(340695),j=a.i(158880),k=a.i(649865),l=a.i(654816),m=a.i(131191);a.s(["ModelsTable",0,function({models:a,onEdit:n,onDelete:o}){let p=(0,c.useRouter)(),q=!!n||!!o;return(0,b.jsxs)(j.DataTableShell,{children:[(0,b.jsx)(j.DataTableHeader,{children:(0,b.jsxs)(j.DataTableHeaderRow,{children:[(0,b.jsx)(j.DataTableHead,{children:"Model Name"}),(0,b.jsx)(j.DataTableHead,{children:"ID"}),(0,b.jsx)(j.DataTableHead,{children:"Provider"}),(0,b.jsx)(j.DataTableHead,{children:"Type"}),(0,b.jsx)(j.DataTableHead,{children:"Context"}),(0,b.jsx)(j.DataTableHead,{children:"Source"}),q&&(0,b.jsx)(j.DataTableHead,{className:"w-[88px] text-right",children:"Actions"})]})}),(0,b.jsx)(k.DataTableBody,{children:0===a.length?(0,b.jsx)(j.DataTableEmpty,{colSpan:q?7:6,children:"No models found."}):a.map(a=>(0,b.jsxs)(j.DataTableRow,{onClick:()=>p.push(`/models/${encodeURIComponent(a.name)}`),title:"Open model dashboard",children:[(0,b.jsx)(j.DataTableCell,{className:"font-mono max-w-[300px]",children:(0,b.jsxs)("div",{className:"flex items-center justify-between gap-2 w-full",children:[(0,b.jsx)("span",{className:"truncate text-xs",title:a.name,children:a.name}),(0,b.jsx)(i.Button,{variant:"ghost",size:"icon",className:"h-6 w-6 opacity-0 group-hover:opacity-100 transition-opacity shrink-0",onClick:b=>{b.stopPropagation(),navigator.clipboard.writeText(a.name),d.toast.success("Model name copied to clipboard")},children:(0,b.jsx)(e.Copy,{className:"h-3 w-3 text-muted-foreground"})})]})}),(0,b.jsx)(j.DataTableCell,{className:"font-mono text-xs text-muted-foreground max-w-[260px]",children:(0,b.jsx)(l.TooltipProvider,{children:(0,b.jsxs)(l.Tooltip,{children:[(0,b.jsx)(l.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"truncate block cursor-default",children:a.model_id})}),(0,b.jsx)(l.TooltipContent,{side:"top",children:(0,b.jsx)("p",{className:"font-mono text-xs",children:a.model_id})})]})})}),(0,b.jsx)(j.DataTableCell,{children:(0,b.jsx)(h.Badge,{variant:"outline",className:"font-normal text-[10px]",children:a.provider})}),(0,b.jsx)(j.DataTableCell,{children:(0,b.jsx)(h.Badge,{variant:"secondary",className:"font-normal text-[10px]",children:(0,m.capabilityLabel)(a.type)})}),(0,b.jsx)(j.DataTableCell,{children:(0,b.jsx)("span",{className:"font-mono text-xs text-muted-foreground",children:a.context_window?a.context_window>=1e3?`${Math.round(a.context_window/1e3)}k`:a.context_window.toLocaleString():"—"})}),(0,b.jsx)(j.DataTableCell,{children:(0,b.jsx)(h.Badge,{variant:a.is_discovered?"secondary":"default",className:"text-[10px] uppercase",children:a.is_discovered?"discovered":"override"})}),q&&(0,b.jsx)(j.DataTableCell,{className:"text-right",onClick:a=>a.stopPropagation(),children:(0,b.jsxs)("div",{className:"flex items-center justify-end gap-1",children:[n&&(0,b.jsx)(i.Button,{variant:"ghost",size:"icon",className:"h-7 w-7",title:a.is_discovered?"Promote to override":"Edit",onClick:b=>{b.stopPropagation(),n(a)},children:(0,b.jsx)(f.Pencil,{className:"h-3.5 w-3.5"})}),o&&!a.is_discovered&&(0,b.jsx)(i.Button,{variant:"ghost",size:"icon",className:"h-7 w-7 text-destructive hover:text-destructive",title:"Delete",onClick:b=>{b.stopPropagation(),o(a)},children:(0,b.jsx)(g.Trash2,{className:"h-3.5 w-3.5"})})]})})]},a.id||a.name))})]})}])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=_0zxn_u0._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../node_modules/lucide-react/src/icons/activity.ts","../../../../components/providers/model-form-dialog.tsx","../../../../components/providers/model-form.tsx","../../../../node_modules/lucide-react/src/icons/refresh-ccw.ts","../../../../components/ui/data-table.tsx","../../../../node_modules/lucide-react/src/icons/inbox.ts","../../../../components/providers/capability-label.ts","../../../../node_modules/lucide-react/src/icons/copy.ts","../../../../node_modules/lucide-react/src/icons/file-text.ts","../../../../components/providers/provider-health-pill.tsx","../../../../components/providers/models-table.tsx"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2',\n key: '169zse',\n },\n ],\n];\n\n/**\n * @component @name Activity\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/activity\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Activity = createLucideIcon('activity', __iconNode);\n\nexport default Activity;\n","\"use client\"\n\nimport * as React from \"react\"\n\nimport type { ModelDTO } from \"@/lib/schemas/model\"\n\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\"\n\nimport { ModelForm } from \"./model-form\"\n\ninterface Props {\n open: boolean\n onOpenChange: (open: boolean) => void\n mode: \"create\" | \"edit\"\n /** In create mode: optional seed (e.g. a discovered model being\n * promoted). In edit mode: the row being edited. */\n model?: ModelDTO | null\n defaultProviderId?: string\n}\n\nexport function ModelFormDialog({ open, onOpenChange, mode, model, defaultProviderId }: Props) {\n // Pure create only when no model is supplied. Promoting a discovered\n // model is a form of edit from the user's POV — show the same title.\n const title = model || mode === \"edit\" ? \"Edit\" : \"Add model\"\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent\n className=\"sm:max-w-[640px] max-h-[90vh] overflow-y-auto\"\n // Whenever the dialog opens against an existing record\n // (edit or discovered-promote) the cursor in the\n // display-name field is surprising. Only pure-add lets\n // the default first-focus stand.\n onOpenAutoFocus={model ? (e) => e.preventDefault() : undefined}\n >\n <DialogHeader>\n <DialogTitle>{title}</DialogTitle>\n </DialogHeader>\n {/* Remount on open so the form initializer effect re-fires\n * with the freshest `model` prop. */}\n {open && (\n <ModelForm\n mode={mode}\n model={model}\n defaultProviderId={defaultProviderId}\n onSaved={() => onOpenChange(false)}\n onCancel={() => onOpenChange(false)}\n />\n )}\n </DialogContent>\n </Dialog>\n )\n}\n","\"use client\"\n\nimport { useEffect, useMemo, useState } from \"react\"\nimport { toast } from \"sonner\"\nimport { Loader2 } from \"lucide-react\"\n\nimport { capabilities, models, providers, variants } from \"@/lib/api\"\nimport type { ModelCreateInput, ModelDTO } from \"@/lib/schemas/model\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport { Switch } from \"@/components/ui/switch\"\nimport { Textarea } from \"@/components/ui/textarea\"\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\"\n\ninterface Props {\n mode: \"create\" | \"edit\"\n /** In create mode: optional seed (e.g. a discovered model being\n * promoted). In edit mode: the row being edited. */\n model?: ModelDTO | null\n /** Used to pre-select the provider on pure create. Always locked\n * (provider field becomes read-only) in edit + discovered-promote. */\n defaultProviderId?: string\n onSaved?: (saved: ModelDTO | null) => void\n onCancel?: () => void\n}\n\nexport function ModelForm({ mode, model, defaultProviderId, onSaved, onCancel }: Props) {\n const { data: providerList } = providers.useList()\n const { data: capabilityList } = capabilities.useList()\n const { data: variantList } = variants.useList()\n\n const [name, setName] = useState(\"\")\n const [providerId, setProviderId] = useState<string>(\"\")\n const [upstreamModelId, setUpstreamModelId] = useState(\"\")\n const [type, setType] = useState<string>(\"chat\")\n const [apiVariantId, setApiVariantId] = useState<string>(\"\")\n const [contextWindow, setContextWindow] = useState(\"\")\n const [maxTokens, setMaxTokens] = useState(\"\")\n const [outputDim, setOutputDim] = useState(\"\")\n const [description, setDescription] = useState(\"\")\n const [defaultParams, setDefaultParams] = useState(\"{}\")\n const [enabled, setEnabled] = useState(true)\n const [parseError, setParseError] = useState<string | null>(null)\n\n const isOverride = useMemo(\n () => mode === \"create\" && !!model?.is_discovered,\n [mode, model?.is_discovered],\n )\n\n // Provider is locked in edit + discovered-promote. Pure create lets\n // the admin pick freely.\n const providerLocked = mode === \"edit\" || isOverride\n useEffect(() => {\n if (model) {\n setName(model.name)\n setProviderId(model.provider_id ?? \"\")\n setUpstreamModelId(model.model_id ?? model.name)\n setType(model.type ?? \"chat\")\n // Seed the variant dropdown from the gateway's currently-\n // resolved choice (pin → preference walk → capability default).\n // The form has no Auto option — the dropdown always shows a\n // concrete variant the gateway is using right now.\n setApiVariantId(model.api_variant_id ?? model.resolved_variant_id ?? \"\")\n setContextWindow(model.context_window?.toString() ?? \"\")\n setMaxTokens(model.max_tokens?.toString() ?? \"\")\n setOutputDim(model.output_dimension?.toString() ?? \"\")\n setDescription(model.description ?? \"\")\n setDefaultParams(JSON.stringify(model.default_params ?? {}, null, 2))\n setEnabled(model.enabled !== false)\n } else {\n setName(\"\")\n setProviderId(defaultProviderId ?? \"\")\n setUpstreamModelId(\"\")\n setType(\"chat\")\n setApiVariantId(\"\")\n setContextWindow(\"\")\n setMaxTokens(\"\")\n setOutputDim(\"\")\n setDescription(\"\")\n setDefaultParams(\"{}\")\n setEnabled(true)\n }\n setParseError(null)\n }, [mode, model, defaultProviderId])\n\n const createMutation = models.useCreate({\n onSuccess: (saved) => {\n toast.success(\"Saved\")\n onSaved?.(saved)\n },\n onError: (e) => toast.error(e.message || \"Save failed\"),\n })\n\n const updateMutation = models.useUpdate({\n onSuccess: (saved) => {\n toast.success(\"Saved\")\n onSaved?.(saved ?? null)\n },\n onError: (e) => toast.error(e.message || \"Save failed\"),\n })\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault()\n if (!name.trim()) return toast.error(\"Name required\")\n if (!providerId) return toast.error(\"Provider required\")\n if (!upstreamModelId.trim()) return toast.error(\"Upstream model id required\")\n\n let params: Record<string, unknown> = {}\n try {\n params = defaultParams.trim() ? JSON.parse(defaultParams) : {}\n setParseError(null)\n } catch (err) {\n setParseError(err instanceof Error ? err.message : \"Invalid JSON\")\n return\n }\n\n const payload: ModelCreateInput = {\n name: name.trim(),\n provider_id: providerId,\n upstream_model_id: upstreamModelId.trim(),\n type,\n api_variant_id: apiVariantId || null,\n default_params: params,\n context_window: contextWindow ? Number(contextWindow) : null,\n max_tokens: maxTokens ? Number(maxTokens) : null,\n output_dimension: outputDim ? Number(outputDim) : null,\n description: description || null,\n enabled,\n }\n\n // When promoting a discovered model into an override, snapshot the\n // raw upstream entry so the gateway can re-project metadata even\n // when the discovery cache is cold.\n if (isOverride && model?.meta?.raw != null) {\n payload.discovered_metadata = model.meta.raw\n }\n\n if (mode === \"create\") {\n createMutation.mutate(payload)\n } else if (model) {\n updateMutation.mutate({ id: model.id, data: payload })\n }\n }\n\n const isLoading = createMutation.isPending || updateMutation.isPending\n const submitLabel = model || mode === \"edit\" ? \"Save\" : \"Create\"\n\n const variantsForCapability = useMemo(\n () => (variantList ?? []).filter((v) => v.capability === type),\n [variantList, type],\n )\n const selectedProvider = useMemo(\n () => (providerList ?? []).find((p) => p.id === providerId),\n [providerList, providerId],\n )\n\n return (\n <form onSubmit={handleSubmit} className=\"space-y-4\">\n <div className=\"grid sm:grid-cols-2 gap-3\">\n <Field label=\"Display name\" htmlFor=\"m-name\">\n <Input\n id=\"m-name\"\n value={name}\n onChange={(e) => setName(e.target.value)}\n placeholder=\"gpt-4o-mini\"\n className=\"h-9 text-sm font-mono\"\n />\n </Field>\n <Field label=\"Upstream model ID\" htmlFor=\"m-up\">\n <Input\n id=\"m-up\"\n value={upstreamModelId}\n onChange={(e) => setUpstreamModelId(e.target.value)}\n placeholder=\"gpt-4o-mini\"\n className=\"h-9 text-sm font-mono\"\n />\n </Field>\n </div>\n\n <div className=\"grid sm:grid-cols-2 gap-3\">\n <Field label=\"Provider\">\n {providerLocked ? (\n <Input\n value={selectedProvider?.name ?? providerId}\n readOnly\n disabled\n className=\"h-9 text-sm font-mono bg-muted/40\"\n />\n ) : (\n <Select value={providerId} onValueChange={setProviderId}>\n <SelectTrigger className=\"h-9 text-sm\">\n <SelectValue placeholder=\"Select provider\" />\n </SelectTrigger>\n <SelectContent>\n {(providerList ?? []).map((p) => (\n <SelectItem key={p.id} value={p.id}>{p.name}</SelectItem>\n ))}\n </SelectContent>\n </Select>\n )}\n </Field>\n <Field label=\"Capability\">\n <Select value={type} onValueChange={setType}>\n <SelectTrigger className=\"h-9 text-sm\"><SelectValue /></SelectTrigger>\n <SelectContent>\n {(capabilityList ?? []).map((c) => (\n <SelectItem key={c.id} value={c.id}>{c.label}</SelectItem>\n ))}\n {type && !(capabilityList ?? []).some((c) => c.id === type) && (\n <SelectItem value={type}>{type}</SelectItem>\n )}\n </SelectContent>\n </Select>\n </Field>\n </div>\n\n {variantsForCapability.length > 1 && apiVariantId && (\n <Field label=\"Upstream API\">\n <Select value={apiVariantId} onValueChange={setApiVariantId}>\n <SelectTrigger className=\"h-9 text-sm\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {variantsForCapability.map((v) => (\n <SelectItem key={v.id} value={v.id}>\n <span className=\"font-mono text-xs\">{v.id}</span>\n </SelectItem>\n ))}\n {!variantsForCapability.some((v) => v.id === apiVariantId) && (\n <SelectItem value={apiVariantId}>\n <span className=\"font-mono text-xs\">{apiVariantId}</span>\n </SelectItem>\n )}\n </SelectContent>\n </Select>\n </Field>\n )}\n\n <div className=\"grid sm:grid-cols-3 gap-3\">\n <Field label=\"Context window\" htmlFor=\"m-ctx\">\n <Input id=\"m-ctx\" type=\"number\" value={contextWindow} onChange={(e) => setContextWindow(e.target.value)} className=\"h-9 text-sm\" />\n </Field>\n <Field label=\"Max tokens\" htmlFor=\"m-max\">\n <Input id=\"m-max\" type=\"number\" value={maxTokens} onChange={(e) => setMaxTokens(e.target.value)} className=\"h-9 text-sm\" />\n </Field>\n <Field label=\"Output dim\" htmlFor=\"m-dim\">\n <Input id=\"m-dim\" type=\"number\" value={outputDim} onChange={(e) => setOutputDim(e.target.value)} className=\"h-9 text-sm\" />\n </Field>\n </div>\n\n <Field label=\"Description\" htmlFor=\"m-desc\">\n <Input id=\"m-desc\" value={description} onChange={(e) => setDescription(e.target.value)} className=\"h-9 text-sm\" />\n </Field>\n\n <Field label=\"Default params (JSON)\" htmlFor=\"m-params\">\n <Textarea\n id=\"m-params\"\n value={defaultParams}\n onChange={(e) => setDefaultParams(e.target.value)}\n rows={5}\n className=\"text-xs font-mono\"\n />\n {parseError && <span className=\"text-xs text-destructive\">{parseError}</span>}\n </Field>\n\n <div className=\"flex items-center justify-between\">\n <Label htmlFor=\"m-enabled\" className=\"text-xs\">Enabled</Label>\n <Switch id=\"m-enabled\" checked={enabled} onCheckedChange={setEnabled} />\n </div>\n\n <div className=\"flex items-center justify-end gap-2 pt-2\">\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={onCancel}\n disabled={isLoading}\n >\n Cancel\n </Button>\n <Button type=\"submit\" size=\"sm\" disabled={isLoading}>\n {isLoading && <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />}\n {submitLabel}\n </Button>\n </div>\n </form>\n )\n}\n\nfunction Field({\n label,\n htmlFor,\n children,\n}: {\n label: string\n htmlFor?: string\n children: React.ReactNode\n}) {\n return (\n <div className=\"grid gap-1.5 min-w-0\">\n <Label htmlFor={htmlFor} className=\"text-xs\">{label}</Label>\n {children}\n </div>\n )\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8', key: '14sxne' }],\n ['path', { d: 'M3 3v5h5', key: '1xhq8a' }],\n ['path', { d: 'M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16', key: '1hlbsb' }],\n ['path', { d: 'M16 16h5v5', key: 'ccwih5' }],\n];\n\n/**\n * @component @name RefreshCcw\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/refresh-ccw\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst RefreshCcw = createLucideIcon('refresh-ccw', __iconNode);\n\nexport default RefreshCcw;\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Inbox } from \"lucide-react\"\n\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@/components/ui/table\"\nimport { cn } from \"@/lib/utils\"\n\n/**\n * Shared visual contract for dashboard data tables (currently used by\n * /logs and /providers#models). Pages compose these primitives so the\n * \"Loom dashboard table\" look — sticky muted header, uppercase head text,\n * zebra rows, hover highlight, consistent padding — lives in exactly one\n * place. Future style tweaks touch this file only.\n *\n * These primitives are visual-only by design (SRP). They do not know\n * about sorting, pagination, or data fetching; callers wire those.\n */\n\nexport function DataTableShell({\n className,\n ...props\n}: React.ComponentProps<\"table\">) {\n return (\n <div className=\"overflow-hidden\">\n <Table className={className} {...props} />\n </div>\n )\n}\n\nexport function DataTableHeader({\n className,\n ...props\n}: React.ComponentProps<\"thead\">) {\n return (\n <TableHeader\n className={cn(\"bg-muted/40 sticky top-0 z-10\", className)}\n {...props}\n />\n )\n}\n\nexport function DataTableHeaderRow({\n className,\n ...props\n}: React.ComponentProps<\"tr\">) {\n return (\n <TableRow\n className={cn(\n \"hover:bg-transparent border-b-muted/60 shadow-sm\",\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function DataTableHead({\n className,\n ...props\n}: React.ComponentProps<\"th\">) {\n return (\n <TableHead\n className={cn(\n \"h-10 text-xs font-semibold uppercase tracking-wide text-muted-foreground/80 first:pl-4 last:pr-4\",\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function DataTableRow({\n className,\n interactive = true,\n ...props\n}: React.ComponentProps<\"tr\"> & { interactive?: boolean }) {\n return (\n <TableRow\n className={cn(\n \"h-10 border-b-muted/20 even:bg-muted/50 group\",\n interactive && \"cursor-pointer hover:bg-muted/90\",\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function DataTableCell({\n className,\n ...props\n}: React.ComponentProps<\"td\">) {\n return (\n <TableCell\n className={cn(\"py-2 first:pl-4 last:pr-4\", className)}\n {...props}\n />\n )\n}\n\nexport function DataTableEmpty({\n colSpan,\n children: _children,\n}: {\n colSpan: number\n children?: React.ReactNode\n}) {\n void _children\n return (\n <TableRow className=\"hover:bg-transparent\">\n <TableCell\n colSpan={colSpan}\n className=\"h-48 text-center align-middle text-muted-foreground/40\"\n >\n <div className=\"flex items-center justify-center\">\n <Inbox className=\"h-8 w-8\" aria-label=\"empty\" />\n </div>\n </TableCell>\n </TableRow>\n )\n}\n\nexport { TableBody as DataTableBody }\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['polyline', { points: '22 12 16 12 14 15 10 15 8 12 2 12', key: 'o97t9d' }],\n [\n 'path',\n {\n d: 'M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z',\n key: 'oot6mr',\n },\n ],\n];\n\n/**\n * @component @name Inbox\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/inbox\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Inbox = createLucideIcon('inbox', __iconNode);\n\nexport default Inbox;\n","/**\n * Display-friendly labels for capability ids. Capability ids are dot-style\n * (`audio.speech`, `audio.transcription`) for namespacing on the server,\n * but rendering them verbatim in the UI looks like a path. Single source\n * of truth so list/table/badge/card all agree.\n *\n * New capabilities fall back to a Title-Cased version of the id.\n */\nconst KNOWN: Record<string, string> = {\n chat: \"Chat\",\n embedding: \"Embedding\",\n image: \"Image\",\n \"audio.speech\": \"Speech\",\n \"audio.transcription\": \"Transcription\",\n rerank: \"Rerank\",\n};\n\nexport function capabilityLabel(id: string | null | undefined): string {\n if (!id) return \"—\";\n if (KNOWN[id]) return KNOWN[id];\n // Fallback: take the last segment, title-case.\n const tail = id.includes(\".\") ? id.split(\".\").pop()! : id;\n return tail.replace(/[-_]/g, \" \").replace(/\\b\\w/g, (c) => c.toUpperCase());\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '14', height: '14', x: '8', y: '8', rx: '2', ry: '2', key: '17jyea' }],\n ['path', { d: 'M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2', key: 'zix9uf' }],\n];\n\n/**\n * @component @name Copy\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/copy\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Copy = createLucideIcon('copy', __iconNode);\n\nexport default Copy;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z',\n key: '1oefj6',\n },\n ],\n ['path', { d: 'M14 2v5a1 1 0 0 0 1 1h5', key: 'wfsgrz' }],\n ['path', { d: 'M10 9H8', key: 'b1mrlr' }],\n ['path', { d: 'M16 13H8', key: 't4e002' }],\n ['path', { d: 'M16 17H8', key: 'z1uh3a' }],\n];\n\n/**\n * @component @name FileText\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/file-text\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FileText = createLucideIcon('file-text', __iconNode);\n\nexport default FileText;\n","import type { ProviderDTO } from \"@/lib/schemas/provider\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/ui/tooltip\"\nimport { cn } from \"@/lib/utils\"\n\n/**\n * Provider health pill.\n *\n * Visibility & color rules (single source of truth — used by both the\n * card grid and the per-provider detail page):\n * - No `health_check_url` → render nothing. We have no signal,\n * so claiming Operational would be a lie.\n * - URL set, status === \"ok\" → green \"Operational\".\n * - URL set, status === \"down\" → red \"Down\" + tooltip with error.\n * - URL set, status === null → grey \"Unchecked\" (never probed).\n *\n * Two `size` variants share the same logic so the card row stays compact\n * and the detail page stays prominent.\n */\ntype Size = \"sm\" | \"md\";\n\nconst STATUS = {\n ok: {\n label: \"Operational\",\n dot: \"bg-green-500 ring-green-200\",\n text: \"text-green-600 dark:text-green-400\",\n },\n down: {\n label: \"Down\",\n dot: \"bg-red-500 ring-red-200\",\n text: \"text-red-600 dark:text-red-400\",\n },\n unchecked: {\n label: \"Unchecked\",\n dot: \"bg-muted-foreground/40 ring-muted-foreground/10\",\n text: \"text-muted-foreground\",\n },\n} as const;\n\nexport function ProviderHealthPill({\n provider,\n size = \"sm\",\n}: {\n provider: Pick<ProviderDTO, \"health_check_url\" | \"last_health_status\" | \"last_health_checked_at\" | \"last_health_error\">;\n size?: Size;\n}) {\n if (!provider.health_check_url) return null;\n\n const key = provider.last_health_status ?? \"unchecked\";\n const s = STATUS[key];\n\n const inner = (\n <div className=\"flex items-center gap-1.5\">\n <span\n className={cn(\n \"rounded-full ring-1 ring-offset-1 transition-colors duration-300\",\n size === \"sm\" ? \"h-1 w-1\" : \"h-1.5 w-1.5\",\n s.dot,\n )}\n />\n <span\n className={cn(\n \"font-medium uppercase tracking-wide\",\n size === \"sm\" ? \"text-[10px]\" : \"text-xs\",\n s.text,\n )}\n >\n {s.label}\n </span>\n </div>\n );\n\n // Tooltip only when there's something useful to show.\n const tooltipBody = tooltipFor(provider);\n if (!tooltipBody) return inner;\n\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>{inner}</TooltipTrigger>\n <TooltipContent side=\"top\" className=\"max-w-[280px] break-words\">\n {tooltipBody}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n}\n\nfunction tooltipFor(\n provider: Pick<ProviderDTO, \"last_health_status\" | \"last_health_checked_at\" | \"last_health_error\">,\n): React.ReactNode {\n const when = provider.last_health_checked_at;\n if (provider.last_health_status === \"down\") {\n return (\n <div className=\"space-y-1 text-xs\">\n <div className=\"font-semibold\">Health check failed</div>\n {provider.last_health_error && (\n <div className=\"font-mono text-[11px] opacity-80\">{provider.last_health_error}</div>\n )}\n {when && <div className=\"opacity-60\">Last checked: {new Date(when).toLocaleString()}</div>}\n </div>\n );\n }\n if (provider.last_health_status === \"ok\" && when) {\n return <div className=\"text-xs\">Last checked: {new Date(when).toLocaleString()}</div>;\n }\n if (!provider.last_health_status) {\n return <div className=\"text-xs\">Provider has a health-check URL but has not been probed yet.</div>;\n }\n return null;\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { useRouter } from \"next/navigation\"\nimport { toast } from \"sonner\"\nimport { Copy, Pencil, Trash2 } from \"lucide-react\"\n\nimport type { ModelDTO } from \"@/lib/schemas/model\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n DataTableBody,\n DataTableCell,\n DataTableEmpty,\n DataTableHead,\n DataTableHeader,\n DataTableHeaderRow,\n DataTableRow,\n DataTableShell,\n} from \"@/components/ui/data-table\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/ui/tooltip\"\n\nimport { capabilityLabel } from \"./capability-label\"\n\ninterface Props {\n models: ModelDTO[]\n /** Admin: per-row Edit handler. Opens the popup form. For discovered\n * rows the parent should open the popup in \"create\" mode so the\n * admin saves a new override pre-filled with the discovered defaults. */\n onEdit?: (model: ModelDTO) => void\n /** Admin: per-row Delete handler. */\n onDelete?: (model: ModelDTO) => void\n}\n\n/** Table of models. Row click navigates to the per-model dashboard.\n * Admin Edit / Delete are direct icon buttons (one click, no dropdown). */\nexport function ModelsTable({ models, onEdit, onDelete }: Props) {\n const router = useRouter()\n const showActions = !!onEdit || !!onDelete\n const columnCount = showActions ? 7 : 6\n\n return (\n <DataTableShell>\n <DataTableHeader>\n <DataTableHeaderRow>\n <DataTableHead>Model Name</DataTableHead>\n <DataTableHead>ID</DataTableHead>\n <DataTableHead>Provider</DataTableHead>\n <DataTableHead>Type</DataTableHead>\n <DataTableHead>Context</DataTableHead>\n <DataTableHead>Source</DataTableHead>\n {showActions && <DataTableHead className=\"w-[88px] text-right\">Actions</DataTableHead>}\n </DataTableHeaderRow>\n </DataTableHeader>\n <DataTableBody>\n {models.length === 0 ? (\n <DataTableEmpty colSpan={columnCount}>No models found.</DataTableEmpty>\n ) : (\n models.map((model) => (\n <DataTableRow\n key={model.id || model.name}\n onClick={() =>\n router.push(`/models/${encodeURIComponent(model.name)}`)\n }\n title=\"Open model dashboard\"\n >\n <DataTableCell className=\"font-mono max-w-[300px]\">\n <div className=\"flex items-center justify-between gap-2 w-full\">\n <span className=\"truncate text-xs\" title={model.name}>\n {model.name}\n </span>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-6 w-6 opacity-0 group-hover:opacity-100 transition-opacity shrink-0\"\n onClick={(e) => {\n e.stopPropagation()\n navigator.clipboard.writeText(model.name)\n toast.success(\"Model name copied to clipboard\")\n }}\n >\n <Copy className=\"h-3 w-3 text-muted-foreground\" />\n </Button>\n </div>\n </DataTableCell>\n <DataTableCell className=\"font-mono text-xs text-muted-foreground max-w-[260px]\">\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"truncate block cursor-default\">\n {model.model_id}\n </span>\n </TooltipTrigger>\n <TooltipContent side=\"top\">\n <p className=\"font-mono text-xs\">{model.model_id}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n </DataTableCell>\n <DataTableCell>\n <Badge variant=\"outline\" className=\"font-normal text-[10px]\">\n {model.provider}\n </Badge>\n </DataTableCell>\n <DataTableCell>\n <Badge variant=\"secondary\" className=\"font-normal text-[10px]\">\n {capabilityLabel(model.type)}\n </Badge>\n </DataTableCell>\n <DataTableCell>\n <span className=\"font-mono text-xs text-muted-foreground\">\n {model.context_window\n ? model.context_window >= 1000\n ? `${Math.round(model.context_window / 1000)}k`\n : model.context_window.toLocaleString()\n : \"—\"}\n </span>\n </DataTableCell>\n <DataTableCell>\n <Badge\n variant={model.is_discovered ? \"secondary\" : \"default\"}\n className=\"text-[10px] uppercase\"\n >\n {model.is_discovered ? \"discovered\" : \"override\"}\n </Badge>\n </DataTableCell>\n {showActions && (\n <DataTableCell\n className=\"text-right\"\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"flex items-center justify-end gap-1\">\n {onEdit && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-7 w-7\"\n title={model.is_discovered ? \"Promote to override\" : \"Edit\"}\n onClick={(e) => {\n e.stopPropagation()\n onEdit(model)\n }}\n >\n <Pencil className=\"h-3.5 w-3.5\" />\n </Button>\n )}\n {onDelete && !model.is_discovered && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-7 w-7 text-destructive hover:text-destructive\"\n title=\"Delete\"\n onClick={(e) => {\n e.stopPropagation()\n onDelete(model)\n }}\n >\n <Trash2 className=\"h-3.5 w-3.5\" />\n </Button>\n )}\n </div>\n </DataTableCell>\n )}\n </DataTableRow>\n ))\n )}\n </DataTableBody>\n </DataTableShell>\n )\n}\n\n"],"names":["ModelForm","mode","model","defaultProviderId","onSaved","onCancel","data","providerList","useList","capabilityList","variantList","name","setName","providerId","setProviderId","upstreamModelId","setUpstreamModelId","type","setType","apiVariantId","setApiVariantId","contextWindow","setContextWindow","maxTokens","setMaxTokens","outputDim","setOutputDim","description","setDescription","defaultParams","setDefaultParams","enabled","setEnabled","parseError","setParseError","isOverride","is_discovered","providerLocked","provider_id","model_id","api_variant_id","resolved_variant_id","context_window","toString","max_tokens","output_dimension","JSON","stringify","default_params","createMutation","useCreate","onSuccess","saved","success","onError","e","error","message","updateMutation","useUpdate","handleSubmit","preventDefault","trim","params","parse","err","Error","payload","upstream_model_id","Number","meta","raw","discovered_metadata","mutate","id","isLoading","isPending","submitLabel","variantsForCapability","filter","v","capability","selectedProvider","find","p","onSubmit","className","Field","label","htmlFor","value","onChange","target","placeholder","readOnly","disabled","onValueChange","map","c","some","length","rows","checked","onCheckedChange","variant","size","onClick","children","KNOWN","chat","embedding","image","rerank","capabilityLabel","tail","includes","split","pop","replace","toUpperCase","STATUS","ok","dot","text","down","unchecked","ProviderHealthPill","provider","health_check_url","key","last_health_status","s","inner","tooltipBody","tooltipFor","asChild","side","when","last_health_checked_at","last_health_error","Date","toLocaleString","ModelsTable","models","onEdit","onDelete","router","showActions","columnCount","colSpan","push","encodeURIComponent","title","stopPropagation","navigator","clipboard","writeText","Math","round"],"mappings":"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","ignoreList":[0,3,5,7,8]}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
module.exports=[587532,a=>{"use strict";let b=(0,a.i(883706).default)("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);a.s(["Search",0,b],587532)},703130,a=>{"use strict";var b=a.i(187924),c=a.i(497895);a.s(["Card",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card",className:(0,c.cn)("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",a),...d})},"CardContent",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-content",className:(0,c.cn)("px-6",a),...d})},"CardDescription",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-description",className:(0,c.cn)("text-muted-foreground text-sm",a),...d})},"CardHeader",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-header",className:(0,c.cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",a),...d})},"CardTitle",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-title",className:(0,c.cn)("leading-none font-semibold",a),...d})}])},130656,a=>{"use strict";a.s(["clamp",0,function(a,[b,c]){return Math.min(c,Math.max(b,a))}])},504699,a=>{"use strict";let b=(0,a.i(883706).default)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);a.s(["default",0,b])},528094,a=>{"use strict";var b=a.i(572131),c=a.i(30553),d=a.i(187924),e=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),f=b.forwardRef((a,b)=>(0,d.jsx)(c.Primitive.span,{...a,ref:b,style:{...e,...a.style}}));f.displayName="VisuallyHidden",a.s(["Root",0,f,"VISUALLY_HIDDEN_STYLES",0,e])},205522,a=>{"use strict";var b=a.i(187924),c=a.i(497895);a.s(["Input",0,function({className:a,type:d,...e}){return(0,b.jsx)("input",{type:d,"data-slot":"input",className:(0,c.cn)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",a),...e})}])},596221,a=>{"use strict";var b=a.i(404650);a.s(["Loader2",()=>b.default])},917171,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(30553),e=c.forwardRef((a,c)=>(0,b.jsx)(d.Primitive.label,{...a,ref:c,onMouseDown:b=>{b.target.closest("button, input, select, textarea")||(a.onMouseDown?.(b),!b.defaultPrevented&&b.detail>1&&b.preventDefault())}}));e.displayName="Label";var f=a.i(497895);a.s(["Label",0,function({className:a,...c}){return(0,b.jsx)(e,{"data-slot":"label",className:(0,f.cn)("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",a),...c})}],917171)},77994,a=>{"use strict";var b=a.i(572131);a.s(["usePrevious",0,function(a){let c=b.useRef({value:a,previous:a});return b.useMemo(()=>(c.current.value!==a&&(c.current.previous=c.current.value,c.current.value=a),c.current.previous),[a])}])},524634,a=>{"use strict";let b=(0,a.i(349682).defineResource)({path:"/models",key:"models",listShape:"array",staleTime:6e4,invalidates:["providers"]});a.s(["models",0,b])},734020,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(497895);let e={openai:"/providers/openai.svg",claude:"/providers/claude.svg",anthropic:"/providers/claude.svg",gemini:"/providers/gemini.svg",google:"/providers/gemini.svg",vertexai:"/providers/vertexai.svg",vertex:"/providers/vertex.svg",deepseek:"/providers/deepseek.png",moonshot:"/providers/moonshot.png",zhipu:"/providers/zhipu.png",aliyun:"/providers/alibabacloud.png",alibabacloud:"/providers/alibabacloud.png",siliconflow:"/providers/siliconflow.svg",tei:"/providers/tei.svg",transformers:"/providers/transformers.svg",baichuan:"/providers/baichuan.png",volcengine:"/providers/volcengine.png",stepfun:"/providers/stepfun.png"},f=new Set(["openai","vertex","vertexai","siliconflow"]),g=(0,c.memo)(function({providerName:a,className:g,width:h=24,height:i=24}){let[j,k]=(0,c.useState)(!1),l=a.toLowerCase().replace(/[^a-z0-9_]/g,""),m=e[l],n=f.has(l);return m&&!j?(0,b.jsx)("img",{src:m,alt:"",width:h,height:i,loading:"lazy",className:(0,d.cn)("object-contain shrink-0",n&&"dark:invert",g),onError:()=>k(!0)}):(0,b.jsx)("span",{className:(0,d.cn)("rounded bg-muted flex items-center justify-center text-[8px] font-bold shrink-0",g),style:{width:h,height:i},children:a.substring(0,2).toUpperCase()})});a.s(["ProviderIcon",0,g])},781560,a=>{"use strict";let b=(0,a.i(883706).default)("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]);a.s(["Trash2",0,b],781560)},73570,a=>{"use strict";var b=a.i(783604);a.s(["AlertTriangle",()=>b.default])},59848,a=>{"use strict";var b=a.i(187924),c=a.i(73570),d=a.i(596221),e=a.i(572131),f=a.i(750104),g=a.i(470121),h=a.i(897942),i=a.i(507554),j=a.i(811011),k="AlertDialog",[l,m]=(0,f.createContextScope)(k,[h.createDialogScope]),n=(0,h.createDialogScope)(),o=a=>{let{__scopeAlertDialog:c,...d}=a,e=n(c);return(0,b.jsx)(h.Root,{...e,...d,modal:!0})};o.displayName=k,e.forwardRef((a,c)=>{let{__scopeAlertDialog:d,...e}=a,f=n(d);return(0,b.jsx)(h.Trigger,{...f,...e,ref:c})}).displayName="AlertDialogTrigger";var p=a=>{let{__scopeAlertDialog:c,...d}=a,e=n(c);return(0,b.jsx)(h.Portal,{...e,...d})};p.displayName="AlertDialogPortal";var q=e.forwardRef((a,c)=>{let{__scopeAlertDialog:d,...e}=a,f=n(d);return(0,b.jsx)(h.Overlay,{...f,...e,ref:c})});q.displayName="AlertDialogOverlay";var r="AlertDialogContent",[s,t]=l(r),u=(0,j.createSlottable)("AlertDialogContent"),v=e.forwardRef((a,c)=>{let{__scopeAlertDialog:d,children:f,...j}=a,k=n(d),l=e.useRef(null),m=(0,g.useComposedRefs)(c,l),o=e.useRef(null);return(0,b.jsx)(h.WarningProvider,{contentName:r,titleName:w,docsSlug:"alert-dialog",children:(0,b.jsx)(s,{scope:d,cancelRef:o,children:(0,b.jsxs)(h.Content,{role:"alertdialog",...k,...j,ref:m,onOpenAutoFocus:(0,i.composeEventHandlers)(j.onOpenAutoFocus,a=>{a.preventDefault(),o.current?.focus({preventScroll:!0})}),onPointerDownOutside:a=>a.preventDefault(),onInteractOutside:a=>a.preventDefault(),children:[(0,b.jsx)(u,{children:f}),(0,b.jsx)(D,{contentRef:l})]})})})});v.displayName=r;var w="AlertDialogTitle",x=e.forwardRef((a,c)=>{let{__scopeAlertDialog:d,...e}=a,f=n(d);return(0,b.jsx)(h.Title,{...f,...e,ref:c})});x.displayName=w;var y="AlertDialogDescription",z=e.forwardRef((a,c)=>{let{__scopeAlertDialog:d,...e}=a,f=n(d);return(0,b.jsx)(h.Description,{...f,...e,ref:c})});z.displayName=y;var A=e.forwardRef((a,c)=>{let{__scopeAlertDialog:d,...e}=a,f=n(d);return(0,b.jsx)(h.Close,{...f,...e,ref:c})});A.displayName="AlertDialogAction";var B="AlertDialogCancel",C=e.forwardRef((a,c)=>{let{__scopeAlertDialog:d,...e}=a,{cancelRef:f}=t(B,d),i=n(d),j=(0,g.useComposedRefs)(c,f);return(0,b.jsx)(h.Close,{...i,...e,ref:j})});C.displayName=B;var D=({contentRef:a})=>{let b=`\`${r}\` requires a description for the component to be accessible for screen reader users.
|
|
2
|
-
|
|
3
|
-
You can add a description to the \`${r}\` by passing a \`${y}\` component as a child, which also benefits sighted users by adding visible context to the dialog.
|
|
4
|
-
|
|
5
|
-
Alternatively, you can use your own component as a description by assigning it an \`id\` and passing the same value to the \`aria-describedby\` prop in \`${r}\`. If the description is confusing or duplicative for sighted users, you can use the \`@radix-ui/react-visually-hidden\` primitive as a wrapper around your description component.
|
|
6
|
-
|
|
7
|
-
For more information, see https://radix-ui.com/primitives/docs/components/alert-dialog`;return e.useEffect(()=>{document.getElementById(a.current?.getAttribute("aria-describedby"))||console.warn(b)},[b,a]),null},E=a.i(497895),F=a.i(340695);let G=e.forwardRef(({className:a,...c},d)=>(0,b.jsx)(q,{className:(0,E.cn)("fixed inset-0 z-50 bg-black/50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",a),...c,ref:d}));G.displayName=q.displayName;let H=e.forwardRef(({className:a,...c},d)=>(0,b.jsxs)(p,{children:[(0,b.jsx)(G,{}),(0,b.jsx)(v,{ref:d,className:(0,E.cn)("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg duration-200 outline-none","data-[state=open]:animate-in data-[state=closed]:animate-out","data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0","data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",a),...c})]}));H.displayName=v.displayName;let I=({className:a,...c})=>(0,b.jsx)("div",{className:(0,E.cn)("flex flex-col space-y-2 text-center sm:text-left",a),...c});I.displayName="AlertDialogHeader";let J=({className:a,...c})=>(0,b.jsx)("div",{className:(0,E.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",a),...c});J.displayName="AlertDialogFooter";let K=e.forwardRef(({className:a,...c},d)=>(0,b.jsx)(x,{ref:d,className:(0,E.cn)("text-lg font-semibold",a),...c}));K.displayName=x.displayName;let L=e.forwardRef(({className:a,...c},d)=>(0,b.jsx)(z,{ref:d,className:(0,E.cn)("text-sm text-muted-foreground",a),...c}));L.displayName=z.displayName;let M=e.forwardRef(({className:a,...c},d)=>(0,b.jsx)(A,{ref:d,className:(0,E.cn)((0,F.buttonVariants)(),a),...c}));M.displayName=A.displayName;let N=e.forwardRef(({className:a,...c},d)=>(0,b.jsx)(C,{ref:d,className:(0,E.cn)((0,F.buttonVariants)({variant:"outline"}),"mt-2 sm:mt-0",a),...c}));N.displayName=C.displayName,a.s(["ConfirmDialog",0,function({open:a,onOpenChange:e,title:f,description:g,confirmLabel:h="Confirm",cancelLabel:i="Cancel",destructive:j,isLoading:k,onConfirm:l}){return(0,b.jsx)(o,{open:a,onOpenChange:e,children:(0,b.jsxs)(H,{children:[(0,b.jsx)(I,{children:(0,b.jsxs)("div",{className:"flex items-start gap-3",children:[j&&(0,b.jsx)("div",{className:"mt-0.5 flex h-9 w-9 shrink-0 items-center justify-center rounded-full bg-destructive/10 text-destructive",children:(0,b.jsx)(c.AlertTriangle,{className:"h-4 w-4"})}),(0,b.jsxs)("div",{className:"flex-1 space-y-1.5",children:[(0,b.jsx)(K,{className:(0,E.cn)(j&&"text-foreground"),children:f}),(0,b.jsx)(L,{children:g})]})]})}),(0,b.jsxs)(J,{children:[(0,b.jsx)(N,{disabled:k,children:i}),(0,b.jsxs)(M,{onClick:a=>{a.preventDefault(),l()},disabled:k,className:(0,E.cn)(j&&"bg-destructive text-white shadow-sm shadow-destructive/30 hover:bg-destructive/90 focus-visible:ring-destructive/40"),children:[k&&(0,b.jsx)(d.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),h]})]})]})})}],59848)},588237,a=>{"use strict";var b=a.i(187924),c=a.i(497895);a.s(["Table",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:(0,b.jsx)("table",{"data-slot":"table",className:(0,c.cn)("w-full caption-bottom text-sm",a),...d})})},"TableBody",0,function({className:a,...d}){return(0,b.jsx)("tbody",{"data-slot":"table-body",className:(0,c.cn)("[&_tr:last-child]:border-0",a),...d})},"TableCell",0,function({className:a,...d}){return(0,b.jsx)("td",{"data-slot":"table-cell",className:(0,c.cn)("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",a),...d})},"TableHead",0,function({className:a,...d}){return(0,b.jsx)("th",{"data-slot":"table-head",className:(0,c.cn)("text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",a),...d})},"TableHeader",0,function({className:a,...d}){return(0,b.jsx)("thead",{"data-slot":"table-header",className:(0,c.cn)("[&_tr]:border-b",a),...d})},"TableRow",0,function({className:a,...d}){return(0,b.jsx)("tr",{"data-slot":"table-row",className:(0,c.cn)("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",a),...d})}])},915618,a=>{"use strict";let b=(0,a.i(883706).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);a.s(["Plus",0,b],915618)},577768,a=>{"use strict";var b=a.i(187924),c=a.i(596221),d=a.i(497895);let e={sm:"h-3.5 w-3.5",md:"h-5 w-5",lg:"h-8 w-8"};a.s(["LoadingState",0,function({label:a="Loading…",size:f="md",variant:g="centered",className:h}){return"inline"===g?(0,b.jsxs)("div",{className:(0,d.cn)("flex items-center gap-2 text-sm text-muted-foreground",h),children:[(0,b.jsx)(c.Loader2,{className:(0,d.cn)(e[f],"animate-spin")}),a&&(0,b.jsx)("span",{children:a})]}):(0,b.jsxs)("div",{className:(0,d.cn)("flex flex-col items-center justify-center gap-3 py-12 text-muted-foreground",h),children:[(0,b.jsx)(c.Loader2,{className:(0,d.cn)(e[f],"animate-spin")}),a&&(0,b.jsx)("p",{className:"text-sm",children:a})]})}])},621958,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(507554),e=a.i(750104),f=a.i(224050),g=a.i(777192),h=a.i(30553),i=a.i(507827),j=a.i(225152),k=a.i(392843),l="Tabs",[m,n]=(0,e.createContextScope)(l,[f.createRovingFocusGroupScope]),o=(0,f.createRovingFocusGroupScope)(),[p,q]=m(l),r=c.forwardRef((a,c)=>{let{__scopeTabs:d,value:e,onValueChange:f,defaultValue:g,orientation:m="horizontal",dir:n,activationMode:o="automatic",...q}=a,r=(0,i.useDirection)(n),[s,t]=(0,j.useControllableState)({prop:e,onChange:f,defaultProp:g??"",caller:l});return(0,b.jsx)(p,{scope:d,baseId:(0,k.useId)(),value:s,onValueChange:t,orientation:m,dir:r,activationMode:o,children:(0,b.jsx)(h.Primitive.div,{dir:r,"data-orientation":m,...q,ref:c})})});r.displayName=l;var s="TabsList",t=c.forwardRef((a,c)=>{let{__scopeTabs:d,loop:e=!0,...g}=a,i=q(s,d),j=o(d);return(0,b.jsx)(f.Root,{asChild:!0,...j,orientation:i.orientation,dir:i.dir,loop:e,children:(0,b.jsx)(h.Primitive.div,{role:"tablist","aria-orientation":i.orientation,...g,ref:c})})});t.displayName=s;var u="TabsTrigger",v=c.forwardRef((a,c)=>{let{__scopeTabs:e,value:g,disabled:i=!1,...j}=a,k=q(u,e),l=o(e),m=y(k.baseId,g),n=z(k.baseId,g),p=g===k.value;return(0,b.jsx)(f.Item,{asChild:!0,...l,focusable:!i,active:p,children:(0,b.jsx)(h.Primitive.button,{type:"button",role:"tab","aria-selected":p,"aria-controls":n,"data-state":p?"active":"inactive","data-disabled":i?"":void 0,disabled:i,id:m,...j,ref:c,onMouseDown:(0,d.composeEventHandlers)(a.onMouseDown,a=>{i||0!==a.button||!1!==a.ctrlKey?a.preventDefault():k.onValueChange(g)}),onKeyDown:(0,d.composeEventHandlers)(a.onKeyDown,a=>{[" ","Enter"].includes(a.key)&&k.onValueChange(g)}),onFocus:(0,d.composeEventHandlers)(a.onFocus,()=>{let a="manual"!==k.activationMode;p||i||!a||k.onValueChange(g)})})})});v.displayName=u;var w="TabsContent",x=c.forwardRef((a,d)=>{let{__scopeTabs:e,value:f,forceMount:i,children:j,...k}=a,l=q(w,e),m=y(l.baseId,f),n=z(l.baseId,f),o=f===l.value,p=c.useRef(o);return c.useEffect(()=>{let a=requestAnimationFrame(()=>p.current=!1);return()=>cancelAnimationFrame(a)},[]),(0,b.jsx)(g.Presence,{present:i||o,children:({present:c})=>(0,b.jsx)(h.Primitive.div,{"data-state":o?"active":"inactive","data-orientation":l.orientation,role:"tabpanel","aria-labelledby":m,hidden:!c,id:n,tabIndex:0,...k,ref:d,style:{...a.style,animationDuration:p.current?"0s":void 0},children:c&&j})})});function y(a,b){return`${a}-trigger-${b}`}function z(a,b){return`${a}-content-${b}`}x.displayName=w;var A=a.i(497895);a.s(["Tabs",0,function({className:a,...c}){return(0,b.jsx)(r,{"data-slot":"tabs",className:(0,A.cn)("flex flex-col gap-2",a),...c})},"TabsContent",0,function({className:a,...c}){return(0,b.jsx)(x,{"data-slot":"tabs-content",className:(0,A.cn)("flex-1 outline-none",a),...c})},"TabsList",0,function({className:a,...c}){return(0,b.jsx)(t,{"data-slot":"tabs-list",className:(0,A.cn)("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",a),...c})},"TabsTrigger",0,function({className:a,...c}){return(0,b.jsx)(v,{"data-slot":"tabs-trigger",className:(0,A.cn)("data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",a),...c})}],621958)},654816,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(507554),e=a.i(470121),f=a.i(750104),g=a.i(596743),h=a.i(392843),i=a.i(704691),j=(a.i(692616),a.i(777192)),k=a.i(30553),l=a.i(811011),m=a.i(225152),n=a.i(528094),[o,p]=(0,f.createContextScope)("Tooltip",[i.createPopperScope]),q=(0,i.createPopperScope)(),r="TooltipProvider",s="tooltip.open",[t,u]=o(r),v=a=>{let{__scopeTooltip:d,delayDuration:e=700,skipDelayDuration:f=300,disableHoverableContent:g=!1,children:h}=a,i=c.useRef(!0),j=c.useRef(!1),k=c.useRef(0);return c.useEffect(()=>{let a=k.current;return()=>window.clearTimeout(a)},[]),(0,b.jsx)(t,{scope:d,isOpenDelayedRef:i,delayDuration:e,onOpen:c.useCallback(()=>{f<=0||(window.clearTimeout(k.current),i.current=!1)},[f]),onClose:c.useCallback(()=>{f<=0||(window.clearTimeout(k.current),k.current=window.setTimeout(()=>i.current=!0,f))},[f]),isPointerInTransitRef:j,onPointerInTransitChange:c.useCallback(a=>{j.current=a},[]),disableHoverableContent:g,children:h})};v.displayName=r;var w="Tooltip",[x,y]=o(w),z=a=>{let{__scopeTooltip:d,children:e,open:f,defaultOpen:g,onOpenChange:j,disableHoverableContent:k,delayDuration:l}=a,n=u(w,a.__scopeTooltip),o=q(d),[p,r]=c.useState(null),t=(0,h.useId)(),v=c.useRef(0),y=k??n.disableHoverableContent,z=l??n.delayDuration,A=c.useRef(!1),[B,C]=(0,m.useControllableState)({prop:f,defaultProp:g??!1,onChange:a=>{a?(n.onOpen(),document.dispatchEvent(new CustomEvent(s))):n.onClose(),j?.(a)},caller:w}),D=c.useMemo(()=>B?A.current?"delayed-open":"instant-open":"closed",[B]),E=c.useCallback(()=>{window.clearTimeout(v.current),v.current=0,A.current=!1,C(!0)},[C]),F=c.useCallback(()=>{window.clearTimeout(v.current),v.current=0,C(!1)},[C]),G=c.useCallback(()=>{window.clearTimeout(v.current),v.current=window.setTimeout(()=>{A.current=!0,C(!0),v.current=0},z)},[z,C]);return c.useEffect(()=>()=>{v.current&&(window.clearTimeout(v.current),v.current=0)},[]),(0,b.jsx)(i.Root,{...o,children:(0,b.jsx)(x,{scope:d,contentId:t,open:B,stateAttribute:D,trigger:p,onTriggerChange:r,onTriggerEnter:c.useCallback(()=>{n.isOpenDelayedRef.current?G():E()},[n.isOpenDelayedRef,G,E]),onTriggerLeave:c.useCallback(()=>{y?F():(window.clearTimeout(v.current),v.current=0)},[F,y]),onOpen:E,onClose:F,disableHoverableContent:y,children:e})})};z.displayName=w;var A="TooltipTrigger",B=c.forwardRef((a,f)=>{let{__scopeTooltip:g,...h}=a,j=y(A,g),l=u(A,g),m=q(g),n=c.useRef(null),o=(0,e.useComposedRefs)(f,n,j.onTriggerChange),p=c.useRef(!1),r=c.useRef(!1),s=c.useCallback(()=>p.current=!1,[]);return c.useEffect(()=>()=>document.removeEventListener("pointerup",s),[s]),(0,b.jsx)(i.Anchor,{asChild:!0,...m,children:(0,b.jsx)(k.Primitive.button,{"aria-describedby":j.open?j.contentId:void 0,"data-state":j.stateAttribute,...h,ref:o,onPointerMove:(0,d.composeEventHandlers)(a.onPointerMove,a=>{"touch"!==a.pointerType&&(r.current||l.isPointerInTransitRef.current||(j.onTriggerEnter(),r.current=!0))}),onPointerLeave:(0,d.composeEventHandlers)(a.onPointerLeave,()=>{j.onTriggerLeave(),r.current=!1}),onPointerDown:(0,d.composeEventHandlers)(a.onPointerDown,()=>{j.open&&j.onClose(),p.current=!0,document.addEventListener("pointerup",s,{once:!0})}),onFocus:(0,d.composeEventHandlers)(a.onFocus,()=>{p.current||j.onOpen()}),onBlur:(0,d.composeEventHandlers)(a.onBlur,j.onClose),onClick:(0,d.composeEventHandlers)(a.onClick,j.onClose)})})});B.displayName=A;var[C,D]=o("TooltipPortal",{forceMount:void 0}),E="TooltipContent",F=c.forwardRef((a,c)=>{let d=D(E,a.__scopeTooltip),{forceMount:e=d.forceMount,side:f="top",...g}=a,h=y(E,a.__scopeTooltip);return(0,b.jsx)(j.Presence,{present:e||h.open,children:h.disableHoverableContent?(0,b.jsx)(K,{side:f,...g,ref:c}):(0,b.jsx)(G,{side:f,...g,ref:c})})}),G=c.forwardRef((a,d)=>{let f=y(E,a.__scopeTooltip),g=u(E,a.__scopeTooltip),h=c.useRef(null),i=(0,e.useComposedRefs)(d,h),[j,k]=c.useState(null),{trigger:l,onClose:m}=f,n=h.current,{onPointerInTransitChange:o}=g,p=c.useCallback(()=>{k(null),o(!1)},[o]),q=c.useCallback((a,b)=>{let c,d=a.currentTarget,e={x:a.clientX,y:a.clientY},f=function(a,b){let c=Math.abs(b.top-a.y),d=Math.abs(b.bottom-a.y),e=Math.abs(b.right-a.x),f=Math.abs(b.left-a.x);switch(Math.min(c,d,e,f)){case f:return"left";case e:return"right";case c:return"top";case d:return"bottom";default:throw Error("unreachable")}}(e,d.getBoundingClientRect());k(((c=[...function(a,b,c=5){let d=[];switch(b){case"top":d.push({x:a.x-c,y:a.y+c},{x:a.x+c,y:a.y+c});break;case"bottom":d.push({x:a.x-c,y:a.y-c},{x:a.x+c,y:a.y-c});break;case"left":d.push({x:a.x+c,y:a.y-c},{x:a.x+c,y:a.y+c});break;case"right":d.push({x:a.x-c,y:a.y-c},{x:a.x-c,y:a.y+c})}return d}(e,f),...function(a){let{top:b,right:c,bottom:d,left:e}=a;return[{x:e,y:b},{x:c,y:b},{x:c,y:d},{x:e,y:d}]}(b.getBoundingClientRect())].slice()).sort((a,b)=>a.x<b.x?-1:a.x>b.x?1:a.y<b.y?-1:1*!!(a.y>b.y)),function(a){if(a.length<=1)return a.slice();let b=[];for(let c=0;c<a.length;c++){let d=a[c];for(;b.length>=2;){let a=b[b.length-1],c=b[b.length-2];if((a.x-c.x)*(d.y-c.y)>=(a.y-c.y)*(d.x-c.x))b.pop();else break}b.push(d)}b.pop();let c=[];for(let b=a.length-1;b>=0;b--){let d=a[b];for(;c.length>=2;){let a=c[c.length-1],b=c[c.length-2];if((a.x-b.x)*(d.y-b.y)>=(a.y-b.y)*(d.x-b.x))c.pop();else break}c.push(d)}return(c.pop(),1===b.length&&1===c.length&&b[0].x===c[0].x&&b[0].y===c[0].y)?b:b.concat(c)}(c))),o(!0)},[o]);return c.useEffect(()=>()=>p(),[p]),c.useEffect(()=>{if(l&&n){let a=a=>q(a,n),b=a=>q(a,l);return l.addEventListener("pointerleave",a),n.addEventListener("pointerleave",b),()=>{l.removeEventListener("pointerleave",a),n.removeEventListener("pointerleave",b)}}},[l,n,q,p]),c.useEffect(()=>{if(j){let a=a=>{let b=a.target,c={x:a.clientX,y:a.clientY},d=l?.contains(b)||n?.contains(b),e=!function(a,b){let{x:c,y:d}=a,e=!1;for(let a=0,f=b.length-1;a<b.length;f=a++){let g=b[a],h=b[f],i=g.x,j=g.y,k=h.x,l=h.y;j>d!=l>d&&c<(k-i)*(d-j)/(l-j)+i&&(e=!e)}return e}(c,j);d?p():e&&(p(),m())};return document.addEventListener("pointermove",a),()=>document.removeEventListener("pointermove",a)}},[l,n,j,m,p]),(0,b.jsx)(K,{...a,ref:i})}),[H,I]=o(w,{isInside:!1}),J=(0,l.createSlottable)("TooltipContent"),K=c.forwardRef((a,d)=>{let{__scopeTooltip:e,children:f,"aria-label":h,onEscapeKeyDown:j,onPointerDownOutside:k,...l}=a,m=y(E,e),o=q(e),{onClose:p}=m;return c.useEffect(()=>(document.addEventListener(s,p),()=>document.removeEventListener(s,p)),[p]),c.useEffect(()=>{if(m.trigger){let a=a=>{a.target instanceof Node&&a.target.contains(m.trigger)&&p()};return window.addEventListener("scroll",a,{capture:!0}),()=>window.removeEventListener("scroll",a,{capture:!0})}},[m.trigger,p]),(0,b.jsx)(g.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:j,onPointerDownOutside:k,onFocusOutside:a=>a.preventDefault(),onDismiss:p,children:(0,b.jsxs)(i.Content,{"data-state":m.stateAttribute,...o,...l,ref:d,style:{...l.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[(0,b.jsx)(J,{children:f}),(0,b.jsx)(H,{scope:e,isInside:!0,children:(0,b.jsx)(n.Root,{id:m.contentId,role:"tooltip",children:h||f})})]})})});F.displayName=E;var L="TooltipArrow";c.forwardRef((a,c)=>{let{__scopeTooltip:d,...e}=a,f=q(d);return I(L,d).isInside?null:(0,b.jsx)(i.Arrow,{...f,...e,ref:c})}).displayName=L;var M=a.i(497895);let N=c.forwardRef(({className:a,sideOffset:c=4,...d},e)=>(0,b.jsx)(F,{ref:e,sideOffset:c,className:(0,M.cn)("z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",a),...d}));N.displayName=F.displayName,a.s(["Tooltip",0,z,"TooltipContent",0,N,"TooltipProvider",0,v,"TooltipTrigger",0,B],654816)},50522,a=>{"use strict";var b=a.i(111989);a.s(["ChevronRight",()=>b.default])},809941,a=>{"use strict";let b=(0,a.i(883706).default)("arrow-up-down",[["path",{d:"m21 16-4 4-4-4",key:"f6ql7i"}],["path",{d:"M17 20V4",key:"1ejh1v"}],["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}]]);a.s(["ArrowUpDown",0,b],809941)},510809,a=>{"use strict";var b=a.i(187924),c=a.i(340695),d=a.i(654816),e=a.i(328790),f=a.i(596221);a.s(["RefreshButton",0,function({onClick:a,isLoading:g,tooltip:h="Refresh",className:i}){return(0,b.jsx)(d.TooltipProvider,{delayDuration:300,children:(0,b.jsxs)(d.Tooltip,{children:[(0,b.jsx)(d.TooltipTrigger,{asChild:!0,children:(0,b.jsx)(c.Button,{variant:"ghost",size:"icon",onClick:a,disabled:g,className:`h-8 w-8 text-muted-foreground hover:text-foreground hover:bg-muted/80 transition-colors ${i||""}`,children:g?(0,b.jsx)(f.Loader2,{className:"h-4 w-4 animate-spin"}):(0,b.jsx)(e.RefreshCcw,{className:"h-4 w-4"})})}),(0,b.jsx)(d.TooltipContent,{side:"bottom",className:"text-xs",children:h})]})})}])},177156,141379,a=>{"use strict";var b=a.i(883706);let c=(0,b.default)("eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);a.s(["Eye",0,c],177156);let d=(0,b.default)("eye-off",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);a.s(["EyeOff",0,d],141379)}];
|
|
8
|
-
|
|
9
|
-
//# sourceMappingURL=_151pht4._.js.map
|