@whxway/loom 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build/56416d4ae4ce586f.js +6 -0
- package/.next/build/56416d4ae4ce586f.js.map +5 -0
- package/.next/build/chunks/[root-of-the-server]__0oj80bi._.js +206 -0
- package/.next/build/chunks/[root-of-the-server]__0oj80bi._.js.map +8 -0
- package/.next/build/chunks/[root-of-the-server]__1f933tp._.js +500 -0
- package/.next/build/chunks/[root-of-the-server]__1f933tp._.js.map +11 -0
- package/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_0b7xl6g._.js +13 -0
- package/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_0b7xl6g._.js.map +5 -0
- package/.next/build/chunks/[turbopack]_runtime.js +890 -0
- package/.next/build/chunks/[turbopack]_runtime.js.map +11 -0
- package/.next/build/chunks/node_modules_20v-8wl._.js +6824 -0
- package/.next/build/chunks/node_modules_20v-8wl._.js.map +47 -0
- package/.next/build/package.json +1 -0
- package/.next/build-manifest.json +3 -3
- package/.next/cache/.previewinfo +1 -0
- package/.next/cache/.rscinfo +1 -0
- package/.next/cache/.tsbuildinfo +1 -0
- package/.next/diagnostics/build-diagnostics.json +6 -0
- package/.next/diagnostics/framework.json +1 -0
- package/.next/diagnostics/route-bundle-stats.json +488 -0
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/app/(auth)/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/logs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/mcp/page.js.nft.json +1 -1
- package/.next/server/app/(dashboard)/mcp/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/mcp/presets/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/models/[name]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/playground/audio/speech/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/playground/audio/transcription/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/playground/chat/page.js.nft.json +1 -1
- package/.next/server/app/(dashboard)/playground/chat/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/playground/embedding/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/playground/image/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/playground/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/playground/video/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/providers/[name]/page.js.nft.json +1 -1
- package/.next/server/app/(dashboard)/providers/[name]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/providers/page.js.nft.json +1 -1
- package/.next/server/app/(dashboard)/providers/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/settings/api-keys/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
- package/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/settings/users/page.js.nft.json +1 -1
- package/.next/server/app/(dashboard)/settings/users/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +2 -2
- package/.next/server/app/_not-found.rsc +3 -3
- package/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/adapters/route.js.nft.json +1 -1
- package/.next/server/app/api/apikeys/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/apikeys/route.js.nft.json +1 -1
- package/.next/server/app/api/capabilities/route.js.nft.json +1 -1
- package/.next/server/app/api/conversations/[id]/messages/route.js.nft.json +1 -1
- package/.next/server/app/api/conversations/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/conversations/route.js.nft.json +1 -1
- package/.next/server/app/api/health/route.js.nft.json +1 -1
- package/.next/server/app/api/login/route.js.nft.json +1 -1
- package/.next/server/app/api/logout/route.js.nft.json +1 -1
- package/.next/server/app/api/logs/generations/[id]/images/[idx]/route.js.nft.json +1 -1
- package/.next/server/app/api/logs/generations/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/logs/generations/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/presets/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[id]/check/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[id]/tools/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -1
- package/.next/server/app/api/messages/[id]/rate/route.js.nft.json +1 -1
- package/.next/server/app/api/models/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/models/route.js.nft.json +1 -1
- package/.next/server/app/api/ping/route.js.nft.json +1 -1
- package/.next/server/app/api/playground/chat/route.js.nft.json +1 -1
- package/.next/server/app/api/playground/embedding/route.js.nft.json +1 -1
- package/.next/server/app/api/providers/[id]/check/route.js.nft.json +1 -1
- package/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
- package/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/providers/probe/route.js.nft.json +1 -1
- package/.next/server/app/api/providers/reload/route.js.nft.json +1 -1
- package/.next/server/app/api/providers/route.js.nft.json +1 -1
- package/.next/server/app/api/stats/models/[name]/route.js.nft.json +1 -1
- package/.next/server/app/api/stats/route.js.nft.json +1 -1
- package/.next/server/app/api/tools/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/tools/route.js.nft.json +1 -1
- package/.next/server/app/api/users/[username]/route.js.nft.json +1 -1
- package/.next/server/app/api/users/me/preferences/route.js.nft.json +1 -1
- package/.next/server/app/api/users/me/route.js.nft.json +1 -1
- package/.next/server/app/api/users/route.js.nft.json +1 -1
- package/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
- package/.next/server/app/api/v1/models/route.js.nft.json +1 -1
- package/.next/server/app/api/v1/rerank/route.js.nft.json +1 -1
- package/.next/server/app/api/v1/videos/[id]/content/route.js.nft.json +1 -1
- package/.next/server/app/api/v1/videos/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/v1/videos/route.js.nft.json +1 -1
- package/.next/server/app/api/variants/route.js.nft.json +1 -1
- package/.next/server/app/index.html +2 -2
- package/.next/server/app/index.rsc +3 -3
- package/.next/server/app/index.segments/!KGRhc2hib2FyZCk/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/index.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login.html +2 -2
- package/.next/server/app/login.rsc +3 -3
- package/.next/server/app/login.segments/!KGF1dGgp/login/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/login.segments/!KGF1dGgp/login.segment.rsc +1 -1
- package/.next/server/app/login.segments/!KGF1dGgp.segment.rsc +1 -1
- package/.next/server/app/login.segments/_full.segment.rsc +3 -3
- package/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/.next/server/app/login.segments/_index.segment.rsc +2 -2
- package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/logs.html +2 -2
- package/.next/server/app/logs.rsc +3 -3
- package/.next/server/app/logs.segments/!KGRhc2hib2FyZCk/logs/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/logs.segments/!KGRhc2hib2FyZCk/logs.segment.rsc +1 -1
- package/.next/server/app/logs.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/.next/server/app/logs.segments/_full.segment.rsc +3 -3
- package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/logs.segments/_index.segment.rsc +2 -2
- package/.next/server/app/logs.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/mcp/presets.html +2 -2
- package/.next/server/app/mcp/presets.rsc +5 -5
- package/.next/server/app/mcp/presets.segments/!KGRhc2hib2FyZCk/mcp/presets/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/mcp/presets.segments/!KGRhc2hib2FyZCk/mcp/presets.segment.rsc +1 -1
- package/.next/server/app/mcp/presets.segments/!KGRhc2hib2FyZCk/mcp.segment.rsc +1 -1
- package/.next/server/app/mcp/presets.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/.next/server/app/mcp/presets.segments/_full.segment.rsc +5 -5
- package/.next/server/app/mcp/presets.segments/_head.segment.rsc +1 -1
- package/.next/server/app/mcp/presets.segments/_index.segment.rsc +2 -2
- package/.next/server/app/mcp/presets.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/mcp.html +2 -2
- package/.next/server/app/mcp.rsc +5 -5
- package/.next/server/app/mcp.segments/!KGRhc2hib2FyZCk/mcp/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/mcp.segments/!KGRhc2hib2FyZCk/mcp.segment.rsc +1 -1
- package/.next/server/app/mcp.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/.next/server/app/mcp.segments/_full.segment.rsc +5 -5
- package/.next/server/app/mcp.segments/_head.segment.rsc +1 -1
- package/.next/server/app/mcp.segments/_index.segment.rsc +2 -2
- package/.next/server/app/mcp.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/playground/audio/speech.html +2 -2
- package/.next/server/app/playground/audio/speech.rsc +3 -3
- package/.next/server/app/playground/audio/speech.segments/!KGRhc2hib2FyZCk/playground/audio/speech/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/playground/audio/speech.segments/!KGRhc2hib2FyZCk/playground/audio/speech.segment.rsc +1 -1
- package/.next/server/app/playground/audio/speech.segments/!KGRhc2hib2FyZCk/playground/audio.segment.rsc +1 -1
- package/.next/server/app/playground/audio/speech.segments/!KGRhc2hib2FyZCk/playground.segment.rsc +1 -1
- package/.next/server/app/playground/audio/speech.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/.next/server/app/playground/audio/speech.segments/_full.segment.rsc +3 -3
- package/.next/server/app/playground/audio/speech.segments/_head.segment.rsc +1 -1
- package/.next/server/app/playground/audio/speech.segments/_index.segment.rsc +2 -2
- package/.next/server/app/playground/audio/speech.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/playground/audio/transcription.html +2 -2
- package/.next/server/app/playground/audio/transcription.rsc +3 -3
- package/.next/server/app/playground/audio/transcription.segments/!KGRhc2hib2FyZCk/playground/audio/transcription/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/playground/audio/transcription.segments/!KGRhc2hib2FyZCk/playground/audio/transcription.segment.rsc +1 -1
- package/.next/server/app/playground/audio/transcription.segments/!KGRhc2hib2FyZCk/playground/audio.segment.rsc +1 -1
- package/.next/server/app/playground/audio/transcription.segments/!KGRhc2hib2FyZCk/playground.segment.rsc +1 -1
- package/.next/server/app/playground/audio/transcription.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/.next/server/app/playground/audio/transcription.segments/_full.segment.rsc +3 -3
- package/.next/server/app/playground/audio/transcription.segments/_head.segment.rsc +1 -1
- package/.next/server/app/playground/audio/transcription.segments/_index.segment.rsc +2 -2
- package/.next/server/app/playground/audio/transcription.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/playground/chat.html +2 -2
- package/.next/server/app/playground/chat.rsc +5 -5
- package/.next/server/app/playground/chat.segments/!KGRhc2hib2FyZCk/playground/chat/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/playground/chat.segments/!KGRhc2hib2FyZCk/playground/chat.segment.rsc +1 -1
- package/.next/server/app/playground/chat.segments/!KGRhc2hib2FyZCk/playground.segment.rsc +1 -1
- package/.next/server/app/playground/chat.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/.next/server/app/playground/chat.segments/_full.segment.rsc +5 -5
- package/.next/server/app/playground/chat.segments/_head.segment.rsc +1 -1
- package/.next/server/app/playground/chat.segments/_index.segment.rsc +2 -2
- package/.next/server/app/playground/chat.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/playground/embedding.html +2 -2
- package/.next/server/app/playground/embedding.rsc +3 -3
- package/.next/server/app/playground/embedding.segments/!KGRhc2hib2FyZCk/playground/embedding/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/playground/embedding.segments/!KGRhc2hib2FyZCk/playground/embedding.segment.rsc +1 -1
- package/.next/server/app/playground/embedding.segments/!KGRhc2hib2FyZCk/playground.segment.rsc +1 -1
- package/.next/server/app/playground/embedding.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/.next/server/app/playground/embedding.segments/_full.segment.rsc +3 -3
- package/.next/server/app/playground/embedding.segments/_head.segment.rsc +1 -1
- package/.next/server/app/playground/embedding.segments/_index.segment.rsc +2 -2
- package/.next/server/app/playground/embedding.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/playground/image.html +2 -2
- package/.next/server/app/playground/image.rsc +3 -3
- package/.next/server/app/playground/image.segments/!KGRhc2hib2FyZCk/playground/image/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/playground/image.segments/!KGRhc2hib2FyZCk/playground/image.segment.rsc +1 -1
- package/.next/server/app/playground/image.segments/!KGRhc2hib2FyZCk/playground.segment.rsc +1 -1
- package/.next/server/app/playground/image.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/.next/server/app/playground/image.segments/_full.segment.rsc +3 -3
- package/.next/server/app/playground/image.segments/_head.segment.rsc +1 -1
- package/.next/server/app/playground/image.segments/_index.segment.rsc +2 -2
- package/.next/server/app/playground/image.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/playground/video.html +2 -2
- package/.next/server/app/playground/video.rsc +3 -3
- package/.next/server/app/playground/video.segments/!KGRhc2hib2FyZCk/playground/video/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/playground/video.segments/!KGRhc2hib2FyZCk/playground/video.segment.rsc +1 -1
- package/.next/server/app/playground/video.segments/!KGRhc2hib2FyZCk/playground.segment.rsc +1 -1
- package/.next/server/app/playground/video.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/.next/server/app/playground/video.segments/_full.segment.rsc +3 -3
- package/.next/server/app/playground/video.segments/_head.segment.rsc +1 -1
- package/.next/server/app/playground/video.segments/_index.segment.rsc +2 -2
- package/.next/server/app/playground/video.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/playground.html +2 -2
- package/.next/server/app/playground.rsc +3 -3
- package/.next/server/app/playground.segments/!KGRhc2hib2FyZCk/playground/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/playground.segments/!KGRhc2hib2FyZCk/playground.segment.rsc +1 -1
- package/.next/server/app/playground.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/.next/server/app/playground.segments/_full.segment.rsc +3 -3
- package/.next/server/app/playground.segments/_head.segment.rsc +1 -1
- package/.next/server/app/playground.segments/_index.segment.rsc +2 -2
- package/.next/server/app/playground.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/providers.html +2 -2
- package/.next/server/app/providers.rsc +5 -5
- package/.next/server/app/providers.segments/!KGRhc2hib2FyZCk/providers/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/providers.segments/!KGRhc2hib2FyZCk/providers.segment.rsc +1 -1
- package/.next/server/app/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/.next/server/app/providers.segments/_full.segment.rsc +5 -5
- package/.next/server/app/providers.segments/_head.segment.rsc +1 -1
- package/.next/server/app/providers.segments/_index.segment.rsc +2 -2
- package/.next/server/app/providers.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings/api-keys.html +2 -2
- package/.next/server/app/settings/api-keys.rsc +3 -3
- package/.next/server/app/settings/api-keys.segments/!KGRhc2hib2FyZCk/settings/api-keys/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/settings/api-keys.segments/!KGRhc2hib2FyZCk/settings/api-keys.segment.rsc +1 -1
- package/.next/server/app/settings/api-keys.segments/!KGRhc2hib2FyZCk/settings.segment.rsc +1 -1
- package/.next/server/app/settings/api-keys.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/.next/server/app/settings/api-keys.segments/_full.segment.rsc +3 -3
- package/.next/server/app/settings/api-keys.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings/api-keys.segments/_index.segment.rsc +2 -2
- package/.next/server/app/settings/api-keys.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings/users.html +2 -2
- package/.next/server/app/settings/users.rsc +5 -5
- package/.next/server/app/settings/users.segments/!KGRhc2hib2FyZCk/settings/users/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/settings/users.segments/!KGRhc2hib2FyZCk/settings/users.segment.rsc +1 -1
- package/.next/server/app/settings/users.segments/!KGRhc2hib2FyZCk/settings.segment.rsc +1 -1
- package/.next/server/app/settings/users.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/.next/server/app/settings/users.segments/_full.segment.rsc +5 -5
- package/.next/server/app/settings/users.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings/users.segments/_index.segment.rsc +2 -2
- package/.next/server/app/settings/users.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings.html +2 -2
- package/.next/server/app/settings.rsc +5 -5
- package/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings.segment.rsc +1 -1
- package/.next/server/app/settings.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_full.segment.rsc +5 -5
- package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_index.segment.rsc +2 -2
- package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/.next/server/chunks/[root-of-the-server]__02sypva._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__02sypva._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__0g3mnim._.js +4 -1
- package/.next/server/chunks/[root-of-the-server]__0g3mnim._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__0myi8j1._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__0myi8j1._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__1qg3d87._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__1qg3d87._.js.map +1 -1
- package/.next/server/chunks/ssr/_001fhst._.js +3 -0
- package/.next/server/chunks/ssr/_001fhst._.js.map +1 -0
- package/.next/server/chunks/ssr/_02wtd-0._.js +3 -0
- package/.next/server/chunks/ssr/_02wtd-0._.js.map +1 -0
- package/.next/server/chunks/ssr/_05ufvn1._.js +9 -0
- package/.next/server/chunks/ssr/_05ufvn1._.js.map +1 -0
- package/.next/server/chunks/ssr/{_1fd20ju._.js → _066w-6f._.js} +2 -2
- package/.next/server/chunks/ssr/{_1fd20ju._.js.map → _066w-6f._.js.map} +1 -1
- package/.next/server/chunks/ssr/_0gd7kq_._.js +1 -1
- package/.next/server/chunks/ssr/_0gd7kq_._.js.map +1 -1
- package/.next/server/chunks/ssr/_0k-6auj._.js +3 -0
- package/.next/server/chunks/ssr/_0k-6auj._.js.map +1 -0
- package/.next/server/chunks/ssr/_0qo9tx1._.js +3 -0
- package/.next/server/chunks/ssr/_0qo9tx1._.js.map +1 -0
- package/.next/server/chunks/ssr/_0uom5g-._.js +9 -0
- package/.next/server/chunks/ssr/_0uom5g-._.js.map +1 -0
- package/.next/server/chunks/ssr/_1b09eqp._.js +1 -1
- package/.next/server/chunks/ssr/_1b09eqp._.js.map +1 -1
- package/.next/server/chunks/ssr/_1oi0iqt._.js +9 -0
- package/.next/server/chunks/ssr/_1oi0iqt._.js.map +1 -0
- package/.next/server/chunks/ssr/_1q3gglq._.js +3 -0
- package/.next/server/chunks/ssr/_1q3gglq._.js.map +1 -0
- package/.next/server/chunks/ssr/_1y5sreb._.js +3 -0
- package/.next/server/chunks/ssr/_1y5sreb._.js.map +1 -0
- package/.next/server/chunks/ssr/_1zlpzyk._.js +1 -1
- package/.next/server/chunks/ssr/_1zlpzyk._.js.map +1 -1
- package/.next/server/chunks/ssr/app_(dashboard)_mcp_page_tsx_0cg7pz9._.js +1 -1
- package/.next/server/chunks/ssr/app_(dashboard)_mcp_page_tsx_0cg7pz9._.js.map +1 -1
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/pages/404.html +2 -2
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/0brzabhj3foow.js +1 -0
- package/.next/static/chunks/0cbg1vmtl84ae.css +1 -0
- package/.next/static/chunks/0hf0pedij0d6a.js +7 -0
- package/.next/static/chunks/1lo5yg9gvb9eg.js +7 -0
- package/.next/static/chunks/1s-rfyrjre6lb.js +1 -0
- package/.next/static/chunks/27siz43i4h5l7.js +9 -0
- package/.next/static/chunks/29p-wdja_cbgh.js +11 -0
- package/.next/static/chunks/396ikhrcofosq.js +7 -0
- package/.next/static/chunks/3m3fw3fmcc301.js +7 -0
- package/.next/trace +2 -0
- package/.next/trace-build +1 -1
- package/.next/types/cache-life.d.ts +145 -0
- package/.next/types/routes.d.ts +139 -0
- package/.next/types/validator.ts +682 -0
- package/bin/loom.mjs +80 -21
- package/package.json +1 -1
- package/.next/server/chunks/ssr/_0g6iz5n._.js +0 -3
- package/.next/server/chunks/ssr/_0g6iz5n._.js.map +0 -1
- package/.next/server/chunks/ssr/_0mim08o._.js +0 -3
- package/.next/server/chunks/ssr/_0mim08o._.js.map +0 -1
- package/.next/server/chunks/ssr/_0xm-krv._.js +0 -9
- package/.next/server/chunks/ssr/_0xm-krv._.js.map +0 -1
- package/.next/server/chunks/ssr/_0zxn_u0._.js +0 -3
- package/.next/server/chunks/ssr/_0zxn_u0._.js.map +0 -1
- package/.next/server/chunks/ssr/_151pht4._.js +0 -9
- package/.next/server/chunks/ssr/_151pht4._.js.map +0 -1
- package/.next/server/chunks/ssr/_18tl_0o._.js +0 -9
- package/.next/server/chunks/ssr/_18tl_0o._.js.map +0 -1
- package/.next/server/chunks/ssr/_19nuoa6._.js +0 -9
- package/.next/server/chunks/ssr/_19nuoa6._.js.map +0 -1
- package/.next/server/chunks/ssr/_1ax02l9._.js +0 -3
- package/.next/server/chunks/ssr/_1ax02l9._.js.map +0 -1
- package/.next/server/chunks/ssr/_1fze3ic._.js +0 -9
- package/.next/server/chunks/ssr/_1fze3ic._.js.map +0 -1
- package/.next/static/chunks/0zryggvaj_s87.js +0 -7
- package/.next/static/chunks/16bx44gr1d_ij.js +0 -7
- package/.next/static/chunks/172e7ymu9a3w9.js +0 -1
- package/.next/static/chunks/1_w-1rm5wy0l7.css +0 -1
- package/.next/static/chunks/2j_bpzzylp1un.js +0 -9
- package/.next/static/chunks/2r2pwisd9bptv.js +0 -11
- package/.next/static/chunks/3at-42v-_yh7y.js +0 -7
- package/.next/static/chunks/3bp0ieicfxx5n.js +0 -1
- package/.next/static/chunks/3et56kszc9f9a.js +0 -7
- /package/.next/static/{S-TxD5uw__EHY12mebgvS → wCZkC7ZaYrxG37d-e2tac}/_buildManifest.js +0 -0
- /package/.next/static/{S-TxD5uw__EHY12mebgvS → wCZkC7ZaYrxG37d-e2tac}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{S-TxD5uw__EHY12mebgvS → wCZkC7ZaYrxG37d-e2tac}/_ssgManifest.js +0 -0
package/bin/loom.mjs
CHANGED
|
@@ -121,12 +121,69 @@ var init_paths = __esm({
|
|
|
121
121
|
}
|
|
122
122
|
});
|
|
123
123
|
|
|
124
|
+
// lib/cli/external-aliases.ts
|
|
125
|
+
import { existsSync as existsSync2, lstatSync, mkdirSync, readFileSync as readFileSync2, readlinkSync, rmSync, symlinkSync } from "node:fs";
|
|
126
|
+
import { createRequire } from "node:module";
|
|
127
|
+
import { dirname, relative, resolve as resolve2 } from "node:path";
|
|
128
|
+
function ensureExternalAliases() {
|
|
129
|
+
if (!existsSync2(MANIFEST)) return;
|
|
130
|
+
let aliases;
|
|
131
|
+
try {
|
|
132
|
+
aliases = JSON.parse(readFileSync2(MANIFEST, "utf8"));
|
|
133
|
+
} catch (err) {
|
|
134
|
+
console.warn(`[loom] failed to parse ${MANIFEST}:`, err.message);
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
if (!aliases || typeof aliases !== "object" || Object.keys(aliases).length === 0) return;
|
|
138
|
+
mkdirSync(MODULES_DIR, { recursive: true });
|
|
139
|
+
const requireFromPkg = createRequire(resolve2(PACKAGE_ROOT, "package.json"));
|
|
140
|
+
let created = 0;
|
|
141
|
+
for (const [hashed, real] of Object.entries(aliases)) {
|
|
142
|
+
const linkPath = resolve2(MODULES_DIR, hashed);
|
|
143
|
+
try {
|
|
144
|
+
const stat = lstatSync(linkPath);
|
|
145
|
+
if (stat.isSymbolicLink()) {
|
|
146
|
+
const target2 = resolve2(MODULES_DIR, readlinkSync(linkPath));
|
|
147
|
+
if (existsSync2(target2)) continue;
|
|
148
|
+
}
|
|
149
|
+
rmSync(linkPath, { recursive: true, force: true });
|
|
150
|
+
} catch {
|
|
151
|
+
}
|
|
152
|
+
let realPkgDir;
|
|
153
|
+
try {
|
|
154
|
+
realPkgDir = dirname(requireFromPkg.resolve(`${real}/package.json`));
|
|
155
|
+
} catch (err) {
|
|
156
|
+
console.warn(`[loom] couldn't resolve "${real}" for alias "${hashed}": ${err.message}`);
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
const target = relative(MODULES_DIR, realPkgDir);
|
|
160
|
+
try {
|
|
161
|
+
symlinkSync(target, linkPath, "junction");
|
|
162
|
+
created++;
|
|
163
|
+
} catch (err) {
|
|
164
|
+
console.warn(`[loom] failed to symlink "${hashed}" -> "${target}": ${err.message}`);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
if (created > 0) {
|
|
168
|
+
console.log(`[loom] linked ${created} external package alias${created === 1 ? "" : "es"}`);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
var MANIFEST, MODULES_DIR;
|
|
172
|
+
var init_external_aliases = __esm({
|
|
173
|
+
"lib/cli/external-aliases.ts"() {
|
|
174
|
+
"use strict";
|
|
175
|
+
init_paths();
|
|
176
|
+
MANIFEST = resolve2(PACKAGE_ROOT, ".next/external-aliases.json");
|
|
177
|
+
MODULES_DIR = resolve2(PACKAGE_ROOT, ".next/node_modules");
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
|
|
124
181
|
// lib/cli/next-runtime.ts
|
|
125
182
|
import { spawn } from "node:child_process";
|
|
126
|
-
import { createRequire } from "node:module";
|
|
127
|
-
import { resolve as
|
|
183
|
+
import { createRequire as createRequire2 } from "node:module";
|
|
184
|
+
import { resolve as resolve3 } from "node:path";
|
|
128
185
|
function resolveNextBin() {
|
|
129
|
-
const requireFromPkg =
|
|
186
|
+
const requireFromPkg = createRequire2(resolve3(PACKAGE_ROOT, "package.json"));
|
|
130
187
|
try {
|
|
131
188
|
return requireFromPkg.resolve("next/dist/bin/next");
|
|
132
189
|
} catch (err) {
|
|
@@ -141,6 +198,7 @@ function runNext(mode, opts) {
|
|
|
141
198
|
const nextBin = resolveNextBin();
|
|
142
199
|
process.env.LOOM_USER_CWD = USER_CWD;
|
|
143
200
|
process.env.LOOM_PACKAGE_ROOT = PACKAGE_ROOT;
|
|
201
|
+
if (mode === "start") ensureExternalAliases();
|
|
144
202
|
const { path: cfgPath, applied } = preflightFromConfig();
|
|
145
203
|
if (cfgPath) {
|
|
146
204
|
const note2 = applied.length > 0 ? ` (env: ${applied.join(", ")})` : "";
|
|
@@ -162,6 +220,7 @@ var init_next_runtime = __esm({
|
|
|
162
220
|
"lib/cli/next-runtime.ts"() {
|
|
163
221
|
"use strict";
|
|
164
222
|
init_preflight();
|
|
223
|
+
init_external_aliases();
|
|
165
224
|
init_paths();
|
|
166
225
|
}
|
|
167
226
|
});
|
|
@@ -402,9 +461,9 @@ var init_template = __esm({
|
|
|
402
461
|
});
|
|
403
462
|
|
|
404
463
|
// lib/cli/init/wizard.ts
|
|
405
|
-
import { existsSync as
|
|
464
|
+
import { existsSync as existsSync3, mkdirSync as mkdirSync2, writeFileSync } from "node:fs";
|
|
406
465
|
import { homedir as homedir2 } from "node:os";
|
|
407
|
-
import { dirname, resolve as
|
|
466
|
+
import { dirname as dirname2, resolve as resolve4 } from "node:path";
|
|
408
467
|
import { confirm, group, intro, log, note, outro, password as password2, select as select2, text as text2 } from "@clack/prompts";
|
|
409
468
|
async function runInteractiveInit(opts) {
|
|
410
469
|
if (opts.print) {
|
|
@@ -413,7 +472,7 @@ async function runInteractiveInit(opts) {
|
|
|
413
472
|
}
|
|
414
473
|
if (opts.yes) {
|
|
415
474
|
const outPath2 = resolveOutPath(opts);
|
|
416
|
-
if (
|
|
475
|
+
if (existsSync3(outPath2) && !opts.force) {
|
|
417
476
|
console.error(`Refusing to overwrite existing file: ${outPath2}`);
|
|
418
477
|
console.error("Pass --force to replace it.");
|
|
419
478
|
process.exit(1);
|
|
@@ -497,22 +556,22 @@ async function promptOutPath() {
|
|
|
497
556
|
initialValue: "project"
|
|
498
557
|
})
|
|
499
558
|
);
|
|
500
|
-
if (target === "project") return
|
|
559
|
+
if (target === "project") return resolve4(USER_CWD, "loom.config.yaml");
|
|
501
560
|
if (target === "user") {
|
|
502
|
-
const xdg = process.env.XDG_CONFIG_HOME ||
|
|
503
|
-
return
|
|
561
|
+
const xdg = process.env.XDG_CONFIG_HOME || resolve4(homedir2(), ".config");
|
|
562
|
+
return resolve4(xdg, "loom.yaml");
|
|
504
563
|
}
|
|
505
564
|
const custom = await ask(
|
|
506
565
|
text2({
|
|
507
566
|
message: "Config path",
|
|
508
|
-
placeholder:
|
|
509
|
-
initialValue:
|
|
567
|
+
placeholder: resolve4(USER_CWD, "loom.config.yaml"),
|
|
568
|
+
initialValue: resolve4(USER_CWD, "loom.config.yaml")
|
|
510
569
|
})
|
|
511
570
|
);
|
|
512
|
-
return
|
|
571
|
+
return resolve4(USER_CWD, custom);
|
|
513
572
|
}
|
|
514
573
|
async function promptOverwrite(outPath) {
|
|
515
|
-
if (!
|
|
574
|
+
if (!existsSync3(outPath)) return;
|
|
516
575
|
const overwrite = await ask(
|
|
517
576
|
confirm({
|
|
518
577
|
message: `${outPath} already exists. Overwrite?`,
|
|
@@ -541,15 +600,15 @@ async function promptAdminPassword() {
|
|
|
541
600
|
);
|
|
542
601
|
}
|
|
543
602
|
function resolveOutPath(opts) {
|
|
544
|
-
if (opts.explicitOut) return
|
|
603
|
+
if (opts.explicitOut) return resolve4(USER_CWD, opts.explicitOut);
|
|
545
604
|
if (opts.user) {
|
|
546
|
-
const xdg = process.env.XDG_CONFIG_HOME ||
|
|
547
|
-
return
|
|
605
|
+
const xdg = process.env.XDG_CONFIG_HOME || resolve4(homedir2(), ".config");
|
|
606
|
+
return resolve4(xdg, "loom.yaml");
|
|
548
607
|
}
|
|
549
|
-
return
|
|
608
|
+
return resolve4(USER_CWD, "loom.config.yaml");
|
|
550
609
|
}
|
|
551
610
|
function writeOut(outPath, yaml) {
|
|
552
|
-
|
|
611
|
+
mkdirSync2(dirname2(outPath), { recursive: true });
|
|
553
612
|
writeFileSync(outPath, yaml, { mode: 384 });
|
|
554
613
|
log.success(`Wrote ${outPath}`);
|
|
555
614
|
}
|
|
@@ -649,7 +708,7 @@ var init_main = __esm({
|
|
|
649
708
|
main = defineCommand4({
|
|
650
709
|
meta: {
|
|
651
710
|
name: "loom",
|
|
652
|
-
version: "
|
|
711
|
+
version: "1.1.0",
|
|
653
712
|
description: "Self-hosted AI testing platform \u2014 playground, MCP runtime, request logs, and an OpenAI-compatible gateway."
|
|
654
713
|
},
|
|
655
714
|
subCommands: {
|
|
@@ -667,9 +726,9 @@ var init_main = __esm({
|
|
|
667
726
|
});
|
|
668
727
|
|
|
669
728
|
// bin/loom.ts
|
|
670
|
-
import { dirname as
|
|
729
|
+
import { dirname as dirname3, resolve as resolve5 } from "node:path";
|
|
671
730
|
import { fileURLToPath } from "node:url";
|
|
672
731
|
import { runMain } from "citty";
|
|
673
|
-
process.env.LOOM_PACKAGE_ROOT =
|
|
732
|
+
process.env.LOOM_PACKAGE_ROOT = resolve5(dirname3(fileURLToPath(import.meta.url)), "..");
|
|
674
733
|
var { main: main2 } = await Promise.resolve().then(() => (init_main(), main_exports));
|
|
675
734
|
runMain(main2);
|
package/package.json
CHANGED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[965733,a=>{"use strict";var b=a.i(187924),c=a.i(897942),d=a.i(422262),e=a.i(497895);function f({...a}){return(0,b.jsx)(c.Portal,{"data-slot":"dialog-portal",...a})}function g({className:a,...d}){return(0,b.jsx)(c.Overlay,{"data-slot":"dialog-overlay",className:(0,e.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",a),...d})}a.s(["Dialog",0,function({...a}){return(0,b.jsx)(c.Root,{"data-slot":"dialog",...a})},"DialogContent",0,function({className:a,children:h,showCloseButton:i=!0,...j}){return(0,b.jsxs)(f,{"data-slot":"dialog-portal",children:[(0,b.jsx)(g,{}),(0,b.jsxs)(c.Content,{"data-slot":"dialog-content",className:(0,e.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 outline-none sm:max-w-lg",a),...j,children:[h,i&&(0,b.jsxs)(c.Close,{"data-slot":"dialog-close",className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",children:[(0,b.jsx)(d.XIcon,{}),(0,b.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})},"DialogDescription",0,function({className:a,...d}){return(0,b.jsx)(c.Description,{"data-slot":"dialog-description",className:(0,e.cn)("text-muted-foreground text-sm",a),...d})},"DialogFooter",0,function({className:a,...c}){return(0,b.jsx)("div",{"data-slot":"dialog-footer",className:(0,e.cn)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",a),...c})},"DialogHeader",0,function({className:a,...c}){return(0,b.jsx)("div",{"data-slot":"dialog-header",className:(0,e.cn)("flex flex-col gap-2 text-center sm:text-left",a),...c})},"DialogTitle",0,function({className:a,...d}){return(0,b.jsx)(c.Title,{"data-slot":"dialog-title",className:(0,e.cn)("text-lg leading-none font-semibold",a),...d})}])},254161,a=>{"use strict";var b=a.i(187924),c=a.i(811011),d=a.i(400187),e=a.i(497895);let f=(0,d.cva)("inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none 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 transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"}},defaultVariants:{variant:"default"}});a.s(["Badge",0,function({className:a,variant:d,asChild:g=!1,...h}){let i=g?c.Slot:"span";return(0,b.jsx)(i,{"data-slot":"badge",className:(0,e.cn)(f({variant:d}),a),...h})}])},167079,a=>{"use strict";let b=(0,a.i(349682).defineResource)({path:"/logs/generations",key:"logs",staleTime:3e4});a.s(["logs",0,b])},440955,a=>{"use strict";let b=(0,a.i(349682).defineResource)({path:"/users",key:"users",staleTime:6e4});a.s(["users",0,b])},324546,a=>{"use strict";var b=a.i(370025),c=a.i(433217),d=a.i(349682),e=a.i(262477);let f=(0,d.defineResource)({path:"/providers",key:"providers",listShape:"array",staleTime:6e4,invalidates:["models"]}),g={...f,listModels:a=>(0,e.fetcher)(`/providers/${encodeURIComponent(a)}/models`),reload:()=>(0,e.fetcher)("/providers/reload",{method:"POST"}),check:a=>(0,e.fetcher)(`/providers/${encodeURIComponent(a)}/check`,{method:"POST"}),probe:a=>(0,e.fetcher)("/providers/probe",{method:"POST",body:JSON.stringify({health_check_url:a}),headers:{"Content-Type":"application/json"}}),useModels:a=>(0,c.useQuery)({queryKey:[...f.keys.one(a??""),"models"],queryFn:()=>g.listModels(a),enabled:!!a}),useReload:a=>{let c=f.useInvalidate();return(0,b.useMutation)({mutationFn:g.reload,...a,onSuccess:(b,d,e,f)=>{c(),a?.onSuccess?.(b,d,e,f)}})},useCheck:(a,c)=>{let d=f.useInvalidate();return(0,b.useMutation)({mutationFn:()=>g.check(a),...c,onSuccess:(a,b,e,f)=>{d(),c?.onSuccess?.(a,b,e,f)}})}};a.s(["providers",0,g])},506122,187527,145116,74761,842698,a=>{"use strict";a.i(440955),a.i(324546),a.i(524634),a.i(298509),a.i(167079),a.i(812213);var b=a.i(349682);let c=(0,b.defineResource)({path:"/capabilities",key:"capabilities",listShape:"array",staleTime:6e4});a.s(["capabilities",0,c],187527);let d=(0,b.defineResource)({path:"/adapters",key:"adapters",listShape:"array",staleTime:6e4});a.s(["adapters",0,d],145116);let e=(0,b.defineResource)({path:"/variants",key:"variants",listShape:"array",staleTime:6e4});a.s(["variants",0,e],74761);let f=(0,b.defineResource)({path:"/tools",key:"tools",listShape:"array",staleTime:6e4});a.s(["tools",0,f],842698),a.i(339220),a.s([],506122)},339220,a=>{"use strict";var b=a.i(370025),c=a.i(433217),d=a.i(937927),e=a.i(349682),f=a.i(262477);let g=(0,e.defineResource)({path:"/mcp/servers",key:"mcp-servers",listShape:"array",staleTime:6e4}),h={...g,listPresets:()=>(0,f.fetcher)("/mcp/presets"),usePresets:()=>(0,c.useQuery)({queryKey:["mcp-presets"],queryFn:()=>h.listPresets(),staleTime:3e5}),check:a=>(0,f.fetcher)(`/mcp/servers/${encodeURIComponent(a)}/check`,{method:"POST"}),useCheck:a=>{let c=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:a=>h.check(a),onSuccess:b=>{c.invalidateQueries({queryKey:g.keys.all()}),a?.onSuccess?.(b)},onError:b=>a?.onError?.(b)})}};a.s(["mcpServers",0,h])},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})}])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=_0g6iz5n._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../components/ui/dialog.tsx","../../../../components/ui/badge.tsx","../../../../lib/api/logs.ts","../../../../lib/api/users.ts","../../../../lib/api/providers.ts","../../../../lib/api/index.ts","../../../../lib/api/capabilities.ts","../../../../lib/api/adapters.ts","../../../../lib/api/variants.ts","../../../../lib/api/tools.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"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { XIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 outline-none sm:max-w-lg\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n \"inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none 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 transition-[color,box-shadow] overflow-hidden\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\n destructive:\n \"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant,\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"span\"\n\n return (\n <Comp\n data-slot=\"badge\"\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nexport { Badge, badgeVariants }\n","import { defineResource } from \"./resource\";\nimport type { Paginated } from \"@/lib/schemas/common\";\nimport type { LogDetailDTO, LogFilterParams, LogListItemDTO } from \"@/lib/schemas/log\";\n\n/** Read-only resource: only list + get are used. */\nexport const logs = defineResource<\n LogDetailDTO,\n never,\n never,\n LogFilterParams,\n Paginated<LogListItemDTO>\n>({\n path: \"/logs/generations\",\n key: \"logs\",\n // Logs change as new generations happen, but for the same filter\n // a 30s cache is fine — the user can hit the explicit Refresh\n // button to force a refetch. Stops re-fetching on every nav back\n // to the page within a session.\n staleTime: 30_000,\n});\n","import { defineResource } from \"./resource\";\nimport type { Paginated } from \"@/lib/schemas/common\";\nimport type { UserCreateInput, UserDTO, UserFilterParams, UserUpdateInput } from \"@/lib/schemas/user\";\n\nexport const users = defineResource<\n UserDTO,\n UserCreateInput,\n UserUpdateInput,\n UserFilterParams,\n Paginated<UserDTO>\n>({\n path: \"/users\",\n key: \"users\",\n staleTime: 60_000,\n});\n","\"use client\";\nimport { useMutation, useQuery, useQueryClient, type UseMutationOptions } from \"@tanstack/react-query\";\nimport { defineResource } from \"./resource\";\nimport { fetcher } from \"./client\";\nimport type { ModelDTO } from \"@/lib/schemas/model\";\nimport type { ProviderCreateInput, ProviderDTO, ProviderUpdateInput } from \"@/lib/schemas/provider\";\n\nconst base = defineResource<\n ProviderDTO,\n ProviderCreateInput,\n ProviderUpdateInput,\n Record<string, unknown>,\n ProviderDTO[]\n>({\n path: \"/providers\",\n key: \"providers\",\n listShape: \"array\",\n staleTime: 60_000,\n invalidates: [\"models\"],\n});\n\nexport interface ProviderCheckResult {\n ok: boolean;\n models?: number;\n error?: string;\n latency_ms?: number;\n}\n\nexport interface ProviderProbeResult {\n ok: boolean;\n error?: string;\n latency_ms: number;\n}\n\nexport const providers = {\n ...base,\n\n // ---- custom endpoints ----\n listModels: (id: string) =>\n fetcher<ModelDTO[]>(`/providers/${encodeURIComponent(id)}/models`),\n reload: () =>\n fetcher<null>(\"/providers/reload\", { method: \"POST\" }),\n check: (id: string) =>\n fetcher<ProviderCheckResult>(\n `/providers/${encodeURIComponent(id)}/check`,\n { method: \"POST\" },\n ),\n /** Probe an arbitrary health-check URL without touching any saved\n * provider — used by the form's Test button so it validates the\n * URL currently in the input, not the (possibly stale) saved one. */\n probe: (healthCheckUrl: string) =>\n fetcher<ProviderProbeResult>(\"/providers/probe\", {\n method: \"POST\",\n body: JSON.stringify({ health_check_url: healthCheckUrl }),\n headers: { \"Content-Type\": \"application/json\" },\n }),\n\n // ---- custom hooks ----\n useModels: (id: string | undefined | null) =>\n useQuery({\n queryKey: [...base.keys.one(id ?? \"\"), \"models\"] as const,\n queryFn: () => providers.listModels(id!),\n enabled: !!id,\n }),\n\n /** POST /providers/reload — clears the discovery cache. Cascades same\n * invalidation as a CRUD mutation (providers + models). */\n useReload: (opts?: Omit<UseMutationOptions<null, Error, void>, \"mutationFn\">) => {\n const invalidate = base.useInvalidate();\n return useMutation<null, Error, void>({\n mutationFn: providers.reload,\n ...opts,\n onSuccess: (data, vars, onMutateResult, context) => {\n invalidate();\n opts?.onSuccess?.(data, vars, onMutateResult, context);\n },\n });\n },\n\n /** POST /providers/:id/check — runs the health probe. On success the\n * server has updated `last_health_*`, so we invalidate the providers\n * cache to surface the new status pill. */\n useCheck: (\n id: string | undefined | null,\n opts?: Omit<UseMutationOptions<ProviderCheckResult, Error, void>, \"mutationFn\">,\n ) => {\n const invalidate = base.useInvalidate();\n return useMutation<ProviderCheckResult, Error, void>({\n mutationFn: () => providers.check(id!),\n ...opts,\n onSuccess: (data, vars, onMutateResult, context) => {\n invalidate();\n opts?.onSuccess?.(data, vars, onMutateResult, context);\n },\n });\n },\n};\n","// Per-domain api modules. Each `*Resource` object exposes both raw fetch\n// functions and TanStack Query hooks generated from a single descriptor —\n// see lib/api/resource.ts. Custom (non-CRUD) endpoints are colocated in\n// the same module.\n\nexport { auth } from \"./auth\";\nexport { users } from \"./users\";\nexport { providers } from \"./providers\";\nexport { models } from \"./models\";\nexport { apiKeys } from \"./apikeys\";\nexport { logs } from \"./logs\";\nexport { conversations, messages } from \"./conversations\";\nexport { gateway } from \"./gateway\";\nexport { capabilities } from \"./capabilities\";\nexport { preferences } from \"./preferences\";\nexport { adapters } from \"./adapters\";\nexport { variants } from \"./variants\";\nexport { tools } from \"./tools\";\nexport { mcpServers } from \"./mcp\";\nexport { stats } from \"./stats\";\n\nexport { ApiError, fetcher, rawFetch, withQuery, API_BASE } from \"./client\";\nexport { defineResource } from \"./resource\";\n","import { defineResource } from \"./resource\";\nimport type { CapabilityDTO } from \"@/lib/schemas/capability\";\n\n/** Read-only catalog. */\nexport const capabilities = defineResource<\n CapabilityDTO,\n never,\n never,\n Record<string, unknown>,\n CapabilityDTO[]\n>({\n path: \"/capabilities\",\n key: \"capabilities\",\n listShape: \"array\",\n staleTime: 60_000,\n});\n","import { defineResource } from \"./resource\";\nimport type { AdapterDescriptor } from \"@/lib/schemas/adapter\";\n\n/** Read-only catalog of registered ProviderAdapter ids. */\nexport const adapters = defineResource<\n AdapterDescriptor,\n never,\n never,\n Record<string, unknown>,\n AdapterDescriptor[]\n>({\n path: \"/adapters\",\n key: \"adapters\",\n listShape: \"array\",\n staleTime: 60_000,\n});\n","import { defineResource } from \"./resource\";\nimport type { VariantDescriptor } from \"@/lib/schemas/variant\";\n\n/** Read-only catalog of registered upstream API variants. */\nexport const variants = defineResource<\n VariantDescriptor,\n never,\n never,\n Record<string, unknown>,\n VariantDescriptor[]\n>({\n path: \"/variants\",\n key: \"variants\",\n listShape: \"array\",\n staleTime: 60_000,\n});\n","import { defineResource } from \"./resource\";\nimport type { ToolCreateInput, ToolDTO, ToolUpdateInput } from \"@/lib/schemas/tool\";\n\nexport const tools = defineResource<\n ToolDTO,\n ToolCreateInput,\n ToolUpdateInput,\n Record<string, unknown>,\n ToolDTO[]\n>({\n path: \"/tools\",\n key: \"tools\",\n listShape: \"array\",\n staleTime: 60_000,\n});\n","\"use client\"\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\"\nimport { defineResource } from \"./resource\"\nimport { fetcher } 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\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 ----\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","\"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"],"names":["Dialog","props","DialogTrigger","DialogPortal","DialogClose","DialogOverlay","className","DialogContent","children","showCloseButton","DialogHeader","DialogFooter","DialogTitle","DialogDescription","badgeVariants","variants","variant","default","secondary","destructive","outline","defaultVariants","Badge","asChild","Comp","logs","path","key","staleTime","users","base","listShape","invalidates","providers","listModels","id","encodeURIComponent","reload","method","check","probe","healthCheckUrl","body","JSON","stringify","health_check_url","headers","useModels","queryKey","keys","one","queryFn","enabled","useReload","opts","invalidate","useInvalidate","mutationFn","onSuccess","data","vars","onMutateResult","context","useCheck","capabilities","mcpServers","listPresets","usePresets","qc","server","invalidateQueries","all","onError","err","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","hasPreviousPage","SWITCH_NAME","createSwitchContext","createSwitchScope","SwitchProviderImpl","useSwitchContext","SwitchProvider","__scopeSwitch","checked","checkedProp","defaultChecked","disabled","form","name","onCheckedChange","required","value","internal_do_not_use_render","setChecked","prop","defaultProp","onChange","caller","control","setControl","bubbleInput","setBubbleInput","hasConsumerStoppedPropagationRef","isFormControl","closest","scope","isFunction","TRIGGER_NAME","SwitchTrigger","onClick","switchProps","forwardedRef","composedRefs","button","type","role","getState","ref","event","prevChecked","current","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","Textarea"],"mappings":"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","ignoreList":[11,13,14,15]}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[965733,a=>{"use strict";var b=a.i(187924),c=a.i(897942),d=a.i(422262),e=a.i(497895);function f({...a}){return(0,b.jsx)(c.Portal,{"data-slot":"dialog-portal",...a})}function g({className:a,...d}){return(0,b.jsx)(c.Overlay,{"data-slot":"dialog-overlay",className:(0,e.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",a),...d})}a.s(["Dialog",0,function({...a}){return(0,b.jsx)(c.Root,{"data-slot":"dialog",...a})},"DialogContent",0,function({className:a,children:h,showCloseButton:i=!0,...j}){return(0,b.jsxs)(f,{"data-slot":"dialog-portal",children:[(0,b.jsx)(g,{}),(0,b.jsxs)(c.Content,{"data-slot":"dialog-content",className:(0,e.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 outline-none sm:max-w-lg",a),...j,children:[h,i&&(0,b.jsxs)(c.Close,{"data-slot":"dialog-close",className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",children:[(0,b.jsx)(d.XIcon,{}),(0,b.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})},"DialogDescription",0,function({className:a,...d}){return(0,b.jsx)(c.Description,{"data-slot":"dialog-description",className:(0,e.cn)("text-muted-foreground text-sm",a),...d})},"DialogFooter",0,function({className:a,...c}){return(0,b.jsx)("div",{"data-slot":"dialog-footer",className:(0,e.cn)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",a),...c})},"DialogHeader",0,function({className:a,...c}){return(0,b.jsx)("div",{"data-slot":"dialog-header",className:(0,e.cn)("flex flex-col gap-2 text-center sm:text-left",a),...c})},"DialogTitle",0,function({className:a,...d}){return(0,b.jsx)(c.Title,{"data-slot":"dialog-title",className:(0,e.cn)("text-lg leading-none font-semibold",a),...d})}])},254161,a=>{"use strict";var b=a.i(187924),c=a.i(811011),d=a.i(400187),e=a.i(497895);let f=(0,d.cva)("inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none 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 transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"}},defaultVariants:{variant:"default"}});a.s(["Badge",0,function({className:a,variant:d,asChild:g=!1,...h}){let i=g?c.Slot:"span";return(0,b.jsx)(i,{"data-slot":"badge",className:(0,e.cn)(f({variant:d}),a),...h})}])},167079,a=>{"use strict";let b=(0,a.i(349682).defineResource)({path:"/logs/generations",key:"logs",staleTime:3e4});a.s(["logs",0,b])},440955,a=>{"use strict";let b=(0,a.i(349682).defineResource)({path:"/users",key:"users",staleTime:6e4});a.s(["users",0,b])},324546,a=>{"use strict";var b=a.i(370025),c=a.i(433217),d=a.i(349682),e=a.i(262477);let f=(0,d.defineResource)({path:"/providers",key:"providers",listShape:"array",staleTime:6e4,invalidates:["models"]}),g={...f,listModels:a=>(0,e.fetcher)(`/providers/${encodeURIComponent(a)}/models`),reload:()=>(0,e.fetcher)("/providers/reload",{method:"POST"}),check:a=>(0,e.fetcher)(`/providers/${encodeURIComponent(a)}/check`,{method:"POST"}),probe:a=>(0,e.fetcher)("/providers/probe",{method:"POST",body:JSON.stringify({health_check_url:a}),headers:{"Content-Type":"application/json"}}),useModels:a=>(0,c.useQuery)({queryKey:[...f.keys.one(a??""),"models"],queryFn:()=>g.listModels(a),enabled:!!a}),useReload:a=>{let c=f.useInvalidate();return(0,b.useMutation)({mutationFn:g.reload,...a,onSuccess:(b,d,e,f)=>{c(),a?.onSuccess?.(b,d,e,f)}})},useCheck:(a,c)=>{let d=f.useInvalidate();return(0,b.useMutation)({mutationFn:()=>g.check(a),...c,onSuccess:(a,b,e,f)=>{d(),c?.onSuccess?.(a,b,e,f)}})}};a.s(["providers",0,g])},506122,187527,145116,74761,842698,a=>{"use strict";a.i(440955),a.i(324546),a.i(524634),a.i(298509),a.i(167079),a.i(812213);var b=a.i(349682);let c=(0,b.defineResource)({path:"/capabilities",key:"capabilities",listShape:"array",staleTime:6e4});a.s(["capabilities",0,c],187527);let d=(0,b.defineResource)({path:"/adapters",key:"adapters",listShape:"array",staleTime:6e4});a.s(["adapters",0,d],145116);let e=(0,b.defineResource)({path:"/variants",key:"variants",listShape:"array",staleTime:6e4});a.s(["variants",0,e],74761);let f=(0,b.defineResource)({path:"/tools",key:"tools",listShape:"array",staleTime:6e4});a.s(["tools",0,f],842698),a.i(339220),a.s([],506122)},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(349682),f=a.i(262477);let g=(0,e.defineResource)({path:"/mcp/servers",key:"mcp-servers",listShape:"array",staleTime:6e4}),h={...g,listPresets:()=>(0,f.fetcher)("/mcp/presets"),usePresets:()=>(0,c.useQuery)({queryKey:["mcp-presets"],queryFn:()=>h.listPresets(),staleTime:3e5}),check:a=>(0,f.fetcher)(`/mcp/servers/${encodeURIComponent(a)}/check`,{method:"POST"}),useCheck:a=>{let c=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:a=>h.check(a),onSuccess:b=>{c.invalidateQueries({queryKey:g.keys.all()}),a?.onSuccess?.(b)},onError:b=>a?.onError?.(b)})}};a.s(["mcpServers",0,h])},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})}])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=_0mim08o._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../components/ui/dialog.tsx","../../../../components/ui/badge.tsx","../../../../lib/api/logs.ts","../../../../lib/api/users.ts","../../../../lib/api/providers.ts","../../../../lib/api/index.ts","../../../../lib/api/capabilities.ts","../../../../lib/api/adapters.ts","../../../../lib/api/variants.ts","../../../../lib/api/tools.ts","../../../../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","../../../../node_modules/%40radix-ui/react-switch/dist/index.mjs","../../../../components/ui/switch.tsx","../../../../components/ui/textarea.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { XIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 outline-none sm:max-w-lg\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n \"inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none 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 transition-[color,box-shadow] overflow-hidden\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\n destructive:\n \"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant,\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"span\"\n\n return (\n <Comp\n data-slot=\"badge\"\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nexport { Badge, badgeVariants }\n","import { defineResource } from \"./resource\";\nimport type { Paginated } from \"@/lib/schemas/common\";\nimport type { LogDetailDTO, LogFilterParams, LogListItemDTO } from \"@/lib/schemas/log\";\n\n/** Read-only resource: only list + get are used. */\nexport const logs = defineResource<\n LogDetailDTO,\n never,\n never,\n LogFilterParams,\n Paginated<LogListItemDTO>\n>({\n path: \"/logs/generations\",\n key: \"logs\",\n // Logs change as new generations happen, but for the same filter\n // a 30s cache is fine — the user can hit the explicit Refresh\n // button to force a refetch. Stops re-fetching on every nav back\n // to the page within a session.\n staleTime: 30_000,\n});\n","import { defineResource } from \"./resource\";\nimport type { Paginated } from \"@/lib/schemas/common\";\nimport type { UserCreateInput, UserDTO, UserFilterParams, UserUpdateInput } from \"@/lib/schemas/user\";\n\nexport const users = defineResource<\n UserDTO,\n UserCreateInput,\n UserUpdateInput,\n UserFilterParams,\n Paginated<UserDTO>\n>({\n path: \"/users\",\n key: \"users\",\n staleTime: 60_000,\n});\n","\"use client\";\nimport { useMutation, useQuery, useQueryClient, type UseMutationOptions } from \"@tanstack/react-query\";\nimport { defineResource } from \"./resource\";\nimport { fetcher } from \"./client\";\nimport type { ModelDTO } from \"@/lib/schemas/model\";\nimport type { ProviderCreateInput, ProviderDTO, ProviderUpdateInput } from \"@/lib/schemas/provider\";\n\nconst base = defineResource<\n ProviderDTO,\n ProviderCreateInput,\n ProviderUpdateInput,\n Record<string, unknown>,\n ProviderDTO[]\n>({\n path: \"/providers\",\n key: \"providers\",\n listShape: \"array\",\n staleTime: 60_000,\n invalidates: [\"models\"],\n});\n\nexport interface ProviderCheckResult {\n ok: boolean;\n models?: number;\n error?: string;\n latency_ms?: number;\n}\n\nexport interface ProviderProbeResult {\n ok: boolean;\n error?: string;\n latency_ms: number;\n}\n\nexport const providers = {\n ...base,\n\n // ---- custom endpoints ----\n listModels: (id: string) =>\n fetcher<ModelDTO[]>(`/providers/${encodeURIComponent(id)}/models`),\n reload: () =>\n fetcher<null>(\"/providers/reload\", { method: \"POST\" }),\n check: (id: string) =>\n fetcher<ProviderCheckResult>(\n `/providers/${encodeURIComponent(id)}/check`,\n { method: \"POST\" },\n ),\n /** Probe an arbitrary health-check URL without touching any saved\n * provider — used by the form's Test button so it validates the\n * URL currently in the input, not the (possibly stale) saved one. */\n probe: (healthCheckUrl: string) =>\n fetcher<ProviderProbeResult>(\"/providers/probe\", {\n method: \"POST\",\n body: JSON.stringify({ health_check_url: healthCheckUrl }),\n headers: { \"Content-Type\": \"application/json\" },\n }),\n\n // ---- custom hooks ----\n useModels: (id: string | undefined | null) =>\n useQuery({\n queryKey: [...base.keys.one(id ?? \"\"), \"models\"] as const,\n queryFn: () => providers.listModels(id!),\n enabled: !!id,\n }),\n\n /** POST /providers/reload — clears the discovery cache. Cascades same\n * invalidation as a CRUD mutation (providers + models). */\n useReload: (opts?: Omit<UseMutationOptions<null, Error, void>, \"mutationFn\">) => {\n const invalidate = base.useInvalidate();\n return useMutation<null, Error, void>({\n mutationFn: providers.reload,\n ...opts,\n onSuccess: (data, vars, onMutateResult, context) => {\n invalidate();\n opts?.onSuccess?.(data, vars, onMutateResult, context);\n },\n });\n },\n\n /** POST /providers/:id/check — runs the health probe. On success the\n * server has updated `last_health_*`, so we invalidate the providers\n * cache to surface the new status pill. */\n useCheck: (\n id: string | undefined | null,\n opts?: Omit<UseMutationOptions<ProviderCheckResult, Error, void>, \"mutationFn\">,\n ) => {\n const invalidate = base.useInvalidate();\n return useMutation<ProviderCheckResult, Error, void>({\n mutationFn: () => providers.check(id!),\n ...opts,\n onSuccess: (data, vars, onMutateResult, context) => {\n invalidate();\n opts?.onSuccess?.(data, vars, onMutateResult, context);\n },\n });\n },\n};\n","// Per-domain api modules. Each `*Resource` object exposes both raw fetch\n// functions and TanStack Query hooks generated from a single descriptor —\n// see lib/api/resource.ts. Custom (non-CRUD) endpoints are colocated in\n// the same module.\n\nexport { auth } from \"./auth\";\nexport { users } from \"./users\";\nexport { providers } from \"./providers\";\nexport { models } from \"./models\";\nexport { apiKeys } from \"./apikeys\";\nexport { logs } from \"./logs\";\nexport { conversations, messages } from \"./conversations\";\nexport { gateway } from \"./gateway\";\nexport { capabilities } from \"./capabilities\";\nexport { preferences } from \"./preferences\";\nexport { adapters } from \"./adapters\";\nexport { variants } from \"./variants\";\nexport { tools } from \"./tools\";\nexport { mcpServers } from \"./mcp\";\nexport { stats } from \"./stats\";\n\nexport { ApiError, fetcher, rawFetch, withQuery, API_BASE } from \"./client\";\nexport { defineResource } from \"./resource\";\n","import { defineResource } from \"./resource\";\nimport type { CapabilityDTO } from \"@/lib/schemas/capability\";\n\n/** Read-only catalog. */\nexport const capabilities = defineResource<\n CapabilityDTO,\n never,\n never,\n Record<string, unknown>,\n CapabilityDTO[]\n>({\n path: \"/capabilities\",\n key: \"capabilities\",\n listShape: \"array\",\n staleTime: 60_000,\n});\n","import { defineResource } from \"./resource\";\nimport type { AdapterDescriptor } from \"@/lib/schemas/adapter\";\n\n/** Read-only catalog of registered ProviderAdapter ids. */\nexport const adapters = defineResource<\n AdapterDescriptor,\n never,\n never,\n Record<string, unknown>,\n AdapterDescriptor[]\n>({\n path: \"/adapters\",\n key: \"adapters\",\n listShape: \"array\",\n staleTime: 60_000,\n});\n","import { defineResource } from \"./resource\";\nimport type { VariantDescriptor } from \"@/lib/schemas/variant\";\n\n/** Read-only catalog of registered upstream API variants. */\nexport const variants = defineResource<\n VariantDescriptor,\n never,\n never,\n Record<string, unknown>,\n VariantDescriptor[]\n>({\n path: \"/variants\",\n key: \"variants\",\n listShape: \"array\",\n staleTime: 60_000,\n});\n","import { defineResource } from \"./resource\";\nimport type { ToolCreateInput, ToolDTO, ToolUpdateInput } from \"@/lib/schemas/tool\";\n\nexport const tools = defineResource<\n ToolDTO,\n ToolCreateInput,\n ToolUpdateInput,\n Record<string, unknown>,\n ToolDTO[]\n>({\n path: \"/tools\",\n key: \"tools\",\n listShape: \"array\",\n staleTime: 60_000,\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","\"use client\"\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\"\nimport { defineResource } from \"./resource\"\nimport { fetcher } 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\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 ----\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","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"],"names":["Dialog","props","DialogTrigger","DialogPortal","DialogClose","DialogOverlay","className","DialogContent","children","showCloseButton","DialogHeader","DialogFooter","DialogTitle","DialogDescription","badgeVariants","variants","variant","default","secondary","destructive","outline","defaultVariants","Badge","asChild","Comp","logs","path","key","staleTime","users","base","listShape","invalidates","providers","listModels","id","encodeURIComponent","reload","method","check","probe","healthCheckUrl","body","JSON","stringify","health_check_url","headers","useModels","queryKey","keys","one","queryFn","enabled","useReload","opts","invalidate","useInvalidate","mutationFn","onSuccess","data","vars","onMutateResult","context","useCheck","capabilities","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","hasPreviousPage","mcpServers","listPresets","usePresets","qc","server","invalidateQueries","all","onError","err","SWITCH_NAME","createSwitchContext","createSwitchScope","SwitchProviderImpl","useSwitchContext","SwitchProvider","__scopeSwitch","checked","checkedProp","defaultChecked","disabled","form","name","onCheckedChange","required","value","internal_do_not_use_render","setChecked","prop","defaultProp","onChange","caller","control","setControl","bubbleInput","setBubbleInput","hasConsumerStoppedPropagationRef","isFormControl","closest","scope","isFunction","TRIGGER_NAME","SwitchTrigger","onClick","switchProps","forwardedRef","composedRefs","button","type","role","getState","ref","event","prevChecked","current","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","Textarea"],"mappings":"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","ignoreList":[10,12,14,15]}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
module.exports=[703130,a=>{"use strict";var b=a.i(187924),c=a.i(497895);a.s(["Card",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card",className:(0,c.cn)("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",a),...d})},"CardContent",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-content",className:(0,c.cn)("px-6",a),...d})},"CardDescription",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-description",className:(0,c.cn)("text-muted-foreground text-sm",a),...d})},"CardHeader",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-header",className:(0,c.cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",a),...d})},"CardTitle",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-title",className:(0,c.cn)("leading-none font-semibold",a),...d})}])},205522,a=>{"use strict";var b=a.i(187924),c=a.i(497895);a.s(["Input",0,function({className:a,type:d,...e}){return(0,b.jsx)("input",{type:d,"data-slot":"input",className:(0,c.cn)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",a),...e})}])},596221,a=>{"use strict";var b=a.i(404650);a.s(["Loader2",()=>b.default])},917171,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(30553),e=c.forwardRef((a,c)=>(0,b.jsx)(d.Primitive.label,{...a,ref:c,onMouseDown:b=>{b.target.closest("button, input, select, textarea")||(a.onMouseDown?.(b),!b.defaultPrevented&&b.detail>1&&b.preventDefault())}}));e.displayName="Label";var f=a.i(497895);a.s(["Label",0,function({className:a,...c}){return(0,b.jsx)(e,{"data-slot":"label",className:(0,f.cn)("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",a),...c})}],917171)},77994,a=>{"use strict";var b=a.i(572131);a.s(["usePrevious",0,function(a){let c=b.useRef({value:a,previous:a});return b.useMemo(()=>(c.current.value!==a&&(c.current.previous=c.current.value,c.current.value=a),c.current.previous),[a])}])},524634,a=>{"use strict";let b=(0,a.i(349682).defineResource)({path:"/models",key:"models",listShape:"array",staleTime:6e4,invalidates:["providers"]});a.s(["models",0,b])},130656,a=>{"use strict";a.s(["clamp",0,function(a,[b,c]){return Math.min(c,Math.max(b,a))}])},504699,a=>{"use strict";let b=(0,a.i(883706).default)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);a.s(["default",0,b])},734020,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(497895);let e={openai:"/providers/openai.svg",claude:"/providers/claude.svg",anthropic:"/providers/claude.svg",gemini:"/providers/gemini.svg",google:"/providers/gemini.svg",vertexai:"/providers/vertexai.svg",vertex:"/providers/vertex.svg",deepseek:"/providers/deepseek.png",moonshot:"/providers/moonshot.png",zhipu:"/providers/zhipu.png",aliyun:"/providers/alibabacloud.png",alibabacloud:"/providers/alibabacloud.png",siliconflow:"/providers/siliconflow.svg",tei:"/providers/tei.svg",transformers:"/providers/transformers.svg",baichuan:"/providers/baichuan.png",volcengine:"/providers/volcengine.png",stepfun:"/providers/stepfun.png"},f=new Set(["openai","vertex","vertexai","siliconflow"]),g=(0,c.memo)(function({providerName:a,className:g,width:h=24,height:i=24}){let[j,k]=(0,c.useState)(!1),l=a.toLowerCase().replace(/[^a-z0-9_]/g,""),m=e[l],n=f.has(l);return m&&!j?(0,b.jsx)("img",{src:m,alt:"",width:h,height:i,loading:"lazy",className:(0,d.cn)("object-contain shrink-0",n&&"dark:invert",g),onError:()=>k(!0)}):(0,b.jsx)("span",{className:(0,d.cn)("rounded bg-muted flex items-center justify-center text-[8px] font-bold shrink-0",g),style:{width:h,height:i},children:a.substring(0,2).toUpperCase()})});a.s(["ProviderIcon",0,g])},587532,a=>{"use strict";let b=(0,a.i(883706).default)("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);a.s(["Search",0,b],587532)},182434,a=>{"use strict";let b=(0,a.i(883706).default)("bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]);a.s(["Bot",0,b],182434)},405784,a=>{"use strict";var b=a.i(504699);a.s(["ChevronDown",()=>b.default])},781560,a=>{"use strict";let b=(0,a.i(883706).default)("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]);a.s(["Trash2",0,b],781560)},73570,a=>{"use strict";var b=a.i(783604);a.s(["AlertTriangle",()=>b.default])},59848,a=>{"use strict";var b=a.i(187924),c=a.i(73570),d=a.i(596221),e=a.i(572131),f=a.i(750104),g=a.i(470121),h=a.i(897942),i=a.i(507554),j=a.i(811011),k="AlertDialog",[l,m]=(0,f.createContextScope)(k,[h.createDialogScope]),n=(0,h.createDialogScope)(),o=a=>{let{__scopeAlertDialog:c,...d}=a,e=n(c);return(0,b.jsx)(h.Root,{...e,...d,modal:!0})};o.displayName=k,e.forwardRef((a,c)=>{let{__scopeAlertDialog:d,...e}=a,f=n(d);return(0,b.jsx)(h.Trigger,{...f,...e,ref:c})}).displayName="AlertDialogTrigger";var p=a=>{let{__scopeAlertDialog:c,...d}=a,e=n(c);return(0,b.jsx)(h.Portal,{...e,...d})};p.displayName="AlertDialogPortal";var q=e.forwardRef((a,c)=>{let{__scopeAlertDialog:d,...e}=a,f=n(d);return(0,b.jsx)(h.Overlay,{...f,...e,ref:c})});q.displayName="AlertDialogOverlay";var r="AlertDialogContent",[s,t]=l(r),u=(0,j.createSlottable)("AlertDialogContent"),v=e.forwardRef((a,c)=>{let{__scopeAlertDialog:d,children:f,...j}=a,k=n(d),l=e.useRef(null),m=(0,g.useComposedRefs)(c,l),o=e.useRef(null);return(0,b.jsx)(h.WarningProvider,{contentName:r,titleName:w,docsSlug:"alert-dialog",children:(0,b.jsx)(s,{scope:d,cancelRef:o,children:(0,b.jsxs)(h.Content,{role:"alertdialog",...k,...j,ref:m,onOpenAutoFocus:(0,i.composeEventHandlers)(j.onOpenAutoFocus,a=>{a.preventDefault(),o.current?.focus({preventScroll:!0})}),onPointerDownOutside:a=>a.preventDefault(),onInteractOutside:a=>a.preventDefault(),children:[(0,b.jsx)(u,{children:f}),(0,b.jsx)(D,{contentRef:l})]})})})});v.displayName=r;var w="AlertDialogTitle",x=e.forwardRef((a,c)=>{let{__scopeAlertDialog:d,...e}=a,f=n(d);return(0,b.jsx)(h.Title,{...f,...e,ref:c})});x.displayName=w;var y="AlertDialogDescription",z=e.forwardRef((a,c)=>{let{__scopeAlertDialog:d,...e}=a,f=n(d);return(0,b.jsx)(h.Description,{...f,...e,ref:c})});z.displayName=y;var A=e.forwardRef((a,c)=>{let{__scopeAlertDialog:d,...e}=a,f=n(d);return(0,b.jsx)(h.Close,{...f,...e,ref:c})});A.displayName="AlertDialogAction";var B="AlertDialogCancel",C=e.forwardRef((a,c)=>{let{__scopeAlertDialog:d,...e}=a,{cancelRef:f}=t(B,d),i=n(d),j=(0,g.useComposedRefs)(c,f);return(0,b.jsx)(h.Close,{...i,...e,ref:j})});C.displayName=B;var D=({contentRef:a})=>{let b=`\`${r}\` requires a description for the component to be accessible for screen reader users.
|
|
2
|
-
|
|
3
|
-
You can add a description to the \`${r}\` by passing a \`${y}\` component as a child, which also benefits sighted users by adding visible context to the dialog.
|
|
4
|
-
|
|
5
|
-
Alternatively, you can use your own component as a description by assigning it an \`id\` and passing the same value to the \`aria-describedby\` prop in \`${r}\`. If the description is confusing or duplicative for sighted users, you can use the \`@radix-ui/react-visually-hidden\` primitive as a wrapper around your description component.
|
|
6
|
-
|
|
7
|
-
For more information, see https://radix-ui.com/primitives/docs/components/alert-dialog`;return e.useEffect(()=>{document.getElementById(a.current?.getAttribute("aria-describedby"))||console.warn(b)},[b,a]),null},E=a.i(497895),F=a.i(340695);let G=e.forwardRef(({className:a,...c},d)=>(0,b.jsx)(q,{className:(0,E.cn)("fixed inset-0 z-50 bg-black/50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",a),...c,ref:d}));G.displayName=q.displayName;let H=e.forwardRef(({className:a,...c},d)=>(0,b.jsxs)(p,{children:[(0,b.jsx)(G,{}),(0,b.jsx)(v,{ref:d,className:(0,E.cn)("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg duration-200 outline-none","data-[state=open]:animate-in data-[state=closed]:animate-out","data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0","data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",a),...c})]}));H.displayName=v.displayName;let I=({className:a,...c})=>(0,b.jsx)("div",{className:(0,E.cn)("flex flex-col space-y-2 text-center sm:text-left",a),...c});I.displayName="AlertDialogHeader";let J=({className:a,...c})=>(0,b.jsx)("div",{className:(0,E.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",a),...c});J.displayName="AlertDialogFooter";let K=e.forwardRef(({className:a,...c},d)=>(0,b.jsx)(x,{ref:d,className:(0,E.cn)("text-lg font-semibold",a),...c}));K.displayName=x.displayName;let L=e.forwardRef(({className:a,...c},d)=>(0,b.jsx)(z,{ref:d,className:(0,E.cn)("text-sm text-muted-foreground",a),...c}));L.displayName=z.displayName;let M=e.forwardRef(({className:a,...c},d)=>(0,b.jsx)(A,{ref:d,className:(0,E.cn)((0,F.buttonVariants)(),a),...c}));M.displayName=A.displayName;let N=e.forwardRef(({className:a,...c},d)=>(0,b.jsx)(C,{ref:d,className:(0,E.cn)((0,F.buttonVariants)({variant:"outline"}),"mt-2 sm:mt-0",a),...c}));N.displayName=C.displayName,a.s(["ConfirmDialog",0,function({open:a,onOpenChange:e,title:f,description:g,confirmLabel:h="Confirm",cancelLabel:i="Cancel",destructive:j,isLoading:k,onConfirm:l}){return(0,b.jsx)(o,{open:a,onOpenChange:e,children:(0,b.jsxs)(H,{children:[(0,b.jsx)(I,{children:(0,b.jsxs)("div",{className:"flex items-start gap-3",children:[j&&(0,b.jsx)("div",{className:"mt-0.5 flex h-9 w-9 shrink-0 items-center justify-center rounded-full bg-destructive/10 text-destructive",children:(0,b.jsx)(c.AlertTriangle,{className:"h-4 w-4"})}),(0,b.jsxs)("div",{className:"flex-1 space-y-1.5",children:[(0,b.jsx)(K,{className:(0,E.cn)(j&&"text-foreground"),children:f}),(0,b.jsx)(L,{children:g})]})]})}),(0,b.jsxs)(J,{children:[(0,b.jsx)(N,{disabled:k,children:i}),(0,b.jsxs)(M,{onClick:a=>{a.preventDefault(),l()},disabled:k,className:(0,E.cn)(j&&"bg-destructive text-white shadow-sm shadow-destructive/30 hover:bg-destructive/90 focus-visible:ring-destructive/40"),children:[k&&(0,b.jsx)(d.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),h]})]})]})})}],59848)},588237,a=>{"use strict";var b=a.i(187924),c=a.i(497895);a.s(["Table",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:(0,b.jsx)("table",{"data-slot":"table",className:(0,c.cn)("w-full caption-bottom text-sm",a),...d})})},"TableBody",0,function({className:a,...d}){return(0,b.jsx)("tbody",{"data-slot":"table-body",className:(0,c.cn)("[&_tr:last-child]:border-0",a),...d})},"TableCell",0,function({className:a,...d}){return(0,b.jsx)("td",{"data-slot":"table-cell",className:(0,c.cn)("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",a),...d})},"TableHead",0,function({className:a,...d}){return(0,b.jsx)("th",{"data-slot":"table-head",className:(0,c.cn)("text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",a),...d})},"TableHeader",0,function({className:a,...d}){return(0,b.jsx)("thead",{"data-slot":"table-header",className:(0,c.cn)("[&_tr]:border-b",a),...d})},"TableRow",0,function({className:a,...d}){return(0,b.jsx)("tr",{"data-slot":"table-row",className:(0,c.cn)("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",a),...d})}])},915618,a=>{"use strict";let b=(0,a.i(883706).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);a.s(["Plus",0,b],915618)},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)},533441,a=>{"use strict";var b=a.i(234157);a.s(["Check",()=>b.default])},546842,a=>{"use strict";let b=(0,a.i(883706).default)("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);a.s(["User",0,b],546842)}];
|
|
8
|
-
|
|
9
|
-
//# sourceMappingURL=_0xm-krv._.js.map
|