ktrouter 1.0.3 → 1.0.4

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 (996) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +88 -125
  3. package/app/.next/BUILD_ID +1 -1
  4. package/app/.next/app-path-routes-manifest.json +2 -1
  5. package/app/.next/build-manifest.json +2 -2
  6. package/app/.next/routes-manifest.json +6 -0
  7. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
  8. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +2 -2
  11. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
  14. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  17. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
  20. package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  23. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +2 -2
  26. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -2
  29. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  31. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +3 -3
  32. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  33. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  34. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
  35. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  36. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  37. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
  38. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  39. package/app/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  40. package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
  41. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  42. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  43. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  44. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  45. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  46. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  47. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  48. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  49. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  50. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  51. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  52. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  53. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  54. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  55. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js +2 -2
  56. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  57. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  58. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js +2 -2
  59. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  60. package/app/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  61. package/app/.next/server/app/(dashboard)/dashboard/skills/page.js +2 -2
  62. package/app/.next/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  63. package/app/.next/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  64. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +2 -2
  65. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  66. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  67. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  68. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  69. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  70. package/app/.next/server/app/_global-error/page.js +3 -3
  71. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  72. package/app/.next/server/app/_global-error.html +1 -1
  73. package/app/.next/server/app/_global-error.rsc +1 -1
  74. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  75. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  76. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  77. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  78. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  79. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  80. package/app/.next/server/app/_not-found/page.js +2 -2
  81. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  82. package/app/.next/server/app/_not-found.html +1 -1
  83. package/app/.next/server/app/_not-found.rsc +4 -4
  84. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  85. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  86. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
  87. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  88. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  89. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  90. package/app/.next/server/app/api/auth/login/route.js +1 -1
  91. package/app/.next/server/app/api/auth/logout/route.js +1 -1
  92. package/app/.next/server/app/api/auth/oidc/callback/route.js +1 -1
  93. package/app/.next/server/app/api/auth/oidc/start/route.js +1 -1
  94. package/app/.next/server/app/api/auth/oidc/test/route.js +1 -1
  95. package/app/.next/server/app/api/auth/status/route.js +1 -1
  96. package/app/.next/server/app/api/cli-tools/all-statuses/route.js +3 -3
  97. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  98. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  99. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
  100. package/app/.next/server/app/api/cli-tools/cline-settings/route.js +2 -2
  101. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +1 -1
  102. package/app/.next/server/app/api/cli-tools/copilot-settings/route.js +2 -2
  103. package/app/.next/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
  104. package/app/.next/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
  105. package/app/.next/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  106. package/app/.next/server/app/api/cli-tools/deepseek-tui-settings/route.js +2 -2
  107. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +1 -1
  108. package/app/.next/server/app/api/cli-tools/hermes-settings/route.js +2 -2
  109. package/app/.next/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  110. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +1 -1
  111. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +1 -1
  112. package/app/.next/server/app/api/cli-tools/opencode-settings/route.js +1 -1
  113. package/app/.next/server/app/api/cloud/auth/route.js +1 -1
  114. package/app/.next/server/app/api/cloud/credentials/update/route.js +1 -1
  115. package/app/.next/server/app/api/cloud/model/resolve/route.js +1 -1
  116. package/app/.next/server/app/api/cloud/models/alias/route.js +1 -1
  117. package/app/.next/server/app/api/combos/[id]/route.js +1 -1
  118. package/app/.next/server/app/api/combos/route.js +1 -1
  119. package/app/.next/server/app/api/health/route.js +1 -1
  120. package/app/.next/server/app/api/init/route.js +1 -1
  121. package/app/.next/server/app/api/keys/[id]/route.js +1 -1
  122. package/app/.next/server/app/api/keys/route.js +1 -1
  123. package/app/.next/server/app/api/locale/route.js +1 -1
  124. package/app/.next/server/app/api/mcp/[plugin]/message/route.js +1 -1
  125. package/app/.next/server/app/api/mcp/[plugin]/sse/route.js +2 -2
  126. package/app/.next/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  127. package/app/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  128. package/app/.next/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  129. package/app/.next/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  130. package/app/.next/server/app/api/media-providers/tts/voices/route.js +1 -1
  131. package/app/.next/server/app/api/models/alias/route.js +1 -1
  132. package/app/.next/server/app/api/models/availability/route.js +1 -1
  133. package/app/.next/server/app/api/models/custom/route.js +1 -1
  134. package/app/.next/server/app/api/models/disabled/route.js +1 -1
  135. package/app/.next/server/app/api/models/route.js +1 -1
  136. package/app/.next/server/app/api/models/test/route.js +1 -1
  137. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  138. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js +2 -2
  139. package/app/.next/server/app/api/oauth/cursor/import/route.js +1 -1
  140. package/app/.next/server/app/api/oauth/gitlab/pat/route.js +1 -1
  141. package/app/.next/server/app/api/oauth/iflow/cookie/route.js +1 -1
  142. package/app/.next/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  143. package/app/.next/server/app/api/oauth/kiro/browser-login/route.js +2 -2
  144. package/app/.next/server/app/api/oauth/kiro/import/route.js +1 -1
  145. package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  146. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  147. package/app/.next/server/app/api/pricing/route.js +1 -1
  148. package/app/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
  149. package/app/.next/server/app/api/provider-nodes/route.js +1 -1
  150. package/app/.next/server/app/api/provider-nodes/validate/route.js +1 -1
  151. package/app/.next/server/app/api/providers/[id]/models/route.js +1 -1
  152. package/app/.next/server/app/api/providers/[id]/route.js +1 -1
  153. package/app/.next/server/app/api/providers/[id]/test/route.js +1 -1
  154. package/app/.next/server/app/api/providers/[id]/test-models/route.js +1 -1
  155. package/app/.next/server/app/api/providers/client/route.js +1 -1
  156. package/app/.next/server/app/api/providers/export/route.js +1 -1
  157. package/app/.next/server/app/api/providers/import/route.js +1 -1
  158. package/app/.next/server/app/api/providers/kilo/free-models/route.js +1 -1
  159. package/app/.next/server/app/api/providers/route.js +1 -1
  160. package/app/.next/server/app/api/providers/suggested-models/route.js +1 -1
  161. package/app/.next/server/app/api/providers/test-batch/route.js +1 -1
  162. package/app/.next/server/app/api/providers/validate/route.js +1 -1
  163. package/app/.next/server/app/api/proxy-pools/[id]/route.js +1 -1
  164. package/app/.next/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  165. package/app/.next/server/app/api/proxy-pools/route.js +1 -1
  166. package/app/.next/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
  167. package/app/.next/server/app/api/settings/database/route.js +1 -1
  168. package/app/.next/server/app/api/settings/proxy-test/route.js +1 -1
  169. package/app/.next/server/app/api/settings/require-login/route.js +1 -1
  170. package/app/.next/server/app/api/settings/route.js +1 -1
  171. package/app/.next/server/app/api/shutdown/route.js +1 -1
  172. package/app/.next/server/app/api/tags/route.js +1 -1
  173. package/app/.next/server/app/api/translator/console-logs/route.js +1 -1
  174. package/app/.next/server/app/api/translator/console-logs/stream/route.js +2 -2
  175. package/app/.next/server/app/api/translator/load/route.js +1 -1
  176. package/app/.next/server/app/api/translator/save/route.js +1 -1
  177. package/app/.next/server/app/api/translator/send/route.js +1 -1
  178. package/app/.next/server/app/api/translator/translate/route.js +1 -1
  179. package/app/.next/server/app/api/update/check/route.js +1 -0
  180. package/app/.next/server/app/api/update/check/route.js.nft.json +1 -0
  181. package/app/.next/server/app/api/update/check/route_client-reference-manifest.js +1 -0
  182. package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
  183. package/app/.next/server/app/api/usage/chart/route.js +1 -1
  184. package/app/.next/server/app/api/usage/history/route.js +1 -1
  185. package/app/.next/server/app/api/usage/providers/route.js +1 -1
  186. package/app/.next/server/app/api/usage/request-details/route.js +1 -1
  187. package/app/.next/server/app/api/usage/request-logs/route.js +1 -1
  188. package/app/.next/server/app/api/usage/stats/route.js +1 -1
  189. package/app/.next/server/app/api/usage/stream/route.js +2 -2
  190. package/app/.next/server/app/api/v1/api/chat/route.js +1 -1
  191. package/app/.next/server/app/api/v1/audio/speech/route.js +1 -1
  192. package/app/.next/server/app/api/v1/audio/transcriptions/route.js +1 -1
  193. package/app/.next/server/app/api/v1/audio/voices/route.js +1 -1
  194. package/app/.next/server/app/api/v1/chat/completions/route.js +1 -1
  195. package/app/.next/server/app/api/v1/embeddings/route.js +1 -1
  196. package/app/.next/server/app/api/v1/images/generations/route.js +1 -1
  197. package/app/.next/server/app/api/v1/messages/count_tokens/route.js +1 -1
  198. package/app/.next/server/app/api/v1/messages/route.js +1 -1
  199. package/app/.next/server/app/api/v1/models/[kind]/route.js +1 -1
  200. package/app/.next/server/app/api/v1/models/info/route.js +1 -1
  201. package/app/.next/server/app/api/v1/models/route.js +1 -1
  202. package/app/.next/server/app/api/v1/responses/compact/route.js +1 -1
  203. package/app/.next/server/app/api/v1/responses/route.js +1 -1
  204. package/app/.next/server/app/api/v1/route.js +1 -1
  205. package/app/.next/server/app/api/v1/search/route.js +1 -1
  206. package/app/.next/server/app/api/v1/web/fetch/route.js +1 -1
  207. package/app/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
  208. package/app/.next/server/app/api/v1beta/models/route.js +1 -1
  209. package/app/.next/server/app/callback/page.js +2 -2
  210. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  211. package/app/.next/server/app/callback.html +1 -1
  212. package/app/.next/server/app/callback.rsc +4 -4
  213. package/app/.next/server/app/callback.segments/_full.segment.rsc +4 -4
  214. package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
  215. package/app/.next/server/app/callback.segments/_index.segment.rsc +4 -4
  216. package/app/.next/server/app/callback.segments/_tree.segment.rsc +2 -2
  217. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  218. package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
  219. package/app/.next/server/app/dashboard/basic-chat.html +1 -1
  220. package/app/.next/server/app/dashboard/basic-chat.rsc +6 -6
  221. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  222. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  223. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  224. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  225. package/app/.next/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
  226. package/app/.next/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  227. package/app/.next/server/app/dashboard/basic-chat.segments/_index.segment.rsc +4 -4
  228. package/app/.next/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
  229. package/app/.next/server/app/dashboard/cli-tools.html +1 -1
  230. package/app/.next/server/app/dashboard/cli-tools.rsc +6 -6
  231. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  232. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  233. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  234. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  235. package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
  236. package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  237. package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
  238. package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  239. package/app/.next/server/app/dashboard/combos.html +1 -1
  240. package/app/.next/server/app/dashboard/combos.rsc +6 -6
  241. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  242. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  243. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  244. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  245. package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
  246. package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  247. package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
  248. package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  249. package/app/.next/server/app/dashboard/endpoint.html +1 -1
  250. package/app/.next/server/app/dashboard/endpoint.rsc +6 -6
  251. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  252. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  253. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  254. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  255. package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
  256. package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  257. package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
  258. package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  259. package/app/.next/server/app/dashboard/media-providers/web.html +1 -1
  260. package/app/.next/server/app/dashboard/media-providers/web.rsc +6 -6
  261. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  262. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  263. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  264. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  265. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  266. package/app/.next/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +6 -6
  267. package/app/.next/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  268. package/app/.next/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +4 -4
  269. package/app/.next/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
  270. package/app/.next/server/app/dashboard/mitm.html +1 -1
  271. package/app/.next/server/app/dashboard/mitm.rsc +6 -6
  272. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  273. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  274. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  275. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  276. package/app/.next/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
  277. package/app/.next/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  278. package/app/.next/server/app/dashboard/mitm.segments/_index.segment.rsc +4 -4
  279. package/app/.next/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  280. package/app/.next/server/app/dashboard/profile.html +1 -1
  281. package/app/.next/server/app/dashboard/profile.rsc +6 -6
  282. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  283. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  284. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  285. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  286. package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
  287. package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  288. package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
  289. package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  290. package/app/.next/server/app/dashboard/providers/new.html +1 -1
  291. package/app/.next/server/app/dashboard/providers/new.rsc +6 -6
  292. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  293. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  294. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  295. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  296. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  297. package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
  298. package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  299. package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
  300. package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  301. package/app/.next/server/app/dashboard/providers.html +1 -1
  302. package/app/.next/server/app/dashboard/providers.rsc +6 -6
  303. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  304. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  305. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  306. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  307. package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
  308. package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  309. package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
  310. package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  311. package/app/.next/server/app/dashboard/proxy-pools.html +1 -1
  312. package/app/.next/server/app/dashboard/proxy-pools.rsc +6 -6
  313. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  314. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  315. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  316. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  317. package/app/.next/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
  318. package/app/.next/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  319. package/app/.next/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +4 -4
  320. package/app/.next/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  321. package/app/.next/server/app/dashboard/quota.html +2 -2
  322. package/app/.next/server/app/dashboard/quota.rsc +7 -7
  323. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  324. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  325. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  326. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  327. package/app/.next/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
  328. package/app/.next/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  329. package/app/.next/server/app/dashboard/quota.segments/_index.segment.rsc +4 -4
  330. package/app/.next/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  331. package/app/.next/server/app/dashboard/settings/pricing/page.js +2 -2
  332. package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  333. package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
  334. package/app/.next/server/app/dashboard/settings/pricing.rsc +4 -4
  335. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  336. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  337. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
  338. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  339. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  340. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  341. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  342. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  343. package/app/.next/server/app/dashboard/skills.html +1 -1
  344. package/app/.next/server/app/dashboard/skills.rsc +6 -6
  345. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  346. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  347. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  348. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  349. package/app/.next/server/app/dashboard/skills.segments/_full.segment.rsc +6 -6
  350. package/app/.next/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  351. package/app/.next/server/app/dashboard/skills.segments/_index.segment.rsc +4 -4
  352. package/app/.next/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
  353. package/app/.next/server/app/dashboard/translator.html +1 -1
  354. package/app/.next/server/app/dashboard/translator.rsc +6 -6
  355. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  356. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  357. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  358. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  359. package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
  360. package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  361. package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
  362. package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  363. package/app/.next/server/app/dashboard/usage.html +1 -1
  364. package/app/.next/server/app/dashboard/usage.rsc +6 -6
  365. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  366. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  367. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  368. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  369. package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
  370. package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  371. package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
  372. package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  373. package/app/.next/server/app/dashboard.html +1 -1
  374. package/app/.next/server/app/dashboard.rsc +6 -6
  375. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  376. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  377. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  378. package/app/.next/server/app/dashboard.segments/_full.segment.rsc +6 -6
  379. package/app/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
  380. package/app/.next/server/app/dashboard.segments/_index.segment.rsc +4 -4
  381. package/app/.next/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  382. package/app/.next/server/app/favicon.ico/route.js +1 -1
  383. package/app/.next/server/app/index.html +1 -1
  384. package/app/.next/server/app/index.rsc +4 -4
  385. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  386. package/app/.next/server/app/index.segments/_full.segment.rsc +4 -4
  387. package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
  388. package/app/.next/server/app/index.segments/_index.segment.rsc +4 -4
  389. package/app/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  390. package/app/.next/server/app/landing/page.js +2 -2
  391. package/app/.next/server/app/landing/page.js.nft.json +1 -1
  392. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  393. package/app/.next/server/app/landing.html +1 -1
  394. package/app/.next/server/app/landing.rsc +5 -5
  395. package/app/.next/server/app/landing.segments/_full.segment.rsc +5 -5
  396. package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
  397. package/app/.next/server/app/landing.segments/_index.segment.rsc +4 -4
  398. package/app/.next/server/app/landing.segments/_tree.segment.rsc +2 -2
  399. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +2 -2
  400. package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
  401. package/app/.next/server/app/login/page.js +2 -2
  402. package/app/.next/server/app/login/page.js.nft.json +1 -1
  403. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  404. package/app/.next/server/app/login.html +1 -1
  405. package/app/.next/server/app/login.rsc +5 -5
  406. package/app/.next/server/app/login.segments/_full.segment.rsc +5 -5
  407. package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
  408. package/app/.next/server/app/login.segments/_index.segment.rsc +4 -4
  409. package/app/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  410. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  411. package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
  412. package/app/.next/server/app/manifest.webmanifest/route.js +2 -2
  413. package/app/.next/server/app/page.js +2 -2
  414. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  415. package/app/.next/server/app-paths-manifest.json +2 -1
  416. package/app/.next/server/chunks/2760.js +1 -0
  417. package/app/.next/server/chunks/3110.js +1 -1
  418. package/app/.next/server/chunks/412.js +1 -1
  419. package/app/.next/server/chunks/4746.js +1 -1
  420. package/app/.next/server/chunks/7153.js +1 -1
  421. package/app/.next/server/chunks/7482.js +64 -0
  422. package/app/.next/server/chunks/9142.js +1 -1
  423. package/app/.next/server/middleware-build-manifest.js +1 -1
  424. package/app/.next/server/pages/404.html +1 -1
  425. package/app/.next/server/pages/500.html +1 -1
  426. package/app/{.next-cli-build/static/chunks/1321-1f274005e8c1540f.js → .next/static/chunks/1321-41a4dcfb188426d3.js} +1 -1
  427. package/app/.next/static/chunks/2194-0ae5c1abf92e1815.js +1 -0
  428. package/app/{.next-cli-build/static/chunks/5497-a8a0c19ab6b9c4c1.js → .next/static/chunks/5497-4c26400a80ef0b62.js} +2 -2
  429. package/app/.next/static/chunks/698-57b11f0d345c21be.js +64 -0
  430. package/app/.next/static/chunks/app/(dashboard)/dashboard/basic-chat/{page-bec714176fa8d7c4.js → page-db8ac7cf0ef9a361.js} +1 -1
  431. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/{page-86a8914cd556520f.js → page-40fd24908ac8baa7.js} +1 -1
  432. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/{page-893d89f980f74411.js → page-780e29c4c311194c.js} +1 -1
  433. package/app/{.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-ee59f4f96724457b.js → .next/static/chunks/app/(dashboard)/dashboard/combos/page-bcc9a2e4246ddbd8.js} +1 -1
  434. package/app/.next/static/chunks/app/(dashboard)/dashboard/console-log/{page-942947df5d9f3fe6.js → page-b2d77aea3c0b05d0.js} +1 -1
  435. package/app/.next/static/chunks/app/(dashboard)/dashboard/{page-068f83db377de2b6.js → endpoint/page-14a181e5e19c5186.js} +1 -1
  436. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/{page-59b4fbc3f1fc56f1.js → page-61684adea800095b.js} +1 -1
  437. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/{page-bde0a134c064bce3.js → page-3723e8ba96394d8c.js} +1 -1
  438. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/{page-16e6f4d5f867f5e8.js → page-05769b574d5c4ef8.js} +1 -1
  439. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/web/{page-d14a224b2f068144.js → page-005bbd9915c7cea0.js} +1 -1
  440. package/app/.next/static/chunks/app/(dashboard)/dashboard/mitm/{page-6057d95afbf250b9.js → page-e1b5a604b766ad70.js} +1 -1
  441. package/app/.next/static/chunks/app/(dashboard)/dashboard/{endpoint/page-068f83db377de2b6.js → page-14a181e5e19c5186.js} +1 -1
  442. package/app/{.next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/page-f5815f8cf4135a41.js → .next/static/chunks/app/(dashboard)/dashboard/profile/page-57708bcc11f45673.js} +1 -1
  443. package/app/{.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-6244bc827bc1db37.js → .next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-cccaf25e5d3dd911.js} +1 -1
  444. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/{page-e0e60d2f940575b2.js → page-96c63eae7adf29f3.js} +1 -1
  445. package/app/{.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-bb220f0c70f95613.js → .next/static/chunks/app/(dashboard)/dashboard/providers/page-96b20973bc54c145.js} +1 -1
  446. package/app/{.next-cli-build/static/chunks/app/(dashboard)/dashboard/proxy-pools/page-abc650409d4556d2.js → .next/static/chunks/app/(dashboard)/dashboard/proxy-pools/page-d5ad4c7d44722fef.js} +1 -1
  447. package/app/{.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-416ef68ec1d6b85f.js → .next/static/chunks/app/(dashboard)/dashboard/quota/page-bddafaa872e75197.js} +1 -1
  448. package/app/.next/static/chunks/app/(dashboard)/dashboard/skills/page-c4158204df8fc9c8.js +1 -0
  449. package/app/{.next-cli-build/static/chunks/app/(dashboard)/dashboard/translator/page-85be4084e4727364.js → .next/static/chunks/app/(dashboard)/dashboard/translator/page-a769d03c4f44374e.js} +1 -1
  450. package/app/{.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-4c2da95208a15fe3.js → .next/static/chunks/app/(dashboard)/dashboard/usage/page-163bfd423028e8c6.js} +1 -1
  451. package/app/.next/static/chunks/app/(dashboard)/{layout-f8cf23fc65fca99f.js → layout-03b6cac1c6e1f41c.js} +1 -1
  452. package/app/.next/static/chunks/app/_global-error/page-96eac4861f242fd9.js +1 -0
  453. package/app/.next/static/chunks/app/api/auth/login/route-96eac4861f242fd9.js +1 -0
  454. package/app/.next/static/chunks/app/api/auth/logout/route-96eac4861f242fd9.js +1 -0
  455. package/app/.next/static/chunks/app/api/auth/oidc/callback/route-96eac4861f242fd9.js +1 -0
  456. package/app/.next/static/chunks/app/api/auth/oidc/start/route-96eac4861f242fd9.js +1 -0
  457. package/app/.next/static/chunks/app/api/auth/oidc/test/route-96eac4861f242fd9.js +1 -0
  458. package/app/.next/static/chunks/app/api/auth/status/route-96eac4861f242fd9.js +1 -0
  459. package/app/.next/static/chunks/app/api/cli-tools/all-statuses/route-96eac4861f242fd9.js +1 -0
  460. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-96eac4861f242fd9.js +1 -0
  461. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-96eac4861f242fd9.js +1 -0
  462. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-96eac4861f242fd9.js +1 -0
  463. package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-96eac4861f242fd9.js +1 -0
  464. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-96eac4861f242fd9.js +1 -0
  465. package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-96eac4861f242fd9.js +1 -0
  466. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-96eac4861f242fd9.js +1 -0
  467. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-96eac4861f242fd9.js +1 -0
  468. package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-96eac4861f242fd9.js +1 -0
  469. package/app/.next/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-96eac4861f242fd9.js +1 -0
  470. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-96eac4861f242fd9.js +1 -0
  471. package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-96eac4861f242fd9.js +1 -0
  472. package/app/.next/static/chunks/app/api/cli-tools/jcode-settings/route-96eac4861f242fd9.js +1 -0
  473. package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-96eac4861f242fd9.js +1 -0
  474. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-96eac4861f242fd9.js +1 -0
  475. package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-96eac4861f242fd9.js +1 -0
  476. package/app/.next/static/chunks/app/api/cloud/auth/route-96eac4861f242fd9.js +1 -0
  477. package/app/.next/static/chunks/app/api/cloud/credentials/update/route-96eac4861f242fd9.js +1 -0
  478. package/app/.next/static/chunks/app/api/cloud/model/resolve/route-96eac4861f242fd9.js +1 -0
  479. package/app/.next/static/chunks/app/api/cloud/models/alias/route-96eac4861f242fd9.js +1 -0
  480. package/app/.next/static/chunks/app/api/combos/[id]/route-96eac4861f242fd9.js +1 -0
  481. package/app/.next/static/chunks/app/api/combos/route-96eac4861f242fd9.js +1 -0
  482. package/app/.next/static/chunks/app/api/health/route-96eac4861f242fd9.js +1 -0
  483. package/app/.next/static/chunks/app/api/init/route-96eac4861f242fd9.js +1 -0
  484. package/app/.next/static/chunks/app/api/keys/[id]/route-96eac4861f242fd9.js +1 -0
  485. package/app/.next/static/chunks/app/api/keys/route-96eac4861f242fd9.js +1 -0
  486. package/app/.next/static/chunks/app/api/locale/route-96eac4861f242fd9.js +1 -0
  487. package/app/.next/static/chunks/app/api/mcp/[plugin]/message/route-96eac4861f242fd9.js +1 -0
  488. package/app/.next/static/chunks/app/api/mcp/[plugin]/sse/route-96eac4861f242fd9.js +1 -0
  489. package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-96eac4861f242fd9.js +1 -0
  490. package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-96eac4861f242fd9.js +1 -0
  491. package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-96eac4861f242fd9.js +1 -0
  492. package/app/.next/static/chunks/app/api/media-providers/tts/minimax/voices/route-96eac4861f242fd9.js +1 -0
  493. package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-96eac4861f242fd9.js +1 -0
  494. package/app/.next/static/chunks/app/api/models/alias/route-96eac4861f242fd9.js +1 -0
  495. package/app/.next/static/chunks/app/api/models/availability/route-96eac4861f242fd9.js +1 -0
  496. package/app/.next/static/chunks/app/api/models/custom/route-96eac4861f242fd9.js +1 -0
  497. package/app/.next/static/chunks/app/api/models/disabled/route-96eac4861f242fd9.js +1 -0
  498. package/app/.next/static/chunks/app/api/models/route-96eac4861f242fd9.js +1 -0
  499. package/app/.next/static/chunks/app/api/models/test/route-96eac4861f242fd9.js +1 -0
  500. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-96eac4861f242fd9.js +1 -0
  501. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-96eac4861f242fd9.js +1 -0
  502. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-96eac4861f242fd9.js +1 -0
  503. package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-96eac4861f242fd9.js +1 -0
  504. package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-96eac4861f242fd9.js +1 -0
  505. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-96eac4861f242fd9.js +1 -0
  506. package/app/.next/static/chunks/app/api/oauth/kiro/browser-login/route-96eac4861f242fd9.js +1 -0
  507. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-96eac4861f242fd9.js +1 -0
  508. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-96eac4861f242fd9.js +1 -0
  509. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-96eac4861f242fd9.js +1 -0
  510. package/app/.next/static/chunks/app/api/pricing/route-96eac4861f242fd9.js +1 -0
  511. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-96eac4861f242fd9.js +1 -0
  512. package/app/.next/static/chunks/app/api/provider-nodes/route-96eac4861f242fd9.js +1 -0
  513. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-96eac4861f242fd9.js +1 -0
  514. package/app/.next/static/chunks/app/api/providers/[id]/models/route-96eac4861f242fd9.js +1 -0
  515. package/app/.next/static/chunks/app/api/providers/[id]/route-96eac4861f242fd9.js +1 -0
  516. package/app/.next/static/chunks/app/api/providers/[id]/test/route-96eac4861f242fd9.js +1 -0
  517. package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-96eac4861f242fd9.js +1 -0
  518. package/app/.next/static/chunks/app/api/providers/client/route-96eac4861f242fd9.js +1 -0
  519. package/app/.next/static/chunks/app/api/providers/export/route-96eac4861f242fd9.js +1 -0
  520. package/app/.next/static/chunks/app/api/providers/import/route-96eac4861f242fd9.js +1 -0
  521. package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-96eac4861f242fd9.js +1 -0
  522. package/app/.next/static/chunks/app/api/providers/route-96eac4861f242fd9.js +1 -0
  523. package/app/.next/static/chunks/app/api/providers/suggested-models/route-96eac4861f242fd9.js +1 -0
  524. package/app/.next/static/chunks/app/api/providers/test-batch/route-96eac4861f242fd9.js +1 -0
  525. package/app/.next/static/chunks/app/api/providers/validate/route-96eac4861f242fd9.js +1 -0
  526. package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-96eac4861f242fd9.js +1 -0
  527. package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-96eac4861f242fd9.js +1 -0
  528. package/app/.next/static/chunks/app/api/proxy-pools/route-96eac4861f242fd9.js +1 -0
  529. package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-96eac4861f242fd9.js +1 -0
  530. package/app/.next/static/chunks/app/api/settings/database/route-96eac4861f242fd9.js +1 -0
  531. package/app/.next/static/chunks/app/api/settings/proxy-test/route-96eac4861f242fd9.js +1 -0
  532. package/app/.next/static/chunks/app/api/settings/require-login/route-96eac4861f242fd9.js +1 -0
  533. package/app/.next/static/chunks/app/api/settings/route-96eac4861f242fd9.js +1 -0
  534. package/app/.next/static/chunks/app/api/shutdown/route-96eac4861f242fd9.js +1 -0
  535. package/app/.next/static/chunks/app/api/tags/route-96eac4861f242fd9.js +1 -0
  536. package/app/.next/static/chunks/app/api/translator/console-logs/route-96eac4861f242fd9.js +1 -0
  537. package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-96eac4861f242fd9.js +1 -0
  538. package/app/.next/static/chunks/app/api/translator/load/route-96eac4861f242fd9.js +1 -0
  539. package/app/.next/static/chunks/app/api/translator/save/route-96eac4861f242fd9.js +1 -0
  540. package/app/.next/static/chunks/app/api/translator/send/route-96eac4861f242fd9.js +1 -0
  541. package/app/.next/static/chunks/app/api/translator/translate/route-96eac4861f242fd9.js +1 -0
  542. package/app/.next/static/chunks/app/api/update/check/route-96eac4861f242fd9.js +1 -0
  543. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-96eac4861f242fd9.js +1 -0
  544. package/app/.next/static/chunks/app/api/usage/chart/route-96eac4861f242fd9.js +1 -0
  545. package/app/.next/static/chunks/app/api/usage/history/route-96eac4861f242fd9.js +1 -0
  546. package/app/.next/static/chunks/app/api/usage/providers/route-96eac4861f242fd9.js +1 -0
  547. package/app/.next/static/chunks/app/api/usage/request-details/route-96eac4861f242fd9.js +1 -0
  548. package/app/.next/static/chunks/app/api/usage/request-logs/route-96eac4861f242fd9.js +1 -0
  549. package/app/.next/static/chunks/app/api/usage/stats/route-96eac4861f242fd9.js +1 -0
  550. package/app/.next/static/chunks/app/api/usage/stream/route-96eac4861f242fd9.js +1 -0
  551. package/app/.next/static/chunks/app/api/v1/api/chat/route-96eac4861f242fd9.js +1 -0
  552. package/app/.next/static/chunks/app/api/v1/audio/speech/route-96eac4861f242fd9.js +1 -0
  553. package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-96eac4861f242fd9.js +1 -0
  554. package/app/.next/static/chunks/app/api/v1/audio/voices/route-96eac4861f242fd9.js +1 -0
  555. package/app/.next/static/chunks/app/api/v1/chat/completions/route-96eac4861f242fd9.js +1 -0
  556. package/app/.next/static/chunks/app/api/v1/embeddings/route-96eac4861f242fd9.js +1 -0
  557. package/app/.next/static/chunks/app/api/v1/images/generations/route-96eac4861f242fd9.js +1 -0
  558. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-96eac4861f242fd9.js +1 -0
  559. package/app/.next/static/chunks/app/api/v1/messages/route-96eac4861f242fd9.js +1 -0
  560. package/app/.next/static/chunks/app/api/v1/models/[kind]/route-96eac4861f242fd9.js +1 -0
  561. package/app/.next/static/chunks/app/api/v1/models/info/route-96eac4861f242fd9.js +1 -0
  562. package/app/.next/static/chunks/app/api/v1/models/route-96eac4861f242fd9.js +1 -0
  563. package/app/.next/static/chunks/app/api/v1/responses/compact/route-96eac4861f242fd9.js +1 -0
  564. package/app/.next/static/chunks/app/api/v1/responses/route-96eac4861f242fd9.js +1 -0
  565. package/app/.next/static/chunks/app/api/v1/route-96eac4861f242fd9.js +1 -0
  566. package/app/.next/static/chunks/app/api/v1/search/route-96eac4861f242fd9.js +1 -0
  567. package/app/.next/static/chunks/app/api/v1/web/fetch/route-96eac4861f242fd9.js +1 -0
  568. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-96eac4861f242fd9.js +1 -0
  569. package/app/.next/static/chunks/app/api/v1beta/models/route-96eac4861f242fd9.js +1 -0
  570. package/app/.next/static/chunks/app/landing/page-3d2b079bd25f0dda.js +1 -0
  571. package/app/.next/static/chunks/app/login/{page-572b0096f259fd38.js → page-050a9acacb7d8882.js} +1 -1
  572. package/app/.next/static/chunks/app/manifest.webmanifest/route-96eac4861f242fd9.js +1 -0
  573. package/app/.next/static/chunks/app/page-96eac4861f242fd9.js +1 -0
  574. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-96eac4861f242fd9.js +1 -0
  575. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-96eac4861f242fd9.js +1 -0
  576. package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-96eac4861f242fd9.js +1 -0
  577. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-96eac4861f242fd9.js +1 -0
  578. package/app/.next/static/css/712c443ed43dbfcd.css +1 -0
  579. package/app/.next/static/vnu1gZOqzvf9J7CUswxcA/_buildManifest.js +1 -0
  580. package/app/{.next/static/chunks/1321-1f274005e8c1540f.js → .next-cli-build/static/chunks/1321-41a4dcfb188426d3.js} +1 -1
  581. package/app/.next-cli-build/static/chunks/2194-0ae5c1abf92e1815.js +1 -0
  582. package/app/{.next/static/chunks/5497-a8a0c19ab6b9c4c1.js → .next-cli-build/static/chunks/5497-4c26400a80ef0b62.js} +2 -2
  583. package/app/.next-cli-build/static/chunks/698-57b11f0d345c21be.js +64 -0
  584. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/basic-chat/{page-bec714176fa8d7c4.js → page-db8ac7cf0ef9a361.js} +1 -1
  585. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/{page-86a8914cd556520f.js → page-40fd24908ac8baa7.js} +1 -1
  586. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/{page-893d89f980f74411.js → page-780e29c4c311194c.js} +1 -1
  587. package/app/{.next/static/chunks/app/(dashboard)/dashboard/combos/page-ee59f4f96724457b.js → .next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-bcc9a2e4246ddbd8.js} +1 -1
  588. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/console-log/{page-942947df5d9f3fe6.js → page-b2d77aea3c0b05d0.js} +1 -1
  589. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/endpoint/{page-068f83db377de2b6.js → page-14a181e5e19c5186.js} +1 -1
  590. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/{page-59b4fbc3f1fc56f1.js → page-61684adea800095b.js} +1 -1
  591. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/{page-bde0a134c064bce3.js → page-3723e8ba96394d8c.js} +1 -1
  592. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/{page-16e6f4d5f867f5e8.js → page-05769b574d5c4ef8.js} +1 -1
  593. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/web/{page-d14a224b2f068144.js → page-005bbd9915c7cea0.js} +1 -1
  594. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/{page-6057d95afbf250b9.js → page-e1b5a604b766ad70.js} +1 -1
  595. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/{page-068f83db377de2b6.js → page-14a181e5e19c5186.js} +1 -1
  596. package/app/{.next/static/chunks/app/(dashboard)/dashboard/profile/page-f5815f8cf4135a41.js → .next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/page-57708bcc11f45673.js} +1 -1
  597. package/app/{.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-6244bc827bc1db37.js → .next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-cccaf25e5d3dd911.js} +1 -1
  598. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/new/{page-e0e60d2f940575b2.js → page-96c63eae7adf29f3.js} +1 -1
  599. package/app/{.next/static/chunks/app/(dashboard)/dashboard/providers/page-bb220f0c70f95613.js → .next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-96b20973bc54c145.js} +1 -1
  600. package/app/{.next/static/chunks/app/(dashboard)/dashboard/proxy-pools/page-abc650409d4556d2.js → .next-cli-build/static/chunks/app/(dashboard)/dashboard/proxy-pools/page-d5ad4c7d44722fef.js} +1 -1
  601. package/app/{.next/static/chunks/app/(dashboard)/dashboard/quota/page-416ef68ec1d6b85f.js → .next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-bddafaa872e75197.js} +1 -1
  602. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/skills/page-c4158204df8fc9c8.js +1 -0
  603. package/app/{.next/static/chunks/app/(dashboard)/dashboard/translator/page-85be4084e4727364.js → .next-cli-build/static/chunks/app/(dashboard)/dashboard/translator/page-a769d03c4f44374e.js} +1 -1
  604. package/app/{.next/static/chunks/app/(dashboard)/dashboard/usage/page-4c2da95208a15fe3.js → .next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-163bfd423028e8c6.js} +1 -1
  605. package/app/.next-cli-build/static/chunks/app/(dashboard)/{layout-f8cf23fc65fca99f.js → layout-03b6cac1c6e1f41c.js} +1 -1
  606. package/app/.next-cli-build/static/chunks/app/_global-error/{page-eb011c7eb268b87e.js → page-96eac4861f242fd9.js} +1 -1
  607. package/app/.next-cli-build/static/chunks/app/api/auth/login/{route-eb011c7eb268b87e.js → route-96eac4861f242fd9.js} +1 -1
  608. package/app/.next-cli-build/static/chunks/app/api/auth/logout/{route-eb011c7eb268b87e.js → route-96eac4861f242fd9.js} +1 -1
  609. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/{route-eb011c7eb268b87e.js → route-96eac4861f242fd9.js} +1 -1
  610. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-96eac4861f242fd9.js +1 -0
  611. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-96eac4861f242fd9.js +1 -0
  612. package/app/.next-cli-build/static/chunks/app/api/auth/status/route-96eac4861f242fd9.js +1 -0
  613. package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-96eac4861f242fd9.js +1 -0
  614. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-96eac4861f242fd9.js +1 -0
  615. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-96eac4861f242fd9.js +1 -0
  616. package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-96eac4861f242fd9.js +1 -0
  617. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-96eac4861f242fd9.js +1 -0
  618. package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-96eac4861f242fd9.js +1 -0
  619. package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-96eac4861f242fd9.js +1 -0
  620. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-96eac4861f242fd9.js +1 -0
  621. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-96eac4861f242fd9.js +1 -0
  622. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-96eac4861f242fd9.js +1 -0
  623. package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-96eac4861f242fd9.js +1 -0
  624. package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-96eac4861f242fd9.js +1 -0
  625. package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-96eac4861f242fd9.js +1 -0
  626. package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-96eac4861f242fd9.js +1 -0
  627. package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-96eac4861f242fd9.js +1 -0
  628. package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-96eac4861f242fd9.js +1 -0
  629. package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-96eac4861f242fd9.js +1 -0
  630. package/app/.next-cli-build/static/chunks/app/api/cloud/auth/route-96eac4861f242fd9.js +1 -0
  631. package/app/.next-cli-build/static/chunks/app/api/cloud/credentials/update/route-96eac4861f242fd9.js +1 -0
  632. package/app/.next-cli-build/static/chunks/app/api/cloud/model/resolve/route-96eac4861f242fd9.js +1 -0
  633. package/app/.next-cli-build/static/chunks/app/api/cloud/models/alias/route-96eac4861f242fd9.js +1 -0
  634. package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-96eac4861f242fd9.js +1 -0
  635. package/app/.next-cli-build/static/chunks/app/api/combos/route-96eac4861f242fd9.js +1 -0
  636. package/app/.next-cli-build/static/chunks/app/api/health/route-96eac4861f242fd9.js +1 -0
  637. package/app/.next-cli-build/static/chunks/app/api/init/route-96eac4861f242fd9.js +1 -0
  638. package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-96eac4861f242fd9.js +1 -0
  639. package/app/.next-cli-build/static/chunks/app/api/keys/route-96eac4861f242fd9.js +1 -0
  640. package/app/.next-cli-build/static/chunks/app/api/locale/route-96eac4861f242fd9.js +1 -0
  641. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-96eac4861f242fd9.js +1 -0
  642. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-96eac4861f242fd9.js +1 -0
  643. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-96eac4861f242fd9.js +1 -0
  644. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-96eac4861f242fd9.js +1 -0
  645. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-96eac4861f242fd9.js +1 -0
  646. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-96eac4861f242fd9.js +1 -0
  647. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-96eac4861f242fd9.js +1 -0
  648. package/app/.next-cli-build/static/chunks/app/api/models/alias/route-96eac4861f242fd9.js +1 -0
  649. package/app/.next-cli-build/static/chunks/app/api/models/availability/route-96eac4861f242fd9.js +1 -0
  650. package/app/.next-cli-build/static/chunks/app/api/models/custom/route-96eac4861f242fd9.js +1 -0
  651. package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-96eac4861f242fd9.js +1 -0
  652. package/app/.next-cli-build/static/chunks/app/api/models/route-96eac4861f242fd9.js +1 -0
  653. package/app/.next-cli-build/static/chunks/app/api/models/test/route-96eac4861f242fd9.js +1 -0
  654. package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-96eac4861f242fd9.js +1 -0
  655. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-96eac4861f242fd9.js +1 -0
  656. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-96eac4861f242fd9.js +1 -0
  657. package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-96eac4861f242fd9.js +1 -0
  658. package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-96eac4861f242fd9.js +1 -0
  659. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-96eac4861f242fd9.js +1 -0
  660. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/browser-login/route-96eac4861f242fd9.js +1 -0
  661. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-96eac4861f242fd9.js +1 -0
  662. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-96eac4861f242fd9.js +1 -0
  663. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-96eac4861f242fd9.js +1 -0
  664. package/app/.next-cli-build/static/chunks/app/api/pricing/route-96eac4861f242fd9.js +1 -0
  665. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-96eac4861f242fd9.js +1 -0
  666. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-96eac4861f242fd9.js +1 -0
  667. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-96eac4861f242fd9.js +1 -0
  668. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-96eac4861f242fd9.js +1 -0
  669. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-96eac4861f242fd9.js +1 -0
  670. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-96eac4861f242fd9.js +1 -0
  671. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-96eac4861f242fd9.js +1 -0
  672. package/app/.next-cli-build/static/chunks/app/api/providers/client/route-96eac4861f242fd9.js +1 -0
  673. package/app/.next-cli-build/static/chunks/app/api/providers/export/route-96eac4861f242fd9.js +1 -0
  674. package/app/.next-cli-build/static/chunks/app/api/providers/import/route-96eac4861f242fd9.js +1 -0
  675. package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-96eac4861f242fd9.js +1 -0
  676. package/app/.next-cli-build/static/chunks/app/api/providers/route-96eac4861f242fd9.js +1 -0
  677. package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-96eac4861f242fd9.js +1 -0
  678. package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-96eac4861f242fd9.js +1 -0
  679. package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-96eac4861f242fd9.js +1 -0
  680. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-96eac4861f242fd9.js +1 -0
  681. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-96eac4861f242fd9.js +1 -0
  682. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-96eac4861f242fd9.js +1 -0
  683. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-96eac4861f242fd9.js +1 -0
  684. package/app/.next-cli-build/static/chunks/app/api/settings/database/route-96eac4861f242fd9.js +1 -0
  685. package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-96eac4861f242fd9.js +1 -0
  686. package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-96eac4861f242fd9.js +1 -0
  687. package/app/.next-cli-build/static/chunks/app/api/settings/route-96eac4861f242fd9.js +1 -0
  688. package/app/.next-cli-build/static/chunks/app/api/shutdown/route-96eac4861f242fd9.js +1 -0
  689. package/app/.next-cli-build/static/chunks/app/api/tags/route-96eac4861f242fd9.js +1 -0
  690. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-96eac4861f242fd9.js +1 -0
  691. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-96eac4861f242fd9.js +1 -0
  692. package/app/.next-cli-build/static/chunks/app/api/translator/load/route-96eac4861f242fd9.js +1 -0
  693. package/app/.next-cli-build/static/chunks/app/api/translator/save/route-96eac4861f242fd9.js +1 -0
  694. package/app/.next-cli-build/static/chunks/app/api/translator/send/route-96eac4861f242fd9.js +1 -0
  695. package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-96eac4861f242fd9.js +1 -0
  696. package/app/.next-cli-build/static/chunks/app/api/update/check/route-96eac4861f242fd9.js +1 -0
  697. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-96eac4861f242fd9.js +1 -0
  698. package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-96eac4861f242fd9.js +1 -0
  699. package/app/.next-cli-build/static/chunks/app/api/usage/history/route-96eac4861f242fd9.js +1 -0
  700. package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-96eac4861f242fd9.js +1 -0
  701. package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-96eac4861f242fd9.js +1 -0
  702. package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-96eac4861f242fd9.js +1 -0
  703. package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-96eac4861f242fd9.js +1 -0
  704. package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-96eac4861f242fd9.js +1 -0
  705. package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-96eac4861f242fd9.js +1 -0
  706. package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-96eac4861f242fd9.js +1 -0
  707. package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-96eac4861f242fd9.js +1 -0
  708. package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-96eac4861f242fd9.js +1 -0
  709. package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-96eac4861f242fd9.js +1 -0
  710. package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-96eac4861f242fd9.js +1 -0
  711. package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-96eac4861f242fd9.js +1 -0
  712. package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-96eac4861f242fd9.js +1 -0
  713. package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-96eac4861f242fd9.js +1 -0
  714. package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-96eac4861f242fd9.js +1 -0
  715. package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-96eac4861f242fd9.js +1 -0
  716. package/app/.next-cli-build/static/chunks/app/api/v1/models/route-96eac4861f242fd9.js +1 -0
  717. package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-96eac4861f242fd9.js +1 -0
  718. package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-96eac4861f242fd9.js +1 -0
  719. package/app/.next-cli-build/static/chunks/app/api/v1/route-96eac4861f242fd9.js +1 -0
  720. package/app/.next-cli-build/static/chunks/app/api/v1/search/route-96eac4861f242fd9.js +1 -0
  721. package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-96eac4861f242fd9.js +1 -0
  722. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-96eac4861f242fd9.js +1 -0
  723. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-96eac4861f242fd9.js +1 -0
  724. package/app/.next-cli-build/static/chunks/app/landing/page-3d2b079bd25f0dda.js +1 -0
  725. package/app/.next-cli-build/static/chunks/app/login/{page-572b0096f259fd38.js → page-050a9acacb7d8882.js} +1 -1
  726. package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-96eac4861f242fd9.js +1 -0
  727. package/app/.next-cli-build/static/chunks/app/page-96eac4861f242fd9.js +1 -0
  728. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-96eac4861f242fd9.js +1 -0
  729. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-96eac4861f242fd9.js +1 -0
  730. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-96eac4861f242fd9.js +1 -0
  731. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-96eac4861f242fd9.js +1 -0
  732. package/app/.next-cli-build/static/css/712c443ed43dbfcd.css +1 -0
  733. package/app/.next-cli-build/static/vnu1gZOqzvf9J7CUswxcA/_buildManifest.js +1 -0
  734. package/app/package.json +1 -1
  735. package/app/public/CHANGELOG.md +5 -0
  736. package/package.json +4 -4
  737. package/src/cli/api/client.js +8 -8
  738. package/src/cli/menus/providers.js +1 -1
  739. package/src/cli/menus/settings.js +1 -1
  740. package/app/.next/server/chunks/3913.js +0 -64
  741. package/app/.next/static/chunks/1051-200f4cd85d329ee1.js +0 -64
  742. package/app/.next/static/chunks/5242-bb1a1a7ec3bfb62f.js +0 -1
  743. package/app/.next/static/chunks/app/(dashboard)/dashboard/skills/page-c1aaa2222659e050.js +0 -1
  744. package/app/.next/static/chunks/app/_global-error/page-eb011c7eb268b87e.js +0 -1
  745. package/app/.next/static/chunks/app/api/auth/login/route-eb011c7eb268b87e.js +0 -1
  746. package/app/.next/static/chunks/app/api/auth/logout/route-eb011c7eb268b87e.js +0 -1
  747. package/app/.next/static/chunks/app/api/auth/oidc/callback/route-eb011c7eb268b87e.js +0 -1
  748. package/app/.next/static/chunks/app/api/auth/oidc/start/route-eb011c7eb268b87e.js +0 -1
  749. package/app/.next/static/chunks/app/api/auth/oidc/test/route-eb011c7eb268b87e.js +0 -1
  750. package/app/.next/static/chunks/app/api/auth/status/route-eb011c7eb268b87e.js +0 -1
  751. package/app/.next/static/chunks/app/api/cli-tools/all-statuses/route-eb011c7eb268b87e.js +0 -1
  752. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-eb011c7eb268b87e.js +0 -1
  753. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-eb011c7eb268b87e.js +0 -1
  754. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-eb011c7eb268b87e.js +0 -1
  755. package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-eb011c7eb268b87e.js +0 -1
  756. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-eb011c7eb268b87e.js +0 -1
  757. package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-eb011c7eb268b87e.js +0 -1
  758. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-eb011c7eb268b87e.js +0 -1
  759. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-eb011c7eb268b87e.js +0 -1
  760. package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-eb011c7eb268b87e.js +0 -1
  761. package/app/.next/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-eb011c7eb268b87e.js +0 -1
  762. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-eb011c7eb268b87e.js +0 -1
  763. package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-eb011c7eb268b87e.js +0 -1
  764. package/app/.next/static/chunks/app/api/cli-tools/jcode-settings/route-eb011c7eb268b87e.js +0 -1
  765. package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-eb011c7eb268b87e.js +0 -1
  766. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-eb011c7eb268b87e.js +0 -1
  767. package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-eb011c7eb268b87e.js +0 -1
  768. package/app/.next/static/chunks/app/api/cloud/auth/route-eb011c7eb268b87e.js +0 -1
  769. package/app/.next/static/chunks/app/api/cloud/credentials/update/route-eb011c7eb268b87e.js +0 -1
  770. package/app/.next/static/chunks/app/api/cloud/model/resolve/route-eb011c7eb268b87e.js +0 -1
  771. package/app/.next/static/chunks/app/api/cloud/models/alias/route-eb011c7eb268b87e.js +0 -1
  772. package/app/.next/static/chunks/app/api/combos/[id]/route-eb011c7eb268b87e.js +0 -1
  773. package/app/.next/static/chunks/app/api/combos/route-eb011c7eb268b87e.js +0 -1
  774. package/app/.next/static/chunks/app/api/health/route-eb011c7eb268b87e.js +0 -1
  775. package/app/.next/static/chunks/app/api/init/route-eb011c7eb268b87e.js +0 -1
  776. package/app/.next/static/chunks/app/api/keys/[id]/route-eb011c7eb268b87e.js +0 -1
  777. package/app/.next/static/chunks/app/api/keys/route-eb011c7eb268b87e.js +0 -1
  778. package/app/.next/static/chunks/app/api/locale/route-eb011c7eb268b87e.js +0 -1
  779. package/app/.next/static/chunks/app/api/mcp/[plugin]/message/route-eb011c7eb268b87e.js +0 -1
  780. package/app/.next/static/chunks/app/api/mcp/[plugin]/sse/route-eb011c7eb268b87e.js +0 -1
  781. package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-eb011c7eb268b87e.js +0 -1
  782. package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-eb011c7eb268b87e.js +0 -1
  783. package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-eb011c7eb268b87e.js +0 -1
  784. package/app/.next/static/chunks/app/api/media-providers/tts/minimax/voices/route-eb011c7eb268b87e.js +0 -1
  785. package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-eb011c7eb268b87e.js +0 -1
  786. package/app/.next/static/chunks/app/api/models/alias/route-eb011c7eb268b87e.js +0 -1
  787. package/app/.next/static/chunks/app/api/models/availability/route-eb011c7eb268b87e.js +0 -1
  788. package/app/.next/static/chunks/app/api/models/custom/route-eb011c7eb268b87e.js +0 -1
  789. package/app/.next/static/chunks/app/api/models/disabled/route-eb011c7eb268b87e.js +0 -1
  790. package/app/.next/static/chunks/app/api/models/route-eb011c7eb268b87e.js +0 -1
  791. package/app/.next/static/chunks/app/api/models/test/route-eb011c7eb268b87e.js +0 -1
  792. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-eb011c7eb268b87e.js +0 -1
  793. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-eb011c7eb268b87e.js +0 -1
  794. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-eb011c7eb268b87e.js +0 -1
  795. package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-eb011c7eb268b87e.js +0 -1
  796. package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-eb011c7eb268b87e.js +0 -1
  797. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-eb011c7eb268b87e.js +0 -1
  798. package/app/.next/static/chunks/app/api/oauth/kiro/browser-login/route-eb011c7eb268b87e.js +0 -1
  799. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-eb011c7eb268b87e.js +0 -1
  800. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-eb011c7eb268b87e.js +0 -1
  801. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-eb011c7eb268b87e.js +0 -1
  802. package/app/.next/static/chunks/app/api/pricing/route-eb011c7eb268b87e.js +0 -1
  803. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-eb011c7eb268b87e.js +0 -1
  804. package/app/.next/static/chunks/app/api/provider-nodes/route-eb011c7eb268b87e.js +0 -1
  805. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-eb011c7eb268b87e.js +0 -1
  806. package/app/.next/static/chunks/app/api/providers/[id]/models/route-eb011c7eb268b87e.js +0 -1
  807. package/app/.next/static/chunks/app/api/providers/[id]/route-eb011c7eb268b87e.js +0 -1
  808. package/app/.next/static/chunks/app/api/providers/[id]/test/route-eb011c7eb268b87e.js +0 -1
  809. package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-eb011c7eb268b87e.js +0 -1
  810. package/app/.next/static/chunks/app/api/providers/client/route-eb011c7eb268b87e.js +0 -1
  811. package/app/.next/static/chunks/app/api/providers/export/route-eb011c7eb268b87e.js +0 -1
  812. package/app/.next/static/chunks/app/api/providers/import/route-eb011c7eb268b87e.js +0 -1
  813. package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-eb011c7eb268b87e.js +0 -1
  814. package/app/.next/static/chunks/app/api/providers/route-eb011c7eb268b87e.js +0 -1
  815. package/app/.next/static/chunks/app/api/providers/suggested-models/route-eb011c7eb268b87e.js +0 -1
  816. package/app/.next/static/chunks/app/api/providers/test-batch/route-eb011c7eb268b87e.js +0 -1
  817. package/app/.next/static/chunks/app/api/providers/validate/route-eb011c7eb268b87e.js +0 -1
  818. package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-eb011c7eb268b87e.js +0 -1
  819. package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-eb011c7eb268b87e.js +0 -1
  820. package/app/.next/static/chunks/app/api/proxy-pools/route-eb011c7eb268b87e.js +0 -1
  821. package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-eb011c7eb268b87e.js +0 -1
  822. package/app/.next/static/chunks/app/api/settings/database/route-eb011c7eb268b87e.js +0 -1
  823. package/app/.next/static/chunks/app/api/settings/proxy-test/route-eb011c7eb268b87e.js +0 -1
  824. package/app/.next/static/chunks/app/api/settings/require-login/route-eb011c7eb268b87e.js +0 -1
  825. package/app/.next/static/chunks/app/api/settings/route-eb011c7eb268b87e.js +0 -1
  826. package/app/.next/static/chunks/app/api/shutdown/route-eb011c7eb268b87e.js +0 -1
  827. package/app/.next/static/chunks/app/api/tags/route-eb011c7eb268b87e.js +0 -1
  828. package/app/.next/static/chunks/app/api/translator/console-logs/route-eb011c7eb268b87e.js +0 -1
  829. package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-eb011c7eb268b87e.js +0 -1
  830. package/app/.next/static/chunks/app/api/translator/load/route-eb011c7eb268b87e.js +0 -1
  831. package/app/.next/static/chunks/app/api/translator/save/route-eb011c7eb268b87e.js +0 -1
  832. package/app/.next/static/chunks/app/api/translator/send/route-eb011c7eb268b87e.js +0 -1
  833. package/app/.next/static/chunks/app/api/translator/translate/route-eb011c7eb268b87e.js +0 -1
  834. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-eb011c7eb268b87e.js +0 -1
  835. package/app/.next/static/chunks/app/api/usage/chart/route-eb011c7eb268b87e.js +0 -1
  836. package/app/.next/static/chunks/app/api/usage/history/route-eb011c7eb268b87e.js +0 -1
  837. package/app/.next/static/chunks/app/api/usage/providers/route-eb011c7eb268b87e.js +0 -1
  838. package/app/.next/static/chunks/app/api/usage/request-details/route-eb011c7eb268b87e.js +0 -1
  839. package/app/.next/static/chunks/app/api/usage/request-logs/route-eb011c7eb268b87e.js +0 -1
  840. package/app/.next/static/chunks/app/api/usage/stats/route-eb011c7eb268b87e.js +0 -1
  841. package/app/.next/static/chunks/app/api/usage/stream/route-eb011c7eb268b87e.js +0 -1
  842. package/app/.next/static/chunks/app/api/v1/api/chat/route-eb011c7eb268b87e.js +0 -1
  843. package/app/.next/static/chunks/app/api/v1/audio/speech/route-eb011c7eb268b87e.js +0 -1
  844. package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-eb011c7eb268b87e.js +0 -1
  845. package/app/.next/static/chunks/app/api/v1/audio/voices/route-eb011c7eb268b87e.js +0 -1
  846. package/app/.next/static/chunks/app/api/v1/chat/completions/route-eb011c7eb268b87e.js +0 -1
  847. package/app/.next/static/chunks/app/api/v1/embeddings/route-eb011c7eb268b87e.js +0 -1
  848. package/app/.next/static/chunks/app/api/v1/images/generations/route-eb011c7eb268b87e.js +0 -1
  849. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-eb011c7eb268b87e.js +0 -1
  850. package/app/.next/static/chunks/app/api/v1/messages/route-eb011c7eb268b87e.js +0 -1
  851. package/app/.next/static/chunks/app/api/v1/models/[kind]/route-eb011c7eb268b87e.js +0 -1
  852. package/app/.next/static/chunks/app/api/v1/models/info/route-eb011c7eb268b87e.js +0 -1
  853. package/app/.next/static/chunks/app/api/v1/models/route-eb011c7eb268b87e.js +0 -1
  854. package/app/.next/static/chunks/app/api/v1/responses/compact/route-eb011c7eb268b87e.js +0 -1
  855. package/app/.next/static/chunks/app/api/v1/responses/route-eb011c7eb268b87e.js +0 -1
  856. package/app/.next/static/chunks/app/api/v1/route-eb011c7eb268b87e.js +0 -1
  857. package/app/.next/static/chunks/app/api/v1/search/route-eb011c7eb268b87e.js +0 -1
  858. package/app/.next/static/chunks/app/api/v1/web/fetch/route-eb011c7eb268b87e.js +0 -1
  859. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-eb011c7eb268b87e.js +0 -1
  860. package/app/.next/static/chunks/app/api/v1beta/models/route-eb011c7eb268b87e.js +0 -1
  861. package/app/.next/static/chunks/app/landing/page-a9e7cef42d02f55b.js +0 -1
  862. package/app/.next/static/chunks/app/manifest.webmanifest/route-eb011c7eb268b87e.js +0 -1
  863. package/app/.next/static/chunks/app/page-eb011c7eb268b87e.js +0 -1
  864. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-eb011c7eb268b87e.js +0 -1
  865. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-eb011c7eb268b87e.js +0 -1
  866. package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-eb011c7eb268b87e.js +0 -1
  867. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-eb011c7eb268b87e.js +0 -1
  868. package/app/.next/static/css/1c9d052767a8c6e4.css +0 -1
  869. package/app/.next/static/e2lZe4FdVnmOmWkyKbhxp/_buildManifest.js +0 -1
  870. package/app/.next-cli-build/static/chunks/1051-200f4cd85d329ee1.js +0 -64
  871. package/app/.next-cli-build/static/chunks/5242-bb1a1a7ec3bfb62f.js +0 -1
  872. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/skills/page-c1aaa2222659e050.js +0 -1
  873. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-eb011c7eb268b87e.js +0 -1
  874. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-eb011c7eb268b87e.js +0 -1
  875. package/app/.next-cli-build/static/chunks/app/api/auth/status/route-eb011c7eb268b87e.js +0 -1
  876. package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-eb011c7eb268b87e.js +0 -1
  877. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-eb011c7eb268b87e.js +0 -1
  878. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-eb011c7eb268b87e.js +0 -1
  879. package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-eb011c7eb268b87e.js +0 -1
  880. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-eb011c7eb268b87e.js +0 -1
  881. package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-eb011c7eb268b87e.js +0 -1
  882. package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-eb011c7eb268b87e.js +0 -1
  883. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-eb011c7eb268b87e.js +0 -1
  884. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-eb011c7eb268b87e.js +0 -1
  885. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-eb011c7eb268b87e.js +0 -1
  886. package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-eb011c7eb268b87e.js +0 -1
  887. package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-eb011c7eb268b87e.js +0 -1
  888. package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-eb011c7eb268b87e.js +0 -1
  889. package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-eb011c7eb268b87e.js +0 -1
  890. package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-eb011c7eb268b87e.js +0 -1
  891. package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-eb011c7eb268b87e.js +0 -1
  892. package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-eb011c7eb268b87e.js +0 -1
  893. package/app/.next-cli-build/static/chunks/app/api/cloud/auth/route-eb011c7eb268b87e.js +0 -1
  894. package/app/.next-cli-build/static/chunks/app/api/cloud/credentials/update/route-eb011c7eb268b87e.js +0 -1
  895. package/app/.next-cli-build/static/chunks/app/api/cloud/model/resolve/route-eb011c7eb268b87e.js +0 -1
  896. package/app/.next-cli-build/static/chunks/app/api/cloud/models/alias/route-eb011c7eb268b87e.js +0 -1
  897. package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-eb011c7eb268b87e.js +0 -1
  898. package/app/.next-cli-build/static/chunks/app/api/combos/route-eb011c7eb268b87e.js +0 -1
  899. package/app/.next-cli-build/static/chunks/app/api/health/route-eb011c7eb268b87e.js +0 -1
  900. package/app/.next-cli-build/static/chunks/app/api/init/route-eb011c7eb268b87e.js +0 -1
  901. package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-eb011c7eb268b87e.js +0 -1
  902. package/app/.next-cli-build/static/chunks/app/api/keys/route-eb011c7eb268b87e.js +0 -1
  903. package/app/.next-cli-build/static/chunks/app/api/locale/route-eb011c7eb268b87e.js +0 -1
  904. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-eb011c7eb268b87e.js +0 -1
  905. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-eb011c7eb268b87e.js +0 -1
  906. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-eb011c7eb268b87e.js +0 -1
  907. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-eb011c7eb268b87e.js +0 -1
  908. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-eb011c7eb268b87e.js +0 -1
  909. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-eb011c7eb268b87e.js +0 -1
  910. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-eb011c7eb268b87e.js +0 -1
  911. package/app/.next-cli-build/static/chunks/app/api/models/alias/route-eb011c7eb268b87e.js +0 -1
  912. package/app/.next-cli-build/static/chunks/app/api/models/availability/route-eb011c7eb268b87e.js +0 -1
  913. package/app/.next-cli-build/static/chunks/app/api/models/custom/route-eb011c7eb268b87e.js +0 -1
  914. package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-eb011c7eb268b87e.js +0 -1
  915. package/app/.next-cli-build/static/chunks/app/api/models/route-eb011c7eb268b87e.js +0 -1
  916. package/app/.next-cli-build/static/chunks/app/api/models/test/route-eb011c7eb268b87e.js +0 -1
  917. package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-eb011c7eb268b87e.js +0 -1
  918. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-eb011c7eb268b87e.js +0 -1
  919. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-eb011c7eb268b87e.js +0 -1
  920. package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-eb011c7eb268b87e.js +0 -1
  921. package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-eb011c7eb268b87e.js +0 -1
  922. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-eb011c7eb268b87e.js +0 -1
  923. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/browser-login/route-eb011c7eb268b87e.js +0 -1
  924. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-eb011c7eb268b87e.js +0 -1
  925. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-eb011c7eb268b87e.js +0 -1
  926. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-eb011c7eb268b87e.js +0 -1
  927. package/app/.next-cli-build/static/chunks/app/api/pricing/route-eb011c7eb268b87e.js +0 -1
  928. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-eb011c7eb268b87e.js +0 -1
  929. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-eb011c7eb268b87e.js +0 -1
  930. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-eb011c7eb268b87e.js +0 -1
  931. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-eb011c7eb268b87e.js +0 -1
  932. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-eb011c7eb268b87e.js +0 -1
  933. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-eb011c7eb268b87e.js +0 -1
  934. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-eb011c7eb268b87e.js +0 -1
  935. package/app/.next-cli-build/static/chunks/app/api/providers/client/route-eb011c7eb268b87e.js +0 -1
  936. package/app/.next-cli-build/static/chunks/app/api/providers/export/route-eb011c7eb268b87e.js +0 -1
  937. package/app/.next-cli-build/static/chunks/app/api/providers/import/route-eb011c7eb268b87e.js +0 -1
  938. package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-eb011c7eb268b87e.js +0 -1
  939. package/app/.next-cli-build/static/chunks/app/api/providers/route-eb011c7eb268b87e.js +0 -1
  940. package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-eb011c7eb268b87e.js +0 -1
  941. package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-eb011c7eb268b87e.js +0 -1
  942. package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-eb011c7eb268b87e.js +0 -1
  943. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-eb011c7eb268b87e.js +0 -1
  944. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-eb011c7eb268b87e.js +0 -1
  945. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-eb011c7eb268b87e.js +0 -1
  946. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-eb011c7eb268b87e.js +0 -1
  947. package/app/.next-cli-build/static/chunks/app/api/settings/database/route-eb011c7eb268b87e.js +0 -1
  948. package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-eb011c7eb268b87e.js +0 -1
  949. package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-eb011c7eb268b87e.js +0 -1
  950. package/app/.next-cli-build/static/chunks/app/api/settings/route-eb011c7eb268b87e.js +0 -1
  951. package/app/.next-cli-build/static/chunks/app/api/shutdown/route-eb011c7eb268b87e.js +0 -1
  952. package/app/.next-cli-build/static/chunks/app/api/tags/route-eb011c7eb268b87e.js +0 -1
  953. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-eb011c7eb268b87e.js +0 -1
  954. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-eb011c7eb268b87e.js +0 -1
  955. package/app/.next-cli-build/static/chunks/app/api/translator/load/route-eb011c7eb268b87e.js +0 -1
  956. package/app/.next-cli-build/static/chunks/app/api/translator/save/route-eb011c7eb268b87e.js +0 -1
  957. package/app/.next-cli-build/static/chunks/app/api/translator/send/route-eb011c7eb268b87e.js +0 -1
  958. package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-eb011c7eb268b87e.js +0 -1
  959. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-eb011c7eb268b87e.js +0 -1
  960. package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-eb011c7eb268b87e.js +0 -1
  961. package/app/.next-cli-build/static/chunks/app/api/usage/history/route-eb011c7eb268b87e.js +0 -1
  962. package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-eb011c7eb268b87e.js +0 -1
  963. package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-eb011c7eb268b87e.js +0 -1
  964. package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-eb011c7eb268b87e.js +0 -1
  965. package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-eb011c7eb268b87e.js +0 -1
  966. package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-eb011c7eb268b87e.js +0 -1
  967. package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-eb011c7eb268b87e.js +0 -1
  968. package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-eb011c7eb268b87e.js +0 -1
  969. package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-eb011c7eb268b87e.js +0 -1
  970. package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-eb011c7eb268b87e.js +0 -1
  971. package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-eb011c7eb268b87e.js +0 -1
  972. package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-eb011c7eb268b87e.js +0 -1
  973. package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-eb011c7eb268b87e.js +0 -1
  974. package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-eb011c7eb268b87e.js +0 -1
  975. package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-eb011c7eb268b87e.js +0 -1
  976. package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-eb011c7eb268b87e.js +0 -1
  977. package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-eb011c7eb268b87e.js +0 -1
  978. package/app/.next-cli-build/static/chunks/app/api/v1/models/route-eb011c7eb268b87e.js +0 -1
  979. package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-eb011c7eb268b87e.js +0 -1
  980. package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-eb011c7eb268b87e.js +0 -1
  981. package/app/.next-cli-build/static/chunks/app/api/v1/route-eb011c7eb268b87e.js +0 -1
  982. package/app/.next-cli-build/static/chunks/app/api/v1/search/route-eb011c7eb268b87e.js +0 -1
  983. package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-eb011c7eb268b87e.js +0 -1
  984. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-eb011c7eb268b87e.js +0 -1
  985. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-eb011c7eb268b87e.js +0 -1
  986. package/app/.next-cli-build/static/chunks/app/landing/page-a9e7cef42d02f55b.js +0 -1
  987. package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-eb011c7eb268b87e.js +0 -1
  988. package/app/.next-cli-build/static/chunks/app/page-eb011c7eb268b87e.js +0 -1
  989. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-eb011c7eb268b87e.js +0 -1
  990. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-eb011c7eb268b87e.js +0 -1
  991. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-eb011c7eb268b87e.js +0 -1
  992. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-eb011c7eb268b87e.js +0 -1
  993. package/app/.next-cli-build/static/css/1c9d052767a8c6e4.css +0 -1
  994. package/app/.next-cli-build/static/e2lZe4FdVnmOmWkyKbhxp/_buildManifest.js +0 -1
  995. /package/app/.next/static/{e2lZe4FdVnmOmWkyKbhxp → vnu1gZOqzvf9J7CUswxcA}/_ssgManifest.js +0 -0
  996. /package/app/.next-cli-build/static/{e2lZe4FdVnmOmWkyKbhxp → vnu1gZOqzvf9J7CUswxcA}/_ssgManifest.js +0 -0
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 9Router Contributors
3
+ Copyright (c) 2026 KTRouter Contributors
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,125 +1,88 @@
1
- # QTRoute - FREE AI Router & Token Saver
2
-
3
- **Never stop coding. Save 20-40% tokens with RTK + auto-fallback to FREE & cheap AI models.**
4
-
5
- **Connect All AI Code Tools (Claude Code, Cursor, Antigravity, Copilot, Codex, Gemini, OpenCode, Cline, OpenClaw...) to 40+ AI Providers & 100+ Models.**
6
-
7
- [![npm](https://img.shields.io/npm/v/qtroute.svg)](https://www.npmjs.com/package/qtroute)
8
- [![Downloads](https://img.shields.io/npm/dm/qtroute.svg)](https://www.npmjs.com/package/qtroute)
9
- [![Docker Pulls](https://img.shields.io/docker/pulls/decolua/qtroute.svg?logo=docker&label=Docker%20pulls)](https://hub.docker.com/r/decolua/qtroute)
10
- [![GHCR](https://img.shields.io/badge/GHCR-decolua%2Fqtroute-blue?logo=github)](https://github.com/decolua/qtroute/pkgs/container/qtroute)
11
- [![License](https://img.shields.io/npm/l/qtroute.svg)](https://github.com/decolua/qtroute/blob/main/LICENSE)
12
-
13
- <a href="https://trendshift.io/repositories/22628" target="_blank"><img src="https://trendshift.io/api/badge/repositories/22628" alt="decolua%2Fqtroute | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
14
-
15
- [🌐 Website](https://qtroute.com) • [📖 Full Docs](https://github.com/decolua/qtroute)
16
-
17
- ---
18
-
19
- ## 🤔 Why QTRoute?
20
-
21
- **Stop wasting money, tokens and hitting limits:**
22
-
23
- - ❌ Subscription quota expires unused every month
24
- - ❌ Rate limits stop you mid-coding
25
- - ❌ Tool outputs (git diff, grep, ls...) burn tokens fast
26
- - ❌ Expensive APIs ($20-50/month per provider)
27
-
28
- **QTRoute solves this:**
29
-
30
- - ✅ **RTK Token Saver** - Auto-compress tool_result, save 20-40% tokens
31
- - ✅ **Maximize subscriptions** - Track quota, use every bit before reset
32
- - ✅ **Auto fallback** - Subscription → Cheap → Free, zero downtime
33
- - ✅ **Multi-account** - Round-robin between accounts per provider
34
- - **Universal** - Works with any OpenAI/Claude-compatible CLI
35
-
36
- ---
37
-
38
- ## ⚡ Quick Start
39
-
40
- **Option 1 — npm (recommended for desktop):**
41
-
42
- ```bash
43
- npm install -g qtroute
44
- qtroute
45
-
46
- # Or run directly with npx
47
- npx qtroute
48
- ```
49
-
50
- **Option 2 — Docker (server/VPS):**
51
-
52
- ```bash
53
- docker run -d --name qtroute -p 20128:20128 \
54
- -v "$HOME/.qtroute:/app/data" -e DATA_DIR=/app/data \
55
- decolua/qtroute:latest
56
- ```
57
-
58
- Published images: [Docker Hub](https://hub.docker.com/r/decolua/qtroute) • [GHCR](https://github.com/decolua/qtroute/pkgs/container/qtroute) (multi-platform amd64/arm64).
59
-
60
- 🎉 Dashboard opens at `http://localhost:20128`
61
-
62
- **2. Connect a FREE provider (no signup needed):**
63
-
64
- Dashboard Providers → Connect **Kiro AI** (free Claude unlimited) or **OpenCode Free** (no auth) → Done!
65
-
66
- **3. Use in your CLI tool:**
67
-
68
- ```
69
- Claude Code/Codex/OpenClaw/Cursor/Cline Settings:
70
- Endpoint: http://localhost:20128/v1
71
- API Key: [copy from dashboard]
72
- Model: kr/claude-sonnet-4.5
73
- ```
74
-
75
- That's it! Start coding with FREE AI models.
76
-
77
- ---
78
-
79
- ## 🚀 CLI Options
80
-
81
- ```bash
82
- qtroute # Start with default settings
83
- qtroute --port 8080 # Custom port
84
- qtroute --no-browser # Don't open browser
85
- qtroute --skip-update # Skip auto-update check
86
- qtroute --help # Show all options
87
- ```
88
-
89
- **Dashboard**: `http://localhost:20128/dashboard`
90
-
91
- ---
92
-
93
- ## 🛠️ Supported CLI Tools
94
-
95
- Claude-Code • OpenClaw • Codex • OpenCode • Cursor • Antigravity • Cline • Continue • Droid • Roo • Copilot • Kilo Code • Gemini CLI • Qwen Code • iFlow • Crush • Crusher • Aider
96
-
97
- Any tool supporting OpenAI/Claude-compatible API works.
98
-
99
- ---
100
-
101
- ## 💾 Data Location
102
-
103
- - **macOS/Linux**: `~/.qtroute/db/data.sqlite`
104
- - **Windows**: `%APPDATA%/qtroute/db/data.sqlite`
105
- - **Docker**: `/app/data/db/data.sqlite` (mount `$HOME/.qtroute` to persist)
106
-
107
- ---
108
-
109
- ## 📚 Documentation
110
-
111
- Full docs, advanced setup, video tutorials & development guide:
112
-
113
- - **GitHub**: https://github.com/decolua/qtroute
114
- - **Full README**: https://github.com/decolua/qtroute/blob/main/app/README.md
115
- - **Website**: https://qtroute.com
116
-
117
- ---
118
-
119
- ## 🙏 Acknowledgments
120
-
121
- - **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** - Original Go implementation
122
-
123
- ## 📄 License
124
-
125
- MIT License - see [LICENSE](LICENSE) for details.
1
+ # KTRouter
2
+
3
+ KTRouter is a local AI proxy router with a web dashboard.
4
+
5
+ It lets local coding tools use one OpenAI-compatible endpoint while KTRouter handles providers, model routing, usage tracking, API keys, OAuth accounts, and MITM helpers.
6
+
7
+ ## Quick Start
8
+
9
+ ### CLI
10
+
11
+ ```bash
12
+ npm install -g ktrouter
13
+ ktrouter
14
+ ```
15
+
16
+ Or run from this repository:
17
+
18
+ ```bash
19
+ node cli/cli.js
20
+ ```
21
+
22
+ The dashboard runs on:
23
+
24
+ ```text
25
+ http://localhost:3008/dashboard
26
+ ```
27
+
28
+ The API endpoint is:
29
+
30
+ ```text
31
+ http://localhost:3008/v1
32
+ ```
33
+
34
+ ### Web Project
35
+
36
+ From the repository root:
37
+
38
+ ```bash
39
+ npm install
40
+ npm run dev
41
+ ```
42
+
43
+ The web project also uses port `3008`:
44
+
45
+ ```text
46
+ http://localhost:3008/dashboard
47
+ ```
48
+
49
+ ## CLI Options
50
+
51
+ ```bash
52
+ ktrouter # Start on port 3008
53
+ ktrouter --port 8080 # Start on a custom port
54
+ ktrouter --no-browser # Do not open the browser automatically
55
+ ktrouter --skip-update # Skip update check
56
+ ktrouter --help # Show all options
57
+ ```
58
+
59
+ ## Configure Tools
60
+
61
+ Use these settings in Claude Code, Codex, Cursor, Cline, OpenCode, OpenClaw, Antigravity, Copilot, Gemini CLI, or any OpenAI-compatible client:
62
+
63
+ ```text
64
+ Base URL: http://localhost:3008/v1
65
+ API Key: copy from the KTRouter dashboard
66
+ Model: choose from the dashboard model list
67
+ ```
68
+
69
+ ## Data Location
70
+
71
+ By default, KTRouter stores local data in:
72
+
73
+ - Windows: `%APPDATA%/ktrouter`
74
+ - macOS/Linux: `~/.ktrouter`
75
+
76
+ Set `DATA_DIR` to override the storage directory.
77
+
78
+ ## Build CLI Package
79
+
80
+ ```bash
81
+ cd cli
82
+ npm run build
83
+ npm pack
84
+ ```
85
+
86
+ ## License
87
+
88
+ MIT License - see `LICENSE`.
@@ -1 +1 @@
1
- e2lZe4FdVnmOmWkyKbhxp
1
+ vnu1gZOqzvf9J7CUswxcA
@@ -106,8 +106,8 @@
106
106
  "/api/providers/[id]/route": "/api/providers/[id]",
107
107
  "/api/providers/export/route": "/api/providers/export",
108
108
  "/api/providers/import/route": "/api/providers/import",
109
- "/api/providers/suggested-models/route": "/api/providers/suggested-models",
110
109
  "/api/providers/route": "/api/providers",
110
+ "/api/providers/suggested-models/route": "/api/providers/suggested-models",
111
111
  "/api/proxy-pools/[id]/route": "/api/proxy-pools/[id]",
112
112
  "/api/proxy-pools/[id]/test/route": "/api/proxy-pools/[id]/test",
113
113
  "/api/proxy-pools/route": "/api/proxy-pools",
@@ -116,6 +116,7 @@
116
116
  "/api/settings/proxy-test/route": "/api/settings/proxy-test",
117
117
  "/api/settings/route": "/api/settings",
118
118
  "/api/translator/console-logs/stream/route": "/api/translator/console-logs/stream",
119
+ "/api/update/check/route": "/api/update/check",
119
120
  "/api/usage/[connectionId]/route": "/api/usage/[connectionId]",
120
121
  "/api/usage/stats/route": "/api/usage/stats",
121
122
  "/api/usage/stream/route": "/api/usage/stream",
@@ -4,8 +4,8 @@
4
4
  ],
5
5
  "devFiles": [],
6
6
  "lowPriorityFiles": [
7
- "static/e2lZe4FdVnmOmWkyKbhxp/_buildManifest.js",
8
- "static/e2lZe4FdVnmOmWkyKbhxp/_ssgManifest.js"
7
+ "static/vnu1gZOqzvf9J7CUswxcA/_buildManifest.js",
8
+ "static/vnu1gZOqzvf9J7CUswxcA/_ssgManifest.js"
9
9
  ],
10
10
  "rootMainFiles": [
11
11
  "static/chunks/webpack-a990cabb6976f421.js",
@@ -692,6 +692,12 @@
692
692
  "routeKeys": {},
693
693
  "namedRegex": "^/api/translator/translate(?:/)?$"
694
694
  },
695
+ {
696
+ "page": "/api/update/check",
697
+ "regex": "^/api/update/check(?:/)?$",
698
+ "routeKeys": {},
699
+ "namedRegex": "^/api/update/check(?:/)?$"
700
+ },
695
701
  {
696
702
  "page": "/api/usage/chart",
697
703
  "regex": "^/api/usage/chart(?:/)?$",
@@ -1,2 +1,2 @@
1
- (()=>{var a={};a.id=4465,a.ids=[4465],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},1932:a=>{"use strict";a.exports=require("url")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},17891:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/get-segment-param")},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},21820:a=>{"use strict";a.exports=require("os")},26713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},28354:a=>{"use strict";a.exports=require("util")},29021:a=>{"use strict";a.exports=require("fs")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{"use strict";a.exports=require("path")},34107:(a,b,c)=>{"use strict";c.r(b),c.d(b,{__next_app__:()=>O,handler:()=>Q,routeModule:()=>P});var d=c(7553),e=c(84006),f=c(67798),g=c(34775),h=c(99373),i=c(73461),j=c(1020),k=c(26349),l=c(54365),m=c(16023),n=c(14965),o=c(63747),p=c(24235),q=c(23938),r=c(261),s=c(66758),t=c(77243),u=c(26713),v=c(37527),w=c(22820),x=c(88216),y=c(47929),z=c(79551),A=c(71797),B=c(89125),C=c(86439),D=c(77068),E=c(27269),F=c(37525),G=c(61287),H=c(81494),I=c(70722),J=c(70753),K=c(43954),L=c(17891),M={};for(let a in G)0>["default","__next_app__","routeModule","handler"].indexOf(a)&&(M[a]=()=>G[a]);c.d(b,M);let N={children:["",{children:["(dashboard)",{children:["dashboard",{children:["basic-chat",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,40551)),"C:\\Users\\QuocTai\\Documents\\9router\\src\\app\\(dashboard)\\dashboard\\basic-chat\\page.js"]}]},{"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"]},[]]},{"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"]},[]]},{layout:[()=>Promise.resolve().then(c.bind(c,30508)),"C:\\Users\\QuocTai\\Documents\\9router\\src\\app\\(dashboard)\\layout.js"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,55091,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,45270,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,28193,23)),"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[async a=>(await Promise.resolve().then(c.bind(c,70440))).default(a)],apple:[],openGraph:[],twitter:[],manifest:"/manifest.webmanifest"}},[]]},{layout:[()=>Promise.resolve().then(c.bind(c,32059)),"C:\\Users\\QuocTai\\Documents\\9router\\src\\app\\layout.js"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,55091,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,45270,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,28193,23)),"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[async a=>(await Promise.resolve().then(c.bind(c,70440))).default(a)],apple:[],openGraph:[],twitter:[],manifest:"/manifest.webmanifest"}},[]]}.children,O={require:c,loadChunk:()=>Promise.resolve()},P=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/(dashboard)/dashboard/basic-chat/page",pathname:"/dashboard/basic-chat",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:N},distDir:".next",relativeProjectDir:""});async function Q(a,b,d){var M,R,S,T,U;d.requestMeta&&(0,h.setRequestMeta)(a,d.requestMeta),P.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let V=!!(0,h.getRequestMeta)(a,"minimalMode"),W="/(dashboard)/dashboard/basic-chat/page";"/index"===W&&(W="/");let X=await P.prepare(a,b,{srcPage:W,multiZoneDraftMode:!1});if(!X)return b.statusCode=400,b.end("Bad Request"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let{buildId:Y,query:Z,params:$,pageIsDynamic:_,buildManifest:aa,nextFontManifest:ab,reactLoadableManifest:ac,serverActionsManifest:ad,clientReferenceManifest:ae,subresourceIntegrityManifest:af,prerenderManifest:ag,isDraftMode:ah,resolvedPathname:ai,revalidateOnlyGenerated:aj,routerServerContext:ak,nextConfig:al,parsedUrl:am,interceptionRoutePatterns:an,deploymentId:ao,clientAssetToken:ap}=X,aq=(0,r.normalizeAppPath)(W),{isOnDemandRevalidate:ar}=X,as=al.experimental.ppr&&!al.cacheComponents&&(0,K.isInterceptionRouteAppPath)(ai)?null:P.match(ai,ag),at=(null==as?void 0:as.route)??null,au=!!ag.routes[ai],av=a.headers["user-agent"]||"",aw=(0,u.getBotType)(av),ax=(0,q.isHtmlBotRequest)(a),ay=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[t.NEXT_ROUTER_PREFETCH_HEADER],az=(0,h.getRequestMeta)(a,"isRSCRequest")??(0,n.f)(a.headers[t.RSC_HEADER]),aA=(0,s.getIsPossibleServerAction)(a),aB=(0,m.checkIsAppPPREnabled)(al.experimental.ppr),aC=a.headers[y.NEXT_RESUME_STATE_LENGTH_HEADER];if(!(0,h.getRequestMeta)(a,"postponed")&&V&&aB&&aA&&aC&&"string"==typeof aC){let e=parseInt(aC,10),{maxPostponedStateSize:f,maxPostponedStateSizeBytes:g}=(0,E.getMaxPostponedStateSize)(al.experimental.maxPostponedStateSize);if(!isNaN(e)&&e>0){if(e>g)return b.statusCode=413,b.end((0,E.getPostponedStateExceededErrorMessage)(f)),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let i="1 MB",j=(null==(U=al.experimental.serverActions)?void 0:U.bodySizeLimit)??i,k=e+(j!==i?c(95726).parse(j):1048576),l=await (0,E.readBodyWithSizeLimit)(a,k);if(null===l)return b.statusCode=413,b.end("Request body exceeded limit. To configure the body size limit for Server Actions, see: https://nextjs.org/docs/app/api-reference/next-config-js/serverActions#bodysizelimit"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;if(l.length>=e){let b=l.subarray(0,e).toString("utf8");(0,h.addRequestMeta)(a,"postponed",b);let c=l.subarray(e);(0,h.addRequestMeta)(a,"actionBody",c)}else throw Object.defineProperty(Error(`invariant: expected ${e} bytes of postponed state but only received ${l.length} bytes`),"__NEXT_ERROR_CODE",{value:"E979",enumerable:!1,configurable:!0})}}if(!(0,h.getRequestMeta)(a,"postponed")&&aB&&"1"===a.headers[y.NEXT_RESUME_HEADER]&&"POST"===a.method){let{maxPostponedStateSize:c,maxPostponedStateSizeBytes:e}=(0,E.getMaxPostponedStateSize)(al.experimental.maxPostponedStateSize),f=await (0,E.readBodyWithSizeLimit)(a,e);if(null===f)return b.statusCode=413,b.end((0,E.getPostponedStateExceededErrorMessage)(c)),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let g=f.toString("utf8");(0,h.addRequestMeta)(a,"postponed",g)}let aD=!0===P.isDev||!0===al.experimental.exposeTestingApiInProductionBuild,aE=aD&&("1"===a.headers[t.NEXT_INSTANT_PREFETCH_HEADER]||!(0,n.f)(a.headers[t.RSC_HEADER])&&"string"==typeof a.headers.cookie&&a.headers.cookie.includes(t.NEXT_INSTANT_TEST_COOKIE+"=")),aF=(aB||aE)&&((null==(M=ag.routes[aq]??ag.dynamicRoutes[aq])?void 0:M.renderingMode)==="PARTIALLY_STATIC"||aE&&(aD||(null==ak?void 0:ak.experimentalTestProxy)===!0)),aG=aE&&aF,aH=aG&&!0===P.isDev,aI=!1,aJ=aF?(0,h.getRequestMeta)(a,"postponed"):void 0,aK=null==(R=ag.routes[ai])?void 0:R.prefetchDataRoute,aL=aF&&az&&!ay&&!aK;V&&(aL=aL&&!!aJ);let aM=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),aN=(!aw||!aF)&&(!av||(0,q.shouldServeStreamingMetadata)(av,al.htmlLimitedBots)),aO=!!((at||au||ag.routes[aq])&&!(aw&&aF)),aP=aF&&!0===al.cacheComponents,aQ=!0===P.isDev||!aO||"string"==typeof aJ||(aP&&(0,h.getRequestMeta)(a,"onCacheEntryV2")?aL&&!V:aL),aR=!!aw&&aF,aS=(null==at?void 0:at.remainingPrerenderableParams)??[],aT=(null==at?void 0:at.fallback)===null&&((null==(S=at.fallbackRootParams)?void 0:S.length)??0)>0,aU=null;if(!ah&&aO&&!aQ&&!aA&&!aJ&&!aL){let a=as?"string"==typeof(null==at?void 0:at.fallback)?at.fallback:as.source:null;if(!0===al.experimental.partialFallbacks&&a&&(null==at?void 0:at.fallbackRouteParams)&&!aT){if(aS.length>0){let b,c=(b=new Map(aS.map(a=>[a.paramName,a])),a.split("/").map(a=>{let c=(0,L.getSegmentParam)(a);if(!c)return a;let d=b.get(c.paramName);if(!d)return a;let e=null==$?void 0:$[d.paramName];if(!e)return a;let f=Array.isArray(e)?e.map(a=>encodeURIComponent(a)).join("/"):encodeURIComponent(e);return a.replace((0,o.buildDynamicSegmentPlaceholder)(d),f)}).join("/")||"/");aU=c!==a?c:null}}else aU=ai}let aV=aU;!aV&&(P.isDev||aO&&_&&(null==at?void 0:at.fallbackRouteParams)&&!aA)&&(aV=ai),P.isDev||ah||!aO||!az||aL||(0,k.d)(a.headers);let aW={...G,tree:N,handler:Q,routeModule:P,__next_app__:O};ad&&ae&&(0,p.setManifestsSingleton)({page:W,clientReferenceManifest:ae,serverActionsManifest:ad});let aX=a.method||"GET",aY=(0,g.getTracer)(),aZ=aY.getActiveScopeSpan(),a$=!!(null==ak?void 0:ak.isWrappedByNextServer),a_=!0===al.experimental.partialFallbacks&&aS.length>0?(null==at||null==(T=at.fallbackRouteParams)?void 0:T.filter(a=>!aS.some(b=>b.paramName===a.paramName)))??[]:[],a0=async()=>((null==ak?void 0:ak.render404)?await ak.render404(a,b,am,!1):b.end("This page could not be found"),null);try{let k,m=P.getVaryHeader(ai,an);b.setHeader("Vary",m);let n=async(c,d)=>{let e=new l.NodeNextRequest(a),f=new l.NodeNextResponse(b);return P.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let a=aY.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let d=a.get("next.route");if(d){let a=`${aX} ${d}`;c.setAttributes({"next.route":d,"http.route":d,"next.span_name":a}),c.updateName(a),k&&k!==c&&(k.setAttribute("http.route",d),k.updateName(a))}else c.updateName(`${aX} ${W}`)})},p=(0,h.getRequestMeta)(a,"incrementalCache")||await P.getIncrementalCache(a,al,ag,V);null==p||p.resetRequestCache(),globalThis.__incrementalCache=p;let q=async({span:e,postponed:f,fallbackRouteParams:g,forceStaticRender:i})=>{let k={query:Z,params:$,page:aq,sharedContext:{buildId:Y,deploymentId:ao,clientAssetToken:ap},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aW,Component:(0,j.T)(aW),params:$,routeModule:P,page:W,postponed:f,shouldWaitOnAllReady:aR,serveStreamingMetadata:aN,supportsDynamicResponse:"string"==typeof f||aQ,buildManifest:aa,nextFontManifest:ab,reactLoadableManifest:ac,subresourceIntegrityManifest:af,setCacheStatus:null==ak?void 0:ak.setCacheStatus,setIsrStatus:null==ak?void 0:ak.setIsrStatus,setReactDebugChannel:null==ak?void 0:ak.setReactDebugChannel,sendErrorsToBrowser:null==ak?void 0:ak.sendErrorsToBrowser,dir:c(33873).join(process.cwd(),P.relativeProjectDir),isDraftMode:ah,botType:aw,isOnDemandRevalidate:ar,isPossibleServerAction:aA,assetPrefix:al.assetPrefix,nextConfigOutput:al.output,crossOrigin:al.crossOrigin,trailingSlash:al.trailingSlash,images:al.images,previewProps:ag.preview,enableTainting:al.experimental.taint,htmlLimitedBots:al.htmlLimitedBots,reactMaxHeadersLength:al.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:p,cacheLifeProfiles:al.cacheLife,basePath:al.basePath,serverActions:al.experimental.serverActions,logServerFunctions:"object"==typeof al.logging&&!!al.logging.serverFunctions,...aG||aH||aI?{isBuildTimePrerendering:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isDebugDynamicAccesses:aH}:{},cacheComponents:!!al.cacheComponents,experimental:{isRoutePPREnabled:aF,expireTime:al.expireTime,staleTimes:al.experimental.staleTimes,dynamicOnHover:!!al.experimental.dynamicOnHover,optimisticRouting:!!al.experimental.optimisticRouting,inlineCss:!!al.experimental.inlineCss,prefetchInlining:al.experimental.prefetchInlining??!1,authInterrupts:!!al.experimental.authInterrupts,cachedNavigations:!!al.experimental.cachedNavigations,clientTraceMetadata:al.experimental.clientTraceMetadata||[],clientParamParsingOrigins:al.experimental.clientParamParsingOrigins,maxPostponedStateSizeBytes:(0,D.parseMaxPostponedStateSize)(al.experimental.maxPostponedStateSize)},waitUntil:d.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d,e)=>P.onRequestError(a,b,d,e,ak),err:(0,h.getRequestMeta)(a,"invokeError")}};i&&(k.renderOpts.supportsDynamicResponse=!1);let l=await n(e,k),{metadata:m}=l,{cacheControl:o,headers:q={},fetchTags:r,fetchMetrics:s}=m;if(r&&(q[y.NEXT_CACHE_TAGS_HEADER]=r),a.fetchMetrics=s,aO&&(null==o?void 0:o.revalidate)===0&&!P.isDev&&!aF){let a=m.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${ai}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
2
- see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`),"__NEXT_ERROR_CODE",{value:"E132",enumerable:!1,configurable:!0});if(null==a?void 0:a.stack){let c=a.stack;b.stack=b.message+c.substring(c.indexOf("\n"))}throw b}return{value:{kind:v.CachedRouteKind.APP_PAGE,html:l,headers:q,rscData:m.flightData,postponed:m.postponed,status:m.statusCode,segmentData:m.segmentData},cacheControl:o}},r=async({hasResolved:c,previousCacheEntry:g,isRevalidating:i,span:j,forceStaticRender:k=!1})=>{let l=!1===P.isDev,m=c||b.writableEnded;try{var n;let f;if(ar&&aj&&!g&&!V)return(null==ak?void 0:ak.render404)?await ak.render404(a,b):(b.statusCode=404,b.end("This page could not be found")),null;if(at&&(f=(0,w.parseFallbackField)(at.fallback)),!0===al.experimental.partialFallbacks&&(null==at?void 0:at.fallback)===null&&!aT&&aS.length>0&&(f=w.FallbackMode.PRERENDER),f===w.FallbackMode.PRERENDER&&(0,u.isBot)(av)&&(!aF||ax)&&(f=w.FallbackMode.BLOCKING_STATIC_RENDER),(null==g?void 0:g.isStale)===-1&&(ar=!0),ar&&(f!==w.FallbackMode.NOT_FOUND||g)&&(f=w.FallbackMode.BLOCKING_STATIC_RENDER),!V&&f!==w.FallbackMode.BLOCKING_STATIC_RENDER&&aV&&!m&&!ah&&_&&(l||!au)){if((l||at)&&f===w.FallbackMode.NOT_FOUND){if(al.adapterPath)return await a0();throw new C.NoFallbackError}if(aF&&(al.cacheComponents?!aL:!az)){let b=l&&"string"==typeof(null==at?void 0:at.fallback)?at.fallback:aq,f=(l||aG)&&(null==at?void 0:at.fallbackRouteParams)?(0,o.createOpaqueFallbackRouteParams)(at.fallbackRouteParams):aI?(0,o.getFallbackRouteParams)(aq,P):null;aG&&f&&(0,h.addRequestMeta)(a,"fallbackParams",f);let g=await P.handleResponse({cacheKey:b,req:a,nextConfig:al,routeKind:e.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:ag,isRoutePPREnabled:aF,responseGenerator:async()=>q({span:j,postponed:void 0,fallbackRouteParams:f,forceStaticRender:!0}),waitUntil:d.waitUntil,isMinimalMode:V});if(null===g)return null;if(g)return V||!aF||!(aS.length>0)||!0!==al.experimental.partialFallbacks||!aU||!p||ar||aI||aD||aE||ay||(0,J.scheduleOnNextTick)(async()=>{let b=P.getResponseCache(a);try{await b.revalidate(aU,p,aF,!1,a=>q({span:a.span,postponed:void 0,fallbackRouteParams:a_.length>0?(0,o.createOpaqueFallbackRouteParams)(a_):null,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}),delete g.cacheControl,g}}let s=ar||i||!aJ?void 0:aJ;if(aP&&!V&&p&&(aL||aA)&&!k){let b=await p.get(ai,{kind:v.IncrementalCacheKind.APP_PAGE,isRoutePPREnabled:!0,isFallback:!1});b&&b.value&&b.value.kind===v.CachedRouteKind.APP_PAGE&&(s=b.value.postponed,b&&(-1===b.isStale||!0===b.isStale)&&(0,J.scheduleOnNextTick)(async()=>{let b=P.getResponseCache(a);try{await b.revalidate(ai,p,aF,!1,a=>r({...a,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}))}if((aG||aH)&&void 0!==s)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:v.CachedRouteKind.PAGES,html:x.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let t=!P.isDev&&_&&(null==at?void 0:at.fallbackRouteParams)?(0,o.getPlaceholderFallbackRouteParams)($,at.fallbackRouteParams):null,y=t&&t.length>0?t:null==at?void 0:at.fallbackRouteParams,z=null!=t&&t.length>0,A=null;if(al.cacheComponents&&(null==at?void 0:at.fallbackRouteParams)){let b=(0,h.getRequestMeta)(a,"resolvedRouteParamKeys");b&&b.size>0&&(A=at.fallbackRouteParams.filter(a=>!b.has(a.paramName)))}let B=(l&&(0,h.getRequestMeta)(a,"renderFallbackShell")||z||aG&&!au)&&y?(0,o.createOpaqueFallbackRouteParams)(y):A&&A.length>0&&A.length<((null==at||null==(n=at.fallbackRouteParams)?void 0:n.length)??0)?(0,o.createOpaqueFallbackRouteParams)(A):aI?(0,o.getFallbackRouteParams)(aq,P):null;if((l||aG)&&al.cacheComponents&&!au&&(null==at?void 0:at.fallbackRouteParams)){let b=(0,o.createOpaqueFallbackRouteParams)(y??at.fallbackRouteParams);b&&(0,h.addRequestMeta)(a,"fallbackParams",b)}return q({span:j,postponed:s,fallbackRouteParams:B,forceStaticRender:k})}catch(b){throw(null==g?void 0:g.isStale)&&await P.onRequestError(a,b,{routerKind:"App Router",routePath:W,routeType:"render",revalidateReason:(0,f.c)({isStaticGeneration:aO,isOnDemandRevalidate:ar})},!1,ak),b}},s=async c=>{var f,g,i,j,k,l;let m,n=await P.handleResponse({cacheKey:aU,responseGenerator:a=>r({span:c,...a}),routeKind:e.RouteKind.APP_PAGE,isOnDemandRevalidate:ar,isRoutePPREnabled:aF,req:a,nextConfig:al,prerenderManifest:ag,waitUntil:d.waitUntil,isMinimalMode:V});if(ah&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),P.isDev&&b.setHeader("Cache-Control","no-cache, must-revalidate"),!n){if(aU)throw Object.defineProperty(Error("invariant: cache entry required but not generated"),"__NEXT_ERROR_CODE",{value:"E62",enumerable:!1,configurable:!0});return null}if((null==(f=n.value)?void 0:f.kind)!==v.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(i=n.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let o="string"==typeof n.value.postponed;az&&!aA&&ao&&b.setHeader(y.NEXT_NAV_DEPLOYMENT_ID_HEADER,ao),aO&&!aL&&(!o||ay)&&(V||b.setHeader("x-nextjs-cache",ar?"REVALIDATED":n.isMiss?"MISS":n.isStale?"STALE":"HIT"),b.setHeader(t.NEXT_IS_PRERENDER_HEADER,"1"));let{value:p}=n;if(aJ)m={revalidate:0,expire:void 0};else if(aL)m={revalidate:0,expire:void 0};else if(!P.isDev)if(ah)m={revalidate:0,expire:void 0};else if(aO){if(n.cacheControl)if("number"==typeof n.cacheControl.revalidate){if(n.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${n.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});m={revalidate:n.cacheControl.revalidate,expire:(null==(j=n.cacheControl)?void 0:j.expire)??al.expireTime}}else m={revalidate:y.CACHE_ONE_YEAR_SECONDS,expire:void 0}}else b.getHeader("Cache-Control")||(m={revalidate:0,expire:void 0});if(n.cacheControl=m,"string"==typeof aM&&(null==p?void 0:p.kind)===v.CachedRouteKind.APP_PAGE&&p.segmentData){b.setHeader(t.NEXT_DID_POSTPONE_HEADER,"2");let c=null==(k=p.headers)?void 0:k[y.NEXT_CACHE_TAGS_HEADER];V&&aO&&c&&"string"==typeof c&&b.setHeader(y.NEXT_CACHE_TAGS_HEADER,c);let d=p.segmentData.get(aM);return void 0!==d?(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:x.default.fromStatic(d,t.RSC_CONTENT_TYPE_HEADER),cacheControl:n.cacheControl}):(b.statusCode=204,(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:x.default.EMPTY,cacheControl:n.cacheControl}))}let s=aP?(0,h.getRequestMeta)(a,"onCacheEntryV2")??(0,h.getRequestMeta)(a,"onCacheEntry"):(0,h.getRequestMeta)(a,"onCacheEntry");if(s){let b=(0,h.getRequestMeta)(a,"initURL")??a.url,c=b?(null==(l=(0,F.parseUrl)(b))?void 0:l.pathname)??b:void 0;if(await s(n,{url:c}))return null}if(p.headers){let a={...p.headers};for(let[c,d]of(V&&aO||delete a[y.NEXT_CACHE_TAGS_HEADER],Object.entries(a)))if(void 0!==d)if(Array.isArray(d))for(let a of d)b.appendHeader(c,a);else"number"==typeof d&&(d=d.toString()),b.appendHeader(c,d)}let u=null==(g=p.headers)?void 0:g[y.NEXT_CACHE_TAGS_HEADER];if(V&&aO&&u&&"string"==typeof u&&b.setHeader(y.NEXT_CACHE_TAGS_HEADER,u),!p.status||az&&aF||(b.statusCode=p.status),!V&&p.status&&H.RedirectStatusCode[p.status]&&az&&(b.statusCode=200),o&&!aL&&b.setHeader(t.NEXT_DID_POSTPONE_HEADER,"1"),az&&!ah){if(void 0===p.rscData){if(p.html.contentType!==t.RSC_CONTENT_TYPE_HEADER)if(al.cacheComponents)return b.statusCode=404,(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:x.default.EMPTY,cacheControl:n.cacheControl});else throw Object.defineProperty(new I.InvariantError(`Expected RSC response, got ${p.html.contentType}`),"__NEXT_ERROR_CODE",{value:"E789",enumerable:!1,configurable:!0});return(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:p.html,cacheControl:n.cacheControl})}return(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:x.default.fromStatic(p.rscData,t.RSC_CONTENT_TYPE_HEADER),cacheControl:n.cacheControl})}let w=p.html;if(aE&&aG){let c=!0===P.isDev?crypto.randomUUID():null;return w.pipeThrough(await (0,A.createInstantTestScriptInsertionTransformStream)(c)),(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:w,cacheControl:{revalidate:0,expire:void 0}})}if(!o||V||az)return(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:w,cacheControl:n.cacheControl});if(aG||aH)return w.push(new ReadableStream({start(a){a.enqueue(z.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:w,cacheControl:{revalidate:0,expire:void 0}});let C=new TransformStream;return w.push(C.readable),q({span:c,postponed:p.postponed,fallbackRouteParams:null,forceStaticRender:!1}).then(async a=>{var b,c;if(!a)throw Object.defineProperty(Error("Invariant: expected a result to be returned"),"__NEXT_ERROR_CODE",{value:"E463",enumerable:!1,configurable:!0});if((null==(b=a.value)?void 0:b.kind)!==v.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant: expected a page response, got ${null==(c=a.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E305",enumerable:!1,configurable:!0});await a.value.html.pipeTo(C.writable)}).catch(a=>{C.writable.abort(a).catch(a=>{console.error("couldn't abort transformer",a)})}),(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:w,cacheControl:{revalidate:0,expire:void 0}})};if(!a$||!aZ)return k=aY.getActiveScopeSpan(),await aY.withPropagatedContext(a.headers,()=>aY.trace(i.BaseServerSpan.handleRequest,{spanName:`${aX} ${W}`,kind:g.SpanKind.SERVER,attributes:{"http.method":aX,"http.target":a.url}},s),void 0,!a$);await s(aZ)}catch(b){throw b instanceof C.NoFallbackError||await P.onRequestError(a,b,{routerKind:"App Router",routePath:W,routeType:"render",revalidateReason:(0,f.c)({isStaticGeneration:aO,isOnDemandRevalidate:ar})},!1,ak),b}}},40551:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f});var d=c(5735),e=c(79286);function f(){return(0,d.jsx)(e.default,{})}},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},43954:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/interception-routes")},51091:(a,b,c)=>{Promise.resolve().then(c.bind(c,79286))},55511:a=>{"use strict";a.exports=require("crypto")},55591:a=>{"use strict";a.exports=require("https")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},70722:a=>{"use strict";a.exports=require("next/dist/shared/lib/invariant-error")},73024:a=>{"use strict";a.exports=require("node:fs")},73180:(a,b,c)=>{"use strict";c.d(b,{default:()=>k});var d=c(48249),e=c(67484),f=c(50412);function g(){return globalThis.crypto?.randomUUID?globalThis.crypto.randomUUID():`chat_${Date.now()}_${Math.random().toString(16).slice(2)}`}function h(a){if("string"==typeof a)return a;if(null==a)return"";if(Array.isArray(a))return a.map(h).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 i(a=""){let b=h(a).replace(/\s+/g," ").trim();return b?b.length>52?`${b.slice(0,52).trimEnd()}…`:b:"New chat"}async function j(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 k(){let[a,b]=(0,e.useState)([]),[c,k]=(0,e.useState)(!0),[l,m]=(0,e.useState)(""),[n,o]=(0,e.useState)(()=>[]),[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)(!1),[B,C]=(0,e.useState)(""),[D,E]=(0,e.useState)(""),[F,G]=(0,e.useState)(!1),[H,I]=(0,e.useState)(!1),[J,K]=(0,e.useState)(!1),L=(0,e.useRef)(null),M=(0,e.useRef)(null);(0,e.useRef)(!1);let N=(0,e.useRef)(null),O=(0,e.useRef)(null),P=(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]),Q=(0,e.useMemo)(()=>a.find(a=>a.providerId===r)||a[0]||null,[a,r]),R=(0,e.useMemo)(()=>{if(t&&P.has(t))return P.get(t);if(p){let a=n.find(a=>a.id===p);if(a?.modelId&&P.has(a.modelId))return P.get(a.modelId)}return Q?.models?.[0]||null},[t,P,Q,n,p]),S=(0,e.useMemo)(()=>n.find(a=>a.id===p)||null,[n,p]),T=S?.messages||[],U=(0,e.useMemo)(()=>[...n].sort((a,b)=>new Date(b.updatedAt).getTime()-new Date(a.updatedAt).getTime()),[n]),V=!z&&!!R&&(v.trim().length>0||x.length>0),W=(a,b)=>{o(c=>c.map(c=>c.id===a?b({...c,messages:Array.isArray(c.messages)?c.messages.map(a=>({...a})):[]}):c))},X=a=>a?{id:g(),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,Y=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:g(),name:a.name,type:a.type,size:a.size,dataUrl:await j(a)})));y(a=>[...a,...d]),a.target.value=""},Z=async()=>{let a=R||Q?.models?.[0]||null;if(!a)return;let b=v.trim();if(!b&&0===x.length)return;let c=p,d=n.find(a=>a.id===c);if(!d){if(!(d=X(a)))return;c=d.id,o(a=>[d,...a]),q(c)}let e={id:g(),role:"user",content:b,attachments:x.map(a=>({id:a.id,name:a.name,type:a.type,dataUrl:a.dataUrl})),createdAt:new Date().toISOString()},f=g(),j={id:f,role:"assistant",content:"",createdAt:new Date().toISOString(),status:"streaming"},k=[...d.messages||[],e,j];o(d=>d.map(d=>d.id===c?{...d,providerId:a.providerId,providerName:a.providerName,modelId:a.id,modelName:a.name,messages:k,updatedAt:new Date().toISOString(),title:"New chat"===d.title?i(b):d.title}:d)),w(""),y([]),A(!0),C(f),E(""),M.current?.abort(),M.current=new AbortController;let l=k.filter(a=>"assistant"!==a.role||a.id!==f).map(a=>({role:a.role,content:"user"===a.role?function(a){let b=h(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}));try{var r;let d,e=await fetch("/api/dashboard/chat/completions",{method:"POST",headers:{"Content-Type":"application/json",Accept:"text/event-stream"},body:JSON.stringify({model:a.requestModel||a.id,messages:l,stream:!0}),signal:M.current.signal});if(!e.ok){let a=await e.json().catch(()=>({}));throw Error(h(a.error||a.message||`Request failed (${e.status})`))}let g=e.body?.getReader();if(!g){let a=await e.json().catch(()=>({})),b=h(a?.choices?.[0]?.message?.content||a?.output_text||a?.error||a?.message||"");W(c,a=>({...a,messages:a.messages.map(a=>a.id===f?{...a,content:b,status:"done"}:a),updatedAt:new Date().toISOString()}));return}let j=new TextDecoder,k="",m="";for(;;){let{value:a,done:b}=await g.read();if(b)break;let d=(k+=j.decode(a,{stream:!0})).split(/\r?\n/);for(let a of(k=d.pop()||"",d)){let b=a.trim();if(!b.startsWith("data:"))continue;let d=b.slice(5).trim();if(d&&"[DONE]"!==d)try{let a=JSON.parse(d),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(h).filter(Boolean)[0]||""}(a);if(!b)continue;m+=b,E(m),W(c,a=>({...a,messages:a.messages.map(a=>a.id===f?{...a,content:m,status:"streaming"}:a),updatedAt:new Date().toISOString()}))}catch{}}}W(c,a=>({...a,messages:a.messages.map(a=>a.id===f?{...a,content:m||a.content,status:"done"}:a),updatedAt:new Date().toISOString()})),r=c,d=i(b),W(r,a=>({...a,title:"New chat"===a.title?d:a.title,updatedAt:new Date().toISOString()}))}catch(a){if("AbortError"!==a.name){let b=h(a?.message||a);W(c,a=>({...a,messages:a.messages.map(a=>a.id===f?{...a,content:a.content||`Error: ${b}`,status:"error"}:a),updatedAt:new Date().toISOString()})),m(b||"Failed to send message.")}}finally{A(!1),C(""),E(""),M.current=null}},$=R?`${R.name}`:"Select model",_=R?R.requestModel:"Choose from connected providers";return(0,d.jsx)("div",{className:"relative flex-1 flex flex-col h-full min-h-0 min-w-0 bg-[#212121] text-white overflow-hidden",children:(0,d.jsxs)("div",{className:"relative mx-auto flex flex-1 h-full min-h-0 w-full max-w-4xl flex-col",children:[(0,d.jsxs)("div",{className:"flex shrink-0 items-center justify-between gap-3 px-4 py-3 lg:px-6",children:[(0,d.jsxs)("div",{ref:N,className:"relative",children:[(0,d.jsx)("button",{type:"button",onClick:()=>I(a=>!a),className:"flex items-center gap-3 rounded-2xl border border-white/10 bg-white/5 px-4 py-3 text-left transition hover:bg-white/8",children:(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"text-sm font-semibold text-white",children:$}),(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] text-white/70",children:"expand_more"})]}),(0,d.jsx)("p",{className:"truncate text-xs text-white/55",children:_})]})}),H?(0,d.jsxs)("div",{className:"absolute left-0 top-[calc(100%+10px)] z-30 w-[min(520px,calc(100vw-2rem))] overflow-hidden rounded-[20px] border border-white/10 bg-[#262626] shadow-2xl shadow-black/50",children:[(0,d.jsxs)("div",{className:"border-b border-white/10 px-4 py-3",children:[(0,d.jsx)("p",{className:"text-xs uppercase tracking-[0.22em] text-white/45",children:"Models"}),(0,d.jsx)("p",{className:"text-sm text-white/75",children:"Only from connected providers"})]}),(0,d.jsx)("div",{className:"max-h-[60vh] overflow-y-auto p-2 custom-scrollbar",children:a.map(a=>(0,d.jsxs)("div",{className:"mb-2 rounded-[16px] border border-white/10 bg-black/20 p-2",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between px-2 py-2",children:[(0,d.jsx)("p",{className:"text-sm font-semibold text-white",children:a.providerName}),(0,d.jsx)(f.Ex,{size:"sm",variant:"default",children:a.models.length})]}),(0,d.jsx)("div",{className:"grid gap-2 sm:grid-cols-2",children:a.models.map(a=>{let b=a.id===t;return(0,d.jsx)("button",{type:"button",onClick:()=>(a=>{let b=P.get(a);if(!b)return;let c=n.find(a=>a.id===p);if(c&&c.messages.length>0){let a=X(b);if(!a)return;o(b=>[a,...b]),q(a.id)}else if(c)o(a=>a.map(a=>a.id===c.id?{...a,providerId:b.providerId,providerName:b.providerName,modelId:b.id,modelName:b.name}:a)),q(c.id);else{let a=X(b);if(!a)return;o(b=>[a,...b]),q(a.id)}s(b.providerId),u(b.id),I(!1)})(a.id),className:`rounded-[14px] border px-3 py-3 text-left transition ${b?"border-blue-400/40 bg-blue-500/15":"border-white/10 bg-white/5 hover:bg-white/8"}`,children:(0,d.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsx)("p",{className:"truncate text-sm font-medium text-white",children:a.name}),(0,d.jsx)("p",{className:"truncate text-[11px] text-white/45",children:a.requestModel})]}),b?(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] text-blue-300",children:"check_circle"}):null]})},a.id)})})]},a.providerId))})]}):null]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("button",{type:"button",onClick:()=>K(a=>!a),className:"rounded-2xl border border-white/10 bg-white/5 px-4 py-3 text-sm text-white/80 transition hover:bg-white/8",children:"History"}),(0,d.jsx)(f.$n,{variant:"ghost",size:"sm",icon:"delete",onClick:()=>{if(!p)return;let a=n.filter(a=>a.id!==p),b=a[0]||null;o(a),b?(q(b.id),s(b.providerId),u(b.modelId)):(q(""),s(""),u(""))},disabled:!p||0===n.length,children:"Clear"})]})]}),J?(0,d.jsxs)("div",{ref:O,className:"absolute right-4 top-[72px] z-20 w-[min(360px,calc(100vw-2rem))] rounded-[20px] border border-white/10 bg-[#262626] p-2 shadow-2xl shadow-black/50 lg:right-6",children:[(0,d.jsx)("div",{className:"px-3 py-2",children:(0,d.jsx)("p",{className:"text-xs uppercase tracking-[0.22em] text-white/45",children:"Recent chats"})}),(0,d.jsx)("div",{className:"max-h-[48vh] space-y-2 overflow-y-auto p-1 custom-scrollbar",children:0===U.length?(0,d.jsx)("div",{className:"rounded-[16px] border border-dashed border-white/10 bg-white/5 p-4 text-sm text-white/55",children:"No conversations yet."}):U.map(a=>{let b=a.id===p,c=[...a.messages||[]].reverse().find(a=>"user"===a.role)||a.messages?.[0];return(0,d.jsx)("button",{type:"button",onClick:()=>{var b;let c;return b=a.id,void((c=n.find(a=>a.id===b))&&(q(b),s(c.providerId||r),u(c.modelId||t),K(!1)))},className:`w-full rounded-[16px] border px-3 py-3 text-left transition ${b?"border-blue-400/40 bg-blue-500/15":"border-white/10 bg-white/5 hover:bg-white/8"}`,children:(0,d.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsx)("p",{className:"truncate text-sm font-medium text-white",children:a.title}),(0,d.jsx)("p",{className:"mt-1 truncate text-xs text-white/50",children:h(c?.content)||"Empty chat"})]}),(0,d.jsx)("span",{className:"text-[10px] text-white/40 shrink-0",children: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)})})]}):null,l?(0,d.jsx)("div",{className:"mt-4 rounded-[18px] border border-rose-500/20 bg-rose-500/10 px-4 py-3 text-rose-100",children:(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"error"}),(0,d.jsx)("p",{className:"text-sm leading-6",children:l})]})}):null,(0,d.jsxs)("div",{className:"flex flex-1 flex-col min-h-0",children:[(0,d.jsxs)("div",{className:"flex-1 overflow-y-auto py-4 custom-scrollbar",children:[0===T.length?(0,d.jsx)("div",{className:"flex min-h-[50vh] items-center justify-center px-4 text-center",children:(0,d.jsxs)("div",{className:"max-w-xl space-y-4",children:[(0,d.jsx)("div",{className:"mx-auto flex size-16 items-center justify-center rounded-[20px] border border-white/10 bg-white/5 text-white/80",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[30px]",children:"chat"})}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)("h2",{className:"text-2xl font-semibold text-white",children:"Start a conversation"}),(0,d.jsx)("p",{className:"text-sm leading-6 text-white/60",children:"Simple chat interface to interact with any AI model from connected providers. Select a model and start chatting!"})]})]})}):null,(0,d.jsx)("div",{className:"mx-auto flex w-full max-w-3xl flex-col gap-4 px-4",children:T.map(a=>{let b="user"===a.role,c="assistant"===a.role,e=c&&a.id===B&&"streaming"===a.status,f=h(a.content)||(c?D:"");return(0,d.jsx)("div",{className:`flex w-full ${b?"justify-end":"justify-start"} mb-6`,children:(0,d.jsxs)("div",{className:`max-w-[min(88%,42rem)] ${b?"rounded-3xl bg-[#2f2f2f] px-5 py-3.5 text-white":"text-white/90"}`,children:[(0,d.jsx)("div",{className:"mb-1 flex items-center justify-between gap-3",children:(0,d.jsx)("span",{className:"text-xs font-semibold",children:b?"You":R?.name||"Assistant"})}),a.attachments?.length?(0,d.jsx)("div",{className:"mb-3 grid grid-cols-2 gap-2 sm:grid-cols-3 mt-2",children:a.attachments.map(a=>(0,d.jsx)("a",{href:a.dataUrl,target:"_blank",rel:"noreferrer",className:"overflow-hidden rounded-[18px] border border-white/10 bg-black/20",children:(0,d.jsx)("img",{src:a.dataUrl,alt:a.name,className:"h-28 w-full object-cover"})},a.id))}):null,(0,d.jsxs)("div",{className:"whitespace-pre-wrap break-words text-[15px] leading-7",children:[f,c&&e&&!D?(0,d.jsx)("span",{className:"inline-block animate-pulse",children:"▋"}):null]})]})},a.id)})})]}),(0,d.jsxs)("div",{className:"shrink-0 pt-2",children:[x.length>0?(0,d.jsx)("div",{className:"mx-auto mb-3 flex w-full max-w-3xl flex-wrap gap-2 px-4",children:x.map(a=>(0,d.jsxs)("div",{className:"flex items-center gap-2 rounded-full border border-white/10 bg-white/5 px-3 py-2",children:[(0,d.jsx)("span",{className:"text-xs text-white/80 max-w-[12rem] truncate",children:a.name}),(0,d.jsx)("button",{type:"button",onClick:()=>{var b;return b=a.id,void y(a=>a.filter(a=>a.id!==b))},className:"text-white/55 hover:text-white","aria-label":"Remove attachment",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"close"})})]},a.id))}):null,(0,d.jsx)("div",{className:"mx-auto w-full max-w-3xl px-4 pb-2",children:(0,d.jsxs)("div",{className:"rounded-[26px] bg-[#2f2f2f] px-3 pt-3 pb-2 shadow-[0_0_15px_rgba(0,0,0,0.10)] ring-1 ring-white/5",children:[(0,d.jsx)("textarea",{value:v,onChange:a=>w(a.target.value),onKeyDown:a=>{"Enter"===a.key&&!a.shiftKey&&(a.preventDefault(),V&&Z())},placeholder:"Message AI",rows:1,className:"w-full resize-none bg-transparent px-2 text-[15px] leading-6 text-white outline-none placeholder:text-white/40 custom-scrollbar max-h-[25vh] overflow-y-auto"}),(0,d.jsxs)("div",{className:"mt-2 flex items-center justify-between gap-3",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("button",{type:"button",onClick:()=>L.current?.click(),disabled:!R||c,className:"p-2 text-white/50 hover:text-white transition rounded-full hover:bg-white/5",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"attach_file"})}),(0,d.jsx)("input",{ref:L,type:"file",accept:"image/*",multiple:!0,className:"hidden",onChange:Y}),(0,d.jsx)("span",{className:"text-xs font-medium text-white/30 truncate max-w-[120px]",children:R?R.name:"No model"})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[z?(0,d.jsx)("button",{type:"button",onClick:()=>{M.current?.abort()},className:"p-2 text-white bg-white/10 hover:bg-white/20 transition rounded-full h-8 w-8 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"stop"})}):null,(0,d.jsx)("button",{onClick:Z,disabled:!V,className:`h-8 w-8 rounded-full flex items-center justify-center transition ${V?"bg-white text-black hover:opacity-90":"bg-white/10 text-white/30 cursor-not-allowed"}`,children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"arrow_upward"})})]})]})]})})]}),(0,d.jsx)("p",{className:"mx-auto mt-2 max-w-3xl px-4 pb-4 text-center text-[11px] text-white/30",children:"Model list is filtered from connected providers."})]})]})})}c(91431),c(96919)},74075:a=>{"use strict";a.exports=require("zlib")},76760:a=>{"use strict";a.exports=require("node:path")},77068:a=>{"use strict";a.exports=require("next/dist/shared/lib/size-limit")},77598:a=>{"use strict";a.exports=require("node:crypto")},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 \"C:\\\\Users\\\\QuocTai\\\\Documents\\\\9router\\\\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.")},"C:\\Users\\QuocTai\\Documents\\9router\\src\\app\\(dashboard)\\dashboard\\basic-chat\\BasicChatPageClient.js","default")},79646:a=>{"use strict";a.exports=require("child_process")},79868:a=>{"use strict";a.exports=require("node:sqlite")},81787:a=>{"use strict";a.exports=require("bun:sqlite")},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{"use strict";a.exports=require("better-sqlite3")},88043:(a,b,c)=>{Promise.resolve().then(c.bind(c,73180))},91645:a=>{"use strict";a.exports=require("net")},94735:a=>{"use strict";a.exports=require("events")}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,595,5296,319,3879,3913,4884,5681,4404,5718,9142,412,5236],()=>b(b.s=34107));module.exports=c})();
1
+ (()=>{var a={};a.id=4465,a.ids=[4465],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},1932:a=>{"use strict";a.exports=require("url")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},17891:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/get-segment-param")},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},21820:a=>{"use strict";a.exports=require("os")},26713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},28354:a=>{"use strict";a.exports=require("util")},29021:a=>{"use strict";a.exports=require("fs")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{"use strict";a.exports=require("path")},40551:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f});var d=c(5735),e=c(79286);function f(){return(0,d.jsx)(e.default,{})}},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},43954:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/interception-routes")},45955:(a,b,c)=>{"use strict";c.r(b),c.d(b,{__next_app__:()=>O,handler:()=>Q,routeModule:()=>P});var d=c(7553),e=c(84006),f=c(67798),g=c(34775),h=c(99373),i=c(73461),j=c(1020),k=c(26349),l=c(54365),m=c(16023),n=c(14965),o=c(63747),p=c(24235),q=c(23938),r=c(261),s=c(66758),t=c(77243),u=c(26713),v=c(37527),w=c(22820),x=c(88216),y=c(47929),z=c(79551),A=c(71797),B=c(89125),C=c(86439),D=c(77068),E=c(27269),F=c(37525),G=c(61287),H=c(81494),I=c(70722),J=c(70753),K=c(43954),L=c(17891),M={};for(let a in G)0>["default","__next_app__","routeModule","handler"].indexOf(a)&&(M[a]=()=>G[a]);c.d(b,M);let N={children:["",{children:["(dashboard)",{children:["dashboard",{children:["basic-chat",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,40551)),"C:\\Users\\QuocTai\\Documents\\9router\\src\\app\\(dashboard)\\dashboard\\basic-chat\\page.js"]}]},{"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"]},[]]},{"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"]},[]]},{layout:[()=>Promise.resolve().then(c.bind(c,30508)),"C:\\Users\\QuocTai\\Documents\\9router\\src\\app\\(dashboard)\\layout.js"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,55091,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,45270,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,28193,23)),"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[async a=>(await Promise.resolve().then(c.bind(c,70440))).default(a)],apple:[],openGraph:[],twitter:[],manifest:"/manifest.webmanifest"}},[]]},{layout:[()=>Promise.resolve().then(c.bind(c,32059)),"C:\\Users\\QuocTai\\Documents\\9router\\src\\app\\layout.js"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,55091,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,45270,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,28193,23)),"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[async a=>(await Promise.resolve().then(c.bind(c,70440))).default(a)],apple:[],openGraph:[],twitter:[],manifest:"/manifest.webmanifest"}},[]]}.children,O={require:c,loadChunk:()=>Promise.resolve()},P=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/(dashboard)/dashboard/basic-chat/page",pathname:"/dashboard/basic-chat",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:N},distDir:".next",relativeProjectDir:""});async function Q(a,b,d){var M,R,S,T,U;d.requestMeta&&(0,h.setRequestMeta)(a,d.requestMeta),P.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let V=!!(0,h.getRequestMeta)(a,"minimalMode"),W="/(dashboard)/dashboard/basic-chat/page";"/index"===W&&(W="/");let X=await P.prepare(a,b,{srcPage:W,multiZoneDraftMode:!1});if(!X)return b.statusCode=400,b.end("Bad Request"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let{buildId:Y,query:Z,params:$,pageIsDynamic:_,buildManifest:aa,nextFontManifest:ab,reactLoadableManifest:ac,serverActionsManifest:ad,clientReferenceManifest:ae,subresourceIntegrityManifest:af,prerenderManifest:ag,isDraftMode:ah,resolvedPathname:ai,revalidateOnlyGenerated:aj,routerServerContext:ak,nextConfig:al,parsedUrl:am,interceptionRoutePatterns:an,deploymentId:ao,clientAssetToken:ap}=X,aq=(0,r.normalizeAppPath)(W),{isOnDemandRevalidate:ar}=X,as=al.experimental.ppr&&!al.cacheComponents&&(0,K.isInterceptionRouteAppPath)(ai)?null:P.match(ai,ag),at=(null==as?void 0:as.route)??null,au=!!ag.routes[ai],av=a.headers["user-agent"]||"",aw=(0,u.getBotType)(av),ax=(0,q.isHtmlBotRequest)(a),ay=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[t.NEXT_ROUTER_PREFETCH_HEADER],az=(0,h.getRequestMeta)(a,"isRSCRequest")??(0,n.f)(a.headers[t.RSC_HEADER]),aA=(0,s.getIsPossibleServerAction)(a),aB=(0,m.checkIsAppPPREnabled)(al.experimental.ppr),aC=a.headers[y.NEXT_RESUME_STATE_LENGTH_HEADER];if(!(0,h.getRequestMeta)(a,"postponed")&&V&&aB&&aA&&aC&&"string"==typeof aC){let e=parseInt(aC,10),{maxPostponedStateSize:f,maxPostponedStateSizeBytes:g}=(0,E.getMaxPostponedStateSize)(al.experimental.maxPostponedStateSize);if(!isNaN(e)&&e>0){if(e>g)return b.statusCode=413,b.end((0,E.getPostponedStateExceededErrorMessage)(f)),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let i="1 MB",j=(null==(U=al.experimental.serverActions)?void 0:U.bodySizeLimit)??i,k=e+(j!==i?c(95726).parse(j):1048576),l=await (0,E.readBodyWithSizeLimit)(a,k);if(null===l)return b.statusCode=413,b.end("Request body exceeded limit. To configure the body size limit for Server Actions, see: https://nextjs.org/docs/app/api-reference/next-config-js/serverActions#bodysizelimit"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;if(l.length>=e){let b=l.subarray(0,e).toString("utf8");(0,h.addRequestMeta)(a,"postponed",b);let c=l.subarray(e);(0,h.addRequestMeta)(a,"actionBody",c)}else throw Object.defineProperty(Error(`invariant: expected ${e} bytes of postponed state but only received ${l.length} bytes`),"__NEXT_ERROR_CODE",{value:"E979",enumerable:!1,configurable:!0})}}if(!(0,h.getRequestMeta)(a,"postponed")&&aB&&"1"===a.headers[y.NEXT_RESUME_HEADER]&&"POST"===a.method){let{maxPostponedStateSize:c,maxPostponedStateSizeBytes:e}=(0,E.getMaxPostponedStateSize)(al.experimental.maxPostponedStateSize),f=await (0,E.readBodyWithSizeLimit)(a,e);if(null===f)return b.statusCode=413,b.end((0,E.getPostponedStateExceededErrorMessage)(c)),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let g=f.toString("utf8");(0,h.addRequestMeta)(a,"postponed",g)}let aD=!0===P.isDev||!0===al.experimental.exposeTestingApiInProductionBuild,aE=aD&&("1"===a.headers[t.NEXT_INSTANT_PREFETCH_HEADER]||!(0,n.f)(a.headers[t.RSC_HEADER])&&"string"==typeof a.headers.cookie&&a.headers.cookie.includes(t.NEXT_INSTANT_TEST_COOKIE+"=")),aF=(aB||aE)&&((null==(M=ag.routes[aq]??ag.dynamicRoutes[aq])?void 0:M.renderingMode)==="PARTIALLY_STATIC"||aE&&(aD||(null==ak?void 0:ak.experimentalTestProxy)===!0)),aG=aE&&aF,aH=aG&&!0===P.isDev,aI=!1,aJ=aF?(0,h.getRequestMeta)(a,"postponed"):void 0,aK=null==(R=ag.routes[ai])?void 0:R.prefetchDataRoute,aL=aF&&az&&!ay&&!aK;V&&(aL=aL&&!!aJ);let aM=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),aN=(!aw||!aF)&&(!av||(0,q.shouldServeStreamingMetadata)(av,al.htmlLimitedBots)),aO=!!((at||au||ag.routes[aq])&&!(aw&&aF)),aP=aF&&!0===al.cacheComponents,aQ=!0===P.isDev||!aO||"string"==typeof aJ||(aP&&(0,h.getRequestMeta)(a,"onCacheEntryV2")?aL&&!V:aL),aR=!!aw&&aF,aS=(null==at?void 0:at.remainingPrerenderableParams)??[],aT=(null==at?void 0:at.fallback)===null&&((null==(S=at.fallbackRootParams)?void 0:S.length)??0)>0,aU=null;if(!ah&&aO&&!aQ&&!aA&&!aJ&&!aL){let a=as?"string"==typeof(null==at?void 0:at.fallback)?at.fallback:as.source:null;if(!0===al.experimental.partialFallbacks&&a&&(null==at?void 0:at.fallbackRouteParams)&&!aT){if(aS.length>0){let b,c=(b=new Map(aS.map(a=>[a.paramName,a])),a.split("/").map(a=>{let c=(0,L.getSegmentParam)(a);if(!c)return a;let d=b.get(c.paramName);if(!d)return a;let e=null==$?void 0:$[d.paramName];if(!e)return a;let f=Array.isArray(e)?e.map(a=>encodeURIComponent(a)).join("/"):encodeURIComponent(e);return a.replace((0,o.buildDynamicSegmentPlaceholder)(d),f)}).join("/")||"/");aU=c!==a?c:null}}else aU=ai}let aV=aU;!aV&&(P.isDev||aO&&_&&(null==at?void 0:at.fallbackRouteParams)&&!aA)&&(aV=ai),P.isDev||ah||!aO||!az||aL||(0,k.d)(a.headers);let aW={...G,tree:N,handler:Q,routeModule:P,__next_app__:O};ad&&ae&&(0,p.setManifestsSingleton)({page:W,clientReferenceManifest:ae,serverActionsManifest:ad});let aX=a.method||"GET",aY=(0,g.getTracer)(),aZ=aY.getActiveScopeSpan(),a$=!!(null==ak?void 0:ak.isWrappedByNextServer),a_=!0===al.experimental.partialFallbacks&&aS.length>0?(null==at||null==(T=at.fallbackRouteParams)?void 0:T.filter(a=>!aS.some(b=>b.paramName===a.paramName)))??[]:[],a0=async()=>((null==ak?void 0:ak.render404)?await ak.render404(a,b,am,!1):b.end("This page could not be found"),null);try{let k,m=P.getVaryHeader(ai,an);b.setHeader("Vary",m);let n=async(c,d)=>{let e=new l.NodeNextRequest(a),f=new l.NodeNextResponse(b);return P.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let a=aY.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let d=a.get("next.route");if(d){let a=`${aX} ${d}`;c.setAttributes({"next.route":d,"http.route":d,"next.span_name":a}),c.updateName(a),k&&k!==c&&(k.setAttribute("http.route",d),k.updateName(a))}else c.updateName(`${aX} ${W}`)})},p=(0,h.getRequestMeta)(a,"incrementalCache")||await P.getIncrementalCache(a,al,ag,V);null==p||p.resetRequestCache(),globalThis.__incrementalCache=p;let q=async({span:e,postponed:f,fallbackRouteParams:g,forceStaticRender:i})=>{let k={query:Z,params:$,page:aq,sharedContext:{buildId:Y,deploymentId:ao,clientAssetToken:ap},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aW,Component:(0,j.T)(aW),params:$,routeModule:P,page:W,postponed:f,shouldWaitOnAllReady:aR,serveStreamingMetadata:aN,supportsDynamicResponse:"string"==typeof f||aQ,buildManifest:aa,nextFontManifest:ab,reactLoadableManifest:ac,subresourceIntegrityManifest:af,setCacheStatus:null==ak?void 0:ak.setCacheStatus,setIsrStatus:null==ak?void 0:ak.setIsrStatus,setReactDebugChannel:null==ak?void 0:ak.setReactDebugChannel,sendErrorsToBrowser:null==ak?void 0:ak.sendErrorsToBrowser,dir:c(33873).join(process.cwd(),P.relativeProjectDir),isDraftMode:ah,botType:aw,isOnDemandRevalidate:ar,isPossibleServerAction:aA,assetPrefix:al.assetPrefix,nextConfigOutput:al.output,crossOrigin:al.crossOrigin,trailingSlash:al.trailingSlash,images:al.images,previewProps:ag.preview,enableTainting:al.experimental.taint,htmlLimitedBots:al.htmlLimitedBots,reactMaxHeadersLength:al.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:p,cacheLifeProfiles:al.cacheLife,basePath:al.basePath,serverActions:al.experimental.serverActions,logServerFunctions:"object"==typeof al.logging&&!!al.logging.serverFunctions,...aG||aH||aI?{isBuildTimePrerendering:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isDebugDynamicAccesses:aH}:{},cacheComponents:!!al.cacheComponents,experimental:{isRoutePPREnabled:aF,expireTime:al.expireTime,staleTimes:al.experimental.staleTimes,dynamicOnHover:!!al.experimental.dynamicOnHover,optimisticRouting:!!al.experimental.optimisticRouting,inlineCss:!!al.experimental.inlineCss,prefetchInlining:al.experimental.prefetchInlining??!1,authInterrupts:!!al.experimental.authInterrupts,cachedNavigations:!!al.experimental.cachedNavigations,clientTraceMetadata:al.experimental.clientTraceMetadata||[],clientParamParsingOrigins:al.experimental.clientParamParsingOrigins,maxPostponedStateSizeBytes:(0,D.parseMaxPostponedStateSize)(al.experimental.maxPostponedStateSize)},waitUntil:d.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d,e)=>P.onRequestError(a,b,d,e,ak),err:(0,h.getRequestMeta)(a,"invokeError")}};i&&(k.renderOpts.supportsDynamicResponse=!1);let l=await n(e,k),{metadata:m}=l,{cacheControl:o,headers:q={},fetchTags:r,fetchMetrics:s}=m;if(r&&(q[y.NEXT_CACHE_TAGS_HEADER]=r),a.fetchMetrics=s,aO&&(null==o?void 0:o.revalidate)===0&&!P.isDev&&!aF){let a=m.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${ai}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
2
+ see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`),"__NEXT_ERROR_CODE",{value:"E132",enumerable:!1,configurable:!0});if(null==a?void 0:a.stack){let c=a.stack;b.stack=b.message+c.substring(c.indexOf("\n"))}throw b}return{value:{kind:v.CachedRouteKind.APP_PAGE,html:l,headers:q,rscData:m.flightData,postponed:m.postponed,status:m.statusCode,segmentData:m.segmentData},cacheControl:o}},r=async({hasResolved:c,previousCacheEntry:g,isRevalidating:i,span:j,forceStaticRender:k=!1})=>{let l=!1===P.isDev,m=c||b.writableEnded;try{var n;let f;if(ar&&aj&&!g&&!V)return(null==ak?void 0:ak.render404)?await ak.render404(a,b):(b.statusCode=404,b.end("This page could not be found")),null;if(at&&(f=(0,w.parseFallbackField)(at.fallback)),!0===al.experimental.partialFallbacks&&(null==at?void 0:at.fallback)===null&&!aT&&aS.length>0&&(f=w.FallbackMode.PRERENDER),f===w.FallbackMode.PRERENDER&&(0,u.isBot)(av)&&(!aF||ax)&&(f=w.FallbackMode.BLOCKING_STATIC_RENDER),(null==g?void 0:g.isStale)===-1&&(ar=!0),ar&&(f!==w.FallbackMode.NOT_FOUND||g)&&(f=w.FallbackMode.BLOCKING_STATIC_RENDER),!V&&f!==w.FallbackMode.BLOCKING_STATIC_RENDER&&aV&&!m&&!ah&&_&&(l||!au)){if((l||at)&&f===w.FallbackMode.NOT_FOUND){if(al.adapterPath)return await a0();throw new C.NoFallbackError}if(aF&&(al.cacheComponents?!aL:!az)){let b=l&&"string"==typeof(null==at?void 0:at.fallback)?at.fallback:aq,f=(l||aG)&&(null==at?void 0:at.fallbackRouteParams)?(0,o.createOpaqueFallbackRouteParams)(at.fallbackRouteParams):aI?(0,o.getFallbackRouteParams)(aq,P):null;aG&&f&&(0,h.addRequestMeta)(a,"fallbackParams",f);let g=await P.handleResponse({cacheKey:b,req:a,nextConfig:al,routeKind:e.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:ag,isRoutePPREnabled:aF,responseGenerator:async()=>q({span:j,postponed:void 0,fallbackRouteParams:f,forceStaticRender:!0}),waitUntil:d.waitUntil,isMinimalMode:V});if(null===g)return null;if(g)return V||!aF||!(aS.length>0)||!0!==al.experimental.partialFallbacks||!aU||!p||ar||aI||aD||aE||ay||(0,J.scheduleOnNextTick)(async()=>{let b=P.getResponseCache(a);try{await b.revalidate(aU,p,aF,!1,a=>q({span:a.span,postponed:void 0,fallbackRouteParams:a_.length>0?(0,o.createOpaqueFallbackRouteParams)(a_):null,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}),delete g.cacheControl,g}}let s=ar||i||!aJ?void 0:aJ;if(aP&&!V&&p&&(aL||aA)&&!k){let b=await p.get(ai,{kind:v.IncrementalCacheKind.APP_PAGE,isRoutePPREnabled:!0,isFallback:!1});b&&b.value&&b.value.kind===v.CachedRouteKind.APP_PAGE&&(s=b.value.postponed,b&&(-1===b.isStale||!0===b.isStale)&&(0,J.scheduleOnNextTick)(async()=>{let b=P.getResponseCache(a);try{await b.revalidate(ai,p,aF,!1,a=>r({...a,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}))}if((aG||aH)&&void 0!==s)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:v.CachedRouteKind.PAGES,html:x.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let t=!P.isDev&&_&&(null==at?void 0:at.fallbackRouteParams)?(0,o.getPlaceholderFallbackRouteParams)($,at.fallbackRouteParams):null,y=t&&t.length>0?t:null==at?void 0:at.fallbackRouteParams,z=null!=t&&t.length>0,A=null;if(al.cacheComponents&&(null==at?void 0:at.fallbackRouteParams)){let b=(0,h.getRequestMeta)(a,"resolvedRouteParamKeys");b&&b.size>0&&(A=at.fallbackRouteParams.filter(a=>!b.has(a.paramName)))}let B=(l&&(0,h.getRequestMeta)(a,"renderFallbackShell")||z||aG&&!au)&&y?(0,o.createOpaqueFallbackRouteParams)(y):A&&A.length>0&&A.length<((null==at||null==(n=at.fallbackRouteParams)?void 0:n.length)??0)?(0,o.createOpaqueFallbackRouteParams)(A):aI?(0,o.getFallbackRouteParams)(aq,P):null;if((l||aG)&&al.cacheComponents&&!au&&(null==at?void 0:at.fallbackRouteParams)){let b=(0,o.createOpaqueFallbackRouteParams)(y??at.fallbackRouteParams);b&&(0,h.addRequestMeta)(a,"fallbackParams",b)}return q({span:j,postponed:s,fallbackRouteParams:B,forceStaticRender:k})}catch(b){throw(null==g?void 0:g.isStale)&&await P.onRequestError(a,b,{routerKind:"App Router",routePath:W,routeType:"render",revalidateReason:(0,f.c)({isStaticGeneration:aO,isOnDemandRevalidate:ar})},!1,ak),b}},s=async c=>{var f,g,i,j,k,l;let m,n=await P.handleResponse({cacheKey:aU,responseGenerator:a=>r({span:c,...a}),routeKind:e.RouteKind.APP_PAGE,isOnDemandRevalidate:ar,isRoutePPREnabled:aF,req:a,nextConfig:al,prerenderManifest:ag,waitUntil:d.waitUntil,isMinimalMode:V});if(ah&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),P.isDev&&b.setHeader("Cache-Control","no-cache, must-revalidate"),!n){if(aU)throw Object.defineProperty(Error("invariant: cache entry required but not generated"),"__NEXT_ERROR_CODE",{value:"E62",enumerable:!1,configurable:!0});return null}if((null==(f=n.value)?void 0:f.kind)!==v.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(i=n.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let o="string"==typeof n.value.postponed;az&&!aA&&ao&&b.setHeader(y.NEXT_NAV_DEPLOYMENT_ID_HEADER,ao),aO&&!aL&&(!o||ay)&&(V||b.setHeader("x-nextjs-cache",ar?"REVALIDATED":n.isMiss?"MISS":n.isStale?"STALE":"HIT"),b.setHeader(t.NEXT_IS_PRERENDER_HEADER,"1"));let{value:p}=n;if(aJ)m={revalidate:0,expire:void 0};else if(aL)m={revalidate:0,expire:void 0};else if(!P.isDev)if(ah)m={revalidate:0,expire:void 0};else if(aO){if(n.cacheControl)if("number"==typeof n.cacheControl.revalidate){if(n.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${n.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});m={revalidate:n.cacheControl.revalidate,expire:(null==(j=n.cacheControl)?void 0:j.expire)??al.expireTime}}else m={revalidate:y.CACHE_ONE_YEAR_SECONDS,expire:void 0}}else b.getHeader("Cache-Control")||(m={revalidate:0,expire:void 0});if(n.cacheControl=m,"string"==typeof aM&&(null==p?void 0:p.kind)===v.CachedRouteKind.APP_PAGE&&p.segmentData){b.setHeader(t.NEXT_DID_POSTPONE_HEADER,"2");let c=null==(k=p.headers)?void 0:k[y.NEXT_CACHE_TAGS_HEADER];V&&aO&&c&&"string"==typeof c&&b.setHeader(y.NEXT_CACHE_TAGS_HEADER,c);let d=p.segmentData.get(aM);return void 0!==d?(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:x.default.fromStatic(d,t.RSC_CONTENT_TYPE_HEADER),cacheControl:n.cacheControl}):(b.statusCode=204,(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:x.default.EMPTY,cacheControl:n.cacheControl}))}let s=aP?(0,h.getRequestMeta)(a,"onCacheEntryV2")??(0,h.getRequestMeta)(a,"onCacheEntry"):(0,h.getRequestMeta)(a,"onCacheEntry");if(s){let b=(0,h.getRequestMeta)(a,"initURL")??a.url,c=b?(null==(l=(0,F.parseUrl)(b))?void 0:l.pathname)??b:void 0;if(await s(n,{url:c}))return null}if(p.headers){let a={...p.headers};for(let[c,d]of(V&&aO||delete a[y.NEXT_CACHE_TAGS_HEADER],Object.entries(a)))if(void 0!==d)if(Array.isArray(d))for(let a of d)b.appendHeader(c,a);else"number"==typeof d&&(d=d.toString()),b.appendHeader(c,d)}let u=null==(g=p.headers)?void 0:g[y.NEXT_CACHE_TAGS_HEADER];if(V&&aO&&u&&"string"==typeof u&&b.setHeader(y.NEXT_CACHE_TAGS_HEADER,u),!p.status||az&&aF||(b.statusCode=p.status),!V&&p.status&&H.RedirectStatusCode[p.status]&&az&&(b.statusCode=200),o&&!aL&&b.setHeader(t.NEXT_DID_POSTPONE_HEADER,"1"),az&&!ah){if(void 0===p.rscData){if(p.html.contentType!==t.RSC_CONTENT_TYPE_HEADER)if(al.cacheComponents)return b.statusCode=404,(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:x.default.EMPTY,cacheControl:n.cacheControl});else throw Object.defineProperty(new I.InvariantError(`Expected RSC response, got ${p.html.contentType}`),"__NEXT_ERROR_CODE",{value:"E789",enumerable:!1,configurable:!0});return(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:p.html,cacheControl:n.cacheControl})}return(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:x.default.fromStatic(p.rscData,t.RSC_CONTENT_TYPE_HEADER),cacheControl:n.cacheControl})}let w=p.html;if(aE&&aG){let c=!0===P.isDev?crypto.randomUUID():null;return w.pipeThrough(await (0,A.createInstantTestScriptInsertionTransformStream)(c)),(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:w,cacheControl:{revalidate:0,expire:void 0}})}if(!o||V||az)return(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:w,cacheControl:n.cacheControl});if(aG||aH)return w.push(new ReadableStream({start(a){a.enqueue(z.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:w,cacheControl:{revalidate:0,expire:void 0}});let C=new TransformStream;return w.push(C.readable),q({span:c,postponed:p.postponed,fallbackRouteParams:null,forceStaticRender:!1}).then(async a=>{var b,c;if(!a)throw Object.defineProperty(Error("Invariant: expected a result to be returned"),"__NEXT_ERROR_CODE",{value:"E463",enumerable:!1,configurable:!0});if((null==(b=a.value)?void 0:b.kind)!==v.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant: expected a page response, got ${null==(c=a.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E305",enumerable:!1,configurable:!0});await a.value.html.pipeTo(C.writable)}).catch(a=>{C.writable.abort(a).catch(a=>{console.error("couldn't abort transformer",a)})}),(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:w,cacheControl:{revalidate:0,expire:void 0}})};if(!a$||!aZ)return k=aY.getActiveScopeSpan(),await aY.withPropagatedContext(a.headers,()=>aY.trace(i.BaseServerSpan.handleRequest,{spanName:`${aX} ${W}`,kind:g.SpanKind.SERVER,attributes:{"http.method":aX,"http.target":a.url}},s),void 0,!a$);await s(aZ)}catch(b){throw b instanceof C.NoFallbackError||await P.onRequestError(a,b,{routerKind:"App Router",routePath:W,routeType:"render",revalidateReason:(0,f.c)({isStaticGeneration:aO,isOnDemandRevalidate:ar})},!1,ak),b}}},51091:(a,b,c)=>{Promise.resolve().then(c.bind(c,79286))},55511:a=>{"use strict";a.exports=require("crypto")},55591:a=>{"use strict";a.exports=require("https")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},70722:a=>{"use strict";a.exports=require("next/dist/shared/lib/invariant-error")},73024:a=>{"use strict";a.exports=require("node:fs")},73180:(a,b,c)=>{"use strict";c.d(b,{default:()=>k});var d=c(48249),e=c(67484),f=c(50412);function g(){return globalThis.crypto?.randomUUID?globalThis.crypto.randomUUID():`chat_${Date.now()}_${Math.random().toString(16).slice(2)}`}function h(a){if("string"==typeof a)return a;if(null==a)return"";if(Array.isArray(a))return a.map(h).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 i(a=""){let b=h(a).replace(/\s+/g," ").trim();return b?b.length>52?`${b.slice(0,52).trimEnd()}…`:b:"New chat"}async function j(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 k(){let[a,b]=(0,e.useState)([]),[c,k]=(0,e.useState)(!0),[l,m]=(0,e.useState)(""),[n,o]=(0,e.useState)(()=>[]),[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)(!1),[B,C]=(0,e.useState)(""),[D,E]=(0,e.useState)(""),[F,G]=(0,e.useState)(!1),[H,I]=(0,e.useState)(!1),[J,K]=(0,e.useState)(!1),L=(0,e.useRef)(null),M=(0,e.useRef)(null);(0,e.useRef)(!1);let N=(0,e.useRef)(null),O=(0,e.useRef)(null),P=(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]),Q=(0,e.useMemo)(()=>a.find(a=>a.providerId===r)||a[0]||null,[a,r]),R=(0,e.useMemo)(()=>{if(t&&P.has(t))return P.get(t);if(p){let a=n.find(a=>a.id===p);if(a?.modelId&&P.has(a.modelId))return P.get(a.modelId)}return Q?.models?.[0]||null},[t,P,Q,n,p]),S=(0,e.useMemo)(()=>n.find(a=>a.id===p)||null,[n,p]),T=S?.messages||[],U=(0,e.useMemo)(()=>[...n].sort((a,b)=>new Date(b.updatedAt).getTime()-new Date(a.updatedAt).getTime()),[n]),V=!z&&!!R&&(v.trim().length>0||x.length>0),W=(a,b)=>{o(c=>c.map(c=>c.id===a?b({...c,messages:Array.isArray(c.messages)?c.messages.map(a=>({...a})):[]}):c))},X=a=>a?{id:g(),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,Y=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:g(),name:a.name,type:a.type,size:a.size,dataUrl:await j(a)})));y(a=>[...a,...d]),a.target.value=""},Z=async()=>{let a=R||Q?.models?.[0]||null;if(!a)return;let b=v.trim();if(!b&&0===x.length)return;let c=p,d=n.find(a=>a.id===c);if(!d){if(!(d=X(a)))return;c=d.id,o(a=>[d,...a]),q(c)}let e={id:g(),role:"user",content:b,attachments:x.map(a=>({id:a.id,name:a.name,type:a.type,dataUrl:a.dataUrl})),createdAt:new Date().toISOString()},f=g(),j={id:f,role:"assistant",content:"",createdAt:new Date().toISOString(),status:"streaming"},k=[...d.messages||[],e,j];o(d=>d.map(d=>d.id===c?{...d,providerId:a.providerId,providerName:a.providerName,modelId:a.id,modelName:a.name,messages:k,updatedAt:new Date().toISOString(),title:"New chat"===d.title?i(b):d.title}:d)),w(""),y([]),A(!0),C(f),E(""),M.current?.abort(),M.current=new AbortController;let l=k.filter(a=>"assistant"!==a.role||a.id!==f).map(a=>({role:a.role,content:"user"===a.role?function(a){let b=h(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}));try{var r;let d,e=await fetch("/api/dashboard/chat/completions",{method:"POST",headers:{"Content-Type":"application/json",Accept:"text/event-stream"},body:JSON.stringify({model:a.requestModel||a.id,messages:l,stream:!0}),signal:M.current.signal});if(!e.ok){let a=await e.json().catch(()=>({}));throw Error(h(a.error||a.message||`Request failed (${e.status})`))}let g=e.body?.getReader();if(!g){let a=await e.json().catch(()=>({})),b=h(a?.choices?.[0]?.message?.content||a?.output_text||a?.error||a?.message||"");W(c,a=>({...a,messages:a.messages.map(a=>a.id===f?{...a,content:b,status:"done"}:a),updatedAt:new Date().toISOString()}));return}let j=new TextDecoder,k="",m="";for(;;){let{value:a,done:b}=await g.read();if(b)break;let d=(k+=j.decode(a,{stream:!0})).split(/\r?\n/);for(let a of(k=d.pop()||"",d)){let b=a.trim();if(!b.startsWith("data:"))continue;let d=b.slice(5).trim();if(d&&"[DONE]"!==d)try{let a=JSON.parse(d),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(h).filter(Boolean)[0]||""}(a);if(!b)continue;m+=b,E(m),W(c,a=>({...a,messages:a.messages.map(a=>a.id===f?{...a,content:m,status:"streaming"}:a),updatedAt:new Date().toISOString()}))}catch{}}}W(c,a=>({...a,messages:a.messages.map(a=>a.id===f?{...a,content:m||a.content,status:"done"}:a),updatedAt:new Date().toISOString()})),r=c,d=i(b),W(r,a=>({...a,title:"New chat"===a.title?d:a.title,updatedAt:new Date().toISOString()}))}catch(a){if("AbortError"!==a.name){let b=h(a?.message||a);W(c,a=>({...a,messages:a.messages.map(a=>a.id===f?{...a,content:a.content||`Error: ${b}`,status:"error"}:a),updatedAt:new Date().toISOString()})),m(b||"Failed to send message.")}}finally{A(!1),C(""),E(""),M.current=null}},$=R?`${R.name}`:"Select model",_=R?R.requestModel:"Choose from connected providers";return(0,d.jsx)("div",{className:"relative flex-1 flex flex-col h-full min-h-0 min-w-0 bg-[#212121] text-white overflow-hidden",children:(0,d.jsxs)("div",{className:"relative mx-auto flex flex-1 h-full min-h-0 w-full max-w-4xl flex-col",children:[(0,d.jsxs)("div",{className:"flex shrink-0 items-center justify-between gap-3 px-4 py-3 lg:px-6",children:[(0,d.jsxs)("div",{ref:N,className:"relative",children:[(0,d.jsx)("button",{type:"button",onClick:()=>I(a=>!a),className:"flex items-center gap-3 rounded-2xl border border-white/10 bg-white/5 px-4 py-3 text-left transition hover:bg-white/8",children:(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"text-sm font-semibold text-white",children:$}),(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] text-white/70",children:"expand_more"})]}),(0,d.jsx)("p",{className:"truncate text-xs text-white/55",children:_})]})}),H?(0,d.jsxs)("div",{className:"absolute left-0 top-[calc(100%+10px)] z-30 w-[min(520px,calc(100vw-2rem))] overflow-hidden rounded-[20px] border border-white/10 bg-[#262626] shadow-2xl shadow-black/50",children:[(0,d.jsxs)("div",{className:"border-b border-white/10 px-4 py-3",children:[(0,d.jsx)("p",{className:"text-xs uppercase tracking-[0.22em] text-white/45",children:"Models"}),(0,d.jsx)("p",{className:"text-sm text-white/75",children:"Only from connected providers"})]}),(0,d.jsx)("div",{className:"max-h-[60vh] overflow-y-auto p-2 custom-scrollbar",children:a.map(a=>(0,d.jsxs)("div",{className:"mb-2 rounded-[16px] border border-white/10 bg-black/20 p-2",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between px-2 py-2",children:[(0,d.jsx)("p",{className:"text-sm font-semibold text-white",children:a.providerName}),(0,d.jsx)(f.Ex,{size:"sm",variant:"default",children:a.models.length})]}),(0,d.jsx)("div",{className:"grid gap-2 sm:grid-cols-2",children:a.models.map(a=>{let b=a.id===t;return(0,d.jsx)("button",{type:"button",onClick:()=>(a=>{let b=P.get(a);if(!b)return;let c=n.find(a=>a.id===p);if(c&&c.messages.length>0){let a=X(b);if(!a)return;o(b=>[a,...b]),q(a.id)}else if(c)o(a=>a.map(a=>a.id===c.id?{...a,providerId:b.providerId,providerName:b.providerName,modelId:b.id,modelName:b.name}:a)),q(c.id);else{let a=X(b);if(!a)return;o(b=>[a,...b]),q(a.id)}s(b.providerId),u(b.id),I(!1)})(a.id),className:`rounded-[14px] border px-3 py-3 text-left transition ${b?"border-blue-400/40 bg-blue-500/15":"border-white/10 bg-white/5 hover:bg-white/8"}`,children:(0,d.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsx)("p",{className:"truncate text-sm font-medium text-white",children:a.name}),(0,d.jsx)("p",{className:"truncate text-[11px] text-white/45",children:a.requestModel})]}),b?(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] text-blue-300",children:"check_circle"}):null]})},a.id)})})]},a.providerId))})]}):null]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("button",{type:"button",onClick:()=>K(a=>!a),className:"rounded-2xl border border-white/10 bg-white/5 px-4 py-3 text-sm text-white/80 transition hover:bg-white/8",children:"History"}),(0,d.jsx)(f.$n,{variant:"ghost",size:"sm",icon:"delete",onClick:()=>{if(!p)return;let a=n.filter(a=>a.id!==p),b=a[0]||null;o(a),b?(q(b.id),s(b.providerId),u(b.modelId)):(q(""),s(""),u(""))},disabled:!p||0===n.length,children:"Clear"})]})]}),J?(0,d.jsxs)("div",{ref:O,className:"absolute right-4 top-[72px] z-20 w-[min(360px,calc(100vw-2rem))] rounded-[20px] border border-white/10 bg-[#262626] p-2 shadow-2xl shadow-black/50 lg:right-6",children:[(0,d.jsx)("div",{className:"px-3 py-2",children:(0,d.jsx)("p",{className:"text-xs uppercase tracking-[0.22em] text-white/45",children:"Recent chats"})}),(0,d.jsx)("div",{className:"max-h-[48vh] space-y-2 overflow-y-auto p-1 custom-scrollbar",children:0===U.length?(0,d.jsx)("div",{className:"rounded-[16px] border border-dashed border-white/10 bg-white/5 p-4 text-sm text-white/55",children:"No conversations yet."}):U.map(a=>{let b=a.id===p,c=[...a.messages||[]].reverse().find(a=>"user"===a.role)||a.messages?.[0];return(0,d.jsx)("button",{type:"button",onClick:()=>{var b;let c;return b=a.id,void((c=n.find(a=>a.id===b))&&(q(b),s(c.providerId||r),u(c.modelId||t),K(!1)))},className:`w-full rounded-[16px] border px-3 py-3 text-left transition ${b?"border-blue-400/40 bg-blue-500/15":"border-white/10 bg-white/5 hover:bg-white/8"}`,children:(0,d.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsx)("p",{className:"truncate text-sm font-medium text-white",children:a.title}),(0,d.jsx)("p",{className:"mt-1 truncate text-xs text-white/50",children:h(c?.content)||"Empty chat"})]}),(0,d.jsx)("span",{className:"text-[10px] text-white/40 shrink-0",children: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)})})]}):null,l?(0,d.jsx)("div",{className:"mt-4 rounded-[18px] border border-rose-500/20 bg-rose-500/10 px-4 py-3 text-rose-100",children:(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"error"}),(0,d.jsx)("p",{className:"text-sm leading-6",children:l})]})}):null,(0,d.jsxs)("div",{className:"flex flex-1 flex-col min-h-0",children:[(0,d.jsxs)("div",{className:"flex-1 overflow-y-auto py-4 custom-scrollbar",children:[0===T.length?(0,d.jsx)("div",{className:"flex min-h-[50vh] items-center justify-center px-4 text-center",children:(0,d.jsxs)("div",{className:"max-w-xl space-y-4",children:[(0,d.jsx)("div",{className:"mx-auto flex size-16 items-center justify-center rounded-[20px] border border-white/10 bg-white/5 text-white/80",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[30px]",children:"chat"})}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)("h2",{className:"text-2xl font-semibold text-white",children:"Start a conversation"}),(0,d.jsx)("p",{className:"text-sm leading-6 text-white/60",children:"Simple chat interface to interact with any AI model from connected providers. Select a model and start chatting!"})]})]})}):null,(0,d.jsx)("div",{className:"mx-auto flex w-full max-w-3xl flex-col gap-4 px-4",children:T.map(a=>{let b="user"===a.role,c="assistant"===a.role,e=c&&a.id===B&&"streaming"===a.status,f=h(a.content)||(c?D:"");return(0,d.jsx)("div",{className:`flex w-full ${b?"justify-end":"justify-start"} mb-6`,children:(0,d.jsxs)("div",{className:`max-w-[min(88%,42rem)] ${b?"rounded-3xl bg-[#2f2f2f] px-5 py-3.5 text-white":"text-white/90"}`,children:[(0,d.jsx)("div",{className:"mb-1 flex items-center justify-between gap-3",children:(0,d.jsx)("span",{className:"text-xs font-semibold",children:b?"You":R?.name||"Assistant"})}),a.attachments?.length?(0,d.jsx)("div",{className:"mb-3 grid grid-cols-2 gap-2 sm:grid-cols-3 mt-2",children:a.attachments.map(a=>(0,d.jsx)("a",{href:a.dataUrl,target:"_blank",rel:"noreferrer",className:"overflow-hidden rounded-[18px] border border-white/10 bg-black/20",children:(0,d.jsx)("img",{src:a.dataUrl,alt:a.name,className:"h-28 w-full object-cover"})},a.id))}):null,(0,d.jsxs)("div",{className:"whitespace-pre-wrap break-words text-[15px] leading-7",children:[f,c&&e&&!D?(0,d.jsx)("span",{className:"inline-block animate-pulse",children:"▋"}):null]})]})},a.id)})})]}),(0,d.jsxs)("div",{className:"shrink-0 pt-2",children:[x.length>0?(0,d.jsx)("div",{className:"mx-auto mb-3 flex w-full max-w-3xl flex-wrap gap-2 px-4",children:x.map(a=>(0,d.jsxs)("div",{className:"flex items-center gap-2 rounded-full border border-white/10 bg-white/5 px-3 py-2",children:[(0,d.jsx)("span",{className:"text-xs text-white/80 max-w-[12rem] truncate",children:a.name}),(0,d.jsx)("button",{type:"button",onClick:()=>{var b;return b=a.id,void y(a=>a.filter(a=>a.id!==b))},className:"text-white/55 hover:text-white","aria-label":"Remove attachment",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"close"})})]},a.id))}):null,(0,d.jsx)("div",{className:"mx-auto w-full max-w-3xl px-4 pb-2",children:(0,d.jsxs)("div",{className:"rounded-[26px] bg-[#2f2f2f] px-3 pt-3 pb-2 shadow-[0_0_15px_rgba(0,0,0,0.10)] ring-1 ring-white/5",children:[(0,d.jsx)("textarea",{value:v,onChange:a=>w(a.target.value),onKeyDown:a=>{"Enter"===a.key&&!a.shiftKey&&(a.preventDefault(),V&&Z())},placeholder:"Message AI",rows:1,className:"w-full resize-none bg-transparent px-2 text-[15px] leading-6 text-white outline-none placeholder:text-white/40 custom-scrollbar max-h-[25vh] overflow-y-auto"}),(0,d.jsxs)("div",{className:"mt-2 flex items-center justify-between gap-3",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("button",{type:"button",onClick:()=>L.current?.click(),disabled:!R||c,className:"p-2 text-white/50 hover:text-white transition rounded-full hover:bg-white/5",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"attach_file"})}),(0,d.jsx)("input",{ref:L,type:"file",accept:"image/*",multiple:!0,className:"hidden",onChange:Y}),(0,d.jsx)("span",{className:"text-xs font-medium text-white/30 truncate max-w-[120px]",children:R?R.name:"No model"})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[z?(0,d.jsx)("button",{type:"button",onClick:()=>{M.current?.abort()},className:"p-2 text-white bg-white/10 hover:bg-white/20 transition rounded-full h-8 w-8 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"stop"})}):null,(0,d.jsx)("button",{onClick:Z,disabled:!V,className:`h-8 w-8 rounded-full flex items-center justify-center transition ${V?"bg-white text-black hover:opacity-90":"bg-white/10 text-white/30 cursor-not-allowed"}`,children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"arrow_upward"})})]})]})]})})]}),(0,d.jsx)("p",{className:"mx-auto mt-2 max-w-3xl px-4 pb-4 text-center text-[11px] text-white/30",children:"Model list is filtered from connected providers."})]})]})})}c(91431),c(96919)},74075:a=>{"use strict";a.exports=require("zlib")},76760:a=>{"use strict";a.exports=require("node:path")},77068:a=>{"use strict";a.exports=require("next/dist/shared/lib/size-limit")},77598:a=>{"use strict";a.exports=require("node:crypto")},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 \"C:\\\\Users\\\\QuocTai\\\\Documents\\\\9router\\\\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.")},"C:\\Users\\QuocTai\\Documents\\9router\\src\\app\\(dashboard)\\dashboard\\basic-chat\\BasicChatPageClient.js","default")},79646:a=>{"use strict";a.exports=require("child_process")},79868:a=>{"use strict";a.exports=require("node:sqlite")},81787:a=>{"use strict";a.exports=require("bun:sqlite")},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{"use strict";a.exports=require("better-sqlite3")},88043:(a,b,c)=>{Promise.resolve().then(c.bind(c,73180))},91645:a=>{"use strict";a.exports=require("net")},94735:a=>{"use strict";a.exports=require("events")}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,595,5296,319,3879,2760,7482,4884,5681,4404,5718,9142,412,5236],()=>b(b.s=45955));module.exports=c})();
@@ -1 +1 @@
1
- {"version":1,"files":["../../../../../../node_modules/@swc/helpers/_/_interop_require_default/package.json","../../../../../../node_modules/@swc/helpers/cjs/_interop_require_default.cjs","../../../../../../node_modules/@swc/helpers/package.json","../../../../../../node_modules/better-sqlite3/build/Release/better_sqlite3.node","../../../../../../node_modules/better-sqlite3/lib/database.js","../../../../../../node_modules/better-sqlite3/lib/index.js","../../../../../../node_modules/better-sqlite3/lib/methods/aggregate.js","../../../../../../node_modules/better-sqlite3/lib/methods/backup.js","../../../../../../node_modules/better-sqlite3/lib/methods/function.js","../../../../../../node_modules/better-sqlite3/lib/methods/inspect.js","../../../../../../node_modules/better-sqlite3/lib/methods/pragma.js","../../../../../../node_modules/better-sqlite3/lib/methods/serialize.js","../../../../../../node_modules/better-sqlite3/lib/methods/table.js","../../../../../../node_modules/better-sqlite3/lib/methods/transaction.js","../../../../../../node_modules/better-sqlite3/lib/methods/wrappers.js","../../../../../../node_modules/better-sqlite3/lib/sqlite-error.js","../../../../../../node_modules/better-sqlite3/lib/util.js","../../../../../../node_modules/better-sqlite3/package.json","../../../../../../node_modules/bindings/bindings.js","../../../../../../node_modules/bindings/package.json","../../../../../../node_modules/file-uri-to-path/index.js","../../../../../../node_modules/file-uri-to-path/package.json","../../../../../../node_modules/next/dist/build/adapter/setup-node-env.external.js","../../../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../../../node_modules/next/dist/client/components/hooks-server-context.js","../../../../../../node_modules/next/dist/client/components/static-generation-bailout.js","../../../../../../node_modules/next/dist/client/lib/console.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../../node_modules/next/dist/compiled/bytes/index.js","../../../../../../node_modules/next/dist/compiled/bytes/package.json","../../../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../../../node_modules/next/dist/compiled/source-map/package.json","../../../../../../node_modules/next/dist/compiled/source-map/source-map.js","../../../../../../node_modules/next/dist/compiled/stacktrace-parser/package.json","../../../../../../node_modules/next/dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js","../../../../../../node_modules/next/dist/compiled/ws/index.js","../../../../../../node_modules/next/dist/compiled/ws/package.json","../../../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../../../node_modules/next/dist/lib/constants.js","../../../../../../node_modules/next/dist/lib/framework/boundary-constants.js","../../../../../../node_modules/next/dist/lib/interop-default.js","../../../../../../node_modules/next/dist/lib/is-error.js","../../../../../../node_modules/next/dist/lib/picocolors.js","../../../../../../node_modules/next/dist/lib/scheduler.js","../../../../../../node_modules/next/dist/lib/semver-noop.js","../../../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-rendering.js","../../../../../../node_modules/next/dist/server/app-render/instant-validation/boundary-constants.js","../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../../../node_modules/next/dist/server/app-render/staged-rendering.js","../../../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../../../node_modules/next/dist/server/dev/browser-logs/file-logger.js","../../../../../../node_modules/next/dist/server/dynamic-rendering-utils.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../../../node_modules/next/dist/server/lib/parse-stack.js","../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../../../node_modules/next/dist/server/lib/source-maps.js","../../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../../../node_modules/next/dist/server/node-environment-baseline.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/console-dim.external.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/console-exit.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/console-file.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/date.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/error-inspect.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/io-utils.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/node-crypto.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/random.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/unhandled-rejection.external.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/web-crypto.js","../../../../../../node_modules/next/dist/server/node-environment.js","../../../../../../node_modules/next/dist/server/node-polyfill-crypto.js","../../../../../../node_modules/next/dist/server/patch-error-inspect.js","../../../../../../node_modules/next/dist/server/require-hook.js","../../../../../../node_modules/next/dist/server/response-cache/types.js","../../../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../../../node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js","../../../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../../../node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js","../../../../../../node_modules/next/dist/shared/lib/promise-with-resolvers.js","../../../../../../node_modules/next/dist/shared/lib/router/utils/app-paths.js","../../../../../../node_modules/next/dist/shared/lib/router/utils/get-segment-param.js","../../../../../../node_modules/next/dist/shared/lib/router/utils/html-bots.js","../../../../../../node_modules/next/dist/shared/lib/router/utils/interception-routes.js","../../../../../../node_modules/next/dist/shared/lib/router/utils/is-bot.js","../../../../../../node_modules/next/dist/shared/lib/segment.js","../../../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../../../node_modules/next/dist/shared/lib/size-limit.js","../../../../../../node_modules/next/package.json","../../../../../../node_modules/react/cjs/react.development.js","../../../../../../node_modules/react/cjs/react.production.js","../../../../../../node_modules/react/index.js","../../../../../../node_modules/react/package.json","../../../../../../package.json","../../../../../package.json","../../../../chunks/319.js","../../../../chunks/3593.js","../../../../chunks/3879.js","../../../../chunks/3913.js","../../../../chunks/412.js","../../../../chunks/4404.js","../../../../chunks/4739.js","../../../../chunks/4741.js","../../../../chunks/4884.js","../../../../chunks/5236.js","../../../../chunks/5258.js","../../../../chunks/5296.js","../../../../chunks/5681.js","../../../../chunks/5718.js","../../../../chunks/5748.js","../../../../chunks/595.js","../../../../chunks/6844.js","../../../../chunks/7341.js","../../../../chunks/8520.js","../../../../chunks/9142.js","../../../../webpack-runtime.js","page_client-reference-manifest.js"]}
1
+ {"version":1,"files":["../../../../../../node_modules/@swc/helpers/_/_interop_require_default/package.json","../../../../../../node_modules/@swc/helpers/cjs/_interop_require_default.cjs","../../../../../../node_modules/@swc/helpers/package.json","../../../../../../node_modules/better-sqlite3/build/Release/better_sqlite3.node","../../../../../../node_modules/better-sqlite3/lib/database.js","../../../../../../node_modules/better-sqlite3/lib/index.js","../../../../../../node_modules/better-sqlite3/lib/methods/aggregate.js","../../../../../../node_modules/better-sqlite3/lib/methods/backup.js","../../../../../../node_modules/better-sqlite3/lib/methods/function.js","../../../../../../node_modules/better-sqlite3/lib/methods/inspect.js","../../../../../../node_modules/better-sqlite3/lib/methods/pragma.js","../../../../../../node_modules/better-sqlite3/lib/methods/serialize.js","../../../../../../node_modules/better-sqlite3/lib/methods/table.js","../../../../../../node_modules/better-sqlite3/lib/methods/transaction.js","../../../../../../node_modules/better-sqlite3/lib/methods/wrappers.js","../../../../../../node_modules/better-sqlite3/lib/sqlite-error.js","../../../../../../node_modules/better-sqlite3/lib/util.js","../../../../../../node_modules/better-sqlite3/package.json","../../../../../../node_modules/bindings/bindings.js","../../../../../../node_modules/bindings/package.json","../../../../../../node_modules/file-uri-to-path/index.js","../../../../../../node_modules/file-uri-to-path/package.json","../../../../../../node_modules/next/dist/build/adapter/setup-node-env.external.js","../../../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../../../node_modules/next/dist/client/components/hooks-server-context.js","../../../../../../node_modules/next/dist/client/components/static-generation-bailout.js","../../../../../../node_modules/next/dist/client/lib/console.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../../node_modules/next/dist/compiled/bytes/index.js","../../../../../../node_modules/next/dist/compiled/bytes/package.json","../../../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../../../node_modules/next/dist/compiled/source-map/package.json","../../../../../../node_modules/next/dist/compiled/source-map/source-map.js","../../../../../../node_modules/next/dist/compiled/stacktrace-parser/package.json","../../../../../../node_modules/next/dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js","../../../../../../node_modules/next/dist/compiled/ws/index.js","../../../../../../node_modules/next/dist/compiled/ws/package.json","../../../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../../../node_modules/next/dist/lib/constants.js","../../../../../../node_modules/next/dist/lib/framework/boundary-constants.js","../../../../../../node_modules/next/dist/lib/interop-default.js","../../../../../../node_modules/next/dist/lib/is-error.js","../../../../../../node_modules/next/dist/lib/picocolors.js","../../../../../../node_modules/next/dist/lib/scheduler.js","../../../../../../node_modules/next/dist/lib/semver-noop.js","../../../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-rendering.js","../../../../../../node_modules/next/dist/server/app-render/instant-validation/boundary-constants.js","../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../../../node_modules/next/dist/server/app-render/staged-rendering.js","../../../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../../../node_modules/next/dist/server/dev/browser-logs/file-logger.js","../../../../../../node_modules/next/dist/server/dynamic-rendering-utils.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../../../node_modules/next/dist/server/lib/parse-stack.js","../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../../../node_modules/next/dist/server/lib/source-maps.js","../../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../../../node_modules/next/dist/server/node-environment-baseline.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/console-dim.external.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/console-exit.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/console-file.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/date.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/error-inspect.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/io-utils.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/node-crypto.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/random.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/unhandled-rejection.external.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/web-crypto.js","../../../../../../node_modules/next/dist/server/node-environment.js","../../../../../../node_modules/next/dist/server/node-polyfill-crypto.js","../../../../../../node_modules/next/dist/server/patch-error-inspect.js","../../../../../../node_modules/next/dist/server/require-hook.js","../../../../../../node_modules/next/dist/server/response-cache/types.js","../../../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../../../node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js","../../../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../../../node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js","../../../../../../node_modules/next/dist/shared/lib/promise-with-resolvers.js","../../../../../../node_modules/next/dist/shared/lib/router/utils/app-paths.js","../../../../../../node_modules/next/dist/shared/lib/router/utils/get-segment-param.js","../../../../../../node_modules/next/dist/shared/lib/router/utils/html-bots.js","../../../../../../node_modules/next/dist/shared/lib/router/utils/interception-routes.js","../../../../../../node_modules/next/dist/shared/lib/router/utils/is-bot.js","../../../../../../node_modules/next/dist/shared/lib/segment.js","../../../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../../../node_modules/next/dist/shared/lib/size-limit.js","../../../../../../node_modules/next/package.json","../../../../../../node_modules/react/cjs/react.development.js","../../../../../../node_modules/react/cjs/react.production.js","../../../../../../node_modules/react/index.js","../../../../../../node_modules/react/package.json","../../../../../../package.json","../../../../../package.json","../../../../chunks/2760.js","../../../../chunks/319.js","../../../../chunks/3593.js","../../../../chunks/3879.js","../../../../chunks/412.js","../../../../chunks/4404.js","../../../../chunks/4739.js","../../../../chunks/4741.js","../../../../chunks/4884.js","../../../../chunks/5236.js","../../../../chunks/5258.js","../../../../chunks/5296.js","../../../../chunks/5681.js","../../../../chunks/5718.js","../../../../chunks/5748.js","../../../../chunks/595.js","../../../../chunks/6844.js","../../../../chunks/7341.js","../../../../chunks/7482.js","../../../../chunks/8520.js","../../../../chunks/9142.js","../../../../webpack-runtime.js","page_client-reference-manifest.js"]}