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";exports.id=9102,exports.ids=[9102],exports.modules={5683:a=>{a.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"]}}},10228:(a,b,c)=>{c.d(b,{dM:()=>e,wn:()=>d});let d={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"}]}},e={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:`{
2
- "apiBase": "{{baseUrl}}",
3
- "title": "{{model}}",
4
- "model": "{{model}}",
5
- "provider": "openai",
6
- "apiKey": "{{apiKey}}"
7
- }`}},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}}"
8
- export OPENAI_BASE_URL="{{baseUrl}}"
9
- amp --model "{{model}}"
10
- # Example shorthand aliases you can map locally:
11
- # g25p -> gemini/gemini-2.5-pro
12
- # 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:`{
13
- "security": {
14
- "auth": {
15
- "selectedType": "openai",
16
- "apiKey": "{{apiKey}}",
17
- "baseUrl": "{{baseUrl}}"
18
- }
19
- },
20
- "model": {
21
- "name": "{{model}}"
22
- }
23
- }`}},"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"}]}}},92407:(a,b,c)=>{c.d(b,{Tk:()=>r,aG:()=>E,Ah:()=>s,h1:()=>D,Q6:()=>C,lF:()=>H,a7:()=>z,ZM:()=>u,RF:()=>x,c9:()=>F,gY:()=>O,tA:()=>J,kn:()=>L,yZ:()=>v,qO:()=>A});var d=c(26835),e=c(53830),f=c(50450),g=c(65046),h=c(10074);let i="__custom__",j="__save__",k=a=>{};function l({value:a,onChange:b,requiresExternalUrl:c=!1,tunnelEnabled:f=!1,tunnelPublicUrl:g="",tailscaleEnabled:m=!1,tailscaleUrl:n="",cloudEnabled:o=!1,cloudUrl:p="",withV1:q=!0}){let[r,s]=(0,e.useState)([]),[t,u]=(0,e.useState)(""),[v,w]=(0,e.useState)("");(0,e.useRef)(!1);let x=(0,e.useMemo)(()=>(({requiresExternalUrl:a,tunnelEnabled:b,tunnelPublicUrl:c,tailscaleEnabled:d,tailscaleUrl:e,cloudEnabled:f,cloudUrl:g,savedPresets:j,withV1:k})=>{let l=[],m=a=>{let b;return k?(b=(a||"").replace(/\/+$/,""))?/\/v1$/.test(b)?b:`${b}/v1`:"":(a||"").replace(/\/+$/,"")};if(!a){let a=m(`http://127.0.0.1:${h.h0.appPort}`);l.push({value:"local",label:a,url:a})}if(b&&c){let a=m(c);l.push({value:"tunnel",label:a,url:a})}if(d&&e){let a=m(e);l.push({value:"tailscale",label:a,url:a})}if(f&&g){let a=m(g);l.push({value:"cloud",label:a,url:a})}return j.forEach(a=>{l.push({value:`saved:${a.name}`,label:a.baseUrl,url:a.baseUrl,saved:!0})}),l.push({value:i,label:"Custom URL...",url:""}),l})({requiresExternalUrl:c,tunnelEnabled:f,tunnelPublicUrl:g,tailscaleEnabled:m,tailscaleUrl:n,cloudEnabled:o,cloudUrl:p,savedPresets:r,withV1:q}),[c,f,g,m,n,o,p,r,q]),y=t.startsWith("saved:"),z=t===i,A=z&&(v||"").trim().length>0;return(0,d.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsxs)("select",{value:t,onChange:c=>{let d=c.target.value;if(d===j){let b=(a||"").trim();if(!b)return;let c=b;try{c=new URL(b).host}catch{}let d=window.prompt("Save endpoint as:",c);if(!d?.trim())return;let e=[...r.filter(a=>a.name!==d.trim()),{name:d.trim(),baseUrl:b}].sort((a,b)=>a.name.localeCompare(b.name));s(e),k(e);return}if(u(d),d===i){w(""),b("");return}let e=x.find(a=>a.value===d);e&&b(e.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:[x.map(a=>(0,d.jsx)("option",{value:a.value,children:a.label},a.value)),A&&(0,d.jsx)("option",{value:j,children:"+ Save current as..."})]}),y&&(0,d.jsx)("button",{type:"button",onClick:()=>{if(!t.startsWith("saved:"))return;let a=t.slice(6),c=r.filter(b=>b.name!==a);s(c),k(c),u(i),w(""),b("")},className:"p-1 text-text-muted hover:text-red-500 rounded transition-colors shrink-0",title:"Delete saved endpoint",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"delete"})})]}),z&&(0,d.jsx)("input",{type:"text",value:v,onChange:a=>{let c=a.target.value;w(c),b(c)},placeholder:q?"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 m="__custom__";function n({value:a,onChange:b,apiKeys:c=[],cloudEnabled:f=!1,className:g=""}){let h=!c.some(b=>b.key===a)&&""!==a,[i,j]=(0,e.useState)(()=>a?c.some(b=>b.key===a)?a:m:c.length>0?c[0].key:m),[k,l]=(0,e.useState)(h?a:"");return 0===c.length&&i!==m&&i!==m?(0,d.jsx)("span",{className:`min-w-0 rounded bg-surface/40 px-2 py-2 text-xs text-text-muted sm:py-1.5 ${g}`,children:f?"No API keys - Create one in Keys page":"sk_9router (default)"}):(0,d.jsxs)("div",{className:`flex flex-col gap-1.5 ${g}`,children:[(0,d.jsxs)("select",{value:i,onChange:a=>{let c=a.target.value;j(c),c===m?(l(""),b("")):b(c)},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:[c.map(a=>(0,d.jsx)("option",{value:a.key,children:a.key},a.id)),(0,d.jsx)("option",{value:m,children:"Custom..."})]}),i===m&&(0,d.jsx)("input",{type:"text",value:k,onChange:a=>{let c=a.target.value;l(c),b(c)},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 o=a=>(a||"").replace(/\/+$/,"");function p(a,b={}){if(!a)return!1;let c=o(a),{tunnelPublicUrl:d,tailscaleUrl:e,cloudUrl:f}=b;return!!(/localhost|127\.0\.0\.1|0\.0\.0\.0/.test(c)||d&&c.startsWith(o(d))||e&&c.startsWith(o(e))||f&&c.startsWith(o(f)))}let q=process.env.NEXT_PUBLIC_CLOUD_URL;function r({tool:a,isExpanded:b,onToggle:c,activeProviders:h,modelMappings:i,onModelMappingChange:j,baseUrl:k,hasActiveProviders:m,apiKeys:o,cloudEnabled:s,initialStatus:t,tunnelEnabled:u,tunnelPublicUrl:v,tailscaleEnabled:w,tailscaleUrl:x}){let y,z,A,[B,C]=(0,e.useState)(t||null),[D,E]=(0,e.useState)(!1),[F,G]=(0,e.useState)(!1),[H,I]=(0,e.useState)(!1),[J,K]=(0,e.useState)(null),[L,M]=(0,e.useState)(!1),[N,O]=(0,e.useState)(!1),[P,Q]=(0,e.useState)(null),[R,S]=(0,e.useState)(""),[T,U]=(0,e.useState)({}),[V,W]=(0,e.useState)(!1),[X,Y]=(0,e.useState)(""),[Z,$]=(0,e.useState)(!1);(0,e.useRef)(!1);let _=(()=>{if(!B?.installed)return null;let a=B.settings?.env?.ANTHROPIC_BASE_URL;return a?p(a,{tunnelPublicUrl:v,tailscaleUrl:x,cloudUrl:s?q:null})?"configured":"other":"not_configured"})(),aa=async a=>{let b=a.target.checked;$(b),await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({ccFilterNaming:b})}).catch(()=>{})},ab=()=>{let a=X||k;return a.endsWith("/v1")?a:`${a}/v1`},ac=async()=>{G(!0),K(null);try{let b={ANTHROPIC_BASE_URL:ab()},c=R?.trim()||(o?.length>0?o[0].key:null)||(s?null:"sk_9router");c&&(b.ANTHROPIC_AUTH_TOKEN=c),a.defaultModels.forEach(a=>{let c=i[a.alias];c&&a.envKey&&(b[a.envKey]=c)});let d=await fetch("/api/cli-tools/claude-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({env:b})}),e=await d.json();d.ok?(K({type:"success",text:"Settings applied successfully!"}),C(a=>({...a,hasBackup:!0,settings:{...a?.settings,env:b}}))):K({type:"error",text:e.error||"Failed to apply settings"})}catch(a){K({type:"error",text:a.message})}finally{G(!1)}},ad=async()=>{I(!0),K(null);try{let b=await fetch("/api/cli-tools/claude-settings",{method:"DELETE"}),c=await b.json();b.ok?(K({type:"success",text:"Settings reset successfully!"}),a.defaultModels.forEach(a=>j(a.alias,a.defaultValue||"")),S("")):K({type:"error",text:c.error||"Failed to reset settings"})}catch(a){K({type:"error",text:a.message})}finally{I(!1)}};return(0,d.jsxs)(f.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,d.jsxs)("div",{className:"flex items-start justify-between gap-3 hover:cursor-pointer sm:items-center",onClick:c,children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,d.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,d.jsx)(g.default,{src:"/providers/claude.png",alt:a.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:a=>{a.target.style.display="none"}})}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[(0,d.jsx)("h3",{className:"font-medium text-sm",children:a.name}),"configured"===_&&(0,d.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"===_&&(0,d.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"===_&&(0,d.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,d.jsx)("p",{className:"text-xs text-text-muted truncate",children:a.description})]})]}),(0,d.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${b?"rotate-180":""}`,children:"expand_more"})]}),b&&(0,d.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[D&&(0,d.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,d.jsx)("span",{children:"Checking Claude CLI..."})]}),!D&&B&&!B.installed&&(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{className:"flex flex-col gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:"Claude CLI not detected locally"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Manual configuration is still available if 9router is deployed on a remote server."})]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2 pl-9",children:[(0,d.jsxs)(f.$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,d.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:"content_copy"}),"Manual Config"]}),(0,d.jsxs)(f.$n,{variant:"outline",size:"sm",onClick:()=>M(!L),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:L?"expand_less":"help"}),L?"Hide":"How to Install"]})]})]}),L&&(0,d.jsxs)("div",{className:"p-4 bg-surface border border-border rounded-lg",children:[(0,d.jsx)("h4",{className:"font-medium mb-3",children:"Installation Guide"}),(0,d.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-text-muted mb-1",children:"macOS / Linux / Windows:"}),(0,d.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,d.jsxs)("p",{className:"text-text-muted",children:["After installation, run ",(0,d.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"claude"})," to verify."]})]})]})]}),!D&&B?.installed&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Select Endpoint"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsx)(l,{value:X||((y=X||k).endsWith("/v1")?y:`${y}/v1`),onChange:Y,requiresExternalUrl:a.requiresExternalUrl,tunnelEnabled:u,tunnelPublicUrl:v,tailscaleEnabled:w,tailscaleUrl:x})]}),B?.settings?.env?.ANTHROPIC_BASE_URL&&(0,d.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,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Current"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.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:B.settings.env.ANTHROPIC_BASE_URL})]}),(0,d.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,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"API Key"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsx)(n,{value:R,onChange:S,apiKeys:o,cloudEnabled:s})]}),a.defaultModels.map(a=>(0,d.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,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:a.name}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsxs)("div",{className:"relative w-full min-w-0",children:[(0,d.jsx)("input",{type:"text",value:i[a.alias]||"",onChange:b=>j(a.alias,b.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"}),i[a.alias]&&(0,d.jsx)("button",{onClick:()=>j(a.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,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]}),(0,d.jsx)("button",{onClick:()=>{Q(a.alias),O(!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"})]},a.alias)),(0,d.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,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Filter naming"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsxs)("label",{className:"flex items-center gap-1.5 cursor-pointer select-none",children:[(0,d.jsx)("input",{type:"checkbox",checked:Z,onChange:aa,className:"w-3.5 h-3.5 accent-primary cursor-pointer"}),(0,d.jsx)("span",{className:"text-xs text-text-muted",children:"Filter naming requests"})]}),(0,d.jsx)(f.m_,{text:"Intercepts Claude Code's topic-naming requests and returns a fake response locally, saving API tokens.",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px] cursor-help",children:"info"})})]})]}),J&&(0,d.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===J.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===J.type?"check_circle":"error"}),(0,d.jsx)("span",{children:J.text})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:flex sm:items-center",children:[(0,d.jsxs)(f.$n,{variant:"primary",size:"sm",onClick:ac,disabled:!m,loading:F,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,d.jsxs)(f.$n,{variant:"outline",size:"sm",onClick:ad,disabled:!B?.has9Router,loading:H,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,d.jsxs)(f.$n,{variant:"ghost",size:"sm",onClick:()=>W(!0),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]})]})]}),(0,d.jsx)(f.rq,{isOpen:N,onClose:()=>O(!1),onSelect:a=>{P&&j(P,a.value)},selectedModel:P?i[P]:null,activeProviders:h,modelAliases:T,title:`Select model for ${P}`}),(0,d.jsx)(f.uR,{isOpen:V,onClose:()=>W(!1),title:"Claude CLI - Manual Configuration",configs:(z=R&&R.trim()?R:s?"<API_KEY_FROM_DASHBOARD>":"sk_9router",A={ANTHROPIC_BASE_URL:ab(),ANTHROPIC_AUTH_TOKEN:z},a.defaultModels.forEach(a=>{let b=i[a.alias];b&&a.envKey&&(A[a.envKey]=b)}),[{filename:"~/.claude/settings.json",content:JSON.stringify({hasCompletedOnboarding:!0,env:A},null,2)}])})]})}function s({tool:a,isExpanded:b,onToggle:c,baseUrl:h,apiKeys:i,activeProviders:j,cloudEnabled:k,initialStatus:m,tunnelEnabled:o,tunnelPublicUrl:q,tailscaleEnabled:r,tailscaleUrl:t}){let u,v,w,x,[y,z]=(0,e.useState)(m||null),[A,B]=(0,e.useState)(!1),[C,D]=(0,e.useState)(!1),[E,F]=(0,e.useState)(!1),[G,H]=(0,e.useState)(null),[I,J]=(0,e.useState)(!1),[K,L]=(0,e.useState)(""),[M,N]=(0,e.useState)(""),[O,P]=(0,e.useState)(""),[Q,R]=(0,e.useState)(!1),[S,T]=(0,e.useState)(!1),[U,V]=(0,e.useState)({}),[W,X]=(0,e.useState)(!1),[Y,Z]=(0,e.useState)(""),$=(()=>{if(!y?.installed)return null;if(!y.config)return"not_configured";let a=y.config.match(/base_url\s*=\s*"([^"]+)"/);return p(a?a[1]:"",{tunnelPublicUrl:q,tailscaleUrl:t})?"configured":"other"})(),_=()=>{let a=Y||`${h}/v1`;return a.endsWith("/v1")?a:`${a}/v1`},aa=async()=>{B(!0);try{let a=await fetch("/api/cli-tools/codex-settings"),b=await a.json();z(b)}catch(a){z({installed:!1,error:a.message})}finally{B(!1)}},ab=async()=>{D(!0),H(null);try{let a=K&&K.trim()||k?K:"sk_9router",b=await fetch("/api/cli-tools/codex-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:_(),apiKey:a,model:M,subagentModel:O||M})}),c=await b.json();b.ok?(H({type:"success",text:"Settings applied successfully!"}),aa()):H({type:"error",text:c.error||"Failed to apply settings"})}catch(a){H({type:"error",text:a.message})}finally{D(!1)}},ac=async()=>{F(!0),H(null);try{let a=await fetch("/api/cli-tools/codex-settings",{method:"DELETE"}),b=await a.json();a.ok?(H({type:"success",text:"Settings reset successfully!"}),N(""),P(""),aa()):H({type:"error",text:b.error||"Failed to reset settings"})}catch(a){H({type:"error",text:a.message})}finally{F(!1)}};return(0,d.jsxs)(f.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,d.jsxs)("div",{className:"flex items-start justify-between gap-3 hover:cursor-pointer sm:items-center",onClick:c,children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,d.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,d.jsx)(g.default,{src:"/providers/codex.png",alt:a.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:a=>{a.target.style.display="none"}})}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[(0,d.jsx)("h3",{className:"font-medium text-sm",children:a.name}),"configured"===$&&(0,d.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"===$&&(0,d.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"===$&&(0,d.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,d.jsx)("p",{className:"text-xs text-text-muted truncate",children:a.description})]})]}),(0,d.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${b?"rotate-180":""}`,children:"expand_more"})]}),b&&(0,d.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[A&&(0,d.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,d.jsx)("span",{children:"Checking Codex CLI..."})]}),!A&&y&&!y.installed&&(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{className:"flex flex-col gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:"Codex CLI not detected locally"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Manual configuration is still available if 9router is deployed on a remote server."})]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2 pl-9",children:[(0,d.jsxs)(f.$n,{variant:"secondary",size:"sm",onClick:()=>X(!0),className:"!bg-yellow-500/20 !border-yellow-500/40 !text-yellow-700 dark:!text-yellow-300 hover:!bg-yellow-500/30",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:"content_copy"}),"Manual Config"]}),(0,d.jsxs)(f.$n,{variant:"outline",size:"sm",onClick:()=>J(!I),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:I?"expand_less":"help"}),I?"Hide":"How to Install"]})]})]}),I&&(0,d.jsxs)("div",{className:"p-4 bg-surface border border-border rounded-lg",children:[(0,d.jsx)("h4",{className:"font-medium mb-3",children:"Installation Guide"}),(0,d.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-text-muted mb-1",children:"macOS / Linux / Windows:"}),(0,d.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,d.jsxs)("p",{className:"text-text-muted",children:["After installation, run ",(0,d.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"codex"})," to verify."]}),(0,d.jsx)("div",{className:"pt-2 border-t border-border",children:(0,d.jsxs)("p",{className:"text-text-muted text-xs",children:["Codex uses ",(0,d.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"~/.codex/auth.json"})," with ",(0,d.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"OPENAI_API_KEY"}),'. Click "Apply" to auto-configure.']})})]})]})]}),!A&&y?.installed&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Select Endpoint"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsx)(l,{value:Y||Y||`${h}/v1`,onChange:Z,requiresExternalUrl:a.requiresExternalUrl,tunnelEnabled:o,tunnelPublicUrl:q,tailscaleEnabled:r,tailscaleUrl:t})]}),y?.config&&((v=(u=y.config.match(/base_url\s*=\s*"([^"]+)"/))?u[1]:null)?(0,d.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,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Current"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.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:v})]}):null),(0,d.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,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"API Key"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsx)(n,{value:K,onChange:L,apiKeys:i,cloudEnabled:k})]}),(0,d.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,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Model"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsxs)("div",{className:"relative w-full min-w-0",children:[(0,d.jsx)("input",{type:"text",value:M,onChange:a=>N(a.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"}),M&&(0,d.jsx)("button",{onClick:()=>N(""),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,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]}),(0,d.jsx)("button",{onClick:()=>R(!0),disabled:!j?.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 ${j?.length?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select Model"})]}),(0,d.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,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Subagent Model"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsxs)("div",{className:"relative w-full min-w-0",children:[(0,d.jsx)("input",{type:"text",value:O,onChange:a=>P(a.target.value),placeholder:M||"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"}),O&&(0,d.jsx)("button",{onClick:()=>P(""),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,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]}),(0,d.jsx)("button",{onClick:()=>T(!0),disabled:!j?.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 ${j?.length?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select Model"})]})]}),G&&(0,d.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===G.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===G.type?"check_circle":"error"}),(0,d.jsx)("span",{children:G.text})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:flex sm:items-center",children:[(0,d.jsxs)(f.$n,{variant:"primary",size:"sm",onClick:ab,disabled:!K&&k&&i.length>0||!M,loading:C,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,d.jsxs)(f.$n,{variant:"outline",size:"sm",onClick:ac,disabled:E,loading:E,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,d.jsxs)(f.$n,{variant:"ghost",size:"sm",onClick:()=>X(!0),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]})]})]}),(0,d.jsx)(f.rq,{isOpen:Q,onClose:()=>R(!1),onSelect:a=>{N(a.value),O||P(a.value),R(!1)},selectedModel:M,activeProviders:j,modelAliases:U,title:"Select Model for Codex"}),(0,d.jsx)(f.rq,{isOpen:S,onClose:()=>T(!1),onSelect:a=>{P(a.value),T(!1)},selectedModel:O,activeProviders:j,modelAliases:U,title:"Select Subagent Model for Codex"}),(0,d.jsx)(f.uR,{isOpen:W,onClose:()=>X(!1),title:"Codex CLI - Manual Configuration",configs:(w=K&&K.trim()?K:k?"<API_KEY_FROM_DASHBOARD>":"sk_9router",x=O||M,[{filename:"~/.codex/config.toml",content:`# 9Router Configuration for Codex CLI
24
- model = "${M}"
25
- model_provider = "9router"
26
-
27
- [model_providers.9router]
28
- name = "9Router"
29
- base_url = "${_()}"
30
- wire_api = "responses"
31
-
32
- [agents.subagent]
33
- model = "${x}"
34
- `},{filename:"~/.codex/auth.json",content:JSON.stringify({auth_mode:"apikey",OPENAI_API_KEY:w},null,2)}])})]})}let t=process.env.NEXT_PUBLIC_CLOUD_URL;function u({tool:a,isExpanded:b,onToggle:c,baseUrl:h,hasActiveProviders:i,apiKeys:j,activeProviders:k,cloudEnabled:m,initialStatus:o,tunnelEnabled:q,tunnelPublicUrl:r,tailscaleEnabled:s,tailscaleUrl:v}){let w,x,y,z,[A,B]=(0,e.useState)(o||null),[C,D]=(0,e.useState)(!1),[E,F]=(0,e.useState)(!1),[G,H]=(0,e.useState)(!1),[I,J]=(0,e.useState)(null),[K,L]=(0,e.useState)(""),[M,N]=(0,e.useState)([]),[O,P]=(0,e.useState)(""),[Q,R]=(0,e.useState)(!1),[S,T]=(0,e.useState)({}),[U,V]=(0,e.useState)(!1),[W,X]=(0,e.useState)(!1),[Y,Z]=(0,e.useState)("");(0,e.useRef)(!1);let $=(()=>{if(!A?.installed)return null;let a=A.settings?.customModels?.find(a=>a.id?.startsWith("custom:9Router"));return a?p(a.baseUrl,{tunnelPublicUrl:r,tailscaleUrl:v,cloudUrl:m?t:null})?"configured":"other":"not_configured"})(),_=async()=>{D(!0);try{let a=await fetch("/api/cli-tools/droid-settings"),b=await a.json();B(b)}catch(a){B({installed:!1,error:a.message})}finally{D(!1)}},aa=()=>{let a=Y||h;return a.endsWith("/v1")?a:`${a}/v1`},ab=()=>{let a=O.trim();!a||M.includes(a)||(N(b=>[...b,a]),P(""))},ac=async()=>{F(!0),J(null);try{let a=K?.trim()||(j?.length>0?j[0].key:null)||(m?null:"sk_9router"),b=await fetch("/api/cli-tools/droid-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:aa(),apiKey:a,models:M,activeModel:M[0]||""})}),c=await b.json();b.ok?(J({type:"success",text:"Settings applied successfully!"}),_()):J({type:"error",text:c.error||"Failed to apply settings"})}catch(a){J({type:"error",text:a.message})}finally{F(!1)}},ad=async()=>{H(!0),J(null);try{let a=await fetch("/api/cli-tools/droid-settings",{method:"DELETE"}),b=await a.json();a.ok?(J({type:"success",text:"Settings reset successfully!"}),N([]),_()):J({type:"error",text:b.error||"Failed to reset settings"})}catch(a){J({type:"error",text:a.message})}finally{H(!1)}};return(0,d.jsxs)(f.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,d.jsxs)("div",{className:"flex items-start justify-between gap-3 hover:cursor-pointer sm:items-center",onClick:c,children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,d.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,d.jsx)(g.default,{src:"/providers/droid.png",alt:a.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:a=>{a.target.style.display="none"}})}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[(0,d.jsx)("h3",{className:"font-medium text-sm",children:a.name}),"configured"===$&&(0,d.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"===$&&(0,d.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"===$&&(0,d.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,d.jsx)("p",{className:"text-xs text-text-muted truncate",children:a.description})]})]}),(0,d.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${b?"rotate-180":""}`,children:"expand_more"})]}),b&&(0,d.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[C&&(0,d.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,d.jsx)("span",{children:"Checking Factory Droid CLI..."})]}),!C&&A&&!A.installed&&(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{className:"flex flex-col gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:"Factory Droid CLI not detected locally"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Manual configuration is still available if 9router is deployed on a remote server."})]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2 pl-9",children:[(0,d.jsxs)(f.$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,d.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:"content_copy"}),"Manual Config"]}),(0,d.jsxs)(f.$n,{variant:"outline",size:"sm",onClick:()=>X(!W),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:W?"expand_less":"help"}),W?"Hide":"How to Install"]})]})]}),W&&(0,d.jsxs)("div",{className:"p-4 bg-surface border border-border rounded-lg",children:[(0,d.jsx)("h4",{className:"font-medium mb-3",children:"Installation Guide"}),(0,d.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-text-muted mb-1",children:"macOS / Linux / Windows:"}),(0,d.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,d.jsxs)("p",{className:"text-text-muted",children:["After installation, run ",(0,d.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"droid"})," to verify."]})]})]})]}),!C&&A?.installed&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Select Endpoint"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsx)(l,{value:Y||((w=Y||h).endsWith("/v1")?w:`${w}/v1`),onChange:Z,requiresExternalUrl:a.requiresExternalUrl,tunnelEnabled:q,tunnelPublicUrl:r,tailscaleEnabled:s,tailscaleUrl:v})]}),A?.settings?.customModels?.find(a=>a.id?.startsWith("custom:9Router"))?.baseUrl&&(0,d.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,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Current"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.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:A.settings.customModels.find(a=>a.id?.startsWith("custom:9Router")).baseUrl})]}),(0,d.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,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"API Key"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsx)(n,{value:K,onChange:L,apiKeys:j,cloudEnabled:m})]}),(0,d.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,d.jsxs)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:["Models ",M.length>0&&(0,d.jsxs)("span",{className:"text-primary",children:["(",M.length,")"]})]}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsxs)("div",{className:"flex-1 flex flex-col gap-1",children:[M.length>0&&(0,d.jsx)("div",{className:"flex flex-col gap-0.5 mb-1",children:M.map(a=>(0,d.jsxs)("div",{className:"flex items-center gap-1.5 px-2 py-1 bg-bg-secondary rounded border border-border",children:[(0,d.jsx)("span",{className:"flex-1 text-xs font-mono truncate",children:a}),(0,d.jsx)("button",{onClick:()=>N(b=>b.filter(b=>b!==a)),className:"text-text-muted hover:text-red-500 transition-colors shrink-0",title:"Remove",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"close"})})]},a))}),(0,d.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,d.jsx)("input",{type:"text",value:O,onChange:a=>P(a.target.value),onKeyDown:a=>{"Enter"===a.key&&(a.preventDefault(),ab())},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,d.jsx)("button",{onClick:()=>R(!0),disabled:!i,className:`px-2 py-1.5 rounded border text-xs shrink-0 ${i?"bg-surface border-border hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select"}),(0,d.jsx)("button",{onClick:ab,disabled:!O.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,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"add"})})]})]})]})]}),I&&(0,d.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,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===I.type?"check_circle":"error"}),(0,d.jsx)("span",{children:I.text})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:flex sm:items-center",children:[(0,d.jsxs)(f.$n,{variant:"primary",size:"sm",onClick:ac,disabled:0===M.length,loading:E,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,d.jsxs)(f.$n,{variant:"outline",size:"sm",onClick:ad,disabled:!A?.has9Router,loading:G,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,d.jsxs)(f.$n,{variant:"ghost",size:"sm",onClick:()=>V(!0),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]})]})]}),(0,d.jsx)(f.rq,{isOpen:Q,onClose:()=>R(!1),onSelect:a=>{!a.value||M.includes(a.value)||(N(b=>[...b,a.value]),R(!1))},selectedModel:null,activeProviders:k,modelAliases:S,title:"Select Model for Factory Droid"}),(0,d.jsx)(f.uR,{isOpen:U,onClose:()=>V(!1),title:"Factory Droid - Manual Configuration",configs:(x=K&&K.trim()?K:m?"<API_KEY_FROM_DASHBOARD>":"sk_9router",y={customModels:M.map((a,b)=>({model:a,id:`custom:9Router-${b}`,index:b,baseUrl:aa(),apiKey:x,displayName:a,maxOutputTokens:131072,noImageSupport:!1,provider:"openai"}))},z="u">typeof navigator&&navigator.platform,[{filename:z?.toLowerCase().includes("win")?"%USERPROFILE%\\.factory\\settings.json":"~/.factory/settings.json",content:JSON.stringify(y,null,2)}])})]})}function v({tool:a,isExpanded:b,onToggle:c,baseUrl:h,hasActiveProviders:i,apiKeys:j,activeProviders:k,cloudEnabled:m,initialStatus:o,tunnelEnabled:q,tunnelPublicUrl:r,tailscaleEnabled:s,tailscaleUrl:t}){let u,w,[x,y]=(0,e.useState)(o||null),[z,A]=(0,e.useState)(!1),[B,C]=(0,e.useState)(!1),[D,E]=(0,e.useState)(!1),[F,G]=(0,e.useState)(null),[H,I]=(0,e.useState)(""),[J,K]=(0,e.useState)(""),[L,M]=(0,e.useState)({}),[N,O]=(0,e.useState)(null),[P,Q]=(0,e.useState)(!1),[R,S]=(0,e.useState)({}),[T,U]=(0,e.useState)(!1),[V,W]=(0,e.useState)("");(0,e.useRef)(!1);let X=(()=>{if(!x?.installed)return null;let a=x.settings?.models?.providers?.["9router"];return a?p(a.baseUrl,{tunnelPublicUrl:r,tailscaleUrl:t})?"configured":"other":"not_configured"})(),Y=async()=>{A(!0);try{let a=await fetch("/api/cli-tools/openclaw-settings"),b=await a.json();y(b)}catch(a){y({installed:!1,error:a.message})}finally{A(!1)}},Z=()=>{let a=V||"http://127.0.0.1:20128";return a.endsWith("/v1")?a:`${a}/v1`},$=async()=>{C(!0),G(null);try{let a=H?.trim()||(j?.length>0?j[0].key:null)||(m?null:"sk_9router"),b=await fetch("/api/cli-tools/openclaw-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:Z(),apiKey:a,model:J,agentModels:L})}),c=await b.json();b.ok?(G({type:"success",text:"Settings applied successfully!"}),Y()):G({type:"error",text:c.error||"Failed to apply settings"})}catch(a){G({type:"error",text:a.message})}finally{C(!1)}},_=async()=>{E(!0),G(null);try{let a=await fetch("/api/cli-tools/openclaw-settings",{method:"DELETE"}),b=await a.json();a.ok?(G({type:"success",text:"Settings reset successfully!"}),K(""),I(""),Y()):G({type:"error",text:b.error||"Failed to reset settings"})}catch(a){G({type:"error",text:a.message})}finally{E(!1)}};return(0,d.jsxs)(f.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,d.jsxs)("div",{className:"flex items-start justify-between gap-3 hover:cursor-pointer sm:items-center",onClick:c,children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,d.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,d.jsx)(g.default,{src:"/providers/openclaw.png",alt:a.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:a=>{a.target.style.display="none"}})}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[(0,d.jsx)("h3",{className:"font-medium text-sm",children:a.name}),"configured"===X&&(0,d.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,d.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,d.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,d.jsx)("p",{className:"text-xs text-text-muted truncate",children:a.description})]})]}),(0,d.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${b?"rotate-180":""}`,children:"expand_more"})]}),b&&(0,d.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[z&&(0,d.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,d.jsx)("span",{children:"Checking Open Claw CLI..."})]}),!z&&x&&!x.installed&&(0,d.jsx)("div",{className:"flex flex-col gap-4",children:(0,d.jsxs)("div",{className:"flex flex-col gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:"Open Claw CLI not detected locally"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Manual configuration is still available if 9router is deployed on a remote server."})]})]}),(0,d.jsx)("div",{className:"flex items-center gap-2 pl-9",children:(0,d.jsxs)(f.$n,{variant:"secondary",size:"sm",onClick:()=>U(!0),className:"!bg-yellow-500/20 !border-yellow-500/40 !text-yellow-700 dark:!text-yellow-300 hover:!bg-yellow-500/30",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:"content_copy"}),"Manual Config"]})})]})}),!z&&x?.installed&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Select Endpoint"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsx)(l,{value:V||((u=V||"http://127.0.0.1:20128").endsWith("/v1")?u:`${u}/v1`),onChange:W,requiresExternalUrl:a.requiresExternalUrl,tunnelEnabled:q,tunnelPublicUrl:r,tailscaleEnabled:s,tailscaleUrl:t})]}),x?.settings?.models?.providers?.["9router"]?.baseUrl&&(0,d.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,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Current"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.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:x.settings.models.providers["9router"].baseUrl})]}),(0,d.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,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"API Key"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsx)(n,{value:H,onChange:I,apiKeys:j,cloudEnabled:m})]}),(0,d.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,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Default Model"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsxs)("div",{className:"relative w-full min-w-0",children:[(0,d.jsx)("input",{type:"text",value:J,onChange:a=>K(a.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"}),J&&(0,d.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,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]}),(0,d.jsx)("button",{onClick:()=>{O(null),Q(!0)},disabled:!i,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 ${i?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select"})]}),(x.agents||[]).filter(a=>a.agentDir).map(a=>(0,d.jsxs)("div",{className:"flex items-center gap-2 pl-4",children:[(0,d.jsxs)("span",{className:"w-32 shrink-0 text-xs text-primary text-right truncate",title:a.name||a.id,children:["Agent ",a.name||a.id]}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsxs)("div",{className:"relative w-full min-w-0",children:[(0,d.jsx)("input",{type:"text",value:L[a.id]||"",onChange:b=>M(c=>({...c,[a.id]:b.target.value})),placeholder:`default (${J||"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"}),L[a.id]&&(0,d.jsx)("button",{onClick:()=>M(b=>({...b,[a.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,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]}),(0,d.jsx)("button",{onClick:()=>{O(a.id),Q(!0)},disabled:!i,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 ${i?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select"})]},a.id))]}),F&&(0,d.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===F.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===F.type?"check_circle":"error"}),(0,d.jsx)("span",{children:F.text})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:flex sm:items-center",children:[(0,d.jsxs)(f.$n,{variant:"primary",size:"sm",onClick:$,disabled:!J,loading:B,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,d.jsxs)(f.$n,{variant:"outline",size:"sm",onClick:_,disabled:!x?.has9Router,loading:D,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,d.jsxs)(f.$n,{variant:"ghost",size:"sm",onClick:()=>U(!0),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]})]})]}),(0,d.jsx)(f.rq,{isOpen:P,onClose:()=>Q(!1),onSelect:a=>{N?(M(b=>({...b,[N]:a.value})),O(null)):K(a.value),Q(!1)},selectedModel:J,activeProviders:k,modelAliases:R,title:"Select Model for Open Claw"}),(0,d.jsx)(f.uR,{isOpen:T,onClose:()=>U(!1),title:"Open Claw - Manual Configuration",configs:(w=H&&H.trim()?H:m?"<API_KEY_FROM_DASHBOARD>":"sk_9router",[{filename:"~/.openclaw/openclaw.json",content:JSON.stringify({agents:{defaults:{model:{primary:`9router/${J||"provider/model-id"}`}}},models:{providers:{"9router":{baseUrl:Z(),apiKey:w,api:"openai-completions",models:[{id:J||"provider/model-id",name:(J||"provider/model-id").split("/").pop()}]}}}},null,2)}])})]})}let w="/api/cli-tools/hermes-settings";function x({tool:a,isExpanded:b,onToggle:c,baseUrl:h,hasActiveProviders:i,apiKeys:j,activeProviders:k,cloudEnabled:m,initialStatus:o,tunnelEnabled:q,tunnelPublicUrl:r,tailscaleEnabled:s,tailscaleUrl:t}){let u,[v,y]=(0,e.useState)(o||null),[z,A]=(0,e.useState)(!1),[B,C]=(0,e.useState)(!1),[D,E]=(0,e.useState)(!1),[F,G]=(0,e.useState)(null),[H,I]=(0,e.useState)(""),[J,K]=(0,e.useState)(""),[L,M]=(0,e.useState)(!1),[N,O]=(0,e.useState)({}),[P,Q]=(0,e.useState)(!1),[R,S]=(0,e.useState)("");(0,e.useRef)(!1);let T=(()=>{if(!v?.installed)return null;let a=v.settings?.model;return a?.base_url?p(a.base_url,{tunnelPublicUrl:r,tailscaleUrl:t})?"configured":"other":"not_configured"})(),U=async()=>{A(!0);try{let a=await fetch(w),b=await a.json();y(b)}catch(a){y({installed:!1,error:a.message})}finally{A(!1)}},V=()=>{let a=R||"http://127.0.0.1:20128";return a.endsWith("/v1")?a:`${a}/v1`},W=async()=>{C(!0),G(null);try{let a=H?.trim()||(j?.length>0?j[0].key:null)||(m?null:"sk_9router"),b=await fetch(w,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:V(),apiKey:a,model:J})}),c=await b.json();b.ok?(G({type:"success",text:"Settings applied successfully!"}),U()):G({type:"error",text:c.error||"Failed to apply settings"})}catch(a){G({type:"error",text:a.message})}finally{C(!1)}},X=async()=>{E(!0),G(null);try{let a=await fetch(w,{method:"DELETE"}),b=await a.json();a.ok?(G({type:"success",text:"Settings reset successfully!"}),K(""),U()):G({type:"error",text:b.error||"Failed to reset settings"})}catch(a){G({type:"error",text:a.message})}finally{E(!1)}};return(0,d.jsxs)(f.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,d.jsxs)("div",{className:"flex items-start justify-between gap-3 hover:cursor-pointer sm:items-center",onClick:c,children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,d.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,d.jsx)(g.default,{src:"/providers/hermes.png",alt:a.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:a=>{a.target.style.display="none"}})}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[(0,d.jsx)("h3",{className:"font-medium text-sm",children:a.name}),"configured"===T&&(0,d.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"===T&&(0,d.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"===T&&(0,d.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,d.jsx)("p",{className:"text-xs text-text-muted truncate",children:a.description})]})]}),(0,d.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${b?"rotate-180":""}`,children:"expand_more"})]}),b&&(0,d.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[z&&(0,d.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,d.jsx)("span",{children:"Checking Hermes Agent..."})]}),!z&&v&&!v.installed&&(0,d.jsx)("div",{className:"flex flex-col gap-4",children:(0,d.jsxs)("div",{className:"flex flex-col gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:"Hermes Agent not detected locally"}),(0,d.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,d.jsx)("div",{className:"flex flex-col sm:flex-row sm:items-center gap-2 pl-0 sm:pl-9",children:(0,d.jsxs)(f.$n,{variant:"secondary",size:"sm",onClick:()=>Q(!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,d.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:"content_copy"}),"Manual Config"]})})]})}),!z&&v?.installed&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Select Endpoint"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsx)(l,{value:R||V(),onChange:S,requiresExternalUrl:a.requiresExternalUrl,tunnelEnabled:q,tunnelPublicUrl:r,tailscaleEnabled:s,tailscaleUrl:t})]}),v?.settings?.model?.base_url&&(0,d.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,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Current"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.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:v.settings.model.base_url})]}),(0,d.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,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"API Key"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsx)(n,{value:H,onChange:I,apiKeys:j,cloudEnabled:m})]}),(0,d.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,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Default Model"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsxs)("div",{className:"relative w-full min-w-0",children:[(0,d.jsx)("input",{type:"text",value:J,onChange:a=>K(a.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"}),J&&(0,d.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,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]}),(0,d.jsx)("button",{onClick:()=>M(!0),disabled:!i,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 ${i?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select"})]})]}),F&&(0,d.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===F.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===F.type?"check_circle":"error"}),(0,d.jsx)("span",{children:F.text})]}),(0,d.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-center gap-2",children:[(0,d.jsxs)(f.$n,{variant:"primary",size:"sm",onClick:W,disabled:!J,loading:B,className:"w-full sm:w-auto",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,d.jsxs)(f.$n,{variant:"outline",size:"sm",onClick:X,disabled:!v?.has9Router,loading:D,className:"w-full sm:w-auto",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,d.jsxs)(f.$n,{variant:"ghost",size:"sm",onClick:()=>Q(!0),className:"w-full sm:w-auto",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]})]})]}),(0,d.jsx)(f.rq,{isOpen:L,onClose:()=>M(!1),onSelect:a=>{K(a.value),M(!1)},selectedModel:J,activeProviders:k,modelAliases:N,title:"Select Model for Hermes Agent"}),(0,d.jsx)(f.uR,{isOpen:P,onClose:()=>Q(!1),title:"Hermes Agent - Manual Configuration",configs:(u=H&&H.trim()?H:m?"<API_KEY_FROM_DASHBOARD>":"sk_9router",[{filename:"~/.hermes/config.yaml",content:`model:
35
- default: "${J||"provider/model-id"}"
36
- provider: "custom"
37
- base_url: "${V()}"
38
- `},{filename:"~/.hermes/.env",content:`OPENAI_API_KEY=${u}
39
- `}])})]})}var y=c(93617);function z({toolId:a,tool:b,isExpanded:c,onToggle:h,baseUrl:i,apiKeys:j,activeProviders:k=[],cloudEnabled:l=!1,tunnelEnabled:m=!1}){let[o,p]=(0,e.useState)(null),[q,r]=(0,e.useState)(!1),[s,t]=(0,e.useState)(""),[u,v]=(0,e.useState)(()=>j?.length>0?j[0].key:""),w=a=>{let b=u&&u.trim()?u:l?"your-api-key":"sk_9router",c=i||"http://localhost:20128",d=c.endsWith("/v1")?c:`${c}/v1`;return a.replace(/\{\{baseUrl\}\}/g,d).replace(/\{\{apiKey\}\}/g,b).replace(/\{\{model\}\}/g,s||"provider/model-id")},{copy:x}=(0,y.C)(),A=async(a,b)=>{await x(w(a),`toolcard-${b}`),p(b),setTimeout(()=>p(null),2e3)},B=k.length>0,C=()=>(!b.requiresExternalUrl||!!l||!!m)&&(!b.requiresCloud||!!l);return(0,d.jsxs)(f.Zp,{padding:"xs",className:"overflow-hidden overflow-x-hidden",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between hover:cursor-pointer",onClick:h,children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)("div",{className:"size-8 rounded-lg flex items-center justify-center shrink-0",children:b.image?(0,d.jsx)(g.default,{src:b.image,alt:b.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:a=>{a.target.style.display="none"}}):b.icon?(0,d.jsx)("span",{className:"material-symbols-outlined text-xl",style:{color:b.color},children:b.icon}):(0,d.jsx)(g.default,{src:`/providers/${a}.png`,alt:b.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:a=>{a.target.style.display="none"}})}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsx)("h3",{className:"font-medium text-sm",children:b.name}),(0,d.jsx)("p",{className:"text-xs text-text-muted truncate",children:b.description})]})]}),(0,d.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${c?"rotate-180":""}`,children:"expand_more"})]}),c&&(0,d.jsx)("div",{className:"mt-6 pt-6 border-t border-border",children:b.guideSteps?(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[b.notes&&0!==b.notes.length?(0,d.jsx)("div",{className:"flex flex-col gap-2 mb-4",children:b.notes.map((a,b)=>{if("cloudCheck"===a.type&&(l||m))return null;let c="warning"===a.type,e="cloudCheck"===a.type&&!l&&!m,f="bg-blue-500/10 border-blue-500/30",g="text-blue-600 dark:text-blue-400",h="text-blue-500",i="info";return c?(f="bg-yellow-500/10 border-yellow-500/30",g="text-yellow-600 dark:text-yellow-400",h="text-yellow-500",i="warning"):e&&(f="bg-red-500/10 border-red-500/30",g="text-red-600 dark:text-red-400",h="text-red-500",i="error"),(0,d.jsxs)("div",{className:`flex items-start gap-3 p-3 rounded-lg border ${f}`,children:[(0,d.jsx)("span",{className:`material-symbols-outlined text-lg ${h}`,children:i}),(0,d.jsx)("p",{className:`text-sm ${g}`,children:a.text})]},b)})}):null,C()&&b.guideSteps.map(a=>(0,d.jsxs)("div",{className:"flex items-start gap-4",children:[(0,d.jsx)("div",{className:"size-8 rounded-full flex items-center justify-center shrink-0 text-sm font-semibold text-white",style:{backgroundColor:b.color},children:a.step}),(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsx)("p",{className:"font-medium text-text",children:a.title}),a.desc&&(0,d.jsx)("p",{className:"text-sm text-text-muted mt-0.5",children:a.desc}),"apiKeySelector"===a.type&&(0,d.jsx)("div",{className:"mt-2 flex flex-col sm:flex-row sm:items-center gap-2",children:(0,d.jsx)(n,{value:u,onChange:v,apiKeys:j,cloudEnabled:l,className:"flex-1"})}),"modelSelector"===a.type&&(0,d.jsxs)("div",{className:"mt-2 flex flex-col sm:flex-row sm:items-center gap-2",children:[(0,d.jsx)("input",{type:"text",value:s,onChange:a=>t(a.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,d.jsx)("button",{onClick:()=>r(!0),disabled:!B,className:`shrink-0 px-3 py-2 rounded-lg border text-sm transition-colors ${B?"bg-bg-secondary border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select Model"}),s&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("button",{onClick:()=>A(s,"model"),className:"shrink-0 px-3 py-2 bg-bg-secondary hover:bg-bg-tertiary rounded-lg border border-border transition-colors",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-lg",children:"model"===o?"check":"content_copy"})}),(0,d.jsx)("button",{onClick:()=>t(""),className:"p-2 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-lg",children:"close"})})]})]}),a.value&&(0,d.jsxs)("div",{className:"mt-2 flex flex-col sm:flex-row sm:items-center gap-2",children:[(0,d.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:w(a.value)}),a.copyable&&(0,d.jsx)("button",{onClick:()=>A(a.value,`${a.step}-${a.title}`),className:"shrink-0 px-3 py-2 bg-bg-secondary hover:bg-bg-tertiary rounded-lg border border-border transition-colors",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-lg",children:o===`${a.step}-${a.title}`?"check":"content_copy"})})]})]})]},a.step)),C()&&b.codeBlock&&(0,d.jsxs)("div",{className:"mt-2",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,d.jsx)("span",{className:"text-xs text-text-muted uppercase tracking-wide",children:b.codeBlock.language}),(0,d.jsxs)("button",{onClick:()=>A(b.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,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:"codeblock"===o?"check":"content_copy"}),"codeblock"===o?"Copied!":"Copy"]})]}),(0,d.jsx)("pre",{className:"p-4 bg-bg-secondary rounded-lg border border-border overflow-x-auto",children:(0,d.jsx)("code",{className:"text-sm font-mono whitespace-pre",children:w(b.codeBlock.code)})})]})]}):(0,d.jsx)("p",{className:"text-text-muted text-sm",children:"Coming soon..."})}),(0,d.jsx)(f.rq,{isOpen:q,onClose:()=>r(!1),onSelect:a=>{t(a.value)},selectedModel:s,activeProviders:k,title:"Select Model"})]})}function A({tool:a,isExpanded:b,onToggle:c,baseUrl:h,apiKeys:i,activeProviders:j,cloudEnabled:k,initialStatus:m,tunnelEnabled:o,tunnelPublicUrl:q,tailscaleEnabled:r,tailscaleUrl:s}){let t,u,v,w,x,[y,z]=(0,e.useState)(m||null),[B,C]=(0,e.useState)(!1),[D,E]=(0,e.useState)(!1),[F,G]=(0,e.useState)(!1),[H,I]=(0,e.useState)(null),[J,K]=(0,e.useState)(!1),[L,M]=(0,e.useState)(""),[N,O]=(0,e.useState)(""),[P,Q]=(0,e.useState)(""),[R,S]=(0,e.useState)(!1),[T,U]=(0,e.useState)(!1),[V,W]=(0,e.useState)({}),[X,Y]=(0,e.useState)(!1),[Z,$]=(0,e.useState)(""),[_,aa]=(0,e.useState)([]),[ab,ac]=(0,e.useState)(""),ad=y?.installed?y.config&&y.has9Router?p(y.config?.provider?.["9router"]?.options?.baseURL||"",{tunnelPublicUrl:q,tailscaleUrl:s})?"configured":"other":"not_configured":null,ae=()=>{let a=Z||h;return a.endsWith("/v1")?a:`${a}/v1`},af=async()=>{C(!0);try{let a=await fetch("/api/cli-tools/opencode-settings"),b=await a.json();z(b)}catch(a){z({installed:!1,error:a.message})}finally{C(!1)}},ag=async()=>{E(!0),I(null);try{let a=L&&L.trim()||k?L:"sk_9router",b=await fetch("/api/cli-tools/opencode-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:ae(),apiKey:a,models:_,activeModel:""===ab?"":ab||_[0],subagentModel:P})}),c=await b.json();b.ok?(I({type:"success",text:"Settings applied successfully!"}),af()):I({type:"error",text:c.error||"Failed to apply settings"})}catch(a){I({type:"error",text:a.message})}finally{E(!1)}},ah=async()=>{G(!0),I(null);try{let a=await fetch("/api/cli-tools/opencode-settings",{method:"DELETE"}),b=await a.json();a.ok?(I({type:"success",text:"Settings reset successfully!"}),O(""),Q(""),aa([]),ac(""),af()):I({type:"error",text:b.error||"Failed to reset settings"})}catch(a){I({type:"error",text:a.message})}finally{G(!1)}};return(0,d.jsxs)(f.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,d.jsxs)("div",{className:"flex items-start justify-between gap-3 hover:cursor-pointer sm:items-center",onClick:c,children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,d.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,d.jsx)(g.default,{src:"/providers/opencode.png",alt:a.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:a=>{a.target.style.display="none"}})}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[(0,d.jsx)("h3",{className:"font-medium text-sm",children:a.name}),"configured"===ad&&(0,d.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"===ad&&(0,d.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"===ad&&(0,d.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,d.jsx)("p",{className:"text-xs text-text-muted truncate",children:a.description})]})]}),(0,d.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${b?"rotate-180":""}`,children:"expand_more"})]}),b&&(0,d.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[B&&(0,d.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,d.jsx)("span",{children:"Checking OpenCode CLI..."})]}),!B&&y&&!y.installed&&(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{className:"flex flex-col gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:"OpenCode CLI not detected locally"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Manual configuration is still available if 9router is deployed on a remote server."})]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2 pl-9",children:[(0,d.jsxs)(f.$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,d.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:"content_copy"}),"Manual Config"]}),(0,d.jsxs)(f.$n,{variant:"outline",size:"sm",onClick:()=>K(!J),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:J?"expand_less":"help"}),J?"Hide":"How to Install"]})]})]}),J&&(0,d.jsxs)("div",{className:"p-4 bg-surface border border-border rounded-lg",children:[(0,d.jsx)("h4",{className:"font-medium mb-3",children:"Installation Guide"}),(0,d.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-text-muted mb-1",children:"macOS / Linux:"}),(0,d.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,d.jsxs)("p",{className:"text-text-muted",children:["After installation, run ",(0,d.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"opencode"})," to verify."]})]})]})]}),!B&&y?.installed&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Select Endpoint"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsx)(l,{value:Z||Z||`${h}/v1`,onChange:$,requiresExternalUrl:a.requiresExternalUrl,tunnelEnabled:o,tunnelPublicUrl:q,tailscaleEnabled:r,tailscaleUrl:s})]}),y?.config?.provider?.["9router"]?.options?.baseURL&&(0,d.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,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Current"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.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:y.config.provider["9router"].options.baseURL})]}),(0,d.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,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"API Key"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsx)(n,{value:L,onChange:M,apiKeys:i,cloudEnabled:k})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-start sm:gap-2",children:[(0,d.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right pt-1",children:"Models"}),(0,d.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px] mt-1.5",children:"arrow_forward"}),(0,d.jsxs)("div",{className:"flex-1 flex flex-col gap-2",children:[(0,d.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===_.length?(0,d.jsx)("span",{className:"text-xs text-text-muted",children:"No models selected"}):_.map(a=>(0,d.jsxs)("span",{onClick:async()=>{if(a===ab)try{(await fetch("/api/cli-tools/opencode-settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({clearActiveModel:!0})})).ok&&(ac(""),af())}catch(a){console.log("Error clearing active model:",a)}else ac(a)},className:`inline-flex items-center gap-1 px-2 py-0.5 rounded text-xs cursor-pointer transition-colors ${a===ab?"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:a===ab?"Click to clear active model":"Click to set as active",children:[a===ab&&(0,d.jsx)("span",{className:"material-symbols-outlined text-[10px]",children:"star"}),a,(0,d.jsx)("button",{onClick:async b=>{b.stopPropagation();try{if((await fetch(`/api/cli-tools/opencode-settings?model=${encodeURIComponent(a)}`,{method:"DELETE"})).ok){let b=_.filter(b=>b!==a);aa(b),ab===a&&ac(""),af()}}catch(a){console.log("Error removing model:",a)}},className:"ml-0.5 hover:text-red-500",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"close"})})]},a))}),(0,d.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,d.jsx)("button",{onClick:()=>S(!0),disabled:!j?.length,className:`px-2 py-1 rounded border text-xs transition-colors ${j?.length?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Add Model"}),(0,d.jsx)("span",{className:"text-xs text-text-muted",children:_.length>0&&ab?(0,d.jsxs)(d.Fragment,{children:["Active: ",(0,d.jsx)("span",{className:"text-primary",children:ab})]}):_.length>0?(0,d.jsx)("span",{className:"text-yellow-500",children:"Click a model to set/clear active"}):"Select models to add"})]})]})]}),(0,d.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,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Subagent Model"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsx)("input",{type:"text",value:P,onChange:a=>Q(a.target.value),placeholder:N||"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,d.jsx)("button",{onClick:()=>U(!0),disabled:!j?.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 ${j?.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,d.jsx)("button",{onClick:()=>Q(""),className:"p-1 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear (will use main model)",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]})]}),H&&(0,d.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===H.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===H.type?"check_circle":"error"}),(0,d.jsx)("span",{children:H.text})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:flex sm:items-center",children:[(0,d.jsxs)(f.$n,{variant:"primary",size:"sm",onClick:ag,disabled:0===_.length,loading:D,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,d.jsxs)(f.$n,{variant:"outline",size:"sm",onClick:ah,disabled:!y.has9Router,loading:F,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,d.jsxs)(f.$n,{variant:"ghost",size:"sm",onClick:()=>Y(!0),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]})]})]}),(0,d.jsx)(f.rq,{isOpen:R,onClose:()=>S(!1),onSelect:a=>{!_.includes(a.value)&&(aa([..._,a.value]),ab||ac(a.value)),S(!1)},selectedModel:null,activeProviders:j,modelAliases:V,title:"Add Model for OpenCode"}),(0,d.jsx)(f.rq,{isOpen:T,onClose:()=>U(!1),onSelect:a=>{Q(a.value),U(!1)},selectedModel:P,activeProviders:j,modelAliases:V,title:"Select Subagent Model for OpenCode"}),(0,d.jsx)(f.uR,{isOpen:X,onClose:()=>Y(!1),title:"OpenCode - Manual Configuration",configs:(t=L&&L.trim()?L:k?"<API_KEY_FROM_DASHBOARD>":"sk_9router",u=_.length>0?_:["provider/model-id"],v=ab||_[0]||u[0],w=P||v,x={},u.forEach(a=>{x[a]={name:a}}),[{filename:"~/.config/opencode/opencode.json",content:JSON.stringify({provider:{"9router":{npm:"@ai-sdk/openai-compatible",options:{baseURL:ae(),apiKey:t},models:x}},model:`9router/${v}`,agent:{explorer:{description:"Fast explorer subagent for codebase exploration",mode:"subagent",model:`9router/${w}`}}},null,2)}])})]})}let B="/api/cli-tools/cowork-settings";function C({tool:a,isExpanded:b,onToggle:c,baseUrl:h,apiKeys:i,activeProviders:j,hasActiveProviders:k,cloudEnabled:m,cloudUrl:o,tunnelEnabled:p,tunnelPublicUrl:q,tailscaleEnabled:r,tailscaleUrl:s,initialStatus:t}){let u,v,w,x,[y,z]=(0,e.useState)(t||null),[A,D]=(0,e.useState)(!1),[E,F]=(0,e.useState)(!1),[G,H]=(0,e.useState)(!1),[I,J]=(0,e.useState)(null),[K,L]=(0,e.useState)(""),[M,N]=(0,e.useState)([]),[O,P]=(0,e.useState)(!1),[Q,R]=(0,e.useState)(""),[S,T]=(0,e.useState)([]),[U,V]=(0,e.useState)([]),[W,X]=(0,e.useState)([]),[Y,Z]=(0,e.useState)(!1),[$,_]=(0,e.useState)(!1),[aa,ab]=(0,e.useState)(!1),[ac,ad]=(0,e.useState)({type:"url",name:"",url:"",command:"",args:""}),ae=async()=>{D(!0);try{let a=await fetch(B),b=await a.json();z(b)}catch(a){z({installed:!1,error:a.message})}finally{D(!1)}},af=()=>{let a;return(a=(Q||"").replace(/\/+$/,""))?/\/v1$/.test(a)?a:`${a}/v1`:""},ag=y?.installed?y?.cowork?.baseUrl?y.has9Router?"configured":"other":"not_configured":null,ah=async()=>{J(null);let a=af();if(0===M.length)return void J({type:"error",text:"Please select at least one model"});F(!0);try{let b=K?.trim()||(i?.length>0?i[0].key:null)||(m?null:"sk_9router"),c=await fetch(B,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:a,apiKey:b,models:M,plugins:S,localPlugins:U,customPlugins:W})}),d=await c.json();c.ok?(J({type:"success",text:"Settings applied. Quit & reopen Claude Desktop to load."}),ae()):J({type:"error",text:d.error||"Failed to apply settings"})}catch(a){J({type:"error",text:a.message})}finally{F(!1)}},ai=async({name:a,models:b})=>{try{let c=await fetch("/api/combos",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:a,models:b})});if(!c.ok){let a=await c.json();J({type:"error",text:a.error||"Failed to create combo"});return}M.includes(a)||N([...M,a]),Z(!1),J({type:"success",text:`Combo "${a}" created and added.`})}catch(a){J({type:"error",text:a.message})}},aj=async()=>{H(!0),J(null);try{let a=await fetch(B,{method:"DELETE"}),b=await a.json();a.ok?(J({type:"success",text:"Settings reset successfully"}),N([]),T(y?.defaultPlugins||[]),V([]),X([]),ae()):J({type:"error",text:b.error||"Failed to reset"})}catch(a){J({type:"error",text:a.message})}finally{H(!1)}};return(0,d.jsxs)(f.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,d.jsxs)("div",{className:"flex items-start justify-between gap-3 hover:cursor-pointer sm:items-center",onClick:c,children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,d.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,d.jsx)(g.default,{src:a.image,alt:a.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:a=>{a.target.style.display="none"}})}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[(0,d.jsx)("h3",{className:"font-medium text-sm",children:a.name}),"configured"===ag&&(0,d.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"===ag&&(0,d.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"===ag&&(0,d.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,d.jsx)("p",{className:"text-xs text-text-muted truncate",children:a.description})]})]}),(0,d.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${b?"rotate-180":""}`,children:"expand_more"})]}),b&&(0,d.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[A&&(0,d.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,d.jsx)("span",{children:"Checking Claude Cowork..."})]}),!A&&y&&!y.installed&&(0,d.jsxs)("div",{className:"flex flex-col gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:"Claude Desktop (Cowork mode) not detected"}),(0,d.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,d.jsx)("div",{className:"pl-9",children:(0,d.jsxs)(f.$n,{variant:"secondary",size:"sm",onClick:()=>P(!0),className:"!bg-yellow-500/20 !border-yellow-500/40 !text-yellow-700 dark:!text-yellow-300 hover:!bg-yellow-500/30",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:"content_copy"}),"Manual Config"]})})]}),!A&&y?.installed&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Select Endpoint"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsx)(l,{value:af(),onChange:a=>R((a||"").replace(/\/v1\/?$/,"")),tunnelEnabled:p,tunnelPublicUrl:q,tailscaleEnabled:r,tailscaleUrl:s,cloudEnabled:m,cloudUrl:o})]}),y?.cowork?.baseUrl&&(0,d.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,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Current"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.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:y.cowork.baseUrl})]}),(0,d.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,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"API Key"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsx)(n,{value:K,onChange:L,apiKeys:i,cloudEnabled:m})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Models"}),(0,d.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2",children:[(0,d.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===M.length?(0,d.jsx)("span",{className:"text-xs text-text-muted",children:"No models selected"}):M.map(a=>(0,d.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:[a,(0,d.jsx)("button",{onClick:()=>N(b=>b.filter(b=>b!==a)),className:"ml-0.5 hover:text-red-500",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"close"})})]},a))}),(0,d.jsx)("button",{onClick:()=>Z(!0),disabled:!k,className:`shrink-0 px-2 py-1.5 rounded border text-xs whitespace-nowrap transition-colors ${k?"bg-primary/10 border-primary/40 text-primary hover:bg-primary/20 cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"+ Combo"})]})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-start sm:gap-2",children:[(0,d.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right pt-2",children:"MCP"}),(0,d.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px] mt-2",children:"arrow_forward"}),(0,d.jsxs)("div",{className:"flex-1 flex flex-col gap-1",children:[S.filter(a=>"exa"!==a.name).map(a=>(0,d.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1 bg-surface rounded border border-border",children:[(0,d.jsx)("span",{className:"text-xs font-medium min-w-0 truncate flex-shrink-0",children:a.title||a.name}),a.oauth&&(0,d.jsx)("span",{className:"text-[8px] text-amber-600 shrink-0",children:"OAuth"}),(0,d.jsxs)("div",{className:"flex-1 flex flex-wrap gap-1 overflow-hidden",style:{maxHeight:"1.5rem"},children:[Array.isArray(a.toolNames)&&a.toolNames.slice(0,6).map(a=>(0,d.jsx)("span",{className:"text-[9px] px-1 py-0.5 rounded bg-black/5 dark:bg-white/5 text-text-muted whitespace-nowrap",children:a},a)),Array.isArray(a.toolNames)&&a.toolNames.length>6&&(0,d.jsxs)("span",{className:"text-[9px] px-1 py-0.5 rounded bg-black/5 dark:bg-white/5 text-text-muted whitespace-nowrap",children:["+",a.toolNames.length-6]})]}),(0,d.jsx)("button",{onClick:()=>{var b;return b=a.name,void T(S.filter(a=>a.name!==b))},className:"shrink-0 hover:text-red-500 ml-auto",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"close"})})]},a.name)),W.map(a=>(0,d.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1 bg-surface rounded border border-border",children:[(0,d.jsx)("span",{className:"text-xs font-medium min-w-0 truncate flex-shrink-0",children:a.name}),(0,d.jsx)("span",{className:"text-[8px] px-1 py-0.5 rounded bg-blue-500/10 text-blue-500 shrink-0",children:"custom"}),(0,d.jsx)("span",{className:"flex-1 text-[9px] text-text-muted truncate",children:a.url||a.command}),(0,d.jsx)("button",{onClick:()=>X(W.filter(b=>b.name!==a.name)),className:"shrink-0 hover:text-red-500 ml-auto",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"close"})})]},a.name)),0===S.filter(a=>"exa"!==a.name).length&&0===W.length&&(0,d.jsx)("div",{className:"px-2 py-1.5 bg-surface rounded border border-border text-xs text-text-muted",children:"No MCPs added"}),(0,d.jsxs)("div",{className:"flex items-center gap-2 mt-0.5",children:[(0,d.jsx)("button",{onClick:()=>_(!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,d.jsx)("button",{onClick:()=>{ad({type:"url",name:"",url:"",command:"",args:""}),ab(!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,d.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,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-start sm:gap-2",children:[(0,d.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right pt-1",children:"Tools"}),(0,d.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px] mt-1.5",children:"arrow_forward"}),(0,d.jsxs)("div",{className:"flex-1 flex flex-col gap-1.5",children:[(u=S.some(a=>"exa"===a.name),v=(y?.defaultPlugins||[]).find(a=>"exa"===a.name),(0,d.jsxs)("label",{className:"flex items-start gap-2 cursor-pointer px-2 py-1.5 bg-surface rounded border border-border",children:[(0,d.jsx)("input",{type:"checkbox",checked:u,onChange:a=>{a.target.checked&&v?T([...S.filter(a=>"exa"!==a.name),v]):T(S.filter(a=>"exa"!==a.name))},className:"mt-0.5"}),(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsx)("div",{className:"text-xs font-medium",children:"Web Search & Fetch (Exa)"}),(0,d.jsx)("p",{className:"text-[10px] text-text-muted leading-snug",children:"Replaces built-in WebSearch/WebFetch. Auto-strips duplicates from tool list."})]})]})),(()=>{let a=(y?.localStdioPlugins||[]).find(a=>"browsermcp"===a.name);if(!a)return null;let b=U.includes("browsermcp");return(0,d.jsxs)("label",{className:"flex items-start gap-2 cursor-pointer px-2 py-1.5 bg-surface rounded border border-border",children:[(0,d.jsx)("input",{type:"checkbox",checked:b,onChange:a=>V(a.target.checked?[...U,"browsermcp"]:U.filter(a=>"browsermcp"!==a)),className:"mt-0.5"}),(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsx)("div",{className:"text-xs font-medium",children:"Browser Control (Browser MCP)"}),(0,d.jsxs)("p",{className:"text-[10px] text-text-muted leading-snug",children:["Controls your running Chrome. Auto-strips Cowork's built-in browser tools."," ",(0,d.jsx)("a",{href:a.extensionUrl,target:"_blank",rel:"noopener noreferrer",className:"text-primary underline",children:"Install Chrome extension"})]})]})]})})()]})]}),Array.isArray(y?.localStdioPlugins)&&y.localStdioPlugins.filter(a=>"browsermcp"!==a.name).length>0&&(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-start sm:gap-2",children:[(0,d.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right pt-1",children:"Local Plugins"}),(0,d.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px] mt-1.5",children:"arrow_forward"}),(0,d.jsxs)("div",{className:"flex-1 flex flex-col gap-2",children:[(0,d.jsx)("div",{className:"flex flex-col gap-1.5 px-2 py-1.5 bg-surface rounded border border-border",children:y.localStdioPlugins.filter(a=>"browsermcp"!==a.name).map(a=>{let b=U.includes(a.name);return(0,d.jsxs)("label",{className:"flex items-start gap-2 cursor-pointer",children:[(0,d.jsx)("input",{type:"checkbox",checked:b,onChange:b=>V(b.target.checked?[...U,a.name]:U.filter(b=>b!==a.name)),className:"mt-0.5"}),(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[(0,d.jsx)("span",{className:"text-xs font-medium",children:a.title}),(0,d.jsx)("span",{className:"text-[8px] text-amber-600",children:"stdio"})]}),(0,d.jsx)("p",{className:"text-[10px] text-text-muted leading-snug",children:a.description}),a.extensionUrl&&(0,d.jsx)("a",{href:a.extensionUrl,target:"_blank",rel:"noopener noreferrer",className:"text-[10px] text-primary underline",children:"Install Chrome extension"})]})]},a.name)})}),(0,d.jsxs)("p",{className:"text-[10px] text-text-muted leading-snug",children:["⚠️ Local plugins run as subprocess via ",(0,d.jsx)("code",{className:"px-1 py-0.5 rounded bg-black/5 dark:bg-white/5",children:"npx"}),". Requires Node.js installed."]})]})]})]}),I&&(0,d.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,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===I.type?"check_circle":"error"}),(0,d.jsx)("span",{children:I.text})]}),(0,d.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-center gap-2",children:[(0,d.jsxs)(f.$n,{variant:"primary",size:"sm",onClick:ah,disabled:0===M.length,loading:E,className:"w-full sm:w-auto",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,d.jsxs)(f.$n,{variant:"outline",size:"sm",onClick:aj,disabled:!y.has9Router,loading:G,className:"w-full sm:w-auto",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,d.jsxs)(f.$n,{variant:"ghost",size:"sm",onClick:()=>P(!0),className:"w-full sm:w-auto",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]})]})]}),(0,d.jsx)(f.uR,{isOpen:O,onClose:()=>P(!1),title:"Claude Cowork - Manual Configuration",configs:(w=K&&K.trim()?K:m?"<API_KEY_FROM_DASHBOARD>":"sk_9router",x=M.length>0?M:["provider/model-id"],[{filename:"~/Library/Application Support/Claude-3p/configLibrary/<appliedId>.json",content:JSON.stringify({inferenceProvider:"gateway",inferenceGatewayBaseUrl:af()||"https://your-public-host/v1",inferenceGatewayApiKey:w,inferenceModels:x.map(a=>({name:a}))},null,2)}])}),(0,d.jsx)(f.CK,{isOpen:Y,combo:null,onClose:()=>Z(!1),onSave:ai,activeProviders:j,forcePrefix:"claude-",title:"Create Cowork Combo"}),(0,d.jsx)(f.Nf,{isOpen:$,onClose:()=>_(!1),onAdd:a=>{S.some(b=>b.name===a.name)||T([...S,a])},addedNames:S.map(a=>a.name)}),aa&&(0,d.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/40",onClick:()=>ab(!1),children:(0,d.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:a=>a.stopPropagation(),children:[(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("h3",{className:"font-semibold text-sm",children:"Add Custom MCP"}),(0,d.jsx)("button",{onClick:()=>ab(!1),className:"text-text-muted hover:text-text-main",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"close"})})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)("button",{onClick:()=>ad(a=>({...a,type:"url"})),className:`flex-1 py-1.5 rounded border text-xs font-medium transition-colors ${"url"===ac.type?"bg-primary/10 border-primary/40 text-primary":"border-border text-text-muted hover:border-primary/40"}`,children:"URL (SSE)"}),(0,d.jsx)("button",{onClick:()=>ad(a=>({...a,type:"cmd"})),className:`flex-1 py-1.5 rounded border text-xs font-medium transition-colors ${"cmd"===ac.type?"bg-primary/10 border-primary/40 text-primary":"border-border text-text-muted hover:border-primary/40"}`,children:"Command (stdio)"})]}),(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,d.jsx)("label",{className:"text-[11px] text-text-muted font-medium",children:"Name"}),(0,d.jsx)("input",{type:"text",placeholder:"my-mcp",value:ac.name,onChange:a=>ad(b=>({...b,name:a.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"===ac.type?(0,d.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,d.jsx)("label",{className:"text-[11px] text-text-muted font-medium",children:"SSE URL"}),(0,d.jsx)("input",{type:"text",placeholder:"https://your-mcp-server.com/sse",value:ac.url,onChange:a=>ad(b=>({...b,url:a.target.value})),className:"px-2 py-1.5 rounded border border-border bg-surface text-xs outline-none focus:border-primary"})]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,d.jsx)("label",{className:"text-[11px] text-text-muted font-medium",children:"Command"}),(0,d.jsx)("input",{type:"text",placeholder:"npx",value:ac.command,onChange:a=>ad(b=>({...b,command:a.target.value})),className:"px-2 py-1.5 rounded border border-border bg-surface text-xs outline-none focus:border-primary"})]}),(0,d.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,d.jsxs)("label",{className:"text-[11px] text-text-muted font-medium",children:["Args ",(0,d.jsx)("span",{className:"font-normal",children:"(comma-separated)"})]}),(0,d.jsx)("input",{type:"text",placeholder:"-y, @some/mcp-package",value:ac.args,onChange:a=>ad(b=>({...b,args:a.target.value})),className:"px-2 py-1.5 rounded border border-border bg-surface text-xs outline-none focus:border-primary"})]})]})]}),(0,d.jsxs)("div",{className:"flex gap-2 justify-end",children:[(0,d.jsx)("button",{onClick:()=>ab(!1),className:"px-3 py-1.5 rounded border border-border text-xs text-text-muted hover:bg-surface cursor-pointer",children:"Cancel"}),(0,d.jsx)("button",{onClick:()=>{let a=ac.name.trim();if(a){if("url"===ac.type){if(!ac.url.trim())return;X(b=>[...b.filter(b=>b.name!==a),{name:a,url:ac.url.trim(),transport:"sse",custom:!0}])}else{if(!ac.command.trim())return;let b=ac.args.split(",").map(a=>a.trim()).filter(Boolean);X(c=>[...c.filter(b=>b.name!==a),{name:a,command:ac.command.trim(),args:b,custom:!0}])}ab(!1)}},className:"px-3 py-1.5 rounded bg-primary text-white text-xs font-medium hover:opacity-90 cursor-pointer",children:"Add"})]})]})})]})}function D({tool:a,isExpanded:b,onToggle:c,baseUrl:h,apiKeys:i,activeProviders:j,cloudEnabled:k,initialStatus:m,tunnelEnabled:o,tunnelPublicUrl:q,tailscaleEnabled:r,tailscaleUrl:s}){let t,u,[v,w]=(0,e.useState)(m||null),[x,y]=(0,e.useState)(!1),[z,A]=(0,e.useState)(!1),[B,C]=(0,e.useState)(!1),[E,F]=(0,e.useState)(null),[G,H]=(0,e.useState)(""),[I,J]=(0,e.useState)(""),[K,L]=(0,e.useState)({}),[M,N]=(0,e.useState)(!1),[O,P]=(0,e.useState)([]),[Q,R]=(0,e.useState)(!1),S=v?v.has9Router?p(v.currentUrl||"",{tunnelPublicUrl:q,tailscaleUrl:s})?"configured":"other":"not_configured":null,T=()=>{let a=I||h;return a.endsWith("/v1")?a:`${a}/v1`},U=async()=>{y(!0);try{let a=await fetch("/api/cli-tools/copilot-settings"),b=await a.json();w(b)}catch(a){w({error:a.message})}finally{y(!1)}},V=async()=>{A(!0),F(null);try{let a=G&&G.trim()||k?G:"sk_9router",b=await fetch("/api/cli-tools/copilot-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:T(),apiKey:a,models:O})}),c=await b.json();b.ok?(F({type:"success",text:c.message||"Settings applied! Reload VS Code."}),U()):F({type:"error",text:c.error||"Failed to apply settings"})}catch(a){F({type:"error",text:a.message})}finally{A(!1)}},W=async()=>{C(!0),F(null);try{let a=await fetch("/api/cli-tools/copilot-settings",{method:"DELETE"}),b=await a.json();a.ok?(F({type:"success",text:"Settings reset successfully!"}),P([]),U()):F({type:"error",text:b.error||"Failed to reset settings"})}catch(a){F({type:"error",text:a.message})}finally{C(!1)}};return(0,d.jsxs)(f.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,d.jsxs)("div",{className:"flex items-start justify-between gap-3 hover:cursor-pointer sm:items-center",onClick:c,children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,d.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,d.jsx)(g.default,{src:"/providers/copilot.png",alt:a.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:a=>{a.target.style.display="none"}})}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[(0,d.jsx)("h3",{className:"font-medium text-sm",children:a.name}),"configured"===S&&(0,d.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"===S&&(0,d.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"===S&&(0,d.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,d.jsx)("p",{className:"text-xs text-text-muted truncate",children:a.description})]})]}),(0,d.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${b?"rotate-180":""}`,children:"expand_more"})]}),b&&(0,d.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[x&&(0,d.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,d.jsx)("span",{children:"Checking Copilot config..."})]}),!x&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex items-start gap-3 p-3 bg-blue-500/10 border border-blue-500/30 rounded-lg",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-blue-500 text-lg",children:"info"}),(0,d.jsxs)("div",{className:"text-xs text-blue-700 dark:text-blue-300",children:[(0,d.jsxs)("p",{className:"font-medium",children:["Writes to ",(0,d.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/10 rounded",children:"chatLanguageModels.json"})]}),(0,d.jsx)("p",{className:"mt-0.5 opacity-80",children:"Reload VS Code after applying for changes to take effect."})]})]}),(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Select Endpoint"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsx)(l,{value:I||I||`${h}/v1`,onChange:J,requiresExternalUrl:a.requiresExternalUrl,tunnelEnabled:o,tunnelPublicUrl:q,tailscaleEnabled:r,tailscaleUrl:s})]}),(0,d.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,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"API Key"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsx)(n,{value:G,onChange:H,apiKeys:i,cloudEnabled:k})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-start sm:gap-2",children:[(0,d.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right pt-1",children:"Models"}),(0,d.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px] mt-1.5",children:"arrow_forward"}),(0,d.jsxs)("div",{className:"flex-1 flex flex-col gap-2",children:[(0,d.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===O.length?(0,d.jsx)("span",{className:"text-xs text-text-muted",children:"No models selected"}):O.map(a=>(0,d.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:[a,(0,d.jsx)("button",{onClick:b=>{b.stopPropagation(),P(b=>b.filter(b=>b!==a))},className:"ml-0.5 hover:text-red-500",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"close"})})]},a))}),(0,d.jsx)("div",{children:(0,d.jsx)("button",{onClick:()=>R(!0),disabled:!j?.length,className:`px-2 py-1 rounded border text-xs transition-colors ${j?.length?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Add Model"})})]})]})]}),E&&(0,d.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===E.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===E.type?"check_circle":"error"}),(0,d.jsx)("span",{children:E.text})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:flex sm:items-center",children:[(0,d.jsxs)(f.$n,{variant:"primary",size:"sm",onClick:V,disabled:0===O.length,loading:z,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,d.jsxs)(f.$n,{variant:"outline",size:"sm",onClick:W,disabled:!v?.has9Router,loading:B,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,d.jsxs)(f.$n,{variant:"ghost",size:"sm",onClick:()=>N(!0),disabled:0===O.length,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]})]})]}),(0,d.jsx)(f.rq,{isOpen:Q,onClose:()=>R(!1),onSelect:a=>{O.includes(a.value)||P([...O,a.value]),R(!1)},selectedModel:null,activeProviders:j,modelAliases:K,title:"Add Model for GitHub Copilot"}),(0,d.jsx)(f.uR,{isOpen:M,onClose:()=>N(!1),title:"GitHub Copilot - Manual Configuration",configs:(t=G&&G.trim()?G:k?"<API_KEY_FROM_DASHBOARD>":"sk_9router",u=T(),[{filename:"~/Library/Application Support/Code/User/chatLanguageModels.json",content:JSON.stringify([{name:"9Router",vendor:"azure",apiKey:t,models:(O.length>0?O:["provider/model-id"]).map(a=>({id:a,name:a,url:`${u}/chat/completions#models.ai.azure.com`,toolCalling:!0,vision:!1,maxInputTokens:128e3,maxOutputTokens:16e3}))}],null,2)}])})]})}function E({tool:a,isExpanded:b,onToggle:c,baseUrl:h,apiKeys:i,activeProviders:j,cloudEnabled:k,initialStatus:m,tunnelEnabled:o,tunnelPublicUrl:q,tailscaleEnabled:r,tailscaleUrl:s}){let t,u,[v,w]=(0,e.useState)(m||null),[x,y]=(0,e.useState)(!1),[z,A]=(0,e.useState)(!1),[B,C]=(0,e.useState)(!1),[D,F]=(0,e.useState)(null),[G,H]=(0,e.useState)(!1),[I,J]=(0,e.useState)(""),[K,L]=(0,e.useState)(""),[M,N]=(0,e.useState)(!1),[O,P]=(0,e.useState)({}),[Q,R]=(0,e.useState)(!1),[S,T]=(0,e.useState)(""),U=v?.installed?v.has9Router?p(v.settings?.openAiBaseUrl||"",{tunnelPublicUrl:q,tailscaleUrl:s})?"configured":"other":"not_configured":null,V=()=>{let a=S||`${h}/v1`;return a.endsWith("/v1")?a:`${a}/v1`},W=async()=>{y(!0);try{let a=await fetch("/api/cli-tools/cline-settings"),b=await a.json();w(b)}catch(a){w({installed:!1,error:a.message})}finally{y(!1)}},X=async()=>{A(!0),F(null);try{let a=I&&I.trim()||k?I:"sk_9router",b=await fetch("/api/cli-tools/cline-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:V(),apiKey:a,model:K})}),c=await b.json();b.ok?(F({type:"success",text:"Settings applied successfully!"}),W()):F({type:"error",text:c.error||"Failed to apply settings"})}catch(a){F({type:"error",text:a.message})}finally{A(!1)}},Y=async()=>{C(!0),F(null);try{let a=await fetch("/api/cli-tools/cline-settings",{method:"DELETE"}),b=await a.json();a.ok?(F({type:"success",text:"Settings reset successfully!"}),L(""),W()):F({type:"error",text:b.error||"Failed to reset settings"})}catch(a){F({type:"error",text:a.message})}finally{C(!1)}};return(0,d.jsxs)(f.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,d.jsxs)("div",{className:"flex items-start justify-between gap-3 hover:cursor-pointer sm:items-center",onClick:c,children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,d.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,d.jsx)(g.default,{src:"/providers/cline.png",alt:a.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:a=>{a.target.style.display="none"}})}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[(0,d.jsx)("h3",{className:"font-medium text-sm",children:a.name}),"configured"===U&&(0,d.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"===U&&(0,d.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"===U&&(0,d.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,d.jsx)("p",{className:"text-xs text-text-muted truncate",children:a.description})]})]}),(0,d.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${b?"rotate-180":""}`,children:"expand_more"})]}),b&&(0,d.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[x&&(0,d.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,d.jsx)("span",{children:"Checking Cline..."})]}),!x&&v&&!v.installed&&(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{className:"flex flex-col gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:"Cline not detected locally"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Manual configuration is still available if 9router is deployed on a remote server."})]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2 pl-9",children:[(0,d.jsxs)(f.$n,{variant:"secondary",size:"sm",onClick:()=>R(!0),className:"!bg-yellow-500/20 !border-yellow-500/40 !text-yellow-700 dark:!text-yellow-300 hover:!bg-yellow-500/30",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:"content_copy"}),"Manual Config"]}),(0,d.jsxs)(f.$n,{variant:"outline",size:"sm",onClick:()=>H(!G),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:G?"expand_less":"help"}),G?"Hide":"How to Install"]})]})]}),G&&(0,d.jsxs)("div",{className:"p-4 bg-surface border border-border rounded-lg",children:[(0,d.jsx)("h4",{className:"font-medium mb-3",children:"Installation Guide"}),(0,d.jsx)("div",{className:"space-y-3 text-sm",children:(0,d.jsxs)("p",{className:"text-text-muted",children:["Install Cline VS Code extension or CLI from ",(0,d.jsx)("a",{className:"text-primary underline",href:"https://docs.cline.bot/",target:"_blank",rel:"noreferrer",children:"docs.cline.bot"}),"."]})})]})]}),!x&&v?.installed&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Select Endpoint"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsx)(l,{value:S||S||`${h}/v1`,onChange:T,requiresExternalUrl:a.requiresExternalUrl,tunnelEnabled:o,tunnelPublicUrl:q,tailscaleEnabled:r,tailscaleUrl:s})]}),v?.settings?.openAiBaseUrl&&(0,d.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,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Current"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.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:v.settings.openAiBaseUrl})]}),(0,d.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,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"API Key"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsx)(n,{value:I,onChange:J,apiKeys:i,cloudEnabled:k})]}),(0,d.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,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Model"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsxs)("div",{className:"relative w-full min-w-0",children:[(0,d.jsx)("input",{type:"text",value:K,onChange:a=>L(a.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"}),K&&(0,d.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",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]}),(0,d.jsx)("button",{onClick:()=>N(!0),disabled:!j?.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 ${j?.length?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select Model"})]})]}),D&&(0,d.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===D.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===D.type?"check_circle":"error"}),(0,d.jsx)("span",{children:D.text})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:flex sm:items-center",children:[(0,d.jsxs)(f.$n,{variant:"primary",size:"sm",onClick:X,disabled:!I&&k&&i.length>0||!K,loading:z,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,d.jsxs)(f.$n,{variant:"outline",size:"sm",onClick:Y,disabled:B,loading:B,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,d.jsxs)(f.$n,{variant:"ghost",size:"sm",onClick:()=>R(!0),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]})]})]}),(0,d.jsx)(f.rq,{isOpen:M,onClose:()=>N(!1),onSelect:a=>{L(a.value),N(!1)},selectedModel:K,activeProviders:j,modelAliases:O,title:"Select Model for Cline"}),(0,d.jsx)(f.uR,{isOpen:Q,onClose:()=>R(!1),title:"Cline - Manual Configuration",configs:(t=I&&I.trim()?I:k?"<API_KEY_FROM_DASHBOARD>":"sk_9router",[{filename:"~/.cline/data/globalState.json",content:JSON.stringify({actModeApiProvider:"openai",planModeApiProvider:"openai",openAiBaseUrl:(u=V()).endsWith("/v1")?u.slice(0,-3):u,openAiModelId:K||"provider/model-id",planModeOpenAiModelId:K||"provider/model-id"},null,2)},{filename:"~/.cline/data/secrets.json",content:JSON.stringify({openAiApiKey:t},null,2)}])})]})}function F({tool:a,isExpanded:b,onToggle:c,baseUrl:h,apiKeys:i,activeProviders:j,cloudEnabled:k,initialStatus:m,tunnelEnabled:o,tunnelPublicUrl:p,tailscaleEnabled:q,tailscaleUrl:r}){let[s,t]=(0,e.useState)(m||null),[u,v]=(0,e.useState)(!1),[w,x]=(0,e.useState)(!1),[y,z]=(0,e.useState)(!1),[A,B]=(0,e.useState)(null),[C,D]=(0,e.useState)(!1),[E,G]=(0,e.useState)(""),[H,I]=(0,e.useState)(""),[J,K]=(0,e.useState)(!1),[L,M]=(0,e.useState)({}),[N,O]=(0,e.useState)(!1),[P,Q]=(0,e.useState)(""),R=s?.installed?s.has9Router?"configured":"not_configured":null,S=()=>{let a=P||`${h}/v1`;return a.endsWith("/v1")?a:`${a}/v1`},T=async()=>{v(!0);try{let a=await fetch("/api/cli-tools/kilo-settings"),b=await a.json();t(b)}catch(a){t({installed:!1,error:a.message})}finally{v(!1)}},U=async()=>{x(!0),B(null);try{let a=E&&E.trim()||k?E:"sk_9router",b=await fetch("/api/cli-tools/kilo-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:S(),apiKey:a,model:H})}),c=await b.json();b.ok?(B({type:"success",text:"Settings applied successfully!"}),T()):B({type:"error",text:c.error||"Failed to apply settings"})}catch(a){B({type:"error",text:a.message})}finally{x(!1)}},V=async()=>{z(!0),B(null);try{let a=await fetch("/api/cli-tools/kilo-settings",{method:"DELETE"}),b=await a.json();a.ok?(B({type:"success",text:"Settings reset successfully!"}),I(""),T()):B({type:"error",text:b.error||"Failed to reset settings"})}catch(a){B({type:"error",text:a.message})}finally{z(!1)}};return(0,d.jsxs)(f.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,d.jsxs)("div",{className:"flex items-start justify-between gap-3 hover:cursor-pointer sm:items-center",onClick:c,children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,d.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,d.jsx)(g.default,{src:"/providers/kilocode.png",alt:a.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:a=>{a.target.style.display="none"}})}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[(0,d.jsx)("h3",{className:"font-medium text-sm",children:a.name}),"configured"===R&&(0,d.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"===R&&(0,d.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,d.jsx)("p",{className:"text-xs text-text-muted truncate",children:a.description})]})]}),(0,d.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${b?"rotate-180":""}`,children:"expand_more"})]}),b&&(0,d.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[u&&(0,d.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,d.jsx)("span",{children:"Checking Kilo Code..."})]}),!u&&s&&!s.installed&&(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{className:"flex flex-col gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:"Kilo Code not detected locally"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Manual configuration is still available if 9router is deployed on a remote server."})]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2 pl-9",children:[(0,d.jsxs)(f.$n,{variant:"secondary",size:"sm",onClick:()=>O(!0),className:"!bg-yellow-500/20 !border-yellow-500/40 !text-yellow-700 dark:!text-yellow-300 hover:!bg-yellow-500/30",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:"content_copy"}),"Manual Config"]}),(0,d.jsxs)(f.$n,{variant:"outline",size:"sm",onClick:()=>D(!C),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:C?"expand_less":"help"}),C?"Hide":"How to Install"]})]})]}),C&&(0,d.jsxs)("div",{className:"p-4 bg-surface border border-border rounded-lg",children:[(0,d.jsx)("h4",{className:"font-medium mb-3",children:"Installation Guide"}),(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:["Install Kilo Code from ",(0,d.jsx)("a",{className:"text-primary underline",href:"https://kilocode.ai",target:"_blank",rel:"noreferrer",children:"kilocode.ai"})," or VS Code extension marketplace."]})]})]}),!u&&s?.installed&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Select Endpoint"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsx)(l,{value:P||P||`${h}/v1`,onChange:Q,requiresExternalUrl:a.requiresExternalUrl,tunnelEnabled:o,tunnelPublicUrl:p,tailscaleEnabled:q,tailscaleUrl:r})]}),(0,d.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,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"API Key"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsx)(n,{value:E,onChange:G,apiKeys:i,cloudEnabled:k})]}),(0,d.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,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Model"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsxs)("div",{className:"relative w-full min-w-0",children:[(0,d.jsx)("input",{type:"text",value:H,onChange:a=>I(a.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"}),H&&(0,d.jsx)("button",{onClick:()=>I(""),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,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]}),(0,d.jsx)("button",{onClick:()=>K(!0),disabled:!j?.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 ${j?.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,d.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,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===A.type?"check_circle":"error"}),(0,d.jsx)("span",{children:A.text})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:flex sm:items-center",children:[(0,d.jsxs)(f.$n,{variant:"primary",size:"sm",onClick:U,disabled:!E&&k&&i.length>0||!H,loading:w,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,d.jsxs)(f.$n,{variant:"outline",size:"sm",onClick:V,disabled:y,loading:y,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,d.jsxs)(f.$n,{variant:"ghost",size:"sm",onClick:()=>O(!0),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]})]})]}),(0,d.jsx)(f.rq,{isOpen:J,onClose:()=>K(!1),onSelect:a=>{I(a.value),K(!1)},selectedModel:H,activeProviders:j,modelAliases:L,title:"Select Model for Kilo Code"}),(0,d.jsx)(f.uR,{isOpen:N,onClose:()=>O(!1),title:"Kilo Code - Manual Configuration",configs:[{filename:"~/.local/share/kilo/auth.json",content:JSON.stringify({"openai-compatible":{type:"api-key",apiKey:E&&E.trim()?E:k?"<API_KEY_FROM_DASHBOARD>":"sk_9router",baseUrl:S(),model:H||"provider/model-id"}},null,2)}]})]})}let G="/api/cli-tools/deepseek-tui-settings";function H({tool:a,isExpanded:b,onToggle:c,baseUrl:h,hasActiveProviders:i,apiKeys:j,activeProviders:k,cloudEnabled:m,initialStatus:o,tunnelEnabled:q,tunnelPublicUrl:r,tailscaleEnabled:s,tailscaleUrl:t}){let[u,v]=(0,e.useState)(o||null),[w,x]=(0,e.useState)(!1),[y,z]=(0,e.useState)(!1),[A,B]=(0,e.useState)(!1),[C,D]=(0,e.useState)(null),[E,F]=(0,e.useState)(""),[I,J]=(0,e.useState)(""),[K,L]=(0,e.useState)(!1),[M,N]=(0,e.useState)({}),[O,P]=(0,e.useState)("");(0,e.useRef)(!1);let Q=(()=>{if(!u?.installed)return null;let a=u.settings;if(!a)return"not_configured";let b=a["providers.openai"];return b?.base_url?p(b.base_url,{tunnelPublicUrl:r,tailscaleUrl:t})?"configured":"other":"not_configured"})(),R=async()=>{x(!0);try{let a=await fetch(G),b=await a.json();v(b)}catch(a){v({installed:!1,error:a.message})}finally{x(!1)}},S=async()=>{z(!0),D(null);try{let a,b=E?.trim()||(j?.length>0?j[0].key:null)||(m?null:"sk_9router"),c=await fetch(G,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:(a=O||"http://127.0.0.1:20128").endsWith("/v1")?a:`${a}/v1`,apiKey:b,model:I})}),d=await c.json();c.ok?(D({type:"success",text:"Settings applied successfully!"}),R()):D({type:"error",text:d.error||"Failed to apply settings"})}catch(a){D({type:"error",text:a.message})}finally{z(!1)}},T=async()=>{B(!0),D(null);try{let a=await fetch(G,{method:"DELETE"}),b=await a.json();a.ok?(D({type:"success",text:"Settings reset to defaults!"}),R()):D({type:"error",text:b.error||"Failed to reset settings"})}catch(a){D({type:"error",text:a.message})}finally{B(!1)}};return(0,d.jsxs)(f.Zp,{padding:"xs",className:"overflow-hidden overflow-x-hidden",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between hover:cursor-pointer",onClick:c,children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)("div",{className:"size-8 rounded-lg flex items-center justify-center shrink-0",children:a.image?(0,d.jsx)(g.default,{src:a.image,alt:a.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:a=>{a.target.style.display="none"}}):a.icon?(0,d.jsx)("span",{className:"material-symbols-outlined text-xl",style:{color:a.color},children:a.icon}):(0,d.jsx)(g.default,{src:`/providers/${a.id}.png`,alt:a.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:a=>{a.target.style.display="none"}})}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("h3",{className:"font-medium text-sm",children:a.name}),u?.installed?"configured"===Q?(0,d.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,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:"check_circle"}),"Configured"]}):"other"===Q?(0,d.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,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:"settings"}),"Other Config"]}):(0,d.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,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:"info"}),"Not Configured"]}):(0,d.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,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:"close"}),"Not Installed"]})]}),(0,d.jsx)("p",{className:"text-xs text-text-muted truncate",children:a.description})]})]}),(0,d.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${b?"rotate-180":""}`,children:"expand_more"})]}),b&&(0,d.jsxs)("div",{className:"mt-6 pt-6 border-t border-border",children:[a.notes&&a.notes.length>0&&(0,d.jsx)("div",{className:"flex flex-col gap-2 mb-4",children:a.notes.map((a,b)=>{let c="warning"===a.type,e="error"===a.type,f="bg-blue-500/10 border-blue-500/30",g="text-blue-600 dark:text-blue-400",h="text-blue-500",i="info";return c?(f="bg-yellow-500/10 border-yellow-500/30",g="text-yellow-600 dark:text-yellow-400",h="text-yellow-500",i="warning"):e&&(f="bg-red-500/10 border-red-500/30",g="text-red-600 dark:text-red-400",h="text-red-500",i="error"),(0,d.jsxs)("div",{className:`flex items-start gap-3 p-3 rounded-lg border ${f}`,children:[(0,d.jsx)("span",{className:`material-symbols-outlined text-lg ${h}`,children:i}),(0,d.jsx)("p",{className:`text-sm ${g}`,children:a.text})]},b)})}),!u?.installed&&(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"DeepSeek TUI is not detected on your system."}),(0,d.jsxs)("div",{className:"p-3 bg-bg-secondary rounded-lg border border-border",children:[(0,d.jsx)("p",{className:"text-xs text-text-muted mb-2",children:"Install via npm:"}),(0,d.jsx)("code",{className:"text-sm font-mono",children:"npm install -g deepseek-tui"})]}),(0,d.jsx)(f.$n,{onClick:R,disabled:w,variant:"secondary",size:"sm",children:w?"Checking...":"Check Again"})]}),u?.installed&&(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 text-xs text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:"folder"}),(0,d.jsx)("code",{className:"px-2 py-0.5 bg-bg-secondary rounded text-xs font-mono",children:u.configPath})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"text-xs font-medium text-text-muted mb-1 block",children:"Base URL"}),(0,d.jsx)(l,{value:O,onChange:P,baseUrl:h,tunnelEnabled:q,tunnelPublicUrl:r,tailscaleEnabled:s,tailscaleUrl:t})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"text-xs font-medium text-text-muted mb-1 block",children:"API Key"}),(0,d.jsx)(n,{value:E,onChange:F,apiKeys:j,cloudEnabled:m,className:"w-full"})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"text-xs font-medium text-text-muted mb-1 block",children:"Model"}),(0,d.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-center gap-2",children:[(0,d.jsx)("input",{type:"text",value:I,onChange:a=>J(a.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,d.jsx)("button",{onClick:()=>L(!0),disabled:!i,className:`shrink-0 px-3 py-2 rounded-lg border text-sm transition-colors ${i?"bg-bg-secondary border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select Model"})]})]}),C&&(0,d.jsx)("div",{className:`p-3 rounded-lg border text-sm ${"success"===C.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:C.text}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(f.$n,{onClick:S,disabled:y||!I,variant:"primary",size:"sm",children:y?"Applying...":"Apply 9Router Config"}),(0,d.jsx)(f.$n,{onClick:T,disabled:A,variant:"secondary",size:"sm",children:A?"Resetting...":"Reset to Defaults"})]})]})]}),(0,d.jsx)(f.rq,{isOpen:K,onClose:()=>L(!1),onSelect:a=>{J(a.value),L(!1)},selectedModel:I,activeProviders:k,title:"Select Model"})]})}let I="http://localhost:20128";function J({apiKeys:a,cloudEnabled:b,onStatusChange:c}){let[g,h]=(0,e.useState)(null),[i,j]=(0,e.useState)(!1),[k,l]=(0,e.useState)(!1),[m,n]=(0,e.useState)(""),[o,p]=(0,e.useState)(()=>a?.[0]?.key||""),[q,r]=(0,e.useState)(null),[s,t]=(0,e.useState)(null),[u,v]=(0,e.useState)(null),[w,x]=(0,e.useState)(I),[y,z]=(0,e.useState)(null),A=g?.isWin===!0,B=A||g?.hasCachedPassword||g?.needsSudoPassword===!1,C=g?.isAdmin!==!1;!C&&(A||g?.hasCachedPassword||g?.needsSudoPassword);let D=(0,e.useCallback)(async()=>{try{let a=await fetch("/api/cli-tools/antigravity-mitm");if(a.ok){let b=await a.json();h(b),b.mitmRouterBaseUrl&&x(b.mitmRouterBaseUrl),c?.(b)}}catch{h({running:!1,certExists:!1,dnsStatus:{}})}},[c]),E=a=>{v(null),g&&(B?F(a,""):(r(a),l(!0),t(null)))},F=async(c,d,e=!1)=>{j(!0),v(null);try{let f;if("trust-cert"===c)f=await fetch("/api/cli-tools/antigravity-mitm",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"trust-cert",sudoPassword:d})});else if("start"===c){let c=o?.trim()||(a?.length>0?a[0].key:null)||(b?null:"sk_9router");f=await fetch("/api/cli-tools/antigravity-mitm",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:c,sudoPassword:d,mitmRouterBaseUrl:w.trim()||I,forceKillPort443:e})})}else f=await fetch("/api/cli-tools/antigravity-mitm",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({sudoPassword:d})});if(!f.ok){let a=await f.json().catch(()=>({}));if("PORT_443_BUSY"===a.code&&a.portOwner){l(!1),z({owner:a.portOwner,password:d});return}v(a.error||`Failed to ${c} MITM server`);return}l(!1),n(""),z(null),await D()}catch(a){v(a.message||"Network error")}finally{j(!1),r(null)}},G=()=>{m.trim()?F(q,m):t("Sudo password is required")},H=g?.running;return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(f.Zp,{padding:"sm",className:"border-primary/20 bg-primary/5",children:(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between",children:[(0,d.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary text-[20px]",children:"security"}),(0,d.jsx)("span",{className:"font-semibold text-sm text-text-main",children:"MITM Server"}),H?(0,d.jsx)(f.Ex,{variant:"success",size:"sm",children:"Running"}):(0,d.jsx)(f.Ex,{variant:"default",size:"sm",children:"Stopped"})]}),(0,d.jsx)("div",{className:"flex flex-wrap items-center gap-1 text-xs text-text-muted","data-i18n-skip":"true",children:[{label:"Cert",ok:g?.certExists},{label:"Trusted",ok:g?.certTrusted},{label:"Server",ok:H}].map(({label:a,ok:b})=>(0,d.jsxs)("span",{className:`flex items-center gap-0.5 px-1.5 py-0.5 rounded ${b?"text-green-600":"text-text-muted"}`,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:b?"check_circle":"cancel"}),a]},a))})]}),(0,d.jsxs)("div",{className:"px-2 py-2 rounded-lg bg-surface/50 border border-border/50 flex flex-col gap-2",children:[(0,d.jsxs)("p",{className:"text-[11px] text-text-muted leading-relaxed",children:[(0,d.jsx)("span",{className:"font-medium text-text-main",children:"Purpose:"})," Use Antigravity IDE & GitHub Copilot → with ANY provider/model from 9Router"]}),(0,d.jsxs)("p",{className:"text-[11px] text-text-muted leading-relaxed",children:[(0,d.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,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"grid gap-1 sm:grid-cols-[8rem_auto_1fr] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"9Router Base URL"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsx)("input",{type:"text",value:w,onChange:a=>x(a.target.value),placeholder:I,disabled:H,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"})]}),!H&&(0,d.jsxs)("div",{className:"grid gap-1 sm:grid-cols-[8rem_auto_1fr] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"API Key"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsx)("input",{type:"text",list:"mitm-api-keys",value:o,onChange:a=>p(a.target.value),placeholder:b?"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"}),a?.length>0&&(0,d.jsx)("datalist",{id:"mitm-api-keys",children:a.map(a=>(0,d.jsx)("option",{value:a.key,children:a.name||a.key},a.id))})]})]}),(0,d.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row sm:flex-wrap sm:items-center","data-i18n-skip":"true",children:[g?.certExists&&!g?.certTrusted&&(0,d.jsxs)("button",{onClick:()=>E("trust-cert"),disabled:i,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,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"verified_user"}),"Trust Cert"]}),H?(0,d.jsxs)("button",{onClick:()=>E("stop"),disabled:i,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,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"stop_circle"}),"Stop Server"]}):(0,d.jsxs)("button",{onClick:()=>E("start"),disabled:i||!g||A&&!C,title:A&&!C?"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,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"play_circle"}),"Start Server"]}),H&&(0,d.jsx)("p",{className:"text-xs text-text-muted",children:"Enable DNS per tool below to activate interception"})]}),u&&(0,d.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,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mt-0.5 shrink-0",children:"error"}),(0,d.jsx)("span",{children:u})]}),A&&!C&&(0,d.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,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"shield_lock"}),(0,d.jsx)("span",{children:"Administrator required — restart 9Router as Administrator to use MITM"})]})]})}),k&&(0,d.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm",children:(0,d.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,d.jsx)("h3",{className:"font-semibold text-text-main",children:"Sudo Password Required"}),(0,d.jsxs)("div",{className:"flex items-start gap-3 p-3 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-yellow-500 text-[20px]",children:"warning"}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:"Required for SSL certificate and server startup"})]}),(0,d.jsx)(f.pd,{type:"password",placeholder:"Enter sudo password",value:m,onChange:a=>n(a.target.value),onKeyDown:a=>{"Enter"!==a.key||i||G()}}),s&&(0,d.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,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"error"}),(0,d.jsx)("span",{children:s})]}),(0,d.jsxs)("div",{className:"flex items-center justify-end gap-2",children:[(0,d.jsx)(f.$n,{variant:"ghost",size:"sm",onClick:()=>{l(!1),n(""),t(null)},disabled:i,children:"Cancel"}),(0,d.jsx)(f.$n,{variant:"primary",size:"sm",onClick:G,loading:i,children:"Confirm"})]})]})}),y&&(0,d.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm",children:(0,d.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,d.jsx)("h3",{className:"font-semibold text-text-main",children:"Port 443 Already In Use"}),(0,d.jsxs)("div",{className:"flex items-start gap-3 p-3 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-yellow-500 text-[20px]",children:"warning"}),(0,d.jsxs)("div",{className:"flex flex-col gap-1 text-xs text-text-muted",children:[(0,d.jsx)("p",{children:"Port 443 is currently used by another process:"}),(0,d.jsxs)("p",{className:"font-mono text-text-main","data-i18n-skip":"true",children:[y.owner.name," (PID ",y.owner.pid,")"]}),(0,d.jsx)("p",{children:"Kill this process to start MITM Server?"})]})]}),(0,d.jsxs)("div",{className:"flex items-center justify-end gap-2",children:[(0,d.jsx)(f.$n,{variant:"ghost",size:"sm",onClick:()=>{z(null),j(!1)},disabled:i,children:"Cancel"}),(0,d.jsx)(f.$n,{variant:"primary",size:"sm",onClick:()=>{F("start",y?.password||"",!0)},loading:i,children:"Kill & Start"})]})]})})]})}var K=c(5683);function L({tool:a,isExpanded:b,onToggle:c,serverRunning:h,dnsActive:i,hasCachedPassword:j,needsSudoPassword:k,isWin:l,apiKeys:m,activeProviders:n,hasActiveProviders:o,modelAliases:p={},cloudEnabled:q,onDnsChange:r}){let[s,t]=(0,e.useState)(!1),[u,v]=(0,e.useState)(null),[w,x]=(0,e.useState)(!1),[y,z]=(0,e.useState)(""),[A,B]=(0,e.useState)(null),[C,D]=(0,e.useState)(null),[E,F]=(0,e.useState)({}),[G,H]=(0,e.useState)(!1),[I,J]=(0,e.useState)(null),M=K.TOOL_HOSTS[a.id]??[],N=l||j||!1===k,O=(0,e.useCallback)(async b=>{try{await fetch("/api/cli-tools/antigravity-mitm/alias",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({tool:a.id,mappings:b})})}catch{}},[a.id]),P=(a,b)=>{F(c=>({...c,[a]:b}))},Q=()=>{if(!h)return;let a=i?"disable":"enable";N?R(a,""):(B(a),x(!0),D(null))},R=async(b,c)=>{t(!0),v(null);try{let d=await fetch("/api/cli-tools/antigravity-mitm",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({tool:a.id,action:b,sudoPassword:c})}),e=await d.json();if(!d.ok)throw Error(e.error||"Failed to toggle DNS");"enable"===b&&v(`Restart ${a.name} to apply changes`),x(!1),z(""),r?.(e)}catch{}finally{t(!1),B(null)}},S=()=>{y.trim()?R(A,y):D("Sudo password is required")};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(f.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,d.jsxs)("div",{className:"flex items-start justify-between gap-3 hover:cursor-pointer sm:items-center",onClick:c,children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,d.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,d.jsx)(g.default,{src:a.image,alt:a.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:a=>{a.target.style.display="none"}})}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,d.jsx)("h3",{className:"font-medium text-sm",children:a.name}),h?i?(0,d.jsx)(f.Ex,{variant:"success",size:"sm",children:"Active"}):(0,d.jsx)(f.Ex,{variant:"warning",size:"sm",children:"DNS off"}):(0,d.jsx)(f.Ex,{variant:"default",size:"sm",children:"Server off"})]}),(0,d.jsxs)("p",{className:"text-xs text-text-muted sm:truncate",children:["Intercept ",a.name," requests via MITM proxy"]})]})]}),(0,d.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${b?"rotate-180":""}`,children:"expand_more"})]}),b&&(0,d.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[M.length>0&&(0,d.jsxs)("div",{className:"mt-2 rounded-md border border-border bg-surface/50 px-2 py-1.5",children:[(0,d.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,d.jsx)("ul",{className:"list-none space-y-0.5 font-mono text-[10px] text-text-muted break-all",children:M.map(a=>(0,d.jsxs)("li",{children:["127.0.0.1 ",a]},a))})]}),(0,d.jsxs)("div",{className:"flex flex-col gap-0.5 text-[11px] text-text-muted px-1",children:[(0,d.jsxs)("p",{children:["Toggle DNS to redirect ",a.name," traffic through 9Router via MITM."]}),!i&&(0,d.jsx)("p",{className:"text-amber-600 text-[10px] mt-1",children:"⚠️ Enable DNS to edit model mappings"})]}),a.defaultModels?.length>0&&(0,d.jsx)("div",{className:"flex flex-col gap-2",children:a.defaultModels.map(a=>(0,d.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,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right",children:a.name}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsxs)("div",{className:"relative w-full min-w-0",children:[(0,d.jsx)("input",{type:"text",value:E[a.alias]||"",onChange:b=>P(a.alias,b.target.value),onBlur:b=>{var c,d;return c=a.alias,d=b.target.value,void O({...E,[c]:d})},placeholder:"provider/model-id",disabled:!i,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 ${!i?"opacity-50 cursor-not-allowed":""}`}),E[a.alias]&&(0,d.jsx)("button",{onClick:()=>{P(a.alias,""),O({...E,[a.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,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]}),(0,d.jsx)("button",{onClick:()=>{J(a.alias),H(!0)},disabled:!o||!i,className:`rounded border px-2 py-2 text-xs transition-colors sm:py-1.5 ${o&&i?"bg-surface border-border hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select"})]},a.alias))}),a.defaultModels?.length===0&&(0,d.jsx)("p",{className:"text-xs text-text-muted px-1",children:"Model mappings will be available soon."}),(0,d.jsxs)("div",{className:"flex flex-col gap-2 sm:items-start",children:[i?(0,d.jsxs)("button",{onClick:Q,disabled:!h||s,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,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"stop_circle"}),"Stop DNS"]}):(0,d.jsxs)("button",{onClick:Q,disabled:!h||s,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,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"play_circle"}),"Start DNS"]}),u&&(0,d.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 rounded text-xs text-amber-500",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"warning"}),(0,d.jsx)("span",{children:u})]})]})]})]}),w&&(0,d.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm",children:(0,d.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,d.jsx)("h3",{className:"font-semibold text-text-main",children:"Sudo Password Required"}),(0,d.jsxs)("div",{className:"flex items-start gap-3 p-3 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-yellow-500 text-[20px]",children:"warning"}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:"Required to modify /etc/hosts and flush DNS cache"})]}),(0,d.jsx)(f.pd,{type:"password",placeholder:"Enter sudo password",value:y,onChange:a=>z(a.target.value),onKeyDown:a=>{"Enter"!==a.key||s||S()}}),C&&(0,d.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,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"error"}),(0,d.jsx)("span",{children:C})]}),(0,d.jsxs)("div",{className:"flex items-center justify-end gap-2",children:[(0,d.jsx)(f.$n,{variant:"ghost",size:"sm",onClick:()=>{x(!1),z(""),D(null)},disabled:s,children:"Cancel"}),(0,d.jsx)(f.$n,{variant:"primary",size:"sm",onClick:S,loading:s,children:"Confirm"})]})]})}),(0,d.jsx)(f.rq,{isOpen:G,onClose:()=>H(!1),onSelect:a=>{if(!I||a.isPlaceholder)return;let b={...E,[I]:a.value};F(b),O(b)},selectedModel:I?E[I]:null,activeProviders:n,modelAliases:p,title:`Select model for ${I}`})]})}var M=c(30978),N=c.n(M);function O({tool:a}){return(0,d.jsx)(N(),{href:"/dashboard/mitm",className:"block",children:(0,d.jsx)(f.Zp,{padding:"sm",className:"overflow-hidden hover:border-primary/50 transition-colors cursor-pointer",children:(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,d.jsx)(g.default,{src:a.image,alt:a.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:a=>{a.target.style.display="none"}})}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("h3",{className:"font-medium text-sm",children:a.name}),(0,d.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,d.jsx)("p",{className:"text-xs text-text-muted truncate",children:a.description})]})]}),(0,d.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[20px]",children:"chevron_right"})]})})})}}};