@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":["../../../../node_modules/lucide-react/src/icons/trash-2.ts","../../../../node_modules/%40radix-ui/react-alert-dialog/dist/index.mjs","../../../../components/ui/alert-dialog.tsx","../../../../components/ui/confirm-dialog.tsx","../../../../components/ui/textarea.tsx","../../../../node_modules/%40radix-ui/react-switch/dist/index.mjs","../../../../components/ui/switch.tsx","../../../../components/ui/badge.tsx","../../../../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"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M10 11v6', key: 'nco0om' }],\n ['path', { d: 'M14 11v6', key: 'outv1u' }],\n ['path', { d: 'M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6', key: 'miytrc' }],\n ['path', { d: 'M3 6h18', key: 'd0wm0j' }],\n ['path', { d: 'M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2', key: 'e791ji' }],\n];\n\n/**\n * @component @name Trash2\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTAgMTF2NiIgLz4KICA8cGF0aCBkPSJNMTQgMTF2NiIgLz4KICA8cGF0aCBkPSJNMTkgNnYxNGEyIDIgMCAwIDEtMiAySDdhMiAyIDAgMCAxLTItMlY2IiAvPgogIDxwYXRoIGQ9Ik0zIDZoMTgiIC8+CiAgPHBhdGggZD0iTTggNlY0YTIgMiAwIDAgMSAyLTJoNGEyIDIgMCAwIDEgMiAydjIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/trash-2\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Trash2 = createLucideIcon('trash-2', __iconNode);\n\nexport default Trash2;\n","\"use client\";\n\n// src/alert-dialog.tsx\nimport * as React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { createDialogScope } from \"@radix-ui/react-dialog\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createSlottable } from \"@radix-ui/react-slot\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar ROOT_NAME = \"AlertDialog\";\nvar [createAlertDialogContext, createAlertDialogScope] = createContextScope(ROOT_NAME, [\n createDialogScope\n]);\nvar useDialogScope = createDialogScope();\nvar AlertDialog = (props) => {\n const { __scopeAlertDialog, ...alertDialogProps } = props;\n const dialogScope = useDialogScope(__scopeAlertDialog);\n return /* @__PURE__ */ jsx(DialogPrimitive.Root, { ...dialogScope, ...alertDialogProps, modal: true });\n};\nAlertDialog.displayName = ROOT_NAME;\nvar TRIGGER_NAME = \"AlertDialogTrigger\";\nvar AlertDialogTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeAlertDialog, ...triggerProps } = props;\n const dialogScope = useDialogScope(__scopeAlertDialog);\n return /* @__PURE__ */ jsx(DialogPrimitive.Trigger, { ...dialogScope, ...triggerProps, ref: forwardedRef });\n }\n);\nAlertDialogTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"AlertDialogPortal\";\nvar AlertDialogPortal = (props) => {\n const { __scopeAlertDialog, ...portalProps } = props;\n const dialogScope = useDialogScope(__scopeAlertDialog);\n return /* @__PURE__ */ jsx(DialogPrimitive.Portal, { ...dialogScope, ...portalProps });\n};\nAlertDialogPortal.displayName = PORTAL_NAME;\nvar OVERLAY_NAME = \"AlertDialogOverlay\";\nvar AlertDialogOverlay = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeAlertDialog, ...overlayProps } = props;\n const dialogScope = useDialogScope(__scopeAlertDialog);\n return /* @__PURE__ */ jsx(DialogPrimitive.Overlay, { ...dialogScope, ...overlayProps, ref: forwardedRef });\n }\n);\nAlertDialogOverlay.displayName = OVERLAY_NAME;\nvar CONTENT_NAME = \"AlertDialogContent\";\nvar [AlertDialogContentProvider, useAlertDialogContentContext] = createAlertDialogContext(CONTENT_NAME);\nvar Slottable = createSlottable(\"AlertDialogContent\");\nvar AlertDialogContent = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeAlertDialog, children, ...contentProps } = props;\n const dialogScope = useDialogScope(__scopeAlertDialog);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n const cancelRef = React.useRef(null);\n return /* @__PURE__ */ jsx(\n DialogPrimitive.WarningProvider,\n {\n contentName: CONTENT_NAME,\n titleName: TITLE_NAME,\n docsSlug: \"alert-dialog\",\n children: /* @__PURE__ */ jsx(AlertDialogContentProvider, { scope: __scopeAlertDialog, cancelRef, children: /* @__PURE__ */ jsxs(\n DialogPrimitive.Content,\n {\n role: \"alertdialog\",\n ...dialogScope,\n ...contentProps,\n ref: composedRefs,\n onOpenAutoFocus: composeEventHandlers(contentProps.onOpenAutoFocus, (event) => {\n event.preventDefault();\n cancelRef.current?.focus({ preventScroll: true });\n }),\n onPointerDownOutside: (event) => event.preventDefault(),\n onInteractOutside: (event) => event.preventDefault(),\n children: [\n /* @__PURE__ */ jsx(Slottable, { children }),\n /* @__PURE__ */ jsx(DescriptionWarning, { contentRef })\n ]\n }\n ) })\n }\n );\n }\n);\nAlertDialogContent.displayName = CONTENT_NAME;\nvar TITLE_NAME = \"AlertDialogTitle\";\nvar AlertDialogTitle = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeAlertDialog, ...titleProps } = props;\n const dialogScope = useDialogScope(__scopeAlertDialog);\n return /* @__PURE__ */ jsx(DialogPrimitive.Title, { ...dialogScope, ...titleProps, ref: forwardedRef });\n }\n);\nAlertDialogTitle.displayName = TITLE_NAME;\nvar DESCRIPTION_NAME = \"AlertDialogDescription\";\nvar AlertDialogDescription = React.forwardRef((props, forwardedRef) => {\n const { __scopeAlertDialog, ...descriptionProps } = props;\n const dialogScope = useDialogScope(__scopeAlertDialog);\n return /* @__PURE__ */ jsx(DialogPrimitive.Description, { ...dialogScope, ...descriptionProps, ref: forwardedRef });\n});\nAlertDialogDescription.displayName = DESCRIPTION_NAME;\nvar ACTION_NAME = \"AlertDialogAction\";\nvar AlertDialogAction = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeAlertDialog, ...actionProps } = props;\n const dialogScope = useDialogScope(__scopeAlertDialog);\n return /* @__PURE__ */ jsx(DialogPrimitive.Close, { ...dialogScope, ...actionProps, ref: forwardedRef });\n }\n);\nAlertDialogAction.displayName = ACTION_NAME;\nvar CANCEL_NAME = \"AlertDialogCancel\";\nvar AlertDialogCancel = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeAlertDialog, ...cancelProps } = props;\n const { cancelRef } = useAlertDialogContentContext(CANCEL_NAME, __scopeAlertDialog);\n const dialogScope = useDialogScope(__scopeAlertDialog);\n const ref = useComposedRefs(forwardedRef, cancelRef);\n return /* @__PURE__ */ jsx(DialogPrimitive.Close, { ...dialogScope, ...cancelProps, ref });\n }\n);\nAlertDialogCancel.displayName = CANCEL_NAME;\nvar DescriptionWarning = ({ contentRef }) => {\n const MESSAGE = `\\`${CONTENT_NAME}\\` requires a description for the component to be accessible for screen reader users.\n\nYou can add a description to the \\`${CONTENT_NAME}\\` by passing a \\`${DESCRIPTION_NAME}\\` component as a child, which also benefits sighted users by adding visible context to the dialog.\n\nAlternatively, you can use your own component as a description by assigning it an \\`id\\` and passing the same value to the \\`aria-describedby\\` prop in \\`${CONTENT_NAME}\\`. If the description is confusing or duplicative for sighted users, you can use the \\`@radix-ui/react-visually-hidden\\` primitive as a wrapper around your description component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/alert-dialog`;\n React.useEffect(() => {\n const hasDescription = document.getElementById(\n contentRef.current?.getAttribute(\"aria-describedby\")\n );\n if (!hasDescription) console.warn(MESSAGE);\n }, [MESSAGE, contentRef]);\n return null;\n};\nvar Root2 = AlertDialog;\nvar Trigger2 = AlertDialogTrigger;\nvar Portal2 = AlertDialogPortal;\nvar Overlay2 = AlertDialogOverlay;\nvar Content2 = AlertDialogContent;\nvar Action = AlertDialogAction;\nvar Cancel = AlertDialogCancel;\nvar Title2 = AlertDialogTitle;\nvar Description2 = AlertDialogDescription;\nexport {\n Action,\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n Cancel,\n Content2 as Content,\n Description2 as Description,\n Overlay2 as Overlay,\n Portal2 as Portal,\n Root2 as Root,\n Title2 as Title,\n Trigger2 as Trigger,\n createAlertDialogScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\"\n\nimport { cn } from \"@/lib/utils\"\nimport { buttonVariants } from \"@/components/ui/button\"\n\nconst AlertDialog = AlertDialogPrimitive.Root\n\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger\n\nconst AlertDialogPortal = AlertDialogPrimitive.Portal\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Overlay\n className={cn(\n \"fixed inset-0 z-50 bg-black/50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n ref={ref}\n />\n))\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName\n\nconst AlertDialogContent = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n ref={ref}\n className={cn(\n // Animation kept minimal — fade + subtle zoom only,\n // matching the regular Dialog primitive. The default\n // shadcn classes (slide-in-from-left-1/2 +\n // slide-in-from-top-[48%]) caused a jarring\n // edge-fly effect for what's already a centered\n // modal. Visual style follows the Dialog primitive\n // verbatim (rounded-lg + gap-4 + p-6 + max-w-lg).\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg duration-200 outline-none\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n className\n )}\n {...props}\n />\n </AlertDialogPortal>\n))\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName\n\nconst AlertDialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-2 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n)\nAlertDialogHeader.displayName = \"AlertDialogHeader\"\n\nconst AlertDialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n)\nAlertDialogFooter.displayName = \"AlertDialogFooter\"\n\nconst AlertDialogTitle = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold\", className)}\n {...props}\n />\n))\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName\n\nconst AlertDialogDescription = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nAlertDialogDescription.displayName =\n AlertDialogPrimitive.Description.displayName\n\nconst AlertDialogAction = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Action>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Action\n ref={ref}\n className={cn(buttonVariants(), className)}\n {...props}\n />\n))\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName\n\nconst AlertDialogCancel = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Cancel\n ref={ref}\n className={cn(\n buttonVariants({ variant: \"outline\" }),\n \"mt-2 sm:mt-0\",\n className\n )}\n {...props}\n />\n))\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName\n\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { AlertTriangle, Loader2 } from \"lucide-react\"\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from \"@/components/ui/alert-dialog\"\nimport { cn } from \"@/lib/utils\"\n\ninterface ConfirmDialogProps {\n /** Truthy → dialog open. Passing the resource being acted on (e.g. the\n * row to delete) doubles as the open flag — the caller stores it in\n * state, then `onOpenChange(false)` clears it. */\n open: boolean\n onOpenChange: (open: boolean) => void\n title: React.ReactNode\n description: React.ReactNode\n /** Action button label. Default: \"Confirm\". */\n confirmLabel?: React.ReactNode\n cancelLabel?: React.ReactNode\n /** When true, action button is styled as destructive (red) and a\n * warning icon is prepended to the title. */\n destructive?: boolean\n /** Disable buttons + show a spinner on the action while the mutation runs. */\n isLoading?: boolean\n onConfirm: () => void\n}\n\n/**\n * Single source of truth for confirm-style alert dialogs (delete, revoke,\n * etc.). Replaces ~25 lines of AlertDialog boilerplate at every call site.\n *\n * Idiomatic usage:\n * const [toDelete, setToDelete] = useState<X | null>(null)\n * const remove = xResource.useDelete({ onSuccess: () => setToDelete(null) })\n * <ConfirmDialog\n * open={!!toDelete}\n * onOpenChange={(o) => !o && setToDelete(null)}\n * title=\"Delete X?\"\n * description={<>This will permanently delete <b>{toDelete?.name}</b>.</>}\n * destructive\n * isLoading={remove.isPending}\n * onConfirm={() => toDelete && remove.mutate(toDelete.id)}\n * />\n */\nexport function ConfirmDialog({\n open,\n onOpenChange,\n title,\n description,\n confirmLabel = \"Confirm\",\n cancelLabel = \"Cancel\",\n destructive,\n isLoading,\n onConfirm,\n}: ConfirmDialogProps) {\n return (\n <AlertDialog open={open} onOpenChange={onOpenChange}>\n <AlertDialogContent>\n <AlertDialogHeader>\n <div className=\"flex items-start gap-3\">\n {destructive && (\n <div className=\"mt-0.5 flex h-9 w-9 shrink-0 items-center justify-center rounded-full bg-destructive/10 text-destructive\">\n <AlertTriangle className=\"h-4 w-4\" />\n </div>\n )}\n <div className=\"flex-1 space-y-1.5\">\n <AlertDialogTitle className={cn(destructive && \"text-foreground\")}>\n {title}\n </AlertDialogTitle>\n <AlertDialogDescription>{description}</AlertDialogDescription>\n </div>\n </div>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel disabled={isLoading}>{cancelLabel}</AlertDialogCancel>\n <AlertDialogAction\n onClick={(e) => {\n e.preventDefault()\n onConfirm()\n }}\n disabled={isLoading}\n className={cn(\n destructive &&\n \"bg-destructive text-white shadow-sm shadow-destructive/30 hover:bg-destructive/90 focus-visible:ring-destructive/40\",\n )}\n >\n {isLoading && <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />}\n {confirmLabel}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n )\n}\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Textarea }\n","\"use client\";\n\n// src/switch.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar SWITCH_NAME = \"Switch\";\nvar [createSwitchContext, createSwitchScope] = createContextScope(SWITCH_NAME);\nvar [SwitchProviderImpl, useSwitchContext] = createSwitchContext(SWITCH_NAME);\nfunction SwitchProvider(props) {\n const {\n __scopeSwitch,\n checked: checkedProp,\n children,\n defaultChecked,\n disabled,\n form,\n name,\n onCheckedChange,\n required,\n value = \"on\",\n // @ts-expect-error\n internal_do_not_use_render\n } = props;\n const [checked, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked ?? false,\n onChange: onCheckedChange,\n caller: SWITCH_NAME\n });\n const [control, setControl] = React.useState(null);\n const [bubbleInput, setBubbleInput] = React.useState(null);\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = control ? !!form || !!control.closest(\"form\") : (\n // We set this to true by default so that events bubble to forms without JS (SSR)\n true\n );\n const context = {\n checked,\n setChecked,\n disabled,\n control,\n setControl,\n name,\n form,\n value,\n hasConsumerStoppedPropagationRef,\n required,\n defaultChecked,\n isFormControl,\n bubbleInput,\n setBubbleInput\n };\n return /* @__PURE__ */ jsx(SwitchProviderImpl, { scope: __scopeSwitch, ...context, children: isFunction(internal_do_not_use_render) ? internal_do_not_use_render(context) : children });\n}\nvar TRIGGER_NAME = \"SwitchTrigger\";\nvar SwitchTrigger = React.forwardRef(\n ({ __scopeSwitch, onClick, ...switchProps }, forwardedRef) => {\n const {\n value,\n disabled,\n checked,\n required,\n setControl,\n setChecked,\n hasConsumerStoppedPropagationRef,\n isFormControl,\n bubbleInput\n } = useSwitchContext(TRIGGER_NAME, __scopeSwitch);\n const composedRefs = useComposedRefs(forwardedRef, setControl);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"switch\",\n \"aria-checked\": checked,\n \"aria-required\": required,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...switchProps,\n ref: composedRefs,\n onClick: composeEventHandlers(onClick, (event) => {\n setChecked((prevChecked) => !prevChecked);\n if (bubbleInput && isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n );\n }\n);\nSwitchTrigger.displayName = TRIGGER_NAME;\nvar Switch = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSwitch,\n name,\n checked,\n defaultChecked,\n required,\n disabled,\n value,\n onCheckedChange,\n form,\n ...switchProps\n } = props;\n return /* @__PURE__ */ jsx(\n SwitchProvider,\n {\n __scopeSwitch,\n checked,\n defaultChecked,\n disabled,\n required,\n onCheckedChange,\n name,\n form,\n value,\n internal_do_not_use_render: ({ isFormControl }) => /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n SwitchTrigger,\n {\n ...switchProps,\n ref: forwardedRef,\n __scopeSwitch\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n SwitchBubbleInput,\n {\n __scopeSwitch\n }\n )\n ] })\n }\n );\n }\n);\nSwitch.displayName = SWITCH_NAME;\nvar THUMB_NAME = \"SwitchThumb\";\nvar SwitchThumb = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSwitch, ...thumbProps } = props;\n const context = useSwitchContext(THUMB_NAME, __scopeSwitch);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...thumbProps,\n ref: forwardedRef\n }\n );\n }\n);\nSwitchThumb.displayName = THUMB_NAME;\nvar BUBBLE_INPUT_NAME = \"SwitchBubbleInput\";\nvar SwitchBubbleInput = React.forwardRef(\n ({ __scopeSwitch, ...props }, forwardedRef) => {\n const {\n control,\n hasConsumerStoppedPropagationRef,\n checked,\n defaultChecked,\n required,\n disabled,\n name,\n value,\n form,\n bubbleInput,\n setBubbleInput\n } = useSwitchContext(BUBBLE_INPUT_NAME, __scopeSwitch);\n const composedRefs = useComposedRefs(forwardedRef, setBubbleInput);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = bubbleInput;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n \"checked\"\n );\n const setChecked = descriptor.set;\n const bubbles = !hasConsumerStoppedPropagationRef.current;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [bubbleInput, prevChecked, checked, hasConsumerStoppedPropagationRef]);\n const defaultCheckedRef = React.useRef(checked);\n return /* @__PURE__ */ jsx(\n Primitive.input,\n {\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: defaultChecked ?? defaultCheckedRef.current,\n required,\n disabled,\n name,\n value,\n form,\n ...props,\n tabIndex: -1,\n ref: composedRefs,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0,\n // We transform because the input is absolutely positioned but we have\n // rendered it **after** the button. This pulls it back to sit on top\n // of the button.\n transform: \"translateX(-100%)\"\n }\n }\n );\n }\n);\nSwitchBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\nfunction getState(checked) {\n return checked ? \"checked\" : \"unchecked\";\n}\nexport {\n Switch as Root,\n Switch,\n SwitchThumb,\n SwitchThumb as Thumb,\n createSwitchScope,\n SwitchBubbleInput as unstable_BubbleInput,\n SwitchProvider as unstable_Provider,\n SwitchBubbleInput as unstable_SwitchBubbleInput,\n SwitchProvider as unstable_SwitchProvider,\n SwitchTrigger as unstable_SwitchTrigger,\n SwitchTrigger as unstable_Trigger\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Switch({\n className,\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n \"peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n \"bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0\"\n )}\n />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n \"inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\n destructive:\n \"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant,\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"span\"\n\n return (\n <Comp\n data-slot=\"badge\"\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nexport { Badge, badgeVariants }\n","\"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"],"names":["ROOT_NAME","createAlertDialogContext","createAlertDialogScope","useDialogScope","AlertDialog","props","__scopeAlertDialog","alertDialogProps","dialogScope","modal","displayName","TRIGGER_NAME","AlertDialogTrigger","forwardedRef","triggerProps","ref","PORTAL_NAME","AlertDialogPortal","portalProps","OVERLAY_NAME","AlertDialogOverlay","overlayProps","CONTENT_NAME","AlertDialogContentProvider","useAlertDialogContentContext","Slottable","AlertDialogContent","children","contentProps","contentRef","composedRefs","cancelRef","contentName","titleName","TITLE_NAME","docsSlug","scope","role","onOpenAutoFocus","event","preventDefault","current","focus","preventScroll","onPointerDownOutside","onInteractOutside","DescriptionWarning","AlertDialogTitle","titleProps","DESCRIPTION_NAME","AlertDialogDescription","descriptionProps","ACTION_NAME","AlertDialogAction","actionProps","CANCEL_NAME","AlertDialogCancel","cancelProps","MESSAGE","hasDescription","document","getElementById","getAttribute","console","warn","Root2","Trigger2","Portal2","Overlay2","Content2","Action","Cancel","Title2","Description2","Textarea","className","SWITCH_NAME","createSwitchContext","createSwitchScope","SwitchProviderImpl","useSwitchContext","SwitchProvider","__scopeSwitch","checked","checkedProp","defaultChecked","disabled","form","name","onCheckedChange","required","value","internal_do_not_use_render","setChecked","prop","defaultProp","onChange","caller","control","setControl","bubbleInput","setBubbleInput","hasConsumerStoppedPropagationRef","isFormControl","closest","context","isFunction","SwitchTrigger","onClick","switchProps","button","type","getState","prevChecked","isPropagationStopped","stopPropagation","Switch","SwitchBubbleInput","THUMB_NAME","SwitchThumb","thumbProps","span","BUBBLE_INPUT_NAME","controlSize","input","inputProto","window","HTMLInputElement","prototype","descriptor","Object","getOwnPropertyDescriptor","set","bubbles","Event","call","dispatchEvent","defaultCheckedRef","tabIndex","style","position","pointerEvents","opacity","margin","transform","badgeVariants","variants","variant","default","secondary","destructive","outline","defaultVariants","Badge","asChild","Comp","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","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","abort","run","ctrl","AbortController","final","prev","line","message","msg","String","aborted"],"mappings":"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","ignoreList":[0,1,5,8,10,12]}
@@ -1,3 +1,3 @@
1
- module.exports=[965733,a=>{"use strict";var b=a.i(187924),c=a.i(897942),d=a.i(422262),e=a.i(497895);function f({...a}){return(0,b.jsx)(c.Portal,{"data-slot":"dialog-portal",...a})}function g({className:a,...d}){return(0,b.jsx)(c.Overlay,{"data-slot":"dialog-overlay",className:(0,e.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",a),...d})}a.s(["Dialog",0,function({...a}){return(0,b.jsx)(c.Root,{"data-slot":"dialog",...a})},"DialogContent",0,function({className:a,children:h,showCloseButton:i=!0,...j}){return(0,b.jsxs)(f,{"data-slot":"dialog-portal",children:[(0,b.jsx)(g,{}),(0,b.jsxs)(c.Content,{"data-slot":"dialog-content",className:(0,e.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 outline-none sm:max-w-lg",a),...j,children:[h,i&&(0,b.jsxs)(c.Close,{"data-slot":"dialog-close",className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",children:[(0,b.jsx)(d.XIcon,{}),(0,b.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})},"DialogDescription",0,function({className:a,...d}){return(0,b.jsx)(c.Description,{"data-slot":"dialog-description",className:(0,e.cn)("text-muted-foreground text-sm",a),...d})},"DialogFooter",0,function({className:a,...c}){return(0,b.jsx)("div",{"data-slot":"dialog-footer",className:(0,e.cn)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",a),...c})},"DialogHeader",0,function({className:a,...c}){return(0,b.jsx)("div",{"data-slot":"dialog-header",className:(0,e.cn)("flex flex-col gap-2 text-center sm:text-left",a),...c})},"DialogTitle",0,function({className:a,...d}){return(0,b.jsx)(c.Title,{"data-slot":"dialog-title",className:(0,e.cn)("text-lg leading-none font-semibold",a),...d})}])},254161,a=>{"use strict";var b=a.i(187924),c=a.i(811011),d=a.i(400187),e=a.i(497895);let f=(0,d.cva)("inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"}},defaultVariants:{variant:"default"}});a.s(["Badge",0,function({className:a,variant:d,asChild:g=!1,...h}){let i=g?c.Slot:"span";return(0,b.jsx)(i,{"data-slot":"badge",className:(0,e.cn)(f({variant:d}),a),...h})}])},167079,a=>{"use strict";let b=(0,a.i(349682).defineResource)({path:"/logs/generations",key:"logs",staleTime:3e4});a.s(["logs",0,b])},324546,a=>{"use strict";var b=a.i(370025),c=a.i(433217),d=a.i(349682),e=a.i(262477);let f=(0,d.defineResource)({path:"/providers",key:"providers",listShape:"array",staleTime:6e4,invalidates:["models"]}),g={...f,listModels:a=>(0,e.fetcher)(`/providers/${encodeURIComponent(a)}/models`),reload:()=>(0,e.fetcher)("/providers/reload",{method:"POST"}),check:a=>(0,e.fetcher)(`/providers/${encodeURIComponent(a)}/check`,{method:"POST"}),probe:a=>(0,e.fetcher)("/providers/probe",{method:"POST",body:JSON.stringify({health_check_url:a}),headers:{"Content-Type":"application/json"}}),useModels:a=>(0,c.useQuery)({queryKey:[...f.keys.one(a??""),"models"],queryFn:()=>g.listModels(a),enabled:!!a}),useReload:a=>{let c=f.useInvalidate();return(0,b.useMutation)({mutationFn:g.reload,...a,onSuccess:(b,d,e,f)=>{c(),a?.onSuccess?.(b,d,e,f)}})},useCheck:(a,c)=>{let d=f.useInvalidate();return(0,b.useMutation)({mutationFn:()=>g.check(a),...c,onSuccess:(a,b,e,f)=>{d(),c?.onSuccess?.(a,b,e,f)}})}};a.s(["providers",0,g])},440955,a=>{"use strict";let b=(0,a.i(349682).defineResource)({path:"/users",key:"users",staleTime:6e4});a.s(["users",0,b])},506122,187527,145116,74761,842698,a=>{"use strict";a.i(440955),a.i(324546),a.i(524634),a.i(298509),a.i(167079),a.i(812213);var b=a.i(349682);let c=(0,b.defineResource)({path:"/capabilities",key:"capabilities",listShape:"array",staleTime:6e4});a.s(["capabilities",0,c],187527);let d=(0,b.defineResource)({path:"/adapters",key:"adapters",listShape:"array",staleTime:6e4});a.s(["adapters",0,d],145116);let e=(0,b.defineResource)({path:"/variants",key:"variants",listShape:"array",staleTime:6e4});a.s(["variants",0,e],74761);let f=(0,b.defineResource)({path:"/tools",key:"tools",listShape:"array",staleTime:6e4});a.s(["tools",0,f],842698),a.i(339220),a.s([],506122)},812213,a=>{"use strict";var b=a.i(941579),c=a.i(774684),d=class extends b.QueryObserver{constructor(a,b){super(a,b)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(a){a._type="infinite",super.setOptions(a)}getOptimisticResult(a){return a._type="infinite",super.getOptimisticResult(a)}fetchNextPage(a){return this.fetch({...a,meta:{fetchMore:{direction:"forward"}}})}fetchPreviousPage(a){return this.fetch({...a,meta:{fetchMore:{direction:"backward"}}})}createResult(a,b){let{state:d}=a,e=super.createResult(a,b),{isFetching:f,isRefetching:g,isError:h,isRefetchError:i}=e,j=d.fetchMeta?.fetchMore?.direction,k=h&&"forward"===j,l=f&&"forward"===j,m=h&&"backward"===j,n=f&&"backward"===j;return{...e,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:(0,c.hasNextPage)(b,d.data),hasPreviousPage:(0,c.hasPreviousPage)(b,d.data),isFetchNextPageError:k,isFetchingNextPage:l,isFetchPreviousPageError:m,isFetchingPreviousPage:n,isRefetchError:i&&!k&&!m,isRefetching:g&&!l&&!n}}},e=a.i(36339),f=a.i(937927),g=a.i(349682),h=a.i(262477);let i=(0,g.defineResource)({path:"/conversations",key:"conversations",paramsOf:a=>({page:a.page??1,page_size:a.page_size??20,sort:a.sort??"-updated_at",keyword:a.keyword}),staleTime:6e4}),j={...i,updateTitle:(a,b)=>i.update(a,{title:b}),messagesCacheKey:function(a,b){return[...i.keys.one(a),"messages-cache",b]},useInvalidateList:()=>{let a=(0,f.useQueryClient)();return()=>a.invalidateQueries({queryKey:i.keys.all(),predicate:a=>{let b=a.queryKey;return b.length>=2&&("list"===b[1]||"infinite"===b[1])}})},useInfinite:a=>{var b;let c=a?.pageSize??20,f=a?.keyword?.trim()||void 0;return b={queryKey:[...i.keys.all(),"infinite",a?.scope??"default",c,f??""],initialPageParam:1,queryFn:({pageParam:a=1})=>i.list({page:a,page_size:c,keyword:f}),getNextPageParam:a=>{if(a)return a.page*a.page_size<a.total?a.page+1:void 0}},(0,e.useBaseQuery)(b,d,void 0)},listMessages:(a,b)=>(0,h.fetcher)(`/conversations/${encodeURIComponent(a)}/messages?`+new URLSearchParams({page:String(b?.page??1),page_size:String(b?.page_size??50),sort:b?.sort??"-created_at"}).toString())},k=["messages"];a.s(["conversations",0,j,"messages",0,{keys:{all:()=>k},rate:(a,b,c)=>(0,h.fetcher)(`/messages/${encodeURIComponent(a)}/rate`,{method:"POST",body:JSON.stringify({rating:b,feedback:c})})}],812213)},339220,a=>{"use strict";var b=a.i(370025),c=a.i(433217),d=a.i(937927),e=a.i(349682),f=a.i(262477);let g=(0,e.defineResource)({path:"/mcp/servers",key:"mcp-servers",listShape:"array",staleTime:6e4}),h={...g,listPresets:()=>(0,f.fetcher)("/mcp/presets"),usePresets:()=>(0,c.useQuery)({queryKey:["mcp-presets"],queryFn:()=>h.listPresets(),staleTime:3e5}),check:a=>(0,f.fetcher)(`/mcp/servers/${encodeURIComponent(a)}/check`,{method:"POST"}),useCheck:a=>{let c=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:a=>h.check(a),onSuccess:b=>{c.invalidateQueries({queryKey:g.keys.all()}),a?.onSuccess?.(b)},onError:b=>a?.onError?.(b)})}};a.s(["mcpServers",0,h])},699464,a=>{"use strict";let b=(0,a.i(883706).default)("pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);a.s(["Pencil",0,b],699464)},280281,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(507554),e=a.i(470121),f=a.i(750104),g=a.i(225152),h=a.i(77994),i=a.i(3688),j=a.i(30553),k="Switch",[l,m]=(0,f.createContextScope)(k),[n,o]=l(k);function p(a){let{__scopeSwitch:d,checked:e,children:f,defaultChecked:h,disabled:i,form:j,name:l,onCheckedChange:m,required:o,value:p="on",internal_do_not_use_render:q}=a,[r,s]=(0,g.useControllableState)({prop:e,defaultProp:h??!1,onChange:m,caller:k}),[t,u]=c.useState(null),[v,w]=c.useState(null),x=c.useRef(!1),y=!t||!!j||!!t.closest("form"),z={checked:r,setChecked:s,disabled:i,control:t,setControl:u,name:l,form:j,value:p,hasConsumerStoppedPropagationRef:x,required:o,defaultChecked:h,isFormControl:y,bubbleInput:v,setBubbleInput:w};return(0,b.jsx)(n,{scope:d,...z,children:"function"==typeof q?q(z):f})}var q="SwitchTrigger",r=c.forwardRef(({__scopeSwitch:a,onClick:c,...f},g)=>{let{value:h,disabled:i,checked:k,required:l,setControl:m,setChecked:n,hasConsumerStoppedPropagationRef:p,isFormControl:r,bubbleInput:s}=o(q,a),t=(0,e.useComposedRefs)(g,m);return(0,b.jsx)(j.Primitive.button,{type:"button",role:"switch","aria-checked":k,"aria-required":l,"data-state":x(k),"data-disabled":i?"":void 0,disabled:i,value:h,...f,ref:t,onClick:(0,d.composeEventHandlers)(c,a=>{n(a=>!a),s&&r&&(p.current=a.isPropagationStopped(),p.current||a.stopPropagation())})})});r.displayName=q;var s=c.forwardRef((a,c)=>{let{__scopeSwitch:d,name:e,checked:f,defaultChecked:g,required:h,disabled:i,value:j,onCheckedChange:k,form:l,...m}=a;return(0,b.jsx)(p,{__scopeSwitch:d,checked:f,defaultChecked:g,disabled:i,required:h,onCheckedChange:k,name:e,form:l,value:j,internal_do_not_use_render:({isFormControl:a})=>(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(r,{...m,ref:c,__scopeSwitch:d}),a&&(0,b.jsx)(w,{__scopeSwitch:d})]})})});s.displayName=k;var t="SwitchThumb",u=c.forwardRef((a,c)=>{let{__scopeSwitch:d,...e}=a,f=o(t,d);return(0,b.jsx)(j.Primitive.span,{"data-state":x(f.checked),"data-disabled":f.disabled?"":void 0,...e,ref:c})});u.displayName=t;var v="SwitchBubbleInput",w=c.forwardRef(({__scopeSwitch:a,...d},f)=>{let{control:g,hasConsumerStoppedPropagationRef:k,checked:l,defaultChecked:m,required:n,disabled:p,name:q,value:r,form:s,bubbleInput:t,setBubbleInput:u}=o(v,a),w=(0,e.useComposedRefs)(f,u),x=(0,h.usePrevious)(l),y=(0,i.useSize)(g);c.useEffect(()=>{if(!t)return;let a=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set,b=!k.current;if(x!==l&&a){let c=new Event("click",{bubbles:b});a.call(t,l),t.dispatchEvent(c)}},[t,x,l,k]);let z=c.useRef(l);return(0,b.jsx)(j.Primitive.input,{type:"checkbox","aria-hidden":!0,defaultChecked:m??z.current,required:n,disabled:p,name:q,value:r,form:s,...d,tabIndex:-1,ref:w,style:{...d.style,...y,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});function x(a){return a?"checked":"unchecked"}w.displayName=v;var y=a.i(497895);a.s(["Switch",0,function({className:a,...c}){return(0,b.jsx)(s,{"data-slot":"switch",className:(0,y.cn)("peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",a),...c,children:(0,b.jsx)(u,{"data-slot":"switch-thumb",className:(0,y.cn)("bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0")})})}],280281)},546893,a=>{"use strict";var b=a.i(187924),c=a.i(497895);a.s(["Textarea",0,function({className:a,...d}){return(0,b.jsx)("textarea",{"data-slot":"textarea",className:(0,c.cn)("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",a),...d})}])}];
1
+ module.exports=[965733,a=>{"use strict";var b=a.i(187924),c=a.i(897942),d=a.i(422262),e=a.i(497895);function f({...a}){return(0,b.jsx)(c.Portal,{"data-slot":"dialog-portal",...a})}function g({className:a,...d}){return(0,b.jsx)(c.Overlay,{"data-slot":"dialog-overlay",className:(0,e.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",a),...d})}a.s(["Dialog",0,function({...a}){return(0,b.jsx)(c.Root,{"data-slot":"dialog",...a})},"DialogContent",0,function({className:a,children:h,showCloseButton:i=!0,...j}){return(0,b.jsxs)(f,{"data-slot":"dialog-portal",children:[(0,b.jsx)(g,{}),(0,b.jsxs)(c.Content,{"data-slot":"dialog-content",className:(0,e.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 outline-none sm:max-w-lg",a),...j,children:[h,i&&(0,b.jsxs)(c.Close,{"data-slot":"dialog-close",className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",children:[(0,b.jsx)(d.XIcon,{}),(0,b.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})},"DialogDescription",0,function({className:a,...d}){return(0,b.jsx)(c.Description,{"data-slot":"dialog-description",className:(0,e.cn)("text-muted-foreground text-sm",a),...d})},"DialogFooter",0,function({className:a,...c}){return(0,b.jsx)("div",{"data-slot":"dialog-footer",className:(0,e.cn)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",a),...c})},"DialogHeader",0,function({className:a,...c}){return(0,b.jsx)("div",{"data-slot":"dialog-header",className:(0,e.cn)("flex flex-col gap-2 text-center sm:text-left",a),...c})},"DialogTitle",0,function({className:a,...d}){return(0,b.jsx)(c.Title,{"data-slot":"dialog-title",className:(0,e.cn)("text-lg leading-none font-semibold",a),...d})}])},254161,a=>{"use strict";var b=a.i(187924),c=a.i(811011),d=a.i(400187),e=a.i(497895);let f=(0,d.cva)("inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"}},defaultVariants:{variant:"default"}});a.s(["Badge",0,function({className:a,variant:d,asChild:g=!1,...h}){let i=g?c.Slot:"span";return(0,b.jsx)(i,{"data-slot":"badge",className:(0,e.cn)(f({variant:d}),a),...h})}])},167079,a=>{"use strict";let b=(0,a.i(349682).defineResource)({path:"/logs/generations",key:"logs",staleTime:3e4});a.s(["logs",0,b])},324546,a=>{"use strict";var b=a.i(370025),c=a.i(433217),d=a.i(349682),e=a.i(262477);let f=(0,d.defineResource)({path:"/providers",key:"providers",listShape:"array",staleTime:6e4,invalidates:["models"]}),g={...f,listModels:a=>(0,e.fetcher)(`/providers/${encodeURIComponent(a)}/models`),reload:()=>(0,e.fetcher)("/providers/reload",{method:"POST"}),check:a=>(0,e.fetcher)(`/providers/${encodeURIComponent(a)}/check`,{method:"POST"}),probe:a=>(0,e.fetcher)("/providers/probe",{method:"POST",body:JSON.stringify({health_check_url:a}),headers:{"Content-Type":"application/json"}}),useModels:a=>(0,c.useQuery)({queryKey:[...f.keys.one(a??""),"models"],queryFn:()=>g.listModels(a),enabled:!!a}),useReload:a=>{let c=f.useInvalidate();return(0,b.useMutation)({mutationFn:g.reload,...a,onSuccess:(b,d,e,f)=>{c(),a?.onSuccess?.(b,d,e,f)}})},useCheck:(a,c)=>{let d=f.useInvalidate();return(0,b.useMutation)({mutationFn:()=>g.check(a),...c,onSuccess:(a,b,e,f)=>{d(),c?.onSuccess?.(a,b,e,f)}})}};a.s(["providers",0,g])},440955,a=>{"use strict";let b=(0,a.i(349682).defineResource)({path:"/users",key:"users",staleTime:6e4});a.s(["users",0,b])},506122,187527,145116,74761,842698,a=>{"use strict";a.i(440955),a.i(324546),a.i(524634),a.i(298509),a.i(167079),a.i(812213);var b=a.i(349682);let c=(0,b.defineResource)({path:"/capabilities",key:"capabilities",listShape:"array",staleTime:6e4});a.s(["capabilities",0,c],187527);let d=(0,b.defineResource)({path:"/adapters",key:"adapters",listShape:"array",staleTime:6e4});a.s(["adapters",0,d],145116);let e=(0,b.defineResource)({path:"/variants",key:"variants",listShape:"array",staleTime:6e4});a.s(["variants",0,e],74761);let f=(0,b.defineResource)({path:"/tools",key:"tools",listShape:"array",staleTime:6e4});a.s(["tools",0,f],842698),a.i(339220),a.s([],506122)},812213,a=>{"use strict";var b=a.i(941579),c=a.i(774684),d=class extends b.QueryObserver{constructor(a,b){super(a,b)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(a){a._type="infinite",super.setOptions(a)}getOptimisticResult(a){return a._type="infinite",super.getOptimisticResult(a)}fetchNextPage(a){return this.fetch({...a,meta:{fetchMore:{direction:"forward"}}})}fetchPreviousPage(a){return this.fetch({...a,meta:{fetchMore:{direction:"backward"}}})}createResult(a,b){let{state:d}=a,e=super.createResult(a,b),{isFetching:f,isRefetching:g,isError:h,isRefetchError:i}=e,j=d.fetchMeta?.fetchMore?.direction,k=h&&"forward"===j,l=f&&"forward"===j,m=h&&"backward"===j,n=f&&"backward"===j;return{...e,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:(0,c.hasNextPage)(b,d.data),hasPreviousPage:(0,c.hasPreviousPage)(b,d.data),isFetchNextPageError:k,isFetchingNextPage:l,isFetchPreviousPageError:m,isFetchingPreviousPage:n,isRefetchError:i&&!k&&!m,isRefetching:g&&!l&&!n}}},e=a.i(36339),f=a.i(937927),g=a.i(349682),h=a.i(262477);let i=(0,g.defineResource)({path:"/conversations",key:"conversations",paramsOf:a=>({page:a.page??1,page_size:a.page_size??20,sort:a.sort??"-updated_at",keyword:a.keyword}),staleTime:6e4}),j={...i,updateTitle:(a,b)=>i.update(a,{title:b}),messagesCacheKey:function(a,b){return[...i.keys.one(a),"messages-cache",b]},useInvalidateList:()=>{let a=(0,f.useQueryClient)();return()=>a.invalidateQueries({queryKey:i.keys.all(),predicate:a=>{let b=a.queryKey;return b.length>=2&&("list"===b[1]||"infinite"===b[1])}})},useInfinite:a=>{var b;let c=a?.pageSize??20,f=a?.keyword?.trim()||void 0;return b={queryKey:[...i.keys.all(),"infinite",a?.scope??"default",c,f??""],initialPageParam:1,queryFn:({pageParam:a=1})=>i.list({page:a,page_size:c,keyword:f}),getNextPageParam:a=>{if(a)return a.page*a.page_size<a.total?a.page+1:void 0}},(0,e.useBaseQuery)(b,d,void 0)},listMessages:(a,b)=>(0,h.fetcher)(`/conversations/${encodeURIComponent(a)}/messages?`+new URLSearchParams({page:String(b?.page??1),page_size:String(b?.page_size??50),sort:b?.sort??"-created_at"}).toString())},k=["messages"];a.s(["conversations",0,j,"messages",0,{keys:{all:()=>k},rate:(a,b,c)=>(0,h.fetcher)(`/messages/${encodeURIComponent(a)}/rate`,{method:"POST",body:JSON.stringify({rating:b,feedback:c})})}],812213)},339220,a=>{"use strict";var b=a.i(370025),c=a.i(433217),d=a.i(937927),e=a.i(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})}])}];
2
2
 
3
3
  //# sourceMappingURL=_1b09eqp._.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../components/ui/dialog.tsx","../../../../components/ui/badge.tsx","../../../../lib/api/logs.ts","../../../../lib/api/providers.ts","../../../../lib/api/users.ts","../../../../lib/api/index.ts","../../../../lib/api/capabilities.ts","../../../../lib/api/adapters.ts","../../../../lib/api/variants.ts","../../../../lib/api/tools.ts","../../../../node_modules/%40tanstack/react-query/build/modern/useInfiniteQuery.js","../../../../lib/api/conversations.ts","../../../../node_modules/%40tanstack/query-core/build/modern/infiniteQueryObserver.js","../../../../lib/api/mcp.ts","../../../../node_modules/lucide-react/src/icons/pencil.ts","../../../../node_modules/%40radix-ui/react-switch/dist/index.mjs","../../../../components/ui/switch.tsx","../../../../components/ui/textarea.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { XIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 outline-none sm:max-w-lg\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n \"inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\n destructive:\n \"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant,\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"span\"\n\n return (\n <Comp\n data-slot=\"badge\"\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nexport { Badge, badgeVariants }\n","import { defineResource } from \"./resource\";\nimport type { Paginated } from \"@/lib/schemas/common\";\nimport type { LogDetailDTO, LogFilterParams, LogListItemDTO } from \"@/lib/schemas/log\";\n\n/** Read-only resource: only list + get are used. */\nexport const logs = defineResource<\n LogDetailDTO,\n never,\n never,\n LogFilterParams,\n Paginated<LogListItemDTO>\n>({\n path: \"/logs/generations\",\n key: \"logs\",\n // Logs change as new generations happen, but for the same filter\n // a 30s cache is fine — the user can hit the explicit Refresh\n // button to force a refetch. Stops re-fetching on every nav back\n // to the page within a session.\n staleTime: 30_000,\n});\n","\"use client\";\nimport { useMutation, useQuery, useQueryClient, type UseMutationOptions } from \"@tanstack/react-query\";\nimport { defineResource } from \"./resource\";\nimport { fetcher } from \"./client\";\nimport type { ModelDTO } from \"@/lib/schemas/model\";\nimport type { ProviderCreateInput, ProviderDTO, ProviderUpdateInput } from \"@/lib/schemas/provider\";\n\nconst base = defineResource<\n ProviderDTO,\n ProviderCreateInput,\n ProviderUpdateInput,\n Record<string, unknown>,\n ProviderDTO[]\n>({\n path: \"/providers\",\n key: \"providers\",\n listShape: \"array\",\n staleTime: 60_000,\n invalidates: [\"models\"],\n});\n\nexport interface ProviderCheckResult {\n ok: boolean;\n models?: number;\n error?: string;\n latency_ms?: number;\n}\n\nexport interface ProviderProbeResult {\n ok: boolean;\n error?: string;\n latency_ms: number;\n}\n\nexport const providers = {\n ...base,\n\n // ---- custom endpoints ----\n listModels: (id: string) =>\n fetcher<ModelDTO[]>(`/providers/${encodeURIComponent(id)}/models`),\n reload: () =>\n fetcher<null>(\"/providers/reload\", { method: \"POST\" }),\n check: (id: string) =>\n fetcher<ProviderCheckResult>(\n `/providers/${encodeURIComponent(id)}/check`,\n { method: \"POST\" },\n ),\n /** Probe an arbitrary health-check URL without touching any saved\n * provider — used by the form's Test button so it validates the\n * URL currently in the input, not the (possibly stale) saved one. */\n probe: (healthCheckUrl: string) =>\n fetcher<ProviderProbeResult>(\"/providers/probe\", {\n method: \"POST\",\n body: JSON.stringify({ health_check_url: healthCheckUrl }),\n headers: { \"Content-Type\": \"application/json\" },\n }),\n\n // ---- custom hooks ----\n useModels: (id: string | undefined | null) =>\n useQuery({\n queryKey: [...base.keys.one(id ?? \"\"), \"models\"] as const,\n queryFn: () => providers.listModels(id!),\n enabled: !!id,\n }),\n\n /** POST /providers/reload — clears the discovery cache. Cascades same\n * invalidation as a CRUD mutation (providers + models). */\n useReload: (opts?: Omit<UseMutationOptions<null, Error, void>, \"mutationFn\">) => {\n const invalidate = base.useInvalidate();\n return useMutation<null, Error, void>({\n mutationFn: providers.reload,\n ...opts,\n onSuccess: (data, vars, onMutateResult, context) => {\n invalidate();\n opts?.onSuccess?.(data, vars, onMutateResult, context);\n },\n });\n },\n\n /** POST /providers/:id/check — runs the health probe. On success the\n * server has updated `last_health_*`, so we invalidate the providers\n * cache to surface the new status pill. */\n useCheck: (\n id: string | undefined | null,\n opts?: Omit<UseMutationOptions<ProviderCheckResult, Error, void>, \"mutationFn\">,\n ) => {\n const invalidate = base.useInvalidate();\n return useMutation<ProviderCheckResult, Error, void>({\n mutationFn: () => providers.check(id!),\n ...opts,\n onSuccess: (data, vars, onMutateResult, context) => {\n invalidate();\n opts?.onSuccess?.(data, vars, onMutateResult, context);\n },\n });\n },\n};\n","import { defineResource } from \"./resource\";\nimport type { Paginated } from \"@/lib/schemas/common\";\nimport type { UserCreateInput, UserDTO, UserFilterParams, UserUpdateInput } from \"@/lib/schemas/user\";\n\nexport const users = defineResource<\n UserDTO,\n UserCreateInput,\n UserUpdateInput,\n UserFilterParams,\n Paginated<UserDTO>\n>({\n path: \"/users\",\n key: \"users\",\n staleTime: 60_000,\n});\n","// Per-domain api modules. Each `*Resource` object exposes both raw fetch\n// functions and TanStack Query hooks generated from a single descriptor —\n// see lib/api/resource.ts. Custom (non-CRUD) endpoints are colocated in\n// the same module.\n\nexport { auth } from \"./auth\";\nexport { users } from \"./users\";\nexport { providers } from \"./providers\";\nexport { models } from \"./models\";\nexport { apiKeys } from \"./apikeys\";\nexport { logs } from \"./logs\";\nexport { conversations, messages } from \"./conversations\";\nexport { gateway } from \"./gateway\";\nexport { capabilities } from \"./capabilities\";\nexport { preferences } from \"./preferences\";\nexport { adapters } from \"./adapters\";\nexport { variants } from \"./variants\";\nexport { tools } from \"./tools\";\nexport { mcpServers } from \"./mcp\";\nexport { stats } from \"./stats\";\n\nexport { ApiError, fetcher, rawFetch, withQuery, API_BASE } from \"./client\";\nexport { defineResource } from \"./resource\";\n","import { defineResource } from \"./resource\";\nimport type { CapabilityDTO } from \"@/lib/schemas/capability\";\n\n/** Read-only catalog. */\nexport const capabilities = defineResource<\n CapabilityDTO,\n never,\n never,\n Record<string, unknown>,\n CapabilityDTO[]\n>({\n path: \"/capabilities\",\n key: \"capabilities\",\n listShape: \"array\",\n staleTime: 60_000,\n});\n","import { defineResource } from \"./resource\";\nimport type { AdapterDescriptor } from \"@/lib/schemas/adapter\";\n\n/** Read-only catalog of registered ProviderAdapter ids. */\nexport const adapters = defineResource<\n AdapterDescriptor,\n never,\n never,\n Record<string, unknown>,\n AdapterDescriptor[]\n>({\n path: \"/adapters\",\n key: \"adapters\",\n listShape: \"array\",\n staleTime: 60_000,\n});\n","import { defineResource } from \"./resource\";\nimport type { VariantDescriptor } from \"@/lib/schemas/variant\";\n\n/** Read-only catalog of registered upstream API variants. */\nexport const variants = defineResource<\n VariantDescriptor,\n never,\n never,\n Record<string, unknown>,\n VariantDescriptor[]\n>({\n path: \"/variants\",\n key: \"variants\",\n listShape: \"array\",\n staleTime: 60_000,\n});\n","import { defineResource } from \"./resource\";\nimport type { ToolCreateInput, ToolDTO, ToolUpdateInput } from \"@/lib/schemas/tool\";\n\nexport const tools = defineResource<\n ToolDTO,\n ToolCreateInput,\n ToolUpdateInput,\n Record<string, unknown>,\n ToolDTO[]\n>({\n path: \"/tools\",\n key: \"tools\",\n listShape: \"array\",\n staleTime: 60_000,\n});\n","\"use client\";\n\n// src/useInfiniteQuery.ts\nimport { InfiniteQueryObserver } from \"@tanstack/query-core\";\nimport { useBaseQuery } from \"./useBaseQuery.js\";\nfunction useInfiniteQuery(options, queryClient) {\n return useBaseQuery(\n options,\n InfiniteQueryObserver,\n queryClient\n );\n}\nexport {\n useInfiniteQuery\n};\n//# sourceMappingURL=useInfiniteQuery.js.map","\"use client\";\nimport { useInfiniteQuery, useQueryClient } from \"@tanstack/react-query\";\nimport { defineResource } from \"./resource\";\nimport { fetcher } from \"./client\";\nimport type { Paginated } from \"@/lib/schemas/common\";\nimport type { ConversationDTO, MessageDTO } from \"@/lib/schemas/conversation\";\n\nconst base = defineResource<\n ConversationDTO,\n never,\n { title: string },\n { page?: number; page_size?: number; sort?: string; keyword?: string },\n Paginated<ConversationDTO>\n>({\n path: \"/conversations\",\n key: \"conversations\",\n paramsOf: (q) => ({\n page: q.page ?? 1,\n page_size: q.page_size ?? 20,\n sort: q.sort ?? \"-updated_at\",\n keyword: q.keyword,\n }),\n // List + get are read-mostly; users rarely care about millisecond\n // freshness here. 60s lets nav back to the sidebar / chat skip\n // a network round-trip — mutations explicit-invalidate anyway.\n staleTime: 60_000,\n});\n\n/** Cache key for the initial page of messages of a single conversation.\n * Lives under the conversation resource so it gets gc'd if the resource\n * is gc'd, but is isolated from list/infinite queries so we can invalidate\n * list-only without dropping the message cache. */\nexport function messagesCacheKey(conversationId: string, pageSize: number) {\n return [...base.keys.one(conversationId), \"messages-cache\", pageSize] as const;\n}\n\nexport const conversations = {\n ...base,\n\n // ---- shorthand: title-only update ----\n updateTitle: (id: string, title: string) => base.update(id, { title }),\n\n // ---- shared message cache key (used by usePaginatedMessages / sync) ----\n messagesCacheKey,\n\n /** Invalidate only the conversation LIST queries (list/infinite),\n * leaving the per-conversation messages cache intact. */\n useInvalidateList: () => {\n const qc = useQueryClient();\n return () => qc.invalidateQueries({\n queryKey: base.keys.all(),\n predicate: (q) => {\n const k = q.queryKey as readonly unknown[];\n return k.length >= 2 && (k[1] === \"list\" || k[1] === \"infinite\");\n },\n });\n },\n\n // ---- infinite scroll variant of useList ----\n useInfinite: (params?: { pageSize?: number; scope?: string; keyword?: string }) => {\n const pageSize = params?.pageSize ?? 20;\n const keyword = params?.keyword?.trim() || undefined;\n return useInfiniteQuery({\n queryKey: [\n ...base.keys.all(),\n \"infinite\",\n params?.scope ?? \"default\",\n pageSize,\n keyword ?? \"\",\n ] as const,\n initialPageParam: 1,\n queryFn: ({ pageParam = 1 }) =>\n base.list({ page: pageParam as number, page_size: pageSize, keyword }),\n getNextPageParam: (lastPage) => {\n if (!lastPage) return undefined;\n const hasMore = lastPage.page * lastPage.page_size < lastPage.total;\n return hasMore ? lastPage.page + 1 : undefined;\n },\n });\n },\n\n // ---- nested: messages under a conversation ----\n listMessages: (id: string, params?: { page?: number; page_size?: number; sort?: string }) =>\n fetcher<Paginated<MessageDTO>>(\n `/conversations/${encodeURIComponent(id)}/messages?` +\n new URLSearchParams({\n page: String(params?.page ?? 1),\n page_size: String(params?.page_size ?? 50),\n sort: params?.sort ?? \"-created_at\",\n }).toString(),\n ),\n};\n\n// Messages are a sibling resource only used for rating today.\nconst messagesKey = [\"messages\"] as const;\nexport const messages = {\n keys: { all: () => messagesKey },\n rate: (messageId: string, rating: \"up\" | \"down\" | \"none\", feedback?: string) =>\n fetcher<null>(`/messages/${encodeURIComponent(messageId)}/rate`, {\n method: \"POST\",\n body: JSON.stringify({ rating, feedback }),\n }),\n};\n","// src/infiniteQueryObserver.ts\nimport { QueryObserver } from \"./queryObserver.js\";\nimport { hasNextPage, hasPreviousPage } from \"./infiniteQueryBehavior.js\";\nvar InfiniteQueryObserver = class extends QueryObserver {\n constructor(client, options) {\n super(client, options);\n }\n bindMethods() {\n super.bindMethods();\n this.fetchNextPage = this.fetchNextPage.bind(this);\n this.fetchPreviousPage = this.fetchPreviousPage.bind(this);\n }\n setOptions(options) {\n options._type = \"infinite\";\n super.setOptions(options);\n }\n getOptimisticResult(options) {\n options._type = \"infinite\";\n return super.getOptimisticResult(options);\n }\n fetchNextPage(options) {\n return this.fetch({\n ...options,\n meta: {\n fetchMore: { direction: \"forward\" }\n }\n });\n }\n fetchPreviousPage(options) {\n return this.fetch({\n ...options,\n meta: {\n fetchMore: { direction: \"backward\" }\n }\n });\n }\n createResult(query, options) {\n const { state } = query;\n const parentResult = super.createResult(query, options);\n const { isFetching, isRefetching, isError, isRefetchError } = parentResult;\n const fetchDirection = state.fetchMeta?.fetchMore?.direction;\n const isFetchNextPageError = isError && fetchDirection === \"forward\";\n const isFetchingNextPage = isFetching && fetchDirection === \"forward\";\n const isFetchPreviousPageError = isError && fetchDirection === \"backward\";\n const isFetchingPreviousPage = isFetching && fetchDirection === \"backward\";\n const result = {\n ...parentResult,\n fetchNextPage: this.fetchNextPage,\n fetchPreviousPage: this.fetchPreviousPage,\n hasNextPage: hasNextPage(options, state.data),\n hasPreviousPage: hasPreviousPage(options, state.data),\n isFetchNextPageError,\n isFetchingNextPage,\n isFetchPreviousPageError,\n isFetchingPreviousPage,\n isRefetchError: isRefetchError && !isFetchNextPageError && !isFetchPreviousPageError,\n isRefetching: isRefetching && !isFetchingNextPage && !isFetchingPreviousPage\n };\n return result;\n }\n};\nexport {\n InfiniteQueryObserver\n};\n//# sourceMappingURL=infiniteQueryObserver.js.map","\"use client\"\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\"\nimport { defineResource } from \"./resource\"\nimport { fetcher } from \"./client\"\nimport type {\n McpPreset,\n McpServerCreateInput,\n McpServerDTO,\n McpServerUpdateInput,\n} from \"@/lib/schemas/mcp\"\n\nconst base = defineResource<\n McpServerDTO,\n McpServerCreateInput,\n McpServerUpdateInput,\n Record<string, unknown>,\n McpServerDTO[]\n>({\n path: \"/mcp/servers\",\n key: \"mcp-servers\",\n listShape: \"array\",\n staleTime: 60_000,\n})\n\nexport const mcpServers = {\n ...base,\n\n // ---- presets ----\n listPresets: () => fetcher<McpPreset[]>(\"/mcp/presets\"),\n usePresets: () =>\n useQuery({\n queryKey: [\"mcp-presets\"] as const,\n queryFn: () => mcpServers.listPresets(),\n staleTime: 5 * 60 * 1000,\n }),\n\n // ---- check ----\n check: (id: string) =>\n fetcher<McpServerDTO>(`/mcp/servers/${encodeURIComponent(id)}/check`, {\n method: \"POST\",\n }),\n useCheck: (opts?: { onSuccess?: (server: McpServerDTO) => void; onError?: (err: Error) => void }) => {\n const qc = useQueryClient()\n return useMutation({\n mutationFn: (id: string) => mcpServers.check(id),\n onSuccess: (server) => {\n qc.invalidateQueries({ queryKey: base.keys.all() })\n opts?.onSuccess?.(server)\n },\n onError: (err: Error) => opts?.onError?.(err),\n })\n },\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z',\n key: '1a8usu',\n },\n ],\n ['path', { d: 'm15 5 4 4', key: '1mk7zo' }],\n];\n\n/**\n * @component @name Pencil\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![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"],"names":["Dialog","props","DialogTrigger","DialogPortal","DialogClose","DialogOverlay","className","DialogContent","children","showCloseButton","DialogHeader","DialogFooter","DialogTitle","DialogDescription","badgeVariants","variants","variant","default","secondary","destructive","outline","defaultVariants","Badge","asChild","Comp","logs","path","key","staleTime","base","listShape","invalidates","providers","listModels","id","encodeURIComponent","reload","method","check","probe","healthCheckUrl","body","JSON","stringify","health_check_url","headers","useModels","queryKey","keys","one","queryFn","enabled","useReload","opts","invalidate","useInvalidate","mutationFn","onSuccess","data","vars","onMutateResult","context","useCheck","users","capabilities","InfiniteQueryObserver","client","options","bindMethods","fetchNextPage","bind","fetchPreviousPage","setOptions","_type","getOptimisticResult","fetch","meta","fetchMore","direction","createResult","query","state","parentResult","isFetching","isRefetching","isError","isRefetchError","fetchDirection","fetchMeta","isFetchNextPageError","isFetchingNextPage","isFetchPreviousPageError","isFetchingPreviousPage","result","hasNextPage","hasPreviousPage","mcpServers","listPresets","usePresets","qc","server","invalidateQueries","all","onError","err","SWITCH_NAME","createSwitchContext","createSwitchScope","SwitchProviderImpl","useSwitchContext","SwitchProvider","__scopeSwitch","checked","checkedProp","defaultChecked","disabled","form","name","onCheckedChange","required","value","internal_do_not_use_render","setChecked","prop","defaultProp","onChange","caller","control","setControl","bubbleInput","setBubbleInput","hasConsumerStoppedPropagationRef","isFormControl","closest","scope","isFunction","TRIGGER_NAME","SwitchTrigger","onClick","switchProps","forwardedRef","composedRefs","button","type","role","getState","ref","event","prevChecked","current","isPropagationStopped","stopPropagation","displayName","Switch","SwitchBubbleInput","THUMB_NAME","SwitchThumb","thumbProps","span","BUBBLE_INPUT_NAME","controlSize","input","inputProto","window","HTMLInputElement","prototype","descriptor","Object","getOwnPropertyDescriptor","set","bubbles","Event","call","dispatchEvent","defaultCheckedRef","tabIndex","style","position","pointerEvents","opacity","margin","transform","Textarea"],"mappings":"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","ignoreList":[10,12,14,15]}
1
+ {"version":3,"sources":["../../../../components/ui/dialog.tsx","../../../../components/ui/badge.tsx","../../../../lib/api/logs.ts","../../../../lib/api/providers.ts","../../../../lib/api/users.ts","../../../../lib/api/index.ts","../../../../lib/api/capabilities.ts","../../../../lib/api/adapters.ts","../../../../lib/api/variants.ts","../../../../lib/api/tools.ts","../../../../node_modules/%40tanstack/react-query/build/modern/useInfiniteQuery.js","../../../../lib/api/conversations.ts","../../../../node_modules/%40tanstack/query-core/build/modern/infiniteQueryObserver.js","../../../../lib/api/mcp.ts","../../../../node_modules/lucide-react/src/icons/pencil.ts","../../../../node_modules/%40radix-ui/react-switch/dist/index.mjs","../../../../components/ui/switch.tsx","../../../../components/ui/textarea.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { XIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 outline-none sm:max-w-lg\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n \"inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\n destructive:\n \"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant,\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"span\"\n\n return (\n <Comp\n data-slot=\"badge\"\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nexport { Badge, badgeVariants }\n","import { defineResource } from \"./resource\";\nimport type { Paginated } from \"@/lib/schemas/common\";\nimport type { LogDetailDTO, LogFilterParams, LogListItemDTO } from \"@/lib/schemas/log\";\n\n/** Read-only resource: only list + get are used. */\nexport const logs = defineResource<\n LogDetailDTO,\n never,\n never,\n LogFilterParams,\n Paginated<LogListItemDTO>\n>({\n path: \"/logs/generations\",\n key: \"logs\",\n // Logs change as new generations happen, but for the same filter\n // a 30s cache is fine — the user can hit the explicit Refresh\n // button to force a refetch. Stops re-fetching on every nav back\n // to the page within a session.\n staleTime: 30_000,\n});\n","\"use client\";\nimport { useMutation, useQuery, useQueryClient, type UseMutationOptions } from \"@tanstack/react-query\";\nimport { defineResource } from \"./resource\";\nimport { fetcher } from \"./client\";\nimport type { ModelDTO } from \"@/lib/schemas/model\";\nimport type { ProviderCreateInput, ProviderDTO, ProviderUpdateInput } from \"@/lib/schemas/provider\";\n\nconst base = defineResource<\n ProviderDTO,\n ProviderCreateInput,\n ProviderUpdateInput,\n Record<string, unknown>,\n ProviderDTO[]\n>({\n path: \"/providers\",\n key: \"providers\",\n listShape: \"array\",\n staleTime: 60_000,\n invalidates: [\"models\"],\n});\n\nexport interface ProviderCheckResult {\n ok: boolean;\n models?: number;\n error?: string;\n latency_ms?: number;\n}\n\nexport interface ProviderProbeResult {\n ok: boolean;\n error?: string;\n latency_ms: number;\n}\n\nexport const providers = {\n ...base,\n\n // ---- custom endpoints ----\n listModels: (id: string) =>\n fetcher<ModelDTO[]>(`/providers/${encodeURIComponent(id)}/models`),\n reload: () =>\n fetcher<null>(\"/providers/reload\", { method: \"POST\" }),\n check: (id: string) =>\n fetcher<ProviderCheckResult>(\n `/providers/${encodeURIComponent(id)}/check`,\n { method: \"POST\" },\n ),\n /** Probe an arbitrary health-check URL without touching any saved\n * provider — used by the form's Test button so it validates the\n * URL currently in the input, not the (possibly stale) saved one. */\n probe: (healthCheckUrl: string) =>\n fetcher<ProviderProbeResult>(\"/providers/probe\", {\n method: \"POST\",\n body: JSON.stringify({ health_check_url: healthCheckUrl }),\n headers: { \"Content-Type\": \"application/json\" },\n }),\n\n // ---- custom hooks ----\n useModels: (id: string | undefined | null) =>\n useQuery({\n queryKey: [...base.keys.one(id ?? \"\"), \"models\"] as const,\n queryFn: () => providers.listModels(id!),\n enabled: !!id,\n }),\n\n /** POST /providers/reload — clears the discovery cache. Cascades same\n * invalidation as a CRUD mutation (providers + models). */\n useReload: (opts?: Omit<UseMutationOptions<null, Error, void>, \"mutationFn\">) => {\n const invalidate = base.useInvalidate();\n return useMutation<null, Error, void>({\n mutationFn: providers.reload,\n ...opts,\n onSuccess: (data, vars, onMutateResult, context) => {\n invalidate();\n opts?.onSuccess?.(data, vars, onMutateResult, context);\n },\n });\n },\n\n /** POST /providers/:id/check — runs the health probe. On success the\n * server has updated `last_health_*`, so we invalidate the providers\n * cache to surface the new status pill. */\n useCheck: (\n id: string | undefined | null,\n opts?: Omit<UseMutationOptions<ProviderCheckResult, Error, void>, \"mutationFn\">,\n ) => {\n const invalidate = base.useInvalidate();\n return useMutation<ProviderCheckResult, Error, void>({\n mutationFn: () => providers.check(id!),\n ...opts,\n onSuccess: (data, vars, onMutateResult, context) => {\n invalidate();\n opts?.onSuccess?.(data, vars, onMutateResult, context);\n },\n });\n },\n};\n","import { defineResource } from \"./resource\";\nimport type { Paginated } from \"@/lib/schemas/common\";\nimport type { UserCreateInput, UserDTO, UserFilterParams, UserUpdateInput } from \"@/lib/schemas/user\";\n\nexport const users = defineResource<\n UserDTO,\n UserCreateInput,\n UserUpdateInput,\n UserFilterParams,\n Paginated<UserDTO>\n>({\n path: \"/users\",\n key: \"users\",\n staleTime: 60_000,\n});\n","// Per-domain api modules. Each `*Resource` object exposes both raw fetch\n// functions and TanStack Query hooks generated from a single descriptor —\n// see lib/api/resource.ts. Custom (non-CRUD) endpoints are colocated in\n// the same module.\n\nexport { auth } from \"./auth\";\nexport { users } from \"./users\";\nexport { providers } from \"./providers\";\nexport { models } from \"./models\";\nexport { apiKeys } from \"./apikeys\";\nexport { logs } from \"./logs\";\nexport { conversations, messages } from \"./conversations\";\nexport { gateway } from \"./gateway\";\nexport { capabilities } from \"./capabilities\";\nexport { preferences } from \"./preferences\";\nexport { adapters } from \"./adapters\";\nexport { variants } from \"./variants\";\nexport { tools } from \"./tools\";\nexport { mcpServers } from \"./mcp\";\nexport { stats } from \"./stats\";\n\nexport { ApiError, fetcher, rawFetch, withQuery, API_BASE } from \"./client\";\nexport { defineResource } from \"./resource\";\n","import { defineResource } from \"./resource\";\nimport type { CapabilityDTO } from \"@/lib/schemas/capability\";\n\n/** Read-only catalog. */\nexport const capabilities = defineResource<\n CapabilityDTO,\n never,\n never,\n Record<string, unknown>,\n CapabilityDTO[]\n>({\n path: \"/capabilities\",\n key: \"capabilities\",\n listShape: \"array\",\n staleTime: 60_000,\n});\n","import { defineResource } from \"./resource\";\nimport type { AdapterDescriptor } from \"@/lib/schemas/adapter\";\n\n/** Read-only catalog of registered ProviderAdapter ids. */\nexport const adapters = defineResource<\n AdapterDescriptor,\n never,\n never,\n Record<string, unknown>,\n AdapterDescriptor[]\n>({\n path: \"/adapters\",\n key: \"adapters\",\n listShape: \"array\",\n staleTime: 60_000,\n});\n","import { defineResource } from \"./resource\";\nimport type { VariantDescriptor } from \"@/lib/schemas/variant\";\n\n/** Read-only catalog of registered upstream API variants. */\nexport const variants = defineResource<\n VariantDescriptor,\n never,\n never,\n Record<string, unknown>,\n VariantDescriptor[]\n>({\n path: \"/variants\",\n key: \"variants\",\n listShape: \"array\",\n staleTime: 60_000,\n});\n","import { defineResource } from \"./resource\";\nimport type { ToolCreateInput, ToolDTO, ToolUpdateInput } from \"@/lib/schemas/tool\";\n\nexport const tools = defineResource<\n ToolDTO,\n ToolCreateInput,\n ToolUpdateInput,\n Record<string, unknown>,\n ToolDTO[]\n>({\n path: \"/tools\",\n key: \"tools\",\n listShape: \"array\",\n staleTime: 60_000,\n});\n","\"use client\";\n\n// src/useInfiniteQuery.ts\nimport { InfiniteQueryObserver } from \"@tanstack/query-core\";\nimport { useBaseQuery } from \"./useBaseQuery.js\";\nfunction useInfiniteQuery(options, queryClient) {\n return useBaseQuery(\n options,\n InfiniteQueryObserver,\n queryClient\n );\n}\nexport {\n useInfiniteQuery\n};\n//# sourceMappingURL=useInfiniteQuery.js.map","\"use client\";\nimport { useInfiniteQuery, useQueryClient } from \"@tanstack/react-query\";\nimport { defineResource } from \"./resource\";\nimport { fetcher } from \"./client\";\nimport type { Paginated } from \"@/lib/schemas/common\";\nimport type { ConversationDTO, MessageDTO } from \"@/lib/schemas/conversation\";\n\nconst base = defineResource<\n ConversationDTO,\n never,\n { title: string },\n { page?: number; page_size?: number; sort?: string; keyword?: string },\n Paginated<ConversationDTO>\n>({\n path: \"/conversations\",\n key: \"conversations\",\n paramsOf: (q) => ({\n page: q.page ?? 1,\n page_size: q.page_size ?? 20,\n sort: q.sort ?? \"-updated_at\",\n keyword: q.keyword,\n }),\n // List + get are read-mostly; users rarely care about millisecond\n // freshness here. 60s lets nav back to the sidebar / chat skip\n // a network round-trip — mutations explicit-invalidate anyway.\n staleTime: 60_000,\n});\n\n/** Cache key for the initial page of messages of a single conversation.\n * Lives under the conversation resource so it gets gc'd if the resource\n * is gc'd, but is isolated from list/infinite queries so we can invalidate\n * list-only without dropping the message cache. */\nexport function messagesCacheKey(conversationId: string, pageSize: number) {\n return [...base.keys.one(conversationId), \"messages-cache\", pageSize] as const;\n}\n\nexport const conversations = {\n ...base,\n\n // ---- shorthand: title-only update ----\n updateTitle: (id: string, title: string) => base.update(id, { title }),\n\n // ---- shared message cache key (used by usePaginatedMessages / sync) ----\n messagesCacheKey,\n\n /** Invalidate only the conversation LIST queries (list/infinite),\n * leaving the per-conversation messages cache intact. */\n useInvalidateList: () => {\n const qc = useQueryClient();\n return () => qc.invalidateQueries({\n queryKey: base.keys.all(),\n predicate: (q) => {\n const k = q.queryKey as readonly unknown[];\n return k.length >= 2 && (k[1] === \"list\" || k[1] === \"infinite\");\n },\n });\n },\n\n // ---- infinite scroll variant of useList ----\n useInfinite: (params?: { pageSize?: number; scope?: string; keyword?: string }) => {\n const pageSize = params?.pageSize ?? 20;\n const keyword = params?.keyword?.trim() || undefined;\n return useInfiniteQuery({\n queryKey: [\n ...base.keys.all(),\n \"infinite\",\n params?.scope ?? \"default\",\n pageSize,\n keyword ?? \"\",\n ] as const,\n initialPageParam: 1,\n queryFn: ({ pageParam = 1 }) =>\n base.list({ page: pageParam as number, page_size: pageSize, keyword }),\n getNextPageParam: (lastPage) => {\n if (!lastPage) return undefined;\n const hasMore = lastPage.page * lastPage.page_size < lastPage.total;\n return hasMore ? lastPage.page + 1 : undefined;\n },\n });\n },\n\n // ---- nested: messages under a conversation ----\n listMessages: (id: string, params?: { page?: number; page_size?: number; sort?: string }) =>\n fetcher<Paginated<MessageDTO>>(\n `/conversations/${encodeURIComponent(id)}/messages?` +\n new URLSearchParams({\n page: String(params?.page ?? 1),\n page_size: String(params?.page_size ?? 50),\n sort: params?.sort ?? \"-created_at\",\n }).toString(),\n ),\n};\n\n// Messages are a sibling resource only used for rating today.\nconst messagesKey = [\"messages\"] as const;\nexport const messages = {\n keys: { all: () => messagesKey },\n rate: (messageId: string, rating: \"up\" | \"down\" | \"none\", feedback?: string) =>\n fetcher<null>(`/messages/${encodeURIComponent(messageId)}/rate`, {\n method: \"POST\",\n body: JSON.stringify({ rating, feedback }),\n }),\n};\n","// src/infiniteQueryObserver.ts\nimport { QueryObserver } from \"./queryObserver.js\";\nimport { hasNextPage, hasPreviousPage } from \"./infiniteQueryBehavior.js\";\nvar InfiniteQueryObserver = class extends QueryObserver {\n constructor(client, options) {\n super(client, options);\n }\n bindMethods() {\n super.bindMethods();\n this.fetchNextPage = this.fetchNextPage.bind(this);\n this.fetchPreviousPage = this.fetchPreviousPage.bind(this);\n }\n setOptions(options) {\n options._type = \"infinite\";\n super.setOptions(options);\n }\n getOptimisticResult(options) {\n options._type = \"infinite\";\n return super.getOptimisticResult(options);\n }\n fetchNextPage(options) {\n return this.fetch({\n ...options,\n meta: {\n fetchMore: { direction: \"forward\" }\n }\n });\n }\n fetchPreviousPage(options) {\n return this.fetch({\n ...options,\n meta: {\n fetchMore: { direction: \"backward\" }\n }\n });\n }\n createResult(query, options) {\n const { state } = query;\n const parentResult = super.createResult(query, options);\n const { isFetching, isRefetching, isError, isRefetchError } = parentResult;\n const fetchDirection = state.fetchMeta?.fetchMore?.direction;\n const isFetchNextPageError = isError && fetchDirection === \"forward\";\n const isFetchingNextPage = isFetching && fetchDirection === \"forward\";\n const isFetchPreviousPageError = isError && fetchDirection === \"backward\";\n const isFetchingPreviousPage = isFetching && fetchDirection === \"backward\";\n const result = {\n ...parentResult,\n fetchNextPage: this.fetchNextPage,\n fetchPreviousPage: this.fetchPreviousPage,\n hasNextPage: hasNextPage(options, state.data),\n hasPreviousPage: hasPreviousPage(options, state.data),\n isFetchNextPageError,\n isFetchingNextPage,\n isFetchPreviousPageError,\n isFetchingPreviousPage,\n isRefetchError: isRefetchError && !isFetchNextPageError && !isFetchPreviousPageError,\n isRefetching: isRefetching && !isFetchingNextPage && !isFetchingPreviousPage\n };\n return result;\n }\n};\nexport {\n InfiniteQueryObserver\n};\n//# sourceMappingURL=infiniteQueryObserver.js.map","\"use client\"\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\"\nimport * 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"],"names":["Dialog","props","DialogTrigger","DialogPortal","DialogClose","DialogOverlay","className","DialogContent","children","showCloseButton","DialogHeader","DialogFooter","DialogTitle","DialogDescription","badgeVariants","variants","variant","default","secondary","destructive","outline","defaultVariants","Badge","asChild","Comp","logs","path","key","staleTime","base","listShape","invalidates","providers","listModels","id","encodeURIComponent","reload","method","check","probe","healthCheckUrl","body","JSON","stringify","health_check_url","headers","useModels","queryKey","keys","one","queryFn","enabled","useReload","opts","invalidate","useInvalidate","mutationFn","onSuccess","data","vars","onMutateResult","context","useCheck","users","capabilities","InfiniteQueryObserver","client","options","bindMethods","fetchNextPage","bind","fetchPreviousPage","setOptions","_type","getOptimisticResult","fetch","meta","fetchMore","direction","createResult","query","state","parentResult","isFetching","isRefetching","isError","isRefetchError","fetchDirection","fetchMeta","isFetchNextPageError","isFetchingNextPage","isFetchPreviousPageError","isFetchingPreviousPage","result","hasNextPage","hasPreviousPage","mcpServers","listPresets","usePresets","qc","server","invalidateQueries","all","onError","err","checkStream","onEvent","res","Accept","signal","Error","reader","getReader","decoder","TextDecoder","buf","last","done","value","read","decode","stream","nl","indexOf","frame","slice","dataLine","split","find","l","startsWith","ev","parse","type","releaseLock","useCheckStream","phase","setPhase","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","defaultChecked","disabled","form","name","onCheckedChange","required","internal_do_not_use_render","setChecked","prop","defaultProp","onChange","caller","control","setControl","bubbleInput","setBubbleInput","hasConsumerStoppedPropagationRef","isFormControl","closest","scope","isFunction","TRIGGER_NAME","SwitchTrigger","onClick","switchProps","forwardedRef","composedRefs","button","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"],"mappings":"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","ignoreList":[10,12,14,15]}
@@ -0,0 +1,9 @@
1
+ module.exports=[965733,a=>{"use strict";var b=a.i(187924),c=a.i(897942),d=a.i(422262),e=a.i(497895);function f({...a}){return(0,b.jsx)(c.Portal,{"data-slot":"dialog-portal",...a})}function g({className:a,...d}){return(0,b.jsx)(c.Overlay,{"data-slot":"dialog-overlay",className:(0,e.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",a),...d})}a.s(["Dialog",0,function({...a}){return(0,b.jsx)(c.Root,{"data-slot":"dialog",...a})},"DialogContent",0,function({className:a,children:h,showCloseButton:i=!0,...j}){return(0,b.jsxs)(f,{"data-slot":"dialog-portal",children:[(0,b.jsx)(g,{}),(0,b.jsxs)(c.Content,{"data-slot":"dialog-content",className:(0,e.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 outline-none sm:max-w-lg",a),...j,children:[h,i&&(0,b.jsxs)(c.Close,{"data-slot":"dialog-close",className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",children:[(0,b.jsx)(d.XIcon,{}),(0,b.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})},"DialogDescription",0,function({className:a,...d}){return(0,b.jsx)(c.Description,{"data-slot":"dialog-description",className:(0,e.cn)("text-muted-foreground text-sm",a),...d})},"DialogFooter",0,function({className:a,...c}){return(0,b.jsx)("div",{"data-slot":"dialog-footer",className:(0,e.cn)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",a),...c})},"DialogHeader",0,function({className:a,...c}){return(0,b.jsx)("div",{"data-slot":"dialog-header",className:(0,e.cn)("flex flex-col gap-2 text-center sm:text-left",a),...c})},"DialogTitle",0,function({className:a,...d}){return(0,b.jsx)(c.Title,{"data-slot":"dialog-title",className:(0,e.cn)("text-lg leading-none font-semibold",a),...d})}])},254161,a=>{"use strict";var b=a.i(187924),c=a.i(811011),d=a.i(400187),e=a.i(497895);let f=(0,d.cva)("inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"}},defaultVariants:{variant:"default"}});a.s(["Badge",0,function({className:a,variant:d,asChild:g=!1,...h}){let i=g?c.Slot:"span";return(0,b.jsx)(i,{"data-slot":"badge",className:(0,e.cn)(f({variant:d}),a),...h})}])},167079,a=>{"use strict";let b=(0,a.i(349682).defineResource)({path:"/logs/generations",key:"logs",staleTime:3e4});a.s(["logs",0,b])},324546,a=>{"use strict";var b=a.i(370025),c=a.i(433217),d=a.i(349682),e=a.i(262477);let f=(0,d.defineResource)({path:"/providers",key:"providers",listShape:"array",staleTime:6e4,invalidates:["models"]}),g={...f,listModels:a=>(0,e.fetcher)(`/providers/${encodeURIComponent(a)}/models`),reload:()=>(0,e.fetcher)("/providers/reload",{method:"POST"}),check:a=>(0,e.fetcher)(`/providers/${encodeURIComponent(a)}/check`,{method:"POST"}),probe:a=>(0,e.fetcher)("/providers/probe",{method:"POST",body:JSON.stringify({health_check_url:a}),headers:{"Content-Type":"application/json"}}),useModels:a=>(0,c.useQuery)({queryKey:[...f.keys.one(a??""),"models"],queryFn:()=>g.listModels(a),enabled:!!a}),useReload:a=>{let c=f.useInvalidate();return(0,b.useMutation)({mutationFn:g.reload,...a,onSuccess:(b,d,e,f)=>{c(),a?.onSuccess?.(b,d,e,f)}})},useCheck:(a,c)=>{let d=f.useInvalidate();return(0,b.useMutation)({mutationFn:()=>g.check(a),...c,onSuccess:(a,b,e,f)=>{d(),c?.onSuccess?.(a,b,e,f)}})}};a.s(["providers",0,g])},440955,a=>{"use strict";let b=(0,a.i(349682).defineResource)({path:"/users",key:"users",staleTime:6e4});a.s(["users",0,b])},506122,187527,145116,74761,842698,a=>{"use strict";a.i(440955),a.i(324546),a.i(524634),a.i(298509),a.i(167079),a.i(812213);var b=a.i(349682);let c=(0,b.defineResource)({path:"/capabilities",key:"capabilities",listShape:"array",staleTime:6e4});a.s(["capabilities",0,c],187527);let d=(0,b.defineResource)({path:"/adapters",key:"adapters",listShape:"array",staleTime:6e4});a.s(["adapters",0,d],145116);let e=(0,b.defineResource)({path:"/variants",key:"variants",listShape:"array",staleTime:6e4});a.s(["variants",0,e],74761);let f=(0,b.defineResource)({path:"/tools",key:"tools",listShape:"array",staleTime:6e4});a.s(["tools",0,f],842698),a.i(339220),a.s([],506122)},781560,a=>{"use strict";let b=(0,a.i(883706).default)("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]);a.s(["Trash2",0,b],781560)},73570,a=>{"use strict";var b=a.i(783604);a.s(["AlertTriangle",()=>b.default])},59848,a=>{"use strict";var b=a.i(187924),c=a.i(73570),d=a.i(596221),e=a.i(572131),f=a.i(750104),g=a.i(470121),h=a.i(897942),i=a.i(507554),j=a.i(811011),k="AlertDialog",[l,m]=(0,f.createContextScope)(k,[h.createDialogScope]),n=(0,h.createDialogScope)(),o=a=>{let{__scopeAlertDialog:c,...d}=a,e=n(c);return(0,b.jsx)(h.Root,{...e,...d,modal:!0})};o.displayName=k,e.forwardRef((a,c)=>{let{__scopeAlertDialog:d,...e}=a,f=n(d);return(0,b.jsx)(h.Trigger,{...f,...e,ref:c})}).displayName="AlertDialogTrigger";var p=a=>{let{__scopeAlertDialog:c,...d}=a,e=n(c);return(0,b.jsx)(h.Portal,{...e,...d})};p.displayName="AlertDialogPortal";var q=e.forwardRef((a,c)=>{let{__scopeAlertDialog:d,...e}=a,f=n(d);return(0,b.jsx)(h.Overlay,{...f,...e,ref:c})});q.displayName="AlertDialogOverlay";var r="AlertDialogContent",[s,t]=l(r),u=(0,j.createSlottable)("AlertDialogContent"),v=e.forwardRef((a,c)=>{let{__scopeAlertDialog:d,children:f,...j}=a,k=n(d),l=e.useRef(null),m=(0,g.useComposedRefs)(c,l),o=e.useRef(null);return(0,b.jsx)(h.WarningProvider,{contentName:r,titleName:w,docsSlug:"alert-dialog",children:(0,b.jsx)(s,{scope:d,cancelRef:o,children:(0,b.jsxs)(h.Content,{role:"alertdialog",...k,...j,ref:m,onOpenAutoFocus:(0,i.composeEventHandlers)(j.onOpenAutoFocus,a=>{a.preventDefault(),o.current?.focus({preventScroll:!0})}),onPointerDownOutside:a=>a.preventDefault(),onInteractOutside:a=>a.preventDefault(),children:[(0,b.jsx)(u,{children:f}),(0,b.jsx)(D,{contentRef:l})]})})})});v.displayName=r;var w="AlertDialogTitle",x=e.forwardRef((a,c)=>{let{__scopeAlertDialog:d,...e}=a,f=n(d);return(0,b.jsx)(h.Title,{...f,...e,ref:c})});x.displayName=w;var y="AlertDialogDescription",z=e.forwardRef((a,c)=>{let{__scopeAlertDialog:d,...e}=a,f=n(d);return(0,b.jsx)(h.Description,{...f,...e,ref:c})});z.displayName=y;var A=e.forwardRef((a,c)=>{let{__scopeAlertDialog:d,...e}=a,f=n(d);return(0,b.jsx)(h.Close,{...f,...e,ref:c})});A.displayName="AlertDialogAction";var B="AlertDialogCancel",C=e.forwardRef((a,c)=>{let{__scopeAlertDialog:d,...e}=a,{cancelRef:f}=t(B,d),i=n(d),j=(0,g.useComposedRefs)(c,f);return(0,b.jsx)(h.Close,{...i,...e,ref:j})});C.displayName=B;var D=({contentRef:a})=>{let b=`\`${r}\` requires a description for the component to be accessible for screen reader users.
2
+
3
+ You can add a description to the \`${r}\` by passing a \`${y}\` component as a child, which also benefits sighted users by adding visible context to the dialog.
4
+
5
+ Alternatively, you can use your own component as a description by assigning it an \`id\` and passing the same value to the \`aria-describedby\` prop in \`${r}\`. If the description is confusing or duplicative for sighted users, you can use the \`@radix-ui/react-visually-hidden\` primitive as a wrapper around your description component.
6
+
7
+ For more information, see https://radix-ui.com/primitives/docs/components/alert-dialog`;return e.useEffect(()=>{document.getElementById(a.current?.getAttribute("aria-describedby"))||console.warn(b)},[b,a]),null},E=a.i(497895),F=a.i(340695);let G=e.forwardRef(({className:a,...c},d)=>(0,b.jsx)(q,{className:(0,E.cn)("fixed inset-0 z-50 bg-black/50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",a),...c,ref:d}));G.displayName=q.displayName;let H=e.forwardRef(({className:a,...c},d)=>(0,b.jsxs)(p,{children:[(0,b.jsx)(G,{}),(0,b.jsx)(v,{ref:d,className:(0,E.cn)("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg duration-200 outline-none","data-[state=open]:animate-in data-[state=closed]:animate-out","data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0","data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",a),...c})]}));H.displayName=v.displayName;let I=({className:a,...c})=>(0,b.jsx)("div",{className:(0,E.cn)("flex flex-col space-y-2 text-center sm:text-left",a),...c});I.displayName="AlertDialogHeader";let J=({className:a,...c})=>(0,b.jsx)("div",{className:(0,E.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",a),...c});J.displayName="AlertDialogFooter";let K=e.forwardRef(({className:a,...c},d)=>(0,b.jsx)(x,{ref:d,className:(0,E.cn)("text-lg font-semibold",a),...c}));K.displayName=x.displayName;let L=e.forwardRef(({className:a,...c},d)=>(0,b.jsx)(z,{ref:d,className:(0,E.cn)("text-sm text-muted-foreground",a),...c}));L.displayName=z.displayName;let M=e.forwardRef(({className:a,...c},d)=>(0,b.jsx)(A,{ref:d,className:(0,E.cn)((0,F.buttonVariants)(),a),...c}));M.displayName=A.displayName;let N=e.forwardRef(({className:a,...c},d)=>(0,b.jsx)(C,{ref:d,className:(0,E.cn)((0,F.buttonVariants)({variant:"outline"}),"mt-2 sm:mt-0",a),...c}));N.displayName=C.displayName,a.s(["ConfirmDialog",0,function({open:a,onOpenChange:e,title:f,description:g,confirmLabel:h="Confirm",cancelLabel:i="Cancel",destructive:j,isLoading:k,onConfirm:l}){return(0,b.jsx)(o,{open:a,onOpenChange:e,children:(0,b.jsxs)(H,{children:[(0,b.jsx)(I,{children:(0,b.jsxs)("div",{className:"flex items-start gap-3",children:[j&&(0,b.jsx)("div",{className:"mt-0.5 flex h-9 w-9 shrink-0 items-center justify-center rounded-full bg-destructive/10 text-destructive",children:(0,b.jsx)(c.AlertTriangle,{className:"h-4 w-4"})}),(0,b.jsxs)("div",{className:"flex-1 space-y-1.5",children:[(0,b.jsx)(K,{className:(0,E.cn)(j&&"text-foreground"),children:f}),(0,b.jsx)(L,{children:g})]})]})}),(0,b.jsxs)(J,{children:[(0,b.jsx)(N,{disabled:k,children:i}),(0,b.jsxs)(M,{onClick:a=>{a.preventDefault(),l()},disabled:k,className:(0,E.cn)(j&&"bg-destructive text-white shadow-sm shadow-destructive/30 hover:bg-destructive/90 focus-visible:ring-destructive/40"),children:[k&&(0,b.jsx)(d.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),h]})]})]})})}],59848)},588237,a=>{"use strict";var b=a.i(187924),c=a.i(497895);a.s(["Table",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:(0,b.jsx)("table",{"data-slot":"table",className:(0,c.cn)("w-full caption-bottom text-sm",a),...d})})},"TableBody",0,function({className:a,...d}){return(0,b.jsx)("tbody",{"data-slot":"table-body",className:(0,c.cn)("[&_tr:last-child]:border-0",a),...d})},"TableCell",0,function({className:a,...d}){return(0,b.jsx)("td",{"data-slot":"table-cell",className:(0,c.cn)("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",a),...d})},"TableHead",0,function({className:a,...d}){return(0,b.jsx)("th",{"data-slot":"table-head",className:(0,c.cn)("text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",a),...d})},"TableHeader",0,function({className:a,...d}){return(0,b.jsx)("thead",{"data-slot":"table-header",className:(0,c.cn)("[&_tr]:border-b",a),...d})},"TableRow",0,function({className:a,...d}){return(0,b.jsx)("tr",{"data-slot":"table-row",className:(0,c.cn)("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",a),...d})}])},915618,a=>{"use strict";let b=(0,a.i(883706).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);a.s(["Plus",0,b],915618)}];
8
+
9
+ //# sourceMappingURL=_1oi0iqt._.js.map