zevairouter 1.0.154 → 1.0.156

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 (1857) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/DOCKER.md +403 -0
  3. package/README.md +50 -22
  4. package/README.zh-CN.md +18 -11
  5. package/cli/LICENSE +1 -22
  6. package/cli/app/.next-cli-build/BUILD_ID +1 -1
  7. package/cli/app/.next-cli-build/app-path-routes-manifest.json +5 -5
  8. package/cli/app/.next-cli-build/build-manifest.json +2 -2
  9. package/cli/app/.next-cli-build/required-server-files.json +4 -4
  10. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page.js +2 -2
  11. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page.js.nft.json +1 -1
  12. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page_client-reference-manifest.js +1 -1
  13. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
  14. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  15. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  16. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +2 -2
  17. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  18. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  19. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
  20. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  21. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  22. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  23. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  24. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  25. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
  26. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  27. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  28. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page.js +2 -2
  29. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page.js.nft.json +1 -1
  30. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page_client-reference-manifest.js +1 -1
  31. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
  32. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  33. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  34. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +2 -2
  35. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  36. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  37. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +1 -1
  38. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  39. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  40. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +2 -2
  41. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  42. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  43. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
  44. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  45. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  46. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
  47. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  48. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  49. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +1 -1
  50. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  51. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  52. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page.js +1 -1
  53. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page.js.nft.json +1 -1
  54. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  55. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  56. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  57. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  58. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  59. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  60. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  61. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  62. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  63. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  64. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  65. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  66. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  67. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +1 -1
  68. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  69. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  70. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js +1 -1
  71. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  72. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  73. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +1 -1
  74. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  75. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  76. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page.js +2 -2
  77. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page.js.nft.json +1 -1
  78. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page_client-reference-manifest.js +1 -1
  79. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +1 -1
  80. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  81. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  82. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +1 -1
  83. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  84. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  85. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  86. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  87. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  88. package/cli/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  89. package/cli/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  90. package/cli/app/.next-cli-build/server/app/_global-error.html +1 -1
  91. package/cli/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  92. package/cli/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  93. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  94. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  95. package/cli/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  96. package/cli/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  97. package/cli/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  98. package/cli/app/.next-cli-build/server/app/_not-found/page.js +1 -1
  99. package/cli/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  100. package/cli/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  101. package/cli/app/.next-cli-build/server/app/_not-found.html +1 -1
  102. package/cli/app/.next-cli-build/server/app/_not-found.rsc +3 -3
  103. package/cli/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
  104. package/cli/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  105. package/cli/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +3 -3
  106. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  107. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  108. package/cli/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  109. package/cli/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
  110. package/cli/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  111. package/cli/app/.next-cli-build/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  112. package/cli/app/.next-cli-build/server/app/api/auth/logout/route.js +1 -1
  113. package/cli/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  114. package/cli/app/.next-cli-build/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  115. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
  116. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  117. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route_client-reference-manifest.js +1 -1
  118. package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
  119. package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  120. package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route_client-reference-manifest.js +1 -1
  121. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
  122. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  123. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route_client-reference-manifest.js +1 -1
  124. package/cli/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
  125. package/cli/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  126. package/cli/app/.next-cli-build/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  127. package/cli/app/.next-cli-build/server/app/api/cache/stats/route.js +1 -1
  128. package/cli/app/.next-cli-build/server/app/api/cache/stats/route.js.nft.json +1 -1
  129. package/cli/app/.next-cli-build/server/app/api/cache/stats/route_client-reference-manifest.js +1 -1
  130. package/cli/app/.next-cli-build/server/app/api/changelog/route.js +1 -1
  131. package/cli/app/.next-cli-build/server/app/api/changelog/route.js.nft.json +1 -1
  132. package/cli/app/.next-cli-build/server/app/api/changelog/route_client-reference-manifest.js +1 -1
  133. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +1 -1
  134. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  135. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route_client-reference-manifest.js +1 -1
  136. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  137. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  138. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
  139. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  140. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  141. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
  142. package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +1 -1
  143. package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  144. package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
  145. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +1 -1
  146. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  147. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
  148. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js +1 -1
  149. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js.nft.json +1 -1
  150. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route_client-reference-manifest.js +1 -1
  151. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  152. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  153. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
  154. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +1 -1
  155. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  156. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route_client-reference-manifest.js +1 -1
  157. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
  158. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  159. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route_client-reference-manifest.js +1 -1
  160. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
  161. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  162. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route_client-reference-manifest.js +1 -1
  163. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  164. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  165. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route_client-reference-manifest.js +1 -1
  166. package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +1 -1
  167. package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  168. package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route_client-reference-manifest.js +1 -1
  169. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +1 -1
  170. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  171. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
  172. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +1 -1
  173. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  174. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route_client-reference-manifest.js +1 -1
  175. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +1 -1
  176. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  177. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route_client-reference-manifest.js +1 -1
  178. package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +1 -1
  179. package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  180. package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -1
  181. package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +1 -1
  182. package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  183. package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
  184. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +1 -1
  185. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  186. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route_client-reference-manifest.js +1 -1
  187. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  188. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  189. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
  190. package/cli/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  191. package/cli/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  192. package/cli/app/.next-cli-build/server/app/api/combos/route_client-reference-manifest.js +1 -1
  193. package/cli/app/.next-cli-build/server/app/api/context/[id]/route.js +1 -1
  194. package/cli/app/.next-cli-build/server/app/api/context/[id]/route.js.nft.json +1 -1
  195. package/cli/app/.next-cli-build/server/app/api/context/[id]/route_client-reference-manifest.js +1 -1
  196. package/cli/app/.next-cli-build/server/app/api/context/bulk/route.js +1 -1
  197. package/cli/app/.next-cli-build/server/app/api/context/bulk/route.js.nft.json +1 -1
  198. package/cli/app/.next-cli-build/server/app/api/context/bulk/route_client-reference-manifest.js +1 -1
  199. package/cli/app/.next-cli-build/server/app/api/context/route.js +1 -1
  200. package/cli/app/.next-cli-build/server/app/api/context/route.js.nft.json +1 -1
  201. package/cli/app/.next-cli-build/server/app/api/context/route_client-reference-manifest.js +1 -1
  202. package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route.js +1 -1
  203. package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route.js.nft.json +1 -1
  204. package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route_client-reference-manifest.js +1 -1
  205. package/cli/app/.next-cli-build/server/app/api/dashboard/cli-tools/keys/route.js +1 -1
  206. package/cli/app/.next-cli-build/server/app/api/dashboard/cli-tools/keys/route.js.nft.json +1 -1
  207. package/cli/app/.next-cli-build/server/app/api/dashboard/cli-tools/keys/route_client-reference-manifest.js +1 -1
  208. package/cli/app/.next-cli-build/server/app/api/dashboard/media/[operation]/route.js +1 -1
  209. package/cli/app/.next-cli-build/server/app/api/dashboard/media/[operation]/route.js.nft.json +1 -1
  210. package/cli/app/.next-cli-build/server/app/api/dashboard/media/[operation]/route_client-reference-manifest.js +1 -1
  211. package/cli/app/.next-cli-build/server/app/api/headroom/extras/route.js +1 -1
  212. package/cli/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
  213. package/cli/app/.next-cli-build/server/app/api/headroom/extras/route_client-reference-manifest.js +1 -1
  214. package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js +1 -1
  215. package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
  216. package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route_client-reference-manifest.js +1 -1
  217. package/cli/app/.next-cli-build/server/app/api/headroom/restart/route.js +1 -1
  218. package/cli/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
  219. package/cli/app/.next-cli-build/server/app/api/headroom/restart/route_client-reference-manifest.js +1 -1
  220. package/cli/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -1
  221. package/cli/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  222. package/cli/app/.next-cli-build/server/app/api/headroom/start/route_client-reference-manifest.js +1 -1
  223. package/cli/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -1
  224. package/cli/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  225. package/cli/app/.next-cli-build/server/app/api/headroom/status/route_client-reference-manifest.js +1 -1
  226. package/cli/app/.next-cli-build/server/app/api/headroom/stop/route.js +1 -1
  227. package/cli/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  228. package/cli/app/.next-cli-build/server/app/api/headroom/stop/route_client-reference-manifest.js +1 -1
  229. package/cli/app/.next-cli-build/server/app/api/health/ready/route.js +1 -1
  230. package/cli/app/.next-cli-build/server/app/api/health/ready/route.js.nft.json +1 -1
  231. package/cli/app/.next-cli-build/server/app/api/health/ready/route_client-reference-manifest.js +1 -1
  232. package/cli/app/.next-cli-build/server/app/api/health/route.js +1 -1
  233. package/cli/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  234. package/cli/app/.next-cli-build/server/app/api/health/route_client-reference-manifest.js +1 -1
  235. package/cli/app/.next-cli-build/server/app/api/init/route.js +1 -1
  236. package/cli/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  237. package/cli/app/.next-cli-build/server/app/api/init/route_client-reference-manifest.js +1 -1
  238. package/cli/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js +1 -1
  239. package/cli/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js.nft.json +1 -1
  240. package/cli/app/.next-cli-build/server/app/api/keys/[id]/rotate/route_client-reference-manifest.js +1 -1
  241. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
  242. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  243. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
  244. package/cli/app/.next-cli-build/server/app/api/keys/route.js +1 -1
  245. package/cli/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  246. package/cli/app/.next-cli-build/server/app/api/keys/route_client-reference-manifest.js +1 -1
  247. package/cli/app/.next-cli-build/server/app/api/locale/route.js +1 -1
  248. package/cli/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  249. package/cli/app/.next-cli-build/server/app/api/locale/route_client-reference-manifest.js +1 -1
  250. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js +1 -1
  251. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  252. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route_client-reference-manifest.js +1 -1
  253. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js +1 -1
  254. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  255. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route_client-reference-manifest.js +1 -1
  256. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  257. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  258. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route_client-reference-manifest.js +1 -1
  259. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  260. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  261. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route_client-reference-manifest.js +1 -1
  262. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  263. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  264. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route_client-reference-manifest.js +1 -1
  265. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  266. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  267. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route_client-reference-manifest.js +1 -1
  268. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
  269. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  270. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route_client-reference-manifest.js +1 -1
  271. package/cli/app/.next-cli-build/server/app/api/metrics/route.js +1 -1
  272. package/cli/app/.next-cli-build/server/app/api/metrics/route.js.nft.json +1 -1
  273. package/cli/app/.next-cli-build/server/app/api/metrics/route_client-reference-manifest.js +1 -1
  274. package/cli/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  275. package/cli/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  276. package/cli/app/.next-cli-build/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
  277. package/cli/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
  278. package/cli/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  279. package/cli/app/.next-cli-build/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
  280. package/cli/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  281. package/cli/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  282. package/cli/app/.next-cli-build/server/app/api/models/custom/route_client-reference-manifest.js +1 -1
  283. package/cli/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
  284. package/cli/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  285. package/cli/app/.next-cli-build/server/app/api/models/disabled/route_client-reference-manifest.js +1 -1
  286. package/cli/app/.next-cli-build/server/app/api/models/route.js +1 -1
  287. package/cli/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  288. package/cli/app/.next-cli-build/server/app/api/models/route_client-reference-manifest.js +1 -1
  289. package/cli/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  290. package/cli/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  291. package/cli/app/.next-cli-build/server/app/api/models/test/route_client-reference-manifest.js +1 -1
  292. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  293. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  294. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
  295. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js +1 -1
  296. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  297. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  298. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  299. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  300. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  301. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js +1 -1
  302. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js.nft.json +1 -1
  303. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  304. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js +1 -1
  305. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js.nft.json +1 -1
  306. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route_client-reference-manifest.js +1 -1
  307. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js +1 -1
  308. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js.nft.json +1 -1
  309. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route_client-reference-manifest.js +1 -1
  310. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route.js +1 -1
  311. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  312. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  313. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  314. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  315. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  316. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js +1 -1
  317. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js.nft.json +1 -1
  318. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  319. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js +1 -1
  320. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js.nft.json +1 -1
  321. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route_client-reference-manifest.js +1 -1
  322. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route.js +1 -1
  323. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route.js.nft.json +1 -1
  324. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route_client-reference-manifest.js +1 -1
  325. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js +1 -1
  326. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  327. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  328. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  329. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  330. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  331. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js +1 -1
  332. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js.nft.json +1 -1
  333. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  334. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js +1 -1
  335. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js.nft.json +1 -1
  336. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route_client-reference-manifest.js +1 -1
  337. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js +1 -1
  338. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js.nft.json +1 -1
  339. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route_client-reference-manifest.js +1 -1
  340. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route.js +1 -1
  341. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route.js.nft.json +1 -1
  342. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route_client-reference-manifest.js +1 -1
  343. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route.js +1 -1
  344. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route.js.nft.json +1 -1
  345. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route_client-reference-manifest.js +1 -1
  346. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js +1 -1
  347. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  348. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  349. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  350. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  351. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  352. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js +1 -1
  353. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js.nft.json +1 -1
  354. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  355. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js +1 -1
  356. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js.nft.json +1 -1
  357. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route_client-reference-manifest.js +1 -1
  358. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js +1 -1
  359. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js.nft.json +1 -1
  360. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route_client-reference-manifest.js +1 -1
  361. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route.js +1 -1
  362. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route.js.nft.json +1 -1
  363. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route_client-reference-manifest.js +1 -1
  364. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route.js +1 -1
  365. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route.js.nft.json +1 -1
  366. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route_client-reference-manifest.js +1 -1
  367. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  368. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  369. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route_client-reference-manifest.js +1 -1
  370. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js +1 -1
  371. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  372. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
  373. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  374. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  375. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
  376. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
  377. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  378. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route_client-reference-manifest.js +1 -1
  379. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
  380. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  381. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route_client-reference-manifest.js +1 -1
  382. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  383. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  384. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
  385. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js +1 -1
  386. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  387. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  388. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  389. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  390. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  391. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js +1 -1
  392. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js.nft.json +1 -1
  393. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  394. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js +1 -1
  395. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js.nft.json +1 -1
  396. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route_client-reference-manifest.js +1 -1
  397. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js +1 -1
  398. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js.nft.json +1 -1
  399. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route_client-reference-manifest.js +1 -1
  400. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  401. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  402. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
  403. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  404. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  405. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
  406. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  407. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  408. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
  409. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js +1 -1
  410. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  411. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  412. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  413. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  414. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  415. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js +1 -1
  416. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js.nft.json +1 -1
  417. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  418. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js +1 -1
  419. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js.nft.json +1 -1
  420. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route_client-reference-manifest.js +1 -1
  421. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js +1 -1
  422. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js.nft.json +1 -1
  423. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route_client-reference-manifest.js +1 -1
  424. package/cli/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
  425. package/cli/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  426. package/cli/app/.next-cli-build/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  427. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
  428. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  429. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
  430. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  431. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  432. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
  433. package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
  434. package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  435. package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
  436. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  437. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  438. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
  439. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  440. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  441. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
  442. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  443. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  444. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
  445. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  446. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  447. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route_client-reference-manifest.js +1 -1
  448. package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route.js +1 -1
  449. package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route.js.nft.json +1 -1
  450. package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route_client-reference-manifest.js +1 -1
  451. package/cli/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  452. package/cli/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  453. package/cli/app/.next-cli-build/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
  454. package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js +1 -1
  455. package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  456. package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route_client-reference-manifest.js +1 -1
  457. package/cli/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  458. package/cli/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  459. package/cli/app/.next-cli-build/server/app/api/providers/route_client-reference-manifest.js +1 -1
  460. package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route.js +1 -1
  461. package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  462. package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route_client-reference-manifest.js +1 -1
  463. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  464. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  465. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
  466. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  467. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  468. package/cli/app/.next-cli-build/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
  469. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
  470. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  471. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route_client-reference-manifest.js +1 -1
  472. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  473. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  474. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route_client-reference-manifest.js +1 -1
  475. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +1 -1
  476. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  477. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route_client-reference-manifest.js +1 -1
  478. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +1 -1
  479. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  480. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route_client-reference-manifest.js +1 -1
  481. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
  482. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  483. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route_client-reference-manifest.js +1 -1
  484. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +1 -1
  485. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  486. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route_client-reference-manifest.js +1 -1
  487. package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route.js +1 -1
  488. package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
  489. package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route_client-reference-manifest.js +1 -1
  490. package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route.js +1 -1
  491. package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
  492. package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route_client-reference-manifest.js +1 -1
  493. package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route.js +1 -1
  494. package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
  495. package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route_client-reference-manifest.js +1 -1
  496. package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route.js +1 -1
  497. package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
  498. package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route_client-reference-manifest.js +1 -1
  499. package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route.js +1 -1
  500. package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
  501. package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route_client-reference-manifest.js +1 -1
  502. package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route.js +1 -1
  503. package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
  504. package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route_client-reference-manifest.js +1 -1
  505. package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route.js +1 -1
  506. package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
  507. package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route_client-reference-manifest.js +1 -1
  508. package/cli/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  509. package/cli/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  510. package/cli/app/.next-cli-build/server/app/api/settings/database/route_client-reference-manifest.js +1 -1
  511. package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -1
  512. package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  513. package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route_client-reference-manifest.js +1 -1
  514. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
  515. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  516. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
  517. package/cli/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  518. package/cli/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  519. package/cli/app/.next-cli-build/server/app/api/settings/route_client-reference-manifest.js +1 -1
  520. package/cli/app/.next-cli-build/server/app/api/shutdown/route.js +1 -1
  521. package/cli/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  522. package/cli/app/.next-cli-build/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  523. package/cli/app/.next-cli-build/server/app/api/tags/route.js +1 -1
  524. package/cli/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  525. package/cli/app/.next-cli-build/server/app/api/tags/route_client-reference-manifest.js +1 -1
  526. package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route.js +1 -1
  527. package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route.js.nft.json +1 -1
  528. package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route_client-reference-manifest.js +1 -1
  529. package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route.js +1 -1
  530. package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route.js.nft.json +1 -1
  531. package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route_client-reference-manifest.js +1 -1
  532. package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route.js +1 -1
  533. package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route.js.nft.json +1 -1
  534. package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route_client-reference-manifest.js +1 -1
  535. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js +1 -1
  536. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js.nft.json +1 -1
  537. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route_client-reference-manifest.js +1 -1
  538. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js +1 -1
  539. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js.nft.json +1 -1
  540. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route_client-reference-manifest.js +1 -1
  541. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js +1 -1
  542. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js.nft.json +1 -1
  543. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route_client-reference-manifest.js +1 -1
  544. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js +1 -1
  545. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js.nft.json +1 -1
  546. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route_client-reference-manifest.js +1 -1
  547. package/cli/app/.next-cli-build/server/app/api/terminal/session/route.js +1 -1
  548. package/cli/app/.next-cli-build/server/app/api/terminal/session/route.js.nft.json +1 -1
  549. package/cli/app/.next-cli-build/server/app/api/terminal/session/route_client-reference-manifest.js +1 -1
  550. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  551. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  552. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route_client-reference-manifest.js +1 -1
  553. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
  554. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  555. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route_client-reference-manifest.js +1 -1
  556. package/cli/app/.next-cli-build/server/app/api/translator/load/route.js +1 -1
  557. package/cli/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  558. package/cli/app/.next-cli-build/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
  559. package/cli/app/.next-cli-build/server/app/api/translator/save/route.js +1 -1
  560. package/cli/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  561. package/cli/app/.next-cli-build/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
  562. package/cli/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  563. package/cli/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  564. package/cli/app/.next-cli-build/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
  565. package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  566. package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  567. package/cli/app/.next-cli-build/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
  568. package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
  569. package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  570. package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route_client-reference-manifest.js +1 -1
  571. package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
  572. package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  573. package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route_client-reference-manifest.js +1 -1
  574. package/cli/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
  575. package/cli/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  576. package/cli/app/.next-cli-build/server/app/api/tunnel/status/route_client-reference-manifest.js +1 -1
  577. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -1
  578. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  579. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route_client-reference-manifest.js +1 -1
  580. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  581. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  582. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route_client-reference-manifest.js +1 -1
  583. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  584. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  585. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route_client-reference-manifest.js +1 -1
  586. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +1 -1
  587. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  588. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route_client-reference-manifest.js +1 -1
  589. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  590. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  591. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
  592. package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route.js +1 -1
  593. package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route.js.nft.json +1 -1
  594. package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route_client-reference-manifest.js +1 -1
  595. package/cli/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
  596. package/cli/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  597. package/cli/app/.next-cli-build/server/app/api/usage/chart/route_client-reference-manifest.js +1 -1
  598. package/cli/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
  599. package/cli/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  600. package/cli/app/.next-cli-build/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
  601. package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  602. package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  603. package/cli/app/.next-cli-build/server/app/api/usage/providers/route_client-reference-manifest.js +1 -1
  604. package/cli/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
  605. package/cli/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  606. package/cli/app/.next-cli-build/server/app/api/usage/request-details/route_client-reference-manifest.js +1 -1
  607. package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
  608. package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  609. package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
  610. package/cli/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
  611. package/cli/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  612. package/cli/app/.next-cli-build/server/app/api/usage/stats/route_client-reference-manifest.js +1 -1
  613. package/cli/app/.next-cli-build/server/app/api/usage/stream/route.js +1 -1
  614. package/cli/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  615. package/cli/app/.next-cli-build/server/app/api/usage/stream/route_client-reference-manifest.js +1 -1
  616. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  617. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  618. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
  619. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  620. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  621. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
  622. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  623. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  624. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
  625. package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
  626. package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  627. package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route_client-reference-manifest.js +1 -1
  628. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  629. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  630. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
  631. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  632. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  633. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
  634. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
  635. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  636. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
  637. package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -1
  638. package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  639. package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
  640. package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  641. package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  642. package/cli/app/.next-cli-build/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
  643. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
  644. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  645. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route_client-reference-manifest.js +1 -1
  646. package/cli/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  647. package/cli/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  648. package/cli/app/.next-cli-build/server/app/api/v1/models/info/route_client-reference-manifest.js +1 -1
  649. package/cli/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  650. package/cli/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  651. package/cli/app/.next-cli-build/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
  652. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  653. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  654. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route_client-reference-manifest.js +1 -1
  655. package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  656. package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  657. package/cli/app/.next-cli-build/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
  658. package/cli/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  659. package/cli/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  660. package/cli/app/.next-cli-build/server/app/api/v1/route_client-reference-manifest.js +1 -1
  661. package/cli/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  662. package/cli/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  663. package/cli/app/.next-cli-build/server/app/api/v1/search/route_client-reference-manifest.js +1 -1
  664. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  665. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  666. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route_client-reference-manifest.js +1 -1
  667. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  668. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  669. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
  670. package/cli/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  671. package/cli/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  672. package/cli/app/.next-cli-build/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
  673. package/cli/app/.next-cli-build/server/app/api/version/route.js +1 -1
  674. package/cli/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  675. package/cli/app/.next-cli-build/server/app/api/version/route_client-reference-manifest.js +1 -1
  676. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  677. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  678. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route_client-reference-manifest.js +1 -1
  679. package/cli/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  680. package/cli/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  681. package/cli/app/.next-cli-build/server/app/api/version/update/route_client-reference-manifest.js +1 -1
  682. package/cli/app/.next-cli-build/server/app/callback/page.js +1 -1
  683. package/cli/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  684. package/cli/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  685. package/cli/app/.next-cli-build/server/app/callback.html +1 -1
  686. package/cli/app/.next-cli-build/server/app/callback.rsc +3 -3
  687. package/cli/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  688. package/cli/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  689. package/cli/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
  690. package/cli/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  691. package/cli/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  692. package/cli/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  693. package/cli/app/.next-cli-build/server/app/dashboard/automation.html +1 -1
  694. package/cli/app/.next-cli-build/server/app/dashboard/automation.rsc +5 -5
  695. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation/__PAGE__.segment.rsc +2 -2
  696. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation.segment.rsc +1 -1
  697. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  698. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  699. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_full.segment.rsc +5 -5
  700. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_head.segment.rsc +1 -1
  701. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_index.segment.rsc +3 -3
  702. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +1 -1
  703. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  704. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +5 -5
  705. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  706. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  707. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  708. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  709. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
  710. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  711. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
  712. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  713. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  714. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
  715. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  716. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  717. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  718. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  719. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
  720. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  721. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
  722. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  723. package/cli/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  724. package/cli/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
  725. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  726. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  727. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  728. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  729. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
  730. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  731. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
  732. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  733. package/cli/app/.next-cli-build/server/app/dashboard/context.html +1 -1
  734. package/cli/app/.next-cli-build/server/app/dashboard/context.rsc +5 -5
  735. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context/__PAGE__.segment.rsc +2 -2
  736. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context.segment.rsc +1 -1
  737. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  738. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  739. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_full.segment.rsc +5 -5
  740. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_head.segment.rsc +1 -1
  741. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_index.segment.rsc +3 -3
  742. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_tree.segment.rsc +1 -1
  743. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  744. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.rsc +5 -5
  745. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  746. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  747. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  748. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  749. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
  750. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  751. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
  752. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  753. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  754. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +5 -5
  755. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  756. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  757. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  758. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  759. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  760. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
  761. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  762. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
  763. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  764. package/cli/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  765. package/cli/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
  766. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  767. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  768. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  769. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  770. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
  771. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  772. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
  773. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  774. package/cli/app/.next-cli-build/server/app/dashboard/playground.html +1 -1
  775. package/cli/app/.next-cli-build/server/app/dashboard/playground.rsc +5 -5
  776. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground/__PAGE__.segment.rsc +2 -2
  777. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground.segment.rsc +1 -1
  778. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  779. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  780. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_full.segment.rsc +5 -5
  781. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_head.segment.rsc +1 -1
  782. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_index.segment.rsc +3 -3
  783. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_tree.segment.rsc +1 -1
  784. package/cli/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  785. package/cli/app/.next-cli-build/server/app/dashboard/profile.rsc +5 -5
  786. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  787. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  788. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  789. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  790. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
  791. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  792. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
  793. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  794. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  795. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.rsc +5 -5
  796. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  797. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  798. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  799. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  800. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  801. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
  802. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  803. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
  804. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  805. package/cli/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  806. package/cli/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
  807. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  808. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  809. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  810. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  811. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
  812. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  813. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
  814. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  815. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  816. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +5 -5
  817. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  818. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  819. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  820. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  821. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
  822. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  823. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
  824. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  825. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
  826. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +5 -5
  827. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
  828. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
  829. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  830. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  831. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +5 -5
  832. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
  833. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +3 -3
  834. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +1 -1
  835. package/cli/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  836. package/cli/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
  837. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  838. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  839. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  840. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  841. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
  842. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  843. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
  844. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  845. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +2 -2
  846. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  847. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  848. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  849. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
  850. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  851. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  852. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
  853. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  854. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  855. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  856. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  857. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  858. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  859. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.rsc +5 -5
  860. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
  861. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  862. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  863. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  864. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +5 -5
  865. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  866. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +3 -3
  867. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
  868. package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  869. package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
  870. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  871. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  872. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  873. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  874. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
  875. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  876. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
  877. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  878. package/cli/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  879. package/cli/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
  880. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  881. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  882. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  883. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  884. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
  885. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  886. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
  887. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  888. package/cli/app/.next-cli-build/server/app/dashboard.html +1 -1
  889. package/cli/app/.next-cli-build/server/app/dashboard.rsc +5 -5
  890. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  891. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  892. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  893. package/cli/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
  894. package/cli/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  895. package/cli/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +3 -3
  896. package/cli/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  897. package/cli/app/.next-cli-build/server/app/index.html +1 -1
  898. package/cli/app/.next-cli-build/server/app/index.rsc +3 -3
  899. package/cli/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  900. package/cli/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  901. package/cli/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  902. package/cli/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
  903. package/cli/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  904. package/cli/app/.next-cli-build/server/app/landing/page.js +1 -1
  905. package/cli/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  906. package/cli/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  907. package/cli/app/.next-cli-build/server/app/landing.html +1 -1
  908. package/cli/app/.next-cli-build/server/app/landing.rsc +4 -4
  909. package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
  910. package/cli/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  911. package/cli/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +3 -3
  912. package/cli/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  913. package/cli/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +2 -2
  914. package/cli/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  915. package/cli/app/.next-cli-build/server/app/login/page.js +2 -2
  916. package/cli/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  917. package/cli/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  918. package/cli/app/.next-cli-build/server/app/login.html +1 -1
  919. package/cli/app/.next-cli-build/server/app/login.rsc +4 -4
  920. package/cli/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  921. package/cli/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  922. package/cli/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +3 -3
  923. package/cli/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  924. package/cli/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  925. package/cli/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  926. package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  927. package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  928. package/cli/app/.next-cli-build/server/app/page.js +1 -1
  929. package/cli/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  930. package/cli/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  931. package/cli/app/.next-cli-build/server/app-paths-manifest.json +5 -5
  932. package/cli/app/.next-cli-build/server/chunks/2030.js +1 -1
  933. package/cli/app/.next-cli-build/server/chunks/3155.js +1 -1
  934. package/cli/app/.next-cli-build/server/chunks/319.js +3 -3
  935. package/cli/app/.next-cli-build/server/chunks/4650.js +1 -1
  936. package/cli/app/.next-cli-build/server/chunks/4746.js +1 -1
  937. package/cli/app/.next-cli-build/server/chunks/5307.js +1 -1
  938. package/cli/app/.next-cli-build/server/chunks/5469.js +1 -1
  939. package/cli/app/.next-cli-build/server/chunks/5949.js +12 -11
  940. package/cli/app/.next-cli-build/server/chunks/8242.js +1 -1
  941. package/cli/app/.next-cli-build/server/chunks/8306.js +1 -1
  942. package/cli/app/.next-cli-build/server/chunks/9372.js +1 -1
  943. package/cli/app/.next-cli-build/server/chunks/9621.js +1 -1
  944. package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  945. package/cli/app/.next-cli-build/server/next-font-manifest.js +1 -1
  946. package/cli/app/.next-cli-build/server/next-font-manifest.json +1 -1
  947. package/cli/app/.next-cli-build/server/pages/404.html +1 -1
  948. package/cli/app/.next-cli-build/server/pages/500.html +1 -1
  949. package/cli/app/.next-cli-build/static/chunks/{620-a13f0f7b318585ab.js → 620-e2ce4ad6877127f3.js} +1 -1
  950. package/cli/app/.next-cli-build/static/chunks/app/login/page-f7df7d9a053d65b7.js +1 -0
  951. package/cli/app/CHANGELOG.md +35 -0
  952. package/cli/app/cli/hooks/postinstall.js +82 -50
  953. package/cli/app/cli/hooks/safeGlobalInstall.js +178 -10
  954. package/cli/app/cli/hooks/startupRuntime.js +31 -0
  955. package/cli/app/cli/hooks/streamCommand.js +63 -0
  956. package/cli/app/package.json +48 -41
  957. package/cli/app/server.js +1 -1
  958. package/cli/cli.js +709 -248
  959. package/cli/hooks/postinstall.js +82 -50
  960. package/cli/hooks/safeGlobalInstall.js +178 -10
  961. package/cli/hooks/startupRuntime.js +31 -0
  962. package/cli/hooks/streamCommand.js +63 -0
  963. package/cli/package.json +6 -5
  964. package/cli/src/cli/systemdEnv.js +93 -0
  965. package/cli/src/cli/tray/autostart.js +87 -33
  966. package/cli/src/cli/tray/tray.js +3 -3
  967. package/cli/src/cli/updateRuntimeState.js +993 -0
  968. package/package.json +48 -41
  969. package/scripts/start-standalone.mjs +24 -15
  970. package/cli/app/.next-cli-build/static/chunks/app/login/page-9ea3f794879db097.js +0 -1
  971. package/i18n/README.ja-JP.md +0 -34
  972. package/i18n/README.ru.md +0 -34
  973. package/i18n/README.vi.md +0 -34
  974. package/i18n/README.zh-CN.md +0 -34
  975. package/images/screenshots/automation.png +0 -0
  976. package/images/screenshots/endpoint.png +0 -0
  977. package/images/screenshots/playground.png +0 -0
  978. package/images/screenshots/providers.png +0 -0
  979. package/images/screenshots/usage.png +0 -0
  980. package/images/zevairouter.png +0 -0
  981. package/jsconfig.json +0 -12
  982. package/next.config.mjs +0 -96
  983. package/open-sse/config/appConstants.js +0 -230
  984. package/open-sse/config/codexInstructions.js +0 -119
  985. package/open-sse/config/constants.js +0 -4
  986. package/open-sse/config/defaultThinkingSignature.js +0 -12
  987. package/open-sse/config/errorConfig.js +0 -92
  988. package/open-sse/config/googleTtsLanguages.js +0 -62
  989. package/open-sse/config/kiroConstants.js +0 -360
  990. package/open-sse/config/models.js +0 -13
  991. package/open-sse/config/ollamaModels.js +0 -19
  992. package/open-sse/config/providerModels.js +0 -1058
  993. package/open-sse/config/providers.js +0 -543
  994. package/open-sse/config/runtimeConfig.js +0 -72
  995. package/open-sse/config/ttsModels.js +0 -129
  996. package/open-sse/context/injectContext.js +0 -82
  997. package/open-sse/executors/antigravity.js +0 -605
  998. package/open-sse/executors/autoclaw.js +0 -121
  999. package/open-sse/executors/azure.js +0 -57
  1000. package/open-sse/executors/base.js +0 -221
  1001. package/open-sse/executors/codebuddy-cn.js +0 -31
  1002. package/open-sse/executors/codex.js +0 -484
  1003. package/open-sse/executors/commandcode.js +0 -88
  1004. package/open-sse/executors/cursor.js +0 -795
  1005. package/open-sse/executors/default.js +0 -532
  1006. package/open-sse/executors/gemini-cli.js +0 -89
  1007. package/open-sse/executors/github.js +0 -383
  1008. package/open-sse/executors/grok-cli.js +0 -397
  1009. package/open-sse/executors/grok-web.js +0 -345
  1010. package/open-sse/executors/iflow.js +0 -108
  1011. package/open-sse/executors/index.js +0 -92
  1012. package/open-sse/executors/kimchi.js +0 -123
  1013. package/open-sse/executors/kiro.js +0 -537
  1014. package/open-sse/executors/mimo-free.js +0 -156
  1015. package/open-sse/executors/ollama-local.js +0 -14
  1016. package/open-sse/executors/opencode-go.js +0 -41
  1017. package/open-sse/executors/opencode.js +0 -32
  1018. package/open-sse/executors/perplexity-web.js +0 -507
  1019. package/open-sse/executors/qoder.js +0 -468
  1020. package/open-sse/executors/qwen.js +0 -129
  1021. package/open-sse/executors/vertex.js +0 -131
  1022. package/open-sse/executors/xiaomi-tokenplan.js +0 -19
  1023. package/open-sse/handlers/chatCore/nonStreamingHandler.js +0 -261
  1024. package/open-sse/handlers/chatCore/requestDetail.js +0 -112
  1025. package/open-sse/handlers/chatCore/sseToJsonHandler.js +0 -540
  1026. package/open-sse/handlers/chatCore/streamingHandler.js +0 -125
  1027. package/open-sse/handlers/chatCore.js +0 -398
  1028. package/open-sse/handlers/embeddingProviders/_base.js +0 -4
  1029. package/open-sse/handlers/embeddingProviders/gemini.js +0 -57
  1030. package/open-sse/handlers/embeddingProviders/index.js +0 -23
  1031. package/open-sse/handlers/embeddingProviders/openai.js +0 -39
  1032. package/open-sse/handlers/embeddingProviders/openaiCompatNode.js +0 -16
  1033. package/open-sse/handlers/embeddingsCore.js +0 -126
  1034. package/open-sse/handlers/fetch/index.js +0 -237
  1035. package/open-sse/handlers/imageGenerationCore.js +0 -189
  1036. package/open-sse/handlers/imageProviders/_base.js +0 -31
  1037. package/open-sse/handlers/imageProviders/blackForestLabs.js +0 -46
  1038. package/open-sse/handlers/imageProviders/cloudflareAi.js +0 -181
  1039. package/open-sse/handlers/imageProviders/codex.js +0 -201
  1040. package/open-sse/handlers/imageProviders/comfyui.js +0 -11
  1041. package/open-sse/handlers/imageProviders/falAi.js +0 -44
  1042. package/open-sse/handlers/imageProviders/gemini.js +0 -28
  1043. package/open-sse/handlers/imageProviders/huggingface.js +0 -25
  1044. package/open-sse/handlers/imageProviders/index.js +0 -40
  1045. package/open-sse/handlers/imageProviders/nanobanana.js +0 -61
  1046. package/open-sse/handlers/imageProviders/openai.js +0 -40
  1047. package/open-sse/handlers/imageProviders/runwayml.js +0 -50
  1048. package/open-sse/handlers/imageProviders/sdwebui.js +0 -20
  1049. package/open-sse/handlers/imageProviders/stabilityAi.js +0 -37
  1050. package/open-sse/handlers/responsesHandler.js +0 -46
  1051. package/open-sse/handlers/search/callers.js +0 -371
  1052. package/open-sse/handlers/search/chatSearch.js +0 -409
  1053. package/open-sse/handlers/search/index.js +0 -201
  1054. package/open-sse/handlers/search/normalizers.js +0 -223
  1055. package/open-sse/handlers/sttCore.js +0 -194
  1056. package/open-sse/handlers/ttsCore.js +0 -74
  1057. package/open-sse/handlers/ttsProviders/_base.js +0 -39
  1058. package/open-sse/handlers/ttsProviders/edgeTts.js +0 -92
  1059. package/open-sse/handlers/ttsProviders/elevenlabs.js +0 -51
  1060. package/open-sse/handlers/ttsProviders/gemini.js +0 -120
  1061. package/open-sse/handlers/ttsProviders/genericFormats.js +0 -169
  1062. package/open-sse/handlers/ttsProviders/googleTts.js +0 -57
  1063. package/open-sse/handlers/ttsProviders/index.js +0 -50
  1064. package/open-sse/handlers/ttsProviders/localDevice.js +0 -90
  1065. package/open-sse/handlers/ttsProviders/minimax.js +0 -59
  1066. package/open-sse/handlers/ttsProviders/openai.js +0 -33
  1067. package/open-sse/handlers/ttsProviders/openrouter.js +0 -73
  1068. package/open-sse/index.js +0 -82
  1069. package/open-sse/rtk/applyFilter.js +0 -15
  1070. package/open-sse/rtk/autodetect.js +0 -111
  1071. package/open-sse/rtk/caveman.js +0 -100
  1072. package/open-sse/rtk/cavemanPrompts.js +0 -78
  1073. package/open-sse/rtk/constants.js +0 -55
  1074. package/open-sse/rtk/filters/buildOutput.js +0 -127
  1075. package/open-sse/rtk/filters/dedupLog.js +0 -44
  1076. package/open-sse/rtk/filters/find.js +0 -49
  1077. package/open-sse/rtk/filters/gitDiff.js +0 -92
  1078. package/open-sse/rtk/filters/gitStatus.js +0 -117
  1079. package/open-sse/rtk/filters/grep.js +0 -48
  1080. package/open-sse/rtk/filters/ls.js +0 -79
  1081. package/open-sse/rtk/filters/readNumbered.js +0 -27
  1082. package/open-sse/rtk/filters/searchList.js +0 -52
  1083. package/open-sse/rtk/filters/smartTruncate.js +0 -15
  1084. package/open-sse/rtk/filters/tree.js +0 -32
  1085. package/open-sse/rtk/headroom.js +0 -348
  1086. package/open-sse/rtk/index.js +0 -155
  1087. package/open-sse/rtk/ponytail.js +0 -91
  1088. package/open-sse/rtk/ponytailPrompts.js +0 -44
  1089. package/open-sse/rtk/pxpipe.js +0 -104
  1090. package/open-sse/rtk/registry.js +0 -38
  1091. package/open-sse/services/accountFallback.js +0 -467
  1092. package/open-sse/services/antigravityHeaderScrub.js +0 -78
  1093. package/open-sse/services/antigravityIdentity.js +0 -115
  1094. package/open-sse/services/antigravityObfuscation.js +0 -92
  1095. package/open-sse/services/clinepassModels.js +0 -63
  1096. package/open-sse/services/combo.js +0 -189
  1097. package/open-sse/services/compact.js +0 -71
  1098. package/open-sse/services/copilotModels.js +0 -155
  1099. package/open-sse/services/kimchiModels.js +0 -176
  1100. package/open-sse/services/kiroModels.js +0 -320
  1101. package/open-sse/services/model.js +0 -281
  1102. package/open-sse/services/oauthCredentialManager.js +0 -151
  1103. package/open-sse/services/projectId.js +0 -463
  1104. package/open-sse/services/provider.js +0 -356
  1105. package/open-sse/services/qoderModels.js +0 -216
  1106. package/open-sse/services/tokenRefresh.js +0 -949
  1107. package/open-sse/services/usage.js +0 -2415
  1108. package/open-sse/transformer/responsesTransformer.js +0 -509
  1109. package/open-sse/transformer/streamToJsonConverter.js +0 -151
  1110. package/open-sse/translator/formats.js +0 -36
  1111. package/open-sse/translator/helpers/claudeHelper.js +0 -217
  1112. package/open-sse/translator/helpers/geminiHelper.js +0 -372
  1113. package/open-sse/translator/helpers/imageHelper.js +0 -98
  1114. package/open-sse/translator/helpers/maxTokensHelper.js +0 -27
  1115. package/open-sse/translator/helpers/openaiHelper.js +0 -130
  1116. package/open-sse/translator/helpers/responsesApiHelper.js +0 -214
  1117. package/open-sse/translator/helpers/toolCallHelper.js +0 -148
  1118. package/open-sse/translator/index.js +0 -254
  1119. package/open-sse/translator/request/antigravity-to-openai.js +0 -255
  1120. package/open-sse/translator/request/claude-to-openai.js +0 -278
  1121. package/open-sse/translator/request/gemini-to-openai.js +0 -147
  1122. package/open-sse/translator/request/openai-responses.js +0 -212
  1123. package/open-sse/translator/request/openai-to-claude.js +0 -427
  1124. package/open-sse/translator/request/openai-to-commandcode.js +0 -178
  1125. package/open-sse/translator/request/openai-to-cursor.js +0 -195
  1126. package/open-sse/translator/request/openai-to-gemini.js +0 -478
  1127. package/open-sse/translator/request/openai-to-kiro.js +0 -641
  1128. package/open-sse/translator/request/openai-to-kiro.old.js +0 -278
  1129. package/open-sse/translator/request/openai-to-ollama.js +0 -192
  1130. package/open-sse/translator/request/openai-to-vertex.js +0 -42
  1131. package/open-sse/translator/response/claude-to-openai.js +0 -206
  1132. package/open-sse/translator/response/commandcode-to-openai.js +0 -197
  1133. package/open-sse/translator/response/cursor-to-openai.js +0 -30
  1134. package/open-sse/translator/response/gemini-to-openai.js +0 -245
  1135. package/open-sse/translator/response/kiro-to-openai.js +0 -195
  1136. package/open-sse/translator/response/ollama-to-openai.js +0 -152
  1137. package/open-sse/translator/response/openai-responses.js +0 -624
  1138. package/open-sse/translator/response/openai-to-antigravity.js +0 -122
  1139. package/open-sse/translator/response/openai-to-claude.js +0 -266
  1140. package/open-sse/utils/bypassHandler.js +0 -298
  1141. package/open-sse/utils/claudeCloaking.js +0 -155
  1142. package/open-sse/utils/claudeHeaderCache.js +0 -70
  1143. package/open-sse/utils/clientDetector.js +0 -64
  1144. package/open-sse/utils/cursorChecksum.js +0 -152
  1145. package/open-sse/utils/cursorProtobuf.js +0 -907
  1146. package/open-sse/utils/debugLog.js +0 -14
  1147. package/open-sse/utils/error.js +0 -147
  1148. package/open-sse/utils/ollamaTransform.js +0 -85
  1149. package/open-sse/utils/proxyFetch.js +0 -369
  1150. package/open-sse/utils/reasoningContentInjector.js +0 -79
  1151. package/open-sse/utils/requestLogger.js +0 -251
  1152. package/open-sse/utils/responsesStreamHelpers.js +0 -106
  1153. package/open-sse/utils/sessionManager.js +0 -231
  1154. package/open-sse/utils/stream.js +0 -590
  1155. package/open-sse/utils/streamHandler.js +0 -274
  1156. package/open-sse/utils/streamHelpers.js +0 -122
  1157. package/open-sse/utils/thinkingSuffix.js +0 -64
  1158. package/open-sse/utils/toolDeduper.js +0 -49
  1159. package/open-sse/utils/usageTracking.js +0 -351
  1160. package/postcss.config.mjs +0 -14
  1161. package/public/favicon.svg +0 -16
  1162. package/public/file.svg +0 -1
  1163. package/public/globe.svg +0 -1
  1164. package/public/i18n/literals/ar.json +0 -195
  1165. package/public/i18n/literals/bn.json +0 -195
  1166. package/public/i18n/literals/cs.json +0 -195
  1167. package/public/i18n/literals/da.json +0 -195
  1168. package/public/i18n/literals/de.json +0 -195
  1169. package/public/i18n/literals/el.json +0 -195
  1170. package/public/i18n/literals/es.json +0 -195
  1171. package/public/i18n/literals/fi.json +0 -195
  1172. package/public/i18n/literals/fr.json +0 -195
  1173. package/public/i18n/literals/he.json +0 -195
  1174. package/public/i18n/literals/hi.json +0 -195
  1175. package/public/i18n/literals/hu.json +0 -195
  1176. package/public/i18n/literals/id.json +0 -195
  1177. package/public/i18n/literals/it.json +0 -195
  1178. package/public/i18n/literals/ja.json +0 -195
  1179. package/public/i18n/literals/ko.json +0 -195
  1180. package/public/i18n/literals/nl.json +0 -195
  1181. package/public/i18n/literals/no.json +0 -195
  1182. package/public/i18n/literals/pl.json +0 -195
  1183. package/public/i18n/literals/pt-BR.json +0 -195
  1184. package/public/i18n/literals/pt-PT.json +0 -195
  1185. package/public/i18n/literals/ro.json +0 -195
  1186. package/public/i18n/literals/ru.json +0 -195
  1187. package/public/i18n/literals/sv.json +0 -195
  1188. package/public/i18n/literals/th.json +0 -195
  1189. package/public/i18n/literals/tl.json +0 -195
  1190. package/public/i18n/literals/tr.json +0 -195
  1191. package/public/i18n/literals/uk.json +0 -195
  1192. package/public/i18n/literals/ur.json +0 -195
  1193. package/public/i18n/literals/vi.json +0 -195
  1194. package/public/i18n/literals/zh-CN.json +0 -772
  1195. package/public/i18n/literals/zh-TW.json +0 -195
  1196. package/public/icons/discord.svg +0 -4
  1197. package/public/icons/icon-192.svg +0 -16
  1198. package/public/icons/icon-512.svg +0 -16
  1199. package/public/next.svg +0 -1
  1200. package/public/providers/alicode-intl.png +0 -0
  1201. package/public/providers/alicode.png +0 -0
  1202. package/public/providers/amp.png +0 -0
  1203. package/public/providers/anthropic-m.png +0 -0
  1204. package/public/providers/anthropic.png +0 -0
  1205. package/public/providers/antigravity.png +0 -0
  1206. package/public/providers/assemblyai.png +0 -0
  1207. package/public/providers/autoclaw.png +0 -0
  1208. package/public/providers/aws-polly.png +0 -0
  1209. package/public/providers/azure.png +0 -0
  1210. package/public/providers/black-forest-labs.png +0 -0
  1211. package/public/providers/blackbox.png +0 -0
  1212. package/public/providers/brave-search.png +0 -0
  1213. package/public/providers/byteplus.png +0 -0
  1214. package/public/providers/cartesia.png +0 -0
  1215. package/public/providers/cerebras.png +0 -0
  1216. package/public/providers/chutes.png +0 -0
  1217. package/public/providers/claude.png +0 -0
  1218. package/public/providers/cline.png +0 -0
  1219. package/public/providers/clinepass.png +0 -0
  1220. package/public/providers/cloudflare-ai.png +0 -0
  1221. package/public/providers/codebuddy-cn.png +0 -0
  1222. package/public/providers/codebuddy.png +0 -0
  1223. package/public/providers/codebuddy.svg +0 -37
  1224. package/public/providers/codex.png +0 -0
  1225. package/public/providers/cohere.png +0 -0
  1226. package/public/providers/comfyui.png +0 -0
  1227. package/public/providers/commandcode.png +0 -0
  1228. package/public/providers/continue.png +0 -0
  1229. package/public/providers/copilot.png +0 -0
  1230. package/public/providers/coqui.png +0 -0
  1231. package/public/providers/cursor.png +0 -0
  1232. package/public/providers/deepgram.png +0 -0
  1233. package/public/providers/deepseek-tui.png +0 -0
  1234. package/public/providers/deepseek.png +0 -0
  1235. package/public/providers/droid.png +0 -0
  1236. package/public/providers/edge-tts.png +0 -0
  1237. package/public/providers/elevenlabs.png +0 -0
  1238. package/public/providers/exa.png +0 -0
  1239. package/public/providers/fal-ai.png +0 -0
  1240. package/public/providers/firecrawl.png +0 -0
  1241. package/public/providers/fireworks.png +0 -0
  1242. package/public/providers/gemini-cli.png +0 -0
  1243. package/public/providers/gemini.png +0 -0
  1244. package/public/providers/github.png +0 -0
  1245. package/public/providers/glm-cn.png +0 -0
  1246. package/public/providers/glm.png +0 -0
  1247. package/public/providers/google-pse.png +0 -0
  1248. package/public/providers/google-tts.png +0 -0
  1249. package/public/providers/grok-cli.png +0 -0
  1250. package/public/providers/grok-web.png +0 -0
  1251. package/public/providers/groq.png +0 -0
  1252. package/public/providers/hermes.png +0 -0
  1253. package/public/providers/huggingface.png +0 -0
  1254. package/public/providers/hyperbolic.png +0 -0
  1255. package/public/providers/iflow.png +0 -0
  1256. package/public/providers/inworld.png +0 -0
  1257. package/public/providers/jcode.png +0 -0
  1258. package/public/providers/jina-ai.png +0 -0
  1259. package/public/providers/jina-reader.png +0 -0
  1260. package/public/providers/kilocode.png +0 -0
  1261. package/public/providers/kimchi.png +0 -0
  1262. package/public/providers/kimchi.svg +0 -4
  1263. package/public/providers/kimi-coding.png +0 -0
  1264. package/public/providers/kimi.png +0 -0
  1265. package/public/providers/kiro.png +0 -0
  1266. package/public/providers/linkup.png +0 -0
  1267. package/public/providers/local-device.png +0 -0
  1268. package/public/providers/mimo-free.png +0 -0
  1269. package/public/providers/minimax-cn.png +0 -0
  1270. package/public/providers/minimax.png +0 -0
  1271. package/public/providers/mistral.png +0 -0
  1272. package/public/providers/nanobanana.png +0 -0
  1273. package/public/providers/nebius.png +0 -0
  1274. package/public/providers/nvidia.png +0 -0
  1275. package/public/providers/oai-cc.png +0 -0
  1276. package/public/providers/oai-r.png +0 -0
  1277. package/public/providers/ollama-local.png +0 -0
  1278. package/public/providers/ollama.png +0 -0
  1279. package/public/providers/openai.png +0 -0
  1280. package/public/providers/openclaw.png +0 -0
  1281. package/public/providers/opencode-go.png +0 -0
  1282. package/public/providers/opencode.png +0 -0
  1283. package/public/providers/openrouter.png +0 -0
  1284. package/public/providers/perplexity-agent.png +0 -0
  1285. package/public/providers/perplexity-web.png +0 -0
  1286. package/public/providers/perplexity.png +0 -0
  1287. package/public/providers/playht.png +0 -0
  1288. package/public/providers/qoder.png +0 -0
  1289. package/public/providers/qwen.png +0 -0
  1290. package/public/providers/recraft.png +0 -0
  1291. package/public/providers/roo.png +0 -0
  1292. package/public/providers/runwayml.png +0 -0
  1293. package/public/providers/sdwebui.png +0 -0
  1294. package/public/providers/searchapi.png +0 -0
  1295. package/public/providers/searxng.png +0 -0
  1296. package/public/providers/serper.png +0 -0
  1297. package/public/providers/siliconflow.png +0 -0
  1298. package/public/providers/stability-ai.png +0 -0
  1299. package/public/providers/tavily.png +0 -0
  1300. package/public/providers/together.png +0 -0
  1301. package/public/providers/topaz.png +0 -0
  1302. package/public/providers/tortoise.png +0 -0
  1303. package/public/providers/vertex-partner.png +0 -0
  1304. package/public/providers/vertex.png +0 -0
  1305. package/public/providers/volcengine-ark.png +0 -0
  1306. package/public/providers/voyage-ai.png +0 -0
  1307. package/public/providers/xai.png +0 -0
  1308. package/public/providers/xiaomi-mimo.png +0 -0
  1309. package/public/providers/xiaomi-tokenplan.png +0 -0
  1310. package/public/providers/youcom.png +0 -0
  1311. package/public/sw.js +0 -22
  1312. package/public/vercel.svg +0 -1
  1313. package/public/window.svg +0 -1
  1314. package/scripts/translate-readme.js +0 -201
  1315. package/src/app/(dashboard)/dashboard/automation/page.js +0 -774
  1316. package/src/app/(dashboard)/dashboard/basic-chat/BasicChatPageClient.js +0 -1592
  1317. package/src/app/(dashboard)/dashboard/basic-chat/page.js +0 -5
  1318. package/src/app/(dashboard)/dashboard/cli-tools/CLIToolsPageClient.js +0 -81
  1319. package/src/app/(dashboard)/dashboard/cli-tools/[toolId]/ToolDetailClient.js +0 -173
  1320. package/src/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +0 -11
  1321. package/src/app/(dashboard)/dashboard/cli-tools/components/AntigravityToolCard.js +0 -487
  1322. package/src/app/(dashboard)/dashboard/cli-tools/components/ApiKeySelect.js +0 -14
  1323. package/src/app/(dashboard)/dashboard/cli-tools/components/BaseUrlSelect.js +0 -176
  1324. package/src/app/(dashboard)/dashboard/cli-tools/components/ClaudeToolCard.js +0 -396
  1325. package/src/app/(dashboard)/dashboard/cli-tools/components/ClineToolCard.js +0 -307
  1326. package/src/app/(dashboard)/dashboard/cli-tools/components/CodexToolCard.js +0 -466
  1327. package/src/app/(dashboard)/dashboard/cli-tools/components/CopilotToolCard.js +0 -330
  1328. package/src/app/(dashboard)/dashboard/cli-tools/components/CoworkToolCard.js +0 -646
  1329. package/src/app/(dashboard)/dashboard/cli-tools/components/DeepSeekTuiToolCard.js +0 -344
  1330. package/src/app/(dashboard)/dashboard/cli-tools/components/DefaultToolCard.js +0 -271
  1331. package/src/app/(dashboard)/dashboard/cli-tools/components/DroidToolCard.js +0 -421
  1332. package/src/app/(dashboard)/dashboard/cli-tools/components/EndpointPresetControl.js +0 -129
  1333. package/src/app/(dashboard)/dashboard/cli-tools/components/HermesToolCard.js +0 -323
  1334. package/src/app/(dashboard)/dashboard/cli-tools/components/JcodeToolCard.js +0 -386
  1335. package/src/app/(dashboard)/dashboard/cli-tools/components/KiloToolCard.js +0 -280
  1336. package/src/app/(dashboard)/dashboard/cli-tools/components/MitmLinkCard.js +0 -40
  1337. package/src/app/(dashboard)/dashboard/cli-tools/components/MitmServerCard.js +0 -329
  1338. package/src/app/(dashboard)/dashboard/cli-tools/components/MitmToolCard.js +0 -320
  1339. package/src/app/(dashboard)/dashboard/cli-tools/components/OpenClawToolCard.js +0 -394
  1340. package/src/app/(dashboard)/dashboard/cli-tools/components/OpenCodeToolCard.js +0 -512
  1341. package/src/app/(dashboard)/dashboard/cli-tools/components/ToolSummaryCard.js +0 -40
  1342. package/src/app/(dashboard)/dashboard/cli-tools/components/cliEndpointMatch.js +0 -13
  1343. package/src/app/(dashboard)/dashboard/cli-tools/components/index.js +0 -19
  1344. package/src/app/(dashboard)/dashboard/cli-tools/page.js +0 -7
  1345. package/src/app/(dashboard)/dashboard/combos/page.js +0 -615
  1346. package/src/app/(dashboard)/dashboard/console-log/ConsoleLogClient.js +0 -118
  1347. package/src/app/(dashboard)/dashboard/console-log/page.js +0 -8
  1348. package/src/app/(dashboard)/dashboard/context/page.js +0 -276
  1349. package/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.js +0 -1594
  1350. package/src/app/(dashboard)/dashboard/endpoint/endpointConstants.js +0 -32
  1351. package/src/app/(dashboard)/dashboard/endpoint/page.js +0 -7
  1352. package/src/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +0 -1907
  1353. package/src/app/(dashboard)/dashboard/media-providers/[kind]/page.js +0 -289
  1354. package/src/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +0 -413
  1355. package/src/app/(dashboard)/dashboard/media-providers/web/page.js +0 -209
  1356. package/src/app/(dashboard)/dashboard/mitm/MitmPageClient.js +0 -121
  1357. package/src/app/(dashboard)/dashboard/mitm/page.js +0 -5
  1358. package/src/app/(dashboard)/dashboard/page.js +0 -7
  1359. package/src/app/(dashboard)/dashboard/playground/page.js +0 -5
  1360. package/src/app/(dashboard)/dashboard/profile/page.js +0 -1284
  1361. package/src/app/(dashboard)/dashboard/providers/[id]/AddApiKeyModal.js +0 -389
  1362. package/src/app/(dashboard)/dashboard/providers/[id]/AddCustomModelModal.js +0 -126
  1363. package/src/app/(dashboard)/dashboard/providers/[id]/CompatibleModelsSection.js +0 -250
  1364. package/src/app/(dashboard)/dashboard/providers/[id]/ConnectionRow.js +0 -295
  1365. package/src/app/(dashboard)/dashboard/providers/[id]/CooldownTimer.js +0 -42
  1366. package/src/app/(dashboard)/dashboard/providers/[id]/EditCompatibleNodeModal.js +0 -162
  1367. package/src/app/(dashboard)/dashboard/providers/[id]/ModelRow.js +0 -99
  1368. package/src/app/(dashboard)/dashboard/providers/[id]/PassthroughModelsSection.js +0 -183
  1369. package/src/app/(dashboard)/dashboard/providers/[id]/page.js +0 -2170
  1370. package/src/app/(dashboard)/dashboard/providers/[id]/page.new.js +0 -1726
  1371. package/src/app/(dashboard)/dashboard/providers/components/ConnectionsCard.js +0 -486
  1372. package/src/app/(dashboard)/dashboard/providers/components/ModelAvailabilityBadge.js +0 -186
  1373. package/src/app/(dashboard)/dashboard/providers/components/ModelsCard.js +0 -295
  1374. package/src/app/(dashboard)/dashboard/providers/new/page.js +0 -220
  1375. package/src/app/(dashboard)/dashboard/providers/page.js +0 -1518
  1376. package/src/app/(dashboard)/dashboard/proxy-pools/page.js +0 -1107
  1377. package/src/app/(dashboard)/dashboard/pxpipe/PxpipeClient.js +0 -284
  1378. package/src/app/(dashboard)/dashboard/pxpipe/page.js +0 -5
  1379. package/src/app/(dashboard)/dashboard/quota/page.js +0 -11
  1380. package/src/app/(dashboard)/dashboard/terminal/TerminalPageClient.js +0 -735
  1381. package/src/app/(dashboard)/dashboard/terminal/page.js +0 -7
  1382. package/src/app/(dashboard)/dashboard/token-saver/TokenSaverClient.js +0 -1018
  1383. package/src/app/(dashboard)/dashboard/token-saver/page.js +0 -5
  1384. package/src/app/(dashboard)/dashboard/translator/page.js +0 -303
  1385. package/src/app/(dashboard)/dashboard/usage/components/OverviewCards.js +0 -87
  1386. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/ProviderLimitCard.js +0 -183
  1387. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/QuotaProgressBar.js +0 -127
  1388. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/QuotaTable.js +0 -269
  1389. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/index.js +0 -1571
  1390. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/utils.js +0 -320
  1391. package/src/app/(dashboard)/dashboard/usage/components/ProviderTopology.js +0 -468
  1392. package/src/app/(dashboard)/dashboard/usage/components/RequestDetailsTab.js +0 -454
  1393. package/src/app/(dashboard)/dashboard/usage/components/UsageChart.js +0 -155
  1394. package/src/app/(dashboard)/dashboard/usage/components/UsageTable.js +0 -253
  1395. package/src/app/(dashboard)/dashboard/usage/page.js +0 -75
  1396. package/src/app/(dashboard)/layout.js +0 -6
  1397. package/src/app/api/auth/login/route.js +0 -76
  1398. package/src/app/api/auth/logout/route.js +0 -14
  1399. package/src/app/api/auth/oidc/callback/route.js +0 -87
  1400. package/src/app/api/auth/oidc/start/route.js +0 -52
  1401. package/src/app/api/auth/oidc/test/route.js +0 -86
  1402. package/src/app/api/auth/status/route.js +0 -45
  1403. package/src/app/api/cache/stats/route.js +0 -13
  1404. package/src/app/api/changelog/route.js +0 -48
  1405. package/src/app/api/cli-tools/all-statuses/route.js +0 -46
  1406. package/src/app/api/cli-tools/antigravity-mitm/alias/route.js +0 -53
  1407. package/src/app/api/cli-tools/antigravity-mitm/route.js +0 -202
  1408. package/src/app/api/cli-tools/claude-settings/route.js +0 -203
  1409. package/src/app/api/cli-tools/cline-settings/route.js +0 -133
  1410. package/src/app/api/cli-tools/codex-gateway/accounts/route.js +0 -16
  1411. package/src/app/api/cli-tools/codex-settings/route.js +0 -271
  1412. package/src/app/api/cli-tools/copilot-settings/route.js +0 -153
  1413. package/src/app/api/cli-tools/cowork-mcp-registry/route.js +0 -77
  1414. package/src/app/api/cli-tools/cowork-mcp-tools/route.js +0 -95
  1415. package/src/app/api/cli-tools/cowork-settings/route.js +0 -412
  1416. package/src/app/api/cli-tools/deepseek-tui-settings/route.js +0 -164
  1417. package/src/app/api/cli-tools/droid-settings/route.js +0 -213
  1418. package/src/app/api/cli-tools/hermes-settings/route.js +0 -175
  1419. package/src/app/api/cli-tools/jcode-settings/route.js +0 -216
  1420. package/src/app/api/cli-tools/kilo-settings/route.js +0 -131
  1421. package/src/app/api/cli-tools/openclaw-settings/route.js +0 -292
  1422. package/src/app/api/cli-tools/opencode-settings/route.js +0 -259
  1423. package/src/app/api/combos/[id]/route.js +0 -81
  1424. package/src/app/api/combos/route.js +0 -48
  1425. package/src/app/api/context/[id]/route.js +0 -35
  1426. package/src/app/api/context/bulk/route.js +0 -25
  1427. package/src/app/api/context/route.js +0 -33
  1428. package/src/app/api/dashboard/chat/completions/route.js +0 -74
  1429. package/src/app/api/dashboard/cli-tools/keys/route.js +0 -33
  1430. package/src/app/api/dashboard/media/[operation]/route.js +0 -60
  1431. package/src/app/api/headroom/extras/route.js +0 -46
  1432. package/src/app/api/headroom/proxy/[...path]/route.js +0 -104
  1433. package/src/app/api/headroom/restart/route.js +0 -35
  1434. package/src/app/api/headroom/start/route.js +0 -35
  1435. package/src/app/api/headroom/status/route.js +0 -18
  1436. package/src/app/api/headroom/stop/route.js +0 -14
  1437. package/src/app/api/health/ready/route.js +0 -21
  1438. package/src/app/api/health/route.js +0 -15
  1439. package/src/app/api/init/route.js +0 -12
  1440. package/src/app/api/keys/[id]/rotate/route.js +0 -14
  1441. package/src/app/api/keys/[id]/route.js +0 -119
  1442. package/src/app/api/keys/route.js +0 -56
  1443. package/src/app/api/locale/route.js +0 -30
  1444. package/src/app/api/mcp/[plugin]/message/route.js +0 -21
  1445. package/src/app/api/mcp/[plugin]/sse/route.js +0 -37
  1446. package/src/app/api/media-providers/tts/deepgram/voices/route.js +0 -65
  1447. package/src/app/api/media-providers/tts/elevenlabs/voices/route.js +0 -71
  1448. package/src/app/api/media-providers/tts/inworld/voices/route.js +0 -61
  1449. package/src/app/api/media-providers/tts/minimax/voices/route.js +0 -113
  1450. package/src/app/api/media-providers/tts/voices/route.js +0 -99
  1451. package/src/app/api/metrics/route.js +0 -33
  1452. package/src/app/api/models/alias/route.js +0 -53
  1453. package/src/app/api/models/availability/route.js +0 -103
  1454. package/src/app/api/models/custom/route.js +0 -48
  1455. package/src/app/api/models/disabled/route.js +0 -50
  1456. package/src/app/api/models/route.js +0 -68
  1457. package/src/app/api/models/test/ping.js +0 -191
  1458. package/src/app/api/models/test/route.js +0 -14
  1459. package/src/app/api/oauth/[provider]/[action]/route.js +0 -340
  1460. package/src/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js +0 -19
  1461. package/src/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1462. package/src/app/api/oauth/antigravity/bulk-import/[jobId]/route.js +0 -23
  1463. package/src/app/api/oauth/antigravity/bulk-import/latest/route.js +0 -24
  1464. package/src/app/api/oauth/antigravity/bulk-import/route.js +0 -51
  1465. package/src/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route.js +0 -19
  1466. package/src/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1467. package/src/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js +0 -25
  1468. package/src/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js +0 -27
  1469. package/src/app/api/oauth/cloudflare-ai/bulk-import/route.js +0 -56
  1470. package/src/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js +0 -19
  1471. package/src/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1472. package/src/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js +0 -23
  1473. package/src/app/api/oauth/codebuddy/bulk-import/latest/route.js +0 -25
  1474. package/src/app/api/oauth/codebuddy/bulk-import/route.js +0 -51
  1475. package/src/app/api/oauth/codebuddy/bulk-token/route.js +0 -118
  1476. package/src/app/api/oauth/codebuddy/quota-cookie/route.js +0 -133
  1477. package/src/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js +0 -19
  1478. package/src/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1479. package/src/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js +0 -26
  1480. package/src/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js +0 -27
  1481. package/src/app/api/oauth/codebuddy-cn/bulk-import/route.js +0 -61
  1482. package/src/app/api/oauth/codebuddy-cn/bulk-token/route.js +0 -119
  1483. package/src/app/api/oauth/codebuddy-cn/quota-cookie/route.js +0 -28
  1484. package/src/app/api/oauth/codex/import-token/route.js +0 -96
  1485. package/src/app/api/oauth/cursor/auto-import/route.js +0 -257
  1486. package/src/app/api/oauth/cursor/import/route.js +0 -100
  1487. package/src/app/api/oauth/gitlab/pat/route.js +0 -62
  1488. package/src/app/api/oauth/iflow/cookie/route.js +0 -137
  1489. package/src/app/api/oauth/kiro/auto-import/route.js +0 -85
  1490. package/src/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js +0 -19
  1491. package/src/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1492. package/src/app/api/oauth/kiro/bulk-import/[jobId]/route.js +0 -23
  1493. package/src/app/api/oauth/kiro/bulk-import/latest/route.js +0 -25
  1494. package/src/app/api/oauth/kiro/bulk-import/route.js +0 -51
  1495. package/src/app/api/oauth/kiro/import/route.js +0 -110
  1496. package/src/app/api/oauth/kiro/social-authorize/route.js +0 -27
  1497. package/src/app/api/oauth/kiro/social-exchange/route.js +0 -41
  1498. package/src/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js +0 -19
  1499. package/src/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1500. package/src/app/api/oauth/qoder/bulk-import/[jobId]/route.js +0 -23
  1501. package/src/app/api/oauth/qoder/bulk-import/latest/route.js +0 -24
  1502. package/src/app/api/oauth/qoder/bulk-import/route.js +0 -49
  1503. package/src/app/api/pricing/route.js +0 -134
  1504. package/src/app/api/provider-nodes/[id]/route.js +0 -101
  1505. package/src/app/api/provider-nodes/route.js +0 -104
  1506. package/src/app/api/provider-nodes/validate/route.js +0 -201
  1507. package/src/app/api/providers/[id]/models/route.js +0 -605
  1508. package/src/app/api/providers/[id]/route.js +0 -251
  1509. package/src/app/api/providers/[id]/test/route.js +0 -23
  1510. package/src/app/api/providers/[id]/test/testUtils.js +0 -811
  1511. package/src/app/api/providers/[id]/test-models/route.js +0 -66
  1512. package/src/app/api/providers/bulk-delete/route.js +0 -60
  1513. package/src/app/api/providers/client/route.js +0 -136
  1514. package/src/app/api/providers/kilo/free-models/route.js +0 -55
  1515. package/src/app/api/providers/route.js +0 -278
  1516. package/src/app/api/providers/suggested-models/filters.js +0 -20
  1517. package/src/app/api/providers/suggested-models/route.js +0 -34
  1518. package/src/app/api/providers/test-batch/route.js +0 -131
  1519. package/src/app/api/providers/validate/route.js +0 -637
  1520. package/src/app/api/proxy-pools/[id]/route.js +0 -135
  1521. package/src/app/api/proxy-pools/[id]/test/route.js +0 -72
  1522. package/src/app/api/proxy-pools/cloudflare-deploy/route.js +0 -145
  1523. package/src/app/api/proxy-pools/deno-deploy/route.js +0 -175
  1524. package/src/app/api/proxy-pools/route.js +0 -112
  1525. package/src/app/api/proxy-pools/vercel-deploy/route.js +0 -142
  1526. package/src/app/api/pxpipe/health/route.js +0 -16
  1527. package/src/app/api/pxpipe/install/route.js +0 -20
  1528. package/src/app/api/pxpipe/logs/route.js +0 -21
  1529. package/src/app/api/pxpipe/restart/route.js +0 -16
  1530. package/src/app/api/pxpipe/start/route.js +0 -26
  1531. package/src/app/api/pxpipe/stats/route.js +0 -17
  1532. package/src/app/api/pxpipe/status/route.js +0 -21
  1533. package/src/app/api/pxpipe/stop/route.js +0 -16
  1534. package/src/app/api/settings/database/route.js +0 -36
  1535. package/src/app/api/settings/proxy-test/route.js +0 -23
  1536. package/src/app/api/settings/require-login/route.js +0 -15
  1537. package/src/app/api/settings/route.js +0 -115
  1538. package/src/app/api/shutdown/route.js +0 -24
  1539. package/src/app/api/tags/route.js +0 -18
  1540. package/src/app/api/terminal/auth/setup/route.js +0 -72
  1541. package/src/app/api/terminal/auth/status/route.js +0 -27
  1542. package/src/app/api/terminal/auth/unlock/route.js +0 -69
  1543. package/src/app/api/terminal/session/[id]/input/route.js +0 -32
  1544. package/src/app/api/terminal/session/[id]/resize/route.js +0 -18
  1545. package/src/app/api/terminal/session/[id]/route.js +0 -37
  1546. package/src/app/api/terminal/session/[id]/stream/route.js +0 -100
  1547. package/src/app/api/terminal/session/route.js +0 -30
  1548. package/src/app/api/translator/console-logs/route.js +0 -24
  1549. package/src/app/api/translator/console-logs/stream/route.js +0 -79
  1550. package/src/app/api/translator/load/route.js +0 -45
  1551. package/src/app/api/translator/save/route.js +0 -44
  1552. package/src/app/api/translator/send/route.js +0 -94
  1553. package/src/app/api/translator/translate/route.js +0 -90
  1554. package/src/app/api/tunnel/disable/route.js +0 -12
  1555. package/src/app/api/tunnel/enable/route.js +0 -16
  1556. package/src/app/api/tunnel/status/route.js +0 -13
  1557. package/src/app/api/tunnel/tailscale-check/route.js +0 -50
  1558. package/src/app/api/tunnel/tailscale-disable/route.js +0 -12
  1559. package/src/app/api/tunnel/tailscale-enable/route.js +0 -12
  1560. package/src/app/api/tunnel/tailscale-install/route.js +0 -72
  1561. package/src/app/api/usage/[connectionId]/route.js +0 -40
  1562. package/src/app/api/usage/aggregate/route.js +0 -126
  1563. package/src/app/api/usage/chart/route.js +0 -21
  1564. package/src/app/api/usage/history/route.js +0 -12
  1565. package/src/app/api/usage/logs/route.js +0 -12
  1566. package/src/app/api/usage/providers/route.js +0 -42
  1567. package/src/app/api/usage/request-details/route.js +0 -57
  1568. package/src/app/api/usage/request-logs/route.js +0 -13
  1569. package/src/app/api/usage/stats/route.js +0 -23
  1570. package/src/app/api/usage/stream/route.js +0 -142
  1571. package/src/app/api/v1/api/chat/route.js +0 -37
  1572. package/src/app/api/v1/audio/speech/route.js +0 -16
  1573. package/src/app/api/v1/audio/transcriptions/route.js +0 -19
  1574. package/src/app/api/v1/audio/voices/route.js +0 -68
  1575. package/src/app/api/v1/chat/completions/route.js +0 -35
  1576. package/src/app/api/v1/embeddings/route.js +0 -21
  1577. package/src/app/api/v1/images/generations/route.js +0 -16
  1578. package/src/app/api/v1/messages/count_tokens/route.js +0 -59
  1579. package/src/app/api/v1/messages/route.js +0 -36
  1580. package/src/app/api/v1/models/[kind]/route.js +0 -55
  1581. package/src/app/api/v1/models/info/route.js +0 -110
  1582. package/src/app/api/v1/models/route.js +0 -497
  1583. package/src/app/api/v1/responses/compact/route.js +0 -55
  1584. package/src/app/api/v1/responses/route.js +0 -30
  1585. package/src/app/api/v1/route.js +0 -1
  1586. package/src/app/api/v1/search/route.js +0 -21
  1587. package/src/app/api/v1/web/fetch/route.js +0 -21
  1588. package/src/app/api/v1beta/models/[...path]/route.js +0 -368
  1589. package/src/app/api/v1beta/models/route.js +0 -44
  1590. package/src/app/api/version/route.js +0 -198
  1591. package/src/app/api/version/shutdown/route.js +0 -15
  1592. package/src/app/api/version/update/route.js +0 -21
  1593. package/src/app/callback/page.js +0 -149
  1594. package/src/app/dashboard/settings/pricing/page.js +0 -174
  1595. package/src/app/globals.css +0 -659
  1596. package/src/app/landing/components/AnimatedBackground.js +0 -57
  1597. package/src/app/landing/components/Features.js +0 -133
  1598. package/src/app/landing/components/FlowAnimation.js +0 -175
  1599. package/src/app/landing/components/Footer.js +0 -61
  1600. package/src/app/landing/components/GetStarted.js +0 -97
  1601. package/src/app/landing/components/HeroSection.js +0 -72
  1602. package/src/app/landing/components/HowItWorks.js +0 -66
  1603. package/src/app/landing/components/Navigation.js +0 -77
  1604. package/src/app/landing/page.js +0 -106
  1605. package/src/app/layout.js +0 -48
  1606. package/src/app/login/page.js +0 -197
  1607. package/src/app/manifest.js +0 -30
  1608. package/src/app/page.js +0 -5
  1609. package/src/dashboardGuard.js +0 -288
  1610. package/src/i18n/RuntimeI18nProvider.js +0 -27
  1611. package/src/i18n/config.js +0 -146
  1612. package/src/i18n/runtime.js +0 -162
  1613. package/src/lib/alerter.js +0 -122
  1614. package/src/lib/appUpdater.js +0 -204
  1615. package/src/lib/auth/dashboardSession.js +0 -68
  1616. package/src/lib/auth/loginLimiter.js +0 -52
  1617. package/src/lib/auth/oidc.js +0 -303
  1618. package/src/lib/auth/terminalSession.js +0 -88
  1619. package/src/lib/autoclaw/constants.js +0 -63
  1620. package/src/lib/consoleLogBuffer.js +0 -79
  1621. package/src/lib/dataDir.js +0 -29
  1622. package/src/lib/db/adapters/betterSqliteAdapter.js +0 -58
  1623. package/src/lib/db/adapters/bunSqliteAdapter.js +0 -65
  1624. package/src/lib/db/adapters/nodeSqliteAdapter.js +0 -86
  1625. package/src/lib/db/adapters/sqljsAdapter.js +0 -207
  1626. package/src/lib/db/backup.js +0 -36
  1627. package/src/lib/db/dataDirMigration.js +0 -52
  1628. package/src/lib/db/driver.js +0 -131
  1629. package/src/lib/db/helpers/jsonCol.js +0 -9
  1630. package/src/lib/db/helpers/kvStore.js +0 -39
  1631. package/src/lib/db/helpers/metaStore.js +0 -22
  1632. package/src/lib/db/index.js +0 -218
  1633. package/src/lib/db/maintenance.js +0 -78
  1634. package/src/lib/db/migrate.js +0 -295
  1635. package/src/lib/db/migrations/001-initial.js +0 -17
  1636. package/src/lib/db/migrations/index.js +0 -10
  1637. package/src/lib/db/paths.js +0 -21
  1638. package/src/lib/db/repos/aliasRepo.js +0 -62
  1639. package/src/lib/db/repos/apiKeysRepo.js +0 -193
  1640. package/src/lib/db/repos/combosRepo.js +0 -73
  1641. package/src/lib/db/repos/connectionsRepo.js +0 -247
  1642. package/src/lib/db/repos/contextFilesRepo.js +0 -124
  1643. package/src/lib/db/repos/disabledModelsRepo.js +0 -56
  1644. package/src/lib/db/repos/nodesRepo.js +0 -95
  1645. package/src/lib/db/repos/pricingRepo.js +0 -108
  1646. package/src/lib/db/repos/proxyPoolsRepo.js +0 -103
  1647. package/src/lib/db/repos/quotaCacheRepo.js +0 -80
  1648. package/src/lib/db/repos/requestDetailsRepo.js +0 -275
  1649. package/src/lib/db/repos/settingsRepo.js +0 -120
  1650. package/src/lib/db/repos/usageRepo.js +0 -935
  1651. package/src/lib/db/schema.js +0 -193
  1652. package/src/lib/db/version.js +0 -21
  1653. package/src/lib/disabledModelsDb.js +0 -4
  1654. package/src/lib/headroom/detect.js +0 -192
  1655. package/src/lib/headroom/process.js +0 -327
  1656. package/src/lib/localDb.js +0 -26
  1657. package/src/lib/mcp/stdioSseBridge.js +0 -198
  1658. package/src/lib/mitmAliasCache.js +0 -46
  1659. package/src/lib/network/connectionProxy.js +0 -187
  1660. package/src/lib/network/initOutboundProxy.js +0 -25
  1661. package/src/lib/network/outboundProxy.js +0 -82
  1662. package/src/lib/network/proxyTest.js +0 -91
  1663. package/src/lib/oauth/constants/oauth.js +0 -337
  1664. package/src/lib/oauth/constants/xai.js +0 -61
  1665. package/src/lib/oauth/providers.js +0 -1821
  1666. package/src/lib/oauth/services/antigravity.js +0 -321
  1667. package/src/lib/oauth/services/antigravityBulkImportManager.js +0 -364
  1668. package/src/lib/oauth/services/autoclawTokenMonitor.js +0 -145
  1669. package/src/lib/oauth/services/bulkImportBrowserEngine.js +0 -756
  1670. package/src/lib/oauth/services/claude.js +0 -136
  1671. package/src/lib/oauth/services/cloudflareAiBulkImportManager.js +0 -503
  1672. package/src/lib/oauth/services/codebuddyAutomation.js +0 -6
  1673. package/src/lib/oauth/services/codebuddyBulkImportManager.js +0 -1033
  1674. package/src/lib/oauth/services/codebuddyCnBulkImportManager.js +0 -2088
  1675. package/src/lib/oauth/services/codebuddyCnPhoneAutomation.js +0 -1294
  1676. package/src/lib/oauth/services/codex.js +0 -144
  1677. package/src/lib/oauth/services/cursor.js +0 -179
  1678. package/src/lib/oauth/services/displayEnv.js +0 -134
  1679. package/src/lib/oauth/services/fiveSimClient.js +0 -567
  1680. package/src/lib/oauth/services/gemini.js +0 -240
  1681. package/src/lib/oauth/services/github.js +0 -225
  1682. package/src/lib/oauth/services/googleAutomation.js +0 -9
  1683. package/src/lib/oauth/services/iflow.js +0 -202
  1684. package/src/lib/oauth/services/index.js +0 -17
  1685. package/src/lib/oauth/services/kiro.js +0 -334
  1686. package/src/lib/oauth/services/kiroBulkImportManager.js +0 -1522
  1687. package/src/lib/oauth/services/kiroConnections.js +0 -93
  1688. package/src/lib/oauth/services/kiroGoogleAutomation.js +0 -2587
  1689. package/src/lib/oauth/services/oauth.js +0 -157
  1690. package/src/lib/oauth/services/openai.js +0 -123
  1691. package/src/lib/oauth/services/proxyUtils.js +0 -26
  1692. package/src/lib/oauth/services/qoder.js +0 -233
  1693. package/src/lib/oauth/services/qoderBulkImportManager.js +0 -340
  1694. package/src/lib/oauth/services/qwen.js +0 -170
  1695. package/src/lib/oauth/services/socksHttpBridge.js +0 -165
  1696. package/src/lib/oauth/services/tempmailClient.js +0 -288
  1697. package/src/lib/oauth/services/xai.js +0 -238
  1698. package/src/lib/oauth/utils/banner.js +0 -63
  1699. package/src/lib/oauth/utils/pkce.js +0 -39
  1700. package/src/lib/oauth/utils/server.js +0 -415
  1701. package/src/lib/oauth/utils/ui.js +0 -48
  1702. package/src/lib/providerConnectionSanitizer.js +0 -180
  1703. package/src/lib/providerNormalization.js +0 -45
  1704. package/src/lib/pxpipe/events.js +0 -125
  1705. package/src/lib/pxpipe/install.js +0 -123
  1706. package/src/lib/pxpipe/loader.js +0 -70
  1707. package/src/lib/pxpipe/service.js +0 -49
  1708. package/src/lib/qoder/constants.js +0 -64
  1709. package/src/lib/qoder/cosy.js +0 -175
  1710. package/src/lib/qoder/encoding.js +0 -55
  1711. package/src/lib/requestDetailsDb.js +0 -4
  1712. package/src/lib/responseCache.js +0 -169
  1713. package/src/lib/safeFetch.js +0 -167
  1714. package/src/lib/systemSpecs.js +0 -167
  1715. package/src/lib/terminal/ptyBridge.py +0 -163
  1716. package/src/lib/terminal/sessionManager.js +0 -434
  1717. package/src/lib/tunnel/cloudflare/cloudflared.js +0 -460
  1718. package/src/lib/tunnel/cloudflare/config.js +0 -9
  1719. package/src/lib/tunnel/cloudflare/healthCheck.js +0 -29
  1720. package/src/lib/tunnel/cloudflare/manager.js +0 -151
  1721. package/src/lib/tunnel/cloudflare/pid.js +0 -23
  1722. package/src/lib/tunnel/index.js +0 -48
  1723. package/src/lib/tunnel/shared/dnsResolver.js +0 -17
  1724. package/src/lib/tunnel/shared/internetCheck.js +0 -26
  1725. package/src/lib/tunnel/shared/state.js +0 -41
  1726. package/src/lib/tunnel/shared/watchdogConfig.js +0 -8
  1727. package/src/lib/tunnel/tailscale/config.js +0 -7
  1728. package/src/lib/tunnel/tailscale/healthCheck.js +0 -29
  1729. package/src/lib/tunnel/tailscale/manager.js +0 -129
  1730. package/src/lib/tunnel/tailscale/tailscale.js +0 -790
  1731. package/src/lib/updater/updater.js +0 -327
  1732. package/src/lib/usage/fetcher.js +0 -208
  1733. package/src/lib/usage/quotaRefresh.js +0 -100
  1734. package/src/lib/usage/quotaService.js +0 -206
  1735. package/src/lib/usageDb.js +0 -7
  1736. package/src/mitm/antigravityIdeVersion.js +0 -50
  1737. package/src/mitm/cert/generate.js +0 -32
  1738. package/src/mitm/cert/install.js +0 -274
  1739. package/src/mitm/cert/rootCA.js +0 -173
  1740. package/src/mitm/config.js +0 -87
  1741. package/src/mitm/dbReader.js +0 -22
  1742. package/src/mitm/dns/dnsConfig.js +0 -266
  1743. package/src/mitm/handlers/antigravity.js +0 -33
  1744. package/src/mitm/handlers/base.js +0 -226
  1745. package/src/mitm/handlers/copilot.js +0 -35
  1746. package/src/mitm/handlers/cursor.js +0 -15
  1747. package/src/mitm/handlers/kiro.js +0 -533
  1748. package/src/mitm/logger.js +0 -106
  1749. package/src/mitm/manager.js +0 -862
  1750. package/src/mitm/paths.js +0 -32
  1751. package/src/mitm/server.js +0 -447
  1752. package/src/mitm/winElevated.js +0 -81
  1753. package/src/models/index.js +0 -38
  1754. package/src/proxy.js +0 -5
  1755. package/src/shared/components/AddCustomEmbeddingModal.js +0 -184
  1756. package/src/shared/components/Avatar.js +0 -88
  1757. package/src/shared/components/Badge.js +0 -54
  1758. package/src/shared/components/BulkAccountAutomationModal.js +0 -640
  1759. package/src/shared/components/Button.js +0 -57
  1760. package/src/shared/components/Card.js +0 -116
  1761. package/src/shared/components/ChangelogModal.js +0 -108
  1762. package/src/shared/components/CodeBuddyCnPhoneRegisterModal.js +0 -563
  1763. package/src/shared/components/CodeBuddyQuotaCookieModal.js +0 -109
  1764. package/src/shared/components/ComboFormModal.js +0 -176
  1765. package/src/shared/components/CursorAuthModal.js +0 -213
  1766. package/src/shared/components/Drawer.js +0 -82
  1767. package/src/shared/components/EditConnectionModal.js +0 -287
  1768. package/src/shared/components/Footer.js +0 -132
  1769. package/src/shared/components/GitLabAuthModal.js +0 -194
  1770. package/src/shared/components/Header.js +0 -399
  1771. package/src/shared/components/HeaderLanguage.js +0 -48
  1772. package/src/shared/components/HeaderMenu.js +0 -127
  1773. package/src/shared/components/IFlowCookieModal.js +0 -132
  1774. package/src/shared/components/Input.js +0 -76
  1775. package/src/shared/components/KiroAuthModal.js +0 -1169
  1776. package/src/shared/components/KiroOAuthWrapper.js +0 -150
  1777. package/src/shared/components/KiroSocialOAuthModal.js +0 -205
  1778. package/src/shared/components/LanguageSwitcher.js +0 -192
  1779. package/src/shared/components/Loading.js +0 -75
  1780. package/src/shared/components/ManualConfigModal.js +0 -44
  1781. package/src/shared/components/McpMarketplaceModal.js +0 -255
  1782. package/src/shared/components/Modal.js +0 -196
  1783. package/src/shared/components/ModelSelectModal.js +0 -547
  1784. package/src/shared/components/NoAuthProxyCard.js +0 -134
  1785. package/src/shared/components/OAuthModal.js +0 -709
  1786. package/src/shared/components/Pagination.js +0 -150
  1787. package/src/shared/components/PricingModal.js +0 -209
  1788. package/src/shared/components/ProviderIcon.js +0 -68
  1789. package/src/shared/components/ProviderInfoCard.js +0 -82
  1790. package/src/shared/components/RequestLogger.js +0 -122
  1791. package/src/shared/components/SegmentedControl.js +0 -53
  1792. package/src/shared/components/Select.js +0 -67
  1793. package/src/shared/components/Sidebar.js +0 -486
  1794. package/src/shared/components/ThemeProvider.js +0 -15
  1795. package/src/shared/components/ThemeToggle.js +0 -42
  1796. package/src/shared/components/Toggle.js +0 -95
  1797. package/src/shared/components/Tooltip.js +0 -25
  1798. package/src/shared/components/UsageStats.js +0 -571
  1799. package/src/shared/components/index.js +0 -46
  1800. package/src/shared/components/layouts/AuthLayout.js +0 -29
  1801. package/src/shared/components/layouts/DashboardLayout.js +0 -121
  1802. package/src/shared/components/layouts/index.js +0 -4
  1803. package/src/shared/constants/automationProviders.js +0 -23
  1804. package/src/shared/constants/cliTools.js +0 -397
  1805. package/src/shared/constants/colors.js +0 -77
  1806. package/src/shared/constants/config.js +0 -98
  1807. package/src/shared/constants/coworkPlugins.js +0 -75
  1808. package/src/shared/constants/index.js +0 -4
  1809. package/src/shared/constants/locales.js +0 -36
  1810. package/src/shared/constants/mitmToolHosts.js +0 -12
  1811. package/src/shared/constants/models.js +0 -38
  1812. package/src/shared/constants/pricing.js +0 -311
  1813. package/src/shared/constants/providers.js +0 -450
  1814. package/src/shared/constants/ttsProviders.js +0 -138
  1815. package/src/shared/hooks/index.js +0 -2
  1816. package/src/shared/hooks/useCopyToClipboard.js +0 -43
  1817. package/src/shared/hooks/useModelLockUntil.js +0 -18
  1818. package/src/shared/hooks/useTheme.js +0 -60
  1819. package/src/shared/services/bootstrap.js +0 -12
  1820. package/src/shared/services/initializeApp.js +0 -294
  1821. package/src/shared/utils/api.js +0 -93
  1822. package/src/shared/utils/apiKey.js +0 -98
  1823. package/src/shared/utils/asyncPolling.js +0 -27
  1824. package/src/shared/utils/clineAuth.js +0 -37
  1825. package/src/shared/utils/cn.js +0 -11
  1826. package/src/shared/utils/codexCliConfig.js +0 -44
  1827. package/src/shared/utils/connectionStatus.js +0 -168
  1828. package/src/shared/utils/dashboardMedia.js +0 -19
  1829. package/src/shared/utils/index.js +0 -40
  1830. package/src/shared/utils/machine.js +0 -6
  1831. package/src/shared/utils/machineId.js +0 -66
  1832. package/src/shared/utils/modelLockTimer.js +0 -32
  1833. package/src/shared/utils/providerModelsFetcher.js +0 -30
  1834. package/src/shared/utils/usageStats.js +0 -10
  1835. package/src/sse/handlers/chat.js +0 -445
  1836. package/src/sse/handlers/embeddings.js +0 -141
  1837. package/src/sse/handlers/fetch.js +0 -213
  1838. package/src/sse/handlers/imageGeneration.js +0 -142
  1839. package/src/sse/handlers/search.js +0 -206
  1840. package/src/sse/handlers/streamFailure.js +0 -34
  1841. package/src/sse/handlers/stt.js +0 -88
  1842. package/src/sse/handlers/tts.js +0 -114
  1843. package/src/sse/services/auth.js +0 -576
  1844. package/src/sse/services/codexGateway.js +0 -215
  1845. package/src/sse/services/model.js +0 -99
  1846. package/src/sse/services/tokenRefresh.js +0 -319
  1847. package/src/sse/utils/logger.js +0 -75
  1848. package/src/store/headerSearchStore.js +0 -19
  1849. package/src/store/index.js +0 -6
  1850. package/src/store/notificationStore.js +0 -45
  1851. package/src/store/providerStore.js +0 -55
  1852. package/src/store/settingsStore.js +0 -51
  1853. package/src/store/themeStore.js +0 -54
  1854. package/src/store/userStore.js +0 -20
  1855. package/start.sh +0 -4
  1856. /package/cli/app/.next-cli-build/static/{SC3btW1lCuB9q-iyIwwWK → xutAvIqJIpkP-fqwioGku}/_buildManifest.js +0 -0
  1857. /package/cli/app/.next-cli-build/static/{SC3btW1lCuB9q-iyIwwWK → xutAvIqJIpkP-fqwioGku}/_ssgManifest.js +0 -0
@@ -1,2170 +0,0 @@
1
- "use client";
2
-
3
- import { useState, useEffect, useCallback, useMemo, useRef } from "react";
4
- import { useParams, useRouter } from "next/navigation";
5
- import Link from "next/link";
6
- import Image from "next/image";
7
- import { Card, Button, Badge, Input, Modal, CardSkeleton, OAuthModal, KiroOAuthWrapper, CursorAuthModal, IFlowCookieModal, CodeBuddyQuotaCookieModal, GitLabAuthModal, Toggle, Select, EditConnectionModal, NoAuthProxyCard, ConfirmModal, Pagination } from "@/shared/components";
8
- import { OAUTH_PROVIDERS, APIKEY_PROVIDERS, FREE_PROVIDERS, FREE_TIER_PROVIDERS, WEB_COOKIE_PROVIDERS, getProviderAlias, isOpenAICompatibleProvider, isAnthropicCompatibleProvider, AI_PROVIDERS, THINKING_CONFIG, THINKING_LEVEL_PICKER_OPTIONS } from "@/shared/constants/providers";
9
- import { isAutomationProvider, automationHref } from "@/shared/constants/automationProviders";
10
- import { getModelsByProviderId } from "@/shared/constants/models";
11
- import { useCopyToClipboard } from "@/shared/hooks/useCopyToClipboard";
12
- import { translate } from "@/i18n/runtime";
13
- import { fetchSuggestedModels } from "@/shared/utils/providerModelsFetcher";
14
- import { classifyConnectionStatus, CONNECTION_STATUS_FILTERS, filterConnectionByStatus } from "@/shared/utils/connectionStatus";
15
- import { startAsyncPolling } from "@/shared/utils/asyncPolling";
16
- import ModelRow from "./ModelRow";
17
- import PassthroughModelsSection from "./PassthroughModelsSection";
18
- import CompatibleModelsSection from "./CompatibleModelsSection";
19
- import ConnectionRow from "./ConnectionRow";
20
- import AddApiKeyModal from "./AddApiKeyModal";
21
- import EditCompatibleNodeModal from "./EditCompatibleNodeModal";
22
- import AddCustomModelModal from "./AddCustomModelModal";
23
-
24
- const ONE_BY_ONE_DELAY_MS = 1000;
25
- const KIRO_BULK_JOB_STORAGE_KEY = "kiro-bulk-import-active-job";
26
- const KIRO_BULK_JOB_EXPIRED_MESSAGE = "Bulk import progress expired or was cleared.";
27
- const CONNECTIONS_DEFAULT_PAGE_SIZE = 20;
28
- const MODELS_DEFAULT_PAGE_SIZE = 20;
29
- const PROVIDER_DETAIL_FETCH_TIMEOUT_MS = 8000;
30
-
31
- function sleep(ms) {
32
- return new Promise((resolve) => setTimeout(resolve, ms));
33
- }
34
-
35
- function isBulkJobTerminal(status) {
36
- return ["completed", "cancelled", "failed"].includes(status);
37
- }
38
-
39
- function isBulkJobActive(status) {
40
- return ["queued", "running", "needs_manual"].includes(status);
41
- }
42
-
43
- async function fetchBulkJobById(jobId) {
44
- if (!jobId) return null;
45
- const res = await fetch(`/api/oauth/kiro/bulk-import/${jobId}`, { cache: "no-store" });
46
- const data = await res.json();
47
- return { res, data };
48
- }
49
-
50
- async function fetchLatestBulkJob(scope = "active") {
51
- const res = await fetch(`/api/oauth/kiro/bulk-import/latest?scope=${encodeURIComponent(scope)}`, { cache: "no-store" });
52
- const data = await res.json();
53
- return { res, data };
54
- }
55
-
56
- async function fetchJsonWithTimeout(url) {
57
- const controller = new AbortController();
58
- const timeout = window.setTimeout(() => controller.abort(), PROVIDER_DETAIL_FETCH_TIMEOUT_MS);
59
-
60
- try {
61
- const response = await fetch(url, {
62
- cache: "no-store",
63
- signal: controller.signal,
64
- });
65
- let data = null;
66
- try {
67
- data = await response.json();
68
- } catch {
69
- data = null;
70
- }
71
- return { response, data };
72
- } finally {
73
- window.clearTimeout(timeout);
74
- }
75
- }
76
-
77
- export default function ProviderDetailPage() {
78
- const params = useParams();
79
- const router = useRouter();
80
- const providerId = params.id;
81
- const [connections, setConnections] = useState([]);
82
- const [loading, setLoading] = useState(true);
83
- const [providerNode, setProviderNode] = useState(null);
84
- const [proxyPools, setProxyPools] = useState([]);
85
- const [showOAuthModal, setShowOAuthModal] = useState(false);
86
- const [showIFlowCookieModal, setShowIFlowCookieModal] = useState(false);
87
- const [showCodeBuddyQuotaCookieModal, setShowCodeBuddyQuotaCookieModal] = useState(false);
88
- const [showAddApiKeyModal, setShowAddApiKeyModal] = useState(false);
89
- const [addConnectionError, setAddConnectionError] = useState("");
90
- const [showEditModal, setShowEditModal] = useState(false);
91
- const [showEditNodeModal, setShowEditNodeModal] = useState(false);
92
- const [showBulkProxyModal, setShowBulkProxyModal] = useState(false);
93
- const [selectedConnection, setSelectedConnection] = useState(null);
94
- const [modelAliases, setModelAliases] = useState({});
95
- const [headerImgError, setHeaderImgError] = useState(false);
96
- const [modelTestResults, setModelTestResults] = useState({});
97
- const [modelsTestError, setModelsTestError] = useState("");
98
- const [testingModelId, setTestingModelId] = useState(null);
99
- const [showAddCustomModel, setShowAddCustomModel] = useState(false);
100
- const [selectedConnectionIds, setSelectedConnectionIds] = useState([]);
101
- const [bulkProxyPoolId, setBulkProxyPoolId] = useState("__none__");
102
- const [bulkUpdatingProxy, setBulkUpdatingProxy] = useState(false);
103
- const [providerStrategy, setProviderStrategy] = useState(null);
104
- const [providerStickyLimit, setProviderStickyLimit] = useState("");
105
- const [thinkingMode, setThinkingMode] = useState("auto");
106
- const [suggestedModels, setSuggestedModels] = useState([]);
107
- const [kiloFreeModels, setKiloFreeModels] = useState([]);
108
- const [disabledModelIds, setDisabledModelIds] = useState([]);
109
- const [confirmState, setConfirmState] = useState(null);
110
- const [showAgRiskModal, setShowAgRiskModal] = useState(false);
111
- const [oneByOneRunning, setOneByOneRunning] = useState(false);
112
- const [oneByOneStopping, setOneByOneStopping] = useState(false);
113
- const [oneByOneCurrentConnectionId, setOneByOneCurrentConnectionId] = useState(null);
114
- const [oneByOneResults, setOneByOneResults] = useState({});
115
- const [oneByOneSummary, setOneByOneSummary] = useState(null);
116
- const stopOneByOneRef = useRef(false);
117
- const [importingQoderModels, setImportingQoderModels] = useState(false);
118
- const [kiroBulkJob, setKiroBulkJob] = useState(null);
119
- const [kiroBulkNotice, setKiroBulkNotice] = useState("");
120
- const [connectionsPage, setConnectionsPage] = useState(1);
121
- const [connectionsPageSize, setConnectionsPageSize] = useState(CONNECTIONS_DEFAULT_PAGE_SIZE);
122
- const [connectionStatusFilter, setConnectionStatusFilter] = useState("all");
123
- const [connectionQuery, setConnectionQuery] = useState("");
124
- const [modelsPage, setModelsPage] = useState(1);
125
- const [modelsPageSize, setModelsPageSize] = useState(MODELS_DEFAULT_PAGE_SIZE);
126
- const { copied, copy } = useCopyToClipboard();
127
- const kiroBulkSuccessRef = useRef(0);
128
-
129
- const AG_RISK_STORAGE_KEY = "ag_risk_confirmed";
130
-
131
- const clearKiroBulkProgress = useCallback(() => {
132
- setKiroBulkJob(null);
133
- setKiroBulkNotice("");
134
- kiroBulkSuccessRef.current = 0;
135
-
136
- if (typeof window !== "undefined") {
137
- window.localStorage.removeItem(KIRO_BULK_JOB_STORAGE_KEY);
138
- }
139
- }, []);
140
-
141
- const openOAuthConnection = () => {
142
- setShowOAuthModal(true);
143
- };
144
-
145
- const openProviderAutomation = () => {
146
- if (providerId === "kiro" && kiroBulkJob?.jobId && isBulkJobTerminal(kiroBulkJob.status)) {
147
- clearKiroBulkProgress();
148
- }
149
- router.push(automationHref(providerId));
150
- };
151
-
152
- const triggerOAuthConnection = () => {
153
- // Bulk / device-flow automation hubs (Kiro, AG, Grok CLI, CodeBuddy, …)
154
- if (isAutomationProvider(providerId)) {
155
- if (providerId === "antigravity" && typeof window !== "undefined") {
156
- const confirmed = window.localStorage.getItem(AG_RISK_STORAGE_KEY) === "true";
157
- if (!confirmed) {
158
- setShowAgRiskModal(true);
159
- return;
160
- }
161
- }
162
- openProviderAutomation();
163
- return;
164
- }
165
- if (providerId === "antigravity" && typeof window !== "undefined") {
166
- const confirmed = window.localStorage.getItem(AG_RISK_STORAGE_KEY) === "true";
167
- if (!confirmed) {
168
- setShowAgRiskModal(true);
169
- return;
170
- }
171
- }
172
- if (isOAuth) {
173
- openOAuthConnection();
174
- return;
175
- }
176
- setAddConnectionError("");
177
- setShowAddApiKeyModal(true);
178
- };
179
-
180
- const triggerApiKeyConnection = () => {
181
- setAddConnectionError("");
182
- setShowAddApiKeyModal(true);
183
- };
184
-
185
- const triggerAddConnection = () => {
186
- if (isOAuth) {
187
- triggerOAuthConnection();
188
- return;
189
- }
190
- triggerApiKeyConnection();
191
- };
192
-
193
- const handleAgRiskConfirm = () => {
194
- if (typeof window !== "undefined") {
195
- window.localStorage.setItem(AG_RISK_STORAGE_KEY, "true");
196
- }
197
- setShowAgRiskModal(false);
198
- // AG primary add path is bulk automation hub (same as other bulk providers).
199
- if (isAutomationProvider("antigravity")) {
200
- router.push(automationHref("antigravity"));
201
- return;
202
- }
203
- if (isOAuth) {
204
- openOAuthConnection();
205
- return;
206
- }
207
- triggerApiKeyConnection();
208
- };
209
-
210
- const providerInfo = providerNode
211
- ? {
212
- id: providerNode.id,
213
- name: providerNode.name || (providerNode.type === "anthropic-compatible" ? "Anthropic Compatible" : "OpenAI Compatible"),
214
- color: providerNode.type === "anthropic-compatible" ? "#D97757" : "#10A37F",
215
- textIcon: providerNode.type === "anthropic-compatible" ? "AC" : "OC",
216
- apiType: providerNode.apiType,
217
- baseUrl: providerNode.baseUrl,
218
- type: providerNode.type,
219
- }
220
- : (OAUTH_PROVIDERS[providerId] || APIKEY_PROVIDERS[providerId] || FREE_PROVIDERS[providerId] || FREE_TIER_PROVIDERS[providerId] || WEB_COOKIE_PROVIDERS[providerId]);
221
- const authModes = providerInfo?.authModes || [];
222
- const isOAuth = !!OAUTH_PROVIDERS[providerId] || !!FREE_PROVIDERS[providerId] || authModes.includes("oauth");
223
- const supportsApiKeyAuth = !!APIKEY_PROVIDERS[providerId] || authModes.includes("apikey");
224
- const isFreeNoAuth = !!FREE_PROVIDERS[providerId]?.noAuth;
225
- const models = getModelsByProviderId(providerId);
226
- const providerAlias = getProviderAlias(providerId);
227
-
228
- const isOpenAICompatible = isOpenAICompatibleProvider(providerId);
229
- const isAnthropicCompatible = isAnthropicCompatibleProvider(providerId);
230
- const isCompatible = isOpenAICompatible || isAnthropicCompatible;
231
- const hasDualAuthModes = !isCompatible && isOAuth && supportsApiKeyAuth;
232
- // Match /dashboard/automation panels: kiro, codebuddy, codebuddy-cn, qoder, antigravity, autoclaw, grok-cli
233
- const usesAutomationLogin = isAutomationProvider(providerId);
234
- const oauthConnectionLabel = providerId === "xai" ? "Grok Build OAuth" : "OAuth";
235
- const apiKeyConnectionLabel = providerId === "xai" ? "xAI API Key" : "API Key";
236
- const thinkingConfig = AI_PROVIDERS[providerId]?.thinkingConfig || THINKING_CONFIG.extended;
237
-
238
- const providerStorageAlias = isCompatible ? providerId : providerAlias;
239
- const providerDisplayAlias = isCompatible
240
- ? (providerNode?.prefix || providerId)
241
- : providerAlias;
242
-
243
- const fetchDisabledModels = useCallback(async () => {
244
- try {
245
- const res = await fetch(`/api/models/disabled?providerAlias=${encodeURIComponent(providerStorageAlias)}`, { cache: "no-store" });
246
- const data = await res.json();
247
- if (res.ok) setDisabledModelIds(data.ids || []);
248
- } catch (error) {
249
- console.log("Error fetching disabled models:", error);
250
- }
251
- }, [providerStorageAlias]);
252
-
253
- const handleDisableModel = async (modelId) => {
254
- try {
255
- const res = await fetch("/api/models/disabled", {
256
- method: "POST",
257
- headers: { "Content-Type": "application/json" },
258
- body: JSON.stringify({ providerAlias: providerStorageAlias, ids: [modelId] }),
259
- });
260
- if (res.ok) await fetchDisabledModels();
261
- } catch (error) {
262
- console.log("Error disabling model:", error);
263
- }
264
- };
265
-
266
- const handleEnableModel = async (modelId) => {
267
- try {
268
- const res = await fetch(`/api/models/disabled?providerAlias=${encodeURIComponent(providerStorageAlias)}&id=${encodeURIComponent(modelId)}`, { method: "DELETE" });
269
- if (res.ok) await fetchDisabledModels();
270
- } catch (error) {
271
- console.log("Error enabling model:", error);
272
- }
273
- };
274
-
275
- const handleDisableAll = async (ids) => {
276
- if (!ids.length) return;
277
- setConfirmState({
278
- title: "Disable All Models",
279
- message: `Disable all ${ids.length} model(s)?`,
280
- onConfirm: async () => {
281
- setConfirmState(null);
282
- try {
283
- const res = await fetch("/api/models/disabled", {
284
- method: "POST",
285
- headers: { "Content-Type": "application/json" },
286
- body: JSON.stringify({ providerAlias: providerStorageAlias, ids }),
287
- });
288
- if (res.ok) await fetchDisabledModels();
289
- } catch (error) {
290
- console.log("Error disabling all models:", error);
291
- }
292
- }
293
- });
294
- };
295
-
296
- const handleEnableAll = async () => {
297
- try {
298
- const res = await fetch(`/api/models/disabled?providerAlias=${encodeURIComponent(providerStorageAlias)}`, { method: "DELETE" });
299
- if (res.ok) await fetchDisabledModels();
300
- } catch (error) {
301
- console.log("Error enabling all models:", error);
302
- }
303
- };
304
-
305
- // Define callbacks BEFORE the useEffect that uses them
306
- const fetchAliases = useCallback(async () => {
307
- try {
308
- const res = await fetch("/api/models/alias");
309
- const data = await res.json();
310
- if (res.ok) {
311
- setModelAliases(data.aliases || {});
312
- }
313
- } catch (error) {
314
- console.log("Error fetching aliases:", error);
315
- }
316
- }, []);
317
-
318
- // Fetch free models from Kilo API for kilocode provider
319
- useEffect(() => {
320
- if (providerId !== "kilocode") return;
321
- fetch("/api/providers/kilo/free-models")
322
- .then((res) => res.json())
323
- .then((data) => { if (data.models?.length) setKiloFreeModels(data.models); })
324
- .catch(() => {});
325
- }, [providerId]);
326
-
327
- const fetchConnections = useCallback(async () => {
328
- try {
329
- const [connectionsResult, nodesResult, proxyPoolsResult, settingsResult] = await Promise.allSettled([
330
- fetchJsonWithTimeout("/api/providers"),
331
- fetchJsonWithTimeout("/api/provider-nodes"),
332
- fetchJsonWithTimeout("/api/proxy-pools?isActive=true"),
333
- fetchJsonWithTimeout("/api/settings"),
334
- ]);
335
-
336
- const connectionsRes = connectionsResult.status === "fulfilled" ? connectionsResult.value.response : null;
337
- const connectionsData = connectionsResult.status === "fulfilled" ? connectionsResult.value.data : {};
338
- const nodesRes = nodesResult.status === "fulfilled" ? nodesResult.value.response : null;
339
- const nodesData = nodesResult.status === "fulfilled" ? nodesResult.value.data : {};
340
- const proxyPoolsRes = proxyPoolsResult.status === "fulfilled" ? proxyPoolsResult.value.response : null;
341
- const proxyPoolsData = proxyPoolsResult.status === "fulfilled" ? proxyPoolsResult.value.data : {};
342
- const settingsRes = settingsResult.status === "fulfilled" ? settingsResult.value.response : null;
343
- const settingsData = settingsRes?.ok ? (settingsResult.value.data || {}) : {};
344
-
345
- if (connectionsRes?.ok) {
346
- const filtered = (connectionsData.connections || []).filter(c => c.provider === providerId);
347
- setConnections(filtered);
348
- }
349
- if (proxyPoolsRes?.ok) {
350
- setProxyPools(proxyPoolsData.proxyPools || []);
351
- }
352
- // Load per-provider strategy override
353
- const override = (settingsData.providerStrategies || {})[providerId] || {};
354
- setProviderStrategy(override.fallbackStrategy || null);
355
- setProviderStickyLimit(override.stickyRoundRobinLimit != null ? String(override.stickyRoundRobinLimit) : "1");
356
- // Load per-provider thinking config
357
- const thinkingCfg = (settingsData.providerThinking || {})[providerId] || {};
358
- setThinkingMode(thinkingCfg.mode || "auto");
359
- if (nodesRes?.ok) {
360
- let node = (nodesData.nodes || []).find((entry) => entry.id === providerId) || null;
361
-
362
- // Newly created compatible nodes can be briefly unavailable on one worker.
363
- // Retry a few times before showing "Provider not found".
364
- if (!node && isCompatible) {
365
- for (let attempt = 0; attempt < 3; attempt += 1) {
366
- await new Promise((resolve) => setTimeout(resolve, 150));
367
- const { response: retryRes, data: retryData } = await fetchJsonWithTimeout("/api/provider-nodes");
368
- if (!retryRes.ok) continue;
369
- node = (retryData.nodes || []).find((entry) => entry.id === providerId) || null;
370
- if (node) break;
371
- }
372
- }
373
-
374
- setProviderNode(node);
375
- }
376
- } catch (error) {
377
- console.log("Error fetching connections:", error);
378
- } finally {
379
- setLoading(false);
380
- }
381
- }, [providerId, isCompatible]);
382
-
383
- const handleUpdateNode = async (formData) => {
384
- try {
385
- const res = await fetch(`/api/provider-nodes/${providerId}`, {
386
- method: "PUT",
387
- headers: { "Content-Type": "application/json" },
388
- body: JSON.stringify(formData),
389
- });
390
- const data = await res.json();
391
- if (res.ok) {
392
- setProviderNode(data.node);
393
- await fetchConnections();
394
- setShowEditNodeModal(false);
395
- }
396
- } catch (error) {
397
- console.log("Error updating provider node:", error);
398
- }
399
- };
400
-
401
- const saveProviderStrategy = async (strategy, stickyLimit) => {
402
- try {
403
- const settingsRes = await fetch("/api/settings", { cache: "no-store" });
404
- const settingsData = settingsRes.ok ? await settingsRes.json() : {};
405
- const current = settingsData.providerStrategies || {};
406
-
407
- // Build override: null strategy means remove override, use global
408
- const override = {};
409
- if (strategy) override.fallbackStrategy = strategy;
410
- if (strategy === "round-robin" && stickyLimit !== "") {
411
- override.stickyRoundRobinLimit = Number(stickyLimit) || 3;
412
- }
413
-
414
- const updated = { ...current };
415
- if (Object.keys(override).length === 0) {
416
- delete updated[providerId];
417
- } else {
418
- updated[providerId] = override;
419
- }
420
-
421
- await fetch("/api/settings", {
422
- method: "PATCH",
423
- headers: { "Content-Type": "application/json" },
424
- body: JSON.stringify({ providerStrategies: updated }),
425
- });
426
- } catch (error) {
427
- console.log("Error saving provider strategy:", error);
428
- }
429
- };
430
-
431
- const handleRoundRobinToggle = (enabled) => {
432
- const strategy = enabled ? "round-robin" : null;
433
- const sticky = enabled ? (providerStickyLimit || "1") : providerStickyLimit;
434
- if (enabled && !providerStickyLimit) setProviderStickyLimit("1");
435
- setProviderStrategy(strategy);
436
- saveProviderStrategy(strategy, sticky);
437
- };
438
-
439
- const handleStickyLimitChange = (value) => {
440
- setProviderStickyLimit(value);
441
- saveProviderStrategy("round-robin", value);
442
- };
443
-
444
- const saveThinkingConfig = async (mode) => {
445
- try {
446
- const settingsRes = await fetch("/api/settings", { cache: "no-store" });
447
- const settingsData = settingsRes.ok ? await settingsRes.json() : {};
448
- const current = settingsData.providerThinking || {};
449
- const updated = { ...current };
450
- if (!mode || mode === "auto") {
451
- delete updated[providerId];
452
- } else {
453
- updated[providerId] = { mode };
454
- }
455
- await fetch("/api/settings", {
456
- method: "PATCH",
457
- headers: { "Content-Type": "application/json" },
458
- body: JSON.stringify({ providerThinking: updated }),
459
- });
460
- } catch (error) {
461
- console.log("Error saving thinking config:", error);
462
- }
463
- };
464
-
465
- const handleThinkingModeChange = (mode) => {
466
- setThinkingMode(mode);
467
- saveThinkingConfig(mode);
468
- };
469
-
470
- useEffect(() => {
471
- // eslint-disable-next-line react-hooks/set-state-in-effect -- mount data fetch; these set state only after await, which the rule flags conservatively
472
- fetchConnections();
473
- fetchAliases();
474
- fetchDisabledModels();
475
- }, [fetchConnections, fetchAliases, fetchDisabledModels]);
476
-
477
- useEffect(() => {
478
- // eslint-disable-next-line react-hooks/set-state-in-effect -- reset-on-prop-change: clears paging/filters when switching provider pages
479
- setConnectionsPage(1);
480
- setModelsPage(1);
481
- setConnectionStatusFilter("all");
482
- setConnectionQuery("");
483
- }, [providerId]);
484
-
485
- useEffect(() => {
486
- // eslint-disable-next-line react-hooks/set-state-in-effect -- pagination reset: returns to page 1 when filters/page size change
487
- setConnectionsPage(1);
488
- }, [connectionStatusFilter, connectionsPageSize, connectionQuery]);
489
-
490
- useEffect(() => {
491
- // eslint-disable-next-line react-hooks/set-state-in-effect -- pagination reset: returns to page 1 when the model lists change
492
- setModelsPage(1);
493
- }, [modelsPageSize, disabledModelIds.length, models.length, kiloFreeModels.length]);
494
-
495
- useEffect(() => {
496
- if (providerId !== "kiro" || typeof window === "undefined") return;
497
- const storedJobId = window.localStorage.getItem(KIRO_BULK_JOB_STORAGE_KEY);
498
-
499
- let cancelled = false;
500
-
501
- const restoreJob = async () => {
502
- try {
503
- setKiroBulkNotice("");
504
-
505
- if (kiroBulkJob?.jobId) return;
506
-
507
- const latest = await fetchLatestBulkJob();
508
- if (!cancelled && latest.res.ok && latest.data?.job) {
509
- setKiroBulkJob(latest.data.job);
510
- kiroBulkSuccessRef.current = latest.data.job.summary?.success || 0;
511
- window.localStorage.setItem(KIRO_BULK_JOB_STORAGE_KEY, latest.data.job.jobId);
512
- return;
513
- }
514
-
515
- if (storedJobId) {
516
- const direct = await fetchBulkJobById(storedJobId);
517
- if (!cancelled && direct?.res.ok && direct.data?.job && isBulkJobActive(direct.data.job.status)) {
518
- setKiroBulkJob(direct.data.job);
519
- kiroBulkSuccessRef.current = direct.data.job.summary?.success || 0;
520
- return;
521
- }
522
-
523
- clearKiroBulkProgress();
524
- setKiroBulkNotice(KIRO_BULK_JOB_EXPIRED_MESSAGE);
525
- }
526
- } catch {
527
- if (!cancelled) {
528
- setKiroBulkNotice(KIRO_BULK_JOB_EXPIRED_MESSAGE);
529
- }
530
- }
531
- };
532
-
533
- void restoreJob();
534
-
535
- return () => {
536
- cancelled = true;
537
- };
538
- }, [clearKiroBulkProgress, kiroBulkJob?.jobId, providerId]);
539
-
540
- useEffect(() => {
541
- if (providerId !== "kiro" || !kiroBulkJob?.jobId || isBulkJobTerminal(kiroBulkJob.status)) return undefined;
542
-
543
- return startAsyncPolling(async (isCancelled) => {
544
- const current = await fetchBulkJobById(kiroBulkJob.jobId);
545
- if (isCancelled()) return;
546
- if (current?.res.ok && current.data?.job) {
547
- const nextSuccessCount = current.data.job.summary?.success || 0;
548
- if (nextSuccessCount > kiroBulkSuccessRef.current) {
549
- kiroBulkSuccessRef.current = nextSuccessCount;
550
- await fetchConnections();
551
- if (isCancelled()) return;
552
- }
553
-
554
- setKiroBulkNotice("");
555
- setKiroBulkJob(current.data.job);
556
- return;
557
- }
558
-
559
- if (current?.res.status === 404) {
560
- const latest = await fetchLatestBulkJob();
561
- if (isCancelled()) return;
562
- if (latest.res.ok && latest.data?.job) {
563
- const nextSuccessCount = latest.data.job.summary?.success || 0;
564
- if (nextSuccessCount > kiroBulkSuccessRef.current) {
565
- kiroBulkSuccessRef.current = nextSuccessCount;
566
- await fetchConnections();
567
- if (isCancelled()) return;
568
- }
569
-
570
- setKiroBulkNotice("");
571
- setKiroBulkJob(latest.data.job);
572
- if (typeof window !== "undefined") {
573
- window.localStorage.setItem(KIRO_BULK_JOB_STORAGE_KEY, latest.data.job.jobId);
574
- }
575
- return;
576
- }
577
-
578
- clearKiroBulkProgress();
579
- setKiroBulkNotice(KIRO_BULK_JOB_EXPIRED_MESSAGE);
580
- }
581
- }, 2000);
582
- }, [clearKiroBulkProgress, fetchConnections, kiroBulkJob?.jobId, kiroBulkJob?.status, providerId]);
583
-
584
- // Fetch suggested models from provider's public API (if configured)
585
- useEffect(() => {
586
- const fetcher = (OAUTH_PROVIDERS[providerId] || APIKEY_PROVIDERS[providerId] || FREE_PROVIDERS[providerId] || FREE_TIER_PROVIDERS[providerId])?.modelsFetcher;
587
- if (!fetcher) return;
588
- fetchSuggestedModels(fetcher).then(setSuggestedModels);
589
- }, [providerId]);
590
-
591
- const handleSetAlias = async (modelId, alias, providerAliasOverride = providerAlias) => {
592
- const fullModel = `${providerAliasOverride}/${modelId}`;
593
- try {
594
- const res = await fetch("/api/models/alias", {
595
- method: "PUT",
596
- headers: { "Content-Type": "application/json" },
597
- body: JSON.stringify({ model: fullModel, alias }),
598
- });
599
- if (res.ok) {
600
- await fetchAliases();
601
- } else {
602
- const data = await res.json();
603
- alert(data.error || "Failed to set alias");
604
- }
605
- } catch (error) {
606
- console.log("Error setting alias:", error);
607
- }
608
- };
609
-
610
- const handleDeleteAlias = async (alias) => {
611
- try {
612
- const res = await fetch(`/api/models/alias?alias=${encodeURIComponent(alias)}`, {
613
- method: "DELETE",
614
- });
615
- if (res.ok) {
616
- await fetchAliases();
617
- }
618
- } catch (error) {
619
- console.log("Error deleting alias:", error);
620
- }
621
- };
622
-
623
- // Fetch Qoder model list and automatically add to available models
624
- const handleImportQoderModels = async () => {
625
- if (importingQoderModels) return;
626
- const activeConnection = connections.find((conn) => conn.isActive !== false);
627
- if (!activeConnection) {
628
- alert(translate("Please add an active Qoder connection first"));
629
- return;
630
- }
631
-
632
- setImportingQoderModels(true);
633
- try {
634
- const res = await fetch(`/api/providers/${activeConnection.id}/models`);
635
- const data = await res.json();
636
- if (!res.ok) {
637
- alert(data.error || translate("Failed to fetch models"));
638
- return;
639
- }
640
- const models = data.models || [];
641
- if (models.length === 0) {
642
- alert(translate("No models returned"));
643
- return;
644
- }
645
-
646
- let importedCount = 0;
647
- for (const model of models) {
648
- const modelId = model.id || model.name;
649
- if (!modelId) continue;
650
-
651
- // Qoder model ID format may be "qoder/auto" or "auto", need to remove prefix
652
- const cleanModelId = modelId.replace(/^qoder\//, "");
653
- const fullModel = `${providerStorageAlias}/${cleanModelId}`;
654
-
655
- // Check if already exists
656
- if (Object.values(modelAliases).includes(fullModel)) {
657
- continue;
658
- }
659
-
660
- // Use model ID as alias
661
- const alias = cleanModelId;
662
- if (modelAliases[alias]) {
663
- continue;
664
- }
665
-
666
- await handleSetAlias(cleanModelId, alias, providerStorageAlias);
667
- importedCount += 1;
668
- }
669
-
670
- if (importedCount === 0) {
671
- alert(translate("All models already exist, no new models added"));
672
- } else {
673
- alert(translate("Successfully added") + ` ${importedCount} ` + translate("models"));
674
- }
675
- } catch (error) {
676
- console.log("Error importing Qoder models:", error);
677
- alert(translate("Error fetching models") + ": " + error.message);
678
- } finally {
679
- setImportingQoderModels(false);
680
- }
681
- };
682
-
683
- const handleRunOneByOneTest = async () => {
684
- if (oneByOneRunning || connections.length === 0) return;
685
-
686
- const queuedState = Object.fromEntries(
687
- connections.map((connection) => [connection.id, { state: "queued", error: null }]),
688
- );
689
-
690
- stopOneByOneRef.current = false;
691
- setOneByOneRunning(true);
692
- setOneByOneStopping(false);
693
- setOneByOneCurrentConnectionId(null);
694
- setOneByOneResults(queuedState);
695
- setOneByOneSummary({ total: connections.length, completed: 0, passed: 0, failed: 0, stopped: false });
696
-
697
- let passed = 0;
698
- let failed = 0;
699
-
700
- try {
701
- for (let index = 0; index < connections.length; index += 1) {
702
- if (stopOneByOneRef.current) {
703
- setOneByOneSummary({
704
- total: connections.length,
705
- completed: index,
706
- passed,
707
- failed,
708
- stopped: true,
709
- });
710
- break;
711
- }
712
-
713
- const connection = connections[index];
714
- setOneByOneCurrentConnectionId(connection.id);
715
- setOneByOneResults((prev) => ({
716
- ...prev,
717
- [connection.id]: { state: "testing", error: null },
718
- }));
719
-
720
- try {
721
- const res = await fetch(`/api/providers/${connection.id}/test`, { method: "POST" });
722
- const data = await res.json();
723
- const valid = !!data.valid;
724
-
725
- if (valid) {
726
- passed += 1;
727
- } else {
728
- failed += 1;
729
- }
730
-
731
- setOneByOneResults((prev) => ({
732
- ...prev,
733
- [connection.id]: {
734
- state: valid ? "success" : "failed",
735
- error: valid ? null : (data.error || null),
736
- },
737
- }));
738
- } catch (error) {
739
- failed += 1;
740
- setOneByOneResults((prev) => ({
741
- ...prev,
742
- [connection.id]: {
743
- state: "failed",
744
- error: error.message || "Test failed",
745
- },
746
- }));
747
- }
748
-
749
- setOneByOneSummary({
750
- total: connections.length,
751
- completed: index + 1,
752
- passed,
753
- failed,
754
- stopped: false,
755
- });
756
-
757
- if (index < connections.length - 1) {
758
- await sleep(ONE_BY_ONE_DELAY_MS);
759
- }
760
- }
761
- } finally {
762
- setOneByOneCurrentConnectionId(null);
763
- setOneByOneRunning(false);
764
- setOneByOneStopping(false);
765
- stopOneByOneRef.current = false;
766
- }
767
- };
768
-
769
- const handleStopOneByOneTest = () => {
770
- if (!oneByOneRunning) return;
771
- stopOneByOneRef.current = true;
772
- setOneByOneStopping(true);
773
- };
774
-
775
- const handleDelete = async (id) => {
776
- setConfirmState({
777
- title: "Delete Connection",
778
- message: "Delete this connection?",
779
- onConfirm: async () => {
780
- setConfirmState(null);
781
- try {
782
- const res = await fetch(`/api/providers/${id}`, { method: "DELETE" });
783
- if (res.ok) {
784
- setConnections(connections.filter(c => c.id !== id));
785
- }
786
- } catch (error) {
787
- console.log("Error deleting connection:", error);
788
- }
789
- }
790
- });
791
- };
792
-
793
- const handleOAuthSuccess = () => {
794
- fetchConnections();
795
- setShowOAuthModal(false);
796
- };
797
-
798
- const handleKiroBulkJobChange = useCallback((job) => {
799
- setKiroBulkJob(job);
800
- setKiroBulkNotice("");
801
-
802
- if (typeof window === "undefined") return;
803
-
804
- if (!job?.jobId) {
805
- clearKiroBulkProgress();
806
- return;
807
- }
808
-
809
- window.localStorage.setItem(KIRO_BULK_JOB_STORAGE_KEY, job.jobId);
810
- kiroBulkSuccessRef.current = Math.max(
811
- kiroBulkSuccessRef.current,
812
- job.summary?.success || 0,
813
- );
814
- }, [clearKiroBulkProgress]);
815
-
816
- const handleIFlowCookieSuccess = () => {
817
- fetchConnections();
818
- setShowIFlowCookieModal(false);
819
- };
820
-
821
- const handleCodeBuddyQuotaCookieSuccess = () => {
822
- fetchConnections();
823
- setShowCodeBuddyQuotaCookieModal(false);
824
- };
825
-
826
- const handleSaveApiKey = async (formData) => {
827
- setAddConnectionError("");
828
- try {
829
- const res = await fetch("/api/providers", {
830
- method: "POST",
831
- headers: { "Content-Type": "application/json" },
832
- body: JSON.stringify({ provider: providerId, ...formData }),
833
- });
834
-
835
- let data = null;
836
- try {
837
- data = await res.json();
838
- } catch {
839
- data = null;
840
- }
841
-
842
- if (res.ok) {
843
- await fetchConnections();
844
- setShowAddApiKeyModal(false);
845
- return;
846
- }
847
-
848
- setAddConnectionError(data?.error || "Failed to save connection");
849
- } catch (error) {
850
- console.log("Error saving connection:", error);
851
- setAddConnectionError("Failed to save connection");
852
- }
853
- };
854
-
855
- const handleUpdateConnection = async (formData) => {
856
- try {
857
- const res = await fetch(`/api/providers/${selectedConnection.id}`, {
858
- method: "PUT",
859
- headers: { "Content-Type": "application/json" },
860
- body: JSON.stringify(formData),
861
- });
862
- if (res.ok) {
863
- await fetchConnections();
864
- setShowEditModal(false);
865
- }
866
- } catch (error) {
867
- console.log("Error updating connection:", error);
868
- }
869
- };
870
-
871
- const handleUpdateConnectionStatus = async (id, isActive) => {
872
- try {
873
- const res = await fetch(`/api/providers/${id}`, {
874
- method: "PUT",
875
- headers: { "Content-Type": "application/json" },
876
- body: JSON.stringify({ isActive }),
877
- });
878
- if (res.ok) {
879
- setConnections(prev => prev.map(c => c.id === id ? { ...c, isActive } : c));
880
- }
881
- } catch (error) {
882
- console.log("Error updating connection status:", error);
883
- }
884
- };
885
-
886
- const handleSwapPriority = async (index1, index2) => {
887
- // Optimistic update state
888
- const newConnections = [...connections];
889
- [newConnections[index1], newConnections[index2]] = [newConnections[index2], newConnections[index1]];
890
- setConnections(newConnections);
891
-
892
- try {
893
- await Promise.all([
894
- fetch(`/api/providers/${newConnections[index1].id}`, {
895
- method: "PUT",
896
- headers: { "Content-Type": "application/json" },
897
- body: JSON.stringify({ priority: index1 + 1 }),
898
- }),
899
- fetch(`/api/providers/${newConnections[index2].id}`, {
900
- method: "PUT",
901
- headers: { "Content-Type": "application/json" },
902
- body: JSON.stringify({ priority: index2 + 1 }),
903
- }),
904
- ]);
905
- } catch (error) {
906
- console.log("Error swapping priority:", error);
907
- await fetchConnections();
908
- }
909
- };
910
-
911
- const filteredConnections = useMemo(() => {
912
- const q = connectionQuery.trim().toLowerCase();
913
- return connections.filter((conn) => {
914
- if (!filterConnectionByStatus(conn, connectionStatusFilter)) return false;
915
- if (!q) return true;
916
- const hay = [
917
- conn.name,
918
- conn.email,
919
- conn.id,
920
- conn.account,
921
- conn.username,
922
- conn.label,
923
- conn.authType,
924
- conn.notes,
925
- conn.proxyPoolId,
926
- ]
927
- .filter(Boolean)
928
- .join(" ")
929
- .toLowerCase();
930
- return hay.includes(q);
931
- });
932
- }, [connections, connectionStatusFilter, connectionQuery]);
933
-
934
- const connectionStatusCounts = useMemo(() => (
935
- CONNECTION_STATUS_FILTERS.reduce((acc, filter) => {
936
- acc[filter.id] = filter.id === "all"
937
- ? connections.length
938
- : connections.filter((conn) => filterConnectionByStatus(conn, filter.id)).length;
939
- return acc;
940
- }, {})
941
- ), [connections]);
942
- const effectiveSelectedConnectionIds = selectedConnectionIds.filter((id) => connections.some((conn) => conn.id === id));
943
- const selectedConnections = connections.filter((conn) => effectiveSelectedConnectionIds.includes(conn.id));
944
- const codeBuddyQuotaCookieConnectionIds = providerId === "codebuddy"
945
- ? (selectedConnections.length > 0 ? selectedConnections : connections).map((conn) => conn.id)
946
- : [];
947
- const allSelected = filteredConnections.length > 0 && filteredConnections.every((conn) => effectiveSelectedConnectionIds.includes(conn.id));
948
-
949
- const openCodeBuddyQuotaCookieModal = () => {
950
- if (connections.length > 1 && selectedConnections.length === 0) {
951
- alert("Select the CodeBuddy connection(s) that should use this quota cookie first.");
952
- return;
953
- }
954
- setShowCodeBuddyQuotaCookieModal(true);
955
- };
956
-
957
- const toggleSelectConnection = (connectionId) => {
958
- setSelectedConnectionIds((prev) => (
959
- prev.includes(connectionId)
960
- ? prev.filter((id) => id !== connectionId)
961
- : [...prev, connectionId]
962
- ));
963
- };
964
-
965
- const toggleSelectAllConnections = () => {
966
- if (allSelected) {
967
- setSelectedConnectionIds((prev) => prev.filter((id) => !filteredConnections.some((conn) => conn.id === id)));
968
- return;
969
- }
970
- setSelectedConnectionIds((prev) => Array.from(new Set([...prev, ...filteredConnections.map((conn) => conn.id)])));
971
- };
972
-
973
- const clearSelection = () => {
974
- setSelectedConnectionIds([]);
975
- setBulkProxyPoolId("__none__");
976
- };
977
-
978
- const selectedProxySummary = (() => {
979
- if (selectedConnections.length === 0) return "";
980
- const poolIds = new Set(selectedConnections.map((conn) => conn.providerSpecificData?.proxyPoolId || "__none__"));
981
- if (poolIds.size === 1) {
982
- const onlyId = [...poolIds][0];
983
- if (onlyId === "__none__") return "All selected currently unbound";
984
- const pool = proxyPools.find((p) => p.id === onlyId);
985
- return `All selected currently bound to ${pool?.name || onlyId}`;
986
- }
987
- return "Selected connections have mixed proxy bindings";
988
- })();
989
-
990
- const openBulkProxyModal = () => {
991
- if (selectedConnections.length === 0) return;
992
- const uniquePoolIds = [...new Set(selectedConnections.map((conn) => conn.providerSpecificData?.proxyPoolId || "__none__"))];
993
- setBulkProxyPoolId(uniquePoolIds.length === 1 ? uniquePoolIds[0] : "__none__");
994
- setShowBulkProxyModal(true);
995
- };
996
-
997
- const closeBulkProxyModal = () => {
998
- if (bulkUpdatingProxy) return;
999
- setShowBulkProxyModal(false);
1000
- };
1001
-
1002
- const applyProxyAssignments = async (assignments) => {
1003
- setBulkUpdatingProxy(true);
1004
- try {
1005
- let failed = 0;
1006
- for (const { connectionId, proxyPoolId } of assignments) {
1007
- try {
1008
- const res = await fetch(`/api/providers/${connectionId}`, {
1009
- method: "PUT",
1010
- headers: { "Content-Type": "application/json" },
1011
- body: JSON.stringify({ proxyPoolId }),
1012
- });
1013
- if (!res.ok) failed += 1;
1014
- } catch (e) {
1015
- console.log("Error applying proxy for", connectionId, e);
1016
- failed += 1;
1017
- }
1018
- }
1019
- if (failed > 0) alert(`Updated with ${failed} failed request(s).`);
1020
- await fetchConnections();
1021
- setShowBulkProxyModal(false);
1022
- } finally {
1023
- setBulkUpdatingProxy(false);
1024
- }
1025
- };
1026
-
1027
- const handleApplySinglePool = (proxyPoolId) => {
1028
- const targets = selectedConnections.map((c) => ({ connectionId: c.id, proxyPoolId }));
1029
- return applyProxyAssignments(targets);
1030
- };
1031
-
1032
- const handleApplyOneToOne = () => {
1033
- const activePools = proxyPools.filter((p) => p.isActive === true);
1034
- if (activePools.length === 0) {
1035
- alert("No active proxy pools available.");
1036
- return;
1037
- }
1038
- const targets = selectedConnections.map((c, i) => ({
1039
- connectionId: c.id,
1040
- proxyPoolId: activePools[i % activePools.length].id,
1041
- }));
1042
- return applyProxyAssignments(targets);
1043
- };
1044
-
1045
- const handleDeleteSelectedConnections = () => {
1046
- if (selectedConnections.length === 0) return;
1047
- setConfirmState({
1048
- title: "Delete Selected Connections",
1049
- message: `Delete ${selectedConnections.length} selected connection(s)? This permanently removes the selected accounts.`,
1050
- onConfirm: async () => {
1051
- setConfirmState(null);
1052
- for (const conn of selectedConnections) {
1053
- try {
1054
- await fetch(`/api/providers/${conn.id}`, { method: "DELETE" });
1055
- } catch (error) {
1056
- console.log("Error deleting selected connection:", error);
1057
- }
1058
- }
1059
- setSelectedConnectionIds((prev) => prev.filter((id) => !selectedConnections.some((conn) => conn.id === id)));
1060
- await fetchConnections();
1061
- },
1062
- });
1063
- };
1064
-
1065
- const handleBulkDeleteByEmail = (emailFilter) => {
1066
- const label = emailFilter === "gsuite" ? "GSuite (non-Gmail)" : "Gmail (@gmail.com)";
1067
- setConfirmState({
1068
- title: `Delete ${label}`,
1069
- message: `Delete ALL ${label} accounts for this provider? This cannot be undone.`,
1070
- onConfirm: async () => {
1071
- setConfirmState(null);
1072
- try {
1073
- const res = await fetch("/api/providers/bulk-delete", {
1074
- method: "POST",
1075
- headers: { "Content-Type": "application/json" },
1076
- body: JSON.stringify({ provider: providerInfo?.id || providerId, emailFilter }),
1077
- });
1078
- if (res.ok) {
1079
- setSelectedConnectionIds([]);
1080
- await fetchConnections();
1081
- }
1082
- } catch (e) { console.error("bulk delete error:", e); }
1083
- },
1084
- });
1085
- };
1086
-
1087
- const isSelected = (connectionId) => effectiveSelectedConnectionIds.includes(connectionId);
1088
-
1089
- const totalConnectionPages = Math.max(1, Math.ceil(filteredConnections.length / connectionsPageSize));
1090
- const activeConnectionsPage = Math.min(connectionsPage, totalConnectionPages);
1091
- const paginatedConnections = filteredConnections.slice(
1092
- (activeConnectionsPage - 1) * connectionsPageSize,
1093
- activeConnectionsPage * connectionsPageSize
1094
- );
1095
- const totalKiroPages = totalConnectionPages;
1096
- const activeKiroConnectionsPage = activeConnectionsPage;
1097
- const kiroConnectionsPage = activeConnectionsPage;
1098
- const KIRO_CONNECTIONS_PER_PAGE = connectionsPageSize;
1099
- const setKiroConnectionsPage = setConnectionsPage;
1100
-
1101
- const connectionsList = (
1102
- <div className="flex min-w-0 flex-col divide-y divide-black/[0.03] dark:divide-white/[0.03]">
1103
- {paginatedConnections
1104
- .map((conn, index) => {
1105
- const globalIndex = connections.findIndex((item) => item.id === conn.id);
1106
- return (
1107
- <div key={conn.id} className="flex min-w-0 items-stretch">
1108
- <label className="flex w-8 shrink-0 items-center justify-center">
1109
- <input
1110
- type="checkbox"
1111
- checked={isSelected(conn.id)}
1112
- onChange={() => toggleSelectConnection(conn.id)}
1113
- className="size-4 rounded border-black/20 dark:border-white/20"
1114
- aria-label={`Select ${conn.name || conn.email || conn.id}`}
1115
- />
1116
- </label>
1117
- <div className="flex-1 min-w-0">
1118
- <ConnectionRow
1119
- connection={conn}
1120
- proxyPools={proxyPools}
1121
- isOAuth={isOAuth}
1122
- isFirst={globalIndex === 0}
1123
- isLast={globalIndex === connections.length - 1}
1124
- onMoveUp={() => handleSwapPriority(globalIndex, globalIndex - 1)}
1125
- onMoveDown={() => handleSwapPriority(globalIndex, globalIndex + 1)}
1126
- onToggleActive={(isActive) => handleUpdateConnectionStatus(conn.id, isActive)}
1127
- onUpdateProxy={async (proxyPoolId) => {
1128
- try {
1129
- const res = await fetch(`/api/providers/${conn.id}`, {
1130
- method: "PUT",
1131
- headers: { "Content-Type": "application/json" },
1132
- body: JSON.stringify({ proxyPoolId: proxyPoolId || null }),
1133
- });
1134
- if (res.ok) {
1135
- setConnections(prev => prev.map(c =>
1136
- c.id === conn.id
1137
- ? { ...c, providerSpecificData: { ...c.providerSpecificData, proxyPoolId: proxyPoolId || null } }
1138
- : c
1139
- ));
1140
- }
1141
- } catch (error) {
1142
- console.log("Error updating proxy:", error);
1143
- }
1144
- }}
1145
- onEdit={() => {
1146
- setSelectedConnection(conn);
1147
- setShowEditModal(true);
1148
- }}
1149
- onDelete={() => handleDelete(conn.id)}
1150
- oneByOneStatus={oneByOneResults[conn.id] || null}
1151
- />
1152
- </div>
1153
- </div>
1154
- );
1155
- })}
1156
- </div>
1157
- );
1158
-
1159
- const activePools = proxyPools.filter((p) => p.isActive === true);
1160
-
1161
- const bulkActionModal = (
1162
- <Modal
1163
- isOpen={showBulkProxyModal}
1164
- onClose={closeBulkProxyModal}
1165
- title={`Apply Proxy (${selectedConnections.length} selected)`}
1166
- >
1167
- <div className="flex flex-col gap-3">
1168
- <div className="flex flex-col">
1169
- <button
1170
- onClick={handleApplyOneToOne}
1171
- disabled={bulkUpdatingProxy || activePools.length === 0}
1172
- className="flex items-center gap-2 rounded-lg px-3 py-2 text-left transition-colors hover:bg-black/[0.04] dark:hover:bg-white/[0.04] disabled:cursor-not-allowed disabled:opacity-50"
1173
- >
1174
- <span className="material-symbols-outlined text-text-muted text-[18px]">sync_alt</span>
1175
- <span className="text-sm text-text-main">One-to-one (rotate)</span>
1176
- </button>
1177
- <button
1178
- onClick={() => handleApplySinglePool(null)}
1179
- disabled={bulkUpdatingProxy}
1180
- className="flex items-center gap-2 rounded-lg px-3 py-2 text-left transition-colors hover:bg-black/[0.04] dark:hover:bg-white/[0.04] disabled:cursor-not-allowed disabled:opacity-50"
1181
- >
1182
- <span className="material-symbols-outlined text-text-muted text-[18px]">link_off</span>
1183
- <span className="text-sm text-text-main">None (unbind all)</span>
1184
- </button>
1185
- {proxyPools.map((pool) => (
1186
- <button
1187
- key={pool.id}
1188
- onClick={() => handleApplySinglePool(pool.id)}
1189
- disabled={bulkUpdatingProxy || pool.isActive !== true}
1190
- className="flex items-center gap-2 rounded-lg px-3 py-2 text-left transition-colors hover:bg-black/[0.04] dark:hover:bg-white/[0.04] disabled:cursor-not-allowed disabled:opacity-50"
1191
- >
1192
- <span className="material-symbols-outlined text-text-muted text-[18px]">lan</span>
1193
- <span className="truncate text-sm text-text-main">{pool.name}</span>
1194
- {pool.isActive !== true && (
1195
- <span className="text-[10px] text-text-muted">(inactive)</span>
1196
- )}
1197
- </button>
1198
- ))}
1199
- </div>
1200
-
1201
- {bulkUpdatingProxy && <p className="text-xs text-text-muted">Applying...</p>}
1202
-
1203
- <Button onClick={closeBulkProxyModal} variant="ghost" fullWidth disabled={bulkUpdatingProxy}>
1204
- Cancel
1205
- </Button>
1206
- </div>
1207
- </Modal>
1208
- );
1209
-
1210
- const handleTestModel = async (modelId) => {
1211
- if (testingModelId) return;
1212
- setTestingModelId(modelId);
1213
- try {
1214
- const res = await fetch("/api/models/test", {
1215
- method: "POST",
1216
- headers: { "Content-Type": "application/json" },
1217
- body: JSON.stringify({ model: `${providerStorageAlias}/${modelId}` }),
1218
- });
1219
- const data = await res.json();
1220
- setModelTestResults((prev) => ({ ...prev, [modelId]: data.ok ? "ok" : "error" }));
1221
- setModelsTestError(data.ok ? "" : (data.error || "Model not reachable"));
1222
- } catch {
1223
- setModelTestResults((prev) => ({ ...prev, [modelId]: "error" }));
1224
- setModelsTestError("Network error");
1225
- } finally {
1226
- setTestingModelId(null);
1227
- }
1228
- };
1229
-
1230
- const renderModelsSection = () => {
1231
- if (isCompatible) {
1232
- return (
1233
- <CompatibleModelsSection
1234
- providerStorageAlias={providerStorageAlias}
1235
- providerDisplayAlias={providerDisplayAlias}
1236
- modelAliases={modelAliases}
1237
- copied={copied}
1238
- onCopy={copy}
1239
- onSetAlias={handleSetAlias}
1240
- onDeleteAlias={handleDeleteAlias}
1241
- connections={connections}
1242
- isAnthropic={isAnthropicCompatible}
1243
- />
1244
- );
1245
- }
1246
- // Combine hardcoded models with Kilo free models (deduplicated)
1247
- // Exclude non-llm models (embedding, tts, etc.) — they have dedicated pages under media-providers
1248
- const allModels = [
1249
- ...models,
1250
- ...kiloFreeModels.filter((fm) => !models.some((m) => m.id === fm.id)),
1251
- ].filter((m) => !m.type || m.type === "llm");
1252
- const disabledSet = new Set(disabledModelIds);
1253
- const displayModels = allModels.filter((m) => !disabledSet.has(m.id));
1254
- const disabledDisplayModels = allModels.filter((m) => disabledSet.has(m.id));
1255
- // Custom models added by user (stored as aliases: modelId → providerAlias/modelId)
1256
- const customModels = Object.entries(modelAliases)
1257
- .filter(([alias, fullModel]) => {
1258
- const prefix = `${providerStorageAlias}/`;
1259
- if (!fullModel.startsWith(prefix)) return false;
1260
- const modelId = fullModel.slice(prefix.length);
1261
- // Only show if not already in hardcoded list
1262
- // For passthroughModels, include all aliases (model IDs may contain slashes like "anthropic/claude-3")
1263
- if (providerInfo.passthroughModels) return !models.some((m) => m.id === modelId);
1264
- return !models.some((m) => m.id === modelId) && alias === modelId;
1265
- })
1266
- .map(([alias, fullModel]) => ({
1267
- id: fullModel.slice(`${providerStorageAlias}/`.length),
1268
- alias,
1269
- fullModel,
1270
- }));
1271
- const totalModelPages = Math.max(1, Math.ceil(displayModels.length / modelsPageSize));
1272
- const activeModelsPage = Math.min(modelsPage, totalModelPages);
1273
- const paginatedDisplayModels = displayModels.slice(
1274
- (activeModelsPage - 1) * modelsPageSize,
1275
- activeModelsPage * modelsPageSize
1276
- );
1277
-
1278
- return (
1279
- <div className="flex flex-wrap gap-3">
1280
- {/* Custom models first */}
1281
- {customModels.map((model) => (
1282
- <ModelRow
1283
- key={model.id}
1284
- model={{ id: model.id }}
1285
- fullModel={`${providerDisplayAlias}/${model.id}`}
1286
- alias={model.alias}
1287
- copied={copied}
1288
- onCopy={copy}
1289
- onSetAlias={() => {}}
1290
- onDeleteAlias={() => handleDeleteAlias(model.alias)}
1291
- testStatus={modelTestResults[model.id]}
1292
- onTest={connections.length > 0 || isFreeNoAuth ? () => handleTestModel(model.id) : undefined}
1293
- isTesting={testingModelId === model.id}
1294
- isCustom
1295
- isFree={false}
1296
- thinkingSuffix={thinkingMode && thinkingMode !== "auto" && thinkingMode !== "off" && thinkingMode !== "none" ? thinkingMode : null}
1297
- />
1298
- ))}
1299
-
1300
- {paginatedDisplayModels.map((model) => {
1301
- const fullModel = `${providerStorageAlias}/${model.id}`;
1302
- const oldFormatModel = `${providerId}/${model.id}`;
1303
- const existingAlias = Object.entries(modelAliases).find(
1304
- ([, m]) => m === fullModel || m === oldFormatModel
1305
- )?.[0];
1306
- return (
1307
- <ModelRow
1308
- key={model.id}
1309
- model={model}
1310
- fullModel={`${providerDisplayAlias}/${model.id}`}
1311
- alias={existingAlias}
1312
- copied={copied}
1313
- onCopy={copy}
1314
- onSetAlias={(alias) => handleSetAlias(model.id, alias, providerStorageAlias)}
1315
- onDeleteAlias={() => handleDeleteAlias(existingAlias)}
1316
- testStatus={modelTestResults[model.id]}
1317
- onTest={connections.length > 0 || isFreeNoAuth ? () => handleTestModel(model.id) : undefined}
1318
- isTesting={testingModelId === model.id}
1319
- isFree={model.isFree}
1320
- onDisable={() => handleDisableModel(model.id)}
1321
- thinkingSuffix={thinkingMode && thinkingMode !== "auto" && thinkingMode !== "off" && thinkingMode !== "none" ? thinkingMode : null}
1322
- />
1323
- );
1324
- })}
1325
-
1326
- {/* Add model button — inline, same style as model chips */}
1327
- {displayModels.length > modelsPageSize && (
1328
- <div className="w-full">
1329
- <Pagination
1330
- currentPage={activeModelsPage}
1331
- pageSize={modelsPageSize}
1332
- totalItems={displayModels.length}
1333
- onPageChange={setModelsPage}
1334
- onPageSizeChange={(size) => {
1335
- setModelsPageSize(size);
1336
- setModelsPage(1);
1337
- }}
1338
- />
1339
- </div>
1340
- )}
1341
-
1342
- <button
1343
- onClick={() => setShowAddCustomModel(true)}
1344
- className="flex w-full items-center justify-center gap-1.5 rounded-lg border border-dashed border-primary/40 px-3 py-2 text-xs text-primary transition-colors hover:border-primary hover:bg-primary/5 sm:w-auto"
1345
- >
1346
- <span className="material-symbols-outlined text-sm">add</span>
1347
- Add Model
1348
- </button>
1349
-
1350
- {/* Import Qoder models button — only show for qoder provider */}
1351
- {providerId === "qoder" && connections.some((conn) => conn.isActive !== false) && (
1352
- <button
1353
- onClick={handleImportQoderModels}
1354
- disabled={importingQoderModels}
1355
- className="flex w-full items-center justify-center gap-1.5 rounded-lg border border-dashed border-blue-500/40 px-3 py-2 text-xs text-blue-600 dark:text-blue-400 transition-colors hover:border-blue-500 hover:bg-blue-500/5 sm:w-auto disabled:opacity-50 disabled:cursor-not-allowed"
1356
- >
1357
- <span className="material-symbols-outlined text-sm" style={importingQoderModels ? { animation: "spin 1s linear infinite" } : undefined}>
1358
- {importingQoderModels ? "progress_activity" : "download"}
1359
- </span>
1360
- {importingQoderModels ? translate("Fetching...") : translate("Fetch Qoder Models")}
1361
- </button>
1362
- )}
1363
-
1364
- {/* Suggested models from provider API — show only models not yet added */}
1365
- {suggestedModels.length > 0 && (() => {
1366
- const addedFullModels = new Set(Object.values(modelAliases));
1367
- const hardcodedIds = new Set(models.map((m) => m.id));
1368
- const notAdded = suggestedModels.filter(
1369
- (m) => !addedFullModels.has(`${providerStorageAlias}/${m.id}`) && !hardcodedIds.has(m.id)
1370
- );
1371
- if (notAdded.length === 0) return null;
1372
- return (
1373
- <div className="w-full mt-2">
1374
- <p className="text-xs text-text-muted mb-2">Suggested free models (≥200k context):</p>
1375
- <div className="flex flex-wrap gap-2">
1376
- {notAdded.map((m) => (
1377
- <button
1378
- key={m.id}
1379
- onClick={async () => {
1380
- const alias = m.id.split("/").pop();
1381
- await handleSetAlias(m.id, alias, providerStorageAlias);
1382
- }}
1383
- className="flex items-center gap-1 px-2.5 py-1.5 rounded-lg border border-black/10 dark:border-white/10 text-xs text-text-muted hover:text-primary hover:border-primary/40 hover:bg-primary/5 transition-colors"
1384
- title={`${m.name} · ${(m.contextLength / 1000).toFixed(0)}k ctx`}
1385
- >
1386
- <span className="material-symbols-outlined text-[13px]">add</span>
1387
- {m.id.split("/").pop()}
1388
- </button>
1389
- ))}
1390
- </div>
1391
- </div>
1392
- );
1393
- })()}
1394
-
1395
- {/* Disabled models — restorable */}
1396
- {disabledDisplayModels.length > 0 && (
1397
- <div className="w-full mt-2">
1398
- <p className="text-xs text-text-muted mb-2">Disabled models ({disabledDisplayModels.length}):</p>
1399
- <div className="flex flex-wrap gap-2">
1400
- {disabledDisplayModels.map((m) => (
1401
- <button
1402
- key={m.id}
1403
- onClick={() => handleEnableModel(m.id)}
1404
- className="flex items-center gap-1 px-2.5 py-1.5 rounded-lg border border-dashed border-black/10 dark:border-white/10 text-xs text-text-muted hover:text-primary hover:border-primary/40 hover:bg-primary/5 transition-colors"
1405
- title="Restore model"
1406
- >
1407
- <span className="material-symbols-outlined text-[13px]">add</span>
1408
- {m.id}
1409
- </button>
1410
- ))}
1411
- </div>
1412
- </div>
1413
- )}
1414
- </div>
1415
- );
1416
- };
1417
-
1418
- if (loading) {
1419
- return (
1420
- <div className="flex flex-col gap-8">
1421
- <CardSkeleton />
1422
- <CardSkeleton />
1423
- </div>
1424
- );
1425
- }
1426
-
1427
- if (!providerInfo) {
1428
- return (
1429
- <div className="text-center py-20">
1430
- <p className="text-text-muted">Provider not found</p>
1431
- <Link href="/dashboard/providers" className="text-primary mt-4 inline-block">
1432
- Back to Providers
1433
- </Link>
1434
- </div>
1435
- );
1436
- }
1437
-
1438
- // Determine icon path: OpenAI Compatible providers use specialized icons
1439
- const getHeaderIconPath = () => {
1440
- if (isOpenAICompatible && providerInfo.apiType) {
1441
- return providerInfo.apiType === "responses" ? "/providers/oai-r.png" : "/providers/oai-cc.png";
1442
- }
1443
- if (isAnthropicCompatible) {
1444
- return "/providers/anthropic-m.png";
1445
- }
1446
- return `/providers/${providerInfo.id}.png`;
1447
- };
1448
-
1449
- return (
1450
- <div className="flex min-w-0 flex-col gap-6 px-1 sm:gap-8 sm:px-0">
1451
- {/* Header */}
1452
- <div className="min-w-0">
1453
- <Link
1454
- href="/dashboard/providers"
1455
- className="inline-flex items-center gap-1 text-sm text-text-muted hover:text-primary transition-colors mb-4"
1456
- >
1457
- <span className="material-symbols-outlined text-lg">arrow_back</span>
1458
- Back to Providers
1459
- </Link>
1460
- <div className="flex min-w-0 items-center gap-3 sm:gap-4">
1461
- <div
1462
- className="flex size-12 shrink-0 items-center justify-center rounded-lg"
1463
- style={{ backgroundColor: `${providerInfo.color}15` }}
1464
- >
1465
- {headerImgError ? (
1466
- <span className="text-sm font-bold" style={{ color: providerInfo.color }}>
1467
- {providerInfo.textIcon || providerInfo.id.slice(0, 2).toUpperCase()}
1468
- </span>
1469
- ) : (
1470
- <Image
1471
- src={getHeaderIconPath()}
1472
- alt={providerInfo.name}
1473
- width={48}
1474
- height={48}
1475
- className="max-h-12 max-w-12 rounded-lg object-contain"
1476
- sizes="48px"
1477
- onError={() => setHeaderImgError(true)}
1478
- />
1479
- )}
1480
- </div>
1481
- <div className="min-w-0">
1482
- <div className="flex items-center gap-3 flex-wrap">
1483
- <h1 className="truncate text-2xl font-semibold tracking-tight sm:text-3xl">{providerInfo.name}</h1>
1484
- {(providerInfo.notice?.apiKeyUrl || providerInfo.notice?.signupUrl || providerInfo.website) && (
1485
- <a
1486
- href={providerInfo.notice?.apiKeyUrl || providerInfo.notice?.signupUrl || providerInfo.website}
1487
- target="_blank"
1488
- rel="noopener noreferrer"
1489
- className="text-xs text-primary hover:underline inline-flex items-center gap-1"
1490
- >
1491
- <span className="material-symbols-outlined text-sm">open_in_new</span>
1492
- {providerInfo.notice?.apiKeyUrl ? "Get API Key" : "Sign up / Learn more"}
1493
- </a>
1494
- )}
1495
- </div>
1496
- <p className="text-text-muted">
1497
- {connections.length} connection{connections.length === 1 ? "" : "s"}
1498
- </p>
1499
- </div>
1500
- </div>
1501
- </div>
1502
-
1503
- {providerInfo.deprecated && (
1504
- <div className="flex items-center gap-2 px-3 py-2 rounded-lg bg-yellow-500/10 border border-yellow-500/30">
1505
- <span className="material-symbols-outlined text-[16px] text-yellow-500 mt-0.5 shrink-0">warning</span>
1506
- <p className="text-xs text-red-600 dark:text-yellow-400 leading-relaxed">{providerInfo.deprecationNotice}</p>
1507
- </div>
1508
- )}
1509
-
1510
- {providerInfo.notice?.text && !providerInfo.deprecated && (
1511
- <div className="flex flex-col gap-2 rounded-lg border border-blue-500/30 bg-blue-500/10 px-3 py-2 sm:flex-row sm:items-center">
1512
- <span className="material-symbols-outlined text-[16px] text-blue-500 shrink-0">info</span>
1513
- <p className="min-w-0 flex-1 text-xs leading-relaxed text-blue-600 dark:text-blue-400">{providerInfo.notice.text}</p>
1514
- {providerInfo.notice.apiKeyUrl && (
1515
- <a
1516
- href={providerInfo.notice.apiKeyUrl}
1517
- target="_blank"
1518
- rel="noopener noreferrer"
1519
- className="inline-flex justify-center rounded bg-blue-500 px-2 py-1 text-xs font-medium text-white transition-colors hover:bg-blue-600 sm:py-0.5"
1520
- >
1521
- Get API Key →
1522
- </a>
1523
- )}
1524
- </div>
1525
- )}
1526
-
1527
- {isCompatible && providerNode && (
1528
- <Card>
1529
- <div className="mb-4 flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between">
1530
- <div className="min-w-0">
1531
- <h2 className="text-lg font-semibold">{isAnthropicCompatible ? "Anthropic Compatible Details" : "OpenAI Compatible Details"}</h2>
1532
- <p className="break-all text-sm text-text-muted">
1533
- {isAnthropicCompatible ? "Messages API" : (providerNode.apiType === "responses" ? "Responses API" : "Chat Completions")} · {(providerNode.baseUrl || "").replace(/\/$/, "")}/
1534
- {isAnthropicCompatible ? "messages" : (providerNode.apiType === "responses" ? "responses" : "chat/completions")}
1535
- </p>
1536
- </div>
1537
- <div className="grid grid-cols-1 gap-2 sm:flex sm:items-center">
1538
- <Button
1539
- size="sm"
1540
- icon="add"
1541
- onClick={() => {
1542
- setAddConnectionError("");
1543
- setShowAddApiKeyModal(true);
1544
- }}
1545
- className="w-full sm:w-auto"
1546
- >
1547
- Add API Key
1548
- </Button>
1549
- <Button
1550
- size="sm"
1551
- variant="secondary"
1552
- icon="edit"
1553
- onClick={() => setShowEditNodeModal(true)}
1554
- className="w-full sm:w-auto"
1555
- >
1556
- Edit
1557
- </Button>
1558
- <Button
1559
- size="sm"
1560
- variant="secondary"
1561
- icon="delete"
1562
- onClick={async () => {
1563
- setConfirmState({
1564
- title: "Delete Compatible Node",
1565
- message: `Delete this ${isAnthropicCompatible ? "Anthropic" : "OpenAI"} Compatible node?`,
1566
- onConfirm: async () => {
1567
- setConfirmState(null);
1568
- try {
1569
- const res = await fetch(`/api/provider-nodes/${providerId}`, { method: "DELETE" });
1570
- if (res.ok) {
1571
- router.push("/dashboard/providers");
1572
- }
1573
- } catch (error) {
1574
- console.log("Error deleting provider node:", error);
1575
- }
1576
- }
1577
- });
1578
- }}
1579
- className="w-full sm:w-auto"
1580
- >
1581
- Delete
1582
- </Button>
1583
- </div>
1584
- </div>
1585
- </Card>
1586
- )}
1587
-
1588
- {/* Connections */}
1589
- {isFreeNoAuth ? (
1590
- <NoAuthProxyCard providerId={providerId} />
1591
- ) : (
1592
- <Card>
1593
- <div className="mb-4 flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between">
1594
- <h2 className="text-lg font-semibold">Connections</h2>
1595
- <div className="flex flex-col gap-3 sm:flex-row sm:items-center sm:gap-4">
1596
- {connections.length > 0 && proxyPools.length > 0 && (
1597
- <Button
1598
- size="sm"
1599
- variant="secondary"
1600
- icon="lan"
1601
- onClick={openBulkProxyModal}
1602
- disabled={selectedConnections.length === 0}
1603
- >
1604
- Apply Proxy
1605
- </Button>
1606
- )}
1607
- {connections.length > 0 && (
1608
- <>
1609
- <Button
1610
- size="sm"
1611
- variant="secondary"
1612
- icon="sync"
1613
- onClick={handleRunOneByOneTest}
1614
- disabled={oneByOneRunning}
1615
- >
1616
- {oneByOneRunning ? "Testing Connection One-by-One..." : "Test Connection One-by-One"}
1617
- </Button>
1618
- {oneByOneRunning && (
1619
- <Button
1620
- size="sm"
1621
- variant="ghost"
1622
- icon="stop"
1623
- onClick={handleStopOneByOneTest}
1624
- disabled={oneByOneStopping}
1625
- >
1626
- {oneByOneStopping ? "Stopping..." : "Stop"}
1627
- </Button>
1628
- )}
1629
- </>
1630
- )}
1631
- {/* Thinking level picker — injects providerThinking + suffixes model copy as model(level) */}
1632
- <div className="flex items-center gap-2">
1633
- <span className="text-xs text-text-muted font-medium">Thinking</span>
1634
- <select
1635
- value={thinkingMode}
1636
- onChange={(e) => handleThinkingModeChange(e.target.value)}
1637
- className="text-xs px-2 py-1 border border-border rounded-md bg-background focus:outline-none focus:border-primary"
1638
- title="Forces reasoning_effort on requests; model chips copy as alias/model(level)"
1639
- >
1640
- {(thinkingConfig?.options || THINKING_LEVEL_PICKER_OPTIONS).map((opt) => (
1641
- <option key={opt} value={opt}>{opt.charAt(0).toUpperCase() + opt.slice(1)}</option>
1642
- ))}
1643
- </select>
1644
- </div>
1645
- {/* Round Robin toggle */}
1646
- <div className="flex flex-wrap items-center gap-2">
1647
- <span className="text-xs text-text-muted font-medium">Round Robin</span>
1648
- <Toggle
1649
- checked={providerStrategy === "round-robin"}
1650
- onChange={handleRoundRobinToggle}
1651
- />
1652
- {providerStrategy === "round-robin" && (
1653
- <div className="flex items-center gap-1.5">
1654
- <span className="text-xs text-text-muted">Sticky:</span>
1655
- <input
1656
- type="number"
1657
- min={1}
1658
- value={providerStickyLimit}
1659
- onChange={(e) => handleStickyLimitChange(e.target.value)}
1660
- placeholder="1"
1661
- className="w-14 px-2 py-1 text-xs border border-border rounded-md bg-background focus:outline-none focus:border-primary"
1662
- />
1663
- </div>
1664
- )}
1665
- </div>
1666
- </div>
1667
- </div>
1668
-
1669
- {connections.length > 0 && (
1670
- <div className="mb-4 flex flex-col gap-3 rounded-lg border border-black/5 bg-black/[0.02] p-3 dark:border-white/5 dark:bg-white/[0.02]">
1671
- <div className="flex flex-wrap items-center gap-2">
1672
- <label className="flex items-center gap-1.5 text-xs text-text-muted">
1673
- <input
1674
- type="checkbox"
1675
- checked={allSelected}
1676
- onChange={toggleSelectAllConnections}
1677
- className="size-4 rounded border-black/20 dark:border-white/20"
1678
- />
1679
- {allSelected ? "Unselect visible" : "Select visible"}
1680
- </label>
1681
- <Badge variant="default">{filteredConnections.length} visible</Badge>
1682
- {selectedConnections.length > 0 && (
1683
- <Badge variant="default">{selectedConnections.length} selected</Badge>
1684
- )}
1685
- {selectedProxySummary && (
1686
- <span className="text-xs text-text-muted">{selectedProxySummary}</span>
1687
- )}
1688
- {selectedConnections.length > 0 && (
1689
- <Button size="sm" variant="ghost" onClick={clearSelection}>
1690
- Clear
1691
- </Button>
1692
- )}
1693
- {selectedConnections.length > 0 && (
1694
- <>
1695
- <Button
1696
- size="sm"
1697
- variant="secondary"
1698
- icon="delete"
1699
- onClick={handleDeleteSelectedConnections}
1700
- >
1701
- Delete Selected ({selectedConnections.length})
1702
- </Button>
1703
- <Button
1704
- size="sm"
1705
- variant="secondary"
1706
- icon="domain"
1707
- onClick={() => handleBulkDeleteByEmail("gsuite")}
1708
- >
1709
- Delete GSuite
1710
- </Button>
1711
- <Button
1712
- size="sm"
1713
- variant="secondary"
1714
- icon="mail"
1715
- onClick={() => handleBulkDeleteByEmail("gmail")}
1716
- >
1717
- Delete Gmail
1718
- </Button>
1719
- </>
1720
- )}
1721
- </div>
1722
- <div className="flex flex-wrap gap-1.5">
1723
- {CONNECTION_STATUS_FILTERS.map((filter) => (
1724
- <button
1725
- key={filter.id}
1726
- type="button"
1727
- onClick={() => setConnectionStatusFilter(filter.id)}
1728
- className={`rounded-full border px-2.5 py-1 text-xs transition-colors ${
1729
- connectionStatusFilter === filter.id
1730
- ? "border-primary/50 bg-primary/10 text-primary"
1731
- : "border-border text-text-muted hover:border-primary/30 hover:text-text-main"
1732
- }`}
1733
- >
1734
- {filter.label}
1735
- <span className="ml-1 text-[10px] opacity-70">{connectionStatusCounts[filter.id] || 0}</span>
1736
- </button>
1737
- ))}
1738
- </div>
1739
- {connections.length >= 20 && (
1740
- <div className="relative">
1741
- <span className="material-symbols-outlined pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-[16px] text-text-subtle">
1742
- search
1743
- </span>
1744
- <input
1745
- type="search"
1746
- value={connectionQuery}
1747
- onChange={(e) => setConnectionQuery(e.target.value)}
1748
- placeholder={`Search ${connections.length} connections (email, name, id)…`}
1749
- className="w-full rounded-lg border border-border bg-background py-2 pl-8 pr-3 text-xs text-text-main outline-none placeholder:text-text-subtle focus:border-primary/40"
1750
- />
1751
- </div>
1752
- )}
1753
- </div>
1754
- )}
1755
-
1756
- {connections.length === 0 ? (
1757
- <>
1758
- <div className="flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between">
1759
- <div className="flex items-center gap-3">
1760
- <div className="inline-flex items-center justify-center w-9 h-9 rounded-full bg-primary/10 text-primary shrink-0">
1761
- <span className="material-symbols-outlined text-[18px]">{isOAuth ? "lock" : "key"}</span>
1762
- </div>
1763
- <div className="min-w-0">
1764
- <p className="text-sm text-text-muted">No connections yet</p>
1765
- {hasDualAuthModes && (
1766
- <p className="text-xs text-text-muted">
1767
- Choose {oauthConnectionLabel} or {apiKeyConnectionLabel}.
1768
- </p>
1769
- )}
1770
- </div>
1771
- </div>
1772
- <div className="flex gap-2">
1773
- {usesAutomationLogin && (
1774
- <Button size="sm" icon="automation" onClick={openProviderAutomation}>
1775
- Open Automation
1776
- </Button>
1777
- )}
1778
- {hasDualAuthModes ? (
1779
- <>
1780
- <Button size="sm" icon="lock" variant="secondary" onClick={openOAuthConnection}>
1781
- {oauthConnectionLabel}
1782
- </Button>
1783
- <Button size="sm" icon="key" onClick={triggerApiKeyConnection}>
1784
- {apiKeyConnectionLabel}
1785
- </Button>
1786
- </>
1787
- ) : !usesAutomationLogin ? (
1788
- <>
1789
- {!isCompatible && providerId === "iflow" && (
1790
- <Button size="sm" icon="cookie" variant="secondary" onClick={() => setShowIFlowCookieModal(true)}>
1791
- Cookie
1792
- </Button>
1793
- )}
1794
- <Button
1795
- size="sm"
1796
- icon="add"
1797
- onClick={triggerAddConnection}
1798
- >
1799
- {isCompatible ? "Add API Key" : (providerId === "iflow" ? "OAuth" : "Add Connection")}
1800
- </Button>
1801
- </>
1802
- ) : null}
1803
- </div>
1804
- </div>
1805
- {providerId === "kiro" && kiroBulkJob?.jobId && (
1806
- <div className="mt-4 flex flex-col gap-3 rounded-lg border border-primary/20 bg-primary/[0.06] px-4 py-3 sm:flex-row sm:items-center sm:justify-between">
1807
- <div>
1808
- <p className="text-sm font-semibold text-text-main">Bulk import progress is still available</p>
1809
- <p className="text-xs text-text-muted">
1810
- Status: {kiroBulkJob.status} | Success: {kiroBulkJob.summary?.success || 0} | Running: {kiroBulkJob.summary?.running || 0} | Queued: {kiroBulkJob.summary?.queued || 0}
1811
- </p>
1812
- </div>
1813
- <div className="flex gap-2">
1814
- <Button
1815
- size="sm"
1816
- icon="monitoring"
1817
- variant="secondary"
1818
- onClick={() => router.push(automationHref("kiro"))}
1819
- >
1820
- Resume Bulk Progress
1821
- </Button>
1822
- {isBulkJobTerminal(kiroBulkJob.status) && (
1823
- <Button
1824
- size="sm"
1825
- variant="ghost"
1826
- icon="close"
1827
- onClick={clearKiroBulkProgress}
1828
- >
1829
- Clear
1830
- </Button>
1831
- )}
1832
- </div>
1833
- </div>
1834
- )}
1835
- {providerId === "kiro" && !kiroBulkJob?.jobId && kiroBulkNotice && (
1836
- <div className="mt-4 rounded-lg border border-amber-200 bg-amber-50 px-4 py-3 text-sm text-amber-700 dark:border-amber-800 dark:bg-amber-900/20 dark:text-amber-300">
1837
- {kiroBulkNotice}
1838
- </div>
1839
- )}
1840
- </>
1841
- ) : (
1842
- <>
1843
- {oneByOneSummary && (
1844
- <div className="mb-4 rounded-lg border border-black/10 bg-black/[0.02] px-3 py-2 text-xs text-text-muted dark:border-white/10 dark:bg-white/[0.03]">
1845
- <div className="flex flex-wrap items-center gap-3">
1846
- <span>Total: {oneByOneSummary.total}</span>
1847
- <span>Completed: {oneByOneSummary.completed}</span>
1848
- <span>Passed: {oneByOneSummary.passed}</span>
1849
- <span>Failed: {oneByOneSummary.failed}</span>
1850
- {oneByOneSummary.stopped && (
1851
- <span className="text-amber-600 dark:text-amber-400">Stopped</span>
1852
- )}
1853
- {oneByOneRunning && oneByOneCurrentConnectionId && (
1854
- <span>Running: {connections.find((conn) => conn.id === oneByOneCurrentConnectionId)?.name || oneByOneCurrentConnectionId}</span>
1855
- )}
1856
- </div>
1857
- </div>
1858
- )}
1859
- {providerId === "kiro" && kiroBulkJob?.jobId && (
1860
- <div className="mb-4 flex flex-col gap-3 rounded-lg border border-primary/20 bg-primary/[0.06] px-4 py-3 sm:flex-row sm:items-center sm:justify-between">
1861
- <div>
1862
- <p className="text-sm font-semibold text-text-main">Bulk import progress is still available</p>
1863
- <p className="text-xs text-text-muted">
1864
- Status: {kiroBulkJob.status} | Success: {kiroBulkJob.summary?.success || 0} | Running: {kiroBulkJob.summary?.running || 0} | Queued: {kiroBulkJob.summary?.queued || 0}
1865
- </p>
1866
- </div>
1867
- <div className="flex gap-2">
1868
- <Button
1869
- size="sm"
1870
- icon="monitoring"
1871
- variant="secondary"
1872
- onClick={() => router.push(automationHref("kiro"))}
1873
- >
1874
- Resume Bulk Progress
1875
- </Button>
1876
- {isBulkJobTerminal(kiroBulkJob.status) && (
1877
- <Button
1878
- size="sm"
1879
- variant="ghost"
1880
- icon="close"
1881
- onClick={clearKiroBulkProgress}
1882
- >
1883
- Clear
1884
- </Button>
1885
- )}
1886
- </div>
1887
- </div>
1888
- )}
1889
- {providerId === "kiro" && !kiroBulkJob?.jobId && kiroBulkNotice && (
1890
- <div className="mb-4 rounded-lg border border-amber-200 bg-amber-50 px-4 py-3 text-sm text-amber-700 dark:border-amber-800 dark:bg-amber-900/20 dark:text-amber-300">
1891
- {kiroBulkNotice}
1892
- </div>
1893
- )}
1894
- {connectionsList}
1895
- {providerId === "kiro" && totalKiroPages > 1 && (
1896
- <div className="mt-4 flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between">
1897
- <p className="text-sm text-text-muted">
1898
- Page {kiroConnectionsPage} of {totalKiroPages} • Showing {(kiroConnectionsPage - 1) * KIRO_CONNECTIONS_PER_PAGE + 1}-
1899
- {Math.min(kiroConnectionsPage * KIRO_CONNECTIONS_PER_PAGE, filteredConnections.length)} of {filteredConnections.length} connections
1900
- </p>
1901
- <div className="flex gap-2">
1902
- <Button
1903
- size="sm"
1904
- variant="secondary"
1905
- disabled={activeKiroConnectionsPage <= 1}
1906
- onClick={() => setKiroConnectionsPage((prev) => Math.max(1, prev - 1))}
1907
- >
1908
- Previous
1909
- </Button>
1910
- <Button
1911
- size="sm"
1912
- variant="secondary"
1913
- disabled={activeKiroConnectionsPage >= totalKiroPages}
1914
- onClick={() => setKiroConnectionsPage((prev) => Math.min(totalKiroPages, prev + 1))}
1915
- >
1916
- Next
1917
- </Button>
1918
- </div>
1919
- </div>
1920
- )}
1921
- {providerId !== "kiro" && filteredConnections.length > 0 && (
1922
- <Pagination
1923
- currentPage={activeConnectionsPage}
1924
- pageSize={connectionsPageSize}
1925
- totalItems={filteredConnections.length}
1926
- onPageChange={setConnectionsPage}
1927
- onPageSizeChange={(size) => {
1928
- setConnectionsPageSize(size);
1929
- setConnectionsPage(1);
1930
- }}
1931
- className="mt-2"
1932
- />
1933
- )}
1934
- {connections.length > 0 && filteredConnections.length === 0 && (
1935
- <div className="py-8 text-center text-sm text-text-muted">
1936
- No connections match this status filter.
1937
- </div>
1938
- )}
1939
- {!isCompatible && (
1940
- <div className="mt-4 grid grid-cols-1 gap-2 sm:flex">
1941
- {providerId === "iflow" && (
1942
- <Button
1943
- size="sm"
1944
- icon="cookie"
1945
- variant="secondary"
1946
- onClick={() => setShowIFlowCookieModal(true)}
1947
- title="Add connection using browser cookie"
1948
- className="w-full sm:w-auto"
1949
- >
1950
- Cookie
1951
- </Button>
1952
- )}
1953
- {providerId === "codebuddy" && (
1954
- <Button
1955
- size="sm"
1956
- icon="cookie"
1957
- variant="secondary"
1958
- onClick={openCodeBuddyQuotaCookieModal}
1959
- title="Attach CodeBuddy web cookie for quota tracking"
1960
- className="w-full sm:w-auto"
1961
- >
1962
- Quota Cookie
1963
- </Button>
1964
- )}
1965
- {usesAutomationLogin && (
1966
- <Button
1967
- size="sm"
1968
- icon="automation"
1969
- onClick={openProviderAutomation}
1970
- className="w-full sm:w-auto"
1971
- >
1972
- Open Automation
1973
- </Button>
1974
- )}
1975
- {hasDualAuthModes ? (
1976
- <>
1977
- <Button
1978
- size="sm"
1979
- icon="lock"
1980
- variant="secondary"
1981
- onClick={openOAuthConnection}
1982
- className="w-full sm:w-auto"
1983
- >
1984
- {oauthConnectionLabel}
1985
- </Button>
1986
- <Button
1987
- size="sm"
1988
- icon="key"
1989
- onClick={triggerApiKeyConnection}
1990
- className="w-full sm:w-auto"
1991
- >
1992
- {apiKeyConnectionLabel}
1993
- </Button>
1994
- </>
1995
- ) : !usesAutomationLogin ? (
1996
- <Button
1997
- size="sm"
1998
- icon="add"
1999
- onClick={triggerAddConnection}
2000
- className="w-full sm:w-auto"
2001
- >
2002
- Add
2003
- </Button>
2004
- ) : null}
2005
- </div>
2006
- )}
2007
- </>
2008
- )}
2009
- </Card>
2010
- )}
2011
-
2012
- {/* Models */}
2013
- <Card>
2014
- <div className="mb-4 flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between">
2015
- <h2 className="text-lg font-semibold">
2016
- {"Available Models"}
2017
- </h2>
2018
- {!isCompatible && (() => {
2019
- const allIds = [
2020
- ...models,
2021
- ...kiloFreeModels.filter((fm) => !models.some((m) => m.id === fm.id)),
2022
- ].filter((m) => !m.type || m.type === "llm").map((m) => m.id);
2023
- const activeIds = allIds.filter((id) => !disabledModelIds.includes(id));
2024
- return (
2025
- <div className="flex gap-2">
2026
- {disabledModelIds.length > 0 && (
2027
- <Button size="sm" variant="secondary" icon="restart_alt" onClick={handleEnableAll}>
2028
- Active All
2029
- </Button>
2030
- )}
2031
- {activeIds.length > 0 && (
2032
- <Button size="sm" variant="secondary" icon="block" onClick={() => handleDisableAll(activeIds)}>
2033
- Disable All
2034
- </Button>
2035
- )}
2036
- </div>
2037
- );
2038
- })()}
2039
- </div>
2040
- {!!modelsTestError && (
2041
- <p className="text-xs text-red-500 mb-3 break-words">{modelsTestError}</p>
2042
- )}
2043
- {renderModelsSection()}
2044
- </Card>
2045
-
2046
- {bulkActionModal}
2047
-
2048
- {/* Modals */}
2049
- {providerId === "kiro" ? (
2050
- <KiroOAuthWrapper
2051
- isOpen={showOAuthModal}
2052
- providerInfo={providerInfo}
2053
- onSuccess={handleOAuthSuccess}
2054
- onRefresh={fetchConnections}
2055
- initialBulkJobId={kiroBulkJob?.jobId || null}
2056
- onBulkJobChange={handleKiroBulkJobChange}
2057
- onClose={() => setShowOAuthModal(false)}
2058
- />
2059
- ) : providerId === "cursor" ? (
2060
- <CursorAuthModal
2061
- isOpen={showOAuthModal}
2062
- onSuccess={handleOAuthSuccess}
2063
- onClose={() => setShowOAuthModal(false)}
2064
- />
2065
- ) : providerId === "gitlab" ? (
2066
- <GitLabAuthModal
2067
- isOpen={showOAuthModal}
2068
- providerInfo={providerInfo}
2069
- onSuccess={handleOAuthSuccess}
2070
- onClose={() => setShowOAuthModal(false)}
2071
- />
2072
- ) : (
2073
- <OAuthModal
2074
- isOpen={showOAuthModal}
2075
- provider={providerId}
2076
- providerInfo={providerInfo}
2077
- onSuccess={handleOAuthSuccess}
2078
- onClose={() => setShowOAuthModal(false)}
2079
- />
2080
- )}
2081
- {providerId === "iflow" && (
2082
- <IFlowCookieModal
2083
- isOpen={showIFlowCookieModal}
2084
- onSuccess={handleIFlowCookieSuccess}
2085
- onClose={() => setShowIFlowCookieModal(false)}
2086
- />
2087
- )}
2088
- {providerId === "codebuddy" && (
2089
- <CodeBuddyQuotaCookieModal
2090
- isOpen={showCodeBuddyQuotaCookieModal}
2091
- connectionIds={codeBuddyQuotaCookieConnectionIds}
2092
- onSuccess={handleCodeBuddyQuotaCookieSuccess}
2093
- onClose={() => setShowCodeBuddyQuotaCookieModal(false)}
2094
- />
2095
- )}
2096
- <AddApiKeyModal
2097
- isOpen={showAddApiKeyModal}
2098
- provider={providerId}
2099
- providerName={providerInfo.name}
2100
- isCompatible={isCompatible}
2101
- isAnthropic={isAnthropicCompatible}
2102
- authType={providerInfo?.authType}
2103
- authHint={providerInfo?.authHint}
2104
- website={providerInfo?.website}
2105
- proxyPools={proxyPools}
2106
- error={addConnectionError}
2107
- onSave={handleSaveApiKey}
2108
- onBulkDone={fetchConnections}
2109
- onClose={() => {
2110
- setAddConnectionError("");
2111
- setShowAddApiKeyModal(false);
2112
- }}
2113
- />
2114
- <EditConnectionModal
2115
- isOpen={showEditModal}
2116
- connection={selectedConnection}
2117
- proxyPools={proxyPools}
2118
- onSave={handleUpdateConnection}
2119
- onClose={() => setShowEditModal(false)}
2120
- />
2121
- {isCompatible && (
2122
- <EditCompatibleNodeModal
2123
- isOpen={showEditNodeModal}
2124
- node={providerNode}
2125
- onSave={handleUpdateNode}
2126
- onClose={() => setShowEditNodeModal(false)}
2127
- isAnthropic={isAnthropicCompatible}
2128
- />
2129
- )}
2130
- {!isCompatible && (
2131
- <AddCustomModelModal
2132
- isOpen={showAddCustomModel}
2133
- providerAlias={providerStorageAlias}
2134
- providerDisplayAlias={providerDisplayAlias}
2135
- onSave={async (modelId) => {
2136
- // For passthrough providers (OpenRouter), use last segment as alias to avoid slash conflicts
2137
- const alias = providerInfo?.passthroughModels
2138
- ? modelId.split("/").pop()
2139
- : modelId;
2140
- await handleSetAlias(modelId, alias, providerStorageAlias);
2141
- setShowAddCustomModel(false);
2142
- }}
2143
- onClose={() => setShowAddCustomModel(false)}
2144
- />
2145
- )}
2146
-
2147
- {/* AG Risk Confirmation Modal */}
2148
- <ConfirmModal
2149
- isOpen={showAgRiskModal}
2150
- onClose={() => setShowAgRiskModal(false)}
2151
- onConfirm={handleAgRiskConfirm}
2152
- title="Risk Notice"
2153
- message={providerInfo?.deprecationNotice}
2154
- confirmText="I Understand, Continue"
2155
- cancelText="Cancel"
2156
- variant="danger"
2157
- />
2158
-
2159
- {/* Confirm Modal */}
2160
- <ConfirmModal
2161
- isOpen={!!confirmState}
2162
- onClose={() => setConfirmState(null)}
2163
- onConfirm={confirmState?.onConfirm}
2164
- title={confirmState?.title || "Confirm"}
2165
- message={confirmState?.message}
2166
- variant="danger"
2167
- />
2168
- </div>
2169
- );
2170
- }