@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
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../components/ui/card.tsx","../../../../components/ui/input.tsx","../../../../node_modules/%40radix-ui/react-label/dist/index.mjs","../../../../components/ui/label.tsx","../../../../node_modules/%40radix-ui/react-use-previous/src/use-previous.tsx","../../../../lib/api/models.ts","../../../../node_modules/%40radix-ui/number/src/number.ts","../../../../node_modules/lucide-react/src/icons/chevron-down.ts","../../../../components/ProviderIcon.tsx","../../../../node_modules/lucide-react/src/icons/search.ts","../../../../node_modules/lucide-react/src/icons/bot.ts","../../../../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/table.tsx","../../../../node_modules/lucide-react/src/icons/plus.ts","../../../../components/ui/data-table.tsx","../../../../node_modules/lucide-react/src/icons/inbox.ts","../../../../node_modules/lucide-react/src/icons/user.ts"],"sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Card({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card\"\n className={cn(\n \"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6\", className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center px-6 [.border-t]:pt-6\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n \"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\n","\"use client\";\n\n// src/label.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Label\";\nvar Label = React.forwardRef((props, forwardedRef) => {\n return /* @__PURE__ */ jsx(\n Primitive.label,\n {\n ...props,\n ref: forwardedRef,\n onMouseDown: (event) => {\n const target = event.target;\n if (target.closest(\"button, input, select, textarea\")) return;\n props.onMouseDown?.(event);\n if (!event.defaultPrevented && event.detail > 1) event.preventDefault();\n }\n }\n );\n});\nLabel.displayName = NAME;\nvar Root = Label;\nexport {\n Label,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Label }\n","import * as React from 'react';\n\nfunction usePrevious<T>(value: T) {\n const ref = React.useRef({ value, previous: value });\n\n // We compare values before making an update to ensure that\n // a change has been made. This ensures the previous value is\n // persisted correctly between renders.\n return React.useMemo(() => {\n if (ref.current.value !== value) {\n ref.current.previous = ref.current.value;\n ref.current.value = value;\n }\n return ref.current.previous;\n }, [value]);\n}\n\nexport { usePrevious };\n","import { defineResource } from \"./resource\";\nimport type { ModelCreateInput, ModelDTO, ModelUpdateInput } from \"@/lib/schemas/model\";\n\nexport const models = defineResource<\n ModelDTO,\n ModelCreateInput,\n ModelUpdateInput,\n Record<string, unknown>,\n ModelDTO[]\n>({\n path: \"/models\",\n key: \"models\",\n listShape: \"array\",\n staleTime: 60_000,\n invalidates: [\"providers\"],\n});\n","function clamp(value: number, [min, max]: [number, number]): number {\n return Math.min(max, Math.max(min, value));\n}\n\nexport { clamp };\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm6 9 6 6 6-6', key: 'qrunsl' }]];\n\n/**\n * @component @name ChevronDown\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtNiA5IDYgNiA2LTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/chevron-down\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronDown = createLucideIcon('chevron-down', __iconNode);\n\nexport default ChevronDown;\n","import React, { useState, memo } from 'react';\nimport { cn } from '@/lib/utils';\n\ninterface ProviderIconProps {\n providerName: string;\n className?: string;\n width?: number;\n height?: number;\n}\n\nconst PROVIDER_LOGOS: Record<string, string> = {\n 'openai': '/providers/openai.svg',\n 'claude': '/providers/claude.svg',\n 'anthropic': '/providers/claude.svg',\n 'gemini': '/providers/gemini.svg',\n 'google': '/providers/gemini.svg',\n 'vertexai': '/providers/vertexai.svg',\n 'vertex': '/providers/vertex.svg',\n 'deepseek': '/providers/deepseek.png',\n 'moonshot': '/providers/moonshot.png',\n 'zhipu': '/providers/zhipu.png',\n 'aliyun': '/providers/alibabacloud.png',\n 'alibabacloud': '/providers/alibabacloud.png',\n 'siliconflow': '/providers/siliconflow.svg',\n 'tei': '/providers/tei.svg',\n 'transformers': '/providers/transformers.svg',\n 'baichuan': '/providers/baichuan.png',\n 'volcengine': '/providers/volcengine.png',\n 'stepfun': '/providers/stepfun.png',\n};\n\nconst DARK_INVERT_PROVIDERS = new Set(['openai', 'vertex', 'vertexai', 'siliconflow']);\n\nexport const ProviderIcon = memo(function ProviderIcon({\n providerName,\n className,\n width = 24,\n height = 24\n}: ProviderIconProps) {\n const [imgError, setImgError] = useState(false);\n\n const normalizedName = providerName.toLowerCase().replace(/[^a-z0-9_]/g, '');\n const logoSrc = PROVIDER_LOGOS[normalizedName];\n const isDarkInvert = DARK_INVERT_PROVIDERS.has(normalizedName);\n\n if (logoSrc && !imgError) {\n return (\n <img\n src={logoSrc}\n alt=\"\"\n width={width}\n height={height}\n loading=\"lazy\"\n className={cn(\"object-contain shrink-0\", isDarkInvert && \"dark:invert\", className)}\n onError={() => setImgError(true)}\n />\n );\n }\n\n return (\n <span\n className={cn(\n \"rounded bg-muted flex items-center justify-center text-[8px] font-bold shrink-0\",\n className\n )}\n style={{ width, height }}\n >\n {providerName.substring(0, 2).toUpperCase()}\n </span>\n );\n})\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm21 21-4.34-4.34', key: '14j7rj' }],\n ['circle', { cx: '11', cy: '11', r: '8', key: '4ej97u' }],\n];\n\n/**\n * @component @name Search\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMjEgMjEtNC4zNC00LjM0IiAvPgogIDxjaXJjbGUgY3g9IjExIiBjeT0iMTEiIHI9IjgiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/search\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 Search = createLucideIcon('search', __iconNode);\n\nexport default Search;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 8V4H8', key: 'hb8ula' }],\n ['rect', { width: '16', height: '12', x: '4', y: '8', rx: '2', key: 'enze0r' }],\n ['path', { d: 'M2 14h2', key: 'vft8re' }],\n ['path', { d: 'M20 14h2', key: '4cs60a' }],\n ['path', { d: 'M15 13v2', key: '1xurst' }],\n ['path', { d: 'M9 13v2', key: 'rq6x2g' }],\n];\n\n/**\n * @component @name Bot\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgOFY0SDgiIC8+CiAgPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjEyIiB4PSI0IiB5PSI4IiByeD0iMiIgLz4KICA8cGF0aCBkPSJNMiAxNGgyIiAvPgogIDxwYXRoIGQ9Ik0yMCAxNGgyIiAvPgogIDxwYXRoIGQ9Ik0xNSAxM3YyIiAvPgogIDxwYXRoIGQ9Ik05IDEzdjIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/bot\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 Bot = createLucideIcon('bot', __iconNode);\n\nexport default Bot;\n","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","\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n <div\n data-slot=\"table-container\"\n className=\"relative w-full overflow-x-auto\"\n >\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b\", className)}\n {...props}\n />\n )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n \"hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"text-muted-foreground mt-4 text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'M12 5v14', key: 's699le' }],\n];\n\n/**\n * @component @name Plus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNSAxMmgxNCIgLz4KICA8cGF0aCBkPSJNMTIgNXYxNCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/plus\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 Plus = createLucideIcon('plus', __iconNode);\n\nexport default Plus;\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Inbox } from \"lucide-react\"\n\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@/components/ui/table\"\nimport { cn } from \"@/lib/utils\"\n\n/**\n * Shared visual contract for dashboard data tables (currently used by\n * /logs and /providers#models). Pages compose these primitives so the\n * \"Loom dashboard table\" look — sticky muted header, uppercase head text,\n * zebra rows, hover highlight, consistent padding — lives in exactly one\n * place. Future style tweaks touch this file only.\n *\n * These primitives are visual-only by design (SRP). They do not know\n * about sorting, pagination, or data fetching; callers wire those.\n */\n\nexport function DataTableShell({\n className,\n ...props\n}: React.ComponentProps<\"table\">) {\n return (\n <div className=\"overflow-hidden\">\n <Table className={className} {...props} />\n </div>\n )\n}\n\nexport function DataTableHeader({\n className,\n ...props\n}: React.ComponentProps<\"thead\">) {\n return (\n <TableHeader\n className={cn(\"bg-muted/40 sticky top-0 z-10\", className)}\n {...props}\n />\n )\n}\n\nexport function DataTableHeaderRow({\n className,\n ...props\n}: React.ComponentProps<\"tr\">) {\n return (\n <TableRow\n className={cn(\n \"hover:bg-transparent border-b-muted/60 shadow-sm\",\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function DataTableHead({\n className,\n ...props\n}: React.ComponentProps<\"th\">) {\n return (\n <TableHead\n className={cn(\n \"h-10 text-xs font-semibold uppercase tracking-wide text-muted-foreground/80 first:pl-4 last:pr-4\",\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function DataTableRow({\n className,\n interactive = true,\n ...props\n}: React.ComponentProps<\"tr\"> & { interactive?: boolean }) {\n return (\n <TableRow\n className={cn(\n \"h-10 border-b-muted/20 even:bg-muted/50 group\",\n interactive && \"cursor-pointer hover:bg-muted/90\",\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function DataTableCell({\n className,\n ...props\n}: React.ComponentProps<\"td\">) {\n return (\n <TableCell\n className={cn(\"py-2 first:pl-4 last:pr-4\", className)}\n {...props}\n />\n )\n}\n\nexport function DataTableEmpty({\n colSpan,\n children: _children,\n}: {\n colSpan: number\n children?: React.ReactNode\n}) {\n void _children\n return (\n <TableRow className=\"hover:bg-transparent\">\n <TableCell\n colSpan={colSpan}\n className=\"h-48 text-center align-middle text-muted-foreground/40\"\n >\n <div className=\"flex items-center justify-center\">\n <Inbox className=\"h-8 w-8\" aria-label=\"empty\" />\n </div>\n </TableCell>\n </TableRow>\n )\n}\n\nexport { TableBody as DataTableBody }\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['polyline', { points: '22 12 16 12 14 15 10 15 8 12 2 12', key: 'o97t9d' }],\n [\n 'path',\n {\n d: 'M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z',\n key: 'oot6mr',\n },\n ],\n];\n\n/**\n * @component @name Inbox\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cG9seWxpbmUgcG9pbnRzPSIyMiAxMiAxNiAxMiAxNCAxNSAxMCAxNSA4IDEyIDIgMTIiIC8+CiAgPHBhdGggZD0iTTUuNDUgNS4xMSAyIDEydjZhMiAyIDAgMCAwIDIgMmgxNmEyIDIgMCAwIDAgMi0ydi02bC0zLjQ1LTYuODlBMiAyIDAgMCAwIDE2Ljc2IDRINy4yNGEyIDIgMCAwIDAtMS43OSAxLjExeiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/inbox\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Inbox = createLucideIcon('inbox', __iconNode);\n\nexport default Inbox;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2', key: '975kel' }],\n ['circle', { cx: '12', cy: '7', r: '4', key: '17ys0d' }],\n];\n\n/**\n * @component @name User\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTkgMjF2LTJhNCA0IDAgMCAwLTQtNEg5YTQgNCAwIDAgMC00IDR2MiIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjciIHI9IjQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/user\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 User = createLucideIcon('user', __iconNode);\n\nexport default User;\n"],"names":["Card","className","props","CardHeader","CardTitle","CardDescription","CardAction","CardContent","CardFooter","Input","type","NAME","Label","forwardedRef","label","ref","onMouseDown","event","target","closest","defaultPrevented","detail","preventDefault","displayName","Root","models","path","key","listShape","staleTime","invalidates","PROVIDER_LOGOS","DARK_INVERT_PROVIDERS","Set","ProviderIcon","providerName","width","height","imgError","setImgError","normalizedName","toLowerCase","replace","logoSrc","isDarkInvert","has","src","alt","loading","onError","style","substring","toUpperCase","ROOT_NAME","createAlertDialogContext","createAlertDialogScope","useDialogScope","AlertDialog","__scopeAlertDialog","alertDialogProps","dialogScope","modal","TRIGGER_NAME","AlertDialogTrigger","triggerProps","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","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","Table","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption"],"mappings":"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","ignoreList":[2,9,10,11,12,16,18,19]}
@@ -1,3 +0,0 @@
1
- module.exports=[290669,a=>{"use strict";let b=(0,a.i(883706).default)("activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);a.s(["Activity",0,b],290669)},634755,a=>{"use strict";var b=a.i(187924),c=a.i(965733),d=a.i(572131),e=a.i(823292),f=a.i(596221);a.i(506122);var g=a.i(187527),h=a.i(524634),i=a.i(324546),j=a.i(74761),k=a.i(340695),l=a.i(205522),m=a.i(917171),n=a.i(280281),o=a.i(546893),p=a.i(887682);function q({mode:a,model:c,defaultProviderId:s,onSaved:t,onCancel:u}){let{data:v}=i.providers.useList(),{data:w}=g.capabilities.useList(),{data:x}=j.variants.useList(),[y,z]=(0,d.useState)(""),[A,B]=(0,d.useState)(""),[C,D]=(0,d.useState)(""),[E,F]=(0,d.useState)("chat"),[G,H]=(0,d.useState)(""),[I,J]=(0,d.useState)(""),[K,L]=(0,d.useState)(""),[M,N]=(0,d.useState)(""),[O,P]=(0,d.useState)(""),[Q,R]=(0,d.useState)("{}"),[S,T]=(0,d.useState)(!0),[U,V]=(0,d.useState)(null),W=(0,d.useMemo)(()=>"create"===a&&!!c?.is_discovered,[a,c?.is_discovered]),X="edit"===a||W;(0,d.useEffect)(()=>{c?(z(c.name),B(c.provider_id??""),D(c.model_id??c.name),F(c.type??"chat"),H(c.api_variant_id??c.resolved_variant_id??""),J(c.context_window?.toString()??""),L(c.max_tokens?.toString()??""),N(c.output_dimension?.toString()??""),P(c.description??""),R(JSON.stringify(c.default_params??{},null,2)),T(!1!==c.enabled)):(z(""),B(s??""),D(""),F("chat"),H(""),J(""),L(""),N(""),P(""),R("{}"),T(!0)),V(null)},[a,c,s]);let Y=h.models.useCreate({onSuccess:a=>{e.toast.success("Saved"),t?.(a)},onError:a=>e.toast.error(a.message||"Save failed")}),Z=h.models.useUpdate({onSuccess:a=>{e.toast.success("Saved"),t?.(a??null)},onError:a=>e.toast.error(a.message||"Save failed")}),$=Y.isPending||Z.isPending,_=c||"edit"===a?"Save":"Create",aa=(0,d.useMemo)(()=>(x??[]).filter(a=>a.capability===E),[x,E]),ab=(0,d.useMemo)(()=>(v??[]).find(a=>a.id===A),[v,A]);return(0,b.jsxs)("form",{onSubmit:b=>{if(b.preventDefault(),!y.trim())return e.toast.error("Name required");if(!A)return e.toast.error("Provider required");if(!C.trim())return e.toast.error("Upstream model id required");let d={};try{d=Q.trim()?JSON.parse(Q):{},V(null)}catch(a){V(a instanceof Error?a.message:"Invalid JSON");return}let f={name:y.trim(),provider_id:A,upstream_model_id:C.trim(),type:E,api_variant_id:G||null,default_params:d,context_window:I?Number(I):null,max_tokens:K?Number(K):null,output_dimension:M?Number(M):null,description:O||null,enabled:S};W&&c?.meta?.raw!=null&&(f.discovered_metadata=c.meta.raw),"create"===a?Y.mutate(f):c&&Z.mutate({id:c.id,data:f})},className:"space-y-4",children:[(0,b.jsxs)("div",{className:"grid sm:grid-cols-2 gap-3",children:[(0,b.jsx)(r,{label:"Display name",htmlFor:"m-name",children:(0,b.jsx)(l.Input,{id:"m-name",value:y,onChange:a=>z(a.target.value),placeholder:"gpt-4o-mini",className:"h-9 text-sm font-mono"})}),(0,b.jsx)(r,{label:"Upstream model ID",htmlFor:"m-up",children:(0,b.jsx)(l.Input,{id:"m-up",value:C,onChange:a=>D(a.target.value),placeholder:"gpt-4o-mini",className:"h-9 text-sm font-mono"})})]}),(0,b.jsxs)("div",{className:"grid sm:grid-cols-2 gap-3",children:[(0,b.jsx)(r,{label:"Provider",children:X?(0,b.jsx)(l.Input,{value:ab?.name??A,readOnly:!0,disabled:!0,className:"h-9 text-sm font-mono bg-muted/40"}):(0,b.jsxs)(p.Select,{value:A,onValueChange:B,children:[(0,b.jsx)(p.SelectTrigger,{className:"h-9 text-sm",children:(0,b.jsx)(p.SelectValue,{placeholder:"Select provider"})}),(0,b.jsx)(p.SelectContent,{children:(v??[]).map(a=>(0,b.jsx)(p.SelectItem,{value:a.id,children:a.name},a.id))})]})}),(0,b.jsx)(r,{label:"Capability",children:(0,b.jsxs)(p.Select,{value:E,onValueChange:F,children:[(0,b.jsx)(p.SelectTrigger,{className:"h-9 text-sm",children:(0,b.jsx)(p.SelectValue,{})}),(0,b.jsxs)(p.SelectContent,{children:[(w??[]).map(a=>(0,b.jsx)(p.SelectItem,{value:a.id,children:a.label},a.id)),E&&!(w??[]).some(a=>a.id===E)&&(0,b.jsx)(p.SelectItem,{value:E,children:E})]})]})})]}),aa.length>1&&G&&(0,b.jsx)(r,{label:"Upstream API",children:(0,b.jsxs)(p.Select,{value:G,onValueChange:H,children:[(0,b.jsx)(p.SelectTrigger,{className:"h-9 text-sm",children:(0,b.jsx)(p.SelectValue,{})}),(0,b.jsxs)(p.SelectContent,{children:[aa.map(a=>(0,b.jsx)(p.SelectItem,{value:a.id,children:(0,b.jsx)("span",{className:"font-mono text-xs",children:a.id})},a.id)),!aa.some(a=>a.id===G)&&(0,b.jsx)(p.SelectItem,{value:G,children:(0,b.jsx)("span",{className:"font-mono text-xs",children:G})})]})]})}),(0,b.jsxs)("div",{className:"grid sm:grid-cols-3 gap-3",children:[(0,b.jsx)(r,{label:"Context window",htmlFor:"m-ctx",children:(0,b.jsx)(l.Input,{id:"m-ctx",type:"number",value:I,onChange:a=>J(a.target.value),className:"h-9 text-sm"})}),(0,b.jsx)(r,{label:"Max tokens",htmlFor:"m-max",children:(0,b.jsx)(l.Input,{id:"m-max",type:"number",value:K,onChange:a=>L(a.target.value),className:"h-9 text-sm"})}),(0,b.jsx)(r,{label:"Output dim",htmlFor:"m-dim",children:(0,b.jsx)(l.Input,{id:"m-dim",type:"number",value:M,onChange:a=>N(a.target.value),className:"h-9 text-sm"})})]}),(0,b.jsx)(r,{label:"Description",htmlFor:"m-desc",children:(0,b.jsx)(l.Input,{id:"m-desc",value:O,onChange:a=>P(a.target.value),className:"h-9 text-sm"})}),(0,b.jsxs)(r,{label:"Default params (JSON)",htmlFor:"m-params",children:[(0,b.jsx)(o.Textarea,{id:"m-params",value:Q,onChange:a=>R(a.target.value),rows:5,className:"text-xs font-mono"}),U&&(0,b.jsx)("span",{className:"text-xs text-destructive",children:U})]}),(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)(m.Label,{htmlFor:"m-enabled",className:"text-xs",children:"Enabled"}),(0,b.jsx)(n.Switch,{id:"m-enabled",checked:S,onCheckedChange:T})]}),(0,b.jsxs)("div",{className:"flex items-center justify-end gap-2 pt-2",children:[(0,b.jsx)(k.Button,{type:"button",variant:"outline",size:"sm",onClick:u,disabled:$,children:"Cancel"}),(0,b.jsxs)(k.Button,{type:"submit",size:"sm",disabled:$,children:[$&&(0,b.jsx)(f.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),_]})]})]})}function r({label:a,htmlFor:c,children:d}){return(0,b.jsxs)("div",{className:"grid gap-1.5 min-w-0",children:[(0,b.jsx)(m.Label,{htmlFor:c,className:"text-xs",children:a}),d]})}a.s(["ModelFormDialog",0,function({open:a,onOpenChange:d,mode:e,model:f,defaultProviderId:g}){let h=f||"edit"===e?"Edit":"Add model";return(0,b.jsx)(c.Dialog,{open:a,onOpenChange:d,children:(0,b.jsxs)(c.DialogContent,{className:"sm:max-w-[640px] max-h-[90vh] overflow-y-auto",onOpenAutoFocus:f?a=>a.preventDefault():void 0,children:[(0,b.jsx)(c.DialogHeader,{children:(0,b.jsx)(c.DialogTitle,{children:h})}),a&&(0,b.jsx)(q,{mode:e,model:f,defaultProviderId:g,onSaved:()=>d(!1),onCancel:()=>d(!1)})]})})}],634755)},328790,a=>{"use strict";let b=(0,a.i(883706).default)("refresh-ccw",[["path",{d:"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"14sxne"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16",key:"1hlbsb"}],["path",{d:"M16 16h5v5",key:"ccwih5"}]]);a.s(["RefreshCcw",0,b],328790)},158880,649865,a=>{"use strict";var b=a.i(187924);let c=(0,a.i(883706).default)("inbox",[["polyline",{points:"22 12 16 12 14 15 10 15 8 12 2 12",key:"o97t9d"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}]]);var d=a.i(588237),e=a.i(497895);a.s(["DataTableCell",0,function({className:a,...c}){return(0,b.jsx)(d.TableCell,{className:(0,e.cn)("py-2 first:pl-4 last:pr-4",a),...c})},"DataTableEmpty",0,function({colSpan:a,children:e}){return(0,b.jsx)(d.TableRow,{className:"hover:bg-transparent",children:(0,b.jsx)(d.TableCell,{colSpan:a,className:"h-48 text-center align-middle text-muted-foreground/40",children:(0,b.jsx)("div",{className:"flex items-center justify-center",children:(0,b.jsx)(c,{className:"h-8 w-8","aria-label":"empty"})})})})},"DataTableHead",0,function({className:a,...c}){return(0,b.jsx)(d.TableHead,{className:(0,e.cn)("h-10 text-xs font-semibold uppercase tracking-wide text-muted-foreground/80 first:pl-4 last:pr-4",a),...c})},"DataTableHeader",0,function({className:a,...c}){return(0,b.jsx)(d.TableHeader,{className:(0,e.cn)("bg-muted/40 sticky top-0 z-10",a),...c})},"DataTableHeaderRow",0,function({className:a,...c}){return(0,b.jsx)(d.TableRow,{className:(0,e.cn)("hover:bg-transparent border-b-muted/60 shadow-sm",a),...c})},"DataTableRow",0,function({className:a,interactive:c=!0,...f}){return(0,b.jsx)(d.TableRow,{className:(0,e.cn)("h-10 border-b-muted/20 even:bg-muted/50 group",c&&"cursor-pointer hover:bg-muted/90",a),...f})},"DataTableShell",0,function({className:a,...c}){return(0,b.jsx)("div",{className:"overflow-hidden",children:(0,b.jsx)(d.Table,{className:a,...c})})}],158880),a.s(["DataTableBody",()=>d.TableBody],649865)},131191,a=>{"use strict";let b={chat:"Chat",embedding:"Embedding",image:"Image","audio.speech":"Speech","audio.transcription":"Transcription",rerank:"Rerank"};a.s(["capabilityLabel",0,function(a){return a?b[a]?b[a]:(a.includes(".")?a.split(".").pop():a).replace(/[-_]/g," ").replace(/\b\w/g,a=>a.toUpperCase()):"—"}])},705151,a=>{"use strict";let b=(0,a.i(883706).default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);a.s(["Copy",0,b],705151)},104720,a=>{"use strict";let b=(0,a.i(883706).default)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);a.s(["FileText",0,b],104720)},842586,a=>{"use strict";var b=a.i(187924),c=a.i(654816),d=a.i(497895);let e={ok:{label:"Operational",dot:"bg-green-500 ring-green-200",text:"text-green-600 dark:text-green-400"},down:{label:"Down",dot:"bg-red-500 ring-red-200",text:"text-red-600 dark:text-red-400"},unchecked:{label:"Unchecked",dot:"bg-muted-foreground/40 ring-muted-foreground/10",text:"text-muted-foreground"}};a.s(["ProviderHealthPill",0,function({provider:a,size:f="sm"}){var g;let h;if(!a.health_check_url)return null;let i=e[a.last_health_status??"unchecked"],j=(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)("span",{className:(0,d.cn)("rounded-full ring-1 ring-offset-1 transition-colors duration-300","sm"===f?"h-1 w-1":"h-1.5 w-1.5",i.dot)}),(0,b.jsx)("span",{className:(0,d.cn)("font-medium uppercase tracking-wide","sm"===f?"text-[10px]":"text-xs",i.text),children:i.label})]}),k=(h=(g=a).last_health_checked_at,"down"===g.last_health_status?(0,b.jsxs)("div",{className:"space-y-1 text-xs",children:[(0,b.jsx)("div",{className:"font-semibold",children:"Health check failed"}),g.last_health_error&&(0,b.jsx)("div",{className:"font-mono text-[11px] opacity-80",children:g.last_health_error}),h&&(0,b.jsxs)("div",{className:"opacity-60",children:["Last checked: ",new Date(h).toLocaleString()]})]}):"ok"===g.last_health_status&&h?(0,b.jsxs)("div",{className:"text-xs",children:["Last checked: ",new Date(h).toLocaleString()]}):g.last_health_status?null:(0,b.jsx)("div",{className:"text-xs",children:"Provider has a health-check URL but has not been probed yet."}));return k?(0,b.jsx)(c.TooltipProvider,{children:(0,b.jsxs)(c.Tooltip,{children:[(0,b.jsx)(c.TooltipTrigger,{asChild:!0,children:j}),(0,b.jsx)(c.TooltipContent,{side:"top",className:"max-w-[280px] break-words",children:k})]})}):j}])},653407,a=>{"use strict";var b=a.i(187924),c=a.i(50944),d=a.i(823292),e=a.i(705151),f=a.i(699464),g=a.i(781560),h=a.i(254161),i=a.i(340695),j=a.i(158880),k=a.i(649865),l=a.i(654816),m=a.i(131191);a.s(["ModelsTable",0,function({models:a,onEdit:n,onDelete:o}){let p=(0,c.useRouter)(),q=!!n||!!o;return(0,b.jsxs)(j.DataTableShell,{children:[(0,b.jsx)(j.DataTableHeader,{children:(0,b.jsxs)(j.DataTableHeaderRow,{children:[(0,b.jsx)(j.DataTableHead,{children:"Model Name"}),(0,b.jsx)(j.DataTableHead,{children:"ID"}),(0,b.jsx)(j.DataTableHead,{children:"Provider"}),(0,b.jsx)(j.DataTableHead,{children:"Type"}),(0,b.jsx)(j.DataTableHead,{children:"Context"}),(0,b.jsx)(j.DataTableHead,{children:"Source"}),q&&(0,b.jsx)(j.DataTableHead,{className:"w-[88px] text-right",children:"Actions"})]})}),(0,b.jsx)(k.DataTableBody,{children:0===a.length?(0,b.jsx)(j.DataTableEmpty,{colSpan:q?7:6,children:"No models found."}):a.map(a=>(0,b.jsxs)(j.DataTableRow,{onClick:()=>p.push(`/models/${encodeURIComponent(a.name)}`),title:"Open model dashboard",children:[(0,b.jsx)(j.DataTableCell,{className:"font-mono max-w-[300px]",children:(0,b.jsxs)("div",{className:"flex items-center justify-between gap-2 w-full",children:[(0,b.jsx)("span",{className:"truncate text-xs",title:a.name,children:a.name}),(0,b.jsx)(i.Button,{variant:"ghost",size:"icon",className:"h-6 w-6 opacity-0 group-hover:opacity-100 transition-opacity shrink-0",onClick:b=>{b.stopPropagation(),navigator.clipboard.writeText(a.name),d.toast.success("Model name copied to clipboard")},children:(0,b.jsx)(e.Copy,{className:"h-3 w-3 text-muted-foreground"})})]})}),(0,b.jsx)(j.DataTableCell,{className:"font-mono text-xs text-muted-foreground max-w-[260px]",children:(0,b.jsx)(l.TooltipProvider,{children:(0,b.jsxs)(l.Tooltip,{children:[(0,b.jsx)(l.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"truncate block cursor-default",children:a.model_id})}),(0,b.jsx)(l.TooltipContent,{side:"top",children:(0,b.jsx)("p",{className:"font-mono text-xs",children:a.model_id})})]})})}),(0,b.jsx)(j.DataTableCell,{children:(0,b.jsx)(h.Badge,{variant:"outline",className:"font-normal text-[10px]",children:a.provider})}),(0,b.jsx)(j.DataTableCell,{children:(0,b.jsx)(h.Badge,{variant:"secondary",className:"font-normal text-[10px]",children:(0,m.capabilityLabel)(a.type)})}),(0,b.jsx)(j.DataTableCell,{children:(0,b.jsx)("span",{className:"font-mono text-xs text-muted-foreground",children:a.context_window?a.context_window>=1e3?`${Math.round(a.context_window/1e3)}k`:a.context_window.toLocaleString():"—"})}),(0,b.jsx)(j.DataTableCell,{children:(0,b.jsx)(h.Badge,{variant:a.is_discovered?"secondary":"default",className:"text-[10px] uppercase",children:a.is_discovered?"discovered":"override"})}),q&&(0,b.jsx)(j.DataTableCell,{className:"text-right",onClick:a=>a.stopPropagation(),children:(0,b.jsxs)("div",{className:"flex items-center justify-end gap-1",children:[n&&(0,b.jsx)(i.Button,{variant:"ghost",size:"icon",className:"h-7 w-7",title:a.is_discovered?"Promote to override":"Edit",onClick:b=>{b.stopPropagation(),n(a)},children:(0,b.jsx)(f.Pencil,{className:"h-3.5 w-3.5"})}),o&&!a.is_discovered&&(0,b.jsx)(i.Button,{variant:"ghost",size:"icon",className:"h-7 w-7 text-destructive hover:text-destructive",title:"Delete",onClick:b=>{b.stopPropagation(),o(a)},children:(0,b.jsx)(g.Trash2,{className:"h-3.5 w-3.5"})})]})})]},a.id||a.name))})]})}])}];
2
-
3
- //# sourceMappingURL=_0zxn_u0._.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../node_modules/lucide-react/src/icons/activity.ts","../../../../components/providers/model-form-dialog.tsx","../../../../components/providers/model-form.tsx","../../../../node_modules/lucide-react/src/icons/refresh-ccw.ts","../../../../components/ui/data-table.tsx","../../../../node_modules/lucide-react/src/icons/inbox.ts","../../../../components/providers/capability-label.ts","../../../../node_modules/lucide-react/src/icons/copy.ts","../../../../node_modules/lucide-react/src/icons/file-text.ts","../../../../components/providers/provider-health-pill.tsx","../../../../components/providers/models-table.tsx"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2',\n key: '169zse',\n },\n ],\n];\n\n/**\n * @component @name Activity\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjIgMTJoLTIuNDhhMiAyIDAgMCAwLTEuOTMgMS40NmwtMi4zNSA4LjM2YS4yNS4yNSAwIDAgMS0uNDggMEw5LjI0IDIuMThhLjI1LjI1IDAgMCAwLS40OCAwbC0yLjM1IDguMzZBMiAyIDAgMCAxIDQuNDkgMTJIMiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/activity\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Activity = createLucideIcon('activity', __iconNode);\n\nexport default Activity;\n","\"use client\"\n\nimport * as React from \"react\"\n\nimport type { ModelDTO } from \"@/lib/schemas/model\"\n\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\"\n\nimport { ModelForm } from \"./model-form\"\n\ninterface Props {\n open: boolean\n onOpenChange: (open: boolean) => void\n mode: \"create\" | \"edit\"\n /** In create mode: optional seed (e.g. a discovered model being\n * promoted). In edit mode: the row being edited. */\n model?: ModelDTO | null\n defaultProviderId?: string\n}\n\nexport function ModelFormDialog({ open, onOpenChange, mode, model, defaultProviderId }: Props) {\n // Pure create only when no model is supplied. Promoting a discovered\n // model is a form of edit from the user's POV — show the same title.\n const title = model || mode === \"edit\" ? \"Edit\" : \"Add model\"\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent\n className=\"sm:max-w-[640px] max-h-[90vh] overflow-y-auto\"\n // Whenever the dialog opens against an existing record\n // (edit or discovered-promote) the cursor in the\n // display-name field is surprising. Only pure-add lets\n // the default first-focus stand.\n onOpenAutoFocus={model ? (e) => e.preventDefault() : undefined}\n >\n <DialogHeader>\n <DialogTitle>{title}</DialogTitle>\n </DialogHeader>\n {/* Remount on open so the form initializer effect re-fires\n * with the freshest `model` prop. */}\n {open && (\n <ModelForm\n mode={mode}\n model={model}\n defaultProviderId={defaultProviderId}\n onSaved={() => onOpenChange(false)}\n onCancel={() => onOpenChange(false)}\n />\n )}\n </DialogContent>\n </Dialog>\n )\n}\n","\"use client\"\n\nimport { useEffect, useMemo, useState } from \"react\"\nimport { toast } from \"sonner\"\nimport { Loader2 } from \"lucide-react\"\n\nimport { capabilities, models, providers, variants } from \"@/lib/api\"\nimport type { ModelCreateInput, ModelDTO } from \"@/lib/schemas/model\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport { Switch } from \"@/components/ui/switch\"\nimport { Textarea } from \"@/components/ui/textarea\"\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\"\n\ninterface Props {\n mode: \"create\" | \"edit\"\n /** In create mode: optional seed (e.g. a discovered model being\n * promoted). In edit mode: the row being edited. */\n model?: ModelDTO | null\n /** Used to pre-select the provider on pure create. Always locked\n * (provider field becomes read-only) in edit + discovered-promote. */\n defaultProviderId?: string\n onSaved?: (saved: ModelDTO | null) => void\n onCancel?: () => void\n}\n\nexport function ModelForm({ mode, model, defaultProviderId, onSaved, onCancel }: Props) {\n const { data: providerList } = providers.useList()\n const { data: capabilityList } = capabilities.useList()\n const { data: variantList } = variants.useList()\n\n const [name, setName] = useState(\"\")\n const [providerId, setProviderId] = useState<string>(\"\")\n const [upstreamModelId, setUpstreamModelId] = useState(\"\")\n const [type, setType] = useState<string>(\"chat\")\n const [apiVariantId, setApiVariantId] = useState<string>(\"\")\n const [contextWindow, setContextWindow] = useState(\"\")\n const [maxTokens, setMaxTokens] = useState(\"\")\n const [outputDim, setOutputDim] = useState(\"\")\n const [description, setDescription] = useState(\"\")\n const [defaultParams, setDefaultParams] = useState(\"{}\")\n const [enabled, setEnabled] = useState(true)\n const [parseError, setParseError] = useState<string | null>(null)\n\n const isOverride = useMemo(\n () => mode === \"create\" && !!model?.is_discovered,\n [mode, model?.is_discovered],\n )\n\n // Provider is locked in edit + discovered-promote. Pure create lets\n // the admin pick freely.\n const providerLocked = mode === \"edit\" || isOverride\n useEffect(() => {\n if (model) {\n setName(model.name)\n setProviderId(model.provider_id ?? \"\")\n setUpstreamModelId(model.model_id ?? model.name)\n setType(model.type ?? \"chat\")\n // Seed the variant dropdown from the gateway's currently-\n // resolved choice (pin → preference walk → capability default).\n // The form has no Auto option — the dropdown always shows a\n // concrete variant the gateway is using right now.\n setApiVariantId(model.api_variant_id ?? model.resolved_variant_id ?? \"\")\n setContextWindow(model.context_window?.toString() ?? \"\")\n setMaxTokens(model.max_tokens?.toString() ?? \"\")\n setOutputDim(model.output_dimension?.toString() ?? \"\")\n setDescription(model.description ?? \"\")\n setDefaultParams(JSON.stringify(model.default_params ?? {}, null, 2))\n setEnabled(model.enabled !== false)\n } else {\n setName(\"\")\n setProviderId(defaultProviderId ?? \"\")\n setUpstreamModelId(\"\")\n setType(\"chat\")\n setApiVariantId(\"\")\n setContextWindow(\"\")\n setMaxTokens(\"\")\n setOutputDim(\"\")\n setDescription(\"\")\n setDefaultParams(\"{}\")\n setEnabled(true)\n }\n setParseError(null)\n }, [mode, model, defaultProviderId])\n\n const createMutation = models.useCreate({\n onSuccess: (saved) => {\n toast.success(\"Saved\")\n onSaved?.(saved)\n },\n onError: (e) => toast.error(e.message || \"Save failed\"),\n })\n\n const updateMutation = models.useUpdate({\n onSuccess: (saved) => {\n toast.success(\"Saved\")\n onSaved?.(saved ?? null)\n },\n onError: (e) => toast.error(e.message || \"Save failed\"),\n })\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault()\n if (!name.trim()) return toast.error(\"Name required\")\n if (!providerId) return toast.error(\"Provider required\")\n if (!upstreamModelId.trim()) return toast.error(\"Upstream model id required\")\n\n let params: Record<string, unknown> = {}\n try {\n params = defaultParams.trim() ? JSON.parse(defaultParams) : {}\n setParseError(null)\n } catch (err) {\n setParseError(err instanceof Error ? err.message : \"Invalid JSON\")\n return\n }\n\n const payload: ModelCreateInput = {\n name: name.trim(),\n provider_id: providerId,\n upstream_model_id: upstreamModelId.trim(),\n type,\n api_variant_id: apiVariantId || null,\n default_params: params,\n context_window: contextWindow ? Number(contextWindow) : null,\n max_tokens: maxTokens ? Number(maxTokens) : null,\n output_dimension: outputDim ? Number(outputDim) : null,\n description: description || null,\n enabled,\n }\n\n // When promoting a discovered model into an override, snapshot the\n // raw upstream entry so the gateway can re-project metadata even\n // when the discovery cache is cold.\n if (isOverride && model?.meta?.raw != null) {\n payload.discovered_metadata = model.meta.raw\n }\n\n if (mode === \"create\") {\n createMutation.mutate(payload)\n } else if (model) {\n updateMutation.mutate({ id: model.id, data: payload })\n }\n }\n\n const isLoading = createMutation.isPending || updateMutation.isPending\n const submitLabel = model || mode === \"edit\" ? \"Save\" : \"Create\"\n\n const variantsForCapability = useMemo(\n () => (variantList ?? []).filter((v) => v.capability === type),\n [variantList, type],\n )\n const selectedProvider = useMemo(\n () => (providerList ?? []).find((p) => p.id === providerId),\n [providerList, providerId],\n )\n\n return (\n <form onSubmit={handleSubmit} className=\"space-y-4\">\n <div className=\"grid sm:grid-cols-2 gap-3\">\n <Field label=\"Display name\" htmlFor=\"m-name\">\n <Input\n id=\"m-name\"\n value={name}\n onChange={(e) => setName(e.target.value)}\n placeholder=\"gpt-4o-mini\"\n className=\"h-9 text-sm font-mono\"\n />\n </Field>\n <Field label=\"Upstream model ID\" htmlFor=\"m-up\">\n <Input\n id=\"m-up\"\n value={upstreamModelId}\n onChange={(e) => setUpstreamModelId(e.target.value)}\n placeholder=\"gpt-4o-mini\"\n className=\"h-9 text-sm font-mono\"\n />\n </Field>\n </div>\n\n <div className=\"grid sm:grid-cols-2 gap-3\">\n <Field label=\"Provider\">\n {providerLocked ? (\n <Input\n value={selectedProvider?.name ?? providerId}\n readOnly\n disabled\n className=\"h-9 text-sm font-mono bg-muted/40\"\n />\n ) : (\n <Select value={providerId} onValueChange={setProviderId}>\n <SelectTrigger className=\"h-9 text-sm\">\n <SelectValue placeholder=\"Select provider\" />\n </SelectTrigger>\n <SelectContent>\n {(providerList ?? []).map((p) => (\n <SelectItem key={p.id} value={p.id}>{p.name}</SelectItem>\n ))}\n </SelectContent>\n </Select>\n )}\n </Field>\n <Field label=\"Capability\">\n <Select value={type} onValueChange={setType}>\n <SelectTrigger className=\"h-9 text-sm\"><SelectValue /></SelectTrigger>\n <SelectContent>\n {(capabilityList ?? []).map((c) => (\n <SelectItem key={c.id} value={c.id}>{c.label}</SelectItem>\n ))}\n {type && !(capabilityList ?? []).some((c) => c.id === type) && (\n <SelectItem value={type}>{type}</SelectItem>\n )}\n </SelectContent>\n </Select>\n </Field>\n </div>\n\n {variantsForCapability.length > 1 && apiVariantId && (\n <Field label=\"Upstream API\">\n <Select value={apiVariantId} onValueChange={setApiVariantId}>\n <SelectTrigger className=\"h-9 text-sm\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {variantsForCapability.map((v) => (\n <SelectItem key={v.id} value={v.id}>\n <span className=\"font-mono text-xs\">{v.id}</span>\n </SelectItem>\n ))}\n {!variantsForCapability.some((v) => v.id === apiVariantId) && (\n <SelectItem value={apiVariantId}>\n <span className=\"font-mono text-xs\">{apiVariantId}</span>\n </SelectItem>\n )}\n </SelectContent>\n </Select>\n </Field>\n )}\n\n <div className=\"grid sm:grid-cols-3 gap-3\">\n <Field label=\"Context window\" htmlFor=\"m-ctx\">\n <Input id=\"m-ctx\" type=\"number\" value={contextWindow} onChange={(e) => setContextWindow(e.target.value)} className=\"h-9 text-sm\" />\n </Field>\n <Field label=\"Max tokens\" htmlFor=\"m-max\">\n <Input id=\"m-max\" type=\"number\" value={maxTokens} onChange={(e) => setMaxTokens(e.target.value)} className=\"h-9 text-sm\" />\n </Field>\n <Field label=\"Output dim\" htmlFor=\"m-dim\">\n <Input id=\"m-dim\" type=\"number\" value={outputDim} onChange={(e) => setOutputDim(e.target.value)} className=\"h-9 text-sm\" />\n </Field>\n </div>\n\n <Field label=\"Description\" htmlFor=\"m-desc\">\n <Input id=\"m-desc\" value={description} onChange={(e) => setDescription(e.target.value)} className=\"h-9 text-sm\" />\n </Field>\n\n <Field label=\"Default params (JSON)\" htmlFor=\"m-params\">\n <Textarea\n id=\"m-params\"\n value={defaultParams}\n onChange={(e) => setDefaultParams(e.target.value)}\n rows={5}\n className=\"text-xs font-mono\"\n />\n {parseError && <span className=\"text-xs text-destructive\">{parseError}</span>}\n </Field>\n\n <div className=\"flex items-center justify-between\">\n <Label htmlFor=\"m-enabled\" className=\"text-xs\">Enabled</Label>\n <Switch id=\"m-enabled\" checked={enabled} onCheckedChange={setEnabled} />\n </div>\n\n <div className=\"flex items-center justify-end gap-2 pt-2\">\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={onCancel}\n disabled={isLoading}\n >\n Cancel\n </Button>\n <Button type=\"submit\" size=\"sm\" disabled={isLoading}>\n {isLoading && <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />}\n {submitLabel}\n </Button>\n </div>\n </form>\n )\n}\n\nfunction Field({\n label,\n htmlFor,\n children,\n}: {\n label: string\n htmlFor?: string\n children: React.ReactNode\n}) {\n return (\n <div className=\"grid gap-1.5 min-w-0\">\n <Label htmlFor={htmlFor} className=\"text-xs\">{label}</Label>\n {children}\n </div>\n )\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8', key: '14sxne' }],\n ['path', { d: 'M3 3v5h5', key: '1xhq8a' }],\n ['path', { d: 'M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16', key: '1hlbsb' }],\n ['path', { d: 'M16 16h5v5', key: 'ccwih5' }],\n];\n\n/**\n * @component @name RefreshCcw\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgMTJhOSA5IDAgMCAwLTktOSA5Ljc1IDkuNzUgMCAwIDAtNi43NCAyLjc0TDMgOCIgLz4KICA8cGF0aCBkPSJNMyAzdjVoNSIgLz4KICA8cGF0aCBkPSJNMyAxMmE5IDkgMCAwIDAgOSA5IDkuNzUgOS43NSAwIDAgMCA2Ljc0LTIuNzRMMjEgMTYiIC8+CiAgPHBhdGggZD0iTTE2IDE2aDV2NSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/refresh-ccw\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst RefreshCcw = createLucideIcon('refresh-ccw', __iconNode);\n\nexport default RefreshCcw;\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Inbox } from \"lucide-react\"\n\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@/components/ui/table\"\nimport { cn } from \"@/lib/utils\"\n\n/**\n * Shared visual contract for dashboard data tables (currently used by\n * /logs and /providers#models). Pages compose these primitives so the\n * \"Loom dashboard table\" look — sticky muted header, uppercase head text,\n * zebra rows, hover highlight, consistent padding — lives in exactly one\n * place. Future style tweaks touch this file only.\n *\n * These primitives are visual-only by design (SRP). They do not know\n * about sorting, pagination, or data fetching; callers wire those.\n */\n\nexport function DataTableShell({\n className,\n ...props\n}: React.ComponentProps<\"table\">) {\n return (\n <div className=\"overflow-hidden\">\n <Table className={className} {...props} />\n </div>\n )\n}\n\nexport function DataTableHeader({\n className,\n ...props\n}: React.ComponentProps<\"thead\">) {\n return (\n <TableHeader\n className={cn(\"bg-muted/40 sticky top-0 z-10\", className)}\n {...props}\n />\n )\n}\n\nexport function DataTableHeaderRow({\n className,\n ...props\n}: React.ComponentProps<\"tr\">) {\n return (\n <TableRow\n className={cn(\n \"hover:bg-transparent border-b-muted/60 shadow-sm\",\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function DataTableHead({\n className,\n ...props\n}: React.ComponentProps<\"th\">) {\n return (\n <TableHead\n className={cn(\n \"h-10 text-xs font-semibold uppercase tracking-wide text-muted-foreground/80 first:pl-4 last:pr-4\",\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function DataTableRow({\n className,\n interactive = true,\n ...props\n}: React.ComponentProps<\"tr\"> & { interactive?: boolean }) {\n return (\n <TableRow\n className={cn(\n \"h-10 border-b-muted/20 even:bg-muted/50 group\",\n interactive && \"cursor-pointer hover:bg-muted/90\",\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function DataTableCell({\n className,\n ...props\n}: React.ComponentProps<\"td\">) {\n return (\n <TableCell\n className={cn(\"py-2 first:pl-4 last:pr-4\", className)}\n {...props}\n />\n )\n}\n\nexport function DataTableEmpty({\n colSpan,\n children: _children,\n}: {\n colSpan: number\n children?: React.ReactNode\n}) {\n void _children\n return (\n <TableRow className=\"hover:bg-transparent\">\n <TableCell\n colSpan={colSpan}\n className=\"h-48 text-center align-middle text-muted-foreground/40\"\n >\n <div className=\"flex items-center justify-center\">\n <Inbox className=\"h-8 w-8\" aria-label=\"empty\" />\n </div>\n </TableCell>\n </TableRow>\n )\n}\n\nexport { TableBody as DataTableBody }\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['polyline', { points: '22 12 16 12 14 15 10 15 8 12 2 12', key: 'o97t9d' }],\n [\n 'path',\n {\n d: 'M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z',\n key: 'oot6mr',\n },\n ],\n];\n\n/**\n * @component @name Inbox\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cG9seWxpbmUgcG9pbnRzPSIyMiAxMiAxNiAxMiAxNCAxNSAxMCAxNSA4IDEyIDIgMTIiIC8+CiAgPHBhdGggZD0iTTUuNDUgNS4xMSAyIDEydjZhMiAyIDAgMCAwIDIgMmgxNmEyIDIgMCAwIDAgMi0ydi02bC0zLjQ1LTYuODlBMiAyIDAgMCAwIDE2Ljc2IDRINy4yNGEyIDIgMCAwIDAtMS43OSAxLjExeiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/inbox\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Inbox = createLucideIcon('inbox', __iconNode);\n\nexport default Inbox;\n","/**\n * Display-friendly labels for capability ids. Capability ids are dot-style\n * (`audio.speech`, `audio.transcription`) for namespacing on the server,\n * but rendering them verbatim in the UI looks like a path. Single source\n * of truth so list/table/badge/card all agree.\n *\n * New capabilities fall back to a Title-Cased version of the id.\n */\nconst KNOWN: Record<string, string> = {\n chat: \"Chat\",\n embedding: \"Embedding\",\n image: \"Image\",\n \"audio.speech\": \"Speech\",\n \"audio.transcription\": \"Transcription\",\n rerank: \"Rerank\",\n};\n\nexport function capabilityLabel(id: string | null | undefined): string {\n if (!id) return \"—\";\n if (KNOWN[id]) return KNOWN[id];\n // Fallback: take the last segment, title-case.\n const tail = id.includes(\".\") ? id.split(\".\").pop()! : id;\n return tail.replace(/[-_]/g, \" \").replace(/\\b\\w/g, (c) => c.toUpperCase());\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '14', height: '14', x: '8', y: '8', rx: '2', ry: '2', key: '17jyea' }],\n ['path', { d: 'M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2', key: 'zix9uf' }],\n];\n\n/**\n * @component @name Copy\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHg9IjgiIHk9IjgiIHJ4PSIyIiByeT0iMiIgLz4KICA8cGF0aCBkPSJNNCAxNmMtMS4xIDAtMi0uOS0yLTJWNGMwLTEuMS45LTIgMi0yaDEwYzEuMSAwIDIgLjkgMiAyIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/copy\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Copy = createLucideIcon('copy', __iconNode);\n\nexport default Copy;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z',\n key: '1oefj6',\n },\n ],\n ['path', { d: 'M14 2v5a1 1 0 0 0 1 1h5', key: 'wfsgrz' }],\n ['path', { d: 'M10 9H8', key: 'b1mrlr' }],\n ['path', { d: 'M16 13H8', key: 't4e002' }],\n ['path', { d: 'M16 17H8', key: 'z1uh3a' }],\n];\n\n/**\n * @component @name FileText\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNiAyMmEyIDIgMCAwIDEtMi0yVjRhMiAyIDAgMCAxIDItMmg4YTIuNCAyLjQgMCAwIDEgMS43MDQuNzA2bDMuNTg4IDMuNTg4QTIuNCAyLjQgMCAwIDEgMjAgOHYxMmEyIDIgMCAwIDEtMiAyeiIgLz4KICA8cGF0aCBkPSJNMTQgMnY1YTEgMSAwIDAgMCAxIDFoNSIgLz4KICA8cGF0aCBkPSJNMTAgOUg4IiAvPgogIDxwYXRoIGQ9Ik0xNiAxM0g4IiAvPgogIDxwYXRoIGQ9Ik0xNiAxN0g4IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/file-text\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FileText = createLucideIcon('file-text', __iconNode);\n\nexport default FileText;\n","import type { ProviderDTO } from \"@/lib/schemas/provider\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/ui/tooltip\"\nimport { cn } from \"@/lib/utils\"\n\n/**\n * Provider health pill.\n *\n * Visibility & color rules (single source of truth — used by both the\n * card grid and the per-provider detail page):\n * - No `health_check_url` → render nothing. We have no signal,\n * so claiming Operational would be a lie.\n * - URL set, status === \"ok\" → green \"Operational\".\n * - URL set, status === \"down\" → red \"Down\" + tooltip with error.\n * - URL set, status === null → grey \"Unchecked\" (never probed).\n *\n * Two `size` variants share the same logic so the card row stays compact\n * and the detail page stays prominent.\n */\ntype Size = \"sm\" | \"md\";\n\nconst STATUS = {\n ok: {\n label: \"Operational\",\n dot: \"bg-green-500 ring-green-200\",\n text: \"text-green-600 dark:text-green-400\",\n },\n down: {\n label: \"Down\",\n dot: \"bg-red-500 ring-red-200\",\n text: \"text-red-600 dark:text-red-400\",\n },\n unchecked: {\n label: \"Unchecked\",\n dot: \"bg-muted-foreground/40 ring-muted-foreground/10\",\n text: \"text-muted-foreground\",\n },\n} as const;\n\nexport function ProviderHealthPill({\n provider,\n size = \"sm\",\n}: {\n provider: Pick<ProviderDTO, \"health_check_url\" | \"last_health_status\" | \"last_health_checked_at\" | \"last_health_error\">;\n size?: Size;\n}) {\n if (!provider.health_check_url) return null;\n\n const key = provider.last_health_status ?? \"unchecked\";\n const s = STATUS[key];\n\n const inner = (\n <div className=\"flex items-center gap-1.5\">\n <span\n className={cn(\n \"rounded-full ring-1 ring-offset-1 transition-colors duration-300\",\n size === \"sm\" ? \"h-1 w-1\" : \"h-1.5 w-1.5\",\n s.dot,\n )}\n />\n <span\n className={cn(\n \"font-medium uppercase tracking-wide\",\n size === \"sm\" ? \"text-[10px]\" : \"text-xs\",\n s.text,\n )}\n >\n {s.label}\n </span>\n </div>\n );\n\n // Tooltip only when there's something useful to show.\n const tooltipBody = tooltipFor(provider);\n if (!tooltipBody) return inner;\n\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>{inner}</TooltipTrigger>\n <TooltipContent side=\"top\" className=\"max-w-[280px] break-words\">\n {tooltipBody}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n}\n\nfunction tooltipFor(\n provider: Pick<ProviderDTO, \"last_health_status\" | \"last_health_checked_at\" | \"last_health_error\">,\n): React.ReactNode {\n const when = provider.last_health_checked_at;\n if (provider.last_health_status === \"down\") {\n return (\n <div className=\"space-y-1 text-xs\">\n <div className=\"font-semibold\">Health check failed</div>\n {provider.last_health_error && (\n <div className=\"font-mono text-[11px] opacity-80\">{provider.last_health_error}</div>\n )}\n {when && <div className=\"opacity-60\">Last checked: {new Date(when).toLocaleString()}</div>}\n </div>\n );\n }\n if (provider.last_health_status === \"ok\" && when) {\n return <div className=\"text-xs\">Last checked: {new Date(when).toLocaleString()}</div>;\n }\n if (!provider.last_health_status) {\n return <div className=\"text-xs\">Provider has a health-check URL but has not been probed yet.</div>;\n }\n return null;\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { useRouter } from \"next/navigation\"\nimport { toast } from \"sonner\"\nimport { Copy, Pencil, Trash2 } from \"lucide-react\"\n\nimport type { ModelDTO } from \"@/lib/schemas/model\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n DataTableBody,\n DataTableCell,\n DataTableEmpty,\n DataTableHead,\n DataTableHeader,\n DataTableHeaderRow,\n DataTableRow,\n DataTableShell,\n} from \"@/components/ui/data-table\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/ui/tooltip\"\n\nimport { capabilityLabel } from \"./capability-label\"\n\ninterface Props {\n models: ModelDTO[]\n /** Admin: per-row Edit handler. Opens the popup form. For discovered\n * rows the parent should open the popup in \"create\" mode so the\n * admin saves a new override pre-filled with the discovered defaults. */\n onEdit?: (model: ModelDTO) => void\n /** Admin: per-row Delete handler. */\n onDelete?: (model: ModelDTO) => void\n}\n\n/** Table of models. Row click navigates to the per-model dashboard.\n * Admin Edit / Delete are direct icon buttons (one click, no dropdown). */\nexport function ModelsTable({ models, onEdit, onDelete }: Props) {\n const router = useRouter()\n const showActions = !!onEdit || !!onDelete\n const columnCount = showActions ? 7 : 6\n\n return (\n <DataTableShell>\n <DataTableHeader>\n <DataTableHeaderRow>\n <DataTableHead>Model Name</DataTableHead>\n <DataTableHead>ID</DataTableHead>\n <DataTableHead>Provider</DataTableHead>\n <DataTableHead>Type</DataTableHead>\n <DataTableHead>Context</DataTableHead>\n <DataTableHead>Source</DataTableHead>\n {showActions && <DataTableHead className=\"w-[88px] text-right\">Actions</DataTableHead>}\n </DataTableHeaderRow>\n </DataTableHeader>\n <DataTableBody>\n {models.length === 0 ? (\n <DataTableEmpty colSpan={columnCount}>No models found.</DataTableEmpty>\n ) : (\n models.map((model) => (\n <DataTableRow\n key={model.id || model.name}\n onClick={() =>\n router.push(`/models/${encodeURIComponent(model.name)}`)\n }\n title=\"Open model dashboard\"\n >\n <DataTableCell className=\"font-mono max-w-[300px]\">\n <div className=\"flex items-center justify-between gap-2 w-full\">\n <span className=\"truncate text-xs\" title={model.name}>\n {model.name}\n </span>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-6 w-6 opacity-0 group-hover:opacity-100 transition-opacity shrink-0\"\n onClick={(e) => {\n e.stopPropagation()\n navigator.clipboard.writeText(model.name)\n toast.success(\"Model name copied to clipboard\")\n }}\n >\n <Copy className=\"h-3 w-3 text-muted-foreground\" />\n </Button>\n </div>\n </DataTableCell>\n <DataTableCell className=\"font-mono text-xs text-muted-foreground max-w-[260px]\">\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"truncate block cursor-default\">\n {model.model_id}\n </span>\n </TooltipTrigger>\n <TooltipContent side=\"top\">\n <p className=\"font-mono text-xs\">{model.model_id}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n </DataTableCell>\n <DataTableCell>\n <Badge variant=\"outline\" className=\"font-normal text-[10px]\">\n {model.provider}\n </Badge>\n </DataTableCell>\n <DataTableCell>\n <Badge variant=\"secondary\" className=\"font-normal text-[10px]\">\n {capabilityLabel(model.type)}\n </Badge>\n </DataTableCell>\n <DataTableCell>\n <span className=\"font-mono text-xs text-muted-foreground\">\n {model.context_window\n ? model.context_window >= 1000\n ? `${Math.round(model.context_window / 1000)}k`\n : model.context_window.toLocaleString()\n : \"—\"}\n </span>\n </DataTableCell>\n <DataTableCell>\n <Badge\n variant={model.is_discovered ? \"secondary\" : \"default\"}\n className=\"text-[10px] uppercase\"\n >\n {model.is_discovered ? \"discovered\" : \"override\"}\n </Badge>\n </DataTableCell>\n {showActions && (\n <DataTableCell\n className=\"text-right\"\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"flex items-center justify-end gap-1\">\n {onEdit && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-7 w-7\"\n title={model.is_discovered ? \"Promote to override\" : \"Edit\"}\n onClick={(e) => {\n e.stopPropagation()\n onEdit(model)\n }}\n >\n <Pencil className=\"h-3.5 w-3.5\" />\n </Button>\n )}\n {onDelete && !model.is_discovered && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-7 w-7 text-destructive hover:text-destructive\"\n title=\"Delete\"\n onClick={(e) => {\n e.stopPropagation()\n onDelete(model)\n }}\n >\n <Trash2 className=\"h-3.5 w-3.5\" />\n </Button>\n )}\n </div>\n </DataTableCell>\n )}\n </DataTableRow>\n ))\n )}\n </DataTableBody>\n </DataTableShell>\n )\n}\n\n"],"names":["ModelForm","mode","model","defaultProviderId","onSaved","onCancel","data","providerList","useList","capabilityList","variantList","name","setName","providerId","setProviderId","upstreamModelId","setUpstreamModelId","type","setType","apiVariantId","setApiVariantId","contextWindow","setContextWindow","maxTokens","setMaxTokens","outputDim","setOutputDim","description","setDescription","defaultParams","setDefaultParams","enabled","setEnabled","parseError","setParseError","isOverride","is_discovered","providerLocked","provider_id","model_id","api_variant_id","resolved_variant_id","context_window","toString","max_tokens","output_dimension","JSON","stringify","default_params","createMutation","useCreate","onSuccess","saved","success","onError","e","error","message","updateMutation","useUpdate","handleSubmit","preventDefault","trim","params","parse","err","Error","payload","upstream_model_id","Number","meta","raw","discovered_metadata","mutate","id","isLoading","isPending","submitLabel","variantsForCapability","filter","v","capability","selectedProvider","find","p","onSubmit","className","Field","label","htmlFor","value","onChange","target","placeholder","readOnly","disabled","onValueChange","map","c","some","length","rows","checked","onCheckedChange","variant","size","onClick","children","KNOWN","chat","embedding","image","rerank","capabilityLabel","tail","includes","split","pop","replace","toUpperCase","STATUS","ok","dot","text","down","unchecked","ProviderHealthPill","provider","health_check_url","key","last_health_status","s","inner","tooltipBody","tooltipFor","asChild","side","when","last_health_checked_at","last_health_error","Date","toLocaleString","ModelsTable","models","onEdit","onDelete","router","showActions","columnCount","colSpan","push","encodeURIComponent","title","stopPropagation","navigator","clipboard","writeText","Math","round"],"mappings":"wCAwBA,CAAA,CAAA,CAAA,CAAA,AAAM,CAAN,CAAM,CAAA,EAAW,CAAA,CAAA,CAAA,AAAX,CAAA,AAAW,CAAX,AAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CArBE,CAqBU,AApB5C,CAoB4C,AAnB1C,CAmB0C,AAnB1C,CAmB0C,AAnB1C,CAAA,AAmB0C,CAnB1C,AAmB0C,CAnB1C,AAmB0C,CAnB1C,AAmB0C,CAAA,AAlB1C,CAkB0C,AAjBxC,CAiBkD,AAjBlD,CAiBkD,AAjB/C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACH,GAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EACP,CAEJ,0ECLA,EAAA,EAAA,CAAA,CAAA,QCJA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QAEA,EAAA,CAAA,CAAA,QAAA,IAAA,EAAA,EAAA,CAAA,CAAA,QAAA,EAAA,EAAA,CAAA,CAAA,QAAA,EAAA,EAAA,CAAA,CAAA,QAAA,EAAA,EAAA,CAAA,CAAA,OAGA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QAoBO,SAASA,EAAU,MAAEC,CAAI,OAAEC,CAAK,mBAAEC,CAAiB,SAAEC,CAAO,UAAEC,CAAQ,CAAS,EAClF,GAAM,CAAEC,KAAMC,CAAY,CAAE,CAAG,EAAA,SAAS,CAACC,OAAO,GAC1C,CAAEF,KAAMG,CAAc,CAAE,CAAG,EAAA,YAAY,CAACD,OAAO,GAC/C,CAAEF,KAAMI,CAAW,CAAE,CAAG,EAAA,QAAQ,CAACF,OAAO,GAExC,CAACG,EAAMC,EAAQ,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IAC3B,CAACC,EAAYC,EAAc,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAS,IAC/C,CAACC,EAAiBC,EAAmB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IACjD,CAACC,EAAMC,EAAQ,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAS,QACnC,CAACC,EAAcC,EAAgB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAS,IACnD,CAACC,EAAeC,EAAiB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IAC7C,CAACC,EAAWC,EAAa,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IACrC,CAACC,EAAWC,EAAa,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IACrC,CAACC,EAAaC,EAAe,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IACzC,CAACC,EAAeC,EAAiB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,MAC7C,CAACC,EAASC,EAAW,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GACjC,CAACC,EAAYC,EAAc,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAgB,MAEtDC,EAAa,CAAA,EAAA,EAAA,OAAO,AAAP,EACf,IAAMlC,AAAS,cAAY,CAAC,CAACC,GAAOkC,cACpC,CAACnC,EAAMC,GAAOkC,cAAc,EAK1BC,EAA0B,SAATpC,GAAmBkC,EAC1C,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACFjC,GACAU,EAAQV,EAAMS,AADP,IACW,EAClBG,EAAcZ,EAAMoC,WAAW,EAAI,IACnCtB,EAAmBd,EAAMqC,QAAQ,EAAIrC,EAAMS,IAAI,EAC/CO,EAAQhB,EAAMe,IAAI,EAAI,QAKtBG,EAAgBlB,EAAMsC,cAAc,EAAItC,EAAMuC,mBAAmB,EAAI,IACrEnB,EAAiBpB,EAAMwC,cAAc,EAAEC,YAAc,IACrDnB,EAAatB,EAAM0C,UAAU,EAAED,YAAc,IAC7CjB,EAAaxB,EAAM2C,gBAAgB,EAAEF,YAAc,IACnDf,EAAe1B,EAAMyB,WAAW,EAAI,IACpCG,EAAiBgB,KAAKC,SAAS,CAAC7C,EAAM8C,cAAc,EAAI,CAAC,EAAG,KAAM,IAClEhB,EAA6B,KAAlB9B,EAAM6B,OAAO,IAExBnB,EAAQ,IACRE,EAAcX,GAAqB,IACnCa,EAAmB,IACnBE,EAAQ,QACRE,EAAgB,IAChBE,EAAiB,IACjBE,EAAa,IACbE,EAAa,IACbE,EAAe,IACfE,EAAiB,MACjBE,EAAW,KAEfE,EAAc,KAClB,EAAG,CAACjC,EAAMC,EAAOC,EAAkB,EAEnC,IAAM8C,EAAiB,EAAA,MAAM,CAACC,SAAS,CAAC,CACpCC,UAAW,AAACC,IACR,EAAA,KAAK,CAACC,OAAO,CAAC,SACdjD,IAAUgD,EACd,EACAE,QAAS,AAACC,GAAM,EAAA,KAAK,CAACC,KAAK,CAACD,EAAEE,OAAO,EAAI,cAC7C,GAEMC,EAAiB,EAAA,MAAM,CAACC,SAAS,CAAC,CACpCR,UAAYC,AAAD,IACP,EAAA,KAAK,CAACC,OAAO,CAAC,SACdjD,IAAUgD,GAAS,KACvB,EACAE,QAAS,AAACC,GAAM,EAAA,KAAK,CAACC,KAAK,CAACD,EAAEE,OAAO,EAAI,cAC7C,GA6CMkB,EAAY1B,EAAe2B,SAAS,EAAIlB,EAAekB,SAAS,CAChEC,EAAc3E,GAAkB,SAATD,EAAkB,OAAS,SAElD6E,GAAwB,CAAA,EAAA,EAAA,OAAA,AAAO,EACjC,IAAM,CAACpE,GAAe,EAAA,AAAE,EAAEqE,MAAM,CAAC,AAACC,GAAMA,EAAEC,UAAU,GAAKhE,GACzD,CAACP,EAAaO,EAAK,EAEjBiE,GAAmB,CAAA,EAAA,EAAA,OAAA,AAAO,EAC5B,IAAM,AAAC3E,IAAgB,EAAA,AAAE,EAAE4E,IAAI,CAAC,AAACC,GAAMA,EAAEV,EAAE,GAAK7D,GAChD,CAACN,EAAcM,EAAW,EAG9B,MACI,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAKwE,SAxDY9B,AAAD,CAwDDK,GAtDhB,GADAL,EAAEM,cAAc,GACZ,CAAClD,EAAKmD,IAAI,GAAI,OAAO,EAAA,KAAK,CAACN,KAAK,CAAC,iBACrC,GAAI,CAAC3C,EAAY,OAAO,EAAA,KAAK,CAAC2C,KAAK,CAAC,qBACpC,GAAI,CAACzC,EAAgB+C,IAAI,GAAI,OAAO,EAAA,KAAK,CAACN,KAAK,CAAC,8BAEhD,IAAIO,EAAkC,CAAC,EACvC,GAAI,CACAA,EAASlC,EAAciC,IAAI,GAAKhB,KAAKkB,KAAK,CAACnC,GAAiB,CAAC,EAC7DK,EAAc,KAClB,CAAE,MAAO+B,EAAK,CACV/B,EAAc+B,aAAeC,MAAQD,EAAIR,OAAO,CAAG,gBACnD,MACJ,CAEA,IAAMU,EAA4B,CAC9BxD,KAAMA,EAAKmD,IAAI,GACfxB,YAAazB,EACbuD,kBAAmBrD,EAAgB+C,IAAI,QACvC7C,EACAuB,eAAgBrB,GAAgB,KAChC6B,eAAgBe,EAChBrB,eAAgBrB,EAAgBgD,OAAOhD,GAAiB,KACxDuB,WAAYrB,EAAY8C,OAAO9C,GAAa,KAC5CsB,iBAAkBpB,EAAY4C,OAAO5C,GAAa,KAClDE,YAAaA,GAAe,aAC5BI,CACJ,EAKII,GAAcjC,GAAOoE,MAAMC,KAAO,MAAM,CACxCJ,EAAQK,mBAAmB,CAAGtE,EAAMoE,IAAI,CAACC,GAAAA,AAAG,EAGnC,UAAU,CAAnBtE,EACAgD,EAAewB,MAAM,CAACN,GACfjE,GACPwD,EAAee,EADD,IACO,CAAC,CAAEC,GAAIxE,EAAMwE,EAAE,CAAEpE,KAAM6D,CAAQ,EAE5D,EAekCmB,UAAU,sBACpC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIA,UAAU,sCACX,CAAA,EAAA,EAAA,GAAA,EAACC,EAAAA,CAAMC,MAAM,eAAeC,QAAQ,kBAChC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CACFf,GAAG,SACHgB,MAAO/E,EACPgF,SAAU,AAACpC,GAAM3C,EAAQ2C,EAAEqC,MAAM,CAACF,KAAK,EACvCG,YAAY,cACZP,UAAU,4BAGlB,CAAA,EAAA,EAAA,GAAA,EAACC,EAAAA,CAAMC,MAAM,oBAAoBC,QAAQ,gBACrC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CACFf,GAAG,OACHgB,MAAO3E,EACP4E,SAAU,AAACpC,GAAMvC,EAAmBuC,EAAEqC,MAAM,CAACF,KAAK,EAClDG,YAAY,cACZP,UAAU,+BAKtB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIA,UAAU,sCACX,CAAA,EAAA,EAAA,GAAA,EAACC,EAAAA,CAAMC,MAAM,oBACRnD,EACG,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CACFqD,MAAOR,IAAkBvE,MAAQE,EACjCiF,QAAQ,CAAA,CAAA,EACRC,QAAQ,CAAA,CAAA,EACRT,UAAU,sCAGd,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,MAAM,CAAA,CAACI,MAAO7E,EAAYmF,cAAelF,YACtC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,aAAa,CAAA,CAACwE,UAAU,uBACrB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,WAAW,CAAA,CAACO,YAAY,sBAE7B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,aAAa,CAAA,UACT,CAACtF,GAAgB,EAAE,AAAF,EAAI0F,GAAG,CAAC,AAACb,GACvB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CAAYM,MAAON,EAAEV,EAAE,UAAGU,EAAEzE,IAAI,EAA1ByE,EAAEV,EAAE,UAMzC,CAAA,EAAA,EAAA,GAAA,EAACa,EAAAA,CAAMC,MAAM,sBACT,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,MAAM,CAAA,CAACE,MAAOzE,EAAM+E,cAAe9E,YAChC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,aAAa,CAAA,CAACoE,UAAU,uBAAc,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,WAAW,CAAA,CAAA,KACnD,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,aAAa,CAAA,WACT,CAAC7E,GAAkB,EAAA,AAAE,EAAEwF,GAAG,CAAC,AAACC,GACzB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CAAYR,MAAOQ,EAAExB,EAAE,UAAGwB,EAAEV,KAAK,EAA3BU,EAAExB,EAAE,GAExBzD,GAAQ,CAAC,CAACR,GAAkB,EAAA,AAAE,EAAE0F,IAAI,CAAC,AAACD,GAAMA,EAAExB,EAAE,GAAKzD,IAClD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CAACyE,MAAOzE,WAAOA,eAO7C6D,GAAsBsB,MAAM,CAAG,GAAKjF,GACjC,CAAA,EAAA,EAAA,GAAA,EAACoE,EAAAA,CAAMC,MAAM,wBACT,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,MAAM,CAAA,CAACE,MAAOvE,EAAc6E,cAAe5E,YACxC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,aAAa,CAAA,CAACkE,UAAU,uBACrB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,WAAW,CAAA,CAAA,KAEhB,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,aAAa,CAAA,WACTR,GAAsBmB,GAAG,CAAEjB,AAAD,GACvB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CAAYU,MAAOV,EAAEN,EAAE,UAC9B,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKY,UAAU,6BAAqBN,EAAEN,EAAE,IAD5BM,EAAEN,EAAE,GAIxB,CAACI,GAAsBqB,IAAI,CAAC,AAACnB,GAAMA,EAAEN,EAAE,GAAKvD,IACzC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CAACuE,MAAOvE,WACf,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKmE,UAAU,6BAAqBnE,cAQ7D,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAImE,UAAU,sCACX,CAAA,EAAA,EAAA,GAAA,EAACC,EAAAA,CAAMC,MAAM,iBAAiBC,QAAQ,iBAClC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAACf,GAAG,QAAQzD,KAAK,SAASyE,MAAOrE,EAAesE,SAAU,AAACpC,GAAMjC,EAAiBiC,EAAEqC,MAAM,CAACF,KAAK,EAAGJ,UAAU,kBAEvH,CAAA,EAAA,EAAA,GAAA,EAACC,EAAAA,CAAMC,MAAM,aAAaC,QAAQ,iBAC9B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAACf,GAAG,QAAQzD,KAAK,SAASyE,MAAOnE,EAAWoE,SAAU,AAACpC,GAAM/B,EAAa+B,EAAEqC,MAAM,CAACF,KAAK,EAAGJ,UAAU,kBAE/G,CAAA,EAAA,EAAA,GAAA,EAACC,EAAAA,CAAMC,MAAM,aAAaC,QAAQ,iBAC9B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAACf,GAAG,QAAQzD,KAAK,SAASyE,MAAOjE,EAAWkE,SAAU,AAACpC,GAAM7B,EAAa6B,EAAEqC,MAAM,CAACF,KAAK,EAAGJ,UAAU,qBAInH,CAAA,EAAA,EAAA,GAAA,EAACC,EAAAA,CAAMC,MAAM,cAAcC,QAAQ,kBAC/B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAACf,GAAG,SAASgB,MAAO/D,EAAagE,SAAU,AAACpC,GAAM3B,EAAe2B,EAAEqC,MAAM,CAACF,KAAK,EAAGJ,UAAU,kBAGtG,CAAA,EAAA,EAAA,IAAA,EAACC,EAAAA,CAAMC,MAAM,wBAAwBC,QAAQ,qBACzC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CACLf,GAAG,WACHgB,MAAO7D,EACP8D,SAAU,AAACpC,GAAMzB,EAAiByB,EAAEqC,MAAM,CAACF,KAAK,EAChDW,KAAM,EACNf,UAAU,sBAEbrD,GAAc,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKqD,UAAU,oCAA4BrD,OAG/D,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIqD,UAAU,8CACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAACG,QAAQ,YAAYH,UAAU,mBAAU,YAC/C,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAACZ,GAAG,YAAY4B,QAASvE,EAASwE,gBAAiBvE,OAG9D,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIsD,UAAU,qDACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CACHrE,KAAK,SACLuF,QAAQ,UACRC,KAAK,KACLC,QAASrG,EACT0F,SAAUpB,WACb,WAGD,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,MAAM,CAAA,CAAC1D,KAAK,SAASwF,KAAK,KAAKV,SAAUpB,YACrCA,GAAa,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,OAAO,CAAA,CAACW,UAAU,8BAChCT,UAKrB,CAEA,SAASU,EAAM,OACXC,CAAK,SACLC,CAAO,UACPkB,CAAQ,CAKX,EACG,MACI,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIrB,UAAU,iCACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAACG,QAASA,EAASH,UAAU,mBAAWE,IAC7CmB,IAGb,0BD/RO,SAAS,AAAgB,MAAE,CAAI,cAAE,CAAY,MAAE,CAAI,OAAE,CAAK,mBAAE,CAAiB,CAAS,EAGzF,IAAM,EAAQ,GAAS,AAAS,WAAS,OAAS,YAElD,MACI,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,KAAM,EAAM,aAAc,WAC9B,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,aAAa,CAAA,CACV,UAAU,gDAKV,gBAAiB,EAAQ,AAAC,GAAM,EAAE,cAAc,QAAK,YAErD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,YAAY,CAAA,UACT,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,WAAW,CAAA,UAAE,MAIjB,GACG,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CACG,KAAMnF,EACN,MAAO,EACP,kBAAmB,EACnB,QAAS,IAAM,GAAa,GAC5B,SAAU,IAAM,GAAa,SAMrD,oCEpCA,CAAA,CAAA,CAAA,CAAM,AAAN,CAAA,CAAM,CAAA,EAAa,CAAA,CAAA,CAAA,CAAA,CAAb,AAAa,CAAb,AAAa,CAAA,AAAb,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAlBA,CAClC,AAiBiD,CAjBhD,AAiBgD,CAjBhD,AAiBgD,CAjBhD,AAiBgD,CAjBhD,AAiBgD,CAjBhD,AAiBgD,CAjBhD,AAiBgD,CAjBhD,AAiBgD,CAjBhD,AAAQ,AAiBwC,CAjBxC,AAAE,AAiBsC,CAAU,CAAA,AAjB7C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAsD,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACnF,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAA,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAY,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACzC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAA,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAuD,AAAvD,CAAuD,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACpF,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAA,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAc,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAC7C,mFEiBA,CAAA,CAAA,CAAA,CAAA,AAAM,CAAN,CAAM,CAAA,EAAA,AAAQ,CAAR,AAAQ,CAAR,AAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAtBK,CAClC,AAqBsC,CArBrC,AAqBqC,CArBrC,AAqBqC,CArBrC,AAqBqC,CArBrC,AAqBqC,CArBrC,AAqBqC,CArBrC,AAqBqC,CArBrC,AAqBqC,CArBrC,AAqBqC,CArBrC,AAqBqC,CArBrC,AAqB+C,CAAA,AArB/C,CAAA,AAAY,CAAA,AAAE,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAqC,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAC3E,CACE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,CACE,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACH,GAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EACP,CAEJ,EDPA,IAAA,EAAA,EAAA,CAAA,CAAA,QAQA,EAAA,EAAA,CAAA,CAAA,+BAmFO,SAAS,AAAc,WAC1B,CAAS,CACT,GAAG,EACsB,EACzB,MACI,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,CACN,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,4BAA6B,GAC1C,GAAG,CAAK,EAGrB,qBAEO,SAAwB,AAAf,SACZ,CAAO,CACP,SAAU,CAAS,CAItB,EAEG,MACI,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CAAC,UAAU,gCAChB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,CACN,QAAS,EACT,UAAU,kEAEV,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,4CACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAM,UAAU,UAAU,aAAW,eAK1D,oBAhEO,SAAS,AAAc,WAC1B,CAAS,CACT,GAAG,EACsB,EACzB,MACI,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,CACN,UAAW,CAAA,EAAA,EAAA,EAAE,AAAF,EACP,mGACA,GAEH,GAAG,CAAK,EAGrB,sBAxCO,SAAS,AAAgB,CAC5B,WAAS,CACT,GAAG,EACyB,EAC5B,MACI,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,WAAW,CAAA,CACR,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,gCAAiC,GAC9C,GAAG,CAAK,EAGrB,yBAEO,SAAS,AAAmB,WAC/B,CAAS,CACT,GAAG,EACsB,EACzB,MACI,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CACL,UAAW,CAAA,EAAA,EAAA,EAAE,AAAF,EACP,mDACA,GAEH,GAAG,CAAK,EAGrB,mBAiBO,SAAS,AAAa,WACzB,CAAS,aACT,GAAc,CAAI,CAClB,GAAG,EACkD,EACrD,MACI,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CACL,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EACT,gDACA,GAAe,mCACf,GAEH,GAAG,CAAK,EAGrB,qBApEO,SAAS,AAAe,WAC3B,CAAS,CACT,GAAG,EACyB,EAC5B,MACI,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,2BACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC,UAAW,EAAY,GAAG,CAAK,IAGlD,kFE3BA,IAAMoF,EAAgC,CAClCC,KAAM,OACNC,UAAW,YACXC,MAAO,QACP,eAAgB,SAChB,sBAAuB,gBACvBC,OAAQ,QACZ,2BAEO,SAASC,AAAgBvC,CAA6B,SACzD,AAAKA,EACDkC,CAAK,CADL,AAAK,AACClC,EAAG,CAASkC,CAAP,AAAY,CAAClC,EAAG,CAGxBwC,CADMxC,EAAGyC,QAAQ,CAAC,KAAOzC,EAAG0C,KAAK,CAAC,KAAKC,GAAG,GAAM3C,CAAAA,EAC3C4C,OAAO,CAAC,QAAS,KAAKA,OAAO,CAAC,QAAS,AAACpB,GAAMA,EAAEqB,WAAW,IAJvD,GAKpB,6BCJA,CAAA,CAAA,CAAA,CAAA,AAAM,CAAN,CAAM,CAAA,CAAA,CAAO,AAAP,CAAO,AAAP,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAhBM,CAClC,AAeoC,CAfnC,AAemC,CAfnC,AAemC,CAfnC,AAemC,CAfnC,AAemC,CAfnC,AAemC,CAfnC,AAemC,CAfnC,AAemC,CAfnC,AAAQ,AAe2B,CAf3B,AAAE,AAeyB,CAAU,CAAA,GAfnC,CAAO,AAAP,CAAO,CAAA,CAAA,CAAA,CAAA,AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,AAAM,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAG,AAAH,CAAG,CAAA,EAAK,CAAA,CAAA,CAAA,AAAI,GAAA,CAAA,AAAK,CAAA,EAAI,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACvF,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAA,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAA2D,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAC1F,oDCsBA,CAAA,CAAA,CAAA,CAAA,AAAM,CAAN,CAAM,CAAA,EAAW,CAAA,CAAA,CAAX,AAAW,CAAA,AAAX,CAAW,AAAX,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAzBE,CAClC,AAwB6C,CAvB3C,AAuB2C,CAvB3C,AAuB2C,CAvB3C,AAuB2C,CAvB3C,AAuB2C,CAvB3C,AAuB2C,CAvB3C,AAuB2C,CAvB3C,AAuB2C,CAtB3C,AAsB2C,CArBzC,AAqByC,CArBzC,AAqBmD,CAAA,AArBhD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACH,GAAA,CAAK,AAAL,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAET,CACA,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAE,AAAF,EAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA2B,AAA3B,CAA2B,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACxD,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAA,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAW,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACxC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAA,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAY,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACzC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAA,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAY,CAAA,CAAA,CAAA,CAAK,AAAL,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAC3C,0ECdA,EAAA,EAAA,CAAA,CAAA,QAMA,EAAA,EAAA,CAAA,CAAA,QAkBA,IAAMC,EAAS,CACXC,GAAI,CACAjC,MAAO,cACPkC,IAAK,8BACLC,KAAM,oCACV,EACAC,KAAM,CACFpC,MAAO,OACPkC,IAAK,0BACLC,KAAM,gCACV,EACAE,UAAW,CACPrC,MAAO,YACPkC,IAAK,kDACLC,KAAM,uBACV,CACJ,8BAEO,SAASG,AAAmB,UAC/BC,CAAQ,MACRtB,EAAO,IAAI,CAId,YA8CSgC,EA7CN,GAAI,CAACV,EAASC,gBAAgB,CAAE,OAAO,KAGvC,IAAMG,EAAIX,CAAM,CAACS,AADLF,EAASG,kBAAkB,EAAI,YACtB,CAEfE,EACF,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI9C,UAAU,sCACX,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CACGA,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EACT,mEACS,OAATmB,EAAgB,UAAY,cAC5B0B,EAAET,GAAG,IAGb,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CACGpC,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EACT,sCACS,OAATmB,EAAgB,cAAgB,UAChC0B,EAAER,IAAI,WAGTQ,EAAE3C,KAAK,MAMd6C,KAkBON,CAFbA,EAhB+BA,GAkBTW,GAlBFJ,AAgB8E,mBAEtD,CACR,AAAhCP,AAAJ,QAA4C,GAA/BG,kBAAkB,CAEvB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI5C,UAAU,8BACX,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIA,UAAU,yBAAgB,wBAC9ByC,EAASY,iBAAiB,EACvB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIrD,UAAU,4CAAoCyC,EAASY,iBAAiB,GAEhFF,GAAQ,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAInD,UAAU,uBAAa,iBAAe,IAAIsD,KAAKH,GAAMI,cAAc,SAIzD,OAAhCd,EAASG,kBAAkB,EAAaO,EACjC,CAAA,EAAA,CADuC,CACvC,IAAA,EAAC,MAAA,CAAInD,UAAU,oBAAU,iBAAe,IAAIsD,KAAKH,GAAMI,cAAc,MAE3Ed,EAASG,kBAAkB,CAGzB,CAH2B,IACvB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI5C,UAAU,mBAAU,yEAjCpC,AAAK+C,EAGD,CAAA,CAHA,CAGA,EAAA,GAAA,EAAC,CAHa,CAGb,eAAe,CAAA,UACZ,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,OAAO,CAAA,WACJ,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAACE,OAAO,CAAA,CAAA,WAAEH,IACzB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAACI,KAAK,MAAMlD,UAAU,qCAChC+C,SAPQD,CAY7B,+CCvFA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QAAA,EAAA,EAAA,CAAA,CAAA,QAAA,EAAA,EAAA,CAAA,CAAA,QAGA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QAAA,EAAA,EAAA,CAAA,CAAA,QAUA,EAAA,EAAA,CAAA,CAAA,QAOA,EAAA,EAAA,CAAA,CAAA,6BAcO,SAASU,AAAY,QAAEC,CAAM,QAAEC,CAAM,UAAEC,CAAQ,CAAS,EAC3D,IAAMC,EAAS,CAAA,EAAA,EAAA,SAAA,AAAS,IAClBC,EAAc,CAAC,CAACH,GAAU,CAAC,CAACC,EAGlC,MACI,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,cAAc,CAAA,WACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,eAAe,CAAA,UACZ,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,kBAAkB,CAAA,WACf,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,aAAa,CAAA,UAAC,eACf,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,aAAa,CAAA,UAAC,OACf,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,aAAa,CAAA,UAAC,aACf,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,aAAa,CAAA,UAAC,SACf,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,aAAa,CAAA,UAAC,YACf,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,aAAa,CAAA,UAAC,WACdE,GAAe,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,aAAa,CAAA,CAAC7D,UAAU,+BAAsB,iBAGvE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,aAAa,CAAA,UACS,IAAlByD,EAAO3C,MAAM,CACV,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAACiD,QAjBZF,CAiBqBC,CAjBP,EAAI,WAiBgB,qBAEtCL,EAAO9C,GAAG,CAAC,AAAC/F,GACR,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,YAAY,CAAA,CAETwG,QAAS,IACLwC,EAAOI,IAAI,CAAC,CAAC,QAAQ,EAAEC,mBAAmBrJ,EAAMS,IAAI,EAAA,CAAG,EAE3D6I,MAAM,iCAEN,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,aAAa,CAAA,CAAClE,UAAU,mCACrB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIA,UAAU,2DACX,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKA,UAAU,mBAAmBkE,MAAOtJ,EAAMS,IAAI,UAC/CT,EAAMS,IAAI,GAEf,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CACH6F,QAAQ,QACRC,KAAK,OACLnB,UAAU,wEACVoB,QAAS,AAACnD,IACNA,EAAEkG,eAAe,GACjBC,UAAUC,SAAS,CAACC,SAAS,CAAC1J,EAAMS,IAAI,EACxC,EAAA,KAAK,CAAC0C,OAAO,CAAC,iCAClB,WAEA,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,IAAI,CAAA,CAACiC,UAAU,yCAI5B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,aAAa,CAAA,CAACA,UAAU,iEACrB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,eAAe,CAAA,UACZ,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,OAAO,CAAA,WACJ,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAACiD,OAAO,CAAA,CAAA,WACnB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKjD,UAAU,yCACXpF,EAAMqC,QAAQ,KAGvB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAACiG,KAAK,eACjB,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAElD,UAAU,6BAAqBpF,EAAMqC,QAAQ,YAKhE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,aAAa,CAAA,UACV,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAACiE,QAAQ,UAAUlB,UAAU,mCAC9BpF,EAAM6H,QAAQ,KAGvB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,aAAa,CAAA,UACV,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAACvB,QAAQ,YAAYlB,UAAU,mCAChC,CAAA,EAAA,EAAA,eAAA,AAAe,EAACpF,EAAMe,IAAI,MAGnC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,aAAa,CAAA,UACV,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKqE,UAAU,mDACXpF,EAAMwC,cAAc,CACfxC,EAAMwC,cAAc,EAAI,IACpB,CAAA,EAAGmH,KAAKC,KAAK,CAAC5J,EAAMwC,cAAc,CAAG,KAAM,CAAC,CAAC,CAC7CxC,EAAMwC,cAAc,CAACmG,cAAc,GACvC,QAGd,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,aAAa,CAAA,UACV,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CACFrC,QAAStG,EAAMkC,aAAa,CAAG,YAAc,UAC7CkD,UAAU,iCAETpF,EAAMkC,aAAa,CAAG,aAAe,eAG7C+G,GACG,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,aAAa,CAAA,CACV7D,UAAU,aACVoB,QAAS,AAACnD,GAAMA,EAAEkG,eAAe,YAEjC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAInE,UAAU,gDACV0D,GACG,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CACHxC,QAAQ,QACRC,KAAK,OACLnB,UAAU,UACVkE,MAAOtJ,EAAMkC,aAAa,CAAG,sBAAwB,OACrDsE,QAAS,AAACnD,IACNA,EAAEkG,eAAe,GACjBT,EAAO9I,EACX,WAEA,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAACoF,UAAU,kBAGzB2D,GAAY,CAAC/I,EAAMkC,aAAa,EAC7B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CACHoE,QAAQ,QACRC,KAAK,OACLnB,UAAU,kDACVkE,MAAM,SACN9C,QAAS,AAACnD,IACNA,EAAEkG,eAAe,GACjBR,EAAS/I,EACb,WAEA,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAACoF,UAAU,yBAjGjCpF,EAAMwE,EAAE,EAAIxE,EAAMS,IAAI,OA6GvD","ignoreList":[0,3,5,7,8]}
@@ -1,9 +0,0 @@
1
- module.exports=[587532,a=>{"use strict";let b=(0,a.i(883706).default)("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);a.s(["Search",0,b],587532)},703130,a=>{"use strict";var b=a.i(187924),c=a.i(497895);a.s(["Card",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card",className:(0,c.cn)("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",a),...d})},"CardContent",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-content",className:(0,c.cn)("px-6",a),...d})},"CardDescription",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-description",className:(0,c.cn)("text-muted-foreground text-sm",a),...d})},"CardHeader",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-header",className:(0,c.cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",a),...d})},"CardTitle",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-title",className:(0,c.cn)("leading-none font-semibold",a),...d})}])},130656,a=>{"use strict";a.s(["clamp",0,function(a,[b,c]){return Math.min(c,Math.max(b,a))}])},504699,a=>{"use strict";let b=(0,a.i(883706).default)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);a.s(["default",0,b])},528094,a=>{"use strict";var b=a.i(572131),c=a.i(30553),d=a.i(187924),e=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),f=b.forwardRef((a,b)=>(0,d.jsx)(c.Primitive.span,{...a,ref:b,style:{...e,...a.style}}));f.displayName="VisuallyHidden",a.s(["Root",0,f,"VISUALLY_HIDDEN_STYLES",0,e])},205522,a=>{"use strict";var b=a.i(187924),c=a.i(497895);a.s(["Input",0,function({className:a,type:d,...e}){return(0,b.jsx)("input",{type:d,"data-slot":"input",className:(0,c.cn)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",a),...e})}])},596221,a=>{"use strict";var b=a.i(404650);a.s(["Loader2",()=>b.default])},917171,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(30553),e=c.forwardRef((a,c)=>(0,b.jsx)(d.Primitive.label,{...a,ref:c,onMouseDown:b=>{b.target.closest("button, input, select, textarea")||(a.onMouseDown?.(b),!b.defaultPrevented&&b.detail>1&&b.preventDefault())}}));e.displayName="Label";var f=a.i(497895);a.s(["Label",0,function({className:a,...c}){return(0,b.jsx)(e,{"data-slot":"label",className:(0,f.cn)("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",a),...c})}],917171)},77994,a=>{"use strict";var b=a.i(572131);a.s(["usePrevious",0,function(a){let c=b.useRef({value:a,previous:a});return b.useMemo(()=>(c.current.value!==a&&(c.current.previous=c.current.value,c.current.value=a),c.current.previous),[a])}])},524634,a=>{"use strict";let b=(0,a.i(349682).defineResource)({path:"/models",key:"models",listShape:"array",staleTime:6e4,invalidates:["providers"]});a.s(["models",0,b])},734020,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(497895);let e={openai:"/providers/openai.svg",claude:"/providers/claude.svg",anthropic:"/providers/claude.svg",gemini:"/providers/gemini.svg",google:"/providers/gemini.svg",vertexai:"/providers/vertexai.svg",vertex:"/providers/vertex.svg",deepseek:"/providers/deepseek.png",moonshot:"/providers/moonshot.png",zhipu:"/providers/zhipu.png",aliyun:"/providers/alibabacloud.png",alibabacloud:"/providers/alibabacloud.png",siliconflow:"/providers/siliconflow.svg",tei:"/providers/tei.svg",transformers:"/providers/transformers.svg",baichuan:"/providers/baichuan.png",volcengine:"/providers/volcengine.png",stepfun:"/providers/stepfun.png"},f=new Set(["openai","vertex","vertexai","siliconflow"]),g=(0,c.memo)(function({providerName:a,className:g,width:h=24,height:i=24}){let[j,k]=(0,c.useState)(!1),l=a.toLowerCase().replace(/[^a-z0-9_]/g,""),m=e[l],n=f.has(l);return m&&!j?(0,b.jsx)("img",{src:m,alt:"",width:h,height:i,loading:"lazy",className:(0,d.cn)("object-contain shrink-0",n&&"dark:invert",g),onError:()=>k(!0)}):(0,b.jsx)("span",{className:(0,d.cn)("rounded bg-muted flex items-center justify-center text-[8px] font-bold shrink-0",g),style:{width:h,height:i},children:a.substring(0,2).toUpperCase()})});a.s(["ProviderIcon",0,g])},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)},577768,a=>{"use strict";var b=a.i(187924),c=a.i(596221),d=a.i(497895);let e={sm:"h-3.5 w-3.5",md:"h-5 w-5",lg:"h-8 w-8"};a.s(["LoadingState",0,function({label:a="Loading…",size:f="md",variant:g="centered",className:h}){return"inline"===g?(0,b.jsxs)("div",{className:(0,d.cn)("flex items-center gap-2 text-sm text-muted-foreground",h),children:[(0,b.jsx)(c.Loader2,{className:(0,d.cn)(e[f],"animate-spin")}),a&&(0,b.jsx)("span",{children:a})]}):(0,b.jsxs)("div",{className:(0,d.cn)("flex flex-col items-center justify-center gap-3 py-12 text-muted-foreground",h),children:[(0,b.jsx)(c.Loader2,{className:(0,d.cn)(e[f],"animate-spin")}),a&&(0,b.jsx)("p",{className:"text-sm",children:a})]})}])},621958,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(507554),e=a.i(750104),f=a.i(224050),g=a.i(777192),h=a.i(30553),i=a.i(507827),j=a.i(225152),k=a.i(392843),l="Tabs",[m,n]=(0,e.createContextScope)(l,[f.createRovingFocusGroupScope]),o=(0,f.createRovingFocusGroupScope)(),[p,q]=m(l),r=c.forwardRef((a,c)=>{let{__scopeTabs:d,value:e,onValueChange:f,defaultValue:g,orientation:m="horizontal",dir:n,activationMode:o="automatic",...q}=a,r=(0,i.useDirection)(n),[s,t]=(0,j.useControllableState)({prop:e,onChange:f,defaultProp:g??"",caller:l});return(0,b.jsx)(p,{scope:d,baseId:(0,k.useId)(),value:s,onValueChange:t,orientation:m,dir:r,activationMode:o,children:(0,b.jsx)(h.Primitive.div,{dir:r,"data-orientation":m,...q,ref:c})})});r.displayName=l;var s="TabsList",t=c.forwardRef((a,c)=>{let{__scopeTabs:d,loop:e=!0,...g}=a,i=q(s,d),j=o(d);return(0,b.jsx)(f.Root,{asChild:!0,...j,orientation:i.orientation,dir:i.dir,loop:e,children:(0,b.jsx)(h.Primitive.div,{role:"tablist","aria-orientation":i.orientation,...g,ref:c})})});t.displayName=s;var u="TabsTrigger",v=c.forwardRef((a,c)=>{let{__scopeTabs:e,value:g,disabled:i=!1,...j}=a,k=q(u,e),l=o(e),m=y(k.baseId,g),n=z(k.baseId,g),p=g===k.value;return(0,b.jsx)(f.Item,{asChild:!0,...l,focusable:!i,active:p,children:(0,b.jsx)(h.Primitive.button,{type:"button",role:"tab","aria-selected":p,"aria-controls":n,"data-state":p?"active":"inactive","data-disabled":i?"":void 0,disabled:i,id:m,...j,ref:c,onMouseDown:(0,d.composeEventHandlers)(a.onMouseDown,a=>{i||0!==a.button||!1!==a.ctrlKey?a.preventDefault():k.onValueChange(g)}),onKeyDown:(0,d.composeEventHandlers)(a.onKeyDown,a=>{[" ","Enter"].includes(a.key)&&k.onValueChange(g)}),onFocus:(0,d.composeEventHandlers)(a.onFocus,()=>{let a="manual"!==k.activationMode;p||i||!a||k.onValueChange(g)})})})});v.displayName=u;var w="TabsContent",x=c.forwardRef((a,d)=>{let{__scopeTabs:e,value:f,forceMount:i,children:j,...k}=a,l=q(w,e),m=y(l.baseId,f),n=z(l.baseId,f),o=f===l.value,p=c.useRef(o);return c.useEffect(()=>{let a=requestAnimationFrame(()=>p.current=!1);return()=>cancelAnimationFrame(a)},[]),(0,b.jsx)(g.Presence,{present:i||o,children:({present:c})=>(0,b.jsx)(h.Primitive.div,{"data-state":o?"active":"inactive","data-orientation":l.orientation,role:"tabpanel","aria-labelledby":m,hidden:!c,id:n,tabIndex:0,...k,ref:d,style:{...a.style,animationDuration:p.current?"0s":void 0},children:c&&j})})});function y(a,b){return`${a}-trigger-${b}`}function z(a,b){return`${a}-content-${b}`}x.displayName=w;var A=a.i(497895);a.s(["Tabs",0,function({className:a,...c}){return(0,b.jsx)(r,{"data-slot":"tabs",className:(0,A.cn)("flex flex-col gap-2",a),...c})},"TabsContent",0,function({className:a,...c}){return(0,b.jsx)(x,{"data-slot":"tabs-content",className:(0,A.cn)("flex-1 outline-none",a),...c})},"TabsList",0,function({className:a,...c}){return(0,b.jsx)(t,{"data-slot":"tabs-list",className:(0,A.cn)("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",a),...c})},"TabsTrigger",0,function({className:a,...c}){return(0,b.jsx)(v,{"data-slot":"tabs-trigger",className:(0,A.cn)("data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",a),...c})}],621958)},654816,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(596743),h=a.i(392843),i=a.i(704691),j=(a.i(692616),a.i(777192)),k=a.i(30553),l=a.i(811011),m=a.i(225152),n=a.i(528094),[o,p]=(0,f.createContextScope)("Tooltip",[i.createPopperScope]),q=(0,i.createPopperScope)(),r="TooltipProvider",s="tooltip.open",[t,u]=o(r),v=a=>{let{__scopeTooltip:d,delayDuration:e=700,skipDelayDuration:f=300,disableHoverableContent:g=!1,children:h}=a,i=c.useRef(!0),j=c.useRef(!1),k=c.useRef(0);return c.useEffect(()=>{let a=k.current;return()=>window.clearTimeout(a)},[]),(0,b.jsx)(t,{scope:d,isOpenDelayedRef:i,delayDuration:e,onOpen:c.useCallback(()=>{f<=0||(window.clearTimeout(k.current),i.current=!1)},[f]),onClose:c.useCallback(()=>{f<=0||(window.clearTimeout(k.current),k.current=window.setTimeout(()=>i.current=!0,f))},[f]),isPointerInTransitRef:j,onPointerInTransitChange:c.useCallback(a=>{j.current=a},[]),disableHoverableContent:g,children:h})};v.displayName=r;var w="Tooltip",[x,y]=o(w),z=a=>{let{__scopeTooltip:d,children:e,open:f,defaultOpen:g,onOpenChange:j,disableHoverableContent:k,delayDuration:l}=a,n=u(w,a.__scopeTooltip),o=q(d),[p,r]=c.useState(null),t=(0,h.useId)(),v=c.useRef(0),y=k??n.disableHoverableContent,z=l??n.delayDuration,A=c.useRef(!1),[B,C]=(0,m.useControllableState)({prop:f,defaultProp:g??!1,onChange:a=>{a?(n.onOpen(),document.dispatchEvent(new CustomEvent(s))):n.onClose(),j?.(a)},caller:w}),D=c.useMemo(()=>B?A.current?"delayed-open":"instant-open":"closed",[B]),E=c.useCallback(()=>{window.clearTimeout(v.current),v.current=0,A.current=!1,C(!0)},[C]),F=c.useCallback(()=>{window.clearTimeout(v.current),v.current=0,C(!1)},[C]),G=c.useCallback(()=>{window.clearTimeout(v.current),v.current=window.setTimeout(()=>{A.current=!0,C(!0),v.current=0},z)},[z,C]);return c.useEffect(()=>()=>{v.current&&(window.clearTimeout(v.current),v.current=0)},[]),(0,b.jsx)(i.Root,{...o,children:(0,b.jsx)(x,{scope:d,contentId:t,open:B,stateAttribute:D,trigger:p,onTriggerChange:r,onTriggerEnter:c.useCallback(()=>{n.isOpenDelayedRef.current?G():E()},[n.isOpenDelayedRef,G,E]),onTriggerLeave:c.useCallback(()=>{y?F():(window.clearTimeout(v.current),v.current=0)},[F,y]),onOpen:E,onClose:F,disableHoverableContent:y,children:e})})};z.displayName=w;var A="TooltipTrigger",B=c.forwardRef((a,f)=>{let{__scopeTooltip:g,...h}=a,j=y(A,g),l=u(A,g),m=q(g),n=c.useRef(null),o=(0,e.useComposedRefs)(f,n,j.onTriggerChange),p=c.useRef(!1),r=c.useRef(!1),s=c.useCallback(()=>p.current=!1,[]);return c.useEffect(()=>()=>document.removeEventListener("pointerup",s),[s]),(0,b.jsx)(i.Anchor,{asChild:!0,...m,children:(0,b.jsx)(k.Primitive.button,{"aria-describedby":j.open?j.contentId:void 0,"data-state":j.stateAttribute,...h,ref:o,onPointerMove:(0,d.composeEventHandlers)(a.onPointerMove,a=>{"touch"!==a.pointerType&&(r.current||l.isPointerInTransitRef.current||(j.onTriggerEnter(),r.current=!0))}),onPointerLeave:(0,d.composeEventHandlers)(a.onPointerLeave,()=>{j.onTriggerLeave(),r.current=!1}),onPointerDown:(0,d.composeEventHandlers)(a.onPointerDown,()=>{j.open&&j.onClose(),p.current=!0,document.addEventListener("pointerup",s,{once:!0})}),onFocus:(0,d.composeEventHandlers)(a.onFocus,()=>{p.current||j.onOpen()}),onBlur:(0,d.composeEventHandlers)(a.onBlur,j.onClose),onClick:(0,d.composeEventHandlers)(a.onClick,j.onClose)})})});B.displayName=A;var[C,D]=o("TooltipPortal",{forceMount:void 0}),E="TooltipContent",F=c.forwardRef((a,c)=>{let d=D(E,a.__scopeTooltip),{forceMount:e=d.forceMount,side:f="top",...g}=a,h=y(E,a.__scopeTooltip);return(0,b.jsx)(j.Presence,{present:e||h.open,children:h.disableHoverableContent?(0,b.jsx)(K,{side:f,...g,ref:c}):(0,b.jsx)(G,{side:f,...g,ref:c})})}),G=c.forwardRef((a,d)=>{let f=y(E,a.__scopeTooltip),g=u(E,a.__scopeTooltip),h=c.useRef(null),i=(0,e.useComposedRefs)(d,h),[j,k]=c.useState(null),{trigger:l,onClose:m}=f,n=h.current,{onPointerInTransitChange:o}=g,p=c.useCallback(()=>{k(null),o(!1)},[o]),q=c.useCallback((a,b)=>{let c,d=a.currentTarget,e={x:a.clientX,y:a.clientY},f=function(a,b){let c=Math.abs(b.top-a.y),d=Math.abs(b.bottom-a.y),e=Math.abs(b.right-a.x),f=Math.abs(b.left-a.x);switch(Math.min(c,d,e,f)){case f:return"left";case e:return"right";case c:return"top";case d:return"bottom";default:throw Error("unreachable")}}(e,d.getBoundingClientRect());k(((c=[...function(a,b,c=5){let d=[];switch(b){case"top":d.push({x:a.x-c,y:a.y+c},{x:a.x+c,y:a.y+c});break;case"bottom":d.push({x:a.x-c,y:a.y-c},{x:a.x+c,y:a.y-c});break;case"left":d.push({x:a.x+c,y:a.y-c},{x:a.x+c,y:a.y+c});break;case"right":d.push({x:a.x-c,y:a.y-c},{x:a.x-c,y:a.y+c})}return d}(e,f),...function(a){let{top:b,right:c,bottom:d,left:e}=a;return[{x:e,y:b},{x:c,y:b},{x:c,y:d},{x:e,y:d}]}(b.getBoundingClientRect())].slice()).sort((a,b)=>a.x<b.x?-1:a.x>b.x?1:a.y<b.y?-1:1*!!(a.y>b.y)),function(a){if(a.length<=1)return a.slice();let b=[];for(let c=0;c<a.length;c++){let d=a[c];for(;b.length>=2;){let a=b[b.length-1],c=b[b.length-2];if((a.x-c.x)*(d.y-c.y)>=(a.y-c.y)*(d.x-c.x))b.pop();else break}b.push(d)}b.pop();let c=[];for(let b=a.length-1;b>=0;b--){let d=a[b];for(;c.length>=2;){let a=c[c.length-1],b=c[c.length-2];if((a.x-b.x)*(d.y-b.y)>=(a.y-b.y)*(d.x-b.x))c.pop();else break}c.push(d)}return(c.pop(),1===b.length&&1===c.length&&b[0].x===c[0].x&&b[0].y===c[0].y)?b:b.concat(c)}(c))),o(!0)},[o]);return c.useEffect(()=>()=>p(),[p]),c.useEffect(()=>{if(l&&n){let a=a=>q(a,n),b=a=>q(a,l);return l.addEventListener("pointerleave",a),n.addEventListener("pointerleave",b),()=>{l.removeEventListener("pointerleave",a),n.removeEventListener("pointerleave",b)}}},[l,n,q,p]),c.useEffect(()=>{if(j){let a=a=>{let b=a.target,c={x:a.clientX,y:a.clientY},d=l?.contains(b)||n?.contains(b),e=!function(a,b){let{x:c,y:d}=a,e=!1;for(let a=0,f=b.length-1;a<b.length;f=a++){let g=b[a],h=b[f],i=g.x,j=g.y,k=h.x,l=h.y;j>d!=l>d&&c<(k-i)*(d-j)/(l-j)+i&&(e=!e)}return e}(c,j);d?p():e&&(p(),m())};return document.addEventListener("pointermove",a),()=>document.removeEventListener("pointermove",a)}},[l,n,j,m,p]),(0,b.jsx)(K,{...a,ref:i})}),[H,I]=o(w,{isInside:!1}),J=(0,l.createSlottable)("TooltipContent"),K=c.forwardRef((a,d)=>{let{__scopeTooltip:e,children:f,"aria-label":h,onEscapeKeyDown:j,onPointerDownOutside:k,...l}=a,m=y(E,e),o=q(e),{onClose:p}=m;return c.useEffect(()=>(document.addEventListener(s,p),()=>document.removeEventListener(s,p)),[p]),c.useEffect(()=>{if(m.trigger){let a=a=>{a.target instanceof Node&&a.target.contains(m.trigger)&&p()};return window.addEventListener("scroll",a,{capture:!0}),()=>window.removeEventListener("scroll",a,{capture:!0})}},[m.trigger,p]),(0,b.jsx)(g.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:j,onPointerDownOutside:k,onFocusOutside:a=>a.preventDefault(),onDismiss:p,children:(0,b.jsxs)(i.Content,{"data-state":m.stateAttribute,...o,...l,ref:d,style:{...l.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[(0,b.jsx)(J,{children:f}),(0,b.jsx)(H,{scope:e,isInside:!0,children:(0,b.jsx)(n.Root,{id:m.contentId,role:"tooltip",children:h||f})})]})})});F.displayName=E;var L="TooltipArrow";c.forwardRef((a,c)=>{let{__scopeTooltip:d,...e}=a,f=q(d);return I(L,d).isInside?null:(0,b.jsx)(i.Arrow,{...f,...e,ref:c})}).displayName=L;var M=a.i(497895);let N=c.forwardRef(({className:a,sideOffset:c=4,...d},e)=>(0,b.jsx)(F,{ref:e,sideOffset:c,className:(0,M.cn)("z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",a),...d}));N.displayName=F.displayName,a.s(["Tooltip",0,z,"TooltipContent",0,N,"TooltipProvider",0,v,"TooltipTrigger",0,B],654816)},50522,a=>{"use strict";var b=a.i(111989);a.s(["ChevronRight",()=>b.default])},809941,a=>{"use strict";let b=(0,a.i(883706).default)("arrow-up-down",[["path",{d:"m21 16-4 4-4-4",key:"f6ql7i"}],["path",{d:"M17 20V4",key:"1ejh1v"}],["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}]]);a.s(["ArrowUpDown",0,b],809941)},510809,a=>{"use strict";var b=a.i(187924),c=a.i(340695),d=a.i(654816),e=a.i(328790),f=a.i(596221);a.s(["RefreshButton",0,function({onClick:a,isLoading:g,tooltip:h="Refresh",className:i}){return(0,b.jsx)(d.TooltipProvider,{delayDuration:300,children:(0,b.jsxs)(d.Tooltip,{children:[(0,b.jsx)(d.TooltipTrigger,{asChild:!0,children:(0,b.jsx)(c.Button,{variant:"ghost",size:"icon",onClick:a,disabled:g,className:`h-8 w-8 text-muted-foreground hover:text-foreground hover:bg-muted/80 transition-colors ${i||""}`,children:g?(0,b.jsx)(f.Loader2,{className:"h-4 w-4 animate-spin"}):(0,b.jsx)(e.RefreshCcw,{className:"h-4 w-4"})})}),(0,b.jsx)(d.TooltipContent,{side:"bottom",className:"text-xs",children:h})]})})}])},177156,141379,a=>{"use strict";var b=a.i(883706);let c=(0,b.default)("eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);a.s(["Eye",0,c],177156);let d=(0,b.default)("eye-off",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);a.s(["EyeOff",0,d],141379)}];
8
-
9
- //# sourceMappingURL=_151pht4._.js.map