@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.
Files changed (353) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build/56416d4ae4ce586f.js +6 -0
  3. package/.next/build/56416d4ae4ce586f.js.map +5 -0
  4. package/.next/build/chunks/[root-of-the-server]__0oj80bi._.js +206 -0
  5. package/.next/build/chunks/[root-of-the-server]__0oj80bi._.js.map +8 -0
  6. package/.next/build/chunks/[root-of-the-server]__1f933tp._.js +500 -0
  7. package/.next/build/chunks/[root-of-the-server]__1f933tp._.js.map +11 -0
  8. package/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_0b7xl6g._.js +13 -0
  9. package/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_0b7xl6g._.js.map +5 -0
  10. package/.next/build/chunks/[turbopack]_runtime.js +890 -0
  11. package/.next/build/chunks/[turbopack]_runtime.js.map +11 -0
  12. package/.next/build/chunks/node_modules_20v-8wl._.js +6824 -0
  13. package/.next/build/chunks/node_modules_20v-8wl._.js.map +47 -0
  14. package/.next/build/package.json +1 -0
  15. package/.next/build-manifest.json +3 -3
  16. package/.next/cache/.previewinfo +1 -0
  17. package/.next/cache/.rscinfo +1 -0
  18. package/.next/cache/.tsbuildinfo +1 -0
  19. package/.next/diagnostics/build-diagnostics.json +6 -0
  20. package/.next/diagnostics/framework.json +1 -0
  21. package/.next/diagnostics/route-bundle-stats.json +488 -0
  22. package/.next/fallback-build-manifest.json +3 -3
  23. package/.next/prerender-manifest.json +3 -3
  24. package/.next/server/app/(auth)/login/page_client-reference-manifest.js +1 -1
  25. package/.next/server/app/(dashboard)/logs/page_client-reference-manifest.js +1 -1
  26. package/.next/server/app/(dashboard)/mcp/page.js.nft.json +1 -1
  27. package/.next/server/app/(dashboard)/mcp/page_client-reference-manifest.js +1 -1
  28. package/.next/server/app/(dashboard)/mcp/presets/page_client-reference-manifest.js +1 -1
  29. package/.next/server/app/(dashboard)/models/[name]/page_client-reference-manifest.js +1 -1
  30. package/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  31. package/.next/server/app/(dashboard)/playground/audio/speech/page_client-reference-manifest.js +1 -1
  32. package/.next/server/app/(dashboard)/playground/audio/transcription/page_client-reference-manifest.js +1 -1
  33. package/.next/server/app/(dashboard)/playground/chat/page.js.nft.json +1 -1
  34. package/.next/server/app/(dashboard)/playground/chat/page_client-reference-manifest.js +1 -1
  35. package/.next/server/app/(dashboard)/playground/embedding/page_client-reference-manifest.js +1 -1
  36. package/.next/server/app/(dashboard)/playground/image/page_client-reference-manifest.js +1 -1
  37. package/.next/server/app/(dashboard)/playground/page_client-reference-manifest.js +1 -1
  38. package/.next/server/app/(dashboard)/playground/video/page_client-reference-manifest.js +1 -1
  39. package/.next/server/app/(dashboard)/providers/[name]/page.js.nft.json +1 -1
  40. package/.next/server/app/(dashboard)/providers/[name]/page_client-reference-manifest.js +1 -1
  41. package/.next/server/app/(dashboard)/providers/page.js.nft.json +1 -1
  42. package/.next/server/app/(dashboard)/providers/page_client-reference-manifest.js +1 -1
  43. package/.next/server/app/(dashboard)/settings/api-keys/page_client-reference-manifest.js +1 -1
  44. package/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
  45. package/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  46. package/.next/server/app/(dashboard)/settings/users/page.js.nft.json +1 -1
  47. package/.next/server/app/(dashboard)/settings/users/page_client-reference-manifest.js +1 -1
  48. package/.next/server/app/_global-error.html +1 -1
  49. package/.next/server/app/_global-error.rsc +1 -1
  50. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  51. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  52. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  53. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  54. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  55. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  56. package/.next/server/app/_not-found.html +2 -2
  57. package/.next/server/app/_not-found.rsc +3 -3
  58. package/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  59. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  60. package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  61. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  62. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  63. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  64. package/.next/server/app/api/adapters/route.js.nft.json +1 -1
  65. package/.next/server/app/api/apikeys/[id]/route.js.nft.json +1 -1
  66. package/.next/server/app/api/apikeys/route.js.nft.json +1 -1
  67. package/.next/server/app/api/capabilities/route.js.nft.json +1 -1
  68. package/.next/server/app/api/conversations/[id]/messages/route.js.nft.json +1 -1
  69. package/.next/server/app/api/conversations/[id]/route.js.nft.json +1 -1
  70. package/.next/server/app/api/conversations/route.js.nft.json +1 -1
  71. package/.next/server/app/api/health/route.js.nft.json +1 -1
  72. package/.next/server/app/api/login/route.js.nft.json +1 -1
  73. package/.next/server/app/api/logout/route.js.nft.json +1 -1
  74. package/.next/server/app/api/logs/generations/[id]/images/[idx]/route.js.nft.json +1 -1
  75. package/.next/server/app/api/logs/generations/[id]/route.js.nft.json +1 -1
  76. package/.next/server/app/api/logs/generations/route.js.nft.json +1 -1
  77. package/.next/server/app/api/mcp/presets/route.js.nft.json +1 -1
  78. package/.next/server/app/api/mcp/servers/[id]/check/route.js.nft.json +1 -1
  79. package/.next/server/app/api/mcp/servers/[id]/route.js.nft.json +1 -1
  80. package/.next/server/app/api/mcp/servers/[id]/tools/route.js.nft.json +1 -1
  81. package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -1
  82. package/.next/server/app/api/messages/[id]/rate/route.js.nft.json +1 -1
  83. package/.next/server/app/api/models/[id]/route.js.nft.json +1 -1
  84. package/.next/server/app/api/models/route.js.nft.json +1 -1
  85. package/.next/server/app/api/ping/route.js.nft.json +1 -1
  86. package/.next/server/app/api/playground/chat/route.js.nft.json +1 -1
  87. package/.next/server/app/api/playground/embedding/route.js.nft.json +1 -1
  88. package/.next/server/app/api/providers/[id]/check/route.js.nft.json +1 -1
  89. package/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  90. package/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
  91. package/.next/server/app/api/providers/probe/route.js.nft.json +1 -1
  92. package/.next/server/app/api/providers/reload/route.js.nft.json +1 -1
  93. package/.next/server/app/api/providers/route.js.nft.json +1 -1
  94. package/.next/server/app/api/stats/models/[name]/route.js.nft.json +1 -1
  95. package/.next/server/app/api/stats/route.js.nft.json +1 -1
  96. package/.next/server/app/api/tools/[id]/route.js.nft.json +1 -1
  97. package/.next/server/app/api/tools/route.js.nft.json +1 -1
  98. package/.next/server/app/api/users/[username]/route.js.nft.json +1 -1
  99. package/.next/server/app/api/users/me/preferences/route.js.nft.json +1 -1
  100. package/.next/server/app/api/users/me/route.js.nft.json +1 -1
  101. package/.next/server/app/api/users/route.js.nft.json +1 -1
  102. package/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  103. package/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  104. package/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  105. package/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  106. package/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  107. package/.next/server/app/api/v1/models/route.js.nft.json +1 -1
  108. package/.next/server/app/api/v1/rerank/route.js.nft.json +1 -1
  109. package/.next/server/app/api/v1/videos/[id]/content/route.js.nft.json +1 -1
  110. package/.next/server/app/api/v1/videos/[id]/route.js.nft.json +1 -1
  111. package/.next/server/app/api/v1/videos/route.js.nft.json +1 -1
  112. package/.next/server/app/api/variants/route.js.nft.json +1 -1
  113. package/.next/server/app/index.html +2 -2
  114. package/.next/server/app/index.rsc +3 -3
  115. package/.next/server/app/index.segments/!KGRhc2hib2FyZCk/__PAGE__.segment.rsc +1 -1
  116. package/.next/server/app/index.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  117. package/.next/server/app/index.segments/_full.segment.rsc +3 -3
  118. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  119. package/.next/server/app/index.segments/_index.segment.rsc +2 -2
  120. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  121. package/.next/server/app/login.html +2 -2
  122. package/.next/server/app/login.rsc +3 -3
  123. package/.next/server/app/login.segments/!KGF1dGgp/login/__PAGE__.segment.rsc +1 -1
  124. package/.next/server/app/login.segments/!KGF1dGgp/login.segment.rsc +1 -1
  125. package/.next/server/app/login.segments/!KGF1dGgp.segment.rsc +1 -1
  126. package/.next/server/app/login.segments/_full.segment.rsc +3 -3
  127. package/.next/server/app/login.segments/_head.segment.rsc +1 -1
  128. package/.next/server/app/login.segments/_index.segment.rsc +2 -2
  129. package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  130. package/.next/server/app/logs.html +2 -2
  131. package/.next/server/app/logs.rsc +3 -3
  132. package/.next/server/app/logs.segments/!KGRhc2hib2FyZCk/logs/__PAGE__.segment.rsc +1 -1
  133. package/.next/server/app/logs.segments/!KGRhc2hib2FyZCk/logs.segment.rsc +1 -1
  134. package/.next/server/app/logs.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  135. package/.next/server/app/logs.segments/_full.segment.rsc +3 -3
  136. package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
  137. package/.next/server/app/logs.segments/_index.segment.rsc +2 -2
  138. package/.next/server/app/logs.segments/_tree.segment.rsc +2 -2
  139. package/.next/server/app/mcp/presets.html +2 -2
  140. package/.next/server/app/mcp/presets.rsc +5 -5
  141. package/.next/server/app/mcp/presets.segments/!KGRhc2hib2FyZCk/mcp/presets/__PAGE__.segment.rsc +2 -2
  142. package/.next/server/app/mcp/presets.segments/!KGRhc2hib2FyZCk/mcp/presets.segment.rsc +1 -1
  143. package/.next/server/app/mcp/presets.segments/!KGRhc2hib2FyZCk/mcp.segment.rsc +1 -1
  144. package/.next/server/app/mcp/presets.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  145. package/.next/server/app/mcp/presets.segments/_full.segment.rsc +5 -5
  146. package/.next/server/app/mcp/presets.segments/_head.segment.rsc +1 -1
  147. package/.next/server/app/mcp/presets.segments/_index.segment.rsc +2 -2
  148. package/.next/server/app/mcp/presets.segments/_tree.segment.rsc +2 -2
  149. package/.next/server/app/mcp.html +2 -2
  150. package/.next/server/app/mcp.rsc +5 -5
  151. package/.next/server/app/mcp.segments/!KGRhc2hib2FyZCk/mcp/__PAGE__.segment.rsc +2 -2
  152. package/.next/server/app/mcp.segments/!KGRhc2hib2FyZCk/mcp.segment.rsc +1 -1
  153. package/.next/server/app/mcp.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  154. package/.next/server/app/mcp.segments/_full.segment.rsc +5 -5
  155. package/.next/server/app/mcp.segments/_head.segment.rsc +1 -1
  156. package/.next/server/app/mcp.segments/_index.segment.rsc +2 -2
  157. package/.next/server/app/mcp.segments/_tree.segment.rsc +2 -2
  158. package/.next/server/app/playground/audio/speech.html +2 -2
  159. package/.next/server/app/playground/audio/speech.rsc +3 -3
  160. package/.next/server/app/playground/audio/speech.segments/!KGRhc2hib2FyZCk/playground/audio/speech/__PAGE__.segment.rsc +1 -1
  161. package/.next/server/app/playground/audio/speech.segments/!KGRhc2hib2FyZCk/playground/audio/speech.segment.rsc +1 -1
  162. package/.next/server/app/playground/audio/speech.segments/!KGRhc2hib2FyZCk/playground/audio.segment.rsc +1 -1
  163. package/.next/server/app/playground/audio/speech.segments/!KGRhc2hib2FyZCk/playground.segment.rsc +1 -1
  164. package/.next/server/app/playground/audio/speech.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  165. package/.next/server/app/playground/audio/speech.segments/_full.segment.rsc +3 -3
  166. package/.next/server/app/playground/audio/speech.segments/_head.segment.rsc +1 -1
  167. package/.next/server/app/playground/audio/speech.segments/_index.segment.rsc +2 -2
  168. package/.next/server/app/playground/audio/speech.segments/_tree.segment.rsc +2 -2
  169. package/.next/server/app/playground/audio/transcription.html +2 -2
  170. package/.next/server/app/playground/audio/transcription.rsc +3 -3
  171. package/.next/server/app/playground/audio/transcription.segments/!KGRhc2hib2FyZCk/playground/audio/transcription/__PAGE__.segment.rsc +1 -1
  172. package/.next/server/app/playground/audio/transcription.segments/!KGRhc2hib2FyZCk/playground/audio/transcription.segment.rsc +1 -1
  173. package/.next/server/app/playground/audio/transcription.segments/!KGRhc2hib2FyZCk/playground/audio.segment.rsc +1 -1
  174. package/.next/server/app/playground/audio/transcription.segments/!KGRhc2hib2FyZCk/playground.segment.rsc +1 -1
  175. package/.next/server/app/playground/audio/transcription.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  176. package/.next/server/app/playground/audio/transcription.segments/_full.segment.rsc +3 -3
  177. package/.next/server/app/playground/audio/transcription.segments/_head.segment.rsc +1 -1
  178. package/.next/server/app/playground/audio/transcription.segments/_index.segment.rsc +2 -2
  179. package/.next/server/app/playground/audio/transcription.segments/_tree.segment.rsc +2 -2
  180. package/.next/server/app/playground/chat.html +2 -2
  181. package/.next/server/app/playground/chat.rsc +5 -5
  182. package/.next/server/app/playground/chat.segments/!KGRhc2hib2FyZCk/playground/chat/__PAGE__.segment.rsc +2 -2
  183. package/.next/server/app/playground/chat.segments/!KGRhc2hib2FyZCk/playground/chat.segment.rsc +1 -1
  184. package/.next/server/app/playground/chat.segments/!KGRhc2hib2FyZCk/playground.segment.rsc +1 -1
  185. package/.next/server/app/playground/chat.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  186. package/.next/server/app/playground/chat.segments/_full.segment.rsc +5 -5
  187. package/.next/server/app/playground/chat.segments/_head.segment.rsc +1 -1
  188. package/.next/server/app/playground/chat.segments/_index.segment.rsc +2 -2
  189. package/.next/server/app/playground/chat.segments/_tree.segment.rsc +2 -2
  190. package/.next/server/app/playground/embedding.html +2 -2
  191. package/.next/server/app/playground/embedding.rsc +3 -3
  192. package/.next/server/app/playground/embedding.segments/!KGRhc2hib2FyZCk/playground/embedding/__PAGE__.segment.rsc +1 -1
  193. package/.next/server/app/playground/embedding.segments/!KGRhc2hib2FyZCk/playground/embedding.segment.rsc +1 -1
  194. package/.next/server/app/playground/embedding.segments/!KGRhc2hib2FyZCk/playground.segment.rsc +1 -1
  195. package/.next/server/app/playground/embedding.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  196. package/.next/server/app/playground/embedding.segments/_full.segment.rsc +3 -3
  197. package/.next/server/app/playground/embedding.segments/_head.segment.rsc +1 -1
  198. package/.next/server/app/playground/embedding.segments/_index.segment.rsc +2 -2
  199. package/.next/server/app/playground/embedding.segments/_tree.segment.rsc +2 -2
  200. package/.next/server/app/playground/image.html +2 -2
  201. package/.next/server/app/playground/image.rsc +3 -3
  202. package/.next/server/app/playground/image.segments/!KGRhc2hib2FyZCk/playground/image/__PAGE__.segment.rsc +1 -1
  203. package/.next/server/app/playground/image.segments/!KGRhc2hib2FyZCk/playground/image.segment.rsc +1 -1
  204. package/.next/server/app/playground/image.segments/!KGRhc2hib2FyZCk/playground.segment.rsc +1 -1
  205. package/.next/server/app/playground/image.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  206. package/.next/server/app/playground/image.segments/_full.segment.rsc +3 -3
  207. package/.next/server/app/playground/image.segments/_head.segment.rsc +1 -1
  208. package/.next/server/app/playground/image.segments/_index.segment.rsc +2 -2
  209. package/.next/server/app/playground/image.segments/_tree.segment.rsc +2 -2
  210. package/.next/server/app/playground/video.html +2 -2
  211. package/.next/server/app/playground/video.rsc +3 -3
  212. package/.next/server/app/playground/video.segments/!KGRhc2hib2FyZCk/playground/video/__PAGE__.segment.rsc +1 -1
  213. package/.next/server/app/playground/video.segments/!KGRhc2hib2FyZCk/playground/video.segment.rsc +1 -1
  214. package/.next/server/app/playground/video.segments/!KGRhc2hib2FyZCk/playground.segment.rsc +1 -1
  215. package/.next/server/app/playground/video.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  216. package/.next/server/app/playground/video.segments/_full.segment.rsc +3 -3
  217. package/.next/server/app/playground/video.segments/_head.segment.rsc +1 -1
  218. package/.next/server/app/playground/video.segments/_index.segment.rsc +2 -2
  219. package/.next/server/app/playground/video.segments/_tree.segment.rsc +2 -2
  220. package/.next/server/app/playground.html +2 -2
  221. package/.next/server/app/playground.rsc +3 -3
  222. package/.next/server/app/playground.segments/!KGRhc2hib2FyZCk/playground/__PAGE__.segment.rsc +1 -1
  223. package/.next/server/app/playground.segments/!KGRhc2hib2FyZCk/playground.segment.rsc +1 -1
  224. package/.next/server/app/playground.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  225. package/.next/server/app/playground.segments/_full.segment.rsc +3 -3
  226. package/.next/server/app/playground.segments/_head.segment.rsc +1 -1
  227. package/.next/server/app/playground.segments/_index.segment.rsc +2 -2
  228. package/.next/server/app/playground.segments/_tree.segment.rsc +2 -2
  229. package/.next/server/app/providers.html +2 -2
  230. package/.next/server/app/providers.rsc +5 -5
  231. package/.next/server/app/providers.segments/!KGRhc2hib2FyZCk/providers/__PAGE__.segment.rsc +2 -2
  232. package/.next/server/app/providers.segments/!KGRhc2hib2FyZCk/providers.segment.rsc +1 -1
  233. package/.next/server/app/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  234. package/.next/server/app/providers.segments/_full.segment.rsc +5 -5
  235. package/.next/server/app/providers.segments/_head.segment.rsc +1 -1
  236. package/.next/server/app/providers.segments/_index.segment.rsc +2 -2
  237. package/.next/server/app/providers.segments/_tree.segment.rsc +2 -2
  238. package/.next/server/app/settings/api-keys.html +2 -2
  239. package/.next/server/app/settings/api-keys.rsc +3 -3
  240. package/.next/server/app/settings/api-keys.segments/!KGRhc2hib2FyZCk/settings/api-keys/__PAGE__.segment.rsc +1 -1
  241. package/.next/server/app/settings/api-keys.segments/!KGRhc2hib2FyZCk/settings/api-keys.segment.rsc +1 -1
  242. package/.next/server/app/settings/api-keys.segments/!KGRhc2hib2FyZCk/settings.segment.rsc +1 -1
  243. package/.next/server/app/settings/api-keys.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  244. package/.next/server/app/settings/api-keys.segments/_full.segment.rsc +3 -3
  245. package/.next/server/app/settings/api-keys.segments/_head.segment.rsc +1 -1
  246. package/.next/server/app/settings/api-keys.segments/_index.segment.rsc +2 -2
  247. package/.next/server/app/settings/api-keys.segments/_tree.segment.rsc +2 -2
  248. package/.next/server/app/settings/users.html +2 -2
  249. package/.next/server/app/settings/users.rsc +5 -5
  250. package/.next/server/app/settings/users.segments/!KGRhc2hib2FyZCk/settings/users/__PAGE__.segment.rsc +2 -2
  251. package/.next/server/app/settings/users.segments/!KGRhc2hib2FyZCk/settings/users.segment.rsc +1 -1
  252. package/.next/server/app/settings/users.segments/!KGRhc2hib2FyZCk/settings.segment.rsc +1 -1
  253. package/.next/server/app/settings/users.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  254. package/.next/server/app/settings/users.segments/_full.segment.rsc +5 -5
  255. package/.next/server/app/settings/users.segments/_head.segment.rsc +1 -1
  256. package/.next/server/app/settings/users.segments/_index.segment.rsc +2 -2
  257. package/.next/server/app/settings/users.segments/_tree.segment.rsc +2 -2
  258. package/.next/server/app/settings.html +2 -2
  259. package/.next/server/app/settings.rsc +5 -5
  260. package/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings/__PAGE__.segment.rsc +2 -2
  261. package/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings.segment.rsc +1 -1
  262. package/.next/server/app/settings.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  263. package/.next/server/app/settings.segments/_full.segment.rsc +5 -5
  264. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  265. package/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  266. package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  267. package/.next/server/chunks/[root-of-the-server]__02sypva._.js +2 -2
  268. package/.next/server/chunks/[root-of-the-server]__02sypva._.js.map +1 -1
  269. package/.next/server/chunks/[root-of-the-server]__0g3mnim._.js +4 -1
  270. package/.next/server/chunks/[root-of-the-server]__0g3mnim._.js.map +1 -1
  271. package/.next/server/chunks/[root-of-the-server]__0myi8j1._.js +2 -2
  272. package/.next/server/chunks/[root-of-the-server]__0myi8j1._.js.map +1 -1
  273. package/.next/server/chunks/[root-of-the-server]__1qg3d87._.js +2 -2
  274. package/.next/server/chunks/[root-of-the-server]__1qg3d87._.js.map +1 -1
  275. package/.next/server/chunks/ssr/_001fhst._.js +3 -0
  276. package/.next/server/chunks/ssr/_001fhst._.js.map +1 -0
  277. package/.next/server/chunks/ssr/_02wtd-0._.js +3 -0
  278. package/.next/server/chunks/ssr/_02wtd-0._.js.map +1 -0
  279. package/.next/server/chunks/ssr/_05ufvn1._.js +9 -0
  280. package/.next/server/chunks/ssr/_05ufvn1._.js.map +1 -0
  281. package/.next/server/chunks/ssr/{_1fd20ju._.js → _066w-6f._.js} +2 -2
  282. package/.next/server/chunks/ssr/{_1fd20ju._.js.map → _066w-6f._.js.map} +1 -1
  283. package/.next/server/chunks/ssr/_0gd7kq_._.js +1 -1
  284. package/.next/server/chunks/ssr/_0gd7kq_._.js.map +1 -1
  285. package/.next/server/chunks/ssr/_0k-6auj._.js +3 -0
  286. package/.next/server/chunks/ssr/_0k-6auj._.js.map +1 -0
  287. package/.next/server/chunks/ssr/_0qo9tx1._.js +3 -0
  288. package/.next/server/chunks/ssr/_0qo9tx1._.js.map +1 -0
  289. package/.next/server/chunks/ssr/_0uom5g-._.js +9 -0
  290. package/.next/server/chunks/ssr/_0uom5g-._.js.map +1 -0
  291. package/.next/server/chunks/ssr/_1b09eqp._.js +1 -1
  292. package/.next/server/chunks/ssr/_1b09eqp._.js.map +1 -1
  293. package/.next/server/chunks/ssr/_1oi0iqt._.js +9 -0
  294. package/.next/server/chunks/ssr/_1oi0iqt._.js.map +1 -0
  295. package/.next/server/chunks/ssr/_1q3gglq._.js +3 -0
  296. package/.next/server/chunks/ssr/_1q3gglq._.js.map +1 -0
  297. package/.next/server/chunks/ssr/_1y5sreb._.js +3 -0
  298. package/.next/server/chunks/ssr/_1y5sreb._.js.map +1 -0
  299. package/.next/server/chunks/ssr/_1zlpzyk._.js +1 -1
  300. package/.next/server/chunks/ssr/_1zlpzyk._.js.map +1 -1
  301. package/.next/server/chunks/ssr/app_(dashboard)_mcp_page_tsx_0cg7pz9._.js +1 -1
  302. package/.next/server/chunks/ssr/app_(dashboard)_mcp_page_tsx_0cg7pz9._.js.map +1 -1
  303. package/.next/server/middleware-build-manifest.js +3 -3
  304. package/.next/server/pages/404.html +2 -2
  305. package/.next/server/pages/500.html +1 -1
  306. package/.next/server/server-reference-manifest.js +1 -1
  307. package/.next/server/server-reference-manifest.json +1 -1
  308. package/.next/static/chunks/0brzabhj3foow.js +1 -0
  309. package/.next/static/chunks/0cbg1vmtl84ae.css +1 -0
  310. package/.next/static/chunks/0hf0pedij0d6a.js +7 -0
  311. package/.next/static/chunks/1lo5yg9gvb9eg.js +7 -0
  312. package/.next/static/chunks/1s-rfyrjre6lb.js +1 -0
  313. package/.next/static/chunks/27siz43i4h5l7.js +9 -0
  314. package/.next/static/chunks/29p-wdja_cbgh.js +11 -0
  315. package/.next/static/chunks/396ikhrcofosq.js +7 -0
  316. package/.next/static/chunks/3m3fw3fmcc301.js +7 -0
  317. package/.next/trace +2 -0
  318. package/.next/trace-build +1 -1
  319. package/.next/types/cache-life.d.ts +145 -0
  320. package/.next/types/routes.d.ts +139 -0
  321. package/.next/types/validator.ts +682 -0
  322. package/bin/loom.mjs +80 -21
  323. package/package.json +1 -1
  324. package/.next/server/chunks/ssr/_0g6iz5n._.js +0 -3
  325. package/.next/server/chunks/ssr/_0g6iz5n._.js.map +0 -1
  326. package/.next/server/chunks/ssr/_0mim08o._.js +0 -3
  327. package/.next/server/chunks/ssr/_0mim08o._.js.map +0 -1
  328. package/.next/server/chunks/ssr/_0xm-krv._.js +0 -9
  329. package/.next/server/chunks/ssr/_0xm-krv._.js.map +0 -1
  330. package/.next/server/chunks/ssr/_0zxn_u0._.js +0 -3
  331. package/.next/server/chunks/ssr/_0zxn_u0._.js.map +0 -1
  332. package/.next/server/chunks/ssr/_151pht4._.js +0 -9
  333. package/.next/server/chunks/ssr/_151pht4._.js.map +0 -1
  334. package/.next/server/chunks/ssr/_18tl_0o._.js +0 -9
  335. package/.next/server/chunks/ssr/_18tl_0o._.js.map +0 -1
  336. package/.next/server/chunks/ssr/_19nuoa6._.js +0 -9
  337. package/.next/server/chunks/ssr/_19nuoa6._.js.map +0 -1
  338. package/.next/server/chunks/ssr/_1ax02l9._.js +0 -3
  339. package/.next/server/chunks/ssr/_1ax02l9._.js.map +0 -1
  340. package/.next/server/chunks/ssr/_1fze3ic._.js +0 -9
  341. package/.next/server/chunks/ssr/_1fze3ic._.js.map +0 -1
  342. package/.next/static/chunks/0zryggvaj_s87.js +0 -7
  343. package/.next/static/chunks/16bx44gr1d_ij.js +0 -7
  344. package/.next/static/chunks/172e7ymu9a3w9.js +0 -1
  345. package/.next/static/chunks/1_w-1rm5wy0l7.css +0 -1
  346. package/.next/static/chunks/2j_bpzzylp1un.js +0 -9
  347. package/.next/static/chunks/2r2pwisd9bptv.js +0 -11
  348. package/.next/static/chunks/3at-42v-_yh7y.js +0 -7
  349. package/.next/static/chunks/3bp0ieicfxx5n.js +0 -1
  350. package/.next/static/chunks/3et56kszc9f9a.js +0 -7
  351. /package/.next/static/{S-TxD5uw__EHY12mebgvS → wCZkC7ZaYrxG37d-e2tac}/_buildManifest.js +0 -0
  352. /package/.next/static/{S-TxD5uw__EHY12mebgvS → wCZkC7ZaYrxG37d-e2tac}/_clientMiddlewareManifest.js +0 -0
  353. /package/.next/static/{S-TxD5uw__EHY12mebgvS → wCZkC7ZaYrxG37d-e2tac}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../components/ui/card.tsx","../../../../node_modules/%40radix-ui/number/src/number.ts","../../../../node_modules/lucide-react/src/icons/chevron-down.ts","../../../../node_modules/%40radix-ui/react-visually-hidden/src/visually-hidden.tsx","../../../../components/ui/input.tsx","../../../../node_modules/%40radix-ui/react-label/dist/index.mjs","../../../../components/ui/label.tsx","../../../../node_modules/%40radix-ui/react-use-previous/src/use-previous.tsx","../../../../lib/api/models.ts","../../../../components/ProviderIcon.tsx","../../../../node_modules/lucide-react/src/icons/chevron-left.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","../../../../components/ui/skeleton.tsx","../../../../node_modules/lucide-react/src/icons/globe.ts","../../../../node_modules/lucide-react/src/icons/arrow-left.ts","../../../../app/%28dashboard%29/providers/%5Bname%5D/page.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Card({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card\"\n className={cn(\n \"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6\", className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center px-6 [.border-t]:pt-6\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n","function clamp(value: number, [min, max]: [number, number]): number {\n return Math.min(max, Math.max(min, value));\n}\n\nexport { clamp };\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm6 9 6 6 6-6', key: 'qrunsl' }]];\n\n/**\n * @component @name ChevronDown\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtNiA5IDYgNiA2LTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/chevron-down\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronDown = createLucideIcon('chevron-down', __iconNode);\n\nexport default ChevronDown;\n","import * as React from 'react';\nimport { Primitive } from '@radix-ui/react-primitive';\n\n/* -------------------------------------------------------------------------------------------------\n * VisuallyHidden\n * -----------------------------------------------------------------------------------------------*/\n\nconst VISUALLY_HIDDEN_STYLES = Object.freeze({\n // See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss\n position: 'absolute',\n border: 0,\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n whiteSpace: 'nowrap',\n wordWrap: 'normal',\n}) satisfies React.CSSProperties;\n\nconst NAME = 'VisuallyHidden';\n\ntype VisuallyHiddenElement = React.ComponentRef<typeof Primitive.span>;\ntype PrimitiveSpanProps = React.ComponentPropsWithoutRef<typeof Primitive.span>;\ninterface VisuallyHiddenProps extends PrimitiveSpanProps {}\n\nconst VisuallyHidden = React.forwardRef<VisuallyHiddenElement, VisuallyHiddenProps>(\n (props, forwardedRef) => {\n return (\n <Primitive.span\n {...props}\n ref={forwardedRef}\n style={{ ...VISUALLY_HIDDEN_STYLES, ...props.style }}\n />\n );\n },\n);\n\nVisuallyHidden.displayName = NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = VisuallyHidden;\n\nexport {\n VisuallyHidden,\n //\n Root,\n //\n VISUALLY_HIDDEN_STYLES,\n};\nexport type { VisuallyHiddenProps };\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n \"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\n","\"use client\";\n\n// src/label.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Label\";\nvar Label = React.forwardRef((props, forwardedRef) => {\n return /* @__PURE__ */ jsx(\n Primitive.label,\n {\n ...props,\n ref: forwardedRef,\n onMouseDown: (event) => {\n const target = event.target;\n if (target.closest(\"button, input, select, textarea\")) return;\n props.onMouseDown?.(event);\n if (!event.defaultPrevented && event.detail > 1) event.preventDefault();\n }\n }\n );\n});\nLabel.displayName = NAME;\nvar Root = Label;\nexport {\n Label,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Label }\n","import * as React from 'react';\n\nfunction usePrevious<T>(value: T) {\n const ref = React.useRef({ value, previous: value });\n\n // We compare values before making an update to ensure that\n // a change has been made. This ensures the previous value is\n // persisted correctly between renders.\n return React.useMemo(() => {\n if (ref.current.value !== value) {\n ref.current.previous = ref.current.value;\n ref.current.value = value;\n }\n return ref.current.previous;\n }, [value]);\n}\n\nexport { usePrevious };\n","import { defineResource } from \"./resource\";\nimport type { ModelCreateInput, ModelDTO, ModelUpdateInput } from \"@/lib/schemas/model\";\n\nexport const models = defineResource<\n ModelDTO,\n ModelCreateInput,\n ModelUpdateInput,\n Record<string, unknown>,\n ModelDTO[]\n>({\n path: \"/models\",\n key: \"models\",\n listShape: \"array\",\n staleTime: 60_000,\n invalidates: [\"providers\"],\n});\n","import React, { useState, memo } from 'react';\nimport { cn } from '@/lib/utils';\n\ninterface ProviderIconProps {\n providerName: string;\n className?: string;\n width?: number;\n height?: number;\n}\n\nconst PROVIDER_LOGOS: Record<string, string> = {\n 'openai': '/providers/openai.svg',\n 'claude': '/providers/claude.svg',\n 'anthropic': '/providers/claude.svg',\n 'gemini': '/providers/gemini.svg',\n 'google': '/providers/gemini.svg',\n 'vertexai': '/providers/vertexai.svg',\n 'vertex': '/providers/vertex.svg',\n 'deepseek': '/providers/deepseek.png',\n 'moonshot': '/providers/moonshot.png',\n 'zhipu': '/providers/zhipu.png',\n 'aliyun': '/providers/alibabacloud.png',\n 'alibabacloud': '/providers/alibabacloud.png',\n 'siliconflow': '/providers/siliconflow.svg',\n 'tei': '/providers/tei.svg',\n 'transformers': '/providers/transformers.svg',\n 'baichuan': '/providers/baichuan.png',\n 'volcengine': '/providers/volcengine.png',\n 'stepfun': '/providers/stepfun.png',\n};\n\nconst DARK_INVERT_PROVIDERS = new Set(['openai', 'vertex', 'vertexai', 'siliconflow']);\n\nexport const ProviderIcon = memo(function ProviderIcon({\n providerName,\n className,\n width = 24,\n height = 24\n}: ProviderIconProps) {\n const [imgError, setImgError] = useState(false);\n\n const normalizedName = providerName.toLowerCase().replace(/[^a-z0-9_]/g, '');\n const logoSrc = PROVIDER_LOGOS[normalizedName];\n const isDarkInvert = DARK_INVERT_PROVIDERS.has(normalizedName);\n\n if (logoSrc && !imgError) {\n return (\n <img\n src={logoSrc}\n alt=\"\"\n width={width}\n height={height}\n loading=\"lazy\"\n className={cn(\"object-contain shrink-0\", isDarkInvert && \"dark:invert\", className)}\n onError={() => setImgError(true)}\n />\n );\n }\n\n return (\n <span\n className={cn(\n \"rounded bg-muted flex items-center justify-center text-[8px] font-bold shrink-0\",\n className\n )}\n style={{ width, height }}\n >\n {providerName.substring(0, 2).toUpperCase()}\n </span>\n );\n})\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm15 18-6-6 6-6', key: '1wnfg3' }]];\n\n/**\n * @component @name ChevronLeft\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTUgMTgtNi02IDYtNiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/chevron-left\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 ChevronLeft = createLucideIcon('chevron-left', __iconNode);\n\nexport default ChevronLeft;\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 * as React from \"react\"\nimport { defineResource } from \"./resource\"\nimport { fetcher, rawFetch } from \"./client\"\nimport type {\n McpPreset,\n McpServerCreateInput,\n McpServerDTO,\n McpServerUpdateInput,\n} from \"@/lib/schemas/mcp\"\n\nconst base = defineResource<\n McpServerDTO,\n McpServerCreateInput,\n McpServerUpdateInput,\n Record<string, unknown>,\n McpServerDTO[]\n>({\n path: \"/mcp/servers\",\n key: \"mcp-servers\",\n listShape: \"array\",\n staleTime: 60_000,\n})\n\n/** Wire shape — mirrors lib/server/mcp/checks.ts McpCheckEvent so\n * adding a new phase/log channel is a one-place edit on each side. */\nexport type McpCheckPhase = \"spawning\" | \"starting\" | \"connecting\" | \"listing\" | \"ready\"\n\nexport type McpCheckEvent =\n | { type: \"phase\"; phase: McpCheckPhase }\n | { type: \"log\"; line: string }\n | { type: \"result\"; server: McpServerDTO }\n | { type: \"error\"; message: string; server?: McpServerDTO }\n\nexport const mcpServers = {\n ...base,\n\n // ---- presets ----\n listPresets: () => fetcher<McpPreset[]>(\"/mcp/presets\"),\n usePresets: () =>\n useQuery({\n queryKey: [\"mcp-presets\"] as const,\n queryFn: () => mcpServers.listPresets(),\n staleTime: 5 * 60 * 1000,\n }),\n\n // ---- check (one-shot JSON, kept for back-compat) ----\n check: (id: string) =>\n fetcher<McpServerDTO>(`/mcp/servers/${encodeURIComponent(id)}/check`, {\n method: \"POST\",\n }),\n useCheck: (opts?: { onSuccess?: (server: McpServerDTO) => void; onError?: (err: Error) => void }) => {\n const qc = useQueryClient()\n return useMutation({\n mutationFn: (id: string) => mcpServers.check(id),\n onSuccess: (server) => {\n qc.invalidateQueries({ queryKey: base.keys.all() })\n opts?.onSuccess?.(server)\n },\n onError: (err: Error) => opts?.onError?.(err),\n })\n },\n\n // ---- check (SSE stream) ----\n /** Streams every phase + stderr line from the server check, then\n * resolves with the final DTO. Caller's onEvent is invoked for\n * every event including the terminating `result` / `error`. */\n checkStream: async (\n id: string,\n onEvent: (ev: McpCheckEvent) => void,\n opts?: { signal?: AbortSignal },\n ): Promise<McpServerDTO | null> => {\n const res = await rawFetch(`/mcp/servers/${encodeURIComponent(id)}/check`, {\n method: \"POST\",\n headers: { Accept: \"text/event-stream\" },\n signal: opts?.signal,\n })\n if (!res.body) throw new Error(\"No response body\")\n\n const reader = res.body.getReader()\n const decoder = new TextDecoder()\n let buf = \"\"\n let last: McpServerDTO | null = null\n\n try {\n while (true) {\n const { done, value } = await reader.read()\n if (done) break\n buf += decoder.decode(value, { stream: true })\n // SSE frames are separated by \\n\\n.\n let nl = buf.indexOf(\"\\n\\n\")\n while (nl !== -1) {\n const frame = buf.slice(0, nl)\n buf = buf.slice(nl + 2)\n const dataLine = frame.split(\"\\n\").find((l) => l.startsWith(\"data: \"))\n if (dataLine) {\n try {\n const ev = JSON.parse(dataLine.slice(6)) as McpCheckEvent\n onEvent(ev)\n if (ev.type === \"result\") last = ev.server\n else if (ev.type === \"error\" && ev.server) last = ev.server\n } catch { /* malformed frame, skip */ }\n }\n nl = buf.indexOf(\"\\n\\n\")\n }\n }\n } finally {\n try { reader.releaseLock() } catch { /* ignore */ }\n }\n return last\n },\n useCheckStream: () => {\n const qc = useQueryClient()\n const [phase, setPhase] = React.useState<McpCheckPhase | null>(null)\n const [logs, setLogs] = React.useState<string[]>([])\n const [isChecking, setIsChecking] = React.useState(false)\n const [error, setError] = React.useState<string | null>(null)\n const [result, setResult] = React.useState<McpServerDTO | null>(null)\n const abortRef = React.useRef<AbortController | null>(null)\n\n const reset = React.useCallback(() => {\n setPhase(null)\n setLogs([])\n setError(null)\n setResult(null)\n }, [])\n\n const cancel = React.useCallback(() => {\n abortRef.current?.abort()\n abortRef.current = null\n setIsChecking(false)\n }, [])\n\n const run = React.useCallback(\n async (id: string) => {\n reset()\n setIsChecking(true)\n const ctrl = new AbortController()\n abortRef.current = ctrl\n try {\n const final = await mcpServers.checkStream(\n id,\n (ev) => {\n if (ev.type === \"phase\") setPhase(ev.phase)\n else if (ev.type === \"log\") setLogs((prev) => [...prev, ev.line])\n else if (ev.type === \"result\") setResult(ev.server)\n else if (ev.type === \"error\") {\n setError(ev.message)\n if (ev.server) setResult(ev.server)\n }\n },\n { signal: ctrl.signal },\n )\n qc.invalidateQueries({ queryKey: base.keys.all() })\n return final\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err)\n if (!ctrl.signal.aborted) setError(msg)\n return null\n } finally {\n setIsChecking(false)\n abortRef.current = null\n }\n },\n [reset, qc],\n )\n\n React.useEffect(() => () => abortRef.current?.abort(), [])\n\n return { run, cancel, reset, phase, logs, isChecking, error, result }\n },\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z',\n key: '1a8usu',\n },\n ],\n ['path', { d: 'm15 5 4 4', key: '1mk7zo' }],\n];\n\n/**\n * @component @name Pencil\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEuMTc0IDYuODEyYTEgMSAwIDAgMC0zLjk4Ni0zLjk4N0wzLjg0MiAxNi4xNzRhMiAyIDAgMCAwLS41LjgzbC0xLjMyMSA0LjM1MmEuNS41IDAgMCAwIC42MjMuNjIybDQuMzUzLTEuMzJhMiAyIDAgMCAwIC44My0uNDk3eiIgLz4KICA8cGF0aCBkPSJtMTUgNSA0IDQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/pencil\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Pencil = createLucideIcon('pencil', __iconNode);\n\nexport default Pencil;\n","\"use client\";\n\n// src/switch.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar SWITCH_NAME = \"Switch\";\nvar [createSwitchContext, createSwitchScope] = createContextScope(SWITCH_NAME);\nvar [SwitchProviderImpl, useSwitchContext] = createSwitchContext(SWITCH_NAME);\nfunction SwitchProvider(props) {\n const {\n __scopeSwitch,\n checked: checkedProp,\n children,\n defaultChecked,\n disabled,\n form,\n name,\n onCheckedChange,\n required,\n value = \"on\",\n // @ts-expect-error\n internal_do_not_use_render\n } = props;\n const [checked, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked ?? false,\n onChange: onCheckedChange,\n caller: SWITCH_NAME\n });\n const [control, setControl] = React.useState(null);\n const [bubbleInput, setBubbleInput] = React.useState(null);\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = control ? !!form || !!control.closest(\"form\") : (\n // We set this to true by default so that events bubble to forms without JS (SSR)\n true\n );\n const context = {\n checked,\n setChecked,\n disabled,\n control,\n setControl,\n name,\n form,\n value,\n hasConsumerStoppedPropagationRef,\n required,\n defaultChecked,\n isFormControl,\n bubbleInput,\n setBubbleInput\n };\n return /* @__PURE__ */ jsx(SwitchProviderImpl, { scope: __scopeSwitch, ...context, children: isFunction(internal_do_not_use_render) ? internal_do_not_use_render(context) : children });\n}\nvar TRIGGER_NAME = \"SwitchTrigger\";\nvar SwitchTrigger = React.forwardRef(\n ({ __scopeSwitch, onClick, ...switchProps }, forwardedRef) => {\n const {\n value,\n disabled,\n checked,\n required,\n setControl,\n setChecked,\n hasConsumerStoppedPropagationRef,\n isFormControl,\n bubbleInput\n } = useSwitchContext(TRIGGER_NAME, __scopeSwitch);\n const composedRefs = useComposedRefs(forwardedRef, setControl);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"switch\",\n \"aria-checked\": checked,\n \"aria-required\": required,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...switchProps,\n ref: composedRefs,\n onClick: composeEventHandlers(onClick, (event) => {\n setChecked((prevChecked) => !prevChecked);\n if (bubbleInput && isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n );\n }\n);\nSwitchTrigger.displayName = TRIGGER_NAME;\nvar Switch = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSwitch,\n name,\n checked,\n defaultChecked,\n required,\n disabled,\n value,\n onCheckedChange,\n form,\n ...switchProps\n } = props;\n return /* @__PURE__ */ jsx(\n SwitchProvider,\n {\n __scopeSwitch,\n checked,\n defaultChecked,\n disabled,\n required,\n onCheckedChange,\n name,\n form,\n value,\n internal_do_not_use_render: ({ isFormControl }) => /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n SwitchTrigger,\n {\n ...switchProps,\n ref: forwardedRef,\n __scopeSwitch\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n SwitchBubbleInput,\n {\n __scopeSwitch\n }\n )\n ] })\n }\n );\n }\n);\nSwitch.displayName = SWITCH_NAME;\nvar THUMB_NAME = \"SwitchThumb\";\nvar SwitchThumb = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSwitch, ...thumbProps } = props;\n const context = useSwitchContext(THUMB_NAME, __scopeSwitch);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...thumbProps,\n ref: forwardedRef\n }\n );\n }\n);\nSwitchThumb.displayName = THUMB_NAME;\nvar BUBBLE_INPUT_NAME = \"SwitchBubbleInput\";\nvar SwitchBubbleInput = React.forwardRef(\n ({ __scopeSwitch, ...props }, forwardedRef) => {\n const {\n control,\n hasConsumerStoppedPropagationRef,\n checked,\n defaultChecked,\n required,\n disabled,\n name,\n value,\n form,\n bubbleInput,\n setBubbleInput\n } = useSwitchContext(BUBBLE_INPUT_NAME, __scopeSwitch);\n const composedRefs = useComposedRefs(forwardedRef, setBubbleInput);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = bubbleInput;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n \"checked\"\n );\n const setChecked = descriptor.set;\n const bubbles = !hasConsumerStoppedPropagationRef.current;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [bubbleInput, prevChecked, checked, hasConsumerStoppedPropagationRef]);\n const defaultCheckedRef = React.useRef(checked);\n return /* @__PURE__ */ jsx(\n Primitive.input,\n {\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: defaultChecked ?? defaultCheckedRef.current,\n required,\n disabled,\n name,\n value,\n form,\n ...props,\n tabIndex: -1,\n ref: composedRefs,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0,\n // We transform because the input is absolutely positioned but we have\n // rendered it **after** the button. This pulls it back to sit on top\n // of the button.\n transform: \"translateX(-100%)\"\n }\n }\n );\n }\n);\nSwitchBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\nfunction getState(checked) {\n return checked ? \"checked\" : \"unchecked\";\n}\nexport {\n Switch as Root,\n Switch,\n SwitchThumb,\n SwitchThumb as Thumb,\n createSwitchScope,\n SwitchBubbleInput as unstable_BubbleInput,\n SwitchProvider as unstable_Provider,\n SwitchBubbleInput as unstable_SwitchBubbleInput,\n SwitchProvider as unstable_SwitchProvider,\n SwitchTrigger as unstable_SwitchTrigger,\n SwitchTrigger as unstable_Trigger\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Switch({\n className,\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n \"peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n \"bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0\"\n )}\n />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Textarea }\n","import { cn } from \"@/lib/utils\"\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(\"bg-accent animate-pulse rounded-md\", className)}\n {...props}\n />\n )\n}\n\nexport { Skeleton }\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['path', { d: 'M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20', key: '13o1zl' }],\n ['path', { d: 'M2 12h20', key: '9i4pu4' }],\n];\n\n/**\n * @component @name Globe\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8cGF0aCBkPSJNMTIgMmExNC41IDE0LjUgMCAwIDAgMCAyMCAxNC41IDE0LjUgMCAwIDAgMC0yMCIgLz4KICA8cGF0aCBkPSJNMiAxMmgyMCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/globe\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 Globe = createLucideIcon('globe', __iconNode);\n\nexport default Globe;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm12 19-7-7 7-7', key: '1l729n' }],\n ['path', { d: 'M19 12H5', key: 'x3x0zl' }],\n];\n\n/**\n * @component @name ArrowLeft\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTIgMTktNy03IDctNyIgLz4KICA8cGF0aCBkPSJNMTkgMTJINSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/arrow-left\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 ArrowLeft = createLucideIcon('arrow-left', __iconNode);\n\nexport default ArrowLeft;\n","\"use client\"\n\nimport * as React from \"react\"\nimport { useParams, useRouter } from \"next/navigation\"\nimport {\n Activity,\n ArrowLeft,\n ChevronLeft,\n FileText,\n Globe,\n Plus,\n RefreshCcw,\n} from \"lucide-react\"\nimport { toast } from \"sonner\"\n\nimport { models as modelsApi } from \"@/lib/api/models\"\nimport { providers } from \"@/lib/api/providers\"\nimport { useAuth } from \"@/context/auth-context\"\nimport type { ModelDTO } from \"@/lib/schemas/model\"\n\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card } from \"@/components/ui/card\"\nimport { ConfirmDialog } from \"@/components/ui/confirm-dialog\"\nimport { Skeleton } from \"@/components/ui/skeleton\"\nimport { ProviderIcon } from \"@/components/ProviderIcon\"\nimport { ModelsTable } from \"@/components/providers/models-table\"\nimport { ModelFormDialog } from \"@/components/providers/model-form-dialog\"\nimport { ProviderHealthPill } from \"@/components/providers/provider-health-pill\"\n\ntype ModelDialogState = {\n open: boolean\n mode: \"create\" | \"edit\"\n model?: ModelDTO | null\n}\n\nexport default function ProviderDetailPage() {\n const params = useParams()\n const router = useRouter()\n const slug = decodeURIComponent(String(params.name ?? \"\"))\n\n const { user } = useAuth()\n const isAdmin = user?.role === \"admin\"\n\n const { data: provider, isLoading: isLoadingProvider } = providers.useGet(slug)\n const { data: models, isLoading: isLoadingModels } = providers.useModels(slug)\n\n const [deleting, setDeleting] = React.useState<ModelDTO | null>(null)\n const [modelDialog, setModelDialog] = React.useState<ModelDialogState>({\n open: false,\n mode: \"create\",\n model: null,\n })\n\n const refreshMutation = providers.useReload({\n onSuccess: () => toast.success(\"Refreshed model list\"),\n onError: (error) => toast.error(`Refresh failed: ${error.message}`),\n })\n\n const checkMutation = providers.useCheck(slug, {\n onSuccess: (res) => {\n if (res.ok)\n toast.success(\n `Healthy${res.latency_ms != null ? ` (${res.latency_ms}ms)` : \"\"}`\n )\n else toast.error(`Down: ${res.error ?? \"unknown\"}`)\n },\n onError: (e) => toast.error(`Health check failed: ${e.message}`),\n })\n\n const deleteMutation = modelsApi.useDelete({\n onSuccess: () => {\n toast.success(\"Model deleted\")\n setDeleting(null)\n },\n onError: (e) => toast.error(e.message || \"Delete failed\"),\n })\n\n if (isLoadingProvider) {\n return <ProviderDetailSkeleton />\n }\n\n if (!provider) {\n return (\n <div className=\"flex flex-col items-center justify-center h-[50vh] gap-4\">\n <h2 className=\"text-lg font-semibold\">Provider not found</h2>\n <Button onClick={() => router.push(\"/providers\")} size=\"sm\">\n <ArrowLeft className=\"mr-2 h-4 w-4\" />\n Back to Providers\n </Button>\n </div>\n )\n }\n\n const dbCount = models?.filter((m) => !m.is_discovered).length ?? 0\n const discoveredCount = models?.filter((m) => m.is_discovered).length ?? 0\n const totalModels = models?.length ?? 0\n\n return (\n <div className=\"h-full overflow-y-auto\">\n <div className=\"mx-auto w-full max-w-7xl space-y-4 p-4 md:p-6\">\n <button\n onClick={() => router.push(\"/providers\")}\n className=\"inline-flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground\"\n >\n <ChevronLeft className=\"h-3 w-3\" />\n Providers\n </button>\n\n {/* Identity */}\n <Card className=\"p-4 md:p-5\">\n <div className=\"flex items-start gap-3\">\n <div className=\"flex h-10 w-10 items-center justify-center rounded-lg bg-muted shrink-0\">\n <ProviderIcon\n providerName={provider.provider_name}\n className=\"h-6 w-6\"\n width={24}\n height={24}\n />\n </div>\n <div className=\"min-w-0 flex-1 space-y-2\">\n <div className=\"flex flex-wrap items-start justify-between gap-2\">\n <h1\n className=\"text-lg font-semibold tracking-tight truncate min-w-0\"\n title={provider.provider_name}\n >\n {provider.provider_name}\n </h1>\n <div className=\"flex flex-wrap items-center gap-2 shrink-0\">\n {provider.model_page && (\n <Button variant=\"outline\" size=\"sm\" asChild>\n <a href={provider.model_page} target=\"_blank\" rel=\"noreferrer\">\n <Globe className=\"mr-1.5 h-3.5 w-3.5\" />\n Models\n </a>\n </Button>\n )}\n {provider.document_page && (\n <Button variant=\"outline\" size=\"sm\" asChild>\n <a href={provider.document_page} target=\"_blank\" rel=\"noreferrer\">\n <FileText className=\"mr-1.5 h-3.5 w-3.5\" />\n Docs\n </a>\n </Button>\n )}\n {provider.health_check_url && (\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => checkMutation.mutate()}\n disabled={checkMutation.isPending}\n title=\"Run the configured health check now\"\n >\n <Activity\n className={`mr-1.5 h-3.5 w-3.5 ${checkMutation.isPending ? \"animate-pulse\" : \"\"}`}\n />\n Check\n </Button>\n )}\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => refreshMutation.mutate()}\n disabled={refreshMutation.isPending}\n >\n <RefreshCcw\n className={`mr-1.5 h-3.5 w-3.5 ${refreshMutation.isPending ? \"animate-spin\" : \"\"}`}\n />\n Refresh\n </Button>\n </div>\n </div>\n <div className=\"flex items-center gap-1.5 flex-wrap\">\n <ProviderHealthPill provider={provider} size=\"sm\" />\n {provider.adapter_id && provider.adapter_id !== \"openai\" && (\n <Badge\n variant=\"outline\"\n className=\"text-[10px] uppercase tracking-wider font-semibold\"\n >\n {provider.adapter_id.replace(/^azure-/, \"Azure \")}\n </Badge>\n )}\n <span className=\"text-xs text-muted-foreground\">\n {totalModels} model{totalModels === 1 ? \"\" : \"s\"} ·{\" \"}\n {discoveredCount} discovered ·{\" \"}\n {dbCount} override{dbCount === 1 ? \"\" : \"s\"}\n </span>\n </div>\n {provider.proxy && (\n <div className=\"pt-2 mt-1 border-t flex items-center gap-2 text-xs text-muted-foreground\">\n <span className=\"uppercase tracking-wider text-[10px] font-semibold shrink-0\">\n Endpoint\n </span>\n <code className=\"font-mono truncate min-w-0\">{provider.proxy}</code>\n </div>\n )}\n </div>\n </div>\n </Card>\n\n {/* Models — header + add button + table */}\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between gap-2\">\n <h2 className=\"text-sm font-semibold tracking-tight\">Models</h2>\n {isAdmin && (\n <Button\n size=\"sm\"\n variant=\"secondary\"\n onClick={() =>\n setModelDialog({\n open: true,\n mode: \"create\",\n model: null,\n })\n }\n >\n <Plus className=\"h-3.5 w-3.5 mr-1\" />\n Add model\n </Button>\n )}\n </div>\n\n {isLoadingModels ? (\n <div className=\"border rounded-xl bg-card overflow-hidden\">\n <Skeleton className=\"h-64 rounded-none\" />\n </div>\n ) : models && models.length > 0 ? (\n <div className=\"border rounded-xl bg-card shadow-sm overflow-hidden\">\n <ModelsTable\n models={models}\n onEdit={isAdmin ? (m) =>\n setModelDialog({\n open: true,\n mode: m.is_discovered ? \"create\" : \"edit\",\n model: m,\n }) : undefined}\n onDelete={isAdmin ? setDeleting : undefined}\n />\n </div>\n ) : (\n <div className=\"text-center py-12 border border-dashed rounded-lg\">\n <p className=\"text-sm text-muted-foreground mb-3\">\n No models exposed by this provider yet.\n </p>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => refreshMutation.mutate()}\n disabled={refreshMutation.isPending}\n >\n <RefreshCcw\n className={`mr-2 h-3.5 w-3.5 ${refreshMutation.isPending ? \"animate-spin\" : \"\"}`}\n />\n Refresh Models\n </Button>\n </div>\n )}\n </div>\n\n <ConfirmDialog\n open={!!deleting}\n onOpenChange={(o) => !o && setDeleting(null)}\n title=\"Delete model?\"\n description={<>This will permanently delete model <b>{deleting?.name}</b>. This cannot be undone.</>}\n confirmLabel=\"Delete\"\n destructive\n isLoading={deleteMutation.isPending}\n onConfirm={() => deleting && deleteMutation.mutate(deleting.id)}\n />\n\n <ModelFormDialog\n open={modelDialog.open}\n onOpenChange={(open) => setModelDialog((s) => ({ ...s, open }))}\n mode={modelDialog.mode}\n model={modelDialog.model}\n defaultProviderId={provider.id}\n />\n </div>\n </div>\n )\n}\n\nfunction ProviderDetailSkeleton() {\n return (\n <div className=\"h-full overflow-y-auto\">\n <div className=\"mx-auto w-full max-w-7xl space-y-4 p-4 md:p-6\">\n <Skeleton className=\"h-3 w-20\" />\n <Card className=\"p-4 md:p-5\">\n <div className=\"flex items-center gap-4\">\n <Skeleton className=\"h-10 w-10 rounded-lg\" />\n <div className=\"flex-1 space-y-2\">\n <Skeleton className=\"h-5 w-48\" />\n <Skeleton className=\"h-3 w-72\" />\n </div>\n </div>\n </Card>\n <Skeleton className=\"h-64 rounded-xl\" />\n </div>\n </div>\n )\n}\n"],"names":["Card","className","props","CardHeader","CardTitle","CardDescription","CardAction","CardContent","CardFooter","Input","type","NAME","Label","forwardedRef","label","ref","onMouseDown","event","target","closest","defaultPrevented","detail","preventDefault","displayName","Root","models","path","key","listShape","staleTime","invalidates","PROVIDER_LOGOS","DARK_INVERT_PROVIDERS","Set","ProviderIcon","providerName","width","height","imgError","setImgError","normalizedName","toLowerCase","replace","logoSrc","isDarkInvert","has","src","alt","loading","onError","style","substring","toUpperCase","InfiniteQueryObserver","client","options","bindMethods","fetchNextPage","bind","fetchPreviousPage","setOptions","_type","getOptimisticResult","fetch","meta","fetchMore","direction","createResult","query","state","parentResult","isFetching","isRefetching","isError","isRefetchError","fetchDirection","fetchMeta","isFetchNextPageError","isFetchingNextPage","isFetchPreviousPageError","isFetchingPreviousPage","result","hasNextPage","data","hasPreviousPage","base","mcpServers","listPresets","usePresets","queryKey","queryFn","check","id","encodeURIComponent","method","useCheck","opts","qc","mutationFn","onSuccess","server","invalidateQueries","keys","all","err","checkStream","onEvent","res","headers","Accept","signal","body","Error","reader","getReader","decoder","TextDecoder","buf","last","done","value","read","decode","stream","nl","indexOf","frame","slice","dataLine","split","find","l","startsWith","ev","JSON","parse","releaseLock","useCheckStream","phase","setPhase","logs","setLogs","isChecking","setIsChecking","error","setError","setResult","abortRef","reset","cancel","current","abort","run","ctrl","AbortController","final","prev","line","message","msg","String","aborted","SWITCH_NAME","createSwitchContext","createSwitchScope","SwitchProviderImpl","useSwitchContext","SwitchProvider","__scopeSwitch","checked","checkedProp","children","defaultChecked","disabled","form","name","onCheckedChange","required","internal_do_not_use_render","setChecked","prop","defaultProp","onChange","caller","control","setControl","bubbleInput","setBubbleInput","hasConsumerStoppedPropagationRef","isFormControl","context","scope","isFunction","TRIGGER_NAME","SwitchTrigger","onClick","switchProps","composedRefs","button","role","getState","prevChecked","isPropagationStopped","stopPropagation","Switch","SwitchBubbleInput","THUMB_NAME","SwitchThumb","thumbProps","span","BUBBLE_INPUT_NAME","controlSize","input","inputProto","window","HTMLInputElement","prototype","descriptor","Object","getOwnPropertyDescriptor","set","bubbles","Event","call","dispatchEvent","defaultCheckedRef","tabIndex","position","pointerEvents","opacity","margin","transform","Textarea","Skeleton","ProviderDetailPage","params","router","slug","decodeURIComponent","user","isAdmin","provider","isLoading","isLoadingProvider","useGet","isLoadingModels","useModels","deleting","setDeleting","modelDialog","setModelDialog","open","mode","model","refreshMutation","useReload","success","checkMutation","ok","latency_ms","e","deleteMutation","useDelete","ProviderDetailSkeleton","push","size","dbCount","filter","m","is_discovered","length","discoveredCount","totalModels","provider_name","title","model_page","variant","asChild","href","rel","document_page","health_check_url","mutate","isPending","adapter_id","proxy","onEdit","undefined","onDelete","onOpenChange","o","description","confirmLabel","destructive","onConfirm","s","defaultProviderId"],"mappings":"0DAEA,EAAA,EAAA,CAAA,CAAA,sBAEA,SAAc,AAALA,WAAOC,CAAS,CAAE,GAAGC,EAAoC,EAChE,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CACC,YAAU,OACVD,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EACX,oFACAA,GAED,GAAGC,CAAK,EAGf,kBAgDA,SAASK,AAAY,WAAEN,CAAS,CAAE,GAAGC,EAAoC,EACvE,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CACC,YAAU,eACVD,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,OAAQA,GACrB,GAAGC,CAAK,EAGf,sBA/BA,SAASG,AAAgB,WAAEJ,CAAS,CAAE,GAAGC,EAAoC,EAC3E,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CACC,YAAU,mBACVD,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,gCAAiCA,GAC9C,GAAGC,CAAK,EAGf,iBA/BA,SAASC,AAAW,WAAEF,CAAS,CAAE,GAAGC,EAAoC,EACtE,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CACC,YAAU,cACVD,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EACX,2JACAA,GAED,GAAGC,CAAK,EAGf,gBAEA,SAASE,AAAU,WAAEH,CAAS,CAAE,GAAGC,EAAoC,EACrE,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CACC,YAAU,aACVD,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,6BAA8BA,GAC3C,GAAGC,CAAK,EAGf,4CCtCA,SAAe,AAAN,CAAM,CAAe,CAAC,EAAK,EAAG,CAAA,CAA6B,AAClE,OAAO,KAAK,GAAA,CAAI,EAAK,KAAK,GAAA,CAAI,EAAK,GACrC,EAD0C,CAAC,0BCe3C,CAAA,CAAA,CAAA,CAAA,AAAM,CAAN,CAAM,CAAA,EAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAd,CAAc,AAAd,CAAA,AAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAbD,CAAC,AAagB,CAbf,AAae,CAAA,CAAA,CAAA,CAAA,CAAA,CAbf,AAae,CAbf,AAAQ,AAaO,CAbP,AAAE,AAaK,CAAU,CAbZ,AAaY,cAbZ,CAAA,AAAgB,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAC,CAAA,gDCHnF,IAAA,EAAuB,EAAA,CAAA,CAAA,EAAX,MACZ,EAA0B,EAAA,CAAjB,AAAiB,AADH,CACG,OA6BpB,EAAA,EAAA,CAAA,CAAA,GA7BoB,KAMpB,EAAyB,OAAO,MAAA,CAAO,CAE3C,SAAU,WACV,OAAQ,EACR,MAAO,EACP,OAAQ,EACR,QAAS,EACT,OAAQ,CAAA,EACR,SAAU,SACV,KAAM,mBACN,WAAY,SACZ,SAAU,QACZ,CAAC,EAQK,EAAuB,EAAA,UAAA,CAC3B,CAAC,EAAO,IAEJ,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAFoB,QAEpB,CAAU,IAAA,CAAV,CACE,GAAG,CAAA,CACJ,IAAK,EACL,MAAO,CAAE,GAAG,CAAA,CAAwB,GAAG,EAAM,KAAA,AAAM,CAAA,GAM3D,GAAe,WAAA,CAlBF,EAkBgB,6BAIhB,sJCzCb,EAAA,EAAA,CAAA,CAAA,uBAEA,SAASO,AAAM,WAAER,CAAS,MAAES,CAAI,CAAE,GAAGR,EAAsC,EACzE,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CACCQ,KAAMA,EACN,YAAU,QACVT,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EACX,6bACA,gFACA,yGACAA,GAED,GAAGC,CAAK,EAGf,+CCfA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,OAGIU,EAAQ,EAAA,UAAgB,CAAC,CAACV,EAAOW,IACZ,CAAA,EAAA,EAAA,GAAA,AAAG,EACxB,EAAA,SAAS,CAACC,KAAK,CACf,CACE,GAAGZ,CAAK,CACRa,IAAKF,EACLG,YAAa,AAACC,IACGA,AACXC,EADiBA,MAAM,CAChBC,OAAO,CAAC,oCAAoC,CACvDjB,EAAMc,WAAW,GAAGC,GAChB,CAACA,EAAMG,gBAAgB,EAAIH,EAAMI,MAAM,CAAG,GAAGJ,EAAMK,cAAc,GACvE,CACF,IAGJV,EAAMW,WAAW,CAhBN,EAgBSZ,MCjBpB,IAAA,EAAA,EAAA,CAAA,CAAA,uBAEA,SAAS,AAAM,WACb,CAASA,CACT,GAAG,EAC8C,EACjD,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,ADWMC,ECXN,CACC,YAAU,QACV,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EACX,sNACA,GAED,GAAGU,CAAK,EAGf,mCCrBA,IAAA,EAAuB,EAAA,CAAA,CAAA,EAAX,WAAW,gBAEvB,SAAS,AAAe,CAAA,EAAU,AAChC,IAAM,EAAY,EAAA,MAAA,CAAO,OAAE,EAAO,SAAU,CAAM,CAAC,EAKnD,OAAa,EAAA,OAAA,CAAQ,KACf,CADqB,CACjB,OAAA,CAAQ,KAAA,GAAU,IACxB,EAAI,CAD2B,MAC3B,CAAQ,QAAA,CAAW,EAAI,OAAA,CAAQ,KAAA,CACnC,EAAI,OAAA,CAAQ,KAAA,CAAQ,GAEf,EAAI,OAAA,CAAQ,QAAA,EAClB,CAAC,EAAM,CACZ,EADW,2BCXJ,IAAMG,EAAS,CAAA,EAAA,AAHtB,EAAA,CAAA,CAAA,QAGsB,cAAA,AAAc,EAMlC,CACEC,KAAM,UACNC,IAAK,SACLC,UAAW,QACXC,UAAW,IACXC,YAAa,CAAC,YAAY,AAC9B,kECfA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QASA,IAAMC,EAAyC,CAC3C,OAAU,wBACV,OAAU,wBACV,UAAa,wBACb,OAAU,wBACV,OAAU,wBACV,SAAY,0BACZ,OAAU,wBACV,SAAY,0BACZ,SAAY,0BACZ,MAAS,uBACT,OAAU,8BACV,aAAgB,8BAChB,YAAe,6BACf,IAAO,qBACP,aAAgB,8BAChB,SAAY,0BACZ,WAAc,4BACd,QAAW,wBACf,EAEMC,EAAwB,IAAIC,IAAI,CAAC,SAAU,SAAU,WAAY,cAAc,EAExEC,EAAe,CAAA,EAAA,EAAA,IAAA,AAAI,EAAC,SAAsB,AAAbA,cACtCC,CAAY,CACZlC,WAAS,OACTmC,EAAQ,EAAE,QACVC,EAAS,EAAE,CACK,EAChB,GAAM,CAACC,EAAUC,EAAY,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GAEnCC,EAAiBL,EAAaM,WAAW,GAAGC,OAAO,CAAC,cAAe,IACnEC,EAAUZ,CAAc,CAACS,EAAe,CACxCI,EAAeZ,EAAsBa,GAAG,CAACL,UAE/C,AAAIG,GAAW,CAACL,EAER,CAAA,EAAA,EAAA,GAFkB,AAElB,EAAC,MAAA,CACGQ,IAAKH,EACLI,IAAI,GACJX,MAAOA,EACPC,OAAQA,EACRW,QAAQ,OACR/C,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,0BAA2B2C,GAAgB,cAAe3C,GACxEgD,QAAS,IAAMV,EAAY,MAMnC,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CACGtC,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EACT,kFACAA,GAEJiD,MAAO,OAAEd,SAAOC,CAAO,WAEtBF,EAAagB,SAAS,CAAC,EAAG,GAAGC,WAAW,IAGrD,sDCtDA,CAAA,CAAA,CAAA,CAAA,AAAM,CAAN,CAAM,CAAA,EAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAd,CAAA,AAAc,CAAA,AAAd,CAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAbD,CAaiB,AAbhB,CAagB,AAbf,CAae,CAAA,CAAA,CAAA,CAAA,CAbf,AAae,CAbP,AAaO,AAbf,CAAQ,AAAE,AAaK,CAAU,CAbZ,AAaY,gBAbZ,CAAkB,AAAlB,CAAkB,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAC,CAAA,2DGFrF,IAAA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACIC,EAAwB,cAAc,EAAA,aAAa,CACrD,YAAYC,CAAM,CAAEC,CAAO,CAAE,CAC3B,KAAK,CAACD,EAAQC,EAChB,CACAC,aAAc,CACZ,KAAK,CAACA,cACN,IAAI,CAACC,aAAa,CAAG,IAAI,CAACA,aAAa,CAACC,IAAI,CAAC,IAAI,EACjD,IAAI,CAACC,iBAAiB,CAAG,IAAI,CAACA,iBAAiB,CAACD,IAAI,CAAC,IAAI,CAC3D,CACAE,WAAWL,CAAO,CAAE,CAClBA,EAAQM,KAAK,CAAG,WAChB,KAAK,CAACD,WAAWL,EACnB,CACAO,oBAAoBP,CAAO,CAAE,CAE3B,OADAA,EAAQM,KAAK,CAAG,WACT,KAAK,CAACC,oBAAoBP,EACnC,CACAE,cAAcF,CAAO,CAAE,CACrB,OAAO,IAAI,CAACQ,KAAK,CAAC,CAChB,GAAGR,CAAO,CACVS,KAAM,CACJC,UAAW,CAAEC,UAAW,SAAU,CACpC,CACF,EACF,CACAP,kBAAkBJ,CAAO,CAAE,CACzB,OAAO,IAAI,CAACQ,KAAK,CAAC,CAChB,GAAGR,CAAO,CACVS,KAAM,CACJC,UAAW,CAAEC,UAAW,UAAW,CACrC,CACF,EACF,CACAC,aAAaC,CAAK,CAAEb,CAAO,CAAE,CAC3B,GAAM,OAAEc,CAAK,CAAE,CAAGD,EACZE,EAAe,KAAK,CAACH,aAAaC,EAAOb,GACzC,CAAEgB,YAAU,cAAEC,CAAY,SAAEC,CAAO,gBAAEC,CAAc,CAAE,CAAGJ,EACxDK,EAAiBN,EAAMO,SAAS,EAAEX,WAAWC,UAC7CW,EAAuBJ,GAA8B,YAAnBE,EAClCG,EAAqBP,GAAcI,AAAmB,cACtDI,EAA2BN,GAA8B,aAAnBE,EACtCK,EAAyBT,GAAiC,aAAnBI,EAc7C,MAbe,CACb,AAYKM,GAZFX,CAAY,CACfb,cAAe,IAAI,CAACA,aAAa,CACjCE,kBAAmB,IAAI,CAACA,iBAAiB,CACzCuB,YAAa,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC3B,EAASc,EAAMc,IAAI,EAC5CC,gBAAiB,CAAA,EAAA,EAAA,eAAA,AAAe,EAAC7B,EAASc,EAAMc,IAAI,uBACpDN,qBACAC,2BACAC,yBACAC,EACAN,eAAgBA,GAAkB,CAACG,GAAwB,CAACE,EAC5DP,aAAcA,GAAgB,CAACM,GAAsB,CAACE,CACxD,CAEF,CACF,EFxDA,EAAA,EAAA,CAAA,CAAA,OCHA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QAIA,IAAMxB,EAAO,CAAA,EAAA,EAAA,cAAA,AAAc,EAMzB,CACE,KAAM,iBACN,IAAK,gBACL,SAAU,AAAC,GAAO,CAAD,CACbK,KAAM,EAAE,IAAI,EAAI,EAChB,UAAW,EAAE,SAAS,EAAI,GAC1B,KAAM,EAAEJ,IAAI,EAAI,cAChB,QAAS,EAAE,OAAO,CACtB,CAAC,CAID,UAAW,GACf,GAUa,EAAgB,CACzB,GAAG,CAAI,CAGP,YAAa,CAAC,EAAY,IAAkB,EAAK,MAAM,CAAC,EAAI,OAAE,CAAM,GAGpEE,iBAXG,SAAS,AAAiB,CAAsB,CAAE,CAAgB,EACrE,MAAO,IAAI,EAAK,IAAI,CAAC,GAAG,CAAC,GAAiB,iBAAkB,EAAS,AACzE,EAaI,kBAAmB,KACf,IAAM,EAAK,CAAA,EAAA,EAAA,cAAA,AAAc,IACzB,MAAO,IAAM,EAAG,iBAAiB,CAAC,CAC9B,SAAU,EAAK,IAAI,CAAC,GAAG,GACvB,UAAW,AAAC,IACR,IAAM,EAAI,EAAE,QAAQ,CACpB,OAAO,EAAE,MAAM,EAAI,GAAM,CAAS,CAAV,SAAE,CAAC,EAAE,EAAwB,aAAT,CAAC,CAAC,EAAE,AAAK,CAAU,AACnE,CACJ,EACJ,EAGA,YAAa,AAAC,UACV,IAAM,EAAW,GAAQ,UAAY,GAC/B,EAAU,GAAQ,SAAS,aAAU,EAC3C,OAAO,ADzDW,ECyDM,CACpB,ID1DqB,KC0DX,IACH,EAAK,IAAI,CAAC,GAAG,GAChB,WACA,GAAQ,OAAS,UACjB,EACA,GAAW,GACd,CACD,iBAAkB,EAClB,QAAS,CAAC,CAAE,YAAY,CAAC,CAAE,GACvB,EAAK,IAAI,CAAC,CAAE,KAAM,EAAqB,UAAW,UAAU,CAAQ,GACxE,iBAAkB,AAAC,IACf,GAAK,CAAD,CAEJ,OAAO,AADS,CADD,CACU,IAAI,CAAG,CADV,CACmB,SAAS,CAAG,EAAS,KAAK,CAClD,EAAS,IAAI,CAAG,OAAI,CACzC,CACJ,EDxEC,CAAA,EAAA,EAAA,YAAY,AAAZ,EACLL,EACA,OAH+B,EC0E/B,EAGA,OD7E0C,KAI1C,CCyEc,CAAC,EAAY,IACvB,CAAA,EAAA,EAAA,OAAA,AAAO,EACH,CAAC,eAAe,EAAE,mBAAmB,GAAI,UAAU,CAAC,CACpD,IAAI,gBAAgB,CAChB,KAAM,OAAO,GAAQ,MAAQ,GAC7B,UAAW,OAAO,GAAQ,WAAa,IACvC,KAAM,GAAQ,MAAQ,aAC1B,GAAG,QAAQ,GAEvB,EAGM,EAAc,CAAC,WAAW,uCACR,CACpB,KAAM,CAAE,IAAK,IAAM,CAAY,EAC/B,KAAM,CAAC,EAAmB,EAAgC,IACtD,CAAA,EAAA,EAAA,OAAA,AAAO,EAAO,CAAC,UAAU,EAAE,mBAAmB,GAAW,KAAK,CAAC,CAAE,CAC7D,OAAQ,OACR,KAAM,KAAK,SAAS,CAAC,QAAE,WAAQ,CAAS,EAC5C,EACR,oCErGA,IAAA,EAAA,EAAA,CAAA,CAAA,QAAA,EAAA,EAAA,CAAA,CAAA,QAAA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QAQA,IAAM+B,EAAO,CAAA,EAAA,EAAA,cAAA,AAAc,EAMzB,CACE3D,KAAM,eACNC,IAAK,cACLC,UAAW,QACXC,UAAW,GACf,GAYayD,EAAa,CACtB,GAAGD,CAAI,CAGPE,YAAa,IAAM,CAAA,EAAA,EAAA,OAAA,AAAO,EAAc,gBACxCC,WAAY,IACR,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,CACLC,SAAU,CAAC,cAAc,CACzBC,QAAS,IAAMJ,EAAWC,WAAW,GACrC1D,UAAW,GACf,CADmB,EAIvB8D,GAJ4B,GAIpBC,AAAD,GACH,CAAA,EAAA,EAAA,OAAO,AAAP,EAAsB,CAAC,aAAa,EAAEC,mBAAmBD,GAAI,MAAM,CAAC,CAAE,CAClEE,OAAQ,MACZ,GACJC,SAAU,AAACC,IACP,IAAMC,EAAK,CAAA,EAAA,EAAA,cAAA,AAAc,IACzB,MAAO,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,CACfC,WAAY,AAACN,GAAeN,EAAWK,KAAK,CAACC,GAC7CO,UAAW,AAACC,IACRH,EAAGI,iBAAiB,CAAC,CAAEZ,SAAUJ,EAAKiB,IAAI,CAACC,GAAG,EAAG,GACjDP,GAAMG,YAAYC,EACtB,EACAnD,QAAS,AAACuD,GAAeR,GAAM/C,UAAUuD,EAC7C,EACJ,EAMAC,YAAa,MACTb,EACAc,EACAV,KAEA,IAAMW,EAAM,MAAM,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,CAAC,aAAa,EAAEd,mBAAmBD,GAAI,MAAM,CAAC,CAAE,CACvEE,OAAQ,OACRc,QAAS,CAAEC,OAAQ,mBAAoB,EACvCC,OAAQd,GAAMc,MAClB,GACA,GAAI,CAACH,EAAII,IAAI,CAAE,MAAUC,AAAJ,MAAU,oBAE/B,IAAMC,EAASN,EAAII,IAAI,CAACG,SAAS,GAC3BC,EAAU,IAAIC,YAChBC,EAAM,GACNC,EAA4B,KAEhC,GAAI,CACA,MAAO,CAAM,CACT,GAAM,MAAEC,CAAI,OAAEC,CAAK,CAAE,CAAG,MAAMP,EAAOQ,IAAI,GACzC,GAAIF,EAAM,MAGV,IAAIK,EAAKP,CAFTA,GAAOF,EAAQO,MAAM,CAACF,EAAO,CAAEG,QAAQ,CAAK,EAAA,EAE/BE,OAAO,CAAC,QACrB,KAAc,CAAC,IAARD,GAAW,CACd,IAAME,EAAQT,EAAIU,KAAK,CAAC,EAAGH,GAC3BP,EAAMA,EAAIU,KAAK,CAACH,EAAK,GACrB,IAAMI,EAAWF,EAAMG,KAAK,CAAC,MAAMC,IAAI,CAAC,AAACC,GAAMA,EAAEC,UAAU,CAAC,WAC5D,GAAIJ,EACA,GAAI,CACA,IAFM,AAEAK,EAAKC,KAAKC,KAAK,CAACP,EAASD,KAAK,CAAC,IACrCrB,EAAQ2B,GACQ,WAAZA,EAAG3H,IAAI,CAAe4G,EAAOe,EAAGjC,MAAM,CACrB,UAAZiC,EAAG3H,IAAI,EAAgB2H,EAAGjC,MAAM,GAAEkB,EAAOe,EAAGjC,MAAAA,AAAM,CAC/D,CAAE,KAAM,CAA8B,CAE1CwB,EAAKP,EAAIQ,OAAO,CAAC,OACrB,CACJ,CACJ,QAAU,CACN,GAAI,CAAEZ,EAAOuB,WAAW,EAAG,CAAE,KAAM,CAAe,CACtD,CACA,OAAOlB,CACX,EACAmB,eAAgB,KACZ,IAAMxC,EAAK,CAAA,EAAA,EAAA,cAAA,AAAc,IACnB,CAACyC,EAAOC,EAAS,CAAG,EAAA,QAAc,CAAuB,MACzD,CAACC,EAAMC,EAAQ,CAAG,EAAA,QAAc,CAAW,EAAE,EAC7C,CAACC,EAAYC,EAAc,CAAG,EAAA,QAAc,EAAC,GAC7C,CAACC,EAAOC,EAAS,CAAG,EAAA,QAAc,CAAgB,MAClD,CAAChE,EAAQiE,EAAU,CAAG,EAAA,QAAc,CAAsB,MAC1DC,EAAW,EAAA,MAAY,CAAyB,MAEhDC,EAAQ,EAAA,WAAiB,CAAC,KAC5BT,EAAS,MACTE,EAAQ,EAAE,EACVI,EAAS,MACTC,EAAU,KACd,EAAG,EAAE,EAECG,EAAS,EAAA,WAAiB,CAAC,KAC7BF,EAASG,OAAO,EAAEC,QAClBJ,EAASG,OAAO,CAAG,KACnBP,GAAc,EAClB,EAAG,EAAE,EAECS,EAAM,EAAA,WAAiB,CACzB,MAAO5D,IACHwD,IACAL,GAAc,GACd,IAAMU,EAAO,IAAIC,gBACjBP,EAASG,OAAO,CAAGG,EACnB,GAAI,CACA,IAAME,EAAQ,MAAMrE,EAAWmB,WAAW,CACtCb,EACA,AAACyC,IACOA,AAAY,YAAT3H,IAAI,CAAciI,EAASN,EAAGK,KAAK,EACrB,QAAZL,EAAG3H,IAAI,CAAYmI,EAAQ,AAACe,GAAS,IAAIA,EAAMvB,EAAGwB,IAAI,CAAC,EACvDxB,AAAY,aAAT3H,IAAI,CAAewI,EAAUb,EAAGjC,MAAM,EAC7B,SAAS,CAArBiC,EAAG3H,IAAI,GACZuI,EAASZ,EAAGyB,OAAO,EACfzB,EAAGjC,MAAM,EAAE8C,EAAUb,EAAGjC,MAAM,EAE1C,EACA,CAAEU,OAAQ2C,EAAK3C,MAAM,AAAC,GAG1B,OADAb,EAAGI,iBAAiB,CAAC,CAAEZ,SAAUJ,EAAKiB,IAAI,CAACC,GAAG,EAAG,GAC1CoD,CACX,CAAE,MAAOnD,EAAK,CACV,IAAMuD,EAAMvD,aAAeQ,MAAQR,EAAIsD,OAAO,CAAGE,OAAOxD,GAExD,OADI,AAACiD,EAAK3C,MAAM,CAACmD,OAAO,EAAEhB,EAASc,GAC5B,IACX,QAAU,CACNhB,EAAc,IACdI,EAASG,OAAO,CAAG,IACvB,CACJ,EACA,CAACF,EAAOnD,EAAG,EAKf,OAFA,EAAA,SAAe,CAAC,IAAM,IAAMkD,EAASG,OAAO,EAAEC,QAAS,EAAE,EAElD,KAAEC,SAAKH,QAAQD,QAAOV,OAAOE,aAAME,EAAYE,eAAO/D,CAAO,CACxE,CACJ,mDCnJA,CAAA,CAAA,CAAA,CAAA,AAAM,CAAN,CAAM,CAAA,EAAS,CAAT,AAAS,CAAT,AAAS,CAAT,AAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAtBI,CAClC,AAqBwC,CApBtC,AAoBsC,CApBtC,AAoBsC,CApBtC,AAoBsC,CApBtC,AAoBsC,CApBtC,AAoBsC,CApBtC,AAoBsC,CApBtC,AAoBsC,CAnBtC,AAmBsC,CAlBpC,AAkBoC,CAlBpC,AAkB8C,CAAA,AAlB3C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACH,GAAA,CAAK,AAAL,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAET,CACA,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAA,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAa,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAC5C,wECTA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,OAEIiF,EAAc,SACd,CAACC,EAAqBC,EAAkB,CAAG,CAAA,EAAA,EAAA,kBAAA,AAAkB,EAACF,GAC9D,CAACG,EAAoBC,EAAiB,CAAGH,EAAoBD,GACjE,SAASK,EAAerK,CAAK,EAC3B,GAAM,eACJsK,CAAa,CACbC,QAASC,CAAW,CACpBC,UAAQ,gBACRC,CAAc,UACdC,CAAQ,MACRC,CAAI,MACJC,CAAI,iBACJC,CAAe,UACfC,CAAQ,CACRzD,QAAQ,IAAI,EACZ,mBAAmB,OACnB0D,CAA0B,CAC3B,CAAGhL,EACE,CAACuK,EAASU,EAAW,CAAG,CAAA,EAAA,EAAA,oBAAA,AAAoB,EAAC,CACjDC,KAAMV,EACNW,YAAaT,IAAkB,EAC/BU,SAAUN,EACVO,OAAQrB,CACV,GACM,CAACsB,EAASC,EAAW,CAAG,EAAA,QAAc,CAAC,MACvC,CAACC,EAAaC,EAAe,CAAG,EAAA,QAAc,CAAC,MAC/CC,EAAmC,EAAA,MAAY,EAAC,GAChDC,GAAgBL,GAAU,CAAC,CAACV,GAAQ,CAAC,CAACU,EAAQrK,OAAO,CAAC,QAItD2K,EAHJ,AAGc,CACdrB,qBACAU,WACAN,UACAW,aACAC,OACAV,OACAD,QACAtD,GAXiF,gCAYjFoE,WACAX,iBACAL,gBACAiB,EACAH,6BACAC,CACF,EACA,MAAuB,CAAhB,AAAgB,EAAA,EAAA,GAAA,AAAG,EAACtB,EAAoB,CAAE0B,CAA7B,KAAoCvB,EAAe,GAAGsB,CAAO,CAAEnB,SAAUqB,AA8KtF,AAAiB,OAAVxE,YA9K0F0D,EAA8BA,EAA2BY,GAAWnB,CAAS,EACvL,CACA,IAAIsB,EAAe,gBACfC,EAAgB,EAAA,UAAgB,CAClC,CAAC,eAAE1B,CAAa,CAAE2B,SAAO,CAAE,GAAGC,EAAa,CAAEvL,KAC3C,GAAM,OACJ2G,CAAK,CACLqD,UAAQ,SACRJ,CAAO,UACPQ,CAAQ,YACRQ,CAAU,YACVN,CAAU,kCACVS,CAAgC,eAChCC,CAAa,aACbH,CAAW,CACZ,CAAGpB,EAAiB2B,EAAczB,GAC7B6B,EAAe,CAAA,EAAA,EAAA,eAAA,AAAe,EAACxL,EAAc4K,GACnD,MAAuB,CAAhB,AAAgB,EAAA,EAAA,GAAA,AAAG,EACxB,EAAA,EADkB,OACT,CAACa,MAAM,CAChB,CACE5L,KAAM,SACN6L,KAAM,SACN,eAAgB9B,EAChB,gBAAiBQ,EACjB,aAAcuB,EAAS/B,GACvB,gBAAiBI,EAAW,GAAK,KAAK,WACtCA,EACArD,QACA,GAAG4E,CAAW,CACdrL,IAAKsL,EACLF,QAAS,CAAA,EAAA,EAAA,oBAAA,AAAoB,EAACA,EAAS,AAAClL,IACtCkK,EAAW,AAACsB,GAAgB,CAACA,GACzBf,GAAeG,IACjBD,EAAiCtC,OAAO,CAAGrI,CADX,CACiByL,oBAAoB,GACjE,AAACd,EAAiCtC,OAAO,EAAErI,EAAM0L,eAAe,GAExE,EACF,EAEJ,EAEFT,GAAc3K,WAAW,CAAG0K,EAC5B,IAAIW,EAAS,EAAA,UAAgB,CAC3B,CAAC1M,EAAOW,KACN,GAAM,eACJ2J,CAAa,MACbO,CAAI,SACJN,CAAO,gBACPG,CAAc,UACdK,CAAQ,CACRJ,UAAQ,OACRrD,CAAK,CACLwD,iBAAe,MACfF,CAAI,CACJ,GAAGsB,EACJ,CAAGlM,EACJ,MAAuB,CAAhB,AAAgB,EAAA,EAAA,GAAA,AAAG,EACxBqK,EACA,EAFkB,aAGhBC,UACAC,EACAG,0BACAC,WACAI,kBACAD,OACAD,OACAD,QACAtD,EACA0D,2BAA4B,CAAC,eAAEW,CAAa,CAAE,GAAqB,AAAhB,CAAgB,EAAA,EAAA,IAAA,AAAI,EAAC,EAAA,AAAR,QAAgB,CAAE,CAAElB,SAAU,CAC5E,CAAA,EAAA,EAAA,GAAG,AAAH,EACduB,EACA,CACE,GAAGE,CAAW,CACdrL,IAAKF,gBACL2J,CACF,GAEFqB,GAAiC,CAAA,EAAA,EAAA,GAAG,AAAH,EAC/BgB,EACA,EAFe,aAAa,AAG1BrC,CACF,GAEF,AAAD,EACH,EAEJ,GAEFoC,EAAOrL,WAAW,CAAG2I,EACrB,IAAI4C,EAAa,cACbC,EAAc,EAAA,UAAgB,CAChC,CAAC7M,EAAOW,KACN,GAAM,eAAE2J,CAAa,CAAE,GAAGwC,EAAY,CAAG9M,EACnC4L,EAAUxB,EAAiBwC,EAAYtC,GAC7C,MAAuB,CAAhB,AAAgB,EAAA,EAAA,GAAA,AAAG,EACxB,EAAA,EADkB,OACT,CAACyC,IAAI,CACd,CACE,aAAcT,EAASV,EAAQrB,OAAO,EACtC,gBAAiBqB,EAAQjB,QAAQ,CAAG,GAAK,KAAK,EAC9C,GAAGmC,CAAU,CACbjM,IAAKF,CACP,EAEJ,GAEFkM,EAAYxL,WAAW,CAAGuL,EAC1B,IAAII,EAAoB,oBACpBL,EAAoB,EAAA,UAAgB,CACtC,CAAC,eAAErC,CAAa,CAAE,GAAGtK,EAAO,CAAEW,KAC5B,GAAM,SACJ2K,CAAO,kCACPI,CAAgC,SAChCnB,CAAO,gBACPG,CAAc,UACdK,CAAQ,UACRJ,CAAQ,MACRE,CAAI,OACJvD,CAAK,MACLsD,CAAI,aACJY,CAAW,gBACXC,CAAc,CACf,CAAGrB,EAAiB4C,EAAmB1C,GAClC6B,EAAe,CAAA,EAAA,EAAA,eAAA,AAAe,EAACxL,EAAc8K,GAC7Cc,EAAc,CAAA,EAAA,EAAA,WAAA,AAAW,EAAChC,GAC1B0C,EAAc,CAAA,EAAA,EAAA,OAAA,AAAO,EAAC3B,GAC5B,EAAA,SAAe,CAAC,KAEd,GAAI,CAAC4B,EAAO,OAMZ,IAAMjC,EAJauC,AAIAD,OAJOE,wBAAwB,CAD/BL,AAEjBD,OAFwBE,gBAAgB,CAACC,SAAS,CAGlD,WAE4BI,GAAG,CAC3BC,EAAU,CAACjC,EAAiCtC,OAAO,CACzD,GAAImD,IAAgBhC,GAAWU,EAAY,CACzC,IAAMlK,EAAQ,IAAI6M,MAAM,QAAS,CAAED,SAAQ,GAC3C1C,EAAW4C,IAAI,CAACX,EAAO3C,GACvB2C,AAZY1B,EAYNsC,aAAa,CAAC/M,EACtB,CACF,EAAG,CAACyK,EAAae,EAAahC,EAASmB,EAAiC,EACxE,IAAMqC,EAAoB,EAAA,MAAY,CAACxD,GACvC,MAAuB,CAAhB,AAAgB,EAAA,EAAA,GAAG,AAAH,EACrB,EAAA,EADkB,OACT,CAAC2C,KAAK,CACf,CACE1M,KAAM,WACN,eAAe,EACfkK,eAAgBA,GAAkBqD,EAAkB3E,OAAO,UAC3D2B,WACAJ,OACAE,QACAvD,OACAsD,EACA,GAAG5K,CAAK,CACRgO,SAAU,CAAC,EACXnN,IAAKsL,EACLnJ,MAAO,CACL,GAAGhD,EAAMgD,KAAK,CACd,GAAGiK,CAAW,CACdgB,SAAU,WACVC,cAAe,OACfC,QAAS,EACTC,OAAQ,EAIRC,UAAW,mBACb,CACF,EAEJ,GAMF,SAAS/B,EAAS/B,CAAO,EACvB,OAAOA,EAAU,UAAY,WAC/B,CANAoC,EAAkBtL,WAAW,CAAG2L,EClOhC,IAAA,EAAA,EAAA,CAAA,CAAA,wBAEA,SAAS,AAAO,WACd,CAAS,CACT,GAAG,EAC+C,EAClD,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CACC,YAAU,SACV,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EACX,4WACA,GAED,GAAG,CAAK,UAET,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CACC,YAAU,eACV,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EACX,+QAKV,sDC1BA,EAAA,EAAA,CAAA,CAAA,0BAEA,SAASsB,AAAS,WAAEvO,CAAS,CAAE,GAAGC,EAAyC,EACzE,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,WAAA,CACC,YAAU,WACVD,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EACX,scACAA,GAED,GAAGC,CAAK,EAGf,+CCfA,EAAA,EAAA,CAAA,CAAA,0BAEA,SAASuO,AAAS,WAAExO,CAAS,CAAE,GAAGC,EAAoC,EACpE,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CACC,YAAU,WACVD,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,qCAAsCA,GACnD,GAAGC,CAAK,EAGf,0DESM,EAAA,CAAA,EAAY,CAAA,CAAA,CAAA,CAAA,AAAZ,CAAA,AAAY,CAAZ,AAAY,CAAA,CAAA,CAAA,CAAA,CAAiB,AAAjB,CAAiB,AAAjB,CAAA,AAAiB,CAAjB,AAAiB,CAAjB,AAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAf3C,AAe2C,CAf3C,ADAD,CCAC,ADAD,6BCAkC,CDAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,+DAgBjD,CAAA,CAAA,CAAA,CAAA,AAAM,CAAN,CAAM,CAAA,EAAA,AAAQ,CAAR,AAAQ,CAAR,AAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAiB,CAAjB,AAAiB,CAAjB,AAAiB,CAAjB,AAAiB,CAAjB,AAAiB,CAAA,CAAA,CAAA,CAjBK,CAiBI,CAAA,AAhBrC,CCAA,ADgBqC,CChBrC,ADgBqC,CChBrC,ADgBqC,CChBrC,ADgBqC,CChBrC,ADgBqC,CChBrC,ADgBqC,CChBrC,ADgBqC,CAAA,CAhB3B,AAgBqC,CAAA,AAhBrC,AAAE,GAAI,CCAH,ADAG,CCAH,ADAG,CCAH,ADAG,CCAH,ADAG,CCAH,GDAa,CCAb,CAAA,CAAA,CAAA,ADAa,CAAM,CCAD,ADAC,CAAG,ACAJ,KDAU,CCAL,CAAA,CDAK,CAAK,QAAA,CAAU,CAAA,CACzD,CAAC,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CAAA,ACAA,CDAA,ACAA,CAAA,ADAA,CCAA,ADAA,CAAU,EAAA,kDAAsD,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAChF,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAA,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAY,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAC3C,CCYA,CAAA,CAAA,CAAA,mECjBA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,QAAA,EAAA,EAAA,CAAA,CAAA,QAAA,EAAA,EAAA,CAAA,CAAA,QAAA,EAAA,EAAA,CAAA,CAAA,QAAA,EAAA,EAAA,CAAA,CAAA,QAAA,EAAA,EAAA,CAAA,CAAA,QAAA,EAAA,EAAA,CAAA,CAAA,QASA,EAAA,EAAA,CAAA,CAAA,QAEA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QAGA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QA8PA,SAASqQ,IACL,MACI,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAItQ,UAAU,kCACX,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIA,UAAU,0DACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CAACA,UAAU,aACpB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,IAAI,CAAA,CAACA,UAAU,sBACZ,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIA,UAAU,oCACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CAACA,UAAU,yBACpB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIA,UAAU,6BACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CAACA,UAAU,aACpB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CAACA,UAAU,qBAIhC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CAACA,UAAU,wBAIpC,kBAxQe,SAASyO,EACpB,IAAMC,EAAS,CAAA,EAAA,EAAA,SAAA,AAAS,IAClBC,EAAS,CAAA,EAAA,EAAA,SAAS,AAAT,IACTC,EAAOC,mBAAmB9E,OAAO2E,EAAO5D,IAAI,EAAI,KAEhD,MAAEgE,CAAI,CAAE,CAAG,CAAA,EAAA,EAAA,OAAO,AAAP,IACXC,EAAUD,GAAMxC,OAAS,QAEzB,CAAEpH,KAAM8J,CAAQ,CAAEC,UAAWC,CAAiB,CAAE,CAAG,EAAA,SAAS,CAACC,MAAM,CAACP,GACpE,CAAE1J,KAAM1D,CAAM,CAAEyN,UAAWG,CAAe,CAAE,CAAG,EAAA,SAAS,CAACC,SAAS,CAACT,GAEnE,CAACU,EAAUC,EAAY,CAAG,EAAA,QAAc,CAAkB,MAC1D,CAACC,EAAaC,EAAe,CAAG,EAAA,QAAc,CAAmB,CACnEC,MAAM,EACNC,KAAM,SACNC,MAAO,IACX,GAEMC,EAAkB,EAAA,SAAS,CAACC,SAAS,CAAC,CACxC5J,UAAW,IAAM,EAAA,KAAK,CAAC6J,OAAO,CAAC,wBAC/B/M,QAAU+F,AAAD,GAAW,EAAA,KAAK,CAACA,KAAK,CAAC,CAAC,gBAAgB,EAAEA,EAAMc,OAAO,CAAA,CAAE,CACtE,GAEMmG,EAAgB,EAAA,SAAS,CAAClK,QAAQ,CAAC8I,EAAM,CAC3C1I,UAAYQ,AAAD,IACHA,EAAIuJ,EAAE,CACN,EAAA,KAAK,CAACF,OAAO,CACT,CAAC,OAAO,EAAoB,MAAlBrJ,EAAIwJ,UAAU,CAAW,CAAC,EAAE,EAAExJ,EAAIwJ,UAAU,CAAC,GAAG,CAAC,CAAG,GAAA,CAAI,EAErE,EAAA,KAAK,CAACnH,KAAK,CAAC,CAAC,MAAM,EAAErC,EAAIqC,KAAK,EAAI,UAAA,CAAW,CACtD,EACA/F,QAAS,AAACmN,GAAM,EAAA,KAAK,CAACpH,KAAK,CAAC,CAAC,qBAAqB,EAAEoH,EAAEtG,OAAO,CAAA,CAAE,CACnE,GAEMuG,EAAiB,EAAA,MAAS,CAACC,SAAS,CAAC,CACvCnK,UAAW,KACP,EAAA,KAAK,CAAC6J,OAAO,CAAC,iBACdR,EAAY,KAChB,EACAvM,QAAS,AAACmN,GAAM,EAAA,KAAK,CAACpH,KAAK,CAACoH,EAAEtG,OAAO,EAAI,gBAC7C,GAEA,GAAIqF,EACA,MAAO,CAAA,EAAA,EAAA,GAAA,EAACoB,CADW,CACXA,CAAAA,GAGZ,GAAI,CAACtB,EACD,MACI,CAAA,CAFO,CAEP,EAAA,IAAA,EAAC,MAAA,CAAIhP,UAAU,qEACX,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGA,UAAU,iCAAwB,uBACtC,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,MAAM,CAAA,CAACkM,QAAS,IAAMyC,EAAO4B,IAAI,CAAC,cAAeC,KAAK,eACnD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,CAACxQ,UAAU,iBAAiB,0BAOtD,IAAMyQ,EAAUjP,GAAQkP,OAAO,AAACC,GAAM,CAACA,EAAEC,aAAa,EAAEC,QAAU,EAC5DC,EAAkBtP,GAAQkP,OAAO,AAACC,GAAMA,EAAEC,aAAa,EAAEC,QAAU,EACnEE,EAAcvP,GAAQqP,QAAU,EAEtC,MACI,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI7Q,UAAU,kCACX,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIA,UAAU,0DACX,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACGkM,QAAS,IAAMyC,EAAO4B,IAAI,CAAC,cAC3BvQ,UAAU,+FAEV,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,WAAW,CAAA,CAACA,UAAU,YAAY,eAKvC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,IAAI,CAAA,CAACA,UAAU,sBACZ,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIA,UAAU,mCACX,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIA,UAAU,mFACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,YAAY,CAAA,CACTkC,aAAc8M,EAASgC,aAAa,CACpChR,UAAU,UACVmC,MAAO,GACPC,OAAQ,OAGhB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIpC,UAAU,qCACX,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIA,UAAU,6DACX,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CACGA,UAAU,wDACViR,MAAOjC,EAASgC,aAAa,UAE5BhC,EAASgC,aAAa,GAE3B,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIhR,UAAU,uDACVgP,EAASkC,UAAU,EAChB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAACC,QAAQ,UAAUX,KAAK,KAAKY,OAAO,CAAA,CAAA,WACvC,CAAA,EAAA,EAAA,IAAA,EAAC,IAAA,CAAEC,KAAMrC,EAASkC,UAAU,CAAEjQ,OAAO,SAASqQ,IAAI,uBAC9C,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAACtR,UAAU,uBAAuB,cAKnDgP,EAASuC,aAAa,EACnB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAACJ,QAAQ,UAAUX,KAAK,KAAKY,OAAO,CAAA,CAAA,WACvC,CAAA,EAAA,EAAA,IAAA,EAAC,IAAA,CAAEC,KAAMrC,EAASuC,aAAa,CAAEtQ,OAAO,SAASqQ,IAAI,uBACjD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CAACtR,UAAU,uBAAuB,YAKtDgP,EAASwC,gBAAgB,EACtB,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,MAAM,CAAA,CACHL,QAAQ,UACRX,KAAK,KACLtE,QAAS,IAAM8D,EAAcyB,MAAM,GACnC7G,SAAUoF,EAAc0B,SAAS,CACjCT,MAAM,gDAEN,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CACLjR,UAAW,CAAC,mBAAmB,EAAEgQ,EAAc0B,SAAS,CAAG,gBAAkB,GAAA,CAAI,GACnF,WAIV,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,MAAM,CAAA,CACHP,QAAQ,UACRX,KAAK,KACLtE,QAAS,IAAM2D,EAAgB4B,MAAM,GACrC7G,SAAUiF,EAAgB6B,SAAS,WAEnC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CACP1R,UAAW,CAAC,mBAAmB,EAAE6P,EAAgB6B,SAAS,CAAG,eAAiB,GAAA,CAAI,GACpF,mBAKd,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI1R,UAAU,gDACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,kBAAkB,CAAA,CAACgP,SAAUA,EAAUwB,KAAK,OAC5CxB,EAAS2C,UAAU,EAA4B,WAAxB3C,EAAS2C,UAAU,EACvC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CACFR,QAAQ,UACRnR,UAAU,8DAETgP,EAAS2C,UAAU,CAAClP,OAAO,CAAC,UAAW,YAGhD,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAKzC,UAAU,0CACX+Q,EAAY,SAAuB,IAAhBA,EAAoB,GAAK,IAAI,KAAG,IACnDD,EAAgB,gBAAc,IAC9BL,EAAQ,YAAsB,IAAZA,EAAgB,GAAK,UAG/CzB,EAAS4C,KAAK,EACX,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI5R,UAAU,qFACX,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKA,UAAU,uEAA8D,aAG9E,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKA,UAAU,sCAA8BgP,EAAS4C,KAAK,cAQhF,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI5R,UAAU,sBACX,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIA,UAAU,oDACX,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGA,UAAU,gDAAuC,WACpD+O,GACG,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,MAAM,CAAA,CACHyB,KAAK,KACLW,QAAQ,YACRjF,QAAS,IACLuD,EAAe,CACXC,KAAM,GACNC,KAAM,SACNC,MAAO,IACX,aAGJ,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,IAAI,CAAA,CAAC5P,UAAU,qBAAqB,kBAMhDoP,EACG,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIpP,UAAU,qDACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CAACA,UAAU,wBAExBwB,GAAUA,EAAOqP,MAAM,CAAG,EAC1B,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI7Q,UAAU,+DACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,WAAW,CAAA,CACRwB,OAAQA,EACRqQ,OAAQ9C,EAAU,AAAC4B,GACflB,EAAe,CACXC,MAAM,EACNC,KAAMgB,EAAEC,aAAa,CAAG,SAAW,OACnChB,MAAOe,CACX,QAAKmB,EACTC,SAAUhD,EAAUQ,OAAcuC,MAI1C,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI9R,UAAU,8DACX,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEA,UAAU,8CAAqC,4CAGlD,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,MAAM,CAAA,CACHmR,QAAQ,UACRX,KAAK,KACLtE,QAAS,IAAM2D,EAAgB4B,MAAM,GACrC7G,SAAUiF,EAAgB6B,SAAS,WAEnC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CACP1R,UAAW,CAAC,iBAAiB,EAAE6P,EAAgB6B,SAAS,CAAG,eAAiB,GAAA,CAAI,GAClF,0BAOlB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,aAAa,CAAA,CACVhC,KAAM,CAAC,CAACJ,EACR0C,aAAc,AAACC,GAAM,CAACA,GAAK1C,EAAY,MACvC0B,MAAM,gBACNiB,YAAa,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WAAE,sCAAmC,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,UAAG5C,GAAUxE,OAAS,8BACzEqH,aAAa,SACbC,WAAW,CAAA,CAAA,EACXnD,UAAWmB,EAAesB,SAAS,CACnCW,UAAW,IAAM/C,GAAYc,EAAeqB,MAAM,CAACnC,EAAS3J,EAAE,IAGlE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,eAAe,CAAA,CACZ+J,KAAMF,EAAYE,IAAI,CACtBsC,aAAetC,AAAD,GAAUD,EAAe,AAAC6C,IAAM,AAAC,CAAE,GAAGA,CAAC,MAAE5C,EAAK,CAAC,EAC7DC,KAAMH,EAAYG,IAAI,CACtBC,MAAOJ,EAAYI,KAAK,CACxB2C,kBAAmBvD,EAASrJ,EAAE,OAKlD","ignoreList":[5,10,11,13,15,16,20,21]}
@@ -0,0 +1,3 @@
1
+ module.exports=[812213,a=>{"use strict";var b=a.i(941579),c=a.i(774684),d=class extends b.QueryObserver{constructor(a,b){super(a,b)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(a){a._type="infinite",super.setOptions(a)}getOptimisticResult(a){return a._type="infinite",super.getOptimisticResult(a)}fetchNextPage(a){return this.fetch({...a,meta:{fetchMore:{direction:"forward"}}})}fetchPreviousPage(a){return this.fetch({...a,meta:{fetchMore:{direction:"backward"}}})}createResult(a,b){let{state:d}=a,e=super.createResult(a,b),{isFetching:f,isRefetching:g,isError:h,isRefetchError:i}=e,j=d.fetchMeta?.fetchMore?.direction,k=h&&"forward"===j,l=f&&"forward"===j,m=h&&"backward"===j,n=f&&"backward"===j;return{...e,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:(0,c.hasNextPage)(b,d.data),hasPreviousPage:(0,c.hasPreviousPage)(b,d.data),isFetchNextPageError:k,isFetchingNextPage:l,isFetchPreviousPageError:m,isFetchingPreviousPage:n,isRefetchError:i&&!k&&!m,isRefetching:g&&!l&&!n}}},e=a.i(36339),f=a.i(937927),g=a.i(349682),h=a.i(262477);let i=(0,g.defineResource)({path:"/conversations",key:"conversations",paramsOf:a=>({page:a.page??1,page_size:a.page_size??20,sort:a.sort??"-updated_at",keyword:a.keyword}),staleTime:6e4}),j={...i,updateTitle:(a,b)=>i.update(a,{title:b}),messagesCacheKey:function(a,b){return[...i.keys.one(a),"messages-cache",b]},useInvalidateList:()=>{let a=(0,f.useQueryClient)();return()=>a.invalidateQueries({queryKey:i.keys.all(),predicate:a=>{let b=a.queryKey;return b.length>=2&&("list"===b[1]||"infinite"===b[1])}})},useInfinite:a=>{var b;let c=a?.pageSize??20,f=a?.keyword?.trim()||void 0;return b={queryKey:[...i.keys.all(),"infinite",a?.scope??"default",c,f??""],initialPageParam:1,queryFn:({pageParam:a=1})=>i.list({page:a,page_size:c,keyword:f}),getNextPageParam:a=>{if(a)return a.page*a.page_size<a.total?a.page+1:void 0}},(0,e.useBaseQuery)(b,d,void 0)},listMessages:(a,b)=>(0,h.fetcher)(`/conversations/${encodeURIComponent(a)}/messages?`+new URLSearchParams({page:String(b?.page??1),page_size:String(b?.page_size??50),sort:b?.sort??"-created_at"}).toString())},k=["messages"];a.s(["conversations",0,j,"messages",0,{keys:{all:()=>k},rate:(a,b,c)=>(0,h.fetcher)(`/messages/${encodeURIComponent(a)}/rate`,{method:"POST",body:JSON.stringify({rating:b,feedback:c})})}],812213)},339220,a=>{"use strict";var b=a.i(370025),c=a.i(433217),d=a.i(937927),e=a.i(572131),f=a.i(349682),g=a.i(262477);let h=(0,f.defineResource)({path:"/mcp/servers",key:"mcp-servers",listShape:"array",staleTime:6e4}),i={...h,listPresets:()=>(0,g.fetcher)("/mcp/presets"),usePresets:()=>(0,c.useQuery)({queryKey:["mcp-presets"],queryFn:()=>i.listPresets(),staleTime:3e5}),check:a=>(0,g.fetcher)(`/mcp/servers/${encodeURIComponent(a)}/check`,{method:"POST"}),useCheck:a=>{let c=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:a=>i.check(a),onSuccess:b=>{c.invalidateQueries({queryKey:h.keys.all()}),a?.onSuccess?.(b)},onError:b=>a?.onError?.(b)})},checkStream:async(a,b,c)=>{let d=await (0,g.rawFetch)(`/mcp/servers/${encodeURIComponent(a)}/check`,{method:"POST",headers:{Accept:"text/event-stream"},signal:c?.signal});if(!d.body)throw Error("No response body");let e=d.body.getReader(),f=new TextDecoder,h="",i=null;try{for(;;){let{done:a,value:c}=await e.read();if(a)break;let d=(h+=f.decode(c,{stream:!0})).indexOf("\n\n");for(;-1!==d;){let a=h.slice(0,d);h=h.slice(d+2);let c=a.split("\n").find(a=>a.startsWith("data: "));if(c)try{let a=JSON.parse(c.slice(6));b(a),"result"===a.type?i=a.server:"error"===a.type&&a.server&&(i=a.server)}catch{}d=h.indexOf("\n\n")}}}finally{try{e.releaseLock()}catch{}}return i},useCheckStream:()=>{let a=(0,d.useQueryClient)(),[b,c]=e.useState(null),[f,g]=e.useState([]),[j,k]=e.useState(!1),[l,m]=e.useState(null),[n,o]=e.useState(null),p=e.useRef(null),q=e.useCallback(()=>{c(null),g([]),m(null),o(null)},[]),r=e.useCallback(()=>{p.current?.abort(),p.current=null,k(!1)},[]),s=e.useCallback(async b=>{q(),k(!0);let d=new AbortController;p.current=d;try{let e=await i.checkStream(b,a=>{"phase"===a.type?c(a.phase):"log"===a.type?g(b=>[...b,a.line]):"result"===a.type?o(a.server):"error"===a.type&&(m(a.message),a.server&&o(a.server))},{signal:d.signal});return a.invalidateQueries({queryKey:h.keys.all()}),e}catch(b){let a=b instanceof Error?b.message:String(b);return d.signal.aborted||m(a),null}finally{k(!1),p.current=null}},[q,a]);return e.useEffect(()=>()=>p.current?.abort(),[]),{run:s,cancel:r,reset:q,phase:b,logs:f,isChecking:j,error:l,result:n}}};a.s(["mcpServers",0,i])},699464,a=>{"use strict";let b=(0,a.i(883706).default)("pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);a.s(["Pencil",0,b],699464)},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})}])},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)}];
2
+
3
+ //# sourceMappingURL=_0qo9tx1._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../node_modules/%40tanstack/react-query/build/modern/useInfiniteQuery.js","../../../../lib/api/conversations.ts","../../../../node_modules/%40tanstack/query-core/build/modern/infiniteQueryObserver.js","../../../../lib/api/mcp.ts","../../../../node_modules/lucide-react/src/icons/pencil.ts","../../../../node_modules/%40radix-ui/react-switch/dist/index.mjs","../../../../components/ui/switch.tsx","../../../../components/ui/textarea.tsx","../../../../components/ui/data-table.tsx","../../../../node_modules/lucide-react/src/icons/inbox.ts"],"sourcesContent":["\"use client\";\n\n// src/useInfiniteQuery.ts\nimport { InfiniteQueryObserver } from \"@tanstack/query-core\";\nimport { useBaseQuery } from \"./useBaseQuery.js\";\nfunction useInfiniteQuery(options, queryClient) {\n return useBaseQuery(\n options,\n InfiniteQueryObserver,\n queryClient\n );\n}\nexport {\n useInfiniteQuery\n};\n//# sourceMappingURL=useInfiniteQuery.js.map","\"use client\";\nimport { useInfiniteQuery, useQueryClient } from \"@tanstack/react-query\";\nimport { defineResource } from \"./resource\";\nimport { fetcher } from \"./client\";\nimport type { Paginated } from \"@/lib/schemas/common\";\nimport type { ConversationDTO, MessageDTO } from \"@/lib/schemas/conversation\";\n\nconst base = defineResource<\n ConversationDTO,\n never,\n { title: string },\n { page?: number; page_size?: number; sort?: string; keyword?: string },\n Paginated<ConversationDTO>\n>({\n path: \"/conversations\",\n key: \"conversations\",\n paramsOf: (q) => ({\n page: q.page ?? 1,\n page_size: q.page_size ?? 20,\n sort: q.sort ?? \"-updated_at\",\n keyword: q.keyword,\n }),\n // List + get are read-mostly; users rarely care about millisecond\n // freshness here. 60s lets nav back to the sidebar / chat skip\n // a network round-trip — mutations explicit-invalidate anyway.\n staleTime: 60_000,\n});\n\n/** Cache key for the initial page of messages of a single conversation.\n * Lives under the conversation resource so it gets gc'd if the resource\n * is gc'd, but is isolated from list/infinite queries so we can invalidate\n * list-only without dropping the message cache. */\nexport function messagesCacheKey(conversationId: string, pageSize: number) {\n return [...base.keys.one(conversationId), \"messages-cache\", pageSize] as const;\n}\n\nexport const conversations = {\n ...base,\n\n // ---- shorthand: title-only update ----\n updateTitle: (id: string, title: string) => base.update(id, { title }),\n\n // ---- shared message cache key (used by usePaginatedMessages / sync) ----\n messagesCacheKey,\n\n /** Invalidate only the conversation LIST queries (list/infinite),\n * leaving the per-conversation messages cache intact. */\n useInvalidateList: () => {\n const qc = useQueryClient();\n return () => qc.invalidateQueries({\n queryKey: base.keys.all(),\n predicate: (q) => {\n const k = q.queryKey as readonly unknown[];\n return k.length >= 2 && (k[1] === \"list\" || k[1] === \"infinite\");\n },\n });\n },\n\n // ---- infinite scroll variant of useList ----\n useInfinite: (params?: { pageSize?: number; scope?: string; keyword?: string }) => {\n const pageSize = params?.pageSize ?? 20;\n const keyword = params?.keyword?.trim() || undefined;\n return useInfiniteQuery({\n queryKey: [\n ...base.keys.all(),\n \"infinite\",\n params?.scope ?? \"default\",\n pageSize,\n keyword ?? \"\",\n ] as const,\n initialPageParam: 1,\n queryFn: ({ pageParam = 1 }) =>\n base.list({ page: pageParam as number, page_size: pageSize, keyword }),\n getNextPageParam: (lastPage) => {\n if (!lastPage) return undefined;\n const hasMore = lastPage.page * lastPage.page_size < lastPage.total;\n return hasMore ? lastPage.page + 1 : undefined;\n },\n });\n },\n\n // ---- nested: messages under a conversation ----\n listMessages: (id: string, params?: { page?: number; page_size?: number; sort?: string }) =>\n fetcher<Paginated<MessageDTO>>(\n `/conversations/${encodeURIComponent(id)}/messages?` +\n new URLSearchParams({\n page: String(params?.page ?? 1),\n page_size: String(params?.page_size ?? 50),\n sort: params?.sort ?? \"-created_at\",\n }).toString(),\n ),\n};\n\n// Messages are a sibling resource only used for rating today.\nconst messagesKey = [\"messages\"] as const;\nexport const messages = {\n keys: { all: () => messagesKey },\n rate: (messageId: string, rating: \"up\" | \"down\" | \"none\", feedback?: string) =>\n fetcher<null>(`/messages/${encodeURIComponent(messageId)}/rate`, {\n method: \"POST\",\n body: JSON.stringify({ rating, feedback }),\n }),\n};\n","// src/infiniteQueryObserver.ts\nimport { QueryObserver } from \"./queryObserver.js\";\nimport { hasNextPage, hasPreviousPage } from \"./infiniteQueryBehavior.js\";\nvar InfiniteQueryObserver = class extends QueryObserver {\n constructor(client, options) {\n super(client, options);\n }\n bindMethods() {\n super.bindMethods();\n this.fetchNextPage = this.fetchNextPage.bind(this);\n this.fetchPreviousPage = this.fetchPreviousPage.bind(this);\n }\n setOptions(options) {\n options._type = \"infinite\";\n super.setOptions(options);\n }\n getOptimisticResult(options) {\n options._type = \"infinite\";\n return super.getOptimisticResult(options);\n }\n fetchNextPage(options) {\n return this.fetch({\n ...options,\n meta: {\n fetchMore: { direction: \"forward\" }\n }\n });\n }\n fetchPreviousPage(options) {\n return this.fetch({\n ...options,\n meta: {\n fetchMore: { direction: \"backward\" }\n }\n });\n }\n createResult(query, options) {\n const { state } = query;\n const parentResult = super.createResult(query, options);\n const { isFetching, isRefetching, isError, isRefetchError } = parentResult;\n const fetchDirection = state.fetchMeta?.fetchMore?.direction;\n const isFetchNextPageError = isError && fetchDirection === \"forward\";\n const isFetchingNextPage = isFetching && fetchDirection === \"forward\";\n const isFetchPreviousPageError = isError && fetchDirection === \"backward\";\n const isFetchingPreviousPage = isFetching && fetchDirection === \"backward\";\n const result = {\n ...parentResult,\n fetchNextPage: this.fetchNextPage,\n fetchPreviousPage: this.fetchPreviousPage,\n hasNextPage: hasNextPage(options, state.data),\n hasPreviousPage: hasPreviousPage(options, state.data),\n isFetchNextPageError,\n isFetchingNextPage,\n isFetchPreviousPageError,\n isFetchingPreviousPage,\n isRefetchError: isRefetchError && !isFetchNextPageError && !isFetchPreviousPageError,\n isRefetching: isRefetching && !isFetchingNextPage && !isFetchingPreviousPage\n };\n return result;\n }\n};\nexport {\n InfiniteQueryObserver\n};\n//# sourceMappingURL=infiniteQueryObserver.js.map","\"use client\"\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\"\nimport * as React from \"react\"\nimport { defineResource } from \"./resource\"\nimport { fetcher, rawFetch } from \"./client\"\nimport type {\n McpPreset,\n McpServerCreateInput,\n McpServerDTO,\n McpServerUpdateInput,\n} from \"@/lib/schemas/mcp\"\n\nconst base = defineResource<\n McpServerDTO,\n McpServerCreateInput,\n McpServerUpdateInput,\n Record<string, unknown>,\n McpServerDTO[]\n>({\n path: \"/mcp/servers\",\n key: \"mcp-servers\",\n listShape: \"array\",\n staleTime: 60_000,\n})\n\n/** Wire shape — mirrors lib/server/mcp/checks.ts McpCheckEvent so\n * adding a new phase/log channel is a one-place edit on each side. */\nexport type McpCheckPhase = \"spawning\" | \"starting\" | \"connecting\" | \"listing\" | \"ready\"\n\nexport type McpCheckEvent =\n | { type: \"phase\"; phase: McpCheckPhase }\n | { type: \"log\"; line: string }\n | { type: \"result\"; server: McpServerDTO }\n | { type: \"error\"; message: string; server?: McpServerDTO }\n\nexport const mcpServers = {\n ...base,\n\n // ---- presets ----\n listPresets: () => fetcher<McpPreset[]>(\"/mcp/presets\"),\n usePresets: () =>\n useQuery({\n queryKey: [\"mcp-presets\"] as const,\n queryFn: () => mcpServers.listPresets(),\n staleTime: 5 * 60 * 1000,\n }),\n\n // ---- check (one-shot JSON, kept for back-compat) ----\n check: (id: string) =>\n fetcher<McpServerDTO>(`/mcp/servers/${encodeURIComponent(id)}/check`, {\n method: \"POST\",\n }),\n useCheck: (opts?: { onSuccess?: (server: McpServerDTO) => void; onError?: (err: Error) => void }) => {\n const qc = useQueryClient()\n return useMutation({\n mutationFn: (id: string) => mcpServers.check(id),\n onSuccess: (server) => {\n qc.invalidateQueries({ queryKey: base.keys.all() })\n opts?.onSuccess?.(server)\n },\n onError: (err: Error) => opts?.onError?.(err),\n })\n },\n\n // ---- check (SSE stream) ----\n /** Streams every phase + stderr line from the server check, then\n * resolves with the final DTO. Caller's onEvent is invoked for\n * every event including the terminating `result` / `error`. */\n checkStream: async (\n id: string,\n onEvent: (ev: McpCheckEvent) => void,\n opts?: { signal?: AbortSignal },\n ): Promise<McpServerDTO | null> => {\n const res = await rawFetch(`/mcp/servers/${encodeURIComponent(id)}/check`, {\n method: \"POST\",\n headers: { Accept: \"text/event-stream\" },\n signal: opts?.signal,\n })\n if (!res.body) throw new Error(\"No response body\")\n\n const reader = res.body.getReader()\n const decoder = new TextDecoder()\n let buf = \"\"\n let last: McpServerDTO | null = null\n\n try {\n while (true) {\n const { done, value } = await reader.read()\n if (done) break\n buf += decoder.decode(value, { stream: true })\n // SSE frames are separated by \\n\\n.\n let nl = buf.indexOf(\"\\n\\n\")\n while (nl !== -1) {\n const frame = buf.slice(0, nl)\n buf = buf.slice(nl + 2)\n const dataLine = frame.split(\"\\n\").find((l) => l.startsWith(\"data: \"))\n if (dataLine) {\n try {\n const ev = JSON.parse(dataLine.slice(6)) as McpCheckEvent\n onEvent(ev)\n if (ev.type === \"result\") last = ev.server\n else if (ev.type === \"error\" && ev.server) last = ev.server\n } catch { /* malformed frame, skip */ }\n }\n nl = buf.indexOf(\"\\n\\n\")\n }\n }\n } finally {\n try { reader.releaseLock() } catch { /* ignore */ }\n }\n return last\n },\n useCheckStream: () => {\n const qc = useQueryClient()\n const [phase, setPhase] = React.useState<McpCheckPhase | null>(null)\n const [logs, setLogs] = React.useState<string[]>([])\n const [isChecking, setIsChecking] = React.useState(false)\n const [error, setError] = React.useState<string | null>(null)\n const [result, setResult] = React.useState<McpServerDTO | null>(null)\n const abortRef = React.useRef<AbortController | null>(null)\n\n const reset = React.useCallback(() => {\n setPhase(null)\n setLogs([])\n setError(null)\n setResult(null)\n }, [])\n\n const cancel = React.useCallback(() => {\n abortRef.current?.abort()\n abortRef.current = null\n setIsChecking(false)\n }, [])\n\n const run = React.useCallback(\n async (id: string) => {\n reset()\n setIsChecking(true)\n const ctrl = new AbortController()\n abortRef.current = ctrl\n try {\n const final = await mcpServers.checkStream(\n id,\n (ev) => {\n if (ev.type === \"phase\") setPhase(ev.phase)\n else if (ev.type === \"log\") setLogs((prev) => [...prev, ev.line])\n else if (ev.type === \"result\") setResult(ev.server)\n else if (ev.type === \"error\") {\n setError(ev.message)\n if (ev.server) setResult(ev.server)\n }\n },\n { signal: ctrl.signal },\n )\n qc.invalidateQueries({ queryKey: base.keys.all() })\n return final\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err)\n if (!ctrl.signal.aborted) setError(msg)\n return null\n } finally {\n setIsChecking(false)\n abortRef.current = null\n }\n },\n [reset, qc],\n )\n\n React.useEffect(() => () => abortRef.current?.abort(), [])\n\n return { run, cancel, reset, phase, logs, isChecking, error, result }\n },\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z',\n key: '1a8usu',\n },\n ],\n ['path', { d: 'm15 5 4 4', key: '1mk7zo' }],\n];\n\n/**\n * @component @name Pencil\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEuMTc0IDYuODEyYTEgMSAwIDAgMC0zLjk4Ni0zLjk4N0wzLjg0MiAxNi4xNzRhMiAyIDAgMCAwLS41LjgzbC0xLjMyMSA0LjM1MmEuNS41IDAgMCAwIC42MjMuNjIybDQuMzUzLTEuMzJhMiAyIDAgMCAwIC44My0uNDk3eiIgLz4KICA8cGF0aCBkPSJtMTUgNSA0IDQiIC8+Cjwvc3ZnPgo=) - 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","\"use client\"\n\nimport * as React from \"react\"\nimport { Inbox } from \"lucide-react\"\n\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@/components/ui/table\"\nimport { cn } from \"@/lib/utils\"\n\n/**\n * Shared visual contract for dashboard data tables (currently used by\n * /logs and /providers#models). Pages compose these primitives so the\n * \"Loom dashboard table\" look — sticky muted header, uppercase head text,\n * zebra rows, hover highlight, consistent padding — lives in exactly one\n * place. Future style tweaks touch this file only.\n *\n * These primitives are visual-only by design (SRP). They do not know\n * about sorting, pagination, or data fetching; callers wire those.\n */\n\nexport function DataTableShell({\n className,\n ...props\n}: React.ComponentProps<\"table\">) {\n return (\n <div className=\"overflow-hidden\">\n <Table className={className} {...props} />\n </div>\n )\n}\n\nexport function DataTableHeader({\n className,\n ...props\n}: React.ComponentProps<\"thead\">) {\n return (\n <TableHeader\n className={cn(\"bg-muted/40 sticky top-0 z-10\", className)}\n {...props}\n />\n )\n}\n\nexport function DataTableHeaderRow({\n className,\n ...props\n}: React.ComponentProps<\"tr\">) {\n return (\n <TableRow\n className={cn(\n \"hover:bg-transparent border-b-muted/60 shadow-sm\",\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function DataTableHead({\n className,\n ...props\n}: React.ComponentProps<\"th\">) {\n return (\n <TableHead\n className={cn(\n \"h-10 text-xs font-semibold uppercase tracking-wide text-muted-foreground/80 first:pl-4 last:pr-4\",\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function DataTableRow({\n className,\n interactive = true,\n ...props\n}: React.ComponentProps<\"tr\"> & { interactive?: boolean }) {\n return (\n <TableRow\n className={cn(\n \"h-10 border-b-muted/20 even:bg-muted/50 group\",\n interactive && \"cursor-pointer hover:bg-muted/90\",\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function DataTableCell({\n className,\n ...props\n}: React.ComponentProps<\"td\">) {\n return (\n <TableCell\n className={cn(\"py-2 first:pl-4 last:pr-4\", className)}\n {...props}\n />\n )\n}\n\nexport function DataTableEmpty({\n colSpan,\n children: _children,\n}: {\n colSpan: number\n children?: React.ReactNode\n}) {\n void _children\n return (\n <TableRow className=\"hover:bg-transparent\">\n <TableCell\n colSpan={colSpan}\n className=\"h-48 text-center align-middle text-muted-foreground/40\"\n >\n <div className=\"flex items-center justify-center\">\n <Inbox className=\"h-8 w-8\" aria-label=\"empty\" />\n </div>\n </TableCell>\n </TableRow>\n )\n}\n\nexport { TableBody as DataTableBody }\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['polyline', { points: '22 12 16 12 14 15 10 15 8 12 2 12', key: 'o97t9d' }],\n [\n 'path',\n {\n d: 'M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z',\n key: 'oot6mr',\n },\n ],\n];\n\n/**\n * @component @name Inbox\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cG9seWxpbmUgcG9pbnRzPSIyMiAxMiAxNiAxMiAxNCAxNSAxMCAxNSA4IDEyIDIgMTIiIC8+CiAgPHBhdGggZD0iTTUuNDUgNS4xMSAyIDEydjZhMiAyIDAgMCAwIDIgMmgxNmEyIDIgMCAwIDAgMi0ydi02bC0zLjQ1LTYuODlBMiAyIDAgMCAwIDE2Ljc2IDRINy4yNGEyIDIgMCAwIDAtMS43OSAxLjExeiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/inbox\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Inbox = createLucideIcon('inbox', __iconNode);\n\nexport default Inbox;\n"],"names":["InfiniteQueryObserver","client","options","bindMethods","fetchNextPage","bind","fetchPreviousPage","setOptions","_type","getOptimisticResult","fetch","meta","fetchMore","direction","createResult","query","state","parentResult","isFetching","isRefetching","isError","isRefetchError","fetchDirection","fetchMeta","isFetchNextPageError","isFetchingNextPage","isFetchPreviousPageError","isFetchingPreviousPage","result","hasNextPage","data","hasPreviousPage","base","path","key","listShape","staleTime","mcpServers","listPresets","usePresets","queryKey","queryFn","check","id","encodeURIComponent","method","useCheck","opts","qc","mutationFn","onSuccess","server","invalidateQueries","keys","all","onError","err","checkStream","onEvent","res","headers","Accept","signal","body","Error","reader","getReader","decoder","TextDecoder","buf","last","done","value","read","decode","stream","nl","indexOf","frame","slice","dataLine","split","find","l","startsWith","ev","JSON","parse","type","releaseLock","useCheckStream","phase","setPhase","logs","setLogs","isChecking","setIsChecking","error","setError","setResult","abortRef","reset","cancel","current","abort","run","ctrl","AbortController","final","prev","line","message","msg","String","aborted","SWITCH_NAME","createSwitchContext","createSwitchScope","SwitchProviderImpl","useSwitchContext","SwitchProvider","props","__scopeSwitch","checked","checkedProp","children","defaultChecked","disabled","form","name","onCheckedChange","required","internal_do_not_use_render","setChecked","prop","defaultProp","onChange","caller","control","setControl","bubbleInput","setBubbleInput","hasConsumerStoppedPropagationRef","isFormControl","closest","context","scope","isFunction","TRIGGER_NAME","SwitchTrigger","onClick","switchProps","forwardedRef","composedRefs","button","role","getState","ref","event","prevChecked","isPropagationStopped","stopPropagation","displayName","Switch","SwitchBubbleInput","THUMB_NAME","SwitchThumb","thumbProps","span","BUBBLE_INPUT_NAME","controlSize","input","inputProto","window","HTMLInputElement","prototype","descriptor","Object","getOwnPropertyDescriptor","set","bubbles","Event","call","dispatchEvent","defaultCheckedRef","tabIndex","style","position","pointerEvents","opacity","margin","transform","Textarea","className"],"mappings":"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","ignoreList":[0,2,4,5,9]}
@@ -0,0 +1,9 @@
1
+ module.exports=[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)},546893,a=>{"use strict";var b=a.i(187924),c=a.i(497895);a.s(["Textarea",0,function({className:a,...d}){return(0,b.jsx)("textarea",{"data-slot":"textarea",className:(0,c.cn)("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",a),...d})}])},280281,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(507554),e=a.i(470121),f=a.i(750104),g=a.i(225152),h=a.i(77994),i=a.i(3688),j=a.i(30553),k="Switch",[l,m]=(0,f.createContextScope)(k),[n,o]=l(k);function p(a){let{__scopeSwitch:d,checked:e,children:f,defaultChecked:h,disabled:i,form:j,name:l,onCheckedChange:m,required:o,value:p="on",internal_do_not_use_render:q}=a,[r,s]=(0,g.useControllableState)({prop:e,defaultProp:h??!1,onChange:m,caller:k}),[t,u]=c.useState(null),[v,w]=c.useState(null),x=c.useRef(!1),y=!t||!!j||!!t.closest("form"),z={checked:r,setChecked:s,disabled:i,control:t,setControl:u,name:l,form:j,value:p,hasConsumerStoppedPropagationRef:x,required:o,defaultChecked:h,isFormControl:y,bubbleInput:v,setBubbleInput:w};return(0,b.jsx)(n,{scope:d,...z,children:"function"==typeof q?q(z):f})}var q="SwitchTrigger",r=c.forwardRef(({__scopeSwitch:a,onClick:c,...f},g)=>{let{value:h,disabled:i,checked:k,required:l,setControl:m,setChecked:n,hasConsumerStoppedPropagationRef:p,isFormControl:r,bubbleInput:s}=o(q,a),t=(0,e.useComposedRefs)(g,m);return(0,b.jsx)(j.Primitive.button,{type:"button",role:"switch","aria-checked":k,"aria-required":l,"data-state":x(k),"data-disabled":i?"":void 0,disabled:i,value:h,...f,ref:t,onClick:(0,d.composeEventHandlers)(c,a=>{n(a=>!a),s&&r&&(p.current=a.isPropagationStopped(),p.current||a.stopPropagation())})})});r.displayName=q;var s=c.forwardRef((a,c)=>{let{__scopeSwitch:d,name:e,checked:f,defaultChecked:g,required:h,disabled:i,value:j,onCheckedChange:k,form:l,...m}=a;return(0,b.jsx)(p,{__scopeSwitch:d,checked:f,defaultChecked:g,disabled:i,required:h,onCheckedChange:k,name:e,form:l,value:j,internal_do_not_use_render:({isFormControl:a})=>(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(r,{...m,ref:c,__scopeSwitch:d}),a&&(0,b.jsx)(w,{__scopeSwitch:d})]})})});s.displayName=k;var t="SwitchThumb",u=c.forwardRef((a,c)=>{let{__scopeSwitch:d,...e}=a,f=o(t,d);return(0,b.jsx)(j.Primitive.span,{"data-state":x(f.checked),"data-disabled":f.disabled?"":void 0,...e,ref:c})});u.displayName=t;var v="SwitchBubbleInput",w=c.forwardRef(({__scopeSwitch:a,...d},f)=>{let{control:g,hasConsumerStoppedPropagationRef:k,checked:l,defaultChecked:m,required:n,disabled:p,name:q,value:r,form:s,bubbleInput:t,setBubbleInput:u}=o(v,a),w=(0,e.useComposedRefs)(f,u),x=(0,h.usePrevious)(l),y=(0,i.useSize)(g);c.useEffect(()=>{if(!t)return;let a=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set,b=!k.current;if(x!==l&&a){let c=new Event("click",{bubbles:b});a.call(t,l),t.dispatchEvent(c)}},[t,x,l,k]);let z=c.useRef(l);return(0,b.jsx)(j.Primitive.input,{type:"checkbox","aria-hidden":!0,defaultChecked:m??z.current,required:n,disabled:p,name:q,value:r,form:s,...d,tabIndex:-1,ref:w,style:{...d.style,...y,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});function x(a){return a?"checked":"unchecked"}w.displayName=v;var y=a.i(497895);a.s(["Switch",0,function({className:a,...c}){return(0,b.jsx)(s,{"data-slot":"switch",className:(0,y.cn)("peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",a),...c,children:(0,b.jsx)(u,{"data-slot":"switch-thumb",className:(0,y.cn)("bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0")})})}],280281)},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})}])},812213,a=>{"use strict";var b=a.i(941579),c=a.i(774684),d=class extends b.QueryObserver{constructor(a,b){super(a,b)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(a){a._type="infinite",super.setOptions(a)}getOptimisticResult(a){return a._type="infinite",super.getOptimisticResult(a)}fetchNextPage(a){return this.fetch({...a,meta:{fetchMore:{direction:"forward"}}})}fetchPreviousPage(a){return this.fetch({...a,meta:{fetchMore:{direction:"backward"}}})}createResult(a,b){let{state:d}=a,e=super.createResult(a,b),{isFetching:f,isRefetching:g,isError:h,isRefetchError:i}=e,j=d.fetchMeta?.fetchMore?.direction,k=h&&"forward"===j,l=f&&"forward"===j,m=h&&"backward"===j,n=f&&"backward"===j;return{...e,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:(0,c.hasNextPage)(b,d.data),hasPreviousPage:(0,c.hasPreviousPage)(b,d.data),isFetchNextPageError:k,isFetchingNextPage:l,isFetchPreviousPageError:m,isFetchingPreviousPage:n,isRefetchError:i&&!k&&!m,isRefetching:g&&!l&&!n}}},e=a.i(36339),f=a.i(937927),g=a.i(349682),h=a.i(262477);let i=(0,g.defineResource)({path:"/conversations",key:"conversations",paramsOf:a=>({page:a.page??1,page_size:a.page_size??20,sort:a.sort??"-updated_at",keyword:a.keyword}),staleTime:6e4}),j={...i,updateTitle:(a,b)=>i.update(a,{title:b}),messagesCacheKey:function(a,b){return[...i.keys.one(a),"messages-cache",b]},useInvalidateList:()=>{let a=(0,f.useQueryClient)();return()=>a.invalidateQueries({queryKey:i.keys.all(),predicate:a=>{let b=a.queryKey;return b.length>=2&&("list"===b[1]||"infinite"===b[1])}})},useInfinite:a=>{var b;let c=a?.pageSize??20,f=a?.keyword?.trim()||void 0;return b={queryKey:[...i.keys.all(),"infinite",a?.scope??"default",c,f??""],initialPageParam:1,queryFn:({pageParam:a=1})=>i.list({page:a,page_size:c,keyword:f}),getNextPageParam:a=>{if(a)return a.page*a.page_size<a.total?a.page+1:void 0}},(0,e.useBaseQuery)(b,d,void 0)},listMessages:(a,b)=>(0,h.fetcher)(`/conversations/${encodeURIComponent(a)}/messages?`+new URLSearchParams({page:String(b?.page??1),page_size:String(b?.page_size??50),sort:b?.sort??"-created_at"}).toString())},k=["messages"];a.s(["conversations",0,j,"messages",0,{keys:{all:()=>k},rate:(a,b,c)=>(0,h.fetcher)(`/messages/${encodeURIComponent(a)}/rate`,{method:"POST",body:JSON.stringify({rating:b,feedback:c})})}],812213)},339220,a=>{"use strict";var b=a.i(370025),c=a.i(433217),d=a.i(937927),e=a.i(572131),f=a.i(349682),g=a.i(262477);let h=(0,f.defineResource)({path:"/mcp/servers",key:"mcp-servers",listShape:"array",staleTime:6e4}),i={...h,listPresets:()=>(0,g.fetcher)("/mcp/presets"),usePresets:()=>(0,c.useQuery)({queryKey:["mcp-presets"],queryFn:()=>i.listPresets(),staleTime:3e5}),check:a=>(0,g.fetcher)(`/mcp/servers/${encodeURIComponent(a)}/check`,{method:"POST"}),useCheck:a=>{let c=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:a=>i.check(a),onSuccess:b=>{c.invalidateQueries({queryKey:h.keys.all()}),a?.onSuccess?.(b)},onError:b=>a?.onError?.(b)})},checkStream:async(a,b,c)=>{let d=await (0,g.rawFetch)(`/mcp/servers/${encodeURIComponent(a)}/check`,{method:"POST",headers:{Accept:"text/event-stream"},signal:c?.signal});if(!d.body)throw Error("No response body");let e=d.body.getReader(),f=new TextDecoder,h="",i=null;try{for(;;){let{done:a,value:c}=await e.read();if(a)break;let d=(h+=f.decode(c,{stream:!0})).indexOf("\n\n");for(;-1!==d;){let a=h.slice(0,d);h=h.slice(d+2);let c=a.split("\n").find(a=>a.startsWith("data: "));if(c)try{let a=JSON.parse(c.slice(6));b(a),"result"===a.type?i=a.server:"error"===a.type&&a.server&&(i=a.server)}catch{}d=h.indexOf("\n\n")}}}finally{try{e.releaseLock()}catch{}}return i},useCheckStream:()=>{let a=(0,d.useQueryClient)(),[b,c]=e.useState(null),[f,g]=e.useState([]),[j,k]=e.useState(!1),[l,m]=e.useState(null),[n,o]=e.useState(null),p=e.useRef(null),q=e.useCallback(()=>{c(null),g([]),m(null),o(null)},[]),r=e.useCallback(()=>{p.current?.abort(),p.current=null,k(!1)},[]),s=e.useCallback(async b=>{q(),k(!0);let d=new AbortController;p.current=d;try{let e=await i.checkStream(b,a=>{"phase"===a.type?c(a.phase):"log"===a.type?g(b=>[...b,a.line]):"result"===a.type?o(a.server):"error"===a.type&&(m(a.message),a.server&&o(a.server))},{signal:d.signal});return a.invalidateQueries({queryKey:h.keys.all()}),e}catch(b){let a=b instanceof Error?b.message:String(b);return d.signal.aborted||m(a),null}finally{k(!1),p.current=null}},[q,a]);return e.useEffect(()=>()=>p.current?.abort(),[]),{run:s,cancel:r,reset:q,phase:b,logs:f,isChecking:j,error:l,result:n}}};a.s(["mcpServers",0,i])},699464,a=>{"use strict";let b=(0,a.i(883706).default)("pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);a.s(["Pencil",0,b],699464)}];
8
+
9
+ //# sourceMappingURL=_0uom5g-._.js.map