zevairouter 1.0.120 → 1.0.122

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 (406) hide show
  1. package/cli/app/.next-cli-build/BUILD_ID +1 -1
  2. package/cli/app/.next-cli-build/app-path-routes-manifest.json +7 -7
  3. package/cli/app/.next-cli-build/build-manifest.json +2 -2
  4. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page_client-reference-manifest.js +1 -1
  5. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  6. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  7. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  8. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  9. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  10. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page_client-reference-manifest.js +1 -1
  11. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  12. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  13. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  14. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  15. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  16. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  17. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  18. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  19. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  20. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +1 -1
  21. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  22. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  23. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  24. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  25. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  26. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  27. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page_client-reference-manifest.js +1 -1
  28. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  29. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  30. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  31. package/cli/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  32. package/cli/app/.next-cli-build/server/app/_global-error.html +1 -1
  33. package/cli/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  34. package/cli/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  35. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  36. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  37. package/cli/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  38. package/cli/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  39. package/cli/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  40. package/cli/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  41. package/cli/app/.next-cli-build/server/app/_not-found.html +1 -1
  42. package/cli/app/.next-cli-build/server/app/_not-found.rsc +4 -4
  43. package/cli/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +4 -4
  44. package/cli/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  45. package/cli/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +4 -4
  46. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  47. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  48. package/cli/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  49. package/cli/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
  50. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
  51. package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
  52. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
  53. package/cli/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
  54. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js +1 -1
  55. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  56. package/cli/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  57. package/cli/app/.next-cli-build/server/app/api/context/[id]/route.js +1 -1
  58. package/cli/app/.next-cli-build/server/app/api/context/bulk/route.js +1 -1
  59. package/cli/app/.next-cli-build/server/app/api/context/route.js +1 -1
  60. package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js +1 -1
  61. package/cli/app/.next-cli-build/server/app/api/headroom/restart/route.js +1 -1
  62. package/cli/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -1
  63. package/cli/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -1
  64. package/cli/app/.next-cli-build/server/app/api/init/route.js +1 -1
  65. package/cli/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js +1 -1
  66. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
  67. package/cli/app/.next-cli-build/server/app/api/keys/route.js +1 -1
  68. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  69. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  70. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  71. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  72. package/cli/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  73. package/cli/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
  74. package/cli/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  75. package/cli/app/.next-cli-build/server/app/api/models/route.js +1 -1
  76. package/cli/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  77. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  78. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route.js +1 -1
  79. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route.js +1 -1
  80. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route.js +1 -1
  81. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  82. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  83. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
  84. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
  85. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  86. package/cli/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
  87. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
  88. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  89. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  90. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  91. package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route.js +1 -1
  92. package/cli/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  93. package/cli/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  94. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  95. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
  96. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  97. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +1 -1
  98. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +1 -1
  99. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
  100. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +1 -1
  101. package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route.js +1 -1
  102. package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route.js +1 -1
  103. package/cli/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  104. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
  105. package/cli/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  106. package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route.js +1 -1
  107. package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route.js +1 -1
  108. package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route.js +1 -1
  109. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js.nft.json +1 -1
  110. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js.nft.json +1 -1
  111. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js.nft.json +1 -1
  112. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js.nft.json +1 -1
  113. package/cli/app/.next-cli-build/server/app/api/terminal/session/route.js.nft.json +1 -1
  114. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  115. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  116. package/cli/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  117. package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  118. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  119. package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route.js +1 -1
  120. package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  121. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  122. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  123. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  124. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
  125. package/cli/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  126. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  127. package/cli/app/.next-cli-build/server/app/api/version/route.js +1 -1
  128. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  129. package/cli/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  130. package/cli/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  131. package/cli/app/.next-cli-build/server/app/callback.html +1 -1
  132. package/cli/app/.next-cli-build/server/app/callback.rsc +4 -4
  133. package/cli/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +4 -4
  134. package/cli/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  135. package/cli/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +4 -4
  136. package/cli/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
  137. package/cli/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  138. package/cli/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  139. package/cli/app/.next-cli-build/server/app/dashboard/automation.html +1 -1
  140. package/cli/app/.next-cli-build/server/app/dashboard/automation.rsc +6 -6
  141. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation/__PAGE__.segment.rsc +2 -2
  142. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation.segment.rsc +1 -1
  143. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  144. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  145. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_full.segment.rsc +6 -6
  146. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_head.segment.rsc +1 -1
  147. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_index.segment.rsc +4 -4
  148. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +2 -2
  149. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  150. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +6 -6
  151. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  152. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  153. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  154. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  155. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
  156. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  157. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +4 -4
  158. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
  159. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  160. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +6 -6
  161. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  162. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  163. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  164. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  165. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
  166. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  167. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
  168. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  169. package/cli/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  170. package/cli/app/.next-cli-build/server/app/dashboard/combos.rsc +6 -6
  171. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  172. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  173. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  174. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  175. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
  176. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  177. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
  178. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  179. package/cli/app/.next-cli-build/server/app/dashboard/context.html +1 -1
  180. package/cli/app/.next-cli-build/server/app/dashboard/context.rsc +6 -6
  181. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context/__PAGE__.segment.rsc +2 -2
  182. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context.segment.rsc +1 -1
  183. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  184. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  185. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_full.segment.rsc +6 -6
  186. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_head.segment.rsc +1 -1
  187. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_index.segment.rsc +4 -4
  188. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_tree.segment.rsc +2 -2
  189. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  190. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.rsc +6 -6
  191. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  192. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  193. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  194. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  195. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
  196. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  197. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
  198. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  199. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  200. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +6 -6
  201. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  202. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  203. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  204. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  205. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  206. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +6 -6
  207. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  208. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +4 -4
  209. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
  210. package/cli/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  211. package/cli/app/.next-cli-build/server/app/dashboard/mitm.rsc +6 -6
  212. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  213. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  214. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  215. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  216. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
  217. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  218. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +4 -4
  219. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  220. package/cli/app/.next-cli-build/server/app/dashboard/playground.html +1 -1
  221. package/cli/app/.next-cli-build/server/app/dashboard/playground.rsc +6 -6
  222. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground/__PAGE__.segment.rsc +2 -2
  223. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground.segment.rsc +1 -1
  224. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  225. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  226. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_full.segment.rsc +6 -6
  227. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_head.segment.rsc +1 -1
  228. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_index.segment.rsc +4 -4
  229. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_tree.segment.rsc +2 -2
  230. package/cli/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  231. package/cli/app/.next-cli-build/server/app/dashboard/profile.rsc +6 -6
  232. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  233. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  234. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  235. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  236. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
  237. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  238. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
  239. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  240. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  241. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.rsc +6 -6
  242. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  243. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  244. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  245. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  246. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  247. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
  248. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  249. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
  250. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  251. package/cli/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  252. package/cli/app/.next-cli-build/server/app/dashboard/providers.rsc +6 -6
  253. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  254. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  255. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  256. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  257. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
  258. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  259. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
  260. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  261. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  262. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +6 -6
  263. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  264. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  265. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  266. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  267. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
  268. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  269. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +4 -4
  270. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  271. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
  272. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +6 -6
  273. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
  274. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
  275. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  276. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  277. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +6 -6
  278. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
  279. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +4 -4
  280. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +2 -2
  281. package/cli/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  282. package/cli/app/.next-cli-build/server/app/dashboard/quota.rsc +7 -7
  283. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  284. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  285. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  286. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  287. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
  288. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  289. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +4 -4
  290. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  291. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  292. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  293. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +4 -4
  294. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  295. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  296. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
  297. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  298. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  299. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  300. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  301. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  302. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  303. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.rsc +6 -6
  304. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
  305. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  306. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  307. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  308. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +6 -6
  309. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  310. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +4 -4
  311. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +2 -2
  312. package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  313. package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +6 -6
  314. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  315. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  316. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  317. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  318. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
  319. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  320. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
  321. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  322. package/cli/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  323. package/cli/app/.next-cli-build/server/app/dashboard/usage.rsc +6 -6
  324. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  325. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  326. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  327. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  328. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
  329. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  330. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
  331. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  332. package/cli/app/.next-cli-build/server/app/dashboard.html +1 -1
  333. package/cli/app/.next-cli-build/server/app/dashboard.rsc +6 -6
  334. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  335. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  336. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  337. package/cli/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +6 -6
  338. package/cli/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  339. package/cli/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +4 -4
  340. package/cli/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  341. package/cli/app/.next-cli-build/server/app/index.html +1 -1
  342. package/cli/app/.next-cli-build/server/app/index.rsc +4 -4
  343. package/cli/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  344. package/cli/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +4 -4
  345. package/cli/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  346. package/cli/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +4 -4
  347. package/cli/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
  348. package/cli/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  349. package/cli/app/.next-cli-build/server/app/landing.html +1 -1
  350. package/cli/app/.next-cli-build/server/app/landing.rsc +4 -4
  351. package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
  352. package/cli/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  353. package/cli/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +4 -4
  354. package/cli/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
  355. package/cli/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  356. package/cli/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  357. package/cli/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  358. package/cli/app/.next-cli-build/server/app/login.html +1 -1
  359. package/cli/app/.next-cli-build/server/app/login.rsc +5 -5
  360. package/cli/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +5 -5
  361. package/cli/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  362. package/cli/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +4 -4
  363. package/cli/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
  364. package/cli/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  365. package/cli/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  366. package/cli/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  367. package/cli/app/.next-cli-build/server/app-paths-manifest.json +7 -7
  368. package/cli/app/.next-cli-build/server/chunks/3155.js +1 -1
  369. package/cli/app/.next-cli-build/server/chunks/3407.js +1 -1
  370. package/cli/app/.next-cli-build/server/chunks/412.js +2 -2
  371. package/cli/app/.next-cli-build/server/chunks/415.js +1 -1
  372. package/cli/app/.next-cli-build/server/chunks/4404.js +1 -1
  373. package/cli/app/.next-cli-build/server/chunks/4746.js +1 -1
  374. package/cli/app/.next-cli-build/server/chunks/4765.js +1 -1
  375. package/cli/app/.next-cli-build/server/chunks/5469.js +1 -1
  376. package/cli/app/.next-cli-build/server/chunks/6269.js +1 -1
  377. package/cli/app/.next-cli-build/server/chunks/8157.js +1 -1
  378. package/cli/app/.next-cli-build/server/chunks/8450.js +1 -1
  379. package/cli/app/.next-cli-build/server/chunks/8895.js +1 -1
  380. package/cli/app/.next-cli-build/server/chunks/915.js +1 -1
  381. package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  382. package/cli/app/.next-cli-build/server/pages/404.html +1 -1
  383. package/cli/app/.next-cli-build/server/pages/500.html +1 -1
  384. package/cli/app/.next-cli-build/static/chunks/5497-d429a9dfbc0518b5.js +7 -0
  385. package/cli/app/.next-cli-build/static/chunks/85-38f4ef417047ac0e.js +1 -0
  386. package/cli/app/.next-cli-build/static/chunks/9126-9e1755f122b943cd.js +1 -0
  387. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/{page-261a5598baa4144a.js → page-6deaa1a0e3ad0eb6.js} +2 -2
  388. package/cli/app/.next-cli-build/static/css/23b2adee98b8b6de.css +1 -0
  389. package/cli/app/package.json +1 -1
  390. package/cli/package.json +1 -1
  391. package/open-sse/config/providerModels.js +1 -0
  392. package/open-sse/services/accountFallback.js +30 -0
  393. package/package.json +1 -1
  394. package/src/app/(dashboard)/dashboard/basic-chat/BasicChatPageClient.js +10 -10
  395. package/src/app/(dashboard)/dashboard/providers/[id]/ConnectionRow.js +10 -0
  396. package/src/app/api/providers/[id]/test/testUtils.js +11 -5
  397. package/src/shared/components/Header.js +7 -7
  398. package/src/shared/components/Sidebar.js +1 -1
  399. package/src/shared/components/layouts/DashboardLayout.js +4 -4
  400. package/src/sse/services/auth.js +51 -9
  401. package/cli/app/.next-cli-build/static/chunks/5497-b25ed8039d5058b3.js +0 -7
  402. package/cli/app/.next-cli-build/static/chunks/85-b3f08d9ecd87cb62.js +0 -1
  403. package/cli/app/.next-cli-build/static/chunks/9126-3c87cb0aee89bca5.js +0 -1
  404. package/cli/app/.next-cli-build/static/css/479786e77e87b74c.css +0 -1
  405. /package/cli/app/.next-cli-build/static/{Crz9avbwSfdvpQaSlgraq → Kyq-jFDZnAoA-3Fgr0Csv}/_buildManifest.js +0 -0
  406. /package/cli/app/.next-cli-build/static/{Crz9avbwSfdvpQaSlgraq → Kyq-jFDZnAoA-3Fgr0Csv}/_ssgManifest.js +0 -0
@@ -15,7 +15,7 @@ PRAGMA mmap_size = 30000000;
15
15
  PRAGMA cache_size = -64000;
16
16
  PRAGMA foreign_keys = ON;
17
17
  PRAGMA busy_timeout = 5000;
18
- `,e={_meta:{columns:{key:"TEXT PRIMARY KEY",value:"TEXT NOT NULL"}},settings:{columns:{id:"INTEGER PRIMARY KEY CHECK (id = 1)",data:"TEXT NOT NULL"}},providerConnections:{columns:{id:"TEXT PRIMARY KEY",provider:"TEXT NOT NULL",authType:"TEXT NOT NULL",name:"TEXT",email:"TEXT",priority:"INTEGER",isActive:"INTEGER DEFAULT 1",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pc_provider ON providerConnections(provider)","CREATE INDEX IF NOT EXISTS idx_pc_provider_active ON providerConnections(provider, isActive)","CREATE INDEX IF NOT EXISTS idx_pc_priority ON providerConnections(provider, priority)"]},providerNodes:{columns:{id:"TEXT PRIMARY KEY",type:"TEXT",name:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pn_type ON providerNodes(type)"]},proxyPools:{columns:{id:"TEXT PRIMARY KEY",isActive:"INTEGER DEFAULT 1",testStatus:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pp_active ON proxyPools(isActive)","CREATE INDEX IF NOT EXISTS idx_pp_status ON proxyPools(testStatus)"]},apiKeys:{columns:{id:"TEXT PRIMARY KEY",key:"TEXT UNIQUE NOT NULL",name:"TEXT",machineId:"TEXT",isActive:"INTEGER DEFAULT 1",createdAt:"TEXT NOT NULL",budgetDaily:"REAL DEFAULT 0",budgetMonthly:"REAL DEFAULT 0",requestsPerMinute:"INTEGER DEFAULT 0",allowedModels:"TEXT"},indexes:["CREATE INDEX IF NOT EXISTS idx_ak_key ON apiKeys(key)"]},combos:{columns:{id:"TEXT PRIMARY KEY",name:"TEXT UNIQUE NOT NULL",kind:"TEXT",models:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_combo_name ON combos(name)"]},kv:{columns:{scope:"TEXT NOT NULL",key:"TEXT NOT NULL",value:"TEXT NOT NULL"},primaryKey:"PRIMARY KEY (scope, key)",indexes:["CREATE INDEX IF NOT EXISTS idx_kv_scope ON kv(scope)"]},usageHistory:{columns:{id:"INTEGER PRIMARY KEY AUTOINCREMENT",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",apiKey:"TEXT",endpoint:"TEXT",promptTokens:"INTEGER DEFAULT 0",completionTokens:"INTEGER DEFAULT 0",cost:"REAL DEFAULT 0",status:"TEXT",tokens:"TEXT",meta:"TEXT"},indexes:["CREATE INDEX IF NOT EXISTS idx_uh_ts ON usageHistory(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_provider ON usageHistory(provider)","CREATE INDEX IF NOT EXISTS idx_uh_model ON usageHistory(model)","CREATE INDEX IF NOT EXISTS idx_uh_conn ON usageHistory(connectionId)"]},usageDaily:{columns:{dateKey:"TEXT PRIMARY KEY",data:"TEXT NOT NULL"}},requestDetails:{columns:{id:"TEXT PRIMARY KEY",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",status:"TEXT",data:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_rd_ts ON requestDetails(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_rd_provider ON requestDetails(provider)","CREATE INDEX IF NOT EXISTS idx_rd_model ON requestDetails(model)","CREATE INDEX IF NOT EXISTS idx_rd_conn ON requestDetails(connectionId)"]},quotaCache:{columns:{connectionId:"TEXT PRIMARY KEY",provider:"TEXT",data:"TEXT NOT NULL",fetchedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_qc_provider ON quotaCache(provider)"]},contextFiles:{columns:{id:"TEXT PRIMARY KEY",name:"TEXT NOT NULL",content:"TEXT NOT NULL",enabled:"INTEGER DEFAULT 1",priority:"INTEGER DEFAULT 0",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_cf_enabled ON contextFiles(enabled, priority)"]}};function f(a,b){let c=Object.entries(b.columns).map(([a,b])=>`${a} ${b}`);return b.primaryKey&&c.push(b.primaryKey),`CREATE TABLE IF NOT EXISTS ${a} (${c.join(", ")})`}},74452:(a,b,c)=>{"use strict";c.r(b),c.d(b,{admitApiKeyRequest:()=>p,checkApiKeyBudget:()=>s,createApiKey:()=>m,deleteApiKey:()=>q,getApiKeyById:()=>l,getApiKeys:()=>k,maskApiKey:()=>i,rotateApiKey:()=>o,updateApiKey:()=>n,validateApiKey:()=>r});var d=c(47293),e=c(36366);let f=new Set,g=new Map;function h(a){if(Array.isArray(a))return a;if(!a)return[];try{return JSON.parse(a)}catch{return[]}}function i(a){return a?a.length<=12?`${a.slice(0,4)}…`:`${a.slice(0,8)}…${a.slice(-4)}`:null}function j(a,b=!1){return a?{id:a.id,key:b?a.key:void 0,maskedKey:i(a.key),name:a.name,machineId:a.machineId,isActive:1===a.isActive||!0===a.isActive,createdAt:a.createdAt,budgetDaily:a.budgetDaily||0,budgetMonthly:a.budgetMonthly||0,requestsPerMinute:a.requestsPerMinute||0,allowedModels:h(a.allowedModels)}:null}async function k(a=!1){return(await (0,e.cK)()).all("SELECT * FROM apiKeys ORDER BY createdAt ASC").map(b=>j(b,a))}async function l(a){return j((await (0,e.cK)()).get("SELECT * FROM apiKeys WHERE id = ?",[a]))}async function m(a,b){if(!b)throw Error("machineId is required");let f=await (0,e.cK)(),{generateApiKeyWithMachine:g}=await c.e(6844).then(c.bind(c,86844)),h=g(b),i={id:(0,d.A)(),name:a,key:h.key,machineId:b,isActive:!0,createdAt:new Date().toISOString()};return f.run("INSERT INTO apiKeys(id, key, name, machineId, isActive, createdAt) VALUES(?, ?, ?, ?, ?, ?)",[i.id,i.key,i.name,i.machineId,1,i.createdAt]),i}async function n(a,b){let c=await (0,e.cK)(),d=null;return c.transaction(()=>{let e=c.get("SELECT * FROM apiKeys WHERE id = ?",[a]);if(!e)return;let f={...j(e,!0),...b};c.run("UPDATE apiKeys SET key = ?, name = ?, machineId = ?, isActive = ?, budgetDaily = ?, budgetMonthly = ?, requestsPerMinute = ?, allowedModels = ? WHERE id = ?",[f.key,f.name,f.machineId,+!!f.isActive,Number(f.budgetDaily)||0,Number(f.budgetMonthly)||0,Number(f.requestsPerMinute)||0,JSON.stringify(f.allowedModels||[]),a]),d=f}),d}async function o(a){let b=await (0,e.cK)(),d=b.get("SELECT * FROM apiKeys WHERE id = ?",[a]);if(!d)return null;let{generateApiKeyWithMachine:f}=await c.e(6844).then(c.bind(c,86844)),g=f(d.machineId).key;return b.run("UPDATE apiKeys SET key = ? WHERE id = ?",[g,a]),{...j({...d,key:g}),key:g}}async function p(a,b){let c=(await (0,e.cK)()).get("SELECT budgetDaily, budgetMonthly, requestsPerMinute, allowedModels FROM apiKeys WHERE key = ?",[a]);if(!c)return{allowed:!0,release(){}};let d=h(c.allowedModels);if(d.length>0&&!d.includes(b))return{allowed:!1,status:403,reason:`Model ${b} is not allowed for this API key`};let i=Number(c.requestsPerMinute)||0;if(i>0){let b=Date.now(),c=(g.get(a)||[]).filter(a=>b-a<6e4);if(c.length>=i){let d=Math.max(1,Math.ceil((6e4-(b-c[0]))/1e3));return g.set(a,c),{allowed:!1,status:429,retryAfter:d,reason:"API key rate limit exceeded"}}c.push(b),g.set(a,c)}let j=Number(c.budgetDaily)>0||Number(c.budgetMonthly)>0;return j&&f.has(a)?{allowed:!1,status:429,retryAfter:1,reason:"A budgeted request is already in progress"}:(j&&f.add(a),{allowed:!0,release:()=>f.delete(a)})}async function q(a){let b=(await (0,e.cK)()).run("DELETE FROM apiKeys WHERE id = ?",[a]);return(b?.changes??0)>0}async function r(a){let b=(await (0,e.cK)()).get("SELECT isActive FROM apiKeys WHERE key = ?",[a]);return!!b&&(1===b.isActive||!0===b.isActive)}async function s(a){let b=await (0,e.cK)(),c=b.get("SELECT budgetDaily, budgetMonthly FROM apiKeys WHERE key = ?",[a]);if(!c)return{allowed:!0};let d=c.budgetDaily||0,f=c.budgetMonthly||0;if(d<=0&&f<=0)return{allowed:!0,budgetDaily:d,budgetMonthly:f};let g=0,h=0;try{if(d>0){let c=new Date;c.setHours(0,0,0,0);let d=b.get("SELECT COALESCE(SUM(cost), 0) AS total FROM usageHistory WHERE apiKey = ? AND timestamp >= ?",[a,c.toISOString()]);g=d?.total||0}if(f>0){let c=new Date;c.setDate(1),c.setHours(0,0,0,0);let d=b.get("SELECT COALESCE(SUM(cost), 0) AS total FROM usageHistory WHERE apiKey = ? AND timestamp >= ?",[a,c.toISOString()]);h=d?.total||0}}catch(a){return{allowed:!1,error:!0,reason:"Budget accounting unavailable"}}return d>0&&g>=d?{allowed:!1,reason:`Daily budget exceeded ($${g.toFixed(4)} / $${d})`,spentDaily:g,spentMonthly:h,budgetDaily:d,budgetMonthly:f}:f>0&&h>=f?{allowed:!1,reason:`Monthly budget exceeded ($${h.toFixed(4)} / $${f})`,spentDaily:g,spentMonthly:h,budgetDaily:d,budgetMonthly:f}:{allowed:!0,spentDaily:g,spentMonthly:h,budgetDaily:d,budgetMonthly:f}}},78335:()=>{},80601:(a,b,c)=>{"use strict";c.d(b,{S8:()=>L.S8,admitApiKeyRequest:()=>D.admitApiKeyRequest,E5:()=>ai,checkApiKeyBudget:()=>D.checkApiKeyBudget,bI:()=>h.cleanupProviderConnections,Iq:()=>D.createApiKey,jd:()=>I,QI:()=>z,p3:()=>C,iE:()=>h.createProviderConnection,i0:()=>i.createProviderNode,ZO:()=>o,Lh:()=>D.deleteApiKey,CG:()=>K,NR:()=>B,uL:()=>L.uL,fv:()=>L.fv,fK:()=>h.deleteProviderConnection,op:()=>h.deleteProviderConnectionsByProvider,Pc:()=>i.deleteProviderNode,Yd:()=>q,tm:()=>P,oF:()=>Q,zP:()=>al,rg:()=>ac,yg:()=>D.getApiKeyById,PX:()=>D.getApiKeys,j$:()=>ag,L:()=>G,Dj:()=>H,Uv:()=>F,yW:()=>y,uv:()=>L.uv,vF:()=>O,qd:()=>x,getLatencyStats:()=>ah,c:()=>L.getMitmAlias,OM:()=>L.OM,r4:()=>M.r4,Mc:()=>h.getProviderConnectionById,P:()=>h.getProviderConnections,Qu:()=>i.getProviderNodeById,Fh:()=>i.getProviderNodes,hr:()=>n,ui:()=>m,LF:()=>r.LF,Zx:()=>aj,SL:()=>ak.SL,mt:()=>g.getSettings,BY:()=>af,K1:()=>am,zY:()=>w,VT:()=>M.VT,yF:()=>M.yF,Pb:()=>D.rotateApiKey,KK:()=>r.KK,ox:()=>ak.ox,sZ:()=>ad,L9:()=>L.L9,o5:()=>L.o5,_V:()=>X,uw:()=>ab,XW:()=>D.updateApiKey,oG:()=>J,dK:()=>A,KJ:()=>M.KJ,rj:()=>h.updateProviderConnection,ho:()=>i.updateProviderNode,Q_:()=>p,Xx:()=>g.Xx,ek:()=>D.validateApiKey});var d=c(36366),e=c(63775),f=c(644),g=c(42655),h=c(5781),i=c(1129),j=c(47293);function k(a){return a?{...(0,f.q)(a.data,{}),id:a.id,isActive:1===a.isActive||!0===a.isActive,testStatus:a.testStatus,createdAt:a.createdAt,updatedAt:a.updatedAt}:null}function l(a,b){let c=function(a){let{id:b,isActive:c,testStatus:d,createdAt:e,updatedAt:g,...h}=a;return{id:b,isActive:+(!1!==c),testStatus:d??null,data:(0,f.s)(h),createdAt:e,updatedAt:g}}(b);a.run(`INSERT INTO proxyPools(id, isActive, testStatus, data, createdAt, updatedAt)
18
+ `,e={_meta:{columns:{key:"TEXT PRIMARY KEY",value:"TEXT NOT NULL"}},settings:{columns:{id:"INTEGER PRIMARY KEY CHECK (id = 1)",data:"TEXT NOT NULL"}},providerConnections:{columns:{id:"TEXT PRIMARY KEY",provider:"TEXT NOT NULL",authType:"TEXT NOT NULL",name:"TEXT",email:"TEXT",priority:"INTEGER",isActive:"INTEGER DEFAULT 1",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pc_provider ON providerConnections(provider)","CREATE INDEX IF NOT EXISTS idx_pc_provider_active ON providerConnections(provider, isActive)","CREATE INDEX IF NOT EXISTS idx_pc_priority ON providerConnections(provider, priority)"]},providerNodes:{columns:{id:"TEXT PRIMARY KEY",type:"TEXT",name:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pn_type ON providerNodes(type)"]},proxyPools:{columns:{id:"TEXT PRIMARY KEY",isActive:"INTEGER DEFAULT 1",testStatus:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pp_active ON proxyPools(isActive)","CREATE INDEX IF NOT EXISTS idx_pp_status ON proxyPools(testStatus)"]},apiKeys:{columns:{id:"TEXT PRIMARY KEY",key:"TEXT UNIQUE NOT NULL",name:"TEXT",machineId:"TEXT",isActive:"INTEGER DEFAULT 1",createdAt:"TEXT NOT NULL",budgetDaily:"REAL DEFAULT 0",budgetMonthly:"REAL DEFAULT 0",requestsPerMinute:"INTEGER DEFAULT 0",allowedModels:"TEXT"},indexes:["CREATE INDEX IF NOT EXISTS idx_ak_key ON apiKeys(key)"]},combos:{columns:{id:"TEXT PRIMARY KEY",name:"TEXT UNIQUE NOT NULL",kind:"TEXT",models:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_combo_name ON combos(name)"]},kv:{columns:{scope:"TEXT NOT NULL",key:"TEXT NOT NULL",value:"TEXT NOT NULL"},primaryKey:"PRIMARY KEY (scope, key)",indexes:["CREATE INDEX IF NOT EXISTS idx_kv_scope ON kv(scope)"]},usageHistory:{columns:{id:"INTEGER PRIMARY KEY AUTOINCREMENT",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",apiKey:"TEXT",endpoint:"TEXT",promptTokens:"INTEGER DEFAULT 0",completionTokens:"INTEGER DEFAULT 0",cost:"REAL DEFAULT 0",status:"TEXT",tokens:"TEXT",meta:"TEXT"},indexes:["CREATE INDEX IF NOT EXISTS idx_uh_ts ON usageHistory(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_provider ON usageHistory(provider)","CREATE INDEX IF NOT EXISTS idx_uh_model ON usageHistory(model)","CREATE INDEX IF NOT EXISTS idx_uh_conn ON usageHistory(connectionId)"]},usageDaily:{columns:{dateKey:"TEXT PRIMARY KEY",data:"TEXT NOT NULL"}},requestDetails:{columns:{id:"TEXT PRIMARY KEY",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",status:"TEXT",data:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_rd_ts ON requestDetails(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_rd_provider ON requestDetails(provider)","CREATE INDEX IF NOT EXISTS idx_rd_model ON requestDetails(model)","CREATE INDEX IF NOT EXISTS idx_rd_conn ON requestDetails(connectionId)"]},quotaCache:{columns:{connectionId:"TEXT PRIMARY KEY",provider:"TEXT",data:"TEXT NOT NULL",fetchedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_qc_provider ON quotaCache(provider)"]},contextFiles:{columns:{id:"TEXT PRIMARY KEY",name:"TEXT NOT NULL",content:"TEXT NOT NULL",enabled:"INTEGER DEFAULT 1",priority:"INTEGER DEFAULT 0",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_cf_enabled ON contextFiles(enabled, priority)"]}};function f(a,b){let c=Object.entries(b.columns).map(([a,b])=>`${a} ${b}`);return b.primaryKey&&c.push(b.primaryKey),`CREATE TABLE IF NOT EXISTS ${a} (${c.join(", ")})`}},74452:(a,b,c)=>{"use strict";c.r(b),c.d(b,{admitApiKeyRequest:()=>p,checkApiKeyBudget:()=>s,createApiKey:()=>m,deleteApiKey:()=>q,getApiKeyById:()=>l,getApiKeys:()=>k,maskApiKey:()=>i,rotateApiKey:()=>o,updateApiKey:()=>n,validateApiKey:()=>r});var d=c(47293),e=c(36366);let f=new Set,g=new Map;function h(a){if(Array.isArray(a))return a;if(!a)return[];try{return JSON.parse(a)}catch{return[]}}function i(a){return a?a.length<=12?`${a.slice(0,4)}…`:`${a.slice(0,8)}…${a.slice(-4)}`:null}function j(a,b=!1){return a?{id:a.id,key:b?a.key:void 0,maskedKey:i(a.key),name:a.name,machineId:a.machineId,isActive:1===a.isActive||!0===a.isActive,createdAt:a.createdAt,budgetDaily:a.budgetDaily||0,budgetMonthly:a.budgetMonthly||0,requestsPerMinute:a.requestsPerMinute||0,allowedModels:h(a.allowedModels)}:null}async function k(a=!1){return(await (0,e.cK)()).all("SELECT * FROM apiKeys ORDER BY createdAt ASC").map(b=>j(b,a))}async function l(a){return j((await (0,e.cK)()).get("SELECT * FROM apiKeys WHERE id = ?",[a]))}async function m(a,b){if(!b)throw Error("machineId is required");let f=await (0,e.cK)(),{generateApiKeyWithMachine:g}=await c.e(6844).then(c.bind(c,86844)),h=g(b),i={id:(0,d.A)(),name:a,key:h.key,machineId:b,isActive:!0,createdAt:new Date().toISOString()};return f.run("INSERT INTO apiKeys(id, key, name, machineId, isActive, createdAt) VALUES(?, ?, ?, ?, ?, ?)",[i.id,i.key,i.name,i.machineId,1,i.createdAt]),i}async function n(a,b){let c=await (0,e.cK)(),d=null;return c.transaction(()=>{let e=c.get("SELECT * FROM apiKeys WHERE id = ?",[a]);if(!e)return;let f={...j(e,!0),...b};c.run("UPDATE apiKeys SET key = ?, name = ?, machineId = ?, isActive = ?, budgetDaily = ?, budgetMonthly = ?, requestsPerMinute = ?, allowedModels = ? WHERE id = ?",[f.key,f.name,f.machineId,+!!f.isActive,Number(f.budgetDaily)||0,Number(f.budgetMonthly)||0,Number(f.requestsPerMinute)||0,JSON.stringify(f.allowedModels||[]),a]),d=f}),d}async function o(a){let b=await (0,e.cK)(),d=b.get("SELECT * FROM apiKeys WHERE id = ?",[a]);if(!d)return null;let{generateApiKeyWithMachine:f}=await c.e(6844).then(c.bind(c,86844)),g=f(d.machineId).key;return b.run("UPDATE apiKeys SET key = ? WHERE id = ?",[g,a]),{...j({...d,key:g}),key:g}}async function p(a,b){let c=(await (0,e.cK)()).get("SELECT budgetDaily, budgetMonthly, requestsPerMinute, allowedModels FROM apiKeys WHERE key = ?",[a]);if(!c)return{allowed:!0,release(){}};let d=h(c.allowedModels);if(d.length>0&&!d.includes(b))return{allowed:!1,status:403,reason:`Model ${b} is not allowed for this API key`};let i=Number(c.requestsPerMinute)||0;if(i>0){let b=Date.now(),c=(g.get(a)||[]).filter(a=>b-a<6e4);if(c.length>=i){let d=Math.max(1,Math.ceil((6e4-(b-c[0]))/1e3));return g.set(a,c),{allowed:!1,status:429,retryAfter:d,reason:"API key rate limit exceeded"}}c.push(b),g.set(a,c)}let j=Number(c.budgetDaily)>0||Number(c.budgetMonthly)>0;return j&&f.has(a)?{allowed:!1,status:429,retryAfter:1,reason:"A budgeted request is already in progress"}:(j&&f.add(a),{allowed:!0,release:()=>f.delete(a)})}async function q(a){let b=(await (0,e.cK)()).run("DELETE FROM apiKeys WHERE id = ?",[a]);return(b?.changes??0)>0}async function r(a){let b=(await (0,e.cK)()).get("SELECT isActive FROM apiKeys WHERE key = ?",[a]);return!!b&&(1===b.isActive||!0===b.isActive)}async function s(a){let b=await (0,e.cK)(),c=b.get("SELECT budgetDaily, budgetMonthly FROM apiKeys WHERE key = ?",[a]);if(!c)return{allowed:!0};let d=c.budgetDaily||0,f=c.budgetMonthly||0;if(d<=0&&f<=0)return{allowed:!0,budgetDaily:d,budgetMonthly:f};let g=0,h=0;try{if(d>0){let c=new Date;c.setHours(0,0,0,0);let d=b.get("SELECT COALESCE(SUM(cost), 0) AS total FROM usageHistory WHERE apiKey = ? AND timestamp >= ?",[a,c.toISOString()]);g=d?.total||0}if(f>0){let c=new Date;c.setDate(1),c.setHours(0,0,0,0);let d=b.get("SELECT COALESCE(SUM(cost), 0) AS total FROM usageHistory WHERE apiKey = ? AND timestamp >= ?",[a,c.toISOString()]);h=d?.total||0}}catch(a){return{allowed:!1,error:!0,reason:"Budget accounting unavailable"}}return d>0&&g>=d?{allowed:!1,reason:`Daily budget exceeded ($${g.toFixed(4)} / $${d})`,spentDaily:g,spentMonthly:h,budgetDaily:d,budgetMonthly:f}:f>0&&h>=f?{allowed:!1,reason:`Monthly budget exceeded ($${h.toFixed(4)} / $${f})`,spentDaily:g,spentMonthly:h,budgetDaily:d,budgetMonthly:f}:{allowed:!0,spentDaily:g,spentMonthly:h,budgetDaily:d,budgetMonthly:f}}},78335:()=>{},80601:(a,b,c)=>{"use strict";c.d(b,{S8:()=>L.S8,admitApiKeyRequest:()=>D.admitApiKeyRequest,E5:()=>ai,checkApiKeyBudget:()=>D.checkApiKeyBudget,bI:()=>h.cleanupProviderConnections,Iq:()=>D.createApiKey,jd:()=>I,QI:()=>z,p3:()=>C,iE:()=>h.createProviderConnection,i0:()=>i.createProviderNode,ZO:()=>o,Lh:()=>D.deleteApiKey,CG:()=>K,NR:()=>B,uL:()=>L.uL,fv:()=>L.fv,fK:()=>h.deleteProviderConnection,op:()=>h.deleteProviderConnectionsByProvider,Pc:()=>i.deleteProviderNode,Yd:()=>q,tm:()=>P,oF:()=>Q,zP:()=>al,rg:()=>ac,tV:()=>r.tV,yg:()=>D.getApiKeyById,PX:()=>D.getApiKeys,j$:()=>ag,L:()=>G,Dj:()=>H,Uv:()=>F,yW:()=>y,uv:()=>L.uv,vF:()=>O,qd:()=>x,getLatencyStats:()=>ah,c:()=>L.getMitmAlias,OM:()=>L.OM,r4:()=>M.r4,Mc:()=>h.getProviderConnectionById,P:()=>h.getProviderConnections,Qu:()=>i.getProviderNodeById,Fh:()=>i.getProviderNodes,hr:()=>n,ui:()=>m,LF:()=>r.LF,Zx:()=>aj,SL:()=>ak.SL,mt:()=>g.getSettings,BY:()=>af,K1:()=>am,zY:()=>w,VT:()=>M.VT,yF:()=>M.yF,Pb:()=>D.rotateApiKey,KK:()=>r.KK,ox:()=>ak.ox,sZ:()=>ad,L9:()=>L.L9,o5:()=>L.o5,_V:()=>X,uw:()=>ab,XW:()=>D.updateApiKey,oG:()=>J,dK:()=>A,KJ:()=>M.KJ,rj:()=>h.updateProviderConnection,ho:()=>i.updateProviderNode,Q_:()=>p,Xx:()=>g.Xx,ek:()=>D.validateApiKey});var d=c(36366),e=c(63775),f=c(644),g=c(42655),h=c(5781),i=c(1129),j=c(47293);function k(a){return a?{...(0,f.q)(a.data,{}),id:a.id,isActive:1===a.isActive||!0===a.isActive,testStatus:a.testStatus,createdAt:a.createdAt,updatedAt:a.updatedAt}:null}function l(a,b){let c=function(a){let{id:b,isActive:c,testStatus:d,createdAt:e,updatedAt:g,...h}=a;return{id:b,isActive:+(!1!==c),testStatus:d??null,data:(0,f.s)(h),createdAt:e,updatedAt:g}}(b);a.run(`INSERT INTO proxyPools(id, isActive, testStatus, data, createdAt, updatedAt)
19
19
  VALUES(?, ?, ?, ?, ?, ?)
20
20
  ON CONFLICT(id) DO UPDATE SET
21
21
  isActive=excluded.isActive, testStatus=excluded.testStatus,
@@ -1 +1 @@
1
- exports.id=5469,exports.ids=[5469],exports.modules={73180:(a,b,c)=>{"use strict";c.d(b,{default:()=>o});var d=c(48249),e=c(67484),f=c(26921),g=c(11656),h=c(50412);c(91431),c(96919);let i=[],j=["Explain this project like I'm new","Write a concise PR description","Debug this error message","Summarize the key trade-offs"];function k(){return globalThis.crypto?.randomUUID?globalThis.crypto.randomUUID():`chat_${Date.now()}_${Math.random().toString(16).slice(2)}`}function l(a){if("string"==typeof a)return a;if(null==a)return"";if(Array.isArray(a))return a.map(l).filter(Boolean).join(" ");if("object"==typeof a){if("string"==typeof a.message)return a.message;if("string"==typeof a.error)return a.error;try{return JSON.stringify(a)}catch{}}return String(a)}function m(a=""){let b=l(a).replace(/\s+/g," ").trim();return b?b.length>52?`${b.slice(0,52).trimEnd()}…`:b:"New chat"}async function n(a){return await new Promise((b,c)=>{let d=new FileReader;d.onload=()=>b(String(d.result||"")),d.onerror=()=>c(d.error||Error("Failed to read file")),d.readAsDataURL(a)})}function o(){let[a,b]=(0,e.useState)([]),[c,o]=(0,e.useState)(!0),[p,q]=(0,e.useState)(""),[r,s]=(0,e.useState)(()=>[]),[t,u]=(0,e.useState)(()=>""),[v,w]=(0,e.useState)(()=>""),[x,y]=(0,e.useState)(""),[z,A]=(0,e.useState)(()=>""),[B,C]=(0,e.useState)([]),[D,E]=(0,e.useState)(!1),[F,G]=(0,e.useState)(""),[H,I]=(0,e.useState)(""),[J,K]=(0,e.useState)(!1),[L,M]=(0,e.useState)(!1),[N,O]=(0,e.useState)(""),[P,Q]=(0,e.useState)(!1),[R,S]=(0,e.useState)(!1),[T,U]=(0,e.useState)(""),[V,W]=(0,e.useState)(()=>.7),[X,Y]=(0,e.useState)(()=>""),Z=(0,e.useRef)(null),$=(0,e.useRef)(null);(0,e.useRef)(!1);let _=(0,e.useRef)(null),aa=(0,e.useRef)(null),ab=(0,e.useRef)(null),ac=(0,e.useRef)(null),ad=(0,e.useRef)(null),ae=(0,e.useMemo)(()=>{let b=new Map;for(let c of a)for(let a of c.models)b.set(a.id,{...a,providerId:c.providerId,providerName:c.providerName});return b},[a]),af=(0,e.useMemo)(()=>a.find(a=>a.providerId===v)||a[0]||null,[a,v]),ag=(0,e.useMemo)(()=>{if(x&&ae.has(x))return ae.get(x);if(t){let a=r.find(a=>a.id===t);if(a?.modelId&&ae.has(a.modelId))return ae.get(a.modelId)}return af?.models?.[0]||null},[x,ae,af,r,t]),ah=(0,e.useMemo)(()=>r.find(a=>a.id===t)||null,[r,t]),ai=ah?.messages||i,aj=(0,e.useMemo)(()=>[...r].sort((a,b)=>new Date(b.updatedAt).getTime()-new Date(a.updatedAt).getTime()),[r]),ak=!D&&!!ag&&(z.trim().length>0||B.length>0),al=(a,b)=>{s(c=>c.map(c=>c.id===a?b({...c,messages:Array.isArray(c.messages)?c.messages.map(a=>({...a})):[]}):c))},am=a=>a?{id:k(),title:"New chat",providerId:a.providerId,providerName:a.providerName,modelId:a.id,modelName:a.name,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),messages:[]}:null,an=()=>{if(!ag)return;let a=am(ag);a&&(s(b=>[a,...b]),u(a.id),w(a.providerId),y(a.modelId),A(""),C([]),G(""),I(""))},ao=async a=>{let b=Array.from(a.target.files||[]);if(0===b.length)return;let c=b.filter(a=>a.type.startsWith("image/"));if(0===c.length){a.target.value="";return}let d=await Promise.all(c.map(async a=>({id:k(),name:a.name,type:a.type,size:a.size,dataUrl:await n(a)})));C(a=>[...a,...d]),a.target.value=""},ap=(a,b)=>{let c=m(b);al(a,a=>({...a,title:"New chat"===a.title?c:a.title,updatedAt:new Date().toISOString()}))},aq=async(a,b)=>{try{await navigator.clipboard.writeText(l(b)),U(a),setTimeout(()=>U(b=>b===a?"":b),1500)}catch{}},ar=async(a={})=>{let b=ag||af?.models?.[0]||null;if(!b)return;let c=!0===a.regenerate,d=t,e=r.find(a=>a.id===d),f="string"==typeof a.userText?a.userText:z.trim(),g=Array.isArray(a.attachments)?a.attachments:B;if(c){if(!e)return;let a=[...e.messages||[]];for(;a.length&&a[a.length-1]?.role==="assistant";)a.pop();let b=[...a].reverse().find(a=>"user"===a.role);if(!b)return;f=l(b.content).trim(),g=Array.isArray(b.attachments)?b.attachments:[],e={...e,messages:a},s(a=>a.map(a=>a.id===d?e:a))}if(!f&&(!g||0===g.length))return;if(!e){if(!(e=am(b)))return;d=e.id,s(a=>[e,...a]),u(d)}let h=c?null:{id:k(),role:"user",content:f,attachments:(g||[]).map(a=>({id:a.id,name:a.name,type:a.type,dataUrl:a.dataUrl})),createdAt:new Date().toISOString()},i=k(),j={id:i,role:"assistant",content:"",createdAt:new Date().toISOString(),status:"streaming"},n=[...c?[...e.messages||[]]:[...e.messages||[],h],j];s(a=>a.map(a=>a.id===d?{...a,providerId:b.providerId,providerName:b.providerName,modelId:b.id,modelName:b.name,messages:n,updatedAt:new Date().toISOString(),title:"New chat"===a.title?m(f):a.title}:a)),!c&&(A(""),C([]),ac.current&&(ac.current.style.height="auto")),E(!0),G(i),I(""),$.current?.abort(),$.current=new AbortController;let o=n.filter(a=>"assistant"!==a.role||a.id!==i).map(a=>({role:a.role,content:"user"===a.role?function(a){let b=l(a.content).trim(),c=Array.isArray(a.attachments)?a.attachments:[];if(0===c.length)return b;let d=[];for(let a of(b&&d.push({type:"text",text:b}),c))a?.dataUrl&&d.push({type:"image_url",image_url:{url:a.dataUrl}});return d.length>0?d:b}(a):a.content})),p=X.trim(),q=p?[{role:"system",content:p},...o]:o;try{let a=await fetch("/api/dashboard/chat/completions",{method:"POST",headers:{"Content-Type":"application/json",Accept:"text/event-stream"},body:JSON.stringify({model:b.requestModel||b.id,messages:q,stream:!0,temperature:V}),signal:$.current.signal});if(!a.ok){let b=await a.json().catch(()=>({}));throw Error(l(b.error||b.message||`Request failed (${a.status})`))}let c=a.body?.getReader();if(!c){let b=await a.json().catch(()=>({})),c=l(b?.choices?.[0]?.message?.content||b?.output_text||b?.error||b?.message||"");al(d,a=>({...a,messages:a.messages.map(a=>a.id===i?{...a,content:c,status:"done"}:a),updatedAt:new Date().toISOString()}));return}let e=new TextDecoder,g="",h="";for(;;){let{value:a,done:b}=await c.read();if(b)break;let f=(g+=e.decode(a,{stream:!0})).split(/\r?\n/);for(let a of(g=f.pop()||"",f)){let b=a.trim();if(!b.startsWith("data:"))continue;let c=b.slice(5).trim();if(c&&"[DONE]"!==c)try{let a=JSON.parse(c),b=function(a){if(!a||"object"!=typeof a)return"";let b=a.choices?.[0];return[(b?.delta||{}).content,b?.message?.content,a.output_text,a.text].map(l).filter(Boolean)[0]||""}(a);if(!b)continue;h+=b,I(h),al(d,a=>({...a,messages:a.messages.map(a=>a.id===i?{...a,content:h,status:"streaming"}:a),updatedAt:new Date().toISOString()}))}catch{}}}al(d,a=>({...a,messages:a.messages.map(a=>a.id===i?{...a,content:h||a.content,status:"done"}:a),updatedAt:new Date().toISOString()})),ap(d,f)}catch(a){if("AbortError"===a.name)al(d,a=>({...a,messages:a.messages.map(a=>a.id===i?{...a,content:a.content||"Stopped",status:"stopped"}:a),updatedAt:new Date().toISOString()})),ap(d,f);else{let b=l(a?.message||a);al(d,a=>({...a,messages:a.messages.map(a=>a.id===i?{...a,content:a.content||`Error: ${b}`,status:"error"}:a),updatedAt:new Date().toISOString()}))}}finally{E(!1),G(""),I(""),$.current=null}},as=ag?ag.name:"Select model",at=ag?`${ag.providerName||""} \xb7 ${ag.requestModel||ag.id}`.replace(/^ · /,""):"Connected providers only",au=(0,e.useMemo)(()=>{let b=N.trim().toLowerCase();return b?a.map(a=>{let c=(a.providerName||"").toLowerCase().includes(b)||(a.providerId||"").toLowerCase().includes(b)?a.models:a.models.filter(a=>`${a.name||""} ${a.requestModel||""} ${a.id||""}`.toLowerCase().includes(b));return{...a,models:c}}).filter(a=>a.models.length>0):a},[a,N]);return(0,d.jsxs)("div",{className:"relative flex h-full min-h-0 min-w-0 flex-1 overflow-hidden bg-bg text-text-main",children:[(0,d.jsxs)("aside",{id:"playground-history",className:`${P?"flex":"hidden"} fixed inset-y-0 left-0 z-30 w-[min(85vw,260px)] shrink-0 flex-col border-r border-border-subtle bg-surface/95 backdrop-blur-xl lg:static lg:z-auto lg:flex lg:w-[260px] lg:bg-surface/60`,children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 border-b border-border-subtle p-3",children:[(0,d.jsxs)("button",{type:"button",onClick:an,disabled:!ag,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",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"add"}),"New chat"]}),(0,d.jsx)("button",{type:"button",className:"flex size-9 items-center justify-center rounded-[10px] border border-border text-text-muted lg:hidden hover:bg-surface-2",onClick:()=>Q(!1),"aria-label":"Close history",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"close"})})]}),(0,d.jsxs)("div",{ref:aa,className:"flex-1 overflow-y-auto p-2 custom-scrollbar",children:[(0,d.jsx)("p",{className:"px-2 py-2 text-[11px] font-semibold uppercase tracking-wider text-text-subtle",children:"Chats"}),0===aj.length?(0,d.jsx)("div",{className:"rounded-[10px] border border-dashed border-border px-3 py-6 text-center text-xs text-text-muted",children:"No conversations yet"}):(0,d.jsx)("div",{className:"space-y-0.5",children:aj.map(a=>{let b=a.id===t,c=[...a.messages||[]].reverse().find(a=>"user"===a.role)||a.messages?.[0];return(0,d.jsxs)("button",{type:"button",onClick:()=>{var b;let c;b=a.id,(c=r.find(a=>a.id===b))&&(u(b),w(c.providerId||v),y(c.modelId||x),Q(!1))},className:`group flex w-full items-start gap-2 rounded-[10px] px-2.5 py-2.5 text-left transition ${b?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface-2 hover:text-text-main"}`,children:[(0,d.jsx)("span",{className:"material-symbols-outlined mt-0.5 text-[16px] opacity-70",children:"chat_bubble"}),(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsx)("p",{className:"truncate text-[13px] font-medium leading-snug",children:a.title||"New chat"}),(0,d.jsxs)("p",{className:"mt-0.5 truncate text-[11px] opacity-60",children:[l(c?.content)||"Empty"," \xb7"," ",function(a){if(!a)return"Now";let b=new Date(a).getTime();if(Number.isNaN(b))return"Now";let c=Math.max(1,Math.round((Date.now()-b)/6e4));if(c<60)return`${c}m`;let d=Math.round(c/60);return d<24?`${d}h`:`${Math.round(d/24)}d`}(a.updatedAt)]})]})]},a.id)})})]}),(0,d.jsx)("div",{className:"border-t border-border-subtle p-3",children:(0,d.jsxs)("button",{type:"button",onClick:()=>{if(!t)return;let a=r.filter(a=>a.id!==t),b=a[0]||null;s(a),b?(u(b.id),w(b.providerId),y(b.modelId)):(u(""),w(""),y(""))},disabled:!t||0===r.length,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",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"delete"}),"Delete current chat"]})})]}),(0,d.jsxs)("div",{className:"relative flex min-w-0 flex-1 flex-col",children:[(0,d.jsxs)("div",{className:"flex shrink-0 items-center justify-between gap-2 border-b border-border-subtle px-3 py-2 lg:hidden",children:[(0,d.jsx)("button",{type:"button",onClick:()=>Q(!0),className:"flex size-9 items-center justify-center rounded-[10px] border border-border text-text-muted hover:bg-surface-2","aria-label":"Open chats","aria-expanded":P,"aria-controls":"playground-history",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"menu"})}),(0,d.jsxs)("div",{className:"min-w-0 text-center",children:[(0,d.jsx)("p",{className:"truncate text-sm font-semibold",children:as}),(0,d.jsx)("p",{className:"truncate text-[11px] text-text-subtle",children:at})]}),(0,d.jsx)("button",{type:"button",onClick:an,disabled:!ag,className:"flex size-9 items-center justify-center rounded-[10px] border border-border text-text-muted hover:bg-surface-2 disabled:opacity-40","aria-label":"New chat",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"edit_square"})})]}),p?(0,d.jsx)("div",{role:"alert",className:"mx-4 mt-3 rounded-[10px] border border-danger/25 bg-danger/10 px-3 py-2.5 text-sm text-danger",children:(0,d.jsxs)("div",{className:"flex items-start gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"error"}),(0,d.jsx)("p",{children:p})]})}):null,(0,d.jsx)("div",{className:"flex-1 overflow-y-auto custom-scrollbar",children:0===ai.length?(0,d.jsxs)("div",{className:"flex min-h-full flex-col items-center justify-center px-6 pb-36 pt-10 text-center",children:[(0,d.jsx)("div",{className:"mb-4 flex size-12 items-center justify-center rounded-2xl border border-border bg-surface text-primary shadow-soft",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[26px]",children:"forum"})}),(0,d.jsx)("h2",{className:"text-[22px] font-semibold tracking-tight text-text-main",children:"How can I help?"}),(0,d.jsx)("p",{className:"mt-1.5 max-w-md text-[13px] leading-relaxed text-text-muted",children:"Pick a model below, then ask anything through your connected providers."}),(0,d.jsx)("div",{className:"mt-6 flex max-w-xl flex-wrap items-center justify-center gap-2",children:j.map(a=>(0,d.jsx)("button",{type:"button",disabled:!ag||c,onClick:()=>{A(a),requestAnimationFrame(()=>ac.current?.focus())},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",children:a},a))}),c?(0,d.jsx)("p",{className:"mt-4 text-xs text-text-subtle",children:"Loading models…"}):null]}):(0,d.jsxs)("div",{className:"mx-auto w-full max-w-3xl px-4 py-6 lg:px-8",children:[ai.map((a,b)=>{let c="user"===a.role,e="assistant"===a.role,h=e&&a.id===F&&"streaming"===a.status,i=l(a.content)||(e?H:""),j="error"===a.status,k="stopped"===a.status,m=e&&b===ai.length-1&&"streaming"!==a.status;return(0,d.jsx)("div",{className:"group relative mb-1 border-b border-border-subtle/50 py-5 last:border-0",children:(0,d.jsxs)("div",{className:"flex gap-3.5",children:[(0,d.jsx)("div",{className:`flex size-7 shrink-0 items-center justify-center rounded-full text-[11px] font-bold ${c?"bg-primary text-white":"border border-border bg-surface-2 text-text-muted"}`,children:c?"Y":"AI"}),(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsx)("p",{className:"mb-1.5 text-[12px] font-semibold text-text-main",children:c?"You":ag?.name||"Assistant"}),a.attachments?.length?(0,d.jsx)("div",{className:"mb-3 grid max-w-md grid-cols-2 gap-2 sm:grid-cols-3",children:a.attachments.map(a=>(0,d.jsx)("a",{href:a.dataUrl,target:"_blank",rel:"noreferrer",className:"overflow-hidden rounded-lg border border-border",children:(0,d.jsx)("img",{src:a.dataUrl,alt:a.name,className:"h-24 w-full object-cover"})},a.id))}):null,e&&!j?(0,d.jsx)("div",{className:"playground-md text-[14.5px] leading-[1.7] text-text-main",dangerouslySetInnerHTML:{__html:function(a){let b=l(a);if(!b)return"";try{return g.A.sanitize(f.xI.parse(b))}catch{return b.replace(/</g,"&lt;").replace(/>/g,"&gt;")}}(i)||""}}):(0,d.jsx)("div",{className:`whitespace-pre-wrap break-words text-[14.5px] leading-[1.7] ${j?"text-danger":"text-text-main"}`,children:i}),e&&h?(0,d.jsx)("span",{className:"ml-0.5 inline-block animate-pulse text-primary",children:"▋"}):null,k?(0,d.jsx)("p",{className:"mt-2 text-xs text-text-muted",children:"Generation stopped"}):null,e&&i&&!h?(0,d.jsxs)("div",{className:"mt-2 flex items-center gap-1 opacity-100 transition sm:opacity-0 sm:group-hover:opacity-100 sm:group-focus-within:opacity-100",children:[(0,d.jsxs)("button",{type:"button",onClick:()=>aq(a.id,i),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",title:"Copy",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:T===a.id?"check":"content_copy"}),T===a.id?"Copied":"Copy"]}),m&&!D?(0,d.jsxs)("button",{type:"button",onClick:()=>ar({regenerate:!0}),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",title:"Regenerate",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"refresh"}),"Retry"]}):null]}):null]})]})},a.id)}),(0,d.jsx)("div",{ref:ad})]})}),(0,d.jsx)("div",{className:"shrink-0 border-t border-border-subtle bg-bg/90 backdrop-blur-xl",children:(0,d.jsxs)("div",{className:"mx-auto w-full max-w-3xl px-4 pb-4 pt-3 lg:px-6",children:[B.length>0?(0,d.jsx)("div",{className:"mb-2 flex flex-wrap gap-2",children:B.map(a=>(0,d.jsxs)("div",{className:"flex items-center gap-2 rounded-full border border-border bg-surface px-3 py-1.5",children:[(0,d.jsx)("span",{className:"max-w-[10rem] truncate text-xs text-text-muted",children:a.name}),(0,d.jsx)("button",{type:"button",onClick:()=>{var b;return b=a.id,void C(a=>a.filter(a=>a.id!==b))},className:"text-text-subtle hover:text-text-main","aria-label":"Remove attachment",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"close"})})]},a.id))}):null,(0,d.jsxs)("div",{className:"rounded-2xl border border-border-subtle bg-surface-2/80 shadow-soft ring-1 ring-border-subtle focus-within:border-primary/50 focus-within:ring-primary/20 transition",children:[(0,d.jsx)("textarea",{ref:ac,"aria-label":"Message",value:z,onChange:a=>A(a.target.value),onKeyDown:a=>{"Enter"===a.key&&!a.shiftKey&&(a.preventDefault(),ak&&ar())},placeholder:ag?`Message ${ag.name}…`:"Select a model below to start chatting",rows:1,disabled:!ag||c,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"}),(0,d.jsxs)("div",{className:"flex items-center justify-between gap-2 px-2.5 pb-2.5 pt-1",children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-1.5",children:[(0,d.jsxs)("button",{type:"button",onClick:()=>Z.current?.click(),disabled:!ag||c,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",title:"Upload image",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"add_photo_alternate"}),(0,d.jsx)("span",{className:"hidden sm:inline",children:"Image"})]}),(0,d.jsx)("input",{ref:Z,type:"file",accept:"image/*",multiple:!0,className:"hidden",onChange:ao}),(0,d.jsxs)("div",{ref:ab,className:"relative",children:[(0,d.jsxs)("button",{type:"button",onClick:()=>S(a=>!a),className:`inline-flex h-9 items-center gap-1.5 rounded-full border px-3 text-[12px] font-medium transition ${R||X.trim()||.7!==V?"border-primary/40 bg-primary/10 text-primary":"border-border bg-surface text-text-main hover:border-primary/40 hover:bg-primary/10 hover:text-primary"}`,title:"Chat settings","aria-label":"Chat settings","aria-expanded":R,"aria-controls":"playground-chat-settings",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"tune"}),(0,d.jsx)("span",{className:"hidden sm:inline tabular-nums",children:V.toFixed(1)})]}),R?(0,d.jsxs)("div",{id:"playground-chat-settings",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",children:[(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"mb-1.5 flex items-center justify-between gap-2",children:[(0,d.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wider text-text-subtle",children:"Temperature"}),(0,d.jsx)("span",{className:"text-xs font-semibold tabular-nums text-text-main",children:V.toFixed(2)})]}),(0,d.jsx)("input",{type:"range",min:0,max:2,step:.05,value:V,onChange:a=>W(Number(a.target.value)),className:"w-full accent-[var(--color-primary,#E56A4A)]"}),(0,d.jsxs)("div",{className:"mt-1 flex justify-between text-[10px] text-text-subtle",children:[(0,d.jsx)("span",{children:"Precise"}),(0,d.jsx)("span",{children:"Creative"})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"mb-1.5 text-[11px] font-semibold uppercase tracking-wider text-text-subtle",children:"System prompt"}),(0,d.jsx)("textarea",{value:X,onChange:a=>Y(a.target.value),rows:4,placeholder:"Optional instructions for the model…",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"})]}),(0,d.jsx)("button",{type:"button",onClick:()=>{W(.7),Y("")},className:"text-[11px] font-medium text-text-muted hover:text-text-main",children:"Reset defaults"})]}):null]}),(0,d.jsxs)("div",{ref:_,className:"relative min-w-0",children:[(0,d.jsxs)("button",{type:"button",onClick:()=>{M(a=>{let b=!a;return b||O(""),b})},disabled:c||0===a.length,"aria-label":`Choose model, currently ${as}`,"aria-haspopup":"listbox","aria-expanded":L,"aria-controls":"playground-model-menu",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",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] text-primary shrink-0",children:"smart_toy"}),(0,d.jsx)("span",{className:"min-w-0 truncate text-[12.5px] font-semibold text-text-main",children:c?"Loading…":as}),(0,d.jsx)("span",{className:"material-symbols-outlined shrink-0 text-[16px] text-text-muted",children:L?"expand_less":"expand_more"})]}),L?(0,d.jsxs)("div",{id:"playground-model-menu",role:"listbox","aria-label":"Models",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",children:[(0,d.jsxs)("div",{className:"border-b border-border-subtle px-3 py-2.5 space-y-2",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wider text-text-subtle",children:"Models"}),(0,d.jsxs)("p",{className:"text-xs text-text-muted",children:[a.length," providers \xb7 search by name"]})]}),(0,d.jsxs)("div",{className:"relative",children:[(0,d.jsx)("span",{className:"material-symbols-outlined pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-[16px] text-text-subtle",children:"search"}),(0,d.jsx)("input",{type:"search",value:N,onChange:a=>O(a.target.value),placeholder:"Search models…",autoFocus:!0,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"})]})]}),(0,d.jsx)("div",{className:"max-h-[min(50vh,360px)] overflow-y-auto p-1.5 custom-scrollbar",children:0===au.length?(0,d.jsxs)("p",{className:"px-3 py-6 text-center text-xs text-text-muted",children:["No models match “",N.trim(),"”"]}):au.map(a=>(0,d.jsxs)("div",{className:"mb-1",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between px-2 py-1.5",children:[(0,d.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wide text-text-subtle",children:a.providerName}),(0,d.jsx)(h.Ex,{size:"sm",variant:"default",children:a.models.length})]}),(0,d.jsx)("div",{className:"space-y-0.5",children:a.models.map(a=>{let b=a.id===x;return(0,d.jsxs)("button",{type:"button",role:"option","aria-selected":b,onClick:()=>{(a=>{let b=ae.get(a);if(!b)return;let c=r.find(a=>a.id===t);if(c&&c.messages.length>0){let a=am(b);if(!a)return;s(b=>[a,...b]),u(a.id)}else if(c)s(a=>a.map(a=>a.id===c.id?{...a,providerId:b.providerId,providerName:b.providerName,modelId:b.id,modelName:b.name}:a)),u(c.id);else{let a=am(b);if(!a)return;s(b=>[a,...b]),u(a.id)}w(b.providerId),y(b.id),M(!1)})(a.id),O("")},className:`flex w-full items-center gap-2 rounded-lg px-2.5 py-2 text-left transition ${b?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface-2 hover:text-text-main"}`,children:[(0,d.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,d.jsx)("span",{className:"block truncate text-[13px] font-medium",children:a.name}),(0,d.jsx)("span",{className:"block truncate text-[11px] opacity-60",children:a.requestModel})]}),b?(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"check"}):null]},a.id)})})]},a.providerId))})]}):null]})]}),(0,d.jsxs)("div",{className:"flex shrink-0 items-center gap-2",children:[D?(0,d.jsxs)("button",{type:"button",onClick:()=>{$.current?.abort()},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",title:"Stop generating",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"stop_circle"}),(0,d.jsx)("span",{className:"hidden sm:inline",children:"Stop"})]}):null,(0,d.jsxs)("button",{type:"button",onClick:ar,disabled:!ak,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 ${ak?"bg-primary text-white shadow-[0_2px_12px_rgba(229,106,74,0.45)] hover:bg-primary-hover active:scale-[0.97]":"bg-surface-3 text-text-subtle cursor-not-allowed opacity-70"}`,title:"Send message",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] font-bold",children:"send"}),(0,d.jsx)("span",{className:"hidden sm:inline",children:"Send"})]})]})]})]}),(0,d.jsx)("p",{className:"mt-2 text-center text-[11px] text-text-subtle",children:"Routed through ZevaiRouter \xb7 Enter to send \xb7 Shift+Enter for new line"})]})})]}),P?(0,d.jsx)("button",{type:"button",className:"fixed inset-0 z-20 bg-black/40 lg:hidden","aria-label":"Close history",onClick:()=>Q(!1)}):null]})}f.xI.setOptions({gfm:!0,breaks:!0})},75746:(a,b,c)=>{Promise.resolve().then(c.bind(c,79286))},79286:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/firda/zevairouter/src/app/(dashboard)/dashboard/basic-chat/BasicChatPageClient.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/firda/zevairouter/src/app/(dashboard)/dashboard/basic-chat/BasicChatPageClient.js","default")},93898:(a,b,c)=>{Promise.resolve().then(c.bind(c,73180))}};
1
+ exports.id=5469,exports.ids=[5469],exports.modules={73180:(a,b,c)=>{"use strict";c.d(b,{default:()=>o});var d=c(48249),e=c(67484),f=c(26921),g=c(11656),h=c(50412);c(91431),c(96919);let i=[],j=["Explain this project like I'm new","Write a concise PR description","Debug this error message","Summarize the key trade-offs"];function k(){return globalThis.crypto?.randomUUID?globalThis.crypto.randomUUID():`chat_${Date.now()}_${Math.random().toString(16).slice(2)}`}function l(a){if("string"==typeof a)return a;if(null==a)return"";if(Array.isArray(a))return a.map(l).filter(Boolean).join(" ");if("object"==typeof a){if("string"==typeof a.message)return a.message;if("string"==typeof a.error)return a.error;try{return JSON.stringify(a)}catch{}}return String(a)}function m(a=""){let b=l(a).replace(/\s+/g," ").trim();return b?b.length>52?`${b.slice(0,52).trimEnd()}…`:b:"New chat"}async function n(a){return await new Promise((b,c)=>{let d=new FileReader;d.onload=()=>b(String(d.result||"")),d.onerror=()=>c(d.error||Error("Failed to read file")),d.readAsDataURL(a)})}function o(){let[a,b]=(0,e.useState)([]),[c,o]=(0,e.useState)(!0),[p,q]=(0,e.useState)(""),[r,s]=(0,e.useState)(()=>[]),[t,u]=(0,e.useState)(()=>""),[v,w]=(0,e.useState)(()=>""),[x,y]=(0,e.useState)(""),[z,A]=(0,e.useState)(()=>""),[B,C]=(0,e.useState)([]),[D,E]=(0,e.useState)(!1),[F,G]=(0,e.useState)(""),[H,I]=(0,e.useState)(""),[J,K]=(0,e.useState)(!1),[L,M]=(0,e.useState)(!1),[N,O]=(0,e.useState)(""),[P,Q]=(0,e.useState)(!1),[R,S]=(0,e.useState)(!1),[T,U]=(0,e.useState)(""),[V,W]=(0,e.useState)(()=>.7),[X,Y]=(0,e.useState)(()=>""),Z=(0,e.useRef)(null),$=(0,e.useRef)(null);(0,e.useRef)(!1);let _=(0,e.useRef)(null),aa=(0,e.useRef)(null),ab=(0,e.useRef)(null),ac=(0,e.useRef)(null),ad=(0,e.useRef)(null),ae=(0,e.useMemo)(()=>{let b=new Map;for(let c of a)for(let a of c.models)b.set(a.id,{...a,providerId:c.providerId,providerName:c.providerName});return b},[a]),af=(0,e.useMemo)(()=>a.find(a=>a.providerId===v)||a[0]||null,[a,v]),ag=(0,e.useMemo)(()=>{if(x&&ae.has(x))return ae.get(x);if(t){let a=r.find(a=>a.id===t);if(a?.modelId&&ae.has(a.modelId))return ae.get(a.modelId)}return af?.models?.[0]||null},[x,ae,af,r,t]),ah=(0,e.useMemo)(()=>r.find(a=>a.id===t)||null,[r,t]),ai=ah?.messages||i,aj=(0,e.useMemo)(()=>[...r].sort((a,b)=>new Date(b.updatedAt).getTime()-new Date(a.updatedAt).getTime()),[r]),ak=!D&&!!ag&&(z.trim().length>0||B.length>0),al=(a,b)=>{s(c=>c.map(c=>c.id===a?b({...c,messages:Array.isArray(c.messages)?c.messages.map(a=>({...a})):[]}):c))},am=a=>a?{id:k(),title:"New chat",providerId:a.providerId,providerName:a.providerName,modelId:a.id,modelName:a.name,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),messages:[]}:null,an=()=>{if(!ag)return;let a=am(ag);a&&(s(b=>[a,...b]),u(a.id),w(a.providerId),y(a.modelId),A(""),C([]),G(""),I(""))},ao=async a=>{let b=Array.from(a.target.files||[]);if(0===b.length)return;let c=b.filter(a=>a.type.startsWith("image/"));if(0===c.length){a.target.value="";return}let d=await Promise.all(c.map(async a=>({id:k(),name:a.name,type:a.type,size:a.size,dataUrl:await n(a)})));C(a=>[...a,...d]),a.target.value=""},ap=(a,b)=>{let c=m(b);al(a,a=>({...a,title:"New chat"===a.title?c:a.title,updatedAt:new Date().toISOString()}))},aq=async(a,b)=>{try{await navigator.clipboard.writeText(l(b)),U(a),setTimeout(()=>U(b=>b===a?"":b),1500)}catch{}},ar=async(a={})=>{let b=ag||af?.models?.[0]||null;if(!b)return;let c=!0===a.regenerate,d=t,e=r.find(a=>a.id===d),f="string"==typeof a.userText?a.userText:z.trim(),g=Array.isArray(a.attachments)?a.attachments:B;if(c){if(!e)return;let a=[...e.messages||[]];for(;a.length&&a[a.length-1]?.role==="assistant";)a.pop();let b=[...a].reverse().find(a=>"user"===a.role);if(!b)return;f=l(b.content).trim(),g=Array.isArray(b.attachments)?b.attachments:[],e={...e,messages:a},s(a=>a.map(a=>a.id===d?e:a))}if(!f&&(!g||0===g.length))return;if(!e){if(!(e=am(b)))return;d=e.id,s(a=>[e,...a]),u(d)}let h=c?null:{id:k(),role:"user",content:f,attachments:(g||[]).map(a=>({id:a.id,name:a.name,type:a.type,dataUrl:a.dataUrl})),createdAt:new Date().toISOString()},i=k(),j={id:i,role:"assistant",content:"",createdAt:new Date().toISOString(),status:"streaming"},n=[...c?[...e.messages||[]]:[...e.messages||[],h],j];s(a=>a.map(a=>a.id===d?{...a,providerId:b.providerId,providerName:b.providerName,modelId:b.id,modelName:b.name,messages:n,updatedAt:new Date().toISOString(),title:"New chat"===a.title?m(f):a.title}:a)),!c&&(A(""),C([]),ac.current&&(ac.current.style.height="auto")),E(!0),G(i),I(""),$.current?.abort(),$.current=new AbortController;let o=n.filter(a=>"assistant"!==a.role||a.id!==i).map(a=>({role:a.role,content:"user"===a.role?function(a){let b=l(a.content).trim(),c=Array.isArray(a.attachments)?a.attachments:[];if(0===c.length)return b;let d=[];for(let a of(b&&d.push({type:"text",text:b}),c))a?.dataUrl&&d.push({type:"image_url",image_url:{url:a.dataUrl}});return d.length>0?d:b}(a):a.content})),p=X.trim(),q=p?[{role:"system",content:p},...o]:o;try{let a=await fetch("/api/dashboard/chat/completions",{method:"POST",headers:{"Content-Type":"application/json",Accept:"text/event-stream"},body:JSON.stringify({model:b.requestModel||b.id,messages:q,stream:!0,temperature:V}),signal:$.current.signal});if(!a.ok){let b=await a.json().catch(()=>({}));throw Error(l(b.error||b.message||`Request failed (${a.status})`))}let c=a.body?.getReader();if(!c){let b=await a.json().catch(()=>({})),c=l(b?.choices?.[0]?.message?.content||b?.output_text||b?.error||b?.message||"");al(d,a=>({...a,messages:a.messages.map(a=>a.id===i?{...a,content:c,status:"done"}:a),updatedAt:new Date().toISOString()}));return}let e=new TextDecoder,g="",h="";for(;;){let{value:a,done:b}=await c.read();if(b)break;let f=(g+=e.decode(a,{stream:!0})).split(/\r?\n/);for(let a of(g=f.pop()||"",f)){let b=a.trim();if(!b.startsWith("data:"))continue;let c=b.slice(5).trim();if(c&&"[DONE]"!==c)try{let a=JSON.parse(c),b=function(a){if(!a||"object"!=typeof a)return"";let b=a.choices?.[0];return[(b?.delta||{}).content,b?.message?.content,a.output_text,a.text].map(l).filter(Boolean)[0]||""}(a);if(!b)continue;h+=b,I(h),al(d,a=>({...a,messages:a.messages.map(a=>a.id===i?{...a,content:h,status:"streaming"}:a),updatedAt:new Date().toISOString()}))}catch{}}}al(d,a=>({...a,messages:a.messages.map(a=>a.id===i?{...a,content:h||a.content,status:"done"}:a),updatedAt:new Date().toISOString()})),ap(d,f)}catch(a){if("AbortError"===a.name)al(d,a=>({...a,messages:a.messages.map(a=>a.id===i?{...a,content:a.content||"Stopped",status:"stopped"}:a),updatedAt:new Date().toISOString()})),ap(d,f);else{let b=l(a?.message||a);al(d,a=>({...a,messages:a.messages.map(a=>a.id===i?{...a,content:a.content||`Error: ${b}`,status:"error"}:a),updatedAt:new Date().toISOString()}))}}finally{E(!1),G(""),I(""),$.current=null}},as=ag?ag.name:"Select model",at=ag?`${ag.providerName||""} \xb7 ${ag.requestModel||ag.id}`.replace(/^ · /,""):"Connected providers only",au=(0,e.useMemo)(()=>{let b=N.trim().toLowerCase();return b?a.map(a=>{let c=(a.providerName||"").toLowerCase().includes(b)||(a.providerId||"").toLowerCase().includes(b)?a.models:a.models.filter(a=>`${a.name||""} ${a.requestModel||""} ${a.id||""}`.toLowerCase().includes(b));return{...a,models:c}}).filter(a=>a.models.length>0):a},[a,N]);return(0,d.jsxs)("div",{className:"relative flex h-full min-h-0 min-w-0 flex-1 overflow-hidden bg-bg text-text-main",children:[(0,d.jsxs)("aside",{id:"playground-history",className:`${P?"flex":"hidden"} fixed inset-y-0 left-0 z-30 w-[min(85vw,260px)] shrink-0 flex-col border-r border-border-subtle bg-surface/95 backdrop-blur-xl lg:static lg:z-auto lg:flex lg:w-[260px] lg:bg-surface/60`,children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 border-b border-border-subtle p-3",children:[(0,d.jsxs)("button",{type:"button",onClick:an,disabled:!ag,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",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"add"}),"New chat"]}),(0,d.jsx)("button",{type:"button",className:"flex size-11 items-center justify-center rounded-[10px] border border-border text-text-muted lg:hidden hover:bg-surface-2",onClick:()=>Q(!1),"aria-label":"Close history",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"close"})})]}),(0,d.jsxs)("div",{ref:aa,className:"flex-1 overflow-y-auto p-2 custom-scrollbar",children:[(0,d.jsx)("p",{className:"px-2 py-2 text-[11px] font-semibold uppercase tracking-wider text-text-subtle",children:"Chats"}),0===aj.length?(0,d.jsx)("div",{className:"rounded-[10px] border border-dashed border-border px-3 py-6 text-center text-xs text-text-muted",children:"No conversations yet"}):(0,d.jsx)("div",{className:"space-y-0.5",children:aj.map(a=>{let b=a.id===t,c=[...a.messages||[]].reverse().find(a=>"user"===a.role)||a.messages?.[0];return(0,d.jsxs)("button",{type:"button",onClick:()=>{var b;let c;b=a.id,(c=r.find(a=>a.id===b))&&(u(b),w(c.providerId||v),y(c.modelId||x),Q(!1))},className:`group flex w-full items-start gap-2 rounded-[10px] px-2.5 py-2.5 text-left transition ${b?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface-2 hover:text-text-main"}`,children:[(0,d.jsx)("span",{className:"material-symbols-outlined mt-0.5 text-[16px] opacity-70",children:"chat_bubble"}),(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsx)("p",{className:"truncate text-[13px] font-medium leading-snug",children:a.title||"New chat"}),(0,d.jsxs)("p",{className:"mt-0.5 truncate text-[11px] opacity-60",children:[l(c?.content)||"Empty"," \xb7"," ",function(a){if(!a)return"Now";let b=new Date(a).getTime();if(Number.isNaN(b))return"Now";let c=Math.max(1,Math.round((Date.now()-b)/6e4));if(c<60)return`${c}m`;let d=Math.round(c/60);return d<24?`${d}h`:`${Math.round(d/24)}d`}(a.updatedAt)]})]})]},a.id)})})]}),(0,d.jsx)("div",{className:"border-t border-border-subtle p-3",children:(0,d.jsxs)("button",{type:"button",onClick:()=>{if(!t)return;let a=r.filter(a=>a.id!==t),b=a[0]||null;s(a),b?(u(b.id),w(b.providerId),y(b.modelId)):(u(""),w(""),y(""))},disabled:!t||0===r.length,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",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"delete"}),"Delete current chat"]})})]}),(0,d.jsxs)("div",{className:"relative flex min-w-0 flex-1 flex-col",children:[(0,d.jsxs)("div",{className:"flex shrink-0 items-center justify-between gap-2 border-b border-border-subtle px-3 py-2 lg:hidden",children:[(0,d.jsx)("button",{type:"button",onClick:()=>Q(!0),className:"flex size-11 items-center justify-center rounded-[10px] border border-border text-text-muted hover:bg-surface-2","aria-label":"Open chats","aria-expanded":P,"aria-controls":"playground-history",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"history"})}),(0,d.jsxs)("div",{className:"min-w-0 text-center",children:[(0,d.jsx)("p",{className:"truncate text-sm font-semibold",children:as}),(0,d.jsx)("p",{className:"truncate text-[11px] text-text-subtle",children:at})]}),(0,d.jsx)("button",{type:"button",onClick:an,disabled:!ag,className:"flex size-11 items-center justify-center rounded-[10px] border border-border text-text-muted hover:bg-surface-2 disabled:opacity-40","aria-label":"New chat",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"edit_square"})})]}),p?(0,d.jsx)("div",{role:"alert",className:"mx-4 mt-3 rounded-[10px] border border-danger/25 bg-danger/10 px-3 py-2.5 text-sm text-danger",children:(0,d.jsxs)("div",{className:"flex items-start gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"error"}),(0,d.jsx)("p",{children:p})]})}):null,(0,d.jsx)("div",{className:"flex-1 overflow-y-auto custom-scrollbar",children:0===ai.length?(0,d.jsxs)("div",{className:"flex min-h-full flex-col items-center justify-center px-6 pb-36 pt-10 text-center",children:[(0,d.jsx)("div",{className:"mb-4 flex size-12 items-center justify-center rounded-2xl border border-border bg-surface text-primary shadow-soft",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[26px]",children:"forum"})}),(0,d.jsx)("h2",{className:"text-[22px] font-semibold tracking-tight text-text-main",children:"How can I help?"}),(0,d.jsx)("p",{className:"mt-1.5 max-w-md text-[13px] leading-relaxed text-text-muted",children:"Pick a model below, then ask anything through your connected providers."}),(0,d.jsx)("div",{className:"mt-6 flex max-w-xl flex-wrap items-center justify-center gap-2",children:j.map(a=>(0,d.jsx)("button",{type:"button",disabled:!ag||c,onClick:()=>{A(a),requestAnimationFrame(()=>ac.current?.focus())},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",children:a},a))}),c?(0,d.jsx)("p",{className:"mt-4 text-xs text-text-subtle",children:"Loading models…"}):null]}):(0,d.jsxs)("div",{className:"mx-auto w-full max-w-3xl px-4 py-6 lg:px-8",children:[ai.map((a,b)=>{let c="user"===a.role,e="assistant"===a.role,h=e&&a.id===F&&"streaming"===a.status,i=l(a.content)||(e?H:""),j="error"===a.status,k="stopped"===a.status,m=e&&b===ai.length-1&&"streaming"!==a.status;return(0,d.jsx)("div",{className:"group relative mb-1 border-b border-border-subtle/50 py-5 last:border-0",children:(0,d.jsxs)("div",{className:"flex gap-3.5",children:[(0,d.jsx)("div",{className:`flex size-7 shrink-0 items-center justify-center rounded-full text-[11px] font-bold ${c?"bg-primary text-white":"border border-border bg-surface-2 text-text-muted"}`,children:c?"Y":"AI"}),(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsx)("p",{className:"mb-1.5 text-[12px] font-semibold text-text-main",children:c?"You":ag?.name||"Assistant"}),a.attachments?.length?(0,d.jsx)("div",{className:"mb-3 grid max-w-md grid-cols-2 gap-2 sm:grid-cols-3",children:a.attachments.map(a=>(0,d.jsx)("a",{href:a.dataUrl,target:"_blank",rel:"noreferrer",className:"overflow-hidden rounded-lg border border-border",children:(0,d.jsx)("img",{src:a.dataUrl,alt:a.name,className:"h-24 w-full object-cover"})},a.id))}):null,e&&!j?(0,d.jsx)("div",{className:"playground-md text-[14.5px] leading-[1.7] text-text-main",dangerouslySetInnerHTML:{__html:function(a){let b=l(a);if(!b)return"";try{return g.A.sanitize(f.xI.parse(b))}catch{return b.replace(/</g,"&lt;").replace(/>/g,"&gt;")}}(i)||""}}):(0,d.jsx)("div",{className:`whitespace-pre-wrap break-words text-[14.5px] leading-[1.7] ${j?"text-danger":"text-text-main"}`,children:i}),e&&h?(0,d.jsx)("span",{className:"ml-0.5 inline-block animate-pulse text-primary",children:"▋"}):null,k?(0,d.jsx)("p",{className:"mt-2 text-xs text-text-muted",children:"Generation stopped"}):null,e&&i&&!h?(0,d.jsxs)("div",{className:"mt-2 flex items-center gap-1 opacity-100 transition sm:opacity-0 sm:group-hover:opacity-100 sm:group-focus-within:opacity-100",children:[(0,d.jsxs)("button",{type:"button",onClick:()=>aq(a.id,i),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",title:"Copy",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:T===a.id?"check":"content_copy"}),T===a.id?"Copied":"Copy"]}),m&&!D?(0,d.jsxs)("button",{type:"button",onClick:()=>ar({regenerate:!0}),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",title:"Regenerate",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"refresh"}),"Retry"]}):null]}):null]})]})},a.id)}),(0,d.jsx)("div",{ref:ad})]})}),(0,d.jsx)("div",{className:"shrink-0 border-t border-border-subtle bg-bg/90 backdrop-blur-xl",children:(0,d.jsxs)("div",{className:"mx-auto w-full max-w-3xl px-4 pb-4 pt-3 lg:px-6",children:[B.length>0?(0,d.jsx)("div",{className:"mb-2 flex flex-wrap gap-2",children:B.map(a=>(0,d.jsxs)("div",{className:"flex items-center gap-2 rounded-full border border-border bg-surface px-3 py-1.5",children:[(0,d.jsx)("span",{className:"max-w-[10rem] truncate text-xs text-text-muted",children:a.name}),(0,d.jsx)("button",{type:"button",onClick:()=>{var b;return b=a.id,void C(a=>a.filter(a=>a.id!==b))},className:"text-text-subtle hover:text-text-main","aria-label":"Remove attachment",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"close"})})]},a.id))}):null,(0,d.jsxs)("div",{className:"rounded-2xl border border-border-subtle bg-surface-2/80 shadow-soft ring-1 ring-border-subtle focus-within:border-primary/50 focus-within:ring-primary/20 transition",children:[(0,d.jsx)("textarea",{ref:ac,"aria-label":"Message",value:z,onChange:a=>A(a.target.value),onKeyDown:a=>{"Enter"===a.key&&!a.shiftKey&&(a.preventDefault(),ak&&ar())},placeholder:ag?`Message ${ag.name}…`:"Select a model below to start chatting",rows:1,disabled:!ag||c,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"}),(0,d.jsxs)("div",{className:"flex items-center justify-between gap-2 px-2.5 pb-2.5 pt-1",children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-1.5",children:[(0,d.jsxs)("button",{type:"button",onClick:()=>Z.current?.click(),disabled:!ag||c,className:"inline-flex h-11 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",title:"Upload image",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"add_photo_alternate"}),(0,d.jsx)("span",{className:"hidden sm:inline",children:"Image"})]}),(0,d.jsx)("input",{ref:Z,type:"file",accept:"image/*",multiple:!0,className:"hidden",onChange:ao}),(0,d.jsxs)("div",{ref:ab,className:"relative",children:[(0,d.jsxs)("button",{type:"button",onClick:()=>S(a=>!a),className:`inline-flex h-11 items-center gap-1.5 rounded-full border px-3 text-[12px] font-medium transition ${R||X.trim()||.7!==V?"border-primary/40 bg-primary/10 text-primary":"border-border bg-surface text-text-main hover:border-primary/40 hover:bg-primary/10 hover:text-primary"}`,title:"Chat settings","aria-label":"Chat settings","aria-expanded":R,"aria-controls":"playground-chat-settings",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"tune"}),(0,d.jsx)("span",{className:"hidden sm:inline tabular-nums",children:V.toFixed(1)})]}),R?(0,d.jsxs)("div",{id:"playground-chat-settings",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",children:[(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"mb-1.5 flex items-center justify-between gap-2",children:[(0,d.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wider text-text-subtle",children:"Temperature"}),(0,d.jsx)("span",{className:"text-xs font-semibold tabular-nums text-text-main",children:V.toFixed(2)})]}),(0,d.jsx)("input",{type:"range",min:0,max:2,step:.05,value:V,onChange:a=>W(Number(a.target.value)),className:"w-full accent-[var(--color-primary,#E56A4A)]"}),(0,d.jsxs)("div",{className:"mt-1 flex justify-between text-[10px] text-text-subtle",children:[(0,d.jsx)("span",{children:"Precise"}),(0,d.jsx)("span",{children:"Creative"})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"mb-1.5 text-[11px] font-semibold uppercase tracking-wider text-text-subtle",children:"System prompt"}),(0,d.jsx)("textarea",{value:X,onChange:a=>Y(a.target.value),rows:4,placeholder:"Optional instructions for the model…",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"})]}),(0,d.jsx)("button",{type:"button",onClick:()=>{W(.7),Y("")},className:"text-[11px] font-medium text-text-muted hover:text-text-main",children:"Reset defaults"})]}):null]}),(0,d.jsxs)("div",{ref:_,className:"relative min-w-0",children:[(0,d.jsxs)("button",{type:"button",onClick:()=>{M(a=>{let b=!a;return b||O(""),b})},disabled:c||0===a.length,"aria-label":`Choose model, currently ${as}`,"aria-haspopup":"listbox","aria-expanded":L,"aria-controls":"playground-model-menu",className:"inline-flex h-11 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",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] text-primary shrink-0",children:"smart_toy"}),(0,d.jsx)("span",{className:"min-w-0 truncate text-[12.5px] font-semibold text-text-main",children:c?"Loading…":as}),(0,d.jsx)("span",{className:"material-symbols-outlined shrink-0 text-[16px] text-text-muted",children:L?"expand_less":"expand_more"})]}),L?(0,d.jsxs)("div",{id:"playground-model-menu",role:"listbox","aria-label":"Models",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",children:[(0,d.jsxs)("div",{className:"border-b border-border-subtle px-3 py-2.5 space-y-2",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wider text-text-subtle",children:"Models"}),(0,d.jsxs)("p",{className:"text-xs text-text-muted",children:[a.length," providers \xb7 search by name"]})]}),(0,d.jsxs)("div",{className:"relative",children:[(0,d.jsx)("span",{className:"material-symbols-outlined pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-[16px] text-text-subtle",children:"search"}),(0,d.jsx)("input",{type:"search",value:N,onChange:a=>O(a.target.value),placeholder:"Search models…",autoFocus:!0,className:"w-full rounded-lg border border-border bg-bg py-1.5 pl-8 pr-3 text-[16px] text-text-main outline-none placeholder:text-text-subtle focus:border-primary/40"})]})]}),(0,d.jsx)("div",{className:"max-h-[min(50vh,360px)] overflow-y-auto p-1.5 custom-scrollbar",children:0===au.length?(0,d.jsxs)("p",{className:"px-3 py-6 text-center text-xs text-text-muted",children:["No models match “",N.trim(),"”"]}):au.map(a=>(0,d.jsxs)("div",{className:"mb-1",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between px-2 py-1.5",children:[(0,d.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wide text-text-subtle",children:a.providerName}),(0,d.jsx)(h.Ex,{size:"sm",variant:"default",children:a.models.length})]}),(0,d.jsx)("div",{className:"space-y-0.5",children:a.models.map(a=>{let b=a.id===x;return(0,d.jsxs)("button",{type:"button",role:"option","aria-selected":b,onClick:()=>{(a=>{let b=ae.get(a);if(!b)return;let c=r.find(a=>a.id===t);if(c&&c.messages.length>0){let a=am(b);if(!a)return;s(b=>[a,...b]),u(a.id)}else if(c)s(a=>a.map(a=>a.id===c.id?{...a,providerId:b.providerId,providerName:b.providerName,modelId:b.id,modelName:b.name}:a)),u(c.id);else{let a=am(b);if(!a)return;s(b=>[a,...b]),u(a.id)}w(b.providerId),y(b.id),M(!1)})(a.id),O("")},className:`flex w-full items-center gap-2 rounded-lg px-2.5 py-2 text-left transition ${b?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface-2 hover:text-text-main"}`,children:[(0,d.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,d.jsx)("span",{className:"block truncate text-[13px] font-medium",children:a.name}),(0,d.jsx)("span",{className:"block truncate text-[11px] opacity-60",children:a.requestModel})]}),b?(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"check"}):null]},a.id)})})]},a.providerId))})]}):null]})]}),(0,d.jsxs)("div",{className:"flex shrink-0 items-center gap-2",children:[D?(0,d.jsxs)("button",{type:"button",onClick:()=>{$.current?.abort()},className:"inline-flex h-11 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",title:"Stop generating",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"stop_circle"}),(0,d.jsx)("span",{className:"hidden sm:inline",children:"Stop"})]}):null,(0,d.jsxs)("button",{type:"button",onClick:ar,disabled:!ak,className:`inline-flex h-11 min-w-9 items-center justify-center gap-1.5 rounded-full px-3.5 text-[13px] font-semibold transition ${ak?"bg-primary text-white shadow-[0_2px_12px_rgba(229,106,74,0.45)] hover:bg-primary-hover active:scale-[0.97]":"bg-surface-3 text-text-subtle cursor-not-allowed opacity-70"}`,title:"Send message",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] font-bold",children:"send"}),(0,d.jsx)("span",{className:"hidden sm:inline",children:"Send"})]})]})]})]}),(0,d.jsx)("p",{className:"mt-2 text-center text-[11px] text-text-subtle",children:"Routed through ZevaiRouter \xb7 Enter to send \xb7 Shift+Enter for new line"})]})})]}),P?(0,d.jsx)("button",{type:"button",className:"fixed inset-0 z-20 bg-black/40 lg:hidden","aria-label":"Close history",onClick:()=>Q(!1)}):null]})}f.xI.setOptions({gfm:!0,breaks:!0})},75746:(a,b,c)=>{Promise.resolve().then(c.bind(c,79286))},79286:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/firda/zevairouter/src/app/(dashboard)/dashboard/basic-chat/BasicChatPageClient.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/firda/zevairouter/src/app/(dashboard)/dashboard/basic-chat/BasicChatPageClient.js","default")},93898:(a,b,c)=>{Promise.resolve().then(c.bind(c,73180))}};