n9router 0.4.3 → 0.4.6

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 (900) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-path-routes-manifest.json +3 -5
  3. package/.next/standalone/.next/build-manifest.json +2 -2
  4. package/.next/standalone/.next/prerender-manifest.json +3 -3
  5. package/.next/standalone/.next/routes-manifest.json +6 -18
  6. package/.next/standalone/.next/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
  7. package/.next/standalone/.next/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  8. package/.next/standalone/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  9. package/.next/standalone/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
  10. package/.next/standalone/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  11. package/.next/standalone/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  12. package/.next/standalone/.next/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  13. package/.next/standalone/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  14. package/.next/standalone/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  15. package/.next/standalone/.next/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
  16. package/.next/standalone/.next/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  17. package/.next/standalone/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  18. package/.next/standalone/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  19. package/.next/standalone/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  20. package/.next/standalone/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  21. package/.next/standalone/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +12 -7
  22. package/.next/standalone/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  23. package/.next/standalone/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  24. package/.next/standalone/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -2
  25. package/.next/standalone/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  26. package/.next/standalone/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  27. package/.next/standalone/.next/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
  28. package/.next/standalone/.next/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  30. package/.next/standalone/.next/server/app/(dashboard)/dashboard/page.js +2 -2
  31. package/.next/standalone/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  32. package/.next/standalone/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  33. package/.next/standalone/.next/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  34. package/.next/standalone/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  36. package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +3 -3
  37. package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  39. package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  40. package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  41. package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  42. package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  43. package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  44. package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  45. package/.next/standalone/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js +3 -3
  46. package/.next/standalone/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  47. package/.next/standalone/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  48. package/.next/standalone/.next/server/app/(dashboard)/dashboard/quota/page.js +2 -2
  49. package/.next/standalone/.next/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  50. package/.next/standalone/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  51. package/.next/standalone/.next/server/app/(dashboard)/dashboard/translator/page.js +2 -2
  52. package/.next/standalone/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  53. package/.next/standalone/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  54. package/.next/standalone/.next/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  55. package/.next/standalone/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  56. package/.next/standalone/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  57. package/.next/standalone/.next/server/app/_global-error/page.js +3 -3
  58. package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  59. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  60. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  61. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  62. package/.next/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  63. package/.next/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  64. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  65. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  66. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  67. package/.next/standalone/.next/server/app/_not-found/page.js +2 -2
  68. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  69. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  70. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  71. package/.next/standalone/.next/server/app/_not-found.rsc +4 -4
  72. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  73. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  74. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
  75. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  76. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  77. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  78. package/.next/standalone/.next/server/app/api/antigravity-ide/route.js +1 -1
  79. package/.next/standalone/.next/server/app/api/antigravity-tools/import/route.js +1 -1
  80. package/.next/standalone/.next/server/app/api/antigravity-tools/import/route.js.nft.json +1 -1
  81. package/.next/standalone/.next/server/app/api/antigravity-tools/import-refresh-tokens/route.js +1 -1
  82. package/.next/standalone/.next/server/app/api/antigravity-tools/import-refresh-tokens/route.js.nft.json +1 -1
  83. package/.next/standalone/.next/server/app/api/auth/login/route.js +1 -1
  84. package/.next/standalone/.next/server/app/api/auth/logout/route.js +1 -1
  85. package/.next/standalone/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  86. package/.next/standalone/.next/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  87. package/.next/standalone/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
  88. package/.next/standalone/.next/server/app/api/cli-tools/codex-settings/route.js +3 -3
  89. package/.next/standalone/.next/server/app/api/cli-tools/copilot-settings/route.js +2 -2
  90. package/.next/standalone/.next/server/app/api/cli-tools/droid-settings/route.js +1 -1
  91. package/.next/standalone/.next/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  92. package/.next/standalone/.next/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  93. package/.next/standalone/.next/server/app/api/cloud/auth/route.js +1 -1
  94. package/.next/standalone/.next/server/app/api/cloud/credentials/update/route.js +1 -1
  95. package/.next/standalone/.next/server/app/api/cloud/model/resolve/route.js +1 -1
  96. package/.next/standalone/.next/server/app/api/cloud/models/alias/route.js +1 -1
  97. package/.next/standalone/.next/server/app/api/combos/[id]/route.js +1 -1
  98. package/.next/standalone/.next/server/app/api/combos/route.js +1 -1
  99. package/.next/standalone/.next/server/app/api/health/route.js +1 -1
  100. package/.next/standalone/.next/server/app/api/init/route.js +1 -1
  101. package/.next/standalone/.next/server/app/api/internal/request-detail/route.js +1 -1
  102. package/.next/standalone/.next/server/app/api/internal/usage/route.js +1 -1
  103. package/.next/standalone/.next/server/app/api/keys/[id]/route.js +1 -1
  104. package/.next/standalone/.next/server/app/api/keys/route.js +1 -1
  105. package/.next/standalone/.next/server/app/api/locale/route.js +1 -1
  106. package/.next/standalone/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  107. package/.next/standalone/.next/server/app/api/media-providers/tts/voices/route.js +1 -1
  108. package/.next/standalone/.next/server/app/api/models/alias/route.js +1 -1
  109. package/.next/standalone/.next/server/app/api/models/availability/route.js +1 -1
  110. package/.next/standalone/.next/server/app/api/models/route.js +1 -1
  111. package/.next/standalone/.next/server/app/api/models/route.js.nft.json +1 -1
  112. package/.next/standalone/.next/server/app/api/models/test/route.js +1 -1
  113. package/.next/standalone/.next/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  114. package/.next/standalone/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  115. package/.next/standalone/.next/server/app/api/oauth/cursor/auto-import/route.js +2 -2
  116. package/.next/standalone/.next/server/app/api/oauth/cursor/import/route.js +1 -1
  117. package/.next/standalone/.next/server/app/api/oauth/gitlab/pat/route.js +1 -1
  118. package/.next/standalone/.next/server/app/api/oauth/iflow/cookie/route.js +1 -1
  119. package/.next/standalone/.next/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  120. package/.next/standalone/.next/server/app/api/oauth/kiro/import/route.js +1 -1
  121. package/.next/standalone/.next/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  122. package/.next/standalone/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  123. package/.next/standalone/.next/server/app/api/pricing/route.js +1 -1
  124. package/.next/standalone/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
  125. package/.next/standalone/.next/server/app/api/provider-nodes/route.js +1 -1
  126. package/.next/standalone/.next/server/app/api/provider-nodes/validate/route.js +1 -1
  127. package/.next/standalone/.next/server/app/api/providers/[id]/models/route.js +1 -1
  128. package/.next/standalone/.next/server/app/api/providers/[id]/route.js +1 -1
  129. package/.next/standalone/.next/server/app/api/providers/[id]/test/route.js +1 -1
  130. package/.next/standalone/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  131. package/.next/standalone/.next/server/app/api/providers/[id]/test-models/route.js +1 -1
  132. package/.next/standalone/.next/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  133. package/.next/standalone/.next/server/app/api/providers/client/route.js +1 -1
  134. package/.next/standalone/.next/server/app/api/providers/kilo/free-models/route.js +1 -1
  135. package/.next/standalone/.next/server/app/api/providers/route.js +1 -1
  136. package/.next/standalone/.next/server/app/api/providers/route.js.nft.json +1 -1
  137. package/.next/standalone/.next/server/app/api/providers/test-batch/route.js +1 -1
  138. package/.next/standalone/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  139. package/.next/standalone/.next/server/app/api/providers/validate/route.js +1 -1
  140. package/.next/standalone/.next/server/app/api/providers/validate/route.js.nft.json +1 -1
  141. package/.next/standalone/.next/server/app/api/proxy-pools/[id]/route.js +1 -1
  142. package/.next/standalone/.next/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  143. package/.next/standalone/.next/server/app/api/proxy-pools/route.js +1 -1
  144. package/.next/standalone/.next/server/app/api/proxy-pools/vercel-deploy/route.js +33 -0
  145. package/.next/standalone/.next/server/app/api/{9remote/start → proxy-pools/vercel-deploy}/route.js.nft.json +1 -1
  146. package/.next/standalone/.next/server/app/api/proxy-pools/vercel-deploy/route_client-reference-manifest.js +1 -0
  147. package/.next/standalone/.next/server/app/api/settings/database/route.js +1 -1
  148. package/.next/standalone/.next/server/app/api/settings/proxy-test/route.js +1 -1
  149. package/.next/standalone/.next/server/app/api/settings/require-login/route.js +1 -1
  150. package/.next/standalone/.next/server/app/api/settings/route.js +1 -1
  151. package/.next/standalone/.next/server/app/api/shutdown/route.js +1 -1
  152. package/.next/standalone/.next/server/app/api/tags/route.js +1 -1
  153. package/.next/standalone/.next/server/app/api/translator/console-logs/route.js +1 -1
  154. package/.next/standalone/.next/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  155. package/.next/standalone/.next/server/app/api/translator/console-logs/stream/route.js +2 -2
  156. package/.next/standalone/.next/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  157. package/.next/standalone/.next/server/app/api/translator/load/route.js +1 -1
  158. package/.next/standalone/.next/server/app/api/translator/save/route.js +1 -1
  159. package/.next/standalone/.next/server/app/api/translator/send/route.js +1 -1
  160. package/.next/standalone/.next/server/app/api/translator/send/route.js.nft.json +1 -1
  161. package/.next/standalone/.next/server/app/api/translator/translate/route.js +1 -1
  162. package/.next/standalone/.next/server/app/api/tunnel/disable/route.js +1 -1
  163. package/.next/standalone/.next/server/app/api/tunnel/enable/route.js +1 -1
  164. package/.next/standalone/.next/server/app/api/tunnel/status/route.js +1 -1
  165. package/.next/standalone/.next/server/app/api/tunnel/tailscale-check/route.js +1 -1
  166. package/.next/standalone/.next/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  167. package/.next/standalone/.next/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  168. package/.next/standalone/.next/server/app/api/tunnel/tailscale-install/route.js +2 -2
  169. package/.next/standalone/.next/server/app/api/tunnel/tailscale-login/route.js +2 -2
  170. package/.next/standalone/.next/server/app/api/tunnel/tailscale-start-daemon/route.js +2 -2
  171. package/.next/standalone/.next/server/app/api/usage/[connectionId]/route.js +1 -1
  172. package/.next/standalone/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  173. package/.next/standalone/.next/server/app/api/usage/chart/route.js +1 -1
  174. package/.next/standalone/.next/server/app/api/usage/history/route.js +1 -1
  175. package/.next/standalone/.next/server/app/api/usage/logs/route.js +1 -1
  176. package/.next/standalone/.next/server/app/api/usage/providers/route.js +1 -1
  177. package/.next/standalone/.next/server/app/api/usage/request-details/route.js +1 -1
  178. package/.next/standalone/.next/server/app/api/usage/request-logs/route.js +1 -1
  179. package/.next/standalone/.next/server/app/api/usage/stats/route.js +1 -1
  180. package/.next/standalone/.next/server/app/api/usage/stream/route.js +2 -2
  181. package/.next/standalone/.next/server/app/api/v1/api/chat/route.js +1 -1
  182. package/.next/standalone/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  183. package/.next/standalone/.next/server/app/api/v1/audio/speech/route.js +1 -1
  184. package/.next/standalone/.next/server/app/api/v1/chat/completions/route.js +1 -1
  185. package/.next/standalone/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  186. package/.next/standalone/.next/server/app/api/v1/embeddings/route.js +1 -1
  187. package/.next/standalone/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  188. package/.next/standalone/.next/server/app/api/v1/messages/count_tokens/route.js +1 -1
  189. package/.next/standalone/.next/server/app/api/v1/messages/route.js +1 -1
  190. package/.next/standalone/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
  191. package/.next/standalone/.next/server/app/api/v1/models/route.js +1 -1
  192. package/.next/standalone/.next/server/app/api/v1/models/route.js.nft.json +1 -1
  193. package/.next/standalone/.next/server/app/api/v1/responses/route.js +1 -1
  194. package/.next/standalone/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
  195. package/.next/standalone/.next/server/app/api/v1/route.js +1 -1
  196. package/.next/standalone/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
  197. package/.next/standalone/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  198. package/.next/standalone/.next/server/app/api/v1beta/models/route.js +1 -1
  199. package/.next/standalone/.next/server/app/api/v1beta/models/route.js.nft.json +1 -1
  200. package/.next/standalone/.next/server/app/api/version/route.js +1 -1
  201. package/.next/standalone/.next/server/app/callback/page.js +2 -2
  202. package/.next/standalone/.next/server/app/callback/page.js.nft.json +1 -1
  203. package/.next/standalone/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  204. package/.next/standalone/.next/server/app/callback.html +1 -1
  205. package/.next/standalone/.next/server/app/callback.rsc +4 -4
  206. package/.next/standalone/.next/server/app/callback.segments/_full.segment.rsc +4 -4
  207. package/.next/standalone/.next/server/app/callback.segments/_head.segment.rsc +1 -1
  208. package/.next/standalone/.next/server/app/callback.segments/_index.segment.rsc +4 -4
  209. package/.next/standalone/.next/server/app/callback.segments/_tree.segment.rsc +2 -2
  210. package/.next/standalone/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  211. package/.next/standalone/.next/server/app/callback.segments/callback.segment.rsc +1 -1
  212. package/.next/standalone/.next/server/app/dashboard/basic-chat.html +1 -1
  213. package/.next/standalone/.next/server/app/dashboard/basic-chat.rsc +6 -6
  214. package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  215. package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  216. package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  217. package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  218. package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
  219. package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  220. package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/_index.segment.rsc +4 -4
  221. package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
  222. package/.next/standalone/.next/server/app/dashboard/cli-tools.html +1 -1
  223. package/.next/standalone/.next/server/app/dashboard/cli-tools.rsc +6 -6
  224. package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  225. package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  226. package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  227. package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  228. package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
  229. package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  230. package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
  231. package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  232. package/.next/standalone/.next/server/app/dashboard/combos.html +1 -1
  233. package/.next/standalone/.next/server/app/dashboard/combos.rsc +6 -6
  234. package/.next/standalone/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  235. package/.next/standalone/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  236. package/.next/standalone/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  237. package/.next/standalone/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  238. package/.next/standalone/.next/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
  239. package/.next/standalone/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  240. package/.next/standalone/.next/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
  241. package/.next/standalone/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  242. package/.next/standalone/.next/server/app/dashboard/endpoint.html +1 -1
  243. package/.next/standalone/.next/server/app/dashboard/endpoint.rsc +6 -6
  244. package/.next/standalone/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  245. package/.next/standalone/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  246. package/.next/standalone/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  247. package/.next/standalone/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  248. package/.next/standalone/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
  249. package/.next/standalone/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  250. package/.next/standalone/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
  251. package/.next/standalone/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  252. package/.next/standalone/.next/server/app/dashboard/mitm.html +1 -1
  253. package/.next/standalone/.next/server/app/dashboard/mitm.rsc +6 -6
  254. package/.next/standalone/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  255. package/.next/standalone/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  256. package/.next/standalone/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  257. package/.next/standalone/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  258. package/.next/standalone/.next/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
  259. package/.next/standalone/.next/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  260. package/.next/standalone/.next/server/app/dashboard/mitm.segments/_index.segment.rsc +4 -4
  261. package/.next/standalone/.next/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  262. package/.next/standalone/.next/server/app/dashboard/profile.html +1 -1
  263. package/.next/standalone/.next/server/app/dashboard/profile.rsc +6 -6
  264. package/.next/standalone/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  265. package/.next/standalone/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  266. package/.next/standalone/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  267. package/.next/standalone/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  268. package/.next/standalone/.next/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
  269. package/.next/standalone/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  270. package/.next/standalone/.next/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
  271. package/.next/standalone/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  272. package/.next/standalone/.next/server/app/dashboard/providers/new.html +1 -1
  273. package/.next/standalone/.next/server/app/dashboard/providers/new.rsc +6 -6
  274. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  275. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  276. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  277. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  278. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  279. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
  280. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  281. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
  282. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  283. package/.next/standalone/.next/server/app/dashboard/providers.html +1 -1
  284. package/.next/standalone/.next/server/app/dashboard/providers.rsc +6 -6
  285. package/.next/standalone/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  286. package/.next/standalone/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  287. package/.next/standalone/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  288. package/.next/standalone/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  289. package/.next/standalone/.next/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
  290. package/.next/standalone/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  291. package/.next/standalone/.next/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
  292. package/.next/standalone/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  293. package/.next/standalone/.next/server/app/dashboard/proxy-pools.html +1 -1
  294. package/.next/standalone/.next/server/app/dashboard/proxy-pools.rsc +6 -6
  295. package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  296. package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  297. package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  298. package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  299. package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
  300. package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  301. package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +4 -4
  302. package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  303. package/.next/standalone/.next/server/app/dashboard/quota.html +2 -2
  304. package/.next/standalone/.next/server/app/dashboard/quota.rsc +7 -7
  305. package/.next/standalone/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  306. package/.next/standalone/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  307. package/.next/standalone/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  308. package/.next/standalone/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  309. package/.next/standalone/.next/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
  310. package/.next/standalone/.next/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  311. package/.next/standalone/.next/server/app/dashboard/quota.segments/_index.segment.rsc +4 -4
  312. package/.next/standalone/.next/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  313. package/.next/standalone/.next/server/app/dashboard/settings/pricing/page.js +2 -2
  314. package/.next/standalone/.next/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  315. package/.next/standalone/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  316. package/.next/standalone/.next/server/app/dashboard/settings/pricing.html +1 -1
  317. package/.next/standalone/.next/server/app/dashboard/settings/pricing.rsc +4 -4
  318. package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  319. package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  320. package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
  321. package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  322. package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  323. package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  324. package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  325. package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  326. package/.next/standalone/.next/server/app/dashboard/translator.html +1 -1
  327. package/.next/standalone/.next/server/app/dashboard/translator.rsc +6 -6
  328. package/.next/standalone/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  329. package/.next/standalone/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  330. package/.next/standalone/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  331. package/.next/standalone/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  332. package/.next/standalone/.next/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
  333. package/.next/standalone/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  334. package/.next/standalone/.next/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
  335. package/.next/standalone/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  336. package/.next/standalone/.next/server/app/dashboard/usage.html +1 -1
  337. package/.next/standalone/.next/server/app/dashboard/usage.rsc +6 -6
  338. package/.next/standalone/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  339. package/.next/standalone/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  340. package/.next/standalone/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  341. package/.next/standalone/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  342. package/.next/standalone/.next/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
  343. package/.next/standalone/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  344. package/.next/standalone/.next/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
  345. package/.next/standalone/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  346. package/.next/standalone/.next/server/app/dashboard.html +1 -1
  347. package/.next/standalone/.next/server/app/dashboard.rsc +6 -6
  348. package/.next/standalone/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  349. package/.next/standalone/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  350. package/.next/standalone/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  351. package/.next/standalone/.next/server/app/dashboard.segments/_full.segment.rsc +6 -6
  352. package/.next/standalone/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
  353. package/.next/standalone/.next/server/app/dashboard.segments/_index.segment.rsc +4 -4
  354. package/.next/standalone/.next/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  355. package/.next/standalone/.next/server/app/favicon.ico/route.js +1 -1
  356. package/.next/standalone/.next/server/app/index.html +1 -1
  357. package/.next/standalone/.next/server/app/index.rsc +4 -4
  358. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  359. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +4 -4
  360. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  361. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +4 -4
  362. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  363. package/.next/standalone/.next/server/app/landing/page.js +2 -2
  364. package/.next/standalone/.next/server/app/landing/page.js.nft.json +1 -1
  365. package/.next/standalone/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  366. package/.next/standalone/.next/server/app/landing.html +1 -1
  367. package/.next/standalone/.next/server/app/landing.rsc +4 -4
  368. package/.next/standalone/.next/server/app/landing.segments/_full.segment.rsc +4 -4
  369. package/.next/standalone/.next/server/app/landing.segments/_head.segment.rsc +1 -1
  370. package/.next/standalone/.next/server/app/landing.segments/_index.segment.rsc +4 -4
  371. package/.next/standalone/.next/server/app/landing.segments/_tree.segment.rsc +2 -2
  372. package/.next/standalone/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  373. package/.next/standalone/.next/server/app/landing.segments/landing.segment.rsc +1 -1
  374. package/.next/standalone/.next/server/app/login/page.js +2 -2
  375. package/.next/standalone/.next/server/app/login/page.js.nft.json +1 -1
  376. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  377. package/.next/standalone/.next/server/app/login.html +1 -1
  378. package/.next/standalone/.next/server/app/login.rsc +5 -5
  379. package/.next/standalone/.next/server/app/login.segments/_full.segment.rsc +5 -5
  380. package/.next/standalone/.next/server/app/login.segments/_head.segment.rsc +1 -1
  381. package/.next/standalone/.next/server/app/login.segments/_index.segment.rsc +4 -4
  382. package/.next/standalone/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  383. package/.next/standalone/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  384. package/.next/standalone/.next/server/app/login.segments/login.segment.rsc +1 -1
  385. package/.next/standalone/.next/server/app/manifest.webmanifest/route.js +2 -2
  386. package/.next/standalone/.next/server/app/page.js +2 -2
  387. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  388. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  389. package/.next/standalone/.next/server/app-paths-manifest.json +3 -5
  390. package/.next/standalone/.next/server/chunks/2506.js +2 -4
  391. package/.next/standalone/.next/server/chunks/289.js +1 -1
  392. package/.next/standalone/.next/server/chunks/318.js +2 -2
  393. package/.next/standalone/.next/server/chunks/3646.js +1 -1
  394. package/.next/standalone/.next/server/chunks/412.js +1 -1
  395. package/.next/standalone/.next/server/chunks/4689.js +1 -1
  396. package/.next/standalone/.next/server/chunks/4989.js +1 -1
  397. package/.next/standalone/.next/server/chunks/5127.js +1 -1
  398. package/.next/standalone/.next/server/chunks/6555.js +1 -1
  399. package/.next/standalone/.next/server/chunks/689.js +1 -0
  400. package/.next/standalone/.next/server/chunks/7994.js +2 -2
  401. package/.next/standalone/.next/server/chunks/8220.js +1 -1
  402. package/.next/standalone/.next/server/chunks/8226.js +1 -1
  403. package/.next/standalone/.next/server/chunks/869.js +1 -1
  404. package/.next/standalone/.next/server/chunks/8895.js +2 -2
  405. package/.next/standalone/.next/server/chunks/9609.js +1 -1
  406. package/.next/standalone/.next/server/chunks/9612.js +1 -0
  407. package/.next/standalone/.next/server/chunks/9718.js +1 -1
  408. package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
  409. package/.next/standalone/.next/server/middleware.js +1 -1
  410. package/.next/standalone/.next/server/pages/404.html +1 -1
  411. package/.next/standalone/.next/server/pages/500.html +1 -1
  412. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  413. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  414. package/.next/standalone/.next/static/Gc4sf-VqQNgq0nElFAgkp/_buildManifest.js +1 -0
  415. package/.next/standalone/.next/static/chunks/1321-41eb909787386335.js +1 -0
  416. package/.next/standalone/.next/static/chunks/2589-a6b07403b2571e3e.js +3 -0
  417. package/.next/standalone/.next/static/chunks/{5497-f31fec65c312a69e.js → 5497-81adf0785c150317.js} +2 -2
  418. package/.next/{static/chunks/5601-0a2235641c503d61.js → standalone/.next/static/chunks/5601-a0b403330ecce798.js} +1 -1
  419. package/.next/standalone/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-ce6753401b741885.js +22 -0
  420. package/.next/standalone/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-c2271b435288e5d7.js +4 -0
  421. package/.next/standalone/.next/static/chunks/app/(dashboard)/dashboard/proxy-pools/page-56a88292dbb5c42c.js +2 -0
  422. package/.next/{static/chunks/app/(dashboard)/dashboard/quota/page-e2666b9d85a3dd55.js → standalone/.next/static/chunks/app/(dashboard)/dashboard/quota/page-6bd1edf4b3404eb3.js} +1 -1
  423. package/.next/standalone/.next/static/chunks/app/(dashboard)/{layout-56c25acbdb152e97.js → layout-4c9cd1e77ccfdc99.js} +1 -1
  424. package/.next/standalone/.next/static/chunks/app/_global-error/page-ce0e9c212cec4f05.js +1 -0
  425. package/.next/standalone/.next/static/chunks/app/api/antigravity-ide/route-ce0e9c212cec4f05.js +1 -0
  426. package/.next/standalone/.next/static/chunks/app/api/antigravity-tools/import/route-ce0e9c212cec4f05.js +1 -0
  427. package/.next/standalone/.next/static/chunks/app/api/antigravity-tools/import-refresh-tokens/route-ce0e9c212cec4f05.js +1 -0
  428. package/.next/standalone/.next/static/chunks/app/api/auth/login/route-ce0e9c212cec4f05.js +1 -0
  429. package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-ce0e9c212cec4f05.js +1 -0
  430. package/.next/standalone/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-ce0e9c212cec4f05.js +1 -0
  431. package/.next/standalone/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-ce0e9c212cec4f05.js +1 -0
  432. package/.next/standalone/.next/static/chunks/app/api/cli-tools/claude-settings/route-ce0e9c212cec4f05.js +1 -0
  433. package/.next/standalone/.next/static/chunks/app/api/cli-tools/codex-settings/route-ce0e9c212cec4f05.js +1 -0
  434. package/.next/standalone/.next/static/chunks/app/api/cli-tools/copilot-settings/route-ce0e9c212cec4f05.js +1 -0
  435. package/.next/standalone/.next/static/chunks/app/api/cli-tools/droid-settings/route-ce0e9c212cec4f05.js +1 -0
  436. package/.next/standalone/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-ce0e9c212cec4f05.js +1 -0
  437. package/.next/standalone/.next/static/chunks/app/api/cli-tools/opencode-settings/route-ce0e9c212cec4f05.js +1 -0
  438. package/.next/standalone/.next/static/chunks/app/api/cloud/auth/route-ce0e9c212cec4f05.js +1 -0
  439. package/.next/standalone/.next/static/chunks/app/api/cloud/credentials/update/route-ce0e9c212cec4f05.js +1 -0
  440. package/.next/standalone/.next/static/chunks/app/api/cloud/model/resolve/route-ce0e9c212cec4f05.js +1 -0
  441. package/.next/standalone/.next/static/chunks/app/api/cloud/models/alias/route-ce0e9c212cec4f05.js +1 -0
  442. package/.next/standalone/.next/static/chunks/app/api/combos/[id]/route-ce0e9c212cec4f05.js +1 -0
  443. package/.next/standalone/.next/static/chunks/app/api/combos/route-ce0e9c212cec4f05.js +1 -0
  444. package/.next/standalone/.next/static/chunks/app/api/health/route-ce0e9c212cec4f05.js +1 -0
  445. package/.next/standalone/.next/static/chunks/app/api/init/route-ce0e9c212cec4f05.js +1 -0
  446. package/.next/standalone/.next/static/chunks/app/api/internal/request-detail/route-ce0e9c212cec4f05.js +1 -0
  447. package/.next/standalone/.next/static/chunks/app/api/internal/usage/route-ce0e9c212cec4f05.js +1 -0
  448. package/.next/standalone/.next/static/chunks/app/api/keys/[id]/route-ce0e9c212cec4f05.js +1 -0
  449. package/.next/standalone/.next/static/chunks/app/api/keys/route-ce0e9c212cec4f05.js +1 -0
  450. package/.next/standalone/.next/static/chunks/app/api/locale/route-ce0e9c212cec4f05.js +1 -0
  451. package/.next/standalone/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-ce0e9c212cec4f05.js +1 -0
  452. package/.next/standalone/.next/static/chunks/app/api/media-providers/tts/voices/route-ce0e9c212cec4f05.js +1 -0
  453. package/.next/standalone/.next/static/chunks/app/api/models/alias/route-ce0e9c212cec4f05.js +1 -0
  454. package/.next/standalone/.next/static/chunks/app/api/models/availability/route-ce0e9c212cec4f05.js +1 -0
  455. package/.next/standalone/.next/static/chunks/app/api/models/route-ce0e9c212cec4f05.js +1 -0
  456. package/.next/standalone/.next/static/chunks/app/api/models/test/route-ce0e9c212cec4f05.js +1 -0
  457. package/.next/standalone/.next/static/chunks/app/api/oauth/[provider]/[action]/route-ce0e9c212cec4f05.js +1 -0
  458. package/.next/standalone/.next/static/chunks/app/api/oauth/cursor/auto-import/route-ce0e9c212cec4f05.js +1 -0
  459. package/.next/standalone/.next/static/chunks/app/api/oauth/cursor/import/route-ce0e9c212cec4f05.js +1 -0
  460. package/.next/standalone/.next/static/chunks/app/api/oauth/gitlab/pat/route-ce0e9c212cec4f05.js +1 -0
  461. package/.next/standalone/.next/static/chunks/app/api/oauth/iflow/cookie/route-ce0e9c212cec4f05.js +1 -0
  462. package/.next/standalone/.next/static/chunks/app/api/oauth/kiro/auto-import/route-ce0e9c212cec4f05.js +1 -0
  463. package/.next/standalone/.next/static/chunks/app/api/oauth/kiro/import/route-ce0e9c212cec4f05.js +1 -0
  464. package/.next/standalone/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-ce0e9c212cec4f05.js +1 -0
  465. package/.next/standalone/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-ce0e9c212cec4f05.js +1 -0
  466. package/.next/standalone/.next/static/chunks/app/api/pricing/route-ce0e9c212cec4f05.js +1 -0
  467. package/.next/standalone/.next/static/chunks/app/api/provider-nodes/[id]/route-ce0e9c212cec4f05.js +1 -0
  468. package/.next/standalone/.next/static/chunks/app/api/provider-nodes/route-ce0e9c212cec4f05.js +1 -0
  469. package/.next/standalone/.next/static/chunks/app/api/provider-nodes/validate/route-ce0e9c212cec4f05.js +1 -0
  470. package/.next/standalone/.next/static/chunks/app/api/providers/[id]/models/route-ce0e9c212cec4f05.js +1 -0
  471. package/.next/standalone/.next/static/chunks/app/api/providers/[id]/route-ce0e9c212cec4f05.js +1 -0
  472. package/.next/standalone/.next/static/chunks/app/api/providers/[id]/test/route-ce0e9c212cec4f05.js +1 -0
  473. package/.next/standalone/.next/static/chunks/app/api/providers/[id]/test-models/route-ce0e9c212cec4f05.js +1 -0
  474. package/.next/standalone/.next/static/chunks/app/api/providers/client/route-ce0e9c212cec4f05.js +1 -0
  475. package/.next/standalone/.next/static/chunks/app/api/providers/kilo/free-models/route-ce0e9c212cec4f05.js +1 -0
  476. package/.next/standalone/.next/static/chunks/app/api/providers/route-ce0e9c212cec4f05.js +1 -0
  477. package/.next/standalone/.next/static/chunks/app/api/providers/test-batch/route-ce0e9c212cec4f05.js +1 -0
  478. package/.next/standalone/.next/static/chunks/app/api/providers/validate/route-ce0e9c212cec4f05.js +1 -0
  479. package/.next/standalone/.next/static/chunks/app/api/proxy-pools/[id]/route-ce0e9c212cec4f05.js +1 -0
  480. package/.next/standalone/.next/static/chunks/app/api/proxy-pools/[id]/test/route-ce0e9c212cec4f05.js +1 -0
  481. package/.next/standalone/.next/static/chunks/app/api/proxy-pools/route-ce0e9c212cec4f05.js +1 -0
  482. package/.next/standalone/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-ce0e9c212cec4f05.js +1 -0
  483. package/.next/standalone/.next/static/chunks/app/api/settings/database/route-ce0e9c212cec4f05.js +1 -0
  484. package/.next/standalone/.next/static/chunks/app/api/settings/proxy-test/route-ce0e9c212cec4f05.js +1 -0
  485. package/.next/standalone/.next/static/chunks/app/api/settings/require-login/route-ce0e9c212cec4f05.js +1 -0
  486. package/.next/standalone/.next/static/chunks/app/api/settings/route-ce0e9c212cec4f05.js +1 -0
  487. package/.next/standalone/.next/static/chunks/app/api/shutdown/route-ce0e9c212cec4f05.js +1 -0
  488. package/.next/standalone/.next/static/chunks/app/api/tags/route-ce0e9c212cec4f05.js +1 -0
  489. package/.next/standalone/.next/static/chunks/app/api/translator/console-logs/route-ce0e9c212cec4f05.js +1 -0
  490. package/.next/standalone/.next/static/chunks/app/api/translator/console-logs/stream/route-ce0e9c212cec4f05.js +1 -0
  491. package/.next/standalone/.next/static/chunks/app/api/translator/load/route-ce0e9c212cec4f05.js +1 -0
  492. package/.next/standalone/.next/static/chunks/app/api/translator/save/route-ce0e9c212cec4f05.js +1 -0
  493. package/.next/standalone/.next/static/chunks/app/api/translator/send/route-ce0e9c212cec4f05.js +1 -0
  494. package/.next/standalone/.next/static/chunks/app/api/translator/translate/route-ce0e9c212cec4f05.js +1 -0
  495. package/.next/standalone/.next/static/chunks/app/api/tunnel/disable/route-ce0e9c212cec4f05.js +1 -0
  496. package/.next/standalone/.next/static/chunks/app/api/tunnel/enable/route-ce0e9c212cec4f05.js +1 -0
  497. package/.next/standalone/.next/static/chunks/app/api/tunnel/status/route-ce0e9c212cec4f05.js +1 -0
  498. package/.next/standalone/.next/static/chunks/app/api/tunnel/tailscale-check/route-ce0e9c212cec4f05.js +1 -0
  499. package/.next/standalone/.next/static/chunks/app/api/tunnel/tailscale-disable/route-ce0e9c212cec4f05.js +1 -0
  500. package/.next/standalone/.next/static/chunks/app/api/tunnel/tailscale-enable/route-ce0e9c212cec4f05.js +1 -0
  501. package/.next/standalone/.next/static/chunks/app/api/tunnel/tailscale-install/route-ce0e9c212cec4f05.js +1 -0
  502. package/.next/standalone/.next/static/chunks/app/api/tunnel/tailscale-login/route-ce0e9c212cec4f05.js +1 -0
  503. package/.next/standalone/.next/static/chunks/app/api/tunnel/tailscale-start-daemon/route-ce0e9c212cec4f05.js +1 -0
  504. package/.next/standalone/.next/static/chunks/app/api/usage/[connectionId]/route-ce0e9c212cec4f05.js +1 -0
  505. package/.next/standalone/.next/static/chunks/app/api/usage/chart/route-ce0e9c212cec4f05.js +1 -0
  506. package/.next/standalone/.next/static/chunks/app/api/usage/history/route-ce0e9c212cec4f05.js +1 -0
  507. package/.next/standalone/.next/static/chunks/app/api/usage/logs/route-ce0e9c212cec4f05.js +1 -0
  508. package/.next/standalone/.next/static/chunks/app/api/usage/providers/route-ce0e9c212cec4f05.js +1 -0
  509. package/.next/standalone/.next/static/chunks/app/api/usage/request-details/route-ce0e9c212cec4f05.js +1 -0
  510. package/.next/standalone/.next/static/chunks/app/api/usage/request-logs/route-ce0e9c212cec4f05.js +1 -0
  511. package/.next/standalone/.next/static/chunks/app/api/usage/stats/route-ce0e9c212cec4f05.js +1 -0
  512. package/.next/standalone/.next/static/chunks/app/api/usage/stream/route-ce0e9c212cec4f05.js +1 -0
  513. package/.next/standalone/.next/static/chunks/app/api/v1/api/chat/route-ce0e9c212cec4f05.js +1 -0
  514. package/.next/standalone/.next/static/chunks/app/api/v1/audio/speech/route-ce0e9c212cec4f05.js +1 -0
  515. package/.next/standalone/.next/static/chunks/app/api/v1/chat/completions/route-ce0e9c212cec4f05.js +1 -0
  516. package/.next/standalone/.next/static/chunks/app/api/v1/embeddings/route-ce0e9c212cec4f05.js +1 -0
  517. package/.next/standalone/.next/static/chunks/app/api/v1/messages/count_tokens/route-ce0e9c212cec4f05.js +1 -0
  518. package/.next/standalone/.next/static/chunks/app/api/v1/messages/route-ce0e9c212cec4f05.js +1 -0
  519. package/.next/standalone/.next/static/chunks/app/api/v1/models/route-ce0e9c212cec4f05.js +1 -0
  520. package/.next/standalone/.next/static/chunks/app/api/v1/responses/route-ce0e9c212cec4f05.js +1 -0
  521. package/.next/standalone/.next/static/chunks/app/api/v1/route-ce0e9c212cec4f05.js +1 -0
  522. package/.next/standalone/.next/static/chunks/app/api/v1beta/models/[...path]/route-ce0e9c212cec4f05.js +1 -0
  523. package/.next/standalone/.next/static/chunks/app/api/v1beta/models/route-ce0e9c212cec4f05.js +1 -0
  524. package/.next/standalone/.next/static/chunks/app/api/version/route-ce0e9c212cec4f05.js +1 -0
  525. package/.next/standalone/.next/static/chunks/app/manifest.webmanifest/route-ce0e9c212cec4f05.js +1 -0
  526. package/.next/standalone/.next/static/chunks/app/page-ce0e9c212cec4f05.js +1 -0
  527. package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-ce0e9c212cec4f05.js +1 -0
  528. package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-ce0e9c212cec4f05.js +1 -0
  529. package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-ce0e9c212cec4f05.js +1 -0
  530. package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-ce0e9c212cec4f05.js +1 -0
  531. package/.next/standalone/.next/static/css/2d390f725d5d5a0d.css +1 -0
  532. package/.next/standalone/mitm/handlers/antigravity.js +1 -1
  533. package/.next/standalone/mitm/handlers/base.js +15 -2
  534. package/.next/standalone/mitm/handlers/copilot.js +1 -1
  535. package/.next/standalone/mitm/handlers/kiro.js +1 -1
  536. package/.next/standalone/package.json +1 -1
  537. package/.next/static/Gc4sf-VqQNgq0nElFAgkp/_buildManifest.js +1 -0
  538. package/.next/static/chunks/1321-41eb909787386335.js +1 -0
  539. package/.next/static/chunks/2589-a6b07403b2571e3e.js +3 -0
  540. package/.next/static/chunks/{5497-f31fec65c312a69e.js → 5497-81adf0785c150317.js} +2 -2
  541. package/.next/{standalone/.next/static/chunks/5601-0a2235641c503d61.js → static/chunks/5601-a0b403330ecce798.js} +1 -1
  542. package/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-ce6753401b741885.js +22 -0
  543. package/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-c2271b435288e5d7.js +4 -0
  544. package/.next/static/chunks/app/(dashboard)/dashboard/proxy-pools/page-56a88292dbb5c42c.js +2 -0
  545. package/.next/{standalone/.next/static/chunks/app/(dashboard)/dashboard/quota/page-e2666b9d85a3dd55.js → static/chunks/app/(dashboard)/dashboard/quota/page-6bd1edf4b3404eb3.js} +1 -1
  546. package/.next/static/chunks/app/(dashboard)/{layout-56c25acbdb152e97.js → layout-4c9cd1e77ccfdc99.js} +1 -1
  547. package/.next/static/chunks/app/_global-error/page-ce0e9c212cec4f05.js +1 -0
  548. package/.next/static/chunks/app/api/antigravity-ide/route-ce0e9c212cec4f05.js +1 -0
  549. package/.next/static/chunks/app/api/antigravity-tools/import/route-ce0e9c212cec4f05.js +1 -0
  550. package/.next/static/chunks/app/api/antigravity-tools/import-refresh-tokens/route-ce0e9c212cec4f05.js +1 -0
  551. package/.next/static/chunks/app/api/auth/login/route-ce0e9c212cec4f05.js +1 -0
  552. package/.next/static/chunks/app/api/auth/logout/route-ce0e9c212cec4f05.js +1 -0
  553. package/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-ce0e9c212cec4f05.js +1 -0
  554. package/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-ce0e9c212cec4f05.js +1 -0
  555. package/.next/static/chunks/app/api/cli-tools/claude-settings/route-ce0e9c212cec4f05.js +1 -0
  556. package/.next/static/chunks/app/api/cli-tools/codex-settings/route-ce0e9c212cec4f05.js +1 -0
  557. package/.next/static/chunks/app/api/cli-tools/copilot-settings/route-ce0e9c212cec4f05.js +1 -0
  558. package/.next/static/chunks/app/api/cli-tools/droid-settings/route-ce0e9c212cec4f05.js +1 -0
  559. package/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-ce0e9c212cec4f05.js +1 -0
  560. package/.next/static/chunks/app/api/cli-tools/opencode-settings/route-ce0e9c212cec4f05.js +1 -0
  561. package/.next/static/chunks/app/api/cloud/auth/route-ce0e9c212cec4f05.js +1 -0
  562. package/.next/static/chunks/app/api/cloud/credentials/update/route-ce0e9c212cec4f05.js +1 -0
  563. package/.next/static/chunks/app/api/cloud/model/resolve/route-ce0e9c212cec4f05.js +1 -0
  564. package/.next/static/chunks/app/api/cloud/models/alias/route-ce0e9c212cec4f05.js +1 -0
  565. package/.next/static/chunks/app/api/combos/[id]/route-ce0e9c212cec4f05.js +1 -0
  566. package/.next/static/chunks/app/api/combos/route-ce0e9c212cec4f05.js +1 -0
  567. package/.next/static/chunks/app/api/health/route-ce0e9c212cec4f05.js +1 -0
  568. package/.next/static/chunks/app/api/init/route-ce0e9c212cec4f05.js +1 -0
  569. package/.next/static/chunks/app/api/internal/request-detail/route-ce0e9c212cec4f05.js +1 -0
  570. package/.next/static/chunks/app/api/internal/usage/route-ce0e9c212cec4f05.js +1 -0
  571. package/.next/static/chunks/app/api/keys/[id]/route-ce0e9c212cec4f05.js +1 -0
  572. package/.next/static/chunks/app/api/keys/route-ce0e9c212cec4f05.js +1 -0
  573. package/.next/static/chunks/app/api/locale/route-ce0e9c212cec4f05.js +1 -0
  574. package/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-ce0e9c212cec4f05.js +1 -0
  575. package/.next/static/chunks/app/api/media-providers/tts/voices/route-ce0e9c212cec4f05.js +1 -0
  576. package/.next/static/chunks/app/api/models/alias/route-ce0e9c212cec4f05.js +1 -0
  577. package/.next/static/chunks/app/api/models/availability/route-ce0e9c212cec4f05.js +1 -0
  578. package/.next/static/chunks/app/api/models/route-ce0e9c212cec4f05.js +1 -0
  579. package/.next/static/chunks/app/api/models/test/route-ce0e9c212cec4f05.js +1 -0
  580. package/.next/static/chunks/app/api/oauth/[provider]/[action]/route-ce0e9c212cec4f05.js +1 -0
  581. package/.next/static/chunks/app/api/oauth/cursor/auto-import/route-ce0e9c212cec4f05.js +1 -0
  582. package/.next/static/chunks/app/api/oauth/cursor/import/route-ce0e9c212cec4f05.js +1 -0
  583. package/.next/static/chunks/app/api/oauth/gitlab/pat/route-ce0e9c212cec4f05.js +1 -0
  584. package/.next/static/chunks/app/api/oauth/iflow/cookie/route-ce0e9c212cec4f05.js +1 -0
  585. package/.next/static/chunks/app/api/oauth/kiro/auto-import/route-ce0e9c212cec4f05.js +1 -0
  586. package/.next/static/chunks/app/api/oauth/kiro/import/route-ce0e9c212cec4f05.js +1 -0
  587. package/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-ce0e9c212cec4f05.js +1 -0
  588. package/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-ce0e9c212cec4f05.js +1 -0
  589. package/.next/static/chunks/app/api/pricing/route-ce0e9c212cec4f05.js +1 -0
  590. package/.next/static/chunks/app/api/provider-nodes/[id]/route-ce0e9c212cec4f05.js +1 -0
  591. package/.next/static/chunks/app/api/provider-nodes/route-ce0e9c212cec4f05.js +1 -0
  592. package/.next/static/chunks/app/api/provider-nodes/validate/route-ce0e9c212cec4f05.js +1 -0
  593. package/.next/static/chunks/app/api/providers/[id]/models/route-ce0e9c212cec4f05.js +1 -0
  594. package/.next/static/chunks/app/api/providers/[id]/route-ce0e9c212cec4f05.js +1 -0
  595. package/.next/static/chunks/app/api/providers/[id]/test/route-ce0e9c212cec4f05.js +1 -0
  596. package/.next/static/chunks/app/api/providers/[id]/test-models/route-ce0e9c212cec4f05.js +1 -0
  597. package/.next/static/chunks/app/api/providers/client/route-ce0e9c212cec4f05.js +1 -0
  598. package/.next/static/chunks/app/api/providers/kilo/free-models/route-ce0e9c212cec4f05.js +1 -0
  599. package/.next/static/chunks/app/api/providers/route-ce0e9c212cec4f05.js +1 -0
  600. package/.next/static/chunks/app/api/providers/test-batch/route-ce0e9c212cec4f05.js +1 -0
  601. package/.next/static/chunks/app/api/providers/validate/route-ce0e9c212cec4f05.js +1 -0
  602. package/.next/static/chunks/app/api/proxy-pools/[id]/route-ce0e9c212cec4f05.js +1 -0
  603. package/.next/static/chunks/app/api/proxy-pools/[id]/test/route-ce0e9c212cec4f05.js +1 -0
  604. package/.next/static/chunks/app/api/proxy-pools/route-ce0e9c212cec4f05.js +1 -0
  605. package/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-ce0e9c212cec4f05.js +1 -0
  606. package/.next/static/chunks/app/api/settings/database/route-ce0e9c212cec4f05.js +1 -0
  607. package/.next/static/chunks/app/api/settings/proxy-test/route-ce0e9c212cec4f05.js +1 -0
  608. package/.next/static/chunks/app/api/settings/require-login/route-ce0e9c212cec4f05.js +1 -0
  609. package/.next/static/chunks/app/api/settings/route-ce0e9c212cec4f05.js +1 -0
  610. package/.next/static/chunks/app/api/shutdown/route-ce0e9c212cec4f05.js +1 -0
  611. package/.next/static/chunks/app/api/tags/route-ce0e9c212cec4f05.js +1 -0
  612. package/.next/static/chunks/app/api/translator/console-logs/route-ce0e9c212cec4f05.js +1 -0
  613. package/.next/static/chunks/app/api/translator/console-logs/stream/route-ce0e9c212cec4f05.js +1 -0
  614. package/.next/static/chunks/app/api/translator/load/route-ce0e9c212cec4f05.js +1 -0
  615. package/.next/static/chunks/app/api/translator/save/route-ce0e9c212cec4f05.js +1 -0
  616. package/.next/static/chunks/app/api/translator/send/route-ce0e9c212cec4f05.js +1 -0
  617. package/.next/static/chunks/app/api/translator/translate/route-ce0e9c212cec4f05.js +1 -0
  618. package/.next/static/chunks/app/api/tunnel/disable/route-ce0e9c212cec4f05.js +1 -0
  619. package/.next/static/chunks/app/api/tunnel/enable/route-ce0e9c212cec4f05.js +1 -0
  620. package/.next/static/chunks/app/api/tunnel/status/route-ce0e9c212cec4f05.js +1 -0
  621. package/.next/static/chunks/app/api/tunnel/tailscale-check/route-ce0e9c212cec4f05.js +1 -0
  622. package/.next/static/chunks/app/api/tunnel/tailscale-disable/route-ce0e9c212cec4f05.js +1 -0
  623. package/.next/static/chunks/app/api/tunnel/tailscale-enable/route-ce0e9c212cec4f05.js +1 -0
  624. package/.next/static/chunks/app/api/tunnel/tailscale-install/route-ce0e9c212cec4f05.js +1 -0
  625. package/.next/static/chunks/app/api/tunnel/tailscale-login/route-ce0e9c212cec4f05.js +1 -0
  626. package/.next/static/chunks/app/api/tunnel/tailscale-start-daemon/route-ce0e9c212cec4f05.js +1 -0
  627. package/.next/static/chunks/app/api/usage/[connectionId]/route-ce0e9c212cec4f05.js +1 -0
  628. package/.next/static/chunks/app/api/usage/chart/route-ce0e9c212cec4f05.js +1 -0
  629. package/.next/static/chunks/app/api/usage/history/route-ce0e9c212cec4f05.js +1 -0
  630. package/.next/static/chunks/app/api/usage/logs/route-ce0e9c212cec4f05.js +1 -0
  631. package/.next/static/chunks/app/api/usage/providers/route-ce0e9c212cec4f05.js +1 -0
  632. package/.next/static/chunks/app/api/usage/request-details/route-ce0e9c212cec4f05.js +1 -0
  633. package/.next/static/chunks/app/api/usage/request-logs/route-ce0e9c212cec4f05.js +1 -0
  634. package/.next/static/chunks/app/api/usage/stats/route-ce0e9c212cec4f05.js +1 -0
  635. package/.next/static/chunks/app/api/usage/stream/route-ce0e9c212cec4f05.js +1 -0
  636. package/.next/static/chunks/app/api/v1/api/chat/route-ce0e9c212cec4f05.js +1 -0
  637. package/.next/static/chunks/app/api/v1/audio/speech/route-ce0e9c212cec4f05.js +1 -0
  638. package/.next/static/chunks/app/api/v1/chat/completions/route-ce0e9c212cec4f05.js +1 -0
  639. package/.next/static/chunks/app/api/v1/embeddings/route-ce0e9c212cec4f05.js +1 -0
  640. package/.next/static/chunks/app/api/v1/messages/count_tokens/route-ce0e9c212cec4f05.js +1 -0
  641. package/.next/static/chunks/app/api/v1/messages/route-ce0e9c212cec4f05.js +1 -0
  642. package/.next/static/chunks/app/api/v1/models/route-ce0e9c212cec4f05.js +1 -0
  643. package/.next/static/chunks/app/api/v1/responses/route-ce0e9c212cec4f05.js +1 -0
  644. package/.next/static/chunks/app/api/v1/route-ce0e9c212cec4f05.js +1 -0
  645. package/.next/static/chunks/app/api/v1beta/models/[...path]/route-ce0e9c212cec4f05.js +1 -0
  646. package/.next/static/chunks/app/api/v1beta/models/route-ce0e9c212cec4f05.js +1 -0
  647. package/.next/static/chunks/app/api/version/route-ce0e9c212cec4f05.js +1 -0
  648. package/.next/static/chunks/app/manifest.webmanifest/route-ce0e9c212cec4f05.js +1 -0
  649. package/.next/static/chunks/app/page-ce0e9c212cec4f05.js +1 -0
  650. package/.next/static/chunks/next/dist/client/components/builtin/app-error-ce0e9c212cec4f05.js +1 -0
  651. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-ce0e9c212cec4f05.js +1 -0
  652. package/.next/static/chunks/next/dist/client/components/builtin/not-found-ce0e9c212cec4f05.js +1 -0
  653. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-ce0e9c212cec4f05.js +1 -0
  654. package/.next/static/css/2d390f725d5d5a0d.css +1 -0
  655. package/README.md +4 -12
  656. package/package.json +1 -1
  657. package/.next/standalone/.next/server/app/api/9remote/install/route.js +0 -1
  658. package/.next/standalone/.next/server/app/api/9remote/install/route.js.nft.json +0 -1
  659. package/.next/standalone/.next/server/app/api/9remote/install/route_client-reference-manifest.js +0 -1
  660. package/.next/standalone/.next/server/app/api/9remote/start/route.js +0 -1
  661. package/.next/standalone/.next/server/app/api/9remote/start/route_client-reference-manifest.js +0 -1
  662. package/.next/standalone/.next/server/app/api/9remote/status/route.js +0 -1
  663. package/.next/standalone/.next/server/app/api/9remote/status/route.js.nft.json +0 -1
  664. package/.next/standalone/.next/server/app/api/9remote/status/route_client-reference-manifest.js +0 -1
  665. package/.next/standalone/.next/server/chunks/3832.js +0 -1
  666. package/.next/standalone/.next/server/chunks/5324.js +0 -1
  667. package/.next/standalone/.next/static/_6iT5puM28i82au_Z-Hj5/_buildManifest.js +0 -1
  668. package/.next/standalone/.next/static/chunks/1321-d2153c50711f1db5.js +0 -1
  669. package/.next/standalone/.next/static/chunks/2589-e33ccd63c1afc7ba.js +0 -3
  670. package/.next/standalone/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-9187cde45715aa36.js +0 -17
  671. package/.next/standalone/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-acbbfd33f5456170.js +0 -4
  672. package/.next/standalone/.next/static/chunks/app/(dashboard)/dashboard/proxy-pools/page-2835717ff91f1727.js +0 -2
  673. package/.next/standalone/.next/static/chunks/app/_global-error/page-ad4e2601ee308c36.js +0 -1
  674. package/.next/standalone/.next/static/chunks/app/api/9remote/install/route-ad4e2601ee308c36.js +0 -1
  675. package/.next/standalone/.next/static/chunks/app/api/9remote/start/route-ad4e2601ee308c36.js +0 -1
  676. package/.next/standalone/.next/static/chunks/app/api/9remote/status/route-ad4e2601ee308c36.js +0 -1
  677. package/.next/standalone/.next/static/chunks/app/api/antigravity-ide/route-ad4e2601ee308c36.js +0 -1
  678. package/.next/standalone/.next/static/chunks/app/api/antigravity-tools/import/route-ad4e2601ee308c36.js +0 -1
  679. package/.next/standalone/.next/static/chunks/app/api/antigravity-tools/import-refresh-tokens/route-ad4e2601ee308c36.js +0 -1
  680. package/.next/standalone/.next/static/chunks/app/api/auth/login/route-ad4e2601ee308c36.js +0 -1
  681. package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-ad4e2601ee308c36.js +0 -1
  682. package/.next/standalone/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-ad4e2601ee308c36.js +0 -1
  683. package/.next/standalone/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-ad4e2601ee308c36.js +0 -1
  684. package/.next/standalone/.next/static/chunks/app/api/cli-tools/claude-settings/route-ad4e2601ee308c36.js +0 -1
  685. package/.next/standalone/.next/static/chunks/app/api/cli-tools/codex-settings/route-ad4e2601ee308c36.js +0 -1
  686. package/.next/standalone/.next/static/chunks/app/api/cli-tools/copilot-settings/route-ad4e2601ee308c36.js +0 -1
  687. package/.next/standalone/.next/static/chunks/app/api/cli-tools/droid-settings/route-ad4e2601ee308c36.js +0 -1
  688. package/.next/standalone/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-ad4e2601ee308c36.js +0 -1
  689. package/.next/standalone/.next/static/chunks/app/api/cli-tools/opencode-settings/route-ad4e2601ee308c36.js +0 -1
  690. package/.next/standalone/.next/static/chunks/app/api/cloud/auth/route-ad4e2601ee308c36.js +0 -1
  691. package/.next/standalone/.next/static/chunks/app/api/cloud/credentials/update/route-ad4e2601ee308c36.js +0 -1
  692. package/.next/standalone/.next/static/chunks/app/api/cloud/model/resolve/route-ad4e2601ee308c36.js +0 -1
  693. package/.next/standalone/.next/static/chunks/app/api/cloud/models/alias/route-ad4e2601ee308c36.js +0 -1
  694. package/.next/standalone/.next/static/chunks/app/api/combos/[id]/route-ad4e2601ee308c36.js +0 -1
  695. package/.next/standalone/.next/static/chunks/app/api/combos/route-ad4e2601ee308c36.js +0 -1
  696. package/.next/standalone/.next/static/chunks/app/api/health/route-ad4e2601ee308c36.js +0 -1
  697. package/.next/standalone/.next/static/chunks/app/api/init/route-ad4e2601ee308c36.js +0 -1
  698. package/.next/standalone/.next/static/chunks/app/api/internal/request-detail/route-ad4e2601ee308c36.js +0 -1
  699. package/.next/standalone/.next/static/chunks/app/api/internal/usage/route-ad4e2601ee308c36.js +0 -1
  700. package/.next/standalone/.next/static/chunks/app/api/keys/[id]/route-ad4e2601ee308c36.js +0 -1
  701. package/.next/standalone/.next/static/chunks/app/api/keys/route-ad4e2601ee308c36.js +0 -1
  702. package/.next/standalone/.next/static/chunks/app/api/locale/route-ad4e2601ee308c36.js +0 -1
  703. package/.next/standalone/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-ad4e2601ee308c36.js +0 -1
  704. package/.next/standalone/.next/static/chunks/app/api/media-providers/tts/voices/route-ad4e2601ee308c36.js +0 -1
  705. package/.next/standalone/.next/static/chunks/app/api/models/alias/route-ad4e2601ee308c36.js +0 -1
  706. package/.next/standalone/.next/static/chunks/app/api/models/availability/route-ad4e2601ee308c36.js +0 -1
  707. package/.next/standalone/.next/static/chunks/app/api/models/route-ad4e2601ee308c36.js +0 -1
  708. package/.next/standalone/.next/static/chunks/app/api/models/test/route-ad4e2601ee308c36.js +0 -1
  709. package/.next/standalone/.next/static/chunks/app/api/oauth/[provider]/[action]/route-ad4e2601ee308c36.js +0 -1
  710. package/.next/standalone/.next/static/chunks/app/api/oauth/cursor/auto-import/route-ad4e2601ee308c36.js +0 -1
  711. package/.next/standalone/.next/static/chunks/app/api/oauth/cursor/import/route-ad4e2601ee308c36.js +0 -1
  712. package/.next/standalone/.next/static/chunks/app/api/oauth/gitlab/pat/route-ad4e2601ee308c36.js +0 -1
  713. package/.next/standalone/.next/static/chunks/app/api/oauth/iflow/cookie/route-ad4e2601ee308c36.js +0 -1
  714. package/.next/standalone/.next/static/chunks/app/api/oauth/kiro/auto-import/route-ad4e2601ee308c36.js +0 -1
  715. package/.next/standalone/.next/static/chunks/app/api/oauth/kiro/import/route-ad4e2601ee308c36.js +0 -1
  716. package/.next/standalone/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-ad4e2601ee308c36.js +0 -1
  717. package/.next/standalone/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-ad4e2601ee308c36.js +0 -1
  718. package/.next/standalone/.next/static/chunks/app/api/pricing/route-ad4e2601ee308c36.js +0 -1
  719. package/.next/standalone/.next/static/chunks/app/api/provider-nodes/[id]/route-ad4e2601ee308c36.js +0 -1
  720. package/.next/standalone/.next/static/chunks/app/api/provider-nodes/route-ad4e2601ee308c36.js +0 -1
  721. package/.next/standalone/.next/static/chunks/app/api/provider-nodes/validate/route-ad4e2601ee308c36.js +0 -1
  722. package/.next/standalone/.next/static/chunks/app/api/providers/[id]/models/route-ad4e2601ee308c36.js +0 -1
  723. package/.next/standalone/.next/static/chunks/app/api/providers/[id]/route-ad4e2601ee308c36.js +0 -1
  724. package/.next/standalone/.next/static/chunks/app/api/providers/[id]/test/route-ad4e2601ee308c36.js +0 -1
  725. package/.next/standalone/.next/static/chunks/app/api/providers/[id]/test-models/route-ad4e2601ee308c36.js +0 -1
  726. package/.next/standalone/.next/static/chunks/app/api/providers/client/route-ad4e2601ee308c36.js +0 -1
  727. package/.next/standalone/.next/static/chunks/app/api/providers/kilo/free-models/route-ad4e2601ee308c36.js +0 -1
  728. package/.next/standalone/.next/static/chunks/app/api/providers/route-ad4e2601ee308c36.js +0 -1
  729. package/.next/standalone/.next/static/chunks/app/api/providers/test-batch/route-ad4e2601ee308c36.js +0 -1
  730. package/.next/standalone/.next/static/chunks/app/api/providers/validate/route-ad4e2601ee308c36.js +0 -1
  731. package/.next/standalone/.next/static/chunks/app/api/proxy-pools/[id]/route-ad4e2601ee308c36.js +0 -1
  732. package/.next/standalone/.next/static/chunks/app/api/proxy-pools/[id]/test/route-ad4e2601ee308c36.js +0 -1
  733. package/.next/standalone/.next/static/chunks/app/api/proxy-pools/route-ad4e2601ee308c36.js +0 -1
  734. package/.next/standalone/.next/static/chunks/app/api/settings/database/route-ad4e2601ee308c36.js +0 -1
  735. package/.next/standalone/.next/static/chunks/app/api/settings/proxy-test/route-ad4e2601ee308c36.js +0 -1
  736. package/.next/standalone/.next/static/chunks/app/api/settings/require-login/route-ad4e2601ee308c36.js +0 -1
  737. package/.next/standalone/.next/static/chunks/app/api/settings/route-ad4e2601ee308c36.js +0 -1
  738. package/.next/standalone/.next/static/chunks/app/api/shutdown/route-ad4e2601ee308c36.js +0 -1
  739. package/.next/standalone/.next/static/chunks/app/api/tags/route-ad4e2601ee308c36.js +0 -1
  740. package/.next/standalone/.next/static/chunks/app/api/translator/console-logs/route-ad4e2601ee308c36.js +0 -1
  741. package/.next/standalone/.next/static/chunks/app/api/translator/console-logs/stream/route-ad4e2601ee308c36.js +0 -1
  742. package/.next/standalone/.next/static/chunks/app/api/translator/load/route-ad4e2601ee308c36.js +0 -1
  743. package/.next/standalone/.next/static/chunks/app/api/translator/save/route-ad4e2601ee308c36.js +0 -1
  744. package/.next/standalone/.next/static/chunks/app/api/translator/send/route-ad4e2601ee308c36.js +0 -1
  745. package/.next/standalone/.next/static/chunks/app/api/translator/translate/route-ad4e2601ee308c36.js +0 -1
  746. package/.next/standalone/.next/static/chunks/app/api/tunnel/disable/route-ad4e2601ee308c36.js +0 -1
  747. package/.next/standalone/.next/static/chunks/app/api/tunnel/enable/route-ad4e2601ee308c36.js +0 -1
  748. package/.next/standalone/.next/static/chunks/app/api/tunnel/status/route-ad4e2601ee308c36.js +0 -1
  749. package/.next/standalone/.next/static/chunks/app/api/tunnel/tailscale-check/route-ad4e2601ee308c36.js +0 -1
  750. package/.next/standalone/.next/static/chunks/app/api/tunnel/tailscale-disable/route-ad4e2601ee308c36.js +0 -1
  751. package/.next/standalone/.next/static/chunks/app/api/tunnel/tailscale-enable/route-ad4e2601ee308c36.js +0 -1
  752. package/.next/standalone/.next/static/chunks/app/api/tunnel/tailscale-install/route-ad4e2601ee308c36.js +0 -1
  753. package/.next/standalone/.next/static/chunks/app/api/tunnel/tailscale-login/route-ad4e2601ee308c36.js +0 -1
  754. package/.next/standalone/.next/static/chunks/app/api/tunnel/tailscale-start-daemon/route-ad4e2601ee308c36.js +0 -1
  755. package/.next/standalone/.next/static/chunks/app/api/usage/[connectionId]/route-ad4e2601ee308c36.js +0 -1
  756. package/.next/standalone/.next/static/chunks/app/api/usage/chart/route-ad4e2601ee308c36.js +0 -1
  757. package/.next/standalone/.next/static/chunks/app/api/usage/history/route-ad4e2601ee308c36.js +0 -1
  758. package/.next/standalone/.next/static/chunks/app/api/usage/logs/route-ad4e2601ee308c36.js +0 -1
  759. package/.next/standalone/.next/static/chunks/app/api/usage/providers/route-ad4e2601ee308c36.js +0 -1
  760. package/.next/standalone/.next/static/chunks/app/api/usage/request-details/route-ad4e2601ee308c36.js +0 -1
  761. package/.next/standalone/.next/static/chunks/app/api/usage/request-logs/route-ad4e2601ee308c36.js +0 -1
  762. package/.next/standalone/.next/static/chunks/app/api/usage/stats/route-ad4e2601ee308c36.js +0 -1
  763. package/.next/standalone/.next/static/chunks/app/api/usage/stream/route-ad4e2601ee308c36.js +0 -1
  764. package/.next/standalone/.next/static/chunks/app/api/v1/api/chat/route-ad4e2601ee308c36.js +0 -1
  765. package/.next/standalone/.next/static/chunks/app/api/v1/audio/speech/route-ad4e2601ee308c36.js +0 -1
  766. package/.next/standalone/.next/static/chunks/app/api/v1/chat/completions/route-ad4e2601ee308c36.js +0 -1
  767. package/.next/standalone/.next/static/chunks/app/api/v1/embeddings/route-ad4e2601ee308c36.js +0 -1
  768. package/.next/standalone/.next/static/chunks/app/api/v1/messages/count_tokens/route-ad4e2601ee308c36.js +0 -1
  769. package/.next/standalone/.next/static/chunks/app/api/v1/messages/route-ad4e2601ee308c36.js +0 -1
  770. package/.next/standalone/.next/static/chunks/app/api/v1/models/route-ad4e2601ee308c36.js +0 -1
  771. package/.next/standalone/.next/static/chunks/app/api/v1/responses/route-ad4e2601ee308c36.js +0 -1
  772. package/.next/standalone/.next/static/chunks/app/api/v1/route-ad4e2601ee308c36.js +0 -1
  773. package/.next/standalone/.next/static/chunks/app/api/v1beta/models/[...path]/route-ad4e2601ee308c36.js +0 -1
  774. package/.next/standalone/.next/static/chunks/app/api/v1beta/models/route-ad4e2601ee308c36.js +0 -1
  775. package/.next/standalone/.next/static/chunks/app/api/version/route-ad4e2601ee308c36.js +0 -1
  776. package/.next/standalone/.next/static/chunks/app/manifest.webmanifest/route-ad4e2601ee308c36.js +0 -1
  777. package/.next/standalone/.next/static/chunks/app/page-ad4e2601ee308c36.js +0 -1
  778. package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-ad4e2601ee308c36.js +0 -1
  779. package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-ad4e2601ee308c36.js +0 -1
  780. package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-ad4e2601ee308c36.js +0 -1
  781. package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-ad4e2601ee308c36.js +0 -1
  782. package/.next/standalone/.next/static/css/b18dfd2c9a0a7b49.css +0 -1
  783. package/.next/static/_6iT5puM28i82au_Z-Hj5/_buildManifest.js +0 -1
  784. package/.next/static/chunks/1321-d2153c50711f1db5.js +0 -1
  785. package/.next/static/chunks/2589-e33ccd63c1afc7ba.js +0 -3
  786. package/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-9187cde45715aa36.js +0 -17
  787. package/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-acbbfd33f5456170.js +0 -4
  788. package/.next/static/chunks/app/(dashboard)/dashboard/proxy-pools/page-2835717ff91f1727.js +0 -2
  789. package/.next/static/chunks/app/_global-error/page-ad4e2601ee308c36.js +0 -1
  790. package/.next/static/chunks/app/api/9remote/install/route-ad4e2601ee308c36.js +0 -1
  791. package/.next/static/chunks/app/api/9remote/start/route-ad4e2601ee308c36.js +0 -1
  792. package/.next/static/chunks/app/api/9remote/status/route-ad4e2601ee308c36.js +0 -1
  793. package/.next/static/chunks/app/api/antigravity-ide/route-ad4e2601ee308c36.js +0 -1
  794. package/.next/static/chunks/app/api/antigravity-tools/import/route-ad4e2601ee308c36.js +0 -1
  795. package/.next/static/chunks/app/api/antigravity-tools/import-refresh-tokens/route-ad4e2601ee308c36.js +0 -1
  796. package/.next/static/chunks/app/api/auth/login/route-ad4e2601ee308c36.js +0 -1
  797. package/.next/static/chunks/app/api/auth/logout/route-ad4e2601ee308c36.js +0 -1
  798. package/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-ad4e2601ee308c36.js +0 -1
  799. package/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-ad4e2601ee308c36.js +0 -1
  800. package/.next/static/chunks/app/api/cli-tools/claude-settings/route-ad4e2601ee308c36.js +0 -1
  801. package/.next/static/chunks/app/api/cli-tools/codex-settings/route-ad4e2601ee308c36.js +0 -1
  802. package/.next/static/chunks/app/api/cli-tools/copilot-settings/route-ad4e2601ee308c36.js +0 -1
  803. package/.next/static/chunks/app/api/cli-tools/droid-settings/route-ad4e2601ee308c36.js +0 -1
  804. package/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-ad4e2601ee308c36.js +0 -1
  805. package/.next/static/chunks/app/api/cli-tools/opencode-settings/route-ad4e2601ee308c36.js +0 -1
  806. package/.next/static/chunks/app/api/cloud/auth/route-ad4e2601ee308c36.js +0 -1
  807. package/.next/static/chunks/app/api/cloud/credentials/update/route-ad4e2601ee308c36.js +0 -1
  808. package/.next/static/chunks/app/api/cloud/model/resolve/route-ad4e2601ee308c36.js +0 -1
  809. package/.next/static/chunks/app/api/cloud/models/alias/route-ad4e2601ee308c36.js +0 -1
  810. package/.next/static/chunks/app/api/combos/[id]/route-ad4e2601ee308c36.js +0 -1
  811. package/.next/static/chunks/app/api/combos/route-ad4e2601ee308c36.js +0 -1
  812. package/.next/static/chunks/app/api/health/route-ad4e2601ee308c36.js +0 -1
  813. package/.next/static/chunks/app/api/init/route-ad4e2601ee308c36.js +0 -1
  814. package/.next/static/chunks/app/api/internal/request-detail/route-ad4e2601ee308c36.js +0 -1
  815. package/.next/static/chunks/app/api/internal/usage/route-ad4e2601ee308c36.js +0 -1
  816. package/.next/static/chunks/app/api/keys/[id]/route-ad4e2601ee308c36.js +0 -1
  817. package/.next/static/chunks/app/api/keys/route-ad4e2601ee308c36.js +0 -1
  818. package/.next/static/chunks/app/api/locale/route-ad4e2601ee308c36.js +0 -1
  819. package/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-ad4e2601ee308c36.js +0 -1
  820. package/.next/static/chunks/app/api/media-providers/tts/voices/route-ad4e2601ee308c36.js +0 -1
  821. package/.next/static/chunks/app/api/models/alias/route-ad4e2601ee308c36.js +0 -1
  822. package/.next/static/chunks/app/api/models/availability/route-ad4e2601ee308c36.js +0 -1
  823. package/.next/static/chunks/app/api/models/route-ad4e2601ee308c36.js +0 -1
  824. package/.next/static/chunks/app/api/models/test/route-ad4e2601ee308c36.js +0 -1
  825. package/.next/static/chunks/app/api/oauth/[provider]/[action]/route-ad4e2601ee308c36.js +0 -1
  826. package/.next/static/chunks/app/api/oauth/cursor/auto-import/route-ad4e2601ee308c36.js +0 -1
  827. package/.next/static/chunks/app/api/oauth/cursor/import/route-ad4e2601ee308c36.js +0 -1
  828. package/.next/static/chunks/app/api/oauth/gitlab/pat/route-ad4e2601ee308c36.js +0 -1
  829. package/.next/static/chunks/app/api/oauth/iflow/cookie/route-ad4e2601ee308c36.js +0 -1
  830. package/.next/static/chunks/app/api/oauth/kiro/auto-import/route-ad4e2601ee308c36.js +0 -1
  831. package/.next/static/chunks/app/api/oauth/kiro/import/route-ad4e2601ee308c36.js +0 -1
  832. package/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-ad4e2601ee308c36.js +0 -1
  833. package/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-ad4e2601ee308c36.js +0 -1
  834. package/.next/static/chunks/app/api/pricing/route-ad4e2601ee308c36.js +0 -1
  835. package/.next/static/chunks/app/api/provider-nodes/[id]/route-ad4e2601ee308c36.js +0 -1
  836. package/.next/static/chunks/app/api/provider-nodes/route-ad4e2601ee308c36.js +0 -1
  837. package/.next/static/chunks/app/api/provider-nodes/validate/route-ad4e2601ee308c36.js +0 -1
  838. package/.next/static/chunks/app/api/providers/[id]/models/route-ad4e2601ee308c36.js +0 -1
  839. package/.next/static/chunks/app/api/providers/[id]/route-ad4e2601ee308c36.js +0 -1
  840. package/.next/static/chunks/app/api/providers/[id]/test/route-ad4e2601ee308c36.js +0 -1
  841. package/.next/static/chunks/app/api/providers/[id]/test-models/route-ad4e2601ee308c36.js +0 -1
  842. package/.next/static/chunks/app/api/providers/client/route-ad4e2601ee308c36.js +0 -1
  843. package/.next/static/chunks/app/api/providers/kilo/free-models/route-ad4e2601ee308c36.js +0 -1
  844. package/.next/static/chunks/app/api/providers/route-ad4e2601ee308c36.js +0 -1
  845. package/.next/static/chunks/app/api/providers/test-batch/route-ad4e2601ee308c36.js +0 -1
  846. package/.next/static/chunks/app/api/providers/validate/route-ad4e2601ee308c36.js +0 -1
  847. package/.next/static/chunks/app/api/proxy-pools/[id]/route-ad4e2601ee308c36.js +0 -1
  848. package/.next/static/chunks/app/api/proxy-pools/[id]/test/route-ad4e2601ee308c36.js +0 -1
  849. package/.next/static/chunks/app/api/proxy-pools/route-ad4e2601ee308c36.js +0 -1
  850. package/.next/static/chunks/app/api/settings/database/route-ad4e2601ee308c36.js +0 -1
  851. package/.next/static/chunks/app/api/settings/proxy-test/route-ad4e2601ee308c36.js +0 -1
  852. package/.next/static/chunks/app/api/settings/require-login/route-ad4e2601ee308c36.js +0 -1
  853. package/.next/static/chunks/app/api/settings/route-ad4e2601ee308c36.js +0 -1
  854. package/.next/static/chunks/app/api/shutdown/route-ad4e2601ee308c36.js +0 -1
  855. package/.next/static/chunks/app/api/tags/route-ad4e2601ee308c36.js +0 -1
  856. package/.next/static/chunks/app/api/translator/console-logs/route-ad4e2601ee308c36.js +0 -1
  857. package/.next/static/chunks/app/api/translator/console-logs/stream/route-ad4e2601ee308c36.js +0 -1
  858. package/.next/static/chunks/app/api/translator/load/route-ad4e2601ee308c36.js +0 -1
  859. package/.next/static/chunks/app/api/translator/save/route-ad4e2601ee308c36.js +0 -1
  860. package/.next/static/chunks/app/api/translator/send/route-ad4e2601ee308c36.js +0 -1
  861. package/.next/static/chunks/app/api/translator/translate/route-ad4e2601ee308c36.js +0 -1
  862. package/.next/static/chunks/app/api/tunnel/disable/route-ad4e2601ee308c36.js +0 -1
  863. package/.next/static/chunks/app/api/tunnel/enable/route-ad4e2601ee308c36.js +0 -1
  864. package/.next/static/chunks/app/api/tunnel/status/route-ad4e2601ee308c36.js +0 -1
  865. package/.next/static/chunks/app/api/tunnel/tailscale-check/route-ad4e2601ee308c36.js +0 -1
  866. package/.next/static/chunks/app/api/tunnel/tailscale-disable/route-ad4e2601ee308c36.js +0 -1
  867. package/.next/static/chunks/app/api/tunnel/tailscale-enable/route-ad4e2601ee308c36.js +0 -1
  868. package/.next/static/chunks/app/api/tunnel/tailscale-install/route-ad4e2601ee308c36.js +0 -1
  869. package/.next/static/chunks/app/api/tunnel/tailscale-login/route-ad4e2601ee308c36.js +0 -1
  870. package/.next/static/chunks/app/api/tunnel/tailscale-start-daemon/route-ad4e2601ee308c36.js +0 -1
  871. package/.next/static/chunks/app/api/usage/[connectionId]/route-ad4e2601ee308c36.js +0 -1
  872. package/.next/static/chunks/app/api/usage/chart/route-ad4e2601ee308c36.js +0 -1
  873. package/.next/static/chunks/app/api/usage/history/route-ad4e2601ee308c36.js +0 -1
  874. package/.next/static/chunks/app/api/usage/logs/route-ad4e2601ee308c36.js +0 -1
  875. package/.next/static/chunks/app/api/usage/providers/route-ad4e2601ee308c36.js +0 -1
  876. package/.next/static/chunks/app/api/usage/request-details/route-ad4e2601ee308c36.js +0 -1
  877. package/.next/static/chunks/app/api/usage/request-logs/route-ad4e2601ee308c36.js +0 -1
  878. package/.next/static/chunks/app/api/usage/stats/route-ad4e2601ee308c36.js +0 -1
  879. package/.next/static/chunks/app/api/usage/stream/route-ad4e2601ee308c36.js +0 -1
  880. package/.next/static/chunks/app/api/v1/api/chat/route-ad4e2601ee308c36.js +0 -1
  881. package/.next/static/chunks/app/api/v1/audio/speech/route-ad4e2601ee308c36.js +0 -1
  882. package/.next/static/chunks/app/api/v1/chat/completions/route-ad4e2601ee308c36.js +0 -1
  883. package/.next/static/chunks/app/api/v1/embeddings/route-ad4e2601ee308c36.js +0 -1
  884. package/.next/static/chunks/app/api/v1/messages/count_tokens/route-ad4e2601ee308c36.js +0 -1
  885. package/.next/static/chunks/app/api/v1/messages/route-ad4e2601ee308c36.js +0 -1
  886. package/.next/static/chunks/app/api/v1/models/route-ad4e2601ee308c36.js +0 -1
  887. package/.next/static/chunks/app/api/v1/responses/route-ad4e2601ee308c36.js +0 -1
  888. package/.next/static/chunks/app/api/v1/route-ad4e2601ee308c36.js +0 -1
  889. package/.next/static/chunks/app/api/v1beta/models/[...path]/route-ad4e2601ee308c36.js +0 -1
  890. package/.next/static/chunks/app/api/v1beta/models/route-ad4e2601ee308c36.js +0 -1
  891. package/.next/static/chunks/app/api/version/route-ad4e2601ee308c36.js +0 -1
  892. package/.next/static/chunks/app/manifest.webmanifest/route-ad4e2601ee308c36.js +0 -1
  893. package/.next/static/chunks/app/page-ad4e2601ee308c36.js +0 -1
  894. package/.next/static/chunks/next/dist/client/components/builtin/app-error-ad4e2601ee308c36.js +0 -1
  895. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-ad4e2601ee308c36.js +0 -1
  896. package/.next/static/chunks/next/dist/client/components/builtin/not-found-ad4e2601ee308c36.js +0 -1
  897. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-ad4e2601ee308c36.js +0 -1
  898. package/.next/static/css/b18dfd2c9a0a7b49.css +0 -1
  899. /package/.next/standalone/.next/static/{_6iT5puM28i82au_Z-Hj5 → Gc4sf-VqQNgq0nElFAgkp}/_ssgManifest.js +0 -0
  900. /package/.next/static/{_6iT5puM28i82au_Z-Hj5 → Gc4sf-VqQNgq0nElFAgkp}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=412,exports.ids=[412],exports.modules={267:(a,b,c)=>{c.d(b,{default:()=>j});var d=c(48249),e=c(67484),f=c(74429),g=c(51126),h=c(99258);let i=a=>({en:{name:"English",flag:"\uD83C\uDDFA\uD83C\uDDF8"},vi:{name:"Tiếng Việt",flag:"\uD83C\uDDFB\uD83C\uDDF3"},"zh-CN":{name:"简体中文",flag:"\uD83C\uDDE8\uD83C\uDDF3"},"zh-TW":{name:"繁體中文",flag:"\uD83C\uDDF9\uD83C\uDDFC"},ja:{name:"日本語",flag:"\uD83C\uDDEF\uD83C\uDDF5"},"pt-BR":{name:"Portugu\xeas (Brasil)",flag:"\uD83C\uDDE7\uD83C\uDDF7"},"pt-PT":{name:"Portugu\xeas (Portugal)",flag:"\uD83C\uDDF5\uD83C\uDDF9"},ko:{name:"한국어",flag:"\uD83C\uDDF0\uD83C\uDDF7"},es:{name:"Espa\xf1ol",flag:"\uD83C\uDDEA\uD83C\uDDF8"},de:{name:"Deutsch",flag:"\uD83C\uDDE9\uD83C\uDDEA"},fr:{name:"Fran\xe7ais",flag:"\uD83C\uDDEB\uD83C\uDDF7"},he:{name:"עברית",flag:"\uD83C\uDDEE\uD83C\uDDF1"},ar:{name:"العربية",flag:"\uD83C\uDDF8\uD83C\uDDE6"},ru:{name:"Русский",flag:"\uD83C\uDDF7\uD83C\uDDFA"},pl:{name:"Polski",flag:"\uD83C\uDDF5\uD83C\uDDF1"},cs:{name:"Čeština",flag:"\uD83C\uDDE8\uD83C\uDDFF"},nl:{name:"Nederlands",flag:"\uD83C\uDDF3\uD83C\uDDF1"},tr:{name:"T\xfcrk\xe7e",flag:"\uD83C\uDDF9\uD83C\uDDF7"},uk:{name:"Українська",flag:"\uD83C\uDDFA\uD83C\uDDE6"},tl:{name:"Tagalog",flag:"\uD83C\uDDF5\uD83C\uDDED"},id:{name:"Indonesia",flag:"\uD83C\uDDEE\uD83C\uDDE9"},th:{name:"ไทย",flag:"\uD83C\uDDF9\uD83C\uDDED"},hi:{name:"हिन्दी",flag:"\uD83C\uDDEE\uD83C\uDDF3"},bn:{name:"বাংলা",flag:"\uD83C\uDDE7\uD83C\uDDE9"},ur:{name:"اردو",flag:"\uD83C\uDDF5\uD83C\uDDF0"},ro:{name:"Rom\xe2nă",flag:"\uD83C\uDDF7\uD83C\uDDF4"},sv:{name:"Svenska",flag:"\uD83C\uDDF8\uD83C\uDDEA"},it:{name:"Italiano",flag:"\uD83C\uDDEE\uD83C\uDDF9"},el:{name:"Ελληνικά",flag:"\uD83C\uDDEC\uD83C\uDDF7"},hu:{name:"Magyar",flag:"\uD83C\uDDED\uD83C\uDDFA"},fi:{name:"Suomi",flag:"\uD83C\uDDEB\uD83C\uDDEE"},da:{name:"Dansk",flag:"\uD83C\uDDE9\uD83C\uDDF0"},no:{name:"Norsk",flag:"\uD83C\uDDF3\uD83C\uDDF4"}})[a]||{name:a,flag:"\uD83C\uDF10"};function j({className:a=""}){let[b,c]=(0,e.useState)("en"),[k,l]=(0,e.useState)(!1),[m,n]=(0,e.useState)(!1),o=(0,e.useRef)(null),p=async a=>{if(a!==b&&!k){l(!0),n(!1);try{await fetch("/api/locale",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({locale:a})}),await (0,h.wn)(),c(a)}catch(a){console.error("Failed to set locale:",a)}finally{l(!1)}}};return(0,d.jsxs)("div",{className:a,children:[(0,d.jsxs)("button",{onClick:()=>n(!m),disabled:k,className:"flex items-center gap-2 px-3 py-2 rounded-lg text-text-muted hover:text-text-main hover:bg-surface/60 transition-colors",title:"Language","data-i18n-skip":"true",children:[(0,d.jsx)("span",{className:"text-xl",children:i(b).flag}),(0,d.jsx)("span",{className:"text-xs font-medium uppercase",children:b.split("-")[0]})]}),m&&(0,f.createPortal)((0,d.jsxs)("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-4","data-i18n-skip":"true",children:[(0,d.jsx)("div",{className:"absolute inset-0 bg-black/30 backdrop-blur-sm",onClick:()=>n(!1)}),(0,d.jsxs)("div",{ref:o,className:"relative w-full bg-surface border border-black/10 dark:border-white/10 rounded-xl shadow-2xl animate-in fade-in zoom-in-95 duration-200 max-w-2xl flex flex-col max-h-[80vh]",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between p-3 border-b border-black/5 dark:border-white/5",children:[(0,d.jsx)("h2",{className:"text-lg font-semibold text-text-main",children:"Select Language"}),(0,d.jsx)("button",{onClick:()=>n(!1),className:"p-1.5 rounded-lg text-text-muted hover:bg-black/5 dark:hover:bg-white/5 transition-colors","aria-label":"Close",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"close"})})]}),(0,d.jsx)("div",{className:"p-6 overflow-y-auto flex-1",children:(0,d.jsx)("div",{className:"grid grid-cols-[repeat(auto-fill,minmax(100px,1fr))] gap-2",children:g.YZ.map(a=>{let c=b===a,e=i(a);return(0,d.jsxs)("button",{onClick:()=>p(a),disabled:k,className:`flex flex-col items-center justify-start gap-1 px-2 py-3 rounded-lg text-xs font-medium transition-colors w-full ${c?"bg-primary/15 text-primary ring-2 ring-primary":"text-text-main hover:bg-black/5 dark:hover:bg-white/5"} ${k?"opacity-70 cursor-wait":""}`,title:e.name,children:[(0,d.jsx)("span",{className:"text-2xl",children:e.flag}),(0,d.jsx)("span",{className:"text-center leading-tight line-clamp-2 h-8 flex items-center",children:e.name}),c&&(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:"check"})]},a)})})})]})]}),document.body)]})}},4770:(a,b,c)=>{c.d(b,{default:()=>f});var d=c(48249),e=c(71404);function f({label:a,options:b=[],value:c,onChange:g,placeholder:h="Select an option",error:i,hint:j,disabled:k=!1,required:l=!1,className:m,selectClassName:n,...o}){return(0,d.jsxs)("div",{className:(0,e.cn)("flex flex-col gap-1.5",m),children:[a&&(0,d.jsxs)("label",{className:"text-sm font-medium text-text-main",children:[a,l&&(0,d.jsx)("span",{className:"text-red-500 ml-1",children:"*"})]}),(0,d.jsxs)("div",{className:"relative",children:[(0,d.jsxs)("select",{value:c,onChange:g,disabled:k,className:(0,e.cn)("w-full py-2 px-3 pr-10 text-sm text-text-main","bg-white dark:bg-white/5 border border-black/10 dark:border-white/10 rounded-md appearance-none","focus:ring-1 focus:ring-primary/30 focus:border-primary/50 focus:outline-none","transition-all disabled:opacity-50 disabled:cursor-not-allowed","text-[16px] sm:text-sm",i?"border-red-500 focus:border-red-500 focus:ring-red-500/20":"",n),...o,children:[(0,d.jsx)("option",{value:"",disabled:!0,children:h}),b.map(a=>(0,d.jsx)("option",{value:a.value,children:a.label},a.value))]}),(0,d.jsx)("div",{className:"absolute inset-y-0 right-0 flex items-center pr-3 pointer-events-none text-text-muted",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"expand_more"})})]}),i&&(0,d.jsxs)("p",{className:"text-xs text-red-500 flex items-center gap-1",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"error"}),i]}),j&&!i&&(0,d.jsx)("p",{className:"text-xs text-text-muted",children:j})]})}},5291:(a,b,c)=>{c.d(b,{default:()=>k});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(79346),i=c(86209),j=c(56110);function k({isOpen:a,providerInfo:b,onSuccess:c,onClose:f}){let[g,l]=(0,e.useState)(null),[m,n]=(0,e.useState)(null),[o,p]=(0,e.useState)(null),q=(0,e.useCallback)((a,b)=>{"builder-id"===a?l("builder-id"):"idc"===a?(l("idc"),p(b)):"social"===a?(l("social"),n(b.provider)):"import"===a&&c?.()},[c]),r=()=>{l(null),n(null),p(null)};return g?"builder-id"===g||"idc"===g?(0,d.jsx)(h.default,{isOpen:a,provider:"kiro",providerInfo:b,onSuccess:()=>{l(null),p(null),c?.(),f?.()},onClose:r,idcConfig:o}):"social"===g&&m?(0,d.jsx)(j.default,{isOpen:a,provider:m,onSuccess:()=>{l(null),n(null),c?.(),f?.()},onClose:r}):null:(0,d.jsx)(i.default,{isOpen:a,onMethodSelect:q,onClose:f})}k.propTypes={isOpen:g().bool.isRequired,providerInfo:g().shape({name:g().string}),onSuccess:g().func,onClose:g().func.isRequired}},17660:(a,b,c)=>{c.d(b,{default:()=>f});var d=c(48249),e=c(71404);function f({children:a,title:b,subtitle:c,icon:g,action:h,padding:i="md",hover:j=!1,className:k,...l}){return(0,d.jsxs)("div",{className:(0,e.cn)("bg-surface","border border-black/5 dark:border-white/5","rounded-lg shadow-sm",j&&"hover:shadow-md hover:border-primary/30 transition-all cursor-pointer",{none:"",xs:"p-3",sm:"p-4",md:"p-6",lg:"p-8"}[i],k),...l,children:[(b||h)&&(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[g&&(0,d.jsx)("div",{className:"p-2 rounded-lg bg-bg text-text-muted",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:g})}),(0,d.jsxs)("div",{children:[b&&(0,d.jsx)("h3",{className:"text-text-main font-semibold",children:b}),c&&(0,d.jsx)("p",{className:"text-sm text-text-muted",children:c})]})]}),h]}),a]})}f.Section=function({children:a,className:b,...c}){return(0,d.jsx)("div",{className:(0,e.cn)("p-4 rounded-lg","bg-black/[0.02] dark:bg-white/[0.02]","border border-black/5 dark:border-white/5",b),...c,children:a})},f.Row=function({children:a,className:b,...c}){return(0,d.jsx)("div",{className:(0,e.cn)("p-3 -mx-3 px-3 transition-colors","border-b border-black/5 dark:border-white/5 last:border-b-0","hover:bg-black/[0.02] dark:hover:bg-white/[0.02]",b),...c,children:a})},f.ListItem=function({children:a,actions:b,className:c,...f}){return(0,d.jsxs)("div",{className:(0,e.cn)("group flex items-center justify-between p-3 -mx-3 px-3","border-b border-black/[0.03] dark:border-white/[0.03] last:border-b-0","hover:bg-black/[0.02] dark:hover:bg-white/[0.02]","transition-colors",c),...f,children:[(0,d.jsx)("div",{className:"flex-1 min-w-0",children:a}),b&&(0,d.jsx)("div",{className:"flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:b})]})}},25175:(a,b,c)=>{c.d(b,{default:()=>p});var d=c(48249),e=c(67484),f=c(74429);let g="checking",h="not_installed",i="not_running",j="installing",k="starting",l="running",m="error",n=[{icon:"terminal",label:"Terminal",desc:"Full shell access"},{icon:"cast",label:"Desktop",desc:"Screen sharing"},{icon:"folder_open",label:"Files",desc:"Browse & edit files"}],o=[{icon:"qr_code_scanner",text:"Scan QR to connect instantly"},{icon:"wifi_off",text:"No port forwarding needed"},{icon:"devices",text:"Works on any device"}];function p({isOpen:a,onClose:b,onInstalled:c}){let[q,r]=(0,e.useState)(g),[s,t]=(0,e.useState)(""),u=(0,e.useRef)(null),v=(0,e.useCallback)(()=>{u.current&&(clearTimeout(u.current),u.current=null);let a=Date.now(),b=async()=>{if(Date.now()-a>6e4){r(m),t("9Remote is taking too long to start. Try running `9remote ui` manually.");return}try{let a=await fetch("/api/9remote/status");if((await a.json()).running)return void r(l)}catch{}u.current=setTimeout(b,2e3)};b()},[]),w=(0,e.useCallback)(async()=>{r(g),t("");try{let a=await fetch("/api/9remote/status"),b=await a.json();if(b.running)return void r(l);if(!b.installed)return void r(h);r(i)}catch(a){r(m),t(a.message)}},[]),x=(0,e.useCallback)(async()=>{r(k);try{if(!(await fetch("/api/9remote/start",{method:"POST"})).ok)throw Error("Failed to start 9Remote");v()}catch(a){r(m),t(a.message)}},[v]),y=async()=>{r(j),t("");try{let a=await fetch("/api/9remote/install",{method:"POST"});if(!a.ok){let b=await a.json();throw Error(b.error||"Install failed")}c?.(),await x()}catch(a){r(m),t(a.message)}};if(!a)return null;let z={[h]:{label:"Install 9Remote",icon:"download",onClick:y,loading:!1},[j]:{label:"Installing...",icon:"hourglass_top",onClick:null,loading:!0},[i]:{label:"Start 9Remote",icon:"play_arrow",onClick:x,loading:!1},[k]:{label:"Starting...",icon:"hourglass_top",onClick:null,loading:!0},[g]:{label:"Checking...",icon:"hourglass_top",onClick:null,loading:!0}}[q];return q===l?(0,f.createPortal)((0,d.jsxs)("div",{className:"fixed inset-0 z-[9999] flex items-center justify-center p-4",children:[(0,d.jsx)("div",{className:"absolute inset-0 bg-black/60 backdrop-blur-sm",onClick:b}),(0,d.jsx)("div",{className:"relative rounded-xl overflow-hidden shadow-2xl animate-in fade-in zoom-in-95 duration-200",style:{width:480,height:"90vh"},children:(0,d.jsx)("iframe",{src:"http://localhost:2208",className:"border-0 block w-full h-full",title:"9Remote UI"})})]}),document.body):q===m?(0,f.createPortal)((0,d.jsxs)("div",{className:"fixed inset-0 z-[9999] flex items-center justify-center p-4",children:[(0,d.jsx)("div",{className:"absolute inset-0 bg-black/60 backdrop-blur-sm",onClick:b}),(0,d.jsxs)("div",{className:"relative w-full max-w-sm rounded-xl overflow-hidden shadow-2xl bg-surface border border-black/10 dark:border-white/10 animate-in fade-in zoom-in-95 duration-200",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between px-5 py-4 border-b border-black/5 dark:border-white/5",children:[(0,d.jsx)("span",{className:"text-sm font-semibold text-text-main",children:"9Remote"}),(0,d.jsx)("button",{onClick:b,className:"w-7 h-7 flex items-center justify-center rounded-lg bg-black/5 dark:bg-white/5 border border-black/5 dark:border-white/10 text-text-muted hover:text-text-main transition-colors",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-base",children:"close"})})]}),(0,d.jsxs)("div",{className:"flex flex-col items-center gap-5 py-12 px-6 text-center",children:[(0,d.jsx)("div",{className:"w-14 h-14 rounded-full bg-red-500/10 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-red-400 text-[28px]",children:"error"})}),(0,d.jsxs)("div",{className:"space-y-1",children:[(0,d.jsx)("p",{className:"font-semibold text-text-main",children:"Something went wrong"}),(0,d.jsx)("p",{className:"text-xs text-text-muted font-mono break-all",children:s})]}),(0,d.jsxs)("button",{onClick:w,className:"flex items-center gap-2 px-4 py-2 rounded-lg bg-black/5 dark:bg-white/5 border border-black/5 dark:border-white/10 text-sm text-text-main hover:bg-black/10 dark:hover:bg-white/10 transition-colors",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-base",children:"refresh"}),"Retry"]})]})]})]}),document.body):(0,f.createPortal)((0,d.jsxs)("div",{className:"fixed inset-0 z-[9999] flex items-center justify-center p-4",children:[(0,d.jsx)("div",{className:"absolute inset-0 bg-black/60 backdrop-blur-sm",onClick:b}),(0,d.jsxs)("div",{className:"relative w-full max-w-sm rounded-xl overflow-hidden shadow-2xl animate-in fade-in zoom-in-95 duration-200 flex flex-col bg-surface border border-black/10 dark:border-white/10",style:{minHeight:"90vh"},children:[(0,d.jsxs)("div",{className:"flex items-center justify-between px-5 py-4 border-b border-black/5 dark:border-white/5",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)("div",{className:"w-7 h-7 rounded-lg flex items-center justify-center",style:{background:"#FF570A"},children:(0,d.jsx)("span",{className:"material-symbols-outlined text-white text-base",children:"terminal"})}),(0,d.jsx)("span",{className:"text-xs font-bold uppercase tracking-wider",style:{fontFamily:"monospace",color:"#FF570A"},children:"9Remote"})]}),(0,d.jsx)("button",{onClick:b,className:"w-7 h-7 flex items-center justify-center rounded-lg bg-black/5 dark:bg-white/5 border border-black/5 dark:border-white/10 text-text-muted hover:text-text-main transition-colors",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-base",children:"close"})})]}),(0,d.jsxs)("div",{className:"px-7 py-7 pb-9 flex flex-col flex-1 justify-between",children:[(0,d.jsxs)("div",{className:"flex flex-col items-center gap-2 text-center mt-2",children:[(0,d.jsx)("div",{className:"w-14 h-14 rounded-2xl flex items-center justify-center mb-1",style:{background:"#FF570A",boxShadow:"rgba(255,87,10,0.35) 0px 8px 32px"},children:(0,d.jsx)("span",{className:"material-symbols-outlined text-white",style:{fontSize:30},children:"terminal"})}),(0,d.jsx)("h1",{className:"text-lg font-bold text-text-main tracking-tight",children:"9Remote"}),(0,d.jsx)("p",{className:"text-xs text-text-muted leading-5 max-w-[220px]",children:"Access your terminal, desktop & files from anywhere"})]}),(0,d.jsx)("div",{className:"flex gap-2 w-full mt-6",children:n.map(({icon:a,label:b,desc:c})=>(0,d.jsxs)("div",{className:"flex-1 flex flex-col items-center gap-1.5 py-4 px-1 rounded-xl border border-black/10 dark:border-white/10 bg-bg-alt",children:[(0,d.jsx)("span",{className:"material-symbols-outlined",style:{fontSize:22,color:"#ff6e33"},children:a}),(0,d.jsx)("p",{className:"text-xs font-semibold text-text-main",children:b}),(0,d.jsx)("p",{className:"text-[10px] text-text-muted text-center leading-4",children:c})]},b))}),(0,d.jsx)("div",{className:"flex flex-col gap-3 w-full mt-5",children:o.map(({icon:a,text:b})=>(0,d.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,d.jsx)("span",{className:"material-symbols-outlined flex-shrink-0",style:{fontSize:16,color:"#ff6e33"},children:a}),(0,d.jsx)("span",{className:"text-xs text-text-muted",children:b})]},a))}),z&&(0,d.jsxs)("button",{onClick:z.onClick??void 0,disabled:z.loading,className:`mt-7 w-full py-3.5 flex items-center justify-center gap-2 text-sm font-semibold text-white rounded-xl transition-all ${z.loading?"opacity-60 cursor-not-allowed":"hover:opacity-90 active:scale-[0.98]"}`,style:{background:"#FF570A",boxShadow:z.loading?"none":"0 4px 16px rgba(255,87,10,0.35)"},children:[z.loading?(0,d.jsxs)("span",{className:"flex items-center gap-1",children:[(0,d.jsx)("span",{className:"w-1.5 h-1.5 rounded-full bg-white animate-bounce",style:{animationDelay:"0ms"}}),(0,d.jsx)("span",{className:"w-1.5 h-1.5 rounded-full bg-white animate-bounce",style:{animationDelay:"150ms"}}),(0,d.jsx)("span",{className:"w-1.5 h-1.5 rounded-full bg-white animate-bounce",style:{animationDelay:"300ms"}})]}):(0,d.jsx)("span",{className:"material-symbols-outlined text-base",children:z.icon}),z.label]})]})]})]}),document.body)}},25919:(a,b,c)=>{c.d(b,{default:()=>f});var d=c(48249),e=c(71404);function f({src:a,alt:b="Avatar",name:c,size:g="md",className:h}){let i={xs:"size-6 text-xs",sm:"size-8 text-sm",md:"size-10 text-base",lg:"size-12 text-lg",xl:"size-16 text-xl"};return a?(0,d.jsx)("div",{className:(0,e.cn)("rounded-full bg-cover bg-center bg-no-repeat","ring-2 ring-white dark:ring-surface-dark shadow-sm",i[g],h),style:{backgroundImage:`url(${a})`},role:"img","aria-label":b}):(0,d.jsx)("div",{className:(0,e.cn)("rounded-full flex items-center justify-center font-semibold text-white","ring-2 ring-white dark:ring-surface-dark shadow-sm",i[g],(a=>{if(!a)return"bg-primary";let b=["bg-red-500","bg-orange-500","bg-amber-500","bg-yellow-500","bg-lime-500","bg-green-500","bg-emerald-500","bg-teal-500","bg-cyan-500","bg-sky-500","bg-blue-500","bg-indigo-500","bg-violet-500","bg-purple-500","bg-fuchsia-500","bg-pink-500","bg-rose-500"],c=a.charCodeAt(0)%b.length;return b[c]})(c),h),role:"img","aria-label":b,children:(a=>{if(!a)return"?";let b=a.split(" ");return b.length>=2?`${b[0][0]}${b[1][0]}`.toUpperCase():a.substring(0,2).toUpperCase()})(c)})}},29370:(a,b,c)=>{c.d(b,{default:()=>j});var d=c(48249),e=c(67484),f=c(74429);let g=[{icon:"terminal",label:"Terminal",desc:"Full shell access"},{icon:"cast",label:"Desktop",desc:"Screen sharing"},{icon:"folder_open",label:"Files",desc:"Browse & edit files"}],h=[{icon:"qr_code_scanner",text:"Scan QR to connect instantly"},{icon:"wifi_off",text:"No port forwarding needed"},{icon:"devices",text:"Works on any device"}];function i({isOpen:a,onClose:b}){return a?(0,f.createPortal)((0,d.jsxs)("div",{className:"fixed inset-0 z-[9999] flex items-center justify-center p-4",children:[(0,d.jsx)("div",{className:"absolute inset-0 bg-black/60 backdrop-blur-sm",onClick:b}),(0,d.jsxs)("div",{className:"relative w-full max-w-sm rounded-xl overflow-hidden shadow-2xl animate-in fade-in zoom-in-95 duration-200 flex flex-col bg-surface border border-black/10 dark:border-white/10",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between px-5 py-4 border-b border-black/5 dark:border-white/5",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)("div",{className:"w-7 h-7 rounded-lg flex items-center justify-center",style:{background:"#FF570A"},children:(0,d.jsx)("span",{className:"material-symbols-outlined text-white text-base",children:"terminal"})}),(0,d.jsx)("span",{className:"text-xs font-bold uppercase tracking-wider",style:{fontFamily:"monospace",color:"#FF570A"},children:"9Remote"})]}),(0,d.jsx)("button",{onClick:b,className:"w-7 h-7 flex items-center justify-center rounded-lg bg-black/5 dark:bg-white/5 border border-black/5 dark:border-white/10 text-text-muted hover:text-text-main transition-colors",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-base",children:"close"})})]}),(0,d.jsxs)("div",{className:"px-7 py-7 pb-9 flex flex-col gap-6",children:[(0,d.jsxs)("div",{className:"flex flex-col items-center gap-2 text-center mt-2",children:[(0,d.jsx)("div",{className:"w-14 h-14 rounded-2xl flex items-center justify-center mb-1",style:{background:"#FF570A",boxShadow:"rgba(255,87,10,0.35) 0px 8px 32px"},children:(0,d.jsx)("span",{className:"material-symbols-outlined text-white",style:{fontSize:30},children:"terminal"})}),(0,d.jsx)("h1",{className:"text-lg font-bold text-text-main tracking-tight",children:"9Remote"}),(0,d.jsx)("p",{className:"text-xs text-text-muted leading-5 max-w-[220px]",children:"Access your terminal, desktop & files from anywhere"})]}),(0,d.jsx)("div",{className:"flex gap-2 w-full",children:g.map(({icon:a,label:b,desc:c})=>(0,d.jsxs)("div",{className:"flex-1 flex flex-col items-center gap-1.5 py-4 px-1 rounded-xl border border-black/10 dark:border-white/10 bg-bg-alt",children:[(0,d.jsx)("span",{className:"material-symbols-outlined",style:{fontSize:22,color:"#ff6e33"},children:a}),(0,d.jsx)("p",{className:"text-xs font-semibold text-text-main",children:b}),(0,d.jsx)("p",{className:"text-[10px] text-text-muted text-center leading-4",children:c})]},b))}),(0,d.jsx)("div",{className:"flex flex-col gap-3 w-full",children:h.map(({icon:a,text:b})=>(0,d.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,d.jsx)("span",{className:"material-symbols-outlined flex-shrink-0",style:{fontSize:16,color:"#ff6e33"},children:a}),(0,d.jsx)("span",{className:"text-xs text-text-muted",children:b})]},a))}),(0,d.jsxs)("button",{onClick:()=>window.open("https://9remote.cc","_blank"),className:"w-full py-3.5 flex items-center justify-center gap-2 text-sm font-semibold text-white rounded-xl hover:opacity-90 active:scale-[0.98] transition-all",style:{background:"#FF570A",boxShadow:"0 4px 16px rgba(255,87,10,0.35)"},children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-base",children:"open_in_new"}),"Get 9Remote"]})]})]})]}),document.body):null}function j(){let[a,b]=(0,e.useState)(!1);return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("button",{onClick:()=>b(!0),className:"relative flex items-center gap-1.5 px-2.5 py-1.5 rounded-lg transition-all text-text-muted hover:text-text-main hover:bg-black/5 dark:hover:bg-white/5",title:"9Remote",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"computer"}),(0,d.jsx)("span",{className:"text-xs font-medium",children:"Remote"})]}),(0,d.jsx)(i,{isOpen:a,onClose:()=>b(!1)})]})}},32971:(a,b,c)=>{c.d(b,{default:()=>e});var d=c(48249);function e({text:a,children:b,position:c="top"}){return(0,d.jsxs)("div",{className:"relative inline-flex group",children:[b,(0,d.jsx)("div",{className:`pointer-events-none absolute ${{top:"bottom-full left-1/2 -translate-x-1/2 mb-1.5",bottom:"top-full left-1/2 -translate-x-1/2 mt-1.5",left:"right-full top-1/2 -translate-y-1/2 mr-1.5",right:"left-full top-1/2 -translate-y-1/2 ml-1.5"}[c]} z-50 w-max max-w-56 rounded px-2 py-1 text-[11px] leading-snug bg-gray-900 text-white opacity-0 group-hover:opacity-100 transition-opacity duration-150 whitespace-normal`,children:a})]})}},39645:(a,b,c)=>{c.d(b,{default:()=>h});var d=c(48249),e=c(67484),f=c(95145),g=c(99070);function h({isOpen:a,onClose:b,title:c="Manual Configuration",configs:i=[]}){let[j,k]=(0,e.useState)(null),l=async(a,b)=>{try{await navigator.clipboard.writeText(a),k(b),setTimeout(()=>k(null),2e3)}catch(a){console.log("Failed to copy:",a)}};return(0,d.jsx)(f.default,{isOpen:a,onClose:b,title:c,size:"xl",children:(0,d.jsx)("div",{className:"flex flex-col gap-4",children:i.map((a,b)=>(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("span",{className:"text-sm font-medium text-text-main",children:a.filename}),(0,d.jsxs)(g.default,{variant:"ghost",size:"sm",onClick:()=>l(a.content,b),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:j===b?"check":"content_copy"}),j===b?"Copied!":"Copy"]})]}),(0,d.jsx)("pre",{className:"px-3 py-2 bg-black/5 dark:bg-white/5 rounded font-mono text-xs overflow-x-auto whitespace-pre-wrap break-all max-h-60 overflow-y-auto border border-border",children:a.content})]},b))})})}},41371:(a,b,c)=>{c.d(b,{i:()=>f});var d=c(31417);let e=0,f=(0,d.v)((a,b)=>({notifications:[],addNotification:c=>{let d=++e,f={id:d,type:c.type||"info",message:c.message,title:c.title||null,duration:c.duration??5e3,dismissible:c.dismissible??!0,createdAt:Date.now()};return a(a=>({notifications:[...a.notifications,f]})),f.duration>0&&setTimeout(()=>b().removeNotification(d),f.duration),d},removeNotification:b=>{a(a=>({notifications:a.notifications.filter(a=>a.id!==b)}))},clearAll:()=>a({notifications:[]}),success:(a,c)=>b().addNotification({type:"success",message:a,title:c}),error:(a,c)=>b().addNotification({type:"error",message:a,title:c,duration:8e3}),warning:(a,c)=>b().addNotification({type:"warning",message:a,title:c}),info:(a,c)=>b().addNotification({type:"info",message:a,title:c})}))},42118:(a,b,c)=>{c.d(b,{D:()=>i});var d=c(67484),e=c(13033);function f(a){return()=>{}}function g(){return!1}function h(){return!1}function i(){let{theme:a,setTheme:b,toggleTheme:c,initTheme:i}=(0,e.A)(),j=(0,d.useSyncExternalStore)(f,g,h);return{theme:a,setTheme:b,toggleTheme:c,isDark:"dark"===a||"system"===a&&j}}},42196:(a,b,c)=>{c.d(b,{default:()=>t});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(2116),i=c.n(h),j=c(19099),k=c(71404),l=c(12020),m=c(96919),n=c(99070),o=c(95145);let p=["embedding","tts"],q=[{href:"/dashboard/endpoint",label:"Endpoint",icon:"api"},{href:"/dashboard/providers",label:"Providers",icon:"dns"},{href:"/dashboard/combos",label:"Combos",icon:"layers"},{href:"/dashboard/usage",label:"Usage",icon:"bar_chart"},{href:"/dashboard/quota",label:"Quota Tracker",icon:"data_usage"},{href:"/dashboard/mitm",label:"MITM",icon:"security"},{href:"/dashboard/cli-tools",label:"CLI Tools",icon:"terminal"}],r=[{href:"/dashboard/console-log",label:"Console Log",icon:"terminal"},{href:"/dashboard/translator",label:"Translator",icon:"translate"}],s=[{href:"/dashboard/proxy-pools",label:"Proxy Pools",icon:"lan"}];function t({onClose:a}){let b=(0,j.usePathname)(),[c,f]=(0,e.useState)(!1),[g,h]=(0,e.useState)(!1),[u,v]=(0,e.useState)(!1),[w,x]=(0,e.useState)(!1),[y,z]=(0,e.useState)(null),[A,B]=(0,e.useState)(!1),C=a=>"/dashboard/endpoint"===a?"/dashboard"===b||b.startsWith("/dashboard/endpoint"):b.startsWith(a),D=async()=>{v(!0);try{await fetch("/api/shutdown",{method:"POST"})}catch(a){}v(!1),h(!1),x(!0)};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("aside",{className:"flex w-72 flex-col border-r border-black/5 dark:border-white/5 bg-vibrancy backdrop-blur-xl transition-colors duration-300 min-h-full",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 px-6 pt-5 pb-2",children:[(0,d.jsx)("div",{className:"w-3 h-3 rounded-full bg-[#FF5F56]"}),(0,d.jsx)("div",{className:"w-3 h-3 rounded-full bg-[#FFBD2E]"}),(0,d.jsx)("div",{className:"w-3 h-3 rounded-full bg-[#27C93F]"})]}),(0,d.jsxs)("div",{className:"px-6 py-4 flex flex-col gap-2",children:[(0,d.jsxs)(i(),{href:"/dashboard",className:"flex items-center gap-3",children:[(0,d.jsx)("div",{className:"flex items-center justify-center size-9 rounded bg-linear-to-br from-[#f97815] to-[#c2590a]",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-white text-[20px]",children:"hub"})}),(0,d.jsxs)("div",{className:"flex flex-col",children:[(0,d.jsx)("h1",{className:"text-lg font-semibold tracking-tight text-text-main",children:l.vQ.name}),(0,d.jsxs)("span",{className:"text-xs text-text-muted",children:["v",l.vQ.version]})]})]}),y&&(0,d.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,d.jsxs)("span",{className:"text-xs font-semibold text-green-600 dark:text-amber-500",children:["↑ New version available: v",y.latestVersion]}),(0,d.jsx)("code",{className:"text-[10px] text-green-600/80 dark:text-amber-400/70 font-mono select-all",children:"npm install -g 9router@latest"})]})]}),(0,d.jsxs)("nav",{className:"flex-1 px-4 py-2 space-y-1 overflow-y-auto custom-scrollbar",children:[q.map(b=>(0,d.jsxs)(i(),{href:b.href,onClick:a,className:(0,k.cn)("flex items-center gap-3 px-4 py-2 rounded-lg transition-all group",C(b.href)?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface/50 hover:text-text-main"),children:[(0,d.jsx)("span",{className:(0,k.cn)("material-symbols-outlined text-[18px]",C(b.href)?"fill-1":"group-hover:text-primary transition-colors"),children:b.icon}),(0,d.jsx)("span",{className:"text-sm font-medium",children:b.label})]},b.href)),(0,d.jsxs)("div",{className:"pt-4 mt-2",children:[(0,d.jsx)("p",{className:"px-4 text-xs font-semibold text-text-muted/60 uppercase tracking-wider mb-2",children:"System"}),(0,d.jsxs)("button",{onClick:()=>f(a=>!a),className:(0,k.cn)("w-full flex items-center gap-3 px-4 py-2 rounded-lg transition-all group",b.startsWith("/dashboard/media-providers")?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface/50 hover:text-text-main"),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"perm_media"}),(0,d.jsx)("span",{className:"text-sm font-medium flex-1 text-left",children:"Media Providers"}),(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] transition-transform",style:{transform:c?"rotate(180deg)":"rotate(0deg)"},children:"expand_more"})]}),c&&(0,d.jsx)("div",{className:"pl-4",children:m.rj.filter(a=>p.includes(a.id)).map(c=>(0,d.jsxs)(i(),{href:`/dashboard/media-providers/${c.id}`,onClick:a,className:(0,k.cn)("flex items-center gap-3 px-4 py-1.5 rounded-lg transition-all group",b.startsWith(`/dashboard/media-providers/${c.id}`)?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface/50 hover:text-text-main"),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:c.icon}),(0,d.jsx)("span",{className:"text-sm",children:c.label})]},c.id))}),s.map(b=>(0,d.jsxs)(i(),{href:b.href,onClick:a,className:(0,k.cn)("flex items-center gap-3 px-4 py-2 rounded-lg transition-all group",C(b.href)?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface/50 hover:text-text-main"),children:[(0,d.jsx)("span",{className:(0,k.cn)("material-symbols-outlined text-[18px]",C(b.href)?"fill-1":"group-hover:text-primary transition-colors"),children:b.icon}),(0,d.jsx)("span",{className:"text-sm font-medium",children:b.label})]},b.href)),r.map(b=>"/dashboard/translator"!==b.href||A?(0,d.jsxs)(i(),{href:b.href,onClick:a,className:(0,k.cn)("flex items-center gap-3 px-4 py-2 rounded-lg transition-all group",C(b.href)?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface/50 hover:text-text-main"),children:[(0,d.jsx)("span",{className:(0,k.cn)("material-symbols-outlined text-[18px]",C(b.href)?"fill-1":"group-hover:text-primary transition-colors"),children:b.icon}),(0,d.jsx)("span",{className:"text-sm font-medium",children:b.label})]},b.href):null),(0,d.jsxs)(i(),{href:"/dashboard/profile",onClick:a,className:(0,k.cn)("flex items-center gap-3 px-4 py-2 rounded-lg transition-all group",C("/dashboard/profile")?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface/50 hover:text-text-main"),children:[(0,d.jsx)("span",{className:(0,k.cn)("material-symbols-outlined text-[18px]",C("/dashboard/profile")?"fill-1":"group-hover:text-primary transition-colors"),children:"settings"}),(0,d.jsx)("span",{className:"text-sm font-medium",children:"Settings"})]})]})]}),(0,d.jsx)("div",{className:"p-3 border-t border-black/5 dark:border-white/5",children:(0,d.jsx)(n.default,{variant:"outline",fullWidth:!0,icon:"power_settings_new",onClick:()=>h(!0),className:"text-red-500 border-red-200 hover:bg-red-50 hover:border-red-300",children:"Shutdown"})})]}),(0,d.jsx)(o.ConfirmModal,{isOpen:g,onClose:()=>h(!1),onConfirm:D,title:"Close Proxy",message:"Are you sure you want to close the proxy server?",confirmText:"Close",cancelText:"Cancel",variant:"danger",loading:u}),w&&(0,d.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/80 backdrop-blur-sm",children:(0,d.jsxs)("div",{className:"text-center p-8",children:[(0,d.jsx)("div",{className:"flex items-center justify-center size-16 rounded-full bg-red-500/20 text-red-500 mx-auto mb-4",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[32px]",children:"power_off"})}),(0,d.jsx)("h2",{className:"text-xl font-semibold text-white mb-2",children:"Server Disconnected"}),(0,d.jsx)("p",{className:"text-text-muted mb-6",children:"The proxy server has been stopped."}),(0,d.jsx)(n.default,{variant:"secondary",onClick:()=>globalThis.location.reload(),children:"Reload Page"})]})})]})}t.propTypes={onClose:g().func}},43182:(a,b,c)=>{c.d(b,{default:()=>j});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(50412);let i="https://gitlab.com";function j({isOpen:a,providerInfo:b,onSuccess:c,onClose:f}){let[g,k]=(0,e.useState)(null),[l,m]=(0,e.useState)(i),[n,o]=(0,e.useState)(""),[p,q]=(0,e.useState)(""),[r,s]=(0,e.useState)(""),[t,u]=(0,e.useState)(!1),[v,w]=(0,e.useState)(null),[x,y]=(0,e.useState)(!1),[z,A]=(0,e.useState)(null),B=()=>{k(null),m(i),o(""),q(""),s(""),w(null),u(!1),y(!1),A(null),f()},C=async()=>{if(!r.trim())return void w("Personal Access Token is required");u(!0),w(null);try{let a=await fetch("/api/oauth/gitlab/pat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:r.trim(),baseUrl:l.trim()||i})}),b=await a.json();if(!a.ok)throw Error(b.error||"Authentication failed");c?.(),B()}catch(a){w(a.message)}finally{u(!1)}};return a?x&&z?(0,d.jsx)(h.LF,{isOpen:!0,provider:"gitlab",providerInfo:b,oauthMeta:z,onSuccess:()=>{c?.(),B()},onClose:()=>{y(!1),A(null)}}):(0,d.jsx)(h.aF,{isOpen:a,title:"Connect GitLab Duo",onClose:B,size:"lg",children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[!g&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Choose how to authenticate with GitLab Duo:"}),(0,d.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,d.jsxs)("button",{onClick:()=>k("oauth"),className:"flex flex-col items-center gap-2 p-4 rounded-lg border border-border hover:border-primary hover:bg-primary/5 transition-colors text-left",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-2xl text-primary",children:"lock_open"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium",children:"OAuth App"}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:"Use a GitLab OAuth application"})]})]}),(0,d.jsxs)("button",{onClick:()=>k("pat"),className:"flex flex-col items-center gap-2 p-4 rounded-lg border border-border hover:border-primary hover:bg-primary/5 transition-colors text-left",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-2xl text-primary",children:"key"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium",children:"Personal Access Token"}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:"Use a GitLab PAT with api scope"})]})]})]})]}),"oauth"===g&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("p",{className:"text-xs text-text-muted",children:["Create an OAuth app at"," ",(0,d.jsx)("a",{href:`${l.trim()||i}/-/profile/applications`,target:"_blank",rel:"noreferrer",className:"text-primary underline",children:"GitLab Applications"})," ","with redirect URI"," ",(0,d.jsx)("code",{className:"bg-sidebar px-1 rounded text-xs",children:"http://localhost/callback"})]}),(0,d.jsx)(h.pd,{label:"GitLab Base URL",value:l,onChange:a=>m(a.target.value),placeholder:i}),(0,d.jsx)(h.pd,{label:"Client ID",value:n,onChange:a=>o(a.target.value),placeholder:"Your OAuth application client ID"}),(0,d.jsx)(h.pd,{label:"Client Secret (optional for PKCE)",value:p,onChange:a=>q(a.target.value),placeholder:"Leave empty for public PKCE app"}),v&&(0,d.jsx)("p",{className:"text-sm text-red-500",children:v}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:()=>{n.trim()?(w(null),A({baseUrl:l.trim()||i,clientId:n.trim(),clientSecret:p.trim()}),y(!0)):w("Client ID is required")},fullWidth:!0,disabled:!n.trim(),children:"Authorize"}),(0,d.jsx)(h.$n,{onClick:()=>{k(null),w(null)},variant:"ghost",fullWidth:!0,children:"Back"})]})]}),"pat"===g&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("p",{className:"text-xs text-text-muted",children:["Create a PAT at"," ",(0,d.jsx)("a",{href:`${l.trim()||i}/-/user_settings/personal_access_tokens`,target:"_blank",rel:"noreferrer",className:"text-primary underline",children:"GitLab Access Tokens"})," ","with scopes: ",(0,d.jsx)("code",{className:"bg-sidebar px-1 rounded text-xs",children:"api"}),","," ",(0,d.jsx)("code",{className:"bg-sidebar px-1 rounded text-xs",children:"read_user"}),", and"," ",(0,d.jsx)("code",{className:"bg-sidebar px-1 rounded text-xs",children:"ai_features"}),"."]}),(0,d.jsx)(h.pd,{label:"GitLab Base URL",value:l,onChange:a=>m(a.target.value),placeholder:i}),(0,d.jsx)(h.pd,{label:"Personal Access Token",value:r,onChange:a=>s(a.target.value),placeholder:"glpat-xxxxxxxxxxxxxxxxxxxx",type:"password"}),v&&(0,d.jsx)("p",{className:"text-sm text-red-500",children:v}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:C,fullWidth:!0,disabled:!r.trim()||t,loading:t,children:"Connect"}),(0,d.jsx)(h.$n,{onClick:()=>{k(null),w(null)},variant:"ghost",fullWidth:!0,children:"Back"})]})]})]})}):null}j.propTypes={isOpen:g().bool.isRequired,providerInfo:g().shape({name:g().string}),onSuccess:g().func,onClose:g().func.isRequired}},48781:(a,b,c)=>{c.d(b,{default:()=>k});var d=c(48249),e=c(2116),f=c.n(e),g=c(12020);let h=[{label:"Features",href:"#features"},{label:"Pricing",href:"#pricing"},{label:"Changelog",href:"#"}],i=[{label:"Documentation",href:"#"},{label:"API Reference",href:"#"},{label:"Help Center",href:"#"}],j=[{label:"About",href:"#"},{label:"Blog",href:"#"},{label:"Contact",href:"#"}];function k(){return(0,d.jsx)("footer",{className:"bg-bg border-t border-border pt-16 pb-12",children:(0,d.jsxs)("div",{className:"container mx-auto px-4 sm:px-6 lg:px-8",children:[(0,d.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 lg:grid-cols-5 gap-10 mb-12",children:[(0,d.jsxs)("div",{className:"col-span-2 lg:col-span-2",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 mb-6",children:[(0,d.jsx)("div",{className:"size-6 text-primary",children:(0,d.jsx)("svg",{className:"w-full h-full",fill:"currentColor",viewBox:"0 0 48 48",children:(0,d.jsx)("path",{clipRule:"evenodd",d:"M12.0799 24L4 19.2479L9.95537 8.75216L18.04 13.4961L18.0446 4H29.9554L29.96 13.4961L38.0446 8.75216L44 19.2479L35.92 24L44 28.7521L38.0446 39.2479L29.96 34.5039L29.9554 44H18.0446L18.04 34.5039L9.95537 39.2479L4 28.7521L12.0799 24Z",fillRule:"evenodd"})})}),(0,d.jsx)("span",{className:"text-xl font-bold text-text-main",children:g.vQ.name})]}),(0,d.jsx)("p",{className:"text-text-muted mb-6 max-w-sm font-light",children:"The unified interface for modern AI infrastructure. Secure, observable, and scalable."}),(0,d.jsxs)("div",{className:"flex gap-4",children:[(0,d.jsx)("a",{href:"#",className:"text-gray-400 hover:text-primary transition-colors","aria-label":"Twitter",children:(0,d.jsx)("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{d:"M22.46 6c-.77.35-1.6.58-2.46.69.88-.53 1.56-1.37 1.88-2.38-.83.5-1.75.85-2.72 1.05C18.37 4.5 17.26 4 16 4c-2.35 0-4.27 1.92-4.27 4.29 0 .34.04.67.11.98C8.28 9.09 5.11 7.38 3 4.79c-.37.63-.58 1.37-.58 2.15 0 1.49.75 2.81 1.91 3.56-.71 0-1.37-.2-1.95-.5v.03c0 2.08 1.48 3.82 3.44 4.21a4.22 4.22 0 0 1-1.93.07 4.28 4.28 0 0 0 4 2.98 8.521 8.521 0 0 1-5.33 1.84c-.34 0-.68-.02-1.02-.06C3.44 20.29 5.7 21 8.12 21 16 21 20.33 14.46 20.33 8.79c0-.19 0-.37-.01-.56.84-.6 1.56-1.36 2.14-2.23z"})})}),(0,d.jsx)("a",{href:"#",className:"text-gray-400 hover:text-primary transition-colors","aria-label":"GitHub",children:(0,d.jsx)("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0 1 12 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0 0 22 12.017C22 6.484 17.522 2 12 2z"})})})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h4",{className:"font-semibold text-text-main mb-4",children:"Product"}),(0,d.jsx)("ul",{className:"flex flex-col gap-3 text-sm text-text-muted font-light",children:h.map(a=>(0,d.jsx)("li",{children:(0,d.jsx)(f(),{href:a.href,className:"hover:text-primary transition-colors",children:a.label})},a.label))})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h4",{className:"font-semibold text-text-main mb-4",children:"Resources"}),(0,d.jsx)("ul",{className:"flex flex-col gap-3 text-sm text-text-muted font-light",children:i.map(a=>(0,d.jsx)("li",{children:(0,d.jsx)(f(),{href:a.href,className:"hover:text-primary transition-colors",children:a.label})},a.label))})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h4",{className:"font-semibold text-text-main mb-4",children:"Company"}),(0,d.jsx)("ul",{className:"flex flex-col gap-3 text-sm text-text-muted font-light",children:j.map(a=>(0,d.jsx)("li",{children:(0,d.jsx)(f(),{href:a.href,className:"hover:text-primary transition-colors",children:a.label})},a.label))})]})]}),(0,d.jsxs)("div",{className:"border-t border-border pt-8 flex flex-col md:flex-row justify-between items-center gap-4",children:[(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:["\xa9 ",new Date().getFullYear()," ",g.vQ.name," Inc. All rights reserved."]}),(0,d.jsxs)("div",{className:"flex gap-6 text-sm text-text-muted",children:[(0,d.jsx)(f(),{href:"#",className:"hover:text-primary transition-colors",children:"Privacy Policy"}),(0,d.jsx)(f(),{href:"#",className:"hover:text-primary transition-colors",children:"Terms of Service"})]})]})]})})}},50377:(a,b,c)=>{c.d(b,{C:()=>e});var d=c(67484);function e(a=2e3){let[b,c]=(0,d.useState)(null),f=(0,d.useRef)(null);return{copied:b,copy:(0,d.useCallback)((b,d="default")=>{navigator.clipboard.writeText(b),c(d),f.current&&clearTimeout(f.current),f.current=setTimeout(()=>{c(null)},a)},[a])}}},50412:(a,b,c)=>{c.d(b,{Ex:()=>j.default,$n:()=>d.default,Zp:()=>g.default,Qv:()=>i.CardSkeleton,G9:()=>t.default,wI:()=>w.default,vj:()=>v.default,vE:()=>u.default,pd:()=>e.default,Mh:()=>s.default,c5:()=>q.default,uR:()=>o.default,aF:()=>h.default,rq:()=>n.default,LF:()=>m.default,gM:()=>r.default,Iz:()=>x.default,l6:()=>f.default,UW:()=>l.default,lM:()=>k.default,m_:()=>y.default,jK:()=>p.default});var d=c(99070),e=c(83552),f=c(4770),g=c(17660),h=c(95145),i=c(52431);c(25919);var j=c(75171),k=c(95514),l=c(53845);c(19308),c(42196),c(86739),c(48781);var m=c(79346),n=c(83352),o=c(39645),p=c(87226),q=c(267);c(29370),c(25175);var r=c(91809);c(86209);var s=c(5291);c(56110);var t=c(51109),u=c(79488),v=c(43182),w=c(51585),x=c(91099),y=c(32971);c(85306),c(53838)},51109:(a,b,c)=>{c.d(b,{default:()=>i});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(50412);function i({isOpen:a,onSuccess:b,onClose:c}){let[f,g]=(0,e.useState)(""),[j,k]=(0,e.useState)(""),[l,m]=(0,e.useState)(null),[n,o]=(0,e.useState)(!1),[p,q]=(0,e.useState)(!1),[r,s]=(0,e.useState)(!1),[t,u]=(0,e.useState)(!1),v=async()=>{q(!0),m(null),s(!1),u(!1);try{let a=await fetch("/api/oauth/cursor/auto-import"),b=await a.json();b.found?(g(b.accessToken),k(b.machineId),s(!0)):b.windowsManual?u(!0):m(b.error||"Could not auto-detect tokens")}catch(a){m("Failed to auto-detect tokens")}finally{q(!1)}},w=async()=>{if(!f.trim())return void m("Please enter an access token");if(!j.trim())return void m("Please enter a machine ID");o(!0),m(null);try{let a=await fetch("/api/oauth/cursor/import",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({accessToken:f.trim(),machineId:j.trim()})}),d=await a.json();if(!a.ok)throw Error(d.error||"Import failed");b?.(),c()}catch(a){m(a.message)}finally{o(!1)}};return(0,d.jsx)(h.aF,{isOpen:a,title:"Connect Cursor IDE",onClose:c,children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[p&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-primary/10 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-primary animate-spin",children:"progress_activity"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Auto-detecting tokens..."}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Reading from Cursor IDE database"})]}),!p&&(0,d.jsxs)(d.Fragment,{children:[r&&(0,d.jsx)("div",{className:"bg-green-50 dark:bg-green-900/20 p-3 rounded-lg border border-green-200 dark:border-green-800",children:(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-green-600 dark:text-green-400",children:"check_circle"}),(0,d.jsx)("p",{className:"text-sm text-green-800 dark:text-green-200",children:"Tokens auto-detected from Cursor IDE successfully!"})]})}),t&&(0,d.jsxs)("div",{className:"bg-amber-50 dark:bg-amber-900/20 p-3 rounded-lg border border-amber-200 dark:border-amber-800 flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"flex gap-2 items-center",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-amber-600 dark:text-amber-400",children:"info"}),(0,d.jsx)("p",{className:"text-sm font-medium text-amber-800 dark:text-amber-200",children:"Could not read Cursor database automatically."})]}),(0,d.jsxs)("p",{className:"text-xs text-amber-700 dark:text-amber-300",children:["Make sure Cursor IDE has been opened at least once, then click ",(0,d.jsx)("strong",{children:"Retry"}),". If the problem persists, paste your tokens manually below."]}),(0,d.jsx)(h.$n,{onClick:v,variant:"outline",fullWidth:!0,children:"Retry"})]}),!r&&!t&&!l&&(0,d.jsx)("div",{className:"bg-blue-50 dark:bg-blue-900/20 p-3 rounded-lg border border-blue-200 dark:border-blue-800",children:(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-blue-600 dark:text-blue-400",children:"info"}),(0,d.jsx)("p",{className:"text-sm text-blue-800 dark:text-blue-200",children:"Cursor IDE not detected. Please paste your tokens manually."})]})}),(0,d.jsxs)("div",{children:[(0,d.jsxs)("label",{className:"block text-sm font-medium mb-2",children:["Access Token ",(0,d.jsx)("span",{className:"text-red-500",children:"*"})]}),(0,d.jsx)("textarea",{value:f,onChange:a=>g(a.target.value),placeholder:"Access token will be auto-filled...",rows:3,className:"w-full px-3 py-2 text-sm font-mono border border-border rounded-lg bg-background focus:outline-none focus:border-primary resize-none"})]}),(0,d.jsxs)("div",{children:[(0,d.jsxs)("label",{className:"block text-sm font-medium mb-2",children:["Machine ID ",(0,d.jsx)("span",{className:"text-red-500",children:"*"})]}),(0,d.jsx)(h.pd,{value:j,onChange:a=>k(a.target.value),placeholder:"Machine ID will be auto-filled...",className:"font-mono text-sm"})]}),l&&(0,d.jsx)("div",{className:"bg-red-50 dark:bg-red-900/20 p-3 rounded-lg border border-red-200 dark:border-red-800",children:(0,d.jsx)("p",{className:"text-sm text-red-600 dark:text-red-400",children:l})}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:w,fullWidth:!0,disabled:n||!f.trim()||!j.trim(),children:n?"Importing...":"Import Token"}),(0,d.jsx)(h.$n,{onClick:c,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})]})})}i.propTypes={isOpen:g().bool.isRequired,onSuccess:g().func,onClose:g().func.isRequired}},51585:(a,b,c)=>{c.d(b,{default:()=>m});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(95145),i=c(83552),j=c(99070),k=c(75171),l=c(96919);function m({isOpen:a,connection:b,proxyPools:c,onSave:f,onClose:g}){let[n,o]=(0,e.useState)({name:"",priority:1,apiKey:""}),[p,q]=(0,e.useState)(!1),[r,s]=(0,e.useState)(null),[t,u]=(0,e.useState)(!1),[v,w]=(0,e.useState)(null),[x,y]=(0,e.useState)(!1),z=b?.authType==="oauth",A=!!b&&((0,l.mq)(b.provider)||(0,l.gb)(b.provider)),B=async()=>{if(b?.provider){q(!0),s(null);try{let a=await fetch(`/api/providers/${b.id}/test`,{method:"POST"}),c=await a.json();s(c.valid?"success":"failed")}catch{s("failed")}finally{q(!1)}}},C=async()=>{if(b?.provider&&n.apiKey){u(!0),w(null);try{let a=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:b.provider,apiKey:n.apiKey})}),c=await a.json();w(c.valid?"success":"failed")}catch{w("failed")}finally{u(!1)}}},D=async()=>{if(b){y(!0);try{let a={name:n.name,priority:n.priority};if(!z&&n.apiKey){a.apiKey=n.apiKey;let c="success"===v;if(!c)try{u(!0),w(null);let a=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:b.provider,apiKey:n.apiKey})});c=!!(await a.json()).valid,w(c?"success":"failed")}catch{w("failed")}finally{u(!1)}c&&(a.testStatus="active",a.lastError=null,a.lastErrorAt=null)}await f(a)}finally{y(!1)}}};return b?(0,d.jsx)(h.default,{isOpen:a,title:"Edit Connection",onClose:g,children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)(i.default,{label:"Name",value:n.name,onChange:a=>o({...n,name:a.target.value}),placeholder:z?"Account name":"Production Key"}),z&&b.email&&(0,d.jsxs)("div",{className:"bg-sidebar/50 p-3 rounded-lg",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted mb-1",children:"Email"}),(0,d.jsx)("p",{className:"font-medium",children:b.email})]}),(0,d.jsx)(i.default,{label:"Priority",type:"number",value:n.priority,onChange:a=>o({...n,priority:Number.parseInt(a.target.value,10)||1})}),!z&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(i.default,{label:"API Key",type:"password",value:n.apiKey,onChange:a=>o({...n,apiKey:a.target.value}),placeholder:"Enter new API key",hint:"Leave blank to keep the current API key.",className:"flex-1"}),(0,d.jsx)("div",{className:"pt-6",children:(0,d.jsx)(j.default,{onClick:C,disabled:!n.apiKey||t||x,variant:"secondary",children:t?"Checking...":"Check"})})]}),v&&(0,d.jsx)(k.default,{variant:"success"===v?"success":"error",children:"success"===v?"Valid":"Invalid"})]}),!A&&(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)(j.default,{onClick:B,variant:"secondary",disabled:p,children:p?"Testing...":"Test Connection"}),r&&(0,d.jsx)(k.default,{variant:"success"===r?"success":"error",children:"success"===r?"Valid":"Failed"})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.default,{onClick:D,fullWidth:!0,disabled:x,children:x?"Saving...":"Save"}),(0,d.jsx)(j.default,{onClick:g,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}):null}m.propTypes={isOpen:g().bool.isRequired,connection:g().shape({id:g().string,name:g().string,email:g().string,priority:g().number,authType:g().string,provider:g().string,providerSpecificData:g().object}),proxyPools:g().arrayOf(g().shape({id:g().string,name:g().string})),onSave:g().func.isRequired,onClose:g().func.isRequired}},52431:(a,b,c)=>{c.d(b,{CardSkeleton:()=>i,PageLoading:()=>g,Skeleton:()=>h,Spinner:()=>f,default:()=>j});var d=c(48249),e=c(71404);function f({size:a="md",className:b}){return(0,d.jsx)("span",{className:(0,e.cn)("material-symbols-outlined animate-spin text-primary",{sm:"size-4",md:"size-6",lg:"size-8",xl:"size-12"}[a],b),children:"progress_activity"})}function g({message:a="Loading..."}){return(0,d.jsxs)("div",{className:"fixed inset-0 z-50 flex flex-col items-center justify-center bg-bg",children:[(0,d.jsx)(f,{size:"xl"}),(0,d.jsx)("p",{className:"mt-4 text-text-muted",children:a})]})}function h({className:a,...b}){return(0,d.jsx)("div",{className:(0,e.cn)("animate-pulse rounded-lg bg-border",a),...b})}function i(){return(0,d.jsxs)("div",{className:"p-6 rounded-xl border border-border bg-surface",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,d.jsx)(h,{className:"h-4 w-24"}),(0,d.jsx)(h,{className:"size-10 rounded-lg"})]}),(0,d.jsx)(h,{className:"h-8 w-16 mb-2"}),(0,d.jsx)(h,{className:"h-3 w-20"})]})}function j({type:a="spinner",...b}){switch(a){case"page":return(0,d.jsx)(g,{...b});case"skeleton":return(0,d.jsx)(h,{...b});case"card":return(0,d.jsx)(i,{...b});default:return(0,d.jsx)(f,{...b})}}},53838:(a,b,c)=>{c.d(b,{default:()=>h});var d=c(48249),e=c(49885),f=c.n(e),g=c(53845);function h({children:a}){return(0,d.jsxs)("div",{className:"min-h-screen flex flex-col relative bg-bg transition-colors duration-500 overflow-x-hidden selection:bg-primary/20 selection:text-primary",children:[(0,d.jsx)("div",{className:"fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[800px] h-[800px] bg-primary/5 dark:bg-primary/5 rounded-full blur-[100px] pointer-events-none z-0"}),(0,d.jsx)("div",{className:"fixed bottom-0 right-0 w-[600px] h-[600px] bg-orange-200/20 dark:bg-orange-900/10 rounded-full blur-[120px] pointer-events-none z-0 translate-y-1/3 translate-x-1/3"}),(0,d.jsx)("div",{className:"absolute top-6 right-6 z-20",children:(0,d.jsx)(g.default,{variant:"card"})}),(0,d.jsx)("main",{className:"flex-1 flex flex-col items-center justify-center p-4 sm:p-6 z-10 w-full h-full",children:a})]})}h.propTypes={children:f().node.isRequired}},53845:(a,b,c)=>{c.d(b,{default:()=>g});var d=c(48249),e=c(42118),f=c(71404);function g({className:a,variant:b="default"}){let{theme:c,toggleTheme:h,isDark:i}=(0,e.D)(),j={default:(0,f.cn)("flex items-center justify-center size-10 rounded-full","text-text-muted","hover:bg-black/5","hover:text-text-main","transition-colors"),card:(0,f.cn)("flex items-center justify-center size-11 rounded-full","bg-surface/60","hover:bg-surface","border border-border","backdrop-blur-md shadow-sm hover:shadow-md","text-text-muted-light hover:text-primary","hover:text-primary","transition-all group")};return(0,d.jsx)("button",{onClick:h,className:(0,f.cn)(j[b],a),"aria-label":`Switch to ${i?"light":"dark"} mode`,title:`Switch to ${i?"light":"dark"} mode`,children:(0,d.jsx)("span",{className:(0,f.cn)("material-symbols-outlined text-[22px]","card"===b&&"transition-transform duration-300 group-hover:rotate-12"),children:i?"light_mode":"dark_mode"})})}},56110:(a,b,c)=>{c.d(b,{default:()=>j});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(50412),i=c(50377);function j({isOpen:a,provider:b,onSuccess:c,onClose:f}){let[g,k]=(0,e.useState)("loading"),[l,m]=(0,e.useState)(""),[n,o]=(0,e.useState)(null),[p,q]=(0,e.useState)(""),[r,s]=(0,e.useState)(null),{copied:t,copy:u}=(0,i.C)(),v=async()=>{try{let a;s(null);try{a=new URL(p)}catch(a){throw Error("Invalid callback URL format")}let d=a.searchParams.get("code");a.searchParams.get("state");let e=a.searchParams.get("error");if(e)throw Error(a.searchParams.get("error_description")||e);if(!d)throw Error("No authorization code found in URL");let f=await fetch("/api/oauth/kiro/social-exchange",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:d,codeVerifier:n.codeVerifier,provider:b})}),g=await f.json();if(!f.ok)throw Error(g.error);k("success"),c?.()}catch(a){s(a.message),k("error")}},w="google"===b?"Google":"GitHub";return(0,d.jsx)(h.aF,{isOpen:a,title:`Connect Kiro via ${w}`,onClose:f,size:"lg",children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:["loading"===g&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-primary/10 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-primary animate-spin",children:"progress_activity"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Initializing..."}),(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:["Setting up ",w," authentication"]})]}),"input"===g&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium mb-2",children:"Step 1: Open this URL in your browser"}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.pd,{value:l,readOnly:!0,className:"flex-1 font-mono text-xs"}),(0,d.jsx)(h.$n,{variant:"secondary",icon:"auth_url"===t?"check":"content_copy",onClick:()=>u(l,"auth_url"),children:"Copy"})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium mb-2",children:"Step 2: Paste the callback URL here"}),(0,d.jsx)("p",{className:"text-xs text-text-muted mb-2",children:"After authorization, copy the full URL from your browser address bar."}),(0,d.jsx)(h.pd,{value:p,onChange:a=>q(a.target.value),placeholder:"kiro://kiro.kiroAgent/authenticate-success?code=...",className:"font-mono text-xs"})]})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:v,fullWidth:!0,disabled:!p,children:"Connect"}),(0,d.jsx)(h.$n,{onClick:f,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),"success"===g&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-green-100 dark:bg-green-900/30 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-green-600",children:"check_circle"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Connected Successfully!"}),(0,d.jsxs)("p",{className:"text-sm text-text-muted mb-4",children:["Your Kiro account via ",w," has been connected."]}),(0,d.jsx)(h.$n,{onClick:f,fullWidth:!0,children:"Done"})]}),"error"===g&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-red-100 dark:bg-red-900/30 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-red-600",children:"error"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Connection Failed"}),(0,d.jsx)("p",{className:"text-sm text-red-600 mb-4",children:r}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:()=>k("input"),variant:"secondary",fullWidth:!0,children:"Try Again"}),(0,d.jsx)(h.$n,{onClick:f,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})]})})}j.propTypes={isOpen:g().bool.isRequired,provider:g().oneOf(["google","github"]).isRequired,onSuccess:g().func,onClose:g().func.isRequired}},71404:(a,b,c)=>{c.d(b,{cn:()=>d});function d(...a){return a.filter(Boolean).join(" ").replace(/\s+/g," ").trim()}},72738:(a,b,c)=>{c.d(b,{A:()=>h});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f);function h({src:a,alt:b,size:c=32,className:f="",fallbackText:g="?",fallbackColor:i}){let[j,k]=(0,e.useState)(!1);return!a||j?(0,d.jsx)("span",{className:`inline-flex items-center justify-center font-bold rounded-lg ${f}`.trim(),style:{width:c,height:c,color:i,fontSize:Math.max(10,Math.floor(.38*c))},children:g}):(0,d.jsx)("img",{src:a,alt:b,width:c,height:c,className:f,onError:()=>k(!0)})}h.propTypes={src:g().string,alt:g().string,size:g().number,className:g().string,fallbackText:g().string,fallbackColor:g().string}},75171:(a,b,c)=>{c.d(b,{default:()=>h});var d=c(48249),e=c(71404);let f={default:"bg-black/5 dark:bg-white/10 text-text-muted",primary:"bg-primary/10 text-primary",success:"bg-green-500/10 text-green-600 dark:text-green-400",warning:"bg-yellow-500/10 text-yellow-600 dark:text-yellow-400",error:"bg-red-500/10 text-red-600 dark:text-red-400",info:"bg-blue-500/10 text-blue-600 dark:text-blue-400"},g={sm:"px-2 py-0.5 text-[10px]",md:"px-2.5 py-1 text-xs",lg:"px-3 py-1.5 text-sm"};function h({children:a,variant:b="default",size:c="md",dot:i=!1,icon:j,className:k}){return(0,d.jsxs)("span",{className:(0,e.cn)("inline-flex items-center gap-1.5 rounded-full font-semibold",f[b],g[c],k),children:[i&&(0,d.jsx)("span",{className:(0,e.cn)("size-1.5 rounded-full","success"===b&&"bg-green-500","warning"===b&&"bg-yellow-500","error"===b&&"bg-red-500","info"===b&&"bg-blue-500","primary"===b&&"bg-primary","default"===b&&"bg-gray-500")}),j&&(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:j}),a]})}},79346:(a,b,c)=>{c.d(b,{default:()=>j});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(50412),i=c(50377);function j({isOpen:a,provider:b,providerInfo:c,onSuccess:f,onClose:g,oauthMeta:k}){let[l,m]=(0,e.useState)("waiting"),[n,o]=(0,e.useState)(null),[p,q]=(0,e.useState)(""),[r,s]=(0,e.useState)(null),[t,u]=(0,e.useState)(!1),[v,w]=(0,e.useState)(null),[x,y]=(0,e.useState)(!1),z=(0,e.useRef)(null),A=(0,e.useRef)(!1),{copied:B,copy:C}=(0,i.C)(),[D,E]=(0,e.useState)(!1),[F,G]=(0,e.useState)("/callback?code=...");(0,e.useRef)(!1);let H=(0,e.useCallback)(async(a,c)=>{if(n)try{let d=await fetch(`/api/oauth/${b}/exchange`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:a,redirectUri:n.redirectUri,codeVerifier:n.codeVerifier,state:c,...k?{meta:k}:{}})}),e=await d.json();if(!d.ok)throw Error(e.error);m("success"),f?.()}catch(a){s(a.message),m("error")}},[n,b,f]),I=(0,e.useCallback)(async(a,c,d,e)=>{A.current=!1,y(!0);for(let g=0;g<60;g++){if(A.current){console.log("[OAuthModal] Polling aborted"),y(!1);return}if(await new Promise(a=>setTimeout(a,1e3*d)),A.current){console.log("[OAuthModal] Polling aborted after sleep"),y(!1);return}try{let g=await fetch(`/api/oauth/${b}/poll`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({deviceCode:a,codeVerifier:c,extraData:e})}),h=await g.json();if(h.success){A.current=!0,m("success"),y(!1),f?.();return}if("expired_token"===h.error||"access_denied"===h.error)throw Error(h.errorDescription||h.error);"slow_down"===h.error&&(d=Math.min(d+5,30))}catch(a){s(a.message),m("error"),y(!1);return}}s("Authorization timeout"),m("error"),y(!1)},[b,f]),J=(0,e.useCallback)(async()=>{if(b)try{let a;if(s(null),["github","qwen","kiro","kimi-coding","kilocode","codebuddy"].includes(b)){u(!0),m("waiting");let a=await fetch(`/api/oauth/${b}/device-code`),c=await a.json();if(!a.ok)throw Error(c.error);w(c);let d=c.verification_uri_complete||c.verification_uri;d&&window.open(d,"_blank");let e="kiro"===b?{_clientId:c._clientId,_clientSecret:c._clientSecret}:null;I(c.device_code,c.codeVerifier,c.interval||5,e);return}if("codex"===b)a="http://localhost:1455/auth/callback";else{let b=window.location.port||("https:"===window.location.protocol?"443":"80");a=`http://localhost:${b}/callback`}let c=new URL(`/api/oauth/${b}/authorize`,window.location.origin);c.searchParams.set("redirect_uri",a),k&&Object.entries(k).forEach(([a,b])=>{b&&c.searchParams.set(a,b)});let d=await fetch(c.toString()),e=await d.json();if(!d.ok)throw Error(e.error);o({...e,redirectUri:a}),"codex"!==b&&D?(m("waiting"),z.current=window.open(e.authUrl,"oauth_popup","width=600,height=700"),z.current||m("input")):(m("input"),window.open(e.authUrl,"_blank"))}catch(a){s(a.message),m("error")}},[b,D,I]),K=async()=>{try{s(null);let a=new URL(p),b=a.searchParams.get("code"),c=a.searchParams.get("state"),d=a.searchParams.get("error");if(d)throw Error(a.searchParams.get("error_description")||d);if(!b)throw Error("No authorization code found in URL");await H(b,c)}catch(a){s(a.message),m("error")}},L=(0,e.useCallback)(()=>{g()},[g]);return b&&c?(0,d.jsx)(h.aF,{isOpen:a,title:`Connect ${c.name}`,onClose:L,size:"lg",children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:["waiting"===l&&!t&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-primary/10 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-primary animate-spin",children:"progress_activity"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Waiting for Authorization"}),(0,d.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Complete the authorization in the popup window."}),(0,d.jsx)(h.$n,{variant:"ghost",onClick:()=>m("input"),children:"Popup blocked? Enter URL manually"})]}),"waiting"===l&&t&&v&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"text-center py-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Visit the URL below and enter the code:"}),(0,d.jsxs)("div",{className:"bg-sidebar p-4 rounded-lg mb-4",children:[(0,d.jsx)("p",{className:"text-xs text-text-muted mb-1",children:"Verification URL"}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("code",{className:"flex-1 text-sm break-all",children:v.verification_uri}),(0,d.jsx)(h.$n,{size:"sm",variant:"ghost",icon:"verify_url"===B?"check":"content_copy",onClick:()=>C(v.verification_uri,"verify_url")})]})]}),(0,d.jsxs)("div",{className:"bg-primary/10 p-4 rounded-lg",children:[(0,d.jsx)("p",{className:"text-xs text-text-muted mb-1",children:"Your Code"}),(0,d.jsxs)("div",{className:"flex items-center justify-center gap-2",children:[(0,d.jsx)("p",{className:"text-2xl font-mono font-bold text-primary",children:v.user_code}),(0,d.jsx)(h.$n,{size:"sm",variant:"ghost",icon:"user_code"===B?"check":"content_copy",onClick:()=>C(v.user_code,"user_code")})]})]})]}),x&&(0,d.jsxs)("div",{className:"flex items-center justify-center gap-2 text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),"Waiting for authorization..."]})]}),"input"===l&&!t&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium mb-2",children:"Step 1: Open this URL in your browser"}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.pd,{value:n?.authUrl||"",readOnly:!0,className:"flex-1 font-mono text-xs"}),(0,d.jsx)(h.$n,{variant:"secondary",icon:"auth_url"===B?"check":"content_copy",onClick:()=>C(n?.authUrl,"auth_url"),children:"Copy"})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium mb-2",children:"Step 2: Paste the callback URL here"}),(0,d.jsx)("p",{className:"text-xs text-text-muted mb-2",children:"After authorization, copy the full URL from your browser."}),(0,d.jsx)(h.pd,{value:p,onChange:a=>q(a.target.value),placeholder:F,className:"font-mono text-xs"})]})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:K,fullWidth:!0,disabled:!p,children:"Connect"}),(0,d.jsx)(h.$n,{onClick:L,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),"success"===l&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-green-100 dark:bg-green-900/30 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-green-600",children:"check_circle"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Connected Successfully!"}),(0,d.jsxs)("p",{className:"text-sm text-text-muted mb-4",children:["Your ",c.name," account has been connected."]}),(0,d.jsx)(h.$n,{onClick:L,fullWidth:!0,children:"Done"})]}),"error"===l&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-red-100 dark:bg-red-900/30 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-red-600",children:"error"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Connection Failed"}),(0,d.jsx)("p",{className:"text-sm text-red-600 mb-4",children:r}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:J,variant:"secondary",fullWidth:!0,children:"Try Again"}),(0,d.jsx)(h.$n,{onClick:L,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})]})}):null}j.propTypes={isOpen:g().bool.isRequired,provider:g().string,providerInfo:g().shape({name:g().string}),onSuccess:g().func,onClose:g().func.isRequired,oauthMeta:g().object}},79488:(a,b,c)=>{c.d(b,{default:()=>i});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(50412);function i({isOpen:a,onSuccess:b,onClose:c}){let[f,g]=(0,e.useState)(""),[j,k]=(0,e.useState)(!1),[l,m]=(0,e.useState)(null),[n,o]=(0,e.useState)(!1),p=async()=>{if(!f.trim())return void m("Please paste your cookie");k(!0),m(null);try{let a=await fetch("/api/oauth/iflow/cookie",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cookie:f.trim()})}),c=await a.json();if(!a.ok)throw Error(c.error||"Authentication failed");o(!0),setTimeout(()=>{b?.(),q()},1500)}catch(a){m(a.message)}finally{k(!1)}},q=()=>{g(""),m(null),o(!1),c?.()};return(0,d.jsx)(h.aF,{isOpen:a,onClose:q,title:"iFlow Cookie Authentication",children:(0,d.jsx)("div",{className:"space-y-4",children:n?(0,d.jsxs)("div",{className:"text-center py-8",children:[(0,d.jsx)("div",{className:"text-6xl mb-4",children:"✅"}),(0,d.jsx)("p",{className:"text-lg font-medium text-text-primary",children:"Authentication Successful!"}),(0,d.jsx)("p",{className:"text-sm text-text-muted mt-2",children:"Fresh API key obtained"})]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:["To get a fresh API key, paste your browser cookie from"," ",(0,d.jsx)("a",{href:"https://platform.iflow.cn",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:"platform.iflow.cn"})]}),(0,d.jsxs)("div",{className:"bg-surface-secondary p-3 rounded-lg text-xs space-y-2",children:[(0,d.jsx)("p",{className:"font-medium text-text-primary",children:"How to get cookie:"}),(0,d.jsxs)("ol",{className:"list-decimal list-inside space-y-1 text-text-muted",children:[(0,d.jsx)("li",{children:"Open platform.iflow.cn in your browser"}),(0,d.jsx)("li",{children:"Login to your account"}),(0,d.jsx)("li",{children:"Open DevTools (F12) → Application/Storage → Cookies"}),(0,d.jsx)("li",{children:"Copy the entire cookie string (must include BXAuth)"}),(0,d.jsx)("li",{children:"Paste it below"})]})]})]}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)("label",{className:"block text-sm font-medium text-text-primary",children:"Cookie String"}),(0,d.jsx)("textarea",{value:f,onChange:a=>g(a.target.value),placeholder:"BXAuth=xxx; ...",className:"w-full px-3 py-2 bg-surface-secondary border border-border rounded-lg text-sm text-text-primary placeholder-text-muted focus:outline-none focus:ring-2 focus:ring-primary resize-none",rows:4,disabled:j})]}),l&&(0,d.jsx)("div",{className:"p-3 bg-error/10 border border-error/20 rounded-lg",children:(0,d.jsx)("p",{className:"text-sm text-error",children:l})}),(0,d.jsxs)("div",{className:"flex gap-3 pt-2",children:[(0,d.jsx)(h.$n,{variant:"secondary",onClick:q,disabled:j,fullWidth:!0,children:"Cancel"}),(0,d.jsx)(h.$n,{onClick:p,loading:j,fullWidth:!0,children:"Authenticate"})]})]})})})}i.propTypes={isOpen:g().bool.isRequired,onSuccess:g().func,onClose:g().func}},83352:(a,b,c)=>{c.d(b,{default:()=>m});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(95145),i=c(91431),j=c(96919);let k=[...Object.keys(j.zN),...Object.keys(j.IS),...Object.keys(j.nJ),...Object.keys(j.fg)],l=Object.keys(j.IS).filter(a=>j.IS[a].noAuth);function m({isOpen:a,onClose:b,onSelect:c,selectedModel:f,activeProviders:g=[],title:n="Select Model",modelAliases:o={}}){let[p,q]=(0,e.useState)(""),[r,s]=(0,e.useState)([]),[t,u]=(0,e.useState)([]),v=(0,e.useMemo)(()=>({...j.zN,...j.IS,...j.nJ,...j.fg}),[]),w=(0,e.useMemo)(()=>{let a={};return[...new Set([...g.map(a=>a.provider),...l])].sort((a,b)=>{let c=k.indexOf(a),d=k.indexOf(b);return(-1===c?999:c)-(-1===d?999:d)}).forEach(b=>{let c=i.Xg[b]||b,d=v[b]||{name:b,color:"#666"},e=(0,j.mq)(b)||(0,j.gb)(b);if(d.passthroughModels){let e=Object.entries(o).filter(([,a])=>a.startsWith(`${c}/`)).map(([a,b])=>({id:b.replace(`${c}/`,""),name:a,value:b}));if(e.length>0){let f=t.find(a=>a.id===b),g=f?.name||d.name;a[b]={name:g,alias:c,color:d.color,models:e}}}else if(e){let c=g.find(a=>a.provider===b),e=t.find(a=>a.id===b),f=c?.name||e?.name||d.name,h=c?.providerSpecificData?.prefix||e?.prefix||b,i=Object.entries(o).filter(([,a])=>a.startsWith(`${b}/`)).map(([a,c])=>({id:c.replace(`${b}/`,""),name:a,value:`${h}/${c.replace(`${b}/`,"")}`})),j=i.length>0?i:[{id:`__placeholder__${b}`,name:`${h}/model-id`,value:`${h}/model-id`,isPlaceholder:!0}];a[b]={name:f,alias:h,color:d.color,models:j,isCustom:!0,hasModels:i.length>0}}else{let e=(0,i.KC)(b),f=new Set(e.map(a=>a.id)),g=e.length>0,h=Object.entries(o).filter(([a,b])=>b.startsWith(`${c}/`)&&(!g||a===b.replace(`${c}/`,""))&&!f.has(b.replace(`${c}/`,""))).map(([a,b])=>({id:b.replace(`${c}/`,""),name:a,value:b,isCustom:!0})),j=[...e.map(a=>({id:a.id,name:a.name,value:`${c}/${a.id}`})),...h];j.length>0&&(a[b]={name:d.name,alias:c,color:d.color,models:j})}}),a},[g,o,v,t]),x=(0,e.useMemo)(()=>{if(!p.trim())return r;let a=p.toLowerCase();return r.filter(b=>b.name.toLowerCase().includes(a))},[r,p]),y=(0,e.useMemo)(()=>{if(!p.trim())return w;let a=p.toLowerCase(),b={};return Object.entries(w).forEach(([c,d])=>{let e=d.models.filter(b=>b.name.toLowerCase().includes(a)||b.id.toLowerCase().includes(a)),f=d.name.toLowerCase().includes(a);(e.length>0||f)&&(b[c]={...d,models:e})}),b},[w,p]),z=a=>{c(a),b(),q("")};return(0,d.jsxs)(h.default,{isOpen:a,onClose:()=>{b(),q("")},title:n,size:"md",className:"p-4!",children:[(0,d.jsx)("div",{className:"mb-3",children:(0,d.jsxs)("div",{className:"relative",children:[(0,d.jsx)("span",{className:"material-symbols-outlined absolute left-2.5 top-1/2 -translate-y-1/2 text-text-muted text-[16px]",children:"search"}),(0,d.jsx)("input",{type:"text",placeholder:"Search...",value:p,onChange:a=>q(a.target.value),className:"w-full pl-8 pr-3 py-1.5 bg-surface border border-border rounded text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"})]})}),(0,d.jsxs)("div",{className:"max-h-[400px] overflow-y-auto space-y-3",children:[x.length>0&&(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"flex items-center gap-1.5 mb-1.5 sticky top-0 bg-surface py-0.5",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary text-[14px]",children:"layers"}),(0,d.jsx)("span",{className:"text-xs font-medium text-primary",children:"Combos"}),(0,d.jsxs)("span",{className:"text-[10px] text-text-muted",children:["(",x.length,")"]})]}),(0,d.jsx)("div",{className:"flex flex-wrap gap-1.5",children:x.map(a=>{let b=f===a.name;return(0,d.jsx)("button",{onClick:()=>z({id:a.name,name:a.name,value:a.name}),className:`
1
+ "use strict";exports.id=412,exports.ids=[412],exports.modules={267:(a,b,c)=>{c.d(b,{default:()=>j});var d=c(48249),e=c(67484),f=c(74429),g=c(51126),h=c(99258);let i=a=>({en:{name:"English",flag:"\uD83C\uDDFA\uD83C\uDDF8"},vi:{name:"Tiếng Việt",flag:"\uD83C\uDDFB\uD83C\uDDF3"},"zh-CN":{name:"简体中文",flag:"\uD83C\uDDE8\uD83C\uDDF3"},"zh-TW":{name:"繁體中文",flag:"\uD83C\uDDF9\uD83C\uDDFC"},ja:{name:"日本語",flag:"\uD83C\uDDEF\uD83C\uDDF5"},"pt-BR":{name:"Portugu\xeas (Brasil)",flag:"\uD83C\uDDE7\uD83C\uDDF7"},"pt-PT":{name:"Portugu\xeas (Portugal)",flag:"\uD83C\uDDF5\uD83C\uDDF9"},ko:{name:"한국어",flag:"\uD83C\uDDF0\uD83C\uDDF7"},es:{name:"Espa\xf1ol",flag:"\uD83C\uDDEA\uD83C\uDDF8"},de:{name:"Deutsch",flag:"\uD83C\uDDE9\uD83C\uDDEA"},fr:{name:"Fran\xe7ais",flag:"\uD83C\uDDEB\uD83C\uDDF7"},he:{name:"עברית",flag:"\uD83C\uDDEE\uD83C\uDDF1"},ar:{name:"العربية",flag:"\uD83C\uDDF8\uD83C\uDDE6"},ru:{name:"Русский",flag:"\uD83C\uDDF7\uD83C\uDDFA"},pl:{name:"Polski",flag:"\uD83C\uDDF5\uD83C\uDDF1"},cs:{name:"Čeština",flag:"\uD83C\uDDE8\uD83C\uDDFF"},nl:{name:"Nederlands",flag:"\uD83C\uDDF3\uD83C\uDDF1"},tr:{name:"T\xfcrk\xe7e",flag:"\uD83C\uDDF9\uD83C\uDDF7"},uk:{name:"Українська",flag:"\uD83C\uDDFA\uD83C\uDDE6"},tl:{name:"Tagalog",flag:"\uD83C\uDDF5\uD83C\uDDED"},id:{name:"Indonesia",flag:"\uD83C\uDDEE\uD83C\uDDE9"},th:{name:"ไทย",flag:"\uD83C\uDDF9\uD83C\uDDED"},hi:{name:"हिन्दी",flag:"\uD83C\uDDEE\uD83C\uDDF3"},bn:{name:"বাংলা",flag:"\uD83C\uDDE7\uD83C\uDDE9"},ur:{name:"اردو",flag:"\uD83C\uDDF5\uD83C\uDDF0"},ro:{name:"Rom\xe2nă",flag:"\uD83C\uDDF7\uD83C\uDDF4"},sv:{name:"Svenska",flag:"\uD83C\uDDF8\uD83C\uDDEA"},it:{name:"Italiano",flag:"\uD83C\uDDEE\uD83C\uDDF9"},el:{name:"Ελληνικά",flag:"\uD83C\uDDEC\uD83C\uDDF7"},hu:{name:"Magyar",flag:"\uD83C\uDDED\uD83C\uDDFA"},fi:{name:"Suomi",flag:"\uD83C\uDDEB\uD83C\uDDEE"},da:{name:"Dansk",flag:"\uD83C\uDDE9\uD83C\uDDF0"},no:{name:"Norsk",flag:"\uD83C\uDDF3\uD83C\uDDF4"}})[a]||{name:a,flag:"\uD83C\uDF10"};function j({className:a=""}){let[b,c]=(0,e.useState)("en"),[k,l]=(0,e.useState)(!1),[m,n]=(0,e.useState)(!1),o=(0,e.useRef)(null),p=async a=>{if(a!==b&&!k){l(!0),n(!1);try{await fetch("/api/locale",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({locale:a})}),await (0,h.wn)(),c(a)}catch(a){console.error("Failed to set locale:",a)}finally{l(!1)}}};return(0,d.jsxs)("div",{className:a,children:[(0,d.jsxs)("button",{onClick:()=>n(!m),disabled:k,className:"flex items-center gap-2 px-3 py-2 rounded-lg text-text-muted hover:text-text-main hover:bg-surface/60 transition-colors",title:"Language","data-i18n-skip":"true",children:[(0,d.jsx)("span",{className:"text-xl",children:i(b).flag}),(0,d.jsx)("span",{className:"text-xs font-medium uppercase",children:b.split("-")[0]})]}),m&&(0,f.createPortal)((0,d.jsxs)("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-4","data-i18n-skip":"true",children:[(0,d.jsx)("div",{className:"absolute inset-0 bg-black/30 backdrop-blur-sm",onClick:()=>n(!1)}),(0,d.jsxs)("div",{ref:o,className:"relative w-full bg-surface border border-black/10 dark:border-white/10 rounded-xl shadow-2xl animate-in fade-in zoom-in-95 duration-200 max-w-2xl flex flex-col max-h-[80vh]",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between p-3 border-b border-black/5 dark:border-white/5",children:[(0,d.jsx)("h2",{className:"text-lg font-semibold text-text-main",children:"Select Language"}),(0,d.jsx)("button",{onClick:()=>n(!1),className:"p-1.5 rounded-lg text-text-muted hover:bg-black/5 dark:hover:bg-white/5 transition-colors","aria-label":"Close",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"close"})})]}),(0,d.jsx)("div",{className:"p-6 overflow-y-auto flex-1",children:(0,d.jsx)("div",{className:"grid grid-cols-[repeat(auto-fill,minmax(100px,1fr))] gap-2",children:g.YZ.map(a=>{let c=b===a,e=i(a);return(0,d.jsxs)("button",{onClick:()=>p(a),disabled:k,className:`flex flex-col items-center justify-start gap-1 px-2 py-3 rounded-lg text-xs font-medium transition-colors w-full ${c?"bg-primary/15 text-primary ring-2 ring-primary":"text-text-main hover:bg-black/5 dark:hover:bg-white/5"} ${k?"opacity-70 cursor-wait":""}`,title:e.name,children:[(0,d.jsx)("span",{className:"text-2xl",children:e.flag}),(0,d.jsx)("span",{className:"text-center leading-tight line-clamp-2 h-8 flex items-center",children:e.name}),c&&(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:"check"})]},a)})})})]})]}),document.body)]})}},4770:(a,b,c)=>{c.d(b,{default:()=>f});var d=c(48249),e=c(71404);function f({label:a,options:b=[],value:c,onChange:g,placeholder:h="Select an option",error:i,hint:j,disabled:k=!1,required:l=!1,className:m,selectClassName:n,...o}){return(0,d.jsxs)("div",{className:(0,e.cn)("flex flex-col gap-1.5",m),children:[a&&(0,d.jsxs)("label",{className:"text-sm font-medium text-text-main",children:[a,l&&(0,d.jsx)("span",{className:"text-red-500 ml-1",children:"*"})]}),(0,d.jsxs)("div",{className:"relative",children:[(0,d.jsxs)("select",{value:c,onChange:g,disabled:k,className:(0,e.cn)("w-full py-2 px-3 pr-10 text-sm text-text-main","bg-white dark:bg-white/5 border border-black/10 dark:border-white/10 rounded-md appearance-none","focus:ring-1 focus:ring-primary/30 focus:border-primary/50 focus:outline-none","transition-all disabled:opacity-50 disabled:cursor-not-allowed","text-[16px] sm:text-sm",i?"border-red-500 focus:border-red-500 focus:ring-red-500/20":"",n),...o,children:[(0,d.jsx)("option",{value:"",disabled:!0,children:h}),b.map(a=>(0,d.jsx)("option",{value:a.value,children:a.label},a.value))]}),(0,d.jsx)("div",{className:"absolute inset-y-0 right-0 flex items-center pr-3 pointer-events-none text-text-muted",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"expand_more"})})]}),i&&(0,d.jsxs)("p",{className:"text-xs text-red-500 flex items-center gap-1",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"error"}),i]}),j&&!i&&(0,d.jsx)("p",{className:"text-xs text-text-muted",children:j})]})}},5291:(a,b,c)=>{c.d(b,{default:()=>k});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(79346),i=c(86209),j=c(56110);function k({isOpen:a,providerInfo:b,onSuccess:c,onClose:f}){let[g,l]=(0,e.useState)(null),[m,n]=(0,e.useState)(null),[o,p]=(0,e.useState)(null),q=(0,e.useCallback)((a,b)=>{"builder-id"===a?l("builder-id"):"idc"===a?(l("idc"),p(b)):"social"===a?(l("social"),n(b.provider)):"import"===a&&c?.()},[c]),r=()=>{l(null),n(null),p(null)};return g?"builder-id"===g||"idc"===g?(0,d.jsx)(h.default,{isOpen:a,provider:"kiro",providerInfo:b,onSuccess:()=>{l(null),p(null),c?.(),f?.()},onClose:r,idcConfig:o}):"social"===g&&m?(0,d.jsx)(j.default,{isOpen:a,provider:m,onSuccess:()=>{l(null),n(null),c?.(),f?.()},onClose:r}):null:(0,d.jsx)(i.default,{isOpen:a,onMethodSelect:q,onClose:f})}k.propTypes={isOpen:g().bool.isRequired,providerInfo:g().shape({name:g().string}),onSuccess:g().func,onClose:g().func.isRequired}},17660:(a,b,c)=>{c.d(b,{default:()=>f});var d=c(48249),e=c(71404);function f({children:a,title:b,subtitle:c,icon:g,action:h,padding:i="md",hover:j=!1,className:k,...l}){return(0,d.jsxs)("div",{className:(0,e.cn)("bg-surface","border border-black/5 dark:border-white/5","rounded-lg shadow-sm",j&&"hover:shadow-md hover:border-primary/30 transition-all cursor-pointer",{none:"",xs:"p-3",sm:"p-4",md:"p-6",lg:"p-8"}[i],k),...l,children:[(b||h)&&(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[g&&(0,d.jsx)("div",{className:"p-2 rounded-lg bg-bg text-text-muted",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:g})}),(0,d.jsxs)("div",{children:[b&&(0,d.jsx)("h3",{className:"text-text-main font-semibold",children:b}),c&&(0,d.jsx)("p",{className:"text-sm text-text-muted",children:c})]})]}),h]}),a]})}f.Section=function({children:a,className:b,...c}){return(0,d.jsx)("div",{className:(0,e.cn)("p-4 rounded-lg","bg-black/[0.02] dark:bg-white/[0.02]","border border-black/5 dark:border-white/5",b),...c,children:a})},f.Row=function({children:a,className:b,...c}){return(0,d.jsx)("div",{className:(0,e.cn)("p-3 -mx-3 px-3 transition-colors","border-b border-black/5 dark:border-white/5 last:border-b-0","hover:bg-black/[0.02] dark:hover:bg-white/[0.02]",b),...c,children:a})},f.ListItem=function({children:a,actions:b,className:c,...f}){return(0,d.jsxs)("div",{className:(0,e.cn)("group flex items-center justify-between p-3 -mx-3 px-3","border-b border-black/[0.03] dark:border-white/[0.03] last:border-b-0","hover:bg-black/[0.02] dark:hover:bg-white/[0.02]","transition-colors",c),...f,children:[(0,d.jsx)("div",{className:"flex-1 min-w-0",children:a}),b&&(0,d.jsx)("div",{className:"flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:b})]})}},25919:(a,b,c)=>{c.d(b,{default:()=>f});var d=c(48249),e=c(71404);function f({src:a,alt:b="Avatar",name:c,size:g="md",className:h}){let i={xs:"size-6 text-xs",sm:"size-8 text-sm",md:"size-10 text-base",lg:"size-12 text-lg",xl:"size-16 text-xl"};return a?(0,d.jsx)("div",{className:(0,e.cn)("rounded-full bg-cover bg-center bg-no-repeat","ring-2 ring-white dark:ring-surface-dark shadow-sm",i[g],h),style:{backgroundImage:`url(${a})`},role:"img","aria-label":b}):(0,d.jsx)("div",{className:(0,e.cn)("rounded-full flex items-center justify-center font-semibold text-white","ring-2 ring-white dark:ring-surface-dark shadow-sm",i[g],(a=>{if(!a)return"bg-primary";let b=["bg-red-500","bg-orange-500","bg-amber-500","bg-yellow-500","bg-lime-500","bg-green-500","bg-emerald-500","bg-teal-500","bg-cyan-500","bg-sky-500","bg-blue-500","bg-indigo-500","bg-violet-500","bg-purple-500","bg-fuchsia-500","bg-pink-500","bg-rose-500"],c=a.charCodeAt(0)%b.length;return b[c]})(c),h),role:"img","aria-label":b,children:(a=>{if(!a)return"?";let b=a.split(" ");return b.length>=2?`${b[0][0]}${b[1][0]}`.toUpperCase():a.substring(0,2).toUpperCase()})(c)})}},29370:(a,b,c)=>{c.d(b,{default:()=>j});var d=c(48249),e=c(67484),f=c(74429);let g=[{icon:"terminal",label:"Terminal",desc:"Full shell access"},{icon:"cast",label:"Desktop",desc:"Screen sharing"},{icon:"folder_open",label:"Files",desc:"Browse & edit files"}],h=[{icon:"qr_code_scanner",text:"Scan QR to connect instantly"},{icon:"wifi_off",text:"No port forwarding needed"},{icon:"devices",text:"Works on any device"}];function i({isOpen:a,onClose:b}){return a?(0,f.createPortal)((0,d.jsxs)("div",{className:"fixed inset-0 z-[9999] flex items-center justify-center p-4",children:[(0,d.jsx)("div",{className:"absolute inset-0 bg-black/60 backdrop-blur-sm",onClick:b}),(0,d.jsxs)("div",{className:"relative w-full max-w-sm rounded-xl overflow-hidden shadow-2xl animate-in fade-in zoom-in-95 duration-200 flex flex-col bg-surface border border-black/10 dark:border-white/10",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between px-5 py-4 border-b border-black/5 dark:border-white/5",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)("div",{className:"w-7 h-7 rounded-lg flex items-center justify-center",style:{background:"#FF570A"},children:(0,d.jsx)("span",{className:"material-symbols-outlined text-white text-base",children:"terminal"})}),(0,d.jsx)("span",{className:"text-xs font-bold uppercase tracking-wider",style:{fontFamily:"monospace",color:"#FF570A"},children:"9Remote"})]}),(0,d.jsx)("button",{onClick:b,className:"w-7 h-7 flex items-center justify-center rounded-lg bg-black/5 dark:bg-white/5 border border-black/5 dark:border-white/10 text-text-muted hover:text-text-main transition-colors",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-base",children:"close"})})]}),(0,d.jsxs)("div",{className:"px-7 py-7 pb-9 flex flex-col gap-6",children:[(0,d.jsxs)("div",{className:"flex flex-col items-center gap-2 text-center mt-2",children:[(0,d.jsx)("div",{className:"w-14 h-14 rounded-2xl flex items-center justify-center mb-1",style:{background:"#FF570A",boxShadow:"rgba(255,87,10,0.35) 0px 8px 32px"},children:(0,d.jsx)("span",{className:"material-symbols-outlined text-white",style:{fontSize:30},children:"terminal"})}),(0,d.jsx)("h1",{className:"text-lg font-bold text-text-main tracking-tight",children:"9Remote"}),(0,d.jsx)("p",{className:"text-xs text-text-muted leading-5 max-w-[220px]",children:"Access your terminal, desktop & files from anywhere"})]}),(0,d.jsx)("div",{className:"flex gap-2 w-full",children:g.map(({icon:a,label:b,desc:c})=>(0,d.jsxs)("div",{className:"flex-1 flex flex-col items-center gap-1.5 py-4 px-1 rounded-xl border border-black/10 dark:border-white/10 bg-bg-alt",children:[(0,d.jsx)("span",{className:"material-symbols-outlined",style:{fontSize:22,color:"#ff6e33"},children:a}),(0,d.jsx)("p",{className:"text-xs font-semibold text-text-main",children:b}),(0,d.jsx)("p",{className:"text-[10px] text-text-muted text-center leading-4",children:c})]},b))}),(0,d.jsx)("div",{className:"flex flex-col gap-3 w-full",children:h.map(({icon:a,text:b})=>(0,d.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,d.jsx)("span",{className:"material-symbols-outlined flex-shrink-0",style:{fontSize:16,color:"#ff6e33"},children:a}),(0,d.jsx)("span",{className:"text-xs text-text-muted",children:b})]},a))}),(0,d.jsxs)("button",{onClick:()=>window.open("https://9remote.cc","_blank"),className:"w-full py-3.5 flex items-center justify-center gap-2 text-sm font-semibold text-white rounded-xl hover:opacity-90 active:scale-[0.98] transition-all",style:{background:"#FF570A",boxShadow:"0 4px 16px rgba(255,87,10,0.35)"},children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-base",children:"open_in_new"}),"Get 9Remote"]})]})]})]}),document.body):null}function j(){let[a,b]=(0,e.useState)(!1);return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("button",{onClick:()=>b(!0),className:"relative flex items-center gap-1.5 px-2.5 py-1.5 rounded-lg transition-all text-text-muted hover:text-text-main hover:bg-black/5 dark:hover:bg-white/5",title:"9Remote",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"computer"}),(0,d.jsx)("span",{className:"text-xs font-medium",children:"Remote"})]}),(0,d.jsx)(i,{isOpen:a,onClose:()=>b(!1)})]})}},32971:(a,b,c)=>{c.d(b,{default:()=>e});var d=c(48249);function e({text:a,children:b,position:c="top"}){return(0,d.jsxs)("div",{className:"relative inline-flex group",children:[b,(0,d.jsx)("div",{className:`pointer-events-none absolute ${{top:"bottom-full left-1/2 -translate-x-1/2 mb-1.5",bottom:"top-full left-1/2 -translate-x-1/2 mt-1.5",left:"right-full top-1/2 -translate-y-1/2 mr-1.5",right:"left-full top-1/2 -translate-y-1/2 ml-1.5"}[c]} z-50 w-max max-w-56 rounded px-2 py-1 text-[11px] leading-snug bg-gray-900 text-white opacity-0 group-hover:opacity-100 transition-opacity duration-150 whitespace-normal`,children:a})]})}},39645:(a,b,c)=>{c.d(b,{default:()=>h});var d=c(48249),e=c(67484),f=c(95145),g=c(99070);function h({isOpen:a,onClose:b,title:c="Manual Configuration",configs:i=[]}){let[j,k]=(0,e.useState)(null),l=async(a,b)=>{try{await navigator.clipboard.writeText(a),k(b),setTimeout(()=>k(null),2e3)}catch(a){console.log("Failed to copy:",a)}};return(0,d.jsx)(f.default,{isOpen:a,onClose:b,title:c,size:"xl",children:(0,d.jsx)("div",{className:"flex flex-col gap-4",children:i.map((a,b)=>(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("span",{className:"text-sm font-medium text-text-main",children:a.filename}),(0,d.jsxs)(g.default,{variant:"ghost",size:"sm",onClick:()=>l(a.content,b),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:j===b?"check":"content_copy"}),j===b?"Copied!":"Copy"]})]}),(0,d.jsx)("pre",{className:"px-3 py-2 bg-black/5 dark:bg-white/5 rounded font-mono text-xs overflow-x-auto whitespace-pre-wrap break-all max-h-60 overflow-y-auto border border-border",children:a.content})]},b))})})}},41371:(a,b,c)=>{c.d(b,{i:()=>f});var d=c(31417);let e=0,f=(0,d.v)((a,b)=>({notifications:[],addNotification:c=>{let d=++e,f={id:d,type:c.type||"info",message:c.message,title:c.title||null,duration:c.duration??5e3,dismissible:c.dismissible??!0,createdAt:Date.now()};return a(a=>({notifications:[...a.notifications,f]})),f.duration>0&&setTimeout(()=>b().removeNotification(d),f.duration),d},removeNotification:b=>{a(a=>({notifications:a.notifications.filter(a=>a.id!==b)}))},clearAll:()=>a({notifications:[]}),success:(a,c)=>b().addNotification({type:"success",message:a,title:c}),error:(a,c)=>b().addNotification({type:"error",message:a,title:c,duration:8e3}),warning:(a,c)=>b().addNotification({type:"warning",message:a,title:c}),info:(a,c)=>b().addNotification({type:"info",message:a,title:c})}))},42118:(a,b,c)=>{c.d(b,{D:()=>i});var d=c(67484),e=c(13033);function f(a){return()=>{}}function g(){return!1}function h(){return!1}function i(){let{theme:a,setTheme:b,toggleTheme:c,initTheme:i}=(0,e.A)(),j=(0,d.useSyncExternalStore)(f,g,h);return{theme:a,setTheme:b,toggleTheme:c,isDark:"dark"===a||"system"===a&&j}}},42196:(a,b,c)=>{c.d(b,{default:()=>t});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(2116),i=c.n(h),j=c(19099),k=c(71404),l=c(12020),m=c(96919),n=c(99070),o=c(95145);let p=["embedding","tts"],q=[{href:"/dashboard/endpoint",label:"Endpoint",icon:"api"},{href:"/dashboard/providers",label:"Providers",icon:"dns"},{href:"/dashboard/combos",label:"Combos",icon:"layers"},{href:"/dashboard/usage",label:"Usage",icon:"bar_chart"},{href:"/dashboard/quota",label:"Quota Tracker",icon:"data_usage"},{href:"/dashboard/mitm",label:"MITM",icon:"security"},{href:"/dashboard/cli-tools",label:"CLI Tools",icon:"terminal"}],r=[{href:"/dashboard/console-log",label:"Console Log",icon:"terminal"},{href:"/dashboard/translator",label:"Translator",icon:"translate"}],s=[{href:"/dashboard/proxy-pools",label:"Proxy Pools",icon:"lan"}];function t({onClose:a}){let b=(0,j.usePathname)(),[c,f]=(0,e.useState)(!1),[g,h]=(0,e.useState)(!1),[u,v]=(0,e.useState)(!1),[w,x]=(0,e.useState)(!1),[y,z]=(0,e.useState)(null),[A,B]=(0,e.useState)(!1),C=a=>"/dashboard/endpoint"===a?"/dashboard"===b||b.startsWith("/dashboard/endpoint"):b.startsWith(a),D=async()=>{v(!0);try{await fetch("/api/shutdown",{method:"POST"})}catch(a){}v(!1),h(!1),x(!0)};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("aside",{className:"flex w-72 flex-col border-r border-black/5 dark:border-white/5 bg-vibrancy backdrop-blur-xl transition-colors duration-300 min-h-full",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 px-6 pt-5 pb-2",children:[(0,d.jsx)("div",{className:"w-3 h-3 rounded-full bg-[#FF5F56]"}),(0,d.jsx)("div",{className:"w-3 h-3 rounded-full bg-[#FFBD2E]"}),(0,d.jsx)("div",{className:"w-3 h-3 rounded-full bg-[#27C93F]"})]}),(0,d.jsxs)("div",{className:"px-6 py-4 flex flex-col gap-2",children:[(0,d.jsxs)(i(),{href:"/dashboard",className:"flex items-center gap-3",children:[(0,d.jsx)("div",{className:"flex items-center justify-center size-9 rounded bg-linear-to-br from-[#f97815] to-[#c2590a]",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-white text-[20px]",children:"hub"})}),(0,d.jsxs)("div",{className:"flex flex-col",children:[(0,d.jsx)("h1",{className:"text-lg font-semibold tracking-tight text-text-main",children:l.vQ.name}),(0,d.jsxs)("span",{className:"text-xs text-text-muted",children:["v",l.vQ.version]})]})]}),y&&(0,d.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,d.jsxs)("span",{className:"text-xs font-semibold text-green-600 dark:text-amber-500",children:["↑ New version available: v",y.latestVersion]}),(0,d.jsx)("code",{className:"text-[10px] text-green-600/80 dark:text-amber-400/70 font-mono select-all",children:"npm install -g 9router@latest"})]})]}),(0,d.jsxs)("nav",{className:"flex-1 px-4 py-2 space-y-1 overflow-y-auto custom-scrollbar",children:[q.map(b=>(0,d.jsxs)(i(),{href:b.href,onClick:a,className:(0,k.cn)("flex items-center gap-3 px-4 py-2 rounded-lg transition-all group",C(b.href)?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface/50 hover:text-text-main"),children:[(0,d.jsx)("span",{className:(0,k.cn)("material-symbols-outlined text-[18px]",C(b.href)?"fill-1":"group-hover:text-primary transition-colors"),children:b.icon}),(0,d.jsx)("span",{className:"text-sm font-medium",children:b.label})]},b.href)),(0,d.jsxs)("div",{className:"pt-4 mt-2",children:[(0,d.jsx)("p",{className:"px-4 text-xs font-semibold text-text-muted/60 uppercase tracking-wider mb-2",children:"System"}),(0,d.jsxs)("button",{onClick:()=>f(a=>!a),className:(0,k.cn)("w-full flex items-center gap-3 px-4 py-2 rounded-lg transition-all group",b.startsWith("/dashboard/media-providers")?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface/50 hover:text-text-main"),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"perm_media"}),(0,d.jsx)("span",{className:"text-sm font-medium flex-1 text-left",children:"Media Providers"}),(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] transition-transform",style:{transform:c?"rotate(180deg)":"rotate(0deg)"},children:"expand_more"})]}),c&&(0,d.jsx)("div",{className:"pl-4",children:m.rj.filter(a=>p.includes(a.id)).map(c=>(0,d.jsxs)(i(),{href:`/dashboard/media-providers/${c.id}`,onClick:a,className:(0,k.cn)("flex items-center gap-3 px-4 py-1.5 rounded-lg transition-all group",b.startsWith(`/dashboard/media-providers/${c.id}`)?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface/50 hover:text-text-main"),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:c.icon}),(0,d.jsx)("span",{className:"text-sm",children:c.label})]},c.id))}),s.map(b=>(0,d.jsxs)(i(),{href:b.href,onClick:a,className:(0,k.cn)("flex items-center gap-3 px-4 py-2 rounded-lg transition-all group",C(b.href)?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface/50 hover:text-text-main"),children:[(0,d.jsx)("span",{className:(0,k.cn)("material-symbols-outlined text-[18px]",C(b.href)?"fill-1":"group-hover:text-primary transition-colors"),children:b.icon}),(0,d.jsx)("span",{className:"text-sm font-medium",children:b.label})]},b.href)),r.map(b=>"/dashboard/translator"!==b.href||A?(0,d.jsxs)(i(),{href:b.href,onClick:a,className:(0,k.cn)("flex items-center gap-3 px-4 py-2 rounded-lg transition-all group",C(b.href)?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface/50 hover:text-text-main"),children:[(0,d.jsx)("span",{className:(0,k.cn)("material-symbols-outlined text-[18px]",C(b.href)?"fill-1":"group-hover:text-primary transition-colors"),children:b.icon}),(0,d.jsx)("span",{className:"text-sm font-medium",children:b.label})]},b.href):null),(0,d.jsxs)(i(),{href:"/dashboard/profile",onClick:a,className:(0,k.cn)("flex items-center gap-3 px-4 py-2 rounded-lg transition-all group",C("/dashboard/profile")?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface/50 hover:text-text-main"),children:[(0,d.jsx)("span",{className:(0,k.cn)("material-symbols-outlined text-[18px]",C("/dashboard/profile")?"fill-1":"group-hover:text-primary transition-colors"),children:"settings"}),(0,d.jsx)("span",{className:"text-sm font-medium",children:"Settings"})]})]})]}),(0,d.jsx)("div",{className:"p-3 border-t border-black/5 dark:border-white/5",children:(0,d.jsx)(n.default,{variant:"outline",fullWidth:!0,icon:"power_settings_new",onClick:()=>h(!0),className:"text-red-500 border-red-200 hover:bg-red-50 hover:border-red-300",children:"Shutdown"})})]}),(0,d.jsx)(o.ConfirmModal,{isOpen:g,onClose:()=>h(!1),onConfirm:D,title:"Close Proxy",message:"Are you sure you want to close the proxy server?",confirmText:"Close",cancelText:"Cancel",variant:"danger",loading:u}),w&&(0,d.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/80 backdrop-blur-sm",children:(0,d.jsxs)("div",{className:"text-center p-8",children:[(0,d.jsx)("div",{className:"flex items-center justify-center size-16 rounded-full bg-red-500/20 text-red-500 mx-auto mb-4",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[32px]",children:"power_off"})}),(0,d.jsx)("h2",{className:"text-xl font-semibold text-white mb-2",children:"Server Disconnected"}),(0,d.jsx)("p",{className:"text-text-muted mb-6",children:"The proxy server has been stopped."}),(0,d.jsx)(n.default,{variant:"secondary",onClick:()=>globalThis.location.reload(),children:"Reload Page"})]})})]})}t.propTypes={onClose:g().func}},43182:(a,b,c)=>{c.d(b,{default:()=>j});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(50412);let i="https://gitlab.com";function j({isOpen:a,providerInfo:b,onSuccess:c,onClose:f}){let[g,k]=(0,e.useState)(null),[l,m]=(0,e.useState)(i),[n,o]=(0,e.useState)(""),[p,q]=(0,e.useState)(""),[r,s]=(0,e.useState)(""),[t,u]=(0,e.useState)(!1),[v,w]=(0,e.useState)(null),[x,y]=(0,e.useState)(!1),[z,A]=(0,e.useState)(null),B=()=>{k(null),m(i),o(""),q(""),s(""),w(null),u(!1),y(!1),A(null),f()},C=async()=>{if(!r.trim())return void w("Personal Access Token is required");u(!0),w(null);try{let a=await fetch("/api/oauth/gitlab/pat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:r.trim(),baseUrl:l.trim()||i})}),b=await a.json();if(!a.ok)throw Error(b.error||"Authentication failed");c?.(),B()}catch(a){w(a.message)}finally{u(!1)}};return a?x&&z?(0,d.jsx)(h.LF,{isOpen:!0,provider:"gitlab",providerInfo:b,oauthMeta:z,onSuccess:()=>{c?.(),B()},onClose:()=>{y(!1),A(null)}}):(0,d.jsx)(h.aF,{isOpen:a,title:"Connect GitLab Duo",onClose:B,size:"lg",children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[!g&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Choose how to authenticate with GitLab Duo:"}),(0,d.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,d.jsxs)("button",{onClick:()=>k("oauth"),className:"flex flex-col items-center gap-2 p-4 rounded-lg border border-border hover:border-primary hover:bg-primary/5 transition-colors text-left",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-2xl text-primary",children:"lock_open"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium",children:"OAuth App"}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:"Use a GitLab OAuth application"})]})]}),(0,d.jsxs)("button",{onClick:()=>k("pat"),className:"flex flex-col items-center gap-2 p-4 rounded-lg border border-border hover:border-primary hover:bg-primary/5 transition-colors text-left",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-2xl text-primary",children:"key"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium",children:"Personal Access Token"}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:"Use a GitLab PAT with api scope"})]})]})]})]}),"oauth"===g&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("p",{className:"text-xs text-text-muted",children:["Create an OAuth app at"," ",(0,d.jsx)("a",{href:`${l.trim()||i}/-/profile/applications`,target:"_blank",rel:"noreferrer",className:"text-primary underline",children:"GitLab Applications"})," ","with redirect URI"," ",(0,d.jsx)("code",{className:"bg-sidebar px-1 rounded text-xs",children:"http://localhost/callback"})]}),(0,d.jsx)(h.pd,{label:"GitLab Base URL",value:l,onChange:a=>m(a.target.value),placeholder:i}),(0,d.jsx)(h.pd,{label:"Client ID",value:n,onChange:a=>o(a.target.value),placeholder:"Your OAuth application client ID"}),(0,d.jsx)(h.pd,{label:"Client Secret (optional for PKCE)",value:p,onChange:a=>q(a.target.value),placeholder:"Leave empty for public PKCE app"}),v&&(0,d.jsx)("p",{className:"text-sm text-red-500",children:v}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:()=>{n.trim()?(w(null),A({baseUrl:l.trim()||i,clientId:n.trim(),clientSecret:p.trim()}),y(!0)):w("Client ID is required")},fullWidth:!0,disabled:!n.trim(),children:"Authorize"}),(0,d.jsx)(h.$n,{onClick:()=>{k(null),w(null)},variant:"ghost",fullWidth:!0,children:"Back"})]})]}),"pat"===g&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("p",{className:"text-xs text-text-muted",children:["Create a PAT at"," ",(0,d.jsx)("a",{href:`${l.trim()||i}/-/user_settings/personal_access_tokens`,target:"_blank",rel:"noreferrer",className:"text-primary underline",children:"GitLab Access Tokens"})," ","with scopes: ",(0,d.jsx)("code",{className:"bg-sidebar px-1 rounded text-xs",children:"api"}),","," ",(0,d.jsx)("code",{className:"bg-sidebar px-1 rounded text-xs",children:"read_user"}),", and"," ",(0,d.jsx)("code",{className:"bg-sidebar px-1 rounded text-xs",children:"ai_features"}),"."]}),(0,d.jsx)(h.pd,{label:"GitLab Base URL",value:l,onChange:a=>m(a.target.value),placeholder:i}),(0,d.jsx)(h.pd,{label:"Personal Access Token",value:r,onChange:a=>s(a.target.value),placeholder:"glpat-xxxxxxxxxxxxxxxxxxxx",type:"password"}),v&&(0,d.jsx)("p",{className:"text-sm text-red-500",children:v}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:C,fullWidth:!0,disabled:!r.trim()||t,loading:t,children:"Connect"}),(0,d.jsx)(h.$n,{onClick:()=>{k(null),w(null)},variant:"ghost",fullWidth:!0,children:"Back"})]})]})]})}):null}j.propTypes={isOpen:g().bool.isRequired,providerInfo:g().shape({name:g().string}),onSuccess:g().func,onClose:g().func.isRequired}},48781:(a,b,c)=>{c.d(b,{default:()=>k});var d=c(48249),e=c(2116),f=c.n(e),g=c(12020);let h=[{label:"Features",href:"#features"},{label:"Pricing",href:"#pricing"},{label:"Changelog",href:"#"}],i=[{label:"Documentation",href:"#"},{label:"API Reference",href:"#"},{label:"Help Center",href:"#"}],j=[{label:"About",href:"#"},{label:"Blog",href:"#"},{label:"Contact",href:"#"}];function k(){return(0,d.jsx)("footer",{className:"bg-bg border-t border-border pt-16 pb-12",children:(0,d.jsxs)("div",{className:"container mx-auto px-4 sm:px-6 lg:px-8",children:[(0,d.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 lg:grid-cols-5 gap-10 mb-12",children:[(0,d.jsxs)("div",{className:"col-span-2 lg:col-span-2",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 mb-6",children:[(0,d.jsx)("div",{className:"size-6 text-primary",children:(0,d.jsx)("svg",{className:"w-full h-full",fill:"currentColor",viewBox:"0 0 48 48",children:(0,d.jsx)("path",{clipRule:"evenodd",d:"M12.0799 24L4 19.2479L9.95537 8.75216L18.04 13.4961L18.0446 4H29.9554L29.96 13.4961L38.0446 8.75216L44 19.2479L35.92 24L44 28.7521L38.0446 39.2479L29.96 34.5039L29.9554 44H18.0446L18.04 34.5039L9.95537 39.2479L4 28.7521L12.0799 24Z",fillRule:"evenodd"})})}),(0,d.jsx)("span",{className:"text-xl font-bold text-text-main",children:g.vQ.name})]}),(0,d.jsx)("p",{className:"text-text-muted mb-6 max-w-sm font-light",children:"The unified interface for modern AI infrastructure. Secure, observable, and scalable."}),(0,d.jsxs)("div",{className:"flex gap-4",children:[(0,d.jsx)("a",{href:"#",className:"text-gray-400 hover:text-primary transition-colors","aria-label":"Twitter",children:(0,d.jsx)("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{d:"M22.46 6c-.77.35-1.6.58-2.46.69.88-.53 1.56-1.37 1.88-2.38-.83.5-1.75.85-2.72 1.05C18.37 4.5 17.26 4 16 4c-2.35 0-4.27 1.92-4.27 4.29 0 .34.04.67.11.98C8.28 9.09 5.11 7.38 3 4.79c-.37.63-.58 1.37-.58 2.15 0 1.49.75 2.81 1.91 3.56-.71 0-1.37-.2-1.95-.5v.03c0 2.08 1.48 3.82 3.44 4.21a4.22 4.22 0 0 1-1.93.07 4.28 4.28 0 0 0 4 2.98 8.521 8.521 0 0 1-5.33 1.84c-.34 0-.68-.02-1.02-.06C3.44 20.29 5.7 21 8.12 21 16 21 20.33 14.46 20.33 8.79c0-.19 0-.37-.01-.56.84-.6 1.56-1.36 2.14-2.23z"})})}),(0,d.jsx)("a",{href:"#",className:"text-gray-400 hover:text-primary transition-colors","aria-label":"GitHub",children:(0,d.jsx)("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0 1 12 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0 0 22 12.017C22 6.484 17.522 2 12 2z"})})})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h4",{className:"font-semibold text-text-main mb-4",children:"Product"}),(0,d.jsx)("ul",{className:"flex flex-col gap-3 text-sm text-text-muted font-light",children:h.map(a=>(0,d.jsx)("li",{children:(0,d.jsx)(f(),{href:a.href,className:"hover:text-primary transition-colors",children:a.label})},a.label))})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h4",{className:"font-semibold text-text-main mb-4",children:"Resources"}),(0,d.jsx)("ul",{className:"flex flex-col gap-3 text-sm text-text-muted font-light",children:i.map(a=>(0,d.jsx)("li",{children:(0,d.jsx)(f(),{href:a.href,className:"hover:text-primary transition-colors",children:a.label})},a.label))})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h4",{className:"font-semibold text-text-main mb-4",children:"Company"}),(0,d.jsx)("ul",{className:"flex flex-col gap-3 text-sm text-text-muted font-light",children:j.map(a=>(0,d.jsx)("li",{children:(0,d.jsx)(f(),{href:a.href,className:"hover:text-primary transition-colors",children:a.label})},a.label))})]})]}),(0,d.jsxs)("div",{className:"border-t border-border pt-8 flex flex-col md:flex-row justify-between items-center gap-4",children:[(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:["\xa9 ",new Date().getFullYear()," ",g.vQ.name," Inc. All rights reserved."]}),(0,d.jsxs)("div",{className:"flex gap-6 text-sm text-text-muted",children:[(0,d.jsx)(f(),{href:"#",className:"hover:text-primary transition-colors",children:"Privacy Policy"}),(0,d.jsx)(f(),{href:"#",className:"hover:text-primary transition-colors",children:"Terms of Service"})]})]})]})})}},50377:(a,b,c)=>{c.d(b,{C:()=>e});var d=c(67484);function e(a=2e3){let[b,c]=(0,d.useState)(null),f=(0,d.useRef)(null);return{copied:b,copy:(0,d.useCallback)((b,d="default")=>{navigator.clipboard.writeText(b),c(d),f.current&&clearTimeout(f.current),f.current=setTimeout(()=>{c(null)},a)},[a])}}},50412:(a,b,c)=>{c.d(b,{Ex:()=>j.default,$n:()=>d.default,Zp:()=>g.default,Qv:()=>i.CardSkeleton,G9:()=>t.default,wI:()=>w.default,vj:()=>v.default,vE:()=>u.default,pd:()=>e.default,Mh:()=>s.default,c5:()=>q.default,uR:()=>o.default,aF:()=>h.default,rq:()=>n.default,LF:()=>m.default,gM:()=>r.default,Iz:()=>x.default,l6:()=>f.default,UW:()=>l.default,lM:()=>k.default,m_:()=>y.default,jK:()=>p.default});var d=c(99070),e=c(83552),f=c(4770),g=c(17660),h=c(95145),i=c(74812);c(25919);var j=c(75171),k=c(95514),l=c(53845);c(19308),c(42196),c(86739),c(48781);var m=c(79346),n=c(83352),o=c(39645),p=c(87226),q=c(267);c(29370);var r=c(91809);c(86209);var s=c(5291);c(56110);var t=c(51109),u=c(79488),v=c(43182),w=c(51585),x=c(91099),y=c(32971);c(85306),c(53838)},51109:(a,b,c)=>{c.d(b,{default:()=>i});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(50412);function i({isOpen:a,onSuccess:b,onClose:c}){let[f,g]=(0,e.useState)(""),[j,k]=(0,e.useState)(""),[l,m]=(0,e.useState)(null),[n,o]=(0,e.useState)(!1),[p,q]=(0,e.useState)(!1),[r,s]=(0,e.useState)(!1),[t,u]=(0,e.useState)(!1),v=async()=>{q(!0),m(null),s(!1),u(!1);try{let a=await fetch("/api/oauth/cursor/auto-import"),b=await a.json();b.found?(g(b.accessToken),k(b.machineId),s(!0)):b.windowsManual?u(!0):m(b.error||"Could not auto-detect tokens")}catch(a){m("Failed to auto-detect tokens")}finally{q(!1)}},w=async()=>{if(!f.trim())return void m("Please enter an access token");if(!j.trim())return void m("Please enter a machine ID");o(!0),m(null);try{let a=await fetch("/api/oauth/cursor/import",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({accessToken:f.trim(),machineId:j.trim()})}),d=await a.json();if(!a.ok)throw Error(d.error||"Import failed");b?.(),c()}catch(a){m(a.message)}finally{o(!1)}};return(0,d.jsx)(h.aF,{isOpen:a,title:"Connect Cursor IDE",onClose:c,children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[p&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-primary/10 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-primary animate-spin",children:"progress_activity"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Auto-detecting tokens..."}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Reading from Cursor IDE database"})]}),!p&&(0,d.jsxs)(d.Fragment,{children:[r&&(0,d.jsx)("div",{className:"bg-green-50 dark:bg-green-900/20 p-3 rounded-lg border border-green-200 dark:border-green-800",children:(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-green-600 dark:text-green-400",children:"check_circle"}),(0,d.jsx)("p",{className:"text-sm text-green-800 dark:text-green-200",children:"Tokens auto-detected from Cursor IDE successfully!"})]})}),t&&(0,d.jsxs)("div",{className:"bg-amber-50 dark:bg-amber-900/20 p-3 rounded-lg border border-amber-200 dark:border-amber-800 flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"flex gap-2 items-center",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-amber-600 dark:text-amber-400",children:"info"}),(0,d.jsx)("p",{className:"text-sm font-medium text-amber-800 dark:text-amber-200",children:"Could not read Cursor database automatically."})]}),(0,d.jsxs)("p",{className:"text-xs text-amber-700 dark:text-amber-300",children:["Make sure Cursor IDE has been opened at least once, then click ",(0,d.jsx)("strong",{children:"Retry"}),". If the problem persists, paste your tokens manually below."]}),(0,d.jsx)(h.$n,{onClick:v,variant:"outline",fullWidth:!0,children:"Retry"})]}),!r&&!t&&!l&&(0,d.jsx)("div",{className:"bg-blue-50 dark:bg-blue-900/20 p-3 rounded-lg border border-blue-200 dark:border-blue-800",children:(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-blue-600 dark:text-blue-400",children:"info"}),(0,d.jsx)("p",{className:"text-sm text-blue-800 dark:text-blue-200",children:"Cursor IDE not detected. Please paste your tokens manually."})]})}),(0,d.jsxs)("div",{children:[(0,d.jsxs)("label",{className:"block text-sm font-medium mb-2",children:["Access Token ",(0,d.jsx)("span",{className:"text-red-500",children:"*"})]}),(0,d.jsx)("textarea",{value:f,onChange:a=>g(a.target.value),placeholder:"Access token will be auto-filled...",rows:3,className:"w-full px-3 py-2 text-sm font-mono border border-border rounded-lg bg-background focus:outline-none focus:border-primary resize-none"})]}),(0,d.jsxs)("div",{children:[(0,d.jsxs)("label",{className:"block text-sm font-medium mb-2",children:["Machine ID ",(0,d.jsx)("span",{className:"text-red-500",children:"*"})]}),(0,d.jsx)(h.pd,{value:j,onChange:a=>k(a.target.value),placeholder:"Machine ID will be auto-filled...",className:"font-mono text-sm"})]}),l&&(0,d.jsx)("div",{className:"bg-red-50 dark:bg-red-900/20 p-3 rounded-lg border border-red-200 dark:border-red-800",children:(0,d.jsx)("p",{className:"text-sm text-red-600 dark:text-red-400",children:l})}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:w,fullWidth:!0,disabled:n||!f.trim()||!j.trim(),children:n?"Importing...":"Import Token"}),(0,d.jsx)(h.$n,{onClick:c,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})]})})}i.propTypes={isOpen:g().bool.isRequired,onSuccess:g().func,onClose:g().func.isRequired}},51585:(a,b,c)=>{c.d(b,{default:()=>m});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(95145),i=c(83552),j=c(99070),k=c(75171),l=c(96919);function m({isOpen:a,connection:b,proxyPools:c,onSave:f,onClose:g}){let[n,o]=(0,e.useState)({name:"",priority:1,apiKey:""}),[p,q]=(0,e.useState)(!1),[r,s]=(0,e.useState)(null),[t,u]=(0,e.useState)(!1),[v,w]=(0,e.useState)(null),[x,y]=(0,e.useState)(!1),z=b?.authType==="oauth",A=!!b&&((0,l.mq)(b.provider)||(0,l.gb)(b.provider)),B=async()=>{if(b?.provider){q(!0),s(null);try{let a=await fetch(`/api/providers/${b.id}/test`,{method:"POST"}),c=await a.json();s(c.valid?"success":"failed")}catch{s("failed")}finally{q(!1)}}},C=async()=>{if(b?.provider&&n.apiKey){u(!0),w(null);try{let a=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:b.provider,apiKey:n.apiKey})}),c=await a.json();w(c.valid?"success":"failed")}catch{w("failed")}finally{u(!1)}}},D=async()=>{if(b){y(!0);try{let a={name:n.name,priority:n.priority};if(!z&&n.apiKey){a.apiKey=n.apiKey;let c="success"===v;if(!c)try{u(!0),w(null);let a=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:b.provider,apiKey:n.apiKey})});c=!!(await a.json()).valid,w(c?"success":"failed")}catch{w("failed")}finally{u(!1)}c&&(a.testStatus="active",a.lastError=null,a.lastErrorAt=null)}await f(a)}finally{y(!1)}}};return b?(0,d.jsx)(h.default,{isOpen:a,title:"Edit Connection",onClose:g,children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)(i.default,{label:"Name",value:n.name,onChange:a=>o({...n,name:a.target.value}),placeholder:z?"Account name":"Production Key"}),z&&b.email&&(0,d.jsxs)("div",{className:"bg-sidebar/50 p-3 rounded-lg",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted mb-1",children:"Email"}),(0,d.jsx)("p",{className:"font-medium",children:b.email})]}),(0,d.jsx)(i.default,{label:"Priority",type:"number",value:n.priority,onChange:a=>o({...n,priority:Number.parseInt(a.target.value,10)||1})}),!z&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(i.default,{label:"API Key",type:"password",value:n.apiKey,onChange:a=>o({...n,apiKey:a.target.value}),placeholder:"Enter new API key",hint:"Leave blank to keep the current API key.",className:"flex-1"}),(0,d.jsx)("div",{className:"pt-6",children:(0,d.jsx)(j.default,{onClick:C,disabled:!n.apiKey||t||x,variant:"secondary",children:t?"Checking...":"Check"})})]}),v&&(0,d.jsx)(k.default,{variant:"success"===v?"success":"error",children:"success"===v?"Valid":"Invalid"})]}),!A&&(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)(j.default,{onClick:B,variant:"secondary",disabled:p,children:p?"Testing...":"Test Connection"}),r&&(0,d.jsx)(k.default,{variant:"success"===r?"success":"error",children:"success"===r?"Valid":"Failed"})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.default,{onClick:D,fullWidth:!0,disabled:x,children:x?"Saving...":"Save"}),(0,d.jsx)(j.default,{onClick:g,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}):null}m.propTypes={isOpen:g().bool.isRequired,connection:g().shape({id:g().string,name:g().string,email:g().string,priority:g().number,authType:g().string,provider:g().string,providerSpecificData:g().object}),proxyPools:g().arrayOf(g().shape({id:g().string,name:g().string})),onSave:g().func.isRequired,onClose:g().func.isRequired}},53838:(a,b,c)=>{c.d(b,{default:()=>h});var d=c(48249),e=c(49885),f=c.n(e),g=c(53845);function h({children:a}){return(0,d.jsxs)("div",{className:"min-h-screen flex flex-col relative bg-bg transition-colors duration-500 overflow-x-hidden selection:bg-primary/20 selection:text-primary",children:[(0,d.jsx)("div",{className:"fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[800px] h-[800px] bg-primary/5 dark:bg-primary/5 rounded-full blur-[100px] pointer-events-none z-0"}),(0,d.jsx)("div",{className:"fixed bottom-0 right-0 w-[600px] h-[600px] bg-orange-200/20 dark:bg-orange-900/10 rounded-full blur-[120px] pointer-events-none z-0 translate-y-1/3 translate-x-1/3"}),(0,d.jsx)("div",{className:"absolute top-6 right-6 z-20",children:(0,d.jsx)(g.default,{variant:"card"})}),(0,d.jsx)("main",{className:"flex-1 flex flex-col items-center justify-center p-4 sm:p-6 z-10 w-full h-full",children:a})]})}h.propTypes={children:f().node.isRequired}},53845:(a,b,c)=>{c.d(b,{default:()=>g});var d=c(48249),e=c(42118),f=c(71404);function g({className:a,variant:b="default"}){let{theme:c,toggleTheme:h,isDark:i}=(0,e.D)(),j={default:(0,f.cn)("flex items-center justify-center size-10 rounded-full","text-text-muted","hover:bg-black/5","hover:text-text-main","transition-colors"),card:(0,f.cn)("flex items-center justify-center size-11 rounded-full","bg-surface/60","hover:bg-surface","border border-border","backdrop-blur-md shadow-sm hover:shadow-md","text-text-muted-light hover:text-primary","hover:text-primary","transition-all group")};return(0,d.jsx)("button",{onClick:h,className:(0,f.cn)(j[b],a),"aria-label":`Switch to ${i?"light":"dark"} mode`,title:`Switch to ${i?"light":"dark"} mode`,children:(0,d.jsx)("span",{className:(0,f.cn)("material-symbols-outlined text-[22px]","card"===b&&"transition-transform duration-300 group-hover:rotate-12"),children:i?"light_mode":"dark_mode"})})}},56110:(a,b,c)=>{c.d(b,{default:()=>j});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(50412),i=c(50377);function j({isOpen:a,provider:b,onSuccess:c,onClose:f}){let[g,k]=(0,e.useState)("loading"),[l,m]=(0,e.useState)(""),[n,o]=(0,e.useState)(null),[p,q]=(0,e.useState)(""),[r,s]=(0,e.useState)(null),{copied:t,copy:u}=(0,i.C)(),v=async()=>{try{let a;s(null);try{a=new URL(p)}catch(a){throw Error("Invalid callback URL format")}let d=a.searchParams.get("code");a.searchParams.get("state");let e=a.searchParams.get("error");if(e)throw Error(a.searchParams.get("error_description")||e);if(!d)throw Error("No authorization code found in URL");let f=await fetch("/api/oauth/kiro/social-exchange",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:d,codeVerifier:n.codeVerifier,provider:b})}),g=await f.json();if(!f.ok)throw Error(g.error);k("success"),c?.()}catch(a){s(a.message),k("error")}},w="google"===b?"Google":"GitHub";return(0,d.jsx)(h.aF,{isOpen:a,title:`Connect Kiro via ${w}`,onClose:f,size:"lg",children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:["loading"===g&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-primary/10 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-primary animate-spin",children:"progress_activity"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Initializing..."}),(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:["Setting up ",w," authentication"]})]}),"input"===g&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium mb-2",children:"Step 1: Open this URL in your browser"}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.pd,{value:l,readOnly:!0,className:"flex-1 font-mono text-xs"}),(0,d.jsx)(h.$n,{variant:"secondary",icon:"auth_url"===t?"check":"content_copy",onClick:()=>u(l,"auth_url"),children:"Copy"})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium mb-2",children:"Step 2: Paste the callback URL here"}),(0,d.jsx)("p",{className:"text-xs text-text-muted mb-2",children:"After authorization, copy the full URL from your browser address bar."}),(0,d.jsx)(h.pd,{value:p,onChange:a=>q(a.target.value),placeholder:"kiro://kiro.kiroAgent/authenticate-success?code=...",className:"font-mono text-xs"})]})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:v,fullWidth:!0,disabled:!p,children:"Connect"}),(0,d.jsx)(h.$n,{onClick:f,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),"success"===g&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-green-100 dark:bg-green-900/30 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-green-600",children:"check_circle"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Connected Successfully!"}),(0,d.jsxs)("p",{className:"text-sm text-text-muted mb-4",children:["Your Kiro account via ",w," has been connected."]}),(0,d.jsx)(h.$n,{onClick:f,fullWidth:!0,children:"Done"})]}),"error"===g&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-red-100 dark:bg-red-900/30 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-red-600",children:"error"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Connection Failed"}),(0,d.jsx)("p",{className:"text-sm text-red-600 mb-4",children:r}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:()=>k("input"),variant:"secondary",fullWidth:!0,children:"Try Again"}),(0,d.jsx)(h.$n,{onClick:f,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})]})})}j.propTypes={isOpen:g().bool.isRequired,provider:g().oneOf(["google","github"]).isRequired,onSuccess:g().func,onClose:g().func.isRequired}},71404:(a,b,c)=>{c.d(b,{cn:()=>d});function d(...a){return a.filter(Boolean).join(" ").replace(/\s+/g," ").trim()}},72738:(a,b,c)=>{c.d(b,{A:()=>h});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f);function h({src:a,alt:b,size:c=32,className:f="",fallbackText:g="?",fallbackColor:i}){let[j,k]=(0,e.useState)(!1);return!a||j?(0,d.jsx)("span",{className:`inline-flex items-center justify-center font-bold rounded-lg ${f}`.trim(),style:{width:c,height:c,color:i,fontSize:Math.max(10,Math.floor(.38*c))},children:g}):(0,d.jsx)("img",{src:a,alt:b,width:c,height:c,className:f,onError:()=>k(!0)})}h.propTypes={src:g().string,alt:g().string,size:g().number,className:g().string,fallbackText:g().string,fallbackColor:g().string}},74812:(a,b,c)=>{c.d(b,{CardSkeleton:()=>i,PageLoading:()=>g,Skeleton:()=>h,Spinner:()=>f,default:()=>j});var d=c(48249),e=c(71404);function f({size:a="md",className:b}){return(0,d.jsx)("span",{className:(0,e.cn)("material-symbols-outlined animate-spin text-primary",{sm:"size-4",md:"size-6",lg:"size-8",xl:"size-12"}[a],b),children:"progress_activity"})}function g({message:a="Loading..."}){return(0,d.jsxs)("div",{className:"fixed inset-0 z-50 flex flex-col items-center justify-center bg-bg",children:[(0,d.jsx)(f,{size:"xl"}),(0,d.jsx)("p",{className:"mt-4 text-text-muted",children:a})]})}function h({className:a,...b}){return(0,d.jsx)("div",{className:(0,e.cn)("animate-pulse rounded-lg bg-border",a),...b})}function i(){return(0,d.jsxs)("div",{className:"p-6 rounded-xl border border-border bg-surface",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,d.jsx)(h,{className:"h-4 w-24"}),(0,d.jsx)(h,{className:"size-10 rounded-lg"})]}),(0,d.jsx)(h,{className:"h-8 w-16 mb-2"}),(0,d.jsx)(h,{className:"h-3 w-20"})]})}function j({type:a="spinner",...b}){switch(a){case"page":return(0,d.jsx)(g,{...b});case"skeleton":return(0,d.jsx)(h,{...b});case"card":return(0,d.jsx)(i,{...b});default:return(0,d.jsx)(f,{...b})}}},75171:(a,b,c)=>{c.d(b,{default:()=>h});var d=c(48249),e=c(71404);let f={default:"bg-black/5 dark:bg-white/10 text-text-muted",primary:"bg-primary/10 text-primary",success:"bg-green-500/10 text-green-600 dark:text-green-400",warning:"bg-yellow-500/10 text-yellow-600 dark:text-yellow-400",error:"bg-red-500/10 text-red-600 dark:text-red-400",info:"bg-blue-500/10 text-blue-600 dark:text-blue-400"},g={sm:"px-2 py-0.5 text-[10px]",md:"px-2.5 py-1 text-xs",lg:"px-3 py-1.5 text-sm"};function h({children:a,variant:b="default",size:c="md",dot:i=!1,icon:j,className:k}){return(0,d.jsxs)("span",{className:(0,e.cn)("inline-flex items-center gap-1.5 rounded-full font-semibold",f[b],g[c],k),children:[i&&(0,d.jsx)("span",{className:(0,e.cn)("size-1.5 rounded-full","success"===b&&"bg-green-500","warning"===b&&"bg-yellow-500","error"===b&&"bg-red-500","info"===b&&"bg-blue-500","primary"===b&&"bg-primary","default"===b&&"bg-gray-500")}),j&&(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:j}),a]})}},79346:(a,b,c)=>{c.d(b,{default:()=>j});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(50412),i=c(50377);function j({isOpen:a,provider:b,providerInfo:c,onSuccess:f,onClose:g,oauthMeta:k}){let[l,m]=(0,e.useState)("waiting"),[n,o]=(0,e.useState)(null),[p,q]=(0,e.useState)(""),[r,s]=(0,e.useState)(null),[t,u]=(0,e.useState)(!1),[v,w]=(0,e.useState)(null),[x,y]=(0,e.useState)(!1),z=(0,e.useRef)(null),A=(0,e.useRef)(!1),{copied:B,copy:C}=(0,i.C)(),[D,E]=(0,e.useState)(!1),[F,G]=(0,e.useState)("/callback?code=...");(0,e.useRef)(!1);let H=(0,e.useCallback)(async(a,c)=>{if(n)try{let d=await fetch(`/api/oauth/${b}/exchange`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:a,redirectUri:n.redirectUri,codeVerifier:n.codeVerifier,state:c,...k?{meta:k}:{}})}),e=await d.json();if(!d.ok)throw Error(e.error);m("success"),f?.()}catch(a){s(a.message),m("error")}},[n,b,f]),I=(0,e.useCallback)(async(a,c,d,e)=>{A.current=!1,y(!0);for(let g=0;g<60;g++){if(A.current){console.log("[OAuthModal] Polling aborted"),y(!1);return}if(await new Promise(a=>setTimeout(a,1e3*d)),A.current){console.log("[OAuthModal] Polling aborted after sleep"),y(!1);return}try{let g=await fetch(`/api/oauth/${b}/poll`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({deviceCode:a,codeVerifier:c,extraData:e})}),h=await g.json();if(h.success){A.current=!0,m("success"),y(!1),f?.();return}if("expired_token"===h.error||"access_denied"===h.error)throw Error(h.errorDescription||h.error);"slow_down"===h.error&&(d=Math.min(d+5,30))}catch(a){s(a.message),m("error"),y(!1);return}}s("Authorization timeout"),m("error"),y(!1)},[b,f]),J=(0,e.useCallback)(async()=>{if(b)try{let a;if(s(null),["github","qwen","kiro","kimi-coding","kilocode","codebuddy"].includes(b)){u(!0),m("waiting");let a=await fetch(`/api/oauth/${b}/device-code`),c=await a.json();if(!a.ok)throw Error(c.error);w(c);let d=c.verification_uri_complete||c.verification_uri;d&&window.open(d,"_blank");let e="kiro"===b?{_clientId:c._clientId,_clientSecret:c._clientSecret}:null;I(c.device_code,c.codeVerifier,c.interval||5,e);return}if("codex"===b)a="http://localhost:1455/auth/callback";else{let b=window.location.port||("https:"===window.location.protocol?"443":"80");a=`http://localhost:${b}/callback`}let c=new URL(`/api/oauth/${b}/authorize`,window.location.origin);c.searchParams.set("redirect_uri",a),k&&Object.entries(k).forEach(([a,b])=>{b&&c.searchParams.set(a,b)});let d=await fetch(c.toString()),e=await d.json();if(!d.ok)throw Error(e.error);o({...e,redirectUri:a}),"codex"!==b&&D?(m("waiting"),z.current=window.open(e.authUrl,"oauth_popup","width=600,height=700"),z.current||m("input")):(m("input"),window.open(e.authUrl,"_blank"))}catch(a){s(a.message),m("error")}},[b,D,I]),K=async()=>{try{s(null);let a=new URL(p),b=a.searchParams.get("code"),c=a.searchParams.get("state"),d=a.searchParams.get("error");if(d)throw Error(a.searchParams.get("error_description")||d);if(!b)throw Error("No authorization code found in URL");await H(b,c)}catch(a){s(a.message),m("error")}},L=(0,e.useCallback)(()=>{g()},[g]);return b&&c?(0,d.jsx)(h.aF,{isOpen:a,title:`Connect ${c.name}`,onClose:L,size:"lg",children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:["waiting"===l&&!t&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-primary/10 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-primary animate-spin",children:"progress_activity"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Waiting for Authorization"}),(0,d.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Complete the authorization in the popup window."}),(0,d.jsx)(h.$n,{variant:"ghost",onClick:()=>m("input"),children:"Popup blocked? Enter URL manually"})]}),"waiting"===l&&t&&v&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"text-center py-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Visit the URL below and enter the code:"}),(0,d.jsxs)("div",{className:"bg-sidebar p-4 rounded-lg mb-4",children:[(0,d.jsx)("p",{className:"text-xs text-text-muted mb-1",children:"Verification URL"}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("code",{className:"flex-1 text-sm break-all",children:v.verification_uri}),(0,d.jsx)(h.$n,{size:"sm",variant:"ghost",icon:"verify_url"===B?"check":"content_copy",onClick:()=>C(v.verification_uri,"verify_url")})]})]}),(0,d.jsxs)("div",{className:"bg-primary/10 p-4 rounded-lg",children:[(0,d.jsx)("p",{className:"text-xs text-text-muted mb-1",children:"Your Code"}),(0,d.jsxs)("div",{className:"flex items-center justify-center gap-2",children:[(0,d.jsx)("p",{className:"text-2xl font-mono font-bold text-primary",children:v.user_code}),(0,d.jsx)(h.$n,{size:"sm",variant:"ghost",icon:"user_code"===B?"check":"content_copy",onClick:()=>C(v.user_code,"user_code")})]})]})]}),x&&(0,d.jsxs)("div",{className:"flex items-center justify-center gap-2 text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),"Waiting for authorization..."]})]}),"input"===l&&!t&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium mb-2",children:"Step 1: Open this URL in your browser"}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.pd,{value:n?.authUrl||"",readOnly:!0,className:"flex-1 font-mono text-xs"}),(0,d.jsx)(h.$n,{variant:"secondary",icon:"auth_url"===B?"check":"content_copy",onClick:()=>C(n?.authUrl,"auth_url"),children:"Copy"})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium mb-2",children:"Step 2: Paste the callback URL here"}),(0,d.jsx)("p",{className:"text-xs text-text-muted mb-2",children:"After authorization, copy the full URL from your browser."}),(0,d.jsx)(h.pd,{value:p,onChange:a=>q(a.target.value),placeholder:F,className:"font-mono text-xs"})]})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:K,fullWidth:!0,disabled:!p,children:"Connect"}),(0,d.jsx)(h.$n,{onClick:L,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),"success"===l&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-green-100 dark:bg-green-900/30 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-green-600",children:"check_circle"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Connected Successfully!"}),(0,d.jsxs)("p",{className:"text-sm text-text-muted mb-4",children:["Your ",c.name," account has been connected."]}),(0,d.jsx)(h.$n,{onClick:L,fullWidth:!0,children:"Done"})]}),"error"===l&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-red-100 dark:bg-red-900/30 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-red-600",children:"error"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Connection Failed"}),(0,d.jsx)("p",{className:"text-sm text-red-600 mb-4",children:r}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:J,variant:"secondary",fullWidth:!0,children:"Try Again"}),(0,d.jsx)(h.$n,{onClick:L,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})]})}):null}j.propTypes={isOpen:g().bool.isRequired,provider:g().string,providerInfo:g().shape({name:g().string}),onSuccess:g().func,onClose:g().func.isRequired,oauthMeta:g().object}},79488:(a,b,c)=>{c.d(b,{default:()=>i});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(50412);function i({isOpen:a,onSuccess:b,onClose:c}){let[f,g]=(0,e.useState)(""),[j,k]=(0,e.useState)(!1),[l,m]=(0,e.useState)(null),[n,o]=(0,e.useState)(!1),p=async()=>{if(!f.trim())return void m("Please paste your cookie");k(!0),m(null);try{let a=await fetch("/api/oauth/iflow/cookie",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cookie:f.trim()})}),c=await a.json();if(!a.ok)throw Error(c.error||"Authentication failed");o(!0),setTimeout(()=>{b?.(),q()},1500)}catch(a){m(a.message)}finally{k(!1)}},q=()=>{g(""),m(null),o(!1),c?.()};return(0,d.jsx)(h.aF,{isOpen:a,onClose:q,title:"iFlow Cookie Authentication",children:(0,d.jsx)("div",{className:"space-y-4",children:n?(0,d.jsxs)("div",{className:"text-center py-8",children:[(0,d.jsx)("div",{className:"text-6xl mb-4",children:"✅"}),(0,d.jsx)("p",{className:"text-lg font-medium text-text-primary",children:"Authentication Successful!"}),(0,d.jsx)("p",{className:"text-sm text-text-muted mt-2",children:"Fresh API key obtained"})]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:["To get a fresh API key, paste your browser cookie from"," ",(0,d.jsx)("a",{href:"https://platform.iflow.cn",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:"platform.iflow.cn"})]}),(0,d.jsxs)("div",{className:"bg-surface-secondary p-3 rounded-lg text-xs space-y-2",children:[(0,d.jsx)("p",{className:"font-medium text-text-primary",children:"How to get cookie:"}),(0,d.jsxs)("ol",{className:"list-decimal list-inside space-y-1 text-text-muted",children:[(0,d.jsx)("li",{children:"Open platform.iflow.cn in your browser"}),(0,d.jsx)("li",{children:"Login to your account"}),(0,d.jsx)("li",{children:"Open DevTools (F12) → Application/Storage → Cookies"}),(0,d.jsx)("li",{children:"Copy the entire cookie string (must include BXAuth)"}),(0,d.jsx)("li",{children:"Paste it below"})]})]})]}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)("label",{className:"block text-sm font-medium text-text-primary",children:"Cookie String"}),(0,d.jsx)("textarea",{value:f,onChange:a=>g(a.target.value),placeholder:"BXAuth=xxx; ...",className:"w-full px-3 py-2 bg-surface-secondary border border-border rounded-lg text-sm text-text-primary placeholder-text-muted focus:outline-none focus:ring-2 focus:ring-primary resize-none",rows:4,disabled:j})]}),l&&(0,d.jsx)("div",{className:"p-3 bg-error/10 border border-error/20 rounded-lg",children:(0,d.jsx)("p",{className:"text-sm text-error",children:l})}),(0,d.jsxs)("div",{className:"flex gap-3 pt-2",children:[(0,d.jsx)(h.$n,{variant:"secondary",onClick:q,disabled:j,fullWidth:!0,children:"Cancel"}),(0,d.jsx)(h.$n,{onClick:p,loading:j,fullWidth:!0,children:"Authenticate"})]})]})})})}i.propTypes={isOpen:g().bool.isRequired,onSuccess:g().func,onClose:g().func}},83352:(a,b,c)=>{c.d(b,{default:()=>m});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(95145),i=c(91431),j=c(96919);let k=[...Object.keys(j.zN),...Object.keys(j.IS),...Object.keys(j.nJ),...Object.keys(j.fg)],l=Object.keys(j.IS).filter(a=>j.IS[a].noAuth);function m({isOpen:a,onClose:b,onSelect:c,selectedModel:f,activeProviders:g=[],title:n="Select Model",modelAliases:o={}}){let[p,q]=(0,e.useState)(""),[r,s]=(0,e.useState)([]),[t,u]=(0,e.useState)([]),v=(0,e.useMemo)(()=>({...j.zN,...j.IS,...j.nJ,...j.fg}),[]),w=(0,e.useMemo)(()=>{let a={};return[...new Set([...g.map(a=>a.provider),...l])].sort((a,b)=>{let c=k.indexOf(a),d=k.indexOf(b);return(-1===c?999:c)-(-1===d?999:d)}).forEach(b=>{let c=i.Xg[b]||b,d=v[b]||{name:b,color:"#666"},e=(0,j.mq)(b)||(0,j.gb)(b);if(d.passthroughModels){let e=Object.entries(o).filter(([,a])=>a.startsWith(`${c}/`)).map(([a,b])=>({id:b.replace(`${c}/`,""),name:a,value:b}));if(e.length>0){let f=t.find(a=>a.id===b),g=f?.name||d.name;a[b]={name:g,alias:c,color:d.color,models:e}}}else if(e){let c=g.find(a=>a.provider===b),e=t.find(a=>a.id===b),f=c?.name||e?.name||d.name,h=c?.providerSpecificData?.prefix||e?.prefix||b,i=Object.entries(o).filter(([,a])=>a.startsWith(`${b}/`)).map(([a,c])=>({id:c.replace(`${b}/`,""),name:a,value:`${h}/${c.replace(`${b}/`,"")}`})),j=i.length>0?i:[{id:`__placeholder__${b}`,name:`${h}/model-id`,value:`${h}/model-id`,isPlaceholder:!0}];a[b]={name:f,alias:h,color:d.color,models:j,isCustom:!0,hasModels:i.length>0}}else{let e=(0,i.KC)(b),f=new Set(e.map(a=>a.id)),g=e.length>0,h=Object.entries(o).filter(([a,b])=>b.startsWith(`${c}/`)&&(!g||a===b.replace(`${c}/`,""))&&!f.has(b.replace(`${c}/`,""))).map(([a,b])=>({id:b.replace(`${c}/`,""),name:a,value:b,isCustom:!0})),j=[...e.map(a=>({id:a.id,name:a.name,value:`${c}/${a.id}`})),...h];j.length>0&&(a[b]={name:d.name,alias:c,color:d.color,models:j})}}),a},[g,o,v,t]),x=(0,e.useMemo)(()=>{if(!p.trim())return r;let a=p.toLowerCase();return r.filter(b=>b.name.toLowerCase().includes(a))},[r,p]),y=(0,e.useMemo)(()=>{if(!p.trim())return w;let a=p.toLowerCase(),b={};return Object.entries(w).forEach(([c,d])=>{let e=d.models.filter(b=>b.name.toLowerCase().includes(a)||b.id.toLowerCase().includes(a)),f=d.name.toLowerCase().includes(a);(e.length>0||f)&&(b[c]={...d,models:e})}),b},[w,p]),z=a=>{c(a),b(),q("")};return(0,d.jsxs)(h.default,{isOpen:a,onClose:()=>{b(),q("")},title:n,size:"md",className:"p-4!",children:[(0,d.jsx)("div",{className:"mb-3",children:(0,d.jsxs)("div",{className:"relative",children:[(0,d.jsx)("span",{className:"material-symbols-outlined absolute left-2.5 top-1/2 -translate-y-1/2 text-text-muted text-[16px]",children:"search"}),(0,d.jsx)("input",{type:"text",placeholder:"Search...",value:p,onChange:a=>q(a.target.value),className:"w-full pl-8 pr-3 py-1.5 bg-surface border border-border rounded text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"})]})}),(0,d.jsxs)("div",{className:"max-h-[400px] overflow-y-auto space-y-3",children:[x.length>0&&(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"flex items-center gap-1.5 mb-1.5 sticky top-0 bg-surface py-0.5",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary text-[14px]",children:"layers"}),(0,d.jsx)("span",{className:"text-xs font-medium text-primary",children:"Combos"}),(0,d.jsxs)("span",{className:"text-[10px] text-text-muted",children:["(",x.length,")"]})]}),(0,d.jsx)("div",{className:"flex flex-wrap gap-1.5",children:x.map(a=>{let b=f===a.name;return(0,d.jsx)("button",{onClick:()=>z({id:a.name,name:a.name,value:a.name}),className:`
2
2
  px-2 py-1 rounded-xl text-xs font-medium transition-all border hover:cursor-pointer
3
3
  ${b?"bg-primary text-white border-primary":"bg-surface border-border text-text-main hover:border-primary/50 hover:bg-primary/5"}
4
4
  `,children:a.name},a.id)})})]}),Object.entries(y).map(([a,b])=>(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"flex items-center gap-1.5 mb-1.5 sticky top-0 bg-surface py-0.5",children:[(0,d.jsx)("div",{className:"w-2 h-2 rounded-full",style:{backgroundColor:b.color}}),(0,d.jsx)("span",{className:"text-xs font-medium text-primary",children:b.name}),(0,d.jsxs)("span",{className:"text-[10px] text-text-muted",children:["(",b.models.length,")"]})]}),(0,d.jsx)("div",{className:"flex flex-wrap gap-1.5",children:b.models.map(a=>{let b=f===a.value,c=a.isPlaceholder;return(0,d.jsx)("button",{onClick:()=>z(a),title:c?"Select to pre-fill, then edit model ID in the input":void 0,className:`