n9router 0.4.50 → 0.4.51

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 (1204) hide show
  1. package/README.md +87 -17
  2. package/app/.next/BUILD_ID +1 -1
  3. package/app/.next/app-path-routes-manifest.json +21 -20
  4. package/app/.next/build-manifest.json +3 -3
  5. package/app/.next/prerender-manifest.json +3 -3
  6. package/app/.next/react-loadable-manifest.json +2 -2
  7. package/app/.next/required-server-files.json +2 -1
  8. package/app/.next/routes-manifest.json +6 -0
  9. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
  10. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +24 -3
  13. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
  16. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  19. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
  22. package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  25. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +10 -10
  28. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -2
  31. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  32. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  33. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +3 -3
  34. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  35. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  36. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
  37. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  38. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  39. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
  40. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  41. package/app/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  42. package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
  43. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  44. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  45. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  46. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  47. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  48. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +7 -5
  49. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  50. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  51. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  52. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  53. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  54. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  55. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  56. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  57. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js +3 -3
  58. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  59. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  60. package/app/.next/server/app/(dashboard)/dashboard/pxpipe/page.js +2 -2
  61. package/app/.next/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  62. package/app/.next/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  63. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js +2 -2
  64. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  65. package/app/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  66. package/app/.next/server/app/(dashboard)/dashboard/skills/page.js +2 -2
  67. package/app/.next/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  68. package/app/.next/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  69. package/app/.next/server/app/(dashboard)/dashboard/token-saver/page.js +2 -2
  70. package/app/.next/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  71. package/app/.next/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  72. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +2 -2
  73. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  74. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  75. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +3 -3
  76. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  77. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  78. package/app/.next/server/app/_global-error/page.js +2 -2
  79. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  80. package/app/.next/server/app/_global-error.html +1 -1
  81. package/app/.next/server/app/_global-error.rsc +1 -1
  82. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  83. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  84. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  85. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  86. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  87. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  88. package/app/.next/server/app/_not-found/page.js +2 -2
  89. package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
  90. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  91. package/app/.next/server/app/_not-found.html +1 -1
  92. package/app/.next/server/app/_not-found.rsc +4 -4
  93. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  94. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  95. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
  96. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  97. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  98. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  99. package/app/.next/server/app/api/antigravity-app/route.js +1 -1
  100. package/app/.next/server/app/api/antigravity-app-v2/route.js +1 -1
  101. package/app/.next/server/app/api/antigravity-ide/route.js +1 -1
  102. package/app/.next/server/app/api/antigravity-targets/route.js +1 -1
  103. package/app/.next/server/app/api/antigravity-tools/import/route.js +1 -1
  104. package/app/.next/server/app/api/antigravity-tools/import/route.js.nft.json +1 -1
  105. package/app/.next/server/app/api/antigravity-tools/import-refresh-tokens/route.js +1 -1
  106. package/app/.next/server/app/api/antigravity-tools/import-refresh-tokens/route.js.nft.json +1 -1
  107. package/app/.next/server/app/api/auth/login/route.js +1 -1
  108. package/app/.next/server/app/api/auth/logout/route.js +1 -1
  109. package/app/.next/server/app/api/auth/oidc/callback/route.js +1 -1
  110. package/app/.next/server/app/api/auth/oidc/start/route.js +1 -1
  111. package/app/.next/server/app/api/auth/oidc/test/route.js +1 -1
  112. package/app/.next/server/app/api/auth/reset-password/route.js +1 -1
  113. package/app/.next/server/app/api/auth/status/route.js +1 -1
  114. package/app/.next/server/app/api/cli-tools/all-statuses/route.js +17 -12
  115. package/app/.next/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  116. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  117. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  118. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  119. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  120. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
  121. package/app/.next/server/app/api/cli-tools/cline-settings/route.js +2 -2
  122. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +1 -1
  123. package/app/.next/server/app/api/cli-tools/copilot-settings/route.js +2 -2
  124. package/app/.next/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
  125. package/app/.next/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
  126. package/app/.next/server/app/api/cli-tools/cowork-settings/route.js +2 -2
  127. package/app/.next/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  128. package/app/.next/server/app/api/cli-tools/cursor-byok/jobs/[jobId]/events/route.js +2 -2
  129. package/app/.next/server/app/api/cli-tools/cursor-byok/jobs/[jobId]/sudo/route.js +1 -1
  130. package/app/.next/server/app/api/cli-tools/cursor-byok/jobs/route.js +1 -1
  131. package/app/.next/server/app/api/cli-tools/cursor-byok/route.js +1 -1
  132. package/app/.next/server/app/api/cli-tools/deepseek-tui-settings/route.js +2 -2
  133. package/app/.next/server/app/api/cli-tools/devin-settings/route.js +2 -0
  134. package/app/.next/server/app/api/cli-tools/devin-settings/route.js.nft.json +1 -0
  135. package/app/.next/server/app/api/cli-tools/devin-settings/route_client-reference-manifest.js +1 -0
  136. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +2 -2
  137. package/app/.next/server/app/api/cli-tools/grok-build-settings/route.js +15 -10
  138. package/app/.next/server/app/api/cli-tools/grok-build-settings/route.js.nft.json +1 -1
  139. package/app/.next/server/app/api/cli-tools/hermes-settings/route.js +2 -2
  140. package/app/.next/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  141. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  142. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  143. package/app/.next/server/app/api/cli-tools/opencode-settings/route.js +1 -1
  144. package/app/.next/server/app/api/combos/[id]/route.js +1 -1
  145. package/app/.next/server/app/api/combos/route.js +1 -1
  146. package/app/.next/server/app/api/donate/route.js +1 -1
  147. package/app/.next/server/app/api/headroom/extras/route.js +1 -1
  148. package/app/.next/server/app/api/headroom/proxy/[...path]/route.js +1 -1
  149. package/app/.next/server/app/api/headroom/restart/route.js +1 -1
  150. package/app/.next/server/app/api/headroom/start/route.js +1 -1
  151. package/app/.next/server/app/api/headroom/status/route.js +1 -1
  152. package/app/.next/server/app/api/headroom/stop/route.js +1 -1
  153. package/app/.next/server/app/api/health/route.js +1 -1
  154. package/app/.next/server/app/api/init/route.js +1 -1
  155. package/app/.next/server/app/api/internal/account-health/route.js +1 -1
  156. package/app/.next/server/app/api/internal/request-detail/route.js +1 -1
  157. package/app/.next/server/app/api/internal/usage/route.js +1 -1
  158. package/app/.next/server/app/api/keys/[id]/reset-usage/route.js +1 -1
  159. package/app/.next/server/app/api/keys/[id]/route.js +1 -1
  160. package/app/.next/server/app/api/keys/[id]/usage/route.js +1 -1
  161. package/app/.next/server/app/api/keys/route.js +1 -1
  162. package/app/.next/server/app/api/locale/route.js +1 -1
  163. package/app/.next/server/app/api/mcp/[plugin]/message/route.js +1 -1
  164. package/app/.next/server/app/api/mcp/[plugin]/sse/route.js +5 -5
  165. package/app/.next/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  166. package/app/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  167. package/app/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  168. package/app/.next/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  169. package/app/.next/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  170. package/app/.next/server/app/api/media-providers/tts/voices/route.js +1 -1
  171. package/app/.next/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  172. package/app/.next/server/app/api/models/alias/route.js +1 -1
  173. package/app/.next/server/app/api/models/availability/route.js +1 -1
  174. package/app/.next/server/app/api/models/custom/route.js +1 -1
  175. package/app/.next/server/app/api/models/disabled/route.js +1 -1
  176. package/app/.next/server/app/api/models/route.js +1 -1
  177. package/app/.next/server/app/api/models/route.js.nft.json +1 -1
  178. package/app/.next/server/app/api/models/test/route.js +1 -1
  179. package/app/.next/server/app/api/models/test/route.js.nft.json +1 -1
  180. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  181. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  182. package/app/.next/server/app/api/oauth/codex/bulk-import/route.js +1 -1
  183. package/app/.next/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
  184. package/app/.next/server/app/api/oauth/codex/import-token/route.js +1 -1
  185. package/app/.next/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  186. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js +2 -2
  187. package/app/.next/server/app/api/oauth/cursor/import/route.js +1 -1
  188. package/app/.next/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  189. package/app/.next/server/app/api/oauth/gitlab/pat/route.js +1 -1
  190. package/app/.next/server/app/api/oauth/iflow/cookie/route.js +1 -1
  191. package/app/.next/server/app/api/oauth/kiro/api-key/route.js +1 -1
  192. package/app/.next/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
  193. package/app/.next/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  194. package/app/.next/server/app/api/oauth/kiro/import/route.js +1 -1
  195. package/app/.next/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  196. package/app/.next/server/app/api/oauth/kiro/import-cli-proxy/route.js +1 -1
  197. package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  198. package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  199. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  200. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  201. package/app/.next/server/app/api/pricing/route.js +1 -1
  202. package/app/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
  203. package/app/.next/server/app/api/provider-nodes/route.js +1 -1
  204. package/app/.next/server/app/api/provider-nodes/route.js.nft.json +1 -1
  205. package/app/.next/server/app/api/provider-nodes/validate/route.js +1 -1
  206. package/app/.next/server/app/api/providers/[id]/models/route.js +1 -1
  207. package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  208. package/app/.next/server/app/api/providers/[id]/route.js +1 -1
  209. package/app/.next/server/app/api/providers/[id]/test/route.js +1 -1
  210. package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  211. package/app/.next/server/app/api/providers/[id]/test-models/route.js +1 -1
  212. package/app/.next/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  213. package/app/.next/server/app/api/providers/client/route.js +1 -1
  214. package/app/.next/server/app/api/providers/client/route.js.nft.json +1 -1
  215. package/app/.next/server/app/api/providers/kilo/free-models/route.js +1 -1
  216. package/app/.next/server/app/api/providers/route.js +1 -1
  217. package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
  218. package/app/.next/server/app/api/providers/suggested-models/route.js +1 -1
  219. package/app/.next/server/app/api/providers/test-batch/route.js +1 -1
  220. package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  221. package/app/.next/server/app/api/providers/validate/route.js +1 -1
  222. package/app/.next/server/app/api/providers/validate/route.js.nft.json +1 -1
  223. package/app/.next/server/app/api/proxy-pools/[id]/route.js +1 -1
  224. package/app/.next/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  225. package/app/.next/server/app/api/proxy-pools/cloudflare-deploy/route.js +2 -2
  226. package/app/.next/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
  227. package/app/.next/server/app/api/proxy-pools/route.js +1 -1
  228. package/app/.next/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
  229. package/app/.next/server/app/api/pxpipe/health/route.js +2 -2
  230. package/app/.next/server/app/api/pxpipe/install/route.js +2 -2
  231. package/app/.next/server/app/api/pxpipe/logs/route.js +2 -2
  232. package/app/.next/server/app/api/pxpipe/restart/route.js +2 -2
  233. package/app/.next/server/app/api/pxpipe/start/route.js +2 -2
  234. package/app/.next/server/app/api/pxpipe/stats/route.js +2 -2
  235. package/app/.next/server/app/api/pxpipe/status/route.js +2 -2
  236. package/app/.next/server/app/api/pxpipe/stop/route.js +2 -2
  237. package/app/.next/server/app/api/settings/database/route.js +1 -1
  238. package/app/.next/server/app/api/settings/database/selective/route.js +1 -1
  239. package/app/.next/server/app/api/settings/proxy-test/route.js +1 -1
  240. package/app/.next/server/app/api/settings/require-login/route.js +1 -1
  241. package/app/.next/server/app/api/settings/route.js +1 -1
  242. package/app/.next/server/app/api/settings/route.js.nft.json +1 -1
  243. package/app/.next/server/app/api/shutdown/route.js +1 -1
  244. package/app/.next/server/app/api/tags/route.js +1 -1
  245. package/app/.next/server/app/api/translator/console-logs/route.js +1 -1
  246. package/app/.next/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  247. package/app/.next/server/app/api/translator/console-logs/stream/route.js +2 -2
  248. package/app/.next/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  249. package/app/.next/server/app/api/translator/load/route.js +1 -1
  250. package/app/.next/server/app/api/translator/save/route.js +1 -1
  251. package/app/.next/server/app/api/translator/send/route.js +1 -1
  252. package/app/.next/server/app/api/translator/send/route.js.nft.json +1 -1
  253. package/app/.next/server/app/api/translator/translate/route.js +1 -1
  254. package/app/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
  255. package/app/.next/server/app/api/tunnel/disable/route.js +1 -1
  256. package/app/.next/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  257. package/app/.next/server/app/api/tunnel/enable/route.js +1 -1
  258. package/app/.next/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  259. package/app/.next/server/app/api/tunnel/status/route.js +1 -1
  260. package/app/.next/server/app/api/tunnel/status/route.js.nft.json +1 -1
  261. package/app/.next/server/app/api/tunnel/tailscale-check/route.js +1 -1
  262. package/app/.next/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  263. package/app/.next/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  264. package/app/.next/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  265. package/app/.next/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  266. package/app/.next/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  267. package/app/.next/server/app/api/tunnel/tailscale-install/route.js +3 -3
  268. package/app/.next/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  269. package/app/.next/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
  270. package/app/.next/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
  271. package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
  272. package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  273. package/app/.next/server/app/api/usage/chart/route.js +1 -1
  274. package/app/.next/server/app/api/usage/history/route.js +1 -1
  275. package/app/.next/server/app/api/usage/logs/route.js +1 -1
  276. package/app/.next/server/app/api/usage/providers/route.js +1 -1
  277. package/app/.next/server/app/api/usage/providers/route.js.nft.json +1 -1
  278. package/app/.next/server/app/api/usage/report/route.js +1 -1
  279. package/app/.next/server/app/api/usage/request-details/route.js +1 -1
  280. package/app/.next/server/app/api/usage/request-logs/route.js +1 -1
  281. package/app/.next/server/app/api/usage/stats/route.js +1 -1
  282. package/app/.next/server/app/api/usage/stream/route.js +2 -2
  283. package/app/.next/server/app/api/v1/api/chat/route.js +1 -1
  284. package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  285. package/app/.next/server/app/api/v1/audio/speech/route.js +1 -1
  286. package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  287. package/app/.next/server/app/api/v1/audio/transcriptions/route.js +1 -1
  288. package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  289. package/app/.next/server/app/api/v1/audio/voices/route.js +1 -1
  290. package/app/.next/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  291. package/app/.next/server/app/api/v1/chat/completions/route.js +1 -1
  292. package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  293. package/app/.next/server/app/api/v1/embeddings/route.js +1 -1
  294. package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  295. package/app/.next/server/app/api/v1/images/generations/route.js +2 -2
  296. package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  297. package/app/.next/server/app/api/v1/messages/count_tokens/route.js +1 -1
  298. package/app/.next/server/app/api/v1/messages/route.js +1 -1
  299. package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
  300. package/app/.next/server/app/api/v1/models/[kind]/route.js +1 -1
  301. package/app/.next/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  302. package/app/.next/server/app/api/v1/models/info/route.js +1 -1
  303. package/app/.next/server/app/api/v1/models/info/route.js.nft.json +1 -1
  304. package/app/.next/server/app/api/v1/models/route.js +1 -1
  305. package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
  306. package/app/.next/server/app/api/v1/responses/compact/route.js +1 -1
  307. package/app/.next/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  308. package/app/.next/server/app/api/v1/responses/route.js +1 -1
  309. package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
  310. package/app/.next/server/app/api/v1/route.js +1 -1
  311. package/app/.next/server/app/api/v1/route.js.nft.json +1 -1
  312. package/app/.next/server/app/api/v1/search/route.js +1 -1
  313. package/app/.next/server/app/api/v1/search/route.js.nft.json +1 -1
  314. package/app/.next/server/app/api/v1/videos/[id]/route.js +1 -1
  315. package/app/.next/server/app/api/v1/videos/[id]/route.js.nft.json +1 -1
  316. package/app/.next/server/app/api/v1/videos/edits/route.js +1 -1
  317. package/app/.next/server/app/api/v1/videos/edits/route.js.nft.json +1 -1
  318. package/app/.next/server/app/api/v1/videos/extensions/route.js +1 -1
  319. package/app/.next/server/app/api/v1/videos/extensions/route.js.nft.json +1 -1
  320. package/app/.next/server/app/api/v1/videos/generations/route.js +1 -1
  321. package/app/.next/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
  322. package/app/.next/server/app/api/v1/web/fetch/route.js +1 -1
  323. package/app/.next/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  324. package/app/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
  325. package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  326. package/app/.next/server/app/api/v1beta/models/route.js +1 -1
  327. package/app/.next/server/app/api/v1beta/models/route.js.nft.json +1 -1
  328. package/app/.next/server/app/api/version/route.js +1 -1
  329. package/app/.next/server/app/api/version/shutdown/route.js +1 -1
  330. package/app/.next/server/app/api/version/shutdown/route.js.nft.json +1 -1
  331. package/app/.next/server/app/api/version/update/route.js +1 -1
  332. package/app/.next/server/app/api/version/update/route.js.nft.json +1 -1
  333. package/app/.next/server/app/callback/page.js +2 -2
  334. package/app/.next/server/app/callback/page.js.nft.json +1 -1
  335. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  336. package/app/.next/server/app/callback.html +1 -1
  337. package/app/.next/server/app/callback.rsc +4 -4
  338. package/app/.next/server/app/callback.segments/_full.segment.rsc +4 -4
  339. package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
  340. package/app/.next/server/app/callback.segments/_index.segment.rsc +4 -4
  341. package/app/.next/server/app/callback.segments/_tree.segment.rsc +2 -2
  342. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  343. package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
  344. package/app/.next/server/app/dashboard/basic-chat.html +1 -1
  345. package/app/.next/server/app/dashboard/basic-chat.rsc +6 -6
  346. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  347. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  348. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  349. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  350. package/app/.next/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
  351. package/app/.next/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  352. package/app/.next/server/app/dashboard/basic-chat.segments/_index.segment.rsc +4 -4
  353. package/app/.next/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
  354. package/app/.next/server/app/dashboard/cli-tools.html +1 -1
  355. package/app/.next/server/app/dashboard/cli-tools.rsc +6 -6
  356. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  357. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  358. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  359. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  360. package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
  361. package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  362. package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
  363. package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  364. package/app/.next/server/app/dashboard/combos.html +1 -1
  365. package/app/.next/server/app/dashboard/combos.rsc +6 -6
  366. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  367. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  368. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  369. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  370. package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
  371. package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  372. package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
  373. package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  374. package/app/.next/server/app/dashboard/endpoint.html +1 -1
  375. package/app/.next/server/app/dashboard/endpoint.rsc +6 -6
  376. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  377. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  378. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  379. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  380. package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
  381. package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  382. package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
  383. package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  384. package/app/.next/server/app/dashboard/media-providers/web.html +1 -1
  385. package/app/.next/server/app/dashboard/media-providers/web.rsc +6 -6
  386. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  387. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  388. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  389. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  390. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  391. package/app/.next/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +6 -6
  392. package/app/.next/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  393. package/app/.next/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +4 -4
  394. package/app/.next/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
  395. package/app/.next/server/app/dashboard/mitm.html +1 -1
  396. package/app/.next/server/app/dashboard/mitm.rsc +6 -6
  397. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  398. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  399. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  400. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  401. package/app/.next/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
  402. package/app/.next/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  403. package/app/.next/server/app/dashboard/mitm.segments/_index.segment.rsc +4 -4
  404. package/app/.next/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  405. package/app/.next/server/app/dashboard/profile.html +1 -1
  406. package/app/.next/server/app/dashboard/profile.rsc +6 -6
  407. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  408. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  409. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  410. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  411. package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
  412. package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  413. package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
  414. package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  415. package/app/.next/server/app/dashboard/providers/new.html +1 -1
  416. package/app/.next/server/app/dashboard/providers/new.rsc +6 -6
  417. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  418. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  419. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  420. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  421. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  422. package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
  423. package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  424. package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
  425. package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  426. package/app/.next/server/app/dashboard/providers.html +1 -1
  427. package/app/.next/server/app/dashboard/providers.rsc +6 -6
  428. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  429. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  430. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  431. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  432. package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
  433. package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  434. package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
  435. package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  436. package/app/.next/server/app/dashboard/proxy-pools.html +1 -1
  437. package/app/.next/server/app/dashboard/proxy-pools.rsc +6 -6
  438. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  439. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  440. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  441. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  442. package/app/.next/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
  443. package/app/.next/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  444. package/app/.next/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +4 -4
  445. package/app/.next/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  446. package/app/.next/server/app/dashboard/pxpipe.html +1 -1
  447. package/app/.next/server/app/dashboard/pxpipe.rsc +6 -6
  448. package/app/.next/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
  449. package/app/.next/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
  450. package/app/.next/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  451. package/app/.next/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  452. package/app/.next/server/app/dashboard/pxpipe.segments/_full.segment.rsc +6 -6
  453. package/app/.next/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
  454. package/app/.next/server/app/dashboard/pxpipe.segments/_index.segment.rsc +4 -4
  455. package/app/.next/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +2 -2
  456. package/app/.next/server/app/dashboard/quota.html +2 -2
  457. package/app/.next/server/app/dashboard/quota.rsc +7 -7
  458. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  459. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  460. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  461. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  462. package/app/.next/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
  463. package/app/.next/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  464. package/app/.next/server/app/dashboard/quota.segments/_index.segment.rsc +4 -4
  465. package/app/.next/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  466. package/app/.next/server/app/dashboard/settings/pricing/page.js +2 -2
  467. package/app/.next/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  468. package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  469. package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
  470. package/app/.next/server/app/dashboard/settings/pricing.rsc +5 -5
  471. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +5 -5
  472. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  473. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
  474. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  475. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +2 -2
  476. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  477. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  478. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  479. package/app/.next/server/app/dashboard/skills.html +1 -1
  480. package/app/.next/server/app/dashboard/skills.rsc +6 -6
  481. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  482. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  483. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  484. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  485. package/app/.next/server/app/dashboard/skills.segments/_full.segment.rsc +6 -6
  486. package/app/.next/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  487. package/app/.next/server/app/dashboard/skills.segments/_index.segment.rsc +4 -4
  488. package/app/.next/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
  489. package/app/.next/server/app/dashboard/token-saver.html +1 -1
  490. package/app/.next/server/app/dashboard/token-saver.rsc +6 -6
  491. package/app/.next/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
  492. package/app/.next/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  493. package/app/.next/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  494. package/app/.next/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  495. package/app/.next/server/app/dashboard/token-saver.segments/_full.segment.rsc +6 -6
  496. package/app/.next/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  497. package/app/.next/server/app/dashboard/token-saver.segments/_index.segment.rsc +4 -4
  498. package/app/.next/server/app/dashboard/token-saver.segments/_tree.segment.rsc +2 -2
  499. package/app/.next/server/app/dashboard/translator.html +1 -1
  500. package/app/.next/server/app/dashboard/translator.rsc +6 -6
  501. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  502. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  503. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  504. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  505. package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
  506. package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  507. package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
  508. package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  509. package/app/.next/server/app/dashboard/usage.html +1 -1
  510. package/app/.next/server/app/dashboard/usage.rsc +6 -6
  511. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  512. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  513. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  514. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  515. package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
  516. package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  517. package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
  518. package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  519. package/app/.next/server/app/dashboard.html +1 -1
  520. package/app/.next/server/app/dashboard.rsc +6 -6
  521. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  522. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  523. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  524. package/app/.next/server/app/dashboard.segments/_full.segment.rsc +6 -6
  525. package/app/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
  526. package/app/.next/server/app/dashboard.segments/_index.segment.rsc +4 -4
  527. package/app/.next/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  528. package/app/.next/server/app/favicon.ico/route.js +1 -1
  529. package/app/.next/server/app/index.html +1 -1
  530. package/app/.next/server/app/index.rsc +4 -4
  531. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  532. package/app/.next/server/app/index.segments/_full.segment.rsc +4 -4
  533. package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
  534. package/app/.next/server/app/index.segments/_index.segment.rsc +4 -4
  535. package/app/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  536. package/app/.next/server/app/landing/page.js +2 -2
  537. package/app/.next/server/app/landing/page.js.nft.json +1 -1
  538. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  539. package/app/.next/server/app/landing.html +1 -1
  540. package/app/.next/server/app/landing.rsc +5 -5
  541. package/app/.next/server/app/landing.segments/_full.segment.rsc +5 -5
  542. package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
  543. package/app/.next/server/app/landing.segments/_index.segment.rsc +4 -4
  544. package/app/.next/server/app/landing.segments/_tree.segment.rsc +2 -2
  545. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +2 -2
  546. package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
  547. package/app/.next/server/app/login/page.js +2 -2
  548. package/app/.next/server/app/login/page.js.nft.json +1 -1
  549. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  550. package/app/.next/server/app/login.html +1 -1
  551. package/app/.next/server/app/login.rsc +5 -5
  552. package/app/.next/server/app/login.segments/_full.segment.rsc +5 -5
  553. package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
  554. package/app/.next/server/app/login.segments/_index.segment.rsc +4 -4
  555. package/app/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  556. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  557. package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
  558. package/app/.next/server/app/manifest.webmanifest/route.js +2 -2
  559. package/app/.next/server/app/page.js +2 -2
  560. package/app/.next/server/app/page.js.nft.json +1 -1
  561. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  562. package/app/.next/server/app-paths-manifest.json +21 -20
  563. package/app/.next/server/chunks/112.js +3 -0
  564. package/app/.next/server/chunks/1470.js +1 -0
  565. package/app/.next/server/chunks/2051.js +1 -0
  566. package/app/.next/server/chunks/2251.js +1 -1
  567. package/app/.next/server/chunks/318.js +75 -7
  568. package/app/.next/server/chunks/3225.js +10 -0
  569. package/app/.next/server/chunks/3481.js +1 -1
  570. package/app/.next/server/chunks/3535.js +1 -1
  571. package/app/.next/server/chunks/365.js +1 -0
  572. package/app/.next/server/chunks/3913.js +1 -0
  573. package/app/.next/server/chunks/3943.js +1 -1
  574. package/app/.next/server/chunks/3962.js +1 -1
  575. package/app/.next/server/chunks/4037.js +1 -0
  576. package/app/.next/server/chunks/412.js +5 -5
  577. package/app/.next/server/chunks/4123.js +7 -0
  578. package/app/.next/server/chunks/4125.js +1 -0
  579. package/app/.next/server/chunks/4443.js +1 -0
  580. package/app/.next/server/chunks/4676.js +1 -1
  581. package/app/.next/server/chunks/4705.js +1 -0
  582. package/app/.next/server/chunks/4963.js +1 -0
  583. package/app/.next/server/chunks/4975.js +1 -0
  584. package/app/.next/server/chunks/4989.js +1 -1
  585. package/app/.next/server/chunks/5612.js +1 -1
  586. package/app/.next/server/chunks/5615.js +3 -3
  587. package/app/.next/server/chunks/5619.js +1 -0
  588. package/app/.next/server/chunks/5699.js +1 -1
  589. package/app/.next/server/chunks/6070.js +1 -1
  590. package/app/.next/server/chunks/615.js +1 -1
  591. package/app/.next/server/chunks/63.js +3 -3
  592. package/app/.next/server/chunks/6306.js +1 -1
  593. package/app/.next/server/chunks/6457.js +1 -1
  594. package/app/.next/server/chunks/6671.js +1 -0
  595. package/app/.next/server/chunks/6763.js +1 -1
  596. package/app/.next/server/chunks/6777.js +1 -1
  597. package/app/.next/server/chunks/{1133.js → 6818.js} +1 -1
  598. package/app/.next/server/chunks/6877.js +1 -0
  599. package/app/.next/server/chunks/7137.js +1 -1
  600. package/app/.next/server/chunks/7211.js +1 -0
  601. package/app/.next/server/chunks/7828.js +1 -1
  602. package/app/.next/server/chunks/7994.js +1 -1
  603. package/app/.next/server/chunks/8145.js +1 -1
  604. package/app/.next/server/chunks/8301.js +91 -0
  605. package/app/.next/server/chunks/8499.js +71 -0
  606. package/app/.next/server/chunks/869.js +1 -0
  607. package/app/.next/server/chunks/8845.js +1 -0
  608. package/app/.next/server/chunks/8895.js +11 -11
  609. package/app/.next/server/chunks/8910.js +1 -1
  610. package/app/.next/server/chunks/8920.js +1 -1
  611. package/app/.next/server/instrumentation.js +1 -0
  612. package/app/.next/server/middleware-build-manifest.js +1 -1
  613. package/app/.next/server/middleware-react-loadable-manifest.js +1 -1
  614. package/app/.next/server/pages/404.html +1 -1
  615. package/app/.next/server/pages/500.html +1 -1
  616. package/app/.next/server/server-reference-manifest.js +1 -1
  617. package/app/.next/server/server-reference-manifest.json +1 -1
  618. package/app/.next/static/chunks/1321-fbaaa3c33f83ea85.js +1 -0
  619. package/app/.next/static/chunks/1a258343.e25ce4decd2c9ea4.js +1 -0
  620. package/app/.next/static/chunks/3521.a9e2daf685420cc7.js +1 -0
  621. package/app/.next/static/chunks/4028-33d2ebbce3016284.js +91 -0
  622. package/app/.next/static/chunks/5497-dd7adaddb5a1e51d.js +7 -0
  623. package/app/.next/static/chunks/705-10f93cd2550e6494.js +1 -0
  624. package/app/.next/static/chunks/{8198-e290466e54954f7b.js → 8198-b19a16e6810e84a2.js} +1 -1
  625. package/app/.next/static/chunks/app/(dashboard)/dashboard/basic-chat/{page-7fa7d21642523ca3.js → page-0fd819f7f5548f88.js} +1 -1
  626. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/page-ddcb29448c366123.js +1 -0
  627. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-bc35ad34049d7ff5.js +1 -0
  628. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/page-d6943540c8897df0.js +1 -0
  629. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/{page-818b1bc14711e0a7.js → page-308fc8a3b8a069fe.js} +10 -10
  630. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/page-81c185a6977c1eb4.js +4 -0
  631. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-2eaaf5721c2e8376.js +14 -0
  632. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-d6c97bcabadb38ca.js +1 -0
  633. package/app/.next/static/chunks/app/(dashboard)/dashboard/quota/page-6916d780a2d54b89.js +1 -0
  634. package/app/.next/static/chunks/app/_global-error/page-c74ff3c527010d28.js +1 -0
  635. package/app/.next/static/chunks/app/api/antigravity-app/route-c74ff3c527010d28.js +1 -0
  636. package/app/.next/static/chunks/app/api/antigravity-app-v2/route-c74ff3c527010d28.js +1 -0
  637. package/app/.next/static/chunks/app/api/antigravity-ide/route-c74ff3c527010d28.js +1 -0
  638. package/app/.next/static/chunks/app/api/antigravity-targets/route-c74ff3c527010d28.js +1 -0
  639. package/app/.next/static/chunks/app/api/antigravity-tools/import/route-c74ff3c527010d28.js +1 -0
  640. package/app/.next/static/chunks/app/api/antigravity-tools/import-refresh-tokens/route-c74ff3c527010d28.js +1 -0
  641. package/app/.next/static/chunks/app/api/auth/login/route-c74ff3c527010d28.js +1 -0
  642. package/app/.next/static/chunks/app/api/auth/logout/route-c74ff3c527010d28.js +1 -0
  643. package/app/.next/static/chunks/app/api/auth/oidc/callback/route-c74ff3c527010d28.js +1 -0
  644. package/app/.next/static/chunks/app/api/auth/oidc/start/route-c74ff3c527010d28.js +1 -0
  645. package/app/.next/static/chunks/app/api/auth/oidc/test/route-c74ff3c527010d28.js +1 -0
  646. package/app/.next/static/chunks/app/api/auth/reset-password/route-c74ff3c527010d28.js +1 -0
  647. package/app/.next/static/chunks/app/api/auth/status/route-c74ff3c527010d28.js +1 -0
  648. package/app/.next/static/chunks/app/api/cli-tools/all-statuses/route-c74ff3c527010d28.js +1 -0
  649. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-c74ff3c527010d28.js +1 -0
  650. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-c74ff3c527010d28.js +1 -0
  651. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-c74ff3c527010d28.js +1 -0
  652. package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-c74ff3c527010d28.js +1 -0
  653. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-c74ff3c527010d28.js +1 -0
  654. package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-c74ff3c527010d28.js +1 -0
  655. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-c74ff3c527010d28.js +1 -0
  656. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-c74ff3c527010d28.js +1 -0
  657. package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-c74ff3c527010d28.js +1 -0
  658. package/app/.next/static/chunks/app/api/cli-tools/cursor-byok/jobs/[jobId]/events/route-c74ff3c527010d28.js +1 -0
  659. package/app/.next/static/chunks/app/api/cli-tools/cursor-byok/jobs/[jobId]/sudo/route-c74ff3c527010d28.js +1 -0
  660. package/app/.next/static/chunks/app/api/cli-tools/cursor-byok/jobs/route-c74ff3c527010d28.js +1 -0
  661. package/app/.next/static/chunks/app/api/cli-tools/cursor-byok/route-c74ff3c527010d28.js +1 -0
  662. package/app/.next/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-c74ff3c527010d28.js +1 -0
  663. package/app/.next/static/chunks/app/api/cli-tools/devin-settings/route-c74ff3c527010d28.js +1 -0
  664. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-c74ff3c527010d28.js +1 -0
  665. package/app/.next/static/chunks/app/api/cli-tools/grok-build-settings/route-c74ff3c527010d28.js +1 -0
  666. package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-c74ff3c527010d28.js +1 -0
  667. package/app/.next/static/chunks/app/api/cli-tools/jcode-settings/route-c74ff3c527010d28.js +1 -0
  668. package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-c74ff3c527010d28.js +1 -0
  669. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-c74ff3c527010d28.js +1 -0
  670. package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-c74ff3c527010d28.js +1 -0
  671. package/app/.next/static/chunks/app/api/combos/[id]/route-c74ff3c527010d28.js +1 -0
  672. package/app/.next/static/chunks/app/api/combos/route-c74ff3c527010d28.js +1 -0
  673. package/app/.next/static/chunks/app/api/donate/route-c74ff3c527010d28.js +1 -0
  674. package/app/.next/static/chunks/app/api/headroom/extras/route-c74ff3c527010d28.js +1 -0
  675. package/app/.next/static/chunks/app/api/headroom/proxy/[...path]/route-c74ff3c527010d28.js +1 -0
  676. package/app/.next/static/chunks/app/api/headroom/restart/route-c74ff3c527010d28.js +1 -0
  677. package/app/.next/static/chunks/app/api/headroom/start/route-c74ff3c527010d28.js +1 -0
  678. package/app/.next/static/chunks/app/api/headroom/status/route-c74ff3c527010d28.js +1 -0
  679. package/app/.next/static/chunks/app/api/headroom/stop/route-c74ff3c527010d28.js +1 -0
  680. package/app/.next/static/chunks/app/api/health/route-c74ff3c527010d28.js +1 -0
  681. package/app/.next/static/chunks/app/api/init/route-c74ff3c527010d28.js +1 -0
  682. package/app/.next/static/chunks/app/api/internal/account-health/route-c74ff3c527010d28.js +1 -0
  683. package/app/.next/static/chunks/app/api/internal/request-detail/route-c74ff3c527010d28.js +1 -0
  684. package/app/.next/static/chunks/app/api/internal/usage/route-c74ff3c527010d28.js +1 -0
  685. package/app/.next/static/chunks/app/api/keys/[id]/reset-usage/route-c74ff3c527010d28.js +1 -0
  686. package/app/.next/static/chunks/app/api/keys/[id]/route-c74ff3c527010d28.js +1 -0
  687. package/app/.next/static/chunks/app/api/keys/[id]/usage/route-c74ff3c527010d28.js +1 -0
  688. package/app/.next/static/chunks/app/api/keys/route-c74ff3c527010d28.js +1 -0
  689. package/app/.next/static/chunks/app/api/locale/route-c74ff3c527010d28.js +1 -0
  690. package/app/.next/static/chunks/app/api/mcp/[plugin]/message/route-c74ff3c527010d28.js +1 -0
  691. package/app/.next/static/chunks/app/api/mcp/[plugin]/sse/route-c74ff3c527010d28.js +1 -0
  692. package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-c74ff3c527010d28.js +1 -0
  693. package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-c74ff3c527010d28.js +1 -0
  694. package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-c74ff3c527010d28.js +1 -0
  695. package/app/.next/static/chunks/app/api/media-providers/tts/minimax/voices/route-c74ff3c527010d28.js +1 -0
  696. package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-c74ff3c527010d28.js +1 -0
  697. package/app/.next/static/chunks/app/api/models/alias/route-c74ff3c527010d28.js +1 -0
  698. package/app/.next/static/chunks/app/api/models/availability/route-c74ff3c527010d28.js +1 -0
  699. package/app/.next/static/chunks/app/api/models/custom/route-c74ff3c527010d28.js +1 -0
  700. package/app/.next/static/chunks/app/api/models/disabled/route-c74ff3c527010d28.js +1 -0
  701. package/app/.next/static/chunks/app/api/models/route-c74ff3c527010d28.js +1 -0
  702. package/app/.next/static/chunks/app/api/models/test/route-c74ff3c527010d28.js +1 -0
  703. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-c74ff3c527010d28.js +1 -0
  704. package/app/.next/static/chunks/app/api/oauth/codex/bulk-import/route-c74ff3c527010d28.js +1 -0
  705. package/app/.next/static/chunks/app/api/oauth/codex/import-token/route-c74ff3c527010d28.js +1 -0
  706. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-c74ff3c527010d28.js +1 -0
  707. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-c74ff3c527010d28.js +1 -0
  708. package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-c74ff3c527010d28.js +1 -0
  709. package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-c74ff3c527010d28.js +1 -0
  710. package/app/.next/static/chunks/app/api/oauth/kiro/api-key/route-c74ff3c527010d28.js +1 -0
  711. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-c74ff3c527010d28.js +1 -0
  712. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-c74ff3c527010d28.js +1 -0
  713. package/app/.next/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-c74ff3c527010d28.js +1 -0
  714. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-c74ff3c527010d28.js +1 -0
  715. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-c74ff3c527010d28.js +1 -0
  716. package/app/.next/static/chunks/app/api/pricing/route-c74ff3c527010d28.js +1 -0
  717. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-c74ff3c527010d28.js +1 -0
  718. package/app/.next/static/chunks/app/api/provider-nodes/route-c74ff3c527010d28.js +1 -0
  719. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-c74ff3c527010d28.js +1 -0
  720. package/app/.next/static/chunks/app/api/providers/[id]/models/route-c74ff3c527010d28.js +1 -0
  721. package/app/.next/static/chunks/app/api/providers/[id]/route-c74ff3c527010d28.js +1 -0
  722. package/app/.next/static/chunks/app/api/providers/[id]/test/route-c74ff3c527010d28.js +1 -0
  723. package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-c74ff3c527010d28.js +1 -0
  724. package/app/.next/static/chunks/app/api/providers/client/route-c74ff3c527010d28.js +1 -0
  725. package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-c74ff3c527010d28.js +1 -0
  726. package/app/.next/static/chunks/app/api/providers/route-c74ff3c527010d28.js +1 -0
  727. package/app/.next/static/chunks/app/api/providers/suggested-models/route-c74ff3c527010d28.js +1 -0
  728. package/app/.next/static/chunks/app/api/providers/test-batch/route-c74ff3c527010d28.js +1 -0
  729. package/app/.next/static/chunks/app/api/providers/validate/route-c74ff3c527010d28.js +1 -0
  730. package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-c74ff3c527010d28.js +1 -0
  731. package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-c74ff3c527010d28.js +1 -0
  732. package/app/.next/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-c74ff3c527010d28.js +1 -0
  733. package/app/.next/static/chunks/app/api/proxy-pools/deno-deploy/route-c74ff3c527010d28.js +1 -0
  734. package/app/.next/static/chunks/app/api/proxy-pools/route-c74ff3c527010d28.js +1 -0
  735. package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-c74ff3c527010d28.js +1 -0
  736. package/app/.next/static/chunks/app/api/pxpipe/health/route-c74ff3c527010d28.js +1 -0
  737. package/app/.next/static/chunks/app/api/pxpipe/install/route-c74ff3c527010d28.js +1 -0
  738. package/app/.next/static/chunks/app/api/pxpipe/logs/route-c74ff3c527010d28.js +1 -0
  739. package/app/.next/static/chunks/app/api/pxpipe/restart/route-c74ff3c527010d28.js +1 -0
  740. package/app/.next/static/chunks/app/api/pxpipe/start/route-c74ff3c527010d28.js +1 -0
  741. package/app/.next/static/chunks/app/api/pxpipe/stats/route-c74ff3c527010d28.js +1 -0
  742. package/app/.next/static/chunks/app/api/pxpipe/status/route-c74ff3c527010d28.js +1 -0
  743. package/app/.next/static/chunks/app/api/pxpipe/stop/route-c74ff3c527010d28.js +1 -0
  744. package/app/.next/static/chunks/app/api/settings/database/route-c74ff3c527010d28.js +1 -0
  745. package/app/.next/static/chunks/app/api/settings/database/selective/route-c74ff3c527010d28.js +1 -0
  746. package/app/.next/static/chunks/app/api/settings/proxy-test/route-c74ff3c527010d28.js +1 -0
  747. package/app/.next/static/chunks/app/api/settings/require-login/route-c74ff3c527010d28.js +1 -0
  748. package/app/.next/static/chunks/app/api/settings/route-c74ff3c527010d28.js +1 -0
  749. package/app/.next/static/chunks/app/api/shutdown/route-c74ff3c527010d28.js +1 -0
  750. package/app/.next/static/chunks/app/api/tags/route-c74ff3c527010d28.js +1 -0
  751. package/app/.next/static/chunks/app/api/translator/console-logs/route-c74ff3c527010d28.js +1 -0
  752. package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-c74ff3c527010d28.js +1 -0
  753. package/app/.next/static/chunks/app/api/translator/load/route-c74ff3c527010d28.js +1 -0
  754. package/app/.next/static/chunks/app/api/translator/save/route-c74ff3c527010d28.js +1 -0
  755. package/app/.next/static/chunks/app/api/translator/send/route-c74ff3c527010d28.js +1 -0
  756. package/app/.next/static/chunks/app/api/translator/translate/route-c74ff3c527010d28.js +1 -0
  757. package/app/.next/static/chunks/app/api/tunnel/disable/route-c74ff3c527010d28.js +1 -0
  758. package/app/.next/static/chunks/app/api/tunnel/enable/route-c74ff3c527010d28.js +1 -0
  759. package/app/.next/static/chunks/app/api/tunnel/status/route-c74ff3c527010d28.js +1 -0
  760. package/app/.next/static/chunks/app/api/tunnel/tailscale-check/route-c74ff3c527010d28.js +1 -0
  761. package/app/.next/static/chunks/app/api/tunnel/tailscale-disable/route-c74ff3c527010d28.js +1 -0
  762. package/app/.next/static/chunks/app/api/tunnel/tailscale-enable/route-c74ff3c527010d28.js +1 -0
  763. package/app/.next/static/chunks/app/api/tunnel/tailscale-install/route-c74ff3c527010d28.js +1 -0
  764. package/app/.next/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-c74ff3c527010d28.js +1 -0
  765. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-c74ff3c527010d28.js +1 -0
  766. package/app/.next/static/chunks/app/api/usage/chart/route-c74ff3c527010d28.js +1 -0
  767. package/app/.next/static/chunks/app/api/usage/history/route-c74ff3c527010d28.js +1 -0
  768. package/app/.next/static/chunks/app/api/usage/logs/route-c74ff3c527010d28.js +1 -0
  769. package/app/.next/static/chunks/app/api/usage/providers/route-c74ff3c527010d28.js +1 -0
  770. package/app/.next/static/chunks/app/api/usage/report/route-c74ff3c527010d28.js +1 -0
  771. package/app/.next/static/chunks/app/api/usage/request-details/route-c74ff3c527010d28.js +1 -0
  772. package/app/.next/static/chunks/app/api/usage/request-logs/route-c74ff3c527010d28.js +1 -0
  773. package/app/.next/static/chunks/app/api/usage/stats/route-c74ff3c527010d28.js +1 -0
  774. package/app/.next/static/chunks/app/api/usage/stream/route-c74ff3c527010d28.js +1 -0
  775. package/app/.next/static/chunks/app/api/v1/api/chat/route-c74ff3c527010d28.js +1 -0
  776. package/app/.next/static/chunks/app/api/v1/audio/speech/route-c74ff3c527010d28.js +1 -0
  777. package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-c74ff3c527010d28.js +1 -0
  778. package/app/.next/static/chunks/app/api/v1/audio/voices/route-c74ff3c527010d28.js +1 -0
  779. package/app/.next/static/chunks/app/api/v1/chat/completions/route-c74ff3c527010d28.js +1 -0
  780. package/app/.next/static/chunks/app/api/v1/embeddings/route-c74ff3c527010d28.js +1 -0
  781. package/app/.next/static/chunks/app/api/v1/images/generations/route-c74ff3c527010d28.js +1 -0
  782. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-c74ff3c527010d28.js +1 -0
  783. package/app/.next/static/chunks/app/api/v1/messages/route-c74ff3c527010d28.js +1 -0
  784. package/app/.next/static/chunks/app/api/v1/models/[kind]/route-c74ff3c527010d28.js +1 -0
  785. package/app/.next/static/chunks/app/api/v1/models/info/route-c74ff3c527010d28.js +1 -0
  786. package/app/.next/static/chunks/app/api/v1/models/route-c74ff3c527010d28.js +1 -0
  787. package/app/.next/static/chunks/app/api/v1/responses/compact/route-c74ff3c527010d28.js +1 -0
  788. package/app/.next/static/chunks/app/api/v1/responses/route-c74ff3c527010d28.js +1 -0
  789. package/app/.next/static/chunks/app/api/v1/route-c74ff3c527010d28.js +1 -0
  790. package/app/.next/static/chunks/app/api/v1/search/route-c74ff3c527010d28.js +1 -0
  791. package/app/.next/static/chunks/app/api/v1/videos/[id]/route-c74ff3c527010d28.js +1 -0
  792. package/app/.next/static/chunks/app/api/v1/videos/edits/route-c74ff3c527010d28.js +1 -0
  793. package/app/.next/static/chunks/app/api/v1/videos/extensions/route-c74ff3c527010d28.js +1 -0
  794. package/app/.next/static/chunks/app/api/v1/videos/generations/route-c74ff3c527010d28.js +1 -0
  795. package/app/.next/static/chunks/app/api/v1/web/fetch/route-c74ff3c527010d28.js +1 -0
  796. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-c74ff3c527010d28.js +1 -0
  797. package/app/.next/static/chunks/app/api/v1beta/models/route-c74ff3c527010d28.js +1 -0
  798. package/app/.next/static/chunks/app/api/version/route-c74ff3c527010d28.js +1 -0
  799. package/app/.next/static/chunks/app/api/version/shutdown/route-c74ff3c527010d28.js +1 -0
  800. package/app/.next/static/chunks/app/api/version/update/route-c74ff3c527010d28.js +1 -0
  801. package/app/.next/static/chunks/app/landing/page-a438c82535cc676a.js +1 -0
  802. package/app/.next/static/chunks/app/login/page-7b85623bf9ba8d60.js +1 -0
  803. package/app/.next/static/chunks/app/manifest.webmanifest/route-c74ff3c527010d28.js +1 -0
  804. package/app/.next/static/chunks/app/page-c74ff3c527010d28.js +1 -0
  805. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-c74ff3c527010d28.js +1 -0
  806. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-c74ff3c527010d28.js +1 -0
  807. package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-c74ff3c527010d28.js +1 -0
  808. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-c74ff3c527010d28.js +1 -0
  809. package/app/.next/static/chunks/{webpack-121fdf903e7acc97.js → webpack-6b46812a5ae291a1.js} +1 -1
  810. package/app/.next/static/css/d16761d8d90e43ab.css +1 -0
  811. package/app/.next/static/zErBl-HUgBtz1iz9LeFt5/_buildManifest.js +1 -0
  812. package/app/open-sse/config/appConstants.js +58 -10
  813. package/app/open-sse/config/kiroConstants.js +123 -3
  814. package/app/open-sse/config/providerModels.js +7 -3
  815. package/app/open-sse/config/ttsModels.js +23 -0
  816. package/app/open-sse/executors/antigravity.js +5 -1
  817. package/app/open-sse/executors/base.js +3 -2
  818. package/app/open-sse/executors/codebuddy-cn.js +29 -0
  819. package/app/open-sse/executors/codebuddy-intl.js +44 -0
  820. package/app/open-sse/executors/codex.js +9 -4
  821. package/app/open-sse/executors/cursor.js +427 -2
  822. package/app/open-sse/executors/default.js +21 -27
  823. package/app/open-sse/executors/devin-cli.js +847 -0
  824. package/app/open-sse/executors/index.js +15 -3
  825. package/app/open-sse/executors/qoder.js +82 -41
  826. package/app/open-sse/executors/trae.js +339 -0
  827. package/app/open-sse/executors/windsurf.js +588 -0
  828. package/app/open-sse/executors/zed.js +304 -0
  829. package/app/open-sse/handlers/chatCore/nonStreamingHandler.js +92 -6
  830. package/app/open-sse/handlers/chatCore/sseToJsonHandler.js +131 -11
  831. package/app/open-sse/handlers/chatCore/streamingHandler.js +6 -6
  832. package/app/open-sse/handlers/chatCore.js +62 -8
  833. package/app/open-sse/handlers/embeddingProviders/index.js +7 -0
  834. package/app/open-sse/handlers/embeddingProviders/selfhostedEmbedding.js +46 -0
  835. package/app/open-sse/handlers/embeddingsCore.js +23 -8
  836. package/app/open-sse/handlers/fetch/index.js +11 -5
  837. package/app/open-sse/handlers/search/callers.js +0 -1
  838. package/app/open-sse/handlers/search/normalizers.js +0 -1
  839. package/app/open-sse/handlers/sttCore.js +9 -1
  840. package/app/open-sse/handlers/ttsCore.js +3 -3
  841. package/app/open-sse/handlers/ttsProviders/index.js +4 -0
  842. package/app/open-sse/handlers/ttsProviders/selfhostedTts.js +69 -0
  843. package/app/open-sse/handlers/ttsProviders/xiaomi-mimo.js +65 -0
  844. package/app/open-sse/index.js +0 -1
  845. package/app/open-sse/providers/capabilities.js +43 -3
  846. package/app/open-sse/providers/pricing.js +132 -1
  847. package/app/open-sse/providers/registry/alicode-intl.js +4 -4
  848. package/app/open-sse/providers/registry/alims-intl.js +32 -0
  849. package/app/open-sse/providers/registry/antigravity.js +7 -3
  850. package/app/open-sse/providers/registry/api-airforce.js +36 -0
  851. package/app/open-sse/providers/registry/baidu.js +33 -0
  852. package/app/open-sse/providers/registry/bazaarlink.js +47 -0
  853. package/app/open-sse/providers/registry/bluesminds.js +38 -0
  854. package/app/open-sse/providers/registry/claude.js +1 -5
  855. package/app/open-sse/providers/registry/cloudflare-ai.js +2 -0
  856. package/app/open-sse/providers/registry/codebuddy-intl.js +77 -0
  857. package/app/open-sse/providers/registry/cursor.js +3 -3
  858. package/app/open-sse/providers/registry/deepseek.js +4 -0
  859. package/app/open-sse/providers/registry/devin-cli.js +63 -0
  860. package/app/open-sse/providers/registry/gemini-cli.js +17 -6
  861. package/app/open-sse/providers/registry/gemini.js +4 -0
  862. package/app/open-sse/providers/registry/index.js +87 -49
  863. package/app/open-sse/providers/registry/kilo-gateway.js +34 -0
  864. package/app/open-sse/providers/registry/kimchi.js +1 -1
  865. package/app/open-sse/providers/registry/kimi.js +43 -7
  866. package/app/open-sse/providers/registry/kiro.js +4 -1
  867. package/app/open-sse/providers/registry/llm7.js +35 -0
  868. package/app/open-sse/providers/registry/mimo-free.js +3 -0
  869. package/app/open-sse/providers/registry/morph.js +29 -0
  870. package/app/open-sse/providers/registry/nvidia.js +2 -0
  871. package/app/open-sse/providers/registry/ollama.js +3 -0
  872. package/app/open-sse/providers/registry/openrouter.js +2 -0
  873. package/app/open-sse/providers/registry/poolside.js +30 -0
  874. package/app/open-sse/providers/registry/qoder.js +19 -15
  875. package/app/open-sse/providers/registry/sambanova.js +27 -0
  876. package/app/open-sse/providers/registry/selfhosted-embedding.js +73 -0
  877. package/app/open-sse/providers/registry/selfhosted-stt.js +48 -0
  878. package/app/open-sse/providers/registry/selfhosted-tts.js +44 -0
  879. package/app/open-sse/providers/registry/tencent.js +27 -0
  880. package/app/open-sse/providers/registry/tokenrouter.js +162 -0
  881. package/app/open-sse/providers/registry/trae.js +76 -0
  882. package/app/open-sse/providers/registry/windsurf.js +143 -0
  883. package/app/open-sse/providers/registry/xiaomi-mimo.js +9 -1
  884. package/app/open-sse/providers/registry/zed.js +71 -0
  885. package/app/open-sse/providers/shared.js +21 -1
  886. package/app/open-sse/providers/thinkingLevels.js +10 -3
  887. package/app/open-sse/rtk/headroom.js +12 -1
  888. package/app/open-sse/services/capacityAdapter.js +173 -0
  889. package/app/open-sse/services/combo.js +21 -4
  890. package/app/open-sse/services/cursorModels.js +187 -0
  891. package/app/open-sse/services/projectId.js +13 -10
  892. package/app/open-sse/services/provider.js +14 -8
  893. package/app/open-sse/services/qoderModels.js +146 -7
  894. package/app/open-sse/services/tokenRefresh/providers.js +221 -185
  895. package/app/open-sse/services/tokenRefresh.js +21 -5
  896. package/app/open-sse/services/usage/codebuddy-cn.js +14 -6
  897. package/app/open-sse/services/usage/deepseek.js +112 -0
  898. package/app/open-sse/services/usage/google.js +22 -58
  899. package/app/open-sse/services/usage/grok-cli.js +96 -0
  900. package/app/open-sse/services/usage/grokCliQuotaFrame.js +191 -0
  901. package/app/open-sse/services/usage/kimi.js +211 -0
  902. package/app/open-sse/services/usage/misc.js +78 -32
  903. package/app/open-sse/services/usage.js +14 -5
  904. package/app/open-sse/shared/qoder/constants.js +8 -0
  905. package/app/open-sse/shared/zedAuth.js +415 -0
  906. package/app/open-sse/translator/concerns/kiroConversation.js +435 -0
  907. package/app/open-sse/translator/concerns/thinkingUnified.js +22 -4
  908. package/app/open-sse/translator/formats/claude.js +3 -1
  909. package/app/open-sse/translator/formats/gemini.js +20 -1
  910. package/app/open-sse/translator/index.js +19 -4
  911. package/app/open-sse/translator/request/claude-to-kiro.js +93 -232
  912. package/app/open-sse/translator/request/openai-responses.js +51 -7
  913. package/app/open-sse/translator/request/openai-to-kiro.js +77 -252
  914. package/app/open-sse/translator/response/openai-responses.js +57 -18
  915. package/app/open-sse/translator/schema/blocks.js +3 -0
  916. package/app/open-sse/utils/clientDetector.js +5 -2
  917. package/app/open-sse/utils/cursorChecksum.js +2 -1
  918. package/app/open-sse/utils/kiroSessionReplay.js +144 -0
  919. package/app/open-sse/utils/sessionManager.js +48 -12
  920. package/app/open-sse/utils/stream.js +6 -2
  921. package/app/package.json +1 -1
  922. package/app/public/i18n/literals/ar.json +2 -0
  923. package/app/public/i18n/literals/bn.json +2 -0
  924. package/app/public/i18n/literals/cs.json +2 -0
  925. package/app/public/i18n/literals/da.json +2 -0
  926. package/app/public/i18n/literals/de.json +2 -0
  927. package/app/public/i18n/literals/el.json +2 -0
  928. package/app/public/i18n/literals/es.json +2 -0
  929. package/app/public/i18n/literals/fa.json +1369 -171
  930. package/app/public/i18n/literals/fi.json +2 -0
  931. package/app/public/i18n/literals/fr.json +2 -0
  932. package/app/public/i18n/literals/he.json +2 -0
  933. package/app/public/i18n/literals/hi.json +2 -0
  934. package/app/public/i18n/literals/hu.json +2 -0
  935. package/app/public/i18n/literals/id.json +2 -0
  936. package/app/public/i18n/literals/it.json +2 -0
  937. package/app/public/i18n/literals/ja.json +2 -0
  938. package/app/public/i18n/literals/km.json +1398 -0
  939. package/app/public/i18n/literals/ko.json +2 -0
  940. package/app/public/i18n/literals/nl.json +2 -0
  941. package/app/public/i18n/literals/no.json +2 -0
  942. package/app/public/i18n/literals/pl.json +2 -0
  943. package/app/public/i18n/literals/pt-BR.json +958 -163
  944. package/app/public/i18n/literals/pt-PT.json +2 -0
  945. package/app/public/i18n/literals/ro.json +2 -0
  946. package/app/public/i18n/literals/ru.json +2 -0
  947. package/app/public/i18n/literals/sv.json +2 -0
  948. package/app/public/i18n/literals/th.json +1374 -176
  949. package/app/public/i18n/literals/tl.json +2 -0
  950. package/app/public/i18n/literals/tr.json +2 -0
  951. package/app/public/i18n/literals/uk.json +2 -0
  952. package/app/public/i18n/literals/ur.json +2 -0
  953. package/app/public/i18n/literals/vi.json +2 -0
  954. package/app/public/i18n/literals/zh-CN.json +2 -0
  955. package/app/public/i18n/literals/zh-TW.json +2 -0
  956. package/app/public/providers/agentrouter.png +0 -0
  957. package/app/public/providers/api-airforce.png +0 -0
  958. package/app/public/providers/baidu.png +0 -0
  959. package/app/public/providers/bazaarlink.png +0 -0
  960. package/app/public/providers/bluesminds.png +0 -0
  961. package/app/public/providers/codebuddy-cn.png +0 -0
  962. package/app/public/providers/codebuddy-intl.png +0 -0
  963. package/app/public/providers/commandcode.png +0 -0
  964. package/app/public/providers/devin-cli.png +0 -0
  965. package/app/public/providers/featherless.png +0 -0
  966. package/app/public/providers/gitlab.png +0 -0
  967. package/app/public/providers/kilo-gateway.png +0 -0
  968. package/app/public/providers/llm7.png +0 -0
  969. package/app/public/providers/longcat.png +0 -0
  970. package/app/public/providers/mmf.png +0 -0
  971. package/app/public/providers/morph.png +0 -0
  972. package/app/public/providers/novita.png +0 -0
  973. package/app/public/providers/opendesign.png +0 -0
  974. package/app/public/providers/perplexity-agent.png +0 -0
  975. package/app/public/providers/poolside.png +0 -0
  976. package/app/public/providers/qoder.png +0 -0
  977. package/app/public/providers/reka.png +0 -0
  978. package/app/public/providers/sambanova.png +0 -0
  979. package/app/public/providers/tencent.png +0 -0
  980. package/app/public/providers/tokenrouter.png +0 -0
  981. package/app/public/providers/trae.png +0 -0
  982. package/app/public/providers/venice.png +0 -0
  983. package/app/public/providers/vercel-ai-gateway.png +0 -0
  984. package/app/public/providers/vercel.png +0 -0
  985. package/app/public/providers/windsurf.png +0 -0
  986. package/app/public/providers/workbuddy.png +0 -0
  987. package/app/public/providers/zed.png +0 -0
  988. package/app/src/mitm/config.js +42 -1
  989. package/app/src/shared/constants/cliTools.js +72 -16
  990. package/app/src/shared/constants/locales.js +1 -0
  991. package/app/src/shared/constants/ttsProviders.js +12 -0
  992. package/app/src/shared/services/quotaAutoPing.js +313 -0
  993. package/app/src/sse/services/backgroundTokenRefresh.js +196 -0
  994. package/package.json +1 -1
  995. package/app/.next/server/chunks/1051.js +0 -1
  996. package/app/.next/server/chunks/1185.js +0 -1
  997. package/app/.next/server/chunks/1806.js +0 -1
  998. package/app/.next/server/chunks/2056.js +0 -1
  999. package/app/.next/server/chunks/2701.js +0 -10
  1000. package/app/.next/server/chunks/3000.js +0 -63
  1001. package/app/.next/server/chunks/3588.js +0 -7
  1002. package/app/.next/server/chunks/4177.js +0 -1
  1003. package/app/.next/server/chunks/4632.js +0 -1
  1004. package/app/.next/server/chunks/7181.js +0 -1
  1005. package/app/.next/server/chunks/7467.js +0 -1
  1006. package/app/.next/server/chunks/75.js +0 -1
  1007. package/app/.next/server/chunks/8056.js +0 -1
  1008. package/app/.next/server/chunks/8271.js +0 -1
  1009. package/app/.next/server/chunks/8833.js +0 -79
  1010. package/app/.next/server/chunks/9489.js +0 -3
  1011. package/app/.next/static/chunks/1321-3154ab2bdf03d1b4.js +0 -1
  1012. package/app/.next/static/chunks/1a258343.5938f676ed376386.js +0 -1
  1013. package/app/.next/static/chunks/3521.8dce45f121472d5c.js +0 -1
  1014. package/app/.next/static/chunks/4028-f3b4a4505d1949d8.js +0 -63
  1015. package/app/.next/static/chunks/5497-696d58587d263478.js +0 -7
  1016. package/app/.next/static/chunks/705-979ff3eb195b9023.js +0 -1
  1017. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/page-dfb62517e7b61da1.js +0 -1
  1018. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-7aab1b038b0bfe64.js +0 -1
  1019. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/page-064162ae8176ea08.js +0 -1
  1020. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/page-6079eec94c4ca9a9.js +0 -4
  1021. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-1039653250f6f4eb.js +0 -12
  1022. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-541efe7992c8e9d2.js +0 -1
  1023. package/app/.next/static/chunks/app/(dashboard)/dashboard/quota/page-690703b251694b65.js +0 -1
  1024. package/app/.next/static/chunks/app/_global-error/page-c1f9120475dadd61.js +0 -1
  1025. package/app/.next/static/chunks/app/api/antigravity-app/route-c1f9120475dadd61.js +0 -1
  1026. package/app/.next/static/chunks/app/api/antigravity-app-v2/route-c1f9120475dadd61.js +0 -1
  1027. package/app/.next/static/chunks/app/api/antigravity-ide/route-c1f9120475dadd61.js +0 -1
  1028. package/app/.next/static/chunks/app/api/antigravity-targets/route-c1f9120475dadd61.js +0 -1
  1029. package/app/.next/static/chunks/app/api/antigravity-tools/import/route-c1f9120475dadd61.js +0 -1
  1030. package/app/.next/static/chunks/app/api/antigravity-tools/import-refresh-tokens/route-c1f9120475dadd61.js +0 -1
  1031. package/app/.next/static/chunks/app/api/auth/login/route-c1f9120475dadd61.js +0 -1
  1032. package/app/.next/static/chunks/app/api/auth/logout/route-c1f9120475dadd61.js +0 -1
  1033. package/app/.next/static/chunks/app/api/auth/oidc/callback/route-c1f9120475dadd61.js +0 -1
  1034. package/app/.next/static/chunks/app/api/auth/oidc/start/route-c1f9120475dadd61.js +0 -1
  1035. package/app/.next/static/chunks/app/api/auth/oidc/test/route-c1f9120475dadd61.js +0 -1
  1036. package/app/.next/static/chunks/app/api/auth/reset-password/route-c1f9120475dadd61.js +0 -1
  1037. package/app/.next/static/chunks/app/api/auth/status/route-c1f9120475dadd61.js +0 -1
  1038. package/app/.next/static/chunks/app/api/cli-tools/all-statuses/route-c1f9120475dadd61.js +0 -1
  1039. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-c1f9120475dadd61.js +0 -1
  1040. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-c1f9120475dadd61.js +0 -1
  1041. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-c1f9120475dadd61.js +0 -1
  1042. package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-c1f9120475dadd61.js +0 -1
  1043. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-c1f9120475dadd61.js +0 -1
  1044. package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-c1f9120475dadd61.js +0 -1
  1045. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-c1f9120475dadd61.js +0 -1
  1046. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-c1f9120475dadd61.js +0 -1
  1047. package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-c1f9120475dadd61.js +0 -1
  1048. package/app/.next/static/chunks/app/api/cli-tools/cursor-byok/jobs/[jobId]/events/route-c1f9120475dadd61.js +0 -1
  1049. package/app/.next/static/chunks/app/api/cli-tools/cursor-byok/jobs/[jobId]/sudo/route-c1f9120475dadd61.js +0 -1
  1050. package/app/.next/static/chunks/app/api/cli-tools/cursor-byok/jobs/route-c1f9120475dadd61.js +0 -1
  1051. package/app/.next/static/chunks/app/api/cli-tools/cursor-byok/route-c1f9120475dadd61.js +0 -1
  1052. package/app/.next/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-c1f9120475dadd61.js +0 -1
  1053. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-c1f9120475dadd61.js +0 -1
  1054. package/app/.next/static/chunks/app/api/cli-tools/grok-build-settings/route-c1f9120475dadd61.js +0 -1
  1055. package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-c1f9120475dadd61.js +0 -1
  1056. package/app/.next/static/chunks/app/api/cli-tools/jcode-settings/route-c1f9120475dadd61.js +0 -1
  1057. package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-c1f9120475dadd61.js +0 -1
  1058. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-c1f9120475dadd61.js +0 -1
  1059. package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-c1f9120475dadd61.js +0 -1
  1060. package/app/.next/static/chunks/app/api/combos/[id]/route-c1f9120475dadd61.js +0 -1
  1061. package/app/.next/static/chunks/app/api/combos/route-c1f9120475dadd61.js +0 -1
  1062. package/app/.next/static/chunks/app/api/donate/route-c1f9120475dadd61.js +0 -1
  1063. package/app/.next/static/chunks/app/api/headroom/extras/route-c1f9120475dadd61.js +0 -1
  1064. package/app/.next/static/chunks/app/api/headroom/proxy/[...path]/route-c1f9120475dadd61.js +0 -1
  1065. package/app/.next/static/chunks/app/api/headroom/restart/route-c1f9120475dadd61.js +0 -1
  1066. package/app/.next/static/chunks/app/api/headroom/start/route-c1f9120475dadd61.js +0 -1
  1067. package/app/.next/static/chunks/app/api/headroom/status/route-c1f9120475dadd61.js +0 -1
  1068. package/app/.next/static/chunks/app/api/headroom/stop/route-c1f9120475dadd61.js +0 -1
  1069. package/app/.next/static/chunks/app/api/health/route-c1f9120475dadd61.js +0 -1
  1070. package/app/.next/static/chunks/app/api/init/route-c1f9120475dadd61.js +0 -1
  1071. package/app/.next/static/chunks/app/api/internal/account-health/route-c1f9120475dadd61.js +0 -1
  1072. package/app/.next/static/chunks/app/api/internal/request-detail/route-c1f9120475dadd61.js +0 -1
  1073. package/app/.next/static/chunks/app/api/internal/usage/route-c1f9120475dadd61.js +0 -1
  1074. package/app/.next/static/chunks/app/api/keys/[id]/reset-usage/route-c1f9120475dadd61.js +0 -1
  1075. package/app/.next/static/chunks/app/api/keys/[id]/route-c1f9120475dadd61.js +0 -1
  1076. package/app/.next/static/chunks/app/api/keys/[id]/usage/route-c1f9120475dadd61.js +0 -1
  1077. package/app/.next/static/chunks/app/api/keys/route-c1f9120475dadd61.js +0 -1
  1078. package/app/.next/static/chunks/app/api/locale/route-c1f9120475dadd61.js +0 -1
  1079. package/app/.next/static/chunks/app/api/mcp/[plugin]/message/route-c1f9120475dadd61.js +0 -1
  1080. package/app/.next/static/chunks/app/api/mcp/[plugin]/sse/route-c1f9120475dadd61.js +0 -1
  1081. package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-c1f9120475dadd61.js +0 -1
  1082. package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-c1f9120475dadd61.js +0 -1
  1083. package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-c1f9120475dadd61.js +0 -1
  1084. package/app/.next/static/chunks/app/api/media-providers/tts/minimax/voices/route-c1f9120475dadd61.js +0 -1
  1085. package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-c1f9120475dadd61.js +0 -1
  1086. package/app/.next/static/chunks/app/api/models/alias/route-c1f9120475dadd61.js +0 -1
  1087. package/app/.next/static/chunks/app/api/models/availability/route-c1f9120475dadd61.js +0 -1
  1088. package/app/.next/static/chunks/app/api/models/custom/route-c1f9120475dadd61.js +0 -1
  1089. package/app/.next/static/chunks/app/api/models/disabled/route-c1f9120475dadd61.js +0 -1
  1090. package/app/.next/static/chunks/app/api/models/route-c1f9120475dadd61.js +0 -1
  1091. package/app/.next/static/chunks/app/api/models/test/route-c1f9120475dadd61.js +0 -1
  1092. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-c1f9120475dadd61.js +0 -1
  1093. package/app/.next/static/chunks/app/api/oauth/codex/bulk-import/route-c1f9120475dadd61.js +0 -1
  1094. package/app/.next/static/chunks/app/api/oauth/codex/import-token/route-c1f9120475dadd61.js +0 -1
  1095. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-c1f9120475dadd61.js +0 -1
  1096. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-c1f9120475dadd61.js +0 -1
  1097. package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-c1f9120475dadd61.js +0 -1
  1098. package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-c1f9120475dadd61.js +0 -1
  1099. package/app/.next/static/chunks/app/api/oauth/kiro/api-key/route-c1f9120475dadd61.js +0 -1
  1100. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-c1f9120475dadd61.js +0 -1
  1101. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-c1f9120475dadd61.js +0 -1
  1102. package/app/.next/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-c1f9120475dadd61.js +0 -1
  1103. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-c1f9120475dadd61.js +0 -1
  1104. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-c1f9120475dadd61.js +0 -1
  1105. package/app/.next/static/chunks/app/api/pricing/route-c1f9120475dadd61.js +0 -1
  1106. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-c1f9120475dadd61.js +0 -1
  1107. package/app/.next/static/chunks/app/api/provider-nodes/route-c1f9120475dadd61.js +0 -1
  1108. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-c1f9120475dadd61.js +0 -1
  1109. package/app/.next/static/chunks/app/api/providers/[id]/models/route-c1f9120475dadd61.js +0 -1
  1110. package/app/.next/static/chunks/app/api/providers/[id]/route-c1f9120475dadd61.js +0 -1
  1111. package/app/.next/static/chunks/app/api/providers/[id]/test/route-c1f9120475dadd61.js +0 -1
  1112. package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-c1f9120475dadd61.js +0 -1
  1113. package/app/.next/static/chunks/app/api/providers/client/route-c1f9120475dadd61.js +0 -1
  1114. package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-c1f9120475dadd61.js +0 -1
  1115. package/app/.next/static/chunks/app/api/providers/route-c1f9120475dadd61.js +0 -1
  1116. package/app/.next/static/chunks/app/api/providers/suggested-models/route-c1f9120475dadd61.js +0 -1
  1117. package/app/.next/static/chunks/app/api/providers/test-batch/route-c1f9120475dadd61.js +0 -1
  1118. package/app/.next/static/chunks/app/api/providers/validate/route-c1f9120475dadd61.js +0 -1
  1119. package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-c1f9120475dadd61.js +0 -1
  1120. package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-c1f9120475dadd61.js +0 -1
  1121. package/app/.next/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-c1f9120475dadd61.js +0 -1
  1122. package/app/.next/static/chunks/app/api/proxy-pools/deno-deploy/route-c1f9120475dadd61.js +0 -1
  1123. package/app/.next/static/chunks/app/api/proxy-pools/route-c1f9120475dadd61.js +0 -1
  1124. package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-c1f9120475dadd61.js +0 -1
  1125. package/app/.next/static/chunks/app/api/pxpipe/health/route-c1f9120475dadd61.js +0 -1
  1126. package/app/.next/static/chunks/app/api/pxpipe/install/route-c1f9120475dadd61.js +0 -1
  1127. package/app/.next/static/chunks/app/api/pxpipe/logs/route-c1f9120475dadd61.js +0 -1
  1128. package/app/.next/static/chunks/app/api/pxpipe/restart/route-c1f9120475dadd61.js +0 -1
  1129. package/app/.next/static/chunks/app/api/pxpipe/start/route-c1f9120475dadd61.js +0 -1
  1130. package/app/.next/static/chunks/app/api/pxpipe/stats/route-c1f9120475dadd61.js +0 -1
  1131. package/app/.next/static/chunks/app/api/pxpipe/status/route-c1f9120475dadd61.js +0 -1
  1132. package/app/.next/static/chunks/app/api/pxpipe/stop/route-c1f9120475dadd61.js +0 -1
  1133. package/app/.next/static/chunks/app/api/settings/database/route-c1f9120475dadd61.js +0 -1
  1134. package/app/.next/static/chunks/app/api/settings/database/selective/route-c1f9120475dadd61.js +0 -1
  1135. package/app/.next/static/chunks/app/api/settings/proxy-test/route-c1f9120475dadd61.js +0 -1
  1136. package/app/.next/static/chunks/app/api/settings/require-login/route-c1f9120475dadd61.js +0 -1
  1137. package/app/.next/static/chunks/app/api/settings/route-c1f9120475dadd61.js +0 -1
  1138. package/app/.next/static/chunks/app/api/shutdown/route-c1f9120475dadd61.js +0 -1
  1139. package/app/.next/static/chunks/app/api/tags/route-c1f9120475dadd61.js +0 -1
  1140. package/app/.next/static/chunks/app/api/translator/console-logs/route-c1f9120475dadd61.js +0 -1
  1141. package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-c1f9120475dadd61.js +0 -1
  1142. package/app/.next/static/chunks/app/api/translator/load/route-c1f9120475dadd61.js +0 -1
  1143. package/app/.next/static/chunks/app/api/translator/save/route-c1f9120475dadd61.js +0 -1
  1144. package/app/.next/static/chunks/app/api/translator/send/route-c1f9120475dadd61.js +0 -1
  1145. package/app/.next/static/chunks/app/api/translator/translate/route-c1f9120475dadd61.js +0 -1
  1146. package/app/.next/static/chunks/app/api/tunnel/disable/route-c1f9120475dadd61.js +0 -1
  1147. package/app/.next/static/chunks/app/api/tunnel/enable/route-c1f9120475dadd61.js +0 -1
  1148. package/app/.next/static/chunks/app/api/tunnel/status/route-c1f9120475dadd61.js +0 -1
  1149. package/app/.next/static/chunks/app/api/tunnel/tailscale-check/route-c1f9120475dadd61.js +0 -1
  1150. package/app/.next/static/chunks/app/api/tunnel/tailscale-disable/route-c1f9120475dadd61.js +0 -1
  1151. package/app/.next/static/chunks/app/api/tunnel/tailscale-enable/route-c1f9120475dadd61.js +0 -1
  1152. package/app/.next/static/chunks/app/api/tunnel/tailscale-install/route-c1f9120475dadd61.js +0 -1
  1153. package/app/.next/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-c1f9120475dadd61.js +0 -1
  1154. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-c1f9120475dadd61.js +0 -1
  1155. package/app/.next/static/chunks/app/api/usage/chart/route-c1f9120475dadd61.js +0 -1
  1156. package/app/.next/static/chunks/app/api/usage/history/route-c1f9120475dadd61.js +0 -1
  1157. package/app/.next/static/chunks/app/api/usage/logs/route-c1f9120475dadd61.js +0 -1
  1158. package/app/.next/static/chunks/app/api/usage/providers/route-c1f9120475dadd61.js +0 -1
  1159. package/app/.next/static/chunks/app/api/usage/report/route-c1f9120475dadd61.js +0 -1
  1160. package/app/.next/static/chunks/app/api/usage/request-details/route-c1f9120475dadd61.js +0 -1
  1161. package/app/.next/static/chunks/app/api/usage/request-logs/route-c1f9120475dadd61.js +0 -1
  1162. package/app/.next/static/chunks/app/api/usage/stats/route-c1f9120475dadd61.js +0 -1
  1163. package/app/.next/static/chunks/app/api/usage/stream/route-c1f9120475dadd61.js +0 -1
  1164. package/app/.next/static/chunks/app/api/v1/api/chat/route-c1f9120475dadd61.js +0 -1
  1165. package/app/.next/static/chunks/app/api/v1/audio/speech/route-c1f9120475dadd61.js +0 -1
  1166. package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-c1f9120475dadd61.js +0 -1
  1167. package/app/.next/static/chunks/app/api/v1/audio/voices/route-c1f9120475dadd61.js +0 -1
  1168. package/app/.next/static/chunks/app/api/v1/chat/completions/route-c1f9120475dadd61.js +0 -1
  1169. package/app/.next/static/chunks/app/api/v1/embeddings/route-c1f9120475dadd61.js +0 -1
  1170. package/app/.next/static/chunks/app/api/v1/images/generations/route-c1f9120475dadd61.js +0 -1
  1171. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-c1f9120475dadd61.js +0 -1
  1172. package/app/.next/static/chunks/app/api/v1/messages/route-c1f9120475dadd61.js +0 -1
  1173. package/app/.next/static/chunks/app/api/v1/models/[kind]/route-c1f9120475dadd61.js +0 -1
  1174. package/app/.next/static/chunks/app/api/v1/models/info/route-c1f9120475dadd61.js +0 -1
  1175. package/app/.next/static/chunks/app/api/v1/models/route-c1f9120475dadd61.js +0 -1
  1176. package/app/.next/static/chunks/app/api/v1/responses/compact/route-c1f9120475dadd61.js +0 -1
  1177. package/app/.next/static/chunks/app/api/v1/responses/route-c1f9120475dadd61.js +0 -1
  1178. package/app/.next/static/chunks/app/api/v1/route-c1f9120475dadd61.js +0 -1
  1179. package/app/.next/static/chunks/app/api/v1/search/route-c1f9120475dadd61.js +0 -1
  1180. package/app/.next/static/chunks/app/api/v1/videos/[id]/route-c1f9120475dadd61.js +0 -1
  1181. package/app/.next/static/chunks/app/api/v1/videos/edits/route-c1f9120475dadd61.js +0 -1
  1182. package/app/.next/static/chunks/app/api/v1/videos/extensions/route-c1f9120475dadd61.js +0 -1
  1183. package/app/.next/static/chunks/app/api/v1/videos/generations/route-c1f9120475dadd61.js +0 -1
  1184. package/app/.next/static/chunks/app/api/v1/web/fetch/route-c1f9120475dadd61.js +0 -1
  1185. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-c1f9120475dadd61.js +0 -1
  1186. package/app/.next/static/chunks/app/api/v1beta/models/route-c1f9120475dadd61.js +0 -1
  1187. package/app/.next/static/chunks/app/api/version/route-c1f9120475dadd61.js +0 -1
  1188. package/app/.next/static/chunks/app/api/version/shutdown/route-c1f9120475dadd61.js +0 -1
  1189. package/app/.next/static/chunks/app/api/version/update/route-c1f9120475dadd61.js +0 -1
  1190. package/app/.next/static/chunks/app/landing/page-cc37244748faf1e0.js +0 -1
  1191. package/app/.next/static/chunks/app/login/page-8c5c8f2f058d5e2f.js +0 -1
  1192. package/app/.next/static/chunks/app/manifest.webmanifest/route-c1f9120475dadd61.js +0 -1
  1193. package/app/.next/static/chunks/app/page-c1f9120475dadd61.js +0 -1
  1194. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-c1f9120475dadd61.js +0 -1
  1195. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-c1f9120475dadd61.js +0 -1
  1196. package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-c1f9120475dadd61.js +0 -1
  1197. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-c1f9120475dadd61.js +0 -1
  1198. package/app/.next/static/css/4aeebd461f2f3aec.css +0 -1
  1199. package/app/.next/static/lo-GnJQxxRLdCvA2oang1/_buildManifest.js +0 -1
  1200. package/app/open-sse/executors/qwen.js +0 -129
  1201. package/app/open-sse/providers/registry/kimi-coding.js +0 -65
  1202. package/app/open-sse/providers/registry/qwen.js +0 -33
  1203. package/app/open-sse/utils/claudeHeaderCache.js +0 -70
  1204. /package/app/.next/static/{lo-GnJQxxRLdCvA2oang1 → zErBl-HUgBtz1iz9LeFt5}/_ssgManifest.js +0 -0
package/README.md CHANGED
@@ -102,7 +102,7 @@ Docker image: [`nightwalker8x/n9router`](https://hub.docker.com/r/nightwalker8x/
102
102
 
103
103
  **2. Connect a FREE provider (no signup needed):**
104
104
 
105
- Dashboard → Providers → Connect **Kiro AI** (free Claude unlimited) or **OpenCode Free** (no auth) → Done!
105
+ Dashboard → Providers → Connect **Kiro AI** (~50 credits/month free: Claude 4.5 + GLM-5 + MiniMax) or **OpenCode Free** (no auth) → Done!
106
106
 
107
107
  **3. Use in your CLI tool:**
108
108
 
@@ -214,6 +214,32 @@ Default URLs:
214
214
  <b>Kilo Code</b>
215
215
  </td>
216
216
  </tr>
217
+ <tr>
218
+ <td align="center" width="120">
219
+ <img src="./public/providers/opendesign.png" width="60" alt="OpenDesign"/><br/>
220
+ <b>OpenDesign</b>
221
+ </td>
222
+ <td align="center" width="120">
223
+ <img src="./public/providers/jcode.png" width="60" alt="jcode"/><br/>
224
+ <b>jcode</b>
225
+ </td>
226
+ <td align="center" width="120">
227
+ <img src="./public/providers/grok-cli.png" width="60" alt="Grok Build"/><br/>
228
+ <b>Grok Build</b>
229
+ </td>
230
+ <td align="center" width="120">
231
+ <img src="./public/providers/devin-cli.png" width="60" alt="Devin CLI"/><br/>
232
+ <b>Devin CLI</b>
233
+ </td>
234
+ <td align="center" width="120">
235
+ <img src="./public/providers/deepseek-tui.png" width="60" alt="DeepSeek TUI"/><br/>
236
+ <b>DeepSeek TUI</b>
237
+ </td>
238
+ <td align="center" width="120">
239
+ <img src="./public/providers/qwen.png" width="60" alt="Qwen Code"/><br/>
240
+ <b>Qwen Code</b>
241
+ </td>
242
+ </tr>
217
243
  </table>
218
244
  </div>
219
245
 
@@ -258,12 +284,12 @@ Default URLs:
258
284
  <td align="center" width="150">
259
285
  <img src="./public/providers/kiro.png" width="70" alt="Kiro"/><br/>
260
286
  <b>Kiro AI</b><br/>
261
- <sub>Claude 4.5 + GLM-5 + MiniMax<br/>Unlimited FREE</sub>
287
+ <sub>Claude 4.5 + GLM-5 + MiniMax<br/>50 credits/month free</sub>
262
288
  </td>
263
289
  <td align="center" width="150">
264
290
  <img src="./public/providers/opencode.png" width="70" alt="OpenCode Free"/><br/>
265
291
  <b>OpenCode Free</b><br/>
266
- <sub>No auth • Auto-fetch models<br/>Unlimited FREE</sub>
292
+ <sub>No auth • Auto-fetch models<br/>Free (model list varies)</sub>
267
293
  </td>
268
294
  <td align="center" width="150">
269
295
  <img src="./public/providers/gemini.png" width="70" alt="Vertex AI"/><br/>
@@ -274,7 +300,11 @@ Default URLs:
274
300
  </table>
275
301
  </div>
276
302
 
277
- > **Note:** iFlow, Qwen and Gemini CLI free tiers were discontinued in 2026. Use Kiro / OpenCode Free / Vertex instead.
303
+ > **Note:** iFlow, Qwen Code and Gemini CLI free tiers were discontinued in 2026. Use Kiro / OpenCode Free / Vertex instead.
304
+ >
305
+ > **Kiro AI** moved to a paid model in Sep 2025 — the free tier is now capped at **50 credits/month** (plus 500 trial credits for new accounts in the first 30 days). Paid tiers: Pro $20/mo (1,000 credits), Pro+ $40/mo (2,000), Pro Max $100/mo (5,000), Power $200/mo (10,000).
306
+ > **OpenCode Free** model list fluctuates over time (some models free only for limited promos) — subject to change without notice.
307
+ > **Vertex AI**: the $300 free credit for new GCP accounts is still valid, but since Mar 2026 the **Gemini API endpoint no longer consumes these credits** — call the **Vertex AI Studio** endpoint instead.
278
308
 
279
309
  ### 🔑 API Key Providers (40+)
280
310
 
@@ -362,6 +392,46 @@ Default URLs:
362
392
  <p><i>...and 20+ more providers including Nebius, Chutes, Hyperbolic, and custom OpenAI/Anthropic compatible endpoints</i></p>
363
393
  </div>
364
394
 
395
+ ### 🏠 Self-hosted Providers
396
+
397
+ For speech and embeddings served from **your own** machine — whisper.cpp,
398
+ faster-whisper, Speaches, Kokoro-FastAPI, openedai-speech, llama.cpp/llama-server,
399
+ vLLM, Infinity, text-embeddings-inference, or anything else that speaks the OpenAI
400
+ shape.
401
+
402
+ | Provider | Endpoint used | Typical server |
403
+ | --- | --- | --- |
404
+ | **Self-hosted STT** | `/v1/audio/transcriptions` | whisper.cpp, faster-whisper |
405
+ | **Self-hosted TTS** | `/v1/audio/speech` | Kokoro-FastAPI, openedai-speech |
406
+ | **Self-hosted Embedding** | `/v1/embeddings` | llama-server, vLLM, Infinity |
407
+
408
+ Every other speech provider is a named cloud service with a fixed endpoint. These
409
+ three read their address from **each connection**, so one provider can front
410
+ several machines and load-balance across them like any other.
411
+
412
+ Set it on the connection as `providerSpecificData.baseUrl`:
413
+
414
+ | Provider | Give it | Result |
415
+ | --- | --- | --- |
416
+ | Self-hosted STT | the full URL — `http://host:8080/v1/audio/transcriptions` | used as-is |
417
+ | Self-hosted TTS | the server root — `http://host:8880` | `+ /v1/audio/speech` |
418
+ | Self-hosted Embedding | the **OpenAI base**, `/v1` included — `http://host:8080/v1` | `+ /embeddings` |
419
+
420
+ > **Mind the `/v1` on embeddings.** The adapter appends `/embeddings`, so
421
+ > `http://host:8080` resolves to `http://host:8080/embeddings` and misses the
422
+ > OpenAI route — llama-server answers **501**. Give it the same base URL an OpenAI
423
+ > client would use. A full `.../v1/embeddings` is also accepted, so a value pasted
424
+ > from a `curl` example works too.
425
+
426
+ The API key is not checked by most local servers, but the field must be non-empty:
427
+ it is what gives the connection a credentials record, and `baseUrl` lives there.
428
+ Any placeholder works.
429
+
430
+ Self-hosted Embedding has **no cloud fallback by design** — a connection saved
431
+ without a `baseUrl` is reported as a configuration error rather than quietly
432
+ falling back to `api.openai.com`, which would send your input text and API key to
433
+ a third party under a provider named "Self-hosted".
434
+
365
435
  ---
366
436
 
367
437
  ## 🔀 Token Rotate — Bypass Quota Limits Automatically
@@ -656,7 +726,7 @@ Prerequisites: MITM Server running + DNS redirected
656
726
  ✅ **9Router software = FREE forever** (open source, never charges)
657
727
  ✅ **Dashboard "costs" = Display/tracking only** (not actual bills)
658
728
  ✅ **You pay providers directly** (subscriptions or API fees)
659
- ✅ **FREE providers stay FREE** (iFlow, Kiro, Qwen = $0 unlimited)
729
+ ✅ **FREE providers stay FREE** (Kiro ~50 credits/mo, OpenCode Free, Vertex $300 credits = $0 within free-tier limits) — note iFlow/Qwen/Gemini CLI free tiers were discontinued in 2026
660
730
  ❌ **9Router never sends invoices** or charges your card
661
731
 
662
732
  **How Cost Display Works:**
@@ -671,7 +741,7 @@ Dashboard Display:
671
741
  • Display Cost: $290
672
742
 
673
743
  Reality Check:
674
- • Provider: iFlow (FREE unlimited)
744
+ • Provider: Kiro (free tier: ~50 credits/mo)
675
745
  • Actual Payment: $0.00
676
746
  • What $290 Means: Amount you SAVED by using free models!
677
747
  ```
@@ -708,7 +778,7 @@ vs. $20 + hitting limits = frustration
708
778
  **Solution:**
709
779
  ```
710
780
  Combo: "free-forever"
711
- 1. kr/claude-sonnet-4.5 (Claude 4.5 free unlimited)
781
+ 1. kr/claude-sonnet-4.5 (Claude 4.5 free via Kiro, ~50 credits/mo)
712
782
  2. kr/glm-5 (GLM-5 free via Kiro)
713
783
  3. oc/<auto> (OpenCode Free, no auth)
714
784
 
@@ -727,7 +797,7 @@ Combo: "always-on"
727
797
  2. cx/gpt-5.5 (second subscription)
728
798
  3. glm/glm-5.1 (cheap, resets daily)
729
799
  4. minimax/MiniMax-M2.7 (cheapest, 5h reset)
730
- 5. kr/claude-sonnet-4.5 (free unlimited)
800
+ 5. kr/claude-sonnet-4.5 (free via Kiro, ~50 credits/mo)
731
801
 
732
802
  Result: 5 layers of fallback = zero downtime
733
803
  Monthly cost: $20-200 (subscriptions) + $10-20 (backup)
@@ -759,7 +829,7 @@ The dashboard tracks your token usage and displays **estimated costs** as if you
759
829
 
760
830
  **Example:**
761
831
  - **Dashboard shows:** "$290 total cost"
762
- - **Reality:** You're using iFlow (FREE unlimited)
832
+ - **Reality:** You're using Kiro free models (~50 credits/mo)
763
833
  - **Your actual cost:** **$0.00**
764
834
  - **What $290 means:** Amount you **saved** by using free models instead of paid APIs!
765
835
 
@@ -784,19 +854,19 @@ The cost display is a "savings tracker" to help you understand your usage patter
784
854
  <details>
785
855
  <summary><b>🆓 Are FREE providers really unlimited?</b></summary>
786
856
 
787
- **Yes!** The current FREE providers (Kiro, OpenCode Free, Vertex) are genuinely free with **no hidden charges**.
857
+ **Mostly!** The current FREE providers (Kiro, OpenCode Free, Vertex) are genuinely free, but free tiers have limits:
788
858
 
789
859
  These are free services offered by those respective companies:
790
860
  - **Kiro AI**: Free unlimited Claude 4.5 + GLM-5 + MiniMax via AWS Builder ID / Google / GitHub OAuth
791
861
  - **OpenCode Free**: No-auth passthrough proxy, models auto-fetched from `opencode.ai/zen/v1/models`
792
862
  - **Vertex AI**: $300 free credits for new Google Cloud accounts (90 days)
793
863
 
794
- 9Router just routes your requests to them - there's no "catch" or future billing. They're truly free services, and 9Router makes them easy to use with fallback support.
864
+ 9Router just routes your requests to them - there's no "catch" or future billing from 9Router itself. They're truly free services, and 9Router makes them easy to use with fallback support.
795
865
 
796
866
  **Discontinued free tiers (no longer recommended):**
797
867
  - ❌ **iFlow**: Was free unlimited, now changed to paid (2026)
798
- - ❌ **Qwen Code**: Free OAuth tier discontinued by Alibaba on 2026-04-15
799
- - ❌ **Gemini CLI**: Still works, but using it with non-CLI tools (Claude, Codex, Cursor...) may result in account bans only use if you stick to Gemini CLI itself
868
+ - ❌ **Qwen Code**: Free OAuth tier fully discontinued by Alibaba on 2026-04-15
869
+ - ❌ **Gemini CLI**: Service fully shut down by Google on 2026-06-18 (replaced by the closed-source Antigravity CLI). Discontinueddo not use.
800
870
 
801
871
  </details>
802
872
 
@@ -807,9 +877,9 @@ These are free services offered by those respective companies:
807
877
 
808
878
  1. **Start with 100% free combo:**
809
879
  ```
810
- 1. gc/gemini-3-flash (180K/month free from Google)
811
- 2. if/kimi-k2-thinking (unlimited free from iFlow)
812
- 3. qw/qwen3-coder-plus (unlimited free from Qwen)
880
+ 1. kr/glm-5 (GLM-5 free via Kiro, ~50 credits/mo)
881
+ 2. OpenCode Free models (no auth, auto-fetched)
882
+ 3. Vertex AI Gemini 3 Pro (using the Vertex AI Studio endpoint with $300 credits)
813
883
  ```
814
884
  **Cost: $0/month**
815
885
 
@@ -1032,7 +1102,7 @@ Monthly cost example (100M tokens):
1032
1102
  ```
1033
1103
  Name: free-combo
1034
1104
  Models:
1035
- 1. kr/claude-sonnet-4.5 (Claude 4.5 free unlimited)
1105
+ 1. kr/claude-sonnet-4.5 (Claude 4.5 free via Kiro, ~50 credits/mo)
1036
1106
  2. kr/glm-5 (GLM-5 free via Kiro)
1037
1107
  3. vertex/gemini-3.1-pro-preview ($300 free credits)
1038
1108
 
@@ -1 +1 @@
1
- lo-GnJQxxRLdCvA2oang1
1
+ zErBl-HUgBtz1iz9LeFt5
@@ -116,56 +116,57 @@
116
116
  "/api/cli-tools/cursor-byok/jobs/[jobId]/sudo/route": "/api/cli-tools/cursor-byok/jobs/[jobId]/sudo",
117
117
  "/api/cli-tools/cursor-byok/jobs/route": "/api/cli-tools/cursor-byok/jobs",
118
118
  "/api/cli-tools/cursor-byok/route": "/api/cli-tools/cursor-byok",
119
- "/api/donate/route": "/api/donate",
119
+ "/api/cli-tools/devin-settings/route": "/api/cli-tools/devin-settings",
120
120
  "/api/combos/route": "/api/combos",
121
121
  "/api/headroom/extras/route": "/api/headroom/extras",
122
- "/api/headroom/restart/route": "/api/headroom/restart",
123
- "/api/headroom/start/route": "/api/headroom/start",
122
+ "/api/donate/route": "/api/donate",
124
123
  "/api/headroom/proxy/[...path]/route": "/api/headroom/proxy/[...path]",
125
124
  "/api/headroom/status/route": "/api/headroom/status",
125
+ "/api/headroom/start/route": "/api/headroom/start",
126
126
  "/api/headroom/stop/route": "/api/headroom/stop",
127
+ "/api/headroom/restart/route": "/api/headroom/restart",
127
128
  "/api/keys/[id]/reset-usage/route": "/api/keys/[id]/reset-usage",
128
- "/api/keys/route": "/api/keys",
129
129
  "/api/keys/[id]/usage/route": "/api/keys/[id]/usage",
130
130
  "/api/mcp/[plugin]/message/route": "/api/mcp/[plugin]/message",
131
+ "/api/keys/route": "/api/keys",
131
132
  "/api/mcp/[plugin]/sse/route": "/api/mcp/[plugin]/sse",
132
133
  "/api/models/alias/route": "/api/models/alias",
133
134
  "/api/models/custom/route": "/api/models/custom",
134
135
  "/api/models/disabled/route": "/api/models/disabled",
135
136
  "/api/oauth/kiro/import-cli-proxy/route": "/api/oauth/kiro/import-cli-proxy",
136
- "/api/oauth/[provider]/[action]/route": "/api/oauth/[provider]/[action]",
137
137
  "/api/oauth/kiro/auto-import/route": "/api/oauth/kiro/auto-import",
138
138
  "/api/provider-nodes/route": "/api/provider-nodes",
139
139
  "/api/providers/[id]/route": "/api/providers/[id]",
140
- "/api/providers/suggested-models/route": "/api/providers/suggested-models",
141
140
  "/api/providers/client/route": "/api/providers/client",
141
+ "/api/oauth/[provider]/[action]/route": "/api/oauth/[provider]/[action]",
142
142
  "/api/providers/route": "/api/providers",
143
- "/api/proxy-pools/[id]/route": "/api/proxy-pools/[id]",
143
+ "/api/providers/suggested-models/route": "/api/providers/suggested-models",
144
144
  "/api/proxy-pools/[id]/test/route": "/api/proxy-pools/[id]/test",
145
+ "/api/proxy-pools/[id]/route": "/api/proxy-pools/[id]",
145
146
  "/api/proxy-pools/cloudflare-deploy/route": "/api/proxy-pools/cloudflare-deploy",
146
147
  "/api/providers/[id]/models/route": "/api/providers/[id]/models",
147
- "/api/pxpipe/health/route": "/api/pxpipe/health",
148
+ "/api/proxy-pools/route": "/api/proxy-pools",
148
149
  "/api/proxy-pools/deno-deploy/route": "/api/proxy-pools/deno-deploy",
149
- "/api/pxpipe/logs/route": "/api/pxpipe/logs",
150
- "/api/proxy-pools/vercel-deploy/route": "/api/proxy-pools/vercel-deploy",
150
+ "/api/pxpipe/health/route": "/api/pxpipe/health",
151
151
  "/api/pxpipe/install/route": "/api/pxpipe/install",
152
152
  "/api/pxpipe/restart/route": "/api/pxpipe/restart",
153
- "/api/proxy-pools/route": "/api/proxy-pools",
154
- "/api/pxpipe/start/route": "/api/pxpipe/start",
153
+ "/api/pxpipe/logs/route": "/api/pxpipe/logs",
154
+ "/api/proxy-pools/vercel-deploy/route": "/api/proxy-pools/vercel-deploy",
155
155
  "/api/pxpipe/stats/route": "/api/pxpipe/stats",
156
- "/api/pxpipe/status/route": "/api/pxpipe/status",
157
156
  "/api/pxpipe/stop/route": "/api/pxpipe/stop",
158
- "/api/settings/database/route": "/api/settings/database",
157
+ "/api/pxpipe/status/route": "/api/pxpipe/status",
158
+ "/api/pxpipe/start/route": "/api/pxpipe/start",
159
159
  "/api/settings/database/selective/route": "/api/settings/database/selective",
160
160
  "/api/settings/proxy-test/route": "/api/settings/proxy-test",
161
- "/api/settings/route": "/api/settings",
161
+ "/api/settings/database/route": "/api/settings/database",
162
162
  "/api/translator/console-logs/stream/route": "/api/translator/console-logs/stream",
163
- "/api/usage/[connectionId]/codex-reset-credits/route": "/api/usage/[connectionId]/codex-reset-credits",
163
+ "/api/settings/route": "/api/settings",
164
164
  "/api/usage/stats/route": "/api/usage/stats",
165
+ "/api/usage/[connectionId]/codex-reset-credits/route": "/api/usage/[connectionId]/codex-reset-credits",
166
+ "/api/v1/audio/transcriptions/route": "/api/v1/audio/transcriptions",
165
167
  "/api/usage/report/route": "/api/usage/report",
166
- "/api/usage/[connectionId]/route": "/api/usage/[connectionId]",
167
168
  "/api/usage/stream/route": "/api/usage/stream",
168
- "/api/v1/audio/transcriptions/route": "/api/v1/audio/transcriptions",
169
+ "/api/usage/[connectionId]/route": "/api/usage/[connectionId]",
169
170
  "/api/v1/models/route": "/api/v1/models",
170
171
  "/api/v1beta/models/[...path]/route": "/api/v1beta/models/[...path]",
171
172
  "/callback/page": "/callback",
@@ -192,8 +193,8 @@
192
193
  "/(dashboard)/dashboard/translator/page": "/dashboard/translator",
193
194
  "/(dashboard)/dashboard/usage/page": "/dashboard/usage",
194
195
  "/(dashboard)/dashboard/console-log/page": "/dashboard/console-log",
196
+ "/(dashboard)/dashboard/profile/page": "/dashboard/profile",
195
197
  "/(dashboard)/dashboard/providers/page": "/dashboard/providers",
196
198
  "/(dashboard)/dashboard/proxy-pools/page": "/dashboard/proxy-pools",
197
- "/(dashboard)/dashboard/providers/[id]/page": "/dashboard/providers/[id]",
198
- "/(dashboard)/dashboard/profile/page": "/dashboard/profile"
199
+ "/(dashboard)/dashboard/providers/[id]/page": "/dashboard/providers/[id]"
199
200
  }
@@ -4,11 +4,11 @@
4
4
  ],
5
5
  "devFiles": [],
6
6
  "lowPriorityFiles": [
7
- "static/lo-GnJQxxRLdCvA2oang1/_buildManifest.js",
8
- "static/lo-GnJQxxRLdCvA2oang1/_ssgManifest.js"
7
+ "static/zErBl-HUgBtz1iz9LeFt5/_buildManifest.js",
8
+ "static/zErBl-HUgBtz1iz9LeFt5/_ssgManifest.js"
9
9
  ],
10
10
  "rootMainFiles": [
11
- "static/chunks/webpack-121fdf903e7acc97.js",
11
+ "static/chunks/webpack-6b46812a5ae291a1.js",
12
12
  "static/chunks/4bd1b696-e356ca5ba0218e27.js",
13
13
  "static/chunks/3794-154456079185e990.js",
14
14
  "static/chunks/main-app-2284d70b9972b6b7.js"
@@ -640,8 +640,8 @@
640
640
  "dynamicRoutes": {},
641
641
  "notFoundRoutes": [],
642
642
  "preview": {
643
- "previewModeId": "abb085cc56304531ce50ec1618a36326",
644
- "previewModeSigningKey": "12a5e36abc507e7abcbb6087433338431053e4623450491985fcf2274f82af80",
645
- "previewModeEncryptionKey": "66eb585cf1267223dd5fdbd26745489c603eae9ae2eb701079c427935e757f55"
643
+ "previewModeId": "624553be274948c51edecce6457944f2",
644
+ "previewModeSigningKey": "0208148034d6d16e83bcfed486e21ef38e6973ee7ff953d913f737b70c8af67a",
645
+ "previewModeEncryptionKey": "34d2a45c5555f14adc745285cb2bcdfe487edbfd9361333fbfb83d7843e3716e"
646
646
  }
647
647
  }
@@ -9,9 +9,9 @@
9
9
  "id": 63521,
10
10
  "files": [
11
11
  "static/css/599369d853c61df7.css",
12
- "static/chunks/1a258343.5938f676ed376386.js",
12
+ "static/chunks/1a258343.e25ce4decd2c9ea4.js",
13
13
  "static/chunks/6357.a3077111f8160c08.js",
14
- "static/chunks/3521.8dce45f121472d5c.js"
14
+ "static/chunks/3521.a9e2daf685420cc7.js"
15
15
  ]
16
16
  }
17
17
  }
@@ -387,7 +387,8 @@
387
387
  ".next/BUILD_ID",
388
388
  ".next/server/next-font-manifest.js",
389
389
  ".next/server/next-font-manifest.json",
390
- ".next/required-server-files.json"
390
+ ".next/required-server-files.json",
391
+ ".next/server/instrumentation.js"
391
392
  ],
392
393
  "ignore": []
393
394
  }
@@ -457,6 +457,12 @@
457
457
  "routeKeys": {},
458
458
  "namedRegex": "^/api/cli\\-tools/deepseek\\-tui\\-settings(?:/)?$"
459
459
  },
460
+ {
461
+ "page": "/api/cli-tools/devin-settings",
462
+ "regex": "^/api/cli\\-tools/devin\\-settings(?:/)?$",
463
+ "routeKeys": {},
464
+ "namedRegex": "^/api/cli\\-tools/devin\\-settings(?:/)?$"
465
+ },
460
466
  {
461
467
  "page": "/api/cli-tools/droid-settings",
462
468
  "regex": "^/api/cli\\-tools/droid\\-settings(?:/)?$",
@@ -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")},643:a=>{"use strict";a.exports=require("node:perf_hooks")},1708:a=>{"use strict";a.exports=require("node:process")},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")},4573:a=>{"use strict";a.exports=require("node:buffer")},7066:a=>{"use strict";a.exports=require("node:tty")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},12412:a=>{"use strict";a.exports=require("assert")},12933:(a,b,c)=>{"use strict";c.r(b),c.d(b,{__next_app__:()=>M,handler:()=>O,routeModule:()=>N});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(63747),o=c(24235),p=c(23938),q=c(261),r=c(66758),s=c(77243),t=c(26713),u=c(37527),v=c(22820),w=c(88216),x=c(47929),y=c(79551),z=c(71797),A=c(89125),B=c(86439),C=c(77068),D=c(27269),E=c(61287),F=c(81494),G=c(70722),H=c(70753),I=c(43954),J=c(17891),K={};for(let a in E)0>["default","__next_app__","routeModule","handler"].indexOf(a)&&(K[a]=()=>E[a]);c.d(b,K);let L={children:["",{children:["(dashboard)",{children:["dashboard",{children:["basic-chat",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,40551)),"/Users/cuongquach/projects/vibe/n9router/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)),"/Users/cuongquach/projects/vibe/n9router/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,50385)),"/Users/cuongquach/projects/vibe/n9router/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,M={require:c,loadChunk:()=>Promise.resolve()},N=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/(dashboard)/dashboard/basic-chat/page",pathname:"/dashboard/basic-chat",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:L},distDir:".next",relativeProjectDir:""});async function O(a,b,d){var K,P,Q,R,S;d.requestMeta&&(0,h.setRequestMeta)(a,d.requestMeta),N.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let T=!!(0,h.getRequestMeta)(a,"minimalMode"),U="/(dashboard)/dashboard/basic-chat/page";"/index"===U&&(U="/");let V=await N.prepare(a,b,{srcPage:U,multiZoneDraftMode:!1});if(!V)return b.statusCode=400,b.end("Bad Request"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let{buildId:W,query:X,params:Y,pageIsDynamic:Z,buildManifest:$,nextFontManifest:_,reactLoadableManifest:aa,serverActionsManifest:ab,clientReferenceManifest:ac,subresourceIntegrityManifest:ad,prerenderManifest:ae,isDraftMode:af,resolvedPathname:ag,revalidateOnlyGenerated:ah,routerServerContext:ai,nextConfig:aj,parsedUrl:ak,interceptionRoutePatterns:al,deploymentId:am,clientAssetToken:an}=V,ao=(0,q.normalizeAppPath)(U),{isOnDemandRevalidate:ap}=V,aq=aj.experimental.ppr&&!aj.cacheComponents&&(0,I.isInterceptionRouteAppPath)(ag)?null:N.match(ag,ae),ar=(null==aq?void 0:aq.route)??null,as=!!ae.routes[ag],at=a.headers["user-agent"]||"",au=(0,t.getBotType)(at),av=(0,p.isHtmlBotRequest)(a),aw=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[s.NEXT_ROUTER_PREFETCH_HEADER],ax=(0,h.getRequestMeta)(a,"isRSCRequest")??!!a.headers[s.RSC_HEADER],ay=(0,r.getIsPossibleServerAction)(a),az=(0,m.checkIsAppPPREnabled)(aj.experimental.ppr),aA=a.headers[x.NEXT_RESUME_STATE_LENGTH_HEADER];if(!(0,h.getRequestMeta)(a,"postponed")&&T&&az&&ay&&aA&&"string"==typeof aA){let e=parseInt(aA,10),{maxPostponedStateSize:f,maxPostponedStateSizeBytes:g}=(0,D.getMaxPostponedStateSize)(aj.experimental.maxPostponedStateSize);if(!isNaN(e)&&e>0){if(e>g)return b.statusCode=413,b.end((0,D.getPostponedStateExceededErrorMessage)(f)),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let i="1 MB",j=(null==(S=aj.experimental.serverActions)?void 0:S.bodySizeLimit)??i,k=e+(j!==i?c(95726).parse(j):1048576),l=await (0,D.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")&&az&&"1"===a.headers[x.NEXT_RESUME_HEADER]&&"POST"===a.method){let{maxPostponedStateSize:c,maxPostponedStateSizeBytes:e}=(0,D.getMaxPostponedStateSize)(aj.experimental.maxPostponedStateSize),f=await (0,D.readBodyWithSizeLimit)(a,e);if(null===f)return b.statusCode=413,b.end((0,D.getPostponedStateExceededErrorMessage)(c)),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let g=f.toString("utf8");(0,h.addRequestMeta)(a,"postponed",g)}let aB=!0===N.isDev||!0===aj.experimental.exposeTestingApiInProductionBuild,aC=aB&&("1"===a.headers[s.NEXT_INSTANT_PREFETCH_HEADER]||void 0===a.headers[s.RSC_HEADER]&&"string"==typeof a.headers.cookie&&a.headers.cookie.includes(s.NEXT_INSTANT_TEST_COOKIE+"=")),aD=(az||aC)&&((null==(K=ae.routes[ao]??ae.dynamicRoutes[ao])?void 0:K.renderingMode)==="PARTIALLY_STATIC"||aC&&(aB||(null==ai?void 0:ai.experimentalTestProxy)===!0)),aE=aC&&aD,aF=aE&&!0===N.isDev,aG=!1,aH=aD?(0,h.getRequestMeta)(a,"postponed"):void 0,aI=null==(P=ae.routes[ag])?void 0:P.prefetchDataRoute,aJ=aD&&ax&&!aw&&!aI;T&&(aJ=aJ&&!!aH);let aK=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),aL=(!au||!aD)&&(!at||(0,p.shouldServeStreamingMetadata)(at,aj.htmlLimitedBots)),aM=!!((ar||as||ae.routes[ao])&&!(au&&aD)),aN=aD&&!0===aj.cacheComponents,aO=!0===N.isDev||!aM||"string"==typeof aH||(aN&&(0,h.getRequestMeta)(a,"onCacheEntryV2")?aJ&&!T:aJ),aP=!!au&&aD,aQ=(null==ar?void 0:ar.remainingPrerenderableParams)??[],aR=(null==ar?void 0:ar.fallback)===null&&((null==(Q=ar.fallbackRootParams)?void 0:Q.length)??0)>0,aS=null;if(!af&&aM&&!aO&&!ay&&!aH&&!aJ){let a=aq?"string"==typeof(null==ar?void 0:ar.fallback)?ar.fallback:aq.source:null;if(!0===aj.experimental.partialFallbacks&&a&&(null==ar?void 0:ar.fallbackRouteParams)&&!aR){if(aQ.length>0){let b,c=(b=new Map(aQ.map(a=>[a.paramName,a])),a.split("/").map(a=>{let c=(0,J.getSegmentParam)(a);if(!c)return a;let d=b.get(c.paramName);if(!d)return a;let e=null==Y?void 0:Y[d.paramName];if(!e)return a;let f=Array.isArray(e)?e.map(a=>encodeURIComponent(a)).join("/"):encodeURIComponent(e);return a.replace(function(a){let{repeat:b,optional:c}=(0,J.getParamProperties)(a.paramType);return c?`[[...${a.paramName}]]`:b?`[...${a.paramName}]`:`[${a.paramName}]`}(d),f)}).join("/")||"/");aS=c!==a?c:null}}else aS=ag}let aT=aS;!aT&&(N.isDev||aM&&Z&&(null==ar?void 0:ar.fallbackRouteParams)&&!ay)&&(aT=ag),N.isDev||af||!aM||!ax||aJ||(0,k.d)(a.headers);let aU={...E,tree:L,handler:O,routeModule:N,__next_app__:M};ab&&ac&&(0,o.setManifestsSingleton)({page:U,clientReferenceManifest:ac,serverActionsManifest:ab});let aV=a.method||"GET",aW=(0,g.getTracer)(),aX=aW.getActiveScopeSpan(),aY=!!(null==ai?void 0:ai.isWrappedByNextServer),aZ=!0===aj.experimental.partialFallbacks&&aQ.length>0?(null==ar||null==(R=ar.fallbackRouteParams)?void 0:R.filter(a=>!aQ.some(b=>b.paramName===a.paramName)))??[]:[],a$=async()=>((null==ai?void 0:ai.render404)?await ai.render404(a,b,ak,!1):b.end("This page could not be found"),null);try{let f,k=N.getVaryHeader(ag,al);b.setHeader("Vary",k);let m=async(c,d)=>{let e=new l.NodeNextRequest(a),g=new l.NodeNextResponse(b);return N.render(e,g,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let a=aW.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=`${aV} ${d}`;c.setAttributes({"next.route":d,"http.route":d,"next.span_name":a}),c.updateName(a),f&&f!==c&&(f.setAttribute("http.route",d),f.updateName(a))}else c.updateName(`${aV} ${U}`)})},o=(0,h.getRequestMeta)(a,"incrementalCache")||await N.getIncrementalCache(a,aj,ae,T);null==o||o.resetRequestCache(),globalThis.__incrementalCache=o;let p=async({span:e,postponed:f,fallbackRouteParams:g,forceStaticRender:i})=>{let k={query:X,params:Y,page:ao,sharedContext:{buildId:W,deploymentId:am,clientAssetToken:an},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aU,Component:(0,j.T)(aU),params:Y,routeModule:N,page:U,postponed:f,shouldWaitOnAllReady:aP,serveStreamingMetadata:aL,supportsDynamicResponse:"string"==typeof f||aO,buildManifest:$,nextFontManifest:_,reactLoadableManifest:aa,subresourceIntegrityManifest:ad,setCacheStatus:null==ai?void 0:ai.setCacheStatus,setIsrStatus:null==ai?void 0:ai.setIsrStatus,setReactDebugChannel:null==ai?void 0:ai.setReactDebugChannel,sendErrorsToBrowser:null==ai?void 0:ai.sendErrorsToBrowser,dir:c(33873).join(process.cwd(),N.relativeProjectDir),isDraftMode:af,botType:au,isOnDemandRevalidate:ap,isPossibleServerAction:ay,assetPrefix:aj.assetPrefix,nextConfigOutput:aj.output,crossOrigin:aj.crossOrigin,trailingSlash:aj.trailingSlash,images:aj.images,previewProps:ae.preview,enableTainting:aj.experimental.taint,htmlLimitedBots:aj.htmlLimitedBots,reactMaxHeadersLength:aj.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:o,cacheLifeProfiles:aj.cacheLife,basePath:aj.basePath,serverActions:aj.experimental.serverActions,logServerFunctions:"object"==typeof aj.logging&&!!aj.logging.serverFunctions,...aE||aF||aG?{isBuildTimePrerendering:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isDebugDynamicAccesses:aF}:{},cacheComponents:!!aj.cacheComponents,experimental:{isRoutePPREnabled:aD,expireTime:aj.expireTime,staleTimes:aj.experimental.staleTimes,dynamicOnHover:!!aj.experimental.dynamicOnHover,optimisticRouting:!!aj.experimental.optimisticRouting,inlineCss:!!aj.experimental.inlineCss,prefetchInlining:aj.experimental.prefetchInlining??!1,authInterrupts:!!aj.experimental.authInterrupts,cachedNavigations:!!aj.experimental.cachedNavigations,clientTraceMetadata:aj.experimental.clientTraceMetadata||[],clientParamParsingOrigins:aj.experimental.clientParamParsingOrigins,maxPostponedStateSizeBytes:(0,C.parseMaxPostponedStateSize)(aj.experimental.maxPostponedStateSize)},waitUntil:d.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d,e)=>N.onRequestError(a,b,d,e,ai),err:(0,h.getRequestMeta)(a,"invokeError")}};i&&(k.renderOpts.supportsDynamicResponse=!1);let l=await m(e,k),{metadata:n}=l,{cacheControl:p,headers:q={},fetchTags:r,fetchMetrics:s}=n;if(r&&(q[x.NEXT_CACHE_TAGS_HEADER]=r),a.fetchMetrics=s,aM&&(null==p?void 0:p.revalidate)===0&&!N.isDev&&!aD){let a=n.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${ag}${(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:u.CachedRouteKind.APP_PAGE,html:l,headers:q,rscData:n.flightData,postponed:n.postponed,status:n.statusCode,segmentData:n.segmentData},cacheControl:p}},q=async({hasResolved:c,previousCacheEntry:f,isRevalidating:g,span:i,forceStaticRender:j=!1})=>{let k,l=!1===N.isDev,m=c||b.writableEnded;if(ap&&ah&&!f&&!T)return(null==ai?void 0:ai.render404)?await ai.render404(a,b):(b.statusCode=404,b.end("This page could not be found")),null;if(ar&&(k=(0,v.parseFallbackField)(ar.fallback)),!0===aj.experimental.partialFallbacks&&(null==ar?void 0:ar.fallback)===null&&!aR&&aQ.length>0&&(k=v.FallbackMode.PRERENDER),k===v.FallbackMode.PRERENDER&&(0,t.isBot)(at)&&(!aD||av)&&(k=v.FallbackMode.BLOCKING_STATIC_RENDER),(null==f?void 0:f.isStale)===-1&&(ap=!0),ap&&(k!==v.FallbackMode.NOT_FOUND||f)&&(k=v.FallbackMode.BLOCKING_STATIC_RENDER),!T&&k!==v.FallbackMode.BLOCKING_STATIC_RENDER&&aT&&!m&&!af&&Z&&(l||!as)){if((l||ar)&&k===v.FallbackMode.NOT_FOUND){if(aj.adapterPath)return await a$();throw new B.NoFallbackError}if(aD&&(aj.cacheComponents?!aJ:!ax)){let b=l&&"string"==typeof(null==ar?void 0:ar.fallback)?ar.fallback:ao,f=(l||aE)&&(null==ar?void 0:ar.fallbackRouteParams)?(0,n.createOpaqueFallbackRouteParams)(ar.fallbackRouteParams):aG?(0,n.getFallbackRouteParams)(ao,N):null;aE&&f&&(0,h.addRequestMeta)(a,"fallbackParams",f);let g=await N.handleResponse({cacheKey:b,req:a,nextConfig:aj,routeKind:e.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:ae,isRoutePPREnabled:aD,responseGenerator:async()=>p({span:i,postponed:void 0,fallbackRouteParams:f,forceStaticRender:!0}),waitUntil:d.waitUntil,isMinimalMode:T});if(null===g)return null;if(g)return T||!aD||!(aQ.length>0)||!0!==aj.experimental.partialFallbacks||!aS||!o||ap||aG||aB||aC||aw||(0,H.scheduleOnNextTick)(async()=>{let b=N.getResponseCache(a);try{await b.revalidate(aS,o,aD,!1,a=>p({span:a.span,postponed:void 0,fallbackRouteParams:aZ.length>0?(0,n.createOpaqueFallbackRouteParams)(aZ):null,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}),delete g.cacheControl,g}}let r=ap||g||!aH?void 0:aH;if(aN&&!T&&o&&(aJ||ay)&&!j){let b=await o.get(ag,{kind:u.IncrementalCacheKind.APP_PAGE,isRoutePPREnabled:!0,isFallback:!1});b&&b.value&&b.value.kind===u.CachedRouteKind.APP_PAGE&&(r=b.value.postponed,b&&(-1===b.isStale||!0===b.isStale)&&(0,H.scheduleOnNextTick)(async()=>{let b=N.getResponseCache(a);try{await b.revalidate(ag,o,aD,!1,a=>q({...a,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}))}if((aE||aF)&&void 0!==r)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:u.CachedRouteKind.PAGES,html:w.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let s=(l&&(0,h.getRequestMeta)(a,"renderFallbackShell")||aE&&!as)&&(null==ar?void 0:ar.fallbackRouteParams)?(0,n.createOpaqueFallbackRouteParams)(ar.fallbackRouteParams):aG?(0,n.getFallbackRouteParams)(ao,N):null;if((l||aE)&&aj.cacheComponents&&!as&&(null==ar?void 0:ar.fallbackRouteParams)){let b=(0,n.createOpaqueFallbackRouteParams)(ar.fallbackRouteParams);b&&(0,h.addRequestMeta)(a,"fallbackParams",b)}return p({span:i,postponed:r,fallbackRouteParams:s,forceStaticRender:j})},r=async c=>{var f,g,i,j,k;let l,m=await N.handleResponse({cacheKey:aS,responseGenerator:a=>q({span:c,...a}),routeKind:e.RouteKind.APP_PAGE,isOnDemandRevalidate:ap,isRoutePPREnabled:aD,req:a,nextConfig:aj,prerenderManifest:ae,waitUntil:d.waitUntil,isMinimalMode:T});if(af&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),N.isDev&&b.setHeader("Cache-Control","no-cache, must-revalidate"),!m){if(aS)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=m.value)?void 0:f.kind)!==u.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(i=m.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let n="string"==typeof m.value.postponed;ax&&!ay&&am&&b.setHeader(x.NEXT_NAV_DEPLOYMENT_ID_HEADER,am),aM&&!aJ&&(!n||aw)&&(T||b.setHeader("x-nextjs-cache",ap?"REVALIDATED":m.isMiss?"MISS":m.isStale?"STALE":"HIT"),b.setHeader(s.NEXT_IS_PRERENDER_HEADER,"1"));let{value:o}=m;if(aH)l={revalidate:0,expire:void 0};else if(aJ)l={revalidate:0,expire:void 0};else if(!N.isDev)if(af)l={revalidate:0,expire:void 0};else if(aM){if(m.cacheControl)if("number"==typeof m.cacheControl.revalidate){if(m.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${m.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});l={revalidate:m.cacheControl.revalidate,expire:(null==(j=m.cacheControl)?void 0:j.expire)??aj.expireTime}}else l={revalidate:x.CACHE_ONE_YEAR_SECONDS,expire:void 0}}else b.getHeader("Cache-Control")||(l={revalidate:0,expire:void 0});if(m.cacheControl=l,"string"==typeof aK&&(null==o?void 0:o.kind)===u.CachedRouteKind.APP_PAGE&&o.segmentData){b.setHeader(s.NEXT_DID_POSTPONE_HEADER,"2");let c=null==(k=o.headers)?void 0:k[x.NEXT_CACHE_TAGS_HEADER];T&&aM&&c&&"string"==typeof c&&b.setHeader(x.NEXT_CACHE_TAGS_HEADER,c);let d=o.segmentData.get(aK);return void 0!==d?(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:w.default.fromStatic(d,s.RSC_CONTENT_TYPE_HEADER),cacheControl:m.cacheControl}):(b.statusCode=204,(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:w.default.EMPTY,cacheControl:m.cacheControl}))}let r=aN?(0,h.getRequestMeta)(a,"onCacheEntryV2")??(0,h.getRequestMeta)(a,"onCacheEntry"):(0,h.getRequestMeta)(a,"onCacheEntry");if(r&&await r(m,{url:(0,h.getRequestMeta)(a,"initURL")??a.url}))return null;if(o.headers){let a={...o.headers};for(let[c,d]of(T&&aM||delete a[x.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 t=null==(g=o.headers)?void 0:g[x.NEXT_CACHE_TAGS_HEADER];if(T&&aM&&t&&"string"==typeof t&&b.setHeader(x.NEXT_CACHE_TAGS_HEADER,t),!o.status||ax&&aD||(b.statusCode=o.status),!T&&o.status&&F.RedirectStatusCode[o.status]&&ax&&(b.statusCode=200),n&&!aJ&&b.setHeader(s.NEXT_DID_POSTPONE_HEADER,"1"),ax&&!af){if(void 0===o.rscData){if(o.html.contentType!==s.RSC_CONTENT_TYPE_HEADER)if(aj.cacheComponents)return b.statusCode=404,(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:w.default.EMPTY,cacheControl:m.cacheControl});else throw Object.defineProperty(new G.InvariantError(`Expected RSC response, got ${o.html.contentType}`),"__NEXT_ERROR_CODE",{value:"E789",enumerable:!1,configurable:!0});return(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:o.html,cacheControl:m.cacheControl})}return(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:w.default.fromStatic(o.rscData,s.RSC_CONTENT_TYPE_HEADER),cacheControl:m.cacheControl})}let v=o.html;if(aC&&aE){let c=!0===N.isDev?crypto.randomUUID():null;return v.pipeThrough((0,z.createInstantTestScriptInsertionTransformStream)(c)),(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}})}if(!n||T||ax)return(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:v,cacheControl:m.cacheControl});if(aE||aF)return v.push(new ReadableStream({start(a){a.enqueue(y.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}});let B=new TransformStream;return v.push(B.readable),p({span:c,postponed:o.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)!==u.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(B.writable)}).catch(a=>{B.writable.abort(a).catch(a=>{console.error("couldn't abort transformer",a)})}),(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}})};if(!aY||!aX)return f=aW.getActiveScopeSpan(),await aW.withPropagatedContext(a.headers,()=>aW.trace(i.BaseServerSpan.handleRequest,{spanName:`${aV} ${U}`,kind:g.SpanKind.SERVER,attributes:{"http.method":aV,"http.target":a.url}},r),void 0,!aY);await r(aX)}catch(b){throw b instanceof B.NoFallbackError||await N.onRequestError(a,b,{routerKind:"App Router",routePath:U,routeType:"render",revalidateReason:(0,f.c)({isStaticGeneration:aM,isOnDemandRevalidate:ap})},!1,ai),b}}},14985:a=>{"use strict";a.exports=require("dns")},16698:a=>{"use strict";a.exports=require("node:async_hooks")},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")},24332:(a,b,c)=>{Promise.resolve().then(c.bind(c,73180))},26713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},27910:a=>{"use strict";a.exports=require("stream")},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")},31421:a=>{"use strict";a.exports=require("node:child_process")},32467:a=>{"use strict";a.exports=require("node:http2")},33873:a=>{"use strict";a.exports=require("path")},34589:a=>{"use strict";a.exports=require("node:assert")},37067:a=>{"use strict";a.exports=require("node:http")},37484:(a,b,c)=>{Promise.resolve().then(c.bind(c,79286))},37540:a=>{"use strict";a.exports=require("node:console")},38522:a=>{"use strict";a.exports=require("node:zlib")},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,{})}},40610:a=>{"use strict";a.exports=require("node:dns")},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},41692:a=>{"use strict";a.exports=require("node:tls")},41792:a=>{"use strict";a.exports=require("node:querystring")},43954:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/interception-routes")},48161:a=>{"use strict";a.exports=require("node:os")},51455:a=>{"use strict";a.exports=require("node:fs/promises")},53053:a=>{"use strict";a.exports=require("node:diagnostics_channel")},55511:a=>{"use strict";a.exports=require("crypto")},55591:a=>{"use strict";a.exports=require("https")},57075:a=>{"use strict";a.exports=require("node:stream")},57975:a=>{"use strict";a.exports=require("node:util")},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")},71553:a=>{"use strict";a.exports=require("node:dns/promises")},73024:a=>{"use strict";a.exports=require("node:fs")},73136:a=>{"use strict";a.exports=require("node:url")},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(92592)},73429:a=>{"use strict";a.exports=require("node:util/types")},73496:a=>{"use strict";a.exports=require("http2")},74075:a=>{"use strict";a.exports=require("zlib")},75919:a=>{"use strict";a.exports=require("node:worker_threads")},76760:a=>{"use strict";a.exports=require("node:path")},77030:a=>{"use strict";a.exports=require("node:net")},77068:a=>{"use strict";a.exports=require("next/dist/shared/lib/size-limit")},77598:a=>{"use strict";a.exports=require("node:crypto")},78474:a=>{"use strict";a.exports=require("node:events")},79286:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/cuongquach/projects/vibe/n9router/src/app/(dashboard)/dashboard/basic-chat/BasicChatPageClient.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/cuongquach/projects/vibe/n9router/src/app/(dashboard)/dashboard/basic-chat/BasicChatPageClient.js","default")},79646:a=>{"use strict";a.exports=require("child_process")},80099:a=>{"use strict";a.exports=require("node:sqlite")},81115:a=>{"use strict";a.exports=require("constants")},81630:a=>{"use strict";a.exports=require("http")},83997:a=>{"use strict";a.exports=require("tty")},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{"use strict";a.exports=require("better-sqlite3")},87997:a=>{"use strict";a.exports=require("node:timers")},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,7502,7774,5433,7181,63,7912,2251,9718,2056,6070,3943,8920,6306,4989,2701,8833,318,8895,4676,3481,8271,6457,3588,8056,6777,412,6292],()=>b(b.s=12933));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")},643:a=>{"use strict";a.exports=require("node:perf_hooks")},1708:a=>{"use strict";a.exports=require("node:process")},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")},4573:a=>{"use strict";a.exports=require("node:buffer")},7066:a=>{"use strict";a.exports=require("node:tty")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},12290:(a,b,c)=>{"use strict";c.r(b),c.d(b,{__next_app__:()=>M,handler:()=>O,routeModule:()=>N});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(63747),o=c(24235),p=c(23938),q=c(261),r=c(66758),s=c(77243),t=c(26713),u=c(37527),v=c(22820),w=c(88216),x=c(47929),y=c(79551),z=c(71797),A=c(89125),B=c(86439),C=c(77068),D=c(27269),E=c(61287),F=c(81494),G=c(70722),H=c(70753),I=c(43954),J=c(17891),K={};for(let a in E)0>["default","__next_app__","routeModule","handler"].indexOf(a)&&(K[a]=()=>E[a]);c.d(b,K);let L={children:["",{children:["(dashboard)",{children:["dashboard",{children:["basic-chat",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,40551)),"/Users/cuongquach/projects/vibe/n9router/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)),"/Users/cuongquach/projects/vibe/n9router/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,57529)),"/Users/cuongquach/projects/vibe/n9router/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,M={require:c,loadChunk:()=>Promise.resolve()},N=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/(dashboard)/dashboard/basic-chat/page",pathname:"/dashboard/basic-chat",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:L},distDir:".next",relativeProjectDir:""});async function O(a,b,d){var K,P,Q,R,S;d.requestMeta&&(0,h.setRequestMeta)(a,d.requestMeta),N.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let T=!!(0,h.getRequestMeta)(a,"minimalMode"),U="/(dashboard)/dashboard/basic-chat/page";"/index"===U&&(U="/");let V=await N.prepare(a,b,{srcPage:U,multiZoneDraftMode:!1});if(!V)return b.statusCode=400,b.end("Bad Request"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let{buildId:W,query:X,params:Y,pageIsDynamic:Z,buildManifest:$,nextFontManifest:_,reactLoadableManifest:aa,serverActionsManifest:ab,clientReferenceManifest:ac,subresourceIntegrityManifest:ad,prerenderManifest:ae,isDraftMode:af,resolvedPathname:ag,revalidateOnlyGenerated:ah,routerServerContext:ai,nextConfig:aj,parsedUrl:ak,interceptionRoutePatterns:al,deploymentId:am,clientAssetToken:an}=V,ao=(0,q.normalizeAppPath)(U),{isOnDemandRevalidate:ap}=V,aq=aj.experimental.ppr&&!aj.cacheComponents&&(0,I.isInterceptionRouteAppPath)(ag)?null:N.match(ag,ae),ar=(null==aq?void 0:aq.route)??null,as=!!ae.routes[ag],at=a.headers["user-agent"]||"",au=(0,t.getBotType)(at),av=(0,p.isHtmlBotRequest)(a),aw=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[s.NEXT_ROUTER_PREFETCH_HEADER],ax=(0,h.getRequestMeta)(a,"isRSCRequest")??!!a.headers[s.RSC_HEADER],ay=(0,r.getIsPossibleServerAction)(a),az=(0,m.checkIsAppPPREnabled)(aj.experimental.ppr),aA=a.headers[x.NEXT_RESUME_STATE_LENGTH_HEADER];if(!(0,h.getRequestMeta)(a,"postponed")&&T&&az&&ay&&aA&&"string"==typeof aA){let e=parseInt(aA,10),{maxPostponedStateSize:f,maxPostponedStateSizeBytes:g}=(0,D.getMaxPostponedStateSize)(aj.experimental.maxPostponedStateSize);if(!isNaN(e)&&e>0){if(e>g)return b.statusCode=413,b.end((0,D.getPostponedStateExceededErrorMessage)(f)),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let i="1 MB",j=(null==(S=aj.experimental.serverActions)?void 0:S.bodySizeLimit)??i,k=e+(j!==i?c(95726).parse(j):1048576),l=await (0,D.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")&&az&&"1"===a.headers[x.NEXT_RESUME_HEADER]&&"POST"===a.method){let{maxPostponedStateSize:c,maxPostponedStateSizeBytes:e}=(0,D.getMaxPostponedStateSize)(aj.experimental.maxPostponedStateSize),f=await (0,D.readBodyWithSizeLimit)(a,e);if(null===f)return b.statusCode=413,b.end((0,D.getPostponedStateExceededErrorMessage)(c)),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let g=f.toString("utf8");(0,h.addRequestMeta)(a,"postponed",g)}let aB=!0===N.isDev||!0===aj.experimental.exposeTestingApiInProductionBuild,aC=aB&&("1"===a.headers[s.NEXT_INSTANT_PREFETCH_HEADER]||void 0===a.headers[s.RSC_HEADER]&&"string"==typeof a.headers.cookie&&a.headers.cookie.includes(s.NEXT_INSTANT_TEST_COOKIE+"=")),aD=(az||aC)&&((null==(K=ae.routes[ao]??ae.dynamicRoutes[ao])?void 0:K.renderingMode)==="PARTIALLY_STATIC"||aC&&(aB||(null==ai?void 0:ai.experimentalTestProxy)===!0)),aE=aC&&aD,aF=aE&&!0===N.isDev,aG=!1,aH=aD?(0,h.getRequestMeta)(a,"postponed"):void 0,aI=null==(P=ae.routes[ag])?void 0:P.prefetchDataRoute,aJ=aD&&ax&&!aw&&!aI;T&&(aJ=aJ&&!!aH);let aK=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),aL=(!au||!aD)&&(!at||(0,p.shouldServeStreamingMetadata)(at,aj.htmlLimitedBots)),aM=!!((ar||as||ae.routes[ao])&&!(au&&aD)),aN=aD&&!0===aj.cacheComponents,aO=!0===N.isDev||!aM||"string"==typeof aH||(aN&&(0,h.getRequestMeta)(a,"onCacheEntryV2")?aJ&&!T:aJ),aP=!!au&&aD,aQ=(null==ar?void 0:ar.remainingPrerenderableParams)??[],aR=(null==ar?void 0:ar.fallback)===null&&((null==(Q=ar.fallbackRootParams)?void 0:Q.length)??0)>0,aS=null;if(!af&&aM&&!aO&&!ay&&!aH&&!aJ){let a=aq?"string"==typeof(null==ar?void 0:ar.fallback)?ar.fallback:aq.source:null;if(!0===aj.experimental.partialFallbacks&&a&&(null==ar?void 0:ar.fallbackRouteParams)&&!aR){if(aQ.length>0){let b,c=(b=new Map(aQ.map(a=>[a.paramName,a])),a.split("/").map(a=>{let c=(0,J.getSegmentParam)(a);if(!c)return a;let d=b.get(c.paramName);if(!d)return a;let e=null==Y?void 0:Y[d.paramName];if(!e)return a;let f=Array.isArray(e)?e.map(a=>encodeURIComponent(a)).join("/"):encodeURIComponent(e);return a.replace(function(a){let{repeat:b,optional:c}=(0,J.getParamProperties)(a.paramType);return c?`[[...${a.paramName}]]`:b?`[...${a.paramName}]`:`[${a.paramName}]`}(d),f)}).join("/")||"/");aS=c!==a?c:null}}else aS=ag}let aT=aS;!aT&&(N.isDev||aM&&Z&&(null==ar?void 0:ar.fallbackRouteParams)&&!ay)&&(aT=ag),N.isDev||af||!aM||!ax||aJ||(0,k.d)(a.headers);let aU={...E,tree:L,handler:O,routeModule:N,__next_app__:M};ab&&ac&&(0,o.setManifestsSingleton)({page:U,clientReferenceManifest:ac,serverActionsManifest:ab});let aV=a.method||"GET",aW=(0,g.getTracer)(),aX=aW.getActiveScopeSpan(),aY=!!(null==ai?void 0:ai.isWrappedByNextServer),aZ=!0===aj.experimental.partialFallbacks&&aQ.length>0?(null==ar||null==(R=ar.fallbackRouteParams)?void 0:R.filter(a=>!aQ.some(b=>b.paramName===a.paramName)))??[]:[],a$=async()=>((null==ai?void 0:ai.render404)?await ai.render404(a,b,ak,!1):b.end("This page could not be found"),null);try{let f,k=N.getVaryHeader(ag,al);b.setHeader("Vary",k);let m=async(c,d)=>{let e=new l.NodeNextRequest(a),g=new l.NodeNextResponse(b);return N.render(e,g,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let a=aW.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=`${aV} ${d}`;c.setAttributes({"next.route":d,"http.route":d,"next.span_name":a}),c.updateName(a),f&&f!==c&&(f.setAttribute("http.route",d),f.updateName(a))}else c.updateName(`${aV} ${U}`)})},o=(0,h.getRequestMeta)(a,"incrementalCache")||await N.getIncrementalCache(a,aj,ae,T);null==o||o.resetRequestCache(),globalThis.__incrementalCache=o;let p=async({span:e,postponed:f,fallbackRouteParams:g,forceStaticRender:i})=>{let k={query:X,params:Y,page:ao,sharedContext:{buildId:W,deploymentId:am,clientAssetToken:an},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aU,Component:(0,j.T)(aU),params:Y,routeModule:N,page:U,postponed:f,shouldWaitOnAllReady:aP,serveStreamingMetadata:aL,supportsDynamicResponse:"string"==typeof f||aO,buildManifest:$,nextFontManifest:_,reactLoadableManifest:aa,subresourceIntegrityManifest:ad,setCacheStatus:null==ai?void 0:ai.setCacheStatus,setIsrStatus:null==ai?void 0:ai.setIsrStatus,setReactDebugChannel:null==ai?void 0:ai.setReactDebugChannel,sendErrorsToBrowser:null==ai?void 0:ai.sendErrorsToBrowser,dir:c(33873).join(process.cwd(),N.relativeProjectDir),isDraftMode:af,botType:au,isOnDemandRevalidate:ap,isPossibleServerAction:ay,assetPrefix:aj.assetPrefix,nextConfigOutput:aj.output,crossOrigin:aj.crossOrigin,trailingSlash:aj.trailingSlash,images:aj.images,previewProps:ae.preview,enableTainting:aj.experimental.taint,htmlLimitedBots:aj.htmlLimitedBots,reactMaxHeadersLength:aj.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:o,cacheLifeProfiles:aj.cacheLife,basePath:aj.basePath,serverActions:aj.experimental.serverActions,logServerFunctions:"object"==typeof aj.logging&&!!aj.logging.serverFunctions,...aE||aF||aG?{isBuildTimePrerendering:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isDebugDynamicAccesses:aF}:{},cacheComponents:!!aj.cacheComponents,experimental:{isRoutePPREnabled:aD,expireTime:aj.expireTime,staleTimes:aj.experimental.staleTimes,dynamicOnHover:!!aj.experimental.dynamicOnHover,optimisticRouting:!!aj.experimental.optimisticRouting,inlineCss:!!aj.experimental.inlineCss,prefetchInlining:aj.experimental.prefetchInlining??!1,authInterrupts:!!aj.experimental.authInterrupts,cachedNavigations:!!aj.experimental.cachedNavigations,clientTraceMetadata:aj.experimental.clientTraceMetadata||[],clientParamParsingOrigins:aj.experimental.clientParamParsingOrigins,maxPostponedStateSizeBytes:(0,C.parseMaxPostponedStateSize)(aj.experimental.maxPostponedStateSize)},waitUntil:d.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d,e)=>N.onRequestError(a,b,d,e,ai),err:(0,h.getRequestMeta)(a,"invokeError")}};i&&(k.renderOpts.supportsDynamicResponse=!1);let l=await m(e,k),{metadata:n}=l,{cacheControl:p,headers:q={},fetchTags:r,fetchMetrics:s}=n;if(r&&(q[x.NEXT_CACHE_TAGS_HEADER]=r),a.fetchMetrics=s,aM&&(null==p?void 0:p.revalidate)===0&&!N.isDev&&!aD){let a=n.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${ag}${(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:u.CachedRouteKind.APP_PAGE,html:l,headers:q,rscData:n.flightData,postponed:n.postponed,status:n.statusCode,segmentData:n.segmentData},cacheControl:p}},q=async({hasResolved:c,previousCacheEntry:f,isRevalidating:g,span:i,forceStaticRender:j=!1})=>{let k,l=!1===N.isDev,m=c||b.writableEnded;if(ap&&ah&&!f&&!T)return(null==ai?void 0:ai.render404)?await ai.render404(a,b):(b.statusCode=404,b.end("This page could not be found")),null;if(ar&&(k=(0,v.parseFallbackField)(ar.fallback)),!0===aj.experimental.partialFallbacks&&(null==ar?void 0:ar.fallback)===null&&!aR&&aQ.length>0&&(k=v.FallbackMode.PRERENDER),k===v.FallbackMode.PRERENDER&&(0,t.isBot)(at)&&(!aD||av)&&(k=v.FallbackMode.BLOCKING_STATIC_RENDER),(null==f?void 0:f.isStale)===-1&&(ap=!0),ap&&(k!==v.FallbackMode.NOT_FOUND||f)&&(k=v.FallbackMode.BLOCKING_STATIC_RENDER),!T&&k!==v.FallbackMode.BLOCKING_STATIC_RENDER&&aT&&!m&&!af&&Z&&(l||!as)){if((l||ar)&&k===v.FallbackMode.NOT_FOUND){if(aj.adapterPath)return await a$();throw new B.NoFallbackError}if(aD&&(aj.cacheComponents?!aJ:!ax)){let b=l&&"string"==typeof(null==ar?void 0:ar.fallback)?ar.fallback:ao,f=(l||aE)&&(null==ar?void 0:ar.fallbackRouteParams)?(0,n.createOpaqueFallbackRouteParams)(ar.fallbackRouteParams):aG?(0,n.getFallbackRouteParams)(ao,N):null;aE&&f&&(0,h.addRequestMeta)(a,"fallbackParams",f);let g=await N.handleResponse({cacheKey:b,req:a,nextConfig:aj,routeKind:e.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:ae,isRoutePPREnabled:aD,responseGenerator:async()=>p({span:i,postponed:void 0,fallbackRouteParams:f,forceStaticRender:!0}),waitUntil:d.waitUntil,isMinimalMode:T});if(null===g)return null;if(g)return T||!aD||!(aQ.length>0)||!0!==aj.experimental.partialFallbacks||!aS||!o||ap||aG||aB||aC||aw||(0,H.scheduleOnNextTick)(async()=>{let b=N.getResponseCache(a);try{await b.revalidate(aS,o,aD,!1,a=>p({span:a.span,postponed:void 0,fallbackRouteParams:aZ.length>0?(0,n.createOpaqueFallbackRouteParams)(aZ):null,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}),delete g.cacheControl,g}}let r=ap||g||!aH?void 0:aH;if(aN&&!T&&o&&(aJ||ay)&&!j){let b=await o.get(ag,{kind:u.IncrementalCacheKind.APP_PAGE,isRoutePPREnabled:!0,isFallback:!1});b&&b.value&&b.value.kind===u.CachedRouteKind.APP_PAGE&&(r=b.value.postponed,b&&(-1===b.isStale||!0===b.isStale)&&(0,H.scheduleOnNextTick)(async()=>{let b=N.getResponseCache(a);try{await b.revalidate(ag,o,aD,!1,a=>q({...a,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}))}if((aE||aF)&&void 0!==r)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:u.CachedRouteKind.PAGES,html:w.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let s=(l&&(0,h.getRequestMeta)(a,"renderFallbackShell")||aE&&!as)&&(null==ar?void 0:ar.fallbackRouteParams)?(0,n.createOpaqueFallbackRouteParams)(ar.fallbackRouteParams):aG?(0,n.getFallbackRouteParams)(ao,N):null;if((l||aE)&&aj.cacheComponents&&!as&&(null==ar?void 0:ar.fallbackRouteParams)){let b=(0,n.createOpaqueFallbackRouteParams)(ar.fallbackRouteParams);b&&(0,h.addRequestMeta)(a,"fallbackParams",b)}return p({span:i,postponed:r,fallbackRouteParams:s,forceStaticRender:j})},r=async c=>{var f,g,i,j,k;let l,m=await N.handleResponse({cacheKey:aS,responseGenerator:a=>q({span:c,...a}),routeKind:e.RouteKind.APP_PAGE,isOnDemandRevalidate:ap,isRoutePPREnabled:aD,req:a,nextConfig:aj,prerenderManifest:ae,waitUntil:d.waitUntil,isMinimalMode:T});if(af&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),N.isDev&&b.setHeader("Cache-Control","no-cache, must-revalidate"),!m){if(aS)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=m.value)?void 0:f.kind)!==u.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(i=m.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let n="string"==typeof m.value.postponed;ax&&!ay&&am&&b.setHeader(x.NEXT_NAV_DEPLOYMENT_ID_HEADER,am),aM&&!aJ&&(!n||aw)&&(T||b.setHeader("x-nextjs-cache",ap?"REVALIDATED":m.isMiss?"MISS":m.isStale?"STALE":"HIT"),b.setHeader(s.NEXT_IS_PRERENDER_HEADER,"1"));let{value:o}=m;if(aH)l={revalidate:0,expire:void 0};else if(aJ)l={revalidate:0,expire:void 0};else if(!N.isDev)if(af)l={revalidate:0,expire:void 0};else if(aM){if(m.cacheControl)if("number"==typeof m.cacheControl.revalidate){if(m.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${m.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});l={revalidate:m.cacheControl.revalidate,expire:(null==(j=m.cacheControl)?void 0:j.expire)??aj.expireTime}}else l={revalidate:x.CACHE_ONE_YEAR_SECONDS,expire:void 0}}else b.getHeader("Cache-Control")||(l={revalidate:0,expire:void 0});if(m.cacheControl=l,"string"==typeof aK&&(null==o?void 0:o.kind)===u.CachedRouteKind.APP_PAGE&&o.segmentData){b.setHeader(s.NEXT_DID_POSTPONE_HEADER,"2");let c=null==(k=o.headers)?void 0:k[x.NEXT_CACHE_TAGS_HEADER];T&&aM&&c&&"string"==typeof c&&b.setHeader(x.NEXT_CACHE_TAGS_HEADER,c);let d=o.segmentData.get(aK);return void 0!==d?(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:w.default.fromStatic(d,s.RSC_CONTENT_TYPE_HEADER),cacheControl:m.cacheControl}):(b.statusCode=204,(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:w.default.EMPTY,cacheControl:m.cacheControl}))}let r=aN?(0,h.getRequestMeta)(a,"onCacheEntryV2")??(0,h.getRequestMeta)(a,"onCacheEntry"):(0,h.getRequestMeta)(a,"onCacheEntry");if(r&&await r(m,{url:(0,h.getRequestMeta)(a,"initURL")??a.url}))return null;if(o.headers){let a={...o.headers};for(let[c,d]of(T&&aM||delete a[x.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 t=null==(g=o.headers)?void 0:g[x.NEXT_CACHE_TAGS_HEADER];if(T&&aM&&t&&"string"==typeof t&&b.setHeader(x.NEXT_CACHE_TAGS_HEADER,t),!o.status||ax&&aD||(b.statusCode=o.status),!T&&o.status&&F.RedirectStatusCode[o.status]&&ax&&(b.statusCode=200),n&&!aJ&&b.setHeader(s.NEXT_DID_POSTPONE_HEADER,"1"),ax&&!af){if(void 0===o.rscData){if(o.html.contentType!==s.RSC_CONTENT_TYPE_HEADER)if(aj.cacheComponents)return b.statusCode=404,(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:w.default.EMPTY,cacheControl:m.cacheControl});else throw Object.defineProperty(new G.InvariantError(`Expected RSC response, got ${o.html.contentType}`),"__NEXT_ERROR_CODE",{value:"E789",enumerable:!1,configurable:!0});return(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:o.html,cacheControl:m.cacheControl})}return(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:w.default.fromStatic(o.rscData,s.RSC_CONTENT_TYPE_HEADER),cacheControl:m.cacheControl})}let v=o.html;if(aC&&aE){let c=!0===N.isDev?crypto.randomUUID():null;return v.pipeThrough((0,z.createInstantTestScriptInsertionTransformStream)(c)),(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}})}if(!n||T||ax)return(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:v,cacheControl:m.cacheControl});if(aE||aF)return v.push(new ReadableStream({start(a){a.enqueue(y.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}});let B=new TransformStream;return v.push(B.readable),p({span:c,postponed:o.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)!==u.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(B.writable)}).catch(a=>{B.writable.abort(a).catch(a=>{console.error("couldn't abort transformer",a)})}),(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}})};if(!aY||!aX)return f=aW.getActiveScopeSpan(),await aW.withPropagatedContext(a.headers,()=>aW.trace(i.BaseServerSpan.handleRequest,{spanName:`${aV} ${U}`,kind:g.SpanKind.SERVER,attributes:{"http.method":aV,"http.target":a.url}},r),void 0,!aY);await r(aX)}catch(b){throw b instanceof B.NoFallbackError||await N.onRequestError(a,b,{routerKind:"App Router",routePath:U,routeType:"render",revalidateReason:(0,f.c)({isStaticGeneration:aM,isOnDemandRevalidate:ap})},!1,ai),b}}},12412:a=>{"use strict";a.exports=require("assert")},14985:a=>{"use strict";a.exports=require("dns")},16698:a=>{"use strict";a.exports=require("node:async_hooks")},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")},24332:(a,b,c)=>{Promise.resolve().then(c.bind(c,73180))},26713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},27910:a=>{"use strict";a.exports=require("stream")},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")},31421:a=>{"use strict";a.exports=require("node:child_process")},32467:a=>{"use strict";a.exports=require("node:http2")},33873:a=>{"use strict";a.exports=require("path")},34589:a=>{"use strict";a.exports=require("node:assert")},37067:a=>{"use strict";a.exports=require("node:http")},37484:(a,b,c)=>{Promise.resolve().then(c.bind(c,79286))},37540:a=>{"use strict";a.exports=require("node:console")},38522:a=>{"use strict";a.exports=require("node:zlib")},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,{})}},40610:a=>{"use strict";a.exports=require("node:dns")},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},41692:a=>{"use strict";a.exports=require("node:tls")},41792:a=>{"use strict";a.exports=require("node:querystring")},43954:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/interception-routes")},48161:a=>{"use strict";a.exports=require("node:os")},51455:a=>{"use strict";a.exports=require("node:fs/promises")},53053:a=>{"use strict";a.exports=require("node:diagnostics_channel")},55511:a=>{"use strict";a.exports=require("crypto")},55591:a=>{"use strict";a.exports=require("https")},57075:a=>{"use strict";a.exports=require("node:stream")},57975:a=>{"use strict";a.exports=require("node:util")},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")},71553:a=>{"use strict";a.exports=require("node:dns/promises")},73024:a=>{"use strict";a.exports=require("node:fs")},73136:a=>{"use strict";a.exports=require("node:url")},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",loading:"lazy",decoding:"async"})},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(92592)},73429:a=>{"use strict";a.exports=require("node:util/types")},73496:a=>{"use strict";a.exports=require("http2")},74075:a=>{"use strict";a.exports=require("zlib")},75919:a=>{"use strict";a.exports=require("node:worker_threads")},76760:a=>{"use strict";a.exports=require("node:path")},77030:a=>{"use strict";a.exports=require("node:net")},77068:a=>{"use strict";a.exports=require("next/dist/shared/lib/size-limit")},77598:a=>{"use strict";a.exports=require("node:crypto")},78474:a=>{"use strict";a.exports=require("node:events")},79286:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/cuongquach/projects/vibe/n9router/src/app/(dashboard)/dashboard/basic-chat/BasicChatPageClient.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/cuongquach/projects/vibe/n9router/src/app/(dashboard)/dashboard/basic-chat/BasicChatPageClient.js","default")},79646:a=>{"use strict";a.exports=require("child_process")},80099:a=>{"use strict";a.exports=require("node:sqlite")},81115:a=>{"use strict";a.exports=require("constants")},81630:a=>{"use strict";a.exports=require("http")},83997:a=>{"use strict";a.exports=require("tty")},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{"use strict";a.exports=require("better-sqlite3")},87997:a=>{"use strict";a.exports=require("node:timers")},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,7502,365,63,7912,2251,9718,4963,6070,869,3481,6457,4123,3913,6777,412,6292],()=>b(b.s=12290));module.exports=c})();