9router 0.4.28 → 0.4.31

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 (853) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/app-path-routes-manifest.json +14 -6
  3. package/app/.next/build-manifest.json +3 -3
  4. package/app/.next/required-server-files.json +6 -0
  5. package/app/.next/routes-manifest.json +52 -0
  6. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
  7. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
  10. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  13. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
  16. package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  19. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +2 -2
  22. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -2
  25. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +2 -2
  28. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
  31. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  32. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  33. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
  34. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  35. package/app/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  36. package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
  37. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  38. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  39. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  40. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  41. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  42. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +3 -3
  43. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  44. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  45. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  46. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  47. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  48. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  49. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  50. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  51. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js +3 -3
  52. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  53. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  54. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js +2 -2
  55. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  56. package/app/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  57. package/app/.next/server/app/(dashboard)/dashboard/skills/page.js +2 -2
  58. package/app/.next/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  59. package/app/.next/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  60. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +2 -2
  61. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  62. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  63. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  64. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  65. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  66. package/app/.next/server/app/_global-error/page.js +2 -2
  67. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  68. package/app/.next/server/app/_global-error.html +1 -1
  69. package/app/.next/server/app/_global-error.rsc +1 -1
  70. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  71. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  72. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  73. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  74. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  75. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  76. package/app/.next/server/app/_not-found/page.js +2 -2
  77. package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
  78. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  79. package/app/.next/server/app/_not-found.html +1 -1
  80. package/app/.next/server/app/_not-found.rsc +18 -20
  81. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +18 -20
  82. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  83. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +7 -9
  84. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  85. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  86. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +3 -4
  87. package/app/.next/server/app/api/auth/login/route.js +1 -1
  88. package/app/.next/server/app/api/auth/login/route.js.nft.json +1 -1
  89. package/app/.next/server/app/api/auth/logout/route.js +1 -1
  90. package/app/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
  91. package/app/.next/server/app/api/auth/oidc/callback/route.js +1 -0
  92. package/app/.next/server/app/api/auth/oidc/callback/route.js.nft.json +1 -0
  93. package/app/.next/server/app/api/auth/oidc/callback/route_client-reference-manifest.js +1 -0
  94. package/app/.next/server/app/api/auth/oidc/start/route.js +1 -0
  95. package/app/.next/server/app/api/auth/oidc/start/route.js.nft.json +1 -0
  96. package/app/.next/server/app/api/auth/oidc/start/route_client-reference-manifest.js +1 -0
  97. package/app/.next/server/app/api/auth/oidc/test/route.js +1 -0
  98. package/app/.next/server/app/api/auth/oidc/test/route.js.nft.json +1 -0
  99. package/app/.next/server/app/api/auth/oidc/test/route_client-reference-manifest.js +1 -0
  100. package/app/.next/server/app/api/auth/status/route.js +1 -0
  101. package/app/.next/server/app/api/auth/status/route.js.nft.json +1 -0
  102. package/app/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -0
  103. package/app/.next/server/app/api/cli-tools/all-statuses/route.js +2 -2
  104. package/app/.next/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  105. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  106. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  107. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  108. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  109. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +1 -1
  110. package/app/.next/server/app/api/cli-tools/cline-settings/route.js +2 -0
  111. package/app/.next/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -0
  112. package/app/.next/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -0
  113. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +1 -1
  114. package/app/.next/server/app/api/cli-tools/copilot-settings/route.js +1 -1
  115. package/app/.next/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
  116. package/app/.next/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
  117. package/app/.next/server/app/api/cli-tools/cowork-settings/route.js +2 -2
  118. package/app/.next/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  119. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +2 -2
  120. package/app/.next/server/app/api/cli-tools/hermes-settings/route.js +2 -2
  121. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +2 -0
  122. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -0
  123. package/app/.next/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -0
  124. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  125. package/app/.next/server/app/api/cli-tools/opencode-settings/route.js +1 -1
  126. package/app/.next/server/app/api/cloud/auth/route.js +1 -1
  127. package/app/.next/server/app/api/cloud/auth/route.js.nft.json +1 -1
  128. package/app/.next/server/app/api/cloud/credentials/update/route.js +1 -1
  129. package/app/.next/server/app/api/cloud/credentials/update/route.js.nft.json +1 -1
  130. package/app/.next/server/app/api/cloud/model/resolve/route.js +1 -1
  131. package/app/.next/server/app/api/cloud/model/resolve/route.js.nft.json +1 -1
  132. package/app/.next/server/app/api/cloud/models/alias/route.js +1 -1
  133. package/app/.next/server/app/api/cloud/models/alias/route.js.nft.json +1 -1
  134. package/app/.next/server/app/api/combos/[id]/route.js +1 -1
  135. package/app/.next/server/app/api/combos/[id]/route.js.nft.json +1 -1
  136. package/app/.next/server/app/api/combos/route.js +1 -1
  137. package/app/.next/server/app/api/combos/route.js.nft.json +1 -1
  138. package/app/.next/server/app/api/health/route.js +1 -1
  139. package/app/.next/server/app/api/init/route.js +1 -1
  140. package/app/.next/server/app/api/init/route.js.nft.json +1 -1
  141. package/app/.next/server/app/api/keys/[id]/route.js +1 -1
  142. package/app/.next/server/app/api/keys/[id]/route.js.nft.json +1 -1
  143. package/app/.next/server/app/api/keys/route.js +1 -1
  144. package/app/.next/server/app/api/keys/route.js.nft.json +1 -1
  145. package/app/.next/server/app/api/locale/route.js +1 -1
  146. package/app/.next/server/app/api/mcp/[plugin]/message/route.js +7 -0
  147. package/app/.next/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -0
  148. package/app/.next/server/app/api/mcp/[plugin]/message/route_client-reference-manifest.js +1 -0
  149. package/app/.next/server/app/api/mcp/[plugin]/sse/route.js +10 -0
  150. package/app/.next/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -0
  151. package/app/.next/server/app/api/mcp/[plugin]/sse/route_client-reference-manifest.js +1 -0
  152. package/app/.next/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  153. package/app/.next/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  154. package/app/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  155. package/app/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  156. package/app/.next/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  157. package/app/.next/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  158. package/app/.next/server/app/api/media-providers/tts/voices/route.js +1 -1
  159. package/app/.next/server/app/api/models/alias/route.js +1 -1
  160. package/app/.next/server/app/api/models/alias/route.js.nft.json +1 -1
  161. package/app/.next/server/app/api/models/availability/route.js +1 -1
  162. package/app/.next/server/app/api/models/availability/route.js.nft.json +1 -1
  163. package/app/.next/server/app/api/models/custom/route.js +1 -1
  164. package/app/.next/server/app/api/models/custom/route.js.nft.json +1 -1
  165. package/app/.next/server/app/api/models/disabled/route.js +1 -1
  166. package/app/.next/server/app/api/models/disabled/route.js.nft.json +1 -1
  167. package/app/.next/server/app/api/models/route.js +1 -1
  168. package/app/.next/server/app/api/models/route.js.nft.json +1 -1
  169. package/app/.next/server/app/api/models/test/route.js +1 -1
  170. package/app/.next/server/app/api/models/test/route.js.nft.json +1 -1
  171. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +2 -2
  172. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  173. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js +2 -2
  174. package/app/.next/server/app/api/oauth/cursor/import/route.js +1 -1
  175. package/app/.next/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  176. package/app/.next/server/app/api/oauth/gitlab/pat/route.js +1 -1
  177. package/app/.next/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  178. package/app/.next/server/app/api/oauth/iflow/cookie/route.js +1 -1
  179. package/app/.next/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  180. package/app/.next/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  181. package/app/.next/server/app/api/oauth/kiro/import/route.js +1 -1
  182. package/app/.next/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  183. package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  184. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  185. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  186. package/app/.next/server/app/api/pricing/route.js +1 -1
  187. package/app/.next/server/app/api/pricing/route.js.nft.json +1 -1
  188. package/app/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
  189. package/app/.next/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  190. package/app/.next/server/app/api/provider-nodes/route.js +1 -1
  191. package/app/.next/server/app/api/provider-nodes/route.js.nft.json +1 -1
  192. package/app/.next/server/app/api/provider-nodes/validate/route.js +1 -1
  193. package/app/.next/server/app/api/providers/[id]/models/route.js +1 -1
  194. package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  195. package/app/.next/server/app/api/providers/[id]/route.js +1 -1
  196. package/app/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
  197. package/app/.next/server/app/api/providers/[id]/test/route.js +1 -1
  198. package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  199. package/app/.next/server/app/api/providers/[id]/test-models/route.js +1 -1
  200. package/app/.next/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  201. package/app/.next/server/app/api/providers/client/route.js +1 -1
  202. package/app/.next/server/app/api/providers/client/route.js.nft.json +1 -1
  203. package/app/.next/server/app/api/providers/kilo/free-models/route.js +1 -1
  204. package/app/.next/server/app/api/providers/route.js +1 -1
  205. package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
  206. package/app/.next/server/app/api/providers/suggested-models/route.js +1 -1
  207. package/app/.next/server/app/api/providers/test-batch/route.js +1 -1
  208. package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  209. package/app/.next/server/app/api/providers/validate/route.js +1 -1
  210. package/app/.next/server/app/api/providers/validate/route.js.nft.json +1 -1
  211. package/app/.next/server/app/api/proxy-pools/[id]/route.js +1 -1
  212. package/app/.next/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  213. package/app/.next/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  214. package/app/.next/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  215. package/app/.next/server/app/api/proxy-pools/route.js +1 -1
  216. package/app/.next/server/app/api/proxy-pools/route.js.nft.json +1 -1
  217. package/app/.next/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
  218. package/app/.next/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  219. package/app/.next/server/app/api/settings/database/route.js +1 -1
  220. package/app/.next/server/app/api/settings/database/route.js.nft.json +1 -1
  221. package/app/.next/server/app/api/settings/proxy-test/route.js +1 -1
  222. package/app/.next/server/app/api/settings/require-login/route.js +1 -1
  223. package/app/.next/server/app/api/settings/require-login/route.js.nft.json +1 -1
  224. package/app/.next/server/app/api/settings/route.js +1 -1
  225. package/app/.next/server/app/api/settings/route.js.nft.json +1 -1
  226. package/app/.next/server/app/api/shutdown/route.js +1 -1
  227. package/app/.next/server/app/api/tags/route.js +1 -1
  228. package/app/.next/server/app/api/translator/console-logs/route.js +1 -1
  229. package/app/.next/server/app/api/translator/console-logs/stream/route.js +2 -2
  230. package/app/.next/server/app/api/translator/load/route.js +1 -1
  231. package/app/.next/server/app/api/translator/save/route.js +1 -1
  232. package/app/.next/server/app/api/translator/send/route.js +1 -1
  233. package/app/.next/server/app/api/translator/send/route.js.nft.json +1 -1
  234. package/app/.next/server/app/api/translator/translate/route.js +1 -1
  235. package/app/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
  236. package/app/.next/server/app/api/tunnel/disable/route.js +1 -1
  237. package/app/.next/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  238. package/app/.next/server/app/api/tunnel/enable/route.js +1 -1
  239. package/app/.next/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  240. package/app/.next/server/app/api/tunnel/status/route.js +1 -1
  241. package/app/.next/server/app/api/tunnel/status/route.js.nft.json +1 -1
  242. package/app/.next/server/app/api/tunnel/tailscale-check/route.js +1 -15
  243. package/app/.next/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  244. package/app/.next/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  245. package/app/.next/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  246. package/app/.next/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  247. package/app/.next/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  248. package/app/.next/server/app/api/tunnel/tailscale-install/route.js +3 -3
  249. package/app/.next/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  250. package/app/.next/server/app/api/tunnel/tailscale-login/route.js +1 -15
  251. package/app/.next/server/app/api/tunnel/tailscale-login/route.js.nft.json +1 -1
  252. package/app/.next/server/app/api/tunnel/tailscale-start-daemon/route.js +2 -2
  253. package/app/.next/server/app/api/tunnel/tailscale-start-daemon/route.js.nft.json +1 -1
  254. package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
  255. package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  256. package/app/.next/server/app/api/usage/chart/route.js +1 -1
  257. package/app/.next/server/app/api/usage/chart/route.js.nft.json +1 -1
  258. package/app/.next/server/app/api/usage/history/route.js +1 -1
  259. package/app/.next/server/app/api/usage/history/route.js.nft.json +1 -1
  260. package/app/.next/server/app/api/usage/providers/route.js +1 -1
  261. package/app/.next/server/app/api/usage/providers/route.js.nft.json +1 -1
  262. package/app/.next/server/app/api/usage/request-details/route.js +1 -1
  263. package/app/.next/server/app/api/usage/request-details/route.js.nft.json +1 -1
  264. package/app/.next/server/app/api/usage/request-logs/route.js +1 -1
  265. package/app/.next/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  266. package/app/.next/server/app/api/usage/stats/route.js +1 -1
  267. package/app/.next/server/app/api/usage/stats/route.js.nft.json +1 -1
  268. package/app/.next/server/app/api/usage/stream/route.js +2 -2
  269. package/app/.next/server/app/api/usage/stream/route.js.nft.json +1 -1
  270. package/app/.next/server/app/api/v1/api/chat/route.js +1 -1
  271. package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  272. package/app/.next/server/app/api/v1/audio/speech/route.js +1 -1
  273. package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  274. package/app/.next/server/app/api/v1/audio/transcriptions/route.js +1 -1
  275. package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  276. package/app/.next/server/app/api/v1/audio/voices/route.js +1 -1
  277. package/app/.next/server/app/api/v1/chat/completions/route.js +1 -1
  278. package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  279. package/app/.next/server/app/api/v1/embeddings/route.js +1 -1
  280. package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  281. package/app/.next/server/app/api/v1/images/generations/route.js +2 -2
  282. package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  283. package/app/.next/server/app/api/v1/messages/count_tokens/route.js +1 -1
  284. package/app/.next/server/app/api/v1/messages/route.js +1 -1
  285. package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
  286. package/app/.next/server/app/api/v1/models/[kind]/route.js +1 -1
  287. package/app/.next/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  288. package/app/.next/server/app/api/v1/models/info/route.js +1 -1
  289. package/app/.next/server/app/api/v1/models/route.js +1 -1
  290. package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
  291. package/app/.next/server/app/api/v1/responses/compact/route.js +1 -1
  292. package/app/.next/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  293. package/app/.next/server/app/api/v1/responses/route.js +1 -1
  294. package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
  295. package/app/.next/server/app/api/v1/route.js +1 -1
  296. package/app/.next/server/app/api/v1/route.js.nft.json +1 -1
  297. package/app/.next/server/app/api/v1/search/route.js +1 -1
  298. package/app/.next/server/app/api/v1/search/route.js.nft.json +1 -1
  299. package/app/.next/server/app/api/v1/web/fetch/route.js +1 -1
  300. package/app/.next/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  301. package/app/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
  302. package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  303. package/app/.next/server/app/api/v1beta/models/route.js +1 -1
  304. package/app/.next/server/app/api/version/route.js +1 -1
  305. package/app/.next/server/app/api/version/shutdown/route.js +1 -1
  306. package/app/.next/server/app/api/version/update/route.js +1 -1
  307. package/app/.next/server/app/callback/page.js +2 -2
  308. package/app/.next/server/app/callback/page.js.nft.json +1 -1
  309. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  310. package/app/.next/server/app/callback.html +1 -1
  311. package/app/.next/server/app/callback.rsc +22 -24
  312. package/app/.next/server/app/callback.segments/_full.segment.rsc +22 -24
  313. package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
  314. package/app/.next/server/app/callback.segments/_index.segment.rsc +7 -9
  315. package/app/.next/server/app/callback.segments/_tree.segment.rsc +3 -4
  316. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +2 -2
  317. package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
  318. package/app/.next/server/app/dashboard/basic-chat.html +1 -1
  319. package/app/.next/server/app/dashboard/basic-chat.rsc +20 -22
  320. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  321. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  322. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  323. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  324. package/app/.next/server/app/dashboard/basic-chat.segments/_full.segment.rsc +20 -22
  325. package/app/.next/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  326. package/app/.next/server/app/dashboard/basic-chat.segments/_index.segment.rsc +7 -9
  327. package/app/.next/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +3 -4
  328. package/app/.next/server/app/dashboard/cli-tools.html +1 -1
  329. package/app/.next/server/app/dashboard/cli-tools.rsc +21 -23
  330. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  331. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  332. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  333. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  334. package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +21 -23
  335. package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  336. package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +7 -9
  337. package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +3 -4
  338. package/app/.next/server/app/dashboard/combos.html +1 -1
  339. package/app/.next/server/app/dashboard/combos.rsc +23 -25
  340. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  341. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  342. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  343. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  344. package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +23 -25
  345. package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  346. package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +7 -9
  347. package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +3 -4
  348. package/app/.next/server/app/dashboard/endpoint.html +1 -1
  349. package/app/.next/server/app/dashboard/endpoint.rsc +21 -23
  350. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  351. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  352. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  353. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  354. package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +21 -23
  355. package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  356. package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +7 -9
  357. package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +3 -4
  358. package/app/.next/server/app/dashboard/media-providers/web.html +1 -1
  359. package/app/.next/server/app/dashboard/media-providers/web.rsc +23 -27
  360. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  361. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  362. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  363. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  364. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  365. package/app/.next/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +23 -27
  366. package/app/.next/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  367. package/app/.next/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +7 -9
  368. package/app/.next/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +3 -4
  369. package/app/.next/server/app/dashboard/mitm.html +1 -1
  370. package/app/.next/server/app/dashboard/mitm.rsc +20 -22
  371. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  372. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  373. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  374. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  375. package/app/.next/server/app/dashboard/mitm.segments/_full.segment.rsc +20 -22
  376. package/app/.next/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  377. package/app/.next/server/app/dashboard/mitm.segments/_index.segment.rsc +7 -9
  378. package/app/.next/server/app/dashboard/mitm.segments/_tree.segment.rsc +3 -4
  379. package/app/.next/server/app/dashboard/profile.html +1 -1
  380. package/app/.next/server/app/dashboard/profile.rsc +23 -26
  381. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  382. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  383. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  384. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  385. package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +23 -26
  386. package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  387. package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +7 -9
  388. package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +3 -4
  389. package/app/.next/server/app/dashboard/providers/new.html +1 -1
  390. package/app/.next/server/app/dashboard/providers/new.rsc +23 -27
  391. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  392. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  393. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  394. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  395. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  396. package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +23 -27
  397. package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  398. package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +7 -9
  399. package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +3 -4
  400. package/app/.next/server/app/dashboard/providers.html +1 -1
  401. package/app/.next/server/app/dashboard/providers.rsc +23 -26
  402. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  403. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  404. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  405. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  406. package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +23 -26
  407. package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  408. package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +7 -9
  409. package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +3 -4
  410. package/app/.next/server/app/dashboard/proxy-pools.html +1 -1
  411. package/app/.next/server/app/dashboard/proxy-pools.rsc +23 -26
  412. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  413. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  414. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  415. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  416. package/app/.next/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +23 -26
  417. package/app/.next/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  418. package/app/.next/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +7 -9
  419. package/app/.next/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +3 -4
  420. package/app/.next/server/app/dashboard/quota.html +2 -2
  421. package/app/.next/server/app/dashboard/quota.rsc +21 -23
  422. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  423. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  424. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  425. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  426. package/app/.next/server/app/dashboard/quota.segments/_full.segment.rsc +21 -23
  427. package/app/.next/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  428. package/app/.next/server/app/dashboard/quota.segments/_index.segment.rsc +7 -9
  429. package/app/.next/server/app/dashboard/quota.segments/_tree.segment.rsc +3 -4
  430. package/app/.next/server/app/dashboard/settings/pricing/page.js +2 -2
  431. package/app/.next/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  432. package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  433. package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
  434. package/app/.next/server/app/dashboard/settings/pricing.rsc +22 -24
  435. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +22 -24
  436. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  437. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +7 -9
  438. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +3 -4
  439. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  440. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  441. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  442. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  443. package/app/.next/server/app/dashboard/skills.html +1 -1
  444. package/app/.next/server/app/dashboard/skills.rsc +23 -25
  445. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  446. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  447. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  448. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  449. package/app/.next/server/app/dashboard/skills.segments/_full.segment.rsc +23 -25
  450. package/app/.next/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  451. package/app/.next/server/app/dashboard/skills.segments/_index.segment.rsc +7 -9
  452. package/app/.next/server/app/dashboard/skills.segments/_tree.segment.rsc +3 -4
  453. package/app/.next/server/app/dashboard/translator.html +1 -1
  454. package/app/.next/server/app/dashboard/translator.rsc +23 -26
  455. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  456. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  457. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  458. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  459. package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +23 -26
  460. package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  461. package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +7 -9
  462. package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +3 -4
  463. package/app/.next/server/app/dashboard/usage.html +1 -1
  464. package/app/.next/server/app/dashboard/usage.rsc +23 -25
  465. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  466. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  467. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  468. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  469. package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +23 -25
  470. package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  471. package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +7 -9
  472. package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +3 -4
  473. package/app/.next/server/app/dashboard.html +1 -1
  474. package/app/.next/server/app/dashboard.rsc +21 -23
  475. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  476. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  477. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  478. package/app/.next/server/app/dashboard.segments/_full.segment.rsc +21 -23
  479. package/app/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
  480. package/app/.next/server/app/dashboard.segments/_index.segment.rsc +7 -9
  481. package/app/.next/server/app/dashboard.segments/_tree.segment.rsc +3 -4
  482. package/app/.next/server/app/favicon.ico/route.js +1 -1
  483. package/app/.next/server/app/index.html +1 -1
  484. package/app/.next/server/app/index.rsc +17 -19
  485. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  486. package/app/.next/server/app/index.segments/_full.segment.rsc +17 -19
  487. package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
  488. package/app/.next/server/app/index.segments/_index.segment.rsc +7 -9
  489. package/app/.next/server/app/index.segments/_tree.segment.rsc +3 -4
  490. package/app/.next/server/app/landing/page.js +2 -2
  491. package/app/.next/server/app/landing/page.js.nft.json +1 -1
  492. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  493. package/app/.next/server/app/landing.html +1 -1
  494. package/app/.next/server/app/landing.rsc +22 -24
  495. package/app/.next/server/app/landing.segments/_full.segment.rsc +22 -24
  496. package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
  497. package/app/.next/server/app/landing.segments/_index.segment.rsc +7 -9
  498. package/app/.next/server/app/landing.segments/_tree.segment.rsc +3 -4
  499. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  500. package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
  501. package/app/.next/server/app/login/page.js +2 -2
  502. package/app/.next/server/app/login/page.js.nft.json +1 -1
  503. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  504. package/app/.next/server/app/login.html +1 -1
  505. package/app/.next/server/app/login.rsc +22 -24
  506. package/app/.next/server/app/login.segments/_full.segment.rsc +22 -24
  507. package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
  508. package/app/.next/server/app/login.segments/_index.segment.rsc +7 -9
  509. package/app/.next/server/app/login.segments/_tree.segment.rsc +3 -4
  510. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  511. package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
  512. package/app/.next/server/app/manifest.webmanifest/route.js +2 -2
  513. package/app/.next/server/app/page.js +2 -2
  514. package/app/.next/server/app/page.js.nft.json +1 -1
  515. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  516. package/app/.next/server/app-paths-manifest.json +14 -6
  517. package/app/.next/server/chunks/1071.js +1 -0
  518. package/app/.next/server/chunks/1574.js +1 -1
  519. package/app/.next/server/chunks/1578.js +1 -1
  520. package/app/.next/server/chunks/1795.js +1 -0
  521. package/app/.next/server/chunks/2009.js +1 -0
  522. package/app/.next/server/chunks/2035.js +39 -0
  523. package/app/.next/server/chunks/21.js +1 -1
  524. package/app/.next/server/chunks/2701.js +1 -0
  525. package/app/.next/server/chunks/3666.js +1 -0
  526. package/app/.next/server/chunks/3774.js +4 -3
  527. package/app/.next/server/chunks/450.js +5 -5
  528. package/app/.next/server/chunks/4723.js +1 -0
  529. package/app/.next/server/chunks/514.js +49 -0
  530. package/app/.next/server/chunks/5159.js +1 -1
  531. package/app/.next/server/chunks/5882.js +1 -0
  532. package/app/.next/server/chunks/6263.js +2 -2
  533. package/app/.next/server/chunks/6283.js +1 -1
  534. package/app/.next/server/chunks/6379.js +3 -3
  535. package/app/.next/server/chunks/6634.js +7 -0
  536. package/app/.next/server/chunks/6799.js +1 -1
  537. package/app/.next/server/chunks/7301.js +1 -1
  538. package/app/.next/server/chunks/7417.js +1 -0
  539. package/app/.next/server/chunks/7686.js +13 -0
  540. package/app/.next/server/chunks/7810.js +1 -1
  541. package/app/.next/server/chunks/7973.js +1 -1
  542. package/app/.next/server/chunks/8012.js +15 -0
  543. package/app/.next/server/chunks/8035.js +1 -1
  544. package/app/.next/server/chunks/8202.js +4 -4
  545. package/app/.next/server/chunks/8647.js +1 -1
  546. package/app/.next/server/chunks/9737.js +1 -1
  547. package/app/.next/server/functions-config-manifest.json +2 -0
  548. package/app/.next/server/middleware-build-manifest.js +1 -1
  549. package/app/.next/server/middleware.js +4 -4
  550. package/app/.next/server/pages/404.html +1 -1
  551. package/app/.next/server/pages/500.html +1 -1
  552. package/app/.next/server/server-reference-manifest.js +1 -1
  553. package/app/.next/server/server-reference-manifest.json +1 -1
  554. package/app/.next/static/chunks/4156-c8bd7124d8219ccc.js +7 -0
  555. package/app/.next/static/chunks/505-39ae32473371c4a3.js +1 -0
  556. package/app/.next/static/chunks/5810-9924ce14d1c08095.js +39 -0
  557. package/app/.next/static/chunks/8035-49b6b5ee48c18a8f.js +3 -0
  558. package/app/.next/static/chunks/app/(dashboard)/dashboard/basic-chat/page-03929d42abde11dc.js +1 -0
  559. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/{page-8ff504b85ad321a1.js → page-c59d764c4311535a.js} +1 -1
  560. package/app/.next/static/chunks/app/(dashboard)/dashboard/mitm/{page-bad9a5af75575018.js → page-e9d61c090a6ab757.js} +1 -1
  561. package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/page-3582cb03c9ef5dd8.js +1 -0
  562. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-4cb14309c0658008.js +1 -0
  563. package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-5c83526aa571f533.js +1 -0
  564. package/app/.next/static/chunks/app/_global-error/page-42ea861e9cbd3f66.js +1 -0
  565. package/app/.next/static/chunks/app/api/auth/login/route-42ea861e9cbd3f66.js +1 -0
  566. package/app/.next/static/chunks/app/api/auth/logout/route-42ea861e9cbd3f66.js +1 -0
  567. package/app/.next/static/chunks/app/api/auth/oidc/callback/route-42ea861e9cbd3f66.js +1 -0
  568. package/app/.next/static/chunks/app/api/auth/oidc/start/route-42ea861e9cbd3f66.js +1 -0
  569. package/app/.next/static/chunks/app/api/auth/oidc/test/route-42ea861e9cbd3f66.js +1 -0
  570. package/app/.next/static/chunks/app/api/auth/status/route-42ea861e9cbd3f66.js +1 -0
  571. package/app/.next/static/chunks/app/api/cli-tools/all-statuses/route-42ea861e9cbd3f66.js +1 -0
  572. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-42ea861e9cbd3f66.js +1 -0
  573. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-42ea861e9cbd3f66.js +1 -0
  574. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-42ea861e9cbd3f66.js +1 -0
  575. package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-42ea861e9cbd3f66.js +1 -0
  576. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-42ea861e9cbd3f66.js +1 -0
  577. package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-42ea861e9cbd3f66.js +1 -0
  578. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-42ea861e9cbd3f66.js +1 -0
  579. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-42ea861e9cbd3f66.js +1 -0
  580. package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-42ea861e9cbd3f66.js +1 -0
  581. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-42ea861e9cbd3f66.js +1 -0
  582. package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-42ea861e9cbd3f66.js +1 -0
  583. package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-42ea861e9cbd3f66.js +1 -0
  584. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-42ea861e9cbd3f66.js +1 -0
  585. package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-42ea861e9cbd3f66.js +1 -0
  586. package/app/.next/static/chunks/app/api/cloud/auth/route-42ea861e9cbd3f66.js +1 -0
  587. package/app/.next/static/chunks/app/api/cloud/credentials/update/route-42ea861e9cbd3f66.js +1 -0
  588. package/app/.next/static/chunks/app/api/cloud/model/resolve/route-42ea861e9cbd3f66.js +1 -0
  589. package/app/.next/static/chunks/app/api/cloud/models/alias/route-42ea861e9cbd3f66.js +1 -0
  590. package/app/.next/static/chunks/app/api/combos/[id]/route-42ea861e9cbd3f66.js +1 -0
  591. package/app/.next/static/chunks/app/api/combos/route-42ea861e9cbd3f66.js +1 -0
  592. package/app/.next/static/chunks/app/api/health/route-42ea861e9cbd3f66.js +1 -0
  593. package/app/.next/static/chunks/app/api/init/route-42ea861e9cbd3f66.js +1 -0
  594. package/app/.next/static/chunks/app/api/keys/[id]/route-42ea861e9cbd3f66.js +1 -0
  595. package/app/.next/static/chunks/app/api/keys/route-42ea861e9cbd3f66.js +1 -0
  596. package/app/.next/static/chunks/app/api/locale/route-42ea861e9cbd3f66.js +1 -0
  597. package/app/.next/static/chunks/app/api/mcp/[plugin]/message/route-42ea861e9cbd3f66.js +1 -0
  598. package/app/.next/static/chunks/app/api/mcp/[plugin]/sse/route-42ea861e9cbd3f66.js +1 -0
  599. package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-42ea861e9cbd3f66.js +1 -0
  600. package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-42ea861e9cbd3f66.js +1 -0
  601. package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-42ea861e9cbd3f66.js +1 -0
  602. package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-42ea861e9cbd3f66.js +1 -0
  603. package/app/.next/static/chunks/app/api/models/alias/route-42ea861e9cbd3f66.js +1 -0
  604. package/app/.next/static/chunks/app/api/models/availability/route-42ea861e9cbd3f66.js +1 -0
  605. package/app/.next/static/chunks/app/api/models/custom/route-42ea861e9cbd3f66.js +1 -0
  606. package/app/.next/static/chunks/app/api/models/disabled/route-42ea861e9cbd3f66.js +1 -0
  607. package/app/.next/static/chunks/app/api/models/route-42ea861e9cbd3f66.js +1 -0
  608. package/app/.next/static/chunks/app/api/models/test/route-42ea861e9cbd3f66.js +1 -0
  609. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-42ea861e9cbd3f66.js +1 -0
  610. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-42ea861e9cbd3f66.js +1 -0
  611. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-42ea861e9cbd3f66.js +1 -0
  612. package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-42ea861e9cbd3f66.js +1 -0
  613. package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-42ea861e9cbd3f66.js +1 -0
  614. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-42ea861e9cbd3f66.js +1 -0
  615. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-42ea861e9cbd3f66.js +1 -0
  616. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-42ea861e9cbd3f66.js +1 -0
  617. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-42ea861e9cbd3f66.js +1 -0
  618. package/app/.next/static/chunks/app/api/pricing/route-42ea861e9cbd3f66.js +1 -0
  619. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-42ea861e9cbd3f66.js +1 -0
  620. package/app/.next/static/chunks/app/api/provider-nodes/route-42ea861e9cbd3f66.js +1 -0
  621. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-42ea861e9cbd3f66.js +1 -0
  622. package/app/.next/static/chunks/app/api/providers/[id]/models/route-42ea861e9cbd3f66.js +1 -0
  623. package/app/.next/static/chunks/app/api/providers/[id]/route-42ea861e9cbd3f66.js +1 -0
  624. package/app/.next/static/chunks/app/api/providers/[id]/test/route-42ea861e9cbd3f66.js +1 -0
  625. package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-42ea861e9cbd3f66.js +1 -0
  626. package/app/.next/static/chunks/app/api/providers/client/route-42ea861e9cbd3f66.js +1 -0
  627. package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-42ea861e9cbd3f66.js +1 -0
  628. package/app/.next/static/chunks/app/api/providers/route-42ea861e9cbd3f66.js +1 -0
  629. package/app/.next/static/chunks/app/api/providers/suggested-models/route-42ea861e9cbd3f66.js +1 -0
  630. package/app/.next/static/chunks/app/api/providers/test-batch/route-42ea861e9cbd3f66.js +1 -0
  631. package/app/.next/static/chunks/app/api/providers/validate/route-42ea861e9cbd3f66.js +1 -0
  632. package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-42ea861e9cbd3f66.js +1 -0
  633. package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-42ea861e9cbd3f66.js +1 -0
  634. package/app/.next/static/chunks/app/api/proxy-pools/route-42ea861e9cbd3f66.js +1 -0
  635. package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-42ea861e9cbd3f66.js +1 -0
  636. package/app/.next/static/chunks/app/api/settings/database/route-42ea861e9cbd3f66.js +1 -0
  637. package/app/.next/static/chunks/app/api/settings/proxy-test/route-42ea861e9cbd3f66.js +1 -0
  638. package/app/.next/static/chunks/app/api/settings/require-login/route-42ea861e9cbd3f66.js +1 -0
  639. package/app/.next/static/chunks/app/api/settings/route-42ea861e9cbd3f66.js +1 -0
  640. package/app/.next/static/chunks/app/api/shutdown/route-42ea861e9cbd3f66.js +1 -0
  641. package/app/.next/static/chunks/app/api/tags/route-42ea861e9cbd3f66.js +1 -0
  642. package/app/.next/static/chunks/app/api/translator/console-logs/route-42ea861e9cbd3f66.js +1 -0
  643. package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-42ea861e9cbd3f66.js +1 -0
  644. package/app/.next/static/chunks/app/api/translator/load/route-42ea861e9cbd3f66.js +1 -0
  645. package/app/.next/static/chunks/app/api/translator/save/route-42ea861e9cbd3f66.js +1 -0
  646. package/app/.next/static/chunks/app/api/translator/send/route-42ea861e9cbd3f66.js +1 -0
  647. package/app/.next/static/chunks/app/api/translator/translate/route-42ea861e9cbd3f66.js +1 -0
  648. package/app/.next/static/chunks/app/api/tunnel/disable/route-42ea861e9cbd3f66.js +1 -0
  649. package/app/.next/static/chunks/app/api/tunnel/enable/route-42ea861e9cbd3f66.js +1 -0
  650. package/app/.next/static/chunks/app/api/tunnel/status/route-42ea861e9cbd3f66.js +1 -0
  651. package/app/.next/static/chunks/app/api/tunnel/tailscale-check/route-42ea861e9cbd3f66.js +1 -0
  652. package/app/.next/static/chunks/app/api/tunnel/tailscale-disable/route-42ea861e9cbd3f66.js +1 -0
  653. package/app/.next/static/chunks/app/api/tunnel/tailscale-enable/route-42ea861e9cbd3f66.js +1 -0
  654. package/app/.next/static/chunks/app/api/tunnel/tailscale-install/route-42ea861e9cbd3f66.js +1 -0
  655. package/app/.next/static/chunks/app/api/tunnel/tailscale-login/route-42ea861e9cbd3f66.js +1 -0
  656. package/app/.next/static/chunks/app/api/tunnel/tailscale-start-daemon/route-42ea861e9cbd3f66.js +1 -0
  657. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-42ea861e9cbd3f66.js +1 -0
  658. package/app/.next/static/chunks/app/api/usage/chart/route-42ea861e9cbd3f66.js +1 -0
  659. package/app/.next/static/chunks/app/api/usage/history/route-42ea861e9cbd3f66.js +1 -0
  660. package/app/.next/static/chunks/app/api/usage/providers/route-42ea861e9cbd3f66.js +1 -0
  661. package/app/.next/static/chunks/app/api/usage/request-details/route-42ea861e9cbd3f66.js +1 -0
  662. package/app/.next/static/chunks/app/api/usage/request-logs/route-42ea861e9cbd3f66.js +1 -0
  663. package/app/.next/static/chunks/app/api/usage/stats/route-42ea861e9cbd3f66.js +1 -0
  664. package/app/.next/static/chunks/app/api/usage/stream/route-42ea861e9cbd3f66.js +1 -0
  665. package/app/.next/static/chunks/app/api/v1/api/chat/route-42ea861e9cbd3f66.js +1 -0
  666. package/app/.next/static/chunks/app/api/v1/audio/speech/route-42ea861e9cbd3f66.js +1 -0
  667. package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-42ea861e9cbd3f66.js +1 -0
  668. package/app/.next/static/chunks/app/api/v1/audio/voices/route-42ea861e9cbd3f66.js +1 -0
  669. package/app/.next/static/chunks/app/api/v1/chat/completions/route-42ea861e9cbd3f66.js +1 -0
  670. package/app/.next/static/chunks/app/api/v1/embeddings/route-42ea861e9cbd3f66.js +1 -0
  671. package/app/.next/static/chunks/app/api/v1/images/generations/route-42ea861e9cbd3f66.js +1 -0
  672. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-42ea861e9cbd3f66.js +1 -0
  673. package/app/.next/static/chunks/app/api/v1/messages/route-42ea861e9cbd3f66.js +1 -0
  674. package/app/.next/static/chunks/app/api/v1/models/[kind]/route-42ea861e9cbd3f66.js +1 -0
  675. package/app/.next/static/chunks/app/api/v1/models/info/route-42ea861e9cbd3f66.js +1 -0
  676. package/app/.next/static/chunks/app/api/v1/models/route-42ea861e9cbd3f66.js +1 -0
  677. package/app/.next/static/chunks/app/api/v1/responses/compact/route-42ea861e9cbd3f66.js +1 -0
  678. package/app/.next/static/chunks/app/api/v1/responses/route-42ea861e9cbd3f66.js +1 -0
  679. package/app/.next/static/chunks/app/api/v1/route-42ea861e9cbd3f66.js +1 -0
  680. package/app/.next/static/chunks/app/api/v1/search/route-42ea861e9cbd3f66.js +1 -0
  681. package/app/.next/static/chunks/app/api/v1/web/fetch/route-42ea861e9cbd3f66.js +1 -0
  682. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-42ea861e9cbd3f66.js +1 -0
  683. package/app/.next/static/chunks/app/api/v1beta/models/route-42ea861e9cbd3f66.js +1 -0
  684. package/app/.next/static/chunks/app/api/version/route-42ea861e9cbd3f66.js +1 -0
  685. package/app/.next/static/chunks/app/api/version/shutdown/route-42ea861e9cbd3f66.js +1 -0
  686. package/app/.next/static/chunks/app/api/version/update/route-42ea861e9cbd3f66.js +1 -0
  687. package/app/.next/static/chunks/app/callback/page-6ea4675be396cdb5.js +1 -0
  688. package/app/.next/static/chunks/app/layout-fcda570933db809f.js +1 -0
  689. package/app/.next/static/chunks/app/login/page-dc885cca61893e2a.js +1 -0
  690. package/app/.next/static/chunks/app/manifest.webmanifest/route-42ea861e9cbd3f66.js +1 -0
  691. package/app/.next/static/chunks/app/page-42ea861e9cbd3f66.js +1 -0
  692. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-42ea861e9cbd3f66.js +1 -0
  693. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-42ea861e9cbd3f66.js +1 -0
  694. package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-42ea861e9cbd3f66.js +1 -0
  695. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-42ea861e9cbd3f66.js +1 -0
  696. package/app/.next/static/chunks/{webpack-86e40ea2022f394c.js → webpack-ab7d9d893d55abd4.js} +1 -1
  697. package/app/.next/static/css/{081a0afca5a9bd20.css → 2e1b7d528c228ec3.css} +1 -1
  698. package/app/.next/static/css/a6ccc343d8389dcd.css +1 -0
  699. package/app/.next/static/media/material-symbols-outlined.1060ac06.woff2 +0 -0
  700. package/app/.next/static/xjtYx1FfVtGAPQbE4LiMu/_buildManifest.js +1 -0
  701. package/app/package.json +2 -1
  702. package/app/server.js +1 -1
  703. package/app/src/mitm/server.js +41 -43
  704. package/hooks/sqliteRuntime.js +4 -4
  705. package/package.json +1 -1
  706. package/src/cli/api/client.js +31 -0
  707. package/src/cli/menus/providers.js +240 -5
  708. package/src/cli/menus/settings.js +33 -0
  709. package/app/.next/server/chunks/2049.js +0 -1
  710. package/app/.next/server/chunks/2371.js +0 -1
  711. package/app/.next/server/chunks/4116.js +0 -1
  712. package/app/.next/server/chunks/4839.js +0 -1
  713. package/app/.next/server/chunks/4892.js +0 -13
  714. package/app/.next/server/chunks/523.js +0 -1
  715. package/app/.next/server/chunks/5978.js +0 -1
  716. package/app/.next/server/chunks/6890.js +0 -23
  717. package/app/.next/server/chunks/7690.js +0 -1
  718. package/app/.next/server/chunks/8367.js +0 -29
  719. package/app/.next/static/chunks/1939-d9b80a9e484ae21d.js +0 -23
  720. package/app/.next/static/chunks/4156-3a7b60c65001de9a.js +0 -7
  721. package/app/.next/static/chunks/505-34993b83fbc3f56a.js +0 -1
  722. package/app/.next/static/chunks/8035-b43a2fdebf8069b1.js +0 -3
  723. package/app/.next/static/chunks/app/(dashboard)/dashboard/basic-chat/page-cd02fe7b10810144.js +0 -1
  724. package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/page-d632fe470928df04.js +0 -1
  725. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-6c6bb4f9b3b7e5f8.js +0 -1
  726. package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-92b9dd8c50ab5e50.js +0 -1
  727. package/app/.next/static/chunks/app/_global-error/page-5ea305bd1a1dc348.js +0 -1
  728. package/app/.next/static/chunks/app/api/auth/login/route-5ea305bd1a1dc348.js +0 -1
  729. package/app/.next/static/chunks/app/api/auth/logout/route-5ea305bd1a1dc348.js +0 -1
  730. package/app/.next/static/chunks/app/api/cli-tools/all-statuses/route-5ea305bd1a1dc348.js +0 -1
  731. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-5ea305bd1a1dc348.js +0 -1
  732. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-5ea305bd1a1dc348.js +0 -1
  733. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-5ea305bd1a1dc348.js +0 -1
  734. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-5ea305bd1a1dc348.js +0 -1
  735. package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-5ea305bd1a1dc348.js +0 -1
  736. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-5ea305bd1a1dc348.js +0 -1
  737. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-5ea305bd1a1dc348.js +0 -1
  738. package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-5ea305bd1a1dc348.js +0 -1
  739. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-5ea305bd1a1dc348.js +0 -1
  740. package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-5ea305bd1a1dc348.js +0 -1
  741. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-5ea305bd1a1dc348.js +0 -1
  742. package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-5ea305bd1a1dc348.js +0 -1
  743. package/app/.next/static/chunks/app/api/cloud/auth/route-5ea305bd1a1dc348.js +0 -1
  744. package/app/.next/static/chunks/app/api/cloud/credentials/update/route-5ea305bd1a1dc348.js +0 -1
  745. package/app/.next/static/chunks/app/api/cloud/model/resolve/route-5ea305bd1a1dc348.js +0 -1
  746. package/app/.next/static/chunks/app/api/cloud/models/alias/route-5ea305bd1a1dc348.js +0 -1
  747. package/app/.next/static/chunks/app/api/combos/[id]/route-5ea305bd1a1dc348.js +0 -1
  748. package/app/.next/static/chunks/app/api/combos/route-5ea305bd1a1dc348.js +0 -1
  749. package/app/.next/static/chunks/app/api/health/route-5ea305bd1a1dc348.js +0 -1
  750. package/app/.next/static/chunks/app/api/init/route-5ea305bd1a1dc348.js +0 -1
  751. package/app/.next/static/chunks/app/api/keys/[id]/route-5ea305bd1a1dc348.js +0 -1
  752. package/app/.next/static/chunks/app/api/keys/route-5ea305bd1a1dc348.js +0 -1
  753. package/app/.next/static/chunks/app/api/locale/route-5ea305bd1a1dc348.js +0 -1
  754. package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-5ea305bd1a1dc348.js +0 -1
  755. package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-5ea305bd1a1dc348.js +0 -1
  756. package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-5ea305bd1a1dc348.js +0 -1
  757. package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-5ea305bd1a1dc348.js +0 -1
  758. package/app/.next/static/chunks/app/api/models/alias/route-5ea305bd1a1dc348.js +0 -1
  759. package/app/.next/static/chunks/app/api/models/availability/route-5ea305bd1a1dc348.js +0 -1
  760. package/app/.next/static/chunks/app/api/models/custom/route-5ea305bd1a1dc348.js +0 -1
  761. package/app/.next/static/chunks/app/api/models/disabled/route-5ea305bd1a1dc348.js +0 -1
  762. package/app/.next/static/chunks/app/api/models/route-5ea305bd1a1dc348.js +0 -1
  763. package/app/.next/static/chunks/app/api/models/test/route-5ea305bd1a1dc348.js +0 -1
  764. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-5ea305bd1a1dc348.js +0 -1
  765. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-5ea305bd1a1dc348.js +0 -1
  766. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-5ea305bd1a1dc348.js +0 -1
  767. package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-5ea305bd1a1dc348.js +0 -1
  768. package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-5ea305bd1a1dc348.js +0 -1
  769. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-5ea305bd1a1dc348.js +0 -1
  770. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-5ea305bd1a1dc348.js +0 -1
  771. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-5ea305bd1a1dc348.js +0 -1
  772. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-5ea305bd1a1dc348.js +0 -1
  773. package/app/.next/static/chunks/app/api/pricing/route-5ea305bd1a1dc348.js +0 -1
  774. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-5ea305bd1a1dc348.js +0 -1
  775. package/app/.next/static/chunks/app/api/provider-nodes/route-5ea305bd1a1dc348.js +0 -1
  776. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-5ea305bd1a1dc348.js +0 -1
  777. package/app/.next/static/chunks/app/api/providers/[id]/models/route-5ea305bd1a1dc348.js +0 -1
  778. package/app/.next/static/chunks/app/api/providers/[id]/route-5ea305bd1a1dc348.js +0 -1
  779. package/app/.next/static/chunks/app/api/providers/[id]/test/route-5ea305bd1a1dc348.js +0 -1
  780. package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-5ea305bd1a1dc348.js +0 -1
  781. package/app/.next/static/chunks/app/api/providers/client/route-5ea305bd1a1dc348.js +0 -1
  782. package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-5ea305bd1a1dc348.js +0 -1
  783. package/app/.next/static/chunks/app/api/providers/route-5ea305bd1a1dc348.js +0 -1
  784. package/app/.next/static/chunks/app/api/providers/suggested-models/route-5ea305bd1a1dc348.js +0 -1
  785. package/app/.next/static/chunks/app/api/providers/test-batch/route-5ea305bd1a1dc348.js +0 -1
  786. package/app/.next/static/chunks/app/api/providers/validate/route-5ea305bd1a1dc348.js +0 -1
  787. package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-5ea305bd1a1dc348.js +0 -1
  788. package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-5ea305bd1a1dc348.js +0 -1
  789. package/app/.next/static/chunks/app/api/proxy-pools/route-5ea305bd1a1dc348.js +0 -1
  790. package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-5ea305bd1a1dc348.js +0 -1
  791. package/app/.next/static/chunks/app/api/settings/database/route-5ea305bd1a1dc348.js +0 -1
  792. package/app/.next/static/chunks/app/api/settings/proxy-test/route-5ea305bd1a1dc348.js +0 -1
  793. package/app/.next/static/chunks/app/api/settings/require-login/route-5ea305bd1a1dc348.js +0 -1
  794. package/app/.next/static/chunks/app/api/settings/route-5ea305bd1a1dc348.js +0 -1
  795. package/app/.next/static/chunks/app/api/shutdown/route-5ea305bd1a1dc348.js +0 -1
  796. package/app/.next/static/chunks/app/api/tags/route-5ea305bd1a1dc348.js +0 -1
  797. package/app/.next/static/chunks/app/api/translator/console-logs/route-5ea305bd1a1dc348.js +0 -1
  798. package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-5ea305bd1a1dc348.js +0 -1
  799. package/app/.next/static/chunks/app/api/translator/load/route-5ea305bd1a1dc348.js +0 -1
  800. package/app/.next/static/chunks/app/api/translator/save/route-5ea305bd1a1dc348.js +0 -1
  801. package/app/.next/static/chunks/app/api/translator/send/route-5ea305bd1a1dc348.js +0 -1
  802. package/app/.next/static/chunks/app/api/translator/translate/route-5ea305bd1a1dc348.js +0 -1
  803. package/app/.next/static/chunks/app/api/tunnel/disable/route-5ea305bd1a1dc348.js +0 -1
  804. package/app/.next/static/chunks/app/api/tunnel/enable/route-5ea305bd1a1dc348.js +0 -1
  805. package/app/.next/static/chunks/app/api/tunnel/status/route-5ea305bd1a1dc348.js +0 -1
  806. package/app/.next/static/chunks/app/api/tunnel/tailscale-check/route-5ea305bd1a1dc348.js +0 -1
  807. package/app/.next/static/chunks/app/api/tunnel/tailscale-disable/route-5ea305bd1a1dc348.js +0 -1
  808. package/app/.next/static/chunks/app/api/tunnel/tailscale-enable/route-5ea305bd1a1dc348.js +0 -1
  809. package/app/.next/static/chunks/app/api/tunnel/tailscale-install/route-5ea305bd1a1dc348.js +0 -1
  810. package/app/.next/static/chunks/app/api/tunnel/tailscale-login/route-5ea305bd1a1dc348.js +0 -1
  811. package/app/.next/static/chunks/app/api/tunnel/tailscale-start-daemon/route-5ea305bd1a1dc348.js +0 -1
  812. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-5ea305bd1a1dc348.js +0 -1
  813. package/app/.next/static/chunks/app/api/usage/chart/route-5ea305bd1a1dc348.js +0 -1
  814. package/app/.next/static/chunks/app/api/usage/history/route-5ea305bd1a1dc348.js +0 -1
  815. package/app/.next/static/chunks/app/api/usage/providers/route-5ea305bd1a1dc348.js +0 -1
  816. package/app/.next/static/chunks/app/api/usage/request-details/route-5ea305bd1a1dc348.js +0 -1
  817. package/app/.next/static/chunks/app/api/usage/request-logs/route-5ea305bd1a1dc348.js +0 -1
  818. package/app/.next/static/chunks/app/api/usage/stats/route-5ea305bd1a1dc348.js +0 -1
  819. package/app/.next/static/chunks/app/api/usage/stream/route-5ea305bd1a1dc348.js +0 -1
  820. package/app/.next/static/chunks/app/api/v1/api/chat/route-5ea305bd1a1dc348.js +0 -1
  821. package/app/.next/static/chunks/app/api/v1/audio/speech/route-5ea305bd1a1dc348.js +0 -1
  822. package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-5ea305bd1a1dc348.js +0 -1
  823. package/app/.next/static/chunks/app/api/v1/audio/voices/route-5ea305bd1a1dc348.js +0 -1
  824. package/app/.next/static/chunks/app/api/v1/chat/completions/route-5ea305bd1a1dc348.js +0 -1
  825. package/app/.next/static/chunks/app/api/v1/embeddings/route-5ea305bd1a1dc348.js +0 -1
  826. package/app/.next/static/chunks/app/api/v1/images/generations/route-5ea305bd1a1dc348.js +0 -1
  827. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-5ea305bd1a1dc348.js +0 -1
  828. package/app/.next/static/chunks/app/api/v1/messages/route-5ea305bd1a1dc348.js +0 -1
  829. package/app/.next/static/chunks/app/api/v1/models/[kind]/route-5ea305bd1a1dc348.js +0 -1
  830. package/app/.next/static/chunks/app/api/v1/models/info/route-5ea305bd1a1dc348.js +0 -1
  831. package/app/.next/static/chunks/app/api/v1/models/route-5ea305bd1a1dc348.js +0 -1
  832. package/app/.next/static/chunks/app/api/v1/responses/compact/route-5ea305bd1a1dc348.js +0 -1
  833. package/app/.next/static/chunks/app/api/v1/responses/route-5ea305bd1a1dc348.js +0 -1
  834. package/app/.next/static/chunks/app/api/v1/route-5ea305bd1a1dc348.js +0 -1
  835. package/app/.next/static/chunks/app/api/v1/search/route-5ea305bd1a1dc348.js +0 -1
  836. package/app/.next/static/chunks/app/api/v1/web/fetch/route-5ea305bd1a1dc348.js +0 -1
  837. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-5ea305bd1a1dc348.js +0 -1
  838. package/app/.next/static/chunks/app/api/v1beta/models/route-5ea305bd1a1dc348.js +0 -1
  839. package/app/.next/static/chunks/app/api/version/route-5ea305bd1a1dc348.js +0 -1
  840. package/app/.next/static/chunks/app/api/version/shutdown/route-5ea305bd1a1dc348.js +0 -1
  841. package/app/.next/static/chunks/app/api/version/update/route-5ea305bd1a1dc348.js +0 -1
  842. package/app/.next/static/chunks/app/callback/page-80c520a5e353c3ac.js +0 -1
  843. package/app/.next/static/chunks/app/layout-c47481f46f5ae72b.js +0 -1
  844. package/app/.next/static/chunks/app/login/page-2f45309b2d2ca209.js +0 -1
  845. package/app/.next/static/chunks/app/manifest.webmanifest/route-5ea305bd1a1dc348.js +0 -1
  846. package/app/.next/static/chunks/app/page-5ea305bd1a1dc348.js +0 -1
  847. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-5ea305bd1a1dc348.js +0 -1
  848. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-5ea305bd1a1dc348.js +0 -1
  849. package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-5ea305bd1a1dc348.js +0 -1
  850. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-5ea305bd1a1dc348.js +0 -1
  851. package/app/.next/static/css/8c050f20c62e3425.css +0 -1
  852. package/app/.next/static/zRbzYKfSwZoKLIJvdVXO-/_buildManifest.js +0 -1
  853. /package/app/.next/static/{zRbzYKfSwZoKLIJvdVXO- → xjtYx1FfVtGAPQbE4LiMu}/_ssgManifest.js +0 -0
@@ -1,7 +1,7 @@
1
- "use strict";exports.id=6379,exports.ids=[6379],exports.modules={10664:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{w:()=>z});var e=c(19171),f=c(26263),g=c(56790),h=c(45877),i=c(75237),j=c(41578),k=c(31028),l=c(29737),m=c(29807),n=c(23016),o=c(42617),p=c(60126),q=c(71246),r=c(94535),s=c(88374),t=c(60676),u=c(84155),v=c(53184),w=c(99516),x=c(58543),y=a([q]);async function z({body:a,modelInfo:b,credentials:c,log:d,onCredentialsRefreshed:y,onRequestSuccess:A,onDisconnect:B,clientRawRequest:C,connectionId:D,userAgent:E,apiKey:F,ccFilterNaming:G,rtkEnabled:H,cavemanEnabled:I,cavemanLevel:J,sourceFormatOverride:K,providerThinking:L}){let M,N,O,P,Q,R,{provider:S,model:T}=b,U=Date.now(),V=K||(0,e.Tz)(a),W=(0,o.c)(a,T,E,G);if(W)return W;let X=l.Xg[S]||S,Y=(0,l.ux)(X,T)||(0,e.jJ)(S),Z=(0,l.cY)(X,T);if(L?.mode&&"auto"!==L.mode){let b=L.mode;"on"!==b||a.thinking?"off"!==b||a.thinking?a.reasoning_effort||(a={...a,reasoning_effort:b}):a={...a,thinking:{type:"disabled"}}:(console.log("Injecting provider-level thinking config override: on"),a={...a,thinking:{type:"enabled",budget_tokens:1e4}})}let $=!0===a.stream||V===g.h.ANTIGRAVITY||V===g.h.GEMINI||V===g.h.GEMINI_CLI,_="openai"===S||"codex"===S||"commandcode"===S,aa=!!_||!1!==a.stream,ab=C?.headers?.accept||"",ac=ab.includes("application/json"),ad=ab.includes("text/event-stream");ac&&!ad&&!0!==a.stream&&(aa=!1);let ae=await (0,k.q7)(V,Y,T);C&&ae.logClientRawRequest(C.endpoint,C.body,C.headers),ae.logRawRequest(a),d?.debug?.("FORMAT",`${V} → ${Y} | stream=${aa}`);let af=(0,v.J)(C?.headers||{},a),ag=(0,v.Q)(af,S);if(ag)d?.debug?.("PASSTHROUGH",`${af} → ${S} | native lossless`),M={...a,model:T};else{if(!(M=(0,f.GH)(V,Y,T,a,aa,c,S,ae,Z,D,af)))return(0,p.uw)(T,S,D,!1,!0),(0,m.A1)(n.gx.BAD_REQUEST,`Failed to translate request for ${V} → ${Y}`);N=M._toolNameMap,delete M._toolNameMap,M.model=T}let ah=ag?V:Y,ai=(0,x.B)(M,H),aj=(0,x.f)(ai);aj&&console.log(aj),I&&J&&((0,w.p)(M,ah,J),d?.debug?.("CAVEMAN",`${J} | ${ah}`));let ak=(0,q.SB)(S);(0,p.uw)(T,S,D,!0),(0,p.E5)({model:T,provider:S,connectionId:D,status:"PENDING"}).catch(()=>{});let al=M.messages?.length||M.input?.length||M.contents?.length||M.request?.contents?.length||0;d?.debug?.("REQUEST",`${S.toUpperCase()} | ${T} | ${al} msgs`);let am=(0,i.jd)({onDisconnect:a=>{(0,p.uw)(T,S,D,!1),B&&B(a)},onError:()=>(0,p.uw)(T,S,D,!1),log:d,provider:S,model:T}),an={connectionProxyEnabled:c?.providerSpecificData?.connectionProxyEnabled===!0,connectionProxyUrl:c?.providerSpecificData?.connectionProxyUrl||"",connectionNoProxy:c?.providerSpecificData?.connectionNoProxy||"",vercelRelayUrl:c?.providerSpecificData?.vercelRelayUrl||""};if(an.vercelRelayUrl){let a=c?.connectionName||c?.connectionId||"unknown",b=c?.providerSpecificData?.connectionProxyPoolId||"none";d?.info?.("PROXY",`${S.toUpperCase()} | ${T} | conn=${a} | pool=${b} | vercel-relay=${an.vercelRelayUrl}`)}else if(an.connectionProxyEnabled&&an.connectionProxyUrl){let a=an.connectionProxyUrl;try{let b=new URL(an.connectionProxyUrl),c=b.hostname||"",d=b.port?`:${b.port}`:"",e=b.protocol||"http:";a=`${e}//${c}${d}`}catch{}let b=c?.providerSpecificData?.connectionProxyPoolId||"none",e=c?.connectionName||c?.connectionId||"unknown";d?.info?.("PROXY",`${S.toUpperCase()} | ${T} | conn=${e} | pool=${b} | url=${a}`)}if(an.connectionProxyEnabled&&an.connectionNoProxy){let a=c?.connectionName||c?.connectionId||"unknown";d?.debug?.("PROXY",`${S.toUpperCase()} | ${T} | conn=${a} | no_proxy=${an.connectionNoProxy}`)}try{let a=await ak.execute({model:T,body:M,stream:aa,credentials:c,signal:am.signal,log:d,proxyOptions:an});O=a.response,P=a.url,Q=a.headers,R=a.transformedBody,ae.logTargetRequest(P,Q,R)}catch(c){if((0,p.uw)(T,S,D,!1,!0),(0,p.E5)({model:T,provider:S,connectionId:D,status:`FAILED ${"AbortError"===c.name?499:n.gx.BAD_GATEWAY}`}).catch(()=>{}),(0,p.ox)((0,r.$R)({provider:S,model:T,connectionId:D,latency:{ttft:0,total:Date.now()-U},tokens:{prompt_tokens:0,completion_tokens:0},request:(0,r.Fo)(a,aa),providerRequest:M||null,response:{error:c.message||String(c),status:"AbortError"===c.name?499:502,thinking:null},status:"error"})).catch(()=>{}),"AbortError"===c.name)return am.handleError(c),(0,m.A1)(499,"Request aborted");let b=(0,m.lR)(c,S,T,n.gx.BAD_GATEWAY);return console.log(`${h.lm.red}[ERROR] ${b}${h.lm.reset}`),(0,m.A1)(n.gx.BAD_GATEWAY,b)}if(!ak.noAuth&&(O.status===n.gx.UNAUTHORIZED||O.status===n.gx.FORBIDDEN))try{let a=await (0,j.qZ)(()=>ak.refreshCredentials(c,d),3,d);if(a?.accessToken||a?.copilotToken){if(d?.info?.("TOKEN",`${S.toUpperCase()} | refreshed`),Object.assign(c,a),y)try{await y(a)}catch(a){d?.warn?.("TOKEN",`onCredentialsRefreshed failed: ${a.message}`)}try{let a=await ak.execute({model:T,body:M,stream:aa,credentials:c,signal:am.signal,log:d,proxyOptions:an});a.response.ok&&(O=a.response,P=a.url)}catch{d?.warn?.("TOKEN",`${S.toUpperCase()} | retry after refresh failed`)}}else d?.warn?.("TOKEN",`${S.toUpperCase()} | refresh failed`)}catch(a){d?.warn?.("TOKEN",`${S.toUpperCase()} | refresh threw: ${a.message}`)}if(!O.ok){(0,p.uw)(T,S,D,!1,!0);let{statusCode:b,message:c,resetsAtMs:d}=await (0,m.zL)(O,ak);(0,p.E5)({model:T,provider:S,connectionId:D,status:`FAILED ${b}`}).catch(()=>{}),(0,p.ox)((0,r.$R)({provider:S,model:T,connectionId:D,latency:{ttft:0,total:Date.now()-U},tokens:{prompt_tokens:0,completion_tokens:0},request:(0,r.Fo)(a,aa),providerRequest:R||M||null,response:{error:c,status:b,thinking:null},status:"error"})).catch(()=>{});let e=(0,m.lR)(Error(c),S,T,b);return console.log(`${h.lm.red}[ERROR] ${e}${h.lm.reset}`),ae.logError(Error(c),R||M),(0,m.A1)(b,e,d)}let ao={provider:S,model:T,body:a,stream:aa,translatedBody:M,finalBody:R,requestStartTime:U,connectionId:D,apiKey:F,clientRawRequest:C,onRequestSuccess:A},ap=a=>(0,p.E5)({model:T,provider:S,connectionId:D,...a}).catch(()=>{}),aq=()=>(0,p.uw)(T,S,D,!1);if(!$&&_){let a=await (0,s.I)({...ao,providerResponse:O,sourceFormat:V,trackDone:aq,appendLog:ap});if(a)return am.handleComplete(),a}if(!aa){let a=await (0,t.N)({...ao,providerResponse:O,sourceFormat:V,targetFormat:Y,reqLogger:ae,toolNameMap:N,trackDone:aq,appendLog:ap});return am.handleComplete(),a}let{onStreamComplete:ar}=(0,u.$)({...ao});return(0,u.M)({...ao,providerResponse:O,sourceFormat:V,targetFormat:Y,userAgent:E,reqLogger:ae,toolNameMap:N,streamController:am,onStreamComplete:ar})}q=(y.then?(await y)():y)[0],d()}catch(a){d(a)}})},31028:(a,b,c)=>{c.d(b,{q7:()=>m});let d="u">typeof process&&process.versions?.node&&!0,e="u">typeof process&&process.env?.ENABLE_REQUEST_LOGS==="true",f=null,g=null,h=null;async function i(){if(d&&e&&!f)try{f=await Promise.resolve().then(c.t.bind(c,29021,23)),h=(g=await Promise.resolve().then(c.t.bind(c,33873,23))).join("u">typeof process&&process.cwd?process.cwd():".","logs")}catch{}}async function j(a,b,c){if(await i(),!f||!h)return null;try{f.existsSync(h)||f.mkdirSync(h,{recursive:!0});let d=function(a=new Date){let b=a=>String(a).padStart(2,"0"),c=a.getFullYear(),d=b(a.getMonth()+1),e=b(a.getDate()),f=b(a.getHours()),g=b(a.getMinutes()),h=b(a.getSeconds()),i=String(a.getMilliseconds()).padStart(3,"0");return`${c}${d}${e}_${f}${g}${h}_${i}`}(),e=(c||"unknown").replace(/[/:]/g,"-"),i=`${a}_${b}_${e}_${d}`,j=g.join(h,i);return f.mkdirSync(j,{recursive:!0}),j}catch(a){return console.log("[LOG] Failed to create log session:",a.message),null}}function k(a,b,c){if(f&&a)try{let d=g.join(a,b);f.writeFileSync(d,JSON.stringify(c,null,2))}catch(a){console.log(`[LOG] Failed to write ${b}:`,a.message)}}function l(a){return a?{...a}:{}}async function m(a,b,c){if(!e)return{sessionPath:null,logClientRawRequest(){},logRawRequest(){},logOpenAIRequest(){},logTargetRequest(){},logProviderResponse(){},appendProviderChunk(){},appendOpenAIChunk(){},logConvertedResponse(){},appendConvertedChunk(){},logError(){}};let d=await j(a,b,c);return{get sessionPath(){return d},logClientRawRequest(a,b,c={}){k(d,"1_req_client.json",{timestamp:new Date().toISOString(),endpoint:a,headers:l(c),body:b})},logRawRequest(a,b={}){k(d,"2_req_source.json",{timestamp:new Date().toISOString(),headers:l(b),body:a})},logOpenAIRequest(a){k(d,"3_req_openai.json",{timestamp:new Date().toISOString(),body:a})},logTargetRequest(a,b,c){k(d,"4_req_target.json",{timestamp:new Date().toISOString(),url:a,headers:l(b),body:c})},logProviderResponse(a,b,c,e){k(d,"5_res_provider.json",{timestamp:new Date().toISOString(),status:a,statusText:b,headers:c?"function"==typeof c.entries?Object.fromEntries(c.entries()):c:{},body:e})},appendProviderChunk(a){if(f&&d)try{let b=g.join(d,"5_res_provider.txt");f.appendFileSync(b,a)}catch(a){}},appendOpenAIChunk(a){if(f&&d)try{let b=g.join(d,"6_res_openai.txt");f.appendFileSync(b,a)}catch(a){}},logConvertedResponse(a){k(d,"7_res_client.json",{timestamp:new Date().toISOString(),body:a})},appendConvertedChunk(a){if(f&&d)try{let b=g.join(d,"7_res_client.txt");f.appendFileSync(b,a)}catch(a){}},logError(a,b=null){k(d,"6_error.json",{timestamp:new Date().toISOString(),error:a?.message||String(a),stack:a?.stack,requestBody:b})}}}},42617:(a,b,c)=>{c.d(b,{c:()=>i});var d=c(19171),e=c(26263),f=c(56790),g=c(23016),h=c(45877);function i(a,b,c="",e=!1){if(!c.includes("claude-cli")||!a.messages?.length)return null;let f=a.messages,h=a=>"string"==typeof a?a:Array.isArray(a)?a.filter(a=>"text"===a.type).map(a=>a.text).join(" "):"",j=!1,m=!1,n=f[f.length-1];if(n?.role==="assistant"&&n.content?.[0]?.text==="{"&&(j=!0),j||"Warmup"===h(f[0]?.content)&&(j=!0),j||1!==f.length||f[0]?.role!=="user"||"count"===h(f[0]?.content)&&(j=!0),!j&&g.C8?.length){let a=f.filter(a=>"user"===a.role).map(a=>h(a.content)).join(" ");g.C8.some(b=>a.includes(b))&&(j=!0)}if(!j&&e){let b=f.find(a=>"system"===a.role),c=h(b?.content),d=Array.isArray(a.system)?a.system.filter(a=>"text"===a.type).map(a=>a.text).join(" "):"string"==typeof a.system?a.system:"";(c||d).includes("isNewTopic")&&(j=!0,m=!0)}if(!j)return null;let o=(0,d.Tz)(a),p=!1!==a.stream;if(m){let a=f.find(a=>"user"===a.role),c=JSON.stringify({isNewTopic:!0,title:h(a?.content).trim().split(/\s+/).slice(0,3).join(" ")});return p?l(o,b,c):k(o,b,c)}return p?l(o,b):k(o,b)}function j(a,b="CLI Command Execution: Clear Terminal"){return{id:`chatcmpl-${Date.now()}`,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:a,choices:[{index:0,message:{role:"assistant",content:b},finish_reason:"stop"}],usage:{prompt_tokens:1,completion_tokens:1,total_tokens:2}}}function k(a,b,c){let d=j(b,c);if(a===f.h.OPENAI)return{success:!0,response:new Response(JSON.stringify(d),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})};let g=(0,e.Ws)(a);g.model=b;let h=m(d),i=[];for(let b of h){let c=(0,e.Y8)(f.h.OPENAI,a,b,g);c?.length>0&&i.push(...c)}let k=(0,e.Y8)(f.h.OPENAI,a,null,g);return k?.length>0&&i.push(...k),{success:!0,response:new Response(JSON.stringify(function(a,b){if(!a||0===a.length)return j("unknown");let c=a[a.length-1];if(b===f.h.CLAUDE&&a.find(a=>"message_stop"===a.type)){a.find(a=>"content_block_delta"===a.type);let b=a.find(a=>"message_delta"===a.type),d=a.find(a=>"message_start"===a.type);d?.message&&(c=d.message,b?.usage&&(c.usage=b.usage))}return c}(i,a)),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}}function l(a,b,c){let d=j(b,c),g=(0,e.Ws)(a);g.model=b;let i=m(d),k=[];for(let b of i){let c=(0,e.Y8)(f.h.OPENAI,a,b,g);if(c?.length>0)for(let b of c)k.push((0,h.v8)(b,a))}let l=(0,e.Y8)(f.h.OPENAI,a,null,g);if(l?.length>0)for(let b of l)k.push((0,h.v8)(b,a));return k.push("data: [DONE]\n\n"),{success:!0,response:new Response(k.join(""),{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","Access-Control-Allow-Origin":"*"}})}}function m(a){let{id:b,created:c,model:d,choices:e}=a;return[{id:b,object:"chat.completion.chunk",created:c,model:d,choices:[{index:0,delta:{role:"assistant",content:e[0].message.content},finish_reason:null}]},{id:b,object:"chat.completion.chunk",created:c,model:d,choices:[{index:0,delta:{},finish_reason:"stop"}],usage:a.usage}]}},45877:(a,b,c)=>{c.d(b,{i5:()=>m,l2:()=>n,lm:()=>g.lm,v8:()=>h.v8});var d=c(26263),e=c(56790),f=c(60126),g=c(68735),h=c(11572);let i=new TextEncoder,j="translate",k="passthrough";function l(a={}){let{mode:b=j,targetFormat:c,sourceFormat:m,provider:n=null,reqLogger:o=null,toolNameMap:p=null,model:q=null,connectionId:r=null,body:s=null,onStreamComplete:t=null,apiKey:u=null}=a,v="",w=null,x=new TextDecoder("utf-8",{fatal:!1}),y=b===j?{...(0,d.Ws)(m),provider:n,toolNameMap:p,model:q}:null,z=0,A="",B="",C=null;return new TransformStream({transform(a,f){C||(C=Date.now());let j=x.decode(a,{stream:!0});v+=j,o?.appendProviderChunk?.(j);let l=v.split("\n");for(let a of(v=l.pop()||"",l)){let j=a.trim();if(b===k){let b,c=!1;if(j.startsWith("data:")&&"[DONE]"!==j.slice(5).trim())try{let a=JSON.parse(j.slice(5).trim()),d=(0,h.A4)(a),f=!1;if(void 0!==a.choices&&(a.object||(a.object="chat.completion.chunk",f=!0),a.created||(a.created=Math.floor(Date.now()/1e3),f=!0)),void 0!==a.prompt_filter_results&&(delete a.prompt_filter_results,f=!0),a?.choices)for(let b of a.choices)void 0!==b.content_filter_results&&(delete b.content_filter_results,f=!0);if(!(0,h.c2)(a,e.h.OPENAI))continue;let i=a.choices?.[0]?.delta,k=i?.content,l=i?.reasoning_content;k&&"string"==typeof k&&(z+=k.length,A+=k),l&&"string"==typeof l&&(z+=l.length,B+=l);let m=(0,g.f5)(a);m&&(w=m);let n=a.choices?.[0]?.finish_reason;if(n&&!(0,g.Gh)(a.usage)){let d=(0,g.OF)(s,z,e.h.OPENAI);a.usage=(0,g.WL)(d,e.h.OPENAI),b=`data: ${JSON.stringify(a)}
1
+ "use strict";exports.id=6379,exports.ids=[6379],exports.modules={10664:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{w:()=>A});var e=c(19171),f=c(26263),g=c(56790),h=c(45877),i=c(75237),j=c(41578),k=c(31028),l=c(29737),m=c(29807),n=c(23016),o=c(42617),p=c(60126),q=c(48865),r=c(94535),s=c(88374),t=c(60676),u=c(84155),v=c(53184),w=c(48896),x=c(99516),y=c(58543),z=a([q]);async function A({body:a,modelInfo:b,credentials:c,log:d,onCredentialsRefreshed:z,onRequestSuccess:B,onDisconnect:C,clientRawRequest:D,connectionId:E,userAgent:F,apiKey:G,ccFilterNaming:H,rtkEnabled:I,cavemanEnabled:J,cavemanLevel:K,sourceFormatOverride:L,providerThinking:M}){let N,O,P,Q,R,S,{provider:T,model:U}=b,V=Date.now(),W=L||(0,e.Tz)(a),X=(0,o.c)(a,U,F,H);if(X)return X;let Y=l.Xg[T]||T,Z=(0,l.ux)(Y,U)||(0,e.jJ)(T),$=(0,l.cY)(Y,U);if(M?.mode&&"auto"!==M.mode){let b=M.mode;"on"!==b||a.thinking?"off"!==b||a.thinking?a.reasoning_effort||(a={...a,reasoning_effort:b}):a={...a,thinking:{type:"disabled"}}:(console.log("Injecting provider-level thinking config override: on"),a={...a,thinking:{type:"enabled",budget_tokens:1e4}})}let _=!0===a.stream||W===g.h.ANTIGRAVITY||W===g.h.GEMINI||W===g.h.GEMINI_CLI,aa="openai"===T||"codex"===T||"commandcode"===T,ab=!!aa||!1!==a.stream,ac=D?.headers?.accept||"",ad=ac.includes("application/json"),ae=ac.includes("text/event-stream");ad&&!ae&&!0!==a.stream&&(ab=!1);let af=await (0,k.q7)(W,Z,U);D&&af.logClientRawRequest(D.endpoint,D.body,D.headers),af.logRawRequest(a),d?.debug?.("FORMAT",`${W} → ${Z} | stream=${ab}`);let ag=(0,v.J)(D?.headers||{},a),ah=(0,v.Q)(ag,T);if(ah)d?.debug?.("PASSTHROUGH",`${ag} → ${T} | native lossless`),N={...a,model:U};else{if(!(N=(0,f.GH)(W,Z,U,a,ab,c,T,af,$,E,ag)))return(0,p.uw)(U,T,E,!1,!0),(0,m.A1)(n.gx.BAD_REQUEST,`Failed to translate request for ${W} → ${Z}`);O=N._toolNameMap,delete N._toolNameMap,N.model=U}if("claude"===ag&&Array.isArray(N.tools)){let{tools:a,stripped:b}=(0,w.F)(N.tools);b.length>0&&(N.tools=a,d?.debug?.("TOOLDEDUP",`stripped ${b.length}: ${b.slice(0,3).join(", ")}${b.length>3?"...":""}`))}let ai=ah?W:Z,aj=(0,y.B)(N,I),ak=(0,y.f)(aj);ak&&console.log(ak),J&&K&&((0,x.p)(N,ai,K),d?.debug?.("CAVEMAN",`${K} | ${ai}`));let al=(0,q.SB)(T);(0,p.uw)(U,T,E,!0),(0,p.E5)({model:U,provider:T,connectionId:E,status:"PENDING"}).catch(()=>{});let am=N.messages?.length||N.input?.length||N.contents?.length||N.request?.contents?.length||0;d?.debug?.("REQUEST",`${T.toUpperCase()} | ${U} | ${am} msgs`);let an=(0,i.jd)({onDisconnect:a=>{(0,p.uw)(U,T,E,!1),C&&C(a)},onError:()=>(0,p.uw)(U,T,E,!1),log:d,provider:T,model:U}),ao={connectionProxyEnabled:c?.providerSpecificData?.connectionProxyEnabled===!0,connectionProxyUrl:c?.providerSpecificData?.connectionProxyUrl||"",connectionNoProxy:c?.providerSpecificData?.connectionNoProxy||"",vercelRelayUrl:c?.providerSpecificData?.vercelRelayUrl||""};if(ao.vercelRelayUrl){let a=c?.connectionName||c?.connectionId||"unknown",b=c?.providerSpecificData?.connectionProxyPoolId||"none";d?.info?.("PROXY",`${T.toUpperCase()} | ${U} | conn=${a} | pool=${b} | vercel-relay=${ao.vercelRelayUrl}`)}else if(ao.connectionProxyEnabled&&ao.connectionProxyUrl){let a=ao.connectionProxyUrl;try{let b=new URL(ao.connectionProxyUrl),c=b.hostname||"",d=b.port?`:${b.port}`:"",e=b.protocol||"http:";a=`${e}//${c}${d}`}catch{}let b=c?.providerSpecificData?.connectionProxyPoolId||"none",e=c?.connectionName||c?.connectionId||"unknown";d?.info?.("PROXY",`${T.toUpperCase()} | ${U} | conn=${e} | pool=${b} | url=${a}`)}if(ao.connectionProxyEnabled&&ao.connectionNoProxy){let a=c?.connectionName||c?.connectionId||"unknown";d?.debug?.("PROXY",`${T.toUpperCase()} | ${U} | conn=${a} | no_proxy=${ao.connectionNoProxy}`)}try{let a=await al.execute({model:U,body:N,stream:ab,credentials:c,signal:an.signal,log:d,proxyOptions:ao});P=a.response,Q=a.url,R=a.headers,S=a.transformedBody,af.logTargetRequest(Q,R,S)}catch(c){if((0,p.uw)(U,T,E,!1,!0),(0,p.E5)({model:U,provider:T,connectionId:E,status:`FAILED ${"AbortError"===c.name?499:n.gx.BAD_GATEWAY}`}).catch(()=>{}),(0,p.ox)((0,r.$R)({provider:T,model:U,connectionId:E,latency:{ttft:0,total:Date.now()-V},tokens:{prompt_tokens:0,completion_tokens:0},request:(0,r.Fo)(a,ab),providerRequest:N||null,response:{error:c.message||String(c),status:"AbortError"===c.name?499:502,thinking:null},status:"error"})).catch(()=>{}),"AbortError"===c.name)return an.handleError(c),(0,m.A1)(499,"Request aborted");let b=(0,m.lR)(c,T,U,n.gx.BAD_GATEWAY);return console.log(`${h.lm.red}[ERROR] ${b}${h.lm.reset}`),(0,m.A1)(n.gx.BAD_GATEWAY,b)}if(!al.noAuth&&(P.status===n.gx.UNAUTHORIZED||P.status===n.gx.FORBIDDEN))try{let a=await (0,j.qZ)(()=>al.refreshCredentials(c,d),3,d);if(a?.accessToken||a?.copilotToken){if(d?.info?.("TOKEN",`${T.toUpperCase()} | refreshed`),Object.assign(c,a),z)try{await z(a)}catch(a){d?.warn?.("TOKEN",`onCredentialsRefreshed failed: ${a.message}`)}try{let a=await al.execute({model:U,body:N,stream:ab,credentials:c,signal:an.signal,log:d,proxyOptions:ao});a.response.ok&&(P=a.response,Q=a.url)}catch{d?.warn?.("TOKEN",`${T.toUpperCase()} | retry after refresh failed`)}}else d?.warn?.("TOKEN",`${T.toUpperCase()} | refresh failed`)}catch(a){d?.warn?.("TOKEN",`${T.toUpperCase()} | refresh threw: ${a.message}`)}if(!P.ok){(0,p.uw)(U,T,E,!1,!0);let{statusCode:b,message:c,resetsAtMs:d}=await (0,m.zL)(P,al);(0,p.E5)({model:U,provider:T,connectionId:E,status:`FAILED ${b}`}).catch(()=>{}),(0,p.ox)((0,r.$R)({provider:T,model:U,connectionId:E,latency:{ttft:0,total:Date.now()-V},tokens:{prompt_tokens:0,completion_tokens:0},request:(0,r.Fo)(a,ab),providerRequest:S||N||null,response:{error:c,status:b,thinking:null},status:"error"})).catch(()=>{});let e=(0,m.lR)(Error(c),T,U,b);return console.log(`${h.lm.red}[ERROR] ${e}${h.lm.reset}`),af.logError(Error(c),S||N),(0,m.A1)(b,e,d)}let ap={provider:T,model:U,body:a,stream:ab,translatedBody:N,finalBody:S,requestStartTime:V,connectionId:E,apiKey:G,clientRawRequest:D,onRequestSuccess:B},aq=a=>(0,p.E5)({model:U,provider:T,connectionId:E,...a}).catch(()=>{}),ar=()=>(0,p.uw)(U,T,E,!1);if(!_&&aa){let a=await (0,s.I)({...ap,providerResponse:P,sourceFormat:W,trackDone:ar,appendLog:aq});if(a)return an.handleComplete(),a}if(!ab){let a=await (0,t.N)({...ap,providerResponse:P,sourceFormat:W,targetFormat:Z,reqLogger:af,toolNameMap:O,trackDone:ar,appendLog:aq});return an.handleComplete(),a}let{onStreamComplete:as}=(0,u.$)({...ap});return(0,u.M)({...ap,providerResponse:P,sourceFormat:W,targetFormat:Z,userAgent:F,reqLogger:af,toolNameMap:O,streamController:an,onStreamComplete:as})}q=(z.then?(await z)():z)[0],d()}catch(a){d(a)}})},31028:(a,b,c)=>{c.d(b,{q7:()=>m});let d="u">typeof process&&process.versions?.node&&!0,e="u">typeof process&&process.env?.ENABLE_REQUEST_LOGS==="true",f=null,g=null,h=null;async function i(){if(d&&e&&!f)try{f=await Promise.resolve().then(c.t.bind(c,29021,23)),h=(g=await Promise.resolve().then(c.t.bind(c,33873,23))).join("u">typeof process&&process.cwd?process.cwd():".","logs")}catch{}}async function j(a,b,c){if(await i(),!f||!h)return null;try{f.existsSync(h)||f.mkdirSync(h,{recursive:!0});let d=function(a=new Date){let b=a=>String(a).padStart(2,"0"),c=a.getFullYear(),d=b(a.getMonth()+1),e=b(a.getDate()),f=b(a.getHours()),g=b(a.getMinutes()),h=b(a.getSeconds()),i=String(a.getMilliseconds()).padStart(3,"0");return`${c}${d}${e}_${f}${g}${h}_${i}`}(),e=(c||"unknown").replace(/[/:]/g,"-"),i=`${a}_${b}_${e}_${d}`,j=g.join(h,i);return f.mkdirSync(j,{recursive:!0}),j}catch(a){return console.log("[LOG] Failed to create log session:",a.message),null}}function k(a,b,c){if(f&&a)try{let d=g.join(a,b);f.writeFileSync(d,JSON.stringify(c,null,2))}catch(a){console.log(`[LOG] Failed to write ${b}:`,a.message)}}function l(a){return a?{...a}:{}}async function m(a,b,c){if(!e)return{sessionPath:null,logClientRawRequest(){},logRawRequest(){},logOpenAIRequest(){},logTargetRequest(){},logProviderResponse(){},appendProviderChunk(){},appendOpenAIChunk(){},logConvertedResponse(){},appendConvertedChunk(){},logError(){}};let d=await j(a,b,c);return{get sessionPath(){return d},logClientRawRequest(a,b,c={}){k(d,"1_req_client.json",{timestamp:new Date().toISOString(),endpoint:a,headers:l(c),body:b})},logRawRequest(a,b={}){k(d,"2_req_source.json",{timestamp:new Date().toISOString(),headers:l(b),body:a})},logOpenAIRequest(a){k(d,"3_req_openai.json",{timestamp:new Date().toISOString(),body:a})},logTargetRequest(a,b,c){k(d,"4_req_target.json",{timestamp:new Date().toISOString(),url:a,headers:l(b),body:c})},logProviderResponse(a,b,c,e){k(d,"5_res_provider.json",{timestamp:new Date().toISOString(),status:a,statusText:b,headers:c?"function"==typeof c.entries?Object.fromEntries(c.entries()):c:{},body:e})},appendProviderChunk(a){if(f&&d)try{let b=g.join(d,"5_res_provider.txt");f.appendFileSync(b,a)}catch(a){}},appendOpenAIChunk(a){if(f&&d)try{let b=g.join(d,"6_res_openai.txt");f.appendFileSync(b,a)}catch(a){}},logConvertedResponse(a){k(d,"7_res_client.json",{timestamp:new Date().toISOString(),body:a})},appendConvertedChunk(a){if(f&&d)try{let b=g.join(d,"7_res_client.txt");f.appendFileSync(b,a)}catch(a){}},logError(a,b=null){k(d,"6_error.json",{timestamp:new Date().toISOString(),error:a?.message||String(a),stack:a?.stack,requestBody:b})}}}},42617:(a,b,c)=>{c.d(b,{c:()=>i});var d=c(19171),e=c(26263),f=c(56790),g=c(23016),h=c(45877);function i(a,b,c="",e=!1){if(!c.includes("claude-cli")||!a.messages?.length)return null;let f=a.messages,h=a=>"string"==typeof a?a:Array.isArray(a)?a.filter(a=>"text"===a.type).map(a=>a.text).join(" "):"",j=!1,m=!1,n=f[f.length-1];if(n?.role==="assistant"&&n.content?.[0]?.text==="{"&&(j=!0),j||"Warmup"===h(f[0]?.content)&&(j=!0),j||1!==f.length||f[0]?.role!=="user"||"count"===h(f[0]?.content)&&(j=!0),!j&&g.C8?.length){let a=f.filter(a=>"user"===a.role).map(a=>h(a.content)).join(" ");g.C8.some(b=>a.includes(b))&&(j=!0)}if(!j&&e){let b=f.find(a=>"system"===a.role),c=h(b?.content),d=Array.isArray(a.system)?a.system.filter(a=>"text"===a.type).map(a=>a.text).join(" "):"string"==typeof a.system?a.system:"";(c||d).includes("isNewTopic")&&(j=!0,m=!0)}if(!j)return null;let o=(0,d.Tz)(a),p=!1!==a.stream;if(m){let a=f.find(a=>"user"===a.role),c=JSON.stringify({isNewTopic:!0,title:h(a?.content).trim().split(/\s+/).slice(0,3).join(" ")});return p?l(o,b,c):k(o,b,c)}return p?l(o,b):k(o,b)}function j(a,b="CLI Command Execution: Clear Terminal"){return{id:`chatcmpl-${Date.now()}`,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:a,choices:[{index:0,message:{role:"assistant",content:b},finish_reason:"stop"}],usage:{prompt_tokens:1,completion_tokens:1,total_tokens:2}}}function k(a,b,c){let d=j(b,c);if(a===f.h.OPENAI)return{success:!0,response:new Response(JSON.stringify(d),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})};let g=(0,e.Ws)(a);g.model=b;let h=m(d),i=[];for(let b of h){let c=(0,e.Y8)(f.h.OPENAI,a,b,g);c?.length>0&&i.push(...c)}let k=(0,e.Y8)(f.h.OPENAI,a,null,g);return k?.length>0&&i.push(...k),{success:!0,response:new Response(JSON.stringify(function(a,b){if(!a||0===a.length)return j("unknown");let c=a[a.length-1];if(b===f.h.CLAUDE&&a.find(a=>"message_stop"===a.type)){a.find(a=>"content_block_delta"===a.type);let b=a.find(a=>"message_delta"===a.type),d=a.find(a=>"message_start"===a.type);d?.message&&(c=d.message,b?.usage&&(c.usage=b.usage))}return c}(i,a)),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}}function l(a,b,c){let d=j(b,c),g=(0,e.Ws)(a);g.model=b;let i=m(d),k=[];for(let b of i){let c=(0,e.Y8)(f.h.OPENAI,a,b,g);if(c?.length>0)for(let b of c)k.push((0,h.v8)(b,a))}let l=(0,e.Y8)(f.h.OPENAI,a,null,g);if(l?.length>0)for(let b of l)k.push((0,h.v8)(b,a));return k.push("data: [DONE]\n\n"),{success:!0,response:new Response(k.join(""),{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","Access-Control-Allow-Origin":"*"}})}}function m(a){let{id:b,created:c,model:d,choices:e}=a;return[{id:b,object:"chat.completion.chunk",created:c,model:d,choices:[{index:0,delta:{role:"assistant",content:e[0].message.content},finish_reason:null}]},{id:b,object:"chat.completion.chunk",created:c,model:d,choices:[{index:0,delta:{},finish_reason:"stop"}],usage:a.usage}]}},45877:(a,b,c)=>{c.d(b,{i5:()=>m,l2:()=>n,lm:()=>g.lm,v8:()=>h.v8});var d=c(26263),e=c(56790),f=c(60126),g=c(68735),h=c(11572);let i=new TextEncoder,j="translate",k="passthrough";function l(a={}){let{mode:b=j,targetFormat:c,sourceFormat:m,provider:n=null,reqLogger:o=null,toolNameMap:p=null,model:q=null,connectionId:r=null,body:s=null,onStreamComplete:t=null,apiKey:u=null}=a,v="",w=null,x=new TextDecoder("utf-8",{fatal:!1}),y=b===j?{...(0,d.Ws)(m),provider:n,toolNameMap:p,model:q}:null,z=0,A="",B="",C=null;return new TransformStream({transform(a,f){C||(C=Date.now());let j=x.decode(a,{stream:!0});v+=j,o?.appendProviderChunk?.(j);let l=v.split("\n");for(let a of(v=l.pop()||"",l)){let j=a.trim();if(b===k){let b,c=!1;if(j.startsWith("data:")&&"[DONE]"!==j.slice(5).trim())try{let a=JSON.parse(j.slice(5).trim()),d=(0,h.A4)(a),f=!1;if(void 0!==a.choices&&(a.object||(a.object="chat.completion.chunk",f=!0),a.created||(a.created=Math.floor(Date.now()/1e3),f=!0)),void 0!==a.prompt_filter_results&&(delete a.prompt_filter_results,f=!0),a?.choices)for(let b of a.choices)void 0!==b.content_filter_results&&(delete b.content_filter_results,f=!0);if(!(0,h.c2)(a,e.h.OPENAI))continue;let i=a.choices?.[0]?.delta,k=i?.content,l=i?.reasoning_content;k&&"string"==typeof k&&(z+=k.length,A+=k),l&&"string"==typeof l&&(z+=l.length,B+=l);let m=(0,g.f5)(a);m&&(w=m);let n=a.choices?.[0]?.finish_reason;if(n&&!(0,g.Gh)(a.usage)){let d=(0,g.OF)(s,z,e.h.OPENAI);a.usage=(0,g.WL)(d,e.h.OPENAI),b=`data: ${JSON.stringify(a)}
2
2
  `,w=d,c=!0}else if(n&&w){let d=(0,g.O9)(w);a.usage=(0,g.WL)(d,e.h.OPENAI),b=`data: ${JSON.stringify(a)}
3
3
  `,c=!0}else(d||f)&&(b=`data: ${JSON.stringify(a)}
4
- `,c=!0)}catch{}c||(b=a.startsWith("data:")&&!a.startsWith("data: ")?"data: "+a.slice(5)+"\n":a+"\n"),o?.appendConvertedChunk?.(b),f.enqueue(i.encode(b));continue}if(!j)continue;let l=(0,h.tV)(j,c);if(!l)continue;if(l&&l.done&&c!==e.h.OLLAMA){let a="data: [DONE]\n\n";o?.appendConvertedChunk?.(a),f.enqueue(i.encode(a));continue}if(l.delta?.text&&(z+=l.delta.text.length,A+=l.delta.text),l.delta?.thinking&&(z+=l.delta.thinking.length,B+=l.delta.thinking),l.choices?.[0]?.delta?.content&&(z+=l.choices[0].delta.content.length,A+=l.choices[0].delta.content),l.choices?.[0]?.delta?.reasoning_content&&(z+=l.choices[0].delta.reasoning_content.length,B+=l.choices[0].delta.reasoning_content),l.candidates?.[0]?.content?.parts)for(let a of l.candidates[0].content.parts)a.text&&"string"==typeof a.text&&(z+=a.text.length,!0===a.thought?B+=a.text:A+=a.text);let n=(0,g.f5)(l);n&&(y.usage=n);let p=(0,d.Y8)(c,m,l,y);if(p?._openaiIntermediate)for(let a of p._openaiIntermediate){let b=(0,h.v8)(a,e.h.OPENAI);o?.appendOpenAIChunk?.(b)}if(p?.length>0)for(let a of p){if(!(0,h.c2)(a,m))continue;let b="message_delta"===a.type||a.choices?.[0]?.finish_reason;if(y.finishReason&&b&&!(0,g.Gh)(a.usage)&&z>0){let b=(0,g.OF)(s,z,m);a.usage=(0,g.WL)(b,m),y.usage=b}else if(y.finishReason&&b&&y.usage){let b=(0,g.O9)(y.usage);a.usage=(0,g.WL)(b,m)}let c=(0,h.v8)(a,m);o?.appendConvertedChunk?.(c),f.enqueue(i.encode(c))}}},flush(a){(0,f.uw)(q,n,r,!1);try{let j=x.decode();if(j&&(v+=j),b===k){if(v){let b=v;v.startsWith("data:")&&!v.startsWith("data: ")&&(b="data: "+v.slice(5)),o?.appendConvertedChunk?.(b),a.enqueue(i.encode(b))}!(0,g.Gh)(w)&&z>0&&(w=(0,g.OF)(s,z,e.h.OPENAI)),(0,g.Gh)(w)?(0,g.IF)(n,w,q,r,u):(0,f.E5)({model:q,provider:n,connectionId:r,tokens:null,status:"200 OK"}).catch(()=>{});let b="data: [DONE]\n\n";o?.appendConvertedChunk?.(b),a.enqueue(i.encode(b)),t&&t({content:A,thinking:B},w,C);return}if(v.trim()){let b=(0,h.tV)(v.trim());if(b&&!b.done){let f=(0,d.Y8)(c,m,b,y);if(f?._openaiIntermediate)for(let a of f._openaiIntermediate){let b=(0,h.v8)(a,e.h.OPENAI);o?.appendOpenAIChunk?.(b)}if(f?.length>0)for(let b of f){let c=(0,h.v8)(b,m);o?.appendConvertedChunk?.(c),a.enqueue(i.encode(c))}}}let l=(0,d.Y8)(c,m,null,y);if(l?._openaiIntermediate)for(let a of l._openaiIntermediate){let b=(0,h.v8)(a,e.h.OPENAI);o?.appendOpenAIChunk?.(b)}if(l?.length>0)for(let b of l){let c=(0,h.v8)(b,m);o?.appendConvertedChunk?.(c),a.enqueue(i.encode(c))}let p="data: [DONE]\n\n";o?.appendConvertedChunk?.(p),a.enqueue(i.encode(p)),!(0,g.Gh)(y?.usage)&&z>0&&(y.usage=(0,g.OF)(s,z,m)),(0,g.Gh)(y?.usage)?(0,g.IF)(y.provider||c,y.usage,q,r,u):(0,f.E5)({model:q,provider:n,connectionId:r,tokens:null,status:"200 OK"}).catch(()=>{}),t&&t({content:A,thinking:B},y?.usage,C)}catch(a){console.log("Error in flush:",a)}}})}function m(a,b,c=null,d=null,e=null,f=null,g=null,h=null,i=null,k=null){return l({mode:j,targetFormat:a,sourceFormat:b,provider:c,reqLogger:d,toolNameMap:e,model:f,connectionId:g,body:h,onStreamComplete:i,apiKey:k})}function n(a=null,b=null,c=null,d=null,e=null,f=null,g=null){return l({mode:k,provider:a,reqLogger:b,model:c,connectionId:d,body:e,onStreamComplete:f,apiKey:g})}},46379:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{$B:()=>e.$B,SB:()=>g.SB}),c(37973),c(62276),c(43528),c(23016),c(29737),c(56790),c(26263),c(19171),c(53057),c(2449);var e=c(41578),f=c(10664),g=c(71246);c(29807),c(45877);var h=a([f,g]);[f,g]=h.then?(await h)():h,d()}catch(a){d(a)}})},53184:(a,b,c)=>{c.d(b,{J:()=>e,Q:()=>f});let d={claude:["claude","anthropic"],"gemini-cli":["gemini-cli"],antigravity:["antigravity"],codex:["codex"]};function e(a={},b={}){let c=(a["user-agent"]||"").toLowerCase(),d=(a["x-app"]||"").toLowerCase(),f=(a["openai-intent"]||"").toLowerCase(),g=(a["x-initiator"]||a["X-Initiator"]||"").toLowerCase();return"antigravity"===b.userAgent?"antigravity":c.includes("githubcopilotchat")||"conversation-panel"===f||"user"===g?"github-copilot":c.includes("claude-cli")||c.includes("claude-code")||"cli"===d?"claude":c.includes("gemini-cli")?"gemini-cli":c.includes("codex-cli")?"codex":null}function f(a,b){if(!a)return!1;let c=d[a];if(!c)return!1;let e=b.startsWith("anthropic-compatible")?"anthropic":b;return c.includes(e)}},58543:(a,b,c)=>{c.d(b,{B:()=>A,f:()=>C});let d=["node_modules",".git","target","__pycache__",".next","dist","build",".venv","venv",".cache",".idea",".vscode",".DS_Store"];function e(a,b=500){let c=[],d="",f=0,g=0,h=!1,i=0,j=0,k=!1;for(let e of a.split("\n")){if(e.startsWith("diff --git")){j>0&&(c.push(` ... (${j} lines truncated)`),k=!0,j=0),d&&(f>0||g>0)&&c.push(` +${f} -${g}`);let a=e.split(" b/");d=a.length>1?a.slice(1).join(" b/"):"unknown",c.push(`
4
+ `,c=!0)}catch{}c||(b=a.startsWith("data:")&&!a.startsWith("data: ")?"data: "+a.slice(5)+"\n":a+"\n"),o?.appendConvertedChunk?.(b),f.enqueue(i.encode(b));continue}if(!j)continue;let l=(0,h.tV)(j,c);if(!l)continue;if(l&&l.done&&c!==e.h.OLLAMA){let a="data: [DONE]\n\n";o?.appendConvertedChunk?.(a),f.enqueue(i.encode(a));continue}if(l.delta?.text&&(z+=l.delta.text.length,A+=l.delta.text),l.delta?.thinking&&(z+=l.delta.thinking.length,B+=l.delta.thinking),l.choices?.[0]?.delta?.content&&(z+=l.choices[0].delta.content.length,A+=l.choices[0].delta.content),l.choices?.[0]?.delta?.reasoning_content&&(z+=l.choices[0].delta.reasoning_content.length,B+=l.choices[0].delta.reasoning_content),l.candidates?.[0]?.content?.parts)for(let a of l.candidates[0].content.parts)a.text&&"string"==typeof a.text&&(z+=a.text.length,!0===a.thought?B+=a.text:A+=a.text);let n=(0,g.f5)(l);n&&(y.usage=n);let p=(0,d.Y8)(c,m,l,y);if(p?._openaiIntermediate)for(let a of p._openaiIntermediate){let b=(0,h.v8)(a,e.h.OPENAI);o?.appendOpenAIChunk?.(b)}if(p?.length>0)for(let a of p){if(!(0,h.c2)(a,m))continue;let b="message_delta"===a.type||a.choices?.[0]?.finish_reason;if(y.finishReason&&b&&!(0,g.Gh)(a.usage)&&z>0){let b=(0,g.OF)(s,z,m);a.usage=(0,g.WL)(b,m),y.usage=b}else if(y.finishReason&&b&&y.usage){let b=(0,g.O9)(y.usage);a.usage=(0,g.WL)(b,m)}let c=(0,h.v8)(a,m);o?.appendConvertedChunk?.(c),f.enqueue(i.encode(c))}}},flush(a){(0,f.uw)(q,n,r,!1);try{let j=x.decode();if(j&&(v+=j),b===k){if(v){let b=v;v.startsWith("data:")&&!v.startsWith("data: ")&&(b="data: "+v.slice(5)),o?.appendConvertedChunk?.(b),a.enqueue(i.encode(b))}!(0,g.Gh)(w)&&z>0&&(w=(0,g.OF)(s,z,e.h.OPENAI)),(0,g.Gh)(w)?(0,g.IF)(n,w,q,r,u):(0,f.E5)({model:q,provider:n,connectionId:r,tokens:null,status:"200 OK"}).catch(()=>{});let b="data: [DONE]\n\n";o?.appendConvertedChunk?.(b),a.enqueue(i.encode(b)),t&&t({content:A,thinking:B},w,C);return}if(v.trim()){let b=(0,h.tV)(v.trim());if(b&&!b.done){let f=(0,d.Y8)(c,m,b,y);if(f?._openaiIntermediate)for(let a of f._openaiIntermediate){let b=(0,h.v8)(a,e.h.OPENAI);o?.appendOpenAIChunk?.(b)}if(f?.length>0)for(let b of f){let c=(0,h.v8)(b,m);o?.appendConvertedChunk?.(c),a.enqueue(i.encode(c))}}}let l=(0,d.Y8)(c,m,null,y);if(l?._openaiIntermediate)for(let a of l._openaiIntermediate){let b=(0,h.v8)(a,e.h.OPENAI);o?.appendOpenAIChunk?.(b)}if(l?.length>0)for(let b of l){let c=(0,h.v8)(b,m);o?.appendConvertedChunk?.(c),a.enqueue(i.encode(c))}let p="data: [DONE]\n\n";o?.appendConvertedChunk?.(p),a.enqueue(i.encode(p)),!(0,g.Gh)(y?.usage)&&z>0&&(y.usage=(0,g.OF)(s,z,m)),(0,g.Gh)(y?.usage)?(0,g.IF)(y.provider||c,y.usage,q,r,u):(0,f.E5)({model:q,provider:n,connectionId:r,tokens:null,status:"200 OK"}).catch(()=>{}),t&&t({content:A,thinking:B},y?.usage,C)}catch(a){console.log("Error in flush:",a)}}})}function m(a,b,c=null,d=null,e=null,f=null,g=null,h=null,i=null,k=null){return l({mode:j,targetFormat:a,sourceFormat:b,provider:c,reqLogger:d,toolNameMap:e,model:f,connectionId:g,body:h,onStreamComplete:i,apiKey:k})}function n(a=null,b=null,c=null,d=null,e=null,f=null,g=null){return l({mode:k,provider:a,reqLogger:b,model:c,connectionId:d,body:e,onStreamComplete:f,apiKey:g})}},46379:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{$B:()=>e.$B,SB:()=>g.SB}),c(37973),c(62276),c(43528),c(23016),c(29737),c(56790),c(26263),c(19171),c(53057),c(2449);var e=c(41578),f=c(10664);c(75237);var g=c(48865);c(29807),c(45877);var h=a([f,g]);[f,g]=h.then?(await h)():h,d()}catch(a){d(a)}})},48896:(a,b,c)=>{c.d(b,{F:()=>g});let d=[{triggers:["mcp__exa__web_search_exa","mcp__exa__web_fetch_exa"],strip:["WebSearch","WebFetch","mcp__workspace__web_fetch"]},{triggers:["mcp__tavily__tavily_search","mcp__tavily__tavily_extract"],strip:["WebSearch","WebFetch","mcp__workspace__web_fetch"]},{triggers:[/^mcp__browsermcp__/],strip:[/^mcp__Claude_in_Chrome__/]}];function e(a){return a?.name||a?.function?.name||""}function f(a,b){return"string"==typeof b?a===b:b instanceof RegExp&&b.test(a)}function g(a){if(!Array.isArray(a)||0===a.length)return{tools:a,stripped:[]};let b=a.map(e),c=new Set;for(let a of d)if(b.some(b=>a.triggers.some(a=>f(b,a))))for(let d of b)a.strip.some(a=>f(d,a))&&c.add(d);return 0===c.size?{tools:a,stripped:[]}:{tools:a.filter(a=>!c.has(e(a))),stripped:Array.from(c)}}},53184:(a,b,c)=>{c.d(b,{J:()=>e,Q:()=>f});let d={claude:["claude","anthropic"],"gemini-cli":["gemini-cli"],antigravity:["antigravity"],codex:["codex"]};function e(a={},b={}){let c=(a["user-agent"]||"").toLowerCase(),d=(a["x-app"]||"").toLowerCase(),f=(a["openai-intent"]||"").toLowerCase(),g=(a["x-initiator"]||a["X-Initiator"]||"").toLowerCase();return"antigravity"===b.userAgent?"antigravity":c.includes("githubcopilotchat")||"conversation-panel"===f||"user"===g?"github-copilot":c.includes("claude-cli")||c.includes("claude-code")||"cli"===d?"claude":c.includes("gemini-cli")?"gemini-cli":c.includes("codex-cli")?"codex":null}function f(a,b){if(!a)return!1;let c=d[a];if(!c)return!1;let e=b.startsWith("anthropic-compatible")?"anthropic":b;return c.includes(e)}},58543:(a,b,c)=>{c.d(b,{B:()=>A,f:()=>C});let d=["node_modules",".git","target","__pycache__",".next","dist","build",".venv","venv",".cache",".idea",".vscode",".DS_Store"];function e(a,b=500){let c=[],d="",f=0,g=0,h=!1,i=0,j=0,k=!1;for(let e of a.split("\n")){if(e.startsWith("diff --git")){j>0&&(c.push(` ... (${j} lines truncated)`),k=!0,j=0),d&&(f>0||g>0)&&c.push(` +${f} -${g}`);let a=e.split(" b/");d=a.length>1?a.slice(1).join(" b/"):"unknown",c.push(`
5
5
  ${d}`),f=0,g=0,h=!1,i=0}else e.startsWith("@@")?(j>0&&(c.push(` ... (${j} lines truncated)`),k=!0,j=0),h=!0,i=0,c.push(` ${e}`)):h&&(e.startsWith("+")&&!e.startsWith("+++")?(f+=1,i<100?(c.push(` ${e}`),i+=1):j+=1):e.startsWith("-")&&!e.startsWith("---")?(g+=1,i<100?(c.push(` ${e}`),i+=1):j+=1):i<100&&!e.startsWith("\\")&&i>0&&(c.push(` ${e}`),i+=1));if(c.length>=b){c.push("\n... (more changes truncated)"),k=!0;break}}return j>0&&(c.push(` ... (${j} lines truncated)`),k=!0),d&&(f>0||g>0)&&c.push(` +${f} -${g}`),k&&c.push("[full diff: rtk git diff --no-compact]"),c.join("\n")}function f(a){let b=a.split("\n");if(0===b.length||1===b.length&&!b[0].trim())return"Clean working tree";let c="",d=[],e=[],f=[],g=0,h=0,i=0,j=0;for(let a of b){if(!a.trim())continue;let b=a.match(/^On branch (\S+)/);if(b){c=b[1];continue}if(a.startsWith("##")){c=a.replace(/^##\s*/,"");continue}if(a.length>=3&&/^[ MADRCU?!][ MADRCU?!] /.test(a)){let b=a[0],c=a[1],k=a.slice(3);if("??"===a.slice(0,2)){i++,f.push(k);continue}"MADRC".includes(b)?(g++,d.push(k)):"U"===b&&j++,("M"===c||"D"===c)&&(h++,e.push(k));continue}let k=a.match(/^\s*(modified|new file|deleted|renamed|both modified):\s+(.+)$/);if(k){let a=k[1],b=k[2].trim();"both modified"===a?j++:"modified"===a||"deleted"===a?(h++,e.push(b)):("new file"===a||"renamed"===a)&&(g++,d.push(b));continue}}let k="";if(c&&(k+=`* ${c}
6
6
  `),g>0){for(let a of(k+=`+ Staged: ${g} files
7
7
  `,d.slice(0,10)))k+=` ${a}
@@ -35,7 +35,7 @@ ${e.length} files in ${g.length} dirs:
35
35
  `,b.slice(0,10)))h+=` ${c}
36
36
  `;b.length>10&&(h+=` +${b.length-10}
37
37
  `),h+="\n"}return g.length>20&&(h+=`+${g.length-20} more dirs
38
- `),h.replace(/\n+$/,"")}p.filterName="search-list";let q=/^Result of search in '[^']*' \(total (\d+) files?\):/,r=/^diff --git /m,s=/^@@ /m,t=/^On branch |^nothing to commit|^Changes (not |to be )|^Untracked files:/m,u=/^[ MADRCU?!][ MADRCU?!] \S/m,v=/[├└]──|│ /,w=/^[-dlbcps][rwx-]{9}/m,x=/^total \d+$/m;function y(a){let b=a.indexOf(":");if(-1===b)return!1;let c=a.indexOf(":",b+1);if(-1===c)return!1;let d=a.slice(b+1,c);return/^\d+$/.test(d)}function z(a){let b=a.trim();return!(0===b.length||b.includes(":"))&&(b.startsWith(".")||b.startsWith("/")||b.includes("/"))}function A(a,b){if(!b||!a)return null;let c=Array.isArray(a.messages)?a.messages:Array.isArray(a.input)?a.input:null;if(!c)return null;let d={bytesBefore:0,bytesAfter:0,hits:[]};try{for(let a=0;a<c.length;a++){let b=c[a];if(b){if("function_call_output"===b.type){if("string"==typeof b.output)b.output=B(b.output,d,"openai-responses-string");else if(Array.isArray(b.output))for(let a=0;a<b.output.length;a++){let c=b.output[a];c&&"input_text"===c.type&&"string"==typeof c.text&&(c.text=B(c.text,d,"openai-responses-array"))}continue}if("tool"===b.role&&"string"==typeof b.content){b.content=B(b.content,d,"openai-tool");continue}if(Array.isArray(b.content)){if("tool"===b.role){for(let a=0;a<b.content.length;a++){let c=b.content[a];c&&"text"===c.type&&"string"==typeof c.text&&(c.text=B(c.text,d,"openai-tool-array"))}continue}for(let a=0;a<b.content.length;a++){let c=b.content[a];if(c&&"tool_result"===c.type&&!0!==c.is_error){if("string"==typeof c.content)c.content=B(c.content,d,"claude-string");else if(Array.isArray(c.content))for(let a=0;a<c.content.length;a++){let b=c.content[a];b&&"text"===b.type&&"string"==typeof b.text&&(b.text=B(b.text,d,"claude-array"))}}}}}}}catch(a){return console.warn("[RTK] compressMessages error:",a.message),null}return d}function B(a,b,c){let d=a.length;if(b.bytesBefore+=d,d<500||d>0xa00000)return b.bytesAfter+=d,a;let j=function(a){var b,c;let d,j,A=a.length>1024?a.slice(0,1024):a;if(r.test(A)||s.test(A))return e;if(t.test(A)||!((d=A.split("\n").filter(a=>a.trim())).length<3)&&d.filter(a=>u.test(a)).length/d.length>=.6)return f;let B=A.split("\n"),C=B.filter(a=>a.trim().length>0);return C.slice(0,5).some(y)?g:C.length>=3&&C.every(z)?h:v.test(A)?l:x.test(A)||(b=A,j=new RegExp((c=w).source,c.flags.includes("g")?c.flags:c.flags+"g"),(b.match(j)||[]).length>=3)?k:q.test(A)?p:B.length>=250&&function(a){let b=0,c=0;for(let d of a.slice(0,100))0!==d.length&&(c++,o.test(d)&&b++);return!(c<5)&&b/c>=.7}(B)?n:C.length>=5?i:a.split("\n").length>=250?m:null}(a);if(!j)return b.bytesAfter+=d,a;let A=function(a,b){if("function"!=typeof a)return b;try{let c=a(b);if("string"!=typeof c)return b;return c}catch(d){let c=a.filterName||a.name||"anonymous";return console.warn(`[rtk] warning: filter '${c}' panicked — passing through raw output: ${d?.message||d}`),b}}(j,a);return!A||0===A.length||A.length>=d?(b.bytesAfter+=d,a):(b.bytesAfter+=A.length,b.hits.push({shape:c,filter:j.filterName||j.name,saved:d-A.length}),A)}function C(a){if(!a||!a.hits||0===a.hits.length)return null;let b=a.bytesBefore-a.bytesAfter,c=a.bytesBefore>0?(b/a.bytesBefore*100).toFixed(1):"0",d=Array.from(new Set(a.hits.map(a=>a.filter))).join(",");return`[RTK] saved ${b}B / ${a.bytesBefore}B (${c}%) via [${d}] hits=${a.hits.length}`}},60676:(a,b,c)=>{c.d(b,{N:()=>n});var d=c(56790),e=c(26263),f=c(17019),g=c(68735),h=c(29807),i=c(23016),j=c(88374),k=c(94535),l=c(60126),m=c(96771);async function n({providerResponse:a,provider:b,model:c,sourceFormat:o,targetFormat:p,body:q,stream:r,translatedBody:s,finalBody:t,requestStartTime:u,connectionId:v,apiKey:w,clientRawRequest:x,onRequestSuccess:y,reqLogger:z,toolNameMap:A,trackDone:B,appendLog:C}){let D;if(B(),(a.headers.get("content-type")||"").includes("text/event-stream")){let b=await a.text(),d=(0,j.F)(b,c);if(!d)return C({status:`FAILED ${i.gx.BAD_GATEWAY}`}),(0,h.A1)(i.gx.BAD_GATEWAY,"Invalid SSE response for non-streaming request");D=d}else try{D=await a.json()}catch(a){return C({status:`FAILED ${i.gx.BAD_GATEWAY}`}),console.error(`[ChatCore] Failed to parse JSON from ${b}:`,a.message),(0,h.A1)(i.gx.BAD_GATEWAY,`Invalid JSON response from ${b}`)}z.logProviderResponse(a.status,a.statusText,a.headers,D),y&&await y(),D=(0,m.kR)(D,A);let E=(0,k.MK)(D);C({tokens:E,status:"200 OK"}),(0,k.qr)({provider:b,model:c,tokens:E,connectionId:v,apiKey:w,endpoint:x?.endpoint});let F=(0,e.nZ)(p,o)?function(a,b,c){if(b===c||b===d.h.OPENAI)return a;if(b===d.h.GEMINI||b===d.h.ANTIGRAVITY||b===d.h.GEMINI_CLI||b===d.h.VERTEX){let b=a.response||a;if(!b?.candidates?.[0])return a;let c=b.candidates[0],d=c.content,e=b.usageMetadata||a.usageMetadata,f="",g="",h=[];if(d?.parts)for(let a of d.parts)!0===a.thought&&a.text?g+=a.text:void 0!==a.text&&(f+=a.text),a.functionCall&&h.push({id:`call_${a.functionCall.name}_${Date.now()}_${h.length}`,type:"function",function:{name:a.functionCall.name,arguments:JSON.stringify(a.functionCall.args||{})}});let i={role:"assistant"};f&&(i.content=f),g&&(i.reasoning_content=g),h.length>0&&(i.tool_calls=h),i.content||i.tool_calls||(i.content="");let j=(c.finishReason||"stop").toLowerCase();"stop"===j&&h.length>0&&(j="tool_calls");let k={id:`chatcmpl-${b.responseId||Date.now()}`,object:"chat.completion",created:Math.floor(new Date(b.createTime||Date.now()).getTime()/1e3),model:b.modelVersion||"gemini",choices:[{index:0,message:i,finish_reason:j}]};return e&&(k.usage={prompt_tokens:(e.promptTokenCount||0)+(e.thoughtsTokenCount||0),completion_tokens:e.candidatesTokenCount||0,total_tokens:e.totalTokenCount||0},e.thoughtsTokenCount>0&&(k.usage.completion_tokens_details={reasoning_tokens:e.thoughtsTokenCount})),k}if(b===d.h.CLAUDE){if(!a.content)return a;let b="",c="",d=[];for(let e of a.content)"text"===e.type?b+=(e.text??"").replace(/^\s*```\s*json\s*\n?/i,"").replace(/\n?\s*```\s*$/i,""):"thinking"===e.type?c+=e.thinking||"":"tool_use"===e.type&&d.push({id:e.id,type:"function",function:{name:e.name,arguments:JSON.stringify(e.input||{})}});let e={role:"assistant"};b&&(e.content=b),c&&(e.reasoning_content=c),d.length>0&&(e.tool_calls=d),e.content||e.tool_calls||(e.content="");let f=a.stop_reason||"stop";"end_turn"===f&&(f="stop"),"tool_use"===f&&(f="tool_calls");let g={id:`chatcmpl-${a.id||Date.now()}`,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:a.model||"claude",choices:[{index:0,message:e,finish_reason:f}]};return a.usage&&(g.usage={prompt_tokens:a.usage.input_tokens||0,completion_tokens:a.usage.output_tokens||0,total_tokens:(a.usage.input_tokens||0)+(a.usage.output_tokens||0)}),g}return b===d.h.OLLAMA?(0,f.ollamaBodyToOpenAI)(a):a}(D,p,o):D;if(F?.choices?.[0]){let a=F.choices[0],b=a.message;Array.isArray(b?.tool_calls)&&b.tool_calls.length>0&&"tool_calls"!==a.finish_reason&&(a.finish_reason="tool_calls")}if(F.object||(F.object="chat.completion"),F.created||(F.created=Math.floor(Date.now()/1e3)),delete F.prompt_filter_results,F?.choices)for(let a of F.choices)delete a.content_filter_results;if(F?.usage&&(F.usage=(0,g.WL)((0,g.O9)(F.usage),o)),F?.choices)for(let a of F.choices)a?.message&&delete a.message.reasoning_content;z.logConvertedResponse(F);let G=Date.now()-u;return(0,l.ox)((0,k.$R)({provider:b,model:c,connectionId:v,latency:{ttft:G,total:G},tokens:E||{prompt_tokens:0,completion_tokens:0},request:(0,k.Fo)(q,r),providerRequest:t||s||null,providerResponse:D||null,response:{content:F?.choices?.[0]?.message?.content||F?.content||null,thinking:F?.choices?.[0]?.message?.reasoning_content||F?.reasoning_content||null,finish_reason:F?.choices?.[0]?.finish_reason||"unknown"},status:"success"},{endpoint:x?.endpoint||null})).catch(a=>{console.error("[RequestDetail] Failed to save:",a.message)}),{success:!0,response:new Response(JSON.stringify(F),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}}},75237:(a,b,c)=>{function d({onDisconnect:a,onError:b,log:c,provider:e,model:f}={}){let g=new AbortController,h=Date.now(),i=!1,j=null,k=a=>{let b=Date.now()-h,c=e?.toUpperCase()||"UNKNOWN";console.log(`[${new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"})}] 🌊 [STREAM] ${c} | ${f||"unknown"} | ${b}ms | ${a}`)};return{signal:g.signal,startTime:h,isConnected:()=>!i,handleDisconnect:(b="client_closed")=>{i||(i=!0,k(`disconnect: ${b}`),j=setTimeout(()=>{g.abort()},500),a?.({reason:b,duration:Date.now()-h}))},handleComplete:()=>{!i&&(i=!0,k("complete"),j&&(clearTimeout(j),j=null))},handleError:a=>{if(!i){if(i=!0,j&&(clearTimeout(j),j=null),"AbortError"===a.name)return void k("aborted");k(`error: ${a.message}`),b?.(a)}},abort:()=>g.abort()}}function e(a,b,c){var d;let e,f;return d={readable:a.body.pipeThrough(b),writable:{getWriter:()=>({abort:()=>Promise.resolve()})}},e=d.readable.getReader(),f=d.writable.getWriter(),new ReadableStream({async pull(a){if(!c.isConnected())return void a.close();try{let{done:b,value:d}=await e.read();if(b){c.handleComplete(),a.close();return}a.enqueue(d)}catch(b){c.handleError(b),e.cancel().catch(()=>{}),f.abort().catch(()=>{}),a.error(b)}},cancel(a){c.handleDisconnect(a||"cancelled"),e.cancel(),f.abort()}})}c.d(b,{Jb:()=>e,jd:()=>d})},84155:(a,b,c)=>{c.d(b,{$:()=>l,M:()=>k});var d=c(56790),e=c(26263),f=c(45877),g=c(75237),h=c(94535),i=c(60126);let j={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","Access-Control-Allow-Origin":"*"};function k({providerResponse:a,provider:b,model:c,sourceFormat:l,targetFormat:m,userAgent:n,body:o,stream:p,translatedBody:q,finalBody:r,requestStartTime:s,connectionId:t,apiKey:u,clientRawRequest:v,onRequestSuccess:w,reqLogger:x,toolNameMap:y,streamController:z,onStreamComplete:A}){w&&w();let B=function({provider:a,sourceFormat:b,targetFormat:c,userAgent:g,reqLogger:h,toolNameMap:i,model:j,connectionId:k,body:l,onStreamComplete:m,apiKey:n}){let o=g?.toLowerCase().includes("droid")||g?.toLowerCase().includes("codex-cli");if("codex"===a&&c===d.h.OPENAI_RESPONSES&&!o){let c;return c=b===d.h.OPENAI_RESPONSES?d.h.OPENAI_RESPONSES:b===d.h.CLAUDE?d.h.CLAUDE:b===d.h.ANTIGRAVITY||b===d.h.GEMINI||b===d.h.GEMINI_CLI?d.h.ANTIGRAVITY:d.h.OPENAI,(0,f.i5)(d.h.OPENAI_RESPONSES,c,a,h,i,j,k,l,m,n)}return(0,e.nZ)(c,b)?(0,f.i5)(c,b,a,h,i,j,k,l,m,n):(0,f.l2)(a,h,j,k,l,m,n)}({provider:b,sourceFormat:l,targetFormat:m,userAgent:n,reqLogger:x,toolNameMap:y,model:c,connectionId:t,body:o,onStreamComplete:A,apiKey:u}),C=(0,g.Jb)(a,B,z),D=`${Date.now()}-${Math.random().toString(36).slice(2,11)}`;return(0,i.ox)((0,h.$R)({provider:b,model:c,connectionId:t,latency:{ttft:0,total:Date.now()-s},tokens:{prompt_tokens:0,completion_tokens:0},request:(0,h.Fo)(o,p),providerRequest:r||q||null,providerResponse:"[Streaming - raw response not captured]",response:{content:"[Streaming in progress...]",thinking:null,type:"streaming"},status:"success"},{id:D})).catch(a=>{console.error("[RequestDetail] Failed to save streaming request:",a.message)}),{success:!0,response:new Response(C,{headers:j})}}function l({provider:a,model:b,connectionId:c,apiKey:d,requestStartTime:e,body:f,stream:g,finalBody:j,translatedBody:k,clientRawRequest:m}){let n=`${Date.now()}-${Math.random().toString(36).slice(2,11)}`;return{onStreamComplete:(l,o,p)=>{let q={ttft:p?p-e:Date.now()-e,total:Date.now()-e},r=l?.content||"[Empty streaming response]",s=l?.thinking||null;(0,i.ox)((0,h.$R)({provider:a,model:b,connectionId:c,latency:q,tokens:o||{prompt_tokens:0,completion_tokens:0},request:(0,h.Fo)(f,g),providerRequest:j||k||null,providerResponse:r,response:{content:r,thinking:s,type:"streaming"},status:"success"},{id:n})).catch(a=>{console.error("[RequestDetail] Failed to update streaming content:",a.message)}),(0,h.qr)({provider:a,model:b,tokens:o,connectionId:c,apiKey:d,endpoint:m?.endpoint,label:"STREAM USAGE"})},streamDetailId:n}}},88374:(a,b,c)=>{function d(a,b){let c;if(!a.trim())return;let d=a.match(/^event:\s*(.+)$/m),e=a.match(/^data:\s*(.+)$/m);if(!d||!e)return;let f=d[1].trim(),g=e[1].trim();if("[DONE]"!==g){try{c=JSON.parse(g)}catch{return}"response.created"===f?(b.responseId=c.response?.id||b.responseId,b.created=c.response?.created_at||b.created):"response.output_item.done"===f?b.items.set(c.output_index??0,c.item):"response.completed"===f?(b.status="completed",c.response?.usage&&(b.usage.input_tokens=c.response.usage.input_tokens||0,b.usage.output_tokens=c.response.usage.output_tokens||0,b.usage.total_tokens=c.response.usage.total_tokens||0)):"response.failed"===f&&(b.status="failed")}}c.d(b,{I:()=>n,F:()=>m});let e={input_tokens:0,output_tokens:0,total_tokens:0};async function f(a){if(!a||"function"!=typeof a.getReader)return{id:`resp_${Date.now()}`,object:"response",created_at:Math.floor(Date.now()/1e3),status:"failed",output:[],usage:{...e}};let b=a.getReader(),c=new TextDecoder,f="",g={responseId:"",created:Math.floor(Date.now()/1e3),status:"in_progress",usage:{...e},items:new Map};try{for(;;){let{done:a,value:e}=await b.read();if(a)break;let h=(f+=c.decode(e,{stream:!0})).split("\n\n");for(let a of(f=h.pop()||"",h))d(a,g)}f.trim()&&d(f,g)}finally{b.releaseLock()}let h=[],i=g.items.size>0?Math.max(...g.items.keys()):-1;for(let a=0;a<=i;a++)h.push(g.items.get(a)||{type:"message",content:[],role:"assistant"});return{id:g.responseId||`resp_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,object:"response",created_at:g.created,status:g.status||"completed",output:h,usage:g.usage}}var g=c(29807),h=c(23016),i=c(56790),j=c(94535),k=c(60126);function l(a){if(!a?.content||!Array.isArray(a.content))return"";let b=a.content.find(a=>"output_text"===a.type);if("string"==typeof b?.text)return b.text;let c=a.content.find(a=>"string"==typeof a.text);return"string"==typeof c?.text?c.text:""}function m(a,b){let c=[];for(let b of String(a||"").split("\n")){let a=b.trim();if(!a.startsWith("data:"))continue;let d=a.slice(5).trim();if(d&&"[DONE]"!==d)try{c.push(JSON.parse(d))}catch{}}if(0===c.length)return null;let d=c[0],e=[],f=[],g=new Map,h="stop",i=null;for(let a of c){let b=a?.choices?.[0],c=b?.delta||{};if("string"==typeof c.content&&c.content.length>0&&e.push(c.content),"string"==typeof c.reasoning_content&&c.reasoning_content.length>0&&f.push(c.reasoning_content),b?.finish_reason&&(h=b.finish_reason),a?.usage&&"object"==typeof a.usage&&(i=a.usage),Array.isArray(c.tool_calls))for(let a of c.tool_calls){let b=a.index??0;g.has(b)||g.set(b,{id:a.id||"",type:"function",function:{name:"",arguments:""}});let c=g.get(b);a.id&&(c.id=a.id),a.function?.name&&(c.function.name+=a.function.name),a.function?.arguments&&(c.function.arguments+=a.function.arguments)}}let j={role:"assistant",content:e.join("")||(g.size>0?null:"")};f.length>0&&(j.reasoning_content=f.join("")),g.size>0&&(j.tool_calls=[...g.entries()].sort((a,b)=>a[0]-b[0]).map(([,a])=>a));let k={id:d.id||`chatcmpl-${Date.now()}`,object:"chat.completion",created:d.created||Math.floor(Date.now()/1e3),model:d.model||b||"unknown",choices:[{index:0,message:j,finish_reason:h}]};return i&&(k.usage=i),k}async function n({providerResponse:a,sourceFormat:b,provider:c,model:d,body:e,stream:o,translatedBody:p,finalBody:q,requestStartTime:r,connectionId:s,apiKey:t,clientRawRequest:u,onRequestSuccess:v,trackDone:w,appendLog:x}){let y=a.headers.get("content-type")||"";if(!(y.includes("text/event-stream")||""===y&&"codex"===c))return null;w();let z={provider:c,model:d,connectionId:s,request:(0,j.Fo)(e,o),providerRequest:q||p||null};if("codex"===c||b===i.h.OPENAI_RESPONSES)try{let e,g=await f(a.body);v&&await v();let h=g.usage||{};x({tokens:h,status:"200 OK"}),(0,j.qr)({provider:c,model:d,tokens:h,connectionId:s,apiKey:t,endpoint:u?.endpoint});let{msgItem:m,textContent:n}=function(a){if(!Array.isArray(a))return{msgItem:null,textContent:null};let b=a.filter(a=>a?.type==="message");if(0===b.length)return{msgItem:null,textContent:null};for(let a=b.length-1;a>=0;a--){let c=l(b[a]);if(c.length>0)return{msgItem:b[a],textContent:c}}let c=b[b.length-1];return{msgItem:c,textContent:l(c)}}(g.output),o=Date.now()-r;if((0,k.ox)((0,j.$R)({...z,latency:{ttft:o,total:o},tokens:{prompt_tokens:h.input_tokens||0,completion_tokens:h.output_tokens||0},response:{content:n,thinking:null,finish_reason:g.status||"unknown"},status:"success"},{endpoint:u?.endpoint||null})).catch(()=>{}),b===i.h.OPENAI_RESPONSES)return{success:!0,response:new Response(JSON.stringify(g),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})};let p=h.input_tokens||0,q=h.output_tokens||0,w=(g.output||[]).filter(a=>"function_call"===a.type).map((a,b)=>({id:a.call_id||`call_${a.name}_${Date.now()}_${b}`,type:"function",function:{name:a.name,arguments:"string"==typeof a.arguments?a.arguments:JSON.stringify(a.arguments||{})}})),y=w.length>0;if(b===i.h.ANTIGRAVITY||b===i.h.GEMINI||b===i.h.GEMINI_CLI)e={response:{candidates:[{content:{role:"model",parts:[{text:n||""}]},finishReason:"STOP",index:0}],usageMetadata:{promptTokenCount:p,candidatesTokenCount:q,totalTokenCount:p+q},modelVersion:d,responseId:g.id||`resp_${Date.now()}`}};else{let a={role:"assistant",content:n||(y?null:"")};y&&(a.tool_calls=w);let b=y?"tool_calls":"completed"===g.status?"stop":g.status||"stop";e={id:g.id||`chatcmpl-${Date.now()}`,object:"chat.completion",created:g.created_at||Math.floor(Date.now()/1e3),model:g.model||d,choices:[{index:0,message:a,finish_reason:b}],usage:{prompt_tokens:p,completion_tokens:q,total_tokens:p+q}}}return{success:!0,response:new Response(JSON.stringify(e),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}}catch(a){return console.error("[ChatCore] Responses API SSE→JSON failed:",a),(0,g.A1)(h.gx.BAD_GATEWAY,"Failed to convert streaming response to JSON")}try{let b=await a.text(),e=m(b,d);if(!e)return(0,g.A1)(h.gx.BAD_GATEWAY,"Invalid SSE response for non-streaming request");v&&await v();let f=e.usage||{};x({tokens:f,status:"200 OK"}),(0,j.qr)({provider:c,model:d,tokens:f,connectionId:s,apiKey:t,endpoint:u?.endpoint});let i=Date.now()-r;if((0,k.ox)((0,j.$R)({...z,latency:{ttft:i,total:i},tokens:f,response:{content:e.choices?.[0]?.message?.content||null,thinking:e.choices?.[0]?.message?.reasoning_content||null,finish_reason:e.choices?.[0]?.finish_reason||"unknown"},status:"success"},{endpoint:u?.endpoint||null})).catch(()=>{}),e?.choices)for(let a of e.choices)a?.message?.reasoning_content&&a.message.content&&delete a.message.reasoning_content;return{success:!0,response:new Response(JSON.stringify(e),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}}catch(a){return console.error("[ChatCore] Chat Completions SSE→JSON failed:",a),(0,g.A1)(h.gx.BAD_GATEWAY,"Failed to convert streaming response to JSON")}}},94535:(a,b,c)=>{c.d(b,{$R:()=>i,Fo:()=>g,MK:()=>h,qr:()=>j});var d=c(60126),e=c(45877);let f=["temperature","top_p","top_k","max_tokens","max_completion_tokens","thinking","reasoning","enable_thinking","presence_penalty","frequency_penalty","seed","stop","tools","tool_choice","response_format","prediction","store","metadata","n","logprobs","top_logprobs","logit_bias","user","parallel_tool_calls"];function g(a,b){let c={messages:a.messages||[],model:a.model,stream:b};for(let b of f)void 0!==a[b]&&(c[b]=a[b]);return c}function h(a){return a&&"object"==typeof a?a.usage?.input_tokens!==void 0?{prompt_tokens:a.usage.input_tokens||0,completion_tokens:a.usage.output_tokens||0,cache_read_input_tokens:a.usage.cache_read_input_tokens,cache_creation_input_tokens:a.usage.cache_creation_input_tokens}:a.usage?.prompt_tokens!==void 0?{prompt_tokens:a.usage.prompt_tokens||0,completion_tokens:a.usage.completion_tokens||0,cached_tokens:a.usage.prompt_tokens_details?.cached_tokens,reasoning_tokens:a.usage.completion_tokens_details?.reasoning_tokens}:a.usageMetadata?{prompt_tokens:a.usageMetadata.promptTokenCount||0,completion_tokens:a.usageMetadata.candidatesTokenCount||0,reasoning_tokens:a.usageMetadata.thoughtsTokenCount}:null:null}function i(a,b={}){return{provider:a.provider||"unknown",model:a.model||"unknown",connectionId:a.connectionId||void 0,timestamp:new Date().toISOString(),latency:a.latency||{ttft:0,total:0},tokens:a.tokens||{prompt_tokens:0,completion_tokens:0},request:a.request,providerRequest:a.providerRequest||null,providerResponse:a.providerResponse||null,response:a.response||{},status:a.status||"success",...b}}function j({provider:a,model:b,tokens:c,connectionId:f,apiKey:g,endpoint:h,label:i="USAGE"}){if(!c||"object"!=typeof c)return;let k=c.input_tokens??c.prompt_tokens??0,l=c.output_tokens??c.completion_tokens??0;if(0===k&&0===l)return;let m=new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"}),n=f?` | account=${f.slice(0,8)}...`:"";console.log(`${e.lm.green}[${m}] 📊 [${i}] ${a.toUpperCase()} | in=${k} | out=${l}${n}${e.lm.reset}`);let o={prompt_tokens:c.prompt_tokens??c.input_tokens??0,completion_tokens:c.completion_tokens??c.output_tokens??0};(0,d.sZ)({provider:a||"unknown",model:b||"unknown",tokens:o,timestamp:new Date().toISOString(),connectionId:f||void 0,apiKey:g||void 0,endpoint:h||null}).catch(()=>{})}},99516:(a,b,c)=>{c.d(b,{p:()=>g});var d=c(56790);let e="Code blocks, file paths, commands, errors, URLs: keep exact. Security warnings, irreversible action confirmations, multi-step ordered sequences: write normal. Resume terse style after.",f={lite:["Respond tersely. Keep grammar and full sentences but drop filler, hedging and pleasantries (just/really/basically/sure/of course/I'd be happy to). Pattern: state the thing, the action, the reason. Then next step.",e,"Active every response until user asks for normal mode."].join(" "),full:["Respond like terse caveman. All technical substance stay exact, only fluff die. Drop: articles (a/an/the), filler (just/really/basically/actually/simply), pleasantries, hedging. Fragments OK. Short synonyms (big not extensive, fix not implement a solution for). Pattern: [thing] [action] [reason]. [next step].",e,"Active every response until user asks for normal mode."].join(" "),ultra:["Respond ultra-terse. Maximum compression. Telegraphic. Abbreviate (DB/auth/config/req/res/fn/impl), strip conjunctions, use arrows for causality (X → Y). One word when one word enough. Pattern: [thing] → [result]. [fix].",e,"Active every response until user asks for normal mode."].join(" ")};function g(a,b,c){let e=f[c];if(a&&e)switch(b){case d.h.CLAUDE:!function(a,b){if("string"==typeof a.system&&a.system.length>0){a.system=`${a.system}
38
+ `),h.replace(/\n+$/,"")}p.filterName="search-list";let q=/^Result of search in '[^']*' \(total (\d+) files?\):/,r=/^diff --git /m,s=/^@@ /m,t=/^On branch |^nothing to commit|^Changes (not |to be )|^Untracked files:/m,u=/^[ MADRCU?!][ MADRCU?!] \S/m,v=/[├└]──|│ /,w=/^[-dlbcps][rwx-]{9}/m,x=/^total \d+$/m;function y(a){let b=a.indexOf(":");if(-1===b)return!1;let c=a.indexOf(":",b+1);if(-1===c)return!1;let d=a.slice(b+1,c);return/^\d+$/.test(d)}function z(a){let b=a.trim();return!(0===b.length||b.includes(":"))&&(b.startsWith(".")||b.startsWith("/")||b.includes("/"))}function A(a,b){if(!b||!a)return null;let c=Array.isArray(a.messages)?a.messages:Array.isArray(a.input)?a.input:null;if(!c)return null;let d={bytesBefore:0,bytesAfter:0,hits:[]};try{for(let a=0;a<c.length;a++){let b=c[a];if(b){if("function_call_output"===b.type){if("string"==typeof b.output)b.output=B(b.output,d,"openai-responses-string");else if(Array.isArray(b.output))for(let a=0;a<b.output.length;a++){let c=b.output[a];c&&"input_text"===c.type&&"string"==typeof c.text&&(c.text=B(c.text,d,"openai-responses-array"))}continue}if("tool"===b.role&&"string"==typeof b.content){b.content=B(b.content,d,"openai-tool");continue}if(Array.isArray(b.content)){if("tool"===b.role){for(let a=0;a<b.content.length;a++){let c=b.content[a];c&&"text"===c.type&&"string"==typeof c.text&&(c.text=B(c.text,d,"openai-tool-array"))}continue}for(let a=0;a<b.content.length;a++){let c=b.content[a];if(c&&"tool_result"===c.type&&!0!==c.is_error){if("string"==typeof c.content)c.content=B(c.content,d,"claude-string");else if(Array.isArray(c.content))for(let a=0;a<c.content.length;a++){let b=c.content[a];b&&"text"===b.type&&"string"==typeof b.text&&(b.text=B(b.text,d,"claude-array"))}}}}}}}catch(a){return console.warn("[RTK] compressMessages error:",a.message),null}return d}function B(a,b,c){let d=a.length;if(b.bytesBefore+=d,d<500||d>0xa00000)return b.bytesAfter+=d,a;let j=function(a){var b,c;let d,j,A=a.length>1024?a.slice(0,1024):a;if(r.test(A)||s.test(A))return e;if(t.test(A)||!((d=A.split("\n").filter(a=>a.trim())).length<3)&&d.filter(a=>u.test(a)).length/d.length>=.6)return f;let B=A.split("\n"),C=B.filter(a=>a.trim().length>0);return C.slice(0,5).some(y)?g:C.length>=3&&C.every(z)?h:v.test(A)?l:x.test(A)||(b=A,j=new RegExp((c=w).source,c.flags.includes("g")?c.flags:c.flags+"g"),(b.match(j)||[]).length>=3)?k:q.test(A)?p:B.length>=250&&function(a){let b=0,c=0;for(let d of a.slice(0,100))0!==d.length&&(c++,o.test(d)&&b++);return!(c<5)&&b/c>=.7}(B)?n:C.length>=5?i:a.split("\n").length>=250?m:null}(a);if(!j)return b.bytesAfter+=d,a;let A=function(a,b){if("function"!=typeof a)return b;try{let c=a(b);if("string"!=typeof c)return b;return c}catch(d){let c=a.filterName||a.name||"anonymous";return console.warn(`[rtk] warning: filter '${c}' panicked — passing through raw output: ${d?.message||d}`),b}}(j,a);return!A||0===A.length||A.length>=d?(b.bytesAfter+=d,a):(b.bytesAfter+=A.length,b.hits.push({shape:c,filter:j.filterName||j.name,saved:d-A.length}),A)}function C(a){if(!a||!a.hits||0===a.hits.length)return null;let b=a.bytesBefore-a.bytesAfter,c=a.bytesBefore>0?(b/a.bytesBefore*100).toFixed(1):"0",d=Array.from(new Set(a.hits.map(a=>a.filter))).join(",");return`[RTK] saved ${b}B / ${a.bytesBefore}B (${c}%) via [${d}] hits=${a.hits.length}`}},60676:(a,b,c)=>{c.d(b,{N:()=>n});var d=c(56790),e=c(26263),f=c(17019),g=c(68735),h=c(29807),i=c(23016),j=c(88374),k=c(94535),l=c(60126),m=c(96771);async function n({providerResponse:a,provider:b,model:c,sourceFormat:o,targetFormat:p,body:q,stream:r,translatedBody:s,finalBody:t,requestStartTime:u,connectionId:v,apiKey:w,clientRawRequest:x,onRequestSuccess:y,reqLogger:z,toolNameMap:A,trackDone:B,appendLog:C}){let D;if(B(),(a.headers.get("content-type")||"").includes("text/event-stream")){let b=await a.text(),d=(0,j.F)(b,c);if(!d)return C({status:`FAILED ${i.gx.BAD_GATEWAY}`}),(0,h.A1)(i.gx.BAD_GATEWAY,"Invalid SSE response for non-streaming request");D=d}else try{D=await a.json()}catch(a){return C({status:`FAILED ${i.gx.BAD_GATEWAY}`}),console.error(`[ChatCore] Failed to parse JSON from ${b}:`,a.message),(0,h.A1)(i.gx.BAD_GATEWAY,`Invalid JSON response from ${b}`)}z.logProviderResponse(a.status,a.statusText,a.headers,D),y&&await y(),D=(0,m.kR)(D,A);let E=(0,k.MK)(D);C({tokens:E,status:"200 OK"}),(0,k.qr)({provider:b,model:c,tokens:E,connectionId:v,apiKey:w,endpoint:x?.endpoint});let F=(0,e.nZ)(p,o)?function(a,b,c){if(b===c||b===d.h.OPENAI)return a;if(b===d.h.GEMINI||b===d.h.ANTIGRAVITY||b===d.h.GEMINI_CLI||b===d.h.VERTEX){let b=a.response||a;if(!b?.candidates?.[0])return a;let c=b.candidates[0],d=c.content,e=b.usageMetadata||a.usageMetadata,f="",g="",h=[];if(d?.parts)for(let a of d.parts)!0===a.thought&&a.text?g+=a.text:void 0!==a.text&&(f+=a.text),a.functionCall&&h.push({id:`call_${a.functionCall.name}_${Date.now()}_${h.length}`,type:"function",function:{name:a.functionCall.name,arguments:JSON.stringify(a.functionCall.args||{})}});let i={role:"assistant"};f&&(i.content=f),g&&(i.reasoning_content=g),h.length>0&&(i.tool_calls=h),i.content||i.tool_calls||(i.content="");let j=(c.finishReason||"stop").toLowerCase();"stop"===j&&h.length>0&&(j="tool_calls");let k={id:`chatcmpl-${b.responseId||Date.now()}`,object:"chat.completion",created:Math.floor(new Date(b.createTime||Date.now()).getTime()/1e3),model:b.modelVersion||"gemini",choices:[{index:0,message:i,finish_reason:j}]};return e&&(k.usage={prompt_tokens:(e.promptTokenCount||0)+(e.thoughtsTokenCount||0),completion_tokens:e.candidatesTokenCount||0,total_tokens:e.totalTokenCount||0},e.thoughtsTokenCount>0&&(k.usage.completion_tokens_details={reasoning_tokens:e.thoughtsTokenCount})),k}if(b===d.h.CLAUDE){if(!a.content)return a;let b="",c="",d=[];for(let e of a.content)"text"===e.type?b+=(e.text??"").replace(/^\s*```\s*json\s*\n?/i,"").replace(/\n?\s*```\s*$/i,""):"thinking"===e.type?c+=e.thinking||"":"tool_use"===e.type&&d.push({id:e.id,type:"function",function:{name:e.name,arguments:JSON.stringify(e.input||{})}});let e={role:"assistant"};b&&(e.content=b),c&&(e.reasoning_content=c),d.length>0&&(e.tool_calls=d),e.content||e.tool_calls||(e.content="");let f=a.stop_reason||"stop";"end_turn"===f&&(f="stop"),"tool_use"===f&&(f="tool_calls");let g={id:`chatcmpl-${a.id||Date.now()}`,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:a.model||"claude",choices:[{index:0,message:e,finish_reason:f}]};return a.usage&&(g.usage={prompt_tokens:a.usage.input_tokens||0,completion_tokens:a.usage.output_tokens||0,total_tokens:(a.usage.input_tokens||0)+(a.usage.output_tokens||0)}),g}return b===d.h.OLLAMA?(0,f.ollamaBodyToOpenAI)(a):a}(D,p,o):D;if(F?.choices?.[0]){let a=F.choices[0],b=a.message;Array.isArray(b?.tool_calls)&&b.tool_calls.length>0&&"tool_calls"!==a.finish_reason&&(a.finish_reason="tool_calls")}if(F.object||(F.object="chat.completion"),F.created||(F.created=Math.floor(Date.now()/1e3)),delete F.prompt_filter_results,F?.choices)for(let a of F.choices)delete a.content_filter_results;if(F?.usage&&(F.usage=(0,g.WL)((0,g.O9)(F.usage),o)),F?.choices)for(let a of F.choices)a?.message&&delete a.message.reasoning_content;z.logConvertedResponse(F);let G=Date.now()-u;return(0,l.ox)((0,k.$R)({provider:b,model:c,connectionId:v,latency:{ttft:G,total:G},tokens:E||{prompt_tokens:0,completion_tokens:0},request:(0,k.Fo)(q,r),providerRequest:t||s||null,providerResponse:D||null,response:{content:F?.choices?.[0]?.message?.content||F?.content||null,thinking:F?.choices?.[0]?.message?.reasoning_content||F?.reasoning_content||null,finish_reason:F?.choices?.[0]?.finish_reason||"unknown"},status:"success"},{endpoint:x?.endpoint||null})).catch(a=>{console.error("[RequestDetail] Failed to save:",a.message)}),{success:!0,response:new Response(JSON.stringify(F),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}}},75237:(a,b,c)=>{c.d(b,{Jb:()=>f,jd:()=>e});var d=c(23016);function e({onDisconnect:a,onError:b,log:c,provider:d,model:f}={}){let g=new AbortController,h=Date.now(),i=!1,j=null,k=a=>{let b=Date.now()-h,c=d?.toUpperCase()||"UNKNOWN";console.log(`[${new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"})}] 🌊 [STREAM] ${c} | ${f||"unknown"} | ${b}ms | ${a}`)};return{signal:g.signal,startTime:h,isConnected:()=>!i,handleDisconnect:(b="client_closed")=>{i||(i=!0,k(`disconnect: ${b}`),j=setTimeout(()=>{g.abort()},500),a?.({reason:b,duration:Date.now()-h}))},handleComplete:()=>{!i&&(i=!0,k("complete"),j&&(clearTimeout(j),j=null))},handleError:a=>{if(!i){if(i=!0,j&&(clearTimeout(j),j=null),"AbortError"===a.name)return void k("aborted");k(`error: ${a.message}`),b?.(a)}},abort:()=>g.abort()}}function f(a,b,c){var e;let f,g;return e={readable:a.body.pipeThrough(b),writable:{getWriter:()=>({abort:()=>Promise.resolve()})}},f=e.readable.getReader(),g=e.writable.getWriter(),new ReadableStream({async pull(a){if(!c.isConnected())return void a.close();try{let b,e,g,h=new Promise((a,c)=>{b=setTimeout(()=>c(Error("stream stall timeout")),d.xM)});try{({done:e,value:g}=await Promise.race([f.read(),h]))}finally{clearTimeout(b)}if(e){c.handleComplete(),a.close();return}a.enqueue(g)}catch(b){c.handleError(b),f.cancel().catch(()=>{}),g.abort().catch(()=>{}),a.error(b)}},cancel(a){c.handleDisconnect(a||"cancelled"),f.cancel(),g.abort()}})}},84155:(a,b,c)=>{c.d(b,{$:()=>l,M:()=>k});var d=c(56790),e=c(26263),f=c(45877),g=c(75237),h=c(94535),i=c(60126);let j={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","Access-Control-Allow-Origin":"*"};function k({providerResponse:a,provider:b,model:c,sourceFormat:l,targetFormat:m,userAgent:n,body:o,stream:p,translatedBody:q,finalBody:r,requestStartTime:s,connectionId:t,apiKey:u,clientRawRequest:v,onRequestSuccess:w,reqLogger:x,toolNameMap:y,streamController:z,onStreamComplete:A}){w&&w();let B=function({provider:a,sourceFormat:b,targetFormat:c,userAgent:g,reqLogger:h,toolNameMap:i,model:j,connectionId:k,body:l,onStreamComplete:m,apiKey:n}){let o=g?.toLowerCase().includes("droid")||g?.toLowerCase().includes("codex-cli");if("codex"===a&&c===d.h.OPENAI_RESPONSES&&!o){let c;return c=b===d.h.OPENAI_RESPONSES?d.h.OPENAI_RESPONSES:b===d.h.CLAUDE?d.h.CLAUDE:b===d.h.ANTIGRAVITY||b===d.h.GEMINI||b===d.h.GEMINI_CLI?d.h.ANTIGRAVITY:d.h.OPENAI,(0,f.i5)(d.h.OPENAI_RESPONSES,c,a,h,i,j,k,l,m,n)}return(0,e.nZ)(c,b)?(0,f.i5)(c,b,a,h,i,j,k,l,m,n):(0,f.l2)(a,h,j,k,l,m,n)}({provider:b,sourceFormat:l,targetFormat:m,userAgent:n,reqLogger:x,toolNameMap:y,model:c,connectionId:t,body:o,onStreamComplete:A,apiKey:u}),C=(0,g.Jb)(a,B,z),D=`${Date.now()}-${Math.random().toString(36).slice(2,11)}`;return(0,i.ox)((0,h.$R)({provider:b,model:c,connectionId:t,latency:{ttft:0,total:Date.now()-s},tokens:{prompt_tokens:0,completion_tokens:0},request:(0,h.Fo)(o,p),providerRequest:r||q||null,providerResponse:"[Streaming - raw response not captured]",response:{content:"[Streaming in progress...]",thinking:null,type:"streaming"},status:"success"},{id:D})).catch(a=>{console.error("[RequestDetail] Failed to save streaming request:",a.message)}),{success:!0,response:new Response(C,{headers:j})}}function l({provider:a,model:b,connectionId:c,apiKey:d,requestStartTime:e,body:f,stream:g,finalBody:j,translatedBody:k,clientRawRequest:m}){let n=`${Date.now()}-${Math.random().toString(36).slice(2,11)}`;return{onStreamComplete:(l,o,p)=>{let q={ttft:p?p-e:Date.now()-e,total:Date.now()-e},r=l?.content||"[Empty streaming response]",s=l?.thinking||null;(0,i.ox)((0,h.$R)({provider:a,model:b,connectionId:c,latency:q,tokens:o||{prompt_tokens:0,completion_tokens:0},request:(0,h.Fo)(f,g),providerRequest:j||k||null,providerResponse:r,response:{content:r,thinking:s,type:"streaming"},status:"success"},{id:n})).catch(a=>{console.error("[RequestDetail] Failed to update streaming content:",a.message)}),(0,h.qr)({provider:a,model:b,tokens:o,connectionId:c,apiKey:d,endpoint:m?.endpoint,label:"STREAM USAGE"})},streamDetailId:n}}},88374:(a,b,c)=>{function d(a,b){let c;if(!a.trim())return;let d=a.match(/^event:\s*(.+)$/m),e=a.match(/^data:\s*(.+)$/m);if(!d||!e)return;let f=d[1].trim(),g=e[1].trim();if("[DONE]"!==g){try{c=JSON.parse(g)}catch{return}"response.created"===f?(b.responseId=c.response?.id||b.responseId,b.created=c.response?.created_at||b.created):"response.output_item.done"===f?b.items.set(c.output_index??0,c.item):"response.completed"===f?(b.status="completed",c.response?.usage&&(b.usage.input_tokens=c.response.usage.input_tokens||0,b.usage.output_tokens=c.response.usage.output_tokens||0,b.usage.total_tokens=c.response.usage.total_tokens||0)):"response.failed"===f&&(b.status="failed")}}c.d(b,{I:()=>n,F:()=>m});let e={input_tokens:0,output_tokens:0,total_tokens:0};async function f(a){if(!a||"function"!=typeof a.getReader)return{id:`resp_${Date.now()}`,object:"response",created_at:Math.floor(Date.now()/1e3),status:"failed",output:[],usage:{...e}};let b=a.getReader(),c=new TextDecoder,f="",g={responseId:"",created:Math.floor(Date.now()/1e3),status:"in_progress",usage:{...e},items:new Map};try{for(;;){let{done:a,value:e}=await b.read();if(a)break;let h=(f+=c.decode(e,{stream:!0})).split("\n\n");for(let a of(f=h.pop()||"",h))d(a,g)}f.trim()&&d(f,g)}finally{b.releaseLock()}let h=[],i=g.items.size>0?Math.max(...g.items.keys()):-1;for(let a=0;a<=i;a++)h.push(g.items.get(a)||{type:"message",content:[],role:"assistant"});return{id:g.responseId||`resp_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,object:"response",created_at:g.created,status:g.status||"completed",output:h,usage:g.usage}}var g=c(29807),h=c(23016),i=c(56790),j=c(94535),k=c(60126);function l(a){if(!a?.content||!Array.isArray(a.content))return"";let b=a.content.find(a=>"output_text"===a.type);if("string"==typeof b?.text)return b.text;let c=a.content.find(a=>"string"==typeof a.text);return"string"==typeof c?.text?c.text:""}function m(a,b){let c=[];for(let b of String(a||"").split("\n")){let a=b.trim();if(!a.startsWith("data:"))continue;let d=a.slice(5).trim();if(d&&"[DONE]"!==d)try{c.push(JSON.parse(d))}catch{}}if(0===c.length)return null;let d=c[0],e=[],f=[],g=new Map,h="stop",i=null;for(let a of c){let b=a?.choices?.[0],c=b?.delta||{};if("string"==typeof c.content&&c.content.length>0&&e.push(c.content),"string"==typeof c.reasoning_content&&c.reasoning_content.length>0&&f.push(c.reasoning_content),b?.finish_reason&&(h=b.finish_reason),a?.usage&&"object"==typeof a.usage&&(i=a.usage),Array.isArray(c.tool_calls))for(let a of c.tool_calls){let b=a.index??0;g.has(b)||g.set(b,{id:a.id||"",type:"function",function:{name:"",arguments:""}});let c=g.get(b);a.id&&(c.id=a.id),a.function?.name&&(c.function.name+=a.function.name),a.function?.arguments&&(c.function.arguments+=a.function.arguments)}}let j={role:"assistant",content:e.join("")||(g.size>0?null:"")};f.length>0&&(j.reasoning_content=f.join("")),g.size>0&&(j.tool_calls=[...g.entries()].sort((a,b)=>a[0]-b[0]).map(([,a])=>a));let k={id:d.id||`chatcmpl-${Date.now()}`,object:"chat.completion",created:d.created||Math.floor(Date.now()/1e3),model:d.model||b||"unknown",choices:[{index:0,message:j,finish_reason:h}]};return i&&(k.usage=i),k}async function n({providerResponse:a,sourceFormat:b,provider:c,model:d,body:e,stream:o,translatedBody:p,finalBody:q,requestStartTime:r,connectionId:s,apiKey:t,clientRawRequest:u,onRequestSuccess:v,trackDone:w,appendLog:x}){let y=a.headers.get("content-type")||"";if(!(y.includes("text/event-stream")||""===y&&"codex"===c))return null;w();let z={provider:c,model:d,connectionId:s,request:(0,j.Fo)(e,o),providerRequest:q||p||null};if("codex"===c||b===i.h.OPENAI_RESPONSES)try{let e,g=await f(a.body);v&&await v();let h=g.usage||{};x({tokens:h,status:"200 OK"}),(0,j.qr)({provider:c,model:d,tokens:h,connectionId:s,apiKey:t,endpoint:u?.endpoint});let{msgItem:m,textContent:n}=function(a){if(!Array.isArray(a))return{msgItem:null,textContent:null};let b=a.filter(a=>a?.type==="message");if(0===b.length)return{msgItem:null,textContent:null};for(let a=b.length-1;a>=0;a--){let c=l(b[a]);if(c.length>0)return{msgItem:b[a],textContent:c}}let c=b[b.length-1];return{msgItem:c,textContent:l(c)}}(g.output),o=Date.now()-r;if((0,k.ox)((0,j.$R)({...z,latency:{ttft:o,total:o},tokens:{prompt_tokens:h.input_tokens||0,completion_tokens:h.output_tokens||0},response:{content:n,thinking:null,finish_reason:g.status||"unknown"},status:"success"},{endpoint:u?.endpoint||null})).catch(()=>{}),b===i.h.OPENAI_RESPONSES)return{success:!0,response:new Response(JSON.stringify(g),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})};let p=h.input_tokens||0,q=h.output_tokens||0,w=(g.output||[]).filter(a=>"function_call"===a.type).map((a,b)=>({id:a.call_id||`call_${a.name}_${Date.now()}_${b}`,type:"function",function:{name:a.name,arguments:"string"==typeof a.arguments?a.arguments:JSON.stringify(a.arguments||{})}})),y=w.length>0;if(b===i.h.ANTIGRAVITY||b===i.h.GEMINI||b===i.h.GEMINI_CLI)e={response:{candidates:[{content:{role:"model",parts:[{text:n||""}]},finishReason:"STOP",index:0}],usageMetadata:{promptTokenCount:p,candidatesTokenCount:q,totalTokenCount:p+q},modelVersion:d,responseId:g.id||`resp_${Date.now()}`}};else{let a={role:"assistant",content:n||(y?null:"")};y&&(a.tool_calls=w);let b=y?"tool_calls":"completed"===g.status?"stop":g.status||"stop";e={id:g.id||`chatcmpl-${Date.now()}`,object:"chat.completion",created:g.created_at||Math.floor(Date.now()/1e3),model:g.model||d,choices:[{index:0,message:a,finish_reason:b}],usage:{prompt_tokens:p,completion_tokens:q,total_tokens:p+q}}}return{success:!0,response:new Response(JSON.stringify(e),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}}catch(a){return console.error("[ChatCore] Responses API SSE→JSON failed:",a),(0,g.A1)(h.gx.BAD_GATEWAY,"Failed to convert streaming response to JSON")}try{let b=await a.text(),e=m(b,d);if(!e)return(0,g.A1)(h.gx.BAD_GATEWAY,"Invalid SSE response for non-streaming request");v&&await v();let f=e.usage||{};x({tokens:f,status:"200 OK"}),(0,j.qr)({provider:c,model:d,tokens:f,connectionId:s,apiKey:t,endpoint:u?.endpoint});let i=Date.now()-r;if((0,k.ox)((0,j.$R)({...z,latency:{ttft:i,total:i},tokens:f,response:{content:e.choices?.[0]?.message?.content||null,thinking:e.choices?.[0]?.message?.reasoning_content||null,finish_reason:e.choices?.[0]?.finish_reason||"unknown"},status:"success"},{endpoint:u?.endpoint||null})).catch(()=>{}),e?.choices)for(let a of e.choices)a?.message?.reasoning_content&&a.message.content&&delete a.message.reasoning_content;return{success:!0,response:new Response(JSON.stringify(e),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}}catch(a){return console.error("[ChatCore] Chat Completions SSE→JSON failed:",a),(0,g.A1)(h.gx.BAD_GATEWAY,"Failed to convert streaming response to JSON")}}},94535:(a,b,c)=>{c.d(b,{$R:()=>i,Fo:()=>g,MK:()=>h,qr:()=>j});var d=c(60126),e=c(45877);let f=["temperature","top_p","top_k","max_tokens","max_completion_tokens","thinking","reasoning","enable_thinking","presence_penalty","frequency_penalty","seed","stop","tools","tool_choice","response_format","prediction","store","metadata","n","logprobs","top_logprobs","logit_bias","user","parallel_tool_calls"];function g(a,b){let c={messages:a.messages||[],model:a.model,stream:b};for(let b of f)void 0!==a[b]&&(c[b]=a[b]);return c}function h(a){return a&&"object"==typeof a?a.usage?.input_tokens!==void 0?{prompt_tokens:a.usage.input_tokens||0,completion_tokens:a.usage.output_tokens||0,cache_read_input_tokens:a.usage.cache_read_input_tokens,cache_creation_input_tokens:a.usage.cache_creation_input_tokens}:a.usage?.prompt_tokens!==void 0?{prompt_tokens:a.usage.prompt_tokens||0,completion_tokens:a.usage.completion_tokens||0,cached_tokens:a.usage.prompt_tokens_details?.cached_tokens,reasoning_tokens:a.usage.completion_tokens_details?.reasoning_tokens}:a.usageMetadata?{prompt_tokens:a.usageMetadata.promptTokenCount||0,completion_tokens:a.usageMetadata.candidatesTokenCount||0,reasoning_tokens:a.usageMetadata.thoughtsTokenCount}:null:null}function i(a,b={}){return{provider:a.provider||"unknown",model:a.model||"unknown",connectionId:a.connectionId||void 0,timestamp:new Date().toISOString(),latency:a.latency||{ttft:0,total:0},tokens:a.tokens||{prompt_tokens:0,completion_tokens:0},request:a.request,providerRequest:a.providerRequest||null,providerResponse:a.providerResponse||null,response:a.response||{},status:a.status||"success",...b}}function j({provider:a,model:b,tokens:c,connectionId:f,apiKey:g,endpoint:h,label:i="USAGE"}){if(!c||"object"!=typeof c)return;let k=c.input_tokens??c.prompt_tokens??0,l=c.output_tokens??c.completion_tokens??0;if(0===k&&0===l)return;let m=new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"}),n=f?` | account=${f.slice(0,8)}...`:"";console.log(`${e.lm.green}[${m}] 📊 [${i}] ${a.toUpperCase()} | in=${k} | out=${l}${n}${e.lm.reset}`);let o={prompt_tokens:c.prompt_tokens??c.input_tokens??0,completion_tokens:c.completion_tokens??c.output_tokens??0};(0,d.sZ)({provider:a||"unknown",model:b||"unknown",tokens:o,timestamp:new Date().toISOString(),connectionId:f||void 0,apiKey:g||void 0,endpoint:h||null}).catch(()=>{})}},99516:(a,b,c)=>{c.d(b,{p:()=>g});var d=c(56790);let e="Code blocks, file paths, commands, errors, URLs: keep exact. Security warnings, irreversible action confirmations, multi-step ordered sequences: write normal. Resume terse style after.",f={lite:["Respond tersely. Keep grammar and full sentences but drop filler, hedging and pleasantries (just/really/basically/sure/of course/I'd be happy to). Pattern: state the thing, the action, the reason. Then next step.",e,"Active every response until user asks for normal mode."].join(" "),full:["Respond like terse caveman. All technical substance stay exact, only fluff die. Drop: articles (a/an/the), filler (just/really/basically/actually/simply), pleasantries, hedging. Fragments OK. Short synonyms (big not extensive, fix not implement a solution for). Pattern: [thing] [action] [reason]. [next step].",e,"Active every response until user asks for normal mode."].join(" "),ultra:["Respond ultra-terse. Maximum compression. Telegraphic. Abbreviate (DB/auth/config/req/res/fn/impl), strip conjunctions, use arrows for causality (X → Y). One word when one word enough. Pattern: [thing] → [result]. [fix].",e,"Active every response until user asks for normal mode."].join(" ")};function g(a,b,c){let e=f[c];if(a&&e)switch(b){case d.h.CLAUDE:!function(a,b){if("string"==typeof a.system&&a.system.length>0){a.system=`${a.system}
39
39
 
40
40
  ${b}`;return}if(Array.isArray(a.system)){let c={type:"text",text:b},d=-1;for(let b=a.system.length-1;b>=0;b--)if(a.system[b]?.cache_control){d=b;break}d>=0?a.system.splice(d,0,c):a.system.push(c);return}a.system=b}(a,e);return;case d.h.GEMINI:case d.h.GEMINI_CLI:case d.h.VERTEX:case d.h.ANTIGRAVITY:var g,h;let i,j,k;g=a,h=e,i=g.request&&"object"==typeof g.request?g.request:g,j=Object.prototype.hasOwnProperty.call(i,"system_instruction")?"system_instruction":"systemInstruction",(k=i[j])&&Array.isArray(k.parts)?k.parts.push({text:h}):i[j]={parts:[{text:h}]};return;default:!function(a,b){var c,d;if("string"==typeof a.instructions){a.instructions=a.instructions?`${a.instructions}
41
41
 
@@ -0,0 +1,7 @@
1
+ exports.id=6634,exports.ids=[6634],exports.modules={24429:()=>{},24709:(a,b,c)=>{"use strict";c.d(b,{Xg:()=>d.Xg,eh:()=>e,vq:()=>d.vq});var d=c(29737);Object.entries(c(50021).AI_PROVIDERS).filter(([,a])=>a.passthroughModels).map(([a])=>a);let e=Object.entries(d.vq).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name})))},25789:(a,b,c)=>{"use strict";let{spawn:d}=c(79646),e=c(29021),f=c(33873),g=c(55511),{LOCAL_STDIO_PLUGINS:h}=c(97418),{DATA_DIR:i}=c(81372),j=f.join(i,"mcp","customPlugins.json"),k="__9routerMcpBridges",l=()=>(globalThis[k]||(globalThis[k]=new Map),globalThis[k]),m=()=>(globalThis.__9routerCustomPlugins||(globalThis.__9routerCustomPlugins=new Map),globalThis.__9routerCustomPlugins);function n(a){let b=m().get(a)||h.find(b=>b.name===a);if(b)return b;try{let b=JSON.parse(e.readFileSync(j,"utf-8")),c=Array.isArray(b)?b.find(b=>b.name===a&&b.command):null;if(c)return m().set(c.name,c),c}catch{}return null}function o(a){let b=l(),c=b.get(a);if(c?.proc&&!c.proc.killed&&null===c.proc.exitCode)return c;let e=n(a);if(!e)throw Error(`Unknown local plugin: ${a}`);let f=d(e.command,e.args,{stdio:["pipe","pipe","pipe"],env:process.env});return c={proc:f,sessions:new Map,buffer:""},b.set(a,c),f.stdout.on("data",a=>{let b;for(c.buffer+=a.toString("utf8");(b=c.buffer.indexOf("\n"))>=0;){let a=c.buffer.slice(0,b).trim();if(c.buffer=c.buffer.slice(b+1),!a)continue;let d=function(a){try{let b=JSON.parse(a),c=b?.result?.content;if(!Array.isArray(c))return a;let d=!1;for(let a of c)if(a?.type==="text"&&"string"==typeof a.text){let b=function(a){if("string"!=typeof a||a.length<2e3)return a;let b=a;if((b=function(a){let b=a.split("\n"),c=[],d=0;for(;d<b.length;){let a=b[d],e=a.match(/^(\s*)-\s*([a-zA-Z]+)\b/);if(!e){c.push(a),d++;continue}let f=e[1],g=e[2],h=d;for(;h<b.length;){let a=b[h],c=a.match(/^(\s*)-\s*([a-zA-Z]+)\b/);if(c&&c[1]===f&&c[2]===g||a.startsWith(`${f} `)||a.startsWith(`${f} `)){h++;continue}break}let i=h-d;if(i>=30){let a=function(a,b,c,d){let e=0;for(let f=b;f<a.length;f++){let b=a[f].match(/^(\s*)-\s*([a-zA-Z]+)\b/);if(b&&b[1]===c&&b[2]===d&&++e>10)return f}return a.length}(b,d,f,g),e=function(a,b,c,d){let e=[];for(let f=0;f<b;f++){let b=a[f].match(/^(\s*)-\s*([a-zA-Z]+)\b/);b&&b[1]===c&&b[2]===d&&e.push(f)}return e.length>5?e[e.length-5]:b}(b,h,f,g);for(let e=d;e<a;e++)c.push(b[e]);c.push(`${f}... [${i-10-5} similar "${g}" items omitted by 9router bridge]`);for(let a=e;a<h;a++)c.push(b[a])}else for(let a=d;a<h;a++)c.push(b[a]);d=h}return c.join("\n")}(b=(b=b.replace(/^\s*-\s*generic:?\s*$/gm,"")).replace(/^\s*-\s*text:\s*""\s*$/gm,""))).length>5e4){let c=b.slice(0,49700);b=`${c}
2
+
3
+ ... [truncated ${a.length-c.length} chars by 9router bridge. Page is large; ask user to scroll/navigate to a specific section, or click an element with the refs shown above]`}return b}(a.text);b!==a.text&&(a.text=b,d=!0)}return d?JSON.stringify(b):a}catch{return a}}(a);for(let a of c.sessions.values())try{a(`event: message
4
+ data: ${d}
5
+
6
+ `)}catch{}}}),f.stderr.on("data",b=>console.log(`[mcp:${a}]`,b.toString().trim())),f.on("exit",c=>{console.log(`[mcp:${a}] exited`,c),b.delete(a)}),c}a.exports={getOrSpawn:o,registerSession:function(a,b){let c=o(a),d=g.randomUUID();return c.sessions.set(d,b),d},unregisterSession:function(a,b){let c=l().get(a);c&&c.sessions.delete(b)},sendToChild:function(a,b){let c=l().get(a);if(!c?.proc?.stdin?.writable)throw Error(`Bridge not running: ${a}`);c.proc.stdin.write(`${JSON.stringify(b)}
7
+ `)},isRunning:function(a){let b=l().get(a);return!!(b?.proc&&!b.proc.killed&&null===b.proc.exitCode)},findPlugin:n,registerCustomPlugin:function(a){m().set(a.name,a)}}},39006:a=>{"use strict";a.exports={rE:"0.4.31"}},64749:()=>{},70802:(a,b,c)=>{"use strict";c.r(b),c.d(b,{DELETE:()=>M,GET:()=>K,POST:()=>L});var d=c(71266),e=c(86606),f=c(79748),g=c.n(f),h=c(33873),i=c.n(h),j=c(21820),k=c.n(j),l=c(55511),m=c.n(l),n=c(97418),o=c(89489),p=c(81372),q=c(39990);let r=o.h0.appPort,s="gateway",t={coworkEgressAllowedHosts:["*"],disabledBuiltinTools:[],isLocalDevMcpEnabled:!0,isDesktopExtensionEnabled:!0,isDesktopExtensionDirectoryEnabled:!0,isDesktopExtensionSignatureRequired:!1,isClaudeCodeForDesktopEnabled:!0,disableEssentialTelemetry:!0,disableNonessentialTelemetry:!0,disableNonessentialServices:!0},u=()=>{if("darwin"===k().platform()){let a=i().join(k().homedir(),"Library","Application Support");return[i().join(a,"Claude-3p"),i().join(a,"Claude")]}if("win32"===k().platform()){let a=process.env.LOCALAPPDATA||i().join(k().homedir(),"AppData","Local"),b=process.env.APPDATA||i().join(k().homedir(),"AppData","Roaming");return[i().join(a,"Claude-3p"),i().join(b,"Claude-3p"),i().join(a,"Claude"),i().join(b,"Claude")]}return[i().join(k().homedir(),".config","Claude-3p"),i().join(k().homedir(),".config","Claude")]},v=async()=>{let a=u();for(let b of a)try{return await g().access(i().join(b,"configLibrary")),b}catch{}return a[0]},w=()=>u()[0],x=async()=>i().join(await v(),"configLibrary"),y=()=>i().join(w(),"configLibrary"),z=async()=>i().join(await x(),"_meta.json"),A=()=>{if("darwin"===k().platform())return i().join(k().homedir(),"Library","Application Support","Claude");if("win32"===k().platform()){let a=process.env.APPDATA||i().join(k().homedir(),"AppData","Roaming");return i().join(a,"Claude")}return i().join(k().homedir(),".config","Claude")},B=()=>i().join(A(),"claude_desktop_config.json"),C=async()=>{try{return JSON.parse(await g().readFile(B(),"utf-8"))||{}}catch(a){if("ENOENT"===a.code)return{};throw a}},D=async a=>{await g().mkdir(A(),{recursive:!0}),await g().writeFile(B(),JSON.stringify(a,null,2))},E=async()=>{let a=await C();return"3p"!==a.deploymentMode&&(a.deploymentMode="3p",await D(a),!0)},F=async()=>{let a=await C();if(!a.mcpServers||"object"!=typeof a.mcpServers)return;let b=new Set(n.LOCAL_STDIO_PLUGINS.map(a=>a.name));for(let c of Object.keys(a.mcpServers))b.has(c)&&delete a.mcpServers[c];0===Object.keys(a.mcpServers).length&&delete a.mcpServers,await D(a)},G=async()=>{for(let a of[...u(),...(()=>{if("darwin"===k().platform())return["/Applications/Claude.app",i().join(k().homedir(),"Applications","Claude.app")];if("win32"===k().platform()){let a=process.env.LOCALAPPDATA||i().join(k().homedir(),"AppData","Local"),b=process.env.ProgramFiles||"C:\\Program Files";return[i().join(a,"AnthropicClaude"),i().join(b,"Claude"),i().join(b,"AnthropicClaude")]}return[]})()])try{return await g().access(a),!0}catch{}return!1},H=async a=>{try{return JSON.parse(await g().readFile(a,"utf-8"))}catch(a){if("ENOENT"===a.code)return null;throw a}},I=async()=>{let a=i().join(y(),"_meta.json"),b=await H(a);if(!b||!b.appliedId){let c=await H(await z());if(c?.appliedId)b=c;else{let a=m().randomUUID();b={appliedId:a,entries:[{id:a,name:"Default"}]}}await g().mkdir(y(),{recursive:!0}),await g().writeFile(a,JSON.stringify(b,null,2))}return b};async function J(a){let b=i().join(w(),"config.json"),c={};try{c=JSON.parse(await g().readFile(b,"utf-8"))||{}}catch(a){if("ENOENT"!==a.code)return{error:a.code}}let d={};for(let b of a)b?.name&&(d[b.name]=!0);return c.operonSkipMcpApprovals=d,await g().mkdir(w(),{recursive:!0}),await g().writeFile(b,JSON.stringify(c,null,2)),{written:Object.keys(d).length}}async function K(){try{if(!await G())return e.NextResponse.json({installed:!1,config:null,message:"Claude Desktop (Cowork mode) not detected"});let a=await H(await z()),b=a?.appliedId||null,c=await x(),d=b?i().join(c,`${b}.json`):null,f=d?await H(d):null,g=f?.inferenceGatewayBaseUrl||null,h=Array.isArray(f?.inferenceModels)?f.inferenceModels.map(a=>"string"==typeof a?a:a?.name).filter(Boolean):[],j=Array.isArray(f?.managedMcpServers)?f.managedMcpServers:[],k=!!(f?.inferenceProvider===s&&g),l=new Set(n.LOCAL_STDIO_PLUGINS.map(a=>a.name)),m=j.filter(a=>l.has(a.name)&&"string"==typeof a.url&&a.url.includes("/api/mcp/")).map(a=>a.name),o=j.filter(a=>a.custom||!l.has(a.name)&&"string"==typeof a.url&&a.url.includes("/api/mcp/")).map(a=>({name:a.name,url:a.url,transport:a.transport,custom:!0}));return e.NextResponse.json({installed:!0,config:f,has9Router:k,configPath:d,cowork:{appliedId:b,baseUrl:g,models:h,provider:f?.inferenceProvider||null,plugins:j.filter(a=>!a.custom&&!(l.has(a.name)&&"string"==typeof a.url&&a.url.includes("/api/mcp/"))).map(a=>{let b=a.toolPolicy?Object.keys(a.toolPolicy):[],c=`${a.name}-`,d=new Set;for(let a of b){let b=a;for(;b.startsWith(c);)b=b.slice(c.length);d.add(b)}let e=n.DEFAULT_PLUGINS.find(b=>b.name===a.name),f=e&&Array.isArray(e.toolNames)?e.toolNames:Array.from(d);return{name:a.name,url:a.url,transport:a.transport,oauth:!!a.oauth,toolNames:f}}),localPlugins:m,customPlugins:o},defaultPlugins:n.DEFAULT_PLUGINS,localStdioPlugins:n.LOCAL_STDIO_PLUGINS})}catch(a){return console.log("Error reading cowork settings:",a),e.NextResponse.json({error:"Failed to read cowork settings"},{status:500})}}async function L(a){try{let{baseUrl:b,apiKey:d,models:f,plugins:h,localPlugins:j,customPlugins:k}=await a.json();if(!b||!d)return e.NextResponse.json({error:"baseUrl and apiKey are required"},{status:400});let l=Array.isArray(f)?f.filter(a=>"string"==typeof a&&a.trim()):[];if(0===l.length)return e.NextResponse.json({error:"At least one model is required"},{status:400});let m=Array.isArray(h)?h:n.DEFAULT_PLUGINS,o=Array.isArray(j)?j:[],q=Array.isArray(k)?k:[];if(q.length>0){let{registerCustomPlugin:a}=c(25789),b=q.filter(a=>a.command).map(a=>({name:a.name,command:a.command,args:a.args||[]}));for(let c of b)a(c);try{let a=i().join(p.DATA_DIR,"mcp");await g().mkdir(a,{recursive:!0}),await g().writeFile(i().join(a,"customPlugins.json"),JSON.stringify(b,null,2))}catch{}}let u=(a=>{let b=Array.isArray(a)?a:[],c=[];for(let a of b){let b=n.LOCAL_STDIO_PLUGINS.find(b=>b.name===a);if(!b)continue;let d={name:b.name,url:`http://localhost:${r}/api/mcp/${b.name}/sse`,transport:"sse"};if(Array.isArray(b.toolNames)&&b.toolNames.length>0){let a=`${b.name}-`,c={};for(let d of b.toolNames)c[d]="allow",c[`${a}${d}`]="allow";d.toolPolicy=c}c.push(d)}return c})(o),v=(a=>{if(!Array.isArray(a))return[];let b=[];for(let c of a)c?.name&&(c.url?b.push({name:c.name,url:c.url,transport:c.transport||"sse",custom:!0}):c.command&&b.push({name:c.name,url:`http://localhost:${r}/api/mcp/${encodeURIComponent(c.name)}/sse`,transport:"sse",custom:!0}));return b})(q),w=[...(0,n.buildManagedMcpServers)(m),...u,...v],x=await E(),z=await I(),A=i().join(y(),`${z.appliedId}.json`),B={...t,inferenceProvider:s,inferenceGatewayBaseUrl:b,inferenceGatewayApiKey:d,inferenceModels:l.map(a=>({name:a}))};w.length>0&&(B.managedMcpServers=w),await g().writeFile(A,JSON.stringify(B,null,2));let C=null;try{C=await J(w)}catch(a){C={error:a.message}}try{await F()}catch{}return e.NextResponse.json({success:!0,bootstrapped:x,message:x?"Cowork enabled (3p mode set). Quit & reopen Claude Desktop.":"Cowork settings applied. Quit & reopen Claude Desktop.",configPath:A,skipApprovals:C,localMcp:{applied:o,via:"3p-sse-bridge"}})}catch(a){return console.log("Error applying cowork settings:",a),e.NextResponse.json({error:"Failed to apply cowork settings"},{status:500})}}async function M(){try{let a=await H(await z());if(!a?.appliedId)return e.NextResponse.json({success:!0,message:"No active config to reset"});let b=i().join(await x(),`${a.appliedId}.json`);try{await g().writeFile(b,JSON.stringify({},null,2))}catch(a){if("ENOENT"!==a.code)throw a}try{await J([])}catch{}try{await F()}catch{}return e.NextResponse.json({success:!0,message:"Cowork config reset"})}catch(a){return console.log("Error resetting cowork settings:",a),e.NextResponse.json({error:"Failed to reset cowork settings"},{status:500})}}(0,q.D)([K,L,M]),(0,d.A)(K,"00899530af7bd797b6b0e26f580c38e29e82d3c474",null),(0,d.A)(L,"40a06f24a5114e11489a892a599e64053e534a00b0",null),(0,d.A)(M,"00160511706990bbe01dd8036c5c8cc33c9b157aaf",null)},81372:(a,b,c)=>{"use strict";c.r(b),c.d(b,{DATA_DIR:()=>m,getDataDir:()=>l});var d=c(73024),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h);let j="9router";function k(){return"win32"===process.platform?g().join(process.env.APPDATA||g().join(i().homedir(),"AppData","Roaming"),j):g().join(i().homedir(),`.${j}`)}function l(){let a=process.env.DATA_DIR;if(!a)return k();try{return e().mkdirSync(a,{recursive:!0}),a}catch(b){if(b?.code==="EACCES"||b?.code==="EPERM")return console.warn(`[DATA_DIR] '${a}' not writable → fallback ~/.${j}`),k();throw b}}let m=l()},89489:(a,b,c)=>{"use strict";c.d(b,{UY:()=>h,X3:()=>i,eh:()=>f.eh,fg:()=>e.fg,h0:()=>g});var d=c(39006),e=c(50021),f=c(24709);d.rE;let g={npmPackageName:"9router",installCmd:"npm i -g 9router",installCmdLatest:"npm i -g 9router@latest --prefer-online",shutdownCountdownSec:3,exitDelayMs:500,statusPort:20129,statusPollIntervalMs:1e3,statusLogTailLines:8,installRetries:3,installRetryDelayMs:5e3,lingerAfterDoneMs:3e4,waitForExitMinMs:5e3,waitForExitMaxMs:2e4,waitForExitCheckMs:500,appPort:20128},h={maxLines:200,pollIntervalMs:1e3},i={openrouter:"https://openrouter.ai/api/v1/chat/completions",glm:"https://api.z.ai/api/anthropic/v1/messages","glm-cn":"https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",kimi:"https://api.kimi.com/coding/v1/messages",minimax:"https://api.minimax.io/anthropic/v1/messages","minimax-cn":"https://api.minimaxi.com/anthropic/v1/messages",alicode:"https://coding.dashscope.aliyuncs.com/v1/chat/completions","alicode-intl":"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions","volcengine-ark":"https://ark.cn-beijing.volces.com/api/coding/v3/chat/completions",byteplus:"https://ark.ap-southeast.bytepluses.com/api/coding/v3/chat/completions",openai:"https://api.openai.com/v1/chat/completions",anthropic:"https://api.anthropic.com/v1/messages",gemini:"https://generativelanguage.googleapis.com/v1beta/models",ollama:"https://ollama.com/api/chat","ollama-local":"http://localhost:11434/api/chat"}},97418:a=>{"use strict";a.exports={DEFAULT_PLUGINS:[{name:"exa",title:"Exa",description:"Real-time web search and code documentation",url:"https://mcp.exa.ai/mcp",transport:"http",oauth:!1,toolNames:["web_search_exa","web_fetch_exa"]},{name:"tavily",title:"Tavily",description:"Real-time web search optimized for LLM agents",url:"https://mcp.tavily.com/mcp",transport:"http",oauth:!0,toolNames:["tavily_search","tavily_extract","tavily_crawl","tavily_map"]}],LOCAL_STDIO_PLUGINS:[{name:"browsermcp",title:"Browser MCP",description:"Control your running Chrome (requires Chrome extension)",extensionUrl:"https://chromewebstore.google.com/detail/browser-mcp-automate-your/bjfgambnhccakkhmkepdoekmckoijdlc",command:"npx",args:["-y","@browsermcp/mcp@latest"],toolNames:["browser_navigate","browser_snapshot","browser_click","browser_type","browser_screenshot","browser_get_console_logs","browser_wait","browser_press_key","browser_go_back","browser_go_forward"]}],buildManagedMcpServers:function(a){let b=Array.isArray(a)?a:[],c=[],d=new Set;for(let a of b){if(!a?.name||!a?.url||d.has(a.name))continue;d.add(a.name);let b={name:a.name,url:a.url,transport:a.transport||(/\/sse(\b|\/)/i.test(a.url)?"sse":"http")};if(a.oauth&&(b.oauth=!0),Array.isArray(a.toolNames)&&a.toolNames.length>0){let c=`${a.name}-`,d=new Set;for(let b of a.toolNames){if("string"!=typeof b||!b)continue;let a=b;for(;a.startsWith(c);)a=a.slice(c.length);d.add(a)}let e={};for(let a of d)e[a]="allow",e[`${c}${a}`]="allow";b.toolPolicy=e}c.push(b)}return c}}}};
@@ -1 +1 @@
1
- exports.id=6799,exports.ids=[6799],exports.modules={21102:(a,b)=>{"use strict";function c(){throw Object.defineProperty(Error('ImageResponse moved from "next/server" to "next/og" since Next.js 14, please import from "next/og" instead'),"__NEXT_ERROR_CODE",{value:"E183",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"ImageResponse",{enumerable:!0,get:function(){return c}})},25109:(a,b,c)=>{"use strict";var d,e;Object.defineProperty(b,"__esModule",{value:!0}),d=c(79335),e=b,Object.keys(d).forEach(function(a){"default"===a||Object.prototype.hasOwnProperty.call(e,a)||Object.defineProperty(e,a,{enumerable:!0,get:function(){return d[a]}})})},26015:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={isRequestAPICallableInsideAfter:function(){return j},throwForSearchParamsAccessInUseCache:function(){return i},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return h}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(37799),g=c(3295);function h(a,b){throw Object.defineProperty(new f.StaticGenBailoutError(`Route ${a} with \`dynamic = "error"\` couldn't be rendered statically because it used ${b}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E543",enumerable:!1,configurable:!0})}function i(a,b){let c=Object.defineProperty(Error(`Route ${a.route} used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E842",enumerable:!1,configurable:!0});throw Error.captureStackTrace(c,b),a.invalidDynamicUsageError??=c,c}function j(){let a=g.afterTaskAsyncStorage.getStore();return(null==a?void 0:a.rootTaskSpawnPhase)==="action"}},52206:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d,e={isBot:function(){return h},userAgent:function(){return j},userAgentFromString:function(){return i}};for(var f in e)Object.defineProperty(b,f,{enumerable:!0,get:e[f]});let g=(d=c(59725))&&d.__esModule?d:{default:d};function h(a){return/Googlebot|Mediapartners-Google|AdsBot-Google|googleweblight|Storebot-Google|Google-PageRenderer|Google-InspectionTool|Bingbot|BingPreview|Slurp|DuckDuckBot|baiduspider|yandex|sogou|LinkedInBot|bitlybot|tumblr|vkShare|quora link preview|facebookexternalhit|facebookcatalog|Twitterbot|applebot|redditbot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|ia_archiver|GPTBot/i.test(a)}function i(a){return{...(0,g.default)(a),isBot:void 0!==a&&h(a)}}function j({headers:a}){return i(a.get("user-agent")||void 0)}},55103:(a,b,c)=>{"use strict";a.exports=c(44870)},59725:(a,b,c)=>{var d,e={226:function(e,f){!function(g){"use strict";var h="function",i="undefined",j="object",k="string",l="major",m="model",n="name",o="type",p="vendor",q="version",r="architecture",s="console",t="mobile",u="tablet",v="smarttv",w="wearable",x="embedded",y="Amazon",z="Apple",A="ASUS",B="BlackBerry",C="Browser",D="Chrome",E="Firefox",F="Google",G="Huawei",H="Microsoft",I="Motorola",J="Opera",K="Samsung",L="Sharp",M="Sony",N="Xiaomi",O="Zebra",P="Facebook",Q="Chromium OS",R="Mac OS",S=function(a,b){var c={};for(var d in a)b[d]&&b[d].length%2==0?c[d]=b[d].concat(a[d]):c[d]=a[d];return c},T=function(a){for(var b={},c=0;c<a.length;c++)b[a[c].toUpperCase()]=a[c];return b},U=function(a,b){return typeof a===k&&-1!==V(b).indexOf(V(a))},V=function(a){return a.toLowerCase()},W=function(a,b){if(typeof a===k)return a=a.replace(/^\s\s*/,""),typeof b===i?a:a.substring(0,350)},X=function(a,b){for(var c,d,e,f,g,i,k=0;k<b.length&&!g;){var l=b[k],m=b[k+1];for(c=d=0;c<l.length&&!g&&l[c];)if(g=l[c++].exec(a))for(e=0;e<m.length;e++)i=g[++d],typeof(f=m[e])===j&&f.length>0?2===f.length?typeof f[1]==h?this[f[0]]=f[1].call(this,i):this[f[0]]=f[1]:3===f.length?typeof f[1]!==h||f[1].exec&&f[1].test?this[f[0]]=i?i.replace(f[1],f[2]):void 0:this[f[0]]=i?f[1].call(this,i,f[2]):void 0:4===f.length&&(this[f[0]]=i?f[3].call(this,i.replace(f[1],f[2])):void 0):this[f]=i||void 0;k+=2}},Y=function(a,b){for(var c in b)if(typeof b[c]===j&&b[c].length>0){for(var d=0;d<b[c].length;d++)if(U(b[c][d],a))return"?"===c?void 0:c}else if(U(b[c],a))return"?"===c?void 0:c;return a},Z={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},$={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[q,[n,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[q,[n,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[n,q],[/opios[\/ ]+([\w\.]+)/i],[q,[n,J+" Mini"]],[/\bopr\/([\w\.]+)/i],[q,[n,J]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i,/(avant |iemobile|slim)(?:browser)?[\/ ]?([\w\.]*)/i,/(ba?idubrowser)[\/ ]?([\w\.]+)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,/(heytap|ovi)browser\/([\d\.]+)/i,/(weibo)__([\d\.]+)/i],[n,q],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[q,[n,"UC"+C]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i],[q,[n,"WeChat(Win) Desktop"]],[/micromessenger\/([\w\.]+)/i],[q,[n,"WeChat"]],[/konqueror\/([\w\.]+)/i],[q,[n,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[q,[n,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[q,[n,"Yandex"]],[/(avast|avg)\/([\w\.]+)/i],[[n,/(.+)/,"$1 Secure "+C],q],[/\bfocus\/([\w\.]+)/i],[q,[n,E+" Focus"]],[/\bopt\/([\w\.]+)/i],[q,[n,J+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[q,[n,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[q,[n,"Dolphin"]],[/coast\/([\w\.]+)/i],[q,[n,J+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[q,[n,"MIUI "+C]],[/fxios\/([-\w\.]+)/i],[q,[n,E]],[/\bqihu|(qi?ho?o?|360)browser/i],[[n,"360 "+C]],[/(oculus|samsung|sailfish|huawei)browser\/([\w\.]+)/i],[[n,/(.+)/,"$1 "+C],q],[/(comodo_dragon)\/([\w\.]+)/i],[[n,/_/g," "],q],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|baiduboxapp|2345Explorer)[\/ ]?([\w\.]+)/i],[n,q],[/(metasr)[\/ ]?([\w\.]+)/i,/(lbbrowser)/i,/\[(linkedin)app\]/i],[n],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[n,P],q],[/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(chromium|instagram)[\/ ]([-\w\.]+)/i],[n,q],[/\bgsa\/([\w\.]+) .*safari\//i],[q,[n,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[q,[n,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[q,[n,D+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[n,D+" WebView"],q],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[q,[n,"Android "+C]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[n,q],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[q,[n,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[q,n],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[n,[q,Y,{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}]],[/(webkit|khtml)\/([\w\.]+)/i],[n,q],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[n,"Netscape"],q],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[q,[n,E+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/(links) \(([\w\.]+)/i,/panasonic;(viera)/i],[n,q],[/(cobalt)\/([\w\.]+)/i],[n,[q,/master.|lts./,""]]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i],[[r,"amd64"]],[/(ia32(?=;))/i],[[r,V]],[/((?:i[346]|x)86)[;\)]/i],[[r,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[r,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[r,"armhf"]],[/windows (ce|mobile); ppc;/i],[[r,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[r,/ower/,"",V]],[/(sun4\w)[;\)]/i],[[r,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[r,V]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[m,[p,K],[o,u]],[/\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[m,[p,K],[o,t]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[m,[p,z],[o,t]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[m,[p,z],[o,u]],[/(macintosh);/i],[m,[p,z]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[m,[p,L],[o,t]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[m,[p,G],[o,u]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[m,[p,G],[o,t]],[/\b(poco[\w ]+)(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i],[[m,/_/g," "],[p,N],[o,t]],[/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[m,/_/g," "],[p,N],[o,u]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[m,[p,"OPPO"],[o,t]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[m,[p,"Vivo"],[o,t]],[/\b(rmx[12]\d{3})(?: bui|;|\))/i],[m,[p,"Realme"],[o,t]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[m,[p,I],[o,t]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[m,[p,I],[o,u]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[m,[p,"LG"],[o,u]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[m,[p,"LG"],[o,t]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[m,[p,"Lenovo"],[o,u]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[m,/_/g," "],[p,"Nokia"],[o,t]],[/(pixel c)\b/i],[m,[p,F],[o,u]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[m,[p,F],[o,t]],[/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[m,[p,M],[o,t]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[m,"Xperia Tablet"],[p,M],[o,u]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[m,[p,"OnePlus"],[o,t]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[m,[p,y],[o,u]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[m,/(.+)/g,"Fire Phone $1"],[p,y],[o,t]],[/(playbook);[-\w\),; ]+(rim)/i],[m,p,[o,u]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[m,[p,B],[o,t]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[m,[p,A],[o,u]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[m,[p,A],[o,t]],[/(nexus 9)/i],[m,[p,"HTC"],[o,u]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[p,[m,/_/g," "],[o,t]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[m,[p,"Acer"],[o,u]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[m,[p,"Meizu"],[o,t]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[p,m,[o,t]],[/(kobo)\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[p,m,[o,u]],[/(surface duo)/i],[m,[p,H],[o,u]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[m,[p,"Fairphone"],[o,t]],[/(u304aa)/i],[m,[p,"AT&T"],[o,t]],[/\bsie-(\w*)/i],[m,[p,"Siemens"],[o,t]],[/\b(rct\w+) b/i],[m,[p,"RCA"],[o,u]],[/\b(venue[\d ]{2,7}) b/i],[m,[p,"Dell"],[o,u]],[/\b(q(?:mv|ta)\w+) b/i],[m,[p,"Verizon"],[o,u]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[m,[p,"Barnes & Noble"],[o,u]],[/\b(tm\d{3}\w+) b/i],[m,[p,"NuVision"],[o,u]],[/\b(k88) b/i],[m,[p,"ZTE"],[o,u]],[/\b(nx\d{3}j) b/i],[m,[p,"ZTE"],[o,t]],[/\b(gen\d{3}) b.+49h/i],[m,[p,"Swiss"],[o,t]],[/\b(zur\d{3}) b/i],[m,[p,"Swiss"],[o,u]],[/\b((zeki)?tb.*\b) b/i],[m,[p,"Zeki"],[o,u]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[p,"Dragon Touch"],m,[o,u]],[/\b(ns-?\w{0,9}) b/i],[m,[p,"Insignia"],[o,u]],[/\b((nxa|next)-?\w{0,9}) b/i],[m,[p,"NextBook"],[o,u]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[p,"Voice"],m,[o,t]],[/\b(lvtel\-)?(v1[12]) b/i],[[p,"LvTel"],m,[o,t]],[/\b(ph-1) /i],[m,[p,"Essential"],[o,t]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[m,[p,"Envizen"],[o,u]],[/\b(trio[-\w\. ]+) b/i],[m,[p,"MachSpeed"],[o,u]],[/\btu_(1491) b/i],[m,[p,"Rotor"],[o,u]],[/(shield[\w ]+) b/i],[m,[p,"Nvidia"],[o,u]],[/(sprint) (\w+)/i],[p,m,[o,t]],[/(kin\.[onetw]{3})/i],[[m,/\./g," "],[p,H],[o,t]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[m,[p,O],[o,u]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[m,[p,O],[o,t]],[/smart-tv.+(samsung)/i],[p,[o,v]],[/hbbtv.+maple;(\d+)/i],[[m,/^/,"SmartTV"],[p,K],[o,v]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[p,"LG"],[o,v]],[/(apple) ?tv/i],[p,[m,z+" TV"],[o,v]],[/crkey/i],[[m,D+"cast"],[p,F],[o,v]],[/droid.+aft(\w)( bui|\))/i],[m,[p,y],[o,v]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[m,[p,L],[o,v]],[/(bravia[\w ]+)( bui|\))/i],[m,[p,M],[o,v]],[/(mitv-\w{5}) bui/i],[m,[p,N],[o,v]],[/Hbbtv.*(technisat) (.*);/i],[p,m,[o,v]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[p,W],[m,W],[o,v]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[o,v]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[p,m,[o,s]],[/droid.+; (shield) bui/i],[m,[p,"Nvidia"],[o,s]],[/(playstation [345portablevi]+)/i],[m,[p,M],[o,s]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[m,[p,H],[o,s]],[/((pebble))app/i],[p,m,[o,w]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[m,[p,z],[o,w]],[/droid.+; (glass) \d/i],[m,[p,F],[o,w]],[/droid.+; (wt63?0{2,3})\)/i],[m,[p,O],[o,w]],[/(quest( 2| pro)?)/i],[m,[p,P],[o,w]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[p,[o,x]],[/(aeobc)\b/i],[m,[p,y],[o,x]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+? mobile safari/i],[m,[o,t]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[m,[o,u]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[o,u]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[o,t]],[/(android[-\w\. ]{0,9});.+buil/i],[m,[p,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[q,[n,"EdgeHTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[q,[n,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[n,q],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[q,n]],os:[[/microsoft (windows) (vista|xp)/i],[n,q],[/(windows) nt 6\.2; (arm)/i,/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i,/(windows)[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i],[n,[q,Y,Z]],[/(win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[n,"Windows"],[q,Y,Z]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/ios;fbsv\/([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[q,/_/g,"."],[n,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[n,R],[q,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[q,n],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[n,q],[/\(bb(10);/i],[q,[n,B]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[q,[n,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[q,[n,E+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[q,[n,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[q,[n,"watchOS"]],[/crkey\/([\d\.]+)/i],[q,[n,D+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[n,Q],q],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux) ?([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[n,q],[/(sunos) ?([\w\.\d]*)/i],[[n,"Solaris"],q],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[n,q]]},_=function(a,b){if(typeof a===j&&(b=a,a=void 0),!(this instanceof _))return new _(a,b).getResult();var c=typeof g!==i&&g.navigator?g.navigator:void 0,d=a||(c&&c.userAgent?c.userAgent:""),e=c&&c.userAgentData?c.userAgentData:void 0,f=b?S($,b):$,s=c&&c.userAgent==d;return this.getBrowser=function(){var a,b={};return b[n]=void 0,b[q]=void 0,X.call(b,d,f.browser),b[l]=typeof(a=b[q])===k?a.replace(/[^\d\.]/g,"").split(".")[0]:void 0,s&&c&&c.brave&&typeof c.brave.isBrave==h&&(b[n]="Brave"),b},this.getCPU=function(){var a={};return a[r]=void 0,X.call(a,d,f.cpu),a},this.getDevice=function(){var a={};return a[p]=void 0,a[m]=void 0,a[o]=void 0,X.call(a,d,f.device),s&&!a[o]&&e&&e.mobile&&(a[o]=t),s&&"Macintosh"==a[m]&&c&&typeof c.standalone!==i&&c.maxTouchPoints&&c.maxTouchPoints>2&&(a[m]="iPad",a[o]=u),a},this.getEngine=function(){var a={};return a[n]=void 0,a[q]=void 0,X.call(a,d,f.engine),a},this.getOS=function(){var a={};return a[n]=void 0,a[q]=void 0,X.call(a,d,f.os),s&&!a[n]&&e&&"Unknown"!=e.platform&&(a[n]=e.platform.replace(/chrome os/i,Q).replace(/macos/i,R)),a},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return d},this.setUA=function(a){return d=typeof a===k&&a.length>350?W(a,350):a,this},this.setUA(d),this};_.VERSION="1.0.35",_.BROWSER=T([n,q,l]),_.CPU=T([r]),_.DEVICE=T([m,p,o,s,t,v,u,w,x]),_.ENGINE=_.OS=T([n,q]),typeof f!==i?(e.exports&&(f=e.exports=_),f.UAParser=_):c.amdO?void 0===(d=(function(){return _}).call(b,c,b,a))||(a.exports=d):typeof g!==i&&(g.UAParser=_);var aa=typeof g!==i&&(g.jQuery||g.Zepto);if(aa&&!aa.ua){var ab=new _;aa.ua=ab.getResult(),aa.ua.get=function(){return ab.getUA()},aa.ua.set=function(a){ab.setUA(a);var b=ab.getResult();for(var c in b)aa.ua[c]=b[c]}}}("object"==typeof window?window:this)}},f={};function g(a){var b=f[a];if(void 0!==b)return b.exports;var c=f[a]={exports:{}},d=!0;try{e[a].call(c.exports,c,c.exports,g),d=!1}finally{d&&delete f[a]}return c.exports}g.ab=__dirname+"/",a.exports=g(226)},70685:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={ImageResponse:function(){return f.ImageResponse},NextRequest:function(){return g.NextRequest},NextResponse:function(){return h.NextResponse},URLPattern:function(){return j.URLPattern},after:function(){return k.after},connection:function(){return l.connection},userAgent:function(){return i.userAgent},userAgentFromString:function(){return i.userAgentFromString}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(21102),g=c(8412),h=c(99938),i=c(52206),j=c(88571),k=c(25109),l=c(87968)},79335:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"after",{enumerable:!0,get:function(){return e}});let d=c(29294);function e(a){let b=d.workAsyncStorage.getStore();if(!b)throw Object.defineProperty(Error("`after` was called outside a request scope. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context"),"__NEXT_ERROR_CODE",{value:"E468",enumerable:!1,configurable:!0});let{afterContext:c}=b;return c.after(a)}},86606:(a,b,c)=>{"use strict";var d=c(70685);c.o(d,"NextResponse")&&c.d(b,{NextResponse:function(){return d.NextResponse}})},87968:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"connection",{enumerable:!0,get:function(){return k}});let d=c(29294),e=c(63033),f=c(12987),g=c(37799),h=c(3060),i=c(26015);c(53320);let j=c(45521);function k(){let a=d.workAsyncStorage.getStore(),b=e.workUnitAsyncStorage.getStore();if(a){if(b&&"after"===b.phase&&!(0,i.isRequestAPICallableInsideAfter)())throw Object.defineProperty(Error(`Route ${a.route} used \`connection()\` inside \`after()\`. The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual Request, but \`after()\` executes after the request, so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/canary/app/api-reference/functions/after`),"__NEXT_ERROR_CODE",{value:"E827",enumerable:!1,configurable:!0});if(a.forceStatic)return Promise.resolve(void 0);if(a.dynamicShouldError)throw Object.defineProperty(new g.StaticGenBailoutError(`Route ${a.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`connection()\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E847",enumerable:!1,configurable:!0});if(b)switch(b.type){case"cache":{let b=Object.defineProperty(Error(`Route ${a.route} used \`connection()\` inside "use cache". The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual request, but caches must be able to be produced before a request, so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E841",enumerable:!1,configurable:!0});throw Error.captureStackTrace(b,k),a.invalidDynamicUsageError??=b,b}case"private-cache":{let b=Object.defineProperty(Error(`Route ${a.route} used \`connection()\` inside "use cache: private". The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual navigation request, but caches must be able to be produced before a navigation request, so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E837",enumerable:!1,configurable:!0});throw Error.captureStackTrace(b,k),a.invalidDynamicUsageError??=b,b}case"unstable-cache":throw Object.defineProperty(Error(`Route ${a.route} used \`connection()\` inside a function cached with \`unstable_cache()\`. The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual Request, but caches must be able to be produced before a Request so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`),"__NEXT_ERROR_CODE",{value:"E840",enumerable:!1,configurable:!0});case"generate-static-params":throw Object.defineProperty(Error(`Route ${a.route} used \`connection()\` inside \`generateStaticParams\`. This is not supported because \`generateStaticParams\` runs at build time without an HTTP request. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context`),"__NEXT_ERROR_CODE",{value:"E1125",enumerable:!1,configurable:!0});case"prerender":case"prerender-client":case"prerender-runtime":return(0,h.makeHangingPromise)(b.renderSignal,a.route,"`connection()`");case"validation-client":{let a="`connection`";throw Object.defineProperty(new j.InvariantError(`${a} must not be used within a Client Component. Next.js should be preventing ${a} from being included in Client Components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E1063",enumerable:!1,configurable:!0})}case"prerender-ppr":return(0,f.postponeWithTracking)(a.route,"connection",b.dynamicTracking);case"prerender-legacy":return(0,f.throwToInterruptStaticGeneration)("connection",a,b);case"request":if((0,f.trackDynamicDataInDynamicRender)(b),b.asyncApiPromises)return b.asyncApiPromises.connection;return Promise.resolve(void 0)}}(0,e.throwForMissingRequestStore)("connection")}},88571:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"URLPattern",{enumerable:!0,get:function(){return c}});let c="u"<typeof URLPattern?void 0:URLPattern},99218:(a,b,c)=>{"use strict";Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(71330),e=c(90711),f=c(43448);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}},99938:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"NextResponse",{enumerable:!0,get:function(){return l}});let d=c(89542),e=c(60800),f=c(43448),g=c(26211),h=c(89542),i=Symbol("internal response"),j=new Set([301,302,303,307,308]);function k(a,b){var c;if(null==a||null==(c=a.request)?void 0:c.headers){if(!(a.request.headers instanceof Headers))throw Object.defineProperty(Error("request.headers must be an instance of Headers"),"__NEXT_ERROR_CODE",{value:"E119",enumerable:!1,configurable:!0});let c=[];for(let[d,e]of a.request.headers)b.set("x-middleware-request-"+d,e),c.push(d);b.set("x-middleware-override-headers",c.join(","))}}class l extends Response{constructor(a,b={}){super(a,b);const c=this.headers,j=new Proxy(new h.ResponseCookies(c),{get(a,e,f){switch(e){case"delete":case"set":return(...f)=>{let g=Reflect.apply(a[e],a,f),i=new Headers(c);return g instanceof h.ResponseCookies&&c.set("x-middleware-set-cookie",g.getAll().map(a=>(0,d.stringifyCookie)(a)).join(",")),k(b,i),g};default:return g.ReflectAdapter.get(a,e,f)}}});this[i]={cookies:j,url:b.url?new e.NextURL(b.url,{headers:(0,f.toNodeOutgoingHttpHeaders)(c),nextConfig:b.nextConfig}):void 0}}[Symbol.for("edge-runtime.inspect.custom")](){return{cookies:this.cookies,url:this.url,body:this.body,bodyUsed:this.bodyUsed,headers:Object.fromEntries(this.headers),ok:this.ok,redirected:this.redirected,status:this.status,statusText:this.statusText,type:this.type}}get cookies(){return this[i].cookies}static json(a,b){let c=Response.json(a,b);return new l(c.body,c)}static redirect(a,b){let c="number"==typeof b?b:(null==b?void 0:b.status)??307;if(!j.has(c))throw Object.defineProperty(RangeError('Failed to execute "redirect" on "response": Invalid status code'),"__NEXT_ERROR_CODE",{value:"E529",enumerable:!1,configurable:!0});let d="object"==typeof b?b:{},e=new Headers(null==d?void 0:d.headers);return e.set("Location",(0,f.validateURL)(a)),new l(null,{...d,headers:e,status:c})}static rewrite(a,b){let c=new Headers(null==b?void 0:b.headers);return c.set("x-middleware-rewrite",(0,f.validateURL)(a)),k(b,c),new l(null,{...b,headers:c})}static next(a){let b=new Headers(null==a?void 0:a.headers);return b.set("x-middleware-next","1"),k(a,b),new l(null,{...a,headers:b})}}}};
1
+ exports.id=6799,exports.ids=[6799],exports.modules={21102:(a,b)=>{"use strict";function c(){throw Object.defineProperty(Error('ImageResponse moved from "next/server" to "next/og" since Next.js 14, please import from "next/og" instead'),"__NEXT_ERROR_CODE",{value:"E183",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"ImageResponse",{enumerable:!0,get:function(){return c}})},25109:(a,b,c)=>{"use strict";var d,e;Object.defineProperty(b,"__esModule",{value:!0}),d=c(79335),e=b,Object.keys(d).forEach(function(a){"default"===a||Object.prototype.hasOwnProperty.call(e,a)||Object.defineProperty(e,a,{enumerable:!0,get:function(){return d[a]}})})},26015:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={isRequestAPICallableInsideAfter:function(){return j},throwForSearchParamsAccessInUseCache:function(){return i},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return h}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(37799),g=c(3295);function h(a,b){throw Object.defineProperty(new f.StaticGenBailoutError(`Route ${a} with \`dynamic = "error"\` couldn't be rendered statically because it used ${b}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E543",enumerable:!1,configurable:!0})}function i(a,b){let c=Object.defineProperty(Error(`Route ${a.route} used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E842",enumerable:!1,configurable:!0});throw Error.captureStackTrace(c,b),a.invalidDynamicUsageError??=c,c}function j(){let a=g.afterTaskAsyncStorage.getStore();return(null==a?void 0:a.rootTaskSpawnPhase)==="action"}},52206:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d,e={isBot:function(){return h},userAgent:function(){return j},userAgentFromString:function(){return i}};for(var f in e)Object.defineProperty(b,f,{enumerable:!0,get:e[f]});let g=(d=c(59725))&&d.__esModule?d:{default:d};function h(a){return/Googlebot|Mediapartners-Google|AdsBot-Google|googleweblight|Storebot-Google|Google-PageRenderer|Google-InspectionTool|Bingbot|BingPreview|Slurp|DuckDuckBot|baiduspider|yandex|sogou|LinkedInBot|bitlybot|tumblr|vkShare|quora link preview|facebookexternalhit|facebookcatalog|Twitterbot|applebot|redditbot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|ia_archiver|GPTBot/i.test(a)}function i(a){return{...(0,g.default)(a),isBot:void 0!==a&&h(a)}}function j({headers:a}){return i(a.get("user-agent")||void 0)}},55103:(a,b,c)=>{"use strict";a.exports=c(44870)},59725:(a,b,c)=>{var d,e={226:function(e,f){!function(g){"use strict";var h="function",i="undefined",j="object",k="string",l="major",m="model",n="name",o="type",p="vendor",q="version",r="architecture",s="console",t="mobile",u="tablet",v="smarttv",w="wearable",x="embedded",y="Amazon",z="Apple",A="ASUS",B="BlackBerry",C="Browser",D="Chrome",E="Firefox",F="Google",G="Huawei",H="Microsoft",I="Motorola",J="Opera",K="Samsung",L="Sharp",M="Sony",N="Xiaomi",O="Zebra",P="Facebook",Q="Chromium OS",R="Mac OS",S=function(a,b){var c={};for(var d in a)b[d]&&b[d].length%2==0?c[d]=b[d].concat(a[d]):c[d]=a[d];return c},T=function(a){for(var b={},c=0;c<a.length;c++)b[a[c].toUpperCase()]=a[c];return b},U=function(a,b){return typeof a===k&&-1!==V(b).indexOf(V(a))},V=function(a){return a.toLowerCase()},W=function(a,b){if(typeof a===k)return a=a.replace(/^\s\s*/,""),typeof b===i?a:a.substring(0,350)},X=function(a,b){for(var c,d,e,f,g,i,k=0;k<b.length&&!g;){var l=b[k],m=b[k+1];for(c=d=0;c<l.length&&!g&&l[c];)if(g=l[c++].exec(a))for(e=0;e<m.length;e++)i=g[++d],typeof(f=m[e])===j&&f.length>0?2===f.length?typeof f[1]==h?this[f[0]]=f[1].call(this,i):this[f[0]]=f[1]:3===f.length?typeof f[1]!==h||f[1].exec&&f[1].test?this[f[0]]=i?i.replace(f[1],f[2]):void 0:this[f[0]]=i?f[1].call(this,i,f[2]):void 0:4===f.length&&(this[f[0]]=i?f[3].call(this,i.replace(f[1],f[2])):void 0):this[f]=i||void 0;k+=2}},Y=function(a,b){for(var c in b)if(typeof b[c]===j&&b[c].length>0){for(var d=0;d<b[c].length;d++)if(U(b[c][d],a))return"?"===c?void 0:c}else if(U(b[c],a))return"?"===c?void 0:c;return a},Z={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},$={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[q,[n,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[q,[n,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[n,q],[/opios[\/ ]+([\w\.]+)/i],[q,[n,J+" Mini"]],[/\bopr\/([\w\.]+)/i],[q,[n,J]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i,/(avant |iemobile|slim)(?:browser)?[\/ ]?([\w\.]*)/i,/(ba?idubrowser)[\/ ]?([\w\.]+)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,/(heytap|ovi)browser\/([\d\.]+)/i,/(weibo)__([\d\.]+)/i],[n,q],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[q,[n,"UC"+C]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i],[q,[n,"WeChat(Win) Desktop"]],[/micromessenger\/([\w\.]+)/i],[q,[n,"WeChat"]],[/konqueror\/([\w\.]+)/i],[q,[n,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[q,[n,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[q,[n,"Yandex"]],[/(avast|avg)\/([\w\.]+)/i],[[n,/(.+)/,"$1 Secure "+C],q],[/\bfocus\/([\w\.]+)/i],[q,[n,E+" Focus"]],[/\bopt\/([\w\.]+)/i],[q,[n,J+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[q,[n,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[q,[n,"Dolphin"]],[/coast\/([\w\.]+)/i],[q,[n,J+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[q,[n,"MIUI "+C]],[/fxios\/([-\w\.]+)/i],[q,[n,E]],[/\bqihu|(qi?ho?o?|360)browser/i],[[n,"360 "+C]],[/(oculus|samsung|sailfish|huawei)browser\/([\w\.]+)/i],[[n,/(.+)/,"$1 "+C],q],[/(comodo_dragon)\/([\w\.]+)/i],[[n,/_/g," "],q],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|baiduboxapp|2345Explorer)[\/ ]?([\w\.]+)/i],[n,q],[/(metasr)[\/ ]?([\w\.]+)/i,/(lbbrowser)/i,/\[(linkedin)app\]/i],[n],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[n,P],q],[/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(chromium|instagram)[\/ ]([-\w\.]+)/i],[n,q],[/\bgsa\/([\w\.]+) .*safari\//i],[q,[n,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[q,[n,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[q,[n,D+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[n,D+" WebView"],q],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[q,[n,"Android "+C]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[n,q],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[q,[n,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[q,n],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[n,[q,Y,{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}]],[/(webkit|khtml)\/([\w\.]+)/i],[n,q],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[n,"Netscape"],q],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[q,[n,E+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/(links) \(([\w\.]+)/i,/panasonic;(viera)/i],[n,q],[/(cobalt)\/([\w\.]+)/i],[n,[q,/master.|lts./,""]]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i],[[r,"amd64"]],[/(ia32(?=;))/i],[[r,V]],[/((?:i[346]|x)86)[;\)]/i],[[r,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[r,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[r,"armhf"]],[/windows (ce|mobile); ppc;/i],[[r,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[r,/ower/,"",V]],[/(sun4\w)[;\)]/i],[[r,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[r,V]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[m,[p,K],[o,u]],[/\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[m,[p,K],[o,t]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[m,[p,z],[o,t]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[m,[p,z],[o,u]],[/(macintosh);/i],[m,[p,z]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[m,[p,L],[o,t]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[m,[p,G],[o,u]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[m,[p,G],[o,t]],[/\b(poco[\w ]+)(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i],[[m,/_/g," "],[p,N],[o,t]],[/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[m,/_/g," "],[p,N],[o,u]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[m,[p,"OPPO"],[o,t]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[m,[p,"Vivo"],[o,t]],[/\b(rmx[12]\d{3})(?: bui|;|\))/i],[m,[p,"Realme"],[o,t]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[m,[p,I],[o,t]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[m,[p,I],[o,u]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[m,[p,"LG"],[o,u]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[m,[p,"LG"],[o,t]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[m,[p,"Lenovo"],[o,u]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[m,/_/g," "],[p,"Nokia"],[o,t]],[/(pixel c)\b/i],[m,[p,F],[o,u]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[m,[p,F],[o,t]],[/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[m,[p,M],[o,t]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[m,"Xperia Tablet"],[p,M],[o,u]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[m,[p,"OnePlus"],[o,t]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[m,[p,y],[o,u]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[m,/(.+)/g,"Fire Phone $1"],[p,y],[o,t]],[/(playbook);[-\w\),; ]+(rim)/i],[m,p,[o,u]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[m,[p,B],[o,t]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[m,[p,A],[o,u]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[m,[p,A],[o,t]],[/(nexus 9)/i],[m,[p,"HTC"],[o,u]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[p,[m,/_/g," "],[o,t]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[m,[p,"Acer"],[o,u]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[m,[p,"Meizu"],[o,t]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[p,m,[o,t]],[/(kobo)\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[p,m,[o,u]],[/(surface duo)/i],[m,[p,H],[o,u]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[m,[p,"Fairphone"],[o,t]],[/(u304aa)/i],[m,[p,"AT&T"],[o,t]],[/\bsie-(\w*)/i],[m,[p,"Siemens"],[o,t]],[/\b(rct\w+) b/i],[m,[p,"RCA"],[o,u]],[/\b(venue[\d ]{2,7}) b/i],[m,[p,"Dell"],[o,u]],[/\b(q(?:mv|ta)\w+) b/i],[m,[p,"Verizon"],[o,u]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[m,[p,"Barnes & Noble"],[o,u]],[/\b(tm\d{3}\w+) b/i],[m,[p,"NuVision"],[o,u]],[/\b(k88) b/i],[m,[p,"ZTE"],[o,u]],[/\b(nx\d{3}j) b/i],[m,[p,"ZTE"],[o,t]],[/\b(gen\d{3}) b.+49h/i],[m,[p,"Swiss"],[o,t]],[/\b(zur\d{3}) b/i],[m,[p,"Swiss"],[o,u]],[/\b((zeki)?tb.*\b) b/i],[m,[p,"Zeki"],[o,u]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[p,"Dragon Touch"],m,[o,u]],[/\b(ns-?\w{0,9}) b/i],[m,[p,"Insignia"],[o,u]],[/\b((nxa|next)-?\w{0,9}) b/i],[m,[p,"NextBook"],[o,u]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[p,"Voice"],m,[o,t]],[/\b(lvtel\-)?(v1[12]) b/i],[[p,"LvTel"],m,[o,t]],[/\b(ph-1) /i],[m,[p,"Essential"],[o,t]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[m,[p,"Envizen"],[o,u]],[/\b(trio[-\w\. ]+) b/i],[m,[p,"MachSpeed"],[o,u]],[/\btu_(1491) b/i],[m,[p,"Rotor"],[o,u]],[/(shield[\w ]+) b/i],[m,[p,"Nvidia"],[o,u]],[/(sprint) (\w+)/i],[p,m,[o,t]],[/(kin\.[onetw]{3})/i],[[m,/\./g," "],[p,H],[o,t]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[m,[p,O],[o,u]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[m,[p,O],[o,t]],[/smart-tv.+(samsung)/i],[p,[o,v]],[/hbbtv.+maple;(\d+)/i],[[m,/^/,"SmartTV"],[p,K],[o,v]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[p,"LG"],[o,v]],[/(apple) ?tv/i],[p,[m,z+" TV"],[o,v]],[/crkey/i],[[m,D+"cast"],[p,F],[o,v]],[/droid.+aft(\w)( bui|\))/i],[m,[p,y],[o,v]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[m,[p,L],[o,v]],[/(bravia[\w ]+)( bui|\))/i],[m,[p,M],[o,v]],[/(mitv-\w{5}) bui/i],[m,[p,N],[o,v]],[/Hbbtv.*(technisat) (.*);/i],[p,m,[o,v]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[p,W],[m,W],[o,v]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[o,v]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[p,m,[o,s]],[/droid.+; (shield) bui/i],[m,[p,"Nvidia"],[o,s]],[/(playstation [345portablevi]+)/i],[m,[p,M],[o,s]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[m,[p,H],[o,s]],[/((pebble))app/i],[p,m,[o,w]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[m,[p,z],[o,w]],[/droid.+; (glass) \d/i],[m,[p,F],[o,w]],[/droid.+; (wt63?0{2,3})\)/i],[m,[p,O],[o,w]],[/(quest( 2| pro)?)/i],[m,[p,P],[o,w]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[p,[o,x]],[/(aeobc)\b/i],[m,[p,y],[o,x]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+? mobile safari/i],[m,[o,t]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[m,[o,u]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[o,u]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[o,t]],[/(android[-\w\. ]{0,9});.+buil/i],[m,[p,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[q,[n,"EdgeHTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[q,[n,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[n,q],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[q,n]],os:[[/microsoft (windows) (vista|xp)/i],[n,q],[/(windows) nt 6\.2; (arm)/i,/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i,/(windows)[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i],[n,[q,Y,Z]],[/(win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[n,"Windows"],[q,Y,Z]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/ios;fbsv\/([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[q,/_/g,"."],[n,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[n,R],[q,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[q,n],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[n,q],[/\(bb(10);/i],[q,[n,B]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[q,[n,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[q,[n,E+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[q,[n,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[q,[n,"watchOS"]],[/crkey\/([\d\.]+)/i],[q,[n,D+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[n,Q],q],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux) ?([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[n,q],[/(sunos) ?([\w\.\d]*)/i],[[n,"Solaris"],q],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[n,q]]},_=function(a,b){if(typeof a===j&&(b=a,a=void 0),!(this instanceof _))return new _(a,b).getResult();var c=typeof g!==i&&g.navigator?g.navigator:void 0,d=a||(c&&c.userAgent?c.userAgent:""),e=c&&c.userAgentData?c.userAgentData:void 0,f=b?S($,b):$,s=c&&c.userAgent==d;return this.getBrowser=function(){var a,b={};return b[n]=void 0,b[q]=void 0,X.call(b,d,f.browser),b[l]=typeof(a=b[q])===k?a.replace(/[^\d\.]/g,"").split(".")[0]:void 0,s&&c&&c.brave&&typeof c.brave.isBrave==h&&(b[n]="Brave"),b},this.getCPU=function(){var a={};return a[r]=void 0,X.call(a,d,f.cpu),a},this.getDevice=function(){var a={};return a[p]=void 0,a[m]=void 0,a[o]=void 0,X.call(a,d,f.device),s&&!a[o]&&e&&e.mobile&&(a[o]=t),s&&"Macintosh"==a[m]&&c&&typeof c.standalone!==i&&c.maxTouchPoints&&c.maxTouchPoints>2&&(a[m]="iPad",a[o]=u),a},this.getEngine=function(){var a={};return a[n]=void 0,a[q]=void 0,X.call(a,d,f.engine),a},this.getOS=function(){var a={};return a[n]=void 0,a[q]=void 0,X.call(a,d,f.os),s&&!a[n]&&e&&"Unknown"!=e.platform&&(a[n]=e.platform.replace(/chrome os/i,Q).replace(/macos/i,R)),a},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return d},this.setUA=function(a){return d=typeof a===k&&a.length>350?W(a,350):a,this},this.setUA(d),this};_.VERSION="1.0.35",_.BROWSER=T([n,q,l]),_.CPU=T([r]),_.DEVICE=T([m,p,o,s,t,v,u,w,x]),_.ENGINE=_.OS=T([n,q]),typeof f!==i?(e.exports&&(f=e.exports=_),f.UAParser=_):c.amdO?void 0===(d=(function(){return _}).call(b,c,b,a))||(a.exports=d):typeof g!==i&&(g.UAParser=_);var aa=typeof g!==i&&(g.jQuery||g.Zepto);if(aa&&!aa.ua){var ab=new _;aa.ua=ab.getResult(),aa.ua.get=function(){return ab.getUA()},aa.ua.set=function(a){ab.setUA(a);var b=ab.getResult();for(var c in b)aa.ua[c]=b[c]}}}("object"==typeof window?window:this)}},f={};function g(a){var b=f[a];if(void 0!==b)return b.exports;var c=f[a]={exports:{}},d=!0;try{e[a].call(c.exports,c,c.exports,g),d=!1}finally{d&&delete f[a]}return c.exports}g.ab=__dirname+"/",a.exports=g(226)},65587:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"connection",{enumerable:!0,get:function(){return k}});let d=c(29294),e=c(63033),f=c(12987),g=c(37799),h=c(3060),i=c(26015);c(53320);let j=c(45521);function k(){let a=d.workAsyncStorage.getStore(),b=e.workUnitAsyncStorage.getStore();if(a){if(b&&"after"===b.phase&&!(0,i.isRequestAPICallableInsideAfter)())throw Object.defineProperty(Error(`Route ${a.route} used \`connection()\` inside \`after()\`. The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual Request, but \`after()\` executes after the request, so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/canary/app/api-reference/functions/after`),"__NEXT_ERROR_CODE",{value:"E827",enumerable:!1,configurable:!0});if(a.forceStatic)return Promise.resolve(void 0);if(a.dynamicShouldError)throw Object.defineProperty(new g.StaticGenBailoutError(`Route ${a.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`connection()\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E847",enumerable:!1,configurable:!0});if(b)switch(b.type){case"cache":{let b=Object.defineProperty(Error(`Route ${a.route} used \`connection()\` inside "use cache". The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual request, but caches must be able to be produced before a request, so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E841",enumerable:!1,configurable:!0});throw Error.captureStackTrace(b,k),a.invalidDynamicUsageError??=b,b}case"private-cache":{let b=Object.defineProperty(Error(`Route ${a.route} used \`connection()\` inside "use cache: private". The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual navigation request, but caches must be able to be produced before a navigation request, so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E837",enumerable:!1,configurable:!0});throw Error.captureStackTrace(b,k),a.invalidDynamicUsageError??=b,b}case"unstable-cache":throw Object.defineProperty(Error(`Route ${a.route} used \`connection()\` inside a function cached with \`unstable_cache()\`. The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual Request, but caches must be able to be produced before a Request so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`),"__NEXT_ERROR_CODE",{value:"E840",enumerable:!1,configurable:!0});case"generate-static-params":throw Object.defineProperty(Error(`Route ${a.route} used \`connection()\` inside \`generateStaticParams\`. This is not supported because \`generateStaticParams\` runs at build time without an HTTP request. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context`),"__NEXT_ERROR_CODE",{value:"E1125",enumerable:!1,configurable:!0});case"prerender":case"prerender-client":case"prerender-runtime":return(0,h.makeHangingPromise)(b.renderSignal,a.route,"`connection()`");case"validation-client":{let a="`connection`";throw Object.defineProperty(new j.InvariantError(`${a} must not be used within a Client Component. Next.js should be preventing ${a} from being included in Client Components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E1063",enumerable:!1,configurable:!0})}case"prerender-ppr":return(0,f.postponeWithTracking)(a.route,"connection",b.dynamicTracking);case"prerender-legacy":return(0,f.throwToInterruptStaticGeneration)("connection",a,b);case"request":if((0,f.trackDynamicDataInDynamicRender)(b),b.asyncApiPromises)return b.asyncApiPromises.connection;return Promise.resolve(void 0)}}(0,e.throwForMissingRequestStore)("connection")}},70685:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={ImageResponse:function(){return f.ImageResponse},NextRequest:function(){return g.NextRequest},NextResponse:function(){return h.NextResponse},URLPattern:function(){return j.URLPattern},after:function(){return k.after},connection:function(){return l.connection},userAgent:function(){return i.userAgent},userAgentFromString:function(){return i.userAgentFromString}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(21102),g=c(8412),h=c(99938),i=c(52206),j=c(88571),k=c(25109),l=c(65587)},79335:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"after",{enumerable:!0,get:function(){return e}});let d=c(29294);function e(a){let b=d.workAsyncStorage.getStore();if(!b)throw Object.defineProperty(Error("`after` was called outside a request scope. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context"),"__NEXT_ERROR_CODE",{value:"E468",enumerable:!1,configurable:!0});let{afterContext:c}=b;return c.after(a)}},86606:(a,b,c)=>{"use strict";var d=c(70685);c.o(d,"NextResponse")&&c.d(b,{NextResponse:function(){return d.NextResponse}})},88571:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"URLPattern",{enumerable:!0,get:function(){return c}});let c="u"<typeof URLPattern?void 0:URLPattern},99218:(a,b,c)=>{"use strict";Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(71330),e=c(90711),f=c(43448);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}},99938:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"NextResponse",{enumerable:!0,get:function(){return l}});let d=c(89542),e=c(60800),f=c(43448),g=c(26211),h=c(89542),i=Symbol("internal response"),j=new Set([301,302,303,307,308]);function k(a,b){var c;if(null==a||null==(c=a.request)?void 0:c.headers){if(!(a.request.headers instanceof Headers))throw Object.defineProperty(Error("request.headers must be an instance of Headers"),"__NEXT_ERROR_CODE",{value:"E119",enumerable:!1,configurable:!0});let c=[];for(let[d,e]of a.request.headers)b.set("x-middleware-request-"+d,e),c.push(d);b.set("x-middleware-override-headers",c.join(","))}}class l extends Response{constructor(a,b={}){super(a,b);const c=this.headers,j=new Proxy(new h.ResponseCookies(c),{get(a,e,f){switch(e){case"delete":case"set":return(...f)=>{let g=Reflect.apply(a[e],a,f),i=new Headers(c);return g instanceof h.ResponseCookies&&c.set("x-middleware-set-cookie",g.getAll().map(a=>(0,d.stringifyCookie)(a)).join(",")),k(b,i),g};default:return g.ReflectAdapter.get(a,e,f)}}});this[i]={cookies:j,url:b.url?new e.NextURL(b.url,{headers:(0,f.toNodeOutgoingHttpHeaders)(c),nextConfig:b.nextConfig}):void 0}}[Symbol.for("edge-runtime.inspect.custom")](){return{cookies:this.cookies,url:this.url,body:this.body,bodyUsed:this.bodyUsed,headers:Object.fromEntries(this.headers),ok:this.ok,redirected:this.redirected,status:this.status,statusText:this.statusText,type:this.type}}get cookies(){return this[i].cookies}static json(a,b){let c=Response.json(a,b);return new l(c.body,c)}static redirect(a,b){let c="number"==typeof b?b:(null==b?void 0:b.status)??307;if(!j.has(c))throw Object.defineProperty(RangeError('Failed to execute "redirect" on "response": Invalid status code'),"__NEXT_ERROR_CODE",{value:"E529",enumerable:!1,configurable:!0});let d="object"==typeof b?b:{},e=new Headers(null==d?void 0:d.headers);return e.set("Location",(0,f.validateURL)(a)),new l(null,{...d,headers:e,status:c})}static rewrite(a,b){let c=new Headers(null==b?void 0:b.headers);return c.set("x-middleware-rewrite",(0,f.validateURL)(a)),k(b,c),new l(null,{...b,headers:c})}static next(a){let b=new Headers(null==a?void 0:a.headers);return b.set("x-middleware-next","1"),k(a,b),new l(null,{...a,headers:b})}}}};
@@ -1 +1 @@
1
- "use strict";exports.id=7301,exports.ids=[7301],exports.modules={23016:(a,b,c)=>{c.d(b,{C8:()=>j,DR:()=>i,Uc:()=>f,cI:()=>h,eo:()=>g,gx:()=>d,v1:()=>e}),c(73714);let d={BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,NOT_ACCEPTABLE:406,REQUEST_TIMEOUT:408,RATE_LIMITED:429,SERVER_ERROR:500,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504},e={sessionTtlMs:72e5,sessionCleanupIntervalMs:18e5,dnsCacheTtlMs:3e5,proxyDispatchersMaxSize:20},f=64e3,g=32e3,h={429:{attempts:0,delayMs:0},502:{attempts:3,delayMs:3e3},503:{attempts:3,delayMs:2e3},504:{attempts:2,delayMs:3e3}};function i(a){return null==a?{attempts:0,delayMs:2e3}:"number"==typeof a?{attempts:a,delayMs:2e3}:{attempts:a.attempts||0,delayMs:null!=a.delayMs?a.delayMs:2e3}}let j=["Please write a 5-10 word title for the following conversation:"]},73714:(a,b,c)=>{c.d(b,{EQ:()=>f,LY:()=>d,O:()=>e,fh:()=>h,t2:()=>i,wf:()=>g});let d={400:{type:"invalid_request_error",code:"bad_request"},401:{type:"authentication_error",code:"invalid_api_key"},402:{type:"billing_error",code:"payment_required"},403:{type:"permission_error",code:"insufficient_quota"},404:{type:"invalid_request_error",code:"model_not_found"},406:{type:"invalid_request_error",code:"model_not_supported"},429:{type:"rate_limit_error",code:"rate_limit_exceeded"},500:{type:"server_error",code:"internal_server_error"},502:{type:"server_error",code:"bad_gateway"},503:{type:"server_error",code:"service_unavailable"},504:{type:"server_error",code:"gateway_timeout"}},e={400:"Bad request",401:"Invalid API key provided",402:"Payment required",403:"You exceeded your current quota",404:"Model not found",406:"Model not supported",429:"Rate limit exceeded",500:"Internal server error",502:"Bad gateway - upstream provider error",503:"Service temporarily unavailable",504:"Gateway timeout"},f={base:2e3,max:3e5,maxLevel:15},g=3e4,h=18e5,i=[{text:"no credentials",cooldownMs:12e4},{text:"request not allowed",cooldownMs:5e3},{text:"improperly formed request",cooldownMs:12e4},{text:"rate limit",backoff:!0},{text:"too many requests",backoff:!0},{text:"quota exceeded",backoff:!0},{text:"capacity",backoff:!0},{text:"overloaded",backoff:!0},{status:401,cooldownMs:12e4},{status:402,cooldownMs:12e4},{status:403,cooldownMs:12e4},{status:404,cooldownMs:12e4},{status:429,backoff:!0}]},77301:(a,b,c)=>{c.d(b,{Op:()=>N,Nq:()=>E,PE:()=>P});var d=c(4573),e=c(29807),f=c(23016);let g="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36";async function h(a,b="mp3"){let c=await a.arrayBuffer();if(c.byteLength<100)throw Error("Upstream returned empty audio");let e=a.headers.get("content-type")||"",f=b;return e.includes("wav")?f="wav":e.includes("mpeg")||e.includes("mp3")?f="mp3":e.includes("ogg")&&(f="ogg"),{base64:d.Buffer.from(c).toString("base64"),format:f}}async function i(a){let b=await a.text().catch(()=>""),c=`Upstream error (${a.status})`;try{let a=JSON.parse(b);c=a?.error?.message||a?.message||a?.detail?.message||("string"==typeof a?.detail?a.detail:null)||b||c}catch{c=b||c}throw Error(c)}let j={token:null,tokenTime:0},k=0;async function l(){let a=Date.now();if(j.token&&a-j.tokenTime<66e4)return j.token;let b=await fetch("https://translate.google.com/",{headers:{"User-Agent":g}});if(!b.ok)throw Error(`Google translate fetch failed: ${b.status}`);let c=await b.text(),d=c.match(/"FdrFJe":"(.*?)"/)?.[1],e=c.match(/"cfb2h":"(.*?)"/)?.[1];if(!d||!e)throw Error("Failed to parse Google token");return j.token={"f.sid":d,bl:e},j.tokenTime=a,j.token}let m={token:null,tokenTime:0},n=null,o=0;async function p(){let a=Date.now();if(m.token&&a-m.tokenTime<3e5)return m.token;let b=await fetch("https://www.bing.com/translator",{headers:{"User-Agent":g,"Accept-Language":"vi,en-US;q=0.9,en;q=0.8"}});if(!b.ok)throw Error(`Bing translator fetch failed: ${b.status}`);let c=(b.headers.getSetCookie?.()||[]).map(a=>a.split(";")[0]).join("; "),d=(await b.text()).match(/params_AbusePreventionHelper\s*=\s*\[([^,]+),([^,]+),/);if(!d)throw Error("Failed to parse Bing token");return m.token={key:d[1],token:d[2].replace(/"/g,""),cookie:c},m.tokenTime=a,m.token}async function q(a,b,c){let d=b.split("-").slice(0,2).join("-"),e=b.toLowerCase().includes("male")?"Male":"Female",f=`<speak version='1.0' xml:lang='${d}'><voice xml:lang='${d}' xml:gender='${e}' name='${b}'><prosody rate='0.00%'>${a}</prosody></voice></speak>`,h=new URLSearchParams;return h.append("ssml",f),h.append("token",c.token),h.append("key",c.key),fetch("https://www.bing.com/tfettts?isVertical=1&&IG=1&IID=translator.5023&SFX=1",{method:"POST",body:h.toString(),headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"*/*",Origin:"https://www.bing.com",Referer:"https://www.bing.com/translator","User-Agent":g,...c.cookie?{Cookie:c.cookie}:{}}})}async function r(){let a=Date.now();if(n&&a-o<864e5)return n;let b=await fetch("https://speech.platform.bing.com/consumer/speech/synthesize/readaloud/voices/list?trustedclienttoken=6A5AA1D4EAFF4E9FB37E23D68491D6F4",{headers:{"User-Agent":g}});if(!b.ok)throw Error(`Edge TTS voices fetch failed: ${b.status}`);let c=await b.json();return n=c,o=a,c}var s=c(31421),t=c(57975),u=c(51455),v=c(48161),w=c(76760);let x=(0,t.promisify)(s.execFile),y=null;async function z(){let{stdout:a}=await x("say",["-v","?"]),b=[];for(let c of a.split("\n")){let a=c.match(/^([^\s].*?)\s{2,}([a-z]{2}_[A-Z]{2})/);if(!a)continue;let d=a[1].trim(),e=a[2].trim(),f=e.split("_")[0],g=e.split("_")[1];b.push({id:d,name:d,locale:e,lang:f,country:g,gender:""})}return b}async function A(){let{stdout:a}=await x("powershell.exe",["-NoProfile","-NonInteractive","-WindowStyle","Hidden","-Command","Add-Type -AssemblyName System.Speech; $s = New-Object System.Speech.Synthesis.SpeechSynthesizer; $s.GetInstalledVoices() | ForEach-Object { $v = $_.VoiceInfo; [PSCustomObject]@{ Name=$v.Name; Culture=$v.Culture.Name; Gender=$v.Gender } } | ConvertTo-Json -Compress"],{windowsHide:!0}),b=JSON.parse(a.trim()||"[]");return(Array.isArray(b)?b:[b]).map(a=>{let b=a.Culture||"en-US",[c,d=""]=b.split("-");return{id:a.Name,name:a.Name,locale:b.replace("-","_"),lang:c,country:d,gender:({1:"Male",2:"Female",Male:"Male",Female:"Female"})[a.Gender]||""}})}async function B(){if(y)return y;try{let a="win32"===process.platform?await A():await z();return y=a,a}catch{return[]}}async function C(a,b){let c=await (0,u.mkdtemp)((0,w.join)((0,v.tmpdir)(),"tts-")),d=(0,w.join)(c,"out.aiff"),e=(0,w.join)(c,"out.mp3");try{let c=b?["-v",b,"-o",d,a]:["-o",d,a];return await x("say",c),await x("ffmpeg",["-y","-i",d,"-codec:a","libmp3lame","-qscale:a","4",e]),(await (0,u.readFile)(e)).toString("base64")}finally{await (0,u.rm)(c,{recursive:!0,force:!0})}}let D=new Map;async function E(a){if(!a)throw Error("ElevenLabs API key required");let b=Date.now(),c=D.get(a);if(c&&b-c.time<864e5)return c.voices;let d=await fetch("https://api.elevenlabs.io/v1/voices",{headers:{"xi-api-key":a,"Content-Type":"application/json"}});if(!d.ok)throw Error(`ElevenLabs voices fetch failed: ${d.status}`);let e=((await d.json()).voices||[]).map(a=>({...a,lang:a.labels?.language||"en"}));return D.set(a,{voices:e,time:b}),e}let F="gemini-2.5-flash-preview-tts",G="Kore",H=["gemini-2.5-flash-preview-tts","gemini-2.5-pro-preview-tts"],I=[{id:"Zephyr",lang:"en",gender:"Female"},{id:"Puck",lang:"en",gender:"Male"},{id:"Charon",lang:"en",gender:"Male"},{id:"Kore",lang:"en",gender:"Female"},{id:"Fenrir",lang:"en",gender:"Male"},{id:"Leda",lang:"en",gender:"Female"},{id:"Orus",lang:"en",gender:"Male"},{id:"Aoede",lang:"en",gender:"Female"},{id:"Callirrhoe",lang:"en",gender:"Female"},{id:"Autonoe",lang:"en",gender:"Female"},{id:"Enceladus",lang:"en",gender:"Male"},{id:"Iapetus",lang:"en",gender:"Male"},{id:"Umbriel",lang:"en",gender:"Male"},{id:"Algieba",lang:"en",gender:"Male"},{id:"Despina",lang:"en",gender:"Female"},{id:"Erinome",lang:"en",gender:"Female"},{id:"Algenib",lang:"en",gender:"Male"},{id:"Rasalgethi",lang:"en",gender:"Male"},{id:"Laomedeia",lang:"en",gender:"Female"},{id:"Achernar",lang:"en",gender:"Female"},{id:"Alnilam",lang:"en",gender:"Male"},{id:"Schedar",lang:"en",gender:"Male"},{id:"Gacrux",lang:"en",gender:"Female"},{id:"Pulcherrima",lang:"en",gender:"Female"},{id:"Achird",lang:"en",gender:"Male"},{id:"Zubenelgenubi",lang:"en",gender:"Male"},{id:"Vindemiatrix",lang:"en",gender:"Female"},{id:"Sadachbia",lang:"en",gender:"Male"},{id:"Sadaltager",lang:"en",gender:"Male"},{id:"Sulafat",lang:"en",gender:"Female"}];async function J(){return I.map(a=>({voice_id:a.id,name:a.id,labels:{language:a.lang,gender:a.gender}}))}let K={hyperbolic:async function({baseUrl:a,apiKey:b,text:c}){let d=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${b}`},body:JSON.stringify({text:c})});return d.ok||await i(d),{base64:(await d.json()).audio,format:"mp3"}},deepgram:async function({baseUrl:a,apiKey:b,text:c,modelId:d}){let e=new URL(a);e.searchParams.set("model",d||"aura-asteria-en");let f=await fetch(e.toString(),{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Token ${b}`},body:JSON.stringify({text:c})});return f.ok||await i(f),h(f,"mp3")},"nvidia-tts":async function({baseUrl:a,apiKey:b,text:c,modelId:d,voiceId:e}){let f=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${b}`},body:JSON.stringify({input:{text:c},voice:e||"default",model:d})});return f.ok||await i(f),h(f,"wav")},"huggingface-tts":async function({baseUrl:a,apiKey:b,text:c,modelId:d}){if(!d||d.includes(".."))throw Error("Invalid HuggingFace model ID");let e=await fetch(`${a}/${d}`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${b}`},body:JSON.stringify({inputs:c})});return e.ok||await i(e),h(e,"wav")},inworld:async function({baseUrl:a,apiKey:b,text:c,modelId:d,voiceId:e}){let f=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Basic ${b}`},body:JSON.stringify({text:c,voiceId:e||"Alex",modelId:d||"inworld-tts-1.5-mini",audioConfig:{audioEncoding:"MP3"}})});f.ok||await i(f);let g=await f.json();if(!g.audioContent)throw Error("Inworld TTS returned no audio");return{base64:g.audioContent,format:"mp3"}},cartesia:async function({baseUrl:a,apiKey:b,text:c,modelId:d,voiceId:e}){let f=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json","X-API-Key":b,"Cartesia-Version":"2024-06-10"},body:JSON.stringify({model_id:d||"sonic-2",transcript:c,...e?{voice:{mode:"id",id:e}}:{},output_format:{container:"mp3",bit_rate:128e3,sample_rate:44100}})});return f.ok||await i(f),h(f,"mp3")},playht:async function({baseUrl:a,apiKey:b,text:c,modelId:d,voiceId:e}){let[f,g]=(b||":").split(":"),j=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json",Accept:"audio/mpeg","X-USER-ID":f||"",Authorization:`Bearer ${g||b}`},body:JSON.stringify({text:c,voice:e||"s3://voice-cloning-zero-shot/d9ff78ba-d016-47f6-b0ef-dd630f59414e/female-cs/manifest.json",voice_engine:d||"PlayDialog",output_format:"mp3",speed:1})});return j.ok||await i(j),h(j,"mp3")},coqui:async function({baseUrl:a,text:b,voiceId:c}){let d=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:b,...c?{speaker_id:c}:{}})});return d.ok||await i(d),h(d,"wav")},tortoise:async function({baseUrl:a,text:b,voiceId:c}){let d=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:b,voice:c||"random"})});return d.ok||await i(d),h(d,"wav")},openai:async function({baseUrl:a,apiKey:b,text:c,modelId:d,voiceId:e}){let f={"Content-Type":"application/json"};b&&(f.Authorization=`Bearer ${b}`);let g=await fetch(a,{method:"POST",headers:f,body:JSON.stringify({model:d,input:c,voice:e||"alloy",response_format:"mp3",speed:1})});return g.ok||await i(g),h(g,"mp3")}},L={"google-tts":{noAuth:!0,async synthesize(a,b){let c=b||"en",d=await l(),e=a.replace(/[@^*()\\/\-_+=><"'\u201c\u201d\u3010\u3011]/g," ").replaceAll(", ",". "),f="jQ1olc",g=1e5*++k+Math.floor(1e3+9e3*Math.random()),h=new URLSearchParams({rpcids:f,"f.sid":d["f.sid"],bl:d.bl,hl:c,"soc-app":1,"soc-platform":1,"soc-device":1,_reqid:g,rt:"c"}),i=[e,c,null,"undefined",[0]],j=new URLSearchParams;j.append("f.req",JSON.stringify([[[f,JSON.stringify(i),null,"generic"]]]));let m=await fetch(`https://translate.google.com/_/TranslateWebserverUi/data/batchexecute?${h}`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Referer:"https://translate.google.com/"},body:j.toString()});if(!m.ok)throw Error(`Google TTS failed: ${m.status}`);let n=JSON.parse(JSON.parse((await m.text()).split("\n")[3])[0][2])[0];if(!n||n.length<100)throw Error("Google TTS returned empty audio");return{base64:n,format:"mp3"}}},"edge-tts":{noAuth:!0,async synthesize(a,b){let c=b||"vi-VN-HoaiMyNeural",e=await p(),f=await q(a,c,e);if((429===f.status||403===f.status)&&(m.token=null,m.tokenTime=0,e=await p(),f=await q(a,c,e)),!f.ok){let a=await f.text().catch(()=>"");throw Error(`Bing TTS failed: ${f.status}${a?" - "+a:""}`)}let g=await f.arrayBuffer();if(g.byteLength<1024)throw Error("Bing TTS returned empty audio");return{base64:d.Buffer.from(g).toString("base64"),format:"mp3"}}},"local-device":{noAuth:!0,synthesize:async(a,b)=>({base64:await C(a,b),format:"mp3"})},elevenlabs:{async synthesize(a,b,c){if(!c?.apiKey)throw Error("ElevenLabs API key required");let e="eleven_flash_v2_5",f=b;b&&b.includes("/")&&([e,f]=b.split("/"));let g=await fetch(`https://api.elevenlabs.io/v1/text-to-speech/${f}`,{method:"POST",headers:{"xi-api-key":c.apiKey,"Content-Type":"application/json"},body:JSON.stringify({text:a,model_id:e,voice_settings:{stability:.5,similarity_boost:.75}})});if(!g.ok){let a=await g.json().catch(()=>({}));throw Error(a?.detail?.message||`ElevenLabs TTS failed: ${g.status}`)}let h=await g.arrayBuffer();if(h.byteLength<1024)throw Error("ElevenLabs TTS returned empty audio");return{base64:d.Buffer.from(h).toString("base64"),format:"mp3"}}},openai:{async synthesize(a,b,c){if(!c?.apiKey)throw Error("No OpenAI API key configured");let e="gpt-4o-mini-tts",f="alloy";if(b&&b.includes("/")){let a=b.split("/");2===a.length&&([e,f]=a)}else b&&(f=b);let g=(c.baseUrl||"https://api.openai.com").replace(/\/+$/,""),h=await fetch(`${g}/v1/audio/speech`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${c.apiKey}`},body:JSON.stringify({model:e,voice:f,input:a})});if(!h.ok){let a=await h.json().catch(()=>({}));throw Error(a?.error?.message||`OpenAI TTS failed: ${h.status}`)}let i=await h.arrayBuffer();return{base64:d.Buffer.from(i).toString("base64"),format:"mp3"}}},openrouter:{async synthesize(a,b,c){if(!c?.apiKey)throw Error("No OpenRouter API key configured");let d="openai/gpt-4o-mini-tts",e="alloy";if(b&&b.includes("/")){let a=b.lastIndexOf("/"),c=b.slice(a+1),f=b.slice(0,a);f.includes("/")?(d=f,e=c):e=b}else b&&(e=b);let f=await fetch("https://openrouter.ai/api/v1/chat/completions",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${c.apiKey}`,"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"},body:JSON.stringify({model:d,modalities:["text","audio"],audio:{voice:e,format:"wav"},stream:!0,messages:[{role:"user",content:a}]})});if(!f.ok){let a=await f.json().catch(()=>({}));throw Error(a?.error?.message||`OpenRouter TTS failed: ${f.status}`)}let g=[],h=f.body.getReader(),i=new TextDecoder,j="";for(;;){let{done:a,value:b}=await h.read();if(a)break;let c=(j+=i.decode(b,{stream:!0})).split("\n");for(let a of(j=c.pop(),c))if(a.startsWith("data: ")&&"data: [DONE]"!==a)try{let b=JSON.parse(a.slice(6)),c=b.choices?.[0]?.delta?.audio?.data;c&&g.push(c)}catch{}}if(0===g.length)throw Error("OpenRouter TTS returned no audio data");return{base64:g.join(""),format:"wav"}}},gemini:{async synthesize(a,b,c,e,f={}){var g,h;let i,j;if(!c?.apiKey)throw Error("No Gemini API key configured");let{modelId:k,voiceId:l}=function(a){if(!a)return{modelId:F,voiceId:G};for(let b of H){if(a===b)return{modelId:b,voiceId:G};if(a.startsWith(`${b}/`))return{modelId:b,voiceId:a.slice(b.length+1)}}return{modelId:F,voiceId:a}}(b),m=`https://generativelanguage.googleapis.com/v1beta/models/${k}:generateContent?key=${c.apiKey}`,n=await fetch(m,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({contents:[{parts:[{text:(g=f.language,/:\s/.test(a)?a:g?`Say in ${g}: ${a}`:`Say: ${a}`)}]}],generationConfig:{responseModalities:["AUDIO"],speechConfig:{voiceConfig:{prebuiltVoiceConfig:{voiceName:l}}}}})});if(!n.ok){let a=await n.json().catch(()=>({}));throw Error(a?.error?.message||`Gemini TTS failed: ${n.status}`)}let o=await n.json(),p=o?.candidates?.[0]?.content?.parts?.find(a=>a.inlineData?.data)?.inlineData?.data;if(!p){let a=o?.candidates?.[0]?.finishReason||o?.promptFeedback?.blockReason||"unknown";throw Error(`Gemini TTS returned no audio (finishReason: ${a}, voice: ${l}, model: ${k})`)}return{base64:(i=(h=d.Buffer.from(p,"base64")).length,(j=d.Buffer.alloc(44)).write("RIFF",0),j.writeUInt32LE(36+i,4),j.write("WAVE",8),j.write("fmt ",12),j.writeUInt32LE(16,16),j.writeUInt16LE(1,20),j.writeUInt16LE(1,22),j.writeUInt32LE(24e3,24),j.writeUInt32LE(48e3,28),j.writeUInt16LE(2,32),j.writeUInt16LE(16,34),j.write("data",36),j.writeUInt32LE(i,40),d.Buffer.concat([j,h])).toString("base64"),format:"wav"}}}};async function M(a,b,d,e){let{AI_PROVIDERS:f}=await c.e(21).then(c.bind(c,50021)),g=f[a]?.ttsConfig;if(!g)return null;let h=K[g.format];if(!h)return null;let i=e?.apiKey;if("none"!==g.authType&&!i)throw Error(`${a} API key required`);let{modelId:j,voiceId:k}=function(a,b="",c="",d=[]){if(!a)return{modelId:b,voiceId:c};for(let b of d.map(a=>a.id||a).filter(Boolean).sort((a,b)=>b.length-a.length)){if(a===b)return{modelId:b,voiceId:c};if(a.startsWith(`${b}/`))return{modelId:b,voiceId:a.slice(b.length+1)}}let e=a.lastIndexOf("/");return e>0?{modelId:a.slice(0,e),voiceId:a.slice(e+1)}:{modelId:b||a,voiceId:c||a}}(d,g.models?.[0]?.id||"","",g.models||[]);return h({baseUrl:g.baseUrl,apiKey:i,text:b,modelId:j,voiceId:k})}let N={"edge-tts":r,"local-device":B,elevenlabs:E,gemini:J};function O(a,b,c){let e=d.Buffer.from(a,"base64");return"json"===c?{success:!0,response:new Response(JSON.stringify({audio:a,format:b}),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}:{success:!0,response:new Response(e,{headers:{"Content-Type":`audio/${b}`,"Content-Length":String(e.length),"Access-Control-Allow-Origin":"*"}})}}async function P({provider:a,model:b,input:c,credentials:d,responseFormat:g="mp3",language:h}){if(!c?.trim())return(0,e.A1)(f.gx.BAD_REQUEST,"Missing required field: input");try{let i=L[a]||null;if(i){let a=await i.synthesize(c.trim(),b,d,g,{language:h});if(void 0!==a.success)return a;return O(a.base64,a.format,g)}let j=await M(a,c.trim(),b,d);if(j)return O(j.base64,j.format,g);return(0,e.A1)(f.gx.BAD_REQUEST,`Provider '${a}' does not support TTS via this route.`)}catch(a){return(0,e.A1)(f.gx.BAD_GATEWAY,a.message||"TTS synthesis failed")}}}};
1
+ "use strict";exports.id=7301,exports.ids=[7301],exports.modules={23016:(a,b,c)=>{c.d(b,{C8:()=>k,DR:()=>j,Uc:()=>g,cI:()=>i,eo:()=>h,gx:()=>d,v1:()=>e,xM:()=>f}),c(73714);let d={BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,NOT_ACCEPTABLE:406,REQUEST_TIMEOUT:408,RATE_LIMITED:429,SERVER_ERROR:500,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504},e={sessionTtlMs:72e5,sessionCleanupIntervalMs:18e5,dnsCacheTtlMs:3e5,proxyDispatchersMaxSize:20},f=18e4,g=64e3,h=32e3,i={429:{attempts:0,delayMs:0},502:{attempts:3,delayMs:3e3},503:{attempts:3,delayMs:2e3},504:{attempts:2,delayMs:3e3}};function j(a){return null==a?{attempts:0,delayMs:2e3}:"number"==typeof a?{attempts:a,delayMs:2e3}:{attempts:a.attempts||0,delayMs:null!=a.delayMs?a.delayMs:2e3}}let k=["Please write a 5-10 word title for the following conversation:"]},73714:(a,b,c)=>{c.d(b,{EQ:()=>f,LY:()=>d,O:()=>e,fh:()=>h,t2:()=>i,wf:()=>g});let d={400:{type:"invalid_request_error",code:"bad_request"},401:{type:"authentication_error",code:"invalid_api_key"},402:{type:"billing_error",code:"payment_required"},403:{type:"permission_error",code:"insufficient_quota"},404:{type:"invalid_request_error",code:"model_not_found"},406:{type:"invalid_request_error",code:"model_not_supported"},429:{type:"rate_limit_error",code:"rate_limit_exceeded"},500:{type:"server_error",code:"internal_server_error"},502:{type:"server_error",code:"bad_gateway"},503:{type:"server_error",code:"service_unavailable"},504:{type:"server_error",code:"gateway_timeout"}},e={400:"Bad request",401:"Invalid API key provided",402:"Payment required",403:"You exceeded your current quota",404:"Model not found",406:"Model not supported",429:"Rate limit exceeded",500:"Internal server error",502:"Bad gateway - upstream provider error",503:"Service temporarily unavailable",504:"Gateway timeout"},f={base:2e3,max:3e5,maxLevel:15},g=3e4,h=18e5,i=[{text:"no credentials",cooldownMs:12e4},{text:"request not allowed",cooldownMs:5e3},{text:"improperly formed request",cooldownMs:12e4},{text:"rate limit",backoff:!0},{text:"too many requests",backoff:!0},{text:"quota exceeded",backoff:!0},{text:"capacity",backoff:!0},{text:"overloaded",backoff:!0},{status:401,cooldownMs:12e4},{status:402,cooldownMs:12e4},{status:403,cooldownMs:12e4},{status:404,cooldownMs:12e4},{status:429,backoff:!0}]},77301:(a,b,c)=>{c.d(b,{Op:()=>N,Nq:()=>E,PE:()=>P});var d=c(4573),e=c(29807),f=c(23016);let g="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36";async function h(a,b="mp3"){let c=await a.arrayBuffer();if(c.byteLength<100)throw Error("Upstream returned empty audio");let e=a.headers.get("content-type")||"",f=b;return e.includes("wav")?f="wav":e.includes("mpeg")||e.includes("mp3")?f="mp3":e.includes("ogg")&&(f="ogg"),{base64:d.Buffer.from(c).toString("base64"),format:f}}async function i(a){let b=await a.text().catch(()=>""),c=`Upstream error (${a.status})`;try{let a=JSON.parse(b);c=a?.error?.message||a?.message||a?.detail?.message||("string"==typeof a?.detail?a.detail:null)||b||c}catch{c=b||c}throw Error(c)}let j={token:null,tokenTime:0},k=0;async function l(){let a=Date.now();if(j.token&&a-j.tokenTime<66e4)return j.token;let b=await fetch("https://translate.google.com/",{headers:{"User-Agent":g}});if(!b.ok)throw Error(`Google translate fetch failed: ${b.status}`);let c=await b.text(),d=c.match(/"FdrFJe":"(.*?)"/)?.[1],e=c.match(/"cfb2h":"(.*?)"/)?.[1];if(!d||!e)throw Error("Failed to parse Google token");return j.token={"f.sid":d,bl:e},j.tokenTime=a,j.token}let m={token:null,tokenTime:0},n=null,o=0;async function p(){let a=Date.now();if(m.token&&a-m.tokenTime<3e5)return m.token;let b=await fetch("https://www.bing.com/translator",{headers:{"User-Agent":g,"Accept-Language":"vi,en-US;q=0.9,en;q=0.8"}});if(!b.ok)throw Error(`Bing translator fetch failed: ${b.status}`);let c=(b.headers.getSetCookie?.()||[]).map(a=>a.split(";")[0]).join("; "),d=(await b.text()).match(/params_AbusePreventionHelper\s*=\s*\[([^,]+),([^,]+),/);if(!d)throw Error("Failed to parse Bing token");return m.token={key:d[1],token:d[2].replace(/"/g,""),cookie:c},m.tokenTime=a,m.token}async function q(a,b,c){let d=b.split("-").slice(0,2).join("-"),e=b.toLowerCase().includes("male")?"Male":"Female",f=`<speak version='1.0' xml:lang='${d}'><voice xml:lang='${d}' xml:gender='${e}' name='${b}'><prosody rate='0.00%'>${a}</prosody></voice></speak>`,h=new URLSearchParams;return h.append("ssml",f),h.append("token",c.token),h.append("key",c.key),fetch("https://www.bing.com/tfettts?isVertical=1&&IG=1&IID=translator.5023&SFX=1",{method:"POST",body:h.toString(),headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"*/*",Origin:"https://www.bing.com",Referer:"https://www.bing.com/translator","User-Agent":g,...c.cookie?{Cookie:c.cookie}:{}}})}async function r(){let a=Date.now();if(n&&a-o<864e5)return n;let b=await fetch("https://speech.platform.bing.com/consumer/speech/synthesize/readaloud/voices/list?trustedclienttoken=6A5AA1D4EAFF4E9FB37E23D68491D6F4",{headers:{"User-Agent":g}});if(!b.ok)throw Error(`Edge TTS voices fetch failed: ${b.status}`);let c=await b.json();return n=c,o=a,c}var s=c(31421),t=c(57975),u=c(51455),v=c(48161),w=c(76760);let x=(0,t.promisify)(s.execFile),y=null;async function z(){let{stdout:a}=await x("say",["-v","?"]),b=[];for(let c of a.split("\n")){let a=c.match(/^([^\s].*?)\s{2,}([a-z]{2}_[A-Z]{2})/);if(!a)continue;let d=a[1].trim(),e=a[2].trim(),f=e.split("_")[0],g=e.split("_")[1];b.push({id:d,name:d,locale:e,lang:f,country:g,gender:""})}return b}async function A(){let{stdout:a}=await x("powershell.exe",["-NoProfile","-NonInteractive","-WindowStyle","Hidden","-Command","Add-Type -AssemblyName System.Speech; $s = New-Object System.Speech.Synthesis.SpeechSynthesizer; $s.GetInstalledVoices() | ForEach-Object { $v = $_.VoiceInfo; [PSCustomObject]@{ Name=$v.Name; Culture=$v.Culture.Name; Gender=$v.Gender } } | ConvertTo-Json -Compress"],{windowsHide:!0}),b=JSON.parse(a.trim()||"[]");return(Array.isArray(b)?b:[b]).map(a=>{let b=a.Culture||"en-US",[c,d=""]=b.split("-");return{id:a.Name,name:a.Name,locale:b.replace("-","_"),lang:c,country:d,gender:({1:"Male",2:"Female",Male:"Male",Female:"Female"})[a.Gender]||""}})}async function B(){if(y)return y;try{let a="win32"===process.platform?await A():await z();return y=a,a}catch{return[]}}async function C(a,b){let c=await (0,u.mkdtemp)((0,w.join)((0,v.tmpdir)(),"tts-")),d=(0,w.join)(c,"out.aiff"),e=(0,w.join)(c,"out.mp3");try{let c=b?["-v",b,"-o",d,a]:["-o",d,a];return await x("say",c),await x("ffmpeg",["-y","-i",d,"-codec:a","libmp3lame","-qscale:a","4",e]),(await (0,u.readFile)(e)).toString("base64")}finally{await (0,u.rm)(c,{recursive:!0,force:!0})}}let D=new Map;async function E(a){if(!a)throw Error("ElevenLabs API key required");let b=Date.now(),c=D.get(a);if(c&&b-c.time<864e5)return c.voices;let d=await fetch("https://api.elevenlabs.io/v1/voices",{headers:{"xi-api-key":a,"Content-Type":"application/json"}});if(!d.ok)throw Error(`ElevenLabs voices fetch failed: ${d.status}`);let e=((await d.json()).voices||[]).map(a=>({...a,lang:a.labels?.language||"en"}));return D.set(a,{voices:e,time:b}),e}let F="gemini-2.5-flash-preview-tts",G="Kore",H=["gemini-2.5-flash-preview-tts","gemini-2.5-pro-preview-tts"],I=[{id:"Zephyr",lang:"en",gender:"Female"},{id:"Puck",lang:"en",gender:"Male"},{id:"Charon",lang:"en",gender:"Male"},{id:"Kore",lang:"en",gender:"Female"},{id:"Fenrir",lang:"en",gender:"Male"},{id:"Leda",lang:"en",gender:"Female"},{id:"Orus",lang:"en",gender:"Male"},{id:"Aoede",lang:"en",gender:"Female"},{id:"Callirrhoe",lang:"en",gender:"Female"},{id:"Autonoe",lang:"en",gender:"Female"},{id:"Enceladus",lang:"en",gender:"Male"},{id:"Iapetus",lang:"en",gender:"Male"},{id:"Umbriel",lang:"en",gender:"Male"},{id:"Algieba",lang:"en",gender:"Male"},{id:"Despina",lang:"en",gender:"Female"},{id:"Erinome",lang:"en",gender:"Female"},{id:"Algenib",lang:"en",gender:"Male"},{id:"Rasalgethi",lang:"en",gender:"Male"},{id:"Laomedeia",lang:"en",gender:"Female"},{id:"Achernar",lang:"en",gender:"Female"},{id:"Alnilam",lang:"en",gender:"Male"},{id:"Schedar",lang:"en",gender:"Male"},{id:"Gacrux",lang:"en",gender:"Female"},{id:"Pulcherrima",lang:"en",gender:"Female"},{id:"Achird",lang:"en",gender:"Male"},{id:"Zubenelgenubi",lang:"en",gender:"Male"},{id:"Vindemiatrix",lang:"en",gender:"Female"},{id:"Sadachbia",lang:"en",gender:"Male"},{id:"Sadaltager",lang:"en",gender:"Male"},{id:"Sulafat",lang:"en",gender:"Female"}];async function J(){return I.map(a=>({voice_id:a.id,name:a.id,labels:{language:a.lang,gender:a.gender}}))}let K={hyperbolic:async function({baseUrl:a,apiKey:b,text:c}){let d=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${b}`},body:JSON.stringify({text:c})});return d.ok||await i(d),{base64:(await d.json()).audio,format:"mp3"}},deepgram:async function({baseUrl:a,apiKey:b,text:c,modelId:d}){let e=new URL(a);e.searchParams.set("model",d||"aura-asteria-en");let f=await fetch(e.toString(),{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Token ${b}`},body:JSON.stringify({text:c})});return f.ok||await i(f),h(f,"mp3")},"nvidia-tts":async function({baseUrl:a,apiKey:b,text:c,modelId:d,voiceId:e}){let f=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${b}`},body:JSON.stringify({input:{text:c},voice:e||"default",model:d})});return f.ok||await i(f),h(f,"wav")},"huggingface-tts":async function({baseUrl:a,apiKey:b,text:c,modelId:d}){if(!d||d.includes(".."))throw Error("Invalid HuggingFace model ID");let e=await fetch(`${a}/${d}`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${b}`},body:JSON.stringify({inputs:c})});return e.ok||await i(e),h(e,"wav")},inworld:async function({baseUrl:a,apiKey:b,text:c,modelId:d,voiceId:e}){let f=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Basic ${b}`},body:JSON.stringify({text:c,voiceId:e||"Alex",modelId:d||"inworld-tts-1.5-mini",audioConfig:{audioEncoding:"MP3"}})});f.ok||await i(f);let g=await f.json();if(!g.audioContent)throw Error("Inworld TTS returned no audio");return{base64:g.audioContent,format:"mp3"}},cartesia:async function({baseUrl:a,apiKey:b,text:c,modelId:d,voiceId:e}){let f=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json","X-API-Key":b,"Cartesia-Version":"2024-06-10"},body:JSON.stringify({model_id:d||"sonic-2",transcript:c,...e?{voice:{mode:"id",id:e}}:{},output_format:{container:"mp3",bit_rate:128e3,sample_rate:44100}})});return f.ok||await i(f),h(f,"mp3")},playht:async function({baseUrl:a,apiKey:b,text:c,modelId:d,voiceId:e}){let[f,g]=(b||":").split(":"),j=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json",Accept:"audio/mpeg","X-USER-ID":f||"",Authorization:`Bearer ${g||b}`},body:JSON.stringify({text:c,voice:e||"s3://voice-cloning-zero-shot/d9ff78ba-d016-47f6-b0ef-dd630f59414e/female-cs/manifest.json",voice_engine:d||"PlayDialog",output_format:"mp3",speed:1})});return j.ok||await i(j),h(j,"mp3")},coqui:async function({baseUrl:a,text:b,voiceId:c}){let d=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:b,...c?{speaker_id:c}:{}})});return d.ok||await i(d),h(d,"wav")},tortoise:async function({baseUrl:a,text:b,voiceId:c}){let d=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:b,voice:c||"random"})});return d.ok||await i(d),h(d,"wav")},openai:async function({baseUrl:a,apiKey:b,text:c,modelId:d,voiceId:e}){let f={"Content-Type":"application/json"};b&&(f.Authorization=`Bearer ${b}`);let g=await fetch(a,{method:"POST",headers:f,body:JSON.stringify({model:d,input:c,voice:e||"alloy",response_format:"mp3",speed:1})});return g.ok||await i(g),h(g,"mp3")}},L={"google-tts":{noAuth:!0,async synthesize(a,b){let c=b||"en",d=await l(),e=a.replace(/[@^*()\\/\-_+=><"'\u201c\u201d\u3010\u3011]/g," ").replaceAll(", ",". "),f="jQ1olc",g=1e5*++k+Math.floor(1e3+9e3*Math.random()),h=new URLSearchParams({rpcids:f,"f.sid":d["f.sid"],bl:d.bl,hl:c,"soc-app":1,"soc-platform":1,"soc-device":1,_reqid:g,rt:"c"}),i=[e,c,null,"undefined",[0]],j=new URLSearchParams;j.append("f.req",JSON.stringify([[[f,JSON.stringify(i),null,"generic"]]]));let m=await fetch(`https://translate.google.com/_/TranslateWebserverUi/data/batchexecute?${h}`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Referer:"https://translate.google.com/"},body:j.toString()});if(!m.ok)throw Error(`Google TTS failed: ${m.status}`);let n=JSON.parse(JSON.parse((await m.text()).split("\n")[3])[0][2])[0];if(!n||n.length<100)throw Error("Google TTS returned empty audio");return{base64:n,format:"mp3"}}},"edge-tts":{noAuth:!0,async synthesize(a,b){let c=b||"vi-VN-HoaiMyNeural",e=await p(),f=await q(a,c,e);if((429===f.status||403===f.status)&&(m.token=null,m.tokenTime=0,e=await p(),f=await q(a,c,e)),!f.ok){let a=await f.text().catch(()=>"");throw Error(`Bing TTS failed: ${f.status}${a?" - "+a:""}`)}let g=await f.arrayBuffer();if(g.byteLength<1024)throw Error("Bing TTS returned empty audio");return{base64:d.Buffer.from(g).toString("base64"),format:"mp3"}}},"local-device":{noAuth:!0,synthesize:async(a,b)=>({base64:await C(a,b),format:"mp3"})},elevenlabs:{async synthesize(a,b,c){if(!c?.apiKey)throw Error("ElevenLabs API key required");let e="eleven_flash_v2_5",f=b;b&&b.includes("/")&&([e,f]=b.split("/"));let g=await fetch(`https://api.elevenlabs.io/v1/text-to-speech/${f}`,{method:"POST",headers:{"xi-api-key":c.apiKey,"Content-Type":"application/json"},body:JSON.stringify({text:a,model_id:e,voice_settings:{stability:.5,similarity_boost:.75}})});if(!g.ok){let a=await g.json().catch(()=>({}));throw Error(a?.detail?.message||`ElevenLabs TTS failed: ${g.status}`)}let h=await g.arrayBuffer();if(h.byteLength<1024)throw Error("ElevenLabs TTS returned empty audio");return{base64:d.Buffer.from(h).toString("base64"),format:"mp3"}}},openai:{async synthesize(a,b,c){if(!c?.apiKey)throw Error("No OpenAI API key configured");let e="gpt-4o-mini-tts",f="alloy";if(b&&b.includes("/")){let a=b.split("/");2===a.length&&([e,f]=a)}else b&&(f=b);let g=(c.baseUrl||"https://api.openai.com").replace(/\/+$/,""),h=await fetch(`${g}/v1/audio/speech`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${c.apiKey}`},body:JSON.stringify({model:e,voice:f,input:a})});if(!h.ok){let a=await h.json().catch(()=>({}));throw Error(a?.error?.message||`OpenAI TTS failed: ${h.status}`)}let i=await h.arrayBuffer();return{base64:d.Buffer.from(i).toString("base64"),format:"mp3"}}},openrouter:{async synthesize(a,b,c){if(!c?.apiKey)throw Error("No OpenRouter API key configured");let d="openai/gpt-4o-mini-tts",e="alloy";if(b&&b.includes("/")){let a=b.lastIndexOf("/"),c=b.slice(a+1),f=b.slice(0,a);f.includes("/")?(d=f,e=c):e=b}else b&&(e=b);let f=await fetch("https://openrouter.ai/api/v1/chat/completions",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${c.apiKey}`,"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"},body:JSON.stringify({model:d,modalities:["text","audio"],audio:{voice:e,format:"wav"},stream:!0,messages:[{role:"user",content:a}]})});if(!f.ok){let a=await f.json().catch(()=>({}));throw Error(a?.error?.message||`OpenRouter TTS failed: ${f.status}`)}let g=[],h=f.body.getReader(),i=new TextDecoder,j="";for(;;){let{done:a,value:b}=await h.read();if(a)break;let c=(j+=i.decode(b,{stream:!0})).split("\n");for(let a of(j=c.pop(),c))if(a.startsWith("data: ")&&"data: [DONE]"!==a)try{let b=JSON.parse(a.slice(6)),c=b.choices?.[0]?.delta?.audio?.data;c&&g.push(c)}catch{}}if(0===g.length)throw Error("OpenRouter TTS returned no audio data");return{base64:g.join(""),format:"wav"}}},gemini:{async synthesize(a,b,c,e,f={}){var g,h;let i,j;if(!c?.apiKey)throw Error("No Gemini API key configured");let{modelId:k,voiceId:l}=function(a){if(!a)return{modelId:F,voiceId:G};for(let b of H){if(a===b)return{modelId:b,voiceId:G};if(a.startsWith(`${b}/`))return{modelId:b,voiceId:a.slice(b.length+1)}}return{modelId:F,voiceId:a}}(b),m=`https://generativelanguage.googleapis.com/v1beta/models/${k}:generateContent?key=${c.apiKey}`,n=await fetch(m,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({contents:[{parts:[{text:(g=f.language,/:\s/.test(a)?a:g?`Say in ${g}: ${a}`:`Say: ${a}`)}]}],generationConfig:{responseModalities:["AUDIO"],speechConfig:{voiceConfig:{prebuiltVoiceConfig:{voiceName:l}}}}})});if(!n.ok){let a=await n.json().catch(()=>({}));throw Error(a?.error?.message||`Gemini TTS failed: ${n.status}`)}let o=await n.json(),p=o?.candidates?.[0]?.content?.parts?.find(a=>a.inlineData?.data)?.inlineData?.data;if(!p){let a=o?.candidates?.[0]?.finishReason||o?.promptFeedback?.blockReason||"unknown";throw Error(`Gemini TTS returned no audio (finishReason: ${a}, voice: ${l}, model: ${k})`)}return{base64:(i=(h=d.Buffer.from(p,"base64")).length,(j=d.Buffer.alloc(44)).write("RIFF",0),j.writeUInt32LE(36+i,4),j.write("WAVE",8),j.write("fmt ",12),j.writeUInt32LE(16,16),j.writeUInt16LE(1,20),j.writeUInt16LE(1,22),j.writeUInt32LE(24e3,24),j.writeUInt32LE(48e3,28),j.writeUInt16LE(2,32),j.writeUInt16LE(16,34),j.write("data",36),j.writeUInt32LE(i,40),d.Buffer.concat([j,h])).toString("base64"),format:"wav"}}}};async function M(a,b,d,e){let{AI_PROVIDERS:f}=await c.e(21).then(c.bind(c,50021)),g=f[a]?.ttsConfig;if(!g)return null;let h=K[g.format];if(!h)return null;let i=e?.apiKey;if("none"!==g.authType&&!i)throw Error(`${a} API key required`);let{modelId:j,voiceId:k}=function(a,b="",c="",d=[]){if(!a)return{modelId:b,voiceId:c};for(let b of d.map(a=>a.id||a).filter(Boolean).sort((a,b)=>b.length-a.length)){if(a===b)return{modelId:b,voiceId:c};if(a.startsWith(`${b}/`))return{modelId:b,voiceId:a.slice(b.length+1)}}let e=a.lastIndexOf("/");return e>0?{modelId:a.slice(0,e),voiceId:a.slice(e+1)}:{modelId:b||a,voiceId:c||a}}(d,g.models?.[0]?.id||"","",g.models||[]);return h({baseUrl:g.baseUrl,apiKey:i,text:b,modelId:j,voiceId:k})}let N={"edge-tts":r,"local-device":B,elevenlabs:E,gemini:J};function O(a,b,c){let e=d.Buffer.from(a,"base64");return"json"===c?{success:!0,response:new Response(JSON.stringify({audio:a,format:b}),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}:{success:!0,response:new Response(e,{headers:{"Content-Type":`audio/${b}`,"Content-Length":String(e.length),"Access-Control-Allow-Origin":"*"}})}}async function P({provider:a,model:b,input:c,credentials:d,responseFormat:g="mp3",language:h}){if(!c?.trim())return(0,e.A1)(f.gx.BAD_REQUEST,"Missing required field: input");try{let i=L[a]||null;if(i){let a=await i.synthesize(c.trim(),b,d,g,{language:h});if(void 0!==a.success)return a;return O(a.base64,a.format,g)}let j=await M(a,c.trim(),b,d);if(j)return O(j.base64,j.format,g);return(0,e.A1)(f.gx.BAD_REQUEST,`Provider '${a}' does not support TTS via this route.`)}catch(a){return(0,e.A1)(f.gx.BAD_GATEWAY,a.message||"TTS synthesis failed")}}}};