@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
|
@@ -19,9 +19,9 @@ ${o}`,u++}else r5(e,r,a)?p=e.slice(32===e.charCodeAt(r+6)?r+7:r+6,s)||void 0:y(e
|
|
|
19
19
|
`,r),a=-1;if(-1!==t&&-1!==s?a=t<s?t:s:-1!==t?a=t===e.length-1?-1:t:-1!==s&&(a=s),-1===a)break;y(e,r,a),r=a+1,13===e.charCodeAt(r-1)&&10===e.charCodeAt(r)&&r++}return e.slice(r)}function y(e,r,s){if(r===s)return void(u>0&&t({id:c,event:p,data:d}),c=void 0,d="",u=0,p=void 0);let o=e.charCodeAt(r);if(r8(e,r,o)){let t=32===e.charCodeAt(r+5)?r+6:r+5,a=e.slice(t,s);d=0===u?a:`${d}
|
|
20
20
|
${a}`,u++;return}if(r5(e,r,o)){p=e.slice(32===e.charCodeAt(r+6)?r+7:r+6,s)||void 0;return}if(105===o&&100===e.charCodeAt(r+1)&&58===e.charCodeAt(r+2)){let t=e.slice(32===e.charCodeAt(r+3)?r+4:r+3,s);c=t.includes("\0")?void 0:t;return}if(58===o){a&&a(e.slice(r,s).slice(32===e.charCodeAt(r+1)?2:1));return}let i=e.slice(r,s),n=i.indexOf(":");if(-1===n)return void g(i,"",i);let l=i.slice(0,n),f=32===i.charCodeAt(n+1)?2:1;g(l,i.slice(n+f),i)}function g(e,t,a){switch(e){case"event":p=t||void 0;break;case"data":d=0===u?t:`${d}
|
|
21
21
|
${t}`,u++;break;case"id":c=t.includes("\0")?void 0:t;break;case"retry":/^\d+$/.test(t)?s(parseInt(t,10)):r(new r9(`Invalid \`retry\` value: "${t}"`,{type:"invalid-retry",value:t,line:a}));break;default:r(new r9(`Unknown field "${e.length>20?`${e.slice(0,20)}\u2026`:e}"`,{type:"unknown-field",field:e,value:t,line:a}))}}return{feed:function(e){if(f)throw Error("Cannot feed parser: it was terminated after exceeding the configured max buffer size. Call `reset()` to resume parsing.");if(l&&(l=!1,239===e.charCodeAt(0)&&187===e.charCodeAt(1)&&191===e.charCodeAt(2)&&(e=e.slice(3))),0===i.length){let t=m(e);""!==t&&(i.push(t),n=t.length),h();return}if(-1===e.indexOf(`
|
|
22
|
-
`)&&-1===e.indexOf("\r")){i.push(e),n+=e.length,h();return}i.push(e);let t=i.join("");i.length=0,n=0;let r=m(t);""!==r&&(i.push(r),n=r.length),h()},reset:function(e={}){if(e.consume&&i.length>0){let e=i.join("");y(e,0,e.length)}l=!0,c=void 0,d="",u=0,p=void 0,i.length=0,n=0,f=!1}}}({onEvent:e=>{o.enqueue(e)},onError(t){"function"==typeof e&&e(t),("terminate"===e||"max-buffer-size-exceeded"===t.type)&&o.error(t)},onRetry:t,onComment:r,maxBufferSize:s})},transform(e){a.feed(e)}})}}let r7={initialReconnectionDelay:1e3,maxReconnectionDelay:3e4,reconnectionDelayGrowFactor:1.5,maxRetries:2};class r6 extends Error{constructor(e,t){super(`Streamable HTTP error: ${t}`),this.code=e}}e.s(["StreamableHTTPClientTransport",0,class{constructor(e,t){this._hasCompletedAuthFlow=!1,this._url=e,this._resourceMetadataUrl=void 0,this._scope=void 0,this._requestInit=t?.requestInit,this._authProvider=t?.authProvider,this._fetch=t?.fetch,this._fetchWithInit=function(e=fetch,t){return t?async(r,s)=>e(r,{...t,...s,headers:s?.headers?{...t6(t.headers),...t6(s.headers)}:t.headers}):e}(t?.fetch,t?.requestInit),this._sessionId=t?.sessionId,this._reconnectionOptions=t?.reconnectionOptions??r7}async _authThenStart(){let e;if(!this._authProvider)throw new rq("No auth provider");try{e=await rV(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})}catch(e){throw this.onerror?.(e),e}if("AUTHORIZED"!==e)throw new rq;return await this._startOrAuthSse({resumptionToken:void 0})}async _commonHeaders(){let e={};if(this._authProvider){let t=await this._authProvider.tokens();t&&(e.Authorization=`Bearer ${t.access_token}`)}this._sessionId&&(e["mcp-session-id"]=this._sessionId),this._protocolVersion&&(e["mcp-protocol-version"]=this._protocolVersion);let t=t6(this._requestInit?.headers);return new Headers({...e,...t})}async _startOrAuthSse(e){let{resumptionToken:t}=e;try{let r=await this._commonHeaders();r.set("Accept","text/event-stream"),t&&r.set("last-event-id",t);let s=await (this._fetch??fetch)(this._url,{method:"GET",headers:r,signal:this._abortController?.signal});if(!s.ok){if(await s.body?.cancel(),401===s.status&&this._authProvider)return await this._authThenStart();if(405===s.status)return;throw new r6(s.status,`Failed to open SSE stream: ${s.statusText}`)}this._handleSseStream(s.body,e,!0)}catch(e){throw this.onerror?.(e),e}}_getNextReconnectionDelay(e){return void 0!==this._serverRetryMs?this._serverRetryMs:Math.min(this._reconnectionOptions.initialReconnectionDelay*Math.pow(this._reconnectionOptions.reconnectionDelayGrowFactor,e),this._reconnectionOptions.maxReconnectionDelay)}_scheduleReconnection(e,t=0){let r=this._reconnectionOptions.maxRetries;if(t>=r)return void this.onerror?.(Error(`Maximum reconnection attempts (${r}) exceeded.`));let s=this._getNextReconnectionDelay(t);this._reconnectionTimeout=setTimeout(()=>{this._startOrAuthSse(e).catch(r=>{this.onerror?.(Error(`Failed to reconnect SSE stream: ${r instanceof Error?r.message:String(r)}`)),this._scheduleReconnection(e,t+1)})},s)}_handleSseStream(e,t,r){let s;if(!e)return;let{onresumptiontoken:a,replayMessageId:o}=t,i=!1,n=!1;(async()=>{try{let t=e.pipeThrough(new TextDecoderStream).pipeThrough(new r3({onRetry:e=>{this._serverRetryMs=e}})).getReader();for(;;){let{value:e,done:r}=await t.read();if(r)break;if((e.id&&(s=e.id,i=!0,a?.(e.id)),e.data)&&(!e.event||"message"===e.event))try{let t=D.parse(JSON.parse(e.data));A(t)&&(n=!0,void 0!==o&&(t.id=o)),this.onmessage?.(t)}catch(e){this.onerror?.(e)}}(r||i)&&!n&&this._abortController&&!this._abortController.signal.aborted&&this._scheduleReconnection({resumptionToken:s,onresumptiontoken:a,replayMessageId:o},0)}catch(e){if(this.onerror?.(Error(`SSE stream disconnected: ${e}`)),(r||i)&&!n&&this._abortController&&!this._abortController.signal.aborted)try{this._scheduleReconnection({resumptionToken:s,onresumptiontoken:a,replayMessageId:o},0)}catch(e){this.onerror?.(Error(`Failed to reconnect: ${e instanceof Error?e.message:String(e)}`))}}})()}async start(){if(this._abortController)throw Error("StreamableHTTPClientTransport already started! If using Client class, note that connect() calls start() automatically.");this._abortController=new AbortController}async finishAuth(e){if(!this._authProvider)throw new rq("No auth provider");if("AUTHORIZED"!==await rV(this._authProvider,{serverUrl:this._url,authorizationCode:e,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit}))throw new rq("Failed to authorize")}async close(){this._reconnectionTimeout&&(clearTimeout(this._reconnectionTimeout),this._reconnectionTimeout=void 0),this._abortController?.abort(),this.onclose?.()}async send(e,t){try{let{resumptionToken:r,onresumptiontoken:s}=t||{};if(r)return void this._startOrAuthSse({resumptionToken:r,replayMessageId:I(e)?e.id:void 0}).catch(e=>this.onerror?.(e));let a=await this._commonHeaders();a.set("content-type","application/json"),a.set("accept","application/json, text/event-stream");let o={...this._requestInit,method:"POST",headers:a,body:JSON.stringify(e),signal:this._abortController?.signal},i=await (this._fetch??fetch)(this._url,o),n=i.headers.get("mcp-session-id");if(n&&(this._sessionId=n),!i.ok){let t=await i.text().catch(()=>null);if(401===i.status&&this._authProvider){if(this._hasCompletedAuthFlow)throw new r6(401,"Server returned 401 after successful authentication");let{resourceMetadataUrl:t,scope:r}=rH(i);this._resourceMetadataUrl=t,this._scope=r;let s=await rV(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit});if("AUTHORIZED"!==s)throw new rq;return this._hasCompletedAuthFlow=!0,this.send(e)}if(403===i.status&&this._authProvider){let{resourceMetadataUrl:t,scope:r,error:s}=rH(i);if("insufficient_scope"===s){let s=i.headers.get("WWW-Authenticate");if(this._lastUpscopingHeader===s)throw new r6(403,"Server returned 403 after trying upscoping");r&&(this._scope=r),t&&(this._resourceMetadataUrl=t),this._lastUpscopingHeader=s??void 0;let a=await rV(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetch});if("AUTHORIZED"!==a)throw new rq;return this.send(e)}}throw new r6(i.status,`Error POSTing to endpoint: ${t}`)}if(this._hasCompletedAuthFlow=!1,this._lastUpscopingHeader=void 0,202===i.status){await i.body?.cancel(),et.safeParse(e).success&&this._startOrAuthSse({resumptionToken:void 0}).catch(e=>this.onerror?.(e));return}let l=(Array.isArray(e)?e:[e]).filter(e=>"method"in e&&"id"in e&&void 0!==e.id).length>0,c=i.headers.get("content-type");if(l)if(c?.includes("text/event-stream"))this._handleSseStream(i.body,{onresumptiontoken:s},!1);else if(c?.includes("application/json")){let e=await i.json();for(let t of Array.isArray(e)?e.map(e=>D.parse(e)):[D.parse(e)])this.onmessage?.(t)}else throw await i.body?.cancel(),new r6(-1,`Unexpected content type: ${c}`);else await i.body?.cancel()}catch(e){throw this.onerror?.(e),e}}get sessionId(){return this._sessionId}async terminateSession(){if(this._sessionId)try{let e=await this._commonHeaders(),t={...this._requestInit,method:"DELETE",headers:e,signal:this._abortController?.signal},r=await (this._fetch??fetch)(this._url,t);if(await r.body?.cancel(),!r.ok&&405!==r.status)throw new r6(r.status,`Failed to terminate session: ${r.statusText}`);this._sessionId=void 0}catch(e){throw this.onerror?.(e),e}}setProtocolVersion(e){this._protocolVersion=e}get protocolVersion(){return this._protocolVersion}async resumeStream(e,t){await this._startOrAuthSse({resumptionToken:e,onresumptiontoken:t?.onresumptiontoken})}}],236150)},986241,719192,e=>{"use strict";var t=e.i(425568);let r="enc:v1:";function s(e){if("string"!=typeof e||e.startsWith(r))return e;let s=(0,t.encryptSecret)(e);return s?`${r}${s}`:e}function a(e){if("string"!=typeof e||!e.startsWith(r))return e;try{return(0,t.decryptSecret)(e.slice(r.length))??e}catch{return"<decrypt-failed>"}}function o(e,t){if(!e||"object"!=typeof e||Array.isArray(e))return e;let r={};for(let[s,a]of Object.entries(e))r[s]=t(a);return r}function i(e,t){if("stdio"===e){let e=o(t.env,a);return{...t,env:e}}let r=o(t.headers,a);return{...t,headers:r}}e.s(["decryptConfig",0,i,"encryptConfig",0,function(e,t){if("stdio"===e){let e=o(t.env,s);return{...t,env:e}}let r=o(t.headers,s);return{...t,headers:r}}],719192),e.s(["serializeMcpServer",0,function(e){return{id:e.id,name:e.name,description:e.description,transport:e.transport,config:i(e.transport,e.config??{}),enabled:!!e.enabled,last_check_status:e.lastCheckStatus??null,last_check_at:e.lastCheckAt??null,last_check_error:e.lastCheckError??null,tools_cache:e.toolsCache??null,resources_cache:e.resourcesCache??null,prompts_cache:e.promptsCache??null,server_info:e.serverInfo??null,created_at:e.createdAt,updated_at:e.updatedAt}}],986241)},380689,e=>{"use strict";e.s(["listPromptsForServer",()=>o,"listResourcesForServer",()=>a,"listToolsForServer",()=>s]);var t=e.i(834940),r=e.i(200519);async function s(e){let s=await (0,t.getClient)(e),a=await (0,t.withTimeout)(s.client.listTools(),t.CALL_TIMEOUT_MS,"tools/list");s.lastUsed=Date.now();let o=[];for(let t of a.tools??[]){let s=t.inputSchema??{type:"object",properties:{}};o.push({qualifiedName:(0,r.qualify)(e.name,t.name),localName:t.name,description:t.description??void 0,parameters:s,serverId:e.id,serverName:e.name})}return o}async function a(e){let r=await (0,t.getClient)(e),s=r.client.getServerCapabilities();if(!s?.resources)return null;r.lastUsed=Date.now();let a=[],o=[];try{for(let e of(await (0,t.withTimeout)(r.client.listResources(),t.CALL_TIMEOUT_MS,"resources/list")).resources??[])a.push({uri:e.uri,name:e.name,description:e.description,mimeType:e.mimeType})}catch{}try{for(let e of(await (0,t.withTimeout)(r.client.listResourceTemplates(),t.CALL_TIMEOUT_MS,"resources/templates/list")).resourceTemplates??[])o.push({uriTemplate:e.uriTemplate,name:e.name,description:e.description,mimeType:e.mimeType})}catch{}return{resources:a,templates:o}}async function o(e){let r=await (0,t.getClient)(e),s=r.client.getServerCapabilities();return s?.prompts?(r.lastUsed=Date.now(),((await (0,t.withTimeout)(r.client.listPrompts(),t.CALL_TIMEOUT_MS,"prompts/list")).prompts??[]).map(e=>({name:e.name,description:e.description,arguments:e.arguments?.map(e=>({name:e.name,description:e.description,required:e.required}))}))):null}},777987,e=>{"use strict";e.s(["checkMcpServer",()=>l]);var t=e.i(875225),r=e.i(846344),s=e.i(401632),a=e.i(834940),o=e.i(380689),i=e.i(986241);function n(e,t){return e.length>t?e.slice(0,t):e}async function l(e){let l=r.db.select().from(s.mcpServers).where((0,t.eq)(s.mcpServers.id,e)).get();if(!l)return null;let c=(0,i.serializeMcpServer)(l);await (0,a.disposeMcpClient)(e);let d=new Date().toISOString();try{let i=await (0,o.listToolsForServer)(c),l=n(i.map(e=>({name:e.localName,description:e.description,parameters:e.parameters})),500),u=null,p=null;try{let e=await (0,o.listResourcesForServer)(c);e&&(u={resources:n(e.resources,1e3),templates:n(e.templates,200)})}catch{}try{let e=await (0,o.listPromptsForServer)(c);e&&(p=n(e,500))}catch{}let f=(0,a.readServerInfo)(e);r.db.update(s.mcpServers).set({lastCheckStatus:"ok",lastCheckAt:d,lastCheckError:null,toolsCache:l,resourcesCache:u,promptsCache:p,serverInfo:f,updatedAt:d}).where((0,t.eq)(s.mcpServers.id,e)).run()}catch(o){let a=o instanceof Error?o.message:String(o);r.db.update(s.mcpServers).set({lastCheckStatus:"error",lastCheckAt:d,lastCheckError:a.slice(0,4e3),updatedAt:d}).where((0,t.eq)(s.mcpServers.id,e)).run()}let u=r.db.select().from(s.mcpServers).where((0,t.eq)(s.mcpServers.id,e)).get();return u?(0,i.serializeMcpServer)(u):null}},484032,e=>{"use strict";e.s(["createMcpServer",()=>h,"deleteMcpServer",()=>y,"getMcpServer",()=>f,"listMcpServers",()=>p,"updateMcpServer",()=>m]);var t=e.i(666680),r=e.i(875225),s=e.i(846344),a=e.i(401632),o=e.i(803028),i=e.i(986241),n=e.i(777987),l=e.i(719192),c=e.i(834940);function d(e){return s.db.select().from(a.mcpServers).where((0,r.eq)(a.mcpServers.id,e)).get()||s.db.select().from(a.mcpServers).where((0,r.eq)(a.mcpServers.name,e)).get()}function u(e){(0,n.checkMcpServer)(e).catch(()=>{})}function p(){return s.db.select().from(a.mcpServers).orderBy(a.mcpServers.name).all().map(i.serializeMcpServer)}function f(e){let t=d(e);if(!t)throw(0,o.notFound)("MCP server not found");return(0,i.serializeMcpServer)(t)}function h(e){let i=e.name.trim();if(s.db.select().from(a.mcpServers).where((0,r.eq)(a.mcpServers.name,i)).get())throw(0,o.badRequest)("Server name already exists");let n=(0,t.randomUUID)();return s.db.insert(a.mcpServers).values({id:n,name:i,description:e.description??"",transport:e.transport,config:(0,l.encryptConfig)(e.transport,e.config),enabled:e.enabled??!0}).run(),u(n),f(n)}function m(e,t){let i=d(e);if(!i)throw(0,o.notFound)("MCP server not found");let n={},c=!1;if(void 0!==t.name){let e=t.name.trim();if(!e)throw(0,o.badRequest)("Server name cannot be empty");if(e!==i.name){if(s.db.select().from(a.mcpServers).where((0,r.eq)(a.mcpServers.name,e)).get())throw(0,o.badRequest)("Server name already exists");n.name=e}}void 0!==t.description&&(n.description=t.description);let p=t.transport??i.transport;return void 0!==t.transport&&t.transport!==i.transport&&(n.transport=t.transport,c=!0),void 0!==t.config&&(n.config=(0,l.encryptConfig)(p,t.config),c=!0),void 0!==t.enabled&&(n.enabled=!!t.enabled),n.updatedAt=new Date().toISOString(),s.db.update(a.mcpServers).set(n).where((0,r.eq)(a.mcpServers.id,i.id)).run(),c&&u(i.id),f(i.id)}function y(e){let t=d(e);if(!t)throw(0,o.notFound)("MCP server not found");s.db.delete(a.mcpServers).where((0,r.eq)(a.mcpServers.id,t.id)).run(),(0,c.disposeMcpClient)(t.id).catch(()=>{})}},834940,200519,e=>{"use strict";e.s(["CALL_TIMEOUT_MS",()=>d,"disposeMcpClient",()=>g,"getClient",()=>y,"readServerInfo",()=>_,"withTimeout",()=>m],834940);var t=e.i(923094),r=e.i(943934),s=e.i(236150);e.s(["aggregateTools",()=>l,"executeTool",()=>c,"qualify",()=>n],200519);var a=e.i(484032),o=e.i(380689);function i(e){return e.replace(/[^a-zA-Z0-9_-]/g,"_").slice(0,32)}function n(e,t){return`${i(e)}__${t}`}async function l(e){if(0===e.length)return{tools:[],errors:[]};let t=new Set(e),r=(0,a.listMcpServers)().filter(e=>t.has(e.id)&&e.enabled),s=[],i=[];return await Promise.all(r.map(async e=>{let t=function(e){if("ok"!==e.last_check_status||function(e){if(!e)return 1/0;let t=Date.parse(e.endsWith("Z")||/[+-]\d\d:?\d\d$/.test(e)?e:e+"Z");return Number.isNaN(t)?1/0:Date.now()-t}(e.last_check_at)>3e5)return null;let t=e.tools_cache;return t?t.map(t=>({qualifiedName:n(e.name,t.name),localName:t.name,description:t.description,parameters:t.parameters,serverId:e.id,serverName:e.name})):null}(e);if(t)return void s.push(...t);try{let t=await (0,o.listToolsForServer)(e);s.push(...t)}catch(t){i.push({serverId:e.id,serverName:e.name,message:t instanceof Error?t.message:String(t)})}})),{tools:s,errors:i}}async function c(e,t){let r,s,o=(s=e.indexOf("__"))<=0?null:{serverPrefix:e.slice(0,s),toolName:e.slice(s+2)};if(!o)throw Error(`Bad qualified tool name "${e}"`);let n=(0,a.listMcpServers)().find(e=>i(e.name)===o.serverPrefix);if(!n)throw Error(`No MCP server matches prefix "${o.serverPrefix}"`);try{r=t?JSON.parse(t):{}}catch{return{content:`Invalid JSON arguments from model: ${t.slice(0,200)}`,isError:!0,serverName:n.name}}try{let t=await y(n),s=await m(t.client.callTool({name:o.toolName,arguments:r}),d,`tools/call ${e}`);return t.lastUsed=Date.now(),{content:function(e){if(!Array.isArray(e))return"string"==typeof e?e:JSON.stringify(e??"");let t=[];for(let r of e)r?.type==="text"&&"string"==typeof r.text?t.push(r.text):t.push(`[${r?.type??"unknown"}] ${JSON.stringify(r).slice(0,200)}`);return t.join("\n")||""}(s.content),isError:!!s.isError,serverName:n.name}}catch(e){return{content:e instanceof Error?e.message:String(e),isError:!0,serverName:n.name}}}let d=6e4,u=new Map,p=new Map;async function f(){let e=Array.from(u.values());u.clear(),p.clear(),await Promise.all(e.map(e=>Promise.race([e.close().catch(()=>void 0),new Promise(e=>setTimeout(e,1500))])))}if(Symbol.for("loom.mcp.runtime.shutdownRegistered"),"u">typeof process&&!globalThis.__loom_mcp_shutdown_registered__){globalThis.__loom_mcp_shutdown_registered__=!0;let e=()=>{f()};process.once("SIGINT",e),process.once("SIGTERM",e),process.once("beforeExit",e)}async function h(e){let a,o=new t.Client({name:"loom-gateway",version:"0.1.0"},{capabilities:{}}),i=Symbol(`mcp:${e.id}:${e.updated_at}`),n=t=>{t.onclose=()=>{let t=u.get(e.id);t&&t.tag===i&&u.delete(e.id)}};if("stdio"===e.transport){let t=e.config,s=new r.StdioClientTransport({command:t.command,args:t.args??[],env:t.env,cwd:t.cwd,stderr:"pipe"}),i="",l=s.stderr;l&&l.on("data",e=>{if(i.length>=4096)return;let t="string"==typeof e?e:e.toString("utf8"),r=4096-i.length;i+=t.slice(0,r),t.length>r&&(i+="\n…[truncated]")});try{await m(o.connect(s),15e3,"mcp connect")}catch(e){await new Promise(e=>setTimeout(e,100));try{await s.close()}catch{}throw function(e,t){let r=e instanceof Error?e.message:String(e),s=t.trim();if(!s)return e instanceof Error?e:Error(r);let a=Error(`${r}
|
|
22
|
+
`)&&-1===e.indexOf("\r")){i.push(e),n+=e.length,h();return}i.push(e);let t=i.join("");i.length=0,n=0;let r=m(t);""!==r&&(i.push(r),n=r.length),h()},reset:function(e={}){if(e.consume&&i.length>0){let e=i.join("");y(e,0,e.length)}l=!0,c=void 0,d="",u=0,p=void 0,i.length=0,n=0,f=!1}}}({onEvent:e=>{o.enqueue(e)},onError(t){"function"==typeof e&&e(t),("terminate"===e||"max-buffer-size-exceeded"===t.type)&&o.error(t)},onRetry:t,onComment:r,maxBufferSize:s})},transform(e){a.feed(e)}})}}let r7={initialReconnectionDelay:1e3,maxReconnectionDelay:3e4,reconnectionDelayGrowFactor:1.5,maxRetries:2};class r6 extends Error{constructor(e,t){super(`Streamable HTTP error: ${t}`),this.code=e}}e.s(["StreamableHTTPClientTransport",0,class{constructor(e,t){this._hasCompletedAuthFlow=!1,this._url=e,this._resourceMetadataUrl=void 0,this._scope=void 0,this._requestInit=t?.requestInit,this._authProvider=t?.authProvider,this._fetch=t?.fetch,this._fetchWithInit=function(e=fetch,t){return t?async(r,s)=>e(r,{...t,...s,headers:s?.headers?{...t6(t.headers),...t6(s.headers)}:t.headers}):e}(t?.fetch,t?.requestInit),this._sessionId=t?.sessionId,this._reconnectionOptions=t?.reconnectionOptions??r7}async _authThenStart(){let e;if(!this._authProvider)throw new rq("No auth provider");try{e=await rV(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})}catch(e){throw this.onerror?.(e),e}if("AUTHORIZED"!==e)throw new rq;return await this._startOrAuthSse({resumptionToken:void 0})}async _commonHeaders(){let e={};if(this._authProvider){let t=await this._authProvider.tokens();t&&(e.Authorization=`Bearer ${t.access_token}`)}this._sessionId&&(e["mcp-session-id"]=this._sessionId),this._protocolVersion&&(e["mcp-protocol-version"]=this._protocolVersion);let t=t6(this._requestInit?.headers);return new Headers({...e,...t})}async _startOrAuthSse(e){let{resumptionToken:t}=e;try{let r=await this._commonHeaders();r.set("Accept","text/event-stream"),t&&r.set("last-event-id",t);let s=await (this._fetch??fetch)(this._url,{method:"GET",headers:r,signal:this._abortController?.signal});if(!s.ok){if(await s.body?.cancel(),401===s.status&&this._authProvider)return await this._authThenStart();if(405===s.status)return;throw new r6(s.status,`Failed to open SSE stream: ${s.statusText}`)}this._handleSseStream(s.body,e,!0)}catch(e){throw this.onerror?.(e),e}}_getNextReconnectionDelay(e){return void 0!==this._serverRetryMs?this._serverRetryMs:Math.min(this._reconnectionOptions.initialReconnectionDelay*Math.pow(this._reconnectionOptions.reconnectionDelayGrowFactor,e),this._reconnectionOptions.maxReconnectionDelay)}_scheduleReconnection(e,t=0){let r=this._reconnectionOptions.maxRetries;if(t>=r)return void this.onerror?.(Error(`Maximum reconnection attempts (${r}) exceeded.`));let s=this._getNextReconnectionDelay(t);this._reconnectionTimeout=setTimeout(()=>{this._startOrAuthSse(e).catch(r=>{this.onerror?.(Error(`Failed to reconnect SSE stream: ${r instanceof Error?r.message:String(r)}`)),this._scheduleReconnection(e,t+1)})},s)}_handleSseStream(e,t,r){let s;if(!e)return;let{onresumptiontoken:a,replayMessageId:o}=t,i=!1,n=!1;(async()=>{try{let t=e.pipeThrough(new TextDecoderStream).pipeThrough(new r3({onRetry:e=>{this._serverRetryMs=e}})).getReader();for(;;){let{value:e,done:r}=await t.read();if(r)break;if((e.id&&(s=e.id,i=!0,a?.(e.id)),e.data)&&(!e.event||"message"===e.event))try{let t=D.parse(JSON.parse(e.data));A(t)&&(n=!0,void 0!==o&&(t.id=o)),this.onmessage?.(t)}catch(e){this.onerror?.(e)}}(r||i)&&!n&&this._abortController&&!this._abortController.signal.aborted&&this._scheduleReconnection({resumptionToken:s,onresumptiontoken:a,replayMessageId:o},0)}catch(e){if(this.onerror?.(Error(`SSE stream disconnected: ${e}`)),(r||i)&&!n&&this._abortController&&!this._abortController.signal.aborted)try{this._scheduleReconnection({resumptionToken:s,onresumptiontoken:a,replayMessageId:o},0)}catch(e){this.onerror?.(Error(`Failed to reconnect: ${e instanceof Error?e.message:String(e)}`))}}})()}async start(){if(this._abortController)throw Error("StreamableHTTPClientTransport already started! If using Client class, note that connect() calls start() automatically.");this._abortController=new AbortController}async finishAuth(e){if(!this._authProvider)throw new rq("No auth provider");if("AUTHORIZED"!==await rV(this._authProvider,{serverUrl:this._url,authorizationCode:e,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit}))throw new rq("Failed to authorize")}async close(){this._reconnectionTimeout&&(clearTimeout(this._reconnectionTimeout),this._reconnectionTimeout=void 0),this._abortController?.abort(),this.onclose?.()}async send(e,t){try{let{resumptionToken:r,onresumptiontoken:s}=t||{};if(r)return void this._startOrAuthSse({resumptionToken:r,replayMessageId:I(e)?e.id:void 0}).catch(e=>this.onerror?.(e));let a=await this._commonHeaders();a.set("content-type","application/json"),a.set("accept","application/json, text/event-stream");let o={...this._requestInit,method:"POST",headers:a,body:JSON.stringify(e),signal:this._abortController?.signal},i=await (this._fetch??fetch)(this._url,o),n=i.headers.get("mcp-session-id");if(n&&(this._sessionId=n),!i.ok){let t=await i.text().catch(()=>null);if(401===i.status&&this._authProvider){if(this._hasCompletedAuthFlow)throw new r6(401,"Server returned 401 after successful authentication");let{resourceMetadataUrl:t,scope:r}=rH(i);this._resourceMetadataUrl=t,this._scope=r;let s=await rV(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit});if("AUTHORIZED"!==s)throw new rq;return this._hasCompletedAuthFlow=!0,this.send(e)}if(403===i.status&&this._authProvider){let{resourceMetadataUrl:t,scope:r,error:s}=rH(i);if("insufficient_scope"===s){let s=i.headers.get("WWW-Authenticate");if(this._lastUpscopingHeader===s)throw new r6(403,"Server returned 403 after trying upscoping");r&&(this._scope=r),t&&(this._resourceMetadataUrl=t),this._lastUpscopingHeader=s??void 0;let a=await rV(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetch});if("AUTHORIZED"!==a)throw new rq;return this.send(e)}}throw new r6(i.status,`Error POSTing to endpoint: ${t}`)}if(this._hasCompletedAuthFlow=!1,this._lastUpscopingHeader=void 0,202===i.status){await i.body?.cancel(),et.safeParse(e).success&&this._startOrAuthSse({resumptionToken:void 0}).catch(e=>this.onerror?.(e));return}let l=(Array.isArray(e)?e:[e]).filter(e=>"method"in e&&"id"in e&&void 0!==e.id).length>0,c=i.headers.get("content-type");if(l)if(c?.includes("text/event-stream"))this._handleSseStream(i.body,{onresumptiontoken:s},!1);else if(c?.includes("application/json")){let e=await i.json();for(let t of Array.isArray(e)?e.map(e=>D.parse(e)):[D.parse(e)])this.onmessage?.(t)}else throw await i.body?.cancel(),new r6(-1,`Unexpected content type: ${c}`);else await i.body?.cancel()}catch(e){throw this.onerror?.(e),e}}get sessionId(){return this._sessionId}async terminateSession(){if(this._sessionId)try{let e=await this._commonHeaders(),t={...this._requestInit,method:"DELETE",headers:e,signal:this._abortController?.signal},r=await (this._fetch??fetch)(this._url,t);if(await r.body?.cancel(),!r.ok&&405!==r.status)throw new r6(r.status,`Failed to terminate session: ${r.statusText}`);this._sessionId=void 0}catch(e){throw this.onerror?.(e),e}}setProtocolVersion(e){this._protocolVersion=e}get protocolVersion(){return this._protocolVersion}async resumeStream(e,t){await this._startOrAuthSse({resumptionToken:e,onresumptiontoken:t?.onresumptiontoken})}}],236150)},986241,719192,e=>{"use strict";var t=e.i(425568);let r="enc:v1:";function s(e){if("string"!=typeof e||e.startsWith(r))return e;let s=(0,t.encryptSecret)(e);return s?`${r}${s}`:e}function a(e){if("string"!=typeof e||!e.startsWith(r))return e;try{return(0,t.decryptSecret)(e.slice(r.length))??e}catch{return"<decrypt-failed>"}}function o(e,t){if(!e||"object"!=typeof e||Array.isArray(e))return e;let r={};for(let[s,a]of Object.entries(e))r[s]=t(a);return r}function i(e,t){if("stdio"===e){let e=o(t.env,a);return{...t,env:e}}let r=o(t.headers,a);return{...t,headers:r}}e.s(["decryptConfig",0,i,"encryptConfig",0,function(e,t){if("stdio"===e){let e=o(t.env,s);return{...t,env:e}}let r=o(t.headers,s);return{...t,headers:r}}],719192),e.s(["serializeMcpServer",0,function(e){return{id:e.id,name:e.name,description:e.description,transport:e.transport,config:i(e.transport,e.config??{}),enabled:!!e.enabled,last_check_status:e.lastCheckStatus??null,last_check_at:e.lastCheckAt??null,last_check_error:e.lastCheckError??null,tools_cache:e.toolsCache??null,resources_cache:e.resourcesCache??null,prompts_cache:e.promptsCache??null,server_info:e.serverInfo??null,created_at:e.createdAt,updated_at:e.updatedAt}}],986241)},380689,e=>{"use strict";e.s(["listPromptsForServer",()=>o,"listResourcesForServer",()=>a,"listToolsForServer",()=>s]);var t=e.i(834940),r=e.i(200519);async function s(e){let s=await (0,t.getClient)(e),a=await (0,t.withTimeout)(s.client.listTools(),t.CALL_TIMEOUT_MS,"tools/list");s.lastUsed=Date.now();let o=[];for(let t of a.tools??[]){let s=t.inputSchema??{type:"object",properties:{}};o.push({qualifiedName:(0,r.qualify)(e.name,t.name),localName:t.name,description:t.description??void 0,parameters:s,serverId:e.id,serverName:e.name})}return o}async function a(e){let r=await (0,t.getClient)(e),s=r.client.getServerCapabilities();if(!s?.resources)return null;r.lastUsed=Date.now();let a=[],o=[];try{for(let e of(await (0,t.withTimeout)(r.client.listResources(),t.CALL_TIMEOUT_MS,"resources/list")).resources??[])a.push({uri:e.uri,name:e.name,description:e.description,mimeType:e.mimeType})}catch{}try{for(let e of(await (0,t.withTimeout)(r.client.listResourceTemplates(),t.CALL_TIMEOUT_MS,"resources/templates/list")).resourceTemplates??[])o.push({uriTemplate:e.uriTemplate,name:e.name,description:e.description,mimeType:e.mimeType})}catch{}return{resources:a,templates:o}}async function o(e){let r=await (0,t.getClient)(e),s=r.client.getServerCapabilities();return s?.prompts?(r.lastUsed=Date.now(),((await (0,t.withTimeout)(r.client.listPrompts(),t.CALL_TIMEOUT_MS,"prompts/list")).prompts??[]).map(e=>({name:e.name,description:e.description,arguments:e.arguments?.map(e=>({name:e.name,description:e.description,required:e.required}))}))):null}},777987,e=>{"use strict";e.s(["checkMcpServer",()=>c,"runMcpCheck",()=>l]);var t=e.i(875225),r=e.i(846344),s=e.i(401632),a=e.i(834940),o=e.i(380689),i=e.i(986241);function n(e,t){return e.length>t?e.slice(0,t):e}async function l(e,l){let c=r.db.select().from(s.mcpServers).where((0,t.eq)(s.mcpServers.id,e)).get();if(!c)return null;let d=(0,i.serializeMcpServer)(c);await (0,a.disposeMcpClient)(e);let u=new Date().toISOString();try{await (0,a.getClient)(d,{onPhase:e=>l({type:"phase",phase:e}),onLog:e=>l({type:"log",line:e})}),l({type:"phase",phase:"listing"});let i=await (0,o.listToolsForServer)(d),c=n(i.map(e=>({name:e.localName,description:e.description,parameters:e.parameters})),500),p=null,f=null;try{let e=await (0,o.listResourcesForServer)(d);e&&(p={resources:n(e.resources,1e3),templates:n(e.templates,200)})}catch{}try{let e=await (0,o.listPromptsForServer)(d);e&&(f=n(e,500))}catch{}let h=(0,a.readServerInfo)(e);r.db.update(s.mcpServers).set({lastCheckStatus:"ok",lastCheckAt:u,lastCheckError:null,toolsCache:c,resourcesCache:p,promptsCache:f,serverInfo:h,updatedAt:u}).where((0,t.eq)(s.mcpServers.id,e)).run()}catch(c){let a=c instanceof Error?c.message:String(c);r.db.update(s.mcpServers).set({lastCheckStatus:"error",lastCheckAt:u,lastCheckError:a.slice(0,4e3),updatedAt:u}).where((0,t.eq)(s.mcpServers.id,e)).run();let o=r.db.select().from(s.mcpServers).where((0,t.eq)(s.mcpServers.id,e)).get(),n=o?(0,i.serializeMcpServer)(o):null;return l({type:"error",message:a,server:n??void 0}),n}let p=r.db.select().from(s.mcpServers).where((0,t.eq)(s.mcpServers.id,e)).get(),f=p?(0,i.serializeMcpServer)(p):null;return f&&l({type:"result",server:f}),f}async function c(e){return l(e,()=>{})}},484032,e=>{"use strict";e.s(["createMcpServer",()=>h,"deleteMcpServer",()=>y,"getMcpServer",()=>f,"listMcpServers",()=>p,"updateMcpServer",()=>m]);var t=e.i(666680),r=e.i(875225),s=e.i(846344),a=e.i(401632),o=e.i(803028),i=e.i(986241),n=e.i(777987),l=e.i(719192),c=e.i(834940);function d(e){return s.db.select().from(a.mcpServers).where((0,r.eq)(a.mcpServers.id,e)).get()||s.db.select().from(a.mcpServers).where((0,r.eq)(a.mcpServers.name,e)).get()}function u(e){(0,n.checkMcpServer)(e).catch(()=>{})}function p(){return s.db.select().from(a.mcpServers).orderBy(a.mcpServers.name).all().map(i.serializeMcpServer)}function f(e){let t=d(e);if(!t)throw(0,o.notFound)("MCP server not found");return(0,i.serializeMcpServer)(t)}function h(e){let i=e.name.trim();if(s.db.select().from(a.mcpServers).where((0,r.eq)(a.mcpServers.name,i)).get())throw(0,o.badRequest)("Server name already exists");let n=(0,t.randomUUID)();return s.db.insert(a.mcpServers).values({id:n,name:i,description:e.description??"",transport:e.transport,config:(0,l.encryptConfig)(e.transport,e.config),enabled:e.enabled??!0}).run(),u(n),f(n)}function m(e,t){let i=d(e);if(!i)throw(0,o.notFound)("MCP server not found");let n={},c=!1;if(void 0!==t.name){let e=t.name.trim();if(!e)throw(0,o.badRequest)("Server name cannot be empty");if(e!==i.name){if(s.db.select().from(a.mcpServers).where((0,r.eq)(a.mcpServers.name,e)).get())throw(0,o.badRequest)("Server name already exists");n.name=e}}void 0!==t.description&&(n.description=t.description);let p=t.transport??i.transport;return void 0!==t.transport&&t.transport!==i.transport&&(n.transport=t.transport,c=!0),void 0!==t.config&&(n.config=(0,l.encryptConfig)(p,t.config),c=!0),void 0!==t.enabled&&(n.enabled=!!t.enabled),n.updatedAt=new Date().toISOString(),s.db.update(a.mcpServers).set(n).where((0,r.eq)(a.mcpServers.id,i.id)).run(),c&&u(i.id),f(i.id)}function y(e){let t=d(e);if(!t)throw(0,o.notFound)("MCP server not found");s.db.delete(a.mcpServers).where((0,r.eq)(a.mcpServers.id,t.id)).run(),(0,c.disposeMcpClient)(t.id).catch(()=>{})}},834940,200519,e=>{"use strict";e.s(["CALL_TIMEOUT_MS",()=>d,"disposeMcpClient",()=>g,"getClient",()=>y,"readServerInfo",()=>_,"withTimeout",()=>m],834940);var t=e.i(923094),r=e.i(943934),s=e.i(236150);e.s(["aggregateTools",()=>l,"executeTool",()=>c,"qualify",()=>n],200519);var a=e.i(484032),o=e.i(380689);function i(e){return e.replace(/[^a-zA-Z0-9_-]/g,"_").slice(0,32)}function n(e,t){return`${i(e)}__${t}`}async function l(e){if(0===e.length)return{tools:[],errors:[]};let t=new Set(e),r=(0,a.listMcpServers)().filter(e=>t.has(e.id)&&e.enabled),s=[],i=[];return await Promise.all(r.map(async e=>{let t=function(e){if("ok"!==e.last_check_status||function(e){if(!e)return 1/0;let t=Date.parse(e.endsWith("Z")||/[+-]\d\d:?\d\d$/.test(e)?e:e+"Z");return Number.isNaN(t)?1/0:Date.now()-t}(e.last_check_at)>3e5)return null;let t=e.tools_cache;return t?t.map(t=>({qualifiedName:n(e.name,t.name),localName:t.name,description:t.description,parameters:t.parameters,serverId:e.id,serverName:e.name})):null}(e);if(t)return void s.push(...t);try{let t=await (0,o.listToolsForServer)(e);s.push(...t)}catch(t){i.push({serverId:e.id,serverName:e.name,message:t instanceof Error?t.message:String(t)})}})),{tools:s,errors:i}}async function c(e,t){let r,s,o=(s=e.indexOf("__"))<=0?null:{serverPrefix:e.slice(0,s),toolName:e.slice(s+2)};if(!o)throw Error(`Bad qualified tool name "${e}"`);let n=(0,a.listMcpServers)().find(e=>i(e.name)===o.serverPrefix);if(!n)throw Error(`No MCP server matches prefix "${o.serverPrefix}"`);try{r=t?JSON.parse(t):{}}catch{return{content:`Invalid JSON arguments from model: ${t.slice(0,200)}`,isError:!0,serverName:n.name}}try{let t=await y(n),s=await m(t.client.callTool({name:o.toolName,arguments:r}),d,`tools/call ${e}`);return t.lastUsed=Date.now(),{content:function(e){if(!Array.isArray(e))return"string"==typeof e?e:JSON.stringify(e??"");let t=[];for(let r of e)r?.type==="text"&&"string"==typeof r.text?t.push(r.text):t.push(`[${r?.type??"unknown"}] ${JSON.stringify(r).slice(0,200)}`);return t.join("\n")||""}(s.content),isError:!!s.isError,serverName:n.name}}catch(e){return{content:e instanceof Error?e.message:String(e),isError:!0,serverName:n.name}}}let d=6e4,u=new Map,p=new Map;async function f(){let e=Array.from(u.values());u.clear(),p.clear(),await Promise.all(e.map(e=>Promise.race([e.close().catch(()=>void 0),new Promise(e=>setTimeout(e,1500))])))}if(Symbol.for("loom.mcp.runtime.shutdownRegistered"),"u">typeof process&&!globalThis.__loom_mcp_shutdown_registered__){globalThis.__loom_mcp_shutdown_registered__=!0;let e=()=>{f()};process.once("SIGINT",e),process.once("SIGTERM",e),process.once("beforeExit",e)}async function h(e,a={}){let o,i=new t.Client({name:"loom-gateway",version:"0.1.0"},{capabilities:{}}),n=Symbol(`mcp:${e.id}:${e.updated_at}`),l=t=>{t.onclose=()=>{let t=u.get(e.id);t&&t.tag===n&&u.delete(e.id)}};if("stdio"===e.transport){let t=e.config;a.onPhase?.("spawning");let s=new r.StdioClientTransport({command:t.command,args:t.args??[],env:t.env,cwd:t.cwd,stderr:"pipe"}),n="",c=s.stderr;if(c){let e="",t=e=>{if(e){if(n.length<4096){let t=4096-n.length;n+=e.slice(0,t)+"\n",e.length>t&&(n+="…[truncated]\n")}a.onLog?.(e)}};c.on("data",r=>{let s=(e+="string"==typeof r?r:r.toString("utf8")).indexOf("\n");for(;-1!==s;)t(e.slice(0,s).replace(/\r$/,"")),s=(e=e.slice(s+1)).indexOf("\n")}),c.on("end",()=>{e&&(t(e.replace(/\r$/,"")),e="")})}a.onPhase?.("starting");try{a.onPhase?.("connecting"),await m(i.connect(s),3e5,"mcp connect"),a.onPhase?.("ready")}catch(e){await new Promise(e=>setTimeout(e,100));try{await s.close()}catch{}throw function(e,t){let r=e instanceof Error?e.message:String(e),s=t.trim();if(!s)return e instanceof Error?e:Error(r);let a=Error(`${r}
|
|
23
23
|
|
|
24
24
|
--- child stderr ---
|
|
25
|
-
${s}`);return e instanceof Error&&e.stack&&(a.stack=e.stack),a}(e,
|
|
25
|
+
${s}`);return e instanceof Error&&e.stack&&(a.stack=e.stack),a}(e,n)}l(s),o=async()=>{try{await s.close()}catch{}}}else{let t=e.config;a.onPhase?.("connecting");let r=new s.StreamableHTTPClientTransport(new URL(t.url),{requestInit:t.headers?{headers:t.headers}:void 0});await m(i.connect(r),15e3,"mcp connect"),a.onPhase?.("ready"),l(r),o=async()=>{try{await r.close()}catch{}}}return{client:i,lastUsed:Date.now(),builtFor:e.updated_at,tag:n,close:o}}async function m(e,t,r){let s=null;try{return await Promise.race([e,new Promise((e,a)=>{s=setTimeout(()=>a(Error(`${r} timed out after ${t}ms`)),t)})])}finally{s&&clearTimeout(s)}}async function y(e,t){let r=Date.now();for(let[e,t]of u)r-t.lastUsed>3e5&&(u.delete(e),t.close().catch(()=>{}));let s=u.get(e.id);if(s&&s.builtFor===e.updated_at)return s.lastUsed=Date.now(),s;s&&(u.delete(e.id),s.close().catch(()=>{}));let a=p.get(e.id);if(a)return a;let o=h(e,t).then(t=>((function(){if(!(u.size<50))for(let[e,t]of Array.from(u.entries()).sort(([,e],[,t])=>e.lastUsed-t.lastUsed).slice(0,u.size-50+1))u.delete(e),t.close().catch(()=>{})})(),u.set(e.id,t),p.delete(e.id),t)).catch(t=>{throw p.delete(e.id),t});return p.set(e.id,o),o}async function g(e){let t=u.get(e);t&&(u.delete(e),await t.close())}function _(e){let t=u.get(e);if(!t)return null;let r=t.client.getServerVersion(),s=t.client.getInstructions(),a=t.client.getServerCapabilities();return r||s||a?{name:r?.name,version:r?.version,instructions:s,capabilities:a}:null}}];
|
|
26
26
|
|
|
27
27
|
//# sourceMappingURL=%5Broot-of-the-server%5D__1qg3d87._.js.map
|