9router 0.4.39 → 0.4.45

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 (1728) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -0
  2. package/app/.next-cli-build/app-path-routes-manifest.json +158 -0
  3. package/app/.next-cli-build/build-manifest.json +20 -0
  4. package/app/.next-cli-build/prerender-manifest.json +599 -0
  5. package/app/.next-cli-build/required-server-files.json +371 -0
  6. package/app/.next-cli-build/routes-manifest.json +1050 -0
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -0
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -0
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -0
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +24 -0
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -0
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -0
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -0
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -0
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -0
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +2 -0
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -0
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -0
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +2 -0
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -0
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -0
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +2 -0
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -0
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -0
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +60 -0
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -0
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -0
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -0
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -0
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -0
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +5 -0
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -0
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -0
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -0
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -0
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -0
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +2 -0
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -0
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -0
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +2 -0
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -0
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -0
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +2 -0
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -0
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -0
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +4 -0
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -0
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -0
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +2 -0
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -0
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -0
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +2 -0
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -0
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -0
  55. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +5 -0
  56. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -0
  57. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -0
  58. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +2 -0
  59. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -0
  60. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -0
  61. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +2 -0
  62. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -0
  63. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -0
  64. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +2 -0
  65. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -0
  66. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -0
  67. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +2 -0
  68. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -0
  69. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -0
  70. package/app/.next-cli-build/server/app/_global-error/page.js +32 -0
  71. package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -0
  72. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -0
  73. package/app/.next-cli-build/server/app/_global-error.html +1 -0
  74. package/app/.next-cli-build/server/app/_global-error.rsc +14 -0
  75. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +14 -0
  76. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +5 -0
  77. package/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +5 -0
  78. package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +5 -0
  79. package/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +5 -0
  80. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -0
  81. package/app/.next-cli-build/server/app/_not-found/page.js +2 -0
  82. package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -0
  83. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -0
  84. package/app/.next-cli-build/server/app/_not-found.html +1 -0
  85. package/app/.next-cli-build/server/app/_not-found.rsc +20 -0
  86. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +20 -0
  87. package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +6 -0
  88. package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +8 -0
  89. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -0
  90. package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +5 -0
  91. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +4 -0
  92. package/app/.next-cli-build/server/app/api/auth/login/route.js +1 -0
  93. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -0
  94. package/app/.next-cli-build/server/app/api/auth/logout/route.js +1 -0
  95. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -0
  96. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -0
  97. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -0
  98. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -0
  99. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -0
  100. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -0
  101. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -0
  102. package/app/.next-cli-build/server/app/api/auth/status/route.js +1 -0
  103. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -0
  104. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +17 -0
  105. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -0
  106. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -0
  107. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -0
  108. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -0
  109. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -0
  110. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -0
  111. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -0
  112. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -0
  113. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -0
  114. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -0
  115. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -0
  116. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +2 -0
  117. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -0
  118. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -0
  119. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -0
  120. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -0
  121. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -0
  122. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +2 -0
  123. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -0
  124. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +9 -0
  125. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -0
  126. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -0
  127. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -0
  128. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +10 -0
  129. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -0
  130. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -0
  131. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -0
  132. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route_client-reference-manifest.js +1 -0
  133. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -0
  134. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -0
  135. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -0
  136. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -0
  137. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -0
  138. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -0
  139. package/app/.next-cli-build/server/app/api/cloud/auth/route.js +1 -0
  140. package/app/.next-cli-build/server/app/api/cloud/auth/route.js.nft.json +1 -0
  141. package/app/.next-cli-build/server/app/api/cloud/credentials/update/route.js +1 -0
  142. package/app/.next-cli-build/server/app/api/cloud/credentials/update/route.js.nft.json +1 -0
  143. package/app/.next-cli-build/server/app/api/cloud/model/resolve/route.js +1 -0
  144. package/app/.next-cli-build/server/app/api/cloud/model/resolve/route.js.nft.json +1 -0
  145. package/app/.next-cli-build/server/app/api/cloud/models/alias/route.js +1 -0
  146. package/app/.next-cli-build/server/app/api/cloud/models/alias/route.js.nft.json +1 -0
  147. package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -0
  148. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -0
  149. package/app/.next-cli-build/server/app/api/combos/route.js +1 -0
  150. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -0
  151. package/app/.next-cli-build/server/app/api/health/route.js +1 -0
  152. package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -0
  153. package/app/.next-cli-build/server/app/api/init/route.js +1 -0
  154. package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -0
  155. package/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -0
  156. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -0
  157. package/app/.next-cli-build/server/app/api/keys/route.js +1 -0
  158. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -0
  159. package/app/.next-cli-build/server/app/api/locale/route.js +1 -0
  160. package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -0
  161. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js +7 -0
  162. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -0
  163. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js +10 -0
  164. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -0
  165. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -0
  166. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -0
  167. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -0
  168. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -0
  169. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -0
  170. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -0
  171. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -0
  172. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -0
  173. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -0
  174. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -0
  175. package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -0
  176. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -0
  177. package/app/.next-cli-build/server/app/api/models/availability/route.js +1 -0
  178. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -0
  179. package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -0
  180. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -0
  181. package/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -0
  182. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -0
  183. package/app/.next-cli-build/server/app/api/models/route.js +1 -0
  184. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -0
  185. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -0
  186. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -0
  187. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +6 -0
  188. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -0
  189. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js +4 -0
  190. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -0
  191. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -0
  192. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -0
  193. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -0
  194. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -0
  195. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -0
  196. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -0
  197. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js +1 -0
  198. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -0
  199. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -0
  200. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -0
  201. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -0
  202. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -0
  203. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -0
  204. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -0
  205. package/app/.next-cli-build/server/app/api/pricing/route.js +1 -0
  206. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -0
  207. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -0
  208. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -0
  209. package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -0
  210. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -0
  211. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -0
  212. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -0
  213. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -0
  214. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -0
  215. package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -0
  216. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -0
  217. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -0
  218. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -0
  219. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -0
  220. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -0
  221. package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -0
  222. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -0
  223. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js +1 -0
  224. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -0
  225. package/app/.next-cli-build/server/app/api/providers/route.js +1 -0
  226. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -0
  227. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js +1 -0
  228. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -0
  229. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -0
  230. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -0
  231. package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -0
  232. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -0
  233. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -0
  234. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -0
  235. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -0
  236. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -0
  237. package/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -0
  238. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -0
  239. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +33 -0
  240. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -0
  241. package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -0
  242. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -0
  243. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -0
  244. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -0
  245. package/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -0
  246. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -0
  247. package/app/.next-cli-build/server/app/api/settings/route.js +1 -0
  248. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -0
  249. package/app/.next-cli-build/server/app/api/shutdown/route.js +1 -0
  250. package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -0
  251. package/app/.next-cli-build/server/app/api/tags/route.js +1 -0
  252. package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -0
  253. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -0
  254. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -0
  255. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +7 -0
  256. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -0
  257. package/app/.next-cli-build/server/app/api/translator/load/route.js +1 -0
  258. package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -0
  259. package/app/.next-cli-build/server/app/api/translator/save/route.js +1 -0
  260. package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -0
  261. package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -0
  262. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -0
  263. package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -0
  264. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -0
  265. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -0
  266. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -0
  267. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -0
  268. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -0
  269. package/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -0
  270. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -0
  271. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -0
  272. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -0
  273. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -0
  274. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -0
  275. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -0
  276. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -0
  277. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +5 -0
  278. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -0
  279. package/app/.next-cli-build/server/app/api/tunnel/tailscale-login/route.js +1 -0
  280. package/app/.next-cli-build/server/app/api/tunnel/tailscale-login/route.js.nft.json +1 -0
  281. package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/route.js +2 -0
  282. package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/route.js.nft.json +1 -0
  283. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -0
  284. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -0
  285. package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -0
  286. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -0
  287. package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -0
  288. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -0
  289. package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -0
  290. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -0
  291. package/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -0
  292. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -0
  293. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -0
  294. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -0
  295. package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -0
  296. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -0
  297. package/app/.next-cli-build/server/app/api/usage/stream/route.js +7 -0
  298. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -0
  299. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -0
  300. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -0
  301. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -0
  302. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -0
  303. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -0
  304. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -0
  305. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -0
  306. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -0
  307. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -0
  308. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -0
  309. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -0
  310. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -0
  311. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +4 -0
  312. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -0
  313. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -0
  314. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -0
  315. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -0
  316. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -0
  317. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -0
  318. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -0
  319. package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -0
  320. package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -0
  321. package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -0
  322. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -0
  323. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -0
  324. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -0
  325. package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -0
  326. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -0
  327. package/app/.next-cli-build/server/app/api/v1/route.js +1 -0
  328. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -0
  329. package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -0
  330. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -0
  331. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -0
  332. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -0
  333. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -0
  334. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -0
  335. package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -0
  336. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -0
  337. package/app/.next-cli-build/server/app/api/version/route.js +1 -0
  338. package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -0
  339. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -0
  340. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -0
  341. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -0
  342. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -0
  343. package/app/.next-cli-build/server/app/callback/page.js +2 -0
  344. package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -0
  345. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -0
  346. package/app/.next-cli-build/server/app/callback.html +1 -0
  347. package/app/.next-cli-build/server/app/callback.rsc +24 -0
  348. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +24 -0
  349. package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +6 -0
  350. package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +8 -0
  351. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +4 -0
  352. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +9 -0
  353. package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +5 -0
  354. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -0
  355. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +23 -0
  356. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +6 -0
  357. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +5 -0
  358. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +5 -0
  359. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +6 -0
  360. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +23 -0
  361. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +6 -0
  362. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +8 -0
  363. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +5 -0
  364. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -0
  365. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +24 -0
  366. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +6 -0
  367. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +5 -0
  368. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +5 -0
  369. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +6 -0
  370. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +24 -0
  371. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +6 -0
  372. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +8 -0
  373. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +5 -0
  374. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -0
  375. package/app/.next-cli-build/server/app/dashboard/combos.rsc +26 -0
  376. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +9 -0
  377. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +5 -0
  378. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +5 -0
  379. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +6 -0
  380. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +26 -0
  381. package/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +6 -0
  382. package/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +8 -0
  383. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +5 -0
  384. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -0
  385. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +24 -0
  386. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +6 -0
  387. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +5 -0
  388. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +5 -0
  389. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +6 -0
  390. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +24 -0
  391. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +6 -0
  392. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +8 -0
  393. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +5 -0
  394. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -0
  395. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +26 -0
  396. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +9 -0
  397. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +5 -0
  398. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +5 -0
  399. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +5 -0
  400. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +6 -0
  401. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +26 -0
  402. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +6 -0
  403. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +8 -0
  404. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +5 -0
  405. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -0
  406. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +23 -0
  407. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +6 -0
  408. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +5 -0
  409. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +5 -0
  410. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +6 -0
  411. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +23 -0
  412. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +6 -0
  413. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +8 -0
  414. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +5 -0
  415. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -0
  416. package/app/.next-cli-build/server/app/dashboard/profile.rsc +26 -0
  417. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +9 -0
  418. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +5 -0
  419. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +5 -0
  420. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +6 -0
  421. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +26 -0
  422. package/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +6 -0
  423. package/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +8 -0
  424. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +5 -0
  425. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -0
  426. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +26 -0
  427. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +9 -0
  428. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +5 -0
  429. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +5 -0
  430. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +5 -0
  431. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +6 -0
  432. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +26 -0
  433. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +6 -0
  434. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +8 -0
  435. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +5 -0
  436. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -0
  437. package/app/.next-cli-build/server/app/dashboard/providers.rsc +26 -0
  438. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +9 -0
  439. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +5 -0
  440. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +5 -0
  441. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +6 -0
  442. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +26 -0
  443. package/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +6 -0
  444. package/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +8 -0
  445. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +5 -0
  446. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -0
  447. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +26 -0
  448. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +9 -0
  449. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +5 -0
  450. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +5 -0
  451. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +6 -0
  452. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +26 -0
  453. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +6 -0
  454. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +8 -0
  455. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +5 -0
  456. package/app/.next-cli-build/server/app/dashboard/quota.html +2 -0
  457. package/app/.next-cli-build/server/app/dashboard/quota.rsc +24 -0
  458. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +7 -0
  459. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +5 -0
  460. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +5 -0
  461. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +6 -0
  462. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +24 -0
  463. package/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +6 -0
  464. package/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +8 -0
  465. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +5 -0
  466. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +2 -0
  467. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -0
  468. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -0
  469. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -0
  470. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +24 -0
  471. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +24 -0
  472. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +6 -0
  473. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +8 -0
  474. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +4 -0
  475. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +9 -0
  476. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +5 -0
  477. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +5 -0
  478. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +5 -0
  479. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -0
  480. package/app/.next-cli-build/server/app/dashboard/skills.rsc +26 -0
  481. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +9 -0
  482. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +5 -0
  483. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +5 -0
  484. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +6 -0
  485. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +26 -0
  486. package/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +6 -0
  487. package/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +8 -0
  488. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +5 -0
  489. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -0
  490. package/app/.next-cli-build/server/app/dashboard/translator.rsc +26 -0
  491. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +9 -0
  492. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +5 -0
  493. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +5 -0
  494. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +6 -0
  495. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +26 -0
  496. package/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +6 -0
  497. package/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +8 -0
  498. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +5 -0
  499. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -0
  500. package/app/.next-cli-build/server/app/dashboard/usage.rsc +26 -0
  501. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +9 -0
  502. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +5 -0
  503. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +5 -0
  504. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +6 -0
  505. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +26 -0
  506. package/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +6 -0
  507. package/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +8 -0
  508. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +5 -0
  509. package/app/.next-cli-build/server/app/dashboard.html +1 -0
  510. package/app/.next-cli-build/server/app/dashboard.rsc +24 -0
  511. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +6 -0
  512. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +5 -0
  513. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +6 -0
  514. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +24 -0
  515. package/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +6 -0
  516. package/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +8 -0
  517. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +5 -0
  518. package/app/.next-cli-build/server/app/favicon.ico/route.js +1 -0
  519. package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -0
  520. package/app/.next-cli-build/server/app/index.html +1 -0
  521. package/app/.next-cli-build/server/app/index.rsc +19 -0
  522. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +6 -0
  523. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +19 -0
  524. package/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +6 -0
  525. package/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +8 -0
  526. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +4 -0
  527. package/app/.next-cli-build/server/app/landing/page.js +2 -0
  528. package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -0
  529. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -0
  530. package/app/.next-cli-build/server/app/landing.html +1 -0
  531. package/app/.next-cli-build/server/app/landing.rsc +24 -0
  532. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +24 -0
  533. package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +6 -0
  534. package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +8 -0
  535. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +4 -0
  536. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +9 -0
  537. package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +5 -0
  538. package/app/.next-cli-build/server/app/login/page.js +2 -0
  539. package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -0
  540. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -0
  541. package/app/.next-cli-build/server/app/login.html +1 -0
  542. package/app/.next-cli-build/server/app/login.rsc +25 -0
  543. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +25 -0
  544. package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +6 -0
  545. package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +8 -0
  546. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +5 -0
  547. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +10 -0
  548. package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +5 -0
  549. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js +16 -0
  550. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -0
  551. package/app/.next-cli-build/server/app/page.js +2 -0
  552. package/app/.next-cli-build/server/app/page.js.nft.json +1 -0
  553. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -0
  554. package/app/.next-cli-build/server/app-paths-manifest.json +158 -0
  555. package/app/.next-cli-build/server/chunks/1574.js +3 -0
  556. package/app/.next-cli-build/server/chunks/1795.js +1 -0
  557. package/app/.next-cli-build/server/chunks/21.js +1 -0
  558. package/app/.next-cli-build/server/chunks/3774.js +4 -0
  559. package/app/.next-cli-build/server/chunks/4185.js +53 -0
  560. package/app/.next-cli-build/server/chunks/450.js +7 -0
  561. package/app/.next-cli-build/server/chunks/5221.js +1 -0
  562. package/app/.next-cli-build/server/chunks/6263.js +14 -0
  563. package/app/.next-cli-build/server/chunks/6283.js +1 -0
  564. package/app/.next-cli-build/server/chunks/6634.js +7 -0
  565. package/app/.next-cli-build/server/chunks/7686.js +13 -0
  566. package/app/.next-cli-build/server/chunks/8202.js +160 -0
  567. package/app/.next-cli-build/server/chunks/9060.js +9 -0
  568. package/app/.next-cli-build/server/chunks/9737.js +1 -0
  569. package/app/.next-cli-build/server/functions-config-manifest.json +19 -0
  570. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -0
  571. package/app/.next-cli-build/server/middleware.js +26 -0
  572. package/app/.next-cli-build/server/pages/404.html +1 -0
  573. package/app/.next-cli-build/server/pages/500.html +1 -0
  574. package/app/.next-cli-build/server/server-reference-manifest.js +1 -0
  575. package/app/.next-cli-build/server/server-reference-manifest.json +1 -0
  576. package/app/.next-cli-build/static/chunks/1273-62c3e49612c8936b.js +1 -0
  577. package/app/.next-cli-build/static/chunks/3771-b8a33e9a23450b8c.js +53 -0
  578. package/app/.next-cli-build/static/chunks/4156-725e65badf7c647a.js +7 -0
  579. package/app/.next-cli-build/static/chunks/505-fd7f9859fc2ef17c.js +1 -0
  580. package/app/.next-cli-build/static/chunks/8035-7160908984e36a32.js +3 -0
  581. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/page-cd0fd0414de9421f.js +1 -0
  582. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/page-cf6325b0b4557845.js +1 -0
  583. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-0479ee1b161bf657.js +1 -0
  584. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/page-ba20629be96f8c76.js +1 -0
  585. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-768dfa550531b27a.js +1 -0
  586. package/app/.next-cli-build/static/chunks/app/_global-error/page-36dc8d06b592b249.js +1 -0
  587. package/app/.next-cli-build/static/chunks/app/api/auth/login/route-36dc8d06b592b249.js +1 -0
  588. package/app/.next-cli-build/static/chunks/app/api/auth/logout/route-36dc8d06b592b249.js +1 -0
  589. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-36dc8d06b592b249.js +1 -0
  590. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-36dc8d06b592b249.js +1 -0
  591. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-36dc8d06b592b249.js +1 -0
  592. package/app/.next-cli-build/static/chunks/app/api/auth/status/route-36dc8d06b592b249.js +1 -0
  593. package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-36dc8d06b592b249.js +1 -0
  594. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-36dc8d06b592b249.js +1 -0
  595. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-36dc8d06b592b249.js +1 -0
  596. package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-36dc8d06b592b249.js +1 -0
  597. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-36dc8d06b592b249.js +1 -0
  598. package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-36dc8d06b592b249.js +1 -0
  599. package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-36dc8d06b592b249.js +1 -0
  600. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-36dc8d06b592b249.js +1 -0
  601. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-36dc8d06b592b249.js +1 -0
  602. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-36dc8d06b592b249.js +1 -0
  603. package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-36dc8d06b592b249.js +1 -0
  604. package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-36dc8d06b592b249.js +1 -0
  605. package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-36dc8d06b592b249.js +1 -0
  606. package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-36dc8d06b592b249.js +1 -0
  607. package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-36dc8d06b592b249.js +1 -0
  608. package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-36dc8d06b592b249.js +1 -0
  609. package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-36dc8d06b592b249.js +1 -0
  610. package/app/.next-cli-build/static/chunks/app/api/cloud/auth/route-36dc8d06b592b249.js +1 -0
  611. package/app/.next-cli-build/static/chunks/app/api/cloud/credentials/update/route-36dc8d06b592b249.js +1 -0
  612. package/app/.next-cli-build/static/chunks/app/api/cloud/model/resolve/route-36dc8d06b592b249.js +1 -0
  613. package/app/.next-cli-build/static/chunks/app/api/cloud/models/alias/route-36dc8d06b592b249.js +1 -0
  614. package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-36dc8d06b592b249.js +1 -0
  615. package/app/.next-cli-build/static/chunks/app/api/combos/route-36dc8d06b592b249.js +1 -0
  616. package/app/.next-cli-build/static/chunks/app/api/health/route-36dc8d06b592b249.js +1 -0
  617. package/app/.next-cli-build/static/chunks/app/api/init/route-36dc8d06b592b249.js +1 -0
  618. package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-36dc8d06b592b249.js +1 -0
  619. package/app/.next-cli-build/static/chunks/app/api/keys/route-36dc8d06b592b249.js +1 -0
  620. package/app/.next-cli-build/static/chunks/app/api/locale/route-36dc8d06b592b249.js +1 -0
  621. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-36dc8d06b592b249.js +1 -0
  622. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-36dc8d06b592b249.js +1 -0
  623. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-36dc8d06b592b249.js +1 -0
  624. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-36dc8d06b592b249.js +1 -0
  625. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-36dc8d06b592b249.js +1 -0
  626. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-36dc8d06b592b249.js +1 -0
  627. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-36dc8d06b592b249.js +1 -0
  628. package/app/.next-cli-build/static/chunks/app/api/models/alias/route-36dc8d06b592b249.js +1 -0
  629. package/app/.next-cli-build/static/chunks/app/api/models/availability/route-36dc8d06b592b249.js +1 -0
  630. package/app/.next-cli-build/static/chunks/app/api/models/custom/route-36dc8d06b592b249.js +1 -0
  631. package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-36dc8d06b592b249.js +1 -0
  632. package/app/.next-cli-build/static/chunks/app/api/models/route-36dc8d06b592b249.js +1 -0
  633. package/app/.next-cli-build/static/chunks/app/api/models/test/route-36dc8d06b592b249.js +1 -0
  634. package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-36dc8d06b592b249.js +1 -0
  635. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-36dc8d06b592b249.js +1 -0
  636. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-36dc8d06b592b249.js +1 -0
  637. package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-36dc8d06b592b249.js +1 -0
  638. package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-36dc8d06b592b249.js +1 -0
  639. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-36dc8d06b592b249.js +1 -0
  640. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-36dc8d06b592b249.js +1 -0
  641. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-36dc8d06b592b249.js +1 -0
  642. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-36dc8d06b592b249.js +1 -0
  643. package/app/.next-cli-build/static/chunks/app/api/pricing/route-36dc8d06b592b249.js +1 -0
  644. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-36dc8d06b592b249.js +1 -0
  645. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-36dc8d06b592b249.js +1 -0
  646. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-36dc8d06b592b249.js +1 -0
  647. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-36dc8d06b592b249.js +1 -0
  648. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-36dc8d06b592b249.js +1 -0
  649. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-36dc8d06b592b249.js +1 -0
  650. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-36dc8d06b592b249.js +1 -0
  651. package/app/.next-cli-build/static/chunks/app/api/providers/client/route-36dc8d06b592b249.js +1 -0
  652. package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-36dc8d06b592b249.js +1 -0
  653. package/app/.next-cli-build/static/chunks/app/api/providers/route-36dc8d06b592b249.js +1 -0
  654. package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-36dc8d06b592b249.js +1 -0
  655. package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-36dc8d06b592b249.js +1 -0
  656. package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-36dc8d06b592b249.js +1 -0
  657. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-36dc8d06b592b249.js +1 -0
  658. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-36dc8d06b592b249.js +1 -0
  659. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-36dc8d06b592b249.js +1 -0
  660. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-36dc8d06b592b249.js +1 -0
  661. package/app/.next-cli-build/static/chunks/app/api/settings/database/route-36dc8d06b592b249.js +1 -0
  662. package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-36dc8d06b592b249.js +1 -0
  663. package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-36dc8d06b592b249.js +1 -0
  664. package/app/.next-cli-build/static/chunks/app/api/settings/route-36dc8d06b592b249.js +1 -0
  665. package/app/.next-cli-build/static/chunks/app/api/shutdown/route-36dc8d06b592b249.js +1 -0
  666. package/app/.next-cli-build/static/chunks/app/api/tags/route-36dc8d06b592b249.js +1 -0
  667. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-36dc8d06b592b249.js +1 -0
  668. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-36dc8d06b592b249.js +1 -0
  669. package/app/.next-cli-build/static/chunks/app/api/translator/load/route-36dc8d06b592b249.js +1 -0
  670. package/app/.next-cli-build/static/chunks/app/api/translator/save/route-36dc8d06b592b249.js +1 -0
  671. package/app/.next-cli-build/static/chunks/app/api/translator/send/route-36dc8d06b592b249.js +1 -0
  672. package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-36dc8d06b592b249.js +1 -0
  673. package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-36dc8d06b592b249.js +1 -0
  674. package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-36dc8d06b592b249.js +1 -0
  675. package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-36dc8d06b592b249.js +1 -0
  676. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-36dc8d06b592b249.js +1 -0
  677. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-36dc8d06b592b249.js +1 -0
  678. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-36dc8d06b592b249.js +1 -0
  679. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-36dc8d06b592b249.js +1 -0
  680. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-login/route-36dc8d06b592b249.js +1 -0
  681. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-start-daemon/route-36dc8d06b592b249.js +1 -0
  682. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-36dc8d06b592b249.js +1 -0
  683. package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-36dc8d06b592b249.js +1 -0
  684. package/app/.next-cli-build/static/chunks/app/api/usage/history/route-36dc8d06b592b249.js +1 -0
  685. package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-36dc8d06b592b249.js +1 -0
  686. package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-36dc8d06b592b249.js +1 -0
  687. package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-36dc8d06b592b249.js +1 -0
  688. package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-36dc8d06b592b249.js +1 -0
  689. package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-36dc8d06b592b249.js +1 -0
  690. package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-36dc8d06b592b249.js +1 -0
  691. package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-36dc8d06b592b249.js +1 -0
  692. package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-36dc8d06b592b249.js +1 -0
  693. package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-36dc8d06b592b249.js +1 -0
  694. package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-36dc8d06b592b249.js +1 -0
  695. package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-36dc8d06b592b249.js +1 -0
  696. package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-36dc8d06b592b249.js +1 -0
  697. package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-36dc8d06b592b249.js +1 -0
  698. package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-36dc8d06b592b249.js +1 -0
  699. package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-36dc8d06b592b249.js +1 -0
  700. package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-36dc8d06b592b249.js +1 -0
  701. package/app/.next-cli-build/static/chunks/app/api/v1/models/route-36dc8d06b592b249.js +1 -0
  702. package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-36dc8d06b592b249.js +1 -0
  703. package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-36dc8d06b592b249.js +1 -0
  704. package/app/.next-cli-build/static/chunks/app/api/v1/route-36dc8d06b592b249.js +1 -0
  705. package/app/.next-cli-build/static/chunks/app/api/v1/search/route-36dc8d06b592b249.js +1 -0
  706. package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-36dc8d06b592b249.js +1 -0
  707. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-36dc8d06b592b249.js +1 -0
  708. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-36dc8d06b592b249.js +1 -0
  709. package/app/.next-cli-build/static/chunks/app/api/version/route-36dc8d06b592b249.js +1 -0
  710. package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-36dc8d06b592b249.js +1 -0
  711. package/app/.next-cli-build/static/chunks/app/api/version/update/route-36dc8d06b592b249.js +1 -0
  712. package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-36dc8d06b592b249.js +1 -0
  713. package/app/.next-cli-build/static/chunks/app/page-36dc8d06b592b249.js +1 -0
  714. package/app/.next-cli-build/static/chunks/main-dc8d0a9e54eb27e6.js +5 -0
  715. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-36dc8d06b592b249.js +1 -0
  716. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-36dc8d06b592b249.js +1 -0
  717. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-36dc8d06b592b249.js +1 -0
  718. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-36dc8d06b592b249.js +1 -0
  719. package/app/.next-cli-build/static/css/a898a2d21a892d75.css +1 -0
  720. package/app/.next-cli-build/static/uHhVw6dal8k6pSmnEqnTj/_buildManifest.js +1 -0
  721. package/app/cli/.build-home/.9router/db/backups/upgrade-0.4.43-to-0.4.44-0.4.44-20260515-120531/data.sqlite +0 -0
  722. package/app/cli/.build-home/.9router/db/backups/upgrade-0.4.44-to-0.4.45-0.4.45-20260515-124856/data.sqlite +0 -0
  723. package/app/cli/.build-home/.9router/db/data.sqlite +0 -0
  724. package/app/cli/.build-home/.9router/jwt-secret +1 -0
  725. package/app/cli/.build-home/Library/Preferences/nextjs-nodejs/config.json +7 -0
  726. package/app/package.json +9 -5
  727. package/app/public/i18n/literals/ar.json +2 -6
  728. package/app/public/i18n/literals/bn.json +2 -6
  729. package/app/public/i18n/literals/cs.json +2 -6
  730. package/app/public/i18n/literals/da.json +2 -6
  731. package/app/public/i18n/literals/de.json +2 -6
  732. package/app/public/i18n/literals/el.json +2 -6
  733. package/app/public/i18n/literals/es.json +2 -6
  734. package/app/public/i18n/literals/fi.json +2 -6
  735. package/app/public/i18n/literals/fr.json +2 -6
  736. package/app/public/i18n/literals/he.json +2 -6
  737. package/app/public/i18n/literals/hi.json +2 -6
  738. package/app/public/i18n/literals/hu.json +2 -6
  739. package/app/public/i18n/literals/id.json +2 -6
  740. package/app/public/i18n/literals/it.json +2 -6
  741. package/app/public/i18n/literals/ja.json +2 -6
  742. package/app/public/i18n/literals/ko.json +2 -6
  743. package/app/public/i18n/literals/nl.json +2 -6
  744. package/app/public/i18n/literals/no.json +2 -6
  745. package/app/public/i18n/literals/pl.json +2 -6
  746. package/app/public/i18n/literals/pt-BR.json +2 -6
  747. package/app/public/i18n/literals/pt-PT.json +2 -6
  748. package/app/public/i18n/literals/ro.json +3 -7
  749. package/app/public/i18n/literals/ru.json +2 -6
  750. package/app/public/i18n/literals/sv.json +2 -6
  751. package/app/public/i18n/literals/th.json +2 -6
  752. package/app/public/i18n/literals/tl.json +2 -6
  753. package/app/public/i18n/literals/tr.json +2 -6
  754. package/app/public/i18n/literals/uk.json +2 -6
  755. package/app/public/i18n/literals/ur.json +2 -6
  756. package/app/public/i18n/literals/vi.json +2 -6
  757. package/app/public/i18n/literals/zh-CN.json +3 -29
  758. package/app/public/i18n/literals/zh-TW.json +2 -6
  759. package/app/public/providers/amp.png +0 -0
  760. package/app/public/providers/deepseek-tui.png +0 -0
  761. package/app/public/providers/jcode.png +0 -0
  762. package/app/public/providers/xiaomi-tokenplan.png +0 -0
  763. package/app/server.js +1 -1
  764. package/cli.js +5 -0
  765. package/package.json +2 -1
  766. package/src/cli/terminalUI.js +35 -23
  767. package/src/cli/tray/autostart.js +158 -173
  768. package/src/cli/tray/tray.js +13 -4
  769. package/src/cli/utils/input.js +98 -89
  770. package/app/.next/BUILD_ID +0 -1
  771. package/app/.next/app-path-routes-manifest.json +0 -156
  772. package/app/.next/build-manifest.json +0 -20
  773. package/app/.next/prerender-manifest.json +0 -599
  774. package/app/.next/required-server-files.json +0 -371
  775. package/app/.next/routes-manifest.json +0 -1036
  776. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js +0 -2
  777. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +0 -1
  778. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +0 -1
  779. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +0 -2
  780. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +0 -1
  781. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +0 -1
  782. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +0 -2
  783. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +0 -1
  784. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +0 -1
  785. package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js +0 -2
  786. package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +0 -1
  787. package/app/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +0 -1
  788. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +0 -2
  789. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +0 -1
  790. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +0 -1
  791. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +0 -60
  792. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +0 -1
  793. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +0 -1
  794. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +0 -2
  795. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +0 -1
  796. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +0 -1
  797. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +0 -5
  798. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +0 -1
  799. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +0 -1
  800. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js +0 -2
  801. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +0 -1
  802. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +0 -1
  803. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js +0 -2
  804. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +0 -1
  805. package/app/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +0 -1
  806. package/app/.next/server/app/(dashboard)/dashboard/page.js +0 -2
  807. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +0 -1
  808. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +0 -1
  809. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +0 -2
  810. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +0 -1
  811. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +0 -1
  812. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +0 -4
  813. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +0 -1
  814. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +0 -1
  815. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +0 -2
  816. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +0 -1
  817. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +0 -1
  818. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +0 -2
  819. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +0 -1
  820. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +0 -1
  821. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js +0 -5
  822. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +0 -1
  823. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +0 -1
  824. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js +0 -2
  825. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js.nft.json +0 -1
  826. package/app/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +0 -1
  827. package/app/.next/server/app/(dashboard)/dashboard/skills/page.js +0 -2
  828. package/app/.next/server/app/(dashboard)/dashboard/skills/page.js.nft.json +0 -1
  829. package/app/.next/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +0 -1
  830. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +0 -2
  831. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +0 -1
  832. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +0 -1
  833. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +0 -2
  834. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +0 -1
  835. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +0 -1
  836. package/app/.next/server/app/_global-error/page.js +0 -32
  837. package/app/.next/server/app/_global-error/page.js.nft.json +0 -1
  838. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +0 -1
  839. package/app/.next/server/app/_global-error.html +0 -1
  840. package/app/.next/server/app/_global-error.rsc +0 -14
  841. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +0 -14
  842. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +0 -5
  843. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +0 -5
  844. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +0 -5
  845. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +0 -5
  846. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +0 -1
  847. package/app/.next/server/app/_not-found/page.js +0 -2
  848. package/app/.next/server/app/_not-found/page.js.nft.json +0 -1
  849. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +0 -1
  850. package/app/.next/server/app/_not-found.html +0 -1
  851. package/app/.next/server/app/_not-found.rsc +0 -20
  852. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +0 -20
  853. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +0 -6
  854. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +0 -8
  855. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +0 -5
  856. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +0 -5
  857. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +0 -4
  858. package/app/.next/server/app/api/auth/login/route.js +0 -1
  859. package/app/.next/server/app/api/auth/login/route.js.nft.json +0 -1
  860. package/app/.next/server/app/api/auth/logout/route.js +0 -1
  861. package/app/.next/server/app/api/auth/logout/route.js.nft.json +0 -1
  862. package/app/.next/server/app/api/auth/oidc/callback/route.js +0 -1
  863. package/app/.next/server/app/api/auth/oidc/callback/route.js.nft.json +0 -1
  864. package/app/.next/server/app/api/auth/oidc/start/route.js +0 -1
  865. package/app/.next/server/app/api/auth/oidc/start/route.js.nft.json +0 -1
  866. package/app/.next/server/app/api/auth/oidc/test/route.js +0 -1
  867. package/app/.next/server/app/api/auth/oidc/test/route.js.nft.json +0 -1
  868. package/app/.next/server/app/api/auth/status/route.js +0 -1
  869. package/app/.next/server/app/api/auth/status/route.js.nft.json +0 -1
  870. package/app/.next/server/app/api/cli-tools/all-statuses/route.js +0 -16
  871. package/app/.next/server/app/api/cli-tools/all-statuses/route.js.nft.json +0 -1
  872. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +0 -2
  873. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +0 -1
  874. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +0 -1
  875. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +0 -1
  876. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +0 -2
  877. package/app/.next/server/app/api/cli-tools/claude-settings/route.js.nft.json +0 -1
  878. package/app/.next/server/app/api/cli-tools/cline-settings/route.js +0 -2
  879. package/app/.next/server/app/api/cli-tools/cline-settings/route.js.nft.json +0 -1
  880. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +0 -1
  881. package/app/.next/server/app/api/cli-tools/codex-settings/route.js.nft.json +0 -1
  882. package/app/.next/server/app/api/cli-tools/copilot-settings/route.js +0 -2
  883. package/app/.next/server/app/api/cli-tools/copilot-settings/route.js.nft.json +0 -1
  884. package/app/.next/server/app/api/cli-tools/cowork-mcp-registry/route.js +0 -2
  885. package/app/.next/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +0 -1
  886. package/app/.next/server/app/api/cli-tools/cowork-mcp-tools/route.js +0 -2
  887. package/app/.next/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +0 -1
  888. package/app/.next/server/app/api/cli-tools/cowork-settings/route.js +0 -2
  889. package/app/.next/server/app/api/cli-tools/cowork-settings/route.js.nft.json +0 -1
  890. package/app/.next/server/app/api/cli-tools/deepseek-tui-settings/route.js +0 -9
  891. package/app/.next/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +0 -1
  892. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +0 -2
  893. package/app/.next/server/app/api/cli-tools/droid-settings/route.js.nft.json +0 -1
  894. package/app/.next/server/app/api/cli-tools/hermes-settings/route.js +0 -10
  895. package/app/.next/server/app/api/cli-tools/hermes-settings/route.js.nft.json +0 -1
  896. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +0 -2
  897. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js.nft.json +0 -1
  898. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +0 -2
  899. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +0 -1
  900. package/app/.next/server/app/api/cli-tools/opencode-settings/route.js +0 -2
  901. package/app/.next/server/app/api/cli-tools/opencode-settings/route.js.nft.json +0 -1
  902. package/app/.next/server/app/api/cloud/auth/route.js +0 -1
  903. package/app/.next/server/app/api/cloud/auth/route.js.nft.json +0 -1
  904. package/app/.next/server/app/api/cloud/credentials/update/route.js +0 -1
  905. package/app/.next/server/app/api/cloud/credentials/update/route.js.nft.json +0 -1
  906. package/app/.next/server/app/api/cloud/model/resolve/route.js +0 -1
  907. package/app/.next/server/app/api/cloud/model/resolve/route.js.nft.json +0 -1
  908. package/app/.next/server/app/api/cloud/models/alias/route.js +0 -1
  909. package/app/.next/server/app/api/cloud/models/alias/route.js.nft.json +0 -1
  910. package/app/.next/server/app/api/combos/[id]/route.js +0 -1
  911. package/app/.next/server/app/api/combos/[id]/route.js.nft.json +0 -1
  912. package/app/.next/server/app/api/combos/route.js +0 -1
  913. package/app/.next/server/app/api/combos/route.js.nft.json +0 -1
  914. package/app/.next/server/app/api/health/route.js +0 -1
  915. package/app/.next/server/app/api/health/route.js.nft.json +0 -1
  916. package/app/.next/server/app/api/init/route.js +0 -1
  917. package/app/.next/server/app/api/init/route.js.nft.json +0 -1
  918. package/app/.next/server/app/api/keys/[id]/route.js +0 -1
  919. package/app/.next/server/app/api/keys/[id]/route.js.nft.json +0 -1
  920. package/app/.next/server/app/api/keys/route.js +0 -1
  921. package/app/.next/server/app/api/keys/route.js.nft.json +0 -1
  922. package/app/.next/server/app/api/locale/route.js +0 -1
  923. package/app/.next/server/app/api/locale/route.js.nft.json +0 -1
  924. package/app/.next/server/app/api/mcp/[plugin]/message/route.js +0 -7
  925. package/app/.next/server/app/api/mcp/[plugin]/message/route.js.nft.json +0 -1
  926. package/app/.next/server/app/api/mcp/[plugin]/sse/route.js +0 -10
  927. package/app/.next/server/app/api/mcp/[plugin]/sse/route.js.nft.json +0 -1
  928. package/app/.next/server/app/api/media-providers/tts/deepgram/voices/route.js +0 -1
  929. package/app/.next/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +0 -1
  930. package/app/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js +0 -1
  931. package/app/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +0 -1
  932. package/app/.next/server/app/api/media-providers/tts/inworld/voices/route.js +0 -1
  933. package/app/.next/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +0 -1
  934. package/app/.next/server/app/api/media-providers/tts/minimax/voices/route.js +0 -1
  935. package/app/.next/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +0 -1
  936. package/app/.next/server/app/api/media-providers/tts/voices/route.js +0 -1
  937. package/app/.next/server/app/api/media-providers/tts/voices/route.js.nft.json +0 -1
  938. package/app/.next/server/app/api/models/alias/route.js +0 -1
  939. package/app/.next/server/app/api/models/alias/route.js.nft.json +0 -1
  940. package/app/.next/server/app/api/models/availability/route.js +0 -1
  941. package/app/.next/server/app/api/models/availability/route.js.nft.json +0 -1
  942. package/app/.next/server/app/api/models/custom/route.js +0 -1
  943. package/app/.next/server/app/api/models/custom/route.js.nft.json +0 -1
  944. package/app/.next/server/app/api/models/disabled/route.js +0 -1
  945. package/app/.next/server/app/api/models/disabled/route.js.nft.json +0 -1
  946. package/app/.next/server/app/api/models/route.js +0 -1
  947. package/app/.next/server/app/api/models/route.js.nft.json +0 -1
  948. package/app/.next/server/app/api/models/test/route.js +0 -1
  949. package/app/.next/server/app/api/models/test/route.js.nft.json +0 -1
  950. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +0 -6
  951. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +0 -1
  952. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js +0 -4
  953. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js.nft.json +0 -1
  954. package/app/.next/server/app/api/oauth/cursor/import/route.js +0 -1
  955. package/app/.next/server/app/api/oauth/cursor/import/route.js.nft.json +0 -1
  956. package/app/.next/server/app/api/oauth/gitlab/pat/route.js +0 -1
  957. package/app/.next/server/app/api/oauth/gitlab/pat/route.js.nft.json +0 -1
  958. package/app/.next/server/app/api/oauth/iflow/cookie/route.js +0 -1
  959. package/app/.next/server/app/api/oauth/iflow/cookie/route.js.nft.json +0 -1
  960. package/app/.next/server/app/api/oauth/kiro/auto-import/route.js +0 -1
  961. package/app/.next/server/app/api/oauth/kiro/auto-import/route.js.nft.json +0 -1
  962. package/app/.next/server/app/api/oauth/kiro/import/route.js +0 -1
  963. package/app/.next/server/app/api/oauth/kiro/import/route.js.nft.json +0 -1
  964. package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js +0 -1
  965. package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +0 -1
  966. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +0 -1
  967. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +0 -1
  968. package/app/.next/server/app/api/pricing/route.js +0 -1
  969. package/app/.next/server/app/api/pricing/route.js.nft.json +0 -1
  970. package/app/.next/server/app/api/provider-nodes/[id]/route.js +0 -1
  971. package/app/.next/server/app/api/provider-nodes/[id]/route.js.nft.json +0 -1
  972. package/app/.next/server/app/api/provider-nodes/route.js +0 -1
  973. package/app/.next/server/app/api/provider-nodes/route.js.nft.json +0 -1
  974. package/app/.next/server/app/api/provider-nodes/validate/route.js +0 -1
  975. package/app/.next/server/app/api/provider-nodes/validate/route.js.nft.json +0 -1
  976. package/app/.next/server/app/api/providers/[id]/models/route.js +0 -1
  977. package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +0 -1
  978. package/app/.next/server/app/api/providers/[id]/route.js +0 -1
  979. package/app/.next/server/app/api/providers/[id]/route.js.nft.json +0 -1
  980. package/app/.next/server/app/api/providers/[id]/test/route.js +0 -1
  981. package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +0 -1
  982. package/app/.next/server/app/api/providers/[id]/test-models/route.js +0 -1
  983. package/app/.next/server/app/api/providers/[id]/test-models/route.js.nft.json +0 -1
  984. package/app/.next/server/app/api/providers/client/route.js +0 -1
  985. package/app/.next/server/app/api/providers/client/route.js.nft.json +0 -1
  986. package/app/.next/server/app/api/providers/kilo/free-models/route.js +0 -1
  987. package/app/.next/server/app/api/providers/kilo/free-models/route.js.nft.json +0 -1
  988. package/app/.next/server/app/api/providers/route.js +0 -1
  989. package/app/.next/server/app/api/providers/route.js.nft.json +0 -1
  990. package/app/.next/server/app/api/providers/suggested-models/route.js +0 -1
  991. package/app/.next/server/app/api/providers/suggested-models/route.js.nft.json +0 -1
  992. package/app/.next/server/app/api/providers/test-batch/route.js +0 -1
  993. package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +0 -1
  994. package/app/.next/server/app/api/providers/validate/route.js +0 -1
  995. package/app/.next/server/app/api/providers/validate/route.js.nft.json +0 -1
  996. package/app/.next/server/app/api/proxy-pools/[id]/route.js +0 -1
  997. package/app/.next/server/app/api/proxy-pools/[id]/route.js.nft.json +0 -1
  998. package/app/.next/server/app/api/proxy-pools/[id]/test/route.js +0 -1
  999. package/app/.next/server/app/api/proxy-pools/[id]/test/route.js.nft.json +0 -1
  1000. package/app/.next/server/app/api/proxy-pools/route.js +0 -1
  1001. package/app/.next/server/app/api/proxy-pools/route.js.nft.json +0 -1
  1002. package/app/.next/server/app/api/proxy-pools/vercel-deploy/route.js +0 -33
  1003. package/app/.next/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +0 -1
  1004. package/app/.next/server/app/api/settings/database/route.js +0 -1
  1005. package/app/.next/server/app/api/settings/database/route.js.nft.json +0 -1
  1006. package/app/.next/server/app/api/settings/proxy-test/route.js +0 -1
  1007. package/app/.next/server/app/api/settings/proxy-test/route.js.nft.json +0 -1
  1008. package/app/.next/server/app/api/settings/require-login/route.js +0 -1
  1009. package/app/.next/server/app/api/settings/require-login/route.js.nft.json +0 -1
  1010. package/app/.next/server/app/api/settings/route.js +0 -1
  1011. package/app/.next/server/app/api/settings/route.js.nft.json +0 -1
  1012. package/app/.next/server/app/api/shutdown/route.js +0 -1
  1013. package/app/.next/server/app/api/shutdown/route.js.nft.json +0 -1
  1014. package/app/.next/server/app/api/tags/route.js +0 -1
  1015. package/app/.next/server/app/api/tags/route.js.nft.json +0 -1
  1016. package/app/.next/server/app/api/translator/console-logs/route.js +0 -1
  1017. package/app/.next/server/app/api/translator/console-logs/route.js.nft.json +0 -1
  1018. package/app/.next/server/app/api/translator/console-logs/stream/route.js +0 -7
  1019. package/app/.next/server/app/api/translator/console-logs/stream/route.js.nft.json +0 -1
  1020. package/app/.next/server/app/api/translator/load/route.js +0 -1
  1021. package/app/.next/server/app/api/translator/load/route.js.nft.json +0 -1
  1022. package/app/.next/server/app/api/translator/save/route.js +0 -1
  1023. package/app/.next/server/app/api/translator/save/route.js.nft.json +0 -1
  1024. package/app/.next/server/app/api/translator/send/route.js +0 -1
  1025. package/app/.next/server/app/api/translator/send/route.js.nft.json +0 -1
  1026. package/app/.next/server/app/api/translator/translate/route.js +0 -1
  1027. package/app/.next/server/app/api/translator/translate/route.js.nft.json +0 -1
  1028. package/app/.next/server/app/api/tunnel/disable/route.js +0 -1
  1029. package/app/.next/server/app/api/tunnel/disable/route.js.nft.json +0 -1
  1030. package/app/.next/server/app/api/tunnel/enable/route.js +0 -1
  1031. package/app/.next/server/app/api/tunnel/enable/route.js.nft.json +0 -1
  1032. package/app/.next/server/app/api/tunnel/status/route.js +0 -1
  1033. package/app/.next/server/app/api/tunnel/status/route.js.nft.json +0 -1
  1034. package/app/.next/server/app/api/tunnel/tailscale-check/route.js +0 -1
  1035. package/app/.next/server/app/api/tunnel/tailscale-check/route.js.nft.json +0 -1
  1036. package/app/.next/server/app/api/tunnel/tailscale-disable/route.js +0 -1
  1037. package/app/.next/server/app/api/tunnel/tailscale-disable/route.js.nft.json +0 -1
  1038. package/app/.next/server/app/api/tunnel/tailscale-enable/route.js +0 -1
  1039. package/app/.next/server/app/api/tunnel/tailscale-enable/route.js.nft.json +0 -1
  1040. package/app/.next/server/app/api/tunnel/tailscale-install/route.js +0 -5
  1041. package/app/.next/server/app/api/tunnel/tailscale-install/route.js.nft.json +0 -1
  1042. package/app/.next/server/app/api/tunnel/tailscale-login/route.js +0 -1
  1043. package/app/.next/server/app/api/tunnel/tailscale-login/route.js.nft.json +0 -1
  1044. package/app/.next/server/app/api/tunnel/tailscale-start-daemon/route.js +0 -2
  1045. package/app/.next/server/app/api/tunnel/tailscale-start-daemon/route.js.nft.json +0 -1
  1046. package/app/.next/server/app/api/usage/[connectionId]/route.js +0 -1
  1047. package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +0 -1
  1048. package/app/.next/server/app/api/usage/chart/route.js +0 -1
  1049. package/app/.next/server/app/api/usage/chart/route.js.nft.json +0 -1
  1050. package/app/.next/server/app/api/usage/history/route.js +0 -1
  1051. package/app/.next/server/app/api/usage/history/route.js.nft.json +0 -1
  1052. package/app/.next/server/app/api/usage/providers/route.js +0 -1
  1053. package/app/.next/server/app/api/usage/providers/route.js.nft.json +0 -1
  1054. package/app/.next/server/app/api/usage/request-details/route.js +0 -1
  1055. package/app/.next/server/app/api/usage/request-details/route.js.nft.json +0 -1
  1056. package/app/.next/server/app/api/usage/request-logs/route.js +0 -1
  1057. package/app/.next/server/app/api/usage/request-logs/route.js.nft.json +0 -1
  1058. package/app/.next/server/app/api/usage/stats/route.js +0 -1
  1059. package/app/.next/server/app/api/usage/stats/route.js.nft.json +0 -1
  1060. package/app/.next/server/app/api/usage/stream/route.js +0 -7
  1061. package/app/.next/server/app/api/usage/stream/route.js.nft.json +0 -1
  1062. package/app/.next/server/app/api/v1/api/chat/route.js +0 -1
  1063. package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +0 -1
  1064. package/app/.next/server/app/api/v1/audio/speech/route.js +0 -1
  1065. package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +0 -1
  1066. package/app/.next/server/app/api/v1/audio/transcriptions/route.js +0 -1
  1067. package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +0 -1
  1068. package/app/.next/server/app/api/v1/audio/voices/route.js +0 -1
  1069. package/app/.next/server/app/api/v1/audio/voices/route.js.nft.json +0 -1
  1070. package/app/.next/server/app/api/v1/chat/completions/route.js +0 -1
  1071. package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +0 -1
  1072. package/app/.next/server/app/api/v1/embeddings/route.js +0 -1
  1073. package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +0 -1
  1074. package/app/.next/server/app/api/v1/images/generations/route.js +0 -4
  1075. package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +0 -1
  1076. package/app/.next/server/app/api/v1/messages/count_tokens/route.js +0 -1
  1077. package/app/.next/server/app/api/v1/messages/count_tokens/route.js.nft.json +0 -1
  1078. package/app/.next/server/app/api/v1/messages/route.js +0 -1
  1079. package/app/.next/server/app/api/v1/messages/route.js.nft.json +0 -1
  1080. package/app/.next/server/app/api/v1/models/[kind]/route.js +0 -1
  1081. package/app/.next/server/app/api/v1/models/[kind]/route.js.nft.json +0 -1
  1082. package/app/.next/server/app/api/v1/models/info/route.js +0 -1
  1083. package/app/.next/server/app/api/v1/models/info/route.js.nft.json +0 -1
  1084. package/app/.next/server/app/api/v1/models/route.js +0 -1
  1085. package/app/.next/server/app/api/v1/models/route.js.nft.json +0 -1
  1086. package/app/.next/server/app/api/v1/responses/compact/route.js +0 -1
  1087. package/app/.next/server/app/api/v1/responses/compact/route.js.nft.json +0 -1
  1088. package/app/.next/server/app/api/v1/responses/route.js +0 -1
  1089. package/app/.next/server/app/api/v1/responses/route.js.nft.json +0 -1
  1090. package/app/.next/server/app/api/v1/route.js +0 -1
  1091. package/app/.next/server/app/api/v1/route.js.nft.json +0 -1
  1092. package/app/.next/server/app/api/v1/search/route.js +0 -1
  1093. package/app/.next/server/app/api/v1/search/route.js.nft.json +0 -1
  1094. package/app/.next/server/app/api/v1/web/fetch/route.js +0 -1
  1095. package/app/.next/server/app/api/v1/web/fetch/route.js.nft.json +0 -1
  1096. package/app/.next/server/app/api/v1beta/models/[...path]/route.js +0 -1
  1097. package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +0 -1
  1098. package/app/.next/server/app/api/v1beta/models/route.js +0 -1
  1099. package/app/.next/server/app/api/v1beta/models/route.js.nft.json +0 -1
  1100. package/app/.next/server/app/api/version/route.js +0 -1
  1101. package/app/.next/server/app/api/version/route.js.nft.json +0 -1
  1102. package/app/.next/server/app/api/version/shutdown/route.js +0 -1
  1103. package/app/.next/server/app/api/version/shutdown/route.js.nft.json +0 -1
  1104. package/app/.next/server/app/api/version/update/route.js +0 -1
  1105. package/app/.next/server/app/api/version/update/route.js.nft.json +0 -1
  1106. package/app/.next/server/app/callback/page.js +0 -2
  1107. package/app/.next/server/app/callback/page.js.nft.json +0 -1
  1108. package/app/.next/server/app/callback/page_client-reference-manifest.js +0 -1
  1109. package/app/.next/server/app/callback.html +0 -1
  1110. package/app/.next/server/app/callback.rsc +0 -24
  1111. package/app/.next/server/app/callback.segments/_full.segment.rsc +0 -24
  1112. package/app/.next/server/app/callback.segments/_head.segment.rsc +0 -6
  1113. package/app/.next/server/app/callback.segments/_index.segment.rsc +0 -8
  1114. package/app/.next/server/app/callback.segments/_tree.segment.rsc +0 -4
  1115. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +0 -9
  1116. package/app/.next/server/app/callback.segments/callback.segment.rsc +0 -5
  1117. package/app/.next/server/app/dashboard/basic-chat.html +0 -1
  1118. package/app/.next/server/app/dashboard/basic-chat.rsc +0 -23
  1119. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +0 -6
  1120. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +0 -5
  1121. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -5
  1122. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -6
  1123. package/app/.next/server/app/dashboard/basic-chat.segments/_full.segment.rsc +0 -23
  1124. package/app/.next/server/app/dashboard/basic-chat.segments/_head.segment.rsc +0 -6
  1125. package/app/.next/server/app/dashboard/basic-chat.segments/_index.segment.rsc +0 -8
  1126. package/app/.next/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +0 -5
  1127. package/app/.next/server/app/dashboard/cli-tools.html +0 -1
  1128. package/app/.next/server/app/dashboard/cli-tools.rsc +0 -24
  1129. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +0 -6
  1130. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +0 -5
  1131. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -5
  1132. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -6
  1133. package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +0 -24
  1134. package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +0 -6
  1135. package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +0 -8
  1136. package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +0 -5
  1137. package/app/.next/server/app/dashboard/combos.html +0 -1
  1138. package/app/.next/server/app/dashboard/combos.rsc +0 -26
  1139. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +0 -9
  1140. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +0 -5
  1141. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -5
  1142. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -6
  1143. package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +0 -26
  1144. package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +0 -6
  1145. package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +0 -8
  1146. package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +0 -5
  1147. package/app/.next/server/app/dashboard/endpoint.html +0 -1
  1148. package/app/.next/server/app/dashboard/endpoint.rsc +0 -24
  1149. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +0 -6
  1150. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +0 -5
  1151. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -5
  1152. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -6
  1153. package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +0 -24
  1154. package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +0 -6
  1155. package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +0 -8
  1156. package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +0 -5
  1157. package/app/.next/server/app/dashboard/media-providers/web.html +0 -1
  1158. package/app/.next/server/app/dashboard/media-providers/web.rsc +0 -26
  1159. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +0 -9
  1160. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +0 -5
  1161. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +0 -5
  1162. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -5
  1163. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -6
  1164. package/app/.next/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +0 -26
  1165. package/app/.next/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +0 -6
  1166. package/app/.next/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +0 -8
  1167. package/app/.next/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +0 -5
  1168. package/app/.next/server/app/dashboard/mitm.html +0 -1
  1169. package/app/.next/server/app/dashboard/mitm.rsc +0 -23
  1170. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +0 -6
  1171. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +0 -5
  1172. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -5
  1173. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -6
  1174. package/app/.next/server/app/dashboard/mitm.segments/_full.segment.rsc +0 -23
  1175. package/app/.next/server/app/dashboard/mitm.segments/_head.segment.rsc +0 -6
  1176. package/app/.next/server/app/dashboard/mitm.segments/_index.segment.rsc +0 -8
  1177. package/app/.next/server/app/dashboard/mitm.segments/_tree.segment.rsc +0 -5
  1178. package/app/.next/server/app/dashboard/profile.html +0 -1
  1179. package/app/.next/server/app/dashboard/profile.rsc +0 -26
  1180. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +0 -9
  1181. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +0 -5
  1182. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -5
  1183. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -6
  1184. package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +0 -26
  1185. package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +0 -6
  1186. package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +0 -8
  1187. package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +0 -5
  1188. package/app/.next/server/app/dashboard/providers/new.html +0 -1
  1189. package/app/.next/server/app/dashboard/providers/new.rsc +0 -26
  1190. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +0 -9
  1191. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +0 -5
  1192. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +0 -5
  1193. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -5
  1194. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -6
  1195. package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +0 -26
  1196. package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +0 -6
  1197. package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +0 -8
  1198. package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +0 -5
  1199. package/app/.next/server/app/dashboard/providers.html +0 -1
  1200. package/app/.next/server/app/dashboard/providers.rsc +0 -26
  1201. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +0 -9
  1202. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +0 -5
  1203. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -5
  1204. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -6
  1205. package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +0 -26
  1206. package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +0 -6
  1207. package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +0 -8
  1208. package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +0 -5
  1209. package/app/.next/server/app/dashboard/proxy-pools.html +0 -1
  1210. package/app/.next/server/app/dashboard/proxy-pools.rsc +0 -26
  1211. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +0 -9
  1212. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +0 -5
  1213. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -5
  1214. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -6
  1215. package/app/.next/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +0 -26
  1216. package/app/.next/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +0 -6
  1217. package/app/.next/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +0 -8
  1218. package/app/.next/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +0 -5
  1219. package/app/.next/server/app/dashboard/quota.html +0 -2
  1220. package/app/.next/server/app/dashboard/quota.rsc +0 -24
  1221. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +0 -7
  1222. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +0 -5
  1223. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -5
  1224. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -6
  1225. package/app/.next/server/app/dashboard/quota.segments/_full.segment.rsc +0 -24
  1226. package/app/.next/server/app/dashboard/quota.segments/_head.segment.rsc +0 -6
  1227. package/app/.next/server/app/dashboard/quota.segments/_index.segment.rsc +0 -8
  1228. package/app/.next/server/app/dashboard/quota.segments/_tree.segment.rsc +0 -5
  1229. package/app/.next/server/app/dashboard/settings/pricing/page.js +0 -2
  1230. package/app/.next/server/app/dashboard/settings/pricing/page.js.nft.json +0 -1
  1231. package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +0 -1
  1232. package/app/.next/server/app/dashboard/settings/pricing.html +0 -1
  1233. package/app/.next/server/app/dashboard/settings/pricing.rsc +0 -24
  1234. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +0 -24
  1235. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +0 -6
  1236. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +0 -8
  1237. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +0 -4
  1238. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +0 -9
  1239. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +0 -5
  1240. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +0 -5
  1241. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +0 -5
  1242. package/app/.next/server/app/dashboard/skills.html +0 -1
  1243. package/app/.next/server/app/dashboard/skills.rsc +0 -26
  1244. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +0 -9
  1245. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +0 -5
  1246. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -5
  1247. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -6
  1248. package/app/.next/server/app/dashboard/skills.segments/_full.segment.rsc +0 -26
  1249. package/app/.next/server/app/dashboard/skills.segments/_head.segment.rsc +0 -6
  1250. package/app/.next/server/app/dashboard/skills.segments/_index.segment.rsc +0 -8
  1251. package/app/.next/server/app/dashboard/skills.segments/_tree.segment.rsc +0 -5
  1252. package/app/.next/server/app/dashboard/translator.html +0 -1
  1253. package/app/.next/server/app/dashboard/translator.rsc +0 -26
  1254. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +0 -9
  1255. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +0 -5
  1256. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -5
  1257. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -6
  1258. package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +0 -26
  1259. package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +0 -6
  1260. package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +0 -8
  1261. package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +0 -5
  1262. package/app/.next/server/app/dashboard/usage.html +0 -1
  1263. package/app/.next/server/app/dashboard/usage.rsc +0 -26
  1264. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +0 -9
  1265. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +0 -5
  1266. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -5
  1267. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -6
  1268. package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +0 -26
  1269. package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +0 -6
  1270. package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +0 -8
  1271. package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +0 -5
  1272. package/app/.next/server/app/dashboard.html +0 -1
  1273. package/app/.next/server/app/dashboard.rsc +0 -24
  1274. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +0 -6
  1275. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -5
  1276. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -6
  1277. package/app/.next/server/app/dashboard.segments/_full.segment.rsc +0 -24
  1278. package/app/.next/server/app/dashboard.segments/_head.segment.rsc +0 -6
  1279. package/app/.next/server/app/dashboard.segments/_index.segment.rsc +0 -8
  1280. package/app/.next/server/app/dashboard.segments/_tree.segment.rsc +0 -5
  1281. package/app/.next/server/app/favicon.ico/route.js +0 -1
  1282. package/app/.next/server/app/favicon.ico/route.js.nft.json +0 -1
  1283. package/app/.next/server/app/index.html +0 -1
  1284. package/app/.next/server/app/index.rsc +0 -19
  1285. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +0 -6
  1286. package/app/.next/server/app/index.segments/_full.segment.rsc +0 -19
  1287. package/app/.next/server/app/index.segments/_head.segment.rsc +0 -6
  1288. package/app/.next/server/app/index.segments/_index.segment.rsc +0 -8
  1289. package/app/.next/server/app/index.segments/_tree.segment.rsc +0 -4
  1290. package/app/.next/server/app/landing/page.js +0 -2
  1291. package/app/.next/server/app/landing/page.js.nft.json +0 -1
  1292. package/app/.next/server/app/landing/page_client-reference-manifest.js +0 -1
  1293. package/app/.next/server/app/landing.html +0 -1
  1294. package/app/.next/server/app/landing.rsc +0 -24
  1295. package/app/.next/server/app/landing.segments/_full.segment.rsc +0 -24
  1296. package/app/.next/server/app/landing.segments/_head.segment.rsc +0 -6
  1297. package/app/.next/server/app/landing.segments/_index.segment.rsc +0 -8
  1298. package/app/.next/server/app/landing.segments/_tree.segment.rsc +0 -4
  1299. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +0 -9
  1300. package/app/.next/server/app/landing.segments/landing.segment.rsc +0 -5
  1301. package/app/.next/server/app/login/page.js +0 -2
  1302. package/app/.next/server/app/login/page.js.nft.json +0 -1
  1303. package/app/.next/server/app/login/page_client-reference-manifest.js +0 -1
  1304. package/app/.next/server/app/login.html +0 -1
  1305. package/app/.next/server/app/login.rsc +0 -25
  1306. package/app/.next/server/app/login.segments/_full.segment.rsc +0 -25
  1307. package/app/.next/server/app/login.segments/_head.segment.rsc +0 -6
  1308. package/app/.next/server/app/login.segments/_index.segment.rsc +0 -8
  1309. package/app/.next/server/app/login.segments/_tree.segment.rsc +0 -5
  1310. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +0 -10
  1311. package/app/.next/server/app/login.segments/login.segment.rsc +0 -5
  1312. package/app/.next/server/app/manifest.webmanifest/route.js +0 -16
  1313. package/app/.next/server/app/manifest.webmanifest/route.js.nft.json +0 -1
  1314. package/app/.next/server/app/page.js +0 -2
  1315. package/app/.next/server/app/page.js.nft.json +0 -1
  1316. package/app/.next/server/app/page_client-reference-manifest.js +0 -1
  1317. package/app/.next/server/app-paths-manifest.json +0 -156
  1318. package/app/.next/server/chunks/1574.js +0 -3
  1319. package/app/.next/server/chunks/1795.js +0 -1
  1320. package/app/.next/server/chunks/21.js +0 -1
  1321. package/app/.next/server/chunks/3774.js +0 -4
  1322. package/app/.next/server/chunks/450.js +0 -7
  1323. package/app/.next/server/chunks/5221.js +0 -1
  1324. package/app/.next/server/chunks/6263.js +0 -14
  1325. package/app/.next/server/chunks/6283.js +0 -1
  1326. package/app/.next/server/chunks/6634.js +0 -7
  1327. package/app/.next/server/chunks/7686.js +0 -13
  1328. package/app/.next/server/chunks/8202.js +0 -160
  1329. package/app/.next/server/chunks/9060.js +0 -9
  1330. package/app/.next/server/chunks/9102.js +0 -39
  1331. package/app/.next/server/chunks/9737.js +0 -1
  1332. package/app/.next/server/functions-config-manifest.json +0 -55
  1333. package/app/.next/server/middleware-build-manifest.js +0 -1
  1334. package/app/.next/server/middleware.js +0 -26
  1335. package/app/.next/server/pages/404.html +0 -1
  1336. package/app/.next/server/pages/500.html +0 -1
  1337. package/app/.next/server/server-reference-manifest.js +0 -1
  1338. package/app/.next/server/server-reference-manifest.json +0 -1
  1339. package/app/.next/static/chunks/1695-6e8840bac539e8e1.js +0 -39
  1340. package/app/.next/static/chunks/4156-fb6ac946bb0d8b36.js +0 -7
  1341. package/app/.next/static/chunks/505-4f14d6114630c020.js +0 -1
  1342. package/app/.next/static/chunks/8035-fcb662f21e288a06.js +0 -3
  1343. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-ba45716d39a993b3.js +0 -1
  1344. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/page-b460baa9a0a252cc.js +0 -1
  1345. package/app/.next/static/chunks/app/(dashboard)/dashboard/mitm/page-9567edd325a84464.js +0 -1
  1346. package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-5c83526aa571f533.js +0 -1
  1347. package/app/.next/static/chunks/app/_global-error/page-60e29212efc745d6.js +0 -1
  1348. package/app/.next/static/chunks/app/api/auth/login/route-60e29212efc745d6.js +0 -1
  1349. package/app/.next/static/chunks/app/api/auth/logout/route-60e29212efc745d6.js +0 -1
  1350. package/app/.next/static/chunks/app/api/auth/oidc/callback/route-60e29212efc745d6.js +0 -1
  1351. package/app/.next/static/chunks/app/api/auth/oidc/start/route-60e29212efc745d6.js +0 -1
  1352. package/app/.next/static/chunks/app/api/auth/oidc/test/route-60e29212efc745d6.js +0 -1
  1353. package/app/.next/static/chunks/app/api/auth/status/route-60e29212efc745d6.js +0 -1
  1354. package/app/.next/static/chunks/app/api/cli-tools/all-statuses/route-60e29212efc745d6.js +0 -1
  1355. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-60e29212efc745d6.js +0 -1
  1356. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-60e29212efc745d6.js +0 -1
  1357. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-60e29212efc745d6.js +0 -1
  1358. package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-60e29212efc745d6.js +0 -1
  1359. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-60e29212efc745d6.js +0 -1
  1360. package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-60e29212efc745d6.js +0 -1
  1361. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-60e29212efc745d6.js +0 -1
  1362. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-60e29212efc745d6.js +0 -1
  1363. package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-60e29212efc745d6.js +0 -1
  1364. package/app/.next/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-60e29212efc745d6.js +0 -1
  1365. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-60e29212efc745d6.js +0 -1
  1366. package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-60e29212efc745d6.js +0 -1
  1367. package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-60e29212efc745d6.js +0 -1
  1368. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-60e29212efc745d6.js +0 -1
  1369. package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-60e29212efc745d6.js +0 -1
  1370. package/app/.next/static/chunks/app/api/cloud/auth/route-60e29212efc745d6.js +0 -1
  1371. package/app/.next/static/chunks/app/api/cloud/credentials/update/route-60e29212efc745d6.js +0 -1
  1372. package/app/.next/static/chunks/app/api/cloud/model/resolve/route-60e29212efc745d6.js +0 -1
  1373. package/app/.next/static/chunks/app/api/cloud/models/alias/route-60e29212efc745d6.js +0 -1
  1374. package/app/.next/static/chunks/app/api/combos/[id]/route-60e29212efc745d6.js +0 -1
  1375. package/app/.next/static/chunks/app/api/combos/route-60e29212efc745d6.js +0 -1
  1376. package/app/.next/static/chunks/app/api/health/route-60e29212efc745d6.js +0 -1
  1377. package/app/.next/static/chunks/app/api/init/route-60e29212efc745d6.js +0 -1
  1378. package/app/.next/static/chunks/app/api/keys/[id]/route-60e29212efc745d6.js +0 -1
  1379. package/app/.next/static/chunks/app/api/keys/route-60e29212efc745d6.js +0 -1
  1380. package/app/.next/static/chunks/app/api/locale/route-60e29212efc745d6.js +0 -1
  1381. package/app/.next/static/chunks/app/api/mcp/[plugin]/message/route-60e29212efc745d6.js +0 -1
  1382. package/app/.next/static/chunks/app/api/mcp/[plugin]/sse/route-60e29212efc745d6.js +0 -1
  1383. package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-60e29212efc745d6.js +0 -1
  1384. package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-60e29212efc745d6.js +0 -1
  1385. package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-60e29212efc745d6.js +0 -1
  1386. package/app/.next/static/chunks/app/api/media-providers/tts/minimax/voices/route-60e29212efc745d6.js +0 -1
  1387. package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-60e29212efc745d6.js +0 -1
  1388. package/app/.next/static/chunks/app/api/models/alias/route-60e29212efc745d6.js +0 -1
  1389. package/app/.next/static/chunks/app/api/models/availability/route-60e29212efc745d6.js +0 -1
  1390. package/app/.next/static/chunks/app/api/models/custom/route-60e29212efc745d6.js +0 -1
  1391. package/app/.next/static/chunks/app/api/models/disabled/route-60e29212efc745d6.js +0 -1
  1392. package/app/.next/static/chunks/app/api/models/route-60e29212efc745d6.js +0 -1
  1393. package/app/.next/static/chunks/app/api/models/test/route-60e29212efc745d6.js +0 -1
  1394. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-60e29212efc745d6.js +0 -1
  1395. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-60e29212efc745d6.js +0 -1
  1396. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-60e29212efc745d6.js +0 -1
  1397. package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-60e29212efc745d6.js +0 -1
  1398. package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-60e29212efc745d6.js +0 -1
  1399. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-60e29212efc745d6.js +0 -1
  1400. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-60e29212efc745d6.js +0 -1
  1401. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-60e29212efc745d6.js +0 -1
  1402. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-60e29212efc745d6.js +0 -1
  1403. package/app/.next/static/chunks/app/api/pricing/route-60e29212efc745d6.js +0 -1
  1404. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-60e29212efc745d6.js +0 -1
  1405. package/app/.next/static/chunks/app/api/provider-nodes/route-60e29212efc745d6.js +0 -1
  1406. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-60e29212efc745d6.js +0 -1
  1407. package/app/.next/static/chunks/app/api/providers/[id]/models/route-60e29212efc745d6.js +0 -1
  1408. package/app/.next/static/chunks/app/api/providers/[id]/route-60e29212efc745d6.js +0 -1
  1409. package/app/.next/static/chunks/app/api/providers/[id]/test/route-60e29212efc745d6.js +0 -1
  1410. package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-60e29212efc745d6.js +0 -1
  1411. package/app/.next/static/chunks/app/api/providers/client/route-60e29212efc745d6.js +0 -1
  1412. package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-60e29212efc745d6.js +0 -1
  1413. package/app/.next/static/chunks/app/api/providers/route-60e29212efc745d6.js +0 -1
  1414. package/app/.next/static/chunks/app/api/providers/suggested-models/route-60e29212efc745d6.js +0 -1
  1415. package/app/.next/static/chunks/app/api/providers/test-batch/route-60e29212efc745d6.js +0 -1
  1416. package/app/.next/static/chunks/app/api/providers/validate/route-60e29212efc745d6.js +0 -1
  1417. package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-60e29212efc745d6.js +0 -1
  1418. package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-60e29212efc745d6.js +0 -1
  1419. package/app/.next/static/chunks/app/api/proxy-pools/route-60e29212efc745d6.js +0 -1
  1420. package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-60e29212efc745d6.js +0 -1
  1421. package/app/.next/static/chunks/app/api/settings/database/route-60e29212efc745d6.js +0 -1
  1422. package/app/.next/static/chunks/app/api/settings/proxy-test/route-60e29212efc745d6.js +0 -1
  1423. package/app/.next/static/chunks/app/api/settings/require-login/route-60e29212efc745d6.js +0 -1
  1424. package/app/.next/static/chunks/app/api/settings/route-60e29212efc745d6.js +0 -1
  1425. package/app/.next/static/chunks/app/api/shutdown/route-60e29212efc745d6.js +0 -1
  1426. package/app/.next/static/chunks/app/api/tags/route-60e29212efc745d6.js +0 -1
  1427. package/app/.next/static/chunks/app/api/translator/console-logs/route-60e29212efc745d6.js +0 -1
  1428. package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-60e29212efc745d6.js +0 -1
  1429. package/app/.next/static/chunks/app/api/translator/load/route-60e29212efc745d6.js +0 -1
  1430. package/app/.next/static/chunks/app/api/translator/save/route-60e29212efc745d6.js +0 -1
  1431. package/app/.next/static/chunks/app/api/translator/send/route-60e29212efc745d6.js +0 -1
  1432. package/app/.next/static/chunks/app/api/translator/translate/route-60e29212efc745d6.js +0 -1
  1433. package/app/.next/static/chunks/app/api/tunnel/disable/route-60e29212efc745d6.js +0 -1
  1434. package/app/.next/static/chunks/app/api/tunnel/enable/route-60e29212efc745d6.js +0 -1
  1435. package/app/.next/static/chunks/app/api/tunnel/status/route-60e29212efc745d6.js +0 -1
  1436. package/app/.next/static/chunks/app/api/tunnel/tailscale-check/route-60e29212efc745d6.js +0 -1
  1437. package/app/.next/static/chunks/app/api/tunnel/tailscale-disable/route-60e29212efc745d6.js +0 -1
  1438. package/app/.next/static/chunks/app/api/tunnel/tailscale-enable/route-60e29212efc745d6.js +0 -1
  1439. package/app/.next/static/chunks/app/api/tunnel/tailscale-install/route-60e29212efc745d6.js +0 -1
  1440. package/app/.next/static/chunks/app/api/tunnel/tailscale-login/route-60e29212efc745d6.js +0 -1
  1441. package/app/.next/static/chunks/app/api/tunnel/tailscale-start-daemon/route-60e29212efc745d6.js +0 -1
  1442. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-60e29212efc745d6.js +0 -1
  1443. package/app/.next/static/chunks/app/api/usage/chart/route-60e29212efc745d6.js +0 -1
  1444. package/app/.next/static/chunks/app/api/usage/history/route-60e29212efc745d6.js +0 -1
  1445. package/app/.next/static/chunks/app/api/usage/providers/route-60e29212efc745d6.js +0 -1
  1446. package/app/.next/static/chunks/app/api/usage/request-details/route-60e29212efc745d6.js +0 -1
  1447. package/app/.next/static/chunks/app/api/usage/request-logs/route-60e29212efc745d6.js +0 -1
  1448. package/app/.next/static/chunks/app/api/usage/stats/route-60e29212efc745d6.js +0 -1
  1449. package/app/.next/static/chunks/app/api/usage/stream/route-60e29212efc745d6.js +0 -1
  1450. package/app/.next/static/chunks/app/api/v1/api/chat/route-60e29212efc745d6.js +0 -1
  1451. package/app/.next/static/chunks/app/api/v1/audio/speech/route-60e29212efc745d6.js +0 -1
  1452. package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-60e29212efc745d6.js +0 -1
  1453. package/app/.next/static/chunks/app/api/v1/audio/voices/route-60e29212efc745d6.js +0 -1
  1454. package/app/.next/static/chunks/app/api/v1/chat/completions/route-60e29212efc745d6.js +0 -1
  1455. package/app/.next/static/chunks/app/api/v1/embeddings/route-60e29212efc745d6.js +0 -1
  1456. package/app/.next/static/chunks/app/api/v1/images/generations/route-60e29212efc745d6.js +0 -1
  1457. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-60e29212efc745d6.js +0 -1
  1458. package/app/.next/static/chunks/app/api/v1/messages/route-60e29212efc745d6.js +0 -1
  1459. package/app/.next/static/chunks/app/api/v1/models/[kind]/route-60e29212efc745d6.js +0 -1
  1460. package/app/.next/static/chunks/app/api/v1/models/info/route-60e29212efc745d6.js +0 -1
  1461. package/app/.next/static/chunks/app/api/v1/models/route-60e29212efc745d6.js +0 -1
  1462. package/app/.next/static/chunks/app/api/v1/responses/compact/route-60e29212efc745d6.js +0 -1
  1463. package/app/.next/static/chunks/app/api/v1/responses/route-60e29212efc745d6.js +0 -1
  1464. package/app/.next/static/chunks/app/api/v1/route-60e29212efc745d6.js +0 -1
  1465. package/app/.next/static/chunks/app/api/v1/search/route-60e29212efc745d6.js +0 -1
  1466. package/app/.next/static/chunks/app/api/v1/web/fetch/route-60e29212efc745d6.js +0 -1
  1467. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-60e29212efc745d6.js +0 -1
  1468. package/app/.next/static/chunks/app/api/v1beta/models/route-60e29212efc745d6.js +0 -1
  1469. package/app/.next/static/chunks/app/api/version/route-60e29212efc745d6.js +0 -1
  1470. package/app/.next/static/chunks/app/api/version/shutdown/route-60e29212efc745d6.js +0 -1
  1471. package/app/.next/static/chunks/app/api/version/update/route-60e29212efc745d6.js +0 -1
  1472. package/app/.next/static/chunks/app/manifest.webmanifest/route-60e29212efc745d6.js +0 -1
  1473. package/app/.next/static/chunks/app/page-60e29212efc745d6.js +0 -1
  1474. package/app/.next/static/chunks/main-c15d476fd3e476c5.js +0 -5
  1475. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-60e29212efc745d6.js +0 -1
  1476. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-60e29212efc745d6.js +0 -1
  1477. package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-60e29212efc745d6.js +0 -1
  1478. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-60e29212efc745d6.js +0 -1
  1479. package/app/.next/static/css/ae73e0a7859fa2fc.css +0 -1
  1480. package/app/.next/static/yFUwKZ1p4eBnMZ6ORz8lk/_buildManifest.js +0 -1
  1481. /package/app/{.next → .next-cli-build}/package.json +0 -0
  1482. /package/app/{.next → .next-cli-build}/react-loadable-manifest.json +0 -0
  1483. /package/app/{.next → .next-cli-build}/server/app/_global-error.meta +0 -0
  1484. /package/app/{.next → .next-cli-build}/server/app/_not-found.meta +0 -0
  1485. /package/app/{.next → .next-cli-build}/server/app/api/auth/login/route_client-reference-manifest.js +0 -0
  1486. /package/app/{.next → .next-cli-build}/server/app/api/auth/logout/route_client-reference-manifest.js +0 -0
  1487. /package/app/{.next → .next-cli-build}/server/app/api/auth/oidc/callback/route_client-reference-manifest.js +0 -0
  1488. /package/app/{.next → .next-cli-build}/server/app/api/auth/oidc/start/route_client-reference-manifest.js +0 -0
  1489. /package/app/{.next → .next-cli-build}/server/app/api/auth/oidc/test/route_client-reference-manifest.js +0 -0
  1490. /package/app/{.next → .next-cli-build}/server/app/api/auth/status/route_client-reference-manifest.js +0 -0
  1491. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/all-statuses/route_client-reference-manifest.js +0 -0
  1492. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +0 -0
  1493. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +0 -0
  1494. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +0 -0
  1495. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +0 -0
  1496. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +0 -0
  1497. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/copilot-settings/route_client-reference-manifest.js +0 -0
  1498. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/cowork-mcp-registry/route_client-reference-manifest.js +0 -0
  1499. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/cowork-mcp-tools/route_client-reference-manifest.js +0 -0
  1500. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/cowork-settings/route_client-reference-manifest.js +0 -0
  1501. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/deepseek-tui-settings/route_client-reference-manifest.js +0 -0
  1502. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +0 -0
  1503. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/hermes-settings/route_client-reference-manifest.js +0 -0
  1504. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +0 -0
  1505. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +0 -0
  1506. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/opencode-settings/route_client-reference-manifest.js +0 -0
  1507. /package/app/{.next → .next-cli-build}/server/app/api/cloud/auth/route_client-reference-manifest.js +0 -0
  1508. /package/app/{.next → .next-cli-build}/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +0 -0
  1509. /package/app/{.next → .next-cli-build}/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +0 -0
  1510. /package/app/{.next → .next-cli-build}/server/app/api/cloud/models/alias/route_client-reference-manifest.js +0 -0
  1511. /package/app/{.next → .next-cli-build}/server/app/api/combos/[id]/route_client-reference-manifest.js +0 -0
  1512. /package/app/{.next → .next-cli-build}/server/app/api/combos/route_client-reference-manifest.js +0 -0
  1513. /package/app/{.next → .next-cli-build}/server/app/api/health/route_client-reference-manifest.js +0 -0
  1514. /package/app/{.next → .next-cli-build}/server/app/api/init/route_client-reference-manifest.js +0 -0
  1515. /package/app/{.next → .next-cli-build}/server/app/api/keys/[id]/route_client-reference-manifest.js +0 -0
  1516. /package/app/{.next → .next-cli-build}/server/app/api/keys/route_client-reference-manifest.js +0 -0
  1517. /package/app/{.next → .next-cli-build}/server/app/api/locale/route_client-reference-manifest.js +0 -0
  1518. /package/app/{.next → .next-cli-build}/server/app/api/mcp/[plugin]/message/route_client-reference-manifest.js +0 -0
  1519. /package/app/{.next → .next-cli-build}/server/app/api/mcp/[plugin]/sse/route_client-reference-manifest.js +0 -0
  1520. /package/app/{.next → .next-cli-build}/server/app/api/media-providers/tts/deepgram/voices/route_client-reference-manifest.js +0 -0
  1521. /package/app/{.next → .next-cli-build}/server/app/api/media-providers/tts/elevenlabs/voices/route_client-reference-manifest.js +0 -0
  1522. /package/app/{.next → .next-cli-build}/server/app/api/media-providers/tts/inworld/voices/route_client-reference-manifest.js +0 -0
  1523. /package/app/{.next → .next-cli-build}/server/app/api/media-providers/tts/minimax/voices/route_client-reference-manifest.js +0 -0
  1524. /package/app/{.next → .next-cli-build}/server/app/api/media-providers/tts/voices/route_client-reference-manifest.js +0 -0
  1525. /package/app/{.next → .next-cli-build}/server/app/api/models/alias/route_client-reference-manifest.js +0 -0
  1526. /package/app/{.next → .next-cli-build}/server/app/api/models/availability/route_client-reference-manifest.js +0 -0
  1527. /package/app/{.next → .next-cli-build}/server/app/api/models/custom/route_client-reference-manifest.js +0 -0
  1528. /package/app/{.next → .next-cli-build}/server/app/api/models/disabled/route_client-reference-manifest.js +0 -0
  1529. /package/app/{.next → .next-cli-build}/server/app/api/models/route_client-reference-manifest.js +0 -0
  1530. /package/app/{.next → .next-cli-build}/server/app/api/models/test/route_client-reference-manifest.js +0 -0
  1531. /package/app/{.next → .next-cli-build}/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +0 -0
  1532. /package/app/{.next → .next-cli-build}/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +0 -0
  1533. /package/app/{.next → .next-cli-build}/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +0 -0
  1534. /package/app/{.next → .next-cli-build}/server/app/api/oauth/gitlab/pat/route_client-reference-manifest.js +0 -0
  1535. /package/app/{.next → .next-cli-build}/server/app/api/oauth/iflow/cookie/route_client-reference-manifest.js +0 -0
  1536. /package/app/{.next → .next-cli-build}/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +0 -0
  1537. /package/app/{.next → .next-cli-build}/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +0 -0
  1538. /package/app/{.next → .next-cli-build}/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +0 -0
  1539. /package/app/{.next → .next-cli-build}/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +0 -0
  1540. /package/app/{.next → .next-cli-build}/server/app/api/pricing/route_client-reference-manifest.js +0 -0
  1541. /package/app/{.next → .next-cli-build}/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +0 -0
  1542. /package/app/{.next → .next-cli-build}/server/app/api/provider-nodes/route_client-reference-manifest.js +0 -0
  1543. /package/app/{.next → .next-cli-build}/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +0 -0
  1544. /package/app/{.next → .next-cli-build}/server/app/api/providers/[id]/models/route_client-reference-manifest.js +0 -0
  1545. /package/app/{.next → .next-cli-build}/server/app/api/providers/[id]/route_client-reference-manifest.js +0 -0
  1546. /package/app/{.next → .next-cli-build}/server/app/api/providers/[id]/test/route_client-reference-manifest.js +0 -0
  1547. /package/app/{.next → .next-cli-build}/server/app/api/providers/[id]/test-models/route_client-reference-manifest.js +0 -0
  1548. /package/app/{.next → .next-cli-build}/server/app/api/providers/client/route_client-reference-manifest.js +0 -0
  1549. /package/app/{.next → .next-cli-build}/server/app/api/providers/kilo/free-models/route_client-reference-manifest.js +0 -0
  1550. /package/app/{.next → .next-cli-build}/server/app/api/providers/route_client-reference-manifest.js +0 -0
  1551. /package/app/{.next → .next-cli-build}/server/app/api/providers/suggested-models/route_client-reference-manifest.js +0 -0
  1552. /package/app/{.next → .next-cli-build}/server/app/api/providers/test-batch/route_client-reference-manifest.js +0 -0
  1553. /package/app/{.next → .next-cli-build}/server/app/api/providers/validate/route_client-reference-manifest.js +0 -0
  1554. /package/app/{.next → .next-cli-build}/server/app/api/proxy-pools/[id]/route_client-reference-manifest.js +0 -0
  1555. /package/app/{.next → .next-cli-build}/server/app/api/proxy-pools/[id]/test/route_client-reference-manifest.js +0 -0
  1556. /package/app/{.next → .next-cli-build}/server/app/api/proxy-pools/route_client-reference-manifest.js +0 -0
  1557. /package/app/{.next → .next-cli-build}/server/app/api/proxy-pools/vercel-deploy/route_client-reference-manifest.js +0 -0
  1558. /package/app/{.next → .next-cli-build}/server/app/api/settings/database/route_client-reference-manifest.js +0 -0
  1559. /package/app/{.next → .next-cli-build}/server/app/api/settings/proxy-test/route_client-reference-manifest.js +0 -0
  1560. /package/app/{.next → .next-cli-build}/server/app/api/settings/require-login/route_client-reference-manifest.js +0 -0
  1561. /package/app/{.next → .next-cli-build}/server/app/api/settings/route_client-reference-manifest.js +0 -0
  1562. /package/app/{.next → .next-cli-build}/server/app/api/shutdown/route_client-reference-manifest.js +0 -0
  1563. /package/app/{.next → .next-cli-build}/server/app/api/tags/route_client-reference-manifest.js +0 -0
  1564. /package/app/{.next → .next-cli-build}/server/app/api/translator/console-logs/route_client-reference-manifest.js +0 -0
  1565. /package/app/{.next → .next-cli-build}/server/app/api/translator/console-logs/stream/route_client-reference-manifest.js +0 -0
  1566. /package/app/{.next → .next-cli-build}/server/app/api/translator/load/route_client-reference-manifest.js +0 -0
  1567. /package/app/{.next → .next-cli-build}/server/app/api/translator/save/route_client-reference-manifest.js +0 -0
  1568. /package/app/{.next → .next-cli-build}/server/app/api/translator/send/route_client-reference-manifest.js +0 -0
  1569. /package/app/{.next → .next-cli-build}/server/app/api/translator/translate/route_client-reference-manifest.js +0 -0
  1570. /package/app/{.next → .next-cli-build}/server/app/api/tunnel/disable/route_client-reference-manifest.js +0 -0
  1571. /package/app/{.next → .next-cli-build}/server/app/api/tunnel/enable/route_client-reference-manifest.js +0 -0
  1572. /package/app/{.next → .next-cli-build}/server/app/api/tunnel/status/route_client-reference-manifest.js +0 -0
  1573. /package/app/{.next → .next-cli-build}/server/app/api/tunnel/tailscale-check/route_client-reference-manifest.js +0 -0
  1574. /package/app/{.next → .next-cli-build}/server/app/api/tunnel/tailscale-disable/route_client-reference-manifest.js +0 -0
  1575. /package/app/{.next → .next-cli-build}/server/app/api/tunnel/tailscale-enable/route_client-reference-manifest.js +0 -0
  1576. /package/app/{.next → .next-cli-build}/server/app/api/tunnel/tailscale-install/route_client-reference-manifest.js +0 -0
  1577. /package/app/{.next → .next-cli-build}/server/app/api/tunnel/tailscale-login/route_client-reference-manifest.js +0 -0
  1578. /package/app/{.next → .next-cli-build}/server/app/api/tunnel/tailscale-start-daemon/route_client-reference-manifest.js +0 -0
  1579. /package/app/{.next → .next-cli-build}/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +0 -0
  1580. /package/app/{.next → .next-cli-build}/server/app/api/usage/chart/route_client-reference-manifest.js +0 -0
  1581. /package/app/{.next → .next-cli-build}/server/app/api/usage/history/route_client-reference-manifest.js +0 -0
  1582. /package/app/{.next → .next-cli-build}/server/app/api/usage/providers/route_client-reference-manifest.js +0 -0
  1583. /package/app/{.next → .next-cli-build}/server/app/api/usage/request-details/route_client-reference-manifest.js +0 -0
  1584. /package/app/{.next → .next-cli-build}/server/app/api/usage/request-logs/route_client-reference-manifest.js +0 -0
  1585. /package/app/{.next → .next-cli-build}/server/app/api/usage/stats/route_client-reference-manifest.js +0 -0
  1586. /package/app/{.next → .next-cli-build}/server/app/api/usage/stream/route_client-reference-manifest.js +0 -0
  1587. /package/app/{.next → .next-cli-build}/server/app/api/v1/api/chat/route_client-reference-manifest.js +0 -0
  1588. /package/app/{.next → .next-cli-build}/server/app/api/v1/audio/speech/route_client-reference-manifest.js +0 -0
  1589. /package/app/{.next → .next-cli-build}/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +0 -0
  1590. /package/app/{.next → .next-cli-build}/server/app/api/v1/audio/voices/route_client-reference-manifest.js +0 -0
  1591. /package/app/{.next → .next-cli-build}/server/app/api/v1/chat/completions/route_client-reference-manifest.js +0 -0
  1592. /package/app/{.next → .next-cli-build}/server/app/api/v1/embeddings/route_client-reference-manifest.js +0 -0
  1593. /package/app/{.next → .next-cli-build}/server/app/api/v1/images/generations/route_client-reference-manifest.js +0 -0
  1594. /package/app/{.next → .next-cli-build}/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +0 -0
  1595. /package/app/{.next → .next-cli-build}/server/app/api/v1/messages/route_client-reference-manifest.js +0 -0
  1596. /package/app/{.next → .next-cli-build}/server/app/api/v1/models/[kind]/route_client-reference-manifest.js +0 -0
  1597. /package/app/{.next → .next-cli-build}/server/app/api/v1/models/info/route_client-reference-manifest.js +0 -0
  1598. /package/app/{.next → .next-cli-build}/server/app/api/v1/models/route_client-reference-manifest.js +0 -0
  1599. /package/app/{.next → .next-cli-build}/server/app/api/v1/responses/compact/route_client-reference-manifest.js +0 -0
  1600. /package/app/{.next → .next-cli-build}/server/app/api/v1/responses/route_client-reference-manifest.js +0 -0
  1601. /package/app/{.next → .next-cli-build}/server/app/api/v1/route_client-reference-manifest.js +0 -0
  1602. /package/app/{.next → .next-cli-build}/server/app/api/v1/search/route_client-reference-manifest.js +0 -0
  1603. /package/app/{.next → .next-cli-build}/server/app/api/v1/web/fetch/route_client-reference-manifest.js +0 -0
  1604. /package/app/{.next → .next-cli-build}/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +0 -0
  1605. /package/app/{.next → .next-cli-build}/server/app/api/v1beta/models/route_client-reference-manifest.js +0 -0
  1606. /package/app/{.next → .next-cli-build}/server/app/api/version/route_client-reference-manifest.js +0 -0
  1607. /package/app/{.next → .next-cli-build}/server/app/api/version/shutdown/route_client-reference-manifest.js +0 -0
  1608. /package/app/{.next → .next-cli-build}/server/app/api/version/update/route_client-reference-manifest.js +0 -0
  1609. /package/app/{.next → .next-cli-build}/server/app/callback.meta +0 -0
  1610. /package/app/{.next → .next-cli-build}/server/app/dashboard/basic-chat.meta +0 -0
  1611. /package/app/{.next → .next-cli-build}/server/app/dashboard/cli-tools.meta +0 -0
  1612. /package/app/{.next → .next-cli-build}/server/app/dashboard/combos.meta +0 -0
  1613. /package/app/{.next → .next-cli-build}/server/app/dashboard/endpoint.meta +0 -0
  1614. /package/app/{.next → .next-cli-build}/server/app/dashboard/media-providers/web.meta +0 -0
  1615. /package/app/{.next → .next-cli-build}/server/app/dashboard/mitm.meta +0 -0
  1616. /package/app/{.next → .next-cli-build}/server/app/dashboard/profile.meta +0 -0
  1617. /package/app/{.next → .next-cli-build}/server/app/dashboard/providers/new.meta +0 -0
  1618. /package/app/{.next → .next-cli-build}/server/app/dashboard/providers.meta +0 -0
  1619. /package/app/{.next → .next-cli-build}/server/app/dashboard/proxy-pools.meta +0 -0
  1620. /package/app/{.next → .next-cli-build}/server/app/dashboard/quota.meta +0 -0
  1621. /package/app/{.next → .next-cli-build}/server/app/dashboard/settings/pricing.meta +0 -0
  1622. /package/app/{.next → .next-cli-build}/server/app/dashboard/skills.meta +0 -0
  1623. /package/app/{.next → .next-cli-build}/server/app/dashboard/translator.meta +0 -0
  1624. /package/app/{.next → .next-cli-build}/server/app/dashboard/usage.meta +0 -0
  1625. /package/app/{.next → .next-cli-build}/server/app/dashboard.meta +0 -0
  1626. /package/app/{.next → .next-cli-build}/server/app/favicon.ico.body +0 -0
  1627. /package/app/{.next → .next-cli-build}/server/app/favicon.ico.meta +0 -0
  1628. /package/app/{.next → .next-cli-build}/server/app/index.meta +0 -0
  1629. /package/app/{.next → .next-cli-build}/server/app/landing.meta +0 -0
  1630. /package/app/{.next → .next-cli-build}/server/app/login.meta +0 -0
  1631. /package/app/{.next → .next-cli-build}/server/app/manifest.webmanifest/route_client-reference-manifest.js +0 -0
  1632. /package/app/{.next → .next-cli-build}/server/app/manifest.webmanifest.body +0 -0
  1633. /package/app/{.next → .next-cli-build}/server/app/manifest.webmanifest.meta +0 -0
  1634. /package/app/{.next → .next-cli-build}/server/chunks/1071.js +0 -0
  1635. /package/app/{.next → .next-cli-build}/server/chunks/1249.js +0 -0
  1636. /package/app/{.next → .next-cli-build}/server/chunks/1301.js +0 -0
  1637. /package/app/{.next → .next-cli-build}/server/chunks/1444.js +0 -0
  1638. /package/app/{.next → .next-cli-build}/server/chunks/1578.js +0 -0
  1639. /package/app/{.next → .next-cli-build}/server/chunks/1735.js +0 -0
  1640. /package/app/{.next → .next-cli-build}/server/chunks/2009.js +0 -0
  1641. /package/app/{.next → .next-cli-build}/server/chunks/2212.js +0 -0
  1642. /package/app/{.next → .next-cli-build}/server/chunks/2701.js +0 -0
  1643. /package/app/{.next → .next-cli-build}/server/chunks/3630.js +0 -0
  1644. /package/app/{.next → .next-cli-build}/server/chunks/3666.js +0 -0
  1645. /package/app/{.next → .next-cli-build}/server/chunks/375.js +0 -0
  1646. /package/app/{.next → .next-cli-build}/server/chunks/4343.js +0 -0
  1647. /package/app/{.next → .next-cli-build}/server/chunks/4723.js +0 -0
  1648. /package/app/{.next → .next-cli-build}/server/chunks/499.js +0 -0
  1649. /package/app/{.next → .next-cli-build}/server/chunks/5046.js +0 -0
  1650. /package/app/{.next → .next-cli-build}/server/chunks/5053.js +0 -0
  1651. /package/app/{.next → .next-cli-build}/server/chunks/514.js +0 -0
  1652. /package/app/{.next → .next-cli-build}/server/chunks/5159.js +0 -0
  1653. /package/app/{.next → .next-cli-build}/server/chunks/5339.js +0 -0
  1654. /package/app/{.next → .next-cli-build}/server/chunks/5445.js +0 -0
  1655. /package/app/{.next → .next-cli-build}/server/chunks/586.js +0 -0
  1656. /package/app/{.next → .next-cli-build}/server/chunks/5882.js +0 -0
  1657. /package/app/{.next → .next-cli-build}/server/chunks/593.js +0 -0
  1658. /package/app/{.next → .next-cli-build}/server/chunks/6288.js +0 -0
  1659. /package/app/{.next → .next-cli-build}/server/chunks/6379.js +0 -0
  1660. /package/app/{.next → .next-cli-build}/server/chunks/64.js +0 -0
  1661. /package/app/{.next → .next-cli-build}/server/chunks/6502.js +0 -0
  1662. /package/app/{.next → .next-cli-build}/server/chunks/6560.js +0 -0
  1663. /package/app/{.next → .next-cli-build}/server/chunks/6799.js +0 -0
  1664. /package/app/{.next → .next-cli-build}/server/chunks/7061.js +0 -0
  1665. /package/app/{.next → .next-cli-build}/server/chunks/7171.js +0 -0
  1666. /package/app/{.next → .next-cli-build}/server/chunks/7243.js +0 -0
  1667. /package/app/{.next → .next-cli-build}/server/chunks/7292.js +0 -0
  1668. /package/app/{.next → .next-cli-build}/server/chunks/7417.js +0 -0
  1669. /package/app/{.next → .next-cli-build}/server/chunks/7773.js +0 -0
  1670. /package/app/{.next → .next-cli-build}/server/chunks/7810.js +0 -0
  1671. /package/app/{.next → .next-cli-build}/server/chunks/7973.js +0 -0
  1672. /package/app/{.next → .next-cli-build}/server/chunks/8012.js +0 -0
  1673. /package/app/{.next → .next-cli-build}/server/chunks/8035.js +0 -0
  1674. /package/app/{.next → .next-cli-build}/server/chunks/8495.js +0 -0
  1675. /package/app/{.next → .next-cli-build}/server/chunks/8647.js +0 -0
  1676. /package/app/{.next → .next-cli-build}/server/middleware-manifest.json +0 -0
  1677. /package/app/{.next → .next-cli-build}/server/middleware-react-loadable-manifest.js +0 -0
  1678. /package/app/{.next → .next-cli-build}/server/next-font-manifest.js +0 -0
  1679. /package/app/{.next → .next-cli-build}/server/next-font-manifest.json +0 -0
  1680. /package/app/{.next → .next-cli-build}/server/pages-manifest.json +0 -0
  1681. /package/app/{.next → .next-cli-build}/server/prefetch-hints.json +0 -0
  1682. /package/app/{.next → .next-cli-build}/server/webpack-runtime.js +0 -0
  1683. /package/app/{.next → .next-cli-build}/static/chunks/1310.277601b1f5c247fc.js +0 -0
  1684. /package/app/{.next → .next-cli-build}/static/chunks/5158-4b48a3595c794bbc.js +0 -0
  1685. /package/app/{.next → .next-cli-build}/static/chunks/6795-3ddcc1d55c65c001.js +0 -0
  1686. /package/app/{.next → .next-cli-build}/static/chunks/8038-368cfbdf9080110b.js +0 -0
  1687. /package/app/{.next → .next-cli-build}/static/chunks/8872-3d43cb238f9deea9.js +0 -0
  1688. /package/app/{.next → .next-cli-build}/static/chunks/app/(dashboard)/dashboard/basic-chat/page-03929d42abde11dc.js +0 -0
  1689. /package/app/{.next → .next-cli-build}/static/chunks/app/(dashboard)/dashboard/console-log/page-af58c67a4e409aad.js +0 -0
  1690. /package/app/{.next → .next-cli-build}/static/chunks/app/(dashboard)/dashboard/endpoint/page-79a243ddf837f243.js +0 -0
  1691. /package/app/{.next → .next-cli-build}/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-c8ed0db5955a05a5.js +0 -0
  1692. /package/app/{.next → .next-cli-build}/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/page-7a43c4f097f69c0b.js +0 -0
  1693. /package/app/{.next → .next-cli-build}/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/page-29ce6662637d64e4.js +0 -0
  1694. /package/app/{.next → .next-cli-build}/static/chunks/app/(dashboard)/dashboard/media-providers/web/page-617c9cc320c9aced.js +0 -0
  1695. /package/app/{.next → .next-cli-build}/static/chunks/app/(dashboard)/dashboard/page-87aa0d715eec8054.js +0 -0
  1696. /package/app/{.next → .next-cli-build}/static/chunks/app/(dashboard)/dashboard/profile/page-3582cb03c9ef5dd8.js +0 -0
  1697. /package/app/{.next → .next-cli-build}/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-7f9c8937e17f949b.js +0 -0
  1698. /package/app/{.next → .next-cli-build}/static/chunks/app/(dashboard)/dashboard/providers/new/page-510b667ad2defe52.js +0 -0
  1699. /package/app/{.next → .next-cli-build}/static/chunks/app/(dashboard)/dashboard/providers/page-4cb14309c0658008.js +0 -0
  1700. /package/app/{.next → .next-cli-build}/static/chunks/app/(dashboard)/dashboard/proxy-pools/page-884603e61682c07d.js +0 -0
  1701. /package/app/{.next → .next-cli-build}/static/chunks/app/(dashboard)/dashboard/quota/page-443513423cf1526a.js +0 -0
  1702. /package/app/{.next → .next-cli-build}/static/chunks/app/(dashboard)/dashboard/skills/page-58f11e8a5a8f3810.js +0 -0
  1703. /package/app/{.next → .next-cli-build}/static/chunks/app/(dashboard)/dashboard/translator/page-f87aca0195ce41ad.js +0 -0
  1704. /package/app/{.next → .next-cli-build}/static/chunks/app/(dashboard)/layout-dca35f311527549c.js +0 -0
  1705. /package/app/{.next → .next-cli-build}/static/chunks/app/_not-found/page-1ab122ef64d03506.js +0 -0
  1706. /package/app/{.next → .next-cli-build}/static/chunks/app/callback/page-6ea4675be396cdb5.js +0 -0
  1707. /package/app/{.next → .next-cli-build}/static/chunks/app/dashboard/settings/pricing/page-77a73529baba955b.js +0 -0
  1708. /package/app/{.next → .next-cli-build}/static/chunks/app/landing/page-0084367666bd9046.js +0 -0
  1709. /package/app/{.next → .next-cli-build}/static/chunks/app/layout-fcda570933db809f.js +0 -0
  1710. /package/app/{.next → .next-cli-build}/static/chunks/app/login/page-dc885cca61893e2a.js +0 -0
  1711. /package/app/{.next → .next-cli-build}/static/chunks/c6123951-b42288d628b452ba.js +0 -0
  1712. /package/app/{.next → .next-cli-build}/static/chunks/c7879cf7-255d52e3eda24cb7.js +0 -0
  1713. /package/app/{.next → .next-cli-build}/static/chunks/framework-ec2c38cd02cb5c98.js +0 -0
  1714. /package/app/{.next → .next-cli-build}/static/chunks/main-app-2c8be355ba1c4e93.js +0 -0
  1715. /package/app/{.next → .next-cli-build}/static/chunks/next/dist/client/components/builtin/global-error-2e4f2b5b71d077f6.js +0 -0
  1716. /package/app/{.next → .next-cli-build}/static/chunks/polyfills-42372ed130431b0a.js +0 -0
  1717. /package/app/{.next → .next-cli-build}/static/chunks/webpack-ab7d9d893d55abd4.js +0 -0
  1718. /package/app/{.next → .next-cli-build}/static/css/2e1b7d528c228ec3.css +0 -0
  1719. /package/app/{.next → .next-cli-build}/static/css/599369d853c61df7.css +0 -0
  1720. /package/app/{.next → .next-cli-build}/static/media/19cfc7226ec3afaa-s.woff2 +0 -0
  1721. /package/app/{.next → .next-cli-build}/static/media/21350d82a1f187e9-s.woff2 +0 -0
  1722. /package/app/{.next → .next-cli-build}/static/media/8e9860b6e62d6359-s.woff2 +0 -0
  1723. /package/app/{.next → .next-cli-build}/static/media/ba9851c3c22cd980-s.woff2 +0 -0
  1724. /package/app/{.next → .next-cli-build}/static/media/c5fe6dc8356a8c31-s.woff2 +0 -0
  1725. /package/app/{.next → .next-cli-build}/static/media/df0a9ae256c0569c-s.woff2 +0 -0
  1726. /package/app/{.next → .next-cli-build}/static/media/e4af272ccee01ff0-s.p.woff2 +0 -0
  1727. /package/app/{.next → .next-cli-build}/static/media/material-symbols-outlined.1060ac06.woff2 +0 -0
  1728. /package/app/{.next/static/yFUwKZ1p4eBnMZ6ORz8lk → .next-cli-build/static/uHhVw6dal8k6pSmnEqnTj}/_ssgManifest.js +0 -0
@@ -1,39 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1695],{45727:e=>{e.exports={TOOL_HOSTS:{antigravity:["daily-cloudcode-pa.googleapis.com","cloudcode-pa.googleapis.com"],copilot:["api.individual.githubcopilot.com"],kiro:["q.us-east-1.amazonaws.com","codewhisperer.us-east-1.amazonaws.com"],cursor:["api2.cursor.sh"]}}},66852:(e,t,s)=>{s.d(t,{Tk:()=>y,aG:()=>P,Ah:()=>b,h1:()=>M,Q6:()=>O,lF:()=>U,a7:()=>S,ZM:()=>N,RF:()=>k,c9:()=>I,gY:()=>F,tA:()=>T,kn:()=>K,yZ:()=>v,qO:()=>_});var l=s(73365),a=s(1521),r=s(74156),i=s(58872),n=s(43202);let o="9router.cliToolEndpointPresets",d="__custom__",c="__save__",m=e=>{window.localStorage.setItem(o,JSON.stringify(e))};function x({value:e,onChange:t,requiresExternalUrl:s=!1,tunnelEnabled:r=!1,tunnelPublicUrl:i="",tailscaleEnabled:p=!1,tailscaleUrl:u="",cloudEnabled:h=!1,cloudUrl:g="",withV1:f=!0}){let[y,b]=(0,a.useState)([]),[j,N]=(0,a.useState)(""),[v,w]=(0,a.useState)(""),k=(0,a.useRef)(!1);(0,a.useEffect)(()=>{b((()=>{try{let e=JSON.parse(window.localStorage.getItem(o)||"[]");if(!Array.isArray(e))return[];return e.filter(e=>e?.name&&e?.baseUrl)}catch{return[]}})())},[]);let C=(0,a.useMemo)(()=>(({requiresExternalUrl:e,tunnelEnabled:t,tunnelPublicUrl:s,tailscaleEnabled:l,tailscaleUrl:a,cloudEnabled:r,cloudUrl:i,savedPresets:o,withV1:c})=>{let m=[],x=e=>{let t;return c?(t=(e||"").replace(/\/+$/,""))?/\/v1$/.test(t)?t:`${t}/v1`:"":(e||"").replace(/\/+$/,"")};if(!e){let e=x(`http://127.0.0.1:${n.h0.appPort}`);m.push({value:"local",label:e,url:e})}if(t&&s){let e=x(s);m.push({value:"tunnel",label:e,url:e})}if(l&&a){let e=x(a);m.push({value:"tailscale",label:e,url:e})}if(r&&i){let e=x(i);m.push({value:"cloud",label:e,url:e})}return o.forEach(e=>{m.push({value:`saved:${e.name}`,label:e.baseUrl,url:e.baseUrl,saved:!0})}),m.push({value:d,label:"Custom URL...",url:""}),m})({requiresExternalUrl:s,tunnelEnabled:r,tunnelPublicUrl:i,tailscaleEnabled:p,tailscaleUrl:u,cloudEnabled:h,cloudUrl:g,savedPresets:y,withV1:f}),[s,r,i,p,u,h,g,y,f]);(0,a.useEffect)(()=>{if(k.current||0===C.length)return;k.current=!0;let e=C.find(e=>e.value!==d);e?(N(e.value),t(e.url)):N(d)},[C,t]);let S=j.startsWith("saved:"),_=j===d,E=_&&(v||"").trim().length>0;return(0,l.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsxs)("select",{value:j,onChange:s=>{let l=s.target.value;if(l===c){let t=(e||"").trim();if(!t)return;let s=t;try{s=new URL(t).host}catch{}let l=window.prompt("Save endpoint as:",s);if(!l?.trim())return;let a=[...y.filter(e=>e.name!==l.trim()),{name:l.trim(),baseUrl:t}].sort((e,t)=>e.name.localeCompare(t.name));b(a),m(a);return}if(N(l),l===d){w(""),t("");return}let a=C.find(e=>e.value===l);a&&t(a.url)},className:"flex-1 min-w-0 px-2 py-2 bg-surface rounded text-xs border border-border focus:outline-none focus:ring-1 focus:ring-primary/50 sm:py-1.5",children:[C.map(e=>(0,l.jsx)("option",{value:e.value,children:e.label},e.value)),E&&(0,l.jsx)("option",{value:c,children:"+ Save current as..."})]}),S&&(0,l.jsx)("button",{type:"button",onClick:()=>{if(!j.startsWith("saved:"))return;let e=j.slice(6),s=y.filter(t=>t.name!==e);b(s),m(s),N(d),w(""),t("")},className:"p-1 text-text-muted hover:text-red-500 rounded transition-colors shrink-0",title:"Delete saved endpoint",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"delete"})})]}),_&&(0,l.jsx)("input",{type:"text",value:v,onChange:e=>{let s=e.target.value;w(s),t(s)},placeholder:f?"https://example.com/v1":"https://example.com",className:"w-full min-w-0 px-2 py-2 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50 sm:py-1.5"})]})}let p="__custom__";function u({value:e,onChange:t,apiKeys:s=[],cloudEnabled:r=!1,className:i=""}){let n=!s.some(t=>t.key===e)&&""!==e,[o,d]=(0,a.useState)(()=>e?s.some(t=>t.key===e)?e:p:s.length>0?s[0].key:p),[c,m]=(0,a.useState)(n?e:"");return 0===s.length&&o!==p&&o!==p?(0,l.jsx)("span",{className:`min-w-0 rounded bg-surface/40 px-2 py-2 text-xs text-text-muted sm:py-1.5 ${i}`,children:r?"No API keys - Create one in Keys page":"sk_9router (default)"}):(0,l.jsxs)("div",{className:`flex flex-col gap-1.5 ${i}`,children:[(0,l.jsxs)("select",{value:o,onChange:e=>{let s=e.target.value;d(s),s===p?(m(""),t("")):t(s)},className:"w-full min-w-0 px-2 py-2 bg-surface rounded text-xs border border-border focus:outline-none focus:ring-1 focus:ring-primary/50 sm:py-1.5",children:[s.map(e=>(0,l.jsx)("option",{value:e.key,children:e.key},e.id)),(0,l.jsx)("option",{value:p,children:"Custom..."})]}),o===p&&(0,l.jsx)("input",{type:"text",value:c,onChange:e=>{let s=e.target.value;m(s),t(s)},placeholder:"sk-...",className:"w-full min-w-0 px-2 py-2 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50 sm:py-1.5"})]})}let h=e=>(e||"").replace(/\/+$/,"");function g(e,t={}){if(!e)return!1;let s=h(e),{tunnelPublicUrl:l,tailscaleUrl:a,cloudUrl:r}=t;return!!(/localhost|127\.0\.0\.1|0\.0\.0\.0/.test(s)||l&&s.startsWith(h(l))||a&&s.startsWith(h(a))||r&&s.startsWith(h(r)))}let f=s(89651).env.NEXT_PUBLIC_CLOUD_URL;function y({tool:e,isExpanded:t,onToggle:s,activeProviders:n,modelMappings:o,onModelMappingChange:d,baseUrl:c,hasActiveProviders:m,apiKeys:p,cloudEnabled:h,initialStatus:b,tunnelEnabled:j,tunnelPublicUrl:N,tailscaleEnabled:v,tailscaleUrl:w}){let k,C,S,[_,E]=(0,a.useState)(b||null),[A,O]=(0,a.useState)(!1),[M,P]=(0,a.useState)(!1),[I,$]=(0,a.useState)(!1),[U,R]=(0,a.useState)(null),[T,z]=(0,a.useState)(!1),[K,D]=(0,a.useState)(!1),[L,F]=(0,a.useState)(null),[q,H]=(0,a.useState)(""),[B,W]=(0,a.useState)({}),[J,G]=(0,a.useState)(!1),[V,Y]=(0,a.useState)(""),[Z,Q]=(0,a.useState)(!1),X=(0,a.useRef)(!1),ee=(()=>{if(!_?.installed)return null;let e=_.settings?.env?.ANTHROPIC_BASE_URL;return e?g(e,{tunnelPublicUrl:N,tailscaleUrl:w,cloudUrl:h?f:null})?"configured":"other":"not_configured"})();(0,a.useEffect)(()=>{p?.length>0&&!q&&H(p[0].key)},[p,q]),(0,a.useEffect)(()=>{b&&E(b)},[b]),(0,a.useEffect)(()=>{t&&!_&&(el(),es()),t&&es()},[t]),(0,a.useEffect)(()=>{fetch("/api/settings").then(e=>e.json()).then(e=>{Q(!!e.ccFilterNaming)}).catch(()=>{})},[]);let et=async e=>{let t=e.target.checked;Q(t),await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({ccFilterNaming:t})}).catch(()=>{})},es=async()=>{try{let e=await fetch("/api/models/alias"),t=await e.json();e.ok&&W(t.aliases||{})}catch(e){console.log("Error fetching model aliases:",e)}};(0,a.useEffect)(()=>{if(_?.installed&&!X.current){X.current=!0;let t=_.settings?.env||{};e.defaultModels.forEach(e=>{if(e.envKey){let s=t[e.envKey]||e.defaultValue||"";s&&d(e.alias,s)}});let s=t.ANTHROPIC_AUTH_TOKEN;s&&p?.some(e=>e.key===s)&&H(s)}},[_,p,e.defaultModels,d]);let el=async()=>{O(!0);try{let e=await fetch("/api/cli-tools/claude-settings"),t=await e.json();E(t)}catch(e){E({installed:!1,error:e.message})}finally{O(!1)}},ea=()=>{let e=V||c;return e.endsWith("/v1")?e:`${e}/v1`},er=async()=>{P(!0),R(null);try{let t={ANTHROPIC_BASE_URL:ea()},s=q?.trim()||(p?.length>0?p[0].key:null)||(h?null:"sk_9router");s&&(t.ANTHROPIC_AUTH_TOKEN=s),e.defaultModels.forEach(e=>{let s=o[e.alias];s&&e.envKey&&(t[e.envKey]=s)});let l=await fetch("/api/cli-tools/claude-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({env:t})}),a=await l.json();l.ok?(R({type:"success",text:"Settings applied successfully!"}),E(e=>({...e,hasBackup:!0,settings:{...e?.settings,env:t}}))):R({type:"error",text:a.error||"Failed to apply settings"})}catch(e){R({type:"error",text:e.message})}finally{P(!1)}},ei=async()=>{$(!0),R(null);try{let t=await fetch("/api/cli-tools/claude-settings",{method:"DELETE"}),s=await t.json();t.ok?(R({type:"success",text:"Settings reset successfully!"}),e.defaultModels.forEach(e=>d(e.alias,e.defaultValue||"")),H("")):R({type:"error",text:s.error||"Failed to reset settings"})}catch(e){R({type:"error",text:e.message})}finally{$(!1)}};return(0,l.jsxs)(r.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,l.jsxs)("div",{className:"flex items-start justify-between gap-3 hover:cursor-pointer sm:items-center",onClick:s,children:[(0,l.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,l.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,l.jsx)(i.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,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[(0,l.jsx)("h3",{className:"font-medium text-sm",children:e.name}),"configured"===ee&&(0,l.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"===ee&&(0,l.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"===ee&&(0,l.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,l.jsx)("p",{className:"text-xs text-text-muted truncate",children:e.description})]})]}),(0,l.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,l.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[A&&(0,l.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,l.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,l.jsx)("span",{children:"Checking Claude CLI..."})]}),!A&&_&&!_.installed&&(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,l.jsxs)("div",{className:"flex flex-col gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,l.jsxs)("div",{className:"flex items-start gap-3",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,l.jsxs)("div",{className:"flex-1",children:[(0,l.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:"Claude CLI not detected locally"}),(0,l.jsx)("p",{className:"text-sm text-text-muted",children:"Manual configuration is still available if 9router is deployed on a remote server."})]})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2 pl-9",children:[(0,l.jsxs)(r.$n,{variant:"secondary",size:"sm",onClick:()=>G(!0),className:"!bg-yellow-500/20 !border-yellow-500/40 !text-yellow-700 dark:!text-yellow-300 hover:!bg-yellow-500/30",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:"content_copy"}),"Manual Config"]}),(0,l.jsxs)(r.$n,{variant:"outline",size:"sm",onClick:()=>z(!T),children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:T?"expand_less":"help"}),T?"Hide":"How to Install"]})]})]}),T&&(0,l.jsxs)("div",{className:"p-4 bg-surface border border-border rounded-lg",children:[(0,l.jsx)("h4",{className:"font-medium mb-3",children:"Installation Guide"}),(0,l.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"text-text-muted mb-1",children:"macOS / Linux / Windows:"}),(0,l.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,l.jsxs)("p",{className:"text-text-muted",children:["After installation, run ",(0,l.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"claude"})," to verify."]})]})]})]}),!A&&_?.installed&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Select Endpoint"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsx)(x,{value:V||((k=V||c).endsWith("/v1")?k:`${k}/v1`),onChange:Y,requiresExternalUrl:e.requiresExternalUrl,tunnelEnabled:j,tunnelPublicUrl:N,tailscaleEnabled:v,tailscaleUrl:w})]}),_?.settings?.env?.ANTHROPIC_BASE_URL&&(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Current"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsx)("span",{className:"min-w-0 truncate rounded bg-surface/40 px-2 py-2 text-xs text-text-muted sm:py-1.5",children:_.settings.env.ANTHROPIC_BASE_URL})]}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"API Key"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsx)(u,{value:q,onChange:H,apiKeys:p,cloudEnabled:h})]}),e.defaultModels.map(e=>(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:e.name}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsxs)("div",{className:"relative w-full min-w-0",children:[(0,l.jsx)("input",{type:"text",value:o[e.alias]||"",onChange:t=>d(e.alias,t.target.value),placeholder:"provider/model-id",className:"w-full min-w-0 pl-2 pr-7 py-2 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50 sm:py-1.5"}),o[e.alias]&&(0,l.jsx)("button",{onClick:()=>d(e.alias,""),className:"absolute right-1 top-1/2 -translate-y-1/2 p-0.5 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]}),(0,l.jsx)("button",{onClick:()=>{F(e.alias),D(!0)},disabled:!m,className:`w-full sm:w-auto rounded border px-2 py-2 text-xs transition-colors sm:py-1.5 whitespace-nowrap sm:shrink-0 ${m?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select Model"})]},e.alias)),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Filter naming"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsxs)("label",{className:"flex items-center gap-1.5 cursor-pointer select-none",children:[(0,l.jsx)("input",{type:"checkbox",checked:Z,onChange:et,className:"w-3.5 h-3.5 accent-primary cursor-pointer"}),(0,l.jsx)("span",{className:"text-xs text-text-muted",children:"Filter naming requests"})]}),(0,l.jsx)(r.m_,{text:"Intercepts Claude Code's topic-naming requests and returns a fake response locally, saving API tokens.",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px] cursor-help",children:"info"})})]})]}),U&&(0,l.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===U.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===U.type?"check_circle":"error"}),(0,l.jsx)("span",{children:U.text})]}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:flex sm:items-center",children:[(0,l.jsxs)(r.$n,{variant:"primary",size:"sm",onClick:er,disabled:!m,loading:M,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,l.jsxs)(r.$n,{variant:"outline",size:"sm",onClick:ei,disabled:!_?.has9Router,loading:I,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,l.jsxs)(r.$n,{variant:"ghost",size:"sm",onClick:()=>G(!0),children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]})]})]}),(0,l.jsx)(r.rq,{isOpen:K,onClose:()=>D(!1),onSelect:e=>{L&&d(L,e.value)},selectedModel:L?o[L]:null,activeProviders:n,modelAliases:B,title:`Select model for ${L}`}),(0,l.jsx)(r.uR,{isOpen:J,onClose:()=>G(!1),title:"Claude CLI - Manual Configuration",configs:(C=q&&q.trim()?q:h?"<API_KEY_FROM_DASHBOARD>":"sk_9router",S={ANTHROPIC_BASE_URL:ea(),ANTHROPIC_AUTH_TOKEN:C},e.defaultModels.forEach(e=>{let t=o[e.alias];t&&e.envKey&&(S[e.envKey]=t)}),[{filename:"~/.claude/settings.json",content:JSON.stringify({hasCompletedOnboarding:!0,env:S},null,2)}])})]})}function b({tool:e,isExpanded:t,onToggle:s,baseUrl:n,apiKeys:o,activeProviders:d,cloudEnabled:c,initialStatus:m,tunnelEnabled:p,tunnelPublicUrl:h,tailscaleEnabled:f,tailscaleUrl:y}){let j,N,v,w,[k,C]=(0,a.useState)(m||null),[S,_]=(0,a.useState)(!1),[E,A]=(0,a.useState)(!1),[O,M]=(0,a.useState)(!1),[P,I]=(0,a.useState)(null),[$,U]=(0,a.useState)(!1),[R,T]=(0,a.useState)(""),[z,K]=(0,a.useState)(""),[D,L]=(0,a.useState)(""),[F,q]=(0,a.useState)(!1),[H,B]=(0,a.useState)(!1),[W,J]=(0,a.useState)({}),[G,V]=(0,a.useState)(!1),[Y,Z]=(0,a.useState)("");(0,a.useEffect)(()=>{o?.length>0&&!R&&T(o[0].key)},[o,R]),(0,a.useEffect)(()=>{m&&C(m)},[m]),(0,a.useEffect)(()=>{t&&!k&&(et(),Q()),t&&Q()},[t]);let Q=async()=>{try{let e=await fetch("/api/models/alias"),t=await e.json();e.ok&&J(t.aliases||{})}catch(e){console.log("Error fetching model aliases:",e)}};(0,a.useEffect)(()=>{if(k?.config){let e=k.config.match(/^model\s*=\s*"([^"]+)"/m);e&&K(e[1]);let t=k.config.match(/\[agents\.subagent\]\s*\n\s*model\s*=\s*"([^"]+)"/m);t&&L(t[1])}},[k]);let X=(()=>{if(!k?.installed)return null;if(!k.config)return"not_configured";let e=k.config.match(/base_url\s*=\s*"([^"]+)"/);return g(e?e[1]:"",{tunnelPublicUrl:h,tailscaleUrl:y})?"configured":"other"})(),ee=()=>{let e=Y||`${n}/v1`;return e.endsWith("/v1")?e:`${e}/v1`},et=async()=>{_(!0);try{let e=await fetch("/api/cli-tools/codex-settings"),t=await e.json();C(t)}catch(e){C({installed:!1,error:e.message})}finally{_(!1)}},es=async()=>{A(!0),I(null);try{let e=R&&R.trim()||c?R:"sk_9router",t=await fetch("/api/cli-tools/codex-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:ee(),apiKey:e,model:z,subagentModel:D||z})}),s=await t.json();t.ok?(I({type:"success",text:"Settings applied successfully!"}),et()):I({type:"error",text:s.error||"Failed to apply settings"})}catch(e){I({type:"error",text:e.message})}finally{A(!1)}},el=async()=>{M(!0),I(null);try{let e=await fetch("/api/cli-tools/codex-settings",{method:"DELETE"}),t=await e.json();e.ok?(I({type:"success",text:"Settings reset successfully!"}),K(""),L(""),et()):I({type:"error",text:t.error||"Failed to reset settings"})}catch(e){I({type:"error",text:e.message})}finally{M(!1)}};return(0,l.jsxs)(r.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,l.jsxs)("div",{className:"flex items-start justify-between gap-3 hover:cursor-pointer sm:items-center",onClick:s,children:[(0,l.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,l.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,l.jsx)(i.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,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[(0,l.jsx)("h3",{className:"font-medium text-sm",children:e.name}),"configured"===X&&(0,l.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"===X&&(0,l.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"===X&&(0,l.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,l.jsx)("p",{className:"text-xs text-text-muted truncate",children:e.description})]})]}),(0,l.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,l.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[S&&(0,l.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,l.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,l.jsx)("span",{children:"Checking Codex CLI..."})]}),!S&&k&&!k.installed&&(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,l.jsxs)("div",{className:"flex flex-col gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,l.jsxs)("div",{className:"flex items-start gap-3",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,l.jsxs)("div",{className:"flex-1",children:[(0,l.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:"Codex CLI not detected locally"}),(0,l.jsx)("p",{className:"text-sm text-text-muted",children:"Manual configuration is still available if 9router is deployed on a remote server."})]})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2 pl-9",children:[(0,l.jsxs)(r.$n,{variant:"secondary",size:"sm",onClick:()=>V(!0),className:"!bg-yellow-500/20 !border-yellow-500/40 !text-yellow-700 dark:!text-yellow-300 hover:!bg-yellow-500/30",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:"content_copy"}),"Manual Config"]}),(0,l.jsxs)(r.$n,{variant:"outline",size:"sm",onClick:()=>U(!$),children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:$?"expand_less":"help"}),$?"Hide":"How to Install"]})]})]}),$&&(0,l.jsxs)("div",{className:"p-4 bg-surface border border-border rounded-lg",children:[(0,l.jsx)("h4",{className:"font-medium mb-3",children:"Installation Guide"}),(0,l.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"text-text-muted mb-1",children:"macOS / Linux / Windows:"}),(0,l.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,l.jsxs)("p",{className:"text-text-muted",children:["After installation, run ",(0,l.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"codex"})," to verify."]}),(0,l.jsx)("div",{className:"pt-2 border-t border-border",children:(0,l.jsxs)("p",{className:"text-text-muted text-xs",children:["Codex uses ",(0,l.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"~/.codex/auth.json"})," with ",(0,l.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"OPENAI_API_KEY"}),'. Click "Apply" to auto-configure.']})})]})]})]}),!S&&k?.installed&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Select Endpoint"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsx)(x,{value:Y||Y||`${n}/v1`,onChange:Z,requiresExternalUrl:e.requiresExternalUrl,tunnelEnabled:p,tunnelPublicUrl:h,tailscaleEnabled:f,tailscaleUrl:y})]}),k?.config&&((N=(j=k.config.match(/base_url\s*=\s*"([^"]+)"/))?j[1]:null)?(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Current"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsx)("span",{className:"min-w-0 truncate rounded bg-surface/40 px-2 py-2 text-xs text-text-muted sm:py-1.5",children:N})]}):null),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"API Key"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsx)(u,{value:R,onChange:T,apiKeys:o,cloudEnabled:c})]}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Model"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsxs)("div",{className:"relative w-full min-w-0",children:[(0,l.jsx)("input",{type:"text",value:z,onChange:e=>K(e.target.value),placeholder:"provider/model-id",className:"w-full min-w-0 pl-2 pr-7 py-2 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50 sm:py-1.5"}),z&&(0,l.jsx)("button",{onClick:()=>K(""),className:"absolute right-1 top-1/2 -translate-y-1/2 p-0.5 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]}),(0,l.jsx)("button",{onClick:()=>q(!0),disabled:!d?.length,className:`w-full sm:w-auto rounded border px-2 py-2 text-xs transition-colors sm:py-1.5 whitespace-nowrap sm:shrink-0 ${d?.length?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select Model"})]}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Subagent Model"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsxs)("div",{className:"relative w-full min-w-0",children:[(0,l.jsx)("input",{type:"text",value:D,onChange:e=>L(e.target.value),placeholder:z||"provider/model-id (defaults to main model)",className:"w-full min-w-0 pl-2 pr-7 py-2 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50 sm:py-1.5"}),D&&(0,l.jsx)("button",{onClick:()=>L(""),className:"absolute right-1 top-1/2 -translate-y-1/2 p-0.5 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear (will use main model)",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]}),(0,l.jsx)("button",{onClick:()=>B(!0),disabled:!d?.length,className:`w-full sm:w-auto rounded border px-2 py-2 text-xs transition-colors sm:py-1.5 whitespace-nowrap sm:shrink-0 ${d?.length?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select Model"})]})]}),P&&(0,l.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===P.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===P.type?"check_circle":"error"}),(0,l.jsx)("span",{children:P.text})]}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:flex sm:items-center",children:[(0,l.jsxs)(r.$n,{variant:"primary",size:"sm",onClick:es,disabled:!R&&c&&o.length>0||!z,loading:E,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,l.jsxs)(r.$n,{variant:"outline",size:"sm",onClick:el,disabled:O,loading:O,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,l.jsxs)(r.$n,{variant:"ghost",size:"sm",onClick:()=>V(!0),children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]})]})]}),(0,l.jsx)(r.rq,{isOpen:F,onClose:()=>q(!1),onSelect:e=>{K(e.value),D||L(e.value),q(!1)},selectedModel:z,activeProviders:d,modelAliases:W,title:"Select Model for Codex"}),(0,l.jsx)(r.rq,{isOpen:H,onClose:()=>B(!1),onSelect:e=>{L(e.value),B(!1)},selectedModel:D,activeProviders:d,modelAliases:W,title:"Select Subagent Model for Codex"}),(0,l.jsx)(r.uR,{isOpen:G,onClose:()=>V(!1),title:"Codex CLI - Manual Configuration",configs:(v=R&&R.trim()?R:c?"<API_KEY_FROM_DASHBOARD>":"sk_9router",w=D||z,[{filename:"~/.codex/config.toml",content:`# 9Router Configuration for Codex CLI
2
- model = "${z}"
3
- model_provider = "9router"
4
-
5
- [model_providers.9router]
6
- name = "9Router"
7
- base_url = "${ee()}"
8
- wire_api = "responses"
9
-
10
- [agents.subagent]
11
- model = "${w}"
12
- `},{filename:"~/.codex/auth.json",content:JSON.stringify({auth_mode:"apikey",OPENAI_API_KEY:v},null,2)}])})]})}let j=s(89651).env.NEXT_PUBLIC_CLOUD_URL;function N({tool:e,isExpanded:t,onToggle:s,baseUrl:n,hasActiveProviders:o,apiKeys:d,activeProviders:c,cloudEnabled:m,initialStatus:p,tunnelEnabled:h,tunnelPublicUrl:f,tailscaleEnabled:y,tailscaleUrl:b}){let v,w,k,C,[S,_]=(0,a.useState)(p||null),[E,A]=(0,a.useState)(!1),[O,M]=(0,a.useState)(!1),[P,I]=(0,a.useState)(!1),[$,U]=(0,a.useState)(null),[R,T]=(0,a.useState)(""),[z,K]=(0,a.useState)([]),[D,L]=(0,a.useState)(""),[F,q]=(0,a.useState)(!1),[H,B]=(0,a.useState)({}),[W,J]=(0,a.useState)(!1),[G,V]=(0,a.useState)(!1),[Y,Z]=(0,a.useState)(""),Q=(0,a.useRef)(!1),X=(()=>{if(!S?.installed)return null;let e=S.settings?.customModels?.find(e=>e.id?.startsWith("custom:9Router"));return e?g(e.baseUrl,{tunnelPublicUrl:f,tailscaleUrl:b,cloudUrl:m?j:null})?"configured":"other":"not_configured"})();(0,a.useEffect)(()=>{d?.length>0&&!R&&T(d[0].key)},[d,R]),(0,a.useEffect)(()=>{p&&_(p)},[p]),(0,a.useEffect)(()=>{t&&!S&&(et(),ee()),t&&ee()},[t]);let ee=async()=>{try{let e=await fetch("/api/models/alias"),t=await e.json();e.ok&&B(t.aliases||{})}catch(e){console.log("Error fetching model aliases:",e)}};(0,a.useEffect)(()=>{if(S?.installed&&!Q.current){Q.current=!0;let e=(S.settings?.customModels||[]).filter(e=>e.id?.startsWith("custom:9Router")).sort((e,t)=>(e.index||0)-(t.index||0)).map(e=>e.model);if(e.length>0)K(e);else{let e=S.settings?.customModels?.find(e=>"custom:9Router-0"===e.id);e?.model&&K([e.model])}}},[S]);let et=async()=>{A(!0);try{let e=await fetch("/api/cli-tools/droid-settings"),t=await e.json();_(t)}catch(e){_({installed:!1,error:e.message})}finally{A(!1)}},es=()=>{let e=Y||n;return e.endsWith("/v1")?e:`${e}/v1`},el=()=>{let e=D.trim();!e||z.includes(e)||(K(t=>[...t,e]),L(""))},ea=async()=>{M(!0),U(null);try{let e=R?.trim()||(d?.length>0?d[0].key:null)||(m?null:"sk_9router"),t=await fetch("/api/cli-tools/droid-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:es(),apiKey:e,models:z,activeModel:z[0]||""})}),s=await t.json();t.ok?(U({type:"success",text:"Settings applied successfully!"}),et()):U({type:"error",text:s.error||"Failed to apply settings"})}catch(e){U({type:"error",text:e.message})}finally{M(!1)}},er=async()=>{I(!0),U(null);try{let e=await fetch("/api/cli-tools/droid-settings",{method:"DELETE"}),t=await e.json();e.ok?(U({type:"success",text:"Settings reset successfully!"}),K([]),et()):U({type:"error",text:t.error||"Failed to reset settings"})}catch(e){U({type:"error",text:e.message})}finally{I(!1)}};return(0,l.jsxs)(r.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,l.jsxs)("div",{className:"flex items-start justify-between gap-3 hover:cursor-pointer sm:items-center",onClick:s,children:[(0,l.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,l.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,l.jsx)(i.default,{src:"/providers/droid.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,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[(0,l.jsx)("h3",{className:"font-medium text-sm",children:e.name}),"configured"===X&&(0,l.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"===X&&(0,l.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"===X&&(0,l.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,l.jsx)("p",{className:"text-xs text-text-muted truncate",children:e.description})]})]}),(0,l.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,l.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[E&&(0,l.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,l.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,l.jsx)("span",{children:"Checking Factory Droid CLI..."})]}),!E&&S&&!S.installed&&(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,l.jsxs)("div",{className:"flex flex-col gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,l.jsxs)("div",{className:"flex items-start gap-3",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,l.jsxs)("div",{className:"flex-1",children:[(0,l.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:"Factory Droid CLI not detected locally"}),(0,l.jsx)("p",{className:"text-sm text-text-muted",children:"Manual configuration is still available if 9router is deployed on a remote server."})]})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2 pl-9",children:[(0,l.jsxs)(r.$n,{variant:"secondary",size:"sm",onClick:()=>J(!0),className:"!bg-yellow-500/20 !border-yellow-500/40 !text-yellow-700 dark:!text-yellow-300 hover:!bg-yellow-500/30",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:"content_copy"}),"Manual Config"]}),(0,l.jsxs)(r.$n,{variant:"outline",size:"sm",onClick:()=>V(!G),children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:G?"expand_less":"help"}),G?"Hide":"How to Install"]})]})]}),G&&(0,l.jsxs)("div",{className:"p-4 bg-surface border border-border rounded-lg",children:[(0,l.jsx)("h4",{className:"font-medium mb-3",children:"Installation Guide"}),(0,l.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"text-text-muted mb-1",children:"macOS / Linux / Windows:"}),(0,l.jsx)("code",{className:"block px-3 py-2 bg-black/5 dark:bg-white/5 rounded font-mono text-xs",children:"curl -fsSL https://app.factory.ai/cli | sh"})]}),(0,l.jsxs)("p",{className:"text-text-muted",children:["After installation, run ",(0,l.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"droid"})," to verify."]})]})]})]}),!E&&S?.installed&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Select Endpoint"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsx)(x,{value:Y||((v=Y||n).endsWith("/v1")?v:`${v}/v1`),onChange:Z,requiresExternalUrl:e.requiresExternalUrl,tunnelEnabled:h,tunnelPublicUrl:f,tailscaleEnabled:y,tailscaleUrl:b})]}),S?.settings?.customModels?.find(e=>e.id?.startsWith("custom:9Router"))?.baseUrl&&(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Current"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsx)("span",{className:"min-w-0 truncate rounded bg-surface/40 px-2 py-2 text-xs text-text-muted sm:py-1.5",children:S.settings.customModels.find(e=>e.id?.startsWith("custom:9Router")).baseUrl})]}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"API Key"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsx)(u,{value:R,onChange:T,apiKeys:d,cloudEnabled:m})]}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,l.jsxs)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:["Models ",z.length>0&&(0,l.jsxs)("span",{className:"text-primary",children:["(",z.length,")"]})]}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsxs)("div",{className:"flex-1 flex flex-col gap-1",children:[z.length>0&&(0,l.jsx)("div",{className:"flex flex-col gap-0.5 mb-1",children:z.map(e=>(0,l.jsxs)("div",{className:"flex items-center gap-1.5 px-2 py-1 bg-bg-secondary rounded border border-border",children:[(0,l.jsx)("span",{className:"flex-1 text-xs font-mono truncate",children:e}),(0,l.jsx)("button",{onClick:()=>K(t=>t.filter(t=>t!==e)),className:"text-text-muted hover:text-red-500 transition-colors shrink-0",title:"Remove",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"close"})})]},e))}),(0,l.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,l.jsx)("input",{type:"text",value:D,onChange:e=>L(e.target.value),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),el())},placeholder:"provider/model-id",className:"w-full min-w-0 px-2 py-2 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50 sm:py-1.5"}),(0,l.jsx)("button",{onClick:()=>q(!0),disabled:!o,className:`px-2 py-1.5 rounded border text-xs shrink-0 ${o?"bg-surface border-border hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select"}),(0,l.jsx)("button",{onClick:el,disabled:!D.trim(),className:"px-2 py-1.5 rounded border bg-surface border-border hover:border-primary text-xs shrink-0 disabled:opacity-50",title:"Add model",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"add"})})]})]})]})]}),$&&(0,l.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===$.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===$.type?"check_circle":"error"}),(0,l.jsx)("span",{children:$.text})]}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:flex sm:items-center",children:[(0,l.jsxs)(r.$n,{variant:"primary",size:"sm",onClick:ea,disabled:0===z.length,loading:O,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,l.jsxs)(r.$n,{variant:"outline",size:"sm",onClick:er,disabled:!S?.has9Router,loading:P,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,l.jsxs)(r.$n,{variant:"ghost",size:"sm",onClick:()=>J(!0),children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]})]})]}),(0,l.jsx)(r.rq,{isOpen:F,onClose:()=>q(!1),onSelect:e=>{!e.value||z.includes(e.value)||(K(t=>[...t,e.value]),q(!1))},selectedModel:null,activeProviders:c,modelAliases:H,title:"Select Model for Factory Droid"}),(0,l.jsx)(r.uR,{isOpen:W,onClose:()=>J(!1),title:"Factory Droid - Manual Configuration",configs:(w=R&&R.trim()?R:m?"<API_KEY_FROM_DASHBOARD>":"sk_9router",k={customModels:z.map((e,t)=>({model:e,id:`custom:9Router-${t}`,index:t,baseUrl:es(),apiKey:w,displayName:e,maxOutputTokens:131072,noImageSupport:!1,provider:"openai"}))},C="u">typeof navigator&&navigator.platform,[{filename:C?.toLowerCase().includes("win")?"%USERPROFILE%\\.factory\\settings.json":"~/.factory/settings.json",content:JSON.stringify(k,null,2)}])})]})}function v({tool:e,isExpanded:t,onToggle:s,baseUrl:n,hasActiveProviders:o,apiKeys:d,activeProviders:c,cloudEnabled:m,initialStatus:p,tunnelEnabled:h,tunnelPublicUrl:f,tailscaleEnabled:y,tailscaleUrl:b}){let j,N,[w,k]=(0,a.useState)(p||null),[C,S]=(0,a.useState)(!1),[_,E]=(0,a.useState)(!1),[A,O]=(0,a.useState)(!1),[M,P]=(0,a.useState)(null),[I,$]=(0,a.useState)(""),[U,R]=(0,a.useState)(""),[T,z]=(0,a.useState)({}),[K,D]=(0,a.useState)(null),[L,F]=(0,a.useState)(!1),[q,H]=(0,a.useState)({}),[B,W]=(0,a.useState)(!1),[J,G]=(0,a.useState)(""),V=(0,a.useRef)(!1),Y=(()=>{if(!w?.installed)return null;let e=w.settings?.models?.providers?.["9router"];return e?g(e.baseUrl,{tunnelPublicUrl:f,tailscaleUrl:b})?"configured":"other":"not_configured"})();(0,a.useEffect)(()=>{d?.length>0&&!I&&$(d[0].key)},[d,I]),(0,a.useEffect)(()=>{p&&k(p)},[p]),(0,a.useEffect)(()=>{t&&!w&&(Q(),Z()),t&&Z()},[t]);let Z=async()=>{try{let e=await fetch("/api/models/alias"),t=await e.json();e.ok&&H(t.aliases||{})}catch(e){console.log("Error fetching model aliases:",e)}};(0,a.useEffect)(()=>{if(w?.installed&&!V.current){V.current=!0;let e=w.settings?.models?.providers?.["9router"];if(e){let t=w.settings?.agents?.defaults?.model?.primary;t&&R(t.replace("9router/","")),e.apiKey&&d?.some(t=>t.key===e.apiKey)&&$(e.apiKey)}let t=w.agents||[],s={};t.forEach(e=>{e.currentModel&&(s[e.id]=e.currentModel)}),z(s)}},[w,d]);let Q=async()=>{S(!0);try{let e=await fetch("/api/cli-tools/openclaw-settings"),t=await e.json();k(t)}catch(e){k({installed:!1,error:e.message})}finally{S(!1)}},X=()=>window.location.origin.replace("://localhost","://127.0.0.1"),ee=()=>{let e=J||X();return e.endsWith("/v1")?e:`${e}/v1`},et=async()=>{E(!0),P(null);try{let e=I?.trim()||(d?.length>0?d[0].key:null)||(m?null:"sk_9router"),t=await fetch("/api/cli-tools/openclaw-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:ee(),apiKey:e,model:U,agentModels:T})}),s=await t.json();t.ok?(P({type:"success",text:"Settings applied successfully!"}),Q()):P({type:"error",text:s.error||"Failed to apply settings"})}catch(e){P({type:"error",text:e.message})}finally{E(!1)}},es=async()=>{O(!0),P(null);try{let e=await fetch("/api/cli-tools/openclaw-settings",{method:"DELETE"}),t=await e.json();e.ok?(P({type:"success",text:"Settings reset successfully!"}),R(""),$(""),Q()):P({type:"error",text:t.error||"Failed to reset settings"})}catch(e){P({type:"error",text:e.message})}finally{O(!1)}};return(0,l.jsxs)(r.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,l.jsxs)("div",{className:"flex items-start justify-between gap-3 hover:cursor-pointer sm:items-center",onClick:s,children:[(0,l.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,l.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,l.jsx)(i.default,{src:"/providers/openclaw.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,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[(0,l.jsx)("h3",{className:"font-medium text-sm",children:e.name}),"configured"===Y&&(0,l.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"===Y&&(0,l.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"===Y&&(0,l.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,l.jsx)("p",{className:"text-xs text-text-muted truncate",children:e.description})]})]}),(0,l.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,l.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[C&&(0,l.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,l.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,l.jsx)("span",{children:"Checking Open Claw CLI..."})]}),!C&&w&&!w.installed&&(0,l.jsx)("div",{className:"flex flex-col gap-4",children:(0,l.jsxs)("div",{className:"flex flex-col gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,l.jsxs)("div",{className:"flex items-start gap-3",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,l.jsxs)("div",{className:"flex-1",children:[(0,l.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:"Open Claw CLI not detected locally"}),(0,l.jsx)("p",{className:"text-sm text-text-muted",children:"Manual configuration is still available if 9router is deployed on a remote server."})]})]}),(0,l.jsx)("div",{className:"flex items-center gap-2 pl-9",children:(0,l.jsxs)(r.$n,{variant:"secondary",size:"sm",onClick:()=>W(!0),className:"!bg-yellow-500/20 !border-yellow-500/40 !text-yellow-700 dark:!text-yellow-300 hover:!bg-yellow-500/30",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:"content_copy"}),"Manual Config"]})})]})}),!C&&w?.installed&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Select Endpoint"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsx)(x,{value:J||((j=J||X()).endsWith("/v1")?j:`${j}/v1`),onChange:G,requiresExternalUrl:e.requiresExternalUrl,tunnelEnabled:h,tunnelPublicUrl:f,tailscaleEnabled:y,tailscaleUrl:b})]}),w?.settings?.models?.providers?.["9router"]?.baseUrl&&(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Current"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsx)("span",{className:"min-w-0 truncate rounded bg-surface/40 px-2 py-2 text-xs text-text-muted sm:py-1.5",children:w.settings.models.providers["9router"].baseUrl})]}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"API Key"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsx)(u,{value:I,onChange:$,apiKeys:d,cloudEnabled:m})]}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Default Model"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsxs)("div",{className:"relative w-full min-w-0",children:[(0,l.jsx)("input",{type:"text",value:U,onChange:e=>R(e.target.value),placeholder:"provider/model-id",className:"w-full min-w-0 pl-2 pr-7 py-2 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50 sm:py-1.5"}),U&&(0,l.jsx)("button",{onClick:()=>R(""),className:"absolute right-1 top-1/2 -translate-y-1/2 p-0.5 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]}),(0,l.jsx)("button",{onClick:()=>{D(null),F(!0)},disabled:!o,className:`w-full sm:w-auto rounded border px-2 py-2 text-xs transition-colors sm:py-1.5 whitespace-nowrap sm:shrink-0 ${o?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select"})]}),(w.agents||[]).filter(e=>e.agentDir).map(e=>(0,l.jsxs)("div",{className:"flex items-center gap-2 pl-4",children:[(0,l.jsxs)("span",{className:"w-32 shrink-0 text-xs text-primary text-right truncate",title:e.name||e.id,children:["Agent ",e.name||e.id]}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsxs)("div",{className:"relative w-full min-w-0",children:[(0,l.jsx)("input",{type:"text",value:T[e.id]||"",onChange:t=>z(s=>({...s,[e.id]:t.target.value})),placeholder:`default (${U||"provider/model-id"})`,className:"w-full min-w-0 pl-2 pr-7 py-2 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50 sm:py-1.5"}),T[e.id]&&(0,l.jsx)("button",{onClick:()=>z(t=>({...t,[e.id]:""})),className:"absolute right-1 top-1/2 -translate-y-1/2 p-0.5 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]}),(0,l.jsx)("button",{onClick:()=>{D(e.id),F(!0)},disabled:!o,className:`w-full sm:w-auto rounded border px-2 py-2 text-xs transition-colors sm:py-1.5 whitespace-nowrap sm:shrink-0 ${o?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select"})]},e.id))]}),M&&(0,l.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===M.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===M.type?"check_circle":"error"}),(0,l.jsx)("span",{children:M.text})]}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:flex sm:items-center",children:[(0,l.jsxs)(r.$n,{variant:"primary",size:"sm",onClick:et,disabled:!U,loading:_,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,l.jsxs)(r.$n,{variant:"outline",size:"sm",onClick:es,disabled:!w?.has9Router,loading:A,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,l.jsxs)(r.$n,{variant:"ghost",size:"sm",onClick:()=>W(!0),children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]})]})]}),(0,l.jsx)(r.rq,{isOpen:L,onClose:()=>F(!1),onSelect:e=>{K?(z(t=>({...t,[K]:e.value})),D(null)):R(e.value),F(!1)},selectedModel:U,activeProviders:c,modelAliases:q,title:"Select Model for Open Claw"}),(0,l.jsx)(r.uR,{isOpen:B,onClose:()=>W(!1),title:"Open Claw - Manual Configuration",configs:(N=I&&I.trim()?I:m?"<API_KEY_FROM_DASHBOARD>":"sk_9router",[{filename:"~/.openclaw/openclaw.json",content:JSON.stringify({agents:{defaults:{model:{primary:`9router/${U||"provider/model-id"}`}}},models:{providers:{"9router":{baseUrl:ee(),apiKey:N,api:"openai-completions",models:[{id:U||"provider/model-id",name:(U||"provider/model-id").split("/").pop()}]}}}},null,2)}])})]})}let w="/api/cli-tools/hermes-settings";function k({tool:e,isExpanded:t,onToggle:s,baseUrl:n,hasActiveProviders:o,apiKeys:d,activeProviders:c,cloudEnabled:m,initialStatus:p,tunnelEnabled:h,tunnelPublicUrl:f,tailscaleEnabled:y,tailscaleUrl:b}){let j,[N,v]=(0,a.useState)(p||null),[C,S]=(0,a.useState)(!1),[_,E]=(0,a.useState)(!1),[A,O]=(0,a.useState)(!1),[M,P]=(0,a.useState)(null),[I,$]=(0,a.useState)(""),[U,R]=(0,a.useState)(""),[T,z]=(0,a.useState)(!1),[K,D]=(0,a.useState)({}),[L,F]=(0,a.useState)(!1),[q,H]=(0,a.useState)(""),B=(0,a.useRef)(!1),W=(()=>{if(!N?.installed)return null;let e=N.settings?.model;return e?.base_url?g(e.base_url,{tunnelPublicUrl:f,tailscaleUrl:b})?"configured":"other":"not_configured"})();(0,a.useEffect)(()=>{d?.length>0&&!I&&$(d[0].key)},[d,I]),(0,a.useEffect)(()=>{p&&v(p)},[p]),(0,a.useEffect)(()=>{t&&!N&&(G(),J()),t&&J()},[t]);let J=async()=>{try{let e=await fetch("/api/models/alias"),t=await e.json();e.ok&&D(t.aliases||{})}catch(e){console.log("Error fetching model aliases:",e)}};(0,a.useEffect)(()=>{if(N?.installed&&!B.current){B.current=!0;let e=N.settings?.model;e?.default&&R(e.default)}},[N]);let G=async()=>{S(!0);try{let e=await fetch(w),t=await e.json();v(t)}catch(e){v({installed:!1,error:e.message})}finally{S(!1)}},V=()=>{let e=q||window.location.origin.replace("://localhost","://127.0.0.1");return e.endsWith("/v1")?e:`${e}/v1`},Y=async()=>{E(!0),P(null);try{let e=I?.trim()||(d?.length>0?d[0].key:null)||(m?null:"sk_9router"),t=await fetch(w,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:V(),apiKey:e,model:U})}),s=await t.json();t.ok?(P({type:"success",text:"Settings applied successfully!"}),G()):P({type:"error",text:s.error||"Failed to apply settings"})}catch(e){P({type:"error",text:e.message})}finally{E(!1)}},Z=async()=>{O(!0),P(null);try{let e=await fetch(w,{method:"DELETE"}),t=await e.json();e.ok?(P({type:"success",text:"Settings reset successfully!"}),R(""),G()):P({type:"error",text:t.error||"Failed to reset settings"})}catch(e){P({type:"error",text:e.message})}finally{O(!1)}};return(0,l.jsxs)(r.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,l.jsxs)("div",{className:"flex items-start justify-between gap-3 hover:cursor-pointer sm:items-center",onClick:s,children:[(0,l.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,l.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,l.jsx)(i.default,{src:"/providers/hermes.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,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[(0,l.jsx)("h3",{className:"font-medium text-sm",children:e.name}),"configured"===W&&(0,l.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"===W&&(0,l.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"===W&&(0,l.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,l.jsx)("p",{className:"text-xs text-text-muted truncate",children:e.description})]})]}),(0,l.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,l.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[C&&(0,l.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,l.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,l.jsx)("span",{children:"Checking Hermes Agent..."})]}),!C&&N&&!N.installed&&(0,l.jsx)("div",{className:"flex flex-col gap-4",children:(0,l.jsxs)("div",{className:"flex flex-col gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,l.jsxs)("div",{className:"flex items-start gap-3",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,l.jsxs)("div",{className:"flex-1",children:[(0,l.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:"Hermes Agent not detected locally"}),(0,l.jsx)("p",{className:"text-sm text-text-muted",children:"Install: curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash"})]})]}),(0,l.jsx)("div",{className:"flex flex-col sm:flex-row sm:items-center gap-2 pl-0 sm:pl-9",children:(0,l.jsxs)(r.$n,{variant:"secondary",size:"sm",onClick:()=>F(!0),className:"w-full sm:w-auto !bg-yellow-500/20 !border-yellow-500/40 !text-yellow-700 dark:!text-yellow-300 hover:!bg-yellow-500/30",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:"content_copy"}),"Manual Config"]})})]})}),!C&&N?.installed&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Select Endpoint"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsx)(x,{value:q||V(),onChange:H,requiresExternalUrl:e.requiresExternalUrl,tunnelEnabled:h,tunnelPublicUrl:f,tailscaleEnabled:y,tailscaleUrl:b})]}),N?.settings?.model?.base_url&&(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Current"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsx)("span",{className:"min-w-0 truncate rounded bg-surface/40 px-2 py-2 text-xs text-text-muted sm:py-1.5",children:N.settings.model.base_url})]}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"API Key"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsx)(u,{value:I,onChange:$,apiKeys:d,cloudEnabled:m})]}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Default Model"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsxs)("div",{className:"relative w-full min-w-0",children:[(0,l.jsx)("input",{type:"text",value:U,onChange:e=>R(e.target.value),placeholder:"provider/model-id",className:"w-full min-w-0 pl-2 pr-7 py-2 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50 sm:py-1.5"}),U&&(0,l.jsx)("button",{onClick:()=>R(""),className:"absolute right-1 top-1/2 -translate-y-1/2 p-0.5 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]}),(0,l.jsx)("button",{onClick:()=>z(!0),disabled:!o,className:`w-full sm:w-auto rounded border px-2 py-2 text-xs transition-colors sm:py-1.5 whitespace-nowrap sm:shrink-0 ${o?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select"})]})]}),M&&(0,l.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===M.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===M.type?"check_circle":"error"}),(0,l.jsx)("span",{children:M.text})]}),(0,l.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-center gap-2",children:[(0,l.jsxs)(r.$n,{variant:"primary",size:"sm",onClick:Y,disabled:!U,loading:_,className:"w-full sm:w-auto",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,l.jsxs)(r.$n,{variant:"outline",size:"sm",onClick:Z,disabled:!N?.has9Router,loading:A,className:"w-full sm:w-auto",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,l.jsxs)(r.$n,{variant:"ghost",size:"sm",onClick:()=>F(!0),className:"w-full sm:w-auto",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]})]})]}),(0,l.jsx)(r.rq,{isOpen:T,onClose:()=>z(!1),onSelect:e=>{R(e.value),z(!1)},selectedModel:U,activeProviders:c,modelAliases:K,title:"Select Model for Hermes Agent"}),(0,l.jsx)(r.uR,{isOpen:L,onClose:()=>F(!1),title:"Hermes Agent - Manual Configuration",configs:(j=I&&I.trim()?I:m?"<API_KEY_FROM_DASHBOARD>":"sk_9router",[{filename:"~/.hermes/config.yaml",content:`model:
13
- default: "${U||"provider/model-id"}"
14
- provider: "custom"
15
- base_url: "${V()}"
16
- `},{filename:"~/.hermes/.env",content:`OPENAI_API_KEY=${j}
17
- `}])})]})}var C=s(96459);function S({toolId:e,tool:t,isExpanded:s,onToggle:n,baseUrl:o,apiKeys:d,activeProviders:c=[],cloudEnabled:m=!1,tunnelEnabled:x=!1}){let[p,h]=(0,a.useState)(null),[g,f]=(0,a.useState)(!1),[y,b]=(0,a.useState)(""),[j,N]=(0,a.useState)(()=>d?.length>0?d[0].key:""),v=e=>{let t=j&&j.trim()?j:m?"your-api-key":"sk_9router",s=o||"http://localhost:20128",l=s.endsWith("/v1")?s:`${s}/v1`;return e.replace(/\{\{baseUrl\}\}/g,l).replace(/\{\{apiKey\}\}/g,t).replace(/\{\{model\}\}/g,y||"provider/model-id")},{copy:w}=(0,C.C)(),k=async(e,t)=>{await w(v(e),`toolcard-${t}`),h(t),setTimeout(()=>h(null),2e3)},_=c.length>0,E=()=>(!t.requiresExternalUrl||!!m||!!x)&&(!t.requiresCloud||!!m);return(0,l.jsxs)(r.Zp,{padding:"xs",className:"overflow-hidden overflow-x-hidden",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between hover:cursor-pointer",onClick:n,children:[(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"size-8 rounded-lg flex items-center justify-center shrink-0",children:t.image?(0,l.jsx)(i.default,{src:t.image,alt:t.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:e=>{e.target.style.display="none"}}):t.icon?(0,l.jsx)("span",{className:"material-symbols-outlined text-xl",style:{color:t.color},children:t.icon}):(0,l.jsx)(i.default,{src:`/providers/${e}.png`,alt:t.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:e=>{e.target.style.display="none"}})}),(0,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsx)("h3",{className:"font-medium text-sm",children:t.name}),(0,l.jsx)("p",{className:"text-xs text-text-muted truncate",children:t.description})]})]}),(0,l.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${s?"rotate-180":""}`,children:"expand_more"})]}),s&&(0,l.jsx)("div",{className:"mt-6 pt-6 border-t border-border",children:t.guideSteps?(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[t.notes&&0!==t.notes.length?(0,l.jsx)("div",{className:"flex flex-col gap-2 mb-4",children:t.notes.map((e,t)=>{if("cloudCheck"===e.type&&(m||x))return null;let s="warning"===e.type,a="cloudCheck"===e.type&&!m&&!x,r="bg-blue-500/10 border-blue-500/30",i="text-blue-600 dark:text-blue-400",n="text-blue-500",o="info";return s?(r="bg-yellow-500/10 border-yellow-500/30",i="text-yellow-600 dark:text-yellow-400",n="text-yellow-500",o="warning"):a&&(r="bg-red-500/10 border-red-500/30",i="text-red-600 dark:text-red-400",n="text-red-500",o="error"),(0,l.jsxs)("div",{className:`flex items-start gap-3 p-3 rounded-lg border ${r}`,children:[(0,l.jsx)("span",{className:`material-symbols-outlined text-lg ${n}`,children:o}),(0,l.jsx)("p",{className:`text-sm ${i}`,children:e.text})]},t)})}):null,E()&&t.guideSteps.map(e=>(0,l.jsxs)("div",{className:"flex items-start gap-4",children:[(0,l.jsx)("div",{className:"size-8 rounded-full flex items-center justify-center shrink-0 text-sm font-semibold text-white",style:{backgroundColor:t.color},children:e.step}),(0,l.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,l.jsx)("p",{className:"font-medium text-text",children:e.title}),e.desc&&(0,l.jsx)("p",{className:"text-sm text-text-muted mt-0.5",children:e.desc}),"apiKeySelector"===e.type&&(0,l.jsx)("div",{className:"mt-2 flex flex-col sm:flex-row sm:items-center gap-2",children:(0,l.jsx)(u,{value:j,onChange:N,apiKeys:d,cloudEnabled:m,className:"flex-1"})}),"modelSelector"===e.type&&(0,l.jsxs)("div",{className:"mt-2 flex flex-col sm:flex-row sm:items-center gap-2",children:[(0,l.jsx)("input",{type:"text",value:y,onChange:e=>b(e.target.value),placeholder:"provider/model-id",className:"w-full sm:w-auto flex-1 px-3 py-2 bg-bg-secondary rounded-lg text-sm border border-border focus:outline-none focus:ring-1 focus:ring-primary/50"}),(0,l.jsx)("button",{onClick:()=>f(!0),disabled:!_,className:`shrink-0 px-3 py-2 rounded-lg border text-sm transition-colors ${_?"bg-bg-secondary border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select Model"}),y&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("button",{onClick:()=>k(y,"model"),className:"shrink-0 px-3 py-2 bg-bg-secondary hover:bg-bg-tertiary rounded-lg border border-border transition-colors",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-lg",children:"model"===p?"check":"content_copy"})}),(0,l.jsx)("button",{onClick:()=>b(""),className:"p-2 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-lg",children:"close"})})]})]}),e.value&&(0,l.jsxs)("div",{className:"mt-2 flex flex-col sm:flex-row sm:items-center gap-2",children:[(0,l.jsx)("code",{className:"w-full sm:w-auto flex-1 px-3 py-2 bg-bg-secondary rounded-lg text-sm font-mono border border-border truncate",children:v(e.value)}),e.copyable&&(0,l.jsx)("button",{onClick:()=>k(e.value,`${e.step}-${e.title}`),className:"shrink-0 px-3 py-2 bg-bg-secondary hover:bg-bg-tertiary rounded-lg border border-border transition-colors",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-lg",children:p===`${e.step}-${e.title}`?"check":"content_copy"})})]})]})]},e.step)),E()&&t.codeBlock&&(0,l.jsxs)("div",{className:"mt-2",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,l.jsx)("span",{className:"text-xs text-text-muted uppercase tracking-wide",children:t.codeBlock.language}),(0,l.jsxs)("button",{onClick:()=>k(t.codeBlock.code,"codeblock"),className:"flex items-center gap-1 px-2 py-1 text-xs bg-bg-secondary hover:bg-bg-tertiary rounded border border-border transition-colors",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-sm",children:"codeblock"===p?"check":"content_copy"}),"codeblock"===p?"Copied!":"Copy"]})]}),(0,l.jsx)("pre",{className:"p-4 bg-bg-secondary rounded-lg border border-border overflow-x-auto",children:(0,l.jsx)("code",{className:"text-sm font-mono whitespace-pre",children:v(t.codeBlock.code)})})]})]}):(0,l.jsx)("p",{className:"text-text-muted text-sm",children:"Coming soon..."})}),(0,l.jsx)(r.rq,{isOpen:g,onClose:()=>f(!1),onSelect:e=>{b(e.value)},selectedModel:y,activeProviders:c,title:"Select Model"})]})}function _({tool:e,isExpanded:t,onToggle:s,baseUrl:n,apiKeys:o,activeProviders:d,cloudEnabled:c,initialStatus:m,tunnelEnabled:p,tunnelPublicUrl:h,tailscaleEnabled:f,tailscaleUrl:y}){let b,j,N,v,w,[k,C]=(0,a.useState)(m||null),[S,E]=(0,a.useState)(!1),[A,O]=(0,a.useState)(!1),[M,P]=(0,a.useState)(!1),[I,$]=(0,a.useState)(null),[U,R]=(0,a.useState)(!1),[T,z]=(0,a.useState)(""),[K,D]=(0,a.useState)(""),[L,F]=(0,a.useState)(""),[q,H]=(0,a.useState)(!1),[B,W]=(0,a.useState)(!1),[J,G]=(0,a.useState)({}),[V,Y]=(0,a.useState)(!1),[Z,Q]=(0,a.useState)(""),[X,ee]=(0,a.useState)([]),[et,es]=(0,a.useState)("");(0,a.useEffect)(()=>{o?.length>0&&!T&&z(o[0].key)},[o,T]),(0,a.useEffect)(()=>{m&&C(m)},[m]),(0,a.useEffect)(()=>{t&&!k&&(ei(),el()),t&&el()},[t]),(0,a.useEffect)(()=>{k?.opencode?.models&&ee(k.opencode.models),k?.opencode?.activeModel&&es(k.opencode.activeModel),k?.config?.agent?.explorer?.model?.startsWith("9router/")&&F(k.config.agent.explorer.model.replace("9router/",""))},[k]);let el=async()=>{try{let e=await fetch("/api/models/alias"),t=await e.json();e.ok&&G(t.aliases||{})}catch(e){console.log("Error fetching model aliases:",e)}},ea=k?.installed?k.config&&k.has9Router?g(k.config?.provider?.["9router"]?.options?.baseURL||"",{tunnelPublicUrl:h,tailscaleUrl:y})?"configured":"other":"not_configured":null,er=()=>{let e=Z||n;return e.endsWith("/v1")?e:`${e}/v1`},ei=async()=>{E(!0);try{let e=await fetch("/api/cli-tools/opencode-settings"),t=await e.json();C(t)}catch(e){C({installed:!1,error:e.message})}finally{E(!1)}},en=async()=>{O(!0),$(null);try{let e=T&&T.trim()||c?T:"sk_9router",t=await fetch("/api/cli-tools/opencode-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:er(),apiKey:e,models:X,activeModel:""===et?"":et||X[0],subagentModel:L})}),s=await t.json();t.ok?($({type:"success",text:"Settings applied successfully!"}),ei()):$({type:"error",text:s.error||"Failed to apply settings"})}catch(e){$({type:"error",text:e.message})}finally{O(!1)}},eo=async()=>{P(!0),$(null);try{let e=await fetch("/api/cli-tools/opencode-settings",{method:"DELETE"}),t=await e.json();e.ok?($({type:"success",text:"Settings reset successfully!"}),D(""),F(""),ee([]),es(""),ei()):$({type:"error",text:t.error||"Failed to reset settings"})}catch(e){$({type:"error",text:e.message})}finally{P(!1)}};return(0,l.jsxs)(r.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,l.jsxs)("div",{className:"flex items-start justify-between gap-3 hover:cursor-pointer sm:items-center",onClick:s,children:[(0,l.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,l.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,l.jsx)(i.default,{src:"/providers/opencode.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,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[(0,l.jsx)("h3",{className:"font-medium text-sm",children:e.name}),"configured"===ea&&(0,l.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"===ea&&(0,l.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"===ea&&(0,l.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,l.jsx)("p",{className:"text-xs text-text-muted truncate",children:e.description})]})]}),(0,l.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,l.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[S&&(0,l.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,l.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,l.jsx)("span",{children:"Checking OpenCode CLI..."})]}),!S&&k&&!k.installed&&(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,l.jsxs)("div",{className:"flex flex-col gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,l.jsxs)("div",{className:"flex items-start gap-3",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,l.jsxs)("div",{className:"flex-1",children:[(0,l.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:"OpenCode CLI not detected locally"}),(0,l.jsx)("p",{className:"text-sm text-text-muted",children:"Manual configuration is still available if 9router is deployed on a remote server."})]})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2 pl-9",children:[(0,l.jsxs)(r.$n,{variant:"secondary",size:"sm",onClick:()=>Y(!0),className:"!bg-yellow-500/20 !border-yellow-500/40 !text-yellow-700 dark:!text-yellow-300 hover:!bg-yellow-500/30",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:"content_copy"}),"Manual Config"]}),(0,l.jsxs)(r.$n,{variant:"outline",size:"sm",onClick:()=>R(!U),children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:U?"expand_less":"help"}),U?"Hide":"How to Install"]})]})]}),U&&(0,l.jsxs)("div",{className:"p-4 bg-surface border border-border rounded-lg",children:[(0,l.jsx)("h4",{className:"font-medium mb-3",children:"Installation Guide"}),(0,l.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"text-text-muted mb-1",children:"macOS / Linux:"}),(0,l.jsx)("code",{className:"block px-3 py-2 bg-black/5 dark:bg-white/5 rounded font-mono text-xs",children:"npm install -g opencode-ai"})]}),(0,l.jsxs)("p",{className:"text-text-muted",children:["After installation, run ",(0,l.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"opencode"})," to verify."]})]})]})]}),!S&&k?.installed&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Select Endpoint"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsx)(x,{value:Z||Z||`${n}/v1`,onChange:Q,requiresExternalUrl:e.requiresExternalUrl,tunnelEnabled:p,tunnelPublicUrl:h,tailscaleEnabled:f,tailscaleUrl:y})]}),k?.config?.provider?.["9router"]?.options?.baseURL&&(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Current"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsx)("span",{className:"min-w-0 truncate rounded bg-surface/40 px-2 py-2 text-xs text-text-muted sm:py-1.5",children:k.config.provider["9router"].options.baseURL})]}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"API Key"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsx)(u,{value:T,onChange:z,apiKeys:o,cloudEnabled:c})]}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-start sm:gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right pt-1",children:"Models"}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px] mt-1.5",children:"arrow_forward"}),(0,l.jsxs)("div",{className:"flex-1 flex flex-col gap-2",children:[(0,l.jsx)("div",{className:"flex flex-wrap gap-1.5 min-h-[28px] px-2 py-1.5 bg-surface rounded border border-border",children:0===X.length?(0,l.jsx)("span",{className:"text-xs text-text-muted",children:"No models selected"}):X.map(e=>(0,l.jsxs)("span",{onClick:async()=>{if(e===et)try{(await fetch("/api/cli-tools/opencode-settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({clearActiveModel:!0})})).ok&&(es(""),ei())}catch(e){console.log("Error clearing active model:",e)}else es(e)},className:`inline-flex items-center gap-1 px-2 py-0.5 rounded text-xs cursor-pointer transition-colors ${e===et?"bg-primary/10 text-primary border border-primary":"bg-black/5 dark:bg-white/5 text-text-muted border border-transparent hover:border-border"}`,title:e===et?"Click to clear active model":"Click to set as active",children:[e===et&&(0,l.jsx)("span",{className:"material-symbols-outlined text-[10px]",children:"star"}),e,(0,l.jsx)("button",{onClick:async t=>{t.stopPropagation();try{if((await fetch(`/api/cli-tools/opencode-settings?model=${encodeURIComponent(e)}`,{method:"DELETE"})).ok){let t=X.filter(t=>t!==e);ee(t),et===e&&es(""),ei()}}catch(e){console.log("Error removing model:",e)}},className:"ml-0.5 hover:text-red-500",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"close"})})]},e))}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,l.jsx)("button",{onClick:()=>H(!0),disabled:!d?.length,className:`px-2 py-1 rounded border text-xs transition-colors ${d?.length?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Add Model"}),(0,l.jsx)("span",{className:"text-xs text-text-muted",children:X.length>0&&et?(0,l.jsxs)(l.Fragment,{children:["Active: ",(0,l.jsx)("span",{className:"text-primary",children:et})]}):X.length>0?(0,l.jsx)("span",{className:"text-yellow-500",children:"Click a model to set/clear active"}):"Select models to add"})]})]})]}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Subagent Model"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsx)("input",{type:"text",value:L,onChange:e=>F(e.target.value),placeholder:K||"provider/model-id (defaults to main model)",className:"w-full min-w-0 px-2 py-2 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50 sm:py-1.5"}),(0,l.jsx)("button",{onClick:()=>W(!0),disabled:!d?.length,className:`w-full sm:w-auto rounded border px-2 py-2 text-xs transition-colors sm:py-1.5 whitespace-nowrap sm:shrink-0 ${d?.length?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select Model"}),L&&(0,l.jsx)("button",{onClick:()=>F(""),className:"p-1 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear (will use main model)",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]})]}),I&&(0,l.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===I.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===I.type?"check_circle":"error"}),(0,l.jsx)("span",{children:I.text})]}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:flex sm:items-center",children:[(0,l.jsxs)(r.$n,{variant:"primary",size:"sm",onClick:en,disabled:0===X.length,loading:A,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,l.jsxs)(r.$n,{variant:"outline",size:"sm",onClick:eo,disabled:!k.has9Router,loading:M,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,l.jsxs)(r.$n,{variant:"ghost",size:"sm",onClick:()=>Y(!0),children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]})]})]}),(0,l.jsx)(r.rq,{isOpen:q,onClose:()=>H(!1),onSelect:e=>{!X.includes(e.value)&&(ee([...X,e.value]),et||es(e.value)),H(!1)},selectedModel:null,activeProviders:d,modelAliases:J,title:"Add Model for OpenCode"}),(0,l.jsx)(r.rq,{isOpen:B,onClose:()=>W(!1),onSelect:e=>{F(e.value),W(!1)},selectedModel:L,activeProviders:d,modelAliases:J,title:"Select Subagent Model for OpenCode"}),(0,l.jsx)(r.uR,{isOpen:V,onClose:()=>Y(!1),title:"OpenCode - Manual Configuration",configs:(b=T&&T.trim()?T:c?"<API_KEY_FROM_DASHBOARD>":"sk_9router",j=X.length>0?X:["provider/model-id"],N=et||X[0]||j[0],v=L||N,w={},j.forEach(e=>{w[e]={name:e}}),[{filename:"~/.config/opencode/opencode.json",content:JSON.stringify({provider:{"9router":{npm:"@ai-sdk/openai-compatible",options:{baseURL:er(),apiKey:b},models:w}},model:`9router/${N}`,agent:{explorer:{description:"Fast explorer subagent for codebase exploration",mode:"subagent",model:`9router/${v}`}}},null,2)}])})]})}let E="/api/cli-tools/cowork-settings",A=e=>(e||"").replace(/\/v1\/?$/,"");function O({tool:e,isExpanded:t,onToggle:s,baseUrl:n,apiKeys:o,activeProviders:d,hasActiveProviders:c,cloudEnabled:m,cloudUrl:p,tunnelEnabled:h,tunnelPublicUrl:g,tailscaleEnabled:f,tailscaleUrl:y,initialStatus:b}){let j,N,v,w,[k,C]=(0,a.useState)(b||null),[S,_]=(0,a.useState)(!1),[M,P]=(0,a.useState)(!1),[I,$]=(0,a.useState)(!1),[U,R]=(0,a.useState)(null),[T,z]=(0,a.useState)(""),[K,D]=(0,a.useState)([]),[L,F]=(0,a.useState)(!1),[q,H]=(0,a.useState)(""),[B,W]=(0,a.useState)([]),[J,G]=(0,a.useState)([]),[V,Y]=(0,a.useState)([]),[Z,Q]=(0,a.useState)(!1),[X,ee]=(0,a.useState)(!1),[et,es]=(0,a.useState)(!1),[el,ea]=(0,a.useState)({type:"url",name:"",url:"",command:"",args:""});(0,a.useEffect)(()=>{o?.length>0&&!T&&z(o[0].key)},[o,T]),(0,a.useEffect)(()=>{b&&C(b)},[b]),(0,a.useEffect)(()=>{t&&!k&&er()},[t]),(0,a.useEffect)(()=>{k?.cowork?.models?.length&&D(k.cowork.models),k?.cowork?.baseUrl&&!q&&H(A(k.cowork.baseUrl)),Array.isArray(k?.cowork?.plugins)&&k.cowork.plugins.length>0?W(k.cowork.plugins):0===B.length&&Array.isArray(k?.defaultPlugins)&&W(k.defaultPlugins),Array.isArray(k?.cowork?.localPlugins)&&G(k.cowork.localPlugins),Array.isArray(k?.cowork?.customPlugins)&&k.cowork.customPlugins.length>0&&Y(k.cowork.customPlugins)},[k]);let er=async()=>{_(!0);try{let e=await fetch(E),t=await e.json();C(t)}catch(e){C({installed:!1,error:e.message})}finally{_(!1)}},ei=()=>{let e;return(e=(q||"").replace(/\/+$/,""))?/\/v1$/.test(e)?e:`${e}/v1`:""},en=k?.installed?k?.cowork?.baseUrl?k.has9Router?"configured":"other":"not_configured":null,eo=async()=>{R(null);let e=ei();if(0===K.length)return void R({type:"error",text:"Please select at least one model"});P(!0);try{let t=T?.trim()||(o?.length>0?o[0].key:null)||(m?null:"sk_9router"),s=await fetch(E,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:e,apiKey:t,models:K,plugins:B,localPlugins:J,customPlugins:V})}),l=await s.json();s.ok?(R({type:"success",text:"Settings applied. Quit & reopen Claude Desktop to load."}),er()):R({type:"error",text:l.error||"Failed to apply settings"})}catch(e){R({type:"error",text:e.message})}finally{P(!1)}},ed=async({name:e,models:t})=>{try{let s=await fetch("/api/combos",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:e,models:t})});if(!s.ok){let e=await s.json();R({type:"error",text:e.error||"Failed to create combo"});return}K.includes(e)||D([...K,e]),Q(!1),R({type:"success",text:`Combo "${e}" created and added.`})}catch(e){R({type:"error",text:e.message})}},ec=async()=>{$(!0),R(null);try{let e=await fetch(E,{method:"DELETE"}),t=await e.json();e.ok?(R({type:"success",text:"Settings reset successfully"}),D([]),W(k?.defaultPlugins||[]),G([]),Y([]),er()):R({type:"error",text:t.error||"Failed to reset"})}catch(e){R({type:"error",text:e.message})}finally{$(!1)}};return(0,l.jsxs)(r.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,l.jsxs)("div",{className:"flex items-start justify-between gap-3 hover:cursor-pointer sm:items-center",onClick:s,children:[(0,l.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,l.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,l.jsx)(i.default,{src:e.image,alt:e.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:e=>{e.target.style.display="none"}})}),(0,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[(0,l.jsx)("h3",{className:"font-medium text-sm",children:e.name}),"configured"===en&&(0,l.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"===en&&(0,l.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"===en&&(0,l.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,l.jsx)("p",{className:"text-xs text-text-muted truncate",children:e.description})]})]}),(0,l.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,l.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[S&&(0,l.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,l.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,l.jsx)("span",{children:"Checking Claude Cowork..."})]}),!S&&k&&!k.installed&&(0,l.jsxs)("div",{className:"flex flex-col gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,l.jsxs)("div",{className:"flex items-start gap-3",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,l.jsxs)("div",{className:"flex-1",children:[(0,l.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:"Claude Desktop (Cowork mode) not detected"}),(0,l.jsx)("p",{className:"text-sm text-text-muted",children:"Open Claude Desktop → Help → Troubleshooting → Enable Developer mode → Configure third-party inference, then return here."})]})]}),(0,l.jsx)("div",{className:"pl-9",children:(0,l.jsxs)(r.$n,{variant:"secondary",size:"sm",onClick:()=>F(!0),className:"!bg-yellow-500/20 !border-yellow-500/40 !text-yellow-700 dark:!text-yellow-300 hover:!bg-yellow-500/30",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:"content_copy"}),"Manual Config"]})})]}),!S&&k?.installed&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Select Endpoint"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsx)(x,{value:ei(),onChange:e=>H(A(e)),tunnelEnabled:h,tunnelPublicUrl:g,tailscaleEnabled:f,tailscaleUrl:y,cloudEnabled:m,cloudUrl:p})]}),k?.cowork?.baseUrl&&(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Current"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsx)("span",{className:"min-w-0 truncate rounded bg-surface/40 px-2 py-2 text-xs text-text-muted sm:py-1.5",children:k.cowork.baseUrl})]}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"API Key"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsx)(u,{value:T,onChange:z,apiKeys:o,cloudEnabled:m})]}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Models"}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,l.jsxs)("div",{className:"flex-1 flex items-center gap-2",children:[(0,l.jsx)("div",{className:"flex-1 flex flex-wrap gap-1.5 min-h-[28px] px-2 py-1.5 bg-surface rounded border border-border",children:0===K.length?(0,l.jsx)("span",{className:"text-xs text-text-muted",children:"No models selected"}):K.map(e=>(0,l.jsxs)("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded text-xs bg-black/5 dark:bg-white/5 text-text-muted border border-transparent hover:border-border",children:[e,(0,l.jsx)("button",{onClick:()=>D(t=>t.filter(t=>t!==e)),className:"ml-0.5 hover:text-red-500",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"close"})})]},e))}),(0,l.jsx)("button",{onClick:()=>Q(!0),disabled:!c,className:`shrink-0 px-2 py-1.5 rounded border text-xs whitespace-nowrap transition-colors ${c?"bg-primary/10 border-primary/40 text-primary hover:bg-primary/20 cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"+ Combo"})]})]}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-start sm:gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right pt-2",children:"MCP"}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px] mt-2",children:"arrow_forward"}),(0,l.jsxs)("div",{className:"flex-1 flex flex-col gap-1",children:[B.filter(e=>"exa"!==e.name).map(e=>(0,l.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1 bg-surface rounded border border-border",children:[(0,l.jsx)("span",{className:"text-xs font-medium min-w-0 truncate flex-shrink-0",children:e.title||e.name}),e.oauth&&(0,l.jsx)("span",{className:"text-[8px] text-amber-600 shrink-0",children:"OAuth"}),(0,l.jsxs)("div",{className:"flex-1 flex flex-wrap gap-1 overflow-hidden",style:{maxHeight:"1.5rem"},children:[Array.isArray(e.toolNames)&&e.toolNames.slice(0,6).map(e=>(0,l.jsx)("span",{className:"text-[9px] px-1 py-0.5 rounded bg-black/5 dark:bg-white/5 text-text-muted whitespace-nowrap",children:e},e)),Array.isArray(e.toolNames)&&e.toolNames.length>6&&(0,l.jsxs)("span",{className:"text-[9px] px-1 py-0.5 rounded bg-black/5 dark:bg-white/5 text-text-muted whitespace-nowrap",children:["+",e.toolNames.length-6]})]}),(0,l.jsx)("button",{onClick:()=>{var t;return t=e.name,void W(B.filter(e=>e.name!==t))},className:"shrink-0 hover:text-red-500 ml-auto",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"close"})})]},e.name)),V.map(e=>(0,l.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1 bg-surface rounded border border-border",children:[(0,l.jsx)("span",{className:"text-xs font-medium min-w-0 truncate flex-shrink-0",children:e.name}),(0,l.jsx)("span",{className:"text-[8px] px-1 py-0.5 rounded bg-blue-500/10 text-blue-500 shrink-0",children:"custom"}),(0,l.jsx)("span",{className:"flex-1 text-[9px] text-text-muted truncate",children:e.url||e.command}),(0,l.jsx)("button",{onClick:()=>Y(V.filter(t=>t.name!==e.name)),className:"shrink-0 hover:text-red-500 ml-auto",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"close"})})]},e.name)),0===B.filter(e=>"exa"!==e.name).length&&0===V.length&&(0,l.jsx)("div",{className:"px-2 py-1.5 bg-surface rounded border border-border text-xs text-text-muted",children:"No MCPs added"}),(0,l.jsxs)("div",{className:"flex items-center gap-2 mt-0.5",children:[(0,l.jsx)("button",{onClick:()=>ee(!0),className:"px-2 py-1 rounded border text-xs bg-primary/10 border-primary/40 text-primary hover:bg-primary/20 cursor-pointer whitespace-nowrap",children:"+ Browse"}),(0,l.jsx)("button",{onClick:()=>{ea({type:"url",name:"",url:"",command:"",args:""}),es(!0)},className:"px-2 py-1 rounded border text-xs bg-surface border-border text-text-muted hover:border-primary hover:text-primary cursor-pointer whitespace-nowrap",children:"+ Custom"}),(0,l.jsx)("a",{href:"https://mcp.so",target:"_blank",rel:"noopener noreferrer",className:"text-[10px] text-text-muted hover:text-primary underline ml-auto",children:"Find MCPs →"})]})]})]}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-start sm:gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right pt-1",children:"Tools"}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px] mt-1.5",children:"arrow_forward"}),(0,l.jsxs)("div",{className:"flex-1 flex flex-col gap-1.5",children:[(j=B.some(e=>"exa"===e.name),N=(k?.defaultPlugins||[]).find(e=>"exa"===e.name),(0,l.jsxs)("label",{className:"flex items-start gap-2 cursor-pointer px-2 py-1.5 bg-surface rounded border border-border",children:[(0,l.jsx)("input",{type:"checkbox",checked:j,onChange:e=>{e.target.checked&&N?W([...B.filter(e=>"exa"!==e.name),N]):W(B.filter(e=>"exa"!==e.name))},className:"mt-0.5"}),(0,l.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,l.jsx)("div",{className:"text-xs font-medium",children:"Web Search & Fetch (Exa)"}),(0,l.jsx)("p",{className:"text-[10px] text-text-muted leading-snug",children:"Replaces built-in WebSearch/WebFetch. Auto-strips duplicates from tool list."})]})]})),(()=>{let e=(k?.localStdioPlugins||[]).find(e=>"browsermcp"===e.name);if(!e)return null;let t=J.includes("browsermcp");return(0,l.jsxs)("label",{className:"flex items-start gap-2 cursor-pointer px-2 py-1.5 bg-surface rounded border border-border",children:[(0,l.jsx)("input",{type:"checkbox",checked:t,onChange:e=>G(e.target.checked?[...J,"browsermcp"]:J.filter(e=>"browsermcp"!==e)),className:"mt-0.5"}),(0,l.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,l.jsx)("div",{className:"text-xs font-medium",children:"Browser Control (Browser MCP)"}),(0,l.jsxs)("p",{className:"text-[10px] text-text-muted leading-snug",children:["Controls your running Chrome. Auto-strips Cowork's built-in browser tools."," ",(0,l.jsx)("a",{href:e.extensionUrl,target:"_blank",rel:"noopener noreferrer",className:"text-primary underline",children:"Install Chrome extension"})]})]})]})})()]})]}),Array.isArray(k?.localStdioPlugins)&&k.localStdioPlugins.filter(e=>"browsermcp"!==e.name).length>0&&(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-start sm:gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right pt-1",children:"Local Plugins"}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px] mt-1.5",children:"arrow_forward"}),(0,l.jsxs)("div",{className:"flex-1 flex flex-col gap-2",children:[(0,l.jsx)("div",{className:"flex flex-col gap-1.5 px-2 py-1.5 bg-surface rounded border border-border",children:k.localStdioPlugins.filter(e=>"browsermcp"!==e.name).map(e=>{let t=J.includes(e.name);return(0,l.jsxs)("label",{className:"flex items-start gap-2 cursor-pointer",children:[(0,l.jsx)("input",{type:"checkbox",checked:t,onChange:t=>G(t.target.checked?[...J,e.name]:J.filter(t=>t!==e.name)),className:"mt-0.5"}),(0,l.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,l.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[(0,l.jsx)("span",{className:"text-xs font-medium",children:e.title}),(0,l.jsx)("span",{className:"text-[8px] text-amber-600",children:"stdio"})]}),(0,l.jsx)("p",{className:"text-[10px] text-text-muted leading-snug",children:e.description}),e.extensionUrl&&(0,l.jsx)("a",{href:e.extensionUrl,target:"_blank",rel:"noopener noreferrer",className:"text-[10px] text-primary underline",children:"Install Chrome extension"})]})]},e.name)})}),(0,l.jsxs)("p",{className:"text-[10px] text-text-muted leading-snug",children:["⚠️ Local plugins run as subprocess via ",(0,l.jsx)("code",{className:"px-1 py-0.5 rounded bg-black/5 dark:bg-white/5",children:"npx"}),". Requires Node.js installed."]})]})]})]}),U&&(0,l.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===U.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===U.type?"check_circle":"error"}),(0,l.jsx)("span",{children:U.text})]}),(0,l.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-center gap-2",children:[(0,l.jsxs)(r.$n,{variant:"primary",size:"sm",onClick:eo,disabled:0===K.length,loading:M,className:"w-full sm:w-auto",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,l.jsxs)(r.$n,{variant:"outline",size:"sm",onClick:ec,disabled:!k.has9Router,loading:I,className:"w-full sm:w-auto",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,l.jsxs)(r.$n,{variant:"ghost",size:"sm",onClick:()=>F(!0),className:"w-full sm:w-auto",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]})]})]}),(0,l.jsx)(r.uR,{isOpen:L,onClose:()=>F(!1),title:"Claude Cowork - Manual Configuration",configs:(v=T&&T.trim()?T:m?"<API_KEY_FROM_DASHBOARD>":"sk_9router",w=K.length>0?K:["provider/model-id"],[{filename:"~/Library/Application Support/Claude-3p/configLibrary/<appliedId>.json",content:JSON.stringify({inferenceProvider:"gateway",inferenceGatewayBaseUrl:ei()||"https://your-public-host/v1",inferenceGatewayApiKey:v,inferenceModels:w.map(e=>({name:e}))},null,2)}])}),(0,l.jsx)(r.CK,{isOpen:Z,combo:null,onClose:()=>Q(!1),onSave:ed,activeProviders:d,forcePrefix:"claude-",title:"Create Cowork Combo"}),(0,l.jsx)(r.Nf,{isOpen:X,onClose:()=>ee(!1),onAdd:e=>{B.some(t=>t.name===e.name)||W([...B,e])},addedNames:B.map(e=>e.name)}),et&&(0,l.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/40",onClick:()=>es(!1),children:(0,l.jsxs)("div",{className:"bg-surface border border-border rounded-xl shadow-xl w-full max-w-sm mx-4 p-5 flex flex-col gap-4",onClick:e=>e.stopPropagation(),children:[(0,l.jsxs)("div",{className:"flex items-center justify-between",children:[(0,l.jsx)("h3",{className:"font-semibold text-sm",children:"Add Custom MCP"}),(0,l.jsx)("button",{onClick:()=>es(!1),className:"text-text-muted hover:text-text-main",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"close"})})]}),(0,l.jsxs)("div",{className:"flex gap-2",children:[(0,l.jsx)("button",{onClick:()=>ea(e=>({...e,type:"url"})),className:`flex-1 py-1.5 rounded border text-xs font-medium transition-colors ${"url"===el.type?"bg-primary/10 border-primary/40 text-primary":"border-border text-text-muted hover:border-primary/40"}`,children:"URL (SSE)"}),(0,l.jsx)("button",{onClick:()=>ea(e=>({...e,type:"cmd"})),className:`flex-1 py-1.5 rounded border text-xs font-medium transition-colors ${"cmd"===el.type?"bg-primary/10 border-primary/40 text-primary":"border-border text-text-muted hover:border-primary/40"}`,children:"Command (stdio)"})]}),(0,l.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,l.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,l.jsx)("label",{className:"text-[11px] text-text-muted font-medium",children:"Name"}),(0,l.jsx)("input",{type:"text",placeholder:"my-mcp",value:el.name,onChange:e=>ea(t=>({...t,name:e.target.value.replace(/\s+/g,"-").toLowerCase()})),className:"px-2 py-1.5 rounded border border-border bg-surface text-xs outline-none focus:border-primary"})]}),"url"===el.type?(0,l.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,l.jsx)("label",{className:"text-[11px] text-text-muted font-medium",children:"SSE URL"}),(0,l.jsx)("input",{type:"text",placeholder:"https://your-mcp-server.com/sse",value:el.url,onChange:e=>ea(t=>({...t,url:e.target.value})),className:"px-2 py-1.5 rounded border border-border bg-surface text-xs outline-none focus:border-primary"})]}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,l.jsx)("label",{className:"text-[11px] text-text-muted font-medium",children:"Command"}),(0,l.jsx)("input",{type:"text",placeholder:"npx",value:el.command,onChange:e=>ea(t=>({...t,command:e.target.value})),className:"px-2 py-1.5 rounded border border-border bg-surface text-xs outline-none focus:border-primary"})]}),(0,l.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,l.jsxs)("label",{className:"text-[11px] text-text-muted font-medium",children:["Args ",(0,l.jsx)("span",{className:"font-normal",children:"(comma-separated)"})]}),(0,l.jsx)("input",{type:"text",placeholder:"-y, @some/mcp-package",value:el.args,onChange:e=>ea(t=>({...t,args:e.target.value})),className:"px-2 py-1.5 rounded border border-border bg-surface text-xs outline-none focus:border-primary"})]})]})]}),(0,l.jsxs)("div",{className:"flex gap-2 justify-end",children:[(0,l.jsx)("button",{onClick:()=>es(!1),className:"px-3 py-1.5 rounded border border-border text-xs text-text-muted hover:bg-surface cursor-pointer",children:"Cancel"}),(0,l.jsx)("button",{onClick:()=>{let e=el.name.trim();if(e){if("url"===el.type){if(!el.url.trim())return;Y(t=>[...t.filter(t=>t.name!==e),{name:e,url:el.url.trim(),transport:"sse",custom:!0}])}else{if(!el.command.trim())return;let t=el.args.split(",").map(e=>e.trim()).filter(Boolean);Y(s=>[...s.filter(t=>t.name!==e),{name:e,command:el.command.trim(),args:t,custom:!0}])}es(!1)}},className:"px-3 py-1.5 rounded bg-primary text-white text-xs font-medium hover:opacity-90 cursor-pointer",children:"Add"})]})]})})]})}function M({tool:e,isExpanded:t,onToggle:s,baseUrl:n,apiKeys:o,activeProviders:d,cloudEnabled:c,initialStatus:m,tunnelEnabled:p,tunnelPublicUrl:h,tailscaleEnabled:f,tailscaleUrl:y}){let b,j,[N,v]=(0,a.useState)(m||null),[w,k]=(0,a.useState)(!1),[C,S]=(0,a.useState)(!1),[_,E]=(0,a.useState)(!1),[A,O]=(0,a.useState)(null),[P,I]=(0,a.useState)(""),[$,U]=(0,a.useState)(""),[R,T]=(0,a.useState)({}),[z,K]=(0,a.useState)(!1),[D,L]=(0,a.useState)([]),[F,q]=(0,a.useState)(!1);(0,a.useEffect)(()=>{o?.length>0&&!P&&I(o[0].key)},[o,P]),(0,a.useEffect)(()=>{m&&v(m)},[m]),(0,a.useEffect)(()=>{t&&!N&&(J(),H()),t&&H()},[t]),(0,a.useEffect)(()=>{if(N?.config&&Array.isArray(N.config)&&0===D.length){let e=N.config.find(e=>"9Router"===e.name);e?.models?.length>0&&L(e.models.map(e=>e.id))}},[N]);let H=async()=>{try{let e=await fetch("/api/models/alias"),t=await e.json();e.ok&&T(t.aliases||{})}catch(e){console.log("Error fetching model aliases:",e)}},B=N?N.has9Router?g(N.currentUrl||"",{tunnelPublicUrl:h,tailscaleUrl:y})?"configured":"other":"not_configured":null,W=()=>{let e=$||n;return e.endsWith("/v1")?e:`${e}/v1`},J=async()=>{k(!0);try{let e=await fetch("/api/cli-tools/copilot-settings"),t=await e.json();v(t)}catch(e){v({error:e.message})}finally{k(!1)}},G=async()=>{S(!0),O(null);try{let e=P&&P.trim()||c?P:"sk_9router",t=await fetch("/api/cli-tools/copilot-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:W(),apiKey:e,models:D})}),s=await t.json();t.ok?(O({type:"success",text:s.message||"Settings applied! Reload VS Code."}),J()):O({type:"error",text:s.error||"Failed to apply settings"})}catch(e){O({type:"error",text:e.message})}finally{S(!1)}},V=async()=>{E(!0),O(null);try{let e=await fetch("/api/cli-tools/copilot-settings",{method:"DELETE"}),t=await e.json();e.ok?(O({type:"success",text:"Settings reset successfully!"}),L([]),J()):O({type:"error",text:t.error||"Failed to reset settings"})}catch(e){O({type:"error",text:e.message})}finally{E(!1)}};return(0,l.jsxs)(r.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,l.jsxs)("div",{className:"flex items-start justify-between gap-3 hover:cursor-pointer sm:items-center",onClick:s,children:[(0,l.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,l.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,l.jsx)(i.default,{src:"/providers/copilot.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,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[(0,l.jsx)("h3",{className:"font-medium text-sm",children:e.name}),"configured"===B&&(0,l.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"===B&&(0,l.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"===B&&(0,l.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,l.jsx)("p",{className:"text-xs text-text-muted truncate",children:e.description})]})]}),(0,l.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,l.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[w&&(0,l.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,l.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,l.jsx)("span",{children:"Checking Copilot config..."})]}),!w&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"flex items-start gap-3 p-3 bg-blue-500/10 border border-blue-500/30 rounded-lg",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-blue-500 text-lg",children:"info"}),(0,l.jsxs)("div",{className:"text-xs text-blue-700 dark:text-blue-300",children:[(0,l.jsxs)("p",{className:"font-medium",children:["Writes to ",(0,l.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/10 rounded",children:"chatLanguageModels.json"})]}),(0,l.jsx)("p",{className:"mt-0.5 opacity-80",children:"Reload VS Code after applying for changes to take effect."})]})]}),(0,l.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Select Endpoint"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsx)(x,{value:$||$||`${n}/v1`,onChange:U,requiresExternalUrl:e.requiresExternalUrl,tunnelEnabled:p,tunnelPublicUrl:h,tailscaleEnabled:f,tailscaleUrl:y})]}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"API Key"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsx)(u,{value:P,onChange:I,apiKeys:o,cloudEnabled:c})]}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-start sm:gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right pt-1",children:"Models"}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px] mt-1.5",children:"arrow_forward"}),(0,l.jsxs)("div",{className:"flex-1 flex flex-col gap-2",children:[(0,l.jsx)("div",{className:"flex flex-wrap gap-1.5 min-h-[28px] px-2 py-1.5 bg-surface rounded border border-border",children:0===D.length?(0,l.jsx)("span",{className:"text-xs text-text-muted",children:"No models selected"}):D.map(e=>(0,l.jsxs)("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded text-xs bg-black/5 dark:bg-white/5 text-text-muted border border-transparent hover:border-border",children:[e,(0,l.jsx)("button",{onClick:t=>{t.stopPropagation(),L(t=>t.filter(t=>t!==e))},className:"ml-0.5 hover:text-red-500",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"close"})})]},e))}),(0,l.jsx)("div",{children:(0,l.jsx)("button",{onClick:()=>q(!0),disabled:!d?.length,className:`px-2 py-1 rounded border text-xs transition-colors ${d?.length?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Add Model"})})]})]})]}),A&&(0,l.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===A.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===A.type?"check_circle":"error"}),(0,l.jsx)("span",{children:A.text})]}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:flex sm:items-center",children:[(0,l.jsxs)(r.$n,{variant:"primary",size:"sm",onClick:G,disabled:0===D.length,loading:C,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,l.jsxs)(r.$n,{variant:"outline",size:"sm",onClick:V,disabled:!N?.has9Router,loading:_,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,l.jsxs)(r.$n,{variant:"ghost",size:"sm",onClick:()=>K(!0),disabled:0===D.length,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]})]})]}),(0,l.jsx)(r.rq,{isOpen:F,onClose:()=>q(!1),onSelect:e=>{D.includes(e.value)||L([...D,e.value]),q(!1)},selectedModel:null,activeProviders:d,modelAliases:R,title:"Add Model for GitHub Copilot"}),(0,l.jsx)(r.uR,{isOpen:z,onClose:()=>K(!1),title:"GitHub Copilot - Manual Configuration",configs:(b=P&&P.trim()?P:c?"<API_KEY_FROM_DASHBOARD>":"sk_9router",j=W(),[{filename:"~/Library/Application Support/Code/User/chatLanguageModels.json",content:JSON.stringify([{name:"9Router",vendor:"azure",apiKey:b,models:(D.length>0?D:["provider/model-id"]).map(e=>({id:e,name:e,url:`${j}/chat/completions#models.ai.azure.com`,toolCalling:!0,vision:!1,maxInputTokens:128e3,maxOutputTokens:16e3}))}],null,2)}])})]})}function P({tool:e,isExpanded:t,onToggle:s,baseUrl:n,apiKeys:o,activeProviders:d,cloudEnabled:c,initialStatus:m,tunnelEnabled:p,tunnelPublicUrl:h,tailscaleEnabled:f,tailscaleUrl:y}){let b,j,[N,v]=(0,a.useState)(m||null),[w,k]=(0,a.useState)(!1),[C,S]=(0,a.useState)(!1),[_,E]=(0,a.useState)(!1),[A,O]=(0,a.useState)(null),[M,I]=(0,a.useState)(!1),[$,U]=(0,a.useState)(""),[R,T]=(0,a.useState)(""),[z,K]=(0,a.useState)(!1),[D,L]=(0,a.useState)({}),[F,q]=(0,a.useState)(!1),[H,B]=(0,a.useState)("");(0,a.useEffect)(()=>{o?.length>0&&!$&&U(o[0].key)},[o,$]),(0,a.useEffect)(()=>{m&&v(m)},[m]),(0,a.useEffect)(()=>{t&&!N&&(V(),W()),t&&W()},[t]),(0,a.useEffect)(()=>{N?.settings?.openAiModelId&&T(N.settings.openAiModelId)},[N]);let W=async()=>{try{let e=await fetch("/api/models/alias"),t=await e.json();e.ok&&L(t.aliases||{})}catch(e){console.log("Error fetching model aliases:",e)}},J=N?.installed?N.has9Router?g(N.settings?.openAiBaseUrl||"",{tunnelPublicUrl:h,tailscaleUrl:y})?"configured":"other":"not_configured":null,G=()=>{let e=H||`${n}/v1`;return e.endsWith("/v1")?e:`${e}/v1`},V=async()=>{k(!0);try{let e=await fetch("/api/cli-tools/cline-settings"),t=await e.json();v(t)}catch(e){v({installed:!1,error:e.message})}finally{k(!1)}},Y=async()=>{S(!0),O(null);try{let e=$&&$.trim()||c?$:"sk_9router",t=await fetch("/api/cli-tools/cline-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:G(),apiKey:e,model:R})}),s=await t.json();t.ok?(O({type:"success",text:"Settings applied successfully!"}),V()):O({type:"error",text:s.error||"Failed to apply settings"})}catch(e){O({type:"error",text:e.message})}finally{S(!1)}},Z=async()=>{E(!0),O(null);try{let e=await fetch("/api/cli-tools/cline-settings",{method:"DELETE"}),t=await e.json();e.ok?(O({type:"success",text:"Settings reset successfully!"}),T(""),V()):O({type:"error",text:t.error||"Failed to reset settings"})}catch(e){O({type:"error",text:e.message})}finally{E(!1)}};return(0,l.jsxs)(r.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,l.jsxs)("div",{className:"flex items-start justify-between gap-3 hover:cursor-pointer sm:items-center",onClick:s,children:[(0,l.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,l.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,l.jsx)(i.default,{src:"/providers/cline.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,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[(0,l.jsx)("h3",{className:"font-medium text-sm",children:e.name}),"configured"===J&&(0,l.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"===J&&(0,l.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"===J&&(0,l.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,l.jsx)("p",{className:"text-xs text-text-muted truncate",children:e.description})]})]}),(0,l.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,l.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[w&&(0,l.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,l.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,l.jsx)("span",{children:"Checking Cline..."})]}),!w&&N&&!N.installed&&(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,l.jsxs)("div",{className:"flex flex-col gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,l.jsxs)("div",{className:"flex items-start gap-3",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,l.jsxs)("div",{className:"flex-1",children:[(0,l.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:"Cline not detected locally"}),(0,l.jsx)("p",{className:"text-sm text-text-muted",children:"Manual configuration is still available if 9router is deployed on a remote server."})]})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2 pl-9",children:[(0,l.jsxs)(r.$n,{variant:"secondary",size:"sm",onClick:()=>q(!0),className:"!bg-yellow-500/20 !border-yellow-500/40 !text-yellow-700 dark:!text-yellow-300 hover:!bg-yellow-500/30",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:"content_copy"}),"Manual Config"]}),(0,l.jsxs)(r.$n,{variant:"outline",size:"sm",onClick:()=>I(!M),children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:M?"expand_less":"help"}),M?"Hide":"How to Install"]})]})]}),M&&(0,l.jsxs)("div",{className:"p-4 bg-surface border border-border rounded-lg",children:[(0,l.jsx)("h4",{className:"font-medium mb-3",children:"Installation Guide"}),(0,l.jsx)("div",{className:"space-y-3 text-sm",children:(0,l.jsxs)("p",{className:"text-text-muted",children:["Install Cline VS Code extension or CLI from ",(0,l.jsx)("a",{className:"text-primary underline",href:"https://docs.cline.bot/",target:"_blank",rel:"noreferrer",children:"docs.cline.bot"}),"."]})})]})]}),!w&&N?.installed&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Select Endpoint"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsx)(x,{value:H||H||`${n}/v1`,onChange:B,requiresExternalUrl:e.requiresExternalUrl,tunnelEnabled:p,tunnelPublicUrl:h,tailscaleEnabled:f,tailscaleUrl:y})]}),N?.settings?.openAiBaseUrl&&(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Current"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsx)("span",{className:"min-w-0 truncate rounded bg-surface/40 px-2 py-2 text-xs text-text-muted sm:py-1.5",children:N.settings.openAiBaseUrl})]}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"API Key"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsx)(u,{value:$,onChange:U,apiKeys:o,cloudEnabled:c})]}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Model"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsxs)("div",{className:"relative w-full min-w-0",children:[(0,l.jsx)("input",{type:"text",value:R,onChange:e=>T(e.target.value),placeholder:"provider/model-id",className:"w-full min-w-0 pl-2 pr-7 py-2 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50 sm:py-1.5"}),R&&(0,l.jsx)("button",{onClick:()=>T(""),className:"absolute right-1 top-1/2 -translate-y-1/2 p-0.5 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]}),(0,l.jsx)("button",{onClick:()=>K(!0),disabled:!d?.length,className:`w-full sm:w-auto rounded border px-2 py-2 text-xs transition-colors sm:py-1.5 whitespace-nowrap sm:shrink-0 ${d?.length?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select Model"})]})]}),A&&(0,l.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===A.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===A.type?"check_circle":"error"}),(0,l.jsx)("span",{children:A.text})]}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:flex sm:items-center",children:[(0,l.jsxs)(r.$n,{variant:"primary",size:"sm",onClick:Y,disabled:!$&&c&&o.length>0||!R,loading:C,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,l.jsxs)(r.$n,{variant:"outline",size:"sm",onClick:Z,disabled:_,loading:_,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,l.jsxs)(r.$n,{variant:"ghost",size:"sm",onClick:()=>q(!0),children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]})]})]}),(0,l.jsx)(r.rq,{isOpen:z,onClose:()=>K(!1),onSelect:e=>{T(e.value),K(!1)},selectedModel:R,activeProviders:d,modelAliases:D,title:"Select Model for Cline"}),(0,l.jsx)(r.uR,{isOpen:F,onClose:()=>q(!1),title:"Cline - Manual Configuration",configs:(b=$&&$.trim()?$:c?"<API_KEY_FROM_DASHBOARD>":"sk_9router",[{filename:"~/.cline/data/globalState.json",content:JSON.stringify({actModeApiProvider:"openai",planModeApiProvider:"openai",openAiBaseUrl:(j=G()).endsWith("/v1")?j.slice(0,-3):j,openAiModelId:R||"provider/model-id",planModeOpenAiModelId:R||"provider/model-id"},null,2)},{filename:"~/.cline/data/secrets.json",content:JSON.stringify({openAiApiKey:b},null,2)}])})]})}function I({tool:e,isExpanded:t,onToggle:s,baseUrl:n,apiKeys:o,activeProviders:d,cloudEnabled:c,initialStatus:m,tunnelEnabled:p,tunnelPublicUrl:h,tailscaleEnabled:g,tailscaleUrl:f}){let[y,b]=(0,a.useState)(m||null),[j,N]=(0,a.useState)(!1),[v,w]=(0,a.useState)(!1),[k,C]=(0,a.useState)(!1),[S,_]=(0,a.useState)(null),[E,A]=(0,a.useState)(!1),[O,M]=(0,a.useState)(""),[P,$]=(0,a.useState)(""),[U,R]=(0,a.useState)(!1),[T,z]=(0,a.useState)({}),[K,D]=(0,a.useState)(!1),[L,F]=(0,a.useState)("");(0,a.useEffect)(()=>{o?.length>0&&!O&&M(o[0].key)},[o,O]),(0,a.useEffect)(()=>{m&&b(m)},[m]),(0,a.useEffect)(()=>{t&&!y&&(W(),q()),t&&q()},[t]);let q=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)}},H=y?.installed?y.has9Router?"configured":"not_configured":null,B=()=>{let e=L||`${n}/v1`;return e.endsWith("/v1")?e:`${e}/v1`},W=async()=>{N(!0);try{let e=await fetch("/api/cli-tools/kilo-settings"),t=await e.json();b(t)}catch(e){b({installed:!1,error:e.message})}finally{N(!1)}},J=async()=>{w(!0),_(null);try{let e=O&&O.trim()||c?O:"sk_9router",t=await fetch("/api/cli-tools/kilo-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:B(),apiKey:e,model:P})}),s=await t.json();t.ok?(_({type:"success",text:"Settings applied successfully!"}),W()):_({type:"error",text:s.error||"Failed to apply settings"})}catch(e){_({type:"error",text:e.message})}finally{w(!1)}},G=async()=>{C(!0),_(null);try{let e=await fetch("/api/cli-tools/kilo-settings",{method:"DELETE"}),t=await e.json();e.ok?(_({type:"success",text:"Settings reset successfully!"}),$(""),W()):_({type:"error",text:t.error||"Failed to reset settings"})}catch(e){_({type:"error",text:e.message})}finally{C(!1)}};return(0,l.jsxs)(r.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,l.jsxs)("div",{className:"flex items-start justify-between gap-3 hover:cursor-pointer sm:items-center",onClick:s,children:[(0,l.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,l.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,l.jsx)(i.default,{src:"/providers/kilocode.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,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[(0,l.jsx)("h3",{className:"font-medium text-sm",children:e.name}),"configured"===H&&(0,l.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"===H&&(0,l.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"})]}),(0,l.jsx)("p",{className:"text-xs text-text-muted truncate",children:e.description})]})]}),(0,l.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,l.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[j&&(0,l.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,l.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,l.jsx)("span",{children:"Checking Kilo Code..."})]}),!j&&y&&!y.installed&&(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,l.jsxs)("div",{className:"flex flex-col gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,l.jsxs)("div",{className:"flex items-start gap-3",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,l.jsxs)("div",{className:"flex-1",children:[(0,l.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:"Kilo Code not detected locally"}),(0,l.jsx)("p",{className:"text-sm text-text-muted",children:"Manual configuration is still available if 9router is deployed on a remote server."})]})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2 pl-9",children:[(0,l.jsxs)(r.$n,{variant:"secondary",size:"sm",onClick:()=>D(!0),className:"!bg-yellow-500/20 !border-yellow-500/40 !text-yellow-700 dark:!text-yellow-300 hover:!bg-yellow-500/30",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:"content_copy"}),"Manual Config"]}),(0,l.jsxs)(r.$n,{variant:"outline",size:"sm",onClick:()=>A(!E),children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:E?"expand_less":"help"}),E?"Hide":"How to Install"]})]})]}),E&&(0,l.jsxs)("div",{className:"p-4 bg-surface border border-border rounded-lg",children:[(0,l.jsx)("h4",{className:"font-medium mb-3",children:"Installation Guide"}),(0,l.jsxs)("p",{className:"text-sm text-text-muted",children:["Install Kilo Code from ",(0,l.jsx)("a",{className:"text-primary underline",href:"https://kilocode.ai",target:"_blank",rel:"noreferrer",children:"kilocode.ai"})," or VS Code extension marketplace."]})]})]}),!j&&y?.installed&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Select Endpoint"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsx)(x,{value:L||L||`${n}/v1`,onChange:F,requiresExternalUrl:e.requiresExternalUrl,tunnelEnabled:p,tunnelPublicUrl:h,tailscaleEnabled:g,tailscaleUrl:f})]}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"API Key"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsx)(u,{value:O,onChange:M,apiKeys:o,cloudEnabled:c})]}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Model"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsxs)("div",{className:"relative w-full min-w-0",children:[(0,l.jsx)("input",{type:"text",value:P,onChange:e=>$(e.target.value),placeholder:"provider/model-id",className:"w-full min-w-0 pl-2 pr-7 py-2 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50 sm:py-1.5"}),P&&(0,l.jsx)("button",{onClick:()=>$(""),className:"absolute right-1 top-1/2 -translate-y-1/2 p-0.5 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]}),(0,l.jsx)("button",{onClick:()=>R(!0),disabled:!d?.length,className:`w-full sm:w-auto rounded border px-2 py-2 text-xs transition-colors sm:py-1.5 whitespace-nowrap sm:shrink-0 ${d?.length?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select Model"})]})]}),S&&(0,l.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,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===S.type?"check_circle":"error"}),(0,l.jsx)("span",{children:S.text})]}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:flex sm:items-center",children:[(0,l.jsxs)(r.$n,{variant:"primary",size:"sm",onClick:J,disabled:!O&&c&&o.length>0||!P,loading:v,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,l.jsxs)(r.$n,{variant:"outline",size:"sm",onClick:G,disabled:k,loading:k,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,l.jsxs)(r.$n,{variant:"ghost",size:"sm",onClick:()=>D(!0),children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]})]})]}),(0,l.jsx)(r.rq,{isOpen:U,onClose:()=>R(!1),onSelect:e=>{$(e.value),R(!1)},selectedModel:P,activeProviders:d,modelAliases:T,title:"Select Model for Kilo Code"}),(0,l.jsx)(r.uR,{isOpen:K,onClose:()=>D(!1),title:"Kilo Code - Manual Configuration",configs:[{filename:"~/.local/share/kilo/auth.json",content:JSON.stringify({"openai-compatible":{type:"api-key",apiKey:O&&O.trim()?O:c?"<API_KEY_FROM_DASHBOARD>":"sk_9router",baseUrl:B(),model:P||"provider/model-id"}},null,2)}]})]})}let $="/api/cli-tools/deepseek-tui-settings";function U({tool:e,isExpanded:t,onToggle:s,baseUrl:n,hasActiveProviders:o,apiKeys:d,activeProviders:c,cloudEnabled:m,initialStatus:p,tunnelEnabled:h,tunnelPublicUrl:f,tailscaleEnabled:y,tailscaleUrl:b}){let[j,N]=(0,a.useState)(p||null),[v,w]=(0,a.useState)(!1),[k,C]=(0,a.useState)(!1),[S,_]=(0,a.useState)(!1),[E,A]=(0,a.useState)(null),[O,M]=(0,a.useState)(""),[P,I]=(0,a.useState)(""),[R,T]=(0,a.useState)(!1),[z,K]=(0,a.useState)({}),[D,L]=(0,a.useState)(""),F=(0,a.useRef)(!1),q=(()=>{if(!j?.installed)return null;let e=j.settings;if(!e)return"not_configured";let t=e["providers.openai"];return t?.base_url?g(t.base_url,{tunnelPublicUrl:f,tailscaleUrl:b})?"configured":"other":"not_configured"})();(0,a.useEffect)(()=>{d?.length>0&&!O&&M(d[0].key)},[d,O]),(0,a.useEffect)(()=>{p&&N(p)},[p]),(0,a.useEffect)(()=>{t&&!j&&(B(),H()),t&&H()},[t]);let H=async()=>{try{let e=await fetch("/api/models/alias"),t=await e.json();e.ok&&K(t.aliases||{})}catch(e){console.log("Error fetching model aliases:",e)}};(0,a.useEffect)(()=>{if(j?.installed&&!F.current){F.current=!0;let e=j.settings,t=e?.["providers.openai"];t?.model&&I(t.model)}},[j]);let B=async()=>{w(!0);try{let e=await fetch($),t=await e.json();N(t)}catch(e){N({installed:!1,error:e.message})}finally{w(!1)}},W=async()=>{C(!0),A(null);try{let e,t=O?.trim()||(d?.length>0?d[0].key:null)||(m?null:"sk_9router"),s=await fetch($,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:(e=D||window.location.origin.replace("://localhost","://127.0.0.1")).endsWith("/v1")?e:`${e}/v1`,apiKey:t,model:P})}),l=await s.json();s.ok?(A({type:"success",text:"Settings applied successfully!"}),B()):A({type:"error",text:l.error||"Failed to apply settings"})}catch(e){A({type:"error",text:e.message})}finally{C(!1)}},J=async()=>{_(!0),A(null);try{let e=await fetch($,{method:"DELETE"}),t=await e.json();e.ok?(A({type:"success",text:"Settings reset to defaults!"}),B()):A({type:"error",text:t.error||"Failed to reset settings"})}catch(e){A({type:"error",text:e.message})}finally{_(!1)}};return(0,l.jsxs)(r.Zp,{padding:"xs",className:"overflow-hidden overflow-x-hidden",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between hover:cursor-pointer",onClick:s,children:[(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"size-8 rounded-lg flex items-center justify-center shrink-0",children:e.image?(0,l.jsx)(i.default,{src:e.image,alt:e.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:e=>{e.target.style.display="none"}}):e.icon?(0,l.jsx)("span",{className:"material-symbols-outlined text-xl",style:{color:e.color},children:e.icon}):(0,l.jsx)(i.default,{src:`/providers/${e.id}.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,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("h3",{className:"font-medium text-sm",children:e.name}),j?.installed?"configured"===q?(0,l.jsxs)("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs bg-green-500/10 text-green-600 dark:text-green-400 border border-green-500/20",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-sm",children:"check_circle"}),"Configured"]}):"other"===q?(0,l.jsxs)("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs bg-yellow-500/10 text-yellow-600 dark:text-yellow-400 border border-yellow-500/20",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-sm",children:"settings"}),"Other Config"]}):(0,l.jsxs)("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs bg-blue-500/10 text-blue-600 dark:text-blue-400 border border-blue-500/20",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-sm",children:"info"}),"Not Configured"]}):(0,l.jsxs)("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs bg-red-500/10 text-red-600 dark:text-red-400 border border-red-500/20",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-sm",children:"close"}),"Not Installed"]})]}),(0,l.jsx)("p",{className:"text-xs text-text-muted truncate",children:e.description})]})]}),(0,l.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,l.jsxs)("div",{className:"mt-6 pt-6 border-t border-border",children:[e.notes&&e.notes.length>0&&(0,l.jsx)("div",{className:"flex flex-col gap-2 mb-4",children:e.notes.map((e,t)=>{let s="warning"===e.type,a="error"===e.type,r="bg-blue-500/10 border-blue-500/30",i="text-blue-600 dark:text-blue-400",n="text-blue-500",o="info";return s?(r="bg-yellow-500/10 border-yellow-500/30",i="text-yellow-600 dark:text-yellow-400",n="text-yellow-500",o="warning"):a&&(r="bg-red-500/10 border-red-500/30",i="text-red-600 dark:text-red-400",n="text-red-500",o="error"),(0,l.jsxs)("div",{className:`flex items-start gap-3 p-3 rounded-lg border ${r}`,children:[(0,l.jsx)("span",{className:`material-symbols-outlined text-lg ${n}`,children:o}),(0,l.jsx)("p",{className:`text-sm ${i}`,children:e.text})]},t)})}),!j?.installed&&(0,l.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,l.jsx)("p",{className:"text-sm text-text-muted",children:"DeepSeek TUI is not detected on your system."}),(0,l.jsxs)("div",{className:"p-3 bg-bg-secondary rounded-lg border border-border",children:[(0,l.jsx)("p",{className:"text-xs text-text-muted mb-2",children:"Install via npm:"}),(0,l.jsx)("code",{className:"text-sm font-mono",children:"npm install -g deepseek-tui"})]}),(0,l.jsx)(r.$n,{onClick:B,disabled:v,variant:"secondary",size:"sm",children:v?"Checking...":"Check Again"})]}),j?.installed&&(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2 text-xs text-text-muted",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-sm",children:"folder"}),(0,l.jsx)("code",{className:"px-2 py-0.5 bg-bg-secondary rounded text-xs font-mono",children:j.configPath})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"text-xs font-medium text-text-muted mb-1 block",children:"Base URL"}),(0,l.jsx)(x,{value:D,onChange:L,baseUrl:n,tunnelEnabled:h,tunnelPublicUrl:f,tailscaleEnabled:y,tailscaleUrl:b})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"text-xs font-medium text-text-muted mb-1 block",children:"API Key"}),(0,l.jsx)(u,{value:O,onChange:M,apiKeys:d,cloudEnabled:m,className:"w-full"})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"text-xs font-medium text-text-muted mb-1 block",children:"Model"}),(0,l.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-center gap-2",children:[(0,l.jsx)("input",{type:"text",value:P,onChange:e=>I(e.target.value),placeholder:"ollama/gpt-oss:120b",className:"w-full sm:w-auto flex-1 px-3 py-2 bg-bg-secondary rounded-lg text-sm border border-border focus:outline-none focus:ring-1 focus:ring-primary/50"}),(0,l.jsx)("button",{onClick:()=>T(!0),disabled:!o,className:`shrink-0 px-3 py-2 rounded-lg border text-sm transition-colors ${o?"bg-bg-secondary border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select Model"})]})]}),E&&(0,l.jsx)("div",{className:`p-3 rounded-lg border text-sm ${"success"===E.type?"bg-green-500/10 border-green-500/30 text-green-600 dark:text-green-400":"bg-red-500/10 border-red-500/30 text-red-600 dark:text-red-400"}`,children:E.text}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)(r.$n,{onClick:W,disabled:k||!P,variant:"primary",size:"sm",children:k?"Applying...":"Apply 9Router Config"}),(0,l.jsx)(r.$n,{onClick:J,disabled:S,variant:"secondary",size:"sm",children:S?"Resetting...":"Reset to Defaults"})]})]})]}),(0,l.jsx)(r.rq,{isOpen:R,onClose:()=>T(!1),onSelect:e=>{I(e.value),T(!1)},selectedModel:P,activeProviders:c,title:"Select Model"})]})}let R="http://localhost:20128";function T({apiKeys:e,cloudEnabled:t,onStatusChange:s}){let[i,n]=(0,a.useState)(null),[o,d]=(0,a.useState)(!1),[c,m]=(0,a.useState)(!1),[x,p]=(0,a.useState)(""),[u,h]=(0,a.useState)(()=>e?.[0]?.key||""),[g,f]=(0,a.useState)(null),[y,b]=(0,a.useState)(null),[j,N]=(0,a.useState)(null),[v,w]=(0,a.useState)(R),[k,C]=(0,a.useState)(null),S=i?.isWin===!0,_=S||i?.hasCachedPassword||i?.needsSudoPassword===!1,E=i?.isAdmin!==!1;!E&&(S||i?.hasCachedPassword||i?.needsSudoPassword);let A=(0,a.useCallback)(async()=>{try{let e=await fetch("/api/cli-tools/antigravity-mitm");if(e.ok){let t=await e.json();n(t),t.mitmRouterBaseUrl&&w(t.mitmRouterBaseUrl),s?.(t)}}catch{n({running:!1,certExists:!1,dnsStatus:{}})}},[s]);(0,a.useEffect)(()=>{queueMicrotask(()=>{A()})},[A]);let O=e=>{N(null),i&&(_?M(e,""):(f(e),m(!0),b(null)))},M=async(s,l,a=!1)=>{d(!0),N(null);try{let r;if("trust-cert"===s)r=await fetch("/api/cli-tools/antigravity-mitm",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"trust-cert",sudoPassword:l})});else if("start"===s){let s=u?.trim()||(e?.length>0?e[0].key:null)||(t?null:"sk_9router");r=await fetch("/api/cli-tools/antigravity-mitm",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:s,sudoPassword:l,mitmRouterBaseUrl:v.trim()||R,forceKillPort443:a})})}else r=await fetch("/api/cli-tools/antigravity-mitm",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({sudoPassword:l})});if(!r.ok){let e=await r.json().catch(()=>({}));if("PORT_443_BUSY"===e.code&&e.portOwner){m(!1),C({owner:e.portOwner,password:l});return}N(e.error||`Failed to ${s} MITM server`);return}m(!1),p(""),C(null),await A()}catch(e){N(e.message||"Network error")}finally{d(!1),f(null)}},P=()=>{x.trim()?M(g,x):b("Sudo password is required")},I=i?.running;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(r.Zp,{padding:"sm",className:"border-primary/20 bg-primary/5",children:(0,l.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,l.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between",children:[(0,l.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-primary text-[20px]",children:"security"}),(0,l.jsx)("span",{className:"font-semibold text-sm text-text-main",children:"MITM Server"}),I?(0,l.jsx)(r.Ex,{variant:"success",size:"sm",children:"Running"}):(0,l.jsx)(r.Ex,{variant:"default",size:"sm",children:"Stopped"})]}),(0,l.jsx)("div",{className:"flex flex-wrap items-center gap-1 text-xs text-text-muted","data-i18n-skip":"true",children:[{label:"Cert",ok:i?.certExists},{label:"Trusted",ok:i?.certTrusted},{label:"Server",ok:I}].map(({label:e,ok:t})=>(0,l.jsxs)("span",{className:`flex items-center gap-0.5 px-1.5 py-0.5 rounded ${t?"text-green-600":"text-text-muted"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:t?"check_circle":"cancel"}),e]},e))})]}),(0,l.jsxs)("div",{className:"px-2 py-2 rounded-lg bg-surface/50 border border-border/50 flex flex-col gap-2",children:[(0,l.jsxs)("p",{className:"text-[11px] text-text-muted leading-relaxed",children:[(0,l.jsx)("span",{className:"font-medium text-text-main",children:"Purpose:"})," Use Antigravity IDE & GitHub Copilot → with ANY provider/model from 9Router"]}),(0,l.jsxs)("p",{className:"text-[11px] text-text-muted leading-relaxed",children:[(0,l.jsx)("span",{className:"font-medium text-text-main",children:"How it works:"})," Antigravity/Copilot IDE request → DNS redirect to localhost:443 → MITM proxy intercepts → 9Router → response to Antigravity/Copilot"]})]}),(0,l.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,l.jsxs)("div",{className:"grid gap-1 sm:grid-cols-[8rem_auto_1fr] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"9Router Base URL"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsx)("input",{type:"text",value:v,onChange:e=>w(e.target.value),placeholder:R,disabled:I,className:"flex-1 min-w-0 px-2 py-1.5 bg-surface rounded border border-border text-xs text-text-main focus:outline-none focus:ring-1 focus:ring-primary/50 disabled:opacity-50"})]}),!I&&(0,l.jsxs)("div",{className:"grid gap-1 sm:grid-cols-[8rem_auto_1fr] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"API Key"}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsx)("input",{type:"text",list:"mitm-api-keys",value:u,onChange:e=>h(e.target.value),placeholder:t?"Enter or pick API key":"sk_9router (default)",className:"flex-1 min-w-0 px-2 py-1.5 bg-surface rounded border border-border text-xs text-text-main focus:outline-none focus:ring-1 focus:ring-primary/50"}),e?.length>0&&(0,l.jsx)("datalist",{id:"mitm-api-keys",children:e.map(e=>(0,l.jsx)("option",{value:e.key,children:e.name||e.key},e.id))})]})]}),(0,l.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row sm:flex-wrap sm:items-center","data-i18n-skip":"true",children:[i?.certExists&&!i?.certTrusted&&(0,l.jsxs)("button",{onClick:()=>O("trust-cert"),disabled:o,className:"flex w-full items-center justify-center gap-1.5 rounded-lg border border-yellow-500/30 bg-yellow-500/10 px-4 py-2 text-xs font-medium text-yellow-600 transition-colors hover:bg-yellow-500/20 disabled:opacity-50 sm:w-auto sm:py-1.5",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"verified_user"}),"Trust Cert"]}),I?(0,l.jsxs)("button",{onClick:()=>O("stop"),disabled:o,className:"flex w-full items-center justify-center gap-1.5 rounded-lg border border-red-500/30 bg-red-500/10 px-4 py-2 text-xs font-medium text-red-500 transition-colors hover:bg-red-500/20 disabled:opacity-50 sm:w-auto sm:py-1.5",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"stop_circle"}),"Stop Server"]}):(0,l.jsxs)("button",{onClick:()=>O("start"),disabled:o||!i||S&&!E,title:S&&!E?"Administrator required":void 0,className:"flex w-full items-center justify-center gap-1.5 rounded-lg border border-primary/30 bg-primary/10 px-4 py-2 text-xs font-medium text-primary transition-colors hover:bg-primary/20 disabled:opacity-50 sm:w-auto sm:py-1.5",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"play_circle"}),"Start Server"]}),I&&(0,l.jsx)("p",{className:"text-xs text-text-muted",children:"Enable DNS per tool below to activate interception"})]}),j&&(0,l.jsxs)("div",{className:"flex items-start gap-2 px-2 py-1.5 rounded text-xs bg-red-500/10 text-red-600 dark:text-red-400 border border-red-500/20",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mt-0.5 shrink-0",children:"error"}),(0,l.jsx)("span",{children:j})]}),S&&!E&&(0,l.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 rounded text-xs bg-red-500/10 text-red-600 border border-red-500/20",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"shield_lock"}),(0,l.jsx)("span",{children:"Administrator required — restart 9Router as Administrator to use MITM"})]})]})}),c&&(0,l.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm",children:(0,l.jsxs)("div",{className:"mx-4 flex w-full max-w-sm flex-col gap-4 rounded-xl border border-border bg-surface p-5 shadow-xl sm:p-6",children:[(0,l.jsx)("h3",{className:"font-semibold text-text-main",children:"Sudo Password Required"}),(0,l.jsxs)("div",{className:"flex items-start gap-3 p-3 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-yellow-500 text-[20px]",children:"warning"}),(0,l.jsx)("p",{className:"text-xs text-text-muted",children:"Required for SSL certificate and server startup"})]}),(0,l.jsx)(r.pd,{type:"password",placeholder:"Enter sudo password",value:x,onChange:e=>p(e.target.value),onKeyDown:e=>{"Enter"!==e.key||o||P()}}),y&&(0,l.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 rounded text-xs bg-red-500/10 text-red-600",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"error"}),(0,l.jsx)("span",{children:y})]}),(0,l.jsxs)("div",{className:"flex items-center justify-end gap-2",children:[(0,l.jsx)(r.$n,{variant:"ghost",size:"sm",onClick:()=>{m(!1),p(""),b(null)},disabled:o,children:"Cancel"}),(0,l.jsx)(r.$n,{variant:"primary",size:"sm",onClick:P,loading:o,children:"Confirm"})]})]})}),k&&(0,l.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm",children:(0,l.jsxs)("div",{className:"mx-4 flex w-full max-w-md flex-col gap-4 rounded-xl border border-border bg-surface p-5 shadow-xl sm:p-6",children:[(0,l.jsx)("h3",{className:"font-semibold text-text-main",children:"Port 443 Already In Use"}),(0,l.jsxs)("div",{className:"flex items-start gap-3 p-3 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-yellow-500 text-[20px]",children:"warning"}),(0,l.jsxs)("div",{className:"flex flex-col gap-1 text-xs text-text-muted",children:[(0,l.jsx)("p",{children:"Port 443 is currently used by another process:"}),(0,l.jsxs)("p",{className:"font-mono text-text-main","data-i18n-skip":"true",children:[k.owner.name," (PID ",k.owner.pid,")"]}),(0,l.jsx)("p",{children:"Kill this process to start MITM Server?"})]})]}),(0,l.jsxs)("div",{className:"flex items-center justify-end gap-2",children:[(0,l.jsx)(r.$n,{variant:"ghost",size:"sm",onClick:()=>{C(null),d(!1)},disabled:o,children:"Cancel"}),(0,l.jsx)(r.$n,{variant:"primary",size:"sm",onClick:()=>{M("start",k?.password||"",!0)},loading:o,children:"Kill & Start"})]})]})})]})}var z=s(45727);function K({tool:e,isExpanded:t,onToggle:s,serverRunning:n,dnsActive:o,hasCachedPassword:d,needsSudoPassword:c,isWin:m,apiKeys:x,activeProviders:p,hasActiveProviders:u,modelAliases:h={},cloudEnabled:g,onDnsChange:f}){let[y,b]=(0,a.useState)(!1),[j,N]=(0,a.useState)(null),[v,w]=(0,a.useState)(!1),[k,C]=(0,a.useState)(""),[S,_]=(0,a.useState)(null),[E,A]=(0,a.useState)(null),[O,M]=(0,a.useState)({}),[P,I]=(0,a.useState)(!1),[$,U]=(0,a.useState)(null),R=z.TOOL_HOSTS[e.id]??[],T=m||d||!1===c;(0,a.useEffect)(()=>{t&&D()},[t]);let D=async()=>{try{let t=await fetch(`/api/cli-tools/antigravity-mitm/alias?tool=${e.id}`);if(t.ok){let e=await t.json();Object.keys(e.aliases||{}).length>0&&M(e.aliases)}}catch{}},L=(0,a.useCallback)(async t=>{try{await fetch("/api/cli-tools/antigravity-mitm/alias",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({tool:e.id,mappings:t})})}catch{}},[e.id]),F=(e,t)=>{M(s=>({...s,[e]:t}))},q=()=>{if(!n)return;let e=o?"disable":"enable";T?H(e,""):(_(e),w(!0),A(null))},H=async(t,s)=>{b(!0),N(null);try{let l=await fetch("/api/cli-tools/antigravity-mitm",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({tool:e.id,action:t,sudoPassword:s})}),a=await l.json();if(!l.ok)throw Error(a.error||"Failed to toggle DNS");"enable"===t&&N(`Restart ${e.name} to apply changes`),w(!1),C(""),f?.(a)}catch{}finally{b(!1),_(null)}},B=()=>{k.trim()?H(S,k):A("Sudo password is required")};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(r.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,l.jsxs)("div",{className:"flex items-start justify-between gap-3 hover:cursor-pointer sm:items-center",onClick:s,children:[(0,l.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,l.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,l.jsx)(i.default,{src:e.image,alt:e.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:e=>{e.target.style.display="none"}})}),(0,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,l.jsx)("h3",{className:"font-medium text-sm",children:e.name}),n?o?(0,l.jsx)(r.Ex,{variant:"success",size:"sm",children:"Active"}):(0,l.jsx)(r.Ex,{variant:"warning",size:"sm",children:"DNS off"}):(0,l.jsx)(r.Ex,{variant:"default",size:"sm",children:"Server off"})]}),(0,l.jsxs)("p",{className:"text-xs text-text-muted sm:truncate",children:["Intercept ",e.name," requests via MITM proxy"]})]})]}),(0,l.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,l.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[R.length>0&&(0,l.jsxs)("div",{className:"mt-2 rounded-md border border-border bg-surface/50 px-2 py-1.5",children:[(0,l.jsx)("p",{className:"text-[10px] font-medium tracking-wide text-text-main/80 mb-1",children:"Edit hosts file manually to add the following entries:"}),(0,l.jsx)("ul",{className:"list-none space-y-0.5 font-mono text-[10px] text-text-muted break-all",children:R.map(e=>(0,l.jsxs)("li",{children:["127.0.0.1 ",e]},e))})]}),(0,l.jsxs)("div",{className:"flex flex-col gap-0.5 text-[11px] text-text-muted px-1",children:[(0,l.jsxs)("p",{children:["Toggle DNS to redirect ",e.name," traffic through 9Router via MITM."]}),!o&&(0,l.jsx)("p",{className:"text-amber-600 text-[10px] mt-1",children:"⚠️ Enable DNS to edit model mappings"})]}),e.defaultModels?.length>0&&(0,l.jsx)("div",{className:"flex flex-col gap-2",children:e.defaultModels.map(e=>(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[9rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right",children:e.name}),(0,l.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,l.jsxs)("div",{className:"relative w-full min-w-0",children:[(0,l.jsx)("input",{type:"text",value:O[e.alias]||"",onChange:t=>F(e.alias,t.target.value),onBlur:t=>{var s,l;return s=e.alias,l=t.target.value,void L({...O,[s]:l})},placeholder:"provider/model-id",disabled:!o,className:`w-full min-w-0 pl-2 pr-7 py-2 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50 sm:py-1.5 ${!o?"opacity-50 cursor-not-allowed":""}`}),O[e.alias]&&(0,l.jsx)("button",{onClick:()=>{F(e.alias,""),L({...O,[e.alias]:""})},className:"absolute right-1 top-1/2 -translate-y-1/2 p-0.5 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]}),(0,l.jsx)("button",{onClick:()=>{U(e.alias),I(!0)},disabled:!u||!o,className:`rounded border px-2 py-2 text-xs transition-colors sm:py-1.5 ${u&&o?"bg-surface border-border hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select"})]},e.alias))}),e.defaultModels?.length===0&&(0,l.jsx)("p",{className:"text-xs text-text-muted px-1",children:"Model mappings will be available soon."}),(0,l.jsxs)("div",{className:"flex flex-col gap-2 sm:items-start",children:[o?(0,l.jsxs)("button",{onClick:q,disabled:!n||y,className:"flex w-full items-center justify-center gap-1.5 rounded-lg border border-red-500/30 bg-red-500/10 px-4 py-2 text-xs font-medium text-red-500 transition-colors hover:bg-red-500/20 disabled:cursor-not-allowed disabled:opacity-50 sm:w-auto sm:py-1.5",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"stop_circle"}),"Stop DNS"]}):(0,l.jsxs)("button",{onClick:q,disabled:!n||y,className:"flex w-full items-center justify-center gap-1.5 rounded-lg border border-primary/30 bg-primary/10 px-4 py-2 text-xs font-medium text-primary transition-colors hover:bg-primary/20 disabled:cursor-not-allowed disabled:opacity-50 sm:w-auto sm:py-1.5",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"play_circle"}),"Start DNS"]}),j&&(0,l.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 rounded text-xs text-amber-500",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"warning"}),(0,l.jsx)("span",{children:j})]})]})]})]}),v&&(0,l.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm",children:(0,l.jsxs)("div",{className:"mx-4 flex w-full max-w-sm flex-col gap-4 rounded-xl border border-border bg-surface p-5 shadow-xl sm:p-6",children:[(0,l.jsx)("h3",{className:"font-semibold text-text-main",children:"Sudo Password Required"}),(0,l.jsxs)("div",{className:"flex items-start gap-3 p-3 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-yellow-500 text-[20px]",children:"warning"}),(0,l.jsx)("p",{className:"text-xs text-text-muted",children:"Required to modify /etc/hosts and flush DNS cache"})]}),(0,l.jsx)(r.pd,{type:"password",placeholder:"Enter sudo password",value:k,onChange:e=>C(e.target.value),onKeyDown:e=>{"Enter"!==e.key||y||B()}}),E&&(0,l.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 rounded text-xs bg-red-500/10 text-red-600",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"error"}),(0,l.jsx)("span",{children:E})]}),(0,l.jsxs)("div",{className:"flex items-center justify-end gap-2",children:[(0,l.jsx)(r.$n,{variant:"ghost",size:"sm",onClick:()=>{w(!1),C(""),A(null)},disabled:y,children:"Cancel"}),(0,l.jsx)(r.$n,{variant:"primary",size:"sm",onClick:B,loading:y,children:"Confirm"})]})]})}),(0,l.jsx)(r.rq,{isOpen:P,onClose:()=>I(!1),onSelect:e=>{if(!$||e.isPlaceholder)return;let t={...O,[$]:e.value};M(t),L(t)},selectedModel:$?O[$]:null,activeProviders:p,modelAliases:h,title:`Select model for ${$}`})]})}var D=s(99568),L=s.n(D);function F({tool:e}){return(0,l.jsx)(L(),{href:"/dashboard/mitm",className:"block",children:(0,l.jsx)(r.Zp,{padding:"sm",className:"overflow-hidden hover:border-primary/50 transition-colors cursor-pointer",children:(0,l.jsxs)("div",{className:"flex items-center justify-between",children:[(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,l.jsx)(i.default,{src:e.image,alt:e.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:e=>{e.target.style.display="none"}})}),(0,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("h3",{className:"font-medium text-sm",children:e.name}),(0,l.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-purple-500/10 text-purple-600 dark:text-purple-400 rounded-full",children:"MITM"})]}),(0,l.jsx)("p",{className:"text-xs text-text-muted truncate",children:e.description})]})]}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[20px]",children:"chevron_right"})]})})})}},97990:(e,t,s)=>{s.d(t,{dM:()=>a,wn:()=>l});let l={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",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 / Default",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"}]}},a={claude:{id:"claude",name:"Claude Code",icon:"terminal",color:"#D97757",description:"Anthropic Claude Code CLI",configType:"env",envVars:{baseUrl:"ANTHROPIC_BASE_URL",model:"ANTHROPIC_MODEL",opusModel:"ANTHROPIC_DEFAULT_OPUS_MODEL",sonnetModel:"ANTHROPIC_DEFAULT_SONNET_MODEL",haikuModel:"ANTHROPIC_DEFAULT_HAIKU_MODEL"},modelAliases:["default","sonnet","opus","haiku","opusplan"],settingsFile:"~/.claude/settings.json",defaultModels:[{id:"opus",name:"Claude Opus",alias:"opus",envKey:"ANTHROPIC_DEFAULT_OPUS_MODEL",defaultValue:"cc/claude-opus-4-6"},{id:"sonnet",name:"Claude Sonnet",alias:"sonnet",envKey:"ANTHROPIC_DEFAULT_SONNET_MODEL",defaultValue:"cc/claude-sonnet-4-6"},{id:"haiku",name:"Claude Haiku",alias:"haiku",envKey:"ANTHROPIC_DEFAULT_HAIKU_MODEL",defaultValue:"cc/claude-haiku-4-5-20251001"}]},openclaw:{id:"openclaw",name:"Open Claw",image:"/providers/openclaw.png",color:"#FF6B35",description:"Open Claw AI Assistant",configType:"custom"},codex:{id:"codex",name:"OpenAI Codex CLI / App",image:"/providers/codex.png",color:"#10A37F",description:"OpenAI Codex CLI",configType:"custom"},opencode:{id:"opencode",name:"OpenCode",image:"/providers/opencode.png",color:"#E87040",description:"OpenCode AI Terminal Assistant",configType:"custom"},cowork:{id:"cowork",name:"Claude Cowork",image:"/providers/claude.png",color:"#D97757",description:"Claude Desktop Cowork (third-party inference)",configType:"custom"},hermes:{id:"hermes",name:"Hermes Agent",image:"/providers/hermes.png",color:"#8B5CF6",description:"Nous Research self-improving AI agent",configType:"custom"},droid:{id:"droid",name:"Factory Droid",image:"/providers/droid.png",color:"#00D4FF",description:"Factory Droid AI Assistant",configType:"custom"},cursor:{id:"cursor",name:"Cursor",image:"/providers/cursor.png",color:"#000000",description:"Cursor AI Code Editor",configType:"guide",requiresExternalUrl:!0,notes:[{type:"warning",text:"Requires Cursor Pro account to use this feature."},{type:"cloudCheck",text:"Cursor routes requests through its own server, so local endpoint is not supported. Please enable Tunnel or Cloud Endpoint in Settings."}],guideSteps:[{step:1,title:"Open Settings",desc:"Go to Settings → Models"},{step:2,title:"Enable OpenAI API",desc:'Enable "OpenAI API key" option'},{step:3,title:"Base URL",value:"{{baseUrl}}",copyable:!0},{step:4,title:"API Key",type:"apiKeySelector"},{step:5,title:"Add Custom Model",desc:'Click "View All Model" → "Add Custom Model"'},{step:6,title:"Select Model",type:"modelSelector"}]},cline:{id:"cline",name:"Cline",image:"/providers/cline.png",color:"#00D1B2",description:"Cline AI Coding Assistant",configType:"custom"},kilo:{id:"kilo",name:"Kilo Code",image:"/providers/kilocode.png",color:"#FF6B6B",description:"Kilo Code AI Assistant",configType:"custom"},roo:{id:"roo",name:"Roo",image:"/providers/roo.png",color:"#FF6B6B",description:"Roo AI Assistant",configType:"guide",guideSteps:[{step:1,title:"Open Settings",desc:"Go to Roo Settings panel"},{step:2,title:"Select Provider",desc:"Choose API Provider → Ollama"},{step:3,title:"Base URL",value:"{{baseUrl}}",copyable:!0},{step:4,title:"API Key",type:"apiKeySelector"},{step:5,title:"Select Model",type:"modelSelector"}]},continue:{id:"continue",name:"Continue",image:"/providers/continue.png",color:"#7C3AED",description:"Continue AI Assistant",configType:"guide",guideSteps:[{step:1,title:"Open Config",desc:"Open Continue configuration file"},{step:2,title:"API Key",type:"apiKeySelector"},{step:3,title:"Select Model",type:"modelSelector"},{step:4,title:"Add Model Config",desc:"Add the following configuration to your models array:"}],codeBlock:{language:"json",code:`{
18
- "apiBase": "{{baseUrl}}",
19
- "title": "{{model}}",
20
- "model": "{{model}}",
21
- "provider": "openai",
22
- "apiKey": "{{apiKey}}"
23
- }`}},amp:{id:"amp",name:"Amp CLI",icon:"terminal",color:"#F97316",description:"Sourcegraph Amp coding assistant CLI",docsUrl:"/docs?section=cli-tools&tool=amp",configType:"guide",defaultCommand:"amp",modelAliases:["g25p","g25f","cs45","g54"],notes:[{type:"info",text:"Use 9Router model aliases to keep Amp shorthand mappings stable across provider updates."},{type:"warning",text:"Suggested shorthand examples: g25p → gemini/gemini-2.5-pro, g25f → gemini/gemini-2.5-flash, cs45 → cc/claude-sonnet-4-5-20250929."}],guideSteps:[{step:1,title:"Install Amp",desc:"Install the Amp CLI using the package manager supported by your environment."},{step:2,title:"API Key",type:"apiKeySelector"},{step:3,title:"Base URL",value:"{{baseUrl}}",copyable:!0},{step:4,title:"Select Model",type:"modelSelector"},{step:5,title:"Add Shorthands",desc:"Map Amp shorthand names such as g25p or cs45 to 9Router aliases in your local config."}],codeBlock:{language:"bash",code:`export OPENAI_API_KEY="{{apiKey}}"
24
- export OPENAI_BASE_URL="{{baseUrl}}"
25
- amp --model "{{model}}"
26
- # Example shorthand aliases you can map locally:
27
- # g25p -> gemini/gemini-2.5-pro
28
- # cs45 -> cc/claude-sonnet-4-5-20250929`}},qwen:{id:"qwen",name:"Qwen Code",icon:"psychology",color:"#10B981",description:"Alibaba Qwen Code CLI — supports OpenAI, Anthropic & Gemini providers via 9Router",docsUrl:"https://qwenlm.github.io/qwen-code-docs/en/users/configuration/model-providers/",configType:"guide",defaultCommand:"qwen",notes:[{type:"info",text:"Qwen Code supports multiple provider types (openai, anthropic, gemini) via modelProviders in settings.json. 9Router works as an OpenAI-compatible endpoint."},{type:"info",text:"Any model available in 9Router can be used — not just Qwen models. Select from Qwen, Claude, Gemini, GPT, and more."},{type:"warning",text:"Config path: Linux/macOS ~/.qwen/settings.json • Windows %USERPROFILE%\\.qwen\\settings.json"},{type:"error",text:"Qwen OAuth free tier was discontinued on 2026-04-15. Use 9Router with alicode/openrouter/anthropic/gemini providers instead."}],modelAliases:["coder-model","qwen3-coder-plus","qwen3-coder-flash","vision-model","claude-sonnet-4-6","claude-opus-4-6-thinking","gemini-3-flash","gemini-3.1-pro-high"],defaultModels:[{id:"coder-model",name:"Coder Model (Qwen 3.6 Plus)",alias:"coder-model",envKey:"OPENAI_MODEL",defaultValue:"coder-model",isTopLevel:!0},{id:"qwen3-coder-plus",name:"Qwen 3 Coder Plus",alias:"qwen3-coder-plus",envKey:"OPENAI_MODEL",defaultValue:"qwen3-coder-plus"},{id:"qwen3-coder-flash",name:"Qwen 3 Coder Flash",alias:"qwen3-coder-flash",envKey:"OPENAI_MODEL",defaultValue:"qwen3-coder-flash"},{id:"vision-model",name:"Vision Model (Multimodal)",alias:"vision-model",envKey:"OPENAI_MODEL",defaultValue:"vision-model"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6",alias:"claude-sonnet-4-6",envKey:"OPENAI_MODEL",defaultValue:"claude-sonnet-4-6"},{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 Thinking",alias:"claude-opus-4-6-thinking",envKey:"OPENAI_MODEL",defaultValue:"claude-opus-4-6-thinking"},{id:"gemini-3.1-pro-high",name:"Gemini 3.1 Pro High",alias:"gemini-3.1-pro-high",envKey:"OPENAI_MODEL",defaultValue:"gemini-3.1-pro-high"},{id:"gemini-3-flash",name:"Gemini 3 Flash",alias:"gemini-3-flash",envKey:"OPENAI_MODEL",defaultValue:"gemini-3-flash"}],guideSteps:[{step:1,title:"Install Qwen Code",desc:"npm install -g @qwen-code/qwen-code"},{step:2,title:"API Key",type:"apiKeySelector"},{step:3,title:"Base URL",value:"{{baseUrl}}",copyable:!0},{step:4,title:"Select Model",type:"modelSelector"},{step:5,title:"Save Config",desc:"Copy the JSON below to your ~/.qwen/settings.json file."}],codeBlock:{language:"json",code:`{
29
- "security": {
30
- "auth": {
31
- "selectedType": "openai",
32
- "apiKey": "{{apiKey}}",
33
- "baseUrl": "{{baseUrl}}"
34
- }
35
- },
36
- "model": {
37
- "name": "{{model}}"
38
- }
39
- }`}},"deepseek-tui":{id:"deepseek-tui",name:"DeepSeek TUI",image:"/providers/deepseek-tui.png",color:"#4D6BFE",description:"DeepSeek Terminal Coding Agent (Rust TUI)",docsUrl:"https://github.com/DeepSeek-TUI/DeepSeek-TUI",configType:"custom",defaultCommand:"deepseek",modelAliases:["deepseek-v4-pro","deepseek-v4-flash","deepseek-chat","deepseek-reasoner"],defaultModels:[{id:"deepseek-v4-pro",name:"DeepSeek V4 Pro",alias:"deepseek-v4-pro"},{id:"deepseek-v4-flash",name:"DeepSeek V4 Flash",alias:"deepseek-v4-flash"},{id:"deepseek-chat",name:"DeepSeek V3 Chat",alias:"deepseek-chat"}],notes:[{type:"info",text:"DeepSeek TUI uses ~/.deepseek/config.toml for configuration. 9Router will update the provider to 'openai' mode with your base_url, api_key, and model."},{type:"warning",text:"Config path: Linux/macOS ~/.deepseek/config.toml • Windows %USERPROFILE%\\.deepseek\\config.toml"}]}}}}]);