zevairouter 1.0.48 → 1.0.50

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 (1199) hide show
  1. package/CHANGELOG.md +15 -1
  2. package/README.md +204 -124
  3. package/cli/README.md +33 -25
  4. package/cli/app/.next-cli-build/BUILD_ID +1 -1
  5. package/cli/app/.next-cli-build/app-path-routes-manifest.json +24 -17
  6. package/cli/app/.next-cli-build/build-manifest.json +3 -3
  7. package/cli/app/.next-cli-build/prerender-manifest.json +24 -0
  8. package/cli/app/.next-cli-build/required-server-files.json +4 -2
  9. package/cli/app/.next-cli-build/routes-manifest.json +56 -6
  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 +2 -2
  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 +3 -3
  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 +2 -2
  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 +2 -2
  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 +3 -3
  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 +2 -2
  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 +2 -2
  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 +2 -2
  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 +2 -0
  53. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page.js.nft.json +1 -0
  54. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -0
  55. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  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 +2 -2
  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 +2 -2
  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 +3 -3
  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 +2 -2
  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 +2 -2
  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 +21 -0
  77. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page.js.nft.json +1 -0
  78. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page_client-reference-manifest.js +1 -0
  79. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +2 -2
  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 +2 -2
  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 +2 -2
  89. package/cli/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  90. package/cli/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  91. package/cli/app/.next-cli-build/server/app/_global-error.html +1 -1
  92. package/cli/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  93. package/cli/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  94. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  95. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  96. package/cli/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  97. package/cli/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  98. package/cli/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  99. package/cli/app/.next-cli-build/server/app/_not-found/page.js +2 -2
  100. package/cli/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  101. package/cli/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  102. package/cli/app/.next-cli-build/server/app/_not-found.html +1 -1
  103. package/cli/app/.next-cli-build/server/app/_not-found.rsc +4 -4
  104. package/cli/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +4 -4
  105. package/cli/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  106. package/cli/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +4 -4
  107. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  108. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  109. package/cli/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  110. package/cli/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
  111. package/cli/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +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/oidc/callback/route.js +1 -1
  115. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  116. package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
  117. package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  118. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
  119. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  120. package/cli/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
  121. package/cli/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  122. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +2 -2
  123. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  124. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  125. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  126. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  127. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  128. package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +1 -1
  129. package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  130. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -2
  131. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  132. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js +1 -1
  133. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js.nft.json +1 -1
  134. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  135. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  136. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +1 -1
  137. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  138. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
  139. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  140. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
  141. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  142. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  143. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  144. package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +2 -2
  145. package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  146. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +1 -1
  147. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  148. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +1 -1
  149. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  150. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  151. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  152. package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +1 -1
  153. package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  154. package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +1 -1
  155. package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  156. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +1 -1
  157. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  158. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  159. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  160. package/cli/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  161. package/cli/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  162. package/cli/app/.next-cli-build/server/app/api/context/[id]/route.js +1 -1
  163. package/cli/app/.next-cli-build/server/app/api/context/[id]/route.js.nft.json +1 -1
  164. package/cli/app/.next-cli-build/server/app/api/context/bulk/route.js +1 -1
  165. package/cli/app/.next-cli-build/server/app/api/context/bulk/route.js.nft.json +1 -1
  166. package/cli/app/.next-cli-build/server/app/api/context/route.js +1 -1
  167. package/cli/app/.next-cli-build/server/app/api/context/route.js.nft.json +1 -1
  168. package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route.js +1 -0
  169. package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route.js.nft.json +1 -0
  170. package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route_client-reference-manifest.js +1 -0
  171. package/cli/app/.next-cli-build/server/app/api/headroom/extras/route.js +1 -1
  172. package/cli/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
  173. package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js +1 -1
  174. package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
  175. package/cli/app/.next-cli-build/server/app/api/headroom/restart/route.js +1 -1
  176. package/cli/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
  177. package/cli/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -1
  178. package/cli/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  179. package/cli/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -1
  180. package/cli/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  181. package/cli/app/.next-cli-build/server/app/api/headroom/stop/route.js +1 -1
  182. package/cli/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  183. package/cli/app/.next-cli-build/server/app/api/health/route.js +1 -1
  184. package/cli/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  185. package/cli/app/.next-cli-build/server/app/api/init/route.js +1 -1
  186. package/cli/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  187. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
  188. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  189. package/cli/app/.next-cli-build/server/app/api/keys/route.js +1 -1
  190. package/cli/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  191. package/cli/app/.next-cli-build/server/app/api/locale/route.js +1 -1
  192. package/cli/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  193. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js +1 -1
  194. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  195. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js +1 -1
  196. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  197. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  198. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  199. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  200. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  201. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  202. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  203. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  204. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  205. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
  206. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  207. package/cli/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  208. package/cli/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  209. package/cli/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
  210. package/cli/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  211. package/cli/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  212. package/cli/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  213. package/cli/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
  214. package/cli/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  215. package/cli/app/.next-cli-build/server/app/api/models/route.js +1 -1
  216. package/cli/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  217. package/cli/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  218. package/cli/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  219. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  220. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  221. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js +1 -1
  222. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  223. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  224. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  225. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js +1 -1
  226. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js.nft.json +1 -1
  227. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js +1 -1
  228. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js.nft.json +1 -1
  229. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js +1 -1
  230. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js.nft.json +1 -1
  231. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/cancel/route.js +1 -1
  232. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  233. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  234. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  235. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/route.js +1 -1
  236. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/route.js.nft.json +1 -1
  237. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/latest/route.js +1 -1
  238. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/latest/route.js.nft.json +1 -1
  239. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/route.js +1 -1
  240. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/route.js.nft.json +1 -1
  241. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js +1 -1
  242. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  243. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  244. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  245. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js +1 -1
  246. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js.nft.json +1 -1
  247. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js +1 -1
  248. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js.nft.json +1 -1
  249. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js +1 -1
  250. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js.nft.json +1 -1
  251. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route.js +1 -1
  252. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route.js.nft.json +1 -1
  253. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route.js +1 -1
  254. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route.js.nft.json +1 -1
  255. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js +1 -1
  256. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  257. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  258. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  259. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js +1 -1
  260. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js.nft.json +1 -1
  261. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js +1 -1
  262. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js.nft.json +1 -1
  263. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js +1 -1
  264. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js.nft.json +1 -1
  265. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route.js +1 -1
  266. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route.js.nft.json +1 -1
  267. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route.js +1 -1
  268. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route.js.nft.json +1 -1
  269. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  270. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  271. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js +2 -2
  272. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  273. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  274. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  275. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
  276. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  277. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/cancel/route.js +1 -1
  278. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  279. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  280. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  281. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/route.js +1 -1
  282. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/route.js.nft.json +1 -1
  283. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/latest/route.js +1 -1
  284. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/latest/route.js.nft.json +1 -1
  285. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/route.js +1 -1
  286. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/route.js.nft.json +1 -1
  287. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
  288. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  289. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  290. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  291. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js +1 -1
  292. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  293. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  294. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  295. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js +1 -1
  296. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js.nft.json +1 -1
  297. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js +1 -1
  298. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js.nft.json +1 -1
  299. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js +1 -1
  300. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js.nft.json +1 -1
  301. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  302. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  303. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  304. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  305. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  306. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  307. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js +1 -1
  308. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  309. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  310. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  311. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js +1 -1
  312. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js.nft.json +1 -1
  313. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js +1 -1
  314. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js.nft.json +1 -1
  315. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js +1 -1
  316. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js.nft.json +1 -1
  317. package/cli/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
  318. package/cli/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  319. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
  320. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  321. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  322. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  323. package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
  324. package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  325. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  326. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  327. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  328. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  329. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  330. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  331. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  332. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  333. package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route.js +1 -1
  334. package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route.js.nft.json +1 -1
  335. package/cli/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  336. package/cli/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  337. package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js +1 -1
  338. package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  339. package/cli/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  340. package/cli/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  341. package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route.js +1 -1
  342. package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  343. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  344. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  345. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  346. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  347. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
  348. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  349. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  350. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  351. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +2 -2
  352. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  353. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
  354. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  355. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
  356. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  357. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
  358. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  359. package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route.js +2 -2
  360. package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
  361. package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route.js +2 -2
  362. package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
  363. package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route.js +1 -1
  364. package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
  365. package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route.js +1 -1
  366. package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
  367. package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route.js +2 -2
  368. package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
  369. package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route.js +2 -2
  370. package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
  371. package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route.js +2 -2
  372. package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
  373. package/cli/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  374. package/cli/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  375. package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -1
  376. package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  377. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
  378. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  379. package/cli/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  380. package/cli/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  381. package/cli/app/.next-cli-build/server/app/api/shutdown/route.js +1 -1
  382. package/cli/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  383. package/cli/app/.next-cli-build/server/app/api/tags/route.js +1 -1
  384. package/cli/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  385. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js +17 -0
  386. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js.nft.json +1 -0
  387. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route_client-reference-manifest.js +1 -0
  388. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js +17 -0
  389. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js.nft.json +1 -0
  390. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route_client-reference-manifest.js +1 -0
  391. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js +17 -0
  392. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js.nft.json +1 -0
  393. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route_client-reference-manifest.js +1 -0
  394. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js +19 -0
  395. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js.nft.json +1 -0
  396. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route_client-reference-manifest.js +1 -0
  397. package/cli/app/.next-cli-build/server/app/api/terminal/session/route.js +17 -0
  398. package/cli/app/.next-cli-build/server/app/api/terminal/session/route.js.nft.json +1 -0
  399. package/cli/app/.next-cli-build/server/app/api/terminal/session/route_client-reference-manifest.js +1 -0
  400. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  401. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  402. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
  403. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  404. package/cli/app/.next-cli-build/server/app/api/translator/load/route.js +1 -1
  405. package/cli/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  406. package/cli/app/.next-cli-build/server/app/api/translator/save/route.js +1 -1
  407. package/cli/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  408. package/cli/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  409. package/cli/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  410. package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  411. package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  412. package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
  413. package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  414. package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
  415. package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  416. package/cli/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
  417. package/cli/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  418. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -1
  419. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  420. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  421. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  422. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  423. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  424. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +2 -2
  425. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  426. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  427. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  428. package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route.js +1 -1
  429. package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route.js.nft.json +1 -1
  430. package/cli/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
  431. package/cli/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  432. package/cli/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
  433. package/cli/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  434. package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  435. package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  436. package/cli/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
  437. package/cli/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  438. package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
  439. package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  440. package/cli/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
  441. package/cli/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  442. package/cli/app/.next-cli-build/server/app/api/usage/stream/route.js +2 -2
  443. package/cli/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  444. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  445. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  446. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  447. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  448. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  449. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  450. package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
  451. package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  452. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  453. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  454. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  455. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  456. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
  457. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  458. package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -1
  459. package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  460. package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  461. package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  462. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
  463. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  464. package/cli/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  465. package/cli/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  466. package/cli/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  467. package/cli/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  468. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  469. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  470. package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  471. package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  472. package/cli/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  473. package/cli/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  474. package/cli/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  475. package/cli/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  476. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  477. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  478. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  479. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  480. package/cli/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  481. package/cli/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  482. package/cli/app/.next-cli-build/server/app/api/version/route.js +1 -1
  483. package/cli/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  484. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  485. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  486. package/cli/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  487. package/cli/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  488. package/cli/app/.next-cli-build/server/app/callback/page.js +2 -2
  489. package/cli/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  490. package/cli/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  491. package/cli/app/.next-cli-build/server/app/callback.html +1 -1
  492. package/cli/app/.next-cli-build/server/app/callback.rsc +4 -4
  493. package/cli/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +4 -4
  494. package/cli/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  495. package/cli/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +4 -4
  496. package/cli/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
  497. package/cli/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  498. package/cli/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  499. package/cli/app/.next-cli-build/server/app/dashboard/automation.html +1 -1
  500. package/cli/app/.next-cli-build/server/app/dashboard/automation.rsc +6 -6
  501. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation/__PAGE__.segment.rsc +2 -2
  502. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation.segment.rsc +1 -1
  503. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  504. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  505. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_full.segment.rsc +6 -6
  506. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_head.segment.rsc +1 -1
  507. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_index.segment.rsc +4 -4
  508. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +2 -2
  509. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  510. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +6 -6
  511. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  512. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  513. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  514. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  515. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
  516. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  517. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +4 -4
  518. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
  519. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  520. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +6 -6
  521. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  522. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  523. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  524. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  525. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
  526. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  527. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
  528. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  529. package/cli/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  530. package/cli/app/.next-cli-build/server/app/dashboard/combos.rsc +6 -6
  531. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  532. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  533. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  534. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  535. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
  536. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  537. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
  538. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  539. package/cli/app/.next-cli-build/server/app/dashboard/context.html +1 -1
  540. package/cli/app/.next-cli-build/server/app/dashboard/context.rsc +6 -6
  541. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context/__PAGE__.segment.rsc +2 -2
  542. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context.segment.rsc +1 -1
  543. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  544. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  545. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_full.segment.rsc +6 -6
  546. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_head.segment.rsc +1 -1
  547. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_index.segment.rsc +4 -4
  548. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_tree.segment.rsc +2 -2
  549. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  550. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.rsc +6 -6
  551. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  552. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  553. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  554. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  555. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
  556. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  557. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
  558. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  559. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  560. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +6 -6
  561. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  562. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  563. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  564. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  565. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  566. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +6 -6
  567. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  568. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +4 -4
  569. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
  570. package/cli/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  571. package/cli/app/.next-cli-build/server/app/dashboard/mitm.rsc +6 -6
  572. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  573. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  574. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  575. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  576. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
  577. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  578. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +4 -4
  579. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  580. package/cli/app/.next-cli-build/server/app/dashboard/playground.html +1 -0
  581. package/cli/app/.next-cli-build/server/app/dashboard/playground.meta +17 -0
  582. package/cli/app/.next-cli-build/server/app/dashboard/playground.rsc +23 -0
  583. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground/__PAGE__.segment.rsc +6 -0
  584. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground.segment.rsc +5 -0
  585. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +5 -0
  586. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk.segment.rsc +6 -0
  587. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_full.segment.rsc +23 -0
  588. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_head.segment.rsc +6 -0
  589. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_index.segment.rsc +8 -0
  590. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_tree.segment.rsc +5 -0
  591. package/cli/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  592. package/cli/app/.next-cli-build/server/app/dashboard/profile.rsc +6 -6
  593. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  594. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  595. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  596. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  597. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
  598. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  599. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
  600. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  601. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  602. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.rsc +6 -6
  603. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  604. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  605. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  606. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  607. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  608. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
  609. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  610. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
  611. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  612. package/cli/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  613. package/cli/app/.next-cli-build/server/app/dashboard/providers.rsc +6 -6
  614. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  615. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  616. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  617. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  618. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
  619. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  620. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
  621. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  622. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  623. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +6 -6
  624. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  625. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  626. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  627. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  628. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
  629. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  630. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +4 -4
  631. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  632. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
  633. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +6 -6
  634. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
  635. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
  636. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  637. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  638. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +6 -6
  639. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
  640. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +4 -4
  641. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +2 -2
  642. package/cli/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  643. package/cli/app/.next-cli-build/server/app/dashboard/quota.rsc +7 -7
  644. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  645. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  646. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  647. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  648. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
  649. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  650. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +4 -4
  651. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  652. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +2 -2
  653. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  654. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  655. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  656. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +4 -4
  657. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  658. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  659. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
  660. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  661. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  662. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  663. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  664. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  665. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  666. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.rsc +6 -6
  667. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
  668. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  669. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  670. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  671. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +6 -6
  672. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  673. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +4 -4
  674. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +2 -2
  675. package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  676. package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +6 -6
  677. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  678. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  679. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  680. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  681. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
  682. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  683. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
  684. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  685. package/cli/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  686. package/cli/app/.next-cli-build/server/app/dashboard/usage.rsc +6 -6
  687. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  688. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  689. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  690. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  691. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
  692. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  693. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
  694. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  695. package/cli/app/.next-cli-build/server/app/dashboard.html +1 -1
  696. package/cli/app/.next-cli-build/server/app/dashboard.rsc +6 -6
  697. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  698. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  699. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  700. package/cli/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +6 -6
  701. package/cli/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  702. package/cli/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +4 -4
  703. package/cli/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  704. package/cli/app/.next-cli-build/server/app/index.html +1 -1
  705. package/cli/app/.next-cli-build/server/app/index.rsc +4 -4
  706. package/cli/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  707. package/cli/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +4 -4
  708. package/cli/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  709. package/cli/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +4 -4
  710. package/cli/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
  711. package/cli/app/.next-cli-build/server/app/landing/page.js +2 -2
  712. package/cli/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  713. package/cli/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  714. package/cli/app/.next-cli-build/server/app/landing.html +1 -1
  715. package/cli/app/.next-cli-build/server/app/landing.rsc +4 -4
  716. package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
  717. package/cli/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  718. package/cli/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +4 -4
  719. package/cli/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
  720. package/cli/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  721. package/cli/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  722. package/cli/app/.next-cli-build/server/app/login/page.js +2 -2
  723. package/cli/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  724. package/cli/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  725. package/cli/app/.next-cli-build/server/app/login.html +1 -1
  726. package/cli/app/.next-cli-build/server/app/login.rsc +5 -5
  727. package/cli/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +5 -5
  728. package/cli/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  729. package/cli/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +4 -4
  730. package/cli/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
  731. package/cli/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  732. package/cli/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  733. package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route.js +2 -2
  734. package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  735. package/cli/app/.next-cli-build/server/app/page.js +2 -2
  736. package/cli/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  737. package/cli/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  738. package/cli/app/.next-cli-build/server/app-paths-manifest.json +24 -17
  739. package/cli/app/.next-cli-build/server/chunks/1939.js +1 -1
  740. package/cli/app/.next-cli-build/server/chunks/3407.js +1 -1
  741. package/cli/app/.next-cli-build/server/chunks/3487.js +1 -0
  742. package/cli/app/.next-cli-build/server/chunks/412.js +2 -2
  743. package/cli/app/.next-cli-build/server/chunks/4746.js +1 -1
  744. package/cli/app/.next-cli-build/server/chunks/5469.js +1 -0
  745. package/cli/app/.next-cli-build/server/chunks/6896.js +1 -1
  746. package/cli/app/.next-cli-build/server/chunks/7276.js +1 -1
  747. package/cli/app/.next-cli-build/server/functions-config-manifest.json +6 -0
  748. package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  749. package/cli/app/.next-cli-build/server/middleware.js +5 -5
  750. package/cli/app/.next-cli-build/server/pages/404.html +1 -1
  751. package/cli/app/.next-cli-build/server/pages/500.html +1 -1
  752. package/cli/app/.next-cli-build/static/chunks/{3702-8cb8af970b7362e5.js → 3702-004541e7116a1bf2.js} +1 -1
  753. package/cli/app/.next-cli-build/static/chunks/5497-f4d3cd399f5d9718.js +7 -0
  754. package/cli/app/.next-cli-build/static/chunks/9126-5dc2ccda07a8c55e.js +1 -0
  755. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/automation/page-cfd2f9b0b6264c23.js +1 -0
  756. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/basic-chat/page-d021e06a6f101f16.js +1 -0
  757. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/playground/page-42a74aa05fd08ed9.js +1 -0
  758. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-f83194963e8a640d.js +3 -0
  759. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-16cab1ed7e707419.js +1 -0
  760. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/terminal/page-6a5df47510051a5f.js +4 -0
  761. package/cli/app/.next-cli-build/static/chunks/app/_global-error/page-36eea29d57f959c4.js +1 -0
  762. package/cli/app/.next-cli-build/static/chunks/app/api/auth/login/route-36eea29d57f959c4.js +1 -0
  763. package/cli/app/.next-cli-build/static/chunks/app/api/auth/logout/route-36eea29d57f959c4.js +1 -0
  764. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-36eea29d57f959c4.js +1 -0
  765. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-36eea29d57f959c4.js +1 -0
  766. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-36eea29d57f959c4.js +1 -0
  767. package/cli/app/.next-cli-build/static/chunks/app/api/auth/status/route-36eea29d57f959c4.js +1 -0
  768. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-36eea29d57f959c4.js +1 -0
  769. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-36eea29d57f959c4.js +1 -0
  770. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-36eea29d57f959c4.js +1 -0
  771. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-36eea29d57f959c4.js +1 -0
  772. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-36eea29d57f959c4.js +1 -0
  773. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-gateway/accounts/route-36eea29d57f959c4.js +1 -0
  774. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-36eea29d57f959c4.js +1 -0
  775. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-36eea29d57f959c4.js +1 -0
  776. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-36eea29d57f959c4.js +1 -0
  777. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-36eea29d57f959c4.js +1 -0
  778. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-36eea29d57f959c4.js +1 -0
  779. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-36eea29d57f959c4.js +1 -0
  780. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-36eea29d57f959c4.js +1 -0
  781. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-36eea29d57f959c4.js +1 -0
  782. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-36eea29d57f959c4.js +1 -0
  783. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-36eea29d57f959c4.js +1 -0
  784. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-36eea29d57f959c4.js +1 -0
  785. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-36eea29d57f959c4.js +1 -0
  786. package/cli/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-36eea29d57f959c4.js +1 -0
  787. package/cli/app/.next-cli-build/static/chunks/app/api/combos/route-36eea29d57f959c4.js +1 -0
  788. package/cli/app/.next-cli-build/static/chunks/app/api/context/[id]/route-36eea29d57f959c4.js +1 -0
  789. package/cli/app/.next-cli-build/static/chunks/app/api/context/bulk/route-36eea29d57f959c4.js +1 -0
  790. package/cli/app/.next-cli-build/static/chunks/app/api/context/route-36eea29d57f959c4.js +1 -0
  791. package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/chat/completions/route-36eea29d57f959c4.js +1 -0
  792. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-36eea29d57f959c4.js +1 -0
  793. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-36eea29d57f959c4.js +1 -0
  794. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-36eea29d57f959c4.js +1 -0
  795. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/start/route-36eea29d57f959c4.js +1 -0
  796. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/status/route-36eea29d57f959c4.js +1 -0
  797. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-36eea29d57f959c4.js +1 -0
  798. package/cli/app/.next-cli-build/static/chunks/app/api/health/route-36eea29d57f959c4.js +1 -0
  799. package/cli/app/.next-cli-build/static/chunks/app/api/init/route-36eea29d57f959c4.js +1 -0
  800. package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-36eea29d57f959c4.js +1 -0
  801. package/cli/app/.next-cli-build/static/chunks/app/api/keys/route-36eea29d57f959c4.js +1 -0
  802. package/cli/app/.next-cli-build/static/chunks/app/api/locale/route-36eea29d57f959c4.js +1 -0
  803. package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-36eea29d57f959c4.js +1 -0
  804. package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-36eea29d57f959c4.js +1 -0
  805. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-36eea29d57f959c4.js +1 -0
  806. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-36eea29d57f959c4.js +1 -0
  807. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-36eea29d57f959c4.js +1 -0
  808. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-36eea29d57f959c4.js +1 -0
  809. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-36eea29d57f959c4.js +1 -0
  810. package/cli/app/.next-cli-build/static/chunks/app/api/models/alias/route-36eea29d57f959c4.js +1 -0
  811. package/cli/app/.next-cli-build/static/chunks/app/api/models/availability/route-36eea29d57f959c4.js +1 -0
  812. package/cli/app/.next-cli-build/static/chunks/app/api/models/custom/route-36eea29d57f959c4.js +1 -0
  813. package/cli/app/.next-cli-build/static/chunks/app/api/models/disabled/route-36eea29d57f959c4.js +1 -0
  814. package/cli/app/.next-cli-build/static/chunks/app/api/models/route-36eea29d57f959c4.js +1 -0
  815. package/cli/app/.next-cli-build/static/chunks/app/api/models/test/route-36eea29d57f959c4.js +1 -0
  816. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-36eea29d57f959c4.js +1 -0
  817. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route-36eea29d57f959c4.js +1 -0
  818. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route-36eea29d57f959c4.js +1 -0
  819. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/route-36eea29d57f959c4.js +1 -0
  820. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/latest/route-36eea29d57f959c4.js +1 -0
  821. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/route-36eea29d57f959c4.js +1 -0
  822. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/autoclaw/bulk-import/[jobId]/cancel/route-36eea29d57f959c4.js +1 -0
  823. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/autoclaw/bulk-import/[jobId]/manual/[workerId]/route-36eea29d57f959c4.js +1 -0
  824. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/autoclaw/bulk-import/[jobId]/route-36eea29d57f959c4.js +1 -0
  825. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/autoclaw/bulk-import/latest/route-36eea29d57f959c4.js +1 -0
  826. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/autoclaw/bulk-import/route-36eea29d57f959c4.js +1 -0
  827. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route-36eea29d57f959c4.js +1 -0
  828. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route-36eea29d57f959c4.js +1 -0
  829. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/route-36eea29d57f959c4.js +1 -0
  830. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/latest/route-36eea29d57f959c4.js +1 -0
  831. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/route-36eea29d57f959c4.js +1 -0
  832. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-token/route-36eea29d57f959c4.js +1 -0
  833. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/quota-cookie/route-36eea29d57f959c4.js +1 -0
  834. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route-36eea29d57f959c4.js +1 -0
  835. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route-36eea29d57f959c4.js +1 -0
  836. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route-36eea29d57f959c4.js +1 -0
  837. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/latest/route-36eea29d57f959c4.js +1 -0
  838. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/route-36eea29d57f959c4.js +1 -0
  839. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-token/route-36eea29d57f959c4.js +1 -0
  840. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/quota-cookie/route-36eea29d57f959c4.js +1 -0
  841. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-36eea29d57f959c4.js +1 -0
  842. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-36eea29d57f959c4.js +1 -0
  843. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-36eea29d57f959c4.js +1 -0
  844. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-36eea29d57f959c4.js +1 -0
  845. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/cancel/route-36eea29d57f959c4.js +1 -0
  846. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route-36eea29d57f959c4.js +1 -0
  847. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/route-36eea29d57f959c4.js +1 -0
  848. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/latest/route-36eea29d57f959c4.js +1 -0
  849. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/route-36eea29d57f959c4.js +1 -0
  850. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-36eea29d57f959c4.js +1 -0
  851. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-36eea29d57f959c4.js +1 -0
  852. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route-36eea29d57f959c4.js +1 -0
  853. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route-36eea29d57f959c4.js +1 -0
  854. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/route-36eea29d57f959c4.js +1 -0
  855. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/latest/route-36eea29d57f959c4.js +1 -0
  856. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/route-36eea29d57f959c4.js +1 -0
  857. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-36eea29d57f959c4.js +1 -0
  858. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-36eea29d57f959c4.js +1 -0
  859. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-36eea29d57f959c4.js +1 -0
  860. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route-36eea29d57f959c4.js +1 -0
  861. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route-36eea29d57f959c4.js +1 -0
  862. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/route-36eea29d57f959c4.js +1 -0
  863. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/latest/route-36eea29d57f959c4.js +1 -0
  864. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/route-36eea29d57f959c4.js +1 -0
  865. package/cli/app/.next-cli-build/static/chunks/app/api/pricing/route-36eea29d57f959c4.js +1 -0
  866. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-36eea29d57f959c4.js +1 -0
  867. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-36eea29d57f959c4.js +1 -0
  868. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-36eea29d57f959c4.js +1 -0
  869. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-36eea29d57f959c4.js +1 -0
  870. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-36eea29d57f959c4.js +1 -0
  871. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-36eea29d57f959c4.js +1 -0
  872. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-36eea29d57f959c4.js +1 -0
  873. package/cli/app/.next-cli-build/static/chunks/app/api/providers/bulk-delete/route-36eea29d57f959c4.js +1 -0
  874. package/cli/app/.next-cli-build/static/chunks/app/api/providers/client/route-36eea29d57f959c4.js +1 -0
  875. package/cli/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-36eea29d57f959c4.js +1 -0
  876. package/cli/app/.next-cli-build/static/chunks/app/api/providers/route-36eea29d57f959c4.js +1 -0
  877. package/cli/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-36eea29d57f959c4.js +1 -0
  878. package/cli/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-36eea29d57f959c4.js +1 -0
  879. package/cli/app/.next-cli-build/static/chunks/app/api/providers/validate/route-36eea29d57f959c4.js +1 -0
  880. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-36eea29d57f959c4.js +1 -0
  881. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-36eea29d57f959c4.js +1 -0
  882. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-36eea29d57f959c4.js +1 -0
  883. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-36eea29d57f959c4.js +1 -0
  884. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-36eea29d57f959c4.js +1 -0
  885. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-36eea29d57f959c4.js +1 -0
  886. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-36eea29d57f959c4.js +1 -0
  887. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-36eea29d57f959c4.js +1 -0
  888. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-36eea29d57f959c4.js +1 -0
  889. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-36eea29d57f959c4.js +1 -0
  890. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-36eea29d57f959c4.js +1 -0
  891. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-36eea29d57f959c4.js +1 -0
  892. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-36eea29d57f959c4.js +1 -0
  893. package/cli/app/.next-cli-build/static/chunks/app/api/settings/database/route-36eea29d57f959c4.js +1 -0
  894. package/cli/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-36eea29d57f959c4.js +1 -0
  895. package/cli/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-36eea29d57f959c4.js +1 -0
  896. package/cli/app/.next-cli-build/static/chunks/app/api/settings/route-36eea29d57f959c4.js +1 -0
  897. package/cli/app/.next-cli-build/static/chunks/app/api/shutdown/route-36eea29d57f959c4.js +1 -0
  898. package/cli/app/.next-cli-build/static/chunks/app/api/tags/route-36eea29d57f959c4.js +1 -0
  899. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/input/route-36eea29d57f959c4.js +1 -0
  900. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/resize/route-36eea29d57f959c4.js +1 -0
  901. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/route-36eea29d57f959c4.js +1 -0
  902. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/stream/route-36eea29d57f959c4.js +1 -0
  903. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/route-36eea29d57f959c4.js +1 -0
  904. package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-36eea29d57f959c4.js +1 -0
  905. package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-36eea29d57f959c4.js +1 -0
  906. package/cli/app/.next-cli-build/static/chunks/app/api/translator/load/route-36eea29d57f959c4.js +1 -0
  907. package/cli/app/.next-cli-build/static/chunks/app/api/translator/save/route-36eea29d57f959c4.js +1 -0
  908. package/cli/app/.next-cli-build/static/chunks/app/api/translator/send/route-36eea29d57f959c4.js +1 -0
  909. package/cli/app/.next-cli-build/static/chunks/app/api/translator/translate/route-36eea29d57f959c4.js +1 -0
  910. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-36eea29d57f959c4.js +1 -0
  911. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-36eea29d57f959c4.js +1 -0
  912. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-36eea29d57f959c4.js +1 -0
  913. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-36eea29d57f959c4.js +1 -0
  914. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-36eea29d57f959c4.js +1 -0
  915. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-36eea29d57f959c4.js +1 -0
  916. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-36eea29d57f959c4.js +1 -0
  917. package/cli/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-36eea29d57f959c4.js +1 -0
  918. package/cli/app/.next-cli-build/static/chunks/app/api/usage/aggregate/route-36eea29d57f959c4.js +1 -0
  919. package/cli/app/.next-cli-build/static/chunks/app/api/usage/chart/route-36eea29d57f959c4.js +1 -0
  920. package/cli/app/.next-cli-build/static/chunks/app/api/usage/history/route-36eea29d57f959c4.js +1 -0
  921. package/cli/app/.next-cli-build/static/chunks/app/api/usage/providers/route-36eea29d57f959c4.js +1 -0
  922. package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-36eea29d57f959c4.js +1 -0
  923. package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-36eea29d57f959c4.js +1 -0
  924. package/cli/app/.next-cli-build/static/chunks/app/api/usage/stats/route-36eea29d57f959c4.js +1 -0
  925. package/cli/app/.next-cli-build/static/chunks/app/api/usage/stream/route-36eea29d57f959c4.js +1 -0
  926. package/cli/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-36eea29d57f959c4.js +1 -0
  927. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-36eea29d57f959c4.js +1 -0
  928. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-36eea29d57f959c4.js +1 -0
  929. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-36eea29d57f959c4.js +1 -0
  930. package/cli/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-36eea29d57f959c4.js +1 -0
  931. package/cli/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-36eea29d57f959c4.js +1 -0
  932. package/cli/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-36eea29d57f959c4.js +1 -0
  933. package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-36eea29d57f959c4.js +1 -0
  934. package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/route-36eea29d57f959c4.js +1 -0
  935. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-36eea29d57f959c4.js +1 -0
  936. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-36eea29d57f959c4.js +1 -0
  937. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/route-36eea29d57f959c4.js +1 -0
  938. package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-36eea29d57f959c4.js +1 -0
  939. package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/route-36eea29d57f959c4.js +1 -0
  940. package/cli/app/.next-cli-build/static/chunks/app/api/v1/route-36eea29d57f959c4.js +1 -0
  941. package/cli/app/.next-cli-build/static/chunks/app/api/v1/search/route-36eea29d57f959c4.js +1 -0
  942. package/cli/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-36eea29d57f959c4.js +1 -0
  943. package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-36eea29d57f959c4.js +1 -0
  944. package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-36eea29d57f959c4.js +1 -0
  945. package/cli/app/.next-cli-build/static/chunks/app/api/version/route-36eea29d57f959c4.js +1 -0
  946. package/cli/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-36eea29d57f959c4.js +1 -0
  947. package/cli/app/.next-cli-build/static/chunks/app/api/version/update/route-36eea29d57f959c4.js +1 -0
  948. package/cli/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-36eea29d57f959c4.js +1 -0
  949. package/cli/app/.next-cli-build/static/chunks/app/page-36eea29d57f959c4.js +1 -0
  950. package/cli/app/.next-cli-build/static/chunks/e868780c-9fd397bedad188d4.js +18 -0
  951. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-36eea29d57f959c4.js +1 -0
  952. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-36eea29d57f959c4.js +1 -0
  953. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-36eea29d57f959c4.js +1 -0
  954. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-36eea29d57f959c4.js +1 -0
  955. package/cli/app/.next-cli-build/static/chunks/{webpack-f482ccef6733ebcc.js → webpack-948b910ed7afd0b8.js} +1 -1
  956. package/cli/app/.next-cli-build/static/css/3d806a84eaca2701.css +1 -0
  957. package/cli/app/.next-cli-build/static/css/659eccb5db697b76.css +1 -0
  958. package/cli/app/.next-cli-build/static/eShGvWr32_epLWJZSLXwJ/_buildManifest.js +1 -0
  959. package/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
  960. package/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
  961. package/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
  962. package/cli/app/package.json +5 -1
  963. package/cli/app/public/providers/mimo-free.png +0 -0
  964. package/cli/app/server.js +1 -1
  965. package/cli/app/src/lib/terminal/ptyBridge.py +163 -0
  966. package/cli/package.json +1 -1
  967. package/next.config.mjs +4 -2
  968. package/package.json +5 -1
  969. package/public/providers/mimo-free.png +0 -0
  970. package/src/app/(dashboard)/dashboard/automation/page.js +0 -217
  971. package/src/app/(dashboard)/dashboard/basic-chat/BasicChatPageClient.js +752 -226
  972. package/src/app/(dashboard)/dashboard/playground/page.js +5 -0
  973. package/src/app/(dashboard)/dashboard/providers/[id]/page.js +49 -9
  974. package/src/app/(dashboard)/dashboard/providers/page.js +35 -3
  975. package/src/app/(dashboard)/dashboard/terminal/TerminalPageClient.js +474 -0
  976. package/src/app/(dashboard)/dashboard/terminal/page.js +7 -0
  977. package/src/app/api/dashboard/chat/completions/route.js +74 -0
  978. package/src/app/api/oauth/grok-cli/bulk-import/[jobId]/cancel/route.js +1 -5
  979. package/src/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route.js +1 -5
  980. package/src/app/api/oauth/grok-cli/bulk-import/[jobId]/route.js +1 -5
  981. package/src/app/api/oauth/grok-cli/bulk-import/latest/route.js +0 -4
  982. package/src/app/api/oauth/grok-cli/bulk-import/route.js +0 -4
  983. package/src/app/api/settings/route.js +2 -22
  984. package/src/app/api/terminal/session/[id]/input/route.js +29 -0
  985. package/src/app/api/terminal/session/[id]/resize/route.js +15 -0
  986. package/src/app/api/terminal/session/[id]/route.js +32 -0
  987. package/src/app/api/terminal/session/[id]/stream/route.js +92 -0
  988. package/src/app/api/terminal/session/route.js +25 -0
  989. package/src/app/globals.css +75 -0
  990. package/src/dashboardGuard.js +5 -0
  991. package/src/lib/db/repos/settingsRepo.js +0 -2
  992. package/src/lib/terminal/ptyBridge.py +163 -0
  993. package/src/lib/terminal/sessionManager.js +428 -0
  994. package/src/shared/components/BulkAccountAutomationModal.js +10 -29
  995. package/src/shared/components/Header.js +42 -0
  996. package/src/shared/components/Sidebar.js +81 -8
  997. package/src/shared/components/layouts/DashboardLayout.js +17 -3
  998. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/verify-key/route.js +0 -1
  999. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/verify-key/route.js.nft.json +0 -1
  1000. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/verify-key/route_client-reference-manifest.js +0 -1
  1001. package/cli/app/.next-cli-build/server/chunks/3163.js +0 -1
  1002. package/cli/app/.next-cli-build/static/8-zdQpqIFRe0fW-uKveuO/_buildManifest.js +0 -1
  1003. package/cli/app/.next-cli-build/static/chunks/5497-5ccfbb5c9db7ce12.js +0 -7
  1004. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/automation/page-d8e163345f5c3116.js +0 -1
  1005. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/basic-chat/page-91083e17626a1de4.js +0 -1
  1006. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-ce5bb4fbaafe9f76.js +0 -3
  1007. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-a99019c892e1c51d.js +0 -1
  1008. package/cli/app/.next-cli-build/static/chunks/app/_global-error/page-5fb2952aabb0d9ce.js +0 -1
  1009. package/cli/app/.next-cli-build/static/chunks/app/api/auth/login/route-5fb2952aabb0d9ce.js +0 -1
  1010. package/cli/app/.next-cli-build/static/chunks/app/api/auth/logout/route-5fb2952aabb0d9ce.js +0 -1
  1011. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-5fb2952aabb0d9ce.js +0 -1
  1012. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-5fb2952aabb0d9ce.js +0 -1
  1013. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-5fb2952aabb0d9ce.js +0 -1
  1014. package/cli/app/.next-cli-build/static/chunks/app/api/auth/status/route-5fb2952aabb0d9ce.js +0 -1
  1015. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-5fb2952aabb0d9ce.js +0 -1
  1016. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-5fb2952aabb0d9ce.js +0 -1
  1017. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-5fb2952aabb0d9ce.js +0 -1
  1018. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-5fb2952aabb0d9ce.js +0 -1
  1019. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-5fb2952aabb0d9ce.js +0 -1
  1020. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-gateway/accounts/route-5fb2952aabb0d9ce.js +0 -1
  1021. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-5fb2952aabb0d9ce.js +0 -1
  1022. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-5fb2952aabb0d9ce.js +0 -1
  1023. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-5fb2952aabb0d9ce.js +0 -1
  1024. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-5fb2952aabb0d9ce.js +0 -1
  1025. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-5fb2952aabb0d9ce.js +0 -1
  1026. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-5fb2952aabb0d9ce.js +0 -1
  1027. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-5fb2952aabb0d9ce.js +0 -1
  1028. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-5fb2952aabb0d9ce.js +0 -1
  1029. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-5fb2952aabb0d9ce.js +0 -1
  1030. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-5fb2952aabb0d9ce.js +0 -1
  1031. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-5fb2952aabb0d9ce.js +0 -1
  1032. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-5fb2952aabb0d9ce.js +0 -1
  1033. package/cli/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-5fb2952aabb0d9ce.js +0 -1
  1034. package/cli/app/.next-cli-build/static/chunks/app/api/combos/route-5fb2952aabb0d9ce.js +0 -1
  1035. package/cli/app/.next-cli-build/static/chunks/app/api/context/[id]/route-5fb2952aabb0d9ce.js +0 -1
  1036. package/cli/app/.next-cli-build/static/chunks/app/api/context/bulk/route-5fb2952aabb0d9ce.js +0 -1
  1037. package/cli/app/.next-cli-build/static/chunks/app/api/context/route-5fb2952aabb0d9ce.js +0 -1
  1038. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-5fb2952aabb0d9ce.js +0 -1
  1039. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-5fb2952aabb0d9ce.js +0 -1
  1040. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-5fb2952aabb0d9ce.js +0 -1
  1041. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/start/route-5fb2952aabb0d9ce.js +0 -1
  1042. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/status/route-5fb2952aabb0d9ce.js +0 -1
  1043. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-5fb2952aabb0d9ce.js +0 -1
  1044. package/cli/app/.next-cli-build/static/chunks/app/api/health/route-5fb2952aabb0d9ce.js +0 -1
  1045. package/cli/app/.next-cli-build/static/chunks/app/api/init/route-5fb2952aabb0d9ce.js +0 -1
  1046. package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-5fb2952aabb0d9ce.js +0 -1
  1047. package/cli/app/.next-cli-build/static/chunks/app/api/keys/route-5fb2952aabb0d9ce.js +0 -1
  1048. package/cli/app/.next-cli-build/static/chunks/app/api/locale/route-5fb2952aabb0d9ce.js +0 -1
  1049. package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-5fb2952aabb0d9ce.js +0 -1
  1050. package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-5fb2952aabb0d9ce.js +0 -1
  1051. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-5fb2952aabb0d9ce.js +0 -1
  1052. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-5fb2952aabb0d9ce.js +0 -1
  1053. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-5fb2952aabb0d9ce.js +0 -1
  1054. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-5fb2952aabb0d9ce.js +0 -1
  1055. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-5fb2952aabb0d9ce.js +0 -1
  1056. package/cli/app/.next-cli-build/static/chunks/app/api/models/alias/route-5fb2952aabb0d9ce.js +0 -1
  1057. package/cli/app/.next-cli-build/static/chunks/app/api/models/availability/route-5fb2952aabb0d9ce.js +0 -1
  1058. package/cli/app/.next-cli-build/static/chunks/app/api/models/custom/route-5fb2952aabb0d9ce.js +0 -1
  1059. package/cli/app/.next-cli-build/static/chunks/app/api/models/disabled/route-5fb2952aabb0d9ce.js +0 -1
  1060. package/cli/app/.next-cli-build/static/chunks/app/api/models/route-5fb2952aabb0d9ce.js +0 -1
  1061. package/cli/app/.next-cli-build/static/chunks/app/api/models/test/route-5fb2952aabb0d9ce.js +0 -1
  1062. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-5fb2952aabb0d9ce.js +0 -1
  1063. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route-5fb2952aabb0d9ce.js +0 -1
  1064. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route-5fb2952aabb0d9ce.js +0 -1
  1065. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/route-5fb2952aabb0d9ce.js +0 -1
  1066. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/latest/route-5fb2952aabb0d9ce.js +0 -1
  1067. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/route-5fb2952aabb0d9ce.js +0 -1
  1068. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/autoclaw/bulk-import/[jobId]/cancel/route-5fb2952aabb0d9ce.js +0 -1
  1069. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/autoclaw/bulk-import/[jobId]/manual/[workerId]/route-5fb2952aabb0d9ce.js +0 -1
  1070. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/autoclaw/bulk-import/[jobId]/route-5fb2952aabb0d9ce.js +0 -1
  1071. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/autoclaw/bulk-import/latest/route-5fb2952aabb0d9ce.js +0 -1
  1072. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/autoclaw/bulk-import/route-5fb2952aabb0d9ce.js +0 -1
  1073. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route-5fb2952aabb0d9ce.js +0 -1
  1074. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route-5fb2952aabb0d9ce.js +0 -1
  1075. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/route-5fb2952aabb0d9ce.js +0 -1
  1076. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/latest/route-5fb2952aabb0d9ce.js +0 -1
  1077. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/route-5fb2952aabb0d9ce.js +0 -1
  1078. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-token/route-5fb2952aabb0d9ce.js +0 -1
  1079. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/quota-cookie/route-5fb2952aabb0d9ce.js +0 -1
  1080. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route-5fb2952aabb0d9ce.js +0 -1
  1081. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route-5fb2952aabb0d9ce.js +0 -1
  1082. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route-5fb2952aabb0d9ce.js +0 -1
  1083. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/latest/route-5fb2952aabb0d9ce.js +0 -1
  1084. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/route-5fb2952aabb0d9ce.js +0 -1
  1085. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-token/route-5fb2952aabb0d9ce.js +0 -1
  1086. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/quota-cookie/route-5fb2952aabb0d9ce.js +0 -1
  1087. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-5fb2952aabb0d9ce.js +0 -1
  1088. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-5fb2952aabb0d9ce.js +0 -1
  1089. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-5fb2952aabb0d9ce.js +0 -1
  1090. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-5fb2952aabb0d9ce.js +0 -1
  1091. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/cancel/route-5fb2952aabb0d9ce.js +0 -1
  1092. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route-5fb2952aabb0d9ce.js +0 -1
  1093. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/route-5fb2952aabb0d9ce.js +0 -1
  1094. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/latest/route-5fb2952aabb0d9ce.js +0 -1
  1095. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/route-5fb2952aabb0d9ce.js +0 -1
  1096. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/verify-key/route-5fb2952aabb0d9ce.js +0 -1
  1097. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-5fb2952aabb0d9ce.js +0 -1
  1098. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-5fb2952aabb0d9ce.js +0 -1
  1099. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route-5fb2952aabb0d9ce.js +0 -1
  1100. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route-5fb2952aabb0d9ce.js +0 -1
  1101. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/route-5fb2952aabb0d9ce.js +0 -1
  1102. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/latest/route-5fb2952aabb0d9ce.js +0 -1
  1103. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/route-5fb2952aabb0d9ce.js +0 -1
  1104. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-5fb2952aabb0d9ce.js +0 -1
  1105. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-5fb2952aabb0d9ce.js +0 -1
  1106. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-5fb2952aabb0d9ce.js +0 -1
  1107. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route-5fb2952aabb0d9ce.js +0 -1
  1108. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route-5fb2952aabb0d9ce.js +0 -1
  1109. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/route-5fb2952aabb0d9ce.js +0 -1
  1110. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/latest/route-5fb2952aabb0d9ce.js +0 -1
  1111. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/route-5fb2952aabb0d9ce.js +0 -1
  1112. package/cli/app/.next-cli-build/static/chunks/app/api/pricing/route-5fb2952aabb0d9ce.js +0 -1
  1113. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-5fb2952aabb0d9ce.js +0 -1
  1114. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-5fb2952aabb0d9ce.js +0 -1
  1115. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-5fb2952aabb0d9ce.js +0 -1
  1116. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-5fb2952aabb0d9ce.js +0 -1
  1117. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-5fb2952aabb0d9ce.js +0 -1
  1118. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-5fb2952aabb0d9ce.js +0 -1
  1119. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-5fb2952aabb0d9ce.js +0 -1
  1120. package/cli/app/.next-cli-build/static/chunks/app/api/providers/bulk-delete/route-5fb2952aabb0d9ce.js +0 -1
  1121. package/cli/app/.next-cli-build/static/chunks/app/api/providers/client/route-5fb2952aabb0d9ce.js +0 -1
  1122. package/cli/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-5fb2952aabb0d9ce.js +0 -1
  1123. package/cli/app/.next-cli-build/static/chunks/app/api/providers/route-5fb2952aabb0d9ce.js +0 -1
  1124. package/cli/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-5fb2952aabb0d9ce.js +0 -1
  1125. package/cli/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-5fb2952aabb0d9ce.js +0 -1
  1126. package/cli/app/.next-cli-build/static/chunks/app/api/providers/validate/route-5fb2952aabb0d9ce.js +0 -1
  1127. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-5fb2952aabb0d9ce.js +0 -1
  1128. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-5fb2952aabb0d9ce.js +0 -1
  1129. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-5fb2952aabb0d9ce.js +0 -1
  1130. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-5fb2952aabb0d9ce.js +0 -1
  1131. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-5fb2952aabb0d9ce.js +0 -1
  1132. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-5fb2952aabb0d9ce.js +0 -1
  1133. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-5fb2952aabb0d9ce.js +0 -1
  1134. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-5fb2952aabb0d9ce.js +0 -1
  1135. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-5fb2952aabb0d9ce.js +0 -1
  1136. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-5fb2952aabb0d9ce.js +0 -1
  1137. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-5fb2952aabb0d9ce.js +0 -1
  1138. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-5fb2952aabb0d9ce.js +0 -1
  1139. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-5fb2952aabb0d9ce.js +0 -1
  1140. package/cli/app/.next-cli-build/static/chunks/app/api/settings/database/route-5fb2952aabb0d9ce.js +0 -1
  1141. package/cli/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-5fb2952aabb0d9ce.js +0 -1
  1142. package/cli/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-5fb2952aabb0d9ce.js +0 -1
  1143. package/cli/app/.next-cli-build/static/chunks/app/api/settings/route-5fb2952aabb0d9ce.js +0 -1
  1144. package/cli/app/.next-cli-build/static/chunks/app/api/shutdown/route-5fb2952aabb0d9ce.js +0 -1
  1145. package/cli/app/.next-cli-build/static/chunks/app/api/tags/route-5fb2952aabb0d9ce.js +0 -1
  1146. package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-5fb2952aabb0d9ce.js +0 -1
  1147. package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-5fb2952aabb0d9ce.js +0 -1
  1148. package/cli/app/.next-cli-build/static/chunks/app/api/translator/load/route-5fb2952aabb0d9ce.js +0 -1
  1149. package/cli/app/.next-cli-build/static/chunks/app/api/translator/save/route-5fb2952aabb0d9ce.js +0 -1
  1150. package/cli/app/.next-cli-build/static/chunks/app/api/translator/send/route-5fb2952aabb0d9ce.js +0 -1
  1151. package/cli/app/.next-cli-build/static/chunks/app/api/translator/translate/route-5fb2952aabb0d9ce.js +0 -1
  1152. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-5fb2952aabb0d9ce.js +0 -1
  1153. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-5fb2952aabb0d9ce.js +0 -1
  1154. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-5fb2952aabb0d9ce.js +0 -1
  1155. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-5fb2952aabb0d9ce.js +0 -1
  1156. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-5fb2952aabb0d9ce.js +0 -1
  1157. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-5fb2952aabb0d9ce.js +0 -1
  1158. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-5fb2952aabb0d9ce.js +0 -1
  1159. package/cli/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-5fb2952aabb0d9ce.js +0 -1
  1160. package/cli/app/.next-cli-build/static/chunks/app/api/usage/aggregate/route-5fb2952aabb0d9ce.js +0 -1
  1161. package/cli/app/.next-cli-build/static/chunks/app/api/usage/chart/route-5fb2952aabb0d9ce.js +0 -1
  1162. package/cli/app/.next-cli-build/static/chunks/app/api/usage/history/route-5fb2952aabb0d9ce.js +0 -1
  1163. package/cli/app/.next-cli-build/static/chunks/app/api/usage/providers/route-5fb2952aabb0d9ce.js +0 -1
  1164. package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-5fb2952aabb0d9ce.js +0 -1
  1165. package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-5fb2952aabb0d9ce.js +0 -1
  1166. package/cli/app/.next-cli-build/static/chunks/app/api/usage/stats/route-5fb2952aabb0d9ce.js +0 -1
  1167. package/cli/app/.next-cli-build/static/chunks/app/api/usage/stream/route-5fb2952aabb0d9ce.js +0 -1
  1168. package/cli/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-5fb2952aabb0d9ce.js +0 -1
  1169. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-5fb2952aabb0d9ce.js +0 -1
  1170. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-5fb2952aabb0d9ce.js +0 -1
  1171. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-5fb2952aabb0d9ce.js +0 -1
  1172. package/cli/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-5fb2952aabb0d9ce.js +0 -1
  1173. package/cli/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-5fb2952aabb0d9ce.js +0 -1
  1174. package/cli/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-5fb2952aabb0d9ce.js +0 -1
  1175. package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-5fb2952aabb0d9ce.js +0 -1
  1176. package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/route-5fb2952aabb0d9ce.js +0 -1
  1177. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-5fb2952aabb0d9ce.js +0 -1
  1178. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-5fb2952aabb0d9ce.js +0 -1
  1179. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/route-5fb2952aabb0d9ce.js +0 -1
  1180. package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-5fb2952aabb0d9ce.js +0 -1
  1181. package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/route-5fb2952aabb0d9ce.js +0 -1
  1182. package/cli/app/.next-cli-build/static/chunks/app/api/v1/route-5fb2952aabb0d9ce.js +0 -1
  1183. package/cli/app/.next-cli-build/static/chunks/app/api/v1/search/route-5fb2952aabb0d9ce.js +0 -1
  1184. package/cli/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-5fb2952aabb0d9ce.js +0 -1
  1185. package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-5fb2952aabb0d9ce.js +0 -1
  1186. package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-5fb2952aabb0d9ce.js +0 -1
  1187. package/cli/app/.next-cli-build/static/chunks/app/api/version/route-5fb2952aabb0d9ce.js +0 -1
  1188. package/cli/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-5fb2952aabb0d9ce.js +0 -1
  1189. package/cli/app/.next-cli-build/static/chunks/app/api/version/update/route-5fb2952aabb0d9ce.js +0 -1
  1190. package/cli/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-5fb2952aabb0d9ce.js +0 -1
  1191. package/cli/app/.next-cli-build/static/chunks/app/page-5fb2952aabb0d9ce.js +0 -1
  1192. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-5fb2952aabb0d9ce.js +0 -1
  1193. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-5fb2952aabb0d9ce.js +0 -1
  1194. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-5fb2952aabb0d9ce.js +0 -1
  1195. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-5fb2952aabb0d9ce.js +0 -1
  1196. package/cli/app/.next-cli-build/static/css/60f1db84eb75a556.css +0 -1
  1197. package/src/app/api/oauth/grok-cli/verify-key/route.js +0 -52
  1198. package/src/lib/oauth/services/grokAutomationGate.js +0 -95
  1199. /package/cli/app/.next-cli-build/static/{8-zdQpqIFRe0fW-uKveuO → eShGvWr32_epLWJZSLXwJ}/_ssgManifest.js +0 -0
@@ -1,17 +1,36 @@
1
1
  "use client";
2
2
 
3
3
  import { useEffect, useMemo, useRef, useState } from "react";
4
- import { Badge, Button } from "@/shared/components";
4
+ import { marked } from "marked";
5
+ import { Badge } from "@/shared/components";
5
6
  import { getModelsByProviderId } from "@/shared/constants/models";
6
- import { isAnthropicCompatibleProvider, isOpenAICompatibleProvider } from "@/shared/constants/providers";
7
+ import {
8
+ AI_PROVIDERS,
9
+ isAnthropicCompatibleProvider,
10
+ isOpenAICompatibleProvider,
11
+ } from "@/shared/constants/providers";
7
12
 
8
13
  const STORAGE_KEYS = {
9
14
  sessions: "basic-chat.sessions",
10
15
  activeSessionId: "basic-chat.activeSessionId",
11
16
  activeProviderId: "basic-chat.activeProviderId",
12
17
  draft: "basic-chat.draft",
18
+ temperature: "basic-chat.temperature",
19
+ systemPrompt: "basic-chat.systemPrompt",
13
20
  };
14
21
 
22
+ const SUGGESTIONS = [
23
+ "Explain this project like I'm new",
24
+ "Write a concise PR description",
25
+ "Debug this error message",
26
+ "Summarize the key trade-offs",
27
+ ];
28
+
29
+ marked.setOptions({
30
+ gfm: true,
31
+ breaks: true,
32
+ });
33
+
15
34
  function createId() {
16
35
  if (globalThis.crypto?.randomUUID) return globalThis.crypto.randomUUID();
17
36
  return `chat_${Date.now()}_${Math.random().toString(16).slice(2)}`;
@@ -41,6 +60,16 @@ function textValue(value) {
41
60
  return String(value);
42
61
  }
43
62
 
63
+ function renderMarkdown(text) {
64
+ const raw = textValue(text);
65
+ if (!raw) return "";
66
+ try {
67
+ return marked.parse(raw);
68
+ } catch {
69
+ return raw.replace(/</g, "&lt;").replace(/>/g, "&gt;");
70
+ }
71
+ }
72
+
44
73
  function humanize(value = "") {
45
74
  return String(value)
46
75
  .replace(/[-_]/g, " ")
@@ -110,7 +139,10 @@ function cloneSession(session) {
110
139
  }
111
140
 
112
141
  function getProviderLabel(connection) {
113
- return connection?.name || humanize(connection?.provider || connection?.id || "provider");
142
+ const providerId = connection?.provider || connection?.id;
143
+ const catalog = providerId ? AI_PROVIDERS[providerId] : null;
144
+ // Prefer product name (CodeBuddy CN), not per-account email/phone
145
+ return catalog?.name || humanize(providerId || "provider");
114
146
  }
115
147
 
116
148
  function normalizeStaticModel(model, connection) {
@@ -166,6 +198,43 @@ function dedupeModels(models) {
166
198
  return Array.from(map.values());
167
199
  }
168
200
 
201
+ function finalizeProviderGroups(providerMap) {
202
+ return Array.from(providerMap.values())
203
+ .map((group) => ({
204
+ ...group,
205
+ models: dedupeModels(group.models).sort((a, b) => a.name.localeCompare(b.name)),
206
+ }))
207
+ .filter((group) => group.models.length > 0)
208
+ .sort((a, b) => a.providerName.localeCompare(b.providerName));
209
+ }
210
+
211
+ /** Fetch with hard timeout so one slow provider never blocks the UI forever. */
212
+ async function fetchWithTimeout(url, options = {}, timeoutMs = 8000) {
213
+ const controller = new AbortController();
214
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
215
+ try {
216
+ return await fetch(url, { ...options, signal: controller.signal });
217
+ } finally {
218
+ clearTimeout(timer);
219
+ }
220
+ }
221
+
222
+ /** Run async work with a concurrency ceiling (avoids 800+ parallel /models calls). */
223
+ async function mapPool(items, concurrency, worker) {
224
+ if (!items.length) return [];
225
+ const results = new Array(items.length);
226
+ let next = 0;
227
+ const runners = Array.from({ length: Math.min(concurrency, items.length) }, async () => {
228
+ while (next < items.length) {
229
+ const index = next;
230
+ next += 1;
231
+ results[index] = await worker(items[index], index);
232
+ }
233
+ });
234
+ await Promise.all(runners);
235
+ return results;
236
+ }
237
+
169
238
  export default function BasicChatPageClient() {
170
239
  const [providerGroups, setProviderGroups] = useState([]);
171
240
  const [loadingData, setLoadingData] = useState(true);
@@ -199,12 +268,28 @@ export default function BasicChatPageClient() {
199
268
  const [streamingText, setStreamingText] = useState("");
200
269
  const [isHydrated, setIsHydrated] = useState(false);
201
270
  const [modelMenuOpen, setModelMenuOpen] = useState(false);
271
+ const [modelQuery, setModelQuery] = useState("");
202
272
  const [historyOpen, setHistoryOpen] = useState(false);
273
+ const [settingsOpen, setSettingsOpen] = useState(false);
274
+ const [copiedId, setCopiedId] = useState("");
275
+ const [temperature, setTemperature] = useState(() => {
276
+ if (typeof window === "undefined") return 0.7;
277
+ const raw = globalThis.localStorage.getItem(STORAGE_KEYS.temperature);
278
+ const n = Number(raw);
279
+ return Number.isFinite(n) ? Math.min(2, Math.max(0, n)) : 0.7;
280
+ });
281
+ const [systemPrompt, setSystemPrompt] = useState(() => {
282
+ if (typeof window === "undefined") return "";
283
+ return globalThis.localStorage.getItem(STORAGE_KEYS.systemPrompt) || "";
284
+ });
203
285
  const fileInputRef = useRef(null);
204
286
  const abortRef = useRef(null);
205
287
  const initializedRef = useRef(false);
206
288
  const modelMenuRef = useRef(null);
207
289
  const historyMenuRef = useRef(null);
290
+ const settingsMenuRef = useRef(null);
291
+ const textareaRef = useRef(null);
292
+ const messagesEndRef = useRef(null);
208
293
 
209
294
  useEffect(() => {
210
295
  setIsHydrated(true);
@@ -218,7 +303,7 @@ export default function BasicChatPageClient() {
218
303
  setLoadError("");
219
304
 
220
305
  try {
221
- const providersRes = await fetch("/api/providers", { cache: "no-store" });
306
+ const providersRes = await fetchWithTimeout("/api/providers", { cache: "no-store" }, 15000);
222
307
  const providersData = await providersRes.json().catch(() => ({}));
223
308
  const connections = Array.isArray(providersData.connections)
224
309
  ? providersData.connections.filter((connection) => connection?.isActive !== false)
@@ -228,11 +313,14 @@ export default function BasicChatPageClient() {
228
313
  if (!cancelled) {
229
314
  setProviderGroups([]);
230
315
  setLoadError("No providers connected yet.");
316
+ setLoadingData(false);
231
317
  }
232
318
  return;
233
319
  }
234
320
 
235
321
  const providerMap = new Map();
322
+ // One representative connection per provider type — no need to hit /models 800×
323
+ const liveFetchTargets = [];
236
324
 
237
325
  for (const connection of connections) {
238
326
  const providerId = connection.provider || connection.id;
@@ -251,63 +339,79 @@ export default function BasicChatPageClient() {
251
339
  connections: [],
252
340
  models: [],
253
341
  });
342
+
343
+ // Static catalog once per provider (not once per connection)
344
+ const staticModels = getModelsByProviderId(providerId)
345
+ .map((model) => normalizeStaticModel(model, connection))
346
+ .filter(Boolean);
347
+ providerMap.get(providerId).models.push(...staticModels);
348
+
349
+ // Live list once per provider — first active connection is enough
350
+ liveFetchTargets.push(connection);
254
351
  }
255
352
 
256
353
  const group = providerMap.get(providerId);
257
354
  group.providerName = group.providerName || providerName;
258
355
  group.providerType = group.providerType || providerType;
259
356
  group.connections.push(connection);
357
+ }
260
358
 
261
- const staticModels = getModelsByProviderId(providerId)
262
- .map((model) => normalizeStaticModel(model, connection))
263
- .filter(Boolean);
264
- group.models.push(...staticModels);
359
+ // Show static catalog immediately so the picker is usable
360
+ const staticGroups = finalizeProviderGroups(providerMap);
361
+ if (!cancelled) {
362
+ setProviderGroups(staticGroups);
363
+ if (staticGroups.length === 0) {
364
+ setLoadError("Loading live models…");
365
+ } else {
366
+ setLoadError("");
367
+ }
368
+ setLoadingData(false);
265
369
  }
266
370
 
267
- const liveResults = await Promise.all(
268
- connections.map(async (connection) => {
269
- try {
270
- const response = await fetch(`/api/providers/${connection.id}/models`, { cache: "no-store" });
271
- const data = await response.json().catch(() => ({}));
272
- if (!response.ok) return { connection, models: [] };
273
- const models = parseProviderModelsPayload(data)
274
- .map((model) => normalizeLiveModel(model, connection))
275
- .filter(Boolean);
276
- return { connection, models };
277
- } catch {
278
- return { connection, models: [] };
279
- }
280
- })
281
- );
371
+ // Enrich in the background: limited concurrency + per-request timeout
372
+ const liveResults = await mapPool(liveFetchTargets, 6, async (connection) => {
373
+ if (cancelled) return { connection, models: [] };
374
+ try {
375
+ const response = await fetchWithTimeout(
376
+ `/api/providers/${connection.id}/models`,
377
+ { cache: "no-store" },
378
+ 8000
379
+ );
380
+ const data = await response.json().catch(() => ({}));
381
+ if (!response.ok) return { connection, models: [] };
382
+ const models = parseProviderModelsPayload(data)
383
+ .map((model) => normalizeLiveModel(model, connection))
384
+ .filter(Boolean);
385
+ return { connection, models };
386
+ } catch {
387
+ return { connection, models: [] };
388
+ }
389
+ });
390
+
391
+ if (cancelled) return;
282
392
 
283
393
  for (const result of liveResults) {
284
394
  const providerId = result.connection.provider || result.connection.id;
285
395
  const group = providerMap.get(providerId);
286
- if (!group) continue;
396
+ if (!group || !result.models?.length) continue;
287
397
  group.models.push(...result.models);
288
398
  }
289
399
 
290
- const normalized = Array.from(providerMap.values())
291
- .map((group) => ({
292
- ...group,
293
- models: dedupeModels(group.models).sort((a, b) => a.name.localeCompare(b.name)),
294
- }))
295
- .filter((group) => group.models.length > 0)
296
- .sort((a, b) => a.providerName.localeCompare(b.providerName));
297
-
400
+ const normalized = finalizeProviderGroups(providerMap);
298
401
  if (!cancelled) {
299
402
  setProviderGroups(normalized);
300
403
  if (normalized.length === 0) {
301
404
  setLoadError("Providers connected but no models available.");
405
+ } else {
406
+ setLoadError("");
302
407
  }
303
408
  }
304
409
  } catch (error) {
305
410
  if (!cancelled) {
306
411
  setLoadError(textValue(error?.message) || "Failed to load providers/models.");
307
412
  setProviderGroups([]);
413
+ setLoadingData(false);
308
414
  }
309
- } finally {
310
- if (!cancelled) setLoadingData(false);
311
415
  }
312
416
  }
313
417
 
@@ -325,12 +429,27 @@ export default function BasicChatPageClient() {
325
429
  if (historyMenuRef.current && !historyMenuRef.current.contains(event.target)) {
326
430
  setHistoryOpen(false);
327
431
  }
432
+ if (settingsMenuRef.current && !settingsMenuRef.current.contains(event.target)) {
433
+ setSettingsOpen(false);
434
+ }
328
435
  };
329
436
 
330
437
  document.addEventListener("mousedown", handleClickOutside);
331
438
  return () => document.removeEventListener("mousedown", handleClickOutside);
332
439
  }, []);
333
440
 
441
+ useEffect(() => {
442
+ try {
443
+ globalThis.localStorage.setItem(STORAGE_KEYS.temperature, String(temperature));
444
+ } catch { /* ignore */ }
445
+ }, [temperature]);
446
+
447
+ useEffect(() => {
448
+ try {
449
+ globalThis.localStorage.setItem(STORAGE_KEYS.systemPrompt, systemPrompt);
450
+ } catch { /* ignore */ }
451
+ }, [systemPrompt]);
452
+
334
453
  const modelIndex = useMemo(() => {
335
454
  const map = new Map();
336
455
  for (const group of providerGroups) {
@@ -570,15 +689,57 @@ export default function BasicChatPageClient() {
570
689
  }));
571
690
  };
572
691
 
573
- const sendMessage = async () => {
692
+ const resizeTextarea = () => {
693
+ const el = textareaRef.current;
694
+ if (!el) return;
695
+ el.style.height = "auto";
696
+ el.style.height = `${Math.min(el.scrollHeight, Math.round(window.innerHeight * 0.28))}px`;
697
+ };
698
+
699
+ useEffect(() => {
700
+ resizeTextarea();
701
+ }, [draft]);
702
+
703
+ useEffect(() => {
704
+ messagesEndRef.current?.scrollIntoView({ behavior: "smooth", block: "end" });
705
+ }, [currentMessages, streamingText, isSending]);
706
+
707
+ const copyMessage = async (messageId, content) => {
708
+ try {
709
+ await navigator.clipboard.writeText(textValue(content));
710
+ setCopiedId(messageId);
711
+ setTimeout(() => setCopiedId((id) => (id === messageId ? "" : id)), 1500);
712
+ } catch {
713
+ /* ignore */
714
+ }
715
+ };
716
+
717
+ const sendMessage = async (opts = {}) => {
574
718
  const model = activeModel || activeProviderGroup?.models?.[0] || null;
575
719
  if (!model) return;
576
720
 
577
- const userText = draft.trim();
578
- if (!userText && attachments.length === 0) return;
579
-
721
+ const regenerate = opts.regenerate === true;
580
722
  let sessionId = activeSessionId;
581
723
  let session = sessions.find((item) => item.id === sessionId);
724
+
725
+ let userText = typeof opts.userText === "string" ? opts.userText : draft.trim();
726
+ let userAttachments = Array.isArray(opts.attachments) ? opts.attachments : attachments;
727
+
728
+ if (regenerate) {
729
+ if (!session) return;
730
+ const msgs = [...(session.messages || [])];
731
+ // drop trailing assistant (and optional error) to resend last user turn
732
+ while (msgs.length && msgs[msgs.length - 1]?.role === "assistant") msgs.pop();
733
+ const lastUser = [...msgs].reverse().find((m) => m.role === "user");
734
+ if (!lastUser) return;
735
+ userText = textValue(lastUser.content).trim();
736
+ userAttachments = Array.isArray(lastUser.attachments) ? lastUser.attachments : [];
737
+ session = { ...session, messages: msgs };
738
+ setSessions((prev) => prev.map((item) => (item.id === sessionId ? session : item)));
739
+ }
740
+
741
+ if (!userText && (!userAttachments || userAttachments.length === 0)) return;
742
+
582
743
  if (!session) {
583
744
  session = ensureSessionForModel(model);
584
745
  if (!session) return;
@@ -587,18 +748,20 @@ export default function BasicChatPageClient() {
587
748
  setActiveSessionId(sessionId);
588
749
  }
589
750
 
590
- const userMessage = {
591
- id: createId(),
592
- role: "user",
593
- content: userText,
594
- attachments: attachments.map((attachment) => ({
595
- id: attachment.id,
596
- name: attachment.name,
597
- type: attachment.type,
598
- dataUrl: attachment.dataUrl,
599
- })),
600
- createdAt: new Date().toISOString(),
601
- };
751
+ const userMessage = regenerate
752
+ ? null
753
+ : {
754
+ id: createId(),
755
+ role: "user",
756
+ content: userText,
757
+ attachments: (userAttachments || []).map((attachment) => ({
758
+ id: attachment.id,
759
+ name: attachment.name,
760
+ type: attachment.type,
761
+ dataUrl: attachment.dataUrl,
762
+ })),
763
+ createdAt: new Date().toISOString(),
764
+ };
602
765
 
603
766
  const assistantMessageId = createId();
604
767
  const assistantMessage = {
@@ -609,7 +772,10 @@ export default function BasicChatPageClient() {
609
772
  status: "streaming",
610
773
  };
611
774
 
612
- const nextMessages = [...(session.messages || []), userMessage, assistantMessage];
775
+ const baseMessages = regenerate
776
+ ? [...(session.messages || [])]
777
+ : [...(session.messages || []), userMessage];
778
+ const nextMessages = [...baseMessages, assistantMessage];
613
779
  setSessions((prev) => prev.map((item) => (item.id === sessionId ? {
614
780
  ...item,
615
781
  providerId: model.providerId,
@@ -620,8 +786,11 @@ export default function BasicChatPageClient() {
620
786
  updatedAt: new Date().toISOString(),
621
787
  title: item.title === "New chat" ? makeSessionTitle(userText) : item.title,
622
788
  } : item)));
623
- setDraft("");
624
- setAttachments([]);
789
+ if (!regenerate) {
790
+ setDraft("");
791
+ setAttachments([]);
792
+ if (textareaRef.current) textareaRef.current.style.height = "auto";
793
+ }
625
794
  setIsSending(true);
626
795
  setStreamingMessageId(assistantMessageId);
627
796
  setStreamingText("");
@@ -635,6 +804,11 @@ export default function BasicChatPageClient() {
635
804
  content: message.role === "user" ? buildUserContent(message) : message.content,
636
805
  }));
637
806
 
807
+ const system = systemPrompt.trim();
808
+ const messagesForApi = system
809
+ ? [{ role: "system", content: system }, ...requestMessages]
810
+ : requestMessages;
811
+
638
812
  try {
639
813
  const response = await fetch("/api/dashboard/chat/completions", {
640
814
  method: "POST",
@@ -644,8 +818,9 @@ export default function BasicChatPageClient() {
644
818
  },
645
819
  body: JSON.stringify({
646
820
  model: model.requestModel || model.id,
647
- messages: requestMessages,
821
+ messages: messagesForApi,
648
822
  stream: true,
823
+ temperature,
649
824
  }),
650
825
  signal: abortRef.current.signal,
651
826
  });
@@ -735,233 +910,584 @@ export default function BasicChatPageClient() {
735
910
  }
736
911
  };
737
912
 
738
- const modelLabel = activeModel ? `${activeModel.name}` : "Select model";
739
- const modelSubLabel = activeModel ? activeModel.requestModel : "Choose from connected providers";
913
+ const modelLabel = activeModel ? activeModel.name : "Select model";
914
+ const modelSubLabel = activeModel
915
+ ? `${activeModel.providerName || ""} · ${activeModel.requestModel || activeModel.id}`.replace(/^ · /, "")
916
+ : "Connected providers only";
917
+
918
+ const filteredProviderGroups = useMemo(() => {
919
+ const q = modelQuery.trim().toLowerCase();
920
+ if (!q) return providerGroups;
921
+ return providerGroups
922
+ .map((group) => {
923
+ const providerHit = (group.providerName || "").toLowerCase().includes(q)
924
+ || (group.providerId || "").toLowerCase().includes(q);
925
+ const models = providerHit
926
+ ? group.models
927
+ : group.models.filter((model) => {
928
+ const hay = `${model.name || ""} ${model.requestModel || ""} ${model.id || ""}`.toLowerCase();
929
+ return hay.includes(q);
930
+ });
931
+ return { ...group, models };
932
+ })
933
+ .filter((group) => group.models.length > 0);
934
+ }, [providerGroups, modelQuery]);
740
935
 
741
936
  return (
742
- <div className="relative flex-1 flex flex-col h-full min-h-0 min-w-0 bg-[#212121] text-white overflow-hidden">
743
- <div className="relative mx-auto flex flex-1 h-full min-h-0 w-full max-w-4xl flex-col">
744
- <div className="flex shrink-0 items-center justify-between gap-3 px-4 py-3 lg:px-6">
745
- <div ref={modelMenuRef} className="relative">
746
- <button
747
- type="button"
748
- onClick={() => setModelMenuOpen((value) => !value)}
749
- className="flex items-center gap-3 rounded-2xl border border-white/10 bg-white/5 px-4 py-3 text-left transition hover:bg-white/8"
750
- >
751
- <div className="min-w-0">
752
- <div className="flex items-center gap-2">
753
- <span className="text-sm font-semibold text-white">{modelLabel}</span>
754
- <span className="material-symbols-outlined text-[18px] text-white/70">expand_more</span>
755
- </div>
756
- <p className="truncate text-xs text-white/55">{modelSubLabel}</p>
757
- </div>
758
- </button>
759
-
760
- {modelMenuOpen ? (
761
- <div className="absolute left-0 top-[calc(100%+10px)] z-30 w-[min(520px,calc(100vw-2rem))] overflow-hidden rounded-[20px] border border-white/10 bg-[#262626] shadow-2xl shadow-black/50">
762
- <div className="border-b border-white/10 px-4 py-3">
763
- <p className="text-xs uppercase tracking-[0.22em] text-white/45">Models</p>
764
- <p className="text-sm text-white/75">Only from connected providers</p>
765
- </div>
766
- <div className="max-h-[60vh] overflow-y-auto p-2 custom-scrollbar">
767
- {providerGroups.map((group) => (
768
- <div key={group.providerId} className="mb-2 rounded-[16px] border border-white/10 bg-black/20 p-2">
769
- <div className="flex items-center justify-between px-2 py-2">
770
- <p className="text-sm font-semibold text-white">{group.providerName}</p>
771
- <Badge size="sm" variant="default">{group.models.length}</Badge>
772
- </div>
773
- <div className="grid gap-2 sm:grid-cols-2">
774
- {group.models.map((model) => {
775
- const isActive = model.id === activeModelId;
776
- return (
777
- <button
778
- key={model.id}
779
- type="button"
780
- onClick={() => handleSelectModel(model.id)}
781
- className={`rounded-[14px] border px-3 py-3 text-left transition ${isActive ? "border-blue-400/40 bg-blue-500/15" : "border-white/10 bg-white/5 hover:bg-white/8"}`}
782
- >
783
- <div className="flex items-start justify-between gap-3">
784
- <div className="min-w-0">
785
- <p className="truncate text-sm font-medium text-white">{model.name}</p>
786
- <p className="truncate text-[11px] text-white/45">{model.requestModel}</p>
787
- </div>
788
- {isActive ? <span className="material-symbols-outlined text-[18px] text-blue-300">check_circle</span> : null}
789
- </div>
790
- </button>
791
- );
792
- })}
793
- </div>
794
- </div>
795
- ))}
796
- </div>
797
- </div>
798
- ) : null}
799
- </div>
800
-
801
- <div className="flex items-center gap-2">
802
- <button
803
- type="button"
804
- onClick={() => setHistoryOpen((value) => !value)}
805
- className="rounded-2xl border border-white/10 bg-white/5 px-4 py-3 text-sm text-white/80 transition hover:bg-white/8"
806
- >
807
- History
808
- </button>
809
- <Button variant="ghost" size="sm" icon="delete" onClick={handleDeleteCurrentChat} disabled={!activeSessionId || sessions.length === 0}>
810
- Clear
811
- </Button>
812
- </div>
937
+ <div className="relative flex h-full min-h-0 min-w-0 flex-1 overflow-hidden bg-bg text-text-main">
938
+ {/* ── Session sidebar (Open WebUI / ChatGPT style) ── */}
939
+ <aside
940
+ className={`${historyOpen ? "flex" : "hidden"} lg:flex w-[260px] shrink-0 flex-col border-r border-border-subtle bg-surface/60 backdrop-blur-xl`}
941
+ >
942
+ <div className="flex items-center gap-2 border-b border-border-subtle p-3">
943
+ <button
944
+ type="button"
945
+ onClick={handleNewChat}
946
+ disabled={!activeModel}
947
+ className="flex h-9 flex-1 items-center justify-center gap-2 rounded-[10px] bg-primary text-sm font-semibold text-white transition hover:bg-primary-hover disabled:cursor-not-allowed disabled:opacity-50"
948
+ >
949
+ <span className="material-symbols-outlined text-[18px]">add</span>
950
+ New chat
951
+ </button>
952
+ <button
953
+ type="button"
954
+ className="flex size-9 items-center justify-center rounded-[10px] border border-border text-text-muted lg:hidden hover:bg-surface-2"
955
+ onClick={() => setHistoryOpen(false)}
956
+ aria-label="Close history"
957
+ >
958
+ <span className="material-symbols-outlined text-[18px]">close</span>
959
+ </button>
813
960
  </div>
814
961
 
815
- {historyOpen ? (
816
- <div ref={historyMenuRef} className="absolute right-4 top-[72px] z-20 w-[min(360px,calc(100vw-2rem))] rounded-[20px] border border-white/10 bg-[#262626] p-2 shadow-2xl shadow-black/50 lg:right-6">
817
- <div className="px-3 py-2">
818
- <p className="text-xs uppercase tracking-[0.22em] text-white/45">Recent chats</p>
962
+ <div ref={historyMenuRef} className="flex-1 overflow-y-auto p-2 custom-scrollbar">
963
+ <p className="px-2 py-2 text-[11px] font-semibold uppercase tracking-wider text-text-subtle">
964
+ Chats
965
+ </p>
966
+ {sessionItems.length === 0 ? (
967
+ <div className="rounded-[10px] border border-dashed border-border px-3 py-6 text-center text-xs text-text-muted">
968
+ No conversations yet
819
969
  </div>
820
- <div className="max-h-[48vh] space-y-2 overflow-y-auto p-1 custom-scrollbar">
821
- {sessionItems.length === 0 ? (
822
- <div className="rounded-[16px] border border-dashed border-white/10 bg-white/5 p-4 text-sm text-white/55">
823
- No conversations yet.
824
- </div>
825
- ) : sessionItems.map((session) => {
970
+ ) : (
971
+ <div className="space-y-0.5">
972
+ {sessionItems.map((session) => {
826
973
  const isActive = session.id === activeSessionId;
827
- const latestMessage = [...(session.messages || [])].reverse().find((message) => message.role === "user") || session.messages?.[0];
974
+ const latestMessage =
975
+ [...(session.messages || [])].reverse().find((m) => m.role === "user") ||
976
+ session.messages?.[0];
828
977
  return (
829
978
  <button
830
979
  key={session.id}
831
980
  type="button"
832
- onClick={() => handleSelectSession(session.id)}
833
- className={`w-full rounded-[16px] border px-3 py-3 text-left transition ${isActive ? "border-blue-400/40 bg-blue-500/15" : "border-white/10 bg-white/5 hover:bg-white/8"}`}
981
+ onClick={() => {
982
+ handleSelectSession(session.id);
983
+ if (typeof window !== "undefined" && window.innerWidth < 1024) {
984
+ setHistoryOpen(false);
985
+ }
986
+ }}
987
+ className={`group flex w-full items-start gap-2 rounded-[10px] px-2.5 py-2.5 text-left transition ${
988
+ isActive
989
+ ? "bg-primary/10 text-primary"
990
+ : "text-text-muted hover:bg-surface-2 hover:text-text-main"
991
+ }`}
834
992
  >
835
- <div className="flex items-start justify-between gap-3">
836
- <div className="min-w-0 flex-1">
837
- <p className="truncate text-sm font-medium text-white">{session.title}</p>
838
- <p className="mt-1 truncate text-xs text-white/50">{textValue(latestMessage?.content) || "Empty chat"}</p>
839
- </div>
840
- <span className="text-[10px] text-white/40 shrink-0">{formatRelativeTime(session.updatedAt)}</span>
993
+ <span className="material-symbols-outlined mt-0.5 text-[16px] opacity-70">
994
+ chat_bubble
995
+ </span>
996
+ <div className="min-w-0 flex-1">
997
+ <p className="truncate text-[13px] font-medium leading-snug">
998
+ {session.title || "New chat"}
999
+ </p>
1000
+ <p className="mt-0.5 truncate text-[11px] opacity-60">
1001
+ {textValue(latestMessage?.content) || "Empty"} ·{" "}
1002
+ {formatRelativeTime(session.updatedAt)}
1003
+ </p>
841
1004
  </div>
842
1005
  </button>
843
1006
  );
844
1007
  })}
845
1008
  </div>
1009
+ )}
1010
+ </div>
1011
+
1012
+ <div className="border-t border-border-subtle p-3">
1013
+ <button
1014
+ type="button"
1015
+ onClick={handleDeleteCurrentChat}
1016
+ disabled={!activeSessionId || sessions.length === 0}
1017
+ className="flex h-8 w-full items-center justify-center gap-1.5 rounded-[8px] text-xs font-medium text-text-muted transition hover:bg-surface-2 hover:text-danger disabled:opacity-40"
1018
+ >
1019
+ <span className="material-symbols-outlined text-[16px]">delete</span>
1020
+ Delete current chat
1021
+ </button>
1022
+ </div>
1023
+ </aside>
1024
+
1025
+ {/* ── Main chat column ── */}
1026
+ <div className="relative flex min-w-0 flex-1 flex-col">
1027
+ {/* Mobile top bar */}
1028
+ <div className="flex shrink-0 items-center justify-between gap-2 border-b border-border-subtle px-3 py-2 lg:hidden">
1029
+ <button
1030
+ type="button"
1031
+ onClick={() => setHistoryOpen(true)}
1032
+ className="flex size-9 items-center justify-center rounded-[10px] border border-border text-text-muted hover:bg-surface-2"
1033
+ aria-label="Open chats"
1034
+ >
1035
+ <span className="material-symbols-outlined text-[20px]">menu</span>
1036
+ </button>
1037
+ <div className="min-w-0 text-center">
1038
+ <p className="truncate text-sm font-semibold">{modelLabel}</p>
1039
+ <p className="truncate text-[11px] text-text-subtle">{modelSubLabel}</p>
846
1040
  </div>
847
- ) : null}
1041
+ <button
1042
+ type="button"
1043
+ onClick={handleNewChat}
1044
+ disabled={!activeModel}
1045
+ className="flex size-9 items-center justify-center rounded-[10px] border border-border text-text-muted hover:bg-surface-2 disabled:opacity-40"
1046
+ aria-label="New chat"
1047
+ >
1048
+ <span className="material-symbols-outlined text-[20px]">edit_square</span>
1049
+ </button>
1050
+ </div>
848
1051
 
849
1052
  {loadError ? (
850
- <div className="mt-4 rounded-[18px] border border-rose-500/20 bg-rose-500/10 px-4 py-3 text-rose-100">
851
- <div className="flex items-start gap-3">
852
- <span className="material-symbols-outlined text-[20px]">error</span>
853
- <p className="text-sm leading-6">{loadError}</p>
1053
+ <div className="mx-4 mt-3 rounded-[10px] border border-danger/25 bg-danger/10 px-3 py-2.5 text-sm text-danger">
1054
+ <div className="flex items-start gap-2">
1055
+ <span className="material-symbols-outlined text-[18px]">error</span>
1056
+ <p>{loadError}</p>
854
1057
  </div>
855
1058
  </div>
856
1059
  ) : null}
857
1060
 
858
- <div className="flex flex-1 flex-col min-h-0">
859
- <div className="flex-1 overflow-y-auto py-4 custom-scrollbar">
860
- {currentMessages.length === 0 ? (
861
- <div className="flex min-h-[50vh] items-center justify-center px-4 text-center">
862
- <div className="max-w-xl space-y-4">
863
- <div className="mx-auto flex size-16 items-center justify-center rounded-[20px] border border-white/10 bg-white/5 text-white/80">
864
- <span className="material-symbols-outlined text-[30px]">chat</span>
865
- </div>
866
- <div className="space-y-2">
867
- <h2 className="text-2xl font-semibold text-white">Start a conversation</h2>
868
- <p className="text-sm leading-6 text-white/60">
869
- Simple chat interface to interact with any AI model from connected providers. Select a model and start chatting!
870
- </p>
871
- </div>
872
- </div>
1061
+ {/* Messages single column, Grok/ChatGPT-style thread */}
1062
+ <div className="flex-1 overflow-y-auto custom-scrollbar">
1063
+ {currentMessages.length === 0 ? (
1064
+ <div className="flex min-h-full flex-col items-center justify-center px-6 pb-36 pt-10 text-center">
1065
+ <div className="mb-4 flex size-12 items-center justify-center rounded-2xl border border-border bg-surface text-primary shadow-soft">
1066
+ <span className="material-symbols-outlined text-[26px]">forum</span>
873
1067
  </div>
874
- ) : null}
875
-
876
- <div className="mx-auto flex w-full max-w-3xl flex-col gap-4 px-4">
877
- {currentMessages.map((message) => {
1068
+ <h2 className="text-[22px] font-semibold tracking-tight text-text-main">
1069
+ How can I help?
1070
+ </h2>
1071
+ <p className="mt-1.5 max-w-md text-[13px] leading-relaxed text-text-muted">
1072
+ Pick a model below, then ask anything through your connected providers.
1073
+ </p>
1074
+ <div className="mt-6 flex max-w-xl flex-wrap items-center justify-center gap-2">
1075
+ {SUGGESTIONS.map((tip) => (
1076
+ <button
1077
+ key={tip}
1078
+ type="button"
1079
+ disabled={!activeModel || loadingData}
1080
+ onClick={() => {
1081
+ setDraft(tip);
1082
+ requestAnimationFrame(() => textareaRef.current?.focus());
1083
+ }}
1084
+ className="rounded-full border border-border bg-surface px-3.5 py-2 text-left text-[12.5px] text-text-muted transition hover:border-primary/35 hover:bg-primary/5 hover:text-text-main disabled:opacity-40"
1085
+ >
1086
+ {tip}
1087
+ </button>
1088
+ ))}
1089
+ </div>
1090
+ {loadingData ? (
1091
+ <p className="mt-4 text-xs text-text-subtle">Loading models…</p>
1092
+ ) : null}
1093
+ </div>
1094
+ ) : (
1095
+ <div className="mx-auto w-full max-w-3xl px-4 py-6 lg:px-8">
1096
+ {currentMessages.map((message, index) => {
878
1097
  const isUser = message.role === "user";
879
1098
  const isAssistant = message.role === "assistant";
880
- const isStreaming = isAssistant && message.id === streamingMessageId && message.status === "streaming";
881
- const content = textValue(message.content) || (isAssistant ? streamingText : "");
1099
+ const isStreaming =
1100
+ isAssistant &&
1101
+ message.id === streamingMessageId &&
1102
+ message.status === "streaming";
1103
+ const content =
1104
+ textValue(message.content) || (isAssistant ? streamingText : "");
1105
+ const isError = message.status === "error";
1106
+ const isLastAssistant =
1107
+ isAssistant &&
1108
+ index === currentMessages.length - 1 &&
1109
+ message.status !== "streaming";
882
1110
 
883
1111
  return (
884
- <div key={message.id} className={`flex w-full ${isUser ? "justify-end" : "justify-start"} mb-6`}>
885
- <div className={`max-w-[min(88%,42rem)] ${isUser ? "rounded-3xl bg-[#2f2f2f] px-5 py-3.5 text-white" : "text-white/90"}`}>
886
- <div className="mb-1 flex items-center justify-between gap-3">
887
- <span className="text-xs font-semibold">{isUser ? "You" : activeModel?.name || "Assistant"}</span>
1112
+ <div
1113
+ key={message.id}
1114
+ className="group relative mb-1 border-b border-border-subtle/50 py-5 last:border-0"
1115
+ >
1116
+ <div className="flex gap-3.5">
1117
+ <div
1118
+ className={`flex size-7 shrink-0 items-center justify-center rounded-full text-[11px] font-bold ${
1119
+ isUser
1120
+ ? "bg-primary text-white"
1121
+ : "border border-border bg-surface-2 text-text-muted"
1122
+ }`}
1123
+ >
1124
+ {isUser ? "Y" : "AI"}
888
1125
  </div>
889
-
890
- {message.attachments?.length ? (
891
- <div className="mb-3 grid grid-cols-2 gap-2 sm:grid-cols-3 mt-2">
892
- {message.attachments.map((attachment) => (
893
- <a key={attachment.id} href={attachment.dataUrl} target="_blank" rel="noreferrer" className="overflow-hidden rounded-[18px] border border-white/10 bg-black/20">
894
- <img src={attachment.dataUrl} alt={attachment.name} className="h-28 w-full object-cover" />
895
- </a>
896
- ))}
897
- </div>
898
- ) : null}
899
-
900
- <div className="whitespace-pre-wrap break-words text-[15px] leading-7">
901
- {content}
902
- {isAssistant && isStreaming && !streamingText ? <span className="inline-block animate-pulse">▋</span> : null}
1126
+ <div className="min-w-0 flex-1">
1127
+ <p className="mb-1.5 text-[12px] font-semibold text-text-main">
1128
+ {isUser ? "You" : activeModel?.name || "Assistant"}
1129
+ </p>
1130
+ {message.attachments?.length ? (
1131
+ <div className="mb-3 grid max-w-md grid-cols-2 gap-2 sm:grid-cols-3">
1132
+ {message.attachments.map((attachment) => (
1133
+ <a
1134
+ key={attachment.id}
1135
+ href={attachment.dataUrl}
1136
+ target="_blank"
1137
+ rel="noreferrer"
1138
+ className="overflow-hidden rounded-lg border border-border"
1139
+ >
1140
+ <img
1141
+ src={attachment.dataUrl}
1142
+ alt={attachment.name}
1143
+ className="h-24 w-full object-cover"
1144
+ />
1145
+ </a>
1146
+ ))}
1147
+ </div>
1148
+ ) : null}
1149
+ {isAssistant && !isError ? (
1150
+ <div
1151
+ className="playground-md text-[14.5px] leading-[1.7] text-text-main"
1152
+ dangerouslySetInnerHTML={{
1153
+ __html: renderMarkdown(content) || (isStreaming ? "" : ""),
1154
+ }}
1155
+ />
1156
+ ) : (
1157
+ <div
1158
+ className={`whitespace-pre-wrap break-words text-[14.5px] leading-[1.7] ${
1159
+ isError ? "text-danger" : "text-text-main"
1160
+ }`}
1161
+ >
1162
+ {content}
1163
+ </div>
1164
+ )}
1165
+ {isAssistant && isStreaming ? (
1166
+ <span className="ml-0.5 inline-block animate-pulse text-primary">▋</span>
1167
+ ) : null}
1168
+
1169
+ {isAssistant && content && !isStreaming ? (
1170
+ <div className="mt-2 flex items-center gap-1 opacity-0 transition group-hover:opacity-100">
1171
+ <button
1172
+ type="button"
1173
+ onClick={() => copyMessage(message.id, content)}
1174
+ className="inline-flex h-7 items-center gap-1 rounded-md px-2 text-[11px] font-medium text-text-muted hover:bg-surface-2 hover:text-text-main"
1175
+ title="Copy"
1176
+ >
1177
+ <span className="material-symbols-outlined text-[14px]">
1178
+ {copiedId === message.id ? "check" : "content_copy"}
1179
+ </span>
1180
+ {copiedId === message.id ? "Copied" : "Copy"}
1181
+ </button>
1182
+ {isLastAssistant && !isSending ? (
1183
+ <button
1184
+ type="button"
1185
+ onClick={() => sendMessage({ regenerate: true })}
1186
+ className="inline-flex h-7 items-center gap-1 rounded-md px-2 text-[11px] font-medium text-text-muted hover:bg-surface-2 hover:text-text-main"
1187
+ title="Regenerate"
1188
+ >
1189
+ <span className="material-symbols-outlined text-[14px]">refresh</span>
1190
+ Retry
1191
+ </button>
1192
+ ) : null}
1193
+ </div>
1194
+ ) : null}
903
1195
  </div>
904
1196
  </div>
905
1197
  </div>
906
1198
  );
907
1199
  })}
1200
+ <div ref={messagesEndRef} />
908
1201
  </div>
909
- </div>
1202
+ )}
1203
+ </div>
910
1204
 
911
- <div className="shrink-0 pt-2">
1205
+ {/* ── Composer (model picker at bottom — ChatGPT / Open WebUI pattern) ── */}
1206
+ <div className="shrink-0 border-t border-border-subtle bg-bg/90 backdrop-blur-xl">
1207
+ <div className="mx-auto w-full max-w-3xl px-4 pb-4 pt-3 lg:px-6">
912
1208
  {attachments.length > 0 ? (
913
- <div className="mx-auto mb-3 flex w-full max-w-3xl flex-wrap gap-2 px-4">
1209
+ <div className="mb-2 flex flex-wrap gap-2">
914
1210
  {attachments.map((attachment) => (
915
- <div key={attachment.id} className="flex items-center gap-2 rounded-full border border-white/10 bg-white/5 px-3 py-2">
916
- <span className="text-xs text-white/80 max-w-[12rem] truncate">{attachment.name}</span>
917
- <button type="button" onClick={() => removeAttachment(attachment.id)} className="text-white/55 hover:text-white" aria-label="Remove attachment">
918
- <span className="material-symbols-outlined text-[18px]">close</span>
1211
+ <div
1212
+ key={attachment.id}
1213
+ className="flex items-center gap-2 rounded-full border border-border bg-surface px-3 py-1.5"
1214
+ >
1215
+ <span className="max-w-[10rem] truncate text-xs text-text-muted">
1216
+ {attachment.name}
1217
+ </span>
1218
+ <button
1219
+ type="button"
1220
+ onClick={() => removeAttachment(attachment.id)}
1221
+ className="text-text-subtle hover:text-text-main"
1222
+ aria-label="Remove attachment"
1223
+ >
1224
+ <span className="material-symbols-outlined text-[16px]">close</span>
919
1225
  </button>
920
1226
  </div>
921
1227
  ))}
922
1228
  </div>
923
1229
  ) : null}
924
1230
 
925
- <div className="mx-auto w-full max-w-3xl px-4 pb-2">
926
- <div className="rounded-[26px] bg-[#2f2f2f] px-3 pt-3 pb-2 shadow-[0_0_15px_rgba(0,0,0,0.10)] ring-1 ring-white/5">
927
- <textarea
928
- value={draft}
929
- onChange={(event) => setDraft(event.target.value)}
930
- onKeyDown={handleKeyDown}
931
- placeholder="Message AI"
932
- rows={1}
933
- className="w-full resize-none bg-transparent px-2 text-[15px] leading-6 text-white outline-none placeholder:text-white/40 custom-scrollbar max-h-[25vh] overflow-y-auto"
934
- />
935
-
936
- <div className="mt-2 flex items-center justify-between gap-3">
937
- <div className="flex items-center gap-2">
938
- <button type="button" onClick={() => fileInputRef.current?.click()} disabled={!activeModel || loadingData} className="p-2 text-white/50 hover:text-white transition rounded-full hover:bg-white/5">
939
- <span className="material-symbols-outlined text-[20px]">attach_file</span>
1231
+ <div className="rounded-2xl border border-border-subtle bg-surface-2/80 shadow-[0_8px_30px_rgba(0,0,0,0.25)] ring-1 ring-white/5 focus-within:border-primary/50 focus-within:ring-primary/20 transition">
1232
+ <textarea
1233
+ ref={textareaRef}
1234
+ value={draft}
1235
+ onChange={(event) => setDraft(event.target.value)}
1236
+ onKeyDown={handleKeyDown}
1237
+ placeholder={
1238
+ activeModel
1239
+ ? `Message ${activeModel.name}…`
1240
+ : "Select a model below to start chatting"
1241
+ }
1242
+ rows={1}
1243
+ disabled={!activeModel || loadingData}
1244
+ className="max-h-[28vh] min-h-[52px] w-full resize-none overflow-y-auto bg-transparent px-4 pt-3.5 text-[15px] leading-6 text-text-main outline-none placeholder:text-text-subtle custom-scrollbar disabled:opacity-50"
1245
+ />
1246
+
1247
+ <div className="flex items-center justify-between gap-2 px-2.5 pb-2.5 pt-1">
1248
+ <div className="flex min-w-0 items-center gap-1.5">
1249
+ {/* Image upload — visible chip button */}
1250
+ <button
1251
+ type="button"
1252
+ onClick={() => fileInputRef.current?.click()}
1253
+ disabled={!activeModel || loadingData}
1254
+ className="inline-flex h-9 items-center gap-1.5 rounded-full border border-border bg-surface px-3 text-[12px] font-medium text-text-main transition hover:border-primary/40 hover:bg-primary/10 hover:text-primary disabled:cursor-not-allowed disabled:opacity-40"
1255
+ title="Upload image"
1256
+ >
1257
+ <span className="material-symbols-outlined text-[18px]">add_photo_alternate</span>
1258
+ <span className="hidden sm:inline">Image</span>
1259
+ </button>
1260
+ <input
1261
+ ref={fileInputRef}
1262
+ type="file"
1263
+ accept="image/*"
1264
+ multiple
1265
+ className="hidden"
1266
+ onChange={handleAttachFiles}
1267
+ />
1268
+
1269
+ {/* Temperature + system prompt */}
1270
+ <div ref={settingsMenuRef} className="relative">
1271
+ <button
1272
+ type="button"
1273
+ onClick={() => setSettingsOpen((v) => !v)}
1274
+ className={`inline-flex h-9 items-center gap-1.5 rounded-full border px-3 text-[12px] font-medium transition ${
1275
+ settingsOpen || systemPrompt.trim() || temperature !== 0.7
1276
+ ? "border-primary/40 bg-primary/10 text-primary"
1277
+ : "border-border bg-surface text-text-main hover:border-primary/40 hover:bg-primary/10 hover:text-primary"
1278
+ }`}
1279
+ title="Chat settings"
1280
+ >
1281
+ <span className="material-symbols-outlined text-[18px]">tune</span>
1282
+ <span className="hidden sm:inline tabular-nums">{temperature.toFixed(1)}</span>
940
1283
  </button>
941
- <input ref={fileInputRef} type="file" accept="image/*" multiple className="hidden" onChange={handleAttachFiles} />
942
- <span className="text-xs font-medium text-white/30 truncate max-w-[120px]">{activeModel ? activeModel.name : "No model"}</span>
1284
+ {settingsOpen ? (
1285
+ <div className="absolute bottom-[calc(100%+8px)] left-0 z-40 w-[min(320px,calc(100vw-2rem))] space-y-3 rounded-xl border border-border bg-surface p-3 shadow-elevated">
1286
+ <div>
1287
+ <div className="mb-1.5 flex items-center justify-between gap-2">
1288
+ <p className="text-[11px] font-semibold uppercase tracking-wider text-text-subtle">
1289
+ Temperature
1290
+ </p>
1291
+ <span className="text-xs font-semibold tabular-nums text-text-main">
1292
+ {temperature.toFixed(2)}
1293
+ </span>
1294
+ </div>
1295
+ <input
1296
+ type="range"
1297
+ min={0}
1298
+ max={2}
1299
+ step={0.05}
1300
+ value={temperature}
1301
+ onChange={(e) => setTemperature(Number(e.target.value))}
1302
+ className="w-full accent-[var(--color-primary,#E56A4A)]"
1303
+ />
1304
+ <div className="mt-1 flex justify-between text-[10px] text-text-subtle">
1305
+ <span>Precise</span>
1306
+ <span>Creative</span>
1307
+ </div>
1308
+ </div>
1309
+ <div>
1310
+ <p className="mb-1.5 text-[11px] font-semibold uppercase tracking-wider text-text-subtle">
1311
+ System prompt
1312
+ </p>
1313
+ <textarea
1314
+ value={systemPrompt}
1315
+ onChange={(e) => setSystemPrompt(e.target.value)}
1316
+ rows={4}
1317
+ placeholder="Optional instructions for the model…"
1318
+ className="w-full resize-y rounded-lg border border-border bg-bg px-2.5 py-2 text-[12.5px] leading-5 text-text-main outline-none placeholder:text-text-subtle focus:border-primary/40 custom-scrollbar"
1319
+ />
1320
+ </div>
1321
+ <button
1322
+ type="button"
1323
+ onClick={() => {
1324
+ setTemperature(0.7);
1325
+ setSystemPrompt("");
1326
+ }}
1327
+ className="text-[11px] font-medium text-text-muted hover:text-text-main"
1328
+ >
1329
+ Reset defaults
1330
+ </button>
1331
+ </div>
1332
+ ) : null}
943
1333
  </div>
944
1334
 
945
- <div className="flex items-center gap-2">
946
- {isSending ? (
947
- <button type="button" onClick={handleStop} className="p-2 text-white bg-white/10 hover:bg-white/20 transition rounded-full h-8 w-8 flex items-center justify-center">
948
- <span className="material-symbols-outlined text-[16px]">stop</span>
949
- </button>
950
- ) : null}
951
- <button onClick={sendMessage} disabled={!canSend} className={`h-8 w-8 rounded-full flex items-center justify-center transition ${canSend ? 'bg-white text-black hover:opacity-90' : 'bg-white/10 text-white/30 cursor-not-allowed'}`}>
952
- <span className="material-symbols-outlined text-[16px]">arrow_upward</span>
1335
+ {/* Model selector — bottom, opens upward */}
1336
+ <div ref={modelMenuRef} className="relative min-w-0">
1337
+ <button
1338
+ type="button"
1339
+ onClick={() => {
1340
+ setModelMenuOpen((v) => {
1341
+ const next = !v;
1342
+ if (!next) setModelQuery("");
1343
+ return next;
1344
+ });
1345
+ }}
1346
+ disabled={loadingData || providerGroups.length === 0}
1347
+ className="inline-flex h-9 max-w-[min(100vw-12rem,260px)] items-center gap-1.5 rounded-full border border-border bg-surface px-3 text-left transition hover:border-primary/40 hover:bg-surface-2 disabled:opacity-50"
1348
+ >
1349
+ <span className="material-symbols-outlined text-[18px] text-primary shrink-0">
1350
+ smart_toy
1351
+ </span>
1352
+ <span className="min-w-0 truncate text-[12.5px] font-semibold text-text-main">
1353
+ {loadingData ? "Loading…" : modelLabel}
1354
+ </span>
1355
+ <span className="material-symbols-outlined shrink-0 text-[16px] text-text-muted">
1356
+ {modelMenuOpen ? "expand_less" : "expand_more"}
1357
+ </span>
953
1358
  </button>
1359
+
1360
+ {modelMenuOpen ? (
1361
+ <div className="absolute bottom-[calc(100%+8px)] left-0 z-40 w-[min(420px,calc(100vw-2rem))] overflow-hidden rounded-xl border border-border bg-surface shadow-elevated">
1362
+ <div className="border-b border-border-subtle px-3 py-2.5 space-y-2">
1363
+ <div>
1364
+ <p className="text-[11px] font-semibold uppercase tracking-wider text-text-subtle">
1365
+ Models
1366
+ </p>
1367
+ <p className="text-xs text-text-muted">
1368
+ {providerGroups.length} providers · search by name
1369
+ </p>
1370
+ </div>
1371
+ <div className="relative">
1372
+ <span className="material-symbols-outlined pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-[16px] text-text-subtle">
1373
+ search
1374
+ </span>
1375
+ <input
1376
+ type="search"
1377
+ value={modelQuery}
1378
+ onChange={(e) => setModelQuery(e.target.value)}
1379
+ placeholder="Search models…"
1380
+ autoFocus
1381
+ className="w-full rounded-lg border border-border bg-bg py-1.5 pl-8 pr-3 text-[12.5px] text-text-main outline-none placeholder:text-text-subtle focus:border-primary/40"
1382
+ />
1383
+ </div>
1384
+ </div>
1385
+ <div className="max-h-[min(50vh,360px)] overflow-y-auto p-1.5 custom-scrollbar">
1386
+ {filteredProviderGroups.length === 0 ? (
1387
+ <p className="px-3 py-6 text-center text-xs text-text-muted">
1388
+ No models match “{modelQuery.trim()}”
1389
+ </p>
1390
+ ) : (
1391
+ filteredProviderGroups.map((group) => (
1392
+ <div key={group.providerId} className="mb-1">
1393
+ <div className="flex items-center justify-between px-2 py-1.5">
1394
+ <p className="text-[11px] font-semibold uppercase tracking-wide text-text-subtle">
1395
+ {group.providerName}
1396
+ </p>
1397
+ <Badge size="sm" variant="default">
1398
+ {group.models.length}
1399
+ </Badge>
1400
+ </div>
1401
+ <div className="space-y-0.5">
1402
+ {group.models.map((model) => {
1403
+ const isActive = model.id === activeModelId;
1404
+ return (
1405
+ <button
1406
+ key={model.id}
1407
+ type="button"
1408
+ onClick={() => {
1409
+ handleSelectModel(model.id);
1410
+ setModelQuery("");
1411
+ }}
1412
+ className={`flex w-full items-center gap-2 rounded-lg px-2.5 py-2 text-left transition ${
1413
+ isActive
1414
+ ? "bg-primary/10 text-primary"
1415
+ : "text-text-muted hover:bg-surface-2 hover:text-text-main"
1416
+ }`}
1417
+ >
1418
+ <span className="min-w-0 flex-1">
1419
+ <span className="block truncate text-[13px] font-medium">
1420
+ {model.name}
1421
+ </span>
1422
+ <span className="block truncate text-[11px] opacity-60">
1423
+ {model.requestModel}
1424
+ </span>
1425
+ </span>
1426
+ {isActive ? (
1427
+ <span className="material-symbols-outlined text-[16px]">
1428
+ check
1429
+ </span>
1430
+ ) : null}
1431
+ </button>
1432
+ );
1433
+ })}
1434
+ </div>
1435
+ </div>
1436
+ ))
1437
+ )}
1438
+ </div>
1439
+ </div>
1440
+ ) : null}
954
1441
  </div>
955
1442
  </div>
1443
+
1444
+ <div className="flex shrink-0 items-center gap-2">
1445
+ {isSending ? (
1446
+ <button
1447
+ type="button"
1448
+ onClick={handleStop}
1449
+ className="inline-flex h-9 items-center gap-1.5 rounded-full border border-border bg-surface px-3 text-[12px] font-semibold text-text-main transition hover:bg-surface-2"
1450
+ title="Stop generating"
1451
+ >
1452
+ <span className="material-symbols-outlined text-[18px]">stop_circle</span>
1453
+ <span className="hidden sm:inline">Stop</span>
1454
+ </button>
1455
+ ) : null}
1456
+ {/* Send — solid primary pill (ChatGPT-style, high contrast) */}
1457
+ <button
1458
+ type="button"
1459
+ onClick={sendMessage}
1460
+ disabled={!canSend}
1461
+ className={`inline-flex h-9 min-w-9 items-center justify-center gap-1.5 rounded-full px-3.5 text-[13px] font-semibold transition ${
1462
+ canSend
1463
+ ? "bg-primary text-white shadow-[0_2px_12px_rgba(229,106,74,0.45)] hover:bg-primary-hover active:scale-[0.97]"
1464
+ : "bg-surface-3 text-text-subtle cursor-not-allowed opacity-70"
1465
+ }`}
1466
+ title="Send message"
1467
+ >
1468
+ <span className="material-symbols-outlined text-[18px] font-bold">send</span>
1469
+ <span className="hidden sm:inline">Send</span>
1470
+ </button>
1471
+ </div>
956
1472
  </div>
957
1473
  </div>
958
- </div>
959
1474
 
960
- <p className="mx-auto mt-2 max-w-3xl px-4 pb-4 text-center text-[11px] text-white/30">
961
- Model list is filtered from connected providers.
962
- </p>
1475
+ <p className="mt-2 text-center text-[11px] text-text-subtle">
1476
+ Routed through ZevaiRouter · Enter to send · Shift+Enter for new line
1477
+ </p>
1478
+ </div>
963
1479
  </div>
964
1480
  </div>
1481
+
1482
+ {/* Mobile history backdrop */}
1483
+ {historyOpen ? (
1484
+ <button
1485
+ type="button"
1486
+ className="fixed inset-0 z-20 bg-black/40 lg:hidden"
1487
+ aria-label="Close history"
1488
+ onClick={() => setHistoryOpen(false)}
1489
+ />
1490
+ ) : null}
965
1491
  </div>
966
1492
  );
967
1493
  }