n9router 0.3.91 → 0.3.93

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 (495) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-path-routes-manifest.json +1 -0
  3. package/.next/standalone/.next/build-manifest.json +3 -3
  4. package/.next/standalone/.next/routes-manifest.json +6 -0
  5. package/.next/standalone/.next/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
  6. package/.next/standalone/.next/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  7. package/.next/standalone/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  8. package/.next/standalone/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
  9. package/.next/standalone/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  10. package/.next/standalone/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  11. package/.next/standalone/.next/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  12. package/.next/standalone/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  13. package/.next/standalone/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  14. package/.next/standalone/.next/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
  15. package/.next/standalone/.next/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  16. package/.next/standalone/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  17. package/.next/standalone/.next/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
  18. package/.next/standalone/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  19. package/.next/standalone/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  20. package/.next/standalone/.next/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
  21. package/.next/standalone/.next/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  22. package/.next/standalone/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  23. package/.next/standalone/.next/server/app/(dashboard)/dashboard/page.js +1 -1
  24. package/.next/standalone/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  25. package/.next/standalone/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  26. package/.next/standalone/.next/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  27. package/.next/standalone/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  28. package/.next/standalone/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  29. package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +1 -1
  30. package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  32. package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  33. package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  34. package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  35. package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  36. package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  37. package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  38. package/.next/standalone/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js +1 -1
  39. package/.next/standalone/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  40. package/.next/standalone/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  41. package/.next/standalone/.next/server/app/(dashboard)/dashboard/quota/page.js +1 -1
  42. package/.next/standalone/.next/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  43. package/.next/standalone/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  44. package/.next/standalone/.next/server/app/(dashboard)/dashboard/translator/page.js +1 -1
  45. package/.next/standalone/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  46. package/.next/standalone/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  47. package/.next/standalone/.next/server/app/(dashboard)/dashboard/usage/page.js +1 -1
  48. package/.next/standalone/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  49. package/.next/standalone/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  50. package/.next/standalone/.next/server/app/_global-error/page.js +1 -1
  51. package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  52. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  53. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  54. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  55. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  56. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  57. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  58. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  59. package/.next/standalone/.next/server/app/_not-found/page.js +1 -1
  60. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  61. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  62. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  63. package/.next/standalone/.next/server/app/_not-found.rsc +11 -11
  64. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +11 -11
  65. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  66. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +6 -6
  67. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  68. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  69. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  70. package/.next/standalone/.next/server/app/api/antigravity-tools/import/route.js.nft.json +1 -1
  71. package/.next/standalone/.next/server/app/api/antigravity-tools/import-refresh-tokens/route/app-paths-manifest.json +3 -0
  72. package/.next/standalone/.next/server/app/api/antigravity-tools/import-refresh-tokens/route/build-manifest.json +9 -0
  73. package/.next/standalone/.next/server/app/api/antigravity-tools/import-refresh-tokens/route/server-reference-manifest.json +4 -0
  74. package/.next/standalone/.next/server/app/api/antigravity-tools/import-refresh-tokens/route.js +11 -0
  75. package/.next/standalone/.next/server/app/api/antigravity-tools/import-refresh-tokens/route.js.map +5 -0
  76. package/.next/standalone/.next/server/app/api/antigravity-tools/import-refresh-tokens/route.js.nft.json +1 -0
  77. package/.next/standalone/.next/server/app/api/antigravity-tools/import-refresh-tokens/route_client-reference-manifest.js +3 -0
  78. package/.next/standalone/.next/server/app/api/auth/login/route.js +1 -1
  79. package/.next/standalone/.next/server/app/api/auth/login/route.js.nft.json +1 -1
  80. package/.next/standalone/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  81. package/.next/standalone/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  82. package/.next/standalone/.next/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  83. package/.next/standalone/.next/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  84. package/.next/standalone/.next/server/app/api/cli-tools/claude-settings/route.js +1 -1
  85. package/.next/standalone/.next/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  86. package/.next/standalone/.next/server/app/api/cli-tools/codex-settings/route.js +1 -1
  87. package/.next/standalone/.next/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  88. package/.next/standalone/.next/server/app/api/cli-tools/droid-settings/route.js +1 -1
  89. package/.next/standalone/.next/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  90. package/.next/standalone/.next/server/app/api/cli-tools/openclaw-settings/route.js +1 -1
  91. package/.next/standalone/.next/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  92. package/.next/standalone/.next/server/app/api/cli-tools/opencode-settings/route.js +1 -1
  93. package/.next/standalone/.next/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  94. package/.next/standalone/.next/server/app/api/cloud/auth/route.js +1 -1
  95. package/.next/standalone/.next/server/app/api/cloud/auth/route.js.nft.json +1 -1
  96. package/.next/standalone/.next/server/app/api/cloud/credentials/update/route.js +1 -1
  97. package/.next/standalone/.next/server/app/api/cloud/credentials/update/route.js.nft.json +1 -1
  98. package/.next/standalone/.next/server/app/api/cloud/model/resolve/route.js +1 -1
  99. package/.next/standalone/.next/server/app/api/cloud/model/resolve/route.js.nft.json +1 -1
  100. package/.next/standalone/.next/server/app/api/cloud/models/alias/route.js +1 -1
  101. package/.next/standalone/.next/server/app/api/cloud/models/alias/route.js.nft.json +1 -1
  102. package/.next/standalone/.next/server/app/api/combos/[id]/route.js +1 -1
  103. package/.next/standalone/.next/server/app/api/combos/[id]/route.js.nft.json +1 -1
  104. package/.next/standalone/.next/server/app/api/combos/route.js +1 -1
  105. package/.next/standalone/.next/server/app/api/combos/route.js.nft.json +1 -1
  106. package/.next/standalone/.next/server/app/api/init/route.js.nft.json +1 -1
  107. package/.next/standalone/.next/server/app/api/internal/request-detail/route.js.nft.json +1 -1
  108. package/.next/standalone/.next/server/app/api/internal/usage/route.js.nft.json +1 -1
  109. package/.next/standalone/.next/server/app/api/keys/[id]/route.js +1 -1
  110. package/.next/standalone/.next/server/app/api/keys/[id]/route.js.nft.json +1 -1
  111. package/.next/standalone/.next/server/app/api/keys/route.js +1 -1
  112. package/.next/standalone/.next/server/app/api/keys/route.js.nft.json +1 -1
  113. package/.next/standalone/.next/server/app/api/models/alias/route.js +1 -1
  114. package/.next/standalone/.next/server/app/api/models/alias/route.js.nft.json +1 -1
  115. package/.next/standalone/.next/server/app/api/models/availability/route.js +1 -1
  116. package/.next/standalone/.next/server/app/api/models/availability/route.js.nft.json +1 -1
  117. package/.next/standalone/.next/server/app/api/models/route.js +1 -1
  118. package/.next/standalone/.next/server/app/api/models/route.js.nft.json +1 -1
  119. package/.next/standalone/.next/server/app/api/models/test/route.js +1 -1
  120. package/.next/standalone/.next/server/app/api/models/test/route.js.nft.json +1 -1
  121. package/.next/standalone/.next/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  122. package/.next/standalone/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  123. package/.next/standalone/.next/server/app/api/oauth/cursor/auto-import/route.js +1 -1
  124. package/.next/standalone/.next/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  125. package/.next/standalone/.next/server/app/api/oauth/cursor/import/route.js +1 -1
  126. package/.next/standalone/.next/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  127. package/.next/standalone/.next/server/app/api/oauth/gitlab/pat/route.js +1 -1
  128. package/.next/standalone/.next/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  129. package/.next/standalone/.next/server/app/api/oauth/iflow/cookie/route.js +1 -1
  130. package/.next/standalone/.next/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  131. package/.next/standalone/.next/server/app/api/oauth/kiro/import/route.js +1 -1
  132. package/.next/standalone/.next/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  133. package/.next/standalone/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  134. package/.next/standalone/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  135. package/.next/standalone/.next/server/app/api/pricing/route.js +1 -1
  136. package/.next/standalone/.next/server/app/api/pricing/route.js.nft.json +1 -1
  137. package/.next/standalone/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
  138. package/.next/standalone/.next/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  139. package/.next/standalone/.next/server/app/api/provider-nodes/route.js +1 -1
  140. package/.next/standalone/.next/server/app/api/provider-nodes/route.js.nft.json +1 -1
  141. package/.next/standalone/.next/server/app/api/providers/[id]/models/route.js +4 -4
  142. package/.next/standalone/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  143. package/.next/standalone/.next/server/app/api/providers/[id]/route.js +1 -1
  144. package/.next/standalone/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
  145. package/.next/standalone/.next/server/app/api/providers/[id]/test/route.js +1 -1
  146. package/.next/standalone/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  147. package/.next/standalone/.next/server/app/api/providers/[id]/test-models/route.js +1 -1
  148. package/.next/standalone/.next/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  149. package/.next/standalone/.next/server/app/api/providers/client/route.js +1 -1
  150. package/.next/standalone/.next/server/app/api/providers/client/route.js.nft.json +1 -1
  151. package/.next/standalone/.next/server/app/api/providers/route.js +1 -1
  152. package/.next/standalone/.next/server/app/api/providers/route.js.nft.json +1 -1
  153. package/.next/standalone/.next/server/app/api/providers/test-batch/route.js +1 -1
  154. package/.next/standalone/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  155. package/.next/standalone/.next/server/app/api/providers/validate/route.js +1 -1
  156. package/.next/standalone/.next/server/app/api/providers/validate/route.js.nft.json +1 -1
  157. package/.next/standalone/.next/server/app/api/proxy-pools/[id]/route.js +1 -1
  158. package/.next/standalone/.next/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  159. package/.next/standalone/.next/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  160. package/.next/standalone/.next/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  161. package/.next/standalone/.next/server/app/api/proxy-pools/route.js +1 -1
  162. package/.next/standalone/.next/server/app/api/proxy-pools/route.js.nft.json +1 -1
  163. package/.next/standalone/.next/server/app/api/settings/database/route.js +1 -1
  164. package/.next/standalone/.next/server/app/api/settings/database/route.js.nft.json +1 -1
  165. package/.next/standalone/.next/server/app/api/settings/require-login/route.js +1 -1
  166. package/.next/standalone/.next/server/app/api/settings/require-login/route.js.nft.json +1 -1
  167. package/.next/standalone/.next/server/app/api/settings/route.js +1 -1
  168. package/.next/standalone/.next/server/app/api/settings/route.js.nft.json +1 -1
  169. package/.next/standalone/.next/server/app/api/translator/send/route.js.nft.json +1 -1
  170. package/.next/standalone/.next/server/app/api/translator/translate/route.js +1 -1
  171. package/.next/standalone/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
  172. package/.next/standalone/.next/server/app/api/tunnel/disable/route.js +1 -1
  173. package/.next/standalone/.next/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  174. package/.next/standalone/.next/server/app/api/tunnel/enable/route.js +1 -1
  175. package/.next/standalone/.next/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  176. package/.next/standalone/.next/server/app/api/tunnel/status/route.js +1 -1
  177. package/.next/standalone/.next/server/app/api/tunnel/status/route.js.nft.json +1 -1
  178. package/.next/standalone/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  179. package/.next/standalone/.next/server/app/api/usage/chart/route.js.nft.json +1 -1
  180. package/.next/standalone/.next/server/app/api/usage/history/route.js.nft.json +1 -1
  181. package/.next/standalone/.next/server/app/api/usage/logs/route.js.nft.json +1 -1
  182. package/.next/standalone/.next/server/app/api/usage/providers/route.js +1 -1
  183. package/.next/standalone/.next/server/app/api/usage/providers/route.js.nft.json +1 -1
  184. package/.next/standalone/.next/server/app/api/usage/request-details/route.js.nft.json +1 -1
  185. package/.next/standalone/.next/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  186. package/.next/standalone/.next/server/app/api/usage/stats/route.js.nft.json +1 -1
  187. package/.next/standalone/.next/server/app/api/usage/stream/route.js.nft.json +1 -1
  188. package/.next/standalone/.next/server/app/api/v1/api/chat/route.js +2 -2
  189. package/.next/standalone/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  190. package/.next/standalone/.next/server/app/api/v1/chat/completions/route.js +4 -4
  191. package/.next/standalone/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  192. package/.next/standalone/.next/server/app/api/v1/embeddings/route.js +4 -4
  193. package/.next/standalone/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  194. package/.next/standalone/.next/server/app/api/v1/messages/route.js +2 -2
  195. package/.next/standalone/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
  196. package/.next/standalone/.next/server/app/api/v1/models/route.js.nft.json +1 -1
  197. package/.next/standalone/.next/server/app/api/v1/responses/route.js +2 -2
  198. package/.next/standalone/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
  199. package/.next/standalone/.next/server/app/api/v1beta/models/[...path]/route.js +3 -3
  200. package/.next/standalone/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  201. package/.next/standalone/.next/server/app/api/version/route.js +2 -2
  202. package/.next/standalone/.next/server/app/callback/page.js +1 -1
  203. package/.next/standalone/.next/server/app/callback/page.js.nft.json +1 -1
  204. package/.next/standalone/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  205. package/.next/standalone/.next/server/app/callback.html +1 -1
  206. package/.next/standalone/.next/server/app/callback.rsc +13 -13
  207. package/.next/standalone/.next/server/app/callback.segments/_full.segment.rsc +13 -13
  208. package/.next/standalone/.next/server/app/callback.segments/_head.segment.rsc +4 -4
  209. package/.next/standalone/.next/server/app/callback.segments/_index.segment.rsc +6 -6
  210. package/.next/standalone/.next/server/app/callback.segments/_tree.segment.rsc +2 -2
  211. package/.next/standalone/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +4 -4
  212. package/.next/standalone/.next/server/app/callback.segments/callback.segment.rsc +3 -3
  213. package/.next/standalone/.next/server/app/dashboard/basic-chat.html +1 -1
  214. package/.next/standalone/.next/server/app/dashboard/basic-chat.rsc +14 -14
  215. package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +3 -3
  216. package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +3 -3
  217. package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  218. package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  219. package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/_full.segment.rsc +14 -14
  220. package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/_head.segment.rsc +4 -4
  221. package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/_index.segment.rsc +6 -6
  222. package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
  223. package/.next/standalone/.next/server/app/dashboard/cli-tools.html +1 -1
  224. package/.next/standalone/.next/server/app/dashboard/cli-tools.rsc +14 -14
  225. package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +3 -3
  226. package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +3 -3
  227. package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  228. package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  229. package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +14 -14
  230. package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +4 -4
  231. package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +6 -6
  232. package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  233. package/.next/standalone/.next/server/app/dashboard/combos.html +1 -1
  234. package/.next/standalone/.next/server/app/dashboard/combos.rsc +15 -15
  235. package/.next/standalone/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +4 -4
  236. package/.next/standalone/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +3 -3
  237. package/.next/standalone/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  238. package/.next/standalone/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  239. package/.next/standalone/.next/server/app/dashboard/combos.segments/_full.segment.rsc +15 -15
  240. package/.next/standalone/.next/server/app/dashboard/combos.segments/_head.segment.rsc +4 -4
  241. package/.next/standalone/.next/server/app/dashboard/combos.segments/_index.segment.rsc +6 -6
  242. package/.next/standalone/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  243. package/.next/standalone/.next/server/app/dashboard/endpoint.html +1 -1
  244. package/.next/standalone/.next/server/app/dashboard/endpoint.rsc +14 -14
  245. package/.next/standalone/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +3 -3
  246. package/.next/standalone/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +3 -3
  247. package/.next/standalone/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  248. package/.next/standalone/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  249. package/.next/standalone/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +14 -14
  250. package/.next/standalone/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +4 -4
  251. package/.next/standalone/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +6 -6
  252. package/.next/standalone/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  253. package/.next/standalone/.next/server/app/dashboard/mitm.html +1 -1
  254. package/.next/standalone/.next/server/app/dashboard/mitm.rsc +14 -14
  255. package/.next/standalone/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +3 -3
  256. package/.next/standalone/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +3 -3
  257. package/.next/standalone/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  258. package/.next/standalone/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  259. package/.next/standalone/.next/server/app/dashboard/mitm.segments/_full.segment.rsc +14 -14
  260. package/.next/standalone/.next/server/app/dashboard/mitm.segments/_head.segment.rsc +4 -4
  261. package/.next/standalone/.next/server/app/dashboard/mitm.segments/_index.segment.rsc +6 -6
  262. package/.next/standalone/.next/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  263. package/.next/standalone/.next/server/app/dashboard/profile.html +1 -1
  264. package/.next/standalone/.next/server/app/dashboard/profile.rsc +15 -15
  265. package/.next/standalone/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +4 -4
  266. package/.next/standalone/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +3 -3
  267. package/.next/standalone/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  268. package/.next/standalone/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  269. package/.next/standalone/.next/server/app/dashboard/profile.segments/_full.segment.rsc +15 -15
  270. package/.next/standalone/.next/server/app/dashboard/profile.segments/_head.segment.rsc +4 -4
  271. package/.next/standalone/.next/server/app/dashboard/profile.segments/_index.segment.rsc +6 -6
  272. package/.next/standalone/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  273. package/.next/standalone/.next/server/app/dashboard/providers/new.html +1 -1
  274. package/.next/standalone/.next/server/app/dashboard/providers/new.rsc +15 -15
  275. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +4 -4
  276. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +3 -3
  277. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +3 -3
  278. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  279. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  280. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +15 -15
  281. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +4 -4
  282. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +6 -6
  283. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  284. package/.next/standalone/.next/server/app/dashboard/providers.html +1 -1
  285. package/.next/standalone/.next/server/app/dashboard/providers.rsc +15 -15
  286. package/.next/standalone/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +4 -4
  287. package/.next/standalone/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +3 -3
  288. package/.next/standalone/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  289. package/.next/standalone/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  290. package/.next/standalone/.next/server/app/dashboard/providers.segments/_full.segment.rsc +15 -15
  291. package/.next/standalone/.next/server/app/dashboard/providers.segments/_head.segment.rsc +4 -4
  292. package/.next/standalone/.next/server/app/dashboard/providers.segments/_index.segment.rsc +6 -6
  293. package/.next/standalone/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  294. package/.next/standalone/.next/server/app/dashboard/proxy-pools.html +1 -1
  295. package/.next/standalone/.next/server/app/dashboard/proxy-pools.rsc +15 -15
  296. package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +4 -4
  297. package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +3 -3
  298. package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  299. package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  300. package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +15 -15
  301. package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +4 -4
  302. package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +6 -6
  303. package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  304. package/.next/standalone/.next/server/app/dashboard/quota.html +2 -2
  305. package/.next/standalone/.next/server/app/dashboard/quota.rsc +15 -15
  306. package/.next/standalone/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +4 -4
  307. package/.next/standalone/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +3 -3
  308. package/.next/standalone/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  309. package/.next/standalone/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  310. package/.next/standalone/.next/server/app/dashboard/quota.segments/_full.segment.rsc +15 -15
  311. package/.next/standalone/.next/server/app/dashboard/quota.segments/_head.segment.rsc +4 -4
  312. package/.next/standalone/.next/server/app/dashboard/quota.segments/_index.segment.rsc +6 -6
  313. package/.next/standalone/.next/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  314. package/.next/standalone/.next/server/app/dashboard/settings/pricing/page.js +1 -1
  315. package/.next/standalone/.next/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  316. package/.next/standalone/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  317. package/.next/standalone/.next/server/app/dashboard/settings/pricing.html +1 -1
  318. package/.next/standalone/.next/server/app/dashboard/settings/pricing.rsc +13 -13
  319. package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +13 -13
  320. package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +4 -4
  321. package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +6 -6
  322. package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  323. package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +4 -4
  324. package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +3 -3
  325. package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +3 -3
  326. package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +3 -3
  327. package/.next/standalone/.next/server/app/dashboard/translator.html +1 -1
  328. package/.next/standalone/.next/server/app/dashboard/translator.rsc +15 -15
  329. package/.next/standalone/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +4 -4
  330. package/.next/standalone/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +3 -3
  331. package/.next/standalone/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  332. package/.next/standalone/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  333. package/.next/standalone/.next/server/app/dashboard/translator.segments/_full.segment.rsc +15 -15
  334. package/.next/standalone/.next/server/app/dashboard/translator.segments/_head.segment.rsc +4 -4
  335. package/.next/standalone/.next/server/app/dashboard/translator.segments/_index.segment.rsc +6 -6
  336. package/.next/standalone/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  337. package/.next/standalone/.next/server/app/dashboard/usage.html +1 -1
  338. package/.next/standalone/.next/server/app/dashboard/usage.rsc +15 -15
  339. package/.next/standalone/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +4 -4
  340. package/.next/standalone/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +3 -3
  341. package/.next/standalone/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  342. package/.next/standalone/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  343. package/.next/standalone/.next/server/app/dashboard/usage.segments/_full.segment.rsc +15 -15
  344. package/.next/standalone/.next/server/app/dashboard/usage.segments/_head.segment.rsc +4 -4
  345. package/.next/standalone/.next/server/app/dashboard/usage.segments/_index.segment.rsc +6 -6
  346. package/.next/standalone/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  347. package/.next/standalone/.next/server/app/dashboard.html +1 -1
  348. package/.next/standalone/.next/server/app/dashboard.rsc +14 -14
  349. package/.next/standalone/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +3 -3
  350. package/.next/standalone/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  351. package/.next/standalone/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  352. package/.next/standalone/.next/server/app/dashboard.segments/_full.segment.rsc +14 -14
  353. package/.next/standalone/.next/server/app/dashboard.segments/_head.segment.rsc +4 -4
  354. package/.next/standalone/.next/server/app/dashboard.segments/_index.segment.rsc +6 -6
  355. package/.next/standalone/.next/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  356. package/.next/standalone/.next/server/app/index.html +1 -1
  357. package/.next/standalone/.next/server/app/index.rsc +11 -11
  358. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  359. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +11 -11
  360. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
  361. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +6 -6
  362. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  363. package/.next/standalone/.next/server/app/landing/page.js +1 -1
  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 +13 -13
  368. package/.next/standalone/.next/server/app/landing.segments/_full.segment.rsc +13 -13
  369. package/.next/standalone/.next/server/app/landing.segments/_head.segment.rsc +4 -4
  370. package/.next/standalone/.next/server/app/landing.segments/_index.segment.rsc +6 -6
  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 +4 -4
  373. package/.next/standalone/.next/server/app/landing.segments/landing.segment.rsc +3 -3
  374. package/.next/standalone/.next/server/app/login/page.js +1 -1
  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 +13 -13
  379. package/.next/standalone/.next/server/app/login.segments/_full.segment.rsc +13 -13
  380. package/.next/standalone/.next/server/app/login.segments/_head.segment.rsc +4 -4
  381. package/.next/standalone/.next/server/app/login.segments/_index.segment.rsc +6 -6
  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 +4 -4
  384. package/.next/standalone/.next/server/app/login.segments/login.segment.rsc +3 -3
  385. package/.next/standalone/.next/server/app/page.js +1 -1
  386. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  387. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  388. package/.next/standalone/.next/server/app-paths-manifest.json +1 -0
  389. package/.next/standalone/.next/server/chunks/0zjb_server_app_api_antigravity-tools_import-refresh-tokens_route_actions_0jn9smo.js +3 -0
  390. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0mpe9.-._.js → [root-of-the-server]__0-ztp63._.js} +2 -2
  391. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0ha8pqz._.js → [root-of-the-server]__0.yvcis._.js} +2 -2
  392. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0nkly1e._.js → [root-of-the-server]__0148t9m._.js} +2 -2
  393. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0u8dezo._.js → [root-of-the-server]__01dhv3a._.js} +2 -2
  394. package/.next/standalone/.next/server/chunks/[root-of-the-server]__01rpshu._.js +3 -0
  395. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0ec61.d._.js → [root-of-the-server]__04o67.c._.js} +2 -2
  396. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0fsp-sk._.js → [root-of-the-server]__04phkrb._.js} +2 -2
  397. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0p8vmzj._.js → [root-of-the-server]__0_8pmqq._.js} +2 -2
  398. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0f59x8f._.js → [root-of-the-server]__0_8qd4-._.js} +2 -2
  399. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0tw0zvj._.js → [root-of-the-server]__0_a3mp3._.js} +2 -2
  400. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0t-7jzt._.js → [root-of-the-server]__0_qom9~._.js} +2 -2
  401. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0poxwxp._.js → [root-of-the-server]__0a4rwvw._.js} +2 -2
  402. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0evci68._.js → [root-of-the-server]__0b0hngg._.js} +2 -2
  403. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0b802lh._.js +1 -1
  404. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0bdtalb._.js → [root-of-the-server]__0c-qn~s._.js} +2 -2
  405. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0sy.n8z._.js → [root-of-the-server]__0cix-zv._.js} +2 -2
  406. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__03of64y._.js → [root-of-the-server]__0d-p9ea._.js} +2 -2
  407. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0c09lpw._.js → [root-of-the-server]__0drf.ui._.js} +2 -2
  408. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0e27kvj._.js +3 -0
  409. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0e4os.p._.js → [root-of-the-server]__0eyrvzj._.js} +2 -2
  410. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0_5bxb7._.js → [root-of-the-server]__0gglkh-._.js} +2 -2
  411. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0a_9~cg._.js → [root-of-the-server]__0ggqrke._.js} +2 -2
  412. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0pf0kam._.js → [root-of-the-server]__0gicxvd._.js} +2 -2
  413. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__06n~wts._.js → [root-of-the-server]__0i_45tv._.js} +2 -2
  414. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0inxxu0._.js +3 -0
  415. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__091ltaw._.js → [root-of-the-server]__0jd9t2e._.js} +2 -2
  416. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ju9vfb._.js +3 -0
  417. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0kpc-o6._.js +1 -1
  418. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0lc~.sk._.js +1 -1
  419. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0lp_pm5._.js +1 -1
  420. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0jpee3.._.js → [root-of-the-server]__0n1xjjj._.js} +2 -2
  421. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0e7y8w~._.js → [root-of-the-server]__0ntxb7l._.js} +2 -2
  422. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0fa8rg9._.js → [root-of-the-server]__0ob~5~z._.js} +2 -2
  423. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__02.ogtw._.js → [root-of-the-server]__0pwrfp1._.js} +2 -2
  424. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0yf_zm4._.js → [root-of-the-server]__0q6qi87._.js} +2 -2
  425. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0xilem_._.js → [root-of-the-server]__0qbud9-._.js} +2 -2
  426. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0x6j5ov._.js → [root-of-the-server]__0s078yi._.js} +2 -2
  427. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0_zm3dg._.js → [root-of-the-server]__0shx3oz._.js} +2 -2
  428. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0szv.g3._.js +3 -0
  429. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0ldzewe._.js → [root-of-the-server]__0tdx4rw._.js} +2 -2
  430. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0y3xqc0._.js → [root-of-the-server]__0uc~.ow._.js} +2 -2
  431. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0nab92j._.js → [root-of-the-server]__0uilpvk._.js} +2 -2
  432. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0uw3x8s._.js +1 -1
  433. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0wczue6._.js → [root-of-the-server]__0wn37_w._.js} +2 -2
  434. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0442-5c._.js → [root-of-the-server]__0wor~wi._.js} +2 -2
  435. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__00_sy8a._.js → [root-of-the-server]__0wu_jyu._.js} +2 -2
  436. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0xls6ee._.js → [root-of-the-server]__0wzaoyn._.js} +2 -2
  437. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0y.reft._.js +1 -1
  438. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__01n7vgb._.js → [root-of-the-server]__0y5ae.7._.js} +2 -2
  439. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__06ogl04._.js → [root-of-the-server]__0ygxf8q._.js} +2 -2
  440. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__1365t9j._.js → [root-of-the-server]__0yk.b~x._.js} +2 -2
  441. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0d7obnq._.js → [root-of-the-server]__0yqcvre._.js} +2 -2
  442. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__04c-kkd._.js → [root-of-the-server]__0yye~im._.js} +2 -2
  443. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0-th9q.._.js → [root-of-the-server]__0z-kiuj._.js} +2 -2
  444. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0zgc10n._.js → [root-of-the-server]__0z-slhf._.js} +2 -2
  445. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__00w1-vt._.js → [root-of-the-server]__0~0444n._.js} +2 -2
  446. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__02ez_-~._.js → [root-of-the-server]__11ddaxt._.js} +2 -2
  447. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__11x4~za._.js → [root-of-the-server]__120yp9v._.js} +2 -2
  448. package/.next/standalone/.next/server/chunks/_0__-aqg._.js +3 -0
  449. package/.next/standalone/.next/server/chunks/_0_ovl1h._.js +3 -0
  450. package/.next/standalone/.next/server/chunks/{_0fqqr7l._.js → _0vq-0-m._.js} +2 -2
  451. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__04f0xi0._.js → [root-of-the-server]__0c6sbbj._.js} +2 -2
  452. package/.next/standalone/.next/server/chunks/ssr/{node_modules_next_0x_me2y._.js → _04v6e-j._.js} +2 -2
  453. package/.next/standalone/.next/server/chunks/ssr/_0c8m5sm._.js +1 -1
  454. package/.next/standalone/.next/server/chunks/ssr/_0fd4.es._.js +5 -0
  455. package/.next/standalone/.next/server/chunks/ssr/_13z1.b_._.js +1 -1
  456. package/.next/standalone/.next/server/chunks/ssr/src_0_xhepz._.js +1 -1
  457. package/.next/standalone/.next/server/chunks/ssr/src_app_(dashboard)_dashboard_providers_[id]_page_0-3xvzc.js +4 -1
  458. package/.next/standalone/.next/server/chunks/ssr/src_shared_constants_cliTools_09iru_o.js +1 -1
  459. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  460. package/.next/standalone/.next/server/pages/404.html +1 -1
  461. package/.next/standalone/.next/server/pages/500.html +1 -1
  462. package/.next/{static/chunks/0ggs~59p2zyrg.js → standalone/.next/static/chunks/0deg-_syv13xx.js} +1 -1
  463. package/.next/standalone/.next/static/chunks/0h~4je-_gk7-5.css +1 -0
  464. package/.next/standalone/.next/static/chunks/{17~_6lx17xr8z.js → 0j6650zqytl.z.js} +1 -1
  465. package/.next/{static/chunks/0pwbnjvdm7lt_.js → standalone/.next/static/chunks/0lqwk82lneihh.js} +2 -2
  466. package/.next/{static/chunks/148_2lu2ra629.js → standalone/.next/static/chunks/11jq77q6zkl40.js} +1 -1
  467. package/.next/standalone/.next/static/chunks/127zo11qzv8-9.js +4 -0
  468. package/.next/{static/chunks/06l6ck_q1o~m9.js → standalone/.next/static/chunks/16r2wq4pvci67.js} +1 -1
  469. package/.next/standalone/AGENTS.md +136 -0
  470. package/.next/standalone/docs/token_swap_guide.md +2 -0
  471. package/.next/standalone/package-lock.json +2 -2
  472. package/.next/standalone/package.json +1 -1
  473. package/.next/standalone/src/app/(dashboard)/dashboard/providers/[id]/page.js +123 -8
  474. package/.next/standalone/src/app/api/antigravity-tools/import-refresh-tokens/route.js +218 -0
  475. package/.next/{standalone/.next/static/chunks/0ggs~59p2zyrg.js → static/chunks/0deg-_syv13xx.js} +1 -1
  476. package/.next/static/chunks/0h~4je-_gk7-5.css +1 -0
  477. package/.next/static/chunks/{17~_6lx17xr8z.js → 0j6650zqytl.z.js} +1 -1
  478. package/.next/{standalone/.next/static/chunks/0pwbnjvdm7lt_.js → static/chunks/0lqwk82lneihh.js} +2 -2
  479. package/.next/{standalone/.next/static/chunks/148_2lu2ra629.js → static/chunks/11jq77q6zkl40.js} +1 -1
  480. package/.next/static/chunks/127zo11qzv8-9.js +4 -0
  481. package/.next/{standalone/.next/static/chunks/06l6ck_q1o~m9.js → static/chunks/16r2wq4pvci67.js} +1 -1
  482. package/package.json +1 -1
  483. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0jlk7i0._.js +0 -3
  484. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0m42-i~._.js +0 -3
  485. package/.next/standalone/.next/server/chunks/_019vwuu._.js +0 -3
  486. package/.next/standalone/.next/static/chunks/026p3rpdycbyo.css +0 -1
  487. package/.next/standalone/.next/static/chunks/0b285gqd-hcvu.js +0 -1
  488. package/.next/static/chunks/026p3rpdycbyo.css +0 -1
  489. package/.next/static/chunks/0b285gqd-hcvu.js +0 -1
  490. /package/.next/standalone/.next/static/{G51gMWWv_zPc_nZoCBESi → b_Drjo0YdAiFCInKT62q9}/_buildManifest.js +0 -0
  491. /package/.next/standalone/.next/static/{G51gMWWv_zPc_nZoCBESi → b_Drjo0YdAiFCInKT62q9}/_clientMiddlewareManifest.js +0 -0
  492. /package/.next/standalone/.next/static/{G51gMWWv_zPc_nZoCBESi → b_Drjo0YdAiFCInKT62q9}/_ssgManifest.js +0 -0
  493. /package/.next/static/{G51gMWWv_zPc_nZoCBESi → b_Drjo0YdAiFCInKT62q9}/_buildManifest.js +0 -0
  494. /package/.next/static/{G51gMWWv_zPc_nZoCBESi → b_Drjo0YdAiFCInKT62q9}/_clientMiddlewareManifest.js +0 -0
  495. /package/.next/static/{G51gMWWv_zPc_nZoCBESi → b_Drjo0YdAiFCInKT62q9}/_ssgManifest.js +0 -0
@@ -4,7 +4,7 @@
4
4
  "model": "{{model}}",
5
5
  "provider": "openai",
6
6
  "apiKey": "{{apiKey}}"
7
- }`}}};e.s(["CLI_TOOLS",0,t,"MITM_TOOLS",0,{antigravity:{id:"antigravity",name:"Antigravity",image:"/providers/antigravity.png",color:"#4285F4",description:"Google Antigravity IDE with MITM",configType:"mitm",mitmDomain:"daily-cloudcode-pa.googleapis.com",supportsTokenSwap:!0,tokenSwapProvider:"antigravity",modelAliases:["claude-opus-4-6-thinking","claude-sonnet-4-6","gemini-3-flash","gpt-oss-120b-medium","gemini-3-pro-high","gemini-3-pro-low"],defaultModels:[{id:"gemini-3.1-pro-high",name:"Gemini 3.1 Pro High",alias:"gemini-3.1-pro-high"},{id:"gemini-3.1-pro-low",name:"Gemini 3.1 Pro Low",alias:"gemini-3.1-pro-low"},{id:"gemini-3-flash",name:"Gemini 3 Flash",alias:"gemini-3-flash"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6",alias:"claude-sonnet-4-6"},{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 Thinking",alias:"claude-opus-4-6-thinking"},{id:"gpt-oss-120b-medium",name:"GPT OSS 120B Medium",alias:"gpt-oss-120b-medium"}]},copilot:{id:"copilot",name:"GitHub Copilot",image:"/providers/copilot.png",color:"#1F6FEB",description:"GitHub Copilot IDE with MITM",configType:"mitm",mitmDomain:"api.individual.githubcopilot.com",modelAliases:["gpt-4o-mini","claude-haiku-4.5","gpt-4o","gpt-5-mini"],defaultModels:[{id:"gpt-4o",name:"GPT-4o",alias:"gpt-4o"},{id:"gpt-4.1",name:"GPT-4.1",alias:"gpt-4.1"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5",alias:"claude-haiku-4.5"}]},kiro:{id:"kiro",name:"Kiro",image:"/providers/kiro.png",color:"#FF6B00",description:"Kiro IDE with MITM",configType:"mitm",mitmDomain:"q.us-east-1.amazonaws.com",defaultModels:[{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5",alias:"claude-sonnet-4.5"},{id:"claude-sonnet-4",name:"Claude Sonnet 4",alias:"claude-sonnet-4"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5",alias:"claude-haiku-4.5"},{id:"deepseek-3.2",name:"DeepSeek 3.2",alias:"deepseek-3.2"},{id:"minimax-m2.1",name:"MiniMax M2.1",alias:"minimax-m2.1"},{id:"simple-task",name:"Qwen3 Coder Next",alias:"simple-task"}]}}],66104),e.i(47167);var s=e.i(43476),a=e.i(71645);e.i(38730);var l=e.i(96521),r=e.i(39114),i=e.i(20956),n=e.i(20733),n=n,o=e.i(12720),o=o,d=e.i(57688);let c="https://9router.com";e.s(["default",0,function({tool:e,isExpanded:t,onToggle:x,activeProviders:m,modelMappings:u,onModelMappingChange:p,baseUrl:h,hasActiveProviders:g,apiKeys:f,cloudEnabled:y,initialStatus:b}){let j,N,v,[w,k]=(0,a.useState)(b||null),[C,S]=(0,a.useState)(!1),[A,_]=(0,a.useState)(!1),[E,T]=(0,a.useState)(!1),[O,M]=(0,a.useState)(null),[I,P]=(0,a.useState)(!1),[R,D]=(0,a.useState)(!1),[U,$]=(0,a.useState)(null),[L,B]=(0,a.useState)(""),[K,z]=(0,a.useState)({}),[F,H]=(0,a.useState)(!1),[q,J]=(0,a.useState)(""),[W,G]=(0,a.useState)(!1),Y=(0,a.useRef)(!1),V=(()=>{if(!w?.installed)return null;let e=w.settings?.env?.ANTHROPIC_BASE_URL;if(!e)return"not_configured";let t=e.includes("localhost")||e.includes("127.0.0.1"),s=y&&c&&e.startsWith(c),a=h&&e.startsWith(h);return t||s||a?"configured":"other"})();(0,a.useEffect)(()=>{f?.length>0&&!L&&B(f[0].key)},[f,L]),(0,a.useEffect)(()=>{b&&k(b)},[b]),(0,a.useEffect)(()=>{t&&!w&&(Z(),X()),t&&X()},[t]),(0,a.useEffect)(()=>{fetch("/api/settings").then(e=>e.json()).then(e=>{G(!!e.ccFilterNaming)}).catch(()=>{})},[]);let Q=async e=>{let t=e.target.checked;G(t),await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({ccFilterNaming:t})}).catch(()=>{})},X=async()=>{try{let e=await fetch("/api/models/alias"),t=await e.json();e.ok&&z(t.aliases||{})}catch(e){console.log("Error fetching model aliases:",e)}};(0,a.useEffect)(()=>{if(w?.installed&&!Y.current){Y.current=!0;let t=w.settings?.env||{};e.defaultModels.forEach(e=>{if(e.envKey){let s=t[e.envKey]||e.defaultValue||"";s&&p(e.alias,s)}});let s=t.ANTHROPIC_AUTH_TOKEN;s&&f?.some(e=>e.key===s)&&B(s)}},[w,f,e.defaultModels,p]);let Z=async()=>{S(!0);try{let e=await fetch("/api/cli-tools/claude-settings"),t=await e.json();k(t)}catch(e){k({installed:!1,error:e.message})}finally{S(!1)}},ee=()=>{let e=q||h;return e.endsWith("/v1")?e:`${e}/v1`},et=async()=>{_(!0),M(null);try{let t={ANTHROPIC_BASE_URL:ee()},s=L?.trim()||(f?.length>0?f[0].key:null)||(y?null:"sk_9router");s&&(t.ANTHROPIC_AUTH_TOKEN=s),e.defaultModels.forEach(e=>{let s=u[e.alias];s&&e.envKey&&(t[e.envKey]=s)});let a=await fetch("/api/cli-tools/claude-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({env:t})}),l=await a.json();a.ok?(M({type:"success",text:"Settings applied successfully!"}),k(e=>({...e,hasBackup:!0,settings:{...e?.settings,env:t}}))):M({type:"error",text:l.error||"Failed to apply settings"})}catch(e){M({type:"error",text:e.message})}finally{_(!1)}},es=async()=>{T(!0),M(null);try{let t=await fetch("/api/cli-tools/claude-settings",{method:"DELETE"}),s=await t.json();t.ok?(M({type:"success",text:"Settings reset successfully!"}),e.defaultModels.forEach(e=>p(e.alias,e.defaultValue||"")),B("")):M({type:"error",text:s.error||"Failed to reset settings"})}catch(e){M({type:"error",text:e.message})}finally{T(!1)}};return(0,s.jsxs)(l.Card,{padding:"xs",className:"overflow-hidden",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between hover:cursor-pointer",onClick:x,children:[(0,s.jsxs)("div",{className:"flex items-center gap-3",children:[(0,s.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,s.jsx)(d.default,{src:"/providers/claude.png",alt:e.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:e=>{e.target.style.display="none"}})}),(0,s.jsxs)("div",{className:"min-w-0",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("h3",{className:"font-medium text-sm",children:e.name}),"configured"===V&&(0,s.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-green-500/10 text-green-600 dark:text-green-400 rounded-full",children:"Connected"}),"not_configured"===V&&(0,s.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-yellow-500/10 text-yellow-600 dark:text-yellow-400 rounded-full",children:"Not configured"}),"other"===V&&(0,s.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-blue-500/10 text-blue-600 dark:text-blue-400 rounded-full",children:"Other"})]}),(0,s.jsx)("p",{className:"text-xs text-text-muted truncate",children:e.description})]})]}),(0,s.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,s.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[C&&(0,s.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,s.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,s.jsx)("span",{children:"Checking Claude CLI..."})]}),!C&&w&&!w.installed&&(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsxs)("div",{className:"flex items-center gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,s.jsxs)("div",{className:"flex-1",children:[(0,s.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:"Claude CLI not installed"}),(0,s.jsx)("p",{className:"text-sm text-text-muted",children:"Please install Claude CLI to use this feature."})]}),(0,s.jsxs)(r.Button,{variant:"outline",size:"sm",onClick:()=>P(!I),children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:I?"expand_less":"help"}),I?"Hide":"How to Install"]})]}),I&&(0,s.jsxs)("div",{className:"p-4 bg-surface border border-border rounded-lg",children:[(0,s.jsx)("h4",{className:"font-medium mb-3",children:"Installation Guide"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("p",{className:"text-text-muted mb-1",children:"macOS / Linux / Windows:"}),(0,s.jsx)("code",{className:"block px-3 py-2 bg-black/5 dark:bg-white/5 rounded font-mono text-xs",children:"npm install -g @anthropic-ai/claude-code"})]}),(0,s.jsxs)("p",{className:"text-text-muted",children:["After installation, run ",(0,s.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"claude"})," to verify."]})]})]})]}),!C&&w?.installed&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"flex flex-col gap-2",children:[w?.settings?.env?.ANTHROPIC_BASE_URL&&(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Current"}),(0,s.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,s.jsx)("span",{className:"flex-1 px-2 py-1.5 text-xs text-text-muted truncate",children:w.settings.env.ANTHROPIC_BASE_URL})]}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Base URL"}),(0,s.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,s.jsx)("input",{type:"text",value:(j=q||h).endsWith("/v1")?j:`${j}/v1`,onChange:e=>J(e.target.value),placeholder:"https://.../v1",className:"flex-1 px-2 py-1.5 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"}),q&&q!==h&&(0,s.jsx)("button",{onClick:()=>J(""),className:"p-1 text-text-muted hover:text-primary rounded transition-colors",title:"Reset to default",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"restart_alt"})})]}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"API Key"}),(0,s.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),f.length>0?(0,s.jsx)("select",{value:L,onChange:e=>B(e.target.value),className:"flex-1 px-2 py-1.5 bg-surface rounded text-xs border border-border focus:outline-none focus:ring-1 focus:ring-primary/50",children:f.map(e=>(0,s.jsx)("option",{value:e.key,children:e.key},e.id))}):(0,s.jsx)("span",{className:"flex-1 text-xs text-text-muted px-2 py-1.5",children:y?"No API keys - Create one in Keys page":"sk_9router (default)"})]}),e.defaultModels.map(e=>(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:e.name}),(0,s.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,s.jsx)("input",{type:"text",value:u[e.alias]||"",onChange:t=>p(e.alias,t.target.value),placeholder:"provider/model-id",className:"flex-1 px-2 py-1.5 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"}),(0,s.jsx)("button",{onClick:()=>{$(e.alias),D(!0)},disabled:!g,className:`px-2 py-1.5 rounded border text-xs transition-colors shrink-0 whitespace-nowrap ${g?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select Model"}),u[e.alias]&&(0,s.jsx)("button",{onClick:()=>p(e.alias,""),className:"p-1 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]},e.alias)),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Filter naming"}),(0,s.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,s.jsxs)("label",{className:"flex items-center gap-1.5 cursor-pointer select-none",children:[(0,s.jsx)("input",{type:"checkbox",checked:W,onChange:Q,className:"w-3.5 h-3.5 accent-primary cursor-pointer"}),(0,s.jsx)("span",{className:"text-xs text-text-muted",children:"Filter naming requests"})]}),(0,s.jsx)(o.default,{text:"Intercepts Claude Code's topic-naming requests and returns a fake response locally, saving API tokens.",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px] cursor-help",children:"info"})})]})]}),O&&(0,s.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===O.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===O.type?"check_circle":"error"}),(0,s.jsx)("span",{children:O.text})]}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsxs)(r.Button,{variant:"primary",size:"sm",onClick:et,disabled:!g,loading:A,children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,s.jsxs)(r.Button,{variant:"outline",size:"sm",onClick:es,disabled:!w?.has9Router,loading:E,children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,s.jsxs)(r.Button,{variant:"ghost",size:"sm",onClick:()=>H(!0),children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]})]})]}),(0,s.jsx)(i.ModelSelectModal,{isOpen:R,onClose:()=>D(!1),onSelect:e=>{U&&p(U,e.value)},selectedModel:U?u[U]:null,activeProviders:m,modelAliases:K,title:`Select model for ${U}`}),(0,s.jsx)(n.default,{isOpen:F,onClose:()=>H(!1),title:"Claude CLI - Manual Configuration",configs:(N=L&&L.trim()?L:y?"<API_KEY_FROM_DASHBOARD>":"sk_9router",v={ANTHROPIC_BASE_URL:ee(),ANTHROPIC_AUTH_TOKEN:N},e.defaultModels.forEach(e=>{let t=u[e.alias];t&&e.envKey&&(v[e.envKey]=t)}),[{filename:"~/.claude/settings.json",content:JSON.stringify({env:v},null,2)}])})]})}],10215);var n=n;e.s(["default",0,function({tool:e,isExpanded:t,onToggle:o,baseUrl:c,apiKeys:x,activeProviders:m,cloudEnabled:u,initialStatus:p}){let h,g,f,[y,b]=(0,a.useState)(p||null),[j,N]=(0,a.useState)(!1),[v,w]=(0,a.useState)(!1),[k,C]=(0,a.useState)(!1),[S,A]=(0,a.useState)(null),[_,E]=(0,a.useState)(!1),[T,O]=(0,a.useState)(""),[M,I]=(0,a.useState)(""),[P,R]=(0,a.useState)(!1),[D,U]=(0,a.useState)({}),[$,L]=(0,a.useState)(!1),[B,K]=(0,a.useState)("");(0,a.useEffect)(()=>{x?.length>0&&!T&&O(x[0].key)},[x,T]),(0,a.useEffect)(()=>{p&&b(p)},[p]),(0,a.useEffect)(()=>{t&&!y&&(q(),z()),t&&z()},[t]);let z=async()=>{try{let e=await fetch("/api/models/alias"),t=await e.json();e.ok&&U(t.aliases||{})}catch(e){console.log("Error fetching model aliases:",e)}};(0,a.useEffect)(()=>{if(y?.config){let e=y.config.match(/^model\s*=\s*"([^"]+)"/m);e&&I(e[1])}},[y]);let F=y?.installed?y.config?y.config.includes(c)||y.config.includes("localhost")||y.config.includes("127.0.0.1")?"configured":"other":"not_configured":null,H=()=>{let e=B||`${c}/v1`;return e.endsWith("/v1")?e:`${e}/v1`},q=async()=>{N(!0);try{let e=await fetch("/api/cli-tools/codex-settings"),t=await e.json();b(t)}catch(e){b({installed:!1,error:e.message})}finally{N(!1)}},J=async()=>{w(!0),A(null);try{let e=T&&T.trim()||u?T:"sk_9router",t=await fetch("/api/cli-tools/codex-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:H(),apiKey:e,model:M})}),s=await t.json();t.ok?(A({type:"success",text:"Settings applied successfully!"}),q()):A({type:"error",text:s.error||"Failed to apply settings"})}catch(e){A({type:"error",text:e.message})}finally{w(!1)}},W=async()=>{C(!0),A(null);try{let e=await fetch("/api/cli-tools/codex-settings",{method:"DELETE"}),t=await e.json();e.ok?(A({type:"success",text:"Settings reset successfully!"}),I(""),q()):A({type:"error",text:t.error||"Failed to reset settings"})}catch(e){A({type:"error",text:e.message})}finally{C(!1)}};return(0,s.jsxs)(l.Card,{padding:"xs",className:"overflow-hidden",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between hover:cursor-pointer",onClick:o,children:[(0,s.jsxs)("div",{className:"flex items-center gap-3",children:[(0,s.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,s.jsx)(d.default,{src:"/providers/codex.png",alt:e.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:e=>{e.target.style.display="none"}})}),(0,s.jsxs)("div",{className:"min-w-0",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("h3",{className:"font-medium text-sm",children:e.name}),"configured"===F&&(0,s.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-green-500/10 text-green-600 dark:text-green-400 rounded-full",children:"Connected"}),"not_configured"===F&&(0,s.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-yellow-500/10 text-yellow-600 dark:text-yellow-400 rounded-full",children:"Not configured"}),"other"===F&&(0,s.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-blue-500/10 text-blue-600 dark:text-blue-400 rounded-full",children:"Other"})]}),(0,s.jsx)("p",{className:"text-xs text-text-muted truncate",children:e.description})]})]}),(0,s.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,s.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[j&&(0,s.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,s.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,s.jsx)("span",{children:"Checking Codex CLI..."})]}),!j&&y&&!y.installed&&(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsxs)("div",{className:"flex items-center gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,s.jsxs)("div",{className:"flex-1",children:[(0,s.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:"Codex CLI not installed"}),(0,s.jsx)("p",{className:"text-sm text-text-muted",children:"Please install Codex CLI to use auto-apply feature."})]}),(0,s.jsxs)(r.Button,{variant:"outline",size:"sm",onClick:()=>E(!_),children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:_?"expand_less":"help"}),_?"Hide":"How to Install"]})]}),_&&(0,s.jsxs)("div",{className:"p-4 bg-surface border border-border rounded-lg",children:[(0,s.jsx)("h4",{className:"font-medium mb-3",children:"Installation Guide"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("p",{className:"text-text-muted mb-1",children:"macOS / Linux / Windows:"}),(0,s.jsx)("code",{className:"block px-3 py-2 bg-black/5 dark:bg-white/5 rounded font-mono text-xs",children:"npm install -g @openai/codex"})]}),(0,s.jsxs)("p",{className:"text-text-muted",children:["After installation, run ",(0,s.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"codex"})," to verify."]}),(0,s.jsx)("div",{className:"pt-2 border-t border-border",children:(0,s.jsxs)("p",{className:"text-text-muted text-xs",children:["Codex uses ",(0,s.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"~/.codex/auth.json"})," with ",(0,s.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"OPENAI_API_KEY"}),'. Click "Apply" to auto-configure.']})})]})]})]}),!j&&y?.installed&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"flex flex-col gap-2",children:[y?.config&&((g=(h=y.config.match(/base_url\s*=\s*"([^"]+)"/))?h[1]:null)?(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Current"}),(0,s.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,s.jsx)("span",{className:"flex-1 px-2 py-1.5 text-xs text-text-muted truncate",children:g})]}):null),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Base URL"}),(0,s.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,s.jsx)("input",{type:"text",value:B||`${c}/v1`,onChange:e=>K(e.target.value),placeholder:"https://.../v1",className:"flex-1 px-2 py-1.5 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"}),B&&B!==`${c}/v1`&&(0,s.jsx)("button",{onClick:()=>K(""),className:"p-1 text-text-muted hover:text-primary rounded transition-colors",title:"Reset to default",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"restart_alt"})})]}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"API Key"}),(0,s.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),x.length>0?(0,s.jsx)("select",{value:T,onChange:e=>O(e.target.value),className:"flex-1 px-2 py-1.5 bg-surface rounded text-xs border border-border focus:outline-none focus:ring-1 focus:ring-primary/50",children:x.map(e=>(0,s.jsx)("option",{value:e.key,children:e.key},e.id))}):(0,s.jsx)("span",{className:"flex-1 text-xs text-text-muted px-2 py-1.5",children:u?"No API keys - Create one in Keys page":"sk_9router (default)"})]}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Model"}),(0,s.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,s.jsx)("input",{type:"text",value:M,onChange:e=>I(e.target.value),placeholder:"provider/model-id",className:"flex-1 px-2 py-1.5 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"}),(0,s.jsx)("button",{onClick:()=>R(!0),disabled:!m?.length,className:`px-2 py-1.5 rounded border text-xs transition-colors shrink-0 whitespace-nowrap ${m?.length?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select Model"}),M&&(0,s.jsx)("button",{onClick:()=>I(""),className:"p-1 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]})]}),S&&(0,s.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===S.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===S.type?"check_circle":"error"}),(0,s.jsx)("span",{children:S.text})]}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsxs)(r.Button,{variant:"primary",size:"sm",onClick:J,disabled:!T||!M,loading:v,children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,s.jsxs)(r.Button,{variant:"outline",size:"sm",onClick:W,disabled:!y.has9Router,loading:k,children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,s.jsxs)(r.Button,{variant:"ghost",size:"sm",onClick:()=>L(!0),children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]})]})]}),(0,s.jsx)(i.ModelSelectModal,{isOpen:P,onClose:()=>R(!1),onSelect:e=>{I(e.value),R(!1)},selectedModel:M,activeProviders:m,modelAliases:D,title:"Select Model for Codex"}),(0,s.jsx)(n.default,{isOpen:$,onClose:()=>L(!1),title:"Codex CLI - Manual Configuration",configs:(f=T&&T.trim()?T:u?"<API_KEY_FROM_DASHBOARD>":"sk_9router",[{filename:"~/.codex/config.toml",content:`# 9Router Configuration for Codex CLI
7
+ }`}}};e.s(["CLI_TOOLS",0,t,"MITM_TOOLS",0,{antigravity:{id:"antigravity",name:"Antigravity",image:"/providers/antigravity.png",color:"#4285F4",description:"Google Antigravity IDE with MITM",configType:"mitm",mitmDomain:"daily-cloudcode-pa.googleapis.com",supportsTokenSwap:!0,tokenSwapProvider:"antigravity",modelAliases:["claude-opus-4-6-thinking","claude-sonnet-4-6","gemini-3-flash","gpt-oss-120b-medium","gemini-3-pro-high","gemini-3-pro-low"],defaultModels:[{id:"gemini-3.1-pro-high",name:"Gemini 3.1 Pro High",alias:"gemini-3.1-pro-high"},{id:"gemini-3.1-pro-low",name:"Gemini 3.1 Pro Low",alias:"gemini-3.1-pro-low"},{id:"gemini-3-flash",name:"Gemini 3 Flash",alias:"gemini-3-flash"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6",alias:"claude-sonnet-4-6"},{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 Thinking",alias:"claude-opus-4-6-thinking"},{id:"gpt-oss-120b-medium",name:"GPT OSS 120B Medium",alias:"gpt-oss-120b-medium"}]},copilot:{id:"copilot",name:"GitHub Copilot",image:"/providers/copilot.png",color:"#1F6FEB",description:"GitHub Copilot IDE with MITM",configType:"mitm",mitmDomain:"api.individual.githubcopilot.com",modelAliases:["gpt-4o-mini","claude-haiku-4.5","gpt-4o","gpt-5-mini"],defaultModels:[{id:"gpt-4o",name:"GPT-4o",alias:"gpt-4o"},{id:"gpt-4.1",name:"GPT-4.1",alias:"gpt-4.1"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5",alias:"claude-haiku-4.5"}]},kiro:{id:"kiro",name:"Kiro",image:"/providers/kiro.png",color:"#FF6B00",description:"Kiro IDE with MITM",configType:"mitm",mitmDomain:"q.us-east-1.amazonaws.com",defaultModels:[{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5",alias:"claude-sonnet-4.5"},{id:"claude-sonnet-4",name:"Claude Sonnet 4",alias:"claude-sonnet-4"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5",alias:"claude-haiku-4.5"},{id:"deepseek-3.2",name:"DeepSeek 3.2",alias:"deepseek-3.2"},{id:"minimax-m2.1",name:"MiniMax M2.1",alias:"minimax-m2.1"},{id:"simple-task",name:"Qwen3 Coder Next",alias:"simple-task"}]}}],66104),e.i(47167);var s=e.i(43476),a=e.i(71645);e.i(38730);var l=e.i(96521),r=e.i(39114),i=e.i(20956),n=e.i(20733),n=n,o=e.i(55849),d=e.i(57688);let c="https://9router.com";e.s(["default",0,function({tool:e,isExpanded:t,onToggle:x,activeProviders:m,modelMappings:u,onModelMappingChange:p,baseUrl:h,hasActiveProviders:g,apiKeys:f,cloudEnabled:y,initialStatus:b}){let j,N,v,[w,k]=(0,a.useState)(b||null),[C,S]=(0,a.useState)(!1),[A,_]=(0,a.useState)(!1),[E,T]=(0,a.useState)(!1),[O,M]=(0,a.useState)(null),[I,P]=(0,a.useState)(!1),[R,D]=(0,a.useState)(!1),[U,$]=(0,a.useState)(null),[L,B]=(0,a.useState)(""),[K,z]=(0,a.useState)({}),[F,H]=(0,a.useState)(!1),[q,J]=(0,a.useState)(""),[W,G]=(0,a.useState)(!1),Y=(0,a.useRef)(!1),V=(()=>{if(!w?.installed)return null;let e=w.settings?.env?.ANTHROPIC_BASE_URL;if(!e)return"not_configured";let t=e.includes("localhost")||e.includes("127.0.0.1"),s=y&&c&&e.startsWith(c),a=h&&e.startsWith(h);return t||s||a?"configured":"other"})();(0,a.useEffect)(()=>{f?.length>0&&!L&&B(f[0].key)},[f,L]),(0,a.useEffect)(()=>{b&&k(b)},[b]),(0,a.useEffect)(()=>{t&&!w&&(Z(),X()),t&&X()},[t]),(0,a.useEffect)(()=>{fetch("/api/settings").then(e=>e.json()).then(e=>{G(!!e.ccFilterNaming)}).catch(()=>{})},[]);let Q=async e=>{let t=e.target.checked;G(t),await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({ccFilterNaming:t})}).catch(()=>{})},X=async()=>{try{let e=await fetch("/api/models/alias"),t=await e.json();e.ok&&z(t.aliases||{})}catch(e){console.log("Error fetching model aliases:",e)}};(0,a.useEffect)(()=>{if(w?.installed&&!Y.current){Y.current=!0;let t=w.settings?.env||{};e.defaultModels.forEach(e=>{if(e.envKey){let s=t[e.envKey]||e.defaultValue||"";s&&p(e.alias,s)}});let s=t.ANTHROPIC_AUTH_TOKEN;s&&f?.some(e=>e.key===s)&&B(s)}},[w,f,e.defaultModels,p]);let Z=async()=>{S(!0);try{let e=await fetch("/api/cli-tools/claude-settings"),t=await e.json();k(t)}catch(e){k({installed:!1,error:e.message})}finally{S(!1)}},ee=()=>{let e=q||h;return e.endsWith("/v1")?e:`${e}/v1`},et=async()=>{_(!0),M(null);try{let t={ANTHROPIC_BASE_URL:ee()},s=L?.trim()||(f?.length>0?f[0].key:null)||(y?null:"sk_9router");s&&(t.ANTHROPIC_AUTH_TOKEN=s),e.defaultModels.forEach(e=>{let s=u[e.alias];s&&e.envKey&&(t[e.envKey]=s)});let a=await fetch("/api/cli-tools/claude-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({env:t})}),l=await a.json();a.ok?(M({type:"success",text:"Settings applied successfully!"}),k(e=>({...e,hasBackup:!0,settings:{...e?.settings,env:t}}))):M({type:"error",text:l.error||"Failed to apply settings"})}catch(e){M({type:"error",text:e.message})}finally{_(!1)}},es=async()=>{T(!0),M(null);try{let t=await fetch("/api/cli-tools/claude-settings",{method:"DELETE"}),s=await t.json();t.ok?(M({type:"success",text:"Settings reset successfully!"}),e.defaultModels.forEach(e=>p(e.alias,e.defaultValue||"")),B("")):M({type:"error",text:s.error||"Failed to reset settings"})}catch(e){M({type:"error",text:e.message})}finally{T(!1)}};return(0,s.jsxs)(l.Card,{padding:"xs",className:"overflow-hidden",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between hover:cursor-pointer",onClick:x,children:[(0,s.jsxs)("div",{className:"flex items-center gap-3",children:[(0,s.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,s.jsx)(d.default,{src:"/providers/claude.png",alt:e.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:e=>{e.target.style.display="none"}})}),(0,s.jsxs)("div",{className:"min-w-0",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("h3",{className:"font-medium text-sm",children:e.name}),"configured"===V&&(0,s.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-green-500/10 text-green-600 dark:text-green-400 rounded-full",children:"Connected"}),"not_configured"===V&&(0,s.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-yellow-500/10 text-yellow-600 dark:text-yellow-400 rounded-full",children:"Not configured"}),"other"===V&&(0,s.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-blue-500/10 text-blue-600 dark:text-blue-400 rounded-full",children:"Other"})]}),(0,s.jsx)("p",{className:"text-xs text-text-muted truncate",children:e.description})]})]}),(0,s.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,s.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[C&&(0,s.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,s.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,s.jsx)("span",{children:"Checking Claude CLI..."})]}),!C&&w&&!w.installed&&(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsxs)("div",{className:"flex items-center gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,s.jsxs)("div",{className:"flex-1",children:[(0,s.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:"Claude CLI not installed"}),(0,s.jsx)("p",{className:"text-sm text-text-muted",children:"Please install Claude CLI to use this feature."})]}),(0,s.jsxs)(r.Button,{variant:"outline",size:"sm",onClick:()=>P(!I),children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:I?"expand_less":"help"}),I?"Hide":"How to Install"]})]}),I&&(0,s.jsxs)("div",{className:"p-4 bg-surface border border-border rounded-lg",children:[(0,s.jsx)("h4",{className:"font-medium mb-3",children:"Installation Guide"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("p",{className:"text-text-muted mb-1",children:"macOS / Linux / Windows:"}),(0,s.jsx)("code",{className:"block px-3 py-2 bg-black/5 dark:bg-white/5 rounded font-mono text-xs",children:"npm install -g @anthropic-ai/claude-code"})]}),(0,s.jsxs)("p",{className:"text-text-muted",children:["After installation, run ",(0,s.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"claude"})," to verify."]})]})]})]}),!C&&w?.installed&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"flex flex-col gap-2",children:[w?.settings?.env?.ANTHROPIC_BASE_URL&&(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Current"}),(0,s.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,s.jsx)("span",{className:"flex-1 px-2 py-1.5 text-xs text-text-muted truncate",children:w.settings.env.ANTHROPIC_BASE_URL})]}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Base URL"}),(0,s.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,s.jsx)("input",{type:"text",value:(j=q||h).endsWith("/v1")?j:`${j}/v1`,onChange:e=>J(e.target.value),placeholder:"https://.../v1",className:"flex-1 px-2 py-1.5 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"}),q&&q!==h&&(0,s.jsx)("button",{onClick:()=>J(""),className:"p-1 text-text-muted hover:text-primary rounded transition-colors",title:"Reset to default",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"restart_alt"})})]}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"API Key"}),(0,s.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),f.length>0?(0,s.jsx)("select",{value:L,onChange:e=>B(e.target.value),className:"flex-1 px-2 py-1.5 bg-surface rounded text-xs border border-border focus:outline-none focus:ring-1 focus:ring-primary/50",children:f.map(e=>(0,s.jsx)("option",{value:e.key,children:e.key},e.id))}):(0,s.jsx)("span",{className:"flex-1 text-xs text-text-muted px-2 py-1.5",children:y?"No API keys - Create one in Keys page":"sk_9router (default)"})]}),e.defaultModels.map(e=>(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:e.name}),(0,s.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,s.jsx)("input",{type:"text",value:u[e.alias]||"",onChange:t=>p(e.alias,t.target.value),placeholder:"provider/model-id",className:"flex-1 px-2 py-1.5 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"}),(0,s.jsx)("button",{onClick:()=>{$(e.alias),D(!0)},disabled:!g,className:`px-2 py-1.5 rounded border text-xs transition-colors shrink-0 whitespace-nowrap ${g?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select Model"}),u[e.alias]&&(0,s.jsx)("button",{onClick:()=>p(e.alias,""),className:"p-1 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]},e.alias)),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Filter naming"}),(0,s.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,s.jsxs)("label",{className:"flex items-center gap-1.5 cursor-pointer select-none",children:[(0,s.jsx)("input",{type:"checkbox",checked:W,onChange:Q,className:"w-3.5 h-3.5 accent-primary cursor-pointer"}),(0,s.jsx)("span",{className:"text-xs text-text-muted",children:"Filter naming requests"})]}),(0,s.jsx)(o.Tooltip,{text:"Intercepts Claude Code's topic-naming requests and returns a fake response locally, saving API tokens.",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px] cursor-help",children:"info"})})]})]}),O&&(0,s.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===O.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===O.type?"check_circle":"error"}),(0,s.jsx)("span",{children:O.text})]}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsxs)(r.Button,{variant:"primary",size:"sm",onClick:et,disabled:!g,loading:A,children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,s.jsxs)(r.Button,{variant:"outline",size:"sm",onClick:es,disabled:!w?.has9Router,loading:E,children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,s.jsxs)(r.Button,{variant:"ghost",size:"sm",onClick:()=>H(!0),children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]})]})]}),(0,s.jsx)(i.ModelSelectModal,{isOpen:R,onClose:()=>D(!1),onSelect:e=>{U&&p(U,e.value)},selectedModel:U?u[U]:null,activeProviders:m,modelAliases:K,title:`Select model for ${U}`}),(0,s.jsx)(n.default,{isOpen:F,onClose:()=>H(!1),title:"Claude CLI - Manual Configuration",configs:(N=L&&L.trim()?L:y?"<API_KEY_FROM_DASHBOARD>":"sk_9router",v={ANTHROPIC_BASE_URL:ee(),ANTHROPIC_AUTH_TOKEN:N},e.defaultModels.forEach(e=>{let t=u[e.alias];t&&e.envKey&&(v[e.envKey]=t)}),[{filename:"~/.claude/settings.json",content:JSON.stringify({env:v},null,2)}])})]})}],10215);var n=n;e.s(["default",0,function({tool:e,isExpanded:t,onToggle:o,baseUrl:c,apiKeys:x,activeProviders:m,cloudEnabled:u,initialStatus:p}){let h,g,f,[y,b]=(0,a.useState)(p||null),[j,N]=(0,a.useState)(!1),[v,w]=(0,a.useState)(!1),[k,C]=(0,a.useState)(!1),[S,A]=(0,a.useState)(null),[_,E]=(0,a.useState)(!1),[T,O]=(0,a.useState)(""),[M,I]=(0,a.useState)(""),[P,R]=(0,a.useState)(!1),[D,U]=(0,a.useState)({}),[$,L]=(0,a.useState)(!1),[B,K]=(0,a.useState)("");(0,a.useEffect)(()=>{x?.length>0&&!T&&O(x[0].key)},[x,T]),(0,a.useEffect)(()=>{p&&b(p)},[p]),(0,a.useEffect)(()=>{t&&!y&&(q(),z()),t&&z()},[t]);let z=async()=>{try{let e=await fetch("/api/models/alias"),t=await e.json();e.ok&&U(t.aliases||{})}catch(e){console.log("Error fetching model aliases:",e)}};(0,a.useEffect)(()=>{if(y?.config){let e=y.config.match(/^model\s*=\s*"([^"]+)"/m);e&&I(e[1])}},[y]);let F=y?.installed?y.config?y.config.includes(c)||y.config.includes("localhost")||y.config.includes("127.0.0.1")?"configured":"other":"not_configured":null,H=()=>{let e=B||`${c}/v1`;return e.endsWith("/v1")?e:`${e}/v1`},q=async()=>{N(!0);try{let e=await fetch("/api/cli-tools/codex-settings"),t=await e.json();b(t)}catch(e){b({installed:!1,error:e.message})}finally{N(!1)}},J=async()=>{w(!0),A(null);try{let e=T&&T.trim()||u?T:"sk_9router",t=await fetch("/api/cli-tools/codex-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:H(),apiKey:e,model:M})}),s=await t.json();t.ok?(A({type:"success",text:"Settings applied successfully!"}),q()):A({type:"error",text:s.error||"Failed to apply settings"})}catch(e){A({type:"error",text:e.message})}finally{w(!1)}},W=async()=>{C(!0),A(null);try{let e=await fetch("/api/cli-tools/codex-settings",{method:"DELETE"}),t=await e.json();e.ok?(A({type:"success",text:"Settings reset successfully!"}),I(""),q()):A({type:"error",text:t.error||"Failed to reset settings"})}catch(e){A({type:"error",text:e.message})}finally{C(!1)}};return(0,s.jsxs)(l.Card,{padding:"xs",className:"overflow-hidden",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between hover:cursor-pointer",onClick:o,children:[(0,s.jsxs)("div",{className:"flex items-center gap-3",children:[(0,s.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,s.jsx)(d.default,{src:"/providers/codex.png",alt:e.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:e=>{e.target.style.display="none"}})}),(0,s.jsxs)("div",{className:"min-w-0",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("h3",{className:"font-medium text-sm",children:e.name}),"configured"===F&&(0,s.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-green-500/10 text-green-600 dark:text-green-400 rounded-full",children:"Connected"}),"not_configured"===F&&(0,s.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-yellow-500/10 text-yellow-600 dark:text-yellow-400 rounded-full",children:"Not configured"}),"other"===F&&(0,s.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-blue-500/10 text-blue-600 dark:text-blue-400 rounded-full",children:"Other"})]}),(0,s.jsx)("p",{className:"text-xs text-text-muted truncate",children:e.description})]})]}),(0,s.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,s.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[j&&(0,s.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,s.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,s.jsx)("span",{children:"Checking Codex CLI..."})]}),!j&&y&&!y.installed&&(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsxs)("div",{className:"flex items-center gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,s.jsxs)("div",{className:"flex-1",children:[(0,s.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:"Codex CLI not installed"}),(0,s.jsx)("p",{className:"text-sm text-text-muted",children:"Please install Codex CLI to use auto-apply feature."})]}),(0,s.jsxs)(r.Button,{variant:"outline",size:"sm",onClick:()=>E(!_),children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:_?"expand_less":"help"}),_?"Hide":"How to Install"]})]}),_&&(0,s.jsxs)("div",{className:"p-4 bg-surface border border-border rounded-lg",children:[(0,s.jsx)("h4",{className:"font-medium mb-3",children:"Installation Guide"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("p",{className:"text-text-muted mb-1",children:"macOS / Linux / Windows:"}),(0,s.jsx)("code",{className:"block px-3 py-2 bg-black/5 dark:bg-white/5 rounded font-mono text-xs",children:"npm install -g @openai/codex"})]}),(0,s.jsxs)("p",{className:"text-text-muted",children:["After installation, run ",(0,s.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"codex"})," to verify."]}),(0,s.jsx)("div",{className:"pt-2 border-t border-border",children:(0,s.jsxs)("p",{className:"text-text-muted text-xs",children:["Codex uses ",(0,s.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"~/.codex/auth.json"})," with ",(0,s.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"OPENAI_API_KEY"}),'. Click "Apply" to auto-configure.']})})]})]})]}),!j&&y?.installed&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"flex flex-col gap-2",children:[y?.config&&((g=(h=y.config.match(/base_url\s*=\s*"([^"]+)"/))?h[1]:null)?(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Current"}),(0,s.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,s.jsx)("span",{className:"flex-1 px-2 py-1.5 text-xs text-text-muted truncate",children:g})]}):null),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Base URL"}),(0,s.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,s.jsx)("input",{type:"text",value:B||`${c}/v1`,onChange:e=>K(e.target.value),placeholder:"https://.../v1",className:"flex-1 px-2 py-1.5 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"}),B&&B!==`${c}/v1`&&(0,s.jsx)("button",{onClick:()=>K(""),className:"p-1 text-text-muted hover:text-primary rounded transition-colors",title:"Reset to default",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"restart_alt"})})]}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"API Key"}),(0,s.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),x.length>0?(0,s.jsx)("select",{value:T,onChange:e=>O(e.target.value),className:"flex-1 px-2 py-1.5 bg-surface rounded text-xs border border-border focus:outline-none focus:ring-1 focus:ring-primary/50",children:x.map(e=>(0,s.jsx)("option",{value:e.key,children:e.key},e.id))}):(0,s.jsx)("span",{className:"flex-1 text-xs text-text-muted px-2 py-1.5",children:u?"No API keys - Create one in Keys page":"sk_9router (default)"})]}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Model"}),(0,s.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,s.jsx)("input",{type:"text",value:M,onChange:e=>I(e.target.value),placeholder:"provider/model-id",className:"flex-1 px-2 py-1.5 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"}),(0,s.jsx)("button",{onClick:()=>R(!0),disabled:!m?.length,className:`px-2 py-1.5 rounded border text-xs transition-colors shrink-0 whitespace-nowrap ${m?.length?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select Model"}),M&&(0,s.jsx)("button",{onClick:()=>I(""),className:"p-1 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]})]}),S&&(0,s.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===S.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===S.type?"check_circle":"error"}),(0,s.jsx)("span",{children:S.text})]}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsxs)(r.Button,{variant:"primary",size:"sm",onClick:J,disabled:!T||!M,loading:v,children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,s.jsxs)(r.Button,{variant:"outline",size:"sm",onClick:W,disabled:!y.has9Router,loading:k,children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,s.jsxs)(r.Button,{variant:"ghost",size:"sm",onClick:()=>L(!0),children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]})]})]}),(0,s.jsx)(i.ModelSelectModal,{isOpen:P,onClose:()=>R(!1),onSelect:e=>{I(e.value),R(!1)},selectedModel:M,activeProviders:m,modelAliases:D,title:"Select Model for Codex"}),(0,s.jsx)(n.default,{isOpen:$,onClose:()=>L(!1),title:"Codex CLI - Manual Configuration",configs:(f=T&&T.trim()?T:u?"<API_KEY_FROM_DASHBOARD>":"sk_9router",[{filename:"~/.codex/config.toml",content:`# 9Router Configuration for Codex CLI
8
8
  model = "${M}"
9
9
  model_provider = "9router"
10
10
 
@@ -1,3 +1,3 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,20956,e=>{"use strict";var t=e.i(41691);e.s(["ModelSelectModal",()=>t.default])},35918,e=>{"use strict";var t=e.i(55937);e.s(["calculatePercentage",0,function(e,t){return t&&0!==t?!e||e<0?100:e>=t?0:Math.round((t-e)/t*100):0},"formatResetTime",0,function(e){if(!e)return"-";try{let t="string"==typeof e?new Date(e):e,r=new Date,i=t-r;if(i<=0)return"-";let a=Math.ceil(i/6e4);if(a<60)return`${a}m`;let n=Math.floor(a/60),s=a%60;if(n<24)return`${n}h ${s}m`;let o=Math.floor(n/24);return`${o}d ${n%24}h ${s}m`}catch(e){return"-"}},"parseQuotaData",0,function(e,r){if(!r||"object"!=typeof r)return[];let i=[];try{switch(e.toLowerCase()){case"github":default:r.quotas&&Object.entries(r.quotas).forEach(([e,t])=>{i.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})});break;case"antigravity":r.quotas&&Object.entries(r.quotas).forEach(([e,t])=>{i.push({name:t.displayName||e,modelKey:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null,remainingPercentage:t.remainingPercentage})});break;case"codex":r.quotas&&Object.entries(r.quotas).forEach(([e,t])=>{i.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})});break;case"kiro":r.quotas&&Object.entries(r.quotas).forEach(([e,t])=>{i.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})});break;case"claude":r.message?i.push({name:"error",used:0,total:0,resetAt:null,message:r.message}):r.quotas&&Object.entries(r.quotas).forEach(([e,t])=>{i.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})})}}catch(t){return console.error(`Error parsing quota data for ${e}:`,t),[]}let a=(0,t.getModelsByProviderId)(e);if(a.length>0){let e=new Map(a.map((e,t)=>[e.id,t]));i.sort((t,r)=>{let i=t.modelKey||t.name,a=r.modelKey||r.name;return(e.get(i)??999)-(e.get(a)??999)})}return i}])},96521,e=>{"use strict";var t=e.i(10092);e.s(["Card",()=>t.default])},75634,e=>{"use strict";var t=e.i(88577);e.s(["Toggle",()=>t.default])},51916,e=>{"use strict";var t=e.i(64920);e.s(["Badge",()=>t.default])},88143,(e,t,r)=>{"use strict";function i({widthInt:e,heightInt:t,blurWidth:r,blurHeight:a,blurDataURL:n,objectFit:s}){let o=r?40*r:e,l=a?40*a:t,u=o&&l?`viewBox='0 0 ${o} ${l}'`:"";return`%3Csvg xmlns='http://www.w3.org/2000/svg' ${u}%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='${u?"none":"contain"===s?"xMidYMid":"cover"===s?"xMidYMid slice":"none"}' style='filter: url(%23b);' href='${n}'/%3E%3C/svg%3E`}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getImageBlurSvg",{enumerable:!0,get:function(){return i}})},87690,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var i={VALID_LOADERS:function(){return n},imageConfigDefault:function(){return s}};for(var a in i)Object.defineProperty(r,a,{enumerable:!0,get:i[a]});let n=["default","imgix","cloudinary","akamai","custom"],s={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],path:"/_next/image",loader:"default",loaderFile:"",domains:[],disableStaticImages:!1,minimumCacheTTL:14400,formats:["image/webp"],maximumDiskCacheSize:void 0,maximumRedirects:3,maximumResponseBody:5e7,dangerouslyAllowLocalIP:!1,dangerouslyAllowSVG:!1,contentSecurityPolicy:"script-src 'none'; frame-src 'none'; sandbox;",contentDispositionType:"attachment",localPatterns:void 0,remotePatterns:[],qualities:[75],unoptimized:!1,customCacheHandler:!1}},8927,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getImgProps",{enumerable:!0,get:function(){return u}}),e.r(33525);let i=e.r(43369),a=e.r(88143),n=e.r(87690),s=["-moz-initial","fill","none","scale-down",void 0];function o(e){return void 0!==e.default}function l(e){return void 0===e?e:"number"==typeof e?Number.isFinite(e)?e:NaN:"string"==typeof e&&/^[0-9]+$/.test(e)?parseInt(e,10):NaN}function u({src:e,sizes:t,unoptimized:r=!1,priority:d=!1,preload:c=!1,loading:f,className:p,quality:g,width:m,height:h,fill:y=!1,style:b,overrideSrc:v,onLoad:w,onLoadingComplete:_,placeholder:j="empty",blurDataURL:S,fetchPriority:P,decoding:x="async",layout:O,objectFit:E,objectPosition:C,lazyBoundary:R,lazyRoot:M,...A},I){var z;let k,$,D,{imgConf:T,showAltText:q,blurComplete:N,defaultLoader:L}=I,U=T||n.imageConfigDefault;if("allSizes"in U)k=U;else{let e=[...U.deviceSizes,...U.imageSizes].sort((e,t)=>e-t),t=U.deviceSizes.sort((e,t)=>e-t),r=U.qualities?.sort((e,t)=>e-t);k={...U,allSizes:e,deviceSizes:t,qualities:r}}if(void 0===L)throw Object.defineProperty(Error("images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config"),"__NEXT_ERROR_CODE",{value:"E163",enumerable:!1,configurable:!0});let B=A.loader||L;delete A.loader,delete A.srcSet;let F="__next_img_default"in B;if(F){if("custom"===k.loader)throw Object.defineProperty(Error(`Image with src "${e}" is missing "loader" prop.
2
- Read more: https://nextjs.org/docs/messages/next-image-missing-loader`),"__NEXT_ERROR_CODE",{value:"E252",enumerable:!1,configurable:!0})}else{let e=B;B=t=>{let{config:r,...i}=t;return e(i)}}if(O){"fill"===O&&(y=!0);let e={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[O];e&&(b={...b,...e});let r={responsive:"100vw",fill:"100vw"}[O];r&&!t&&(t=r)}let W="",G=l(m),K=l(h);if((z=e)&&"object"==typeof z&&(o(z)||void 0!==z.src)){let t=o(e)?e.default:e;if(!t.src)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(t)}`),"__NEXT_ERROR_CODE",{value:"E460",enumerable:!1,configurable:!0});if(!t.height||!t.width)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(t)}`),"__NEXT_ERROR_CODE",{value:"E48",enumerable:!1,configurable:!0});if($=t.blurWidth,D=t.blurHeight,S=S||t.blurDataURL,W=t.src,!y)if(G||K){if(G&&!K){let e=G/t.width;K=Math.round(t.height*e)}else if(!G&&K){let e=K/t.height;G=Math.round(t.width*e)}}else G=t.width,K=t.height}let X=!d&&!c&&("lazy"===f||void 0===f);(!(e="string"==typeof e?e:W)||e.startsWith("data:")||e.startsWith("blob:"))&&(r=!0,X=!1),k.unoptimized&&(r=!0),F&&!k.dangerouslyAllowSVG&&e.split("?",1)[0].endsWith(".svg")&&(r=!0);let H=l(g),V=Object.assign(y?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:E,objectPosition:C}:{},q?{}:{color:"transparent"},b),Q=N||"empty"===j?null:"blur"===j?`url("data:image/svg+xml;charset=utf-8,${(0,a.getImageBlurSvg)({widthInt:G,heightInt:K,blurWidth:$,blurHeight:D,blurDataURL:S||"",objectFit:V.objectFit})}")`:`url("${j}")`,J=s.includes(V.objectFit)?"fill"===V.objectFit?"100% 100%":"cover":V.objectFit,Y=Q?{backgroundSize:J,backgroundPosition:V.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:Q}:{},Z=function({config:e,src:t,unoptimized:r,width:a,quality:n,sizes:s,loader:o}){if(r){if(t.startsWith("/")&&!t.startsWith("//")){let e=(0,i.getDeploymentId)();if(e){let r=t.indexOf("?");if(-1!==r){let i=new URLSearchParams(t.slice(r+1));i.get("dpl")||(i.append("dpl",e),t=t.slice(0,r)+"?"+i.toString())}else t+=`?dpl=${e}`}}return{src:t,srcSet:void 0,sizes:void 0}}let{widths:l,kind:u}=function({deviceSizes:e,allSizes:t},r,i){if(i){let r=/(^|\s)(1?\d?\d)vw/g,a=[];for(let e;e=r.exec(i);)a.push(parseInt(e[2]));if(a.length){let r=.01*Math.min(...a);return{widths:t.filter(t=>t>=e[0]*r),kind:"w"}}return{widths:t,kind:"w"}}return"number"!=typeof r?{widths:e,kind:"w"}:{widths:[...new Set([r,2*r].map(e=>t.find(t=>t>=e)||t[t.length-1]))],kind:"x"}}(e,a,s),d=l.length-1;return{sizes:s||"w"!==u?s:"100vw",srcSet:l.map((r,i)=>`${o({config:e,src:t,quality:n,width:r})} ${"w"===u?r:i+1}${u}`).join(", "),src:o({config:e,src:t,quality:n,width:l[d]})}}({config:k,src:e,unoptimized:r,width:G,quality:H,sizes:t,loader:B}),ee=X?"lazy":f;return{props:{...A,loading:ee,fetchPriority:P,width:G,height:K,decoding:x,className:p,style:{...V,...Y},sizes:Z.sizes,srcSet:Z.srcSet,src:v||Z.src},meta:{unoptimized:r,preload:c||d,placeholder:j,fill:y}}}},98879,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return o}});let i=e.r(71645),a="u"<typeof window,n=a?()=>{}:i.useLayoutEffect,s=a?()=>{}:i.useEffect;function o(e){let{headManager:t,reduceComponentsToState:r}=e;function o(){if(t&&t.mountedInstances){let e=i.Children.toArray(Array.from(t.mountedInstances).filter(Boolean));t.updateHead(r(e))}}return a&&(t?.mountedInstances?.add(e.children),o()),n(()=>(t?.mountedInstances?.add(e.children),()=>{t?.mountedInstances?.delete(e.children)})),n(()=>(t&&(t._pendingUpdate=o),()=>{t&&(t._pendingUpdate=o)})),s(()=>(t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null),()=>{t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null)})),null}},25633,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var i={default:function(){return m},defaultHead:function(){return c}};for(var a in i)Object.defineProperty(r,a,{enumerable:!0,get:i[a]});let n=e.r(55682),s=e.r(90809),o=e.r(43476),l=s._(e.r(71645)),u=n._(e.r(98879)),d=e.r(42732);function c(){return[(0,o.jsx)("meta",{charSet:"utf-8"},"charset"),(0,o.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")]}function f(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===l.default.Fragment?e.concat(l.default.Children.toArray(t.props.children).reduce((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t),[])):e.concat(t)}e.r(33525);let p=["name","httpEquiv","charSet","itemProp"];function g(e){let t,r,i,a;return e.reduce(f,[]).reverse().concat(c().reverse()).filter((t=new Set,r=new Set,i=new Set,a={},e=>{let n=!0,s=!1;if(e.key&&"number"!=typeof e.key&&e.key.indexOf("$")>0){s=!0;let r=e.key.slice(e.key.indexOf("$")+1);t.has(r)?n=!1:t.add(r)}switch(e.type){case"title":case"base":r.has(e.type)?n=!1:r.add(e.type);break;case"meta":for(let t=0,r=p.length;t<r;t++){let r=p[t];if(e.props.hasOwnProperty(r))if("charSet"===r)i.has(r)?n=!1:i.add(r);else{let t=e.props[r],i=a[r]||new Set;("name"!==r||!s)&&i.has(t)?n=!1:(i.add(t),a[r]=i)}}}return n})).reverse().map((e,t)=>{let r=e.key||t;return l.default.cloneElement(e,{key:r})})}let m=function({children:e}){let t=(0,l.useContext)(d.HeadManagerContext);return(0,o.jsx)(u.default,{reduceComponentsToState:g,headManager:t,children:e})};("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},18556,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ImageConfigContext",{enumerable:!0,get:function(){return n}});let i=e.r(55682)._(e.r(71645)),a=e.r(87690),n=i.default.createContext(a.imageConfigDefault)},65856,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"RouterContext",{enumerable:!0,get:function(){return i}});let i=e.r(55682)._(e.r(71645)).default.createContext(null)},70965,(e,t,r)=>{"use strict";function i(e,t){let r=e||75;return t?.qualities?.length?t.qualities.reduce((e,t)=>Math.abs(t-r)<Math.abs(e-r)?t:e,t.qualities[0]):r}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"findClosestQuality",{enumerable:!0,get:function(){return i}})},1948,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return s}});let i=e.r(70965),a=e.r(43369);function n({config:e,src:t,width:r,quality:s}){let o=(0,a.getDeploymentId)();if(t.startsWith("/")&&!t.startsWith("//")){let e=t.indexOf("?");if(-1!==e){let r=new URLSearchParams(t.slice(e+1)),i=r.get("dpl");if(i){o=i,r.delete("dpl");let a=r.toString();t=t.slice(0,e)+(a?"?"+a:"")}}}if(t.startsWith("/")&&t.includes("?")&&e.localPatterns?.length===1&&"**"===e.localPatterns[0].pathname&&""===e.localPatterns[0].search)throw Object.defineProperty(Error(`Image with src "${t}" is using a query string which is not configured in images.localPatterns.
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,20956,e=>{"use strict";var t=e.i(41691);e.s(["ModelSelectModal",()=>t.default])},35918,e=>{"use strict";var t=e.i(55937);e.s(["calculatePercentage",0,function(e,t){return t&&0!==t?!e||e<0?100:e>=t?0:Math.round((t-e)/t*100):0},"formatResetTime",0,function(e){if(!e)return"-";try{let t="string"==typeof e?new Date(e):e,r=new Date,i=t-r;if(i<=0)return"-";let a=Math.ceil(i/6e4);if(a<60)return`${a}m`;let n=Math.floor(a/60),s=a%60;if(n<24)return`${n}h ${s}m`;let o=Math.floor(n/24);return`${o}d ${n%24}h ${s}m`}catch(e){return"-"}},"parseQuotaData",0,function(e,r){if(!r||"object"!=typeof r)return[];let i=[];try{switch(e.toLowerCase()){case"github":default:r.quotas&&Object.entries(r.quotas).forEach(([e,t])=>{i.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})});break;case"antigravity":r.quotas&&Object.entries(r.quotas).forEach(([e,t])=>{i.push({name:t.displayName||e,modelKey:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null,remainingPercentage:t.remainingPercentage})});break;case"codex":r.quotas&&Object.entries(r.quotas).forEach(([e,t])=>{i.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})});break;case"kiro":r.quotas&&Object.entries(r.quotas).forEach(([e,t])=>{i.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})});break;case"claude":r.message?i.push({name:"error",used:0,total:0,resetAt:null,message:r.message}):r.quotas&&Object.entries(r.quotas).forEach(([e,t])=>{i.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})})}}catch(t){return console.error(`Error parsing quota data for ${e}:`,t),[]}let a=(0,t.getModelsByProviderId)(e);if(a.length>0){let e=new Map(a.map((e,t)=>[e.id,t]));i.sort((t,r)=>{let i=t.modelKey||t.name,a=r.modelKey||r.name;return(e.get(i)??999)-(e.get(a)??999)})}return i}])},96521,e=>{"use strict";var t=e.i(10092);e.s(["Card",()=>t.default])},75634,e=>{"use strict";var t=e.i(88577);e.s(["Toggle",()=>t.default])},51916,e=>{"use strict";var t=e.i(64920);e.s(["Badge",()=>t.default])},55849,e=>{"use strict";var t=e.i(12720);e.s(["Tooltip",()=>t.default])},88143,(e,t,r)=>{"use strict";function i({widthInt:e,heightInt:t,blurWidth:r,blurHeight:a,blurDataURL:n,objectFit:s}){let o=r?40*r:e,l=a?40*a:t,u=o&&l?`viewBox='0 0 ${o} ${l}'`:"";return`%3Csvg xmlns='http://www.w3.org/2000/svg' ${u}%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='${u?"none":"contain"===s?"xMidYMid":"cover"===s?"xMidYMid slice":"none"}' style='filter: url(%23b);' href='${n}'/%3E%3C/svg%3E`}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getImageBlurSvg",{enumerable:!0,get:function(){return i}})},87690,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var i={VALID_LOADERS:function(){return n},imageConfigDefault:function(){return s}};for(var a in i)Object.defineProperty(r,a,{enumerable:!0,get:i[a]});let n=["default","imgix","cloudinary","akamai","custom"],s={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],path:"/_next/image",loader:"default",loaderFile:"",domains:[],disableStaticImages:!1,minimumCacheTTL:14400,formats:["image/webp"],maximumDiskCacheSize:void 0,maximumRedirects:3,maximumResponseBody:5e7,dangerouslyAllowLocalIP:!1,dangerouslyAllowSVG:!1,contentSecurityPolicy:"script-src 'none'; frame-src 'none'; sandbox;",contentDispositionType:"attachment",localPatterns:void 0,remotePatterns:[],qualities:[75],unoptimized:!1,customCacheHandler:!1}},8927,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getImgProps",{enumerable:!0,get:function(){return u}}),e.r(33525);let i=e.r(43369),a=e.r(88143),n=e.r(87690),s=["-moz-initial","fill","none","scale-down",void 0];function o(e){return void 0!==e.default}function l(e){return void 0===e?e:"number"==typeof e?Number.isFinite(e)?e:NaN:"string"==typeof e&&/^[0-9]+$/.test(e)?parseInt(e,10):NaN}function u({src:e,sizes:t,unoptimized:r=!1,priority:d=!1,preload:c=!1,loading:f,className:p,quality:g,width:m,height:h,fill:y=!1,style:b,overrideSrc:v,onLoad:w,onLoadingComplete:_,placeholder:j="empty",blurDataURL:S,fetchPriority:P,decoding:x="async",layout:O,objectFit:E,objectPosition:C,lazyBoundary:R,lazyRoot:M,...A},I){var z;let k,$,T,{imgConf:D,showAltText:q,blurComplete:N,defaultLoader:L}=I,U=D||n.imageConfigDefault;if("allSizes"in U)k=U;else{let e=[...U.deviceSizes,...U.imageSizes].sort((e,t)=>e-t),t=U.deviceSizes.sort((e,t)=>e-t),r=U.qualities?.sort((e,t)=>e-t);k={...U,allSizes:e,deviceSizes:t,qualities:r}}if(void 0===L)throw Object.defineProperty(Error("images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config"),"__NEXT_ERROR_CODE",{value:"E163",enumerable:!1,configurable:!0});let B=A.loader||L;delete A.loader,delete A.srcSet;let F="__next_img_default"in B;if(F){if("custom"===k.loader)throw Object.defineProperty(Error(`Image with src "${e}" is missing "loader" prop.
2
+ Read more: https://nextjs.org/docs/messages/next-image-missing-loader`),"__NEXT_ERROR_CODE",{value:"E252",enumerable:!1,configurable:!0})}else{let e=B;B=t=>{let{config:r,...i}=t;return e(i)}}if(O){"fill"===O&&(y=!0);let e={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[O];e&&(b={...b,...e});let r={responsive:"100vw",fill:"100vw"}[O];r&&!t&&(t=r)}let W="",G=l(m),K=l(h);if((z=e)&&"object"==typeof z&&(o(z)||void 0!==z.src)){let t=o(e)?e.default:e;if(!t.src)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(t)}`),"__NEXT_ERROR_CODE",{value:"E460",enumerable:!1,configurable:!0});if(!t.height||!t.width)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(t)}`),"__NEXT_ERROR_CODE",{value:"E48",enumerable:!1,configurable:!0});if($=t.blurWidth,T=t.blurHeight,S=S||t.blurDataURL,W=t.src,!y)if(G||K){if(G&&!K){let e=G/t.width;K=Math.round(t.height*e)}else if(!G&&K){let e=K/t.height;G=Math.round(t.width*e)}}else G=t.width,K=t.height}let X=!d&&!c&&("lazy"===f||void 0===f);(!(e="string"==typeof e?e:W)||e.startsWith("data:")||e.startsWith("blob:"))&&(r=!0,X=!1),k.unoptimized&&(r=!0),F&&!k.dangerouslyAllowSVG&&e.split("?",1)[0].endsWith(".svg")&&(r=!0);let H=l(g),V=Object.assign(y?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:E,objectPosition:C}:{},q?{}:{color:"transparent"},b),Q=N||"empty"===j?null:"blur"===j?`url("data:image/svg+xml;charset=utf-8,${(0,a.getImageBlurSvg)({widthInt:G,heightInt:K,blurWidth:$,blurHeight:T,blurDataURL:S||"",objectFit:V.objectFit})}")`:`url("${j}")`,J=s.includes(V.objectFit)?"fill"===V.objectFit?"100% 100%":"cover":V.objectFit,Y=Q?{backgroundSize:J,backgroundPosition:V.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:Q}:{},Z=function({config:e,src:t,unoptimized:r,width:a,quality:n,sizes:s,loader:o}){if(r){if(t.startsWith("/")&&!t.startsWith("//")){let e=(0,i.getDeploymentId)();if(e){let r=t.indexOf("?");if(-1!==r){let i=new URLSearchParams(t.slice(r+1));i.get("dpl")||(i.append("dpl",e),t=t.slice(0,r)+"?"+i.toString())}else t+=`?dpl=${e}`}}return{src:t,srcSet:void 0,sizes:void 0}}let{widths:l,kind:u}=function({deviceSizes:e,allSizes:t},r,i){if(i){let r=/(^|\s)(1?\d?\d)vw/g,a=[];for(let e;e=r.exec(i);)a.push(parseInt(e[2]));if(a.length){let r=.01*Math.min(...a);return{widths:t.filter(t=>t>=e[0]*r),kind:"w"}}return{widths:t,kind:"w"}}return"number"!=typeof r?{widths:e,kind:"w"}:{widths:[...new Set([r,2*r].map(e=>t.find(t=>t>=e)||t[t.length-1]))],kind:"x"}}(e,a,s),d=l.length-1;return{sizes:s||"w"!==u?s:"100vw",srcSet:l.map((r,i)=>`${o({config:e,src:t,quality:n,width:r})} ${"w"===u?r:i+1}${u}`).join(", "),src:o({config:e,src:t,quality:n,width:l[d]})}}({config:k,src:e,unoptimized:r,width:G,quality:H,sizes:t,loader:B}),ee=X?"lazy":f;return{props:{...A,loading:ee,fetchPriority:P,width:G,height:K,decoding:x,className:p,style:{...V,...Y},sizes:Z.sizes,srcSet:Z.srcSet,src:v||Z.src},meta:{unoptimized:r,preload:c||d,placeholder:j,fill:y}}}},98879,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return o}});let i=e.r(71645),a="u"<typeof window,n=a?()=>{}:i.useLayoutEffect,s=a?()=>{}:i.useEffect;function o(e){let{headManager:t,reduceComponentsToState:r}=e;function o(){if(t&&t.mountedInstances){let e=i.Children.toArray(Array.from(t.mountedInstances).filter(Boolean));t.updateHead(r(e))}}return a&&(t?.mountedInstances?.add(e.children),o()),n(()=>(t?.mountedInstances?.add(e.children),()=>{t?.mountedInstances?.delete(e.children)})),n(()=>(t&&(t._pendingUpdate=o),()=>{t&&(t._pendingUpdate=o)})),s(()=>(t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null),()=>{t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null)})),null}},25633,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var i={default:function(){return m},defaultHead:function(){return c}};for(var a in i)Object.defineProperty(r,a,{enumerable:!0,get:i[a]});let n=e.r(55682),s=e.r(90809),o=e.r(43476),l=s._(e.r(71645)),u=n._(e.r(98879)),d=e.r(42732);function c(){return[(0,o.jsx)("meta",{charSet:"utf-8"},"charset"),(0,o.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")]}function f(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===l.default.Fragment?e.concat(l.default.Children.toArray(t.props.children).reduce((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t),[])):e.concat(t)}e.r(33525);let p=["name","httpEquiv","charSet","itemProp"];function g(e){let t,r,i,a;return e.reduce(f,[]).reverse().concat(c().reverse()).filter((t=new Set,r=new Set,i=new Set,a={},e=>{let n=!0,s=!1;if(e.key&&"number"!=typeof e.key&&e.key.indexOf("$")>0){s=!0;let r=e.key.slice(e.key.indexOf("$")+1);t.has(r)?n=!1:t.add(r)}switch(e.type){case"title":case"base":r.has(e.type)?n=!1:r.add(e.type);break;case"meta":for(let t=0,r=p.length;t<r;t++){let r=p[t];if(e.props.hasOwnProperty(r))if("charSet"===r)i.has(r)?n=!1:i.add(r);else{let t=e.props[r],i=a[r]||new Set;("name"!==r||!s)&&i.has(t)?n=!1:(i.add(t),a[r]=i)}}}return n})).reverse().map((e,t)=>{let r=e.key||t;return l.default.cloneElement(e,{key:r})})}let m=function({children:e}){let t=(0,l.useContext)(d.HeadManagerContext);return(0,o.jsx)(u.default,{reduceComponentsToState:g,headManager:t,children:e})};("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},18556,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ImageConfigContext",{enumerable:!0,get:function(){return n}});let i=e.r(55682)._(e.r(71645)),a=e.r(87690),n=i.default.createContext(a.imageConfigDefault)},65856,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"RouterContext",{enumerable:!0,get:function(){return i}});let i=e.r(55682)._(e.r(71645)).default.createContext(null)},70965,(e,t,r)=>{"use strict";function i(e,t){let r=e||75;return t?.qualities?.length?t.qualities.reduce((e,t)=>Math.abs(t-r)<Math.abs(e-r)?t:e,t.qualities[0]):r}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"findClosestQuality",{enumerable:!0,get:function(){return i}})},1948,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return s}});let i=e.r(70965),a=e.r(43369);function n({config:e,src:t,width:r,quality:s}){let o=(0,a.getDeploymentId)();if(t.startsWith("/")&&!t.startsWith("//")){let e=t.indexOf("?");if(-1!==e){let r=new URLSearchParams(t.slice(e+1)),i=r.get("dpl");if(i){o=i,r.delete("dpl");let a=r.toString();t=t.slice(0,e)+(a?"?"+a:"")}}}if(t.startsWith("/")&&t.includes("?")&&e.localPatterns?.length===1&&"**"===e.localPatterns[0].pathname&&""===e.localPatterns[0].search)throw Object.defineProperty(Error(`Image with src "${t}" is using a query string which is not configured in images.localPatterns.
3
3
  Read more: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`),"__NEXT_ERROR_CODE",{value:"E871",enumerable:!1,configurable:!0});let l=(0,i.findClosestQuality)(s,e);return`${e.path}?url=${encodeURIComponent(t)}&w=${r}&q=${l}${t.startsWith("/")&&o?`&dpl=${o}`:""}`}n.__next_img_default=!0;let s=n},5500,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"Image",{enumerable:!0,get:function(){return w}});let i=e.r(55682),a=e.r(90809),n=e.r(43476),s=a._(e.r(71645)),o=i._(e.r(74080)),l=i._(e.r(25633)),u=e.r(8927),d=e.r(87690),c=e.r(18556);e.r(33525);let f=e.r(65856),p=i._(e.r(1948)),g=e.r(18581),m={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!0};function h(e,t,r,i,a,n,s){let o=e?.src;e&&e["data-loaded-src"]!==o&&(e["data-loaded-src"]=o,("decode"in e?e.decode():Promise.resolve()).catch(()=>{}).then(()=>{if(e.parentElement&&e.isConnected){if("empty"!==t&&a(!0),r?.current){let t=new Event("load");Object.defineProperty(t,"target",{writable:!1,value:e});let i=!1,a=!1;r.current({...t,nativeEvent:t,currentTarget:e,target:e,isDefaultPrevented:()=>i,isPropagationStopped:()=>a,persist:()=>{},preventDefault:()=>{i=!0,t.preventDefault()},stopPropagation:()=>{a=!0,t.stopPropagation()}})}i?.current&&i.current(e)}}))}function y(e){return s.use?{fetchPriority:e}:{fetchpriority:e}}"u"<typeof window&&(globalThis.__NEXT_IMAGE_IMPORTED=!0);let b=(0,s.forwardRef)(({src:e,srcSet:t,sizes:r,height:i,width:a,decoding:o,className:l,style:u,fetchPriority:d,placeholder:c,loading:f,unoptimized:p,fill:m,onLoadRef:b,onLoadingCompleteRef:v,setBlurComplete:w,setShowAltText:_,sizesInput:j,onLoad:S,onError:P,...x},O)=>{let E=(0,s.useCallback)(e=>{e&&(P&&(e.src=e.src),e.complete&&h(e,c,b,v,w,p,j))},[e,c,b,v,w,P,p,j]),C=(0,g.useMergedRef)(O,E);return(0,n.jsx)("img",{...x,...y(d),loading:f,width:a,height:i,decoding:o,"data-nimg":m?"fill":"1",className:l,style:u,sizes:r,srcSet:t,src:e,ref:C,onLoad:e=>{h(e.currentTarget,c,b,v,w,p,j)},onError:e=>{_(!0),"empty"!==c&&w(!0),P&&P(e)}})});function v({isAppRouter:e,imgAttributes:t}){let r={as:"image",imageSrcSet:t.srcSet,imageSizes:t.sizes,crossOrigin:t.crossOrigin,referrerPolicy:t.referrerPolicy,...y(t.fetchPriority)};return e&&o.default.preload?(o.default.preload(t.src,r),null):(0,n.jsx)(l.default,{children:(0,n.jsx)("link",{rel:"preload",href:t.srcSet?void 0:t.src,...r},"__nimg-"+t.src+t.srcSet+t.sizes)})}let w=(0,s.forwardRef)((e,t)=>{let r=(0,s.useContext)(f.RouterContext),i=(0,s.useContext)(c.ImageConfigContext),a=(0,s.useMemo)(()=>{let e=m||i||d.imageConfigDefault,t=[...e.deviceSizes,...e.imageSizes].sort((e,t)=>e-t),r=e.deviceSizes.sort((e,t)=>e-t),a=e.qualities?.sort((e,t)=>e-t);return{...e,allSizes:t,deviceSizes:r,qualities:a,localPatterns:"u"<typeof window?i?.localPatterns:e.localPatterns}},[i]),{onLoad:o,onLoadingComplete:l}=e,g=(0,s.useRef)(o);(0,s.useEffect)(()=>{g.current=o},[o]);let h=(0,s.useRef)(l);(0,s.useEffect)(()=>{h.current=l},[l]);let[y,w]=(0,s.useState)(!1),[_,j]=(0,s.useState)(!1),{props:S,meta:P}=(0,u.getImgProps)(e,{defaultLoader:p.default,imgConf:a,blurComplete:y,showAltText:_});return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(b,{...S,unoptimized:P.unoptimized,placeholder:P.placeholder,fill:P.fill,onLoadRef:g,onLoadingCompleteRef:h,setBlurComplete:w,setShowAltText:j,sizesInput:e.sizes,ref:t}),P.preload?(0,n.jsx)(v,{isAppRouter:!r,imgAttributes:S}):null]})});("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},94909,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var i={default:function(){return d},getImageProps:function(){return u}};for(var a in i)Object.defineProperty(r,a,{enumerable:!0,get:i[a]});let n=e.r(55682),s=e.r(8927),o=e.r(5500),l=n._(e.r(1948));function u(e){let{props:t}=(0,s.getImgProps)(e,{defaultLoader:l.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!0}});for(let[e,r]of Object.entries(t))void 0===r&&delete t[e];return{props:t}}let d=o.Image},57688,(e,t,r)=>{t.exports=e.r(94909)},29511,e=>{"use strict";var t=e.i(43476),r=e.i(71645),i=e.i(66104);e.i(4565);var a=e.i(55937),n=e.i(85035);e.i(83806);var s=e.i(67551),s=s,o=e.i(25792),o=o,l=e.i(24991),l=l;e.s(["default",0,function(){let[e,u]=(0,r.useState)([]),[d,c]=(0,r.useState)([]),[f,p]=(0,r.useState)({}),[g,m]=(0,r.useState)(!1),[h,y]=(0,r.useState)(null),[b,v]=(0,r.useState)({running:!1,certExists:!1,dnsStatus:{},hasCachedPassword:!1}),[w,_]=(0,r.useState)(!1),j=async()=>{try{let e=await fetch("/api/providers");if(e.ok){let t=await e.json();u(t.connections||[])}}catch{}},S=async()=>{try{let e=await fetch("/api/keys");if(e.ok){let t=await e.json();c(t.keys||[])}}catch{}},P=async()=>{try{let e=await fetch("/api/models/alias");if(e.ok){let t=await e.json();p(t.aliases||{})}}catch{}},x=async()=>{try{let e=await fetch("/api/settings");if(e.ok){let t=await e.json();m(t.cloudEnabled||!1),_(!!t.tokenSwapEnabled)}}catch{}};(0,r.useEffect)(()=>{(async()=>{await Promise.all([j(),S(),P(),x()])})()},[]);let O=()=>e.filter(e=>!1!==e.isActive),E=Object.entries(i.MITM_TOOLS);return(0,t.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,t.jsx)(s.default,{apiKeys:d,cloudEnabled:g,onStatusChange:v}),(0,t.jsx)("div",{className:"flex flex-col gap-2",children:E.map(([i,s])=>(0,t.jsxs)(r.Fragment,{children:[(0,t.jsx)(o.default,{tool:s,isExpanded:h===i,onToggle:()=>y(h===i?null:i),serverRunning:b.running,dnsActive:b.dnsStatus?.[i]||!1,hasCachedPassword:b.hasCachedPassword||!1,apiKeys:d,activeProviders:O(),hasActiveProviders:O().some(e=>(0,a.getModelsByProviderId)(e.provider).length>0||(0,n.isOpenAICompatibleProvider)(e.provider)||(0,n.isAnthropicCompatibleProvider)(e.provider)),modelAliases:f,cloudEnabled:g,tokenSwapActive:s.supportsTokenSwap&&w,onDnsChange:e=>v(t=>({...t,dnsStatus:e.dnsStatus??t.dnsStatus}))}),s.supportsTokenSwap&&(0,t.jsx)(l.default,{tool:s,connections:e,serverRunning:b.running,dnsActive:b.dnsStatus?.[i]||!1,onToggle:e=>_(e),onRefreshConnections:j})]},i))})]})}],29511)}]);
@@ -1,3 +1,3 @@
1
1
  (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,4539,e=>{"use strict";var t=e.i(94081);e.s(["Select",()=>t.default])},96521,e=>{"use strict";var t=e.i(10092);e.s(["Card",()=>t.default])},75634,e=>{"use strict";var t=e.i(88577);e.s(["Toggle",()=>t.default])},51916,e=>{"use strict";var t=e.i(64920);e.s(["Badge",()=>t.default])},88143,(e,t,r)=>{"use strict";function i({widthInt:e,heightInt:t,blurWidth:r,blurHeight:n,blurDataURL:a,objectFit:o}){let l=r?40*r:e,s=n?40*n:t,u=l&&s?`viewBox='0 0 ${l} ${s}'`:"";return`%3Csvg xmlns='http://www.w3.org/2000/svg' ${u}%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='${u?"none":"contain"===o?"xMidYMid":"cover"===o?"xMidYMid slice":"none"}' style='filter: url(%23b);' href='${a}'/%3E%3C/svg%3E`}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getImageBlurSvg",{enumerable:!0,get:function(){return i}})},87690,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var i={VALID_LOADERS:function(){return a},imageConfigDefault:function(){return o}};for(var n in i)Object.defineProperty(r,n,{enumerable:!0,get:i[n]});let a=["default","imgix","cloudinary","akamai","custom"],o={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],path:"/_next/image",loader:"default",loaderFile:"",domains:[],disableStaticImages:!1,minimumCacheTTL:14400,formats:["image/webp"],maximumDiskCacheSize:void 0,maximumRedirects:3,maximumResponseBody:5e7,dangerouslyAllowLocalIP:!1,dangerouslyAllowSVG:!1,contentSecurityPolicy:"script-src 'none'; frame-src 'none'; sandbox;",contentDispositionType:"attachment",localPatterns:void 0,remotePatterns:[],qualities:[75],unoptimized:!1,customCacheHandler:!1}},8927,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getImgProps",{enumerable:!0,get:function(){return u}}),e.r(33525);let i=e.r(43369),n=e.r(88143),a=e.r(87690),o=["-moz-initial","fill","none","scale-down",void 0];function l(e){return void 0!==e.default}function s(e){return void 0===e?e:"number"==typeof e?Number.isFinite(e)?e:NaN:"string"==typeof e&&/^[0-9]+$/.test(e)?parseInt(e,10):NaN}function u({src:e,sizes:t,unoptimized:r=!1,priority:d=!1,preload:c=!1,loading:f,className:p,quality:g,width:m,height:h,fill:b=!1,style:y,overrideSrc:v,onLoad:_,onLoadingComplete:w,placeholder:P="empty",blurDataURL:j,fetchPriority:O,decoding:S="async",layout:x,objectFit:C,objectPosition:E,lazyBoundary:R,lazyRoot:z,...M},I){var $;let D,T,A,{imgConf:k,showAltText:U,blurComplete:L,defaultLoader:N}=I,q=k||a.imageConfigDefault;if("allSizes"in q)D=q;else{let e=[...q.deviceSizes,...q.imageSizes].sort((e,t)=>e-t),t=q.deviceSizes.sort((e,t)=>e-t),r=q.qualities?.sort((e,t)=>e-t);D={...q,allSizes:e,deviceSizes:t,qualities:r}}if(void 0===N)throw Object.defineProperty(Error("images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config"),"__NEXT_ERROR_CODE",{value:"E163",enumerable:!1,configurable:!0});let B=M.loader||N;delete M.loader,delete M.srcSet;let F="__next_img_default"in B;if(F){if("custom"===D.loader)throw Object.defineProperty(Error(`Image with src "${e}" is missing "loader" prop.
2
2
  Read more: https://nextjs.org/docs/messages/next-image-missing-loader`),"__NEXT_ERROR_CODE",{value:"E252",enumerable:!1,configurable:!0})}else{let e=B;B=t=>{let{config:r,...i}=t;return e(i)}}if(x){"fill"===x&&(b=!0);let e={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[x];e&&(y={...y,...e});let r={responsive:"100vw",fill:"100vw"}[x];r&&!t&&(t=r)}let W="",G=s(m),X=s(h);if(($=e)&&"object"==typeof $&&(l($)||void 0!==$.src)){let t=l(e)?e.default:e;if(!t.src)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(t)}`),"__NEXT_ERROR_CODE",{value:"E460",enumerable:!1,configurable:!0});if(!t.height||!t.width)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(t)}`),"__NEXT_ERROR_CODE",{value:"E48",enumerable:!1,configurable:!0});if(T=t.blurWidth,A=t.blurHeight,j=j||t.blurDataURL,W=t.src,!b)if(G||X){if(G&&!X){let e=G/t.width;X=Math.round(t.height*e)}else if(!G&&X){let e=X/t.height;G=Math.round(t.width*e)}}else G=t.width,X=t.height}let H=!d&&!c&&("lazy"===f||void 0===f);(!(e="string"==typeof e?e:W)||e.startsWith("data:")||e.startsWith("blob:"))&&(r=!0,H=!1),D.unoptimized&&(r=!0),F&&!D.dangerouslyAllowSVG&&e.split("?",1)[0].endsWith(".svg")&&(r=!0);let V=s(g),J=Object.assign(b?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:C,objectPosition:E}:{},U?{}:{color:"transparent"},y),K=L||"empty"===P?null:"blur"===P?`url("data:image/svg+xml;charset=utf-8,${(0,n.getImageBlurSvg)({widthInt:G,heightInt:X,blurWidth:T,blurHeight:A,blurDataURL:j||"",objectFit:J.objectFit})}")`:`url("${P}")`,Q=o.includes(J.objectFit)?"fill"===J.objectFit?"100% 100%":"cover":J.objectFit,Y=K?{backgroundSize:Q,backgroundPosition:J.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:K}:{},Z=function({config:e,src:t,unoptimized:r,width:n,quality:a,sizes:o,loader:l}){if(r){if(t.startsWith("/")&&!t.startsWith("//")){let e=(0,i.getDeploymentId)();if(e){let r=t.indexOf("?");if(-1!==r){let i=new URLSearchParams(t.slice(r+1));i.get("dpl")||(i.append("dpl",e),t=t.slice(0,r)+"?"+i.toString())}else t+=`?dpl=${e}`}}return{src:t,srcSet:void 0,sizes:void 0}}let{widths:s,kind:u}=function({deviceSizes:e,allSizes:t},r,i){if(i){let r=/(^|\s)(1?\d?\d)vw/g,n=[];for(let e;e=r.exec(i);)n.push(parseInt(e[2]));if(n.length){let r=.01*Math.min(...n);return{widths:t.filter(t=>t>=e[0]*r),kind:"w"}}return{widths:t,kind:"w"}}return"number"!=typeof r?{widths:e,kind:"w"}:{widths:[...new Set([r,2*r].map(e=>t.find(t=>t>=e)||t[t.length-1]))],kind:"x"}}(e,n,o),d=s.length-1;return{sizes:o||"w"!==u?o:"100vw",srcSet:s.map((r,i)=>`${l({config:e,src:t,quality:a,width:r})} ${"w"===u?r:i+1}${u}`).join(", "),src:l({config:e,src:t,quality:a,width:s[d]})}}({config:D,src:e,unoptimized:r,width:G,quality:V,sizes:t,loader:B}),ee=H?"lazy":f;return{props:{...M,loading:ee,fetchPriority:O,width:G,height:X,decoding:S,className:p,style:{...J,...Y},sizes:Z.sizes,srcSet:Z.srcSet,src:v||Z.src},meta:{unoptimized:r,preload:c||d,placeholder:P,fill:b}}}},98879,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return l}});let i=e.r(71645),n="u"<typeof window,a=n?()=>{}:i.useLayoutEffect,o=n?()=>{}:i.useEffect;function l(e){let{headManager:t,reduceComponentsToState:r}=e;function l(){if(t&&t.mountedInstances){let e=i.Children.toArray(Array.from(t.mountedInstances).filter(Boolean));t.updateHead(r(e))}}return n&&(t?.mountedInstances?.add(e.children),l()),a(()=>(t?.mountedInstances?.add(e.children),()=>{t?.mountedInstances?.delete(e.children)})),a(()=>(t&&(t._pendingUpdate=l),()=>{t&&(t._pendingUpdate=l)})),o(()=>(t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null),()=>{t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null)})),null}},25633,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var i={default:function(){return m},defaultHead:function(){return c}};for(var n in i)Object.defineProperty(r,n,{enumerable:!0,get:i[n]});let a=e.r(55682),o=e.r(90809),l=e.r(43476),s=o._(e.r(71645)),u=a._(e.r(98879)),d=e.r(42732);function c(){return[(0,l.jsx)("meta",{charSet:"utf-8"},"charset"),(0,l.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")]}function f(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===s.default.Fragment?e.concat(s.default.Children.toArray(t.props.children).reduce((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t),[])):e.concat(t)}e.r(33525);let p=["name","httpEquiv","charSet","itemProp"];function g(e){let t,r,i,n;return e.reduce(f,[]).reverse().concat(c().reverse()).filter((t=new Set,r=new Set,i=new Set,n={},e=>{let a=!0,o=!1;if(e.key&&"number"!=typeof e.key&&e.key.indexOf("$")>0){o=!0;let r=e.key.slice(e.key.indexOf("$")+1);t.has(r)?a=!1:t.add(r)}switch(e.type){case"title":case"base":r.has(e.type)?a=!1:r.add(e.type);break;case"meta":for(let t=0,r=p.length;t<r;t++){let r=p[t];if(e.props.hasOwnProperty(r))if("charSet"===r)i.has(r)?a=!1:i.add(r);else{let t=e.props[r],i=n[r]||new Set;("name"!==r||!o)&&i.has(t)?a=!1:(i.add(t),n[r]=i)}}}return a})).reverse().map((e,t)=>{let r=e.key||t;return s.default.cloneElement(e,{key:r})})}let m=function({children:e}){let t=(0,s.useContext)(d.HeadManagerContext);return(0,l.jsx)(u.default,{reduceComponentsToState:g,headManager:t,children:e})};("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},18556,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ImageConfigContext",{enumerable:!0,get:function(){return a}});let i=e.r(55682)._(e.r(71645)),n=e.r(87690),a=i.default.createContext(n.imageConfigDefault)},65856,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"RouterContext",{enumerable:!0,get:function(){return i}});let i=e.r(55682)._(e.r(71645)).default.createContext(null)},70965,(e,t,r)=>{"use strict";function i(e,t){let r=e||75;return t?.qualities?.length?t.qualities.reduce((e,t)=>Math.abs(t-r)<Math.abs(e-r)?t:e,t.qualities[0]):r}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"findClosestQuality",{enumerable:!0,get:function(){return i}})},1948,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return o}});let i=e.r(70965),n=e.r(43369);function a({config:e,src:t,width:r,quality:o}){let l=(0,n.getDeploymentId)();if(t.startsWith("/")&&!t.startsWith("//")){let e=t.indexOf("?");if(-1!==e){let r=new URLSearchParams(t.slice(e+1)),i=r.get("dpl");if(i){l=i,r.delete("dpl");let n=r.toString();t=t.slice(0,e)+(n?"?"+n:"")}}}if(t.startsWith("/")&&t.includes("?")&&e.localPatterns?.length===1&&"**"===e.localPatterns[0].pathname&&""===e.localPatterns[0].search)throw Object.defineProperty(Error(`Image with src "${t}" is using a query string which is not configured in images.localPatterns.
3
- Read more: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`),"__NEXT_ERROR_CODE",{value:"E871",enumerable:!1,configurable:!0});let s=(0,i.findClosestQuality)(o,e);return`${e.path}?url=${encodeURIComponent(t)}&w=${r}&q=${s}${t.startsWith("/")&&l?`&dpl=${l}`:""}`}a.__next_img_default=!0;let o=a},5500,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"Image",{enumerable:!0,get:function(){return _}});let i=e.r(55682),n=e.r(90809),a=e.r(43476),o=n._(e.r(71645)),l=i._(e.r(74080)),s=i._(e.r(25633)),u=e.r(8927),d=e.r(87690),c=e.r(18556);e.r(33525);let f=e.r(65856),p=i._(e.r(1948)),g=e.r(18581),m={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!0};function h(e,t,r,i,n,a,o){let l=e?.src;e&&e["data-loaded-src"]!==l&&(e["data-loaded-src"]=l,("decode"in e?e.decode():Promise.resolve()).catch(()=>{}).then(()=>{if(e.parentElement&&e.isConnected){if("empty"!==t&&n(!0),r?.current){let t=new Event("load");Object.defineProperty(t,"target",{writable:!1,value:e});let i=!1,n=!1;r.current({...t,nativeEvent:t,currentTarget:e,target:e,isDefaultPrevented:()=>i,isPropagationStopped:()=>n,persist:()=>{},preventDefault:()=>{i=!0,t.preventDefault()},stopPropagation:()=>{n=!0,t.stopPropagation()}})}i?.current&&i.current(e)}}))}function b(e){return o.use?{fetchPriority:e}:{fetchpriority:e}}"u"<typeof window&&(globalThis.__NEXT_IMAGE_IMPORTED=!0);let y=(0,o.forwardRef)(({src:e,srcSet:t,sizes:r,height:i,width:n,decoding:l,className:s,style:u,fetchPriority:d,placeholder:c,loading:f,unoptimized:p,fill:m,onLoadRef:y,onLoadingCompleteRef:v,setBlurComplete:_,setShowAltText:w,sizesInput:P,onLoad:j,onError:O,...S},x)=>{let C=(0,o.useCallback)(e=>{e&&(O&&(e.src=e.src),e.complete&&h(e,c,y,v,_,p,P))},[e,c,y,v,_,O,p,P]),E=(0,g.useMergedRef)(x,C);return(0,a.jsx)("img",{...S,...b(d),loading:f,width:n,height:i,decoding:l,"data-nimg":m?"fill":"1",className:s,style:u,sizes:r,srcSet:t,src:e,ref:E,onLoad:e=>{h(e.currentTarget,c,y,v,_,p,P)},onError:e=>{w(!0),"empty"!==c&&_(!0),O&&O(e)}})});function v({isAppRouter:e,imgAttributes:t}){let r={as:"image",imageSrcSet:t.srcSet,imageSizes:t.sizes,crossOrigin:t.crossOrigin,referrerPolicy:t.referrerPolicy,...b(t.fetchPriority)};return e&&l.default.preload?(l.default.preload(t.src,r),null):(0,a.jsx)(s.default,{children:(0,a.jsx)("link",{rel:"preload",href:t.srcSet?void 0:t.src,...r},"__nimg-"+t.src+t.srcSet+t.sizes)})}let _=(0,o.forwardRef)((e,t)=>{let r=(0,o.useContext)(f.RouterContext),i=(0,o.useContext)(c.ImageConfigContext),n=(0,o.useMemo)(()=>{let e=m||i||d.imageConfigDefault,t=[...e.deviceSizes,...e.imageSizes].sort((e,t)=>e-t),r=e.deviceSizes.sort((e,t)=>e-t),n=e.qualities?.sort((e,t)=>e-t);return{...e,allSizes:t,deviceSizes:r,qualities:n,localPatterns:"u"<typeof window?i?.localPatterns:e.localPatterns}},[i]),{onLoad:l,onLoadingComplete:s}=e,g=(0,o.useRef)(l);(0,o.useEffect)(()=>{g.current=l},[l]);let h=(0,o.useRef)(s);(0,o.useEffect)(()=>{h.current=s},[s]);let[b,_]=(0,o.useState)(!1),[w,P]=(0,o.useState)(!1),{props:j,meta:O}=(0,u.getImgProps)(e,{defaultLoader:p.default,imgConf:n,blurComplete:b,showAltText:w});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(y,{...j,unoptimized:O.unoptimized,placeholder:O.placeholder,fill:O.fill,onLoadRef:g,onLoadingCompleteRef:h,setBlurComplete:_,setShowAltText:P,sizesInput:e.sizes,ref:t}),O.preload?(0,a.jsx)(v,{isAppRouter:!r,imgAttributes:j}):null]})});("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},94909,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var i={default:function(){return d},getImageProps:function(){return u}};for(var n in i)Object.defineProperty(r,n,{enumerable:!0,get:i[n]});let a=e.r(55682),o=e.r(8927),l=e.r(5500),s=a._(e.r(1948));function u(e){let{props:t}=(0,o.getImgProps)(e,{defaultLoader:s.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!0}});for(let[e,r]of Object.entries(t))void 0===r&&delete t[e];return{props:t}}let d=l.Image},57688,(e,t,r)=>{t.exports=e.r(94909)}]);
3
+ Read more: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`),"__NEXT_ERROR_CODE",{value:"E871",enumerable:!1,configurable:!0});let s=(0,i.findClosestQuality)(o,e);return`${e.path}?url=${encodeURIComponent(t)}&w=${r}&q=${s}${t.startsWith("/")&&l?`&dpl=${l}`:""}`}a.__next_img_default=!0;let o=a},5500,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"Image",{enumerable:!0,get:function(){return _}});let i=e.r(55682),n=e.r(90809),a=e.r(43476),o=n._(e.r(71645)),l=i._(e.r(74080)),s=i._(e.r(25633)),u=e.r(8927),d=e.r(87690),c=e.r(18556);e.r(33525);let f=e.r(65856),p=i._(e.r(1948)),g=e.r(18581),m={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!0};function h(e,t,r,i,n,a,o){let l=e?.src;e&&e["data-loaded-src"]!==l&&(e["data-loaded-src"]=l,("decode"in e?e.decode():Promise.resolve()).catch(()=>{}).then(()=>{if(e.parentElement&&e.isConnected){if("empty"!==t&&n(!0),r?.current){let t=new Event("load");Object.defineProperty(t,"target",{writable:!1,value:e});let i=!1,n=!1;r.current({...t,nativeEvent:t,currentTarget:e,target:e,isDefaultPrevented:()=>i,isPropagationStopped:()=>n,persist:()=>{},preventDefault:()=>{i=!0,t.preventDefault()},stopPropagation:()=>{n=!0,t.stopPropagation()}})}i?.current&&i.current(e)}}))}function b(e){return o.use?{fetchPriority:e}:{fetchpriority:e}}"u"<typeof window&&(globalThis.__NEXT_IMAGE_IMPORTED=!0);let y=(0,o.forwardRef)(({src:e,srcSet:t,sizes:r,height:i,width:n,decoding:l,className:s,style:u,fetchPriority:d,placeholder:c,loading:f,unoptimized:p,fill:m,onLoadRef:y,onLoadingCompleteRef:v,setBlurComplete:_,setShowAltText:w,sizesInput:P,onLoad:j,onError:O,...S},x)=>{let C=(0,o.useCallback)(e=>{e&&(O&&(e.src=e.src),e.complete&&h(e,c,y,v,_,p,P))},[e,c,y,v,_,O,p,P]),E=(0,g.useMergedRef)(x,C);return(0,a.jsx)("img",{...S,...b(d),loading:f,width:n,height:i,decoding:l,"data-nimg":m?"fill":"1",className:s,style:u,sizes:r,srcSet:t,src:e,ref:E,onLoad:e=>{h(e.currentTarget,c,y,v,_,p,P)},onError:e=>{w(!0),"empty"!==c&&_(!0),O&&O(e)}})});function v({isAppRouter:e,imgAttributes:t}){let r={as:"image",imageSrcSet:t.srcSet,imageSizes:t.sizes,crossOrigin:t.crossOrigin,referrerPolicy:t.referrerPolicy,...b(t.fetchPriority)};return e&&l.default.preload?(l.default.preload(t.src,r),null):(0,a.jsx)(s.default,{children:(0,a.jsx)("link",{rel:"preload",href:t.srcSet?void 0:t.src,...r},"__nimg-"+t.src+t.srcSet+t.sizes)})}let _=(0,o.forwardRef)((e,t)=>{let r=(0,o.useContext)(f.RouterContext),i=(0,o.useContext)(c.ImageConfigContext),n=(0,o.useMemo)(()=>{let e=m||i||d.imageConfigDefault,t=[...e.deviceSizes,...e.imageSizes].sort((e,t)=>e-t),r=e.deviceSizes.sort((e,t)=>e-t),n=e.qualities?.sort((e,t)=>e-t);return{...e,allSizes:t,deviceSizes:r,qualities:n,localPatterns:"u"<typeof window?i?.localPatterns:e.localPatterns}},[i]),{onLoad:l,onLoadingComplete:s}=e,g=(0,o.useRef)(l);(0,o.useEffect)(()=>{g.current=l},[l]);let h=(0,o.useRef)(s);(0,o.useEffect)(()=>{h.current=s},[s]);let[b,_]=(0,o.useState)(!1),[w,P]=(0,o.useState)(!1),{props:j,meta:O}=(0,u.getImgProps)(e,{defaultLoader:p.default,imgConf:n,blurComplete:b,showAltText:w});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(y,{...j,unoptimized:O.unoptimized,placeholder:O.placeholder,fill:O.fill,onLoadRef:g,onLoadingCompleteRef:h,setBlurComplete:_,setShowAltText:P,sizesInput:e.sizes,ref:t}),O.preload?(0,a.jsx)(v,{isAppRouter:!r,imgAttributes:j}):null]})});("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},94909,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var i={default:function(){return d},getImageProps:function(){return u}};for(var n in i)Object.defineProperty(r,n,{enumerable:!0,get:i[n]});let a=e.r(55682),o=e.r(8927),l=e.r(5500),s=a._(e.r(1948));function u(e){let{props:t}=(0,o.getImgProps)(e,{defaultLoader:s.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!0}});for(let[e,r]of Object.entries(t))void 0===r&&delete t[e];return{props:t}}let d=l.Image},57688,(e,t,r)=>{t.exports=e.r(94909)},55849,e=>{"use strict";var t=e.i(12720);e.s(["Tooltip",()=>t.default])}]);
@@ -0,0 +1,4 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,99165,e=>{"use strict";var t=e.i(43476),i=e.i(71645),a=e.i(45009),s=e.i(18566),r=e.i(22016),l=e.i(57688);e.i(38730);var o=e.i(96521),n=e.i(39114),d=e.i(51916),c=e.i(95541),p=e.i(85011),u=e.i(50832),x=e.i(10444),m=e.i(29852),m=m,h=e.i(30115),h=h,f=e.i(27927),f=f,y=e.i(59497),y=y,g=e.i(75634),b=e.i(4539),v=e.i(55849),j=e.i(85035);e.i(4565);var N=e.i(55937),k=e.i(29370);let C=new Map,w={"openrouter-free":e=>e.filter(e=>e.pricing?.prompt==="0"&&e.pricing?.completion==="0"&&e.context_length>=2e5).map(e=>({id:e.id,name:e.name,contextLength:e.context_length})).sort((e,t)=>t.contextLength-e.contextLength)};async function S(e){if(!e?.url||!e?.type)return[];let t=C.get(e.url);if(t&&Date.now()<t.expiresAt)return t.data;try{let t=await fetch(e.url);if(!t.ok)return[];let i=await t.json(),a=i.data??i.models??i,s=w[e.type],r=s?s(Array.isArray(a)?a:[]):[];return C.set(e.url,{data:r,expiresAt:Date.now()+6e5}),r}catch{return[]}}let A="Imports accounts from ~/.antigravity_tools on this machine (Antigravity IDE local data). Requires that folder to exist and contain signed-in accounts.",P='Paste Google OAuth refresh tokens: one per line (1//…), a JSON array with refresh_token, or any text containing "refresh_token": "…". Each token is refreshed and accounts are added or updated by Google email.';function T({model:e,fullModel:i,alias:a,copied:s,onCopy:r,testStatus:l,isCustom:o,isFree:n,onDeleteAlias:d,onTest:c,isTesting:p}){let u="ok"===l?"#22c55e":"error"===l?"#ef4444":void 0;return(0,t.jsx)("div",{className:`group px-3 py-2 rounded-lg border ${"ok"===l?"border-green-500/40":"error"===l?"border-red-500/40":"border-border"} hover:bg-sidebar/50`,children:(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-base",style:u?{color:u}:void 0,children:"ok"===l?"check_circle":"error"===l?"cancel":"smart_toy"}),(0,t.jsx)("code",{className:"text-xs text-text-muted font-mono bg-sidebar px-1.5 py-0.5 rounded",children:i}),c&&(0,t.jsxs)("div",{className:"relative group/btn",children:[(0,t.jsx)("button",{onClick:c,disabled:p,className:`p-0.5 hover:bg-sidebar rounded text-text-muted hover:text-primary transition-opacity ${p?"opacity-100":"opacity-0 group-hover:opacity-100"}`,children:(0,t.jsx)("span",{className:"material-symbols-outlined text-sm",style:p?{animation:"spin 1s linear infinite"}:void 0,children:p?"progress_activity":"science"})}),(0,t.jsx)("span",{className:"pointer-events-none absolute mt-1 top-5 left-1/2 -translate-x-1/2 text-[10px] text-text-muted whitespace-nowrap opacity-0 group-hover/btn:opacity-100 transition-opacity",children:p?"Testing...":"Test"})]}),(0,t.jsxs)("div",{className:"relative group/btn",children:[(0,t.jsx)("button",{onClick:()=>r(i,`model-${e.id}`),className:"p-0.5 hover:bg-sidebar rounded text-text-muted hover:text-primary",children:(0,t.jsx)("span",{className:"material-symbols-outlined text-sm",children:s===`model-${e.id}`?"check":"content_copy"})}),(0,t.jsx)("span",{className:"pointer-events-none absolute mt-1 top-5 left-1/2 -translate-x-1/2 text-[10px] text-text-muted whitespace-nowrap opacity-0 group-hover/btn:opacity-100 transition-opacity",children:s===`model-${e.id}`?"Copied!":"Copy"})]}),o&&(0,t.jsx)("button",{onClick:d,className:"p-0.5 hover:bg-red-500/10 rounded text-text-muted hover:text-red-500 opacity-0 group-hover:opacity-100 transition-opacity ml-auto",title:"Remove custom model",children:(0,t.jsx)("span",{className:"material-symbols-outlined text-sm",children:"close"})})]})})}function O({modelId:e,fullModel:i,copied:a,onCopy:s,onDeleteAlias:r,onTest:l,testStatus:o,isTesting:n,isFree:d}){let c="ok"===o?"#22c55e":"error"===o?"#ef4444":void 0;return(0,t.jsxs)("div",{className:`flex items-center gap-3 p-3 rounded-lg border ${"ok"===o?"border-green-500/40":"error"===o?"border-red-500/40":"border-border"} hover:bg-sidebar/50`,children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-base text-text-muted",style:c?{color:c}:void 0,children:"ok"===o?"check_circle":"error"===o?"cancel":"smart_toy"}),(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsx)("p",{className:"text-sm font-medium truncate",children:e}),(0,t.jsxs)("div",{className:"flex items-center gap-1 mt-1",children:[(0,t.jsx)("code",{className:"text-xs text-text-muted font-mono bg-sidebar px-1.5 py-0.5 rounded",children:i}),d&&(0,t.jsx)("span",{className:"text-[10px] font-medium px-1.5 py-0.5 rounded bg-green-500/10 text-green-600 dark:text-green-400",children:"Free"}),(0,t.jsxs)("div",{className:"relative group/btn",children:[(0,t.jsx)("button",{onClick:()=>s(i,`model-${e}`),className:"p-0.5 hover:bg-sidebar rounded text-text-muted hover:text-primary",children:(0,t.jsx)("span",{className:"material-symbols-outlined text-sm",children:a===`model-${e}`?"check":"content_copy"})}),(0,t.jsx)("span",{className:"pointer-events-none absolute top-5 left-1/2 -translate-x-1/2 text-[10px] text-text-muted whitespace-nowrap opacity-0 group-hover/btn:opacity-100 transition-opacity",children:a===`model-${e}`?"Copied!":"Copy"})]}),l&&(0,t.jsxs)("div",{className:"relative group/btn",children:[(0,t.jsx)("button",{onClick:l,disabled:n,className:"p-0.5 hover:bg-sidebar rounded text-text-muted hover:text-primary transition-colors",children:(0,t.jsx)("span",{className:"material-symbols-outlined text-sm",style:n?{animation:"spin 1s linear infinite"}:void 0,children:n?"progress_activity":"science"})}),(0,t.jsx)("span",{className:"pointer-events-none absolute top-5 left-1/2 -translate-x-1/2 text-[10px] text-text-muted whitespace-nowrap opacity-0 group-hover/btn:opacity-100 transition-opacity",children:n?"Testing...":"Test"})]})]})]}),(0,t.jsx)("button",{onClick:r,className:"p-1 hover:bg-red-50 rounded text-red-500",title:"Remove model",children:(0,t.jsx)("span",{className:"material-symbols-outlined text-sm",children:"delete"})})]})}function I({providerStorageAlias:e,providerDisplayAlias:a,modelAliases:s,copied:r,onCopy:l,onSetAlias:o,onDeleteAlias:d,connections:c,isAnthropic:p}){let[u,x]=(0,i.useState)(""),[m,h]=(0,i.useState)(!1),[f,y]=(0,i.useState)(!1),[g,b]=(0,i.useState)(null),[v,j]=(0,i.useState)({}),N=async t=>{if(!g){b(t);try{let i=await fetch("/api/models/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:`${e}/${t}`})}),a=await i.json();j(e=>({...e,[t]:a.ok?"ok":"error"}))}catch{j(e=>({...e,[t]:"error"}))}finally{b(null)}}},k=Object.entries(s).filter(([,t])=>t.startsWith(`${e}/`)).map(([t,i])=>({modelId:i.replace(`${e}/`,""),fullModel:i,alias:t})),C=t=>{let i,r=`${e}/${t}`;if(Object.values(s).includes(r))return null;let l=(i=t.split("/"))[i.length-1];if(!s[l])return l;let o=`${a}-${l}`;return s[o]?null:o},w=async()=>{if(!u.trim()||m)return;let t=u.trim(),i=C(t);if(!i)return void alert("All suggested aliases already exist. Please choose a different model or remove conflicting aliases.");h(!0);try{await o(t,i,e),x("")}catch(e){console.log("Error adding model:",e)}finally{h(!1)}},S=async()=>{if(f)return;let t=c.find(e=>!1!==e.isActive);if(t){y(!0);try{let i=await fetch(`/api/providers/${t.id}/models`),a=await i.json();if(!i.ok)return void alert(a.error||"Failed to import models");let s=a.models||[];if(0===s.length)return void alert("No models returned from /models.");let r=0;for(let t of s){let i=t.id||t.name||t.model;if(!i)continue;let a=C(i);a&&(await o(i,a,e),r+=1)}0===r&&alert("No new models were added.")}catch(e){console.log("Error importing models:",e)}finally{y(!1)}}},A=c.some(e=>!1!==e.isActive);return(0,t.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,t.jsxs)("p",{className:"text-sm text-text-muted",children:["Add ",p?"Anthropic":"OpenAI","-compatible models manually or import them from the /models endpoint."]}),(0,t.jsxs)("div",{className:"flex items-end gap-2 flex-wrap",children:[(0,t.jsxs)("div",{className:"flex-1 min-w-[240px]",children:[(0,t.jsx)("label",{htmlFor:"new-compatible-model-input",className:"text-xs text-text-muted mb-1 block",children:"Model ID"}),(0,t.jsx)("input",{id:"new-compatible-model-input",type:"text",value:u,onChange:e=>x(e.target.value),onKeyDown:e=>"Enter"===e.key&&w(),placeholder:p?"claude-3-opus-20240229":"gpt-4o",className:"w-full px-3 py-2 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary"})]}),(0,t.jsx)(n.Button,{size:"sm",icon:"add",onClick:w,disabled:!u.trim()||m,children:m?"Adding...":"Add"}),(0,t.jsx)(n.Button,{size:"sm",variant:"secondary",icon:"download",onClick:S,disabled:!A||f,children:f?"Importing...":"Import from /models"})]}),!A&&(0,t.jsx)("p",{className:"text-xs text-text-muted",children:"Add a connection to enable importing models."}),k.length>0&&(0,t.jsx)("div",{className:"flex flex-col gap-3",children:k.map(({modelId:e,fullModel:i,alias:s})=>(0,t.jsx)(O,{modelId:e,fullModel:`${a}/${e}`,copied:r,onCopy:l,onDeleteAlias:()=>d(s),onTest:c.length>0?()=>N(e):void 0,testStatus:v[e],isTesting:g===e},i))})]})}function R({until:e}){let[a,s]=(0,i.useState)("");return((0,i.useEffect)(()=>{let t=()=>{let t=new Date(e).getTime()-Date.now();if(t<=0)return void s("");let i=Math.floor(t/1e3);if(i<60)s(`${i}s`);else if(i<3600)s(`${Math.floor(i/60)}m ${i%60}s`);else{let e=Math.floor(i/3600),t=Math.floor(i%3600/60);s(`${e}h ${t}m`)}};t();let i=setInterval(t,1e3);return()=>clearInterval(i)},[e]),a)?(0,t.jsxs)("span",{className:"text-xs text-orange-500 font-mono",children:["⏱ ",a]}):null}function $({connection:e,proxyPools:a,isOAuth:s,isFirst:r,isLast:l,onMoveUp:o,onMoveDown:n,onToggleActive:c,onUpdateProxy:p,onEdit:u,onDelete:x}){let[m,h]=(0,i.useState)(!1),[f,y]=(0,i.useState)(!1),b=(0,i.useRef)(null),v=new Map((a||[]).map(e=>[e.id,e])),j=e.providerSpecificData?.proxyPoolId||null,N=j?v.get(j):null,k=e.providerSpecificData?.connectionProxyEnabled===!0&&!!e.providerSpecificData?.connectionProxyUrl,C=!!j||k,w=N?`Pool: ${N.name}`:j?`Pool: ${j} (inactive/missing)`:k?`Legacy: ${e.providerSpecificData?.connectionProxyUrl}`:"",S="";if(N?.proxyUrl||e.providerSpecificData?.connectionProxyUrl){let t=N?.proxyUrl||e.providerSpecificData?.connectionProxyUrl;try{let e=new URL(t);S=`${e.protocol}//${e.hostname}${e.port?`:${e.port}`:""}`}catch{S=t}}let A=N?.noProxy||e.providerSpecificData?.connectionNoProxy||"",P="default";N?.isActive===!0?P="success":(j||k)&&(P="error"),(0,i.useEffect)(()=>{if(!m)return;let e=e=>{b.current&&!b.current.contains(e.target)&&h(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[m]);let T=async e=>{y(!0);try{await p("__none__"===e?null:e)}finally{y(!1),h(!1)}},O=s?e.name||e.email||e.displayName||"OAuth Account":e.name,[I,E]=(0,i.useState)(!1),_=Object.entries(e).filter(([e])=>e.startsWith("modelLock_")).map(([,e])=>e).filter(e=>!!e).sort()[0]||null;(0,i.useEffect)(()=>{let t=()=>{E(!!Object.entries(e).filter(([e])=>e.startsWith("modelLock_")).map(([,e])=>e).filter(e=>e&&new Date(e).getTime()>Date.now()).sort()[0])};t();let i=_?setInterval(t,1e3):null;return()=>{i&&clearInterval(i)}},[_]);let D="unavailable"!==e.testStatus||I?e.testStatus:"active";return(0,t.jsxs)("div",{className:`group flex items-center justify-between p-3 rounded-lg hover:bg-black/[0.02] dark:hover:bg-white/[0.02] transition-colors ${!1===e.isActive?"opacity-60":""}`,children:[(0,t.jsxs)("div",{className:"flex items-center gap-3 flex-1 min-w-0",children:[(0,t.jsxs)("div",{className:"flex flex-col",children:[(0,t.jsx)("button",{onClick:o,disabled:r,className:`p-0.5 rounded ${r?"text-text-muted/30 cursor-not-allowed":"hover:bg-sidebar text-text-muted hover:text-primary"}`,children:(0,t.jsx)("span",{className:"material-symbols-outlined text-sm",children:"keyboard_arrow_up"})}),(0,t.jsx)("button",{onClick:n,disabled:l,className:`p-0.5 rounded ${l?"text-text-muted/30 cursor-not-allowed":"hover:bg-sidebar text-text-muted hover:text-primary"}`,children:(0,t.jsx)("span",{className:"material-symbols-outlined text-sm",children:"keyboard_arrow_down"})})]}),(0,t.jsx)("span",{className:"material-symbols-outlined text-base text-text-muted",children:s?"lock":"key"}),(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsx)("p",{className:"text-sm font-medium truncate",children:O}),(0,t.jsxs)("div",{className:"flex items-center gap-2 mt-1",children:[(0,t.jsx)(d.Badge,{variant:!1===e.isActive?"default":"active"===D||"success"===D?"success":"error"===D||"expired"===D||"unavailable"===D?"error":"default",size:"sm",dot:!0,children:!1===e.isActive?"disabled":D||"Unknown"}),C&&(0,t.jsx)(d.Badge,{variant:P,size:"sm",children:"Proxy"}),I&&!1!==e.isActive&&(0,t.jsx)(R,{until:_}),e.lastError&&!1!==e.isActive&&(0,t.jsx)("span",{className:"text-xs text-red-500 truncate max-w-[300px]",title:e.lastError,children:e.lastError}),(0,t.jsxs)("span",{className:"text-xs text-text-muted",children:["#",e.priority]}),e.globalPriority&&(0,t.jsxs)("span",{className:"text-xs text-text-muted",children:["Auto: ",e.globalPriority]})]}),C&&(0,t.jsxs)("div",{className:"mt-1 flex items-center gap-2 flex-wrap",children:[(0,t.jsx)("span",{className:"text-[11px] text-text-muted truncate max-w-[420px]",title:w,children:w}),S&&(0,t.jsx)("code",{className:"text-[10px] font-mono bg-black/5 dark:bg-white/5 px-1 py-0.5 rounded text-text-muted",children:S}),A&&(0,t.jsxs)("span",{className:"text-[11px] text-text-muted truncate max-w-[320px]",title:A,children:["no_proxy: ",A]})]})]})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsxs)("div",{className:"flex gap-1",children:[(a||[]).length>0&&(0,t.jsxs)("div",{className:"relative",ref:b,children:[(0,t.jsxs)("button",{onClick:()=>h(e=>!e),className:`flex flex-col items-center px-2 py-1 rounded hover:bg-black/5 dark:hover:bg-white/5 transition-colors ${C?"text-primary":"text-text-muted hover:text-primary"}`,disabled:f,children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:f?"progress_activity":"lan"}),(0,t.jsx)("span",{className:"text-[10px] leading-tight",children:"Proxy"})]}),m&&(0,t.jsxs)("div",{className:"absolute right-0 top-full mt-1 z-50 bg-bg border border-border rounded-lg shadow-lg py-1 min-w-[160px]",children:[(0,t.jsx)("button",{onClick:()=>T("__none__"),className:`w-full text-left px-3 py-1.5 text-sm hover:bg-black/5 dark:hover:bg-white/5 ${!j?"text-primary font-medium":"text-text-main"}`,children:"None"}),(a||[]).map(e=>(0,t.jsx)("button",{onClick:()=>T(e.id),className:`w-full text-left px-3 py-1.5 text-sm hover:bg-black/5 dark:hover:bg-white/5 ${j===e.id?"text-primary font-medium":"text-text-main"}`,children:e.name},e.id))]})]}),(0,t.jsxs)("button",{onClick:u,className:"flex flex-col items-center px-2 py-1 rounded hover:bg-black/5 dark:hover:bg-white/5 text-text-muted hover:text-primary",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"edit"}),(0,t.jsx)("span",{className:"text-[10px] leading-tight",children:"Edit"})]}),(0,t.jsxs)("button",{onClick:x,className:"flex flex-col items-center px-2 py-1 rounded hover:bg-red-500/10 text-red-500",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"}),(0,t.jsx)("span",{className:"text-[10px] leading-tight",children:"Delete"})]})]}),(0,t.jsx)(g.Toggle,{size:"sm",checked:e.isActive??!0,onChange:c,title:e.isActive??!0?"Disable connection":"Enable connection"})]})]})}function E({isOpen:e,provider:a,providerName:s,isCompatible:r,isAnthropic:l,proxyPools:o,onSave:u,onClose:x}){let m="__none__",[h,f]=(0,i.useState)({name:"",apiKey:"",priority:1,proxyPoolId:m}),[y,g]=(0,i.useState)(!1),[v,j]=(0,i.useState)(null),[N,k]=(0,i.useState)(!1),C=async()=>{g(!0);try{let e=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:a,apiKey:h.apiKey})}),t=await e.json();j(t.valid?"success":"failed")}catch{j("failed")}finally{g(!1)}},w=async()=>{if(a&&h.apiKey){k(!0);try{let e=!1;try{g(!0),j(null);let t=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:a,apiKey:h.apiKey})});e=!!(await t.json()).valid,j(e?"success":"failed")}catch{j("failed")}finally{g(!1)}await u({name:h.name,apiKey:h.apiKey,priority:h.priority,proxyPoolId:h.proxyPoolId===m?null:h.proxyPoolId,testStatus:e?"active":"unknown",providerSpecificData:void 0})}finally{k(!1)}}};return a?(0,t.jsx)(p.Modal,{isOpen:e,title:`Add ${s||a} API Key`,onClose:x,children:(0,t.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,t.jsx)(c.Input,{label:"Name",value:h.name,onChange:e=>f({...h,name:e.target.value}),placeholder:"Production Key"}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)(c.Input,{label:"API Key",type:"password",value:h.apiKey,onChange:e=>f({...h,apiKey:e.target.value}),className:"flex-1"}),(0,t.jsx)("div",{className:"pt-6",children:(0,t.jsx)(n.Button,{onClick:C,disabled:!h.apiKey||y||N,variant:"secondary",children:y?"Checking...":"Check"})})]}),v&&(0,t.jsx)(d.Badge,{variant:"success"===v?"success":"error",children:"success"===v?"Valid":"Invalid"}),r&&(0,t.jsx)("p",{className:"text-xs text-text-muted",children:l?`Validation checks ${s||"Anthropic Compatible"} by verifying the API key.`:`Validation checks ${s||"OpenAI Compatible"} via /models on your base URL.`}),(0,t.jsx)(c.Input,{label:"Priority",type:"number",value:h.priority,onChange:e=>f({...h,priority:Number.parseInt(e.target.value)||1})}),(0,t.jsx)(b.Select,{label:"Proxy Pool",value:h.proxyPoolId,onChange:e=>f({...h,proxyPoolId:e.target.value}),options:[{value:m,label:"None"},...(o||[]).map(e=>({value:e.id,label:e.name}))],placeholder:"None"}),0===(o||[]).length&&(0,t.jsx)("p",{className:"text-xs text-text-muted",children:"No active proxy pools available. Create one in Proxy Pools page first."}),(0,t.jsx)("p",{className:"text-xs text-text-muted",children:"Legacy manual proxy fields are still accepted by API for backward compatibility."}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)(n.Button,{onClick:w,fullWidth:!0,disabled:!h.name||!h.apiKey||N,children:N?"Saving...":"Save"}),(0,t.jsx)(n.Button,{onClick:x,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}):null}function _({isOpen:e,connection:a,proxyPools:s,onSave:r,onClose:l}){let[o,u]=(0,i.useState)({name:"",priority:1,apiKey:""}),[x,m]=(0,i.useState)(!1),[h,f]=(0,i.useState)(null),[y,g]=(0,i.useState)(!1),[b,v]=(0,i.useState)(null),[N,k]=(0,i.useState)(!1);(0,i.useEffect)(()=>{a&&(u({name:a.name||"",priority:a.priority||1,apiKey:""}),f(null),v(null))},[a]);let C=async()=>{if(a?.provider){m(!0),f(null);try{let e=await fetch(`/api/providers/${a.id}/test`,{method:"POST"}),t=await e.json();f(t.valid?"success":"failed")}catch{f("failed")}finally{m(!1)}}},w=async()=>{if(a?.provider&&o.apiKey){g(!0),v(null);try{let e=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:a.provider,apiKey:o.apiKey})}),t=await e.json();v(t.valid?"success":"failed")}catch{v("failed")}finally{g(!1)}}},S=async()=>{k(!0);try{let e={name:o.name,priority:o.priority};if(!A&&o.apiKey){e.apiKey=o.apiKey;let t="success"===b;if(!t)try{g(!0),v(null);let e=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:a.provider,apiKey:o.apiKey})});t=!!(await e.json()).valid,v(t?"success":"failed")}catch{v("failed")}finally{g(!1)}t&&(e.testStatus="active",e.lastError=null,e.lastErrorAt=null)}await r(e)}finally{k(!1)}};if(!a)return null;let A="oauth"===a.authType,P=(0,j.isOpenAICompatibleProvider)(a.provider)||(0,j.isAnthropicCompatibleProvider)(a.provider);return(0,t.jsx)(p.Modal,{isOpen:e,title:"Edit Connection",onClose:l,children:(0,t.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,t.jsx)(c.Input,{label:"Name",value:o.name,onChange:e=>u({...o,name:e.target.value}),placeholder:A?"Account name":"Production Key"}),A&&a.email&&(0,t.jsxs)("div",{className:"bg-sidebar/50 p-3 rounded-lg",children:[(0,t.jsx)("p",{className:"text-sm text-text-muted mb-1",children:"Email"}),(0,t.jsx)("p",{className:"font-medium",children:a.email})]}),(0,t.jsx)(c.Input,{label:"Priority",type:"number",value:o.priority,onChange:e=>u({...o,priority:Number.parseInt(e.target.value)||1})}),!A&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)(c.Input,{label:"API Key",type:"password",value:o.apiKey,onChange:e=>u({...o,apiKey:e.target.value}),placeholder:"Enter new API key",hint:"Leave blank to keep the current API key.",className:"flex-1"}),(0,t.jsx)("div",{className:"pt-6",children:(0,t.jsx)(n.Button,{onClick:w,disabled:!o.apiKey||y||N,variant:"secondary",children:y?"Checking...":"Check"})})]}),b&&(0,t.jsx)(d.Badge,{variant:"success"===b?"success":"error",children:"success"===b?"Valid":"Invalid"})]}),!P&&(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)(n.Button,{onClick:C,variant:"secondary",disabled:x,children:x?"Testing...":"Test Connection"}),h&&(0,t.jsx)(d.Badge,{variant:"success"===h?"success":"error",children:"success"===h?"Valid":"Failed"})]}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)(n.Button,{onClick:S,fullWidth:!0,disabled:N,children:N?"Saving...":"Save"}),(0,t.jsx)(n.Button,{onClick:l,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})})}function D({isOpen:e,node:a,onSave:s,onClose:r,isAnthropic:l}){let[o,u]=(0,i.useState)({name:"",prefix:"",apiType:"chat",baseUrl:"https://api.openai.com/v1"}),[x,m]=(0,i.useState)(!1),[h,f]=(0,i.useState)(""),[y,g]=(0,i.useState)(""),[v,j]=(0,i.useState)(!1),[N,k]=(0,i.useState)(null);(0,i.useEffect)(()=>{a&&u({name:a.name||"",prefix:a.prefix||"",apiType:a.apiType||"chat",baseUrl:a.baseUrl||(l?"https://api.anthropic.com/v1":"https://api.openai.com/v1")})},[a,l]);let C=async()=>{if(o.name.trim()&&o.prefix.trim()&&o.baseUrl.trim()){m(!0);try{let e={name:o.name,prefix:o.prefix,baseUrl:o.baseUrl};l||(e.apiType=o.apiType),await s(e)}finally{m(!1)}}},w=async()=>{j(!0);try{let e=await fetch("/api/provider-nodes/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:o.baseUrl,apiKey:h,type:l?"anthropic-compatible":"openai-compatible",modelId:y.trim()||void 0})}),t=await e.json();k(t.valid?"success":"failed")}catch{k("failed")}finally{j(!1)}};return a?(0,t.jsx)(p.Modal,{isOpen:e,title:`Edit ${l?"Anthropic":"OpenAI"} Compatible`,onClose:r,children:(0,t.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,t.jsx)(c.Input,{label:"Name",value:o.name,onChange:e=>u({...o,name:e.target.value}),placeholder:`${l?"Anthropic":"OpenAI"} Compatible (Prod)`,hint:"Required. A friendly label for this node."}),(0,t.jsx)(c.Input,{label:"Prefix",value:o.prefix,onChange:e=>u({...o,prefix:e.target.value}),placeholder:l?"ac-prod":"oc-prod",hint:"Required. Used as the provider prefix for model IDs."}),!l&&(0,t.jsx)(b.Select,{label:"API Type",options:[{value:"chat",label:"Chat Completions"},{value:"responses",label:"Responses API"}],value:o.apiType,onChange:e=>u({...o,apiType:e.target.value})}),(0,t.jsx)(c.Input,{label:"Base URL",value:o.baseUrl,onChange:e=>u({...o,baseUrl:e.target.value}),placeholder:l?"https://api.anthropic.com/v1":"https://api.openai.com/v1",hint:`Use the base URL (ending in /v1) for your ${l?"Anthropic":"OpenAI"}-compatible API.`}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)(c.Input,{label:"API Key (for Check)",type:"password",value:h,onChange:e=>f(e.target.value),className:"flex-1"}),(0,t.jsx)("div",{className:"pt-6",children:(0,t.jsx)(n.Button,{onClick:w,disabled:!h||v||!o.baseUrl.trim(),variant:"secondary",children:v?"Checking...":"Check"})})]}),(0,t.jsx)(c.Input,{label:"Model ID (optional)",value:y,onChange:e=>g(e.target.value),placeholder:"e.g. my-model-id",hint:"If provider lacks /models endpoint, enter a model ID to validate via chat/completions instead."}),N&&(0,t.jsx)(d.Badge,{variant:"success"===N?"success":"error",children:"success"===N?"Valid":"Invalid"}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)(n.Button,{onClick:C,fullWidth:!0,disabled:!o.name.trim()||!o.prefix.trim()||!o.baseUrl.trim()||x,children:x?"Saving...":"Save"}),(0,t.jsx)(n.Button,{onClick:r,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}):null}function U({isOpen:e,providerAlias:a,providerDisplayAlias:s,onSave:r,onClose:l}){let[o,d]=(0,i.useState)(""),[c,u]=(0,i.useState)(null),[x,m]=(0,i.useState)(""),[h,f]=(0,i.useState)(!1);(0,i.useEffect)(()=>{e&&(d(""),u(null),m(""))},[e]);let y=async()=>{if(o.trim()){u("testing"),m("");try{let e=await fetch("/api/models/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:`${a}/${o.trim()}`})}),t=await e.json();u(t.ok?"ok":"error"),m(t.error||"")}catch(e){u("error"),m(e.message)}}},g=async()=>{if(o.trim()&&!h){f(!0);try{await r(o.trim())}finally{f(!1)}}};return(0,t.jsx)(p.Modal,{isOpen:e,onClose:l,title:"Add Custom Model",children:(0,t.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-sm font-medium mb-1.5 block",children:"Model ID"}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)("input",{type:"text",value:o,onChange:e=>{d(e.target.value),u(null),m("")},onKeyDown:e=>{"Enter"===e.key&&y()},placeholder:"e.g. claude-opus-4-5",className:"flex-1 px-3 py-2 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary",autoFocus:!0}),(0,t.jsx)(n.Button,{variant:"secondary",icon:"science",loading:"testing"===c,onClick:y,disabled:!o.trim()||"testing"===c,children:"testing"===c?"Testing...":"Test"})]}),(0,t.jsxs)("p",{className:"text-xs text-text-muted mt-1",children:["Sent to provider as: ",(0,t.jsx)("code",{className:"font-mono bg-sidebar px-1 rounded",children:o.trim()||"model-id"})]})]}),"ok"===c&&(0,t.jsxs)("div",{className:"flex items-center gap-2 text-sm text-green-600",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-base",children:"check_circle"}),"Model is reachable"]}),"error"===c&&(0,t.jsxs)("div",{className:"flex items-start gap-2 text-sm text-red-500",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-base shrink-0",children:"cancel"}),(0,t.jsx)("span",{children:x||"Model not reachable"})]}),(0,t.jsxs)("div",{className:"flex gap-2 pt-1",children:[(0,t.jsx)(n.Button,{onClick:l,variant:"ghost",fullWidth:!0,size:"sm",children:"Cancel"}),(0,t.jsx)(n.Button,{onClick:g,fullWidth:!0,size:"sm",disabled:!o.trim()||h,children:h?"Adding...":"Add Model"})]})]})})}T.propTypes={model:a.default.shape({id:a.default.string.isRequired}).isRequired,fullModel:a.default.string.isRequired,alias:a.default.string,copied:a.default.string,onCopy:a.default.func.isRequired,testStatus:a.default.oneOf(["ok","error"]),isCustom:a.default.bool,isFree:a.default.bool,onDeleteAlias:a.default.func,onTest:a.default.func,isTesting:a.default.bool},a.default.string.isRequired,a.default.object.isRequired,a.default.string,a.default.func.isRequired,a.default.func.isRequired,a.default.func.isRequired,O.propTypes={modelId:a.default.string.isRequired,fullModel:a.default.string.isRequired,copied:a.default.string,onCopy:a.default.func.isRequired,onDeleteAlias:a.default.func.isRequired,onTest:a.default.func,testStatus:a.default.oneOf(["ok","error"]),isTesting:a.default.bool,isFree:a.default.bool},I.propTypes={providerStorageAlias:a.default.string.isRequired,providerDisplayAlias:a.default.string.isRequired,modelAliases:a.default.object.isRequired,copied:a.default.string,onCopy:a.default.func.isRequired,onSetAlias:a.default.func.isRequired,onDeleteAlias:a.default.func.isRequired,connections:a.default.arrayOf(a.default.shape({id:a.default.string,isActive:a.default.bool})).isRequired,isAnthropic:a.default.bool},R.propTypes={until:a.default.string.isRequired},$.propTypes={connection:a.default.shape({id:a.default.string,name:a.default.string,email:a.default.string,displayName:a.default.string,modelLockUntil:a.default.string,testStatus:a.default.string,isActive:a.default.bool,lastError:a.default.string,priority:a.default.number,globalPriority:a.default.number}).isRequired,proxyPools:a.default.arrayOf(a.default.shape({id:a.default.string,name:a.default.string,proxyUrl:a.default.string,noProxy:a.default.string,isActive:a.default.bool})),isOAuth:a.default.bool.isRequired,isFirst:a.default.bool.isRequired,isLast:a.default.bool.isRequired,onMoveUp:a.default.func.isRequired,onMoveDown:a.default.func.isRequired,onToggleActive:a.default.func.isRequired,onUpdateProxy:a.default.func,onEdit:a.default.func.isRequired,onDelete:a.default.func.isRequired},E.propTypes={isOpen:a.default.bool.isRequired,provider:a.default.string,providerName:a.default.string,isCompatible:a.default.bool,isAnthropic:a.default.bool,proxyPools:a.default.arrayOf(a.default.shape({id:a.default.string,name:a.default.string})),onSave:a.default.func.isRequired,onClose:a.default.func.isRequired},_.propTypes={isOpen:a.default.bool.isRequired,connection:a.default.shape({id:a.default.string,name:a.default.string,email:a.default.string,priority:a.default.number,authType:a.default.string,provider:a.default.string,providerSpecificData:a.default.object}),proxyPools:a.default.arrayOf(a.default.shape({id:a.default.string,name:a.default.string})),onSave:a.default.func.isRequired,onClose:a.default.func.isRequired},D.propTypes={isOpen:a.default.bool.isRequired,node:a.default.shape({id:a.default.string,name:a.default.string,prefix:a.default.string,apiType:a.default.string,baseUrl:a.default.string}),onSave:a.default.func.isRequired,onClose:a.default.func.isRequired,isAnthropic:a.default.bool},U.propTypes={isOpen:a.default.bool.isRequired,providerAlias:a.default.string.isRequired,providerDisplayAlias:a.default.string.isRequired,onSave:a.default.func.isRequired,onClose:a.default.func.isRequired},e.s(["default",0,function(){let e,a=(0,s.useParams)(),d=(0,s.useRouter)(),c=a.id,[C,w]=(0,i.useState)([]),[O,R]=(0,i.useState)(!0),[q,B]=(0,i.useState)(null),[K,M]=(0,i.useState)([]),[F,L]=(0,i.useState)(!1),[J,z]=(0,i.useState)(!1),[V,W]=(0,i.useState)(!1),[G,H]=(0,i.useState)(!1),[Y,Q]=(0,i.useState)(!1),[X,Z]=(0,i.useState)(!1),[ee,et]=(0,i.useState)(!1),[ei,ea]=(0,i.useState)(!1),[es,er]=(0,i.useState)(!1),[el,eo]=(0,i.useState)(""),[en,ed]=(0,i.useState)(null),[ec,ep]=(0,i.useState)(null),[eu,ex]=(0,i.useState)({}),[em,eh]=(0,i.useState)(!1),[ef,ey]=(0,i.useState)({}),[eg,eb]=(0,i.useState)(""),[ev,ej]=(0,i.useState)(null),[eN,ek]=(0,i.useState)(!1),[eC,ew]=(0,i.useState)([]),[eS,eA]=(0,i.useState)("__none__"),[eP,eT]=(0,i.useState)(!1),[eO,eI]=(0,i.useState)(null),[eR,e$]=(0,i.useState)(""),[eE,e_]=(0,i.useState)([]),[eD,eU]=(0,i.useState)([]),{copied:eq,copy:eB}=(0,k.useCopyToClipboard)(),eK=q?{id:q.id,name:q.name||("anthropic-compatible"===q.type?"Anthropic Compatible":"OpenAI Compatible"),color:"anthropic-compatible"===q.type?"#D97757":"#10A37F",textIcon:"anthropic-compatible"===q.type?"AC":"OC",apiType:q.apiType,baseUrl:q.baseUrl,type:q.type}:j.OAUTH_PROVIDERS[c]||j.APIKEY_PROVIDERS[c]||j.FREE_PROVIDERS[c]||j.FREE_TIER_PROVIDERS[c],eM=!!j.OAUTH_PROVIDERS[c]||!!j.FREE_PROVIDERS[c],eF=(0,N.getModelsByProviderId)(c),eL=(0,j.getProviderAlias)(c),eJ=(0,j.isOpenAICompatibleProvider)(c),ez=(0,j.isAnthropicCompatibleProvider)(c),eV=eJ||ez,eW=eV?c:eL,eG=eV?q?.prefix||c:eL,eH=(0,i.useCallback)(async()=>{try{let e=await fetch("/api/models/alias"),t=await e.json();e.ok&&ex(t.aliases||{})}catch(e){console.log("Error fetching aliases:",e)}},[]);(0,i.useEffect)(()=>{"kilocode"===c&&fetch("/api/providers/kilo/free-models").then(e=>e.json()).then(e=>{e.models?.length&&eU(e.models)}).catch(()=>{})},[c]);let eY=(0,i.useCallback)(async()=>{try{let[e,t,i,a]=await Promise.all([fetch("/api/providers",{cache:"no-store"}),fetch("/api/provider-nodes",{cache:"no-store"}),fetch("/api/proxy-pools?isActive=true",{cache:"no-store"}),fetch("/api/settings",{cache:"no-store"})]),s=await e.json(),r=await t.json(),l=await i.json(),o=a.ok?await a.json():{};if(e.ok){let e=(s.connections||[]).filter(e=>e.provider===c);w(e)}i.ok&&M(l.proxyPools||[]);let n=(o.providerStrategies||{})[c]||{};if(eI(n.fallbackStrategy||null),e$(null!=n.stickyRoundRobinLimit?String(n.stickyRoundRobinLimit):"1"),t.ok){let e=(r.nodes||[]).find(e=>e.id===c)||null;if(!e&&eV)for(let t=0;t<3;t+=1){await new Promise(e=>setTimeout(e,150));let t=await fetch("/api/provider-nodes",{cache:"no-store"});if(t.ok&&(e=((await t.json()).nodes||[]).find(e=>e.id===c)||null))break}B(e)}}catch(e){console.log("Error fetching connections:",e)}finally{R(!1)}},[c,eV]),eQ=async e=>{try{let t=await fetch(`/api/provider-nodes/${c}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),i=await t.json();t.ok&&(B(i.node),await eY(),Q(!1))}catch(e){console.log("Error updating provider node:",e)}},eX=async(e,t)=>{try{let i=await fetch("/api/settings",{cache:"no-store"}),a=(i.ok?await i.json():{}).providerStrategies||{},s={};e&&(s.fallbackStrategy=e),"round-robin"===e&&""!==t&&(s.stickyRoundRobinLimit=Number(t)||3);let r={...a};0===Object.keys(s).length?delete r[c]:r[c]=s,await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({providerStrategies:r})})}catch(e){console.log("Error saving provider strategy:",e)}};(0,i.useEffect)(()=>{eY(),eH()},[eY,eH]),(0,i.useEffect)(()=>{let e=(j.OAUTH_PROVIDERS[c]||j.APIKEY_PROVIDERS[c]||j.FREE_PROVIDERS[c]||j.FREE_TIER_PROVIDERS[c])?.modelsFetcher;e&&S(e).then(e_)},[c]);let eZ=async(e,t,i=eL)=>{let a=`${i}/${e}`;try{let e=await fetch("/api/models/alias",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:a,alias:t})});if(e.ok)await eH();else{let t=await e.json();alert(t.error||"Failed to set alias")}}catch(e){console.log("Error setting alias:",e)}},e0=async e=>{try{(await fetch(`/api/models/alias?alias=${encodeURIComponent(e)}`,{method:"DELETE"})).ok&&await eH()}catch(e){console.log("Error deleting alias:",e)}},e1=async e=>{if(confirm("Delete this connection?"))try{(await fetch(`/api/providers/${e}`,{method:"DELETE"})).ok&&w(C.filter(t=>t.id!==e))}catch(e){console.log("Error deleting connection:",e)}},e5=()=>{eY(),L(!1)},e2=async e=>{try{(await fetch("/api/providers",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:c,...e})})).ok&&(await eY(),W(!1))}catch(e){console.log("Error saving connection:",e)}},e4=async e=>{try{(await fetch(`/api/providers/${ec.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})).ok&&(await eY(),H(!1))}catch(e){console.log("Error updating connection:",e)}},e3=async(e,t)=>{try{(await fetch(`/api/providers/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:t})})).ok&&w(i=>i.map(i=>i.id===e?{...i,isActive:t}:i))}catch(e){console.log("Error updating connection status:",e)}},e6=async(e,t)=>{let i=[...C];[i[e],i[t]]=[i[t],i[e]],w(i);try{await Promise.all([fetch(`/api/providers/${i[e].id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({priority:e})}),fetch(`/api/providers/${i[t].id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({priority:t})})])}catch(e){console.log("Error swapping priority:",e),await eY()}},e8=C.filter(e=>eC.includes(e.id));C.length>0&&(eC.length,C.length),(0,i.useEffect)(()=>{ew(e=>e.filter(e=>C.some(t=>t.id===e)))},[C]);let e9=(()=>{if(0===e8.length)return"";let e=new Set(e8.map(e=>e.providerSpecificData?.proxyPoolId||"__none__"));if(1===e.size){let t=[...e][0];if("__none__"===t)return"All selected currently unbound";let i=K.find(e=>e.id===t);return`All selected currently bound to ${i?.name||t}`}return"Selected connections have mixed proxy bindings"})(),e7=()=>{eP||Z(!1)},te=async()=>{if(0===eC.length)return;let e="__none__"===eS?null:eS;eT(!0);try{let t=[];for(let i of eC)try{let a=await fetch(`/api/providers/${i}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({proxyPoolId:e})});t.push(a.ok)}catch(e){console.log("Error applying bulk proxy pool for",i,e),t.push(!1)}let i=t.filter(e=>!e).length;i>0&&alert(`Updated with ${i} failed request(s).`),await eY(),ew([]),eA("__none__"),Z(!1)}catch(e){console.log("Error applying bulk proxy pool:",e)}finally{eT(!1)}},tt=ee||ei,ti=async()=>{et(!0),ed(null);try{let e=await fetch("/api/antigravity-tools/import",{method:"POST"}),t=await e.json();e.ok?(ed(t),await eY()):ed({error:t.error||"Import failed"})}catch(e){ed({error:e.message})}et(!1)},ta=async()=>{if(el.trim()){ea(!0),ed(null);try{let e=await fetch("/api/antigravity-tools/import-refresh-tokens",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:el})}),t=await e.json();e.ok?(ed(t),await eY(),er(!1),eo("")):ed({error:t.error||"Import failed"})}catch(e){ed({error:e.message})}ea(!1)}},ts=()=>{ei||er(!1)},tr=(0,t.jsx)("div",{className:"flex flex-col divide-y divide-black/[0.03] dark:divide-white/[0.03]",children:C.map((e,i)=>(0,t.jsx)("div",{className:"flex items-stretch",children:(0,t.jsx)("div",{className:"flex-1 min-w-0",children:(0,t.jsx)($,{connection:e,proxyPools:K,isOAuth:eM,isFirst:0===i,isLast:i===C.length-1,onMoveUp:()=>e6(i,i-1),onMoveDown:()=>e6(i,i+1),onToggleActive:t=>e3(e.id,t),onUpdateProxy:async t=>{try{(await fetch(`/api/providers/${e.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({proxyPoolId:t||null})})).ok&&w(i=>i.map(i=>i.id===e.id?{...i,providerSpecificData:{...i.providerSpecificData,proxyPoolId:t||null}}:i))}catch(e){console.log("Error updating proxy:",e)}},onEdit:()=>{ep(e),H(!0)},onDelete:()=>e1(e.id)})})},e.id))}),tl=[{value:"__none__",label:"None"},...K.map(e=>({value:e.id,label:e.name}))],to=0===eC.length?"Select one or more connections, then click Proxy Action.":e9,tn=eC.length>0&&!eP,td=(0,t.jsx)(p.Modal,{isOpen:X,onClose:e7,title:`Proxy Action (${eC.length} selected)`,children:(0,t.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,t.jsx)(b.Select,{label:"Proxy Pool",value:eS,onChange:e=>eA(e.target.value),options:tl,placeholder:"None"}),(0,t.jsx)("p",{className:"text-xs text-text-muted",children:to}),(0,t.jsx)("p",{className:"text-xs text-text-muted",children:"Selecting None will unbind selected connections from proxy pool."}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)(n.Button,{onClick:te,fullWidth:!0,disabled:!tn,children:eP?"Applying...":"Apply"}),(0,t.jsx)(n.Button,{onClick:e7,variant:"ghost",fullWidth:!0,disabled:eP,children:"Cancel"})]})]})}),tc=async e=>{if(!ev){ej(e);try{let t=await fetch("/api/models/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:`${eW}/${e}`})}),i=await t.json();ey(t=>({...t,[e]:i.ok?"ok":"error"})),eb(i.ok?"":i.error||"Model not reachable")}catch{ey(t=>({...t,[e]:"error"})),eb("Network error")}finally{ej(null)}}};return O?(0,t.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,t.jsx)(u.CardSkeleton,{}),(0,t.jsx)(u.CardSkeleton,{})]}):eK?(0,t.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)(r.default,{href:"/dashboard/providers",className:"inline-flex items-center gap-1 text-sm text-text-muted hover:text-primary transition-colors mb-4",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-lg",children:"arrow_back"}),"Back to Providers"]}),(0,t.jsxs)("div",{className:"flex items-center gap-4",children:[(0,t.jsx)("div",{className:"rounded-lg flex items-center justify-center",style:{backgroundColor:`${eK.color}15`},children:em?(0,t.jsx)("span",{className:"text-sm font-bold",style:{color:eK.color},children:eK.textIcon||eK.id.slice(0,2).toUpperCase()}):(0,t.jsx)(l.default,{src:eJ&&eK.apiType?"responses"===eK.apiType?"/providers/oai-r.png":"/providers/oai-cc.png":ez?"/providers/anthropic-m.png":`/providers/${eK.id}.png`,alt:eK.name,width:48,height:48,className:"object-contain rounded-lg max-w-[48px] max-h-[48px]",sizes:"48px",onError:()=>eh(!0)})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h1",{className:"text-3xl font-semibold tracking-tight",children:eK.name}),(0,t.jsxs)("p",{className:"text-text-muted",children:[C.length," connection",1===C.length?"":"s"]})]})]})]}),eK.deprecated&&(0,t.jsxs)("div",{className:"flex items-start gap-2 px-3 py-2 rounded-lg bg-black/[0.02] dark:bg-white/[0.02] border border-black/[0.05] dark:border-white/[0.05]",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[16px] text-text-muted mt-0.5 shrink-0",children:"info"}),(0,t.jsx)("p",{className:"text-xs text-text-muted leading-relaxed",children:eK.deprecationNotice})]}),eK.notice&&!eK.deprecated&&(0,t.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg bg-black/[0.02] dark:bg-white/[0.02] border border-black/[0.05] dark:border-white/[0.05]",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[16px] text-text-muted shrink-0",children:"info"}),(0,t.jsx)("p",{className:"text-xs text-text-muted leading-relaxed",children:eK.notice.text}),eK.notice.apiKeyUrl&&(0,t.jsx)("a",{href:eK.notice.apiKeyUrl,target:"_blank",rel:"noopener noreferrer",className:"text-xs text-primary hover:underline shrink-0",children:"Get API Key →"})]}),eV&&q&&(0,t.jsxs)(o.Card,{children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{className:"text-lg font-semibold",children:ez?"Anthropic Compatible Details":"OpenAI Compatible Details"}),(0,t.jsxs)("p",{className:"text-sm text-text-muted",children:[ez?"Messages API":"responses"===q.apiType?"Responses API":"Chat Completions"," · ",(q.baseUrl||"").replace(/\/$/,""),"/",ez?"messages":"responses"===q.apiType?"responses":"chat/completions"]})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(n.Button,{size:"sm",icon:"add",onClick:()=>W(!0),disabled:C.length>0,children:"Add"}),(0,t.jsx)(n.Button,{size:"sm",variant:"secondary",icon:"edit",onClick:()=>Q(!0),children:"Edit"}),(0,t.jsx)(n.Button,{size:"sm",variant:"secondary",icon:"delete",onClick:async()=>{if(confirm(`Delete this ${ez?"Anthropic":"OpenAI"} Compatible node?`))try{(await fetch(`/api/provider-nodes/${c}`,{method:"DELETE"})).ok&&d.push("/dashboard/providers")}catch(e){console.log("Error deleting provider node:",e)}},children:"Delete"})]})]}),C.length>0&&(0,t.jsx)("p",{className:"text-sm text-text-muted",children:"Only one connection is allowed per compatible node. Add another node if you need more connections."})]}),(0,t.jsxs)(o.Card,{children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,t.jsx)("h2",{className:"text-lg font-semibold",children:"Connections"}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-xs text-text-muted font-medium",children:"Round Robin"}),(0,t.jsx)(g.Toggle,{checked:"round-robin"===eO,onChange:e=>{let t=e?"round-robin":null,i=e?eR||"1":eR;e&&!eR&&e$("1"),eI(t),eX(t,i)}}),"round-robin"===eO&&(0,t.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,t.jsx)("span",{className:"text-xs text-text-muted",children:"Sticky:"}),(0,t.jsx)("input",{type:"number",min:1,value:eR,onChange:e=>{var t;e$(t=e.target.value),eX("round-robin",t)},placeholder:"1",className:"w-14 px-2 py-1 text-xs border border-border rounded-md bg-background focus:outline-none focus:border-primary"})]})]})]}),en&&(0,t.jsxs)("div",{className:`flex items-center justify-between gap-2 mb-3 px-3 py-2 rounded-lg text-xs ${en.error?"bg-red-500/5 border border-red-500/15 text-red-500":"bg-green-500/5 border border-green-500/15 text-green-600"}`,children:[(0,t.jsx)("span",{children:en.error?`✗ ${en.error}`:(e=[`imported ${en.imported}`,`updated ${en.updated}`],en.skipped>0&&e.push(`skipped ${en.skipped}`),en.failed>0&&e.push(`failed ${en.failed}`),`✓ ${e.join(", ")}`)}),(0,t.jsx)("button",{onClick:()=>ed(null),className:"text-current opacity-60 hover:opacity-100",children:"✕"})]}),0===C.length?(0,t.jsxs)("div",{className:"text-center py-12",children:[(0,t.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 rounded-full bg-primary/10 text-primary mb-4",children:(0,t.jsx)("span",{className:"material-symbols-outlined text-[32px]",children:eM?"lock":"key"})}),(0,t.jsx)("p",{className:"text-text-main font-medium mb-1",children:"No connections yet"}),(0,t.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Add your first connection to get started"}),!eV&&(0,t.jsxs)("div",{className:"flex gap-2 justify-center",children:["iflow"===c&&(0,t.jsx)(n.Button,{icon:"cookie",variant:"secondary",onClick:()=>z(!0),children:"Cookie Auth"}),(0,t.jsx)(n.Button,{icon:"add",onClick:()=>eM?L(!0):W(!0),children:"iflow"===c?"OAuth":"Add Connection"}),"antigravity"===c&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(v.Tooltip,{text:A,position:"bottom",children:(0,t.jsx)(n.Button,{icon:"download",variant:"secondary",onClick:ti,disabled:tt,children:ee?"Importing…":"Import from AGT"})}),(0,t.jsx)(v.Tooltip,{text:P,position:"bottom",children:(0,t.jsx)(n.Button,{icon:"key",variant:"secondary",onClick:()=>er(!0),disabled:tt,children:"Import refresh tokens"})})]})]})]}):(0,t.jsxs)(t.Fragment,{children:[tr,!eV&&(0,t.jsxs)("div",{className:"flex gap-2 mt-4",children:["iflow"===c&&(0,t.jsx)(n.Button,{size:"sm",icon:"cookie",variant:"secondary",onClick:()=>z(!0),title:"Add connection using browser cookie",children:"Cookie"}),(0,t.jsx)(n.Button,{size:"sm",icon:"add",onClick:()=>eM?L(!0):W(!0),children:"Add"}),"antigravity"===c&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(v.Tooltip,{text:A,position:"bottom",children:(0,t.jsx)(n.Button,{size:"sm",icon:"download",variant:"secondary",onClick:ti,disabled:tt,children:ee?"Importing…":"Import from AGT"})}),(0,t.jsx)(v.Tooltip,{text:P,position:"bottom",children:(0,t.jsx)(n.Button,{size:"sm",icon:"key",variant:"secondary",onClick:()=>er(!0),disabled:tt,children:"Refresh tokens"})})]})]})]})]}),(0,t.jsxs)(o.Card,{children:[(0,t.jsx)("div",{className:"flex items-center justify-between mb-4",children:(0,t.jsx)("h2",{className:"text-lg font-semibold",children:"Available Models"})}),!!eg&&(0,t.jsx)("p",{className:"text-xs text-red-500 mb-3 break-words",children:eg}),(()=>{let e,i;if(eV)return(0,t.jsx)(I,{providerStorageAlias:eW,providerDisplayAlias:eG,modelAliases:eu,copied:eq,onCopy:eB,onSetAlias:eZ,onDeleteAlias:e0,connections:C,isAnthropic:ez});let a=[...eF,...eD.filter(e=>!eF.some(t=>t.id===e.id))],s=Object.entries(eu).filter(([e,t])=>{let i=`${eW}/`;if(!t.startsWith(i))return!1;let a=t.slice(i.length);return eK.passthroughModels?!eF.some(e=>e.id===a):!eF.some(e=>e.id===a)&&e===a}).map(([e,t])=>({id:t.slice(`${eW}/`.length),alias:e,fullModel:t}));return(0,t.jsxs)("div",{className:"flex flex-wrap gap-3",children:[a.map(e=>{let i=`${eW}/${e.id}`,a=`${c}/${e.id}`,s=Object.entries(eu).find(([,e])=>e===i||e===a)?.[0];return(0,t.jsx)(T,{model:e,fullModel:`${eG}/${e.id}`,alias:s,copied:eq,onCopy:eB,onSetAlias:t=>eZ(e.id,t,eW),onDeleteAlias:()=>e0(s),testStatus:ef[e.id],onTest:C.length>0?()=>tc(e.id):void 0,isTesting:ev===e.id,isFree:e.isFree},e.id)}),s.map(e=>(0,t.jsx)(T,{model:{id:e.id},fullModel:`${eG}/${e.id}`,alias:e.alias,copied:eq,onCopy:eB,onSetAlias:()=>{},onDeleteAlias:()=>e0(e.alias),testStatus:ef[e.id],onTest:C.length>0?()=>tc(e.id):void 0,isTesting:ev===e.id,isCustom:!0},e.id)),(0,t.jsxs)("button",{onClick:()=>ek(!0),className:"flex items-center gap-1.5 px-3 py-2 rounded-lg border border-dashed border-black/15 dark:border-white/15 text-xs text-text-muted hover:text-primary hover:border-primary/40 transition-colors",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-sm",children:"add"}),"Add Model"]}),eE.length>0&&(e=new Set(Object.values(eu)),0===(i=eE.filter(t=>!e.has(`${eW}/${t.id}`))).length?null:(0,t.jsxs)("div",{className:"w-full mt-2",children:[(0,t.jsx)("p",{className:"text-xs text-text-muted mb-2",children:"Suggested free models (≥200k context):"}),(0,t.jsx)("div",{className:"flex flex-wrap gap-2",children:i.map(e=>(0,t.jsxs)("button",{onClick:async()=>{let t=e.id.split("/").pop();await eZ(e.id,t,eW)},className:"flex items-center gap-1 px-2.5 py-1.5 rounded-lg border border-black/10 dark:border-white/10 text-xs text-text-muted hover:text-primary hover:border-primary/40 hover:bg-primary/5 transition-colors",title:`${e.name} \xb7 ${(e.contextLength/1e3).toFixed(0)}k ctx`,children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[13px]",children:"add"}),e.id.split("/").pop()]},e.id))})]}))]})})()]}),td,"antigravity"===c&&(0,t.jsx)(p.Modal,{isOpen:es,onClose:ts,title:"Import accounts (refresh tokens)",children:(0,t.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,t.jsxs)("p",{className:"text-sm text-text-muted",children:["Paste one or more Google OAuth refresh tokens. Supported formats: a single token (lines starting with"," ",(0,t.jsx)("code",{className:"text-xs bg-surface-secondary px-1 rounded",children:"1//…"}),"), a JSON array with"," ",(0,t.jsx)("code",{className:"text-xs bg-surface-secondary px-1 rounded",children:"refresh_token"}),", or any text containing"," ",(0,t.jsx)("code",{className:"text-xs bg-surface-secondary px-1 rounded",children:'"refresh_token": "…"'})," ","(values are extracted automatically)."]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("label",{className:"block text-sm font-medium text-text-primary",children:"Refresh tokens"}),(0,t.jsx)("textarea",{value:el,onChange:e=>eo(e.target.value),placeholder:`Paste your refresh token(s) here (batch supported)
2
+
3
+ Example:
4
+ "refresh_token": "example_refresh_token"`,className:"w-full min-h-[160px] px-3 py-2 bg-surface-secondary border border-border rounded-lg text-sm text-text-primary placeholder:text-text-muted/80 focus:outline-none focus:ring-2 focus:ring-primary resize-y font-mono",disabled:ei}),(0,t.jsx)("p",{className:"text-xs text-text-muted",children:"Tip: You can paste multiple tokens or a JSON array to import in batch."})]}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)(n.Button,{variant:"secondary",fullWidth:!0,onClick:ts,disabled:ei,children:"Cancel"}),(0,t.jsx)(n.Button,{fullWidth:!0,onClick:ta,disabled:ei||!el.trim(),children:ei?"Importing…":"Import"})]})]})}),"kiro"===c?(0,t.jsx)(m.default,{isOpen:F,providerInfo:eK,onSuccess:e5,onClose:()=>L(!1)}):"cursor"===c?(0,t.jsx)(h.default,{isOpen:F,onSuccess:e5,onClose:()=>L(!1)}):"gitlab"===c?(0,t.jsx)(y.default,{isOpen:F,providerInfo:eK,onSuccess:e5,onClose:()=>L(!1)}):(0,t.jsx)(x.OAuthModal,{isOpen:F,provider:c,providerInfo:eK,onSuccess:e5,onClose:()=>L(!1)}),"iflow"===c&&(0,t.jsx)(f.default,{isOpen:J,onSuccess:()=>{eY(),z(!1)},onClose:()=>z(!1)}),(0,t.jsx)(E,{isOpen:V,provider:c,providerName:eK.name,isCompatible:eV,isAnthropic:ez,proxyPools:K,onSave:e2,onClose:()=>W(!1)}),(0,t.jsx)(_,{isOpen:G,connection:ec,proxyPools:K,onSave:e4,onClose:()=>H(!1)}),eV&&(0,t.jsx)(D,{isOpen:Y,node:q,onSave:eQ,onClose:()=>Q(!1),isAnthropic:ez}),!eV&&(0,t.jsx)(U,{isOpen:eN,providerAlias:eW,providerDisplayAlias:eG,onSave:async e=>{let t=eK?.passthroughModels?e.split("/").pop():e;await eZ(e,t,eW),ek(!1)},onClose:()=>ek(!1)})]}):(0,t.jsxs)("div",{className:"text-center py-20",children:[(0,t.jsx)("p",{className:"text-text-muted",children:"Provider not found"}),(0,t.jsx)(r.default,{href:"/dashboard/providers",className:"text-primary mt-4 inline-block",children:"Back to Providers"})]})}],99165)}]);
@@ -1,3 +1,3 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,20956,e=>{"use strict";var t=e.i(41691);e.s(["ModelSelectModal",()=>t.default])},35918,e=>{"use strict";var t=e.i(55937);e.s(["calculatePercentage",0,function(e,t){return t&&0!==t?!e||e<0?100:e>=t?0:Math.round((t-e)/t*100):0},"formatResetTime",0,function(e){if(!e)return"-";try{let t="string"==typeof e?new Date(e):e,r=new Date,i=t-r;if(i<=0)return"-";let a=Math.ceil(i/6e4);if(a<60)return`${a}m`;let n=Math.floor(a/60),o=a%60;if(n<24)return`${n}h ${o}m`;let s=Math.floor(n/24);return`${s}d ${n%24}h ${o}m`}catch(e){return"-"}},"parseQuotaData",0,function(e,r){if(!r||"object"!=typeof r)return[];let i=[];try{switch(e.toLowerCase()){case"github":default:r.quotas&&Object.entries(r.quotas).forEach(([e,t])=>{i.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})});break;case"antigravity":r.quotas&&Object.entries(r.quotas).forEach(([e,t])=>{i.push({name:t.displayName||e,modelKey:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null,remainingPercentage:t.remainingPercentage})});break;case"codex":r.quotas&&Object.entries(r.quotas).forEach(([e,t])=>{i.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})});break;case"kiro":r.quotas&&Object.entries(r.quotas).forEach(([e,t])=>{i.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})});break;case"claude":r.message?i.push({name:"error",used:0,total:0,resetAt:null,message:r.message}):r.quotas&&Object.entries(r.quotas).forEach(([e,t])=>{i.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})})}}catch(t){return console.error(`Error parsing quota data for ${e}:`,t),[]}let a=(0,t.getModelsByProviderId)(e);if(a.length>0){let e=new Map(a.map((e,t)=>[e.id,t]));i.sort((t,r)=>{let i=t.modelKey||t.name,a=r.modelKey||r.name;return(e.get(i)??999)-(e.get(a)??999)})}return i}])},96521,e=>{"use strict";var t=e.i(10092);e.s(["Card",()=>t.default])},75634,e=>{"use strict";var t=e.i(88577);e.s(["Toggle",()=>t.default])},51916,e=>{"use strict";var t=e.i(64920);e.s(["Badge",()=>t.default])},88143,(e,t,r)=>{"use strict";function i({widthInt:e,heightInt:t,blurWidth:r,blurHeight:a,blurDataURL:n,objectFit:o}){let s=r?40*r:e,l=a?40*a:t,u=s&&l?`viewBox='0 0 ${s} ${l}'`:"";return`%3Csvg xmlns='http://www.w3.org/2000/svg' ${u}%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='${u?"none":"contain"===o?"xMidYMid":"cover"===o?"xMidYMid slice":"none"}' style='filter: url(%23b);' href='${n}'/%3E%3C/svg%3E`}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getImageBlurSvg",{enumerable:!0,get:function(){return i}})},87690,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var i={VALID_LOADERS:function(){return n},imageConfigDefault:function(){return o}};for(var a in i)Object.defineProperty(r,a,{enumerable:!0,get:i[a]});let n=["default","imgix","cloudinary","akamai","custom"],o={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],path:"/_next/image",loader:"default",loaderFile:"",domains:[],disableStaticImages:!1,minimumCacheTTL:14400,formats:["image/webp"],maximumDiskCacheSize:void 0,maximumRedirects:3,maximumResponseBody:5e7,dangerouslyAllowLocalIP:!1,dangerouslyAllowSVG:!1,contentSecurityPolicy:"script-src 'none'; frame-src 'none'; sandbox;",contentDispositionType:"attachment",localPatterns:void 0,remotePatterns:[],qualities:[75],unoptimized:!1,customCacheHandler:!1}},8927,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getImgProps",{enumerable:!0,get:function(){return u}}),e.r(33525);let i=e.r(43369),a=e.r(88143),n=e.r(87690),o=["-moz-initial","fill","none","scale-down",void 0];function s(e){return void 0!==e.default}function l(e){return void 0===e?e:"number"==typeof e?Number.isFinite(e)?e:NaN:"string"==typeof e&&/^[0-9]+$/.test(e)?parseInt(e,10):NaN}function u({src:e,sizes:t,unoptimized:r=!1,priority:d=!1,preload:c=!1,loading:f,className:p,quality:g,width:m,height:h,fill:b=!1,style:v,overrideSrc:y,onLoad:w,onLoadingComplete:_,placeholder:j="empty",blurDataURL:P,fetchPriority:x,decoding:S="async",layout:E,objectFit:O,objectPosition:C,lazyBoundary:R,lazyRoot:M,...I},A){var $;let k,z,D,{imgConf:T,showAltText:q,blurComplete:N,defaultLoader:L}=A,U=T||n.imageConfigDefault;if("allSizes"in U)k=U;else{let e=[...U.deviceSizes,...U.imageSizes].sort((e,t)=>e-t),t=U.deviceSizes.sort((e,t)=>e-t),r=U.qualities?.sort((e,t)=>e-t);k={...U,allSizes:e,deviceSizes:t,qualities:r}}if(void 0===L)throw Object.defineProperty(Error("images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config"),"__NEXT_ERROR_CODE",{value:"E163",enumerable:!1,configurable:!0});let B=I.loader||L;delete I.loader,delete I.srcSet;let F="__next_img_default"in B;if(F){if("custom"===k.loader)throw Object.defineProperty(Error(`Image with src "${e}" is missing "loader" prop.
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,20956,e=>{"use strict";var t=e.i(41691);e.s(["ModelSelectModal",()=>t.default])},35918,e=>{"use strict";var t=e.i(55937);e.s(["calculatePercentage",0,function(e,t){return t&&0!==t?!e||e<0?100:e>=t?0:Math.round((t-e)/t*100):0},"formatResetTime",0,function(e){if(!e)return"-";try{let t="string"==typeof e?new Date(e):e,r=new Date,i=t-r;if(i<=0)return"-";let a=Math.ceil(i/6e4);if(a<60)return`${a}m`;let n=Math.floor(a/60),o=a%60;if(n<24)return`${n}h ${o}m`;let s=Math.floor(n/24);return`${s}d ${n%24}h ${o}m`}catch(e){return"-"}},"parseQuotaData",0,function(e,r){if(!r||"object"!=typeof r)return[];let i=[];try{switch(e.toLowerCase()){case"github":default:r.quotas&&Object.entries(r.quotas).forEach(([e,t])=>{i.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})});break;case"antigravity":r.quotas&&Object.entries(r.quotas).forEach(([e,t])=>{i.push({name:t.displayName||e,modelKey:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null,remainingPercentage:t.remainingPercentage})});break;case"codex":r.quotas&&Object.entries(r.quotas).forEach(([e,t])=>{i.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})});break;case"kiro":r.quotas&&Object.entries(r.quotas).forEach(([e,t])=>{i.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})});break;case"claude":r.message?i.push({name:"error",used:0,total:0,resetAt:null,message:r.message}):r.quotas&&Object.entries(r.quotas).forEach(([e,t])=>{i.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})})}}catch(t){return console.error(`Error parsing quota data for ${e}:`,t),[]}let a=(0,t.getModelsByProviderId)(e);if(a.length>0){let e=new Map(a.map((e,t)=>[e.id,t]));i.sort((t,r)=>{let i=t.modelKey||t.name,a=r.modelKey||r.name;return(e.get(i)??999)-(e.get(a)??999)})}return i}])},96521,e=>{"use strict";var t=e.i(10092);e.s(["Card",()=>t.default])},75634,e=>{"use strict";var t=e.i(88577);e.s(["Toggle",()=>t.default])},51916,e=>{"use strict";var t=e.i(64920);e.s(["Badge",()=>t.default])},55849,e=>{"use strict";var t=e.i(12720);e.s(["Tooltip",()=>t.default])},88143,(e,t,r)=>{"use strict";function i({widthInt:e,heightInt:t,blurWidth:r,blurHeight:a,blurDataURL:n,objectFit:o}){let s=r?40*r:e,l=a?40*a:t,u=s&&l?`viewBox='0 0 ${s} ${l}'`:"";return`%3Csvg xmlns='http://www.w3.org/2000/svg' ${u}%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='${u?"none":"contain"===o?"xMidYMid":"cover"===o?"xMidYMid slice":"none"}' style='filter: url(%23b);' href='${n}'/%3E%3C/svg%3E`}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getImageBlurSvg",{enumerable:!0,get:function(){return i}})},87690,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var i={VALID_LOADERS:function(){return n},imageConfigDefault:function(){return o}};for(var a in i)Object.defineProperty(r,a,{enumerable:!0,get:i[a]});let n=["default","imgix","cloudinary","akamai","custom"],o={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],path:"/_next/image",loader:"default",loaderFile:"",domains:[],disableStaticImages:!1,minimumCacheTTL:14400,formats:["image/webp"],maximumDiskCacheSize:void 0,maximumRedirects:3,maximumResponseBody:5e7,dangerouslyAllowLocalIP:!1,dangerouslyAllowSVG:!1,contentSecurityPolicy:"script-src 'none'; frame-src 'none'; sandbox;",contentDispositionType:"attachment",localPatterns:void 0,remotePatterns:[],qualities:[75],unoptimized:!1,customCacheHandler:!1}},8927,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getImgProps",{enumerable:!0,get:function(){return u}}),e.r(33525);let i=e.r(43369),a=e.r(88143),n=e.r(87690),o=["-moz-initial","fill","none","scale-down",void 0];function s(e){return void 0!==e.default}function l(e){return void 0===e?e:"number"==typeof e?Number.isFinite(e)?e:NaN:"string"==typeof e&&/^[0-9]+$/.test(e)?parseInt(e,10):NaN}function u({src:e,sizes:t,unoptimized:r=!1,priority:d=!1,preload:c=!1,loading:f,className:p,quality:g,width:m,height:h,fill:b=!1,style:v,overrideSrc:y,onLoad:w,onLoadingComplete:_,placeholder:j="empty",blurDataURL:P,fetchPriority:x,decoding:S="async",layout:E,objectFit:O,objectPosition:C,lazyBoundary:R,lazyRoot:M,...I},A){var $;let k,z,D,{imgConf:T,showAltText:q,blurComplete:N,defaultLoader:L}=A,U=T||n.imageConfigDefault;if("allSizes"in U)k=U;else{let e=[...U.deviceSizes,...U.imageSizes].sort((e,t)=>e-t),t=U.deviceSizes.sort((e,t)=>e-t),r=U.qualities?.sort((e,t)=>e-t);k={...U,allSizes:e,deviceSizes:t,qualities:r}}if(void 0===L)throw Object.defineProperty(Error("images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config"),"__NEXT_ERROR_CODE",{value:"E163",enumerable:!1,configurable:!0});let B=I.loader||L;delete I.loader,delete I.srcSet;let F="__next_img_default"in B;if(F){if("custom"===k.loader)throw Object.defineProperty(Error(`Image with src "${e}" is missing "loader" prop.
2
2
  Read more: https://nextjs.org/docs/messages/next-image-missing-loader`),"__NEXT_ERROR_CODE",{value:"E252",enumerable:!1,configurable:!0})}else{let e=B;B=t=>{let{config:r,...i}=t;return e(i)}}if(E){"fill"===E&&(b=!0);let e={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[E];e&&(v={...v,...e});let r={responsive:"100vw",fill:"100vw"}[E];r&&!t&&(t=r)}let W="",G=l(m),V=l(h);if(($=e)&&"object"==typeof $&&(s($)||void 0!==$.src)){let t=s(e)?e.default:e;if(!t.src)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(t)}`),"__NEXT_ERROR_CODE",{value:"E460",enumerable:!1,configurable:!0});if(!t.height||!t.width)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(t)}`),"__NEXT_ERROR_CODE",{value:"E48",enumerable:!1,configurable:!0});if(z=t.blurWidth,D=t.blurHeight,P=P||t.blurDataURL,W=t.src,!b)if(G||V){if(G&&!V){let e=G/t.width;V=Math.round(t.height*e)}else if(!G&&V){let e=V/t.height;G=Math.round(t.width*e)}}else G=t.width,V=t.height}let X=!d&&!c&&("lazy"===f||void 0===f);(!(e="string"==typeof e?e:W)||e.startsWith("data:")||e.startsWith("blob:"))&&(r=!0,X=!1),k.unoptimized&&(r=!0),F&&!k.dangerouslyAllowSVG&&e.split("?",1)[0].endsWith(".svg")&&(r=!0);let H=l(g),K=Object.assign(b?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:O,objectPosition:C}:{},q?{}:{color:"transparent"},v),Q=N||"empty"===j?null:"blur"===j?`url("data:image/svg+xml;charset=utf-8,${(0,a.getImageBlurSvg)({widthInt:G,heightInt:V,blurWidth:z,blurHeight:D,blurDataURL:P||"",objectFit:K.objectFit})}")`:`url("${j}")`,J=o.includes(K.objectFit)?"fill"===K.objectFit?"100% 100%":"cover":K.objectFit,Y=Q?{backgroundSize:J,backgroundPosition:K.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:Q}:{},Z=function({config:e,src:t,unoptimized:r,width:a,quality:n,sizes:o,loader:s}){if(r){if(t.startsWith("/")&&!t.startsWith("//")){let e=(0,i.getDeploymentId)();if(e){let r=t.indexOf("?");if(-1!==r){let i=new URLSearchParams(t.slice(r+1));i.get("dpl")||(i.append("dpl",e),t=t.slice(0,r)+"?"+i.toString())}else t+=`?dpl=${e}`}}return{src:t,srcSet:void 0,sizes:void 0}}let{widths:l,kind:u}=function({deviceSizes:e,allSizes:t},r,i){if(i){let r=/(^|\s)(1?\d?\d)vw/g,a=[];for(let e;e=r.exec(i);)a.push(parseInt(e[2]));if(a.length){let r=.01*Math.min(...a);return{widths:t.filter(t=>t>=e[0]*r),kind:"w"}}return{widths:t,kind:"w"}}return"number"!=typeof r?{widths:e,kind:"w"}:{widths:[...new Set([r,2*r].map(e=>t.find(t=>t>=e)||t[t.length-1]))],kind:"x"}}(e,a,o),d=l.length-1;return{sizes:o||"w"!==u?o:"100vw",srcSet:l.map((r,i)=>`${s({config:e,src:t,quality:n,width:r})} ${"w"===u?r:i+1}${u}`).join(", "),src:s({config:e,src:t,quality:n,width:l[d]})}}({config:k,src:e,unoptimized:r,width:G,quality:H,sizes:t,loader:B}),ee=X?"lazy":f;return{props:{...I,loading:ee,fetchPriority:x,width:G,height:V,decoding:S,className:p,style:{...K,...Y},sizes:Z.sizes,srcSet:Z.srcSet,src:y||Z.src},meta:{unoptimized:r,preload:c||d,placeholder:j,fill:b}}}},98879,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return s}});let i=e.r(71645),a="u"<typeof window,n=a?()=>{}:i.useLayoutEffect,o=a?()=>{}:i.useEffect;function s(e){let{headManager:t,reduceComponentsToState:r}=e;function s(){if(t&&t.mountedInstances){let e=i.Children.toArray(Array.from(t.mountedInstances).filter(Boolean));t.updateHead(r(e))}}return a&&(t?.mountedInstances?.add(e.children),s()),n(()=>(t?.mountedInstances?.add(e.children),()=>{t?.mountedInstances?.delete(e.children)})),n(()=>(t&&(t._pendingUpdate=s),()=>{t&&(t._pendingUpdate=s)})),o(()=>(t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null),()=>{t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null)})),null}},25633,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var i={default:function(){return m},defaultHead:function(){return c}};for(var a in i)Object.defineProperty(r,a,{enumerable:!0,get:i[a]});let n=e.r(55682),o=e.r(90809),s=e.r(43476),l=o._(e.r(71645)),u=n._(e.r(98879)),d=e.r(42732);function c(){return[(0,s.jsx)("meta",{charSet:"utf-8"},"charset"),(0,s.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")]}function f(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===l.default.Fragment?e.concat(l.default.Children.toArray(t.props.children).reduce((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t),[])):e.concat(t)}e.r(33525);let p=["name","httpEquiv","charSet","itemProp"];function g(e){let t,r,i,a;return e.reduce(f,[]).reverse().concat(c().reverse()).filter((t=new Set,r=new Set,i=new Set,a={},e=>{let n=!0,o=!1;if(e.key&&"number"!=typeof e.key&&e.key.indexOf("$")>0){o=!0;let r=e.key.slice(e.key.indexOf("$")+1);t.has(r)?n=!1:t.add(r)}switch(e.type){case"title":case"base":r.has(e.type)?n=!1:r.add(e.type);break;case"meta":for(let t=0,r=p.length;t<r;t++){let r=p[t];if(e.props.hasOwnProperty(r))if("charSet"===r)i.has(r)?n=!1:i.add(r);else{let t=e.props[r],i=a[r]||new Set;("name"!==r||!o)&&i.has(t)?n=!1:(i.add(t),a[r]=i)}}}return n})).reverse().map((e,t)=>{let r=e.key||t;return l.default.cloneElement(e,{key:r})})}let m=function({children:e}){let t=(0,l.useContext)(d.HeadManagerContext);return(0,s.jsx)(u.default,{reduceComponentsToState:g,headManager:t,children:e})};("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},18556,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ImageConfigContext",{enumerable:!0,get:function(){return n}});let i=e.r(55682)._(e.r(71645)),a=e.r(87690),n=i.default.createContext(a.imageConfigDefault)},65856,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"RouterContext",{enumerable:!0,get:function(){return i}});let i=e.r(55682)._(e.r(71645)).default.createContext(null)},70965,(e,t,r)=>{"use strict";function i(e,t){let r=e||75;return t?.qualities?.length?t.qualities.reduce((e,t)=>Math.abs(t-r)<Math.abs(e-r)?t:e,t.qualities[0]):r}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"findClosestQuality",{enumerable:!0,get:function(){return i}})},1948,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return o}});let i=e.r(70965),a=e.r(43369);function n({config:e,src:t,width:r,quality:o}){let s=(0,a.getDeploymentId)();if(t.startsWith("/")&&!t.startsWith("//")){let e=t.indexOf("?");if(-1!==e){let r=new URLSearchParams(t.slice(e+1)),i=r.get("dpl");if(i){s=i,r.delete("dpl");let a=r.toString();t=t.slice(0,e)+(a?"?"+a:"")}}}if(t.startsWith("/")&&t.includes("?")&&e.localPatterns?.length===1&&"**"===e.localPatterns[0].pathname&&""===e.localPatterns[0].search)throw Object.defineProperty(Error(`Image with src "${t}" is using a query string which is not configured in images.localPatterns.
3
3
  Read more: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`),"__NEXT_ERROR_CODE",{value:"E871",enumerable:!1,configurable:!0});let l=(0,i.findClosestQuality)(o,e);return`${e.path}?url=${encodeURIComponent(t)}&w=${r}&q=${l}${t.startsWith("/")&&s?`&dpl=${s}`:""}`}n.__next_img_default=!0;let o=n},5500,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"Image",{enumerable:!0,get:function(){return w}});let i=e.r(55682),a=e.r(90809),n=e.r(43476),o=a._(e.r(71645)),s=i._(e.r(74080)),l=i._(e.r(25633)),u=e.r(8927),d=e.r(87690),c=e.r(18556);e.r(33525);let f=e.r(65856),p=i._(e.r(1948)),g=e.r(18581),m={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!0};function h(e,t,r,i,a,n,o){let s=e?.src;e&&e["data-loaded-src"]!==s&&(e["data-loaded-src"]=s,("decode"in e?e.decode():Promise.resolve()).catch(()=>{}).then(()=>{if(e.parentElement&&e.isConnected){if("empty"!==t&&a(!0),r?.current){let t=new Event("load");Object.defineProperty(t,"target",{writable:!1,value:e});let i=!1,a=!1;r.current({...t,nativeEvent:t,currentTarget:e,target:e,isDefaultPrevented:()=>i,isPropagationStopped:()=>a,persist:()=>{},preventDefault:()=>{i=!0,t.preventDefault()},stopPropagation:()=>{a=!0,t.stopPropagation()}})}i?.current&&i.current(e)}}))}function b(e){return o.use?{fetchPriority:e}:{fetchpriority:e}}"u"<typeof window&&(globalThis.__NEXT_IMAGE_IMPORTED=!0);let v=(0,o.forwardRef)(({src:e,srcSet:t,sizes:r,height:i,width:a,decoding:s,className:l,style:u,fetchPriority:d,placeholder:c,loading:f,unoptimized:p,fill:m,onLoadRef:v,onLoadingCompleteRef:y,setBlurComplete:w,setShowAltText:_,sizesInput:j,onLoad:P,onError:x,...S},E)=>{let O=(0,o.useCallback)(e=>{e&&(x&&(e.src=e.src),e.complete&&h(e,c,v,y,w,p,j))},[e,c,v,y,w,x,p,j]),C=(0,g.useMergedRef)(E,O);return(0,n.jsx)("img",{...S,...b(d),loading:f,width:a,height:i,decoding:s,"data-nimg":m?"fill":"1",className:l,style:u,sizes:r,srcSet:t,src:e,ref:C,onLoad:e=>{h(e.currentTarget,c,v,y,w,p,j)},onError:e=>{_(!0),"empty"!==c&&w(!0),x&&x(e)}})});function y({isAppRouter:e,imgAttributes:t}){let r={as:"image",imageSrcSet:t.srcSet,imageSizes:t.sizes,crossOrigin:t.crossOrigin,referrerPolicy:t.referrerPolicy,...b(t.fetchPriority)};return e&&s.default.preload?(s.default.preload(t.src,r),null):(0,n.jsx)(l.default,{children:(0,n.jsx)("link",{rel:"preload",href:t.srcSet?void 0:t.src,...r},"__nimg-"+t.src+t.srcSet+t.sizes)})}let w=(0,o.forwardRef)((e,t)=>{let r=(0,o.useContext)(f.RouterContext),i=(0,o.useContext)(c.ImageConfigContext),a=(0,o.useMemo)(()=>{let e=m||i||d.imageConfigDefault,t=[...e.deviceSizes,...e.imageSizes].sort((e,t)=>e-t),r=e.deviceSizes.sort((e,t)=>e-t),a=e.qualities?.sort((e,t)=>e-t);return{...e,allSizes:t,deviceSizes:r,qualities:a,localPatterns:"u"<typeof window?i?.localPatterns:e.localPatterns}},[i]),{onLoad:s,onLoadingComplete:l}=e,g=(0,o.useRef)(s);(0,o.useEffect)(()=>{g.current=s},[s]);let h=(0,o.useRef)(l);(0,o.useEffect)(()=>{h.current=l},[l]);let[b,w]=(0,o.useState)(!1),[_,j]=(0,o.useState)(!1),{props:P,meta:x}=(0,u.getImgProps)(e,{defaultLoader:p.default,imgConf:a,blurComplete:b,showAltText:_});return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(v,{...P,unoptimized:x.unoptimized,placeholder:x.placeholder,fill:x.fill,onLoadRef:g,onLoadingCompleteRef:h,setBlurComplete:w,setShowAltText:j,sizesInput:e.sizes,ref:t}),x.preload?(0,n.jsx)(y,{isAppRouter:!r,imgAttributes:P}):null]})});("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},94909,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var i={default:function(){return d},getImageProps:function(){return u}};for(var a in i)Object.defineProperty(r,a,{enumerable:!0,get:i[a]});let n=e.r(55682),o=e.r(8927),s=e.r(5500),l=n._(e.r(1948));function u(e){let{props:t}=(0,o.getImgProps)(e,{defaultLoader:l.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!0}});for(let[e,r]of Object.entries(t))void 0===r&&delete t[e];return{props:t}}let d=s.Image},57688,(e,t,r)=>{t.exports=e.r(94909)},18312,e=>{"use strict";e.i(47167);var t=e.i(43476),r=e.i(71645);e.i(38730);var i=e.i(50832),a=e.i(66104);e.i(4565);var n=e.i(55937);e.i(83806);var o=e.i(10215),o=o,s=e.i(63750),s=s,l=e.i(52816),l=l,u=e.i(81446),u=u,d=e.i(38512),d=d,c=e.i(22634),c=c;let f="https://9router.com",p={claude:"/api/cli-tools/claude-settings",codex:"/api/cli-tools/codex-settings",opencode:"/api/cli-tools/opencode-settings",droid:"/api/cli-tools/droid-settings",openclaw:"/api/cli-tools/openclaw-settings"};e.s(["default",0,function({machineId:e}){let g,m,h,[b,v]=(0,r.useState)([]),[y,w]=(0,r.useState)(!0),[_,j]=(0,r.useState)(null),[P,x]=(0,r.useState)({}),[S,E]=(0,r.useState)(!1),[O,C]=(0,r.useState)(!1),[R,M]=(0,r.useState)(""),[I,A]=(0,r.useState)([]),[$,k]=(0,r.useState)({});(0,r.useEffect)(()=>{q(),D(),T(),z()},[]);let z=async()=>{try{let e=await Promise.all(Object.entries(p).map(async([e,t])=>{try{let r=await fetch(t),i=await r.json();return[e,i]}catch{return[e,null]}}));k(Object.fromEntries(e))}catch(e){console.log("Error fetching tool statuses:",e)}},D=async()=>{try{let[e,t]=await Promise.all([fetch("/api/settings"),fetch("/api/tunnel/status")]);if(e.ok){let t=await e.json();E(t.cloudEnabled||!1)}if(t.ok){let e=await t.json();C(e.enabled||!1),M(e.publicUrl||"")}}catch(e){console.log("Error loading settings:",e)}},T=async()=>{try{let e=await fetch("/api/keys");if(e.ok){let t=await e.json();A(t.keys||[])}}catch(e){console.log("Error fetching API keys:",e)}},q=async()=>{try{let e=await fetch("/api/providers"),t=await e.json();e.ok&&v(t.connections||[])}catch(e){console.log("Error fetching connections:",e)}finally{w(!1)}},N=()=>b.filter(e=>!1!==e.isActive),L=(0,r.useCallback)((e,t,r)=>{x(i=>i[e]?.[t]===r?i:{...i,[e]:{...i[e],[t]:r}})},[]);if(y)return(0,t.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,t.jsx)(i.CardSkeleton,{}),(0,t.jsx)(i.CardSkeleton,{}),(0,t.jsx)(i.CardSkeleton,{})]});let U=(g=N(),m=[],h=new Set,g.forEach(e=>{let t=n.PROVIDER_ID_TO_ALIAS[e.provider]||e.provider;(0,n.getModelsByProviderId)(e.provider).forEach(r=>{let i=`${t}/${r.id}`;h.has(i)||(h.add(i),m.push({value:i,label:`${t}/${r.id}`,provider:e.provider,alias:t,connectionName:e.name,modelId:r.id}))})}),m).length>0,B=Object.entries(a.CLI_TOOLS);return(0,t.jsx)("div",{className:"flex flex-col gap-6",children:(0,t.jsx)("div",{className:"flex flex-col gap-4",children:B.map(([e,r])=>((e,r)=>{let i={tool:r,isExpanded:_===e,onToggle:()=>j(_===e?null:e),baseUrl:O&&R?R:S&&f?f:window.location.origin,apiKeys:I};switch(e){case"claude":return(0,t.jsx)(o.default,{...i,activeProviders:N(),modelMappings:P[e]||{},onModelMappingChange:(t,r)=>L(e,t,r),hasActiveProviders:U,cloudEnabled:S,initialStatus:$.claude},e);case"codex":return(0,t.jsx)(s.default,{...i,activeProviders:N(),cloudEnabled:S,initialStatus:$.codex},e);case"opencode":return(0,t.jsx)(c.default,{...i,activeProviders:N(),cloudEnabled:S,initialStatus:$.opencode},e);case"droid":return(0,t.jsx)(l.default,{...i,activeProviders:N(),hasActiveProviders:U,cloudEnabled:S,initialStatus:$.droid},e);case"openclaw":return(0,t.jsx)(u.default,{...i,activeProviders:N(),hasActiveProviders:U,cloudEnabled:S,initialStatus:$.openclaw},e);default:return(0,t.jsx)(d.default,{toolId:e,...i,activeProviders:N(),cloudEnabled:S,tunnelEnabled:O},e)}})(e,r))})})}],18312)}]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n9router",
3
- "version": "0.3.91",
3
+ "version": "0.3.93",
4
4
  "description": "Self-hosted AI routing gateway — local proxy for Claude, Gemini, OpenAI and 40+ providers",
5
5
  "keywords": [
6
6
  "ai",
@@ -1,3 +0,0 @@
1
- module.exports=[46786,(e,t,r)=>{t.exports=e.x("os",()=>require("os"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},24361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},22734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},12714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},50227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},57764,(e,t,r)=>{t.exports=e.x("node:url",()=>require("node:url"))},27699,(e,t,r)=>{t.exports=e.x("events",()=>require("events"))},2157,(e,t,r)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},60526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},22593,67059,21023,e=>{"use strict";e.s(["Low",0,class{adapter;data;constructor(e,t){!function(e,t){if(void 0===e)throw Error("lowdb: missing adapter");if(void 0===t)throw Error("lowdb: missing default data")}(e,t),this.adapter=e,this.data=t}async read(){let e=await this.adapter.read();e&&(this.data=e)}async write(){this.data&&await this.adapter.write(this.data)}async update(e){e(this.data),await this.write()}}],22593),e.i(2157);var t=e.i(12714),r=e.i(50227),o=e.i(57764);async function s(e,t,r){for(let o=0;o<t;o++)try{return await e()}catch(e){if(o<t-1)await new Promise(e=>setTimeout(e,r));else throw e}}class i{#e;#t;#r=!1;#o=null;#s=null;#i=null;#a=null;#n(e){return this.#a=e,this.#i||=new Promise((e,t)=>{this.#s=[e,t]}),new Promise((e,t)=>{this.#i?.then(e).catch(t)})}async #l(e){this.#r=!0;try{await (0,t.writeFile)(this.#t,e,"utf-8"),await s(async()=>{await (0,t.rename)(this.#t,this.#e)},10,100),this.#o?.[0]()}catch(e){throw e instanceof Error&&this.#o?.[1](e),e}finally{if(this.#r=!1,this.#o=this.#s,this.#s=this.#i=null,null!==this.#a){let e=this.#a;this.#a=null,await this.write(e)}}}constructor(e){this.#e=e,this.#t=function(e){let t=e instanceof URL?(0,o.fileURLToPath)(e):e.toString();return(0,r.join)((0,r.dirname)(t),`.${(0,r.basename)(t)}.tmp`)}(e)}async write(e){return this.#r?this.#n(e):this.#l(e)}}class a{#e;#p;constructor(e){this.#e=e,this.#p=new i(e)}async read(){let e;try{e=await (0,t.readFile)(this.#e,"utf-8")}catch(e){if("ENOENT"===e.code)return null;throw e}return e}write(e){return this.#p.write(e)}}class n{#c;#h;#d;constructor(e,{parse:t,stringify:r}){this.#c=new a(e),this.#h=t,this.#d=r}async read(){let e=await this.#c.read();return null===e?null:this.#h(e)}write(e){return this.#c.write(this.#d(e))}}e.s(["JSONFile",0,class extends n{constructor(e){super(e,{parse:JSON.parse,stringify:e=>JSON.stringify(e,null,2)})}}],67059),e.s([],21023)},66680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},88947,(e,t,r)=>{t.exports=e.x("stream",()=>require("stream"))},12249,(e,t,r)=>{t.exports=e.x("constants",()=>require("constants"))},49719,(e,t,r)=>{t.exports=e.x("assert",()=>require("assert"))},69789,e=>{"use strict";e.i(26753),e.s([])},85063,e=>{"use strict";e.i(46786);let t={clientId:"1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",clientSecret:"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",authorizeUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",userInfoUrl:"https://www.googleapis.com/oauth2/v1/userinfo",scopes:["https://www.googleapis.com/auth/cloud-platform","https://www.googleapis.com/auth/userinfo.email","https://www.googleapis.com/auth/userinfo.profile","https://www.googleapis.com/auth/cclog","https://www.googleapis.com/auth/experimentsandconfigs"],apiEndpoint:"https://cloudcode-pa.googleapis.com",apiVersion:"v1internal",loadCodeAssistEndpoint:"https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",onboardUserEndpoint:"https://cloudcode-pa.googleapis.com/v1internal:onboardUser",loadCodeAssistUserAgent:"google-api-nodejs-client/9.15.1",loadCodeAssistApiClient:"google-cloud-sdk vscode_cloudshelleditor/0.1",loadCodeAssistClientMetadata:JSON.stringify({ideType:"IDE_UNSPECIFIED",platform:"PLATFORM_UNSPECIFIED",pluginType:"GEMINI"})},r={clientId:process.env.KIMI_CODING_OAUTH_CLIENT_ID||"17e5f671-d194-4dfb-9706-5516cb48c098",deviceCodeUrl:"https://auth.kimi.com/api/oauth/device_authorization",tokenUrl:"https://auth.kimi.com/api/oauth/token"};e.s(["ANTIGRAVITY_CONFIG",0,t,"CLAUDE_CONFIG",0,{clientId:"9d1c250a-e61b-44d9-88ed-5944d1962f5e",authorizeUrl:"https://claude.ai/oauth/authorize",tokenUrl:"https://api.anthropic.com/v1/oauth/token",scopes:["org:create_api_key","user:profile","user:inference"],codeChallengeMethod:"S256"},"CLINE_CONFIG",0,{appBaseUrl:"https://app.cline.bot",apiBaseUrl:"https://api.cline.bot",authorizeUrl:"https://api.cline.bot/api/v1/auth/authorize",tokenExchangeUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh"},"CODEBUDDY_CONFIG",0,{baseUrl:"https://copilot.tencent.com",stateUrl:"https://copilot.tencent.com/v2/plugin/auth/state",tokenUrl:"https://copilot.tencent.com/v2/plugin/auth/token",refreshUrl:"https://copilot.tencent.com/v2/plugin/auth/token/refresh",userAgent:"CLI/2.63.2 CodeBuddy/2.63.2",platform:"CLI",pollInterval:5e3},"CODEX_CONFIG",0,{clientId:"app_EMoamEEZ73f0CkXaXp7hrann",authorizeUrl:"https://auth.openai.com/oauth/authorize",tokenUrl:"https://auth.openai.com/oauth/token",scope:"openid profile email offline_access",codeChallengeMethod:"S256",extraParams:{id_token_add_organizations:"true",codex_cli_simplified_flow:"true",originator:"codex_cli_rs"}},"CURSOR_CONFIG",0,{apiEndpoint:"https://api2.cursor.sh",chatEndpoint:"/aiserver.v1.ChatService/StreamUnifiedChatWithTools",modelsEndpoint:"/aiserver.v1.AiService/GetDefaultModelNudgeData",api3Endpoint:"https://api3.cursor.sh",agentEndpoint:"https://agent.api5.cursor.sh",agentNonPrivacyEndpoint:"https://agentn.api5.cursor.sh",clientVersion:"0.48.6",clientType:"ide",tokenStoragePaths:{linux:"~/.config/Cursor/User/globalStorage/state.vscdb",macos:"/Users/<user>/Library/Application Support/Cursor/User/globalStorage/state.vscdb",windows:"%APPDATA%\\Cursor\\User\\globalStorage\\state.vscdb"},dbKeys:{accessToken:"cursorAuth/accessToken",machineId:"storage.serviceMachineId"}},"GEMINI_CONFIG",0,{clientId:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecret:"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",authorizeUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",userInfoUrl:"https://www.googleapis.com/oauth2/v1/userinfo",scopes:["https://www.googleapis.com/auth/cloud-platform","https://www.googleapis.com/auth/userinfo.email","https://www.googleapis.com/auth/userinfo.profile"]},"GITHUB_CONFIG",0,{clientId:"Iv1.b507a08c87ecfe98",deviceCodeUrl:"https://github.com/login/device/code",tokenUrl:"https://github.com/login/oauth/access_token",userInfoUrl:"https://api.github.com/user",scopes:"read:user",apiVersion:"2022-11-28",copilotTokenUrl:"https://api.github.com/copilot_internal/v2/token",userAgent:"GitHubCopilotChat/0.26.7",editorVersion:"vscode/1.85.0",editorPluginVersion:"copilot-chat/0.26.7"},"GITLAB_CONFIG",0,{defaultBaseUrl:"https://gitlab.com",authorizeUrlPath:"/oauth/authorize",tokenUrlPath:"/oauth/token",userInfoUrlPath:"/api/v4/user",scope:"api read_user",codeChallengeMethod:"S256"},"IFLOW_CONFIG",0,{clientId:"10009311001",clientSecret:"4Z3YjXycVsQvyGF1etiNlIBB4RsqSDtW",authorizeUrl:"https://iflow.cn/oauth",tokenUrl:"https://iflow.cn/oauth/token",userInfoUrl:"https://iflow.cn/api/oauth/getUserInfo",extraParams:{loginMethod:"phone",type:"phone"}},"KILOCODE_CONFIG",0,{apiBaseUrl:"https://api.kilo.ai",initiateUrl:"https://api.kilo.ai/api/device-auth/codes",pollUrlBase:"https://api.kilo.ai/api/device-auth/codes"},"KIMI_CODING_CONFIG",0,r,"KIRO_CONFIG",0,{ssoOidcEndpoint:"https://oidc.us-east-1.amazonaws.com",registerClientUrl:"https://oidc.us-east-1.amazonaws.com/client/register",deviceAuthUrl:"https://oidc.us-east-1.amazonaws.com/device_authorization",tokenUrl:"https://oidc.us-east-1.amazonaws.com/token",startUrl:"https://view.awsapps.com/start",clientName:"kiro-oauth-client",clientType:"public",scopes:["codewhisperer:completions","codewhisperer:analysis","codewhisperer:conversations"],grantTypes:["urn:ietf:params:oauth:grant-type:device_code","refresh_token"],issuerUrl:"https://identitycenter.amazonaws.com/ssoins-722374e8c3c8e6c6",socialAuthEndpoint:"https://prod.us-east-1.auth.desktop.kiro.dev",socialLoginUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/login",socialTokenUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/oauth/token",socialRefreshUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",authMethods:["builder-id","idc","google","github","import"]},"QODER_CONFIG",0,{apiBaseUrl:"https://api2.qoder.sh",deviceTokenUrl:"https://api2.qoder.sh/api/v1/deviceToken/poll",deviceRefreshUrl:"https://api2.qoder.sh/api/v1/deviceToken/refresh",refreshUrl:"https://api2.qoder.sh/api/v3/user/refresh_token",userInfoUrl:"https://api2.qoder.sh/api/v1/userinfo",statusUrl:"https://api2.qoder.sh/api/v3/user/status",loginUrl:"https://qoder.com/login"},"QWEN_CONFIG",0,{clientId:"f0304373b74a44d2b584a3fb70ca9e56",deviceCodeUrl:"https://chat.qwen.ai/api/v1/oauth2/device/code",tokenUrl:"https://chat.qwen.ai/api/v1/oauth2/token",scope:"openid profile email model.completion",codeChallengeMethod:"S256"}])},95053,e=>{"use strict";var t=e.i(85063);let r="https://prod.us-east-1.auth.desktop.kiro.dev";e.s(["KiroService",0,class{async registerClient(e="us-east-1"){let r=`https://oidc.${e}.amazonaws.com/client/register`,o=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientName:t.KIRO_CONFIG.clientName,clientType:t.KIRO_CONFIG.clientType,scopes:t.KIRO_CONFIG.scopes,grantTypes:t.KIRO_CONFIG.grantTypes,issuerUrl:t.KIRO_CONFIG.issuerUrl})});if(!o.ok){let e=await o.text();throw Error(`Failed to register client: ${e}`)}let s=await o.json();return{clientId:s.clientId,clientSecret:s.clientSecret,clientSecretExpiresAt:s.clientSecretExpiresAt}}async startDeviceAuthorization(e,t,r,o="us-east-1"){let s=`https://oidc.${o}.amazonaws.com/device_authorization`,i=await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientId:e,clientSecret:t,startUrl:r})});if(!i.ok){let e=await i.text();throw Error(`Failed to start device authorization: ${e}`)}let a=await i.json();return{deviceCode:a.deviceCode,userCode:a.userCode,verificationUri:a.verificationUri,verificationUriComplete:a.verificationUriComplete,expiresIn:a.expiresIn,interval:a.interval||5}}async pollDeviceToken(e,t,r,o="us-east-1"){let s=`https://oidc.${o}.amazonaws.com/token`,i=await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientId:e,clientSecret:t,deviceCode:r,grantType:"urn:ietf:params:oauth:grant-type:device_code"})}),a=await i.json();return!i.ok||a.error?{success:!1,error:a.error,errorDescription:a.error_description,pending:"authorization_pending"===a.error||"slow_down"===a.error}:{success:!0,tokens:{accessToken:a.accessToken,refreshToken:a.refreshToken,expiresIn:a.expiresIn,tokenType:a.tokenType}}}buildSocialLoginUrl(e,t,o){return`${r}/login?idp=${"google"===e?"Google":"Github"}&redirect_uri=${encodeURIComponent("kiro://kiro.kiroAgent/authenticate-success")}&code_challenge=${t}&code_challenge_method=S256&state=${o}&prompt=select_account`}async exchangeSocialCode(e,t){let o=await fetch(`${r}/oauth/token`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:e,code_verifier:t,redirect_uri:"kiro://kiro.kiroAgent/authenticate-success"})});if(!o.ok){let e=await o.text();throw Error(`Token exchange failed: ${e}`)}let s=await o.json();return{accessToken:s.accessToken,refreshToken:s.refreshToken,profileArn:s.profileArn,expiresIn:s.expiresIn||3600}}async refreshToken(e,t={}){let{authMethod:o,clientId:s,clientSecret:i,region:a}=t;if(s&&i){let t=`https://oidc.${a||"us-east-1"}.amazonaws.com/token`,r=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientId:s,clientSecret:i,refreshToken:e,grantType:"refresh_token"})});if(!r.ok){let e=await r.text();throw Error(`Token refresh failed: ${e}`)}let o=await r.json();return{accessToken:o.accessToken,refreshToken:o.refreshToken||e,expiresIn:o.expiresIn}}let n=await fetch(`${r}/refreshToken`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({refreshToken:e})});if(!n.ok){let e=await n.text();throw Error(`Token refresh failed: ${e}`)}let l=await n.json();return{accessToken:l.accessToken,refreshToken:l.refreshToken||e,profileArn:l.profileArn,expiresIn:l.expiresIn||3600}}async validateImportToken(e){if(!e.startsWith("aorAAAAAG"))throw Error("Invalid token format. Token should start with aorAAAAAG...");try{let t=await this.refreshToken(e);return{accessToken:t.accessToken,refreshToken:t.refreshToken||e,profileArn:t.profileArn,expiresIn:t.expiresIn,authMethod:"imported"}}catch(e){throw Error(`Token validation failed: ${e.message}`)}}async listAvailableModels(e,t){let r=await fetch("https://codewhisperer.us-east-1.amazonaws.com",{method:"POST",headers:{"Content-Type":"application/x-amz-json-1.0","x-amz-target":"AmazonCodeWhispererService.ListAvailableModels",Authorization:`Bearer ${e}`,Accept:"application/json"},body:JSON.stringify({origin:"AI_EDITOR",profileArn:t})});if(!r.ok){let e=await r.text();throw Error(`Failed to list models: ${e}`)}return((await r.json()).models||[]).map(e=>({id:e.modelId,name:e.modelName||e.modelId,description:e.description,rateMultiplier:e.rateMultiplier,rateUnit:e.rateUnit,maxInputTokens:e.tokenLimits?.maxInputTokens||0}))}extractEmailFromJWT(e){try{let t=e.split(".");if(3!==t.length)return null;let r=t[1];for(;r.length%4;)r+="=";let o=JSON.parse(atob(r.replace(/-/g,"+").replace(/_/g,"/")));return o.email||o.preferred_username||o.sub}catch{return null}}}])},36498,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0kaoh2i._.js"].map(t=>e.l(t))).then(()=>t(21297)))},66510,e=>{e.v(t=>Promise.all(["server/chunks/src_shared_constants_pricing_0oa_fz9.js"].map(t=>e.l(t))).then(()=>t(28628)))},69208,e=>{e.v(t=>Promise.all(["server/chunks/node_modules_jose_dist_webapi_0pojnhd._.js","server/chunks/node_modules_jose_dist_webapi_index_0ivl~ya.js"].map(t=>e.l(t))).then(()=>t(12867)))}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__0jlk7i0._.js.map