@whxway/loom 1.0.2 → 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 +1 -1
- 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
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[596221,a=>{"use strict";var b=a.i(404650);a.s(["Loader2",()=>b.default])},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})}])},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])},292e3,a=>{"use strict";let b=(0,a.i(883706).default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);a.s(["AlertCircle",0,b],292e3)},808406,a=>{"use strict";let b=(0,a.i(883706).default)("sparkles",[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]]);a.s(["Sparkles",0,b],808406)},339220,a=>{"use strict";var b=a.i(370025),c=a.i(433217),d=a.i(937927),e=a.i(572131),f=a.i(349682),g=a.i(262477);let h=(0,f.defineResource)({path:"/mcp/servers",key:"mcp-servers",listShape:"array",staleTime:6e4}),i={...h,listPresets:()=>(0,g.fetcher)("/mcp/presets"),usePresets:()=>(0,c.useQuery)({queryKey:["mcp-presets"],queryFn:()=>i.listPresets(),staleTime:3e5}),check:a=>(0,g.fetcher)(`/mcp/servers/${encodeURIComponent(a)}/check`,{method:"POST"}),useCheck:a=>{let c=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:a=>i.check(a),onSuccess:b=>{c.invalidateQueries({queryKey:h.keys.all()}),a?.onSuccess?.(b)},onError:b=>a?.onError?.(b)})},checkStream:async(a,b,c)=>{let d=await (0,g.rawFetch)(`/mcp/servers/${encodeURIComponent(a)}/check`,{method:"POST",headers:{Accept:"text/event-stream"},signal:c?.signal});if(!d.body)throw Error("No response body");let e=d.body.getReader(),f=new TextDecoder,h="",i=null;try{for(;;){let{done:a,value:c}=await e.read();if(a)break;let d=(h+=f.decode(c,{stream:!0})).indexOf("\n\n");for(;-1!==d;){let a=h.slice(0,d);h=h.slice(d+2);let c=a.split("\n").find(a=>a.startsWith("data: "));if(c)try{let a=JSON.parse(c.slice(6));b(a),"result"===a.type?i=a.server:"error"===a.type&&a.server&&(i=a.server)}catch{}d=h.indexOf("\n\n")}}}finally{try{e.releaseLock()}catch{}}return i},useCheckStream:()=>{let a=(0,d.useQueryClient)(),[b,c]=e.useState(null),[f,g]=e.useState([]),[j,k]=e.useState(!1),[l,m]=e.useState(null),[n,o]=e.useState(null),p=e.useRef(null),q=e.useCallback(()=>{c(null),g([]),m(null),o(null)},[]),r=e.useCallback(()=>{p.current?.abort(),p.current=null,k(!1)},[]),s=e.useCallback(async b=>{q(),k(!0);let d=new AbortController;p.current=d;try{let e=await i.checkStream(b,a=>{"phase"===a.type?c(a.phase):"log"===a.type?g(b=>[...b,a.line]):"result"===a.type?o(a.server):"error"===a.type&&(m(a.message),a.server&&o(a.server))},{signal:d.signal});return a.invalidateQueries({queryKey:h.keys.all()}),e}catch(b){let a=b instanceof Error?b.message:String(b);return d.signal.aborted||m(a),null}finally{k(!1),p.current=null}},[q,a]);return e.useEffect(()=>()=>p.current?.abort(),[]),{run:s,cancel:r,reset:q,phase:b,logs:f,isChecking:j,error:l,result:n}}};a.s(["mcpServers",0,i])},812213,a=>{"use strict";var b=a.i(941579),c=a.i(774684),d=class extends b.QueryObserver{constructor(a,b){super(a,b)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(a){a._type="infinite",super.setOptions(a)}getOptimisticResult(a){return a._type="infinite",super.getOptimisticResult(a)}fetchNextPage(a){return this.fetch({...a,meta:{fetchMore:{direction:"forward"}}})}fetchPreviousPage(a){return this.fetch({...a,meta:{fetchMore:{direction:"backward"}}})}createResult(a,b){let{state:d}=a,e=super.createResult(a,b),{isFetching:f,isRefetching:g,isError:h,isRefetchError:i}=e,j=d.fetchMeta?.fetchMore?.direction,k=h&&"forward"===j,l=f&&"forward"===j,m=h&&"backward"===j,n=f&&"backward"===j;return{...e,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:(0,c.hasNextPage)(b,d.data),hasPreviousPage:(0,c.hasPreviousPage)(b,d.data),isFetchNextPageError:k,isFetchingNextPage:l,isFetchPreviousPageError:m,isFetchingPreviousPage:n,isRefetchError:i&&!k&&!m,isRefetching:g&&!l&&!n}}},e=a.i(36339),f=a.i(937927),g=a.i(349682),h=a.i(262477);let i=(0,g.defineResource)({path:"/conversations",key:"conversations",paramsOf:a=>({page:a.page??1,page_size:a.page_size??20,sort:a.sort??"-updated_at",keyword:a.keyword}),staleTime:6e4}),j={...i,updateTitle:(a,b)=>i.update(a,{title:b}),messagesCacheKey:function(a,b){return[...i.keys.one(a),"messages-cache",b]},useInvalidateList:()=>{let a=(0,f.useQueryClient)();return()=>a.invalidateQueries({queryKey:i.keys.all(),predicate:a=>{let b=a.queryKey;return b.length>=2&&("list"===b[1]||"infinite"===b[1])}})},useInfinite:a=>{var b;let c=a?.pageSize??20,f=a?.keyword?.trim()||void 0;return b={queryKey:[...i.keys.all(),"infinite",a?.scope??"default",c,f??""],initialPageParam:1,queryFn:({pageParam:a=1})=>i.list({page:a,page_size:c,keyword:f}),getNextPageParam:a=>{if(a)return a.page*a.page_size<a.total?a.page+1:void 0}},(0,e.useBaseQuery)(b,d,void 0)},listMessages:(a,b)=>(0,h.fetcher)(`/conversations/${encodeURIComponent(a)}/messages?`+new URLSearchParams({page:String(b?.page??1),page_size:String(b?.page_size??50),sort:b?.sort??"-created_at"}).toString())},k=["messages"];a.s(["conversations",0,j,"messages",0,{keys:{all:()=>k},rate:(a,b,c)=>(0,h.fetcher)(`/messages/${encodeURIComponent(a)}/rate`,{method:"POST",body:JSON.stringify({rating:b,feedback:c})})}],812213)},699464,a=>{"use strict";let b=(0,a.i(883706).default)("pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);a.s(["Pencil",0,b],699464)},280281,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(225152),h=a.i(77994),i=a.i(3688),j=a.i(30553),k="Switch",[l,m]=(0,f.createContextScope)(k),[n,o]=l(k);function p(a){let{__scopeSwitch:d,checked:e,children:f,defaultChecked:h,disabled:i,form:j,name:l,onCheckedChange:m,required:o,value:p="on",internal_do_not_use_render:q}=a,[r,s]=(0,g.useControllableState)({prop:e,defaultProp:h??!1,onChange:m,caller:k}),[t,u]=c.useState(null),[v,w]=c.useState(null),x=c.useRef(!1),y=!t||!!j||!!t.closest("form"),z={checked:r,setChecked:s,disabled:i,control:t,setControl:u,name:l,form:j,value:p,hasConsumerStoppedPropagationRef:x,required:o,defaultChecked:h,isFormControl:y,bubbleInput:v,setBubbleInput:w};return(0,b.jsx)(n,{scope:d,...z,children:"function"==typeof q?q(z):f})}var q="SwitchTrigger",r=c.forwardRef(({__scopeSwitch:a,onClick:c,...f},g)=>{let{value:h,disabled:i,checked:k,required:l,setControl:m,setChecked:n,hasConsumerStoppedPropagationRef:p,isFormControl:r,bubbleInput:s}=o(q,a),t=(0,e.useComposedRefs)(g,m);return(0,b.jsx)(j.Primitive.button,{type:"button",role:"switch","aria-checked":k,"aria-required":l,"data-state":x(k),"data-disabled":i?"":void 0,disabled:i,value:h,...f,ref:t,onClick:(0,d.composeEventHandlers)(c,a=>{n(a=>!a),s&&r&&(p.current=a.isPropagationStopped(),p.current||a.stopPropagation())})})});r.displayName=q;var s=c.forwardRef((a,c)=>{let{__scopeSwitch:d,name:e,checked:f,defaultChecked:g,required:h,disabled:i,value:j,onCheckedChange:k,form:l,...m}=a;return(0,b.jsx)(p,{__scopeSwitch:d,checked:f,defaultChecked:g,disabled:i,required:h,onCheckedChange:k,name:e,form:l,value:j,internal_do_not_use_render:({isFormControl:a})=>(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(r,{...m,ref:c,__scopeSwitch:d}),a&&(0,b.jsx)(w,{__scopeSwitch:d})]})})});s.displayName=k;var t="SwitchThumb",u=c.forwardRef((a,c)=>{let{__scopeSwitch:d,...e}=a,f=o(t,d);return(0,b.jsx)(j.Primitive.span,{"data-state":x(f.checked),"data-disabled":f.disabled?"":void 0,...e,ref:c})});u.displayName=t;var v="SwitchBubbleInput",w=c.forwardRef(({__scopeSwitch:a,...d},f)=>{let{control:g,hasConsumerStoppedPropagationRef:k,checked:l,defaultChecked:m,required:n,disabled:p,name:q,value:r,form:s,bubbleInput:t,setBubbleInput:u}=o(v,a),w=(0,e.useComposedRefs)(f,u),x=(0,h.usePrevious)(l),y=(0,i.useSize)(g);c.useEffect(()=>{if(!t)return;let a=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set,b=!k.current;if(x!==l&&a){let c=new Event("click",{bubbles:b});a.call(t,l),t.dispatchEvent(c)}},[t,x,l,k]);let z=c.useRef(l);return(0,b.jsx)(j.Primitive.input,{type:"checkbox","aria-hidden":!0,defaultChecked:m??z.current,required:n,disabled:p,name:q,value:r,form:s,...d,tabIndex:-1,ref:w,style:{...d.style,...y,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});function x(a){return a?"checked":"unchecked"}w.displayName=v;var y=a.i(497895);a.s(["Switch",0,function({className:a,...c}){return(0,b.jsx)(s,{"data-slot":"switch",className:(0,y.cn)("peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",a),...c,children:(0,b.jsx)(u,{"data-slot":"switch-thumb",className:(0,y.cn)("bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0")})})}],280281)},546893,a=>{"use strict";var b=a.i(187924),c=a.i(497895);a.s(["Textarea",0,function({className:a,...d}){return(0,b.jsx)("textarea",{"data-slot":"textarea",className:(0,c.cn)("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",a),...d})}])},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)},957064,a=>{"use strict";let b=(0,a.i(883706).default)("layout-grid",[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]]);a.s(["LayoutGrid",0,b],957064)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=_001fhst._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../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/lucide-react/src/icons/circle-alert.ts","../../../../node_modules/lucide-react/src/icons/sparkles.ts","../../../../lib/api/mcp.ts","../../../../node_modules/%40tanstack/react-query/build/modern/useInfiniteQuery.js","../../../../lib/api/conversations.ts","../../../../node_modules/%40tanstack/query-core/build/modern/infiniteQueryObserver.js","../../../../node_modules/lucide-react/src/icons/pencil.ts","../../../../node_modules/%40radix-ui/react-switch/dist/index.mjs","../../../../components/ui/switch.tsx","../../../../components/ui/textarea.tsx","../../../../node_modules/lucide-react/src/icons/refresh-ccw.ts","../../../../components/ui/data-table.tsx","../../../../node_modules/lucide-react/src/icons/inbox.ts","../../../../node_modules/lucide-react/src/icons/layout-grid.ts"],"sourcesContent":["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","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['line', { x1: '12', x2: '12', y1: '8', y2: '12', key: '1pkeuh' }],\n ['line', { x1: '12', x2: '12.01', y1: '16', y2: '16', key: '4dfq90' }],\n];\n\n/**\n * @component @name CircleAlert\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/circle-alert\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 CircleAlert = createLucideIcon('circle-alert', __iconNode);\n\nexport default CircleAlert;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z',\n key: '1s2grr',\n },\n ],\n ['path', { d: 'M20 2v4', key: '1rf3ol' }],\n ['path', { d: 'M22 4h-4', key: 'gwowj6' }],\n ['circle', { cx: '4', cy: '20', r: '2', key: '6kqj1y' }],\n];\n\n/**\n * @component @name Sparkles\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/sparkles\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 Sparkles = createLucideIcon('sparkles', __iconNode);\n\nexport default Sparkles;\n","\"use client\"\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\"\nimport * as React from \"react\"\nimport { defineResource } from \"./resource\"\nimport { fetcher, rawFetch } from \"./client\"\nimport type {\n McpPreset,\n McpServerCreateInput,\n McpServerDTO,\n McpServerUpdateInput,\n} from \"@/lib/schemas/mcp\"\n\nconst base = defineResource<\n McpServerDTO,\n McpServerCreateInput,\n McpServerUpdateInput,\n Record<string, unknown>,\n McpServerDTO[]\n>({\n path: \"/mcp/servers\",\n key: \"mcp-servers\",\n listShape: \"array\",\n staleTime: 60_000,\n})\n\n/** Wire shape — mirrors lib/server/mcp/checks.ts McpCheckEvent so\n * adding a new phase/log channel is a one-place edit on each side. */\nexport type McpCheckPhase = \"spawning\" | \"starting\" | \"connecting\" | \"listing\" | \"ready\"\n\nexport type McpCheckEvent =\n | { type: \"phase\"; phase: McpCheckPhase }\n | { type: \"log\"; line: string }\n | { type: \"result\"; server: McpServerDTO }\n | { type: \"error\"; message: string; server?: McpServerDTO }\n\nexport const mcpServers = {\n ...base,\n\n // ---- presets ----\n listPresets: () => fetcher<McpPreset[]>(\"/mcp/presets\"),\n usePresets: () =>\n useQuery({\n queryKey: [\"mcp-presets\"] as const,\n queryFn: () => mcpServers.listPresets(),\n staleTime: 5 * 60 * 1000,\n }),\n\n // ---- check (one-shot JSON, kept for back-compat) ----\n check: (id: string) =>\n fetcher<McpServerDTO>(`/mcp/servers/${encodeURIComponent(id)}/check`, {\n method: \"POST\",\n }),\n useCheck: (opts?: { onSuccess?: (server: McpServerDTO) => void; onError?: (err: Error) => void }) => {\n const qc = useQueryClient()\n return useMutation({\n mutationFn: (id: string) => mcpServers.check(id),\n onSuccess: (server) => {\n qc.invalidateQueries({ queryKey: base.keys.all() })\n opts?.onSuccess?.(server)\n },\n onError: (err: Error) => opts?.onError?.(err),\n })\n },\n\n // ---- check (SSE stream) ----\n /** Streams every phase + stderr line from the server check, then\n * resolves with the final DTO. Caller's onEvent is invoked for\n * every event including the terminating `result` / `error`. */\n checkStream: async (\n id: string,\n onEvent: (ev: McpCheckEvent) => void,\n opts?: { signal?: AbortSignal },\n ): Promise<McpServerDTO | null> => {\n const res = await rawFetch(`/mcp/servers/${encodeURIComponent(id)}/check`, {\n method: \"POST\",\n headers: { Accept: \"text/event-stream\" },\n signal: opts?.signal,\n })\n if (!res.body) throw new Error(\"No response body\")\n\n const reader = res.body.getReader()\n const decoder = new TextDecoder()\n let buf = \"\"\n let last: McpServerDTO | null = null\n\n try {\n while (true) {\n const { done, value } = await reader.read()\n if (done) break\n buf += decoder.decode(value, { stream: true })\n // SSE frames are separated by \\n\\n.\n let nl = buf.indexOf(\"\\n\\n\")\n while (nl !== -1) {\n const frame = buf.slice(0, nl)\n buf = buf.slice(nl + 2)\n const dataLine = frame.split(\"\\n\").find((l) => l.startsWith(\"data: \"))\n if (dataLine) {\n try {\n const ev = JSON.parse(dataLine.slice(6)) as McpCheckEvent\n onEvent(ev)\n if (ev.type === \"result\") last = ev.server\n else if (ev.type === \"error\" && ev.server) last = ev.server\n } catch { /* malformed frame, skip */ }\n }\n nl = buf.indexOf(\"\\n\\n\")\n }\n }\n } finally {\n try { reader.releaseLock() } catch { /* ignore */ }\n }\n return last\n },\n useCheckStream: () => {\n const qc = useQueryClient()\n const [phase, setPhase] = React.useState<McpCheckPhase | null>(null)\n const [logs, setLogs] = React.useState<string[]>([])\n const [isChecking, setIsChecking] = React.useState(false)\n const [error, setError] = React.useState<string | null>(null)\n const [result, setResult] = React.useState<McpServerDTO | null>(null)\n const abortRef = React.useRef<AbortController | null>(null)\n\n const reset = React.useCallback(() => {\n setPhase(null)\n setLogs([])\n setError(null)\n setResult(null)\n }, [])\n\n const cancel = React.useCallback(() => {\n abortRef.current?.abort()\n abortRef.current = null\n setIsChecking(false)\n }, [])\n\n const run = React.useCallback(\n async (id: string) => {\n reset()\n setIsChecking(true)\n const ctrl = new AbortController()\n abortRef.current = ctrl\n try {\n const final = await mcpServers.checkStream(\n id,\n (ev) => {\n if (ev.type === \"phase\") setPhase(ev.phase)\n else if (ev.type === \"log\") setLogs((prev) => [...prev, ev.line])\n else if (ev.type === \"result\") setResult(ev.server)\n else if (ev.type === \"error\") {\n setError(ev.message)\n if (ev.server) setResult(ev.server)\n }\n },\n { signal: ctrl.signal },\n )\n qc.invalidateQueries({ queryKey: base.keys.all() })\n return final\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err)\n if (!ctrl.signal.aborted) setError(msg)\n return null\n } finally {\n setIsChecking(false)\n abortRef.current = null\n }\n },\n [reset, qc],\n )\n\n React.useEffect(() => () => abortRef.current?.abort(), [])\n\n return { run, cancel, reset, phase, logs, isChecking, error, result }\n },\n}\n","\"use client\";\n\n// src/useInfiniteQuery.ts\nimport { InfiniteQueryObserver } from \"@tanstack/query-core\";\nimport { useBaseQuery } from \"./useBaseQuery.js\";\nfunction useInfiniteQuery(options, queryClient) {\n return useBaseQuery(\n options,\n InfiniteQueryObserver,\n queryClient\n );\n}\nexport {\n useInfiniteQuery\n};\n//# sourceMappingURL=useInfiniteQuery.js.map","\"use client\";\nimport { useInfiniteQuery, useQueryClient } from \"@tanstack/react-query\";\nimport { defineResource } from \"./resource\";\nimport { fetcher } from \"./client\";\nimport type { Paginated } from \"@/lib/schemas/common\";\nimport type { ConversationDTO, MessageDTO } from \"@/lib/schemas/conversation\";\n\nconst base = defineResource<\n ConversationDTO,\n never,\n { title: string },\n { page?: number; page_size?: number; sort?: string; keyword?: string },\n Paginated<ConversationDTO>\n>({\n path: \"/conversations\",\n key: \"conversations\",\n paramsOf: (q) => ({\n page: q.page ?? 1,\n page_size: q.page_size ?? 20,\n sort: q.sort ?? \"-updated_at\",\n keyword: q.keyword,\n }),\n // List + get are read-mostly; users rarely care about millisecond\n // freshness here. 60s lets nav back to the sidebar / chat skip\n // a network round-trip — mutations explicit-invalidate anyway.\n staleTime: 60_000,\n});\n\n/** Cache key for the initial page of messages of a single conversation.\n * Lives under the conversation resource so it gets gc'd if the resource\n * is gc'd, but is isolated from list/infinite queries so we can invalidate\n * list-only without dropping the message cache. */\nexport function messagesCacheKey(conversationId: string, pageSize: number) {\n return [...base.keys.one(conversationId), \"messages-cache\", pageSize] as const;\n}\n\nexport const conversations = {\n ...base,\n\n // ---- shorthand: title-only update ----\n updateTitle: (id: string, title: string) => base.update(id, { title }),\n\n // ---- shared message cache key (used by usePaginatedMessages / sync) ----\n messagesCacheKey,\n\n /** Invalidate only the conversation LIST queries (list/infinite),\n * leaving the per-conversation messages cache intact. */\n useInvalidateList: () => {\n const qc = useQueryClient();\n return () => qc.invalidateQueries({\n queryKey: base.keys.all(),\n predicate: (q) => {\n const k = q.queryKey as readonly unknown[];\n return k.length >= 2 && (k[1] === \"list\" || k[1] === \"infinite\");\n },\n });\n },\n\n // ---- infinite scroll variant of useList ----\n useInfinite: (params?: { pageSize?: number; scope?: string; keyword?: string }) => {\n const pageSize = params?.pageSize ?? 20;\n const keyword = params?.keyword?.trim() || undefined;\n return useInfiniteQuery({\n queryKey: [\n ...base.keys.all(),\n \"infinite\",\n params?.scope ?? \"default\",\n pageSize,\n keyword ?? \"\",\n ] as const,\n initialPageParam: 1,\n queryFn: ({ pageParam = 1 }) =>\n base.list({ page: pageParam as number, page_size: pageSize, keyword }),\n getNextPageParam: (lastPage) => {\n if (!lastPage) return undefined;\n const hasMore = lastPage.page * lastPage.page_size < lastPage.total;\n return hasMore ? lastPage.page + 1 : undefined;\n },\n });\n },\n\n // ---- nested: messages under a conversation ----\n listMessages: (id: string, params?: { page?: number; page_size?: number; sort?: string }) =>\n fetcher<Paginated<MessageDTO>>(\n `/conversations/${encodeURIComponent(id)}/messages?` +\n new URLSearchParams({\n page: String(params?.page ?? 1),\n page_size: String(params?.page_size ?? 50),\n sort: params?.sort ?? \"-created_at\",\n }).toString(),\n ),\n};\n\n// Messages are a sibling resource only used for rating today.\nconst messagesKey = [\"messages\"] as const;\nexport const messages = {\n keys: { all: () => messagesKey },\n rate: (messageId: string, rating: \"up\" | \"down\" | \"none\", feedback?: string) =>\n fetcher<null>(`/messages/${encodeURIComponent(messageId)}/rate`, {\n method: \"POST\",\n body: JSON.stringify({ rating, feedback }),\n }),\n};\n","// src/infiniteQueryObserver.ts\nimport { QueryObserver } from \"./queryObserver.js\";\nimport { hasNextPage, hasPreviousPage } from \"./infiniteQueryBehavior.js\";\nvar InfiniteQueryObserver = class extends QueryObserver {\n constructor(client, options) {\n super(client, options);\n }\n bindMethods() {\n super.bindMethods();\n this.fetchNextPage = this.fetchNextPage.bind(this);\n this.fetchPreviousPage = this.fetchPreviousPage.bind(this);\n }\n setOptions(options) {\n options._type = \"infinite\";\n super.setOptions(options);\n }\n getOptimisticResult(options) {\n options._type = \"infinite\";\n return super.getOptimisticResult(options);\n }\n fetchNextPage(options) {\n return this.fetch({\n ...options,\n meta: {\n fetchMore: { direction: \"forward\" }\n }\n });\n }\n fetchPreviousPage(options) {\n return this.fetch({\n ...options,\n meta: {\n fetchMore: { direction: \"backward\" }\n }\n });\n }\n createResult(query, options) {\n const { state } = query;\n const parentResult = super.createResult(query, options);\n const { isFetching, isRefetching, isError, isRefetchError } = parentResult;\n const fetchDirection = state.fetchMeta?.fetchMore?.direction;\n const isFetchNextPageError = isError && fetchDirection === \"forward\";\n const isFetchingNextPage = isFetching && fetchDirection === \"forward\";\n const isFetchPreviousPageError = isError && fetchDirection === \"backward\";\n const isFetchingPreviousPage = isFetching && fetchDirection === \"backward\";\n const result = {\n ...parentResult,\n fetchNextPage: this.fetchNextPage,\n fetchPreviousPage: this.fetchPreviousPage,\n hasNextPage: hasNextPage(options, state.data),\n hasPreviousPage: hasPreviousPage(options, state.data),\n isFetchNextPageError,\n isFetchingNextPage,\n isFetchPreviousPageError,\n isFetchingPreviousPage,\n isRefetchError: isRefetchError && !isFetchNextPageError && !isFetchPreviousPageError,\n isRefetching: isRefetching && !isFetchingNextPage && !isFetchingPreviousPage\n };\n return result;\n }\n};\nexport {\n InfiniteQueryObserver\n};\n//# sourceMappingURL=infiniteQueryObserver.js.map","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z',\n key: '1a8usu',\n },\n ],\n ['path', { d: 'm15 5 4 4', key: '1mk7zo' }],\n];\n\n/**\n * @component @name Pencil\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/pencil\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 Pencil = createLucideIcon('pencil', __iconNode);\n\nexport default Pencil;\n","\"use client\";\n\n// src/switch.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar SWITCH_NAME = \"Switch\";\nvar [createSwitchContext, createSwitchScope] = createContextScope(SWITCH_NAME);\nvar [SwitchProviderImpl, useSwitchContext] = createSwitchContext(SWITCH_NAME);\nfunction SwitchProvider(props) {\n const {\n __scopeSwitch,\n checked: checkedProp,\n children,\n defaultChecked,\n disabled,\n form,\n name,\n onCheckedChange,\n required,\n value = \"on\",\n // @ts-expect-error\n internal_do_not_use_render\n } = props;\n const [checked, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked ?? false,\n onChange: onCheckedChange,\n caller: SWITCH_NAME\n });\n const [control, setControl] = React.useState(null);\n const [bubbleInput, setBubbleInput] = React.useState(null);\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = control ? !!form || !!control.closest(\"form\") : (\n // We set this to true by default so that events bubble to forms without JS (SSR)\n true\n );\n const context = {\n checked,\n setChecked,\n disabled,\n control,\n setControl,\n name,\n form,\n value,\n hasConsumerStoppedPropagationRef,\n required,\n defaultChecked,\n isFormControl,\n bubbleInput,\n setBubbleInput\n };\n return /* @__PURE__ */ jsx(SwitchProviderImpl, { scope: __scopeSwitch, ...context, children: isFunction(internal_do_not_use_render) ? internal_do_not_use_render(context) : children });\n}\nvar TRIGGER_NAME = \"SwitchTrigger\";\nvar SwitchTrigger = React.forwardRef(\n ({ __scopeSwitch, onClick, ...switchProps }, forwardedRef) => {\n const {\n value,\n disabled,\n checked,\n required,\n setControl,\n setChecked,\n hasConsumerStoppedPropagationRef,\n isFormControl,\n bubbleInput\n } = useSwitchContext(TRIGGER_NAME, __scopeSwitch);\n const composedRefs = useComposedRefs(forwardedRef, setControl);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"switch\",\n \"aria-checked\": checked,\n \"aria-required\": required,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...switchProps,\n ref: composedRefs,\n onClick: composeEventHandlers(onClick, (event) => {\n setChecked((prevChecked) => !prevChecked);\n if (bubbleInput && isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n );\n }\n);\nSwitchTrigger.displayName = TRIGGER_NAME;\nvar Switch = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSwitch,\n name,\n checked,\n defaultChecked,\n required,\n disabled,\n value,\n onCheckedChange,\n form,\n ...switchProps\n } = props;\n return /* @__PURE__ */ jsx(\n SwitchProvider,\n {\n __scopeSwitch,\n checked,\n defaultChecked,\n disabled,\n required,\n onCheckedChange,\n name,\n form,\n value,\n internal_do_not_use_render: ({ isFormControl }) => /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n SwitchTrigger,\n {\n ...switchProps,\n ref: forwardedRef,\n __scopeSwitch\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n SwitchBubbleInput,\n {\n __scopeSwitch\n }\n )\n ] })\n }\n );\n }\n);\nSwitch.displayName = SWITCH_NAME;\nvar THUMB_NAME = \"SwitchThumb\";\nvar SwitchThumb = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSwitch, ...thumbProps } = props;\n const context = useSwitchContext(THUMB_NAME, __scopeSwitch);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...thumbProps,\n ref: forwardedRef\n }\n );\n }\n);\nSwitchThumb.displayName = THUMB_NAME;\nvar BUBBLE_INPUT_NAME = \"SwitchBubbleInput\";\nvar SwitchBubbleInput = React.forwardRef(\n ({ __scopeSwitch, ...props }, forwardedRef) => {\n const {\n control,\n hasConsumerStoppedPropagationRef,\n checked,\n defaultChecked,\n required,\n disabled,\n name,\n value,\n form,\n bubbleInput,\n setBubbleInput\n } = useSwitchContext(BUBBLE_INPUT_NAME, __scopeSwitch);\n const composedRefs = useComposedRefs(forwardedRef, setBubbleInput);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = bubbleInput;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n \"checked\"\n );\n const setChecked = descriptor.set;\n const bubbles = !hasConsumerStoppedPropagationRef.current;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [bubbleInput, prevChecked, checked, hasConsumerStoppedPropagationRef]);\n const defaultCheckedRef = React.useRef(checked);\n return /* @__PURE__ */ jsx(\n Primitive.input,\n {\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: defaultChecked ?? defaultCheckedRef.current,\n required,\n disabled,\n name,\n value,\n form,\n ...props,\n tabIndex: -1,\n ref: composedRefs,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0,\n // We transform because the input is absolutely positioned but we have\n // rendered it **after** the button. This pulls it back to sit on top\n // of the button.\n transform: \"translateX(-100%)\"\n }\n }\n );\n }\n);\nSwitchBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\nfunction getState(checked) {\n return checked ? \"checked\" : \"unchecked\";\n}\nexport {\n Switch as Root,\n Switch,\n SwitchThumb,\n SwitchThumb as Thumb,\n createSwitchScope,\n SwitchBubbleInput as unstable_BubbleInput,\n SwitchProvider as unstable_Provider,\n SwitchBubbleInput as unstable_SwitchBubbleInput,\n SwitchProvider as unstable_SwitchProvider,\n SwitchTrigger as unstable_SwitchTrigger,\n SwitchTrigger as unstable_Trigger\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Switch({\n className,\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n \"peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n \"bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0\"\n )}\n />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Textarea }\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","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '7', height: '7', x: '3', y: '3', rx: '1', key: '1g98yp' }],\n ['rect', { width: '7', height: '7', x: '14', y: '3', rx: '1', key: '6d4xhi' }],\n ['rect', { width: '7', height: '7', x: '14', y: '14', rx: '1', key: 'nxv5o0' }],\n ['rect', { width: '7', height: '7', x: '3', y: '14', rx: '1', key: '1bb6yr' }],\n];\n\n/**\n * @component @name LayoutGrid\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/layout-grid\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 LayoutGrid = createLucideIcon('layout-grid', __iconNode);\n\nexport default LayoutGrid;\n"],"names":["Input","className","type","props","NAME","Label","forwardedRef","label","ref","onMouseDown","event","target","closest","defaultPrevented","detail","preventDefault","displayName","Root","models","path","key","listShape","staleTime","invalidates","base","mcpServers","listPresets","usePresets","queryKey","queryFn","check","id","encodeURIComponent","method","useCheck","opts","qc","mutationFn","onSuccess","server","invalidateQueries","keys","all","onError","err","checkStream","onEvent","res","headers","Accept","signal","body","Error","reader","getReader","decoder","TextDecoder","buf","last","done","value","read","decode","stream","nl","indexOf","frame","slice","dataLine","split","find","l","startsWith","ev","JSON","parse","releaseLock","useCheckStream","phase","setPhase","logs","setLogs","isChecking","setIsChecking","error","setError","result","setResult","abortRef","reset","cancel","current","abort","run","ctrl","AbortController","final","prev","line","message","msg","String","aborted","InfiniteQueryObserver","client","options","bindMethods","fetchNextPage","bind","fetchPreviousPage","setOptions","_type","getOptimisticResult","fetch","meta","fetchMore","direction","createResult","query","state","parentResult","isFetching","isRefetching","isError","isRefetchError","fetchDirection","fetchMeta","isFetchNextPageError","isFetchingNextPage","isFetchPreviousPageError","isFetchingPreviousPage","hasNextPage","data","hasPreviousPage","SWITCH_NAME","createSwitchContext","createSwitchScope","SwitchProviderImpl","useSwitchContext","SwitchProvider","__scopeSwitch","checked","checkedProp","children","defaultChecked","disabled","form","name","onCheckedChange","required","internal_do_not_use_render","setChecked","prop","defaultProp","onChange","caller","control","setControl","bubbleInput","setBubbleInput","hasConsumerStoppedPropagationRef","isFormControl","context","scope","isFunction","TRIGGER_NAME","SwitchTrigger","onClick","switchProps","composedRefs","button","role","getState","prevChecked","isPropagationStopped","stopPropagation","Switch","SwitchBubbleInput","THUMB_NAME","SwitchThumb","thumbProps","span","BUBBLE_INPUT_NAME","controlSize","input","inputProto","window","HTMLInputElement","prototype","descriptor","Object","getOwnPropertyDescriptor","set","bubbles","Event","call","dispatchEvent","defaultCheckedRef","tabIndex","style","position","pointerEvents","opacity","margin","transform","Textarea"],"mappings":"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","ignoreList":[1,5,6,8,10,11,12,15,17,18]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[812213,a=>{"use strict";var b=a.i(941579),c=a.i(774684),d=class extends b.QueryObserver{constructor(a,b){super(a,b)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(a){a._type="infinite",super.setOptions(a)}getOptimisticResult(a){return a._type="infinite",super.getOptimisticResult(a)}fetchNextPage(a){return this.fetch({...a,meta:{fetchMore:{direction:"forward"}}})}fetchPreviousPage(a){return this.fetch({...a,meta:{fetchMore:{direction:"backward"}}})}createResult(a,b){let{state:d}=a,e=super.createResult(a,b),{isFetching:f,isRefetching:g,isError:h,isRefetchError:i}=e,j=d.fetchMeta?.fetchMore?.direction,k=h&&"forward"===j,l=f&&"forward"===j,m=h&&"backward"===j,n=f&&"backward"===j;return{...e,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:(0,c.hasNextPage)(b,d.data),hasPreviousPage:(0,c.hasPreviousPage)(b,d.data),isFetchNextPageError:k,isFetchingNextPage:l,isFetchPreviousPageError:m,isFetchingPreviousPage:n,isRefetchError:i&&!k&&!m,isRefetching:g&&!l&&!n}}},e=a.i(36339),f=a.i(937927),g=a.i(349682),h=a.i(262477);let i=(0,g.defineResource)({path:"/conversations",key:"conversations",paramsOf:a=>({page:a.page??1,page_size:a.page_size??20,sort:a.sort??"-updated_at",keyword:a.keyword}),staleTime:6e4}),j={...i,updateTitle:(a,b)=>i.update(a,{title:b}),messagesCacheKey:function(a,b){return[...i.keys.one(a),"messages-cache",b]},useInvalidateList:()=>{let a=(0,f.useQueryClient)();return()=>a.invalidateQueries({queryKey:i.keys.all(),predicate:a=>{let b=a.queryKey;return b.length>=2&&("list"===b[1]||"infinite"===b[1])}})},useInfinite:a=>{var b;let c=a?.pageSize??20,f=a?.keyword?.trim()||void 0;return b={queryKey:[...i.keys.all(),"infinite",a?.scope??"default",c,f??""],initialPageParam:1,queryFn:({pageParam:a=1})=>i.list({page:a,page_size:c,keyword:f}),getNextPageParam:a=>{if(a)return a.page*a.page_size<a.total?a.page+1:void 0}},(0,e.useBaseQuery)(b,d,void 0)},listMessages:(a,b)=>(0,h.fetcher)(`/conversations/${encodeURIComponent(a)}/messages?`+new URLSearchParams({page:String(b?.page??1),page_size:String(b?.page_size??50),sort:b?.sort??"-created_at"}).toString())},k=["messages"];a.s(["conversations",0,j,"messages",0,{keys:{all:()=>k},rate:(a,b,c)=>(0,h.fetcher)(`/messages/${encodeURIComponent(a)}/rate`,{method:"POST",body:JSON.stringify({rating:b,feedback:c})})}],812213)},339220,a=>{"use strict";var b=a.i(370025),c=a.i(433217),d=a.i(937927),e=a.i(572131),f=a.i(349682),g=a.i(262477);let h=(0,f.defineResource)({path:"/mcp/servers",key:"mcp-servers",listShape:"array",staleTime:6e4}),i={...h,listPresets:()=>(0,g.fetcher)("/mcp/presets"),usePresets:()=>(0,c.useQuery)({queryKey:["mcp-presets"],queryFn:()=>i.listPresets(),staleTime:3e5}),check:a=>(0,g.fetcher)(`/mcp/servers/${encodeURIComponent(a)}/check`,{method:"POST"}),useCheck:a=>{let c=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:a=>i.check(a),onSuccess:b=>{c.invalidateQueries({queryKey:h.keys.all()}),a?.onSuccess?.(b)},onError:b=>a?.onError?.(b)})},checkStream:async(a,b,c)=>{let d=await (0,g.rawFetch)(`/mcp/servers/${encodeURIComponent(a)}/check`,{method:"POST",headers:{Accept:"text/event-stream"},signal:c?.signal});if(!d.body)throw Error("No response body");let e=d.body.getReader(),f=new TextDecoder,h="",i=null;try{for(;;){let{done:a,value:c}=await e.read();if(a)break;let d=(h+=f.decode(c,{stream:!0})).indexOf("\n\n");for(;-1!==d;){let a=h.slice(0,d);h=h.slice(d+2);let c=a.split("\n").find(a=>a.startsWith("data: "));if(c)try{let a=JSON.parse(c.slice(6));b(a),"result"===a.type?i=a.server:"error"===a.type&&a.server&&(i=a.server)}catch{}d=h.indexOf("\n\n")}}}finally{try{e.releaseLock()}catch{}}return i},useCheckStream:()=>{let a=(0,d.useQueryClient)(),[b,c]=e.useState(null),[f,g]=e.useState([]),[j,k]=e.useState(!1),[l,m]=e.useState(null),[n,o]=e.useState(null),p=e.useRef(null),q=e.useCallback(()=>{c(null),g([]),m(null),o(null)},[]),r=e.useCallback(()=>{p.current?.abort(),p.current=null,k(!1)},[]),s=e.useCallback(async b=>{q(),k(!0);let d=new AbortController;p.current=d;try{let e=await i.checkStream(b,a=>{"phase"===a.type?c(a.phase):"log"===a.type?g(b=>[...b,a.line]):"result"===a.type?o(a.server):"error"===a.type&&(m(a.message),a.server&&o(a.server))},{signal:d.signal});return a.invalidateQueries({queryKey:h.keys.all()}),e}catch(b){let a=b instanceof Error?b.message:String(b);return d.signal.aborted||m(a),null}finally{k(!1),p.current=null}},[q,a]);return e.useEffect(()=>()=>p.current?.abort(),[]),{run:s,cancel:r,reset:q,phase:b,logs:f,isChecking:j,error:l,result:n}}};a.s(["mcpServers",0,i])},699464,a=>{"use strict";let b=(0,a.i(883706).default)("pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);a.s(["Pencil",0,b],699464)},546893,a=>{"use strict";var b=a.i(187924),c=a.i(497895);a.s(["Textarea",0,function({className:a,...d}){return(0,b.jsx)("textarea",{"data-slot":"textarea",className:(0,c.cn)("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",a),...d})}])},280281,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(225152),h=a.i(77994),i=a.i(3688),j=a.i(30553),k="Switch",[l,m]=(0,f.createContextScope)(k),[n,o]=l(k);function p(a){let{__scopeSwitch:d,checked:e,children:f,defaultChecked:h,disabled:i,form:j,name:l,onCheckedChange:m,required:o,value:p="on",internal_do_not_use_render:q}=a,[r,s]=(0,g.useControllableState)({prop:e,defaultProp:h??!1,onChange:m,caller:k}),[t,u]=c.useState(null),[v,w]=c.useState(null),x=c.useRef(!1),y=!t||!!j||!!t.closest("form"),z={checked:r,setChecked:s,disabled:i,control:t,setControl:u,name:l,form:j,value:p,hasConsumerStoppedPropagationRef:x,required:o,defaultChecked:h,isFormControl:y,bubbleInput:v,setBubbleInput:w};return(0,b.jsx)(n,{scope:d,...z,children:"function"==typeof q?q(z):f})}var q="SwitchTrigger",r=c.forwardRef(({__scopeSwitch:a,onClick:c,...f},g)=>{let{value:h,disabled:i,checked:k,required:l,setControl:m,setChecked:n,hasConsumerStoppedPropagationRef:p,isFormControl:r,bubbleInput:s}=o(q,a),t=(0,e.useComposedRefs)(g,m);return(0,b.jsx)(j.Primitive.button,{type:"button",role:"switch","aria-checked":k,"aria-required":l,"data-state":x(k),"data-disabled":i?"":void 0,disabled:i,value:h,...f,ref:t,onClick:(0,d.composeEventHandlers)(c,a=>{n(a=>!a),s&&r&&(p.current=a.isPropagationStopped(),p.current||a.stopPropagation())})})});r.displayName=q;var s=c.forwardRef((a,c)=>{let{__scopeSwitch:d,name:e,checked:f,defaultChecked:g,required:h,disabled:i,value:j,onCheckedChange:k,form:l,...m}=a;return(0,b.jsx)(p,{__scopeSwitch:d,checked:f,defaultChecked:g,disabled:i,required:h,onCheckedChange:k,name:e,form:l,value:j,internal_do_not_use_render:({isFormControl:a})=>(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(r,{...m,ref:c,__scopeSwitch:d}),a&&(0,b.jsx)(w,{__scopeSwitch:d})]})})});s.displayName=k;var t="SwitchThumb",u=c.forwardRef((a,c)=>{let{__scopeSwitch:d,...e}=a,f=o(t,d);return(0,b.jsx)(j.Primitive.span,{"data-state":x(f.checked),"data-disabled":f.disabled?"":void 0,...e,ref:c})});u.displayName=t;var v="SwitchBubbleInput",w=c.forwardRef(({__scopeSwitch:a,...d},f)=>{let{control:g,hasConsumerStoppedPropagationRef:k,checked:l,defaultChecked:m,required:n,disabled:p,name:q,value:r,form:s,bubbleInput:t,setBubbleInput:u}=o(v,a),w=(0,e.useComposedRefs)(f,u),x=(0,h.usePrevious)(l),y=(0,i.useSize)(g);c.useEffect(()=>{if(!t)return;let a=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set,b=!k.current;if(x!==l&&a){let c=new Event("click",{bubbles:b});a.call(t,l),t.dispatchEvent(c)}},[t,x,l,k]);let z=c.useRef(l);return(0,b.jsx)(j.Primitive.input,{type:"checkbox","aria-hidden":!0,defaultChecked:m??z.current,required:n,disabled:p,name:q,value:r,form:s,...d,tabIndex:-1,ref:w,style:{...d.style,...y,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});function x(a){return a?"checked":"unchecked"}w.displayName=v;var y=a.i(497895);a.s(["Switch",0,function({className:a,...c}){return(0,b.jsx)(s,{"data-slot":"switch",className:(0,y.cn)("peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",a),...c,children:(0,b.jsx)(u,{"data-slot":"switch-thumb",className:(0,y.cn)("bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0")})})}],280281)},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)},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()):"—"}])},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=_02wtd-0._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../node_modules/%40tanstack/react-query/build/modern/useInfiniteQuery.js","../../../../lib/api/conversations.ts","../../../../node_modules/%40tanstack/query-core/build/modern/infiniteQueryObserver.js","../../../../lib/api/mcp.ts","../../../../node_modules/lucide-react/src/icons/pencil.ts","../../../../components/ui/textarea.tsx","../../../../node_modules/%40radix-ui/react-switch/dist/index.mjs","../../../../components/ui/switch.tsx","../../../../node_modules/lucide-react/src/icons/copy.ts","../../../../node_modules/lucide-react/src/icons/file-text.ts","../../../../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","../../../../components/providers/provider-health-pill.tsx","../../../../components/providers/models-table.tsx"],"sourcesContent":["\"use client\";\n\n// src/useInfiniteQuery.ts\nimport { InfiniteQueryObserver } from \"@tanstack/query-core\";\nimport { useBaseQuery } from \"./useBaseQuery.js\";\nfunction useInfiniteQuery(options, queryClient) {\n return useBaseQuery(\n options,\n InfiniteQueryObserver,\n queryClient\n );\n}\nexport {\n useInfiniteQuery\n};\n//# sourceMappingURL=useInfiniteQuery.js.map","\"use client\";\nimport { useInfiniteQuery, useQueryClient } from \"@tanstack/react-query\";\nimport { defineResource } from \"./resource\";\nimport { fetcher } from \"./client\";\nimport type { Paginated } from \"@/lib/schemas/common\";\nimport type { ConversationDTO, MessageDTO } from \"@/lib/schemas/conversation\";\n\nconst base = defineResource<\n ConversationDTO,\n never,\n { title: string },\n { page?: number; page_size?: number; sort?: string; keyword?: string },\n Paginated<ConversationDTO>\n>({\n path: \"/conversations\",\n key: \"conversations\",\n paramsOf: (q) => ({\n page: q.page ?? 1,\n page_size: q.page_size ?? 20,\n sort: q.sort ?? \"-updated_at\",\n keyword: q.keyword,\n }),\n // List + get are read-mostly; users rarely care about millisecond\n // freshness here. 60s lets nav back to the sidebar / chat skip\n // a network round-trip — mutations explicit-invalidate anyway.\n staleTime: 60_000,\n});\n\n/** Cache key for the initial page of messages of a single conversation.\n * Lives under the conversation resource so it gets gc'd if the resource\n * is gc'd, but is isolated from list/infinite queries so we can invalidate\n * list-only without dropping the message cache. */\nexport function messagesCacheKey(conversationId: string, pageSize: number) {\n return [...base.keys.one(conversationId), \"messages-cache\", pageSize] as const;\n}\n\nexport const conversations = {\n ...base,\n\n // ---- shorthand: title-only update ----\n updateTitle: (id: string, title: string) => base.update(id, { title }),\n\n // ---- shared message cache key (used by usePaginatedMessages / sync) ----\n messagesCacheKey,\n\n /** Invalidate only the conversation LIST queries (list/infinite),\n * leaving the per-conversation messages cache intact. */\n useInvalidateList: () => {\n const qc = useQueryClient();\n return () => qc.invalidateQueries({\n queryKey: base.keys.all(),\n predicate: (q) => {\n const k = q.queryKey as readonly unknown[];\n return k.length >= 2 && (k[1] === \"list\" || k[1] === \"infinite\");\n },\n });\n },\n\n // ---- infinite scroll variant of useList ----\n useInfinite: (params?: { pageSize?: number; scope?: string; keyword?: string }) => {\n const pageSize = params?.pageSize ?? 20;\n const keyword = params?.keyword?.trim() || undefined;\n return useInfiniteQuery({\n queryKey: [\n ...base.keys.all(),\n \"infinite\",\n params?.scope ?? \"default\",\n pageSize,\n keyword ?? \"\",\n ] as const,\n initialPageParam: 1,\n queryFn: ({ pageParam = 1 }) =>\n base.list({ page: pageParam as number, page_size: pageSize, keyword }),\n getNextPageParam: (lastPage) => {\n if (!lastPage) return undefined;\n const hasMore = lastPage.page * lastPage.page_size < lastPage.total;\n return hasMore ? lastPage.page + 1 : undefined;\n },\n });\n },\n\n // ---- nested: messages under a conversation ----\n listMessages: (id: string, params?: { page?: number; page_size?: number; sort?: string }) =>\n fetcher<Paginated<MessageDTO>>(\n `/conversations/${encodeURIComponent(id)}/messages?` +\n new URLSearchParams({\n page: String(params?.page ?? 1),\n page_size: String(params?.page_size ?? 50),\n sort: params?.sort ?? \"-created_at\",\n }).toString(),\n ),\n};\n\n// Messages are a sibling resource only used for rating today.\nconst messagesKey = [\"messages\"] as const;\nexport const messages = {\n keys: { all: () => messagesKey },\n rate: (messageId: string, rating: \"up\" | \"down\" | \"none\", feedback?: string) =>\n fetcher<null>(`/messages/${encodeURIComponent(messageId)}/rate`, {\n method: \"POST\",\n body: JSON.stringify({ rating, feedback }),\n }),\n};\n","// src/infiniteQueryObserver.ts\nimport { QueryObserver } from \"./queryObserver.js\";\nimport { hasNextPage, hasPreviousPage } from \"./infiniteQueryBehavior.js\";\nvar InfiniteQueryObserver = class extends QueryObserver {\n constructor(client, options) {\n super(client, options);\n }\n bindMethods() {\n super.bindMethods();\n this.fetchNextPage = this.fetchNextPage.bind(this);\n this.fetchPreviousPage = this.fetchPreviousPage.bind(this);\n }\n setOptions(options) {\n options._type = \"infinite\";\n super.setOptions(options);\n }\n getOptimisticResult(options) {\n options._type = \"infinite\";\n return super.getOptimisticResult(options);\n }\n fetchNextPage(options) {\n return this.fetch({\n ...options,\n meta: {\n fetchMore: { direction: \"forward\" }\n }\n });\n }\n fetchPreviousPage(options) {\n return this.fetch({\n ...options,\n meta: {\n fetchMore: { direction: \"backward\" }\n }\n });\n }\n createResult(query, options) {\n const { state } = query;\n const parentResult = super.createResult(query, options);\n const { isFetching, isRefetching, isError, isRefetchError } = parentResult;\n const fetchDirection = state.fetchMeta?.fetchMore?.direction;\n const isFetchNextPageError = isError && fetchDirection === \"forward\";\n const isFetchingNextPage = isFetching && fetchDirection === \"forward\";\n const isFetchPreviousPageError = isError && fetchDirection === \"backward\";\n const isFetchingPreviousPage = isFetching && fetchDirection === \"backward\";\n const result = {\n ...parentResult,\n fetchNextPage: this.fetchNextPage,\n fetchPreviousPage: this.fetchPreviousPage,\n hasNextPage: hasNextPage(options, state.data),\n hasPreviousPage: hasPreviousPage(options, state.data),\n isFetchNextPageError,\n isFetchingNextPage,\n isFetchPreviousPageError,\n isFetchingPreviousPage,\n isRefetchError: isRefetchError && !isFetchNextPageError && !isFetchPreviousPageError,\n isRefetching: isRefetching && !isFetchingNextPage && !isFetchingPreviousPage\n };\n return result;\n }\n};\nexport {\n InfiniteQueryObserver\n};\n//# sourceMappingURL=infiniteQueryObserver.js.map","\"use client\"\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\"\nimport * as React from \"react\"\nimport { defineResource } from \"./resource\"\nimport { fetcher, rawFetch } from \"./client\"\nimport type {\n McpPreset,\n McpServerCreateInput,\n McpServerDTO,\n McpServerUpdateInput,\n} from \"@/lib/schemas/mcp\"\n\nconst base = defineResource<\n McpServerDTO,\n McpServerCreateInput,\n McpServerUpdateInput,\n Record<string, unknown>,\n McpServerDTO[]\n>({\n path: \"/mcp/servers\",\n key: \"mcp-servers\",\n listShape: \"array\",\n staleTime: 60_000,\n})\n\n/** Wire shape — mirrors lib/server/mcp/checks.ts McpCheckEvent so\n * adding a new phase/log channel is a one-place edit on each side. */\nexport type McpCheckPhase = \"spawning\" | \"starting\" | \"connecting\" | \"listing\" | \"ready\"\n\nexport type McpCheckEvent =\n | { type: \"phase\"; phase: McpCheckPhase }\n | { type: \"log\"; line: string }\n | { type: \"result\"; server: McpServerDTO }\n | { type: \"error\"; message: string; server?: McpServerDTO }\n\nexport const mcpServers = {\n ...base,\n\n // ---- presets ----\n listPresets: () => fetcher<McpPreset[]>(\"/mcp/presets\"),\n usePresets: () =>\n useQuery({\n queryKey: [\"mcp-presets\"] as const,\n queryFn: () => mcpServers.listPresets(),\n staleTime: 5 * 60 * 1000,\n }),\n\n // ---- check (one-shot JSON, kept for back-compat) ----\n check: (id: string) =>\n fetcher<McpServerDTO>(`/mcp/servers/${encodeURIComponent(id)}/check`, {\n method: \"POST\",\n }),\n useCheck: (opts?: { onSuccess?: (server: McpServerDTO) => void; onError?: (err: Error) => void }) => {\n const qc = useQueryClient()\n return useMutation({\n mutationFn: (id: string) => mcpServers.check(id),\n onSuccess: (server) => {\n qc.invalidateQueries({ queryKey: base.keys.all() })\n opts?.onSuccess?.(server)\n },\n onError: (err: Error) => opts?.onError?.(err),\n })\n },\n\n // ---- check (SSE stream) ----\n /** Streams every phase + stderr line from the server check, then\n * resolves with the final DTO. Caller's onEvent is invoked for\n * every event including the terminating `result` / `error`. */\n checkStream: async (\n id: string,\n onEvent: (ev: McpCheckEvent) => void,\n opts?: { signal?: AbortSignal },\n ): Promise<McpServerDTO | null> => {\n const res = await rawFetch(`/mcp/servers/${encodeURIComponent(id)}/check`, {\n method: \"POST\",\n headers: { Accept: \"text/event-stream\" },\n signal: opts?.signal,\n })\n if (!res.body) throw new Error(\"No response body\")\n\n const reader = res.body.getReader()\n const decoder = new TextDecoder()\n let buf = \"\"\n let last: McpServerDTO | null = null\n\n try {\n while (true) {\n const { done, value } = await reader.read()\n if (done) break\n buf += decoder.decode(value, { stream: true })\n // SSE frames are separated by \\n\\n.\n let nl = buf.indexOf(\"\\n\\n\")\n while (nl !== -1) {\n const frame = buf.slice(0, nl)\n buf = buf.slice(nl + 2)\n const dataLine = frame.split(\"\\n\").find((l) => l.startsWith(\"data: \"))\n if (dataLine) {\n try {\n const ev = JSON.parse(dataLine.slice(6)) as McpCheckEvent\n onEvent(ev)\n if (ev.type === \"result\") last = ev.server\n else if (ev.type === \"error\" && ev.server) last = ev.server\n } catch { /* malformed frame, skip */ }\n }\n nl = buf.indexOf(\"\\n\\n\")\n }\n }\n } finally {\n try { reader.releaseLock() } catch { /* ignore */ }\n }\n return last\n },\n useCheckStream: () => {\n const qc = useQueryClient()\n const [phase, setPhase] = React.useState<McpCheckPhase | null>(null)\n const [logs, setLogs] = React.useState<string[]>([])\n const [isChecking, setIsChecking] = React.useState(false)\n const [error, setError] = React.useState<string | null>(null)\n const [result, setResult] = React.useState<McpServerDTO | null>(null)\n const abortRef = React.useRef<AbortController | null>(null)\n\n const reset = React.useCallback(() => {\n setPhase(null)\n setLogs([])\n setError(null)\n setResult(null)\n }, [])\n\n const cancel = React.useCallback(() => {\n abortRef.current?.abort()\n abortRef.current = null\n setIsChecking(false)\n }, [])\n\n const run = React.useCallback(\n async (id: string) => {\n reset()\n setIsChecking(true)\n const ctrl = new AbortController()\n abortRef.current = ctrl\n try {\n const final = await mcpServers.checkStream(\n id,\n (ev) => {\n if (ev.type === \"phase\") setPhase(ev.phase)\n else if (ev.type === \"log\") setLogs((prev) => [...prev, ev.line])\n else if (ev.type === \"result\") setResult(ev.server)\n else if (ev.type === \"error\") {\n setError(ev.message)\n if (ev.server) setResult(ev.server)\n }\n },\n { signal: ctrl.signal },\n )\n qc.invalidateQueries({ queryKey: base.keys.all() })\n return final\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err)\n if (!ctrl.signal.aborted) setError(msg)\n return null\n } finally {\n setIsChecking(false)\n abortRef.current = null\n }\n },\n [reset, qc],\n )\n\n React.useEffect(() => () => abortRef.current?.abort(), [])\n\n return { run, cancel, reset, phase, logs, isChecking, error, result }\n },\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z',\n key: '1a8usu',\n },\n ],\n ['path', { d: 'm15 5 4 4', key: '1mk7zo' }],\n];\n\n/**\n * @component @name Pencil\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/pencil\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 Pencil = createLucideIcon('pencil', __iconNode);\n\nexport default Pencil;\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Textarea }\n","\"use client\";\n\n// src/switch.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar SWITCH_NAME = \"Switch\";\nvar [createSwitchContext, createSwitchScope] = createContextScope(SWITCH_NAME);\nvar [SwitchProviderImpl, useSwitchContext] = createSwitchContext(SWITCH_NAME);\nfunction SwitchProvider(props) {\n const {\n __scopeSwitch,\n checked: checkedProp,\n children,\n defaultChecked,\n disabled,\n form,\n name,\n onCheckedChange,\n required,\n value = \"on\",\n // @ts-expect-error\n internal_do_not_use_render\n } = props;\n const [checked, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked ?? false,\n onChange: onCheckedChange,\n caller: SWITCH_NAME\n });\n const [control, setControl] = React.useState(null);\n const [bubbleInput, setBubbleInput] = React.useState(null);\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = control ? !!form || !!control.closest(\"form\") : (\n // We set this to true by default so that events bubble to forms without JS (SSR)\n true\n );\n const context = {\n checked,\n setChecked,\n disabled,\n control,\n setControl,\n name,\n form,\n value,\n hasConsumerStoppedPropagationRef,\n required,\n defaultChecked,\n isFormControl,\n bubbleInput,\n setBubbleInput\n };\n return /* @__PURE__ */ jsx(SwitchProviderImpl, { scope: __scopeSwitch, ...context, children: isFunction(internal_do_not_use_render) ? internal_do_not_use_render(context) : children });\n}\nvar TRIGGER_NAME = \"SwitchTrigger\";\nvar SwitchTrigger = React.forwardRef(\n ({ __scopeSwitch, onClick, ...switchProps }, forwardedRef) => {\n const {\n value,\n disabled,\n checked,\n required,\n setControl,\n setChecked,\n hasConsumerStoppedPropagationRef,\n isFormControl,\n bubbleInput\n } = useSwitchContext(TRIGGER_NAME, __scopeSwitch);\n const composedRefs = useComposedRefs(forwardedRef, setControl);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"switch\",\n \"aria-checked\": checked,\n \"aria-required\": required,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...switchProps,\n ref: composedRefs,\n onClick: composeEventHandlers(onClick, (event) => {\n setChecked((prevChecked) => !prevChecked);\n if (bubbleInput && isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n );\n }\n);\nSwitchTrigger.displayName = TRIGGER_NAME;\nvar Switch = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSwitch,\n name,\n checked,\n defaultChecked,\n required,\n disabled,\n value,\n onCheckedChange,\n form,\n ...switchProps\n } = props;\n return /* @__PURE__ */ jsx(\n SwitchProvider,\n {\n __scopeSwitch,\n checked,\n defaultChecked,\n disabled,\n required,\n onCheckedChange,\n name,\n form,\n value,\n internal_do_not_use_render: ({ isFormControl }) => /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n SwitchTrigger,\n {\n ...switchProps,\n ref: forwardedRef,\n __scopeSwitch\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n SwitchBubbleInput,\n {\n __scopeSwitch\n }\n )\n ] })\n }\n );\n }\n);\nSwitch.displayName = SWITCH_NAME;\nvar THUMB_NAME = \"SwitchThumb\";\nvar SwitchThumb = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSwitch, ...thumbProps } = props;\n const context = useSwitchContext(THUMB_NAME, __scopeSwitch);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...thumbProps,\n ref: forwardedRef\n }\n );\n }\n);\nSwitchThumb.displayName = THUMB_NAME;\nvar BUBBLE_INPUT_NAME = \"SwitchBubbleInput\";\nvar SwitchBubbleInput = React.forwardRef(\n ({ __scopeSwitch, ...props }, forwardedRef) => {\n const {\n control,\n hasConsumerStoppedPropagationRef,\n checked,\n defaultChecked,\n required,\n disabled,\n name,\n value,\n form,\n bubbleInput,\n setBubbleInput\n } = useSwitchContext(BUBBLE_INPUT_NAME, __scopeSwitch);\n const composedRefs = useComposedRefs(forwardedRef, setBubbleInput);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = bubbleInput;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n \"checked\"\n );\n const setChecked = descriptor.set;\n const bubbles = !hasConsumerStoppedPropagationRef.current;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [bubbleInput, prevChecked, checked, hasConsumerStoppedPropagationRef]);\n const defaultCheckedRef = React.useRef(checked);\n return /* @__PURE__ */ jsx(\n Primitive.input,\n {\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: defaultChecked ?? defaultCheckedRef.current,\n required,\n disabled,\n name,\n value,\n form,\n ...props,\n tabIndex: -1,\n ref: composedRefs,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0,\n // We transform because the input is absolutely positioned but we have\n // rendered it **after** the button. This pulls it back to sit on top\n // of the button.\n transform: \"translateX(-100%)\"\n }\n }\n );\n }\n);\nSwitchBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\nfunction getState(checked) {\n return checked ? \"checked\" : \"unchecked\";\n}\nexport {\n Switch as Root,\n Switch,\n SwitchThumb,\n SwitchThumb as Thumb,\n createSwitchScope,\n SwitchBubbleInput as unstable_BubbleInput,\n SwitchProvider as unstable_Provider,\n SwitchBubbleInput as unstable_SwitchBubbleInput,\n SwitchProvider as unstable_SwitchProvider,\n SwitchTrigger as unstable_SwitchTrigger,\n SwitchTrigger as unstable_Trigger\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Switch({\n className,\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n \"peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n \"bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0\"\n )}\n />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\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 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 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":["InfiniteQueryObserver","client","options","bindMethods","fetchNextPage","bind","fetchPreviousPage","setOptions","_type","getOptimisticResult","fetch","meta","fetchMore","direction","createResult","query","state","parentResult","isFetching","isRefetching","isError","isRefetchError","fetchDirection","fetchMeta","isFetchNextPageError","isFetchingNextPage","isFetchPreviousPageError","isFetchingPreviousPage","result","hasNextPage","data","hasPreviousPage","base","path","key","listShape","staleTime","mcpServers","listPresets","usePresets","queryKey","queryFn","check","id","encodeURIComponent","method","useCheck","opts","qc","mutationFn","onSuccess","server","invalidateQueries","keys","all","onError","err","checkStream","onEvent","res","headers","Accept","signal","body","Error","reader","getReader","decoder","TextDecoder","buf","last","done","value","read","decode","stream","nl","indexOf","frame","slice","dataLine","split","find","l","startsWith","ev","JSON","parse","type","releaseLock","useCheckStream","phase","setPhase","logs","setLogs","isChecking","setIsChecking","error","setError","setResult","abortRef","reset","cancel","current","abort","run","ctrl","AbortController","final","prev","line","message","msg","String","aborted","Textarea","className","props","SWITCH_NAME","createSwitchContext","createSwitchScope","SwitchProviderImpl","useSwitchContext","SwitchProvider","__scopeSwitch","checked","checkedProp","children","defaultChecked","disabled","form","name","onCheckedChange","required","internal_do_not_use_render","setChecked","prop","defaultProp","onChange","caller","control","setControl","bubbleInput","setBubbleInput","hasConsumerStoppedPropagationRef","isFormControl","closest","context","scope","isFunction","TRIGGER_NAME","SwitchTrigger","onClick","switchProps","forwardedRef","composedRefs","button","role","getState","ref","event","prevChecked","isPropagationStopped","stopPropagation","displayName","Switch","SwitchBubbleInput","THUMB_NAME","SwitchThumb","thumbProps","span","BUBBLE_INPUT_NAME","controlSize","input","inputProto","window","HTMLInputElement","prototype","descriptor","Object","getOwnPropertyDescriptor","set","bubbles","Event","call","dispatchEvent","defaultCheckedRef","tabIndex","style","position","pointerEvents","opacity","margin","transform","ModelForm","mode","model","defaultProviderId","onSaved","onCancel","providerList","useList","capabilityList","variantList","setName","providerId","setProviderId","upstreamModelId","setUpstreamModelId","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","stringify","default_params","createMutation","useCreate","saved","success","e","updateMutation","useUpdate","handleSubmit","preventDefault","trim","params","payload","upstream_model_id","Number","raw","discovered_metadata","mutate","isLoading","isPending","submitLabel","variantsForCapability","filter","v","capability","selectedProvider","p","onSubmit","Field","label","htmlFor","target","placeholder","readOnly","onValueChange","map","c","some","length","rows","variant","size","KNOWN","chat","embedding","image","rerank","capabilityLabel","tail","includes","pop","replace","toUpperCase","STATUS","ok","dot","text","down","unchecked","ProviderHealthPill","provider","health_check_url","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","title","navigator","clipboard","writeText","Math","round"],"mappings":"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","ignoreList":[0,2,4,6,8,9,10,13,15]}
|