9router 0.3.91 → 0.3.97

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 (667) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/app-path-routes-manifest.json +7 -5
  3. package/app/.next/build-manifest.json +2 -2
  4. package/app/.next/routes-manifest.json +12 -0
  5. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
  6. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  7. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
  9. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  12. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
  15. package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  18. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +6 -6
  21. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -2
  24. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
  27. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
  30. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  31. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  32. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  33. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  34. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  35. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  36. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  37. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  38. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  39. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  40. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  41. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  42. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  43. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  44. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js +3 -3
  45. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  46. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  47. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js +2 -2
  48. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  49. package/app/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  50. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +2 -2
  51. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  52. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  53. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  54. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  55. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  56. package/app/.next/server/app/_global-error/page.js +2 -2
  57. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  58. package/app/.next/server/app/_global-error.html +1 -1
  59. package/app/.next/server/app/_global-error.rsc +1 -1
  60. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  61. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  62. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  63. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  64. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  65. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  66. package/app/.next/server/app/_not-found/page.js +2 -2
  67. package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
  68. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  69. package/app/.next/server/app/_not-found.html +1 -1
  70. package/app/.next/server/app/_not-found.rsc +4 -4
  71. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  72. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  73. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
  74. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  75. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  76. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  77. package/app/.next/server/app/api/auth/login/route.js +1 -1
  78. package/app/.next/server/app/api/auth/logout/route.js +1 -1
  79. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  80. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  81. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  82. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  83. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
  84. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +3 -3
  85. package/app/.next/server/app/api/cli-tools/copilot-settings/route.js +1 -1
  86. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +2 -2
  87. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  88. package/app/.next/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  89. package/app/.next/server/app/api/cloud/auth/route.js +1 -1
  90. package/app/.next/server/app/api/cloud/credentials/update/route.js +1 -1
  91. package/app/.next/server/app/api/cloud/model/resolve/route.js +1 -1
  92. package/app/.next/server/app/api/cloud/models/alias/route.js +1 -1
  93. package/app/.next/server/app/api/combos/[id]/route.js +1 -1
  94. package/app/.next/server/app/api/combos/route.js +1 -1
  95. package/app/.next/server/app/api/health/route.js +1 -1
  96. package/app/.next/server/app/api/init/route.js +1 -1
  97. package/app/.next/server/app/api/init/route.js.nft.json +1 -1
  98. package/app/.next/server/app/api/keys/[id]/route.js +1 -1
  99. package/app/.next/server/app/api/keys/route.js +1 -1
  100. package/app/.next/server/app/api/locale/route.js +1 -1
  101. package/app/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  102. package/app/.next/server/app/api/media-providers/tts/voices/route.js +1 -1
  103. package/app/.next/server/app/api/models/alias/route.js +1 -1
  104. package/app/.next/server/app/api/models/availability/route.js +1 -1
  105. package/app/.next/server/app/api/models/custom/route.js +1 -0
  106. package/app/.next/server/app/api/models/custom/route.js.nft.json +1 -0
  107. package/app/.next/server/app/api/models/custom/route_client-reference-manifest.js +1 -0
  108. package/app/.next/server/app/api/models/route.js +1 -1
  109. package/app/.next/server/app/api/models/test/route.js +1 -1
  110. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  111. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js +2 -2
  112. package/app/.next/server/app/api/oauth/cursor/import/route.js +1 -1
  113. package/app/.next/server/app/api/oauth/gitlab/pat/route.js +1 -1
  114. package/app/.next/server/app/api/oauth/iflow/cookie/route.js +1 -1
  115. package/app/.next/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  116. package/app/.next/server/app/api/oauth/kiro/import/route.js +1 -1
  117. package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  118. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  119. package/app/.next/server/app/api/pricing/route.js +1 -1
  120. package/app/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
  121. package/app/.next/server/app/api/provider-nodes/route.js +1 -1
  122. package/app/.next/server/app/api/provider-nodes/validate/route.js +1 -1
  123. package/app/.next/server/app/api/providers/[id]/models/route.js +1 -1
  124. package/app/.next/server/app/api/providers/[id]/route.js +1 -1
  125. package/app/.next/server/app/api/providers/[id]/test/route.js +1 -1
  126. package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  127. package/app/.next/server/app/api/providers/[id]/test-models/route.js +1 -1
  128. package/app/.next/server/app/api/providers/client/route.js +1 -1
  129. package/app/.next/server/app/api/providers/kilo/free-models/route.js +1 -1
  130. package/app/.next/server/app/api/providers/route.js +1 -1
  131. package/app/.next/server/app/api/providers/suggested-models/route.js +1 -1
  132. package/app/.next/server/app/api/providers/test-batch/route.js +1 -1
  133. package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  134. package/app/.next/server/app/api/providers/validate/route.js +1 -1
  135. package/app/.next/server/app/api/proxy-pools/[id]/route.js +1 -1
  136. package/app/.next/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  137. package/app/.next/server/app/api/proxy-pools/route.js +1 -1
  138. package/app/.next/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
  139. package/app/.next/server/app/api/settings/database/route.js +1 -1
  140. package/app/.next/server/app/api/settings/proxy-test/route.js +1 -1
  141. package/app/.next/server/app/api/settings/require-login/route.js +1 -1
  142. package/app/.next/server/app/api/settings/route.js +1 -1
  143. package/app/.next/server/app/api/shutdown/route.js +1 -1
  144. package/app/.next/server/app/api/tags/route.js +1 -1
  145. package/app/.next/server/app/api/translator/console-logs/route.js +1 -1
  146. package/app/.next/server/app/api/translator/console-logs/stream/route.js +2 -2
  147. package/app/.next/server/app/api/translator/load/route.js +1 -1
  148. package/app/.next/server/app/api/translator/load/route.js.nft.json +1 -1
  149. package/app/.next/server/app/api/translator/save/route.js +1 -1
  150. package/app/.next/server/app/api/translator/save/route.js.nft.json +1 -1
  151. package/app/.next/server/app/api/translator/send/route.js +1 -1
  152. package/app/.next/server/app/api/translator/translate/route.js +1 -1
  153. package/app/.next/server/app/api/tunnel/disable/route.js +1 -1
  154. package/app/.next/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  155. package/app/.next/server/app/api/tunnel/enable/route.js +1 -1
  156. package/app/.next/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  157. package/app/.next/server/app/api/tunnel/status/route.js +1 -1
  158. package/app/.next/server/app/api/tunnel/status/route.js.nft.json +1 -1
  159. package/app/.next/server/app/api/tunnel/tailscale-check/route.js +2 -2
  160. package/app/.next/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  161. package/app/.next/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  162. package/app/.next/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  163. package/app/.next/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  164. package/app/.next/server/app/api/tunnel/tailscale-install/route.js +2 -2
  165. package/app/.next/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  166. package/app/.next/server/app/api/tunnel/tailscale-login/route.js +2 -2
  167. package/app/.next/server/app/api/tunnel/tailscale-start-daemon/route.js +2 -2
  168. package/app/.next/server/app/api/tunnel/tailscale-start-daemon/route.js.nft.json +1 -1
  169. package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
  170. package/app/.next/server/app/api/usage/chart/route.js +1 -1
  171. package/app/.next/server/app/api/usage/history/route.js +1 -1
  172. package/app/.next/server/app/api/usage/providers/route.js +1 -1
  173. package/app/.next/server/app/api/usage/request-details/route.js +1 -1
  174. package/app/.next/server/app/api/usage/request-logs/route.js +1 -1
  175. package/app/.next/server/app/api/usage/stats/route.js +1 -1
  176. package/app/.next/server/app/api/usage/stream/route.js +2 -2
  177. package/app/.next/server/app/api/v1/api/chat/route.js +1 -1
  178. package/app/.next/server/app/api/v1/audio/speech/route.js +1 -1
  179. package/app/.next/server/app/api/v1/chat/completions/route.js +1 -1
  180. package/app/.next/server/app/api/v1/embeddings/route.js +1 -1
  181. package/app/.next/server/app/api/v1/images/generations/route.js +1 -0
  182. package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -0
  183. package/app/.next/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -0
  184. package/app/.next/server/app/api/v1/messages/count_tokens/route.js +1 -1
  185. package/app/.next/server/app/api/v1/messages/route.js +1 -1
  186. package/app/.next/server/app/api/v1/models/route.js +1 -1
  187. package/app/.next/server/app/api/v1/responses/compact/route.js +1 -1
  188. package/app/.next/server/app/api/v1/responses/route.js +1 -1
  189. package/app/.next/server/app/api/v1/route.js +1 -1
  190. package/app/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
  191. package/app/.next/server/app/api/v1beta/models/route.js +1 -1
  192. package/app/.next/server/app/api/version/route.js +1 -1
  193. package/app/.next/server/app/callback/page.js +2 -2
  194. package/app/.next/server/app/callback/page.js.nft.json +1 -1
  195. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  196. package/app/.next/server/app/callback.html +1 -1
  197. package/app/.next/server/app/callback.rsc +4 -4
  198. package/app/.next/server/app/callback.segments/_full.segment.rsc +4 -4
  199. package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
  200. package/app/.next/server/app/callback.segments/_index.segment.rsc +4 -4
  201. package/app/.next/server/app/callback.segments/_tree.segment.rsc +2 -2
  202. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  203. package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
  204. package/app/.next/server/app/dashboard/basic-chat.html +1 -1
  205. package/app/.next/server/app/dashboard/basic-chat.rsc +6 -6
  206. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  207. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  208. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  209. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  210. package/app/.next/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
  211. package/app/.next/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  212. package/app/.next/server/app/dashboard/basic-chat.segments/_index.segment.rsc +4 -4
  213. package/app/.next/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
  214. package/app/.next/server/app/dashboard/cli-tools.html +1 -1
  215. package/app/.next/server/app/dashboard/cli-tools.rsc +6 -6
  216. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  217. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  218. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  219. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  220. package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
  221. package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  222. package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
  223. package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  224. package/app/.next/server/app/dashboard/combos.html +1 -1
  225. package/app/.next/server/app/dashboard/combos.rsc +6 -6
  226. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  227. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  228. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  229. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  230. package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
  231. package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  232. package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
  233. package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  234. package/app/.next/server/app/dashboard/endpoint.html +1 -1
  235. package/app/.next/server/app/dashboard/endpoint.rsc +6 -6
  236. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  237. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  238. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  239. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  240. package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
  241. package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  242. package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
  243. package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  244. package/app/.next/server/app/dashboard/mitm.html +1 -1
  245. package/app/.next/server/app/dashboard/mitm.rsc +6 -6
  246. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  247. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  248. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  249. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  250. package/app/.next/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
  251. package/app/.next/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  252. package/app/.next/server/app/dashboard/mitm.segments/_index.segment.rsc +4 -4
  253. package/app/.next/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  254. package/app/.next/server/app/dashboard/profile.html +1 -1
  255. package/app/.next/server/app/dashboard/profile.rsc +6 -6
  256. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  257. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  258. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  259. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  260. package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
  261. package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  262. package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
  263. package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  264. package/app/.next/server/app/dashboard/providers/new.html +1 -1
  265. package/app/.next/server/app/dashboard/providers/new.rsc +6 -6
  266. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  267. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  268. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  269. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  270. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  271. package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
  272. package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  273. package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
  274. package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  275. package/app/.next/server/app/dashboard/providers.html +1 -1
  276. package/app/.next/server/app/dashboard/providers.rsc +6 -6
  277. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  278. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  279. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  280. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  281. package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
  282. package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  283. package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
  284. package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  285. package/app/.next/server/app/dashboard/proxy-pools.html +1 -1
  286. package/app/.next/server/app/dashboard/proxy-pools.rsc +6 -6
  287. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  288. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  289. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  290. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  291. package/app/.next/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
  292. package/app/.next/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  293. package/app/.next/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +4 -4
  294. package/app/.next/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  295. package/app/.next/server/app/dashboard/quota.html +2 -2
  296. package/app/.next/server/app/dashboard/quota.rsc +7 -7
  297. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  298. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  299. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  300. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  301. package/app/.next/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
  302. package/app/.next/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  303. package/app/.next/server/app/dashboard/quota.segments/_index.segment.rsc +4 -4
  304. package/app/.next/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  305. package/app/.next/server/app/dashboard/settings/pricing/page.js +2 -2
  306. package/app/.next/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  307. package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  308. package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
  309. package/app/.next/server/app/dashboard/settings/pricing.rsc +4 -4
  310. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  311. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  312. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
  313. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  314. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  315. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  316. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  317. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  318. package/app/.next/server/app/dashboard/translator.html +1 -1
  319. package/app/.next/server/app/dashboard/translator.rsc +6 -6
  320. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  321. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  322. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  323. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  324. package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
  325. package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  326. package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
  327. package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  328. package/app/.next/server/app/dashboard/usage.html +1 -1
  329. package/app/.next/server/app/dashboard/usage.rsc +6 -6
  330. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  331. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  332. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  333. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  334. package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
  335. package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  336. package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
  337. package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  338. package/app/.next/server/app/dashboard.html +1 -1
  339. package/app/.next/server/app/dashboard.rsc +6 -6
  340. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  341. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  342. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  343. package/app/.next/server/app/dashboard.segments/_full.segment.rsc +6 -6
  344. package/app/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
  345. package/app/.next/server/app/dashboard.segments/_index.segment.rsc +4 -4
  346. package/app/.next/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  347. package/app/.next/server/app/favicon.ico/route.js +1 -1
  348. package/app/.next/server/app/index.html +1 -1
  349. package/app/.next/server/app/index.rsc +4 -4
  350. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  351. package/app/.next/server/app/index.segments/_full.segment.rsc +4 -4
  352. package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
  353. package/app/.next/server/app/index.segments/_index.segment.rsc +4 -4
  354. package/app/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  355. package/app/.next/server/app/landing/page.js +2 -2
  356. package/app/.next/server/app/landing/page.js.nft.json +1 -1
  357. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  358. package/app/.next/server/app/landing.html +1 -1
  359. package/app/.next/server/app/landing.rsc +5 -5
  360. package/app/.next/server/app/landing.segments/_full.segment.rsc +5 -5
  361. package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
  362. package/app/.next/server/app/landing.segments/_index.segment.rsc +4 -4
  363. package/app/.next/server/app/landing.segments/_tree.segment.rsc +2 -2
  364. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +2 -2
  365. package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
  366. package/app/.next/server/app/login/page.js +2 -2
  367. package/app/.next/server/app/login/page.js.nft.json +1 -1
  368. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  369. package/app/.next/server/app/login.html +1 -1
  370. package/app/.next/server/app/login.rsc +5 -5
  371. package/app/.next/server/app/login.segments/_full.segment.rsc +5 -5
  372. package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
  373. package/app/.next/server/app/login.segments/_index.segment.rsc +4 -4
  374. package/app/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  375. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  376. package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
  377. package/app/.next/server/app/manifest.webmanifest/route.js +2 -2
  378. package/app/.next/server/app/page.js +2 -2
  379. package/app/.next/server/app/page.js.nft.json +1 -1
  380. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  381. package/app/.next/server/app-paths-manifest.json +7 -5
  382. package/app/.next/server/chunks/126.js +2 -2
  383. package/app/.next/server/chunks/1389.js +1 -1
  384. package/app/.next/server/chunks/1574.js +1 -1
  385. package/app/.next/server/chunks/1578.js +1 -1
  386. package/app/.next/server/chunks/2049.js +1 -1
  387. package/app/.next/server/chunks/253.js +1 -0
  388. package/app/.next/server/chunks/2947.js +1 -1
  389. package/app/.next/server/chunks/3030.js +1 -0
  390. package/app/.next/server/chunks/3159.js +1 -1
  391. package/app/.next/server/chunks/3774.js +3 -3
  392. package/app/.next/server/chunks/450.js +2 -2
  393. package/app/.next/server/chunks/4627.js +1 -1
  394. package/app/.next/server/chunks/5053.js +64 -0
  395. package/app/.next/server/chunks/5445.js +1 -1
  396. package/app/.next/server/chunks/6379.js +1 -1
  397. package/app/.next/server/chunks/7243.js +1 -1
  398. package/app/.next/server/chunks/7770.js +1 -1
  399. package/app/.next/server/chunks/7973.js +1 -1
  400. package/app/.next/server/chunks/8035.js +1 -0
  401. package/app/.next/server/chunks/8202.js +12 -7
  402. package/app/.next/server/chunks/8480.js +2 -2
  403. package/app/.next/server/chunks/8513.js +5 -0
  404. package/app/.next/server/chunks/9737.js +1 -1
  405. package/app/.next/server/middleware-build-manifest.js +1 -1
  406. package/app/.next/server/middleware.js +3 -3
  407. package/app/.next/server/pages/404.html +1 -1
  408. package/app/.next/server/pages/500.html +1 -1
  409. package/app/.next/static/AXp1L9TYXuSG-iT0TKIs2/_buildManifest.js +1 -0
  410. package/app/.next/static/chunks/1237-ce7cc27452c0087f.js +18 -0
  411. package/app/.next/static/chunks/4156-218a86687f643d2f.js +7 -0
  412. package/app/.next/static/chunks/505-9410e3e98f835f3f.js +1 -0
  413. package/app/.next/static/chunks/6795-3ddcc1d55c65c001.js +64 -0
  414. package/app/.next/static/chunks/8035-122ffa9582ac6dd4.js +3 -0
  415. package/app/.next/static/chunks/app/(dashboard)/dashboard/basic-chat/{page-2c8c481b0fc0bb1b.js → page-cd02fe7b10810144.js} +1 -1
  416. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/{page-f2206753c04da01d.js → page-1266463402c761f6.js} +1 -1
  417. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/{page-8556b646c8002338.js → page-fcb74a9294486c9a.js} +1 -1
  418. package/app/.next/static/chunks/app/(dashboard)/dashboard/console-log/{page-2ffb4689f161ca33.js → page-af58c67a4e409aad.js} +1 -1
  419. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-79a243ddf837f243.js +1 -0
  420. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/{page-841102262fc5fd15.js → page-446fb4958f931207.js} +6 -6
  421. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/{page-ebe4ae25d01f731a.js → page-7b7477044f123993.js} +1 -1
  422. package/app/.next/static/chunks/app/(dashboard)/dashboard/mitm/{page-21fffa0f231796e9.js → page-7ab6931e5032e32c.js} +1 -1
  423. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-87aa0d715eec8054.js +1 -0
  424. package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/{page-354de24a25e94694.js → page-8d500331b6e10813.js} +1 -1
  425. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-202eec8d33670a47.js +1 -0
  426. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/{page-426e797917337fd8.js → page-510b667ad2defe52.js} +1 -1
  427. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-d8aedd72c61ec172.js +1 -0
  428. package/app/.next/static/chunks/app/(dashboard)/dashboard/proxy-pools/{page-34d04900ddd6932a.js → page-b675d50ce82d5577.js} +1 -1
  429. package/app/.next/static/chunks/app/(dashboard)/dashboard/quota/{page-eec871b45fffd58e.js → page-2485ee7c89798a7b.js} +1 -1
  430. package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/page-f87aca0195ce41ad.js +1 -0
  431. package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/{page-1308b9d445962823.js → page-538a897db589c145.js} +1 -1
  432. package/app/.next/static/chunks/app/(dashboard)/layout-380c1f4327a2a3bc.js +1 -0
  433. package/app/.next/static/chunks/app/_global-error/page-f301b776dca4839c.js +1 -0
  434. package/app/.next/static/chunks/app/api/auth/login/route-f301b776dca4839c.js +1 -0
  435. package/app/.next/static/chunks/app/api/auth/logout/route-f301b776dca4839c.js +1 -0
  436. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-f301b776dca4839c.js +1 -0
  437. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-f301b776dca4839c.js +1 -0
  438. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-f301b776dca4839c.js +1 -0
  439. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-f301b776dca4839c.js +1 -0
  440. package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-f301b776dca4839c.js +1 -0
  441. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-f301b776dca4839c.js +1 -0
  442. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-f301b776dca4839c.js +1 -0
  443. package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-f301b776dca4839c.js +1 -0
  444. package/app/.next/static/chunks/app/api/cloud/auth/route-f301b776dca4839c.js +1 -0
  445. package/app/.next/static/chunks/app/api/cloud/credentials/update/route-f301b776dca4839c.js +1 -0
  446. package/app/.next/static/chunks/app/api/cloud/model/resolve/route-f301b776dca4839c.js +1 -0
  447. package/app/.next/static/chunks/app/api/cloud/models/alias/route-f301b776dca4839c.js +1 -0
  448. package/app/.next/static/chunks/app/api/combos/[id]/route-f301b776dca4839c.js +1 -0
  449. package/app/.next/static/chunks/app/api/combos/route-f301b776dca4839c.js +1 -0
  450. package/app/.next/static/chunks/app/api/health/route-f301b776dca4839c.js +1 -0
  451. package/app/.next/static/chunks/app/api/init/route-f301b776dca4839c.js +1 -0
  452. package/app/.next/static/chunks/app/api/keys/[id]/route-f301b776dca4839c.js +1 -0
  453. package/app/.next/static/chunks/app/api/keys/route-f301b776dca4839c.js +1 -0
  454. package/app/.next/static/chunks/app/api/locale/route-f301b776dca4839c.js +1 -0
  455. package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-f301b776dca4839c.js +1 -0
  456. package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-f301b776dca4839c.js +1 -0
  457. package/app/.next/static/chunks/app/api/models/alias/route-f301b776dca4839c.js +1 -0
  458. package/app/.next/static/chunks/app/api/models/availability/route-f301b776dca4839c.js +1 -0
  459. package/app/.next/static/chunks/app/api/models/custom/route-f301b776dca4839c.js +1 -0
  460. package/app/.next/static/chunks/app/api/models/route-f301b776dca4839c.js +1 -0
  461. package/app/.next/static/chunks/app/api/models/test/route-f301b776dca4839c.js +1 -0
  462. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-f301b776dca4839c.js +1 -0
  463. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-f301b776dca4839c.js +1 -0
  464. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-f301b776dca4839c.js +1 -0
  465. package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-f301b776dca4839c.js +1 -0
  466. package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-f301b776dca4839c.js +1 -0
  467. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-f301b776dca4839c.js +1 -0
  468. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-f301b776dca4839c.js +1 -0
  469. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-f301b776dca4839c.js +1 -0
  470. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-f301b776dca4839c.js +1 -0
  471. package/app/.next/static/chunks/app/api/pricing/route-f301b776dca4839c.js +1 -0
  472. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-f301b776dca4839c.js +1 -0
  473. package/app/.next/static/chunks/app/api/provider-nodes/route-f301b776dca4839c.js +1 -0
  474. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-f301b776dca4839c.js +1 -0
  475. package/app/.next/static/chunks/app/api/providers/[id]/models/route-f301b776dca4839c.js +1 -0
  476. package/app/.next/static/chunks/app/api/providers/[id]/route-f301b776dca4839c.js +1 -0
  477. package/app/.next/static/chunks/app/api/providers/[id]/test/route-f301b776dca4839c.js +1 -0
  478. package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-f301b776dca4839c.js +1 -0
  479. package/app/.next/static/chunks/app/api/providers/client/route-f301b776dca4839c.js +1 -0
  480. package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-f301b776dca4839c.js +1 -0
  481. package/app/.next/static/chunks/app/api/providers/route-f301b776dca4839c.js +1 -0
  482. package/app/.next/static/chunks/app/api/providers/suggested-models/route-f301b776dca4839c.js +1 -0
  483. package/app/.next/static/chunks/app/api/providers/test-batch/route-f301b776dca4839c.js +1 -0
  484. package/app/.next/static/chunks/app/api/providers/validate/route-f301b776dca4839c.js +1 -0
  485. package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-f301b776dca4839c.js +1 -0
  486. package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-f301b776dca4839c.js +1 -0
  487. package/app/.next/static/chunks/app/api/proxy-pools/route-f301b776dca4839c.js +1 -0
  488. package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-f301b776dca4839c.js +1 -0
  489. package/app/.next/static/chunks/app/api/settings/database/route-f301b776dca4839c.js +1 -0
  490. package/app/.next/static/chunks/app/api/settings/proxy-test/route-f301b776dca4839c.js +1 -0
  491. package/app/.next/static/chunks/app/api/settings/require-login/route-f301b776dca4839c.js +1 -0
  492. package/app/.next/static/chunks/app/api/settings/route-f301b776dca4839c.js +1 -0
  493. package/app/.next/static/chunks/app/api/shutdown/route-f301b776dca4839c.js +1 -0
  494. package/app/.next/static/chunks/app/api/tags/route-f301b776dca4839c.js +1 -0
  495. package/app/.next/static/chunks/app/api/translator/console-logs/route-f301b776dca4839c.js +1 -0
  496. package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-f301b776dca4839c.js +1 -0
  497. package/app/.next/static/chunks/app/api/translator/load/route-f301b776dca4839c.js +1 -0
  498. package/app/.next/static/chunks/app/api/translator/save/route-f301b776dca4839c.js +1 -0
  499. package/app/.next/static/chunks/app/api/translator/send/route-f301b776dca4839c.js +1 -0
  500. package/app/.next/static/chunks/app/api/translator/translate/route-f301b776dca4839c.js +1 -0
  501. package/app/.next/static/chunks/app/api/tunnel/disable/route-f301b776dca4839c.js +1 -0
  502. package/app/.next/static/chunks/app/api/tunnel/enable/route-f301b776dca4839c.js +1 -0
  503. package/app/.next/static/chunks/app/api/tunnel/status/route-f301b776dca4839c.js +1 -0
  504. package/app/.next/static/chunks/app/api/tunnel/tailscale-check/route-f301b776dca4839c.js +1 -0
  505. package/app/.next/static/chunks/app/api/tunnel/tailscale-disable/route-f301b776dca4839c.js +1 -0
  506. package/app/.next/static/chunks/app/api/tunnel/tailscale-enable/route-f301b776dca4839c.js +1 -0
  507. package/app/.next/static/chunks/app/api/tunnel/tailscale-install/route-f301b776dca4839c.js +1 -0
  508. package/app/.next/static/chunks/app/api/tunnel/tailscale-login/route-f301b776dca4839c.js +1 -0
  509. package/app/.next/static/chunks/app/api/tunnel/tailscale-start-daemon/route-f301b776dca4839c.js +1 -0
  510. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-f301b776dca4839c.js +1 -0
  511. package/app/.next/static/chunks/app/api/usage/chart/route-f301b776dca4839c.js +1 -0
  512. package/app/.next/static/chunks/app/api/usage/history/route-f301b776dca4839c.js +1 -0
  513. package/app/.next/static/chunks/app/api/usage/providers/route-f301b776dca4839c.js +1 -0
  514. package/app/.next/static/chunks/app/api/usage/request-details/route-f301b776dca4839c.js +1 -0
  515. package/app/.next/static/chunks/app/api/usage/request-logs/route-f301b776dca4839c.js +1 -0
  516. package/app/.next/static/chunks/app/api/usage/stats/route-f301b776dca4839c.js +1 -0
  517. package/app/.next/static/chunks/app/api/usage/stream/route-f301b776dca4839c.js +1 -0
  518. package/app/.next/static/chunks/app/api/v1/api/chat/route-f301b776dca4839c.js +1 -0
  519. package/app/.next/static/chunks/app/api/v1/audio/speech/route-f301b776dca4839c.js +1 -0
  520. package/app/.next/static/chunks/app/api/v1/chat/completions/route-f301b776dca4839c.js +1 -0
  521. package/app/.next/static/chunks/app/api/v1/embeddings/route-f301b776dca4839c.js +1 -0
  522. package/app/.next/static/chunks/app/api/v1/images/generations/route-f301b776dca4839c.js +1 -0
  523. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-f301b776dca4839c.js +1 -0
  524. package/app/.next/static/chunks/app/api/v1/messages/route-f301b776dca4839c.js +1 -0
  525. package/app/.next/static/chunks/app/api/v1/models/route-f301b776dca4839c.js +1 -0
  526. package/app/.next/static/chunks/app/api/v1/responses/compact/route-f301b776dca4839c.js +1 -0
  527. package/app/.next/static/chunks/app/api/v1/responses/route-f301b776dca4839c.js +1 -0
  528. package/app/.next/static/chunks/app/api/v1/route-f301b776dca4839c.js +1 -0
  529. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-f301b776dca4839c.js +1 -0
  530. package/app/.next/static/chunks/app/api/v1beta/models/route-f301b776dca4839c.js +1 -0
  531. package/app/.next/static/chunks/app/api/version/route-f301b776dca4839c.js +1 -0
  532. package/app/.next/static/chunks/app/landing/{page-c004b08edc4d4637.js → page-297a1c9230927b6f.js} +1 -1
  533. package/app/.next/static/chunks/app/login/{page-c0d5d5c52ff7317f.js → page-2424ce8673ecf5cb.js} +1 -1
  534. package/app/.next/static/chunks/app/manifest.webmanifest/route-f301b776dca4839c.js +1 -0
  535. package/app/.next/static/chunks/app/page-f301b776dca4839c.js +1 -0
  536. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-f301b776dca4839c.js +1 -0
  537. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-f301b776dca4839c.js +1 -0
  538. package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-f301b776dca4839c.js +1 -0
  539. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-f301b776dca4839c.js +1 -0
  540. package/app/.next/static/css/58f44142c32a3776.css +1 -0
  541. package/app/package.json +2 -1
  542. package/app/public/providers/opencode-go.png +0 -0
  543. package/app/src/mitm/server.js +27 -6
  544. package/cli.js +95 -39
  545. package/package.json +1 -1
  546. package/app/.next/server/chunks/149.js +0 -1
  547. package/app/.next/server/chunks/242.js +0 -1
  548. package/app/.next/server/chunks/514.js +0 -5
  549. package/app/.next/server/chunks/6502.js +0 -1
  550. package/app/.next/server/chunks/8354.js +0 -1
  551. package/app/.next/static/VI5XrgPaPsUOg-Uel9spT/_buildManifest.js +0 -1
  552. package/app/.next/static/chunks/1237-06ab8ceb0847165d.js +0 -18
  553. package/app/.next/static/chunks/2599-ef3aca3d4fdaa96d.js +0 -1
  554. package/app/.next/static/chunks/4156-e1e79523d2efa7c1.js +0 -7
  555. package/app/.next/static/chunks/505-7a55d180affbd4d3.js +0 -1
  556. package/app/.next/static/chunks/8035-0bbf141cee7024b0.js +0 -3
  557. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-0b58256fd5ccd8b7.js +0 -1
  558. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-9533adb8cd2aa0ac.js +0 -1
  559. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-77e9b2d982a01e23.js +0 -1
  560. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-09e7d6bd4d08202c.js +0 -1
  561. package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/page-82c184348fd5c917.js +0 -1
  562. package/app/.next/static/chunks/app/(dashboard)/layout-757a35dbb4539aad.js +0 -1
  563. package/app/.next/static/chunks/app/_global-error/page-786efea7f9ddd575.js +0 -1
  564. package/app/.next/static/chunks/app/api/auth/login/route-786efea7f9ddd575.js +0 -1
  565. package/app/.next/static/chunks/app/api/auth/logout/route-786efea7f9ddd575.js +0 -1
  566. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-786efea7f9ddd575.js +0 -1
  567. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-786efea7f9ddd575.js +0 -1
  568. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-786efea7f9ddd575.js +0 -1
  569. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-786efea7f9ddd575.js +0 -1
  570. package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-786efea7f9ddd575.js +0 -1
  571. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-786efea7f9ddd575.js +0 -1
  572. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-786efea7f9ddd575.js +0 -1
  573. package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-786efea7f9ddd575.js +0 -1
  574. package/app/.next/static/chunks/app/api/cloud/auth/route-786efea7f9ddd575.js +0 -1
  575. package/app/.next/static/chunks/app/api/cloud/credentials/update/route-786efea7f9ddd575.js +0 -1
  576. package/app/.next/static/chunks/app/api/cloud/model/resolve/route-786efea7f9ddd575.js +0 -1
  577. package/app/.next/static/chunks/app/api/cloud/models/alias/route-786efea7f9ddd575.js +0 -1
  578. package/app/.next/static/chunks/app/api/combos/[id]/route-786efea7f9ddd575.js +0 -1
  579. package/app/.next/static/chunks/app/api/combos/route-786efea7f9ddd575.js +0 -1
  580. package/app/.next/static/chunks/app/api/health/route-786efea7f9ddd575.js +0 -1
  581. package/app/.next/static/chunks/app/api/init/route-786efea7f9ddd575.js +0 -1
  582. package/app/.next/static/chunks/app/api/keys/[id]/route-786efea7f9ddd575.js +0 -1
  583. package/app/.next/static/chunks/app/api/keys/route-786efea7f9ddd575.js +0 -1
  584. package/app/.next/static/chunks/app/api/locale/route-786efea7f9ddd575.js +0 -1
  585. package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-786efea7f9ddd575.js +0 -1
  586. package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-786efea7f9ddd575.js +0 -1
  587. package/app/.next/static/chunks/app/api/models/alias/route-786efea7f9ddd575.js +0 -1
  588. package/app/.next/static/chunks/app/api/models/availability/route-786efea7f9ddd575.js +0 -1
  589. package/app/.next/static/chunks/app/api/models/route-786efea7f9ddd575.js +0 -1
  590. package/app/.next/static/chunks/app/api/models/test/route-786efea7f9ddd575.js +0 -1
  591. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-786efea7f9ddd575.js +0 -1
  592. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-786efea7f9ddd575.js +0 -1
  593. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-786efea7f9ddd575.js +0 -1
  594. package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-786efea7f9ddd575.js +0 -1
  595. package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-786efea7f9ddd575.js +0 -1
  596. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-786efea7f9ddd575.js +0 -1
  597. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-786efea7f9ddd575.js +0 -1
  598. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-786efea7f9ddd575.js +0 -1
  599. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-786efea7f9ddd575.js +0 -1
  600. package/app/.next/static/chunks/app/api/pricing/route-786efea7f9ddd575.js +0 -1
  601. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-786efea7f9ddd575.js +0 -1
  602. package/app/.next/static/chunks/app/api/provider-nodes/route-786efea7f9ddd575.js +0 -1
  603. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-786efea7f9ddd575.js +0 -1
  604. package/app/.next/static/chunks/app/api/providers/[id]/models/route-786efea7f9ddd575.js +0 -1
  605. package/app/.next/static/chunks/app/api/providers/[id]/route-786efea7f9ddd575.js +0 -1
  606. package/app/.next/static/chunks/app/api/providers/[id]/test/route-786efea7f9ddd575.js +0 -1
  607. package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-786efea7f9ddd575.js +0 -1
  608. package/app/.next/static/chunks/app/api/providers/client/route-786efea7f9ddd575.js +0 -1
  609. package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-786efea7f9ddd575.js +0 -1
  610. package/app/.next/static/chunks/app/api/providers/route-786efea7f9ddd575.js +0 -1
  611. package/app/.next/static/chunks/app/api/providers/suggested-models/route-786efea7f9ddd575.js +0 -1
  612. package/app/.next/static/chunks/app/api/providers/test-batch/route-786efea7f9ddd575.js +0 -1
  613. package/app/.next/static/chunks/app/api/providers/validate/route-786efea7f9ddd575.js +0 -1
  614. package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-786efea7f9ddd575.js +0 -1
  615. package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-786efea7f9ddd575.js +0 -1
  616. package/app/.next/static/chunks/app/api/proxy-pools/route-786efea7f9ddd575.js +0 -1
  617. package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-786efea7f9ddd575.js +0 -1
  618. package/app/.next/static/chunks/app/api/settings/database/route-786efea7f9ddd575.js +0 -1
  619. package/app/.next/static/chunks/app/api/settings/proxy-test/route-786efea7f9ddd575.js +0 -1
  620. package/app/.next/static/chunks/app/api/settings/require-login/route-786efea7f9ddd575.js +0 -1
  621. package/app/.next/static/chunks/app/api/settings/route-786efea7f9ddd575.js +0 -1
  622. package/app/.next/static/chunks/app/api/shutdown/route-786efea7f9ddd575.js +0 -1
  623. package/app/.next/static/chunks/app/api/tags/route-786efea7f9ddd575.js +0 -1
  624. package/app/.next/static/chunks/app/api/translator/console-logs/route-786efea7f9ddd575.js +0 -1
  625. package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-786efea7f9ddd575.js +0 -1
  626. package/app/.next/static/chunks/app/api/translator/load/route-786efea7f9ddd575.js +0 -1
  627. package/app/.next/static/chunks/app/api/translator/save/route-786efea7f9ddd575.js +0 -1
  628. package/app/.next/static/chunks/app/api/translator/send/route-786efea7f9ddd575.js +0 -1
  629. package/app/.next/static/chunks/app/api/translator/translate/route-786efea7f9ddd575.js +0 -1
  630. package/app/.next/static/chunks/app/api/tunnel/disable/route-786efea7f9ddd575.js +0 -1
  631. package/app/.next/static/chunks/app/api/tunnel/enable/route-786efea7f9ddd575.js +0 -1
  632. package/app/.next/static/chunks/app/api/tunnel/status/route-786efea7f9ddd575.js +0 -1
  633. package/app/.next/static/chunks/app/api/tunnel/tailscale-check/route-786efea7f9ddd575.js +0 -1
  634. package/app/.next/static/chunks/app/api/tunnel/tailscale-disable/route-786efea7f9ddd575.js +0 -1
  635. package/app/.next/static/chunks/app/api/tunnel/tailscale-enable/route-786efea7f9ddd575.js +0 -1
  636. package/app/.next/static/chunks/app/api/tunnel/tailscale-install/route-786efea7f9ddd575.js +0 -1
  637. package/app/.next/static/chunks/app/api/tunnel/tailscale-login/route-786efea7f9ddd575.js +0 -1
  638. package/app/.next/static/chunks/app/api/tunnel/tailscale-start-daemon/route-786efea7f9ddd575.js +0 -1
  639. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-786efea7f9ddd575.js +0 -1
  640. package/app/.next/static/chunks/app/api/usage/chart/route-786efea7f9ddd575.js +0 -1
  641. package/app/.next/static/chunks/app/api/usage/history/route-786efea7f9ddd575.js +0 -1
  642. package/app/.next/static/chunks/app/api/usage/providers/route-786efea7f9ddd575.js +0 -1
  643. package/app/.next/static/chunks/app/api/usage/request-details/route-786efea7f9ddd575.js +0 -1
  644. package/app/.next/static/chunks/app/api/usage/request-logs/route-786efea7f9ddd575.js +0 -1
  645. package/app/.next/static/chunks/app/api/usage/stats/route-786efea7f9ddd575.js +0 -1
  646. package/app/.next/static/chunks/app/api/usage/stream/route-786efea7f9ddd575.js +0 -1
  647. package/app/.next/static/chunks/app/api/v1/api/chat/route-786efea7f9ddd575.js +0 -1
  648. package/app/.next/static/chunks/app/api/v1/audio/speech/route-786efea7f9ddd575.js +0 -1
  649. package/app/.next/static/chunks/app/api/v1/chat/completions/route-786efea7f9ddd575.js +0 -1
  650. package/app/.next/static/chunks/app/api/v1/embeddings/route-786efea7f9ddd575.js +0 -1
  651. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-786efea7f9ddd575.js +0 -1
  652. package/app/.next/static/chunks/app/api/v1/messages/route-786efea7f9ddd575.js +0 -1
  653. package/app/.next/static/chunks/app/api/v1/models/route-786efea7f9ddd575.js +0 -1
  654. package/app/.next/static/chunks/app/api/v1/responses/compact/route-786efea7f9ddd575.js +0 -1
  655. package/app/.next/static/chunks/app/api/v1/responses/route-786efea7f9ddd575.js +0 -1
  656. package/app/.next/static/chunks/app/api/v1/route-786efea7f9ddd575.js +0 -1
  657. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-786efea7f9ddd575.js +0 -1
  658. package/app/.next/static/chunks/app/api/v1beta/models/route-786efea7f9ddd575.js +0 -1
  659. package/app/.next/static/chunks/app/api/version/route-786efea7f9ddd575.js +0 -1
  660. package/app/.next/static/chunks/app/manifest.webmanifest/route-786efea7f9ddd575.js +0 -1
  661. package/app/.next/static/chunks/app/page-786efea7f9ddd575.js +0 -1
  662. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-786efea7f9ddd575.js +0 -1
  663. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-786efea7f9ddd575.js +0 -1
  664. package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-786efea7f9ddd575.js +0 -1
  665. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-786efea7f9ddd575.js +0 -1
  666. package/app/.next/static/css/357a3570ee0fa8c1.css +0 -1
  667. /package/app/.next/static/{VI5XrgPaPsUOg-Uel9spT → AXp1L9TYXuSG-iT0TKIs2}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ "use strict";exports.id=253,exports.ids=[253],exports.modules={34278:(a,b,c)=>{c.d(b,{t:()=>d});class d{adapter;data;constructor(a,b){!function(a,b){if(void 0===a)throw Error("lowdb: missing adapter");if(void 0===b)throw Error("lowdb: missing default data")}(a,b),this.adapter=a,this.data=b}async read(){let a=await this.adapter.read();a&&(this.data=a)}async write(){this.data&&await this.adapter.write(this.data)}async update(a){a(this.data),await this.write()}}},39006:a=>{a.exports={rE:"0.3.97"}},47978:(a,b,c)=>{c.d(b,{DI:()=>e,Hp:()=>g,LT:()=>f,MZ:()=>o,Nl:()=>r,Nu:()=>k,OV:()=>d,Tx:()=>l,WN:()=>m,YT:()=>j,ZL:()=>i,f7:()=>q,hF:()=>h,lB:()=>p,t:()=>n}),c(21820);let d={clientId:"9d1c250a-e61b-44d9-88ed-5944d1962f5e",authorizeUrl:"https://claude.ai/oauth/authorize",tokenUrl:"https://api.anthropic.com/v1/oauth/token",scopes:["org:create_api_key","user:profile","user:inference"],codeChallengeMethod:"S256"},e={clientId:"app_EMoamEEZ73f0CkXaXp7hrann",authorizeUrl:"https://auth.openai.com/oauth/authorize",tokenUrl:"https://auth.openai.com/oauth/token",scope:"openid profile email offline_access",codeChallengeMethod:"S256",extraParams:{id_token_add_organizations:"true",codex_cli_simplified_flow:"true",originator:"codex_cli_rs"}},f={clientId:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecret:"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",authorizeUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",userInfoUrl:"https://www.googleapis.com/oauth2/v1/userinfo",scopes:["https://www.googleapis.com/auth/cloud-platform","https://www.googleapis.com/auth/userinfo.email","https://www.googleapis.com/auth/userinfo.profile"]},g={clientId:"f0304373b74a44d2b584a3fb70ca9e56",deviceCodeUrl:"https://qwen.ai/api/v1/oauth2/device/code",tokenUrl:"https://qwen.ai/api/v1/oauth2/token",scope:"openid profile email model.completion",codeChallengeMethod:"S256"},h={apiBaseUrl:"https://api2.qoder.sh",deviceTokenUrl:"https://api2.qoder.sh/api/v1/deviceToken/poll",deviceRefreshUrl:"https://api2.qoder.sh/api/v1/deviceToken/refresh",refreshUrl:"https://api2.qoder.sh/api/v3/user/refresh_token",userInfoUrl:"https://api2.qoder.sh/api/v1/userinfo",statusUrl:"https://api2.qoder.sh/api/v3/user/status",loginUrl:"https://qoder.com/login"},i={clientId:"10009311001",clientSecret:"4Z3YjXycVsQvyGF1etiNlIBB4RsqSDtW",authorizeUrl:"https://iflow.cn/oauth",tokenUrl:"https://iflow.cn/oauth/token",userInfoUrl:"https://iflow.cn/api/oauth/getUserInfo",extraParams:{loginMethod:"phone",type:"phone"}},j={clientId:"1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",clientSecret:"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",authorizeUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",userInfoUrl:"https://www.googleapis.com/oauth2/v1/userinfo",scopes:["https://www.googleapis.com/auth/cloud-platform","https://www.googleapis.com/auth/userinfo.email","https://www.googleapis.com/auth/userinfo.profile","https://www.googleapis.com/auth/cclog","https://www.googleapis.com/auth/experimentsandconfigs"],apiEndpoint:"https://cloudcode-pa.googleapis.com",apiVersion:"v1internal",loadCodeAssistEndpoint:"https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",onboardUserEndpoint:"https://cloudcode-pa.googleapis.com/v1internal:onboardUser",loadCodeAssistUserAgent:"google-api-nodejs-client/9.15.1",loadCodeAssistApiClient:"google-cloud-sdk vscode_cloudshelleditor/0.1",loadCodeAssistClientMetadata:JSON.stringify({ideType:"IDE_UNSPECIFIED",platform:"PLATFORM_UNSPECIFIED",pluginType:"GEMINI"})},k={clientId:"Iv1.b507a08c87ecfe98",deviceCodeUrl:"https://github.com/login/device/code",tokenUrl:"https://github.com/login/oauth/access_token",userInfoUrl:"https://api.github.com/user",scopes:"read:user",apiVersion:"2022-11-28",copilotTokenUrl:"https://api.github.com/copilot_internal/v2/token",userAgent:"GitHubCopilotChat/0.26.7",editorVersion:"vscode/1.85.0",editorPluginVersion:"copilot-chat/0.26.7"},l={ssoOidcEndpoint:"https://oidc.us-east-1.amazonaws.com",registerClientUrl:"https://oidc.us-east-1.amazonaws.com/client/register",deviceAuthUrl:"https://oidc.us-east-1.amazonaws.com/device_authorization",tokenUrl:"https://oidc.us-east-1.amazonaws.com/token",startUrl:"https://view.awsapps.com/start",clientName:"kiro-oauth-client",clientType:"public",scopes:["codewhisperer:completions","codewhisperer:analysis","codewhisperer:conversations"],grantTypes:["urn:ietf:params:oauth:grant-type:device_code","refresh_token"],issuerUrl:"https://identitycenter.amazonaws.com/ssoins-722374e8c3c8e6c6",socialAuthEndpoint:"https://prod.us-east-1.auth.desktop.kiro.dev",socialLoginUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/login",socialTokenUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/oauth/token",socialRefreshUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",authMethods:["builder-id","idc","google","github","import"]},m={apiEndpoint:"https://api2.cursor.sh",chatEndpoint:"/aiserver.v1.ChatService/StreamUnifiedChatWithTools",modelsEndpoint:"/aiserver.v1.AiService/GetDefaultModelNudgeData",api3Endpoint:"https://api3.cursor.sh",agentEndpoint:"https://agent.api5.cursor.sh",agentNonPrivacyEndpoint:"https://agentn.api5.cursor.sh",clientVersion:"3.1.0",clientType:"ide",tokenStoragePaths:{linux:"~/.config/Cursor/User/globalStorage/state.vscdb",macos:"/Users/<user>/Library/Application Support/Cursor/User/globalStorage/state.vscdb",windows:"%APPDATA%\\Cursor\\User\\globalStorage\\state.vscdb"},dbKeys:{accessToken:"cursorAuth/accessToken",machineId:"storage.serviceMachineId"}},n={clientId:process.env.KIMI_CODING_OAUTH_CLIENT_ID||"17e5f671-d194-4dfb-9706-5516cb48c098",deviceCodeUrl:"https://auth.kimi.com/api/oauth/device_authorization",tokenUrl:"https://auth.kimi.com/api/oauth/token"},o={apiBaseUrl:"https://api.kilo.ai",initiateUrl:"https://api.kilo.ai/api/device-auth/codes",pollUrlBase:"https://api.kilo.ai/api/device-auth/codes"},p={appBaseUrl:"https://app.cline.bot",apiBaseUrl:"https://api.cline.bot",authorizeUrl:"https://api.cline.bot/api/v1/auth/authorize",tokenExchangeUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh"},q={defaultBaseUrl:"https://gitlab.com",authorizeUrlPath:"/oauth/authorize",tokenUrlPath:"/oauth/token",userInfoUrlPath:"/api/v4/user",scope:"api read_user",codeChallengeMethod:"S256"},r={baseUrl:"https://copilot.tencent.com",stateUrl:"https://copilot.tencent.com/v2/plugin/auth/state",tokenUrl:"https://copilot.tencent.com/v2/plugin/auth/token",refreshUrl:"https://copilot.tencent.com/v2/plugin/auth/token/refresh",userAgent:"CLI/2.63.2 CodeBuddy/2.63.2",platform:"CLI",pollInterval:5e3}},56066:(a,b,c)=>{c.d(b,{C:()=>f});var d=c(16288);function e(a){return null==a?"":String(a).trim()}async function f({proxyUrl:a,testUrl:b,timeoutMs:c}={}){let g,h=e(a);if(!h)return{ok:!1,status:400,error:"proxyUrl is required"};let i=e(b)||"https://google.com/",j=Number(c),k=Number.isFinite(j)&&j>0?Math.min(j,3e4):8e3;try{try{g=new d.ProxyAgent({uri:h})}catch(a){return{ok:!1,status:400,error:`Invalid proxy URL: ${a?.message||String(a)}`}}let a=new AbortController,b=Date.now(),c=setTimeout(()=>a.abort(),k);try{let c=await (0,d.hd)(i,{method:"HEAD",dispatcher:g,signal:a.signal,headers:{"User-Agent":"9Router"}});return{ok:c.ok,status:c.status,statusText:c.statusText,url:i,elapsedMs:Date.now()-b}}catch(b){let a=b?.name==="AbortError"?"Proxy test timed out":function(a){if(!a)return"Unknown error";let b=a?.message||String(a),c=a?.cause?.code||a?.code,d=a?.cause?.message;return d&&d!==b?c?`${b}: ${d} (${c})`:`${b}: ${d}`:c&&!b.includes(c)?`${b} (${c})`:b}(b);return{ok:!1,status:500,error:a}}finally{clearTimeout(c)}}finally{try{await g?.close?.()}catch{}}}},71679:(a,b,c)=>{c.d(b,{F:()=>r});var d=c(37770),e=c(93250),f=c(56066),g=c(50021),h=c(29737),i=c(62276),j=c(47978),k=c(98774);let l={claude:{checkExpiry:!0,refreshable:!0},codex:{url:"https://chatgpt.com/backend-api/codex/responses",method:"POST",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{"Content-Type":"application/json",originator:"codex-cli","User-Agent":"codex-cli/1.0.18 (macOS; arm64)"},body:JSON.stringify({model:"gpt-5.3-codex",input:[],stream:!1,store:!1}),acceptStatuses:[400],refreshable:!0},"gemini-cli":{url:"https://www.googleapis.com/oauth2/v1/userinfo?alt=json",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!0},antigravity:{url:"https://www.googleapis.com/oauth2/v1/userinfo?alt=json",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!0},github:{url:"https://api.github.com/user",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{"User-Agent":"9Router",Accept:"application/vnd.github+json"}},iflow:{buildUrl:a=>`https://iflow.cn/api/oauth/getUserInfo?accessToken=${encodeURIComponent(a)}`,method:"GET",noAuth:!0},qwen:{checkExpiry:!0,refreshable:!0},kiro:{checkExpiry:!0,refreshable:!0},"kimi-coding":{checkExpiry:!0,refreshable:!1},cursor:{tokenExists:!0},kilocode:{url:`${j.MZ.apiBaseUrl}/api/profile`,method:"GET",authHeader:"Authorization",authPrefix:"Bearer "},cline:{refreshable:!0},gitlab:{url:"https://gitlab.com/api/v4/user",method:"GET",authHeader:"Authorization",authPrefix:"Bearer "},codebuddy:{tokenExists:!0}};async function m(a){return await fetch("https://api.cline.bot/api/v1/users/me",{method:"GET",headers:(0,k.w$)(a,{Accept:"application/json"})})}async function n(a){let b=a.provider,c=a.refreshToken;if(!c)return null;try{if("gemini-cli"===b||"antigravity"===b){let a="gemini-cli"===b?j.LT:j.YT,d=await fetch("https://oauth2.googleapis.com/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:a.clientId,client_secret:a.clientSecret,grant_type:"refresh_token",refresh_token:c})});if(!d.ok)return null;let e=await d.json();return{accessToken:e.access_token,expiresIn:e.expires_in,refreshToken:e.refresh_token||c}}if("codex"===b){let a=await fetch(j.DI.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"refresh_token",client_id:j.DI.clientId,refresh_token:c})});if(!a.ok)return null;let b=await a.json();return{accessToken:b.access_token,expiresIn:b.expires_in,refreshToken:b.refresh_token||c}}if("claude"===b){let a=await fetch(j.OV.tokenUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({grant_type:"refresh_token",refresh_token:c,client_id:j.OV.clientId})});if(!a.ok)return null;let b=await a.json();return{accessToken:b.access_token,expiresIn:b.expires_in,refreshToken:b.refresh_token||c}}if("kiro"===b){let b=a.providerSpecificData||{},d=b.clientId||a.clientId,e=b.clientSecret||a.clientSecret,f=b.region||a.region;if(d&&e){let a=`https://oidc.${f||"us-east-1"}.amazonaws.com/token`,b=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientId:d,clientSecret:e,refreshToken:c,grantType:"refresh_token"})});if(!b.ok)return null;let g=await b.json();return{accessToken:g.accessToken,expiresIn:g.expiresIn||3600,refreshToken:g.refreshToken||c}}let g=await fetch(j.Tx.socialRefreshUrl,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":"kiro-cli/1.0.0"},body:JSON.stringify({refreshToken:c})});if(!g.ok)return null;let h=await g.json();return{accessToken:h.accessToken,expiresIn:h.expiresIn||3600,refreshToken:h.refreshToken||c}}if("qwen"===b){let a=await fetch(j.Hp.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:c,client_id:j.Hp.clientId})});if(!a.ok)return null;let b=await a.json();return{accessToken:b.access_token,expiresIn:b.expires_in,refreshToken:b.refresh_token||c}}if("cline"===b){let a=await fetch(j.lB.refreshUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({refreshToken:c,grantType:"refresh_token",clientType:"extension"})});if(!a.ok)return null;let b=await a.json(),d=b?.data||b,e=d?.expiresAt?Math.max(1,Math.floor((new Date(d.expiresAt).getTime()-Date.now())/1e3)):3600;return{accessToken:d?.accessToken,expiresIn:e,refreshToken:d?.refreshToken||c}}return null}catch(a){return console.log(`Error refreshing ${b} token:`,a.message),null}}async function o(a,b=null){var c;let d=l[a.provider];if(!d)return{valid:!1,error:"Provider test not supported",refreshed:!1};if(!a.accessToken)return{valid:!1,error:"No access token",refreshed:!1};if(d.tokenExists)return{valid:!0,error:null,refreshed:!1,newTokens:null};let e=a.accessToken,f=!1,g=null,h=!!(c=a).expiresAt&&new Date(c.expiresAt).getTime()<=Date.now()+3e5;if(d.refreshable&&h&&a.refreshToken){let b=await n(a);if(!b)return{valid:!1,error:"Token expired and refresh failed",refreshed:!1};e=b.accessToken,f=!0,g=b}if(d.checkExpiry)return f?{valid:!0,error:null,refreshed:f,newTokens:g}:h?{valid:!1,error:"Token expired",refreshed:!1}:{valid:!0,error:null,refreshed:!1,newTokens:null};if("cline"===a.provider){let b=async a=>{let b=await m(a);return b.ok?{valid:!0,error:null,refreshed:f,newTokens:g}:401===b.status?{valid:!1,error:"Token invalid or revoked",refreshed:f}:403===b.status?{valid:!1,error:"Access denied",refreshed:f}:{valid:!1,error:`API returned ${b.status}`,refreshed:f}},c=await b(e);if(c.valid||"Token invalid or revoked"!==c.error||!a.refreshToken)return c;let d=await n(a);return d?.accessToken?(f=!0,g=d,e=d.accessToken,await b(e)):{valid:!1,error:"Token invalid or revoked",refreshed:!1}}try{let c=d.buildUrl?d.buildUrl(e):d.url,h=d.noAuth?{...d.extraHeaders}:{[d.authHeader]:`${d.authPrefix}${e}`,...d.extraHeaders},i={method:d.method,headers:h};d.body&&(i.body=d.body);let j=await p(c,i,b);if(j.ok||d.acceptStatuses&&d.acceptStatuses.includes(j.status))return{valid:!0,error:null,refreshed:f,newTokens:g};if(401===j.status&&d.refreshable&&!f&&a.refreshToken){let e=await n(a);if(e){let a=d.buildUrl?d.buildUrl(e.accessToken):c,f=d.noAuth?{...d.extraHeaders}:{[d.authHeader]:`${d.authPrefix}${e.accessToken}`,...d.extraHeaders},g={method:d.method,headers:f};d.body&&(g.body=d.body);let h=await p(a,g,b);if(h.ok||d.acceptStatuses&&d.acceptStatuses.includes(h.status))return{valid:!0,error:null,refreshed:!0,newTokens:e}}return{valid:!1,error:"Token invalid or revoked",refreshed:!1}}if(401===j.status)return{valid:!1,error:"Token invalid or revoked",refreshed:f};if(403===j.status)return{valid:!1,error:"Access denied",refreshed:f};return{valid:!1,error:`API returned ${j.status}`,refreshed:f}}catch(a){return{valid:!1,error:a.message,refreshed:f}}}async function p(a,b={},d=null){if(d?.vercelRelayUrl){let{proxyAwareFetch:e}=await c.e(7973).then(c.bind(c,37973));return e(a,b,{vercelRelayUrl:d.vercelRelayUrl})}if(!d?.connectionProxyEnabled||!d?.connectionProxyUrl)return fetch(a,b);let{proxyAwareFetch:e}=await c.e(7973).then(c.bind(c,37973));return e(a,b,{connectionProxyEnabled:!0,connectionProxyUrl:d.connectionProxyUrl,connectionNoProxy:d.connectionNoProxy||""})}async function q(a,b=null){if((0,g.mq)(a.provider)){let c=a.providerSpecificData?.baseUrl;if(!c)return{valid:!1,error:"Missing base URL"};try{let d=await p(`${c.replace(/\/$/,"")}/models`,{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:d.ok,error:d.ok?null:"Invalid API key or base URL"}}catch(a){return{valid:!1,error:a.message}}}if((0,g.gb)(a.provider)){let c=a.providerSpecificData?.baseUrl;if(!c)return{valid:!1,error:"Missing base URL"};try{(c=c.replace(/\/$/,"")).endsWith("/messages")&&(c=c.slice(0,-9));let d=await p(`${c}/models`,{headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01",Authorization:`Bearer ${a.apiKey}`}},b);return{valid:d.ok,error:d.ok?null:"Invalid API key or base URL"}}catch(a){return{valid:!1,error:a.message}}}try{switch(a.provider){case"openai":{let c=await p("https://api.openai.com/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"anthropic":{let c=await p("https://api.anthropic.com/v1/messages",{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"claude-3-haiku-20240307",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"gemini":{let c=await p(`https://generativelanguage.googleapis.com/v1/models?key=${a.apiKey}`,{},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"openrouter":{let c=await p("https://openrouter.ai/api/v1/auth/key",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"glm":{let c=await p("https://api.z.ai/api/anthropic/v1/messages",{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"glm-4.7",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"glm-cn":{let c=await p("https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:"glm-4.7",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"minimax":case"minimax-cn":{let c=await p({minimax:"https://api.minimax.io/anthropic/v1/messages","minimax-cn":"https://api.minimaxi.com/anthropic/v1/messages"}[a.provider],{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"minimax-m2",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"kimi":{let c=await p("https://api.kimi.com/coding/v1/messages",{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"kimi-latest",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"alicode":case"alicode-intl":{let c="alicode-intl"===a.provider?"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions":"https://coding.dashscope.aliyuncs.com/v1/chat/completions",d=await p(c,{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:(0,h.fZ)(a.provider),max_tokens:1,messages:[{role:"user",content:"test"}]})},b),e=401!==d.status&&403!==d.status;return{valid:e,error:e?null:"Invalid API key"}}case"deepseek":{let c=await p("https://api.deepseek.com/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"groq":{let c=await p("https://api.groq.com/openai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"mistral":{let c=await p("https://api.mistral.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"xai":{let c=await p("https://api.x.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"nvidia":{let c=await p("https://integrate.api.nvidia.com/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"perplexity":{let c=await p("https://api.perplexity.ai/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"together":{let c=await p("https://api.together.xyz/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"fireworks":{let c=await p("https://api.fireworks.ai/inference/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"cerebras":{let c=await p("https://api.cerebras.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"cohere":{let c=await p("https://api.cohere.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"nebius":{let c=await p("https://api.studio.nebius.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"siliconflow":{let c=await p("https://api.siliconflow.cn/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"hyperbolic":{let c=await p("https://api.hyperbolic.xyz/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"ollama":{let b=await fetch("https://ollama.com/api/tags",{headers:{Authorization:`Bearer ${a.apiKey}`}});return{valid:b.ok,error:b.ok?null:"Invalid API key"}}case"ollama-local":{let b=(0,i.Ak)(a),c=await fetch(`${b}/api/tags`);return{valid:c.ok,error:c.ok?null:`Ollama not reachable at ${b}`}}case"deepgram":{let c=await p("https://api.deepgram.com/v1/projects",{headers:{Authorization:`Token ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"assemblyai":{let c=await p("https://api.assemblyai.com/v1/account",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"nanobanana":{let c=await p("https://api.nanobananaapi.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"chutes":{let c=await p("https://llm.chutes.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"grok-web":{let c=a.apiKey.startsWith("sso=")?a.apiKey.slice(4):a.apiKey,d=a=>Array.from(crypto.getRandomValues(new Uint8Array(a)),a=>a.toString(16).padStart(2,"0")).join(""),e=Buffer.from("e:TypeError: Cannot read properties of null (reading 'children')").toString("base64"),f=await p("https://grok.com/rest/app-chat/conversations/new",{method:"POST",headers:{Accept:"*/*","Content-Type":"application/json",Cookie:`sso=${c}`,Origin:"https://grok.com",Referer:"https://grok.com/","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36","x-statsig-id":e,"x-xai-request-id":crypto.randomUUID(),traceparent:`00-${d(16)}-${d(8)}-00`},body:JSON.stringify({temporary:!0,modelName:"grok-4",message:"ping",fileAttachments:[],imageAttachments:[],disableSearch:!1,enableImageGeneration:!1,sendFinalMetadata:!0})},b),g=401!==f.status&&403!==f.status;return{valid:g,error:g?null:"Invalid SSO cookie"}}case"perplexity-web":{let c=a.apiKey;c.startsWith("__Secure-next-auth.session-token=")&&(c=c.slice(33));let d=await p("https://www.perplexity.ai/api/auth/session",{method:"GET",headers:{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36",Cookie:`__Secure-next-auth.session-token=${c}`}},b);if(!d.ok)return{valid:!1,error:"Invalid session cookie"};let e=await d.json().catch(()=>null),f=!!(e&&e.user);return{valid:f,error:f?null:"Session expired — re-paste cookie"}}default:return{valid:!1,error:"Provider test not supported"}}}catch(a){return{valid:!1,error:a.message}}}async function r(a){let b,c=await (0,d.Mc)(a);if(!c)return{valid:!1,error:"Connection not found",latencyMs:0,testedAt:new Date().toISOString()};let g=await (0,e.B)(c.providerSpecificData||{});if(g.connectionProxyEnabled&&g.connectionProxyUrl&&!g.vercelRelayUrl){let b=await (0,f.C)({proxyUrl:g.connectionProxyUrl});if(!b.ok){let c=b.error||`Proxy test failed with status ${b.status}`;return await (0,d.rj)(a,{testStatus:"error",lastError:c,lastErrorAt:new Date().toISOString()}),{valid:!1,error:c,latencyMs:0,testedAt:new Date().toISOString()}}}let h=Date.now();b="apikey"===c.authType||"cookie"===c.authType?await q(c,g):await o(c,g);let i=Date.now()-h,j={testStatus:b.valid?"active":"error",lastError:b.valid?null:b.error,lastErrorAt:b.valid?null:new Date().toISOString()};return b.refreshed&&b.newTokens&&(j.accessToken=b.newTokens.accessToken,b.newTokens.refreshToken&&(j.refreshToken=b.newTokens.refreshToken),b.newTokens.expiresIn&&(j.expiresAt=new Date(Date.now()+1e3*b.newTokens.expiresIn).toISOString())),await (0,d.rj)(a,j),{valid:b.valid,error:b.error,latencyMs:i,testedAt:new Date().toISOString()}}},73865:(a,b,c)=>{c.d(b,{Pv:()=>k}),c(73024);var d=c(51455),e=c(76760),f=c(73136);async function g(a,b,c){for(let d=0;d<b;d++)try{return await a()}catch(a){if(d<b-1)await new Promise(a=>setTimeout(a,c));else throw a}}class h{#a;#b;#c=!1;#d=null;#e=null;#f=null;#g=null;#h(a){return this.#g=a,this.#f||=new Promise((a,b)=>{this.#e=[a,b]}),new Promise((a,b)=>{this.#f?.then(a).catch(b)})}async #i(a){this.#c=!0;try{await (0,d.writeFile)(this.#b,a,"utf-8"),await g(async()=>{await (0,d.rename)(this.#b,this.#a)},10,100),this.#d?.[0]()}catch(a){throw a instanceof Error&&this.#d?.[1](a),a}finally{if(this.#c=!1,this.#d=this.#e,this.#e=this.#f=null,null!==this.#g){let a=this.#g;this.#g=null,await this.write(a)}}}constructor(a){this.#a=a,this.#b=function(a){let b=a instanceof URL?(0,f.fileURLToPath)(a):a.toString();return(0,e.join)((0,e.dirname)(b),`.${(0,e.basename)(b)}.tmp`)}(a)}async write(a){return this.#c?this.#h(a):this.#i(a)}}class i{#a;#j;constructor(a){this.#a=a,this.#j=new h(a)}async read(){let a;try{a=await (0,d.readFile)(this.#a,"utf-8")}catch(a){if("ENOENT"===a.code)return null;throw a}return a}write(a){return this.#j.write(a)}}class j{#k;#l;#m;constructor(a,{parse:b,stringify:c}){this.#k=new i(a),this.#l=b,this.#m=c}async read(){let a=await this.#k.read();return null===a?null:this.#l(a)}write(a){return this.#k.write(this.#m(a))}}class k extends j{constructor(a){super(a,{parse:JSON.parse,stringify:a=>JSON.stringify(a,null,2)})}}},81372:(a,b,c)=>{c.d(b,{n:()=>i});var d=c(33873),e=c.n(d),f=c(21820),g=c.n(f);let h="9router",i=process.env.DATA_DIR?process.env.DATA_DIR:"win32"===process.platform?e().join(process.env.APPDATA||e().join(g().homedir(),"AppData","Roaming"),h):e().join(g().homedir(),`.${h}`)},89442:(a,b,c)=>{c.d(b,{Fh:()=>d.getProviderNodes,L9:()=>d.L9,Mc:()=>d.Mc,OM:()=>d.OM,P:()=>d.getProviderConnections,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Yd:()=>d.Yd,ZO:()=>d.ZO,c:()=>d.c,ek:()=>d.ek,fK:()=>d.fK,fv:()=>d.fv,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,iE:()=>d.iE,o5:()=>d.o5,op:()=>d.op,rj:()=>d.rj,uL:()=>d.uL,ui:()=>d.ui,uv:()=>d.uv});var d=c(37770)},93250:(a,b,c)=>{c.d(b,{B:()=>f});var d=c(89442);function e(a){return null==a?"":String(a).trim()}async function f(a={}){let b=e(a?.proxyPoolId),c="__none__"===b?"":b,g=function(a={}){let b=a?.connectionProxyEnabled===!0;return{connectionProxyEnabled:b,connectionProxyUrl:e(a?.connectionProxyUrl),connectionNoProxy:e(a?.connectionNoProxy)}}(a);if(c){let a=await (0,d.hr)(c),b=e(a?.proxyUrl),f=e(a?.noProxy);if(a&&!0===a.isActive&&b)return"vercel"===a.type?{source:"vercel",proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:f,strictProxy:!0===a.strictProxy,vercelRelayUrl:b}:{source:"pool",proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!0,connectionProxyUrl:b,connectionNoProxy:f,strictProxy:!0===a.strictProxy}}return g.connectionProxyEnabled&&g.connectionProxyUrl?{source:"legacy",proxyPoolId:c||null,proxyPool:null,...g}:{source:"none",proxyPoolId:c||null,proxyPool:null,...g}}},98774:(a,b,c)=>{c.d(b,{w$:()=>e});let d=c(39006).rE||"0.0.0";function e(a,b={}){let c,f=(c=function(a){if("string"!=typeof a)return"";let b=a.trim();return b?b.startsWith("workos:")?b:`workos:${b}`:""}(a))?`Bearer ${c}`:"",g={"HTTP-Referer":"https://cline.bot","X-Title":"Cline","User-Agent":`9Router/${d}`,"X-PLATFORM":process.platform||"unknown","X-PLATFORM-VERSION":process.version||"unknown","X-CLIENT-TYPE":"9router","X-CLIENT-VERSION":d,"X-CORE-VERSION":d,"X-IS-MULTIROOT":"false",...b};return f&&(g.Authorization=f),g}}};
@@ -1 +1 @@
1
- "use strict";exports.id=2947,exports.ids=[2947],exports.modules={23016:(a,b,c)=>{c.d(b,{C8:()=>j,Uc:()=>f,cI:()=>i,eo:()=>g,gx:()=>d,sB:()=>h,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={maxAttempts:2,delayMs:2e3},i={429:0,503:1,502:1},j=["Please write a 5-10 word title for the following conversation:"]},29807:(a,b,c)=>{c.d(b,{A1:()=>g,lR:()=>i,wO:()=>h,yj:()=>e,zL:()=>f});var d=c(73714);function e(a,b){let c;return new Response(JSON.stringify((c=d.LY[a]||(a>=500?{type:"server_error",code:"internal_server_error"}:{type:"invalid_request_error",code:""}),{error:{message:b||d.O[a]||"An error occurred",type:c.type,code:c.code}})),{status:a,headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}async function f(a){let b="";try{let c=await a.text();try{let a=JSON.parse(c);b=a.error?.message||a.message||a.error||c}catch{b=c}}catch{b=`Upstream error: ${a.status}`}let c=("string"==typeof b?b:JSON.stringify(b))||d.O[a.status]||`Upstream error: ${a.status}`;return{statusCode:a.status,message:c}}function g(a,b){return{success:!1,status:a,error:b,response:e(a,b)}}function h(a,b,c,d){let e=Math.max(Math.ceil((new Date(c).getTime()-Date.now())/1e3),1);return new Response(JSON.stringify({error:{message:`${b} (${d})`}}),{status:a,headers:{"Content-Type":"application/json","Retry-After":String(e)}})}function i(a,b,c,d){let e=d||a.code||"FETCH_FAILED",f=a.message||"Unknown error";return`[${e}]: ${f}`}},72947:(a,b,c)=>{c.d(b,{Nq:()=>E,Op:()=>G,PE:()=>K});var d=c(29807),e=c(23016),f=c(79646),g=c(28354),h=c(79748),i=c(21820),j=c(33873);let k=(0,g.promisify)(f.execFile);function l(a,b,c){let 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(d,{headers:{"Content-Type":`audio/${b}`,"Content-Length":String(d.length),"Access-Control-Allow-Origin":"*"}})}}let m={token:null,tokenTime:0},n={token:null,tokenTime:0},o="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 p(){let a=Date.now();if(m.token&&a-m.tokenTime<66e4)return m.token;let b=await fetch("https://translate.google.com/",{headers:{"User-Agent":o}});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 m.token={"f.sid":d,bl:e},m.tokenTime=a,m.token}let q=0;async function r(a,b){let c=await p(),d=a.replace(/[@^*()\\/\-_+=><"'\u201c\u201d\u3010\u3011]/g," ").replaceAll(", ",". "),e="jQ1olc",f=1e5*++q+Math.floor(1e3+9e3*Math.random()),g=new URLSearchParams({rpcids:e,"f.sid":c["f.sid"],bl:c.bl,hl:b,"soc-app":1,"soc-platform":1,"soc-device":1,_reqid:f,rt:"c"}),h=[d,b,null,"undefined",[0]],i=new URLSearchParams;i.append("f.req",JSON.stringify([[[e,JSON.stringify(h),null,"generic"]]]));let j=await fetch(`https://translate.google.com/_/TranslateWebserverUi/data/batchexecute?${g}`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Referer:"https://translate.google.com/"},body:i.toString()});if(!j.ok)throw Error(`Google TTS failed: ${j.status}`);let k=JSON.parse(JSON.parse((await j.text()).split("\n")[3])[0][2])[0];if(!k||k.length<100)throw Error("Google TTS returned empty audio");return k}async function s(){let a=Date.now();if(n.token&&a-n.tokenTime<3e5)return n.token;let b=await fetch("https://www.bing.com/translator",{headers:{"User-Agent":o,"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 n.token={key:d[1],token:d[2].replace(/"/g,""),cookie:c},n.tokenTime=a,n.token}async function t(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>`,g=new URLSearchParams;return g.append("ssml",f),g.append("token",c.token),g.append("key",c.key),fetch("https://www.bing.com/tfettts?isVertical=1&&IG=1&IID=translator.5023&SFX=1",{method:"POST",body:g.toString(),headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"*/*",Origin:"https://www.bing.com",Referer:"https://www.bing.com/translator","User-Agent":o,...c.cookie?{Cookie:c.cookie}:{}}})}async function u(a,b){let c=await s(),d=await t(a,b,c);if((429===d.status||403===d.status)&&(n.token=null,n.tokenTime=0,c=await s(),d=await t(a,b,c)),!d.ok){let a=await d.text().catch(()=>"");throw Error(`Bing TTS failed: ${d.status}${a?" - "+a:""}`)}let e=await d.arrayBuffer();if(e.byteLength<1024)throw Error("Bing TTS returned empty audio");return Buffer.from(e).toString("base64")}let v=null;async function w(){let{stdout:a}=await k("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 x(){let{stdout:a}=await k("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 y(){if(v)return v;try{let a="win32"===process.platform?await x():await w();return v=a,a}catch{return[]}}async function z(a,b){let c=await (0,h.mkdtemp)((0,j.join)((0,i.tmpdir)(),"tts-")),d=(0,j.join)(c,"out.aiff"),e=(0,j.join)(c,"out.mp3");try{let c=b?["-v",b,"-o",d,a]:["-o",d,a];return await k("say",c),await k("ffmpeg",["-y","-i",d,"-codec:a","libmp3lame","-qscale:a","4",e]),(await (0,h.readFile)(e)).toString("base64")}finally{await (0,h.rm)(c,{recursive:!0,force:!0})}}let A=null,B=0;async function C(){let a=Date.now();if(A&&a-B<864e5)return A;let b=await fetch("https://speech.platform.bing.com/consumer/speech/synthesize/readaloud/voices/list?trustedclienttoken=6A5AA1D4EAFF4E9FB37E23D68491D6F4",{headers:{"User-Agent":o}});if(!b.ok)throw Error(`Edge TTS voices fetch failed: ${b.status}`);let c=await b.json();return A=c,B=a,c}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}async function F(a,b,c,d="eleven_flash_v2_5"){let e=await fetch(`https://api.elevenlabs.io/v1/text-to-speech/${b}`,{method:"POST",headers:{"xi-api-key":c,"Content-Type":"application/json"},body:JSON.stringify({text:a,model_id:d,voice_settings:{stability:.5,similarity_boost:.75}})});if(!e.ok){let a=await e.json().catch(()=>({}));throw Error(a?.detail?.message||`ElevenLabs TTS failed: ${e.status}`)}let f=await e.arrayBuffer();if(f.byteLength<1024)throw Error("ElevenLabs TTS returned empty audio");return Buffer.from(f).toString("base64")}let G={"edge-tts":C,"local-device":y,elevenlabs:E};async function H({model:a,input:b,credentials:c,responseFormat:f="mp3"}){if(!c?.apiKey)return(0,d.A1)(e.gx.UNAUTHORIZED,"No OpenRouter API key configured");let g="openai/gpt-4o-mini-tts",h="alloy";if(a&&a.includes("/")){let b=a.lastIndexOf("/"),c=a.slice(b+1),d=a.slice(0,b);d.includes("/")?(g=d,h=c):h=a}else a&&(h=a);let i=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:g,modalities:["text","audio"],audio:{voice:h,format:"wav"},stream:!0,messages:[{role:"user",content:b}]})});if(!i.ok){let a=await i.json().catch(()=>({}));return(0,d.A1)(i.status,a?.error?.message||`OpenRouter TTS failed: ${i.status}`)}let j=[],k=i.body.getReader(),m=new TextDecoder,n="";for(;;){let{done:a,value:b}=await k.read();if(a)break;let c=(n+=m.decode(b,{stream:!0})).split("\n");for(let a of(n=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&&j.push(c)}catch{}}return 0===j.length?(0,d.A1)(e.gx.BAD_GATEWAY,"OpenRouter TTS returned no audio data"):l(j.join(""),"wav",f)}async function I({model:a,input:b,credentials:c,responseFormat:f="mp3"}){if(!c?.apiKey)return(0,d.A1)(e.gx.UNAUTHORIZED,"No OpenAI API key configured");let g="gpt-4o-mini-tts",h="alloy";if(a&&a.includes("/")){let b=a.split("/");2===b.length&&([g,h]=b)}else a&&(h=a);let i=(c.baseUrl||"https://api.openai.com").replace(/\/+$/,""),j=await fetch(`${i}/v1/audio/speech`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${c.apiKey}`},body:JSON.stringify({model:g,voice:h,input:b})});if(!j.ok){let a=await j.json().catch(()=>({}));return(0,d.A1)(j.status,a?.error?.message||`OpenAI TTS failed: ${j.status}`)}let k=await j.arrayBuffer();return l(Buffer.from(k).toString("base64"),"mp3",f)}let J={"google-tts":{synthesize:async(a,b)=>({base64:await r(a,b||"en"),format:"mp3"}),requiresCredentials:!1},"edge-tts":{synthesize:async(a,b)=>({base64:await u(a,b||"vi-VN-HoaiMyNeural"),format:"mp3"}),requiresCredentials:!1},"local-device":{synthesize:async(a,b)=>({base64:await z(a,b),format:"mp3"}),requiresCredentials:!1},elevenlabs:{synthesize:async(a,b,c)=>{if(!c?.apiKey)throw Error("ElevenLabs API key required");let d="eleven_flash_v2_5",e=b;return b&&b.includes("/")&&([d,e]=b.split("/")),{base64:await F(a,e,c.apiKey,d),format:"mp3"}},requiresCredentials:!0},openai:{synthesize:async(a,b,c,d)=>await I({model:b,input:a,credentials:c,responseFormat:d}),requiresCredentials:!0},openrouter:{synthesize:async(a,b,c,d)=>await H({model:b,input:a,credentials:c,responseFormat:d}),requiresCredentials:!0}};async function K({provider:a,model:b,input:c,credentials:f,responseFormat:g="mp3"}){if(!c?.trim())return(0,d.A1)(e.gx.BAD_REQUEST,"Missing required field: input");let h=J[a];if(!h)return(0,d.A1)(e.gx.BAD_REQUEST,`Provider '${a}' does not support TTS via this route.`);try{let a=await h.synthesize(c.trim(),b,f,g);if(void 0!==a.success)return a;return l(a.base64,a.format,g)}catch(a){return(0,d.A1)(e.gx.BAD_GATEWAY,a.message||"TTS synthesis failed")}}},73714:(a,b,c)=>{c.d(b,{EQ:()=>f,LY:()=>d,O:()=>e,t2:()=>h,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:1e3,max:18e4,maxLevel:15},g=3e4,h=[{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}]}};
1
+ "use strict";exports.id=2947,exports.ids=[2947],exports.modules={23016:(a,b,c)=>{c.d(b,{C8:()=>j,Uc:()=>f,cI:()=>i,eo:()=>g,gx:()=>d,sB:()=>h,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={maxAttempts:2,delayMs:2e3},i={429:0,503:1,502:1},j=["Please write a 5-10 word title for the following conversation:"]},29807:(a,b,c)=>{c.d(b,{A1:()=>g,lR:()=>i,wO:()=>h,yj:()=>e,zL:()=>f});var d=c(73714);function e(a,b){let c;return new Response(JSON.stringify((c=d.LY[a]||(a>=500?{type:"server_error",code:"internal_server_error"}:{type:"invalid_request_error",code:""}),{error:{message:b||d.O[a]||"An error occurred",type:c.type,code:c.code}})),{status:a,headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}async function f(a){let b="";try{let c=await a.text();try{let a=JSON.parse(c);b=a.error?.message||a.message||a.error||c}catch{b=c}}catch{b=`Upstream error: ${a.status}`}let c=("string"==typeof b?b:JSON.stringify(b))||d.O[a.status]||`Upstream error: ${a.status}`;return{statusCode:a.status,message:c}}function g(a,b){return{success:!1,status:a,error:b,response:e(a,b)}}function h(a,b,c,d){let e=Math.max(Math.ceil((new Date(c).getTime()-Date.now())/1e3),1);return new Response(JSON.stringify({error:{message:`${b} (${d})`}}),{status:a,headers:{"Content-Type":"application/json","Retry-After":String(e)}})}function i(a,b,c,d){let e=d||a.code||"FETCH_FAILED",f=a.message||"Unknown error",g=a.cause?.code,h=a.cause?.message,i=g||h?` (cause: ${[g,h].filter(Boolean).join(": ")})`:"";return`[${e}]: ${f}${i}`}},72947:(a,b,c)=>{c.d(b,{Nq:()=>E,Op:()=>G,PE:()=>K});var d=c(29807),e=c(23016),f=c(79646),g=c(28354),h=c(79748),i=c(21820),j=c(33873);let k=(0,g.promisify)(f.execFile);function l(a,b,c){let 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(d,{headers:{"Content-Type":`audio/${b}`,"Content-Length":String(d.length),"Access-Control-Allow-Origin":"*"}})}}let m={token:null,tokenTime:0},n={token:null,tokenTime:0},o="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 p(){let a=Date.now();if(m.token&&a-m.tokenTime<66e4)return m.token;let b=await fetch("https://translate.google.com/",{headers:{"User-Agent":o}});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 m.token={"f.sid":d,bl:e},m.tokenTime=a,m.token}let q=0;async function r(a,b){let c=await p(),d=a.replace(/[@^*()\\/\-_+=><"'\u201c\u201d\u3010\u3011]/g," ").replaceAll(", ",". "),e="jQ1olc",f=1e5*++q+Math.floor(1e3+9e3*Math.random()),g=new URLSearchParams({rpcids:e,"f.sid":c["f.sid"],bl:c.bl,hl:b,"soc-app":1,"soc-platform":1,"soc-device":1,_reqid:f,rt:"c"}),h=[d,b,null,"undefined",[0]],i=new URLSearchParams;i.append("f.req",JSON.stringify([[[e,JSON.stringify(h),null,"generic"]]]));let j=await fetch(`https://translate.google.com/_/TranslateWebserverUi/data/batchexecute?${g}`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Referer:"https://translate.google.com/"},body:i.toString()});if(!j.ok)throw Error(`Google TTS failed: ${j.status}`);let k=JSON.parse(JSON.parse((await j.text()).split("\n")[3])[0][2])[0];if(!k||k.length<100)throw Error("Google TTS returned empty audio");return k}async function s(){let a=Date.now();if(n.token&&a-n.tokenTime<3e5)return n.token;let b=await fetch("https://www.bing.com/translator",{headers:{"User-Agent":o,"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 n.token={key:d[1],token:d[2].replace(/"/g,""),cookie:c},n.tokenTime=a,n.token}async function t(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>`,g=new URLSearchParams;return g.append("ssml",f),g.append("token",c.token),g.append("key",c.key),fetch("https://www.bing.com/tfettts?isVertical=1&&IG=1&IID=translator.5023&SFX=1",{method:"POST",body:g.toString(),headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"*/*",Origin:"https://www.bing.com",Referer:"https://www.bing.com/translator","User-Agent":o,...c.cookie?{Cookie:c.cookie}:{}}})}async function u(a,b){let c=await s(),d=await t(a,b,c);if((429===d.status||403===d.status)&&(n.token=null,n.tokenTime=0,c=await s(),d=await t(a,b,c)),!d.ok){let a=await d.text().catch(()=>"");throw Error(`Bing TTS failed: ${d.status}${a?" - "+a:""}`)}let e=await d.arrayBuffer();if(e.byteLength<1024)throw Error("Bing TTS returned empty audio");return Buffer.from(e).toString("base64")}let v=null;async function w(){let{stdout:a}=await k("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 x(){let{stdout:a}=await k("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 y(){if(v)return v;try{let a="win32"===process.platform?await x():await w();return v=a,a}catch{return[]}}async function z(a,b){let c=await (0,h.mkdtemp)((0,j.join)((0,i.tmpdir)(),"tts-")),d=(0,j.join)(c,"out.aiff"),e=(0,j.join)(c,"out.mp3");try{let c=b?["-v",b,"-o",d,a]:["-o",d,a];return await k("say",c),await k("ffmpeg",["-y","-i",d,"-codec:a","libmp3lame","-qscale:a","4",e]),(await (0,h.readFile)(e)).toString("base64")}finally{await (0,h.rm)(c,{recursive:!0,force:!0})}}let A=null,B=0;async function C(){let a=Date.now();if(A&&a-B<864e5)return A;let b=await fetch("https://speech.platform.bing.com/consumer/speech/synthesize/readaloud/voices/list?trustedclienttoken=6A5AA1D4EAFF4E9FB37E23D68491D6F4",{headers:{"User-Agent":o}});if(!b.ok)throw Error(`Edge TTS voices fetch failed: ${b.status}`);let c=await b.json();return A=c,B=a,c}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}async function F(a,b,c,d="eleven_flash_v2_5"){let e=await fetch(`https://api.elevenlabs.io/v1/text-to-speech/${b}`,{method:"POST",headers:{"xi-api-key":c,"Content-Type":"application/json"},body:JSON.stringify({text:a,model_id:d,voice_settings:{stability:.5,similarity_boost:.75}})});if(!e.ok){let a=await e.json().catch(()=>({}));throw Error(a?.detail?.message||`ElevenLabs TTS failed: ${e.status}`)}let f=await e.arrayBuffer();if(f.byteLength<1024)throw Error("ElevenLabs TTS returned empty audio");return Buffer.from(f).toString("base64")}let G={"edge-tts":C,"local-device":y,elevenlabs:E};async function H({model:a,input:b,credentials:c,responseFormat:f="mp3"}){if(!c?.apiKey)return(0,d.A1)(e.gx.UNAUTHORIZED,"No OpenRouter API key configured");let g="openai/gpt-4o-mini-tts",h="alloy";if(a&&a.includes("/")){let b=a.lastIndexOf("/"),c=a.slice(b+1),d=a.slice(0,b);d.includes("/")?(g=d,h=c):h=a}else a&&(h=a);let i=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:g,modalities:["text","audio"],audio:{voice:h,format:"wav"},stream:!0,messages:[{role:"user",content:b}]})});if(!i.ok){let a=await i.json().catch(()=>({}));return(0,d.A1)(i.status,a?.error?.message||`OpenRouter TTS failed: ${i.status}`)}let j=[],k=i.body.getReader(),m=new TextDecoder,n="";for(;;){let{done:a,value:b}=await k.read();if(a)break;let c=(n+=m.decode(b,{stream:!0})).split("\n");for(let a of(n=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&&j.push(c)}catch{}}return 0===j.length?(0,d.A1)(e.gx.BAD_GATEWAY,"OpenRouter TTS returned no audio data"):l(j.join(""),"wav",f)}async function I({model:a,input:b,credentials:c,responseFormat:f="mp3"}){if(!c?.apiKey)return(0,d.A1)(e.gx.UNAUTHORIZED,"No OpenAI API key configured");let g="gpt-4o-mini-tts",h="alloy";if(a&&a.includes("/")){let b=a.split("/");2===b.length&&([g,h]=b)}else a&&(h=a);let i=(c.baseUrl||"https://api.openai.com").replace(/\/+$/,""),j=await fetch(`${i}/v1/audio/speech`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${c.apiKey}`},body:JSON.stringify({model:g,voice:h,input:b})});if(!j.ok){let a=await j.json().catch(()=>({}));return(0,d.A1)(j.status,a?.error?.message||`OpenAI TTS failed: ${j.status}`)}let k=await j.arrayBuffer();return l(Buffer.from(k).toString("base64"),"mp3",f)}let J={"google-tts":{synthesize:async(a,b)=>({base64:await r(a,b||"en"),format:"mp3"}),requiresCredentials:!1},"edge-tts":{synthesize:async(a,b)=>({base64:await u(a,b||"vi-VN-HoaiMyNeural"),format:"mp3"}),requiresCredentials:!1},"local-device":{synthesize:async(a,b)=>({base64:await z(a,b),format:"mp3"}),requiresCredentials:!1},elevenlabs:{synthesize:async(a,b,c)=>{if(!c?.apiKey)throw Error("ElevenLabs API key required");let d="eleven_flash_v2_5",e=b;return b&&b.includes("/")&&([d,e]=b.split("/")),{base64:await F(a,e,c.apiKey,d),format:"mp3"}},requiresCredentials:!0},openai:{synthesize:async(a,b,c,d)=>await I({model:b,input:a,credentials:c,responseFormat:d}),requiresCredentials:!0},openrouter:{synthesize:async(a,b,c,d)=>await H({model:b,input:a,credentials:c,responseFormat:d}),requiresCredentials:!0}};async function K({provider:a,model:b,input:c,credentials:f,responseFormat:g="mp3"}){if(!c?.trim())return(0,d.A1)(e.gx.BAD_REQUEST,"Missing required field: input");let h=J[a];if(!h)return(0,d.A1)(e.gx.BAD_REQUEST,`Provider '${a}' does not support TTS via this route.`);try{let a=await h.synthesize(c.trim(),b,f,g);if(void 0!==a.success)return a;return l(a.base64,a.format,g)}catch(a){return(0,d.A1)(e.gx.BAD_GATEWAY,a.message||"TTS synthesis failed")}}},73714:(a,b,c)=>{c.d(b,{EQ:()=>f,LY:()=>d,O:()=>e,t2:()=>h,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:1e3,max:24e4,maxLevel:15},g=3e4,h=[{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}]}};
@@ -0,0 +1 @@
1
+ exports.id=3030,exports.ids=[3030],exports.modules={932:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(92713).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/shared/components/KiroAuthModal.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/KiroAuthModal.js","default")},8114:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(92713).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/shared/components/Input.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/Input.js","default")},13377:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(92713).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/shared/components/KiroOAuthWrapper.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/KiroOAuthWrapper.js","default")},15044:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(92713).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/shared/components/OAuthModal.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/OAuthModal.js","default")},20535:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(92713).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/shared/components/ChangelogModal.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/ChangelogModal.js","default")},22252:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(92713).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/shared/components/Select.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/Select.js","default")},33335:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(92713).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/shared/components/ManualConfigModal.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/ManualConfigModal.js","default")},37218:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(92713).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/shared/components/ModelSelectModal.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/ModelSelectModal.js","default")},38868:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(92713).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/shared/components/Button.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/Button.js","default")},39623:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(92713).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/shared/components/EditConnectionModal.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/EditConnectionModal.js","default")},44846:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(92713).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/shared/components/Sidebar.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/Sidebar.js","default")},46127:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(92713).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/shared/components/ThemeToggle.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/ThemeToggle.js","default")},50258:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(92713).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/shared/components/IFlowCookieModal.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/IFlowCookieModal.js","default")},51283:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(92713).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/shared/components/CursorAuthModal.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/CursorAuthModal.js","default")},54792:(a,b,c)=>{Promise.resolve().then(c.bind(c,93447)),Promise.resolve().then(c.bind(c,92251)),Promise.resolve().then(c.bind(c,55590)),Promise.resolve().then(c.bind(c,75012)),Promise.resolve().then(c.bind(c,52149)),Promise.resolve().then(c.bind(c,37421)),Promise.resolve().then(c.bind(c,18649)),Promise.resolve().then(c.bind(c,4565)),Promise.resolve().then(c.bind(c,61094)),Promise.resolve().then(c.bind(c,46411)),Promise.resolve().then(c.bind(c,27452)),Promise.resolve().then(c.bind(c,14504)),Promise.resolve().then(c.bind(c,31288)),Promise.resolve().then(c.bind(c,82774)),Promise.resolve().then(c.bind(c,60835)),Promise.resolve().then(c.bind(c,33446)),Promise.resolve().then(c.bind(c,60115)),Promise.resolve().then(c.bind(c,53142)),Promise.resolve().then(c.bind(c,77410)),Promise.resolve().then(c.bind(c,11892)),Promise.resolve().then(c.bind(c,44037)),Promise.resolve().then(c.bind(c,33809)),Promise.resolve().then(c.bind(c,9904)),Promise.resolve().then(c.bind(c,85600)),Promise.resolve().then(c.bind(c,7274)),Promise.resolve().then(c.bind(c,15769)),Promise.resolve().then(c.bind(c,39907)),Promise.resolve().then(c.bind(c,62490)),Promise.resolve().then(c.bind(c,71708)),Promise.resolve().then(c.bind(c,7268)),Promise.resolve().then(c.bind(c,81101)),Promise.resolve().then(c.bind(c,37922)),Promise.resolve().then(c.bind(c,11747)),Promise.resolve().then(c.bind(c,33265))},59062:(a,b,c)=>{"use strict";c.d(b,{CardSkeleton:()=>h,PageLoading:()=>f,Skeleton:()=>g,Spinner:()=>e,default:()=>i});var d=c(92713);let e=(0,d.registerClientReference)(function(){throw Error("Attempted to call Spinner() from the server but Spinner is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/Loading.js","Spinner"),f=(0,d.registerClientReference)(function(){throw Error("Attempted to call PageLoading() from the server but PageLoading is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/Loading.js","PageLoading"),g=(0,d.registerClientReference)(function(){throw Error("Attempted to call Skeleton() from the server but Skeleton is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/Loading.js","Skeleton"),h=(0,d.registerClientReference)(function(){throw Error("Attempted to call CardSkeleton() from the server but CardSkeleton is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/Loading.js","CardSkeleton"),i=(0,d.registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/shared/components/Loading.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/Loading.js","default")},60864:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(92713).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/shared/components/layouts/DashboardLayout.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/layouts/DashboardLayout.js","default")},61357:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(92713).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/shared/components/SegmentedControl.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/SegmentedControl.js","default")},65024:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(92713).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/shared/components/KiroSocialOAuthModal.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/KiroSocialOAuthModal.js","default")},67944:(a,b,c)=>{Promise.resolve().then(c.bind(c,97617)),Promise.resolve().then(c.bind(c,69385)),Promise.resolve().then(c.bind(c,38868)),Promise.resolve().then(c.bind(c,82934)),Promise.resolve().then(c.bind(c,20535)),Promise.resolve().then(c.bind(c,51283)),Promise.resolve().then(c.bind(c,39623)),Promise.resolve().then(c.bind(c,80959)),Promise.resolve().then(c.bind(c,78472)),Promise.resolve().then(c.bind(c,90537)),Promise.resolve().then(c.bind(c,87030)),Promise.resolve().then(c.bind(c,50258)),Promise.resolve().then(c.bind(c,8114)),Promise.resolve().then(c.bind(c,932)),Promise.resolve().then(c.bind(c,13377)),Promise.resolve().then(c.bind(c,65024)),Promise.resolve().then(c.bind(c,86241)),Promise.resolve().then(c.bind(c,68480)),Promise.resolve().then(c.bind(c,60864)),Promise.resolve().then(c.bind(c,59062)),Promise.resolve().then(c.bind(c,33335)),Promise.resolve().then(c.bind(c,73723)),Promise.resolve().then(c.bind(c,37218)),Promise.resolve().then(c.bind(c,69270)),Promise.resolve().then(c.bind(c,15044)),Promise.resolve().then(c.bind(c,81567)),Promise.resolve().then(c.bind(c,61357)),Promise.resolve().then(c.bind(c,22252)),Promise.resolve().then(c.bind(c,44846)),Promise.resolve().then(c.bind(c,87050)),Promise.resolve().then(c.bind(c,46127)),Promise.resolve().then(c.bind(c,86672)),Promise.resolve().then(c.bind(c,78249)),Promise.resolve().then(c.bind(c,85634))},68480:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(92713).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/shared/components/layouts/AuthLayout.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/layouts/AuthLayout.js","default")},69270:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(92713).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/shared/components/NineRemoteButton.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/NineRemoteButton.js","default")},69385:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(92713).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/shared/components/Badge.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/Badge.js","default")},73723:(a,b,c)=>{"use strict";c.d(b,{ConfirmModal:()=>f,default:()=>e});var d=c(92713);let e=(0,d.registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/shared/components/Modal.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/Modal.js","default"),f=(0,d.registerClientReference)(function(){throw Error("Attempted to call ConfirmModal() from the server but ConfirmModal is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/Modal.js","ConfirmModal")},78249:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(92713).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/shared/components/Tooltip.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/Tooltip.js","default")},78472:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(92713).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/shared/components/GitLabAuthModal.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/GitLabAuthModal.js","default")},80959:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(92713).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/shared/components/Footer.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/Footer.js","default")},81567:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(92713).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/shared/components/RequestLogger.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/RequestLogger.js","default")},82934:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(92713).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/shared/components/Card.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/Card.js","default")},85634:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(92713).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/shared/components/UsageStats.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/UsageStats.js","default")},86241:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(92713).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/shared/components/LanguageSwitcher.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/LanguageSwitcher.js","default")},86672:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(92713).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/shared/components/Toggle.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/Toggle.js","default")},87030:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(92713).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/shared/components/HeaderMenu.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/HeaderMenu.js","default")},90537:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(92713).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/shared/components/Header.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/Header.js","default")},97617:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(92713).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/shared/components/Avatar.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/shared/components/Avatar.js","default")},97934:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f});var d=c(22037);c(38868),c(8114),c(22252),c(82934),c(73723),c(59062),c(97617),c(69385),c(86672),c(46127),c(87050),c(44846),c(90537),c(80959),c(15044),c(37218),c(33335),c(85634),c(86241),c(69270),c(87030),c(20535),c(81567),c(932),c(13377),c(65024),c(51283),c(50258),c(78472),c(39623),c(61357),c(78249);var e=c(60864);function f({children:a}){return(0,d.jsx)(e.default,{children:a})}c(68480)}};
@@ -1 +1 @@
1
- "use strict";exports.id=3159,exports.ids=[3159],exports.modules={37915:(a,b,c)=>{c.d(b,{d_:()=>g,mA:()=>f});var d=c(37770),e=c(53057);async function f(a){let b=(0,e.Xh)(a);if(!b.isAlias){if(b.provider===b.providerAlias){let a=(await (0,d.getProviderNodes)({type:"openai-compatible"})).find(a=>a.prefix===b.providerAlias);if(a)return{provider:a.id,model:b.model};let c=(await (0,d.getProviderNodes)({type:"anthropic-compatible"})).find(a=>a.prefix===b.providerAlias);if(c)return{provider:c.id,model:b.model}}return{provider:b.provider,model:b.model}}return await (0,d.Dj)(b.model)?{provider:null,model:b.model}:(0,e.js)(a,d.OM)}async function g(a){if(a.includes("/"))return null;let b=await (0,d.Dj)(a);return b&&b.models&&b.models.length>0?b.models:null}},55103:(a,b,c)=>{a.exports=c(44870)},84514:(a,b,c)=>{c.d(b,{Pt:()=>l,Tr:()=>m,c1:()=>j,kI:()=>n,vk:()=>k});var d=c(37770),e=c(93250),f=c(2449),g=c(50021),h=c(44575);let i=Promise.resolve();async function j(a,b=null,c=null){let k,l=b instanceof Set?b:b?new Set([b]):new Set,m=i;i=new Promise(a=>{k=a});try{let b;await m;let i=(0,g.rs)(a);if(g.IS[i]?.noAuth)return{id:"noauth",connectionName:"Public",isActive:!0,accessToken:"public"};let j=await (0,d.getProviderConnections)({provider:i,isActive:!0});if(h.debug("AUTH",`${a} | total connections: ${j.length}, excludeIds: ${l.size>0?[...l].join(","):"none"}, model: ${c||"any"}`),0===j.length)return h.warn("AUTH",`No credentials for ${a}`),null;let k=j.filter(a=>!(l.has(a.id)||(0,f.Bl)(a,c)));if(h.debug("AUTH",`${a} | available: ${k.length}/${j.length}`),j.forEach(a=>{let b=l.has(a.id),d=(0,f.Bl)(a,c);if(b||d){let e=(0,f.kJ)(a);h.debug("AUTH",` → ${a.id?.slice(0,8)} | ${b?"excluded":""} ${d?`modelLocked(${c}) until ${e}`:""}`)}}),0===k.length){let b=j.filter(a=>(0,f.Bl)(a,c)),d=b.map(a=>(0,f.kJ)(a)).filter(Boolean).sort()[0]||null;if(d){let e=b[0];return h.warn("AUTH",`${a} | all ${j.length} accounts locked for ${c||"all"} (${(0,f.Qo)(d)}) | lastError=${e?.lastError?.slice(0,50)}`),{allRateLimited:!0,retryAfter:d,retryAfterHuman:(0,f.Qo)(d),lastError:e?.lastError||null,lastErrorCode:e?.errorCode||null}}return h.warn("AUTH",`${a} | all ${j.length} accounts unavailable`),null}let n=await (0,d.getSettings)(),o=(n.providerStrategies||{})[i]||{},p=o.fallbackStrategy||n.fallbackStrategy||"fill-first";if("round-robin"===p){let a=o.stickyRoundRobinLimit||n.stickyRoundRobinLimit||3,c=[...k].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(b.lastUsedAt)-new Date(a.lastUsedAt):-1:1:(a.priority||999)-(b.priority||999))[0],e=c?.consecutiveUseCount||0;c&&c.lastUsedAt&&e<a?(b=c,await (0,d.rj)(b.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:(b.consecutiveUseCount||0)+1})):(b=[...k].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(a.lastUsedAt)-new Date(b.lastUsedAt):1:-1:(a.priority||999)-(b.priority||999))[0],await (0,d.rj)(b.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:1}))}else b=k[0];let q=await (0,e.B)(b.providerSpecificData||{});return{apiKey:b.apiKey,accessToken:b.accessToken,refreshToken:b.refreshToken,projectId:b.projectId,connectionName:b.displayName||b.name||b.email||b.id,copilotToken:b.providerSpecificData?.copilotToken,providerSpecificData:{...b.providerSpecificData||{},connectionProxyEnabled:q.connectionProxyEnabled,connectionProxyUrl:q.connectionProxyUrl,connectionNoProxy:q.connectionNoProxy,connectionProxyPoolId:q.proxyPoolId||null,vercelRelayUrl:q.vercelRelayUrl||""},connectionId:b.id,testStatus:b.testStatus,lastError:b.lastError,_connection:b}}finally{k&&k()}}async function k(a,b,c,e=null,g=null){if(!a||"noauth"===a)return{shouldFallback:!1,cooldownMs:0};let i=(await (0,d.getProviderConnections)({provider:e})).find(b=>b.id===a),j=i?.backoffLevel||0,{shouldFallback:l,cooldownMs:m,newBackoffLevel:n}=(0,f.hk)(b,c,j);if(!l)return{shouldFallback:!1,cooldownMs:0};let o="string"==typeof c?c.slice(0,100):"Provider error",p=(0,f.S5)(g,m);await (0,d.rj)(a,{...p,testStatus:"unavailable",lastError:o,errorCode:b,lastErrorAt:new Date().toISOString(),backoffLevel:n??j});let q=Object.keys(p)[0],r=i?.displayName||i?.name||i?.email||a.slice(0,8);return h.warn("AUTH",`${r} locked ${q} for ${Math.round(m/1e3)}s [${b}]`),e&&b&&o&&console.error(`❌ ${e} [${b}]: ${o}`),{shouldFallback:!0,cooldownMs:m}}async function l(a,b,c=null){if(!a||"noauth"===a)return;let e=b._connection||b,f=Date.now(),g=Object.keys(e).filter(a=>a.startsWith("modelLock_"));if(!e.testStatus&&!e.lastError&&0===g.length)return;let i=g.filter(a=>{if(c&&a===`modelLock_${c}`||c&&"modelLock___all"===a)return!0;let b=e[a];return b&&new Date(b).getTime()<=f});if(0===i.length&&"unavailable"!==e.testStatus&&!e.lastError)return;let j=g.filter(a=>{if(i.includes(a))return!1;let b=e[a];return b&&new Date(b).getTime()>f}),k=Object.fromEntries(i.map(a=>[a,null]));0===j.length&&Object.assign(k,{testStatus:"active",lastError:null,lastErrorAt:null,backoffLevel:0}),await (0,d.rj)(a,k);let m=e?.displayName||e?.name||e?.email||a.slice(0,8);h.info("AUTH",`Account ${m} cleared lock for model=${c||"__all"}`)}function m(a){let b=a.headers.get("Authorization");if(b?.startsWith("Bearer "))return b.slice(7);let c=a.headers.get("x-api-key");return c||null}async function n(a){return!!a&&await (0,d.ek)(a)}},93250:(a,b,c)=>{c.d(b,{B:()=>f});var d=c(89442);function e(a){return null==a?"":String(a).trim()}async function f(a={}){let b=e(a?.proxyPoolId),c="__none__"===b?"":b,g=function(a={}){let b=a?.connectionProxyEnabled===!0;return{connectionProxyEnabled:b,connectionProxyUrl:e(a?.connectionProxyUrl),connectionNoProxy:e(a?.connectionNoProxy)}}(a);if(c){let a=await (0,d.hr)(c),b=e(a?.proxyUrl),f=e(a?.noProxy);if(a&&!0===a.isActive&&b)return"vercel"===a.type?{source:"vercel",proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:f,strictProxy:!0===a.strictProxy,vercelRelayUrl:b}:{source:"pool",proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!0,connectionProxyUrl:b,connectionNoProxy:f,strictProxy:!0===a.strictProxy}}return g.connectionProxyEnabled&&g.connectionProxyUrl?{source:"legacy",proxyPoolId:c||null,proxyPool:null,...g}:{source:"none",proxyPoolId:c||null,proxyPool:null,...g}}},99218:(a,b,c)=>{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()}}}};
1
+ "use strict";exports.id=3159,exports.ids=[3159],exports.modules={37915:(a,b,c)=>{c.d(b,{d_:()=>g,mA:()=>f});var d=c(37770),e=c(53057);async function f(a){let b=(0,e.Xh)(a);if(!b.isAlias){if(b.provider===b.providerAlias){let a=(await (0,d.getProviderNodes)({type:"openai-compatible"})).find(a=>a.prefix===b.providerAlias);if(a)return{provider:a.id,model:b.model};let c=(await (0,d.getProviderNodes)({type:"anthropic-compatible"})).find(a=>a.prefix===b.providerAlias);if(c)return{provider:c.id,model:b.model}}return{provider:b.provider,model:b.model}}return await (0,d.Dj)(b.model)?{provider:null,model:b.model}:(0,e.js)(a,d.OM)}async function g(a){if(a.includes("/"))return null;let b=await (0,d.Dj)(a);return b&&b.models&&b.models.length>0?b.models:null}},55103:(a,b,c)=>{a.exports=c(44870)},84514:(a,b,c)=>{c.d(b,{Pt:()=>l,Tr:()=>m,c1:()=>j,kI:()=>n,vk:()=>k});var d=c(37770),e=c(93250),f=c(2449),g=c(50021),h=c(44575);let i=Promise.resolve();async function j(a,b=null,c=null){let k,l=b instanceof Set?b:b?new Set([b]):new Set,m=i;i=new Promise(a=>{k=a});try{let b;await m;let i=(0,g.rs)(a);if(g.IS[i]?.noAuth)return{id:"noauth",connectionName:"Public",isActive:!0,accessToken:"public"};let j=await (0,d.getProviderConnections)({provider:i,isActive:!0});if(h.debug("AUTH",`${a} | total connections: ${j.length}, excludeIds: ${l.size>0?[...l].join(","):"none"}, model: ${c||"any"}`),0===j.length)return h.warn("AUTH",`No credentials for ${a}`),null;let k=j.filter(a=>!(l.has(a.id)||(0,f.Bl)(a,c)));if(h.debug("AUTH",`${a} | available: ${k.length}/${j.length}`),j.forEach(a=>{let b=l.has(a.id),d=(0,f.Bl)(a,c);if(b||d){let e=(0,f.kJ)(a);h.debug("AUTH",` → ${a.id?.slice(0,8)} | ${b?"excluded":""} ${d?`modelLocked(${c}) until ${e}`:""}`)}}),0===k.length){let b=j.filter(a=>(0,f.Bl)(a,c)),d=b.map(a=>(0,f.kJ)(a)).filter(Boolean).sort()[0]||null;if(d){let e=b[0];return h.warn("AUTH",`${a} | all ${j.length} accounts locked for ${c||"all"} (${(0,f.Qo)(d)}) | lastError=${e?.lastError?.slice(0,50)}`),{allRateLimited:!0,retryAfter:d,retryAfterHuman:(0,f.Qo)(d),lastError:e?.lastError||null,lastErrorCode:e?.errorCode||null}}return h.warn("AUTH",`${a} | all ${j.length} accounts unavailable`),null}let n=await (0,d.getSettings)(),o=(n.providerStrategies||{})[i]||{},p=o.fallbackStrategy||n.fallbackStrategy||"fill-first";if("round-robin"===p){let a=o.stickyRoundRobinLimit||n.stickyRoundRobinLimit||3,c=[...k].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(b.lastUsedAt)-new Date(a.lastUsedAt):-1:1:(a.priority||999)-(b.priority||999))[0],e=c?.consecutiveUseCount||0;c&&c.lastUsedAt&&e<a?(b=c,await (0,d.rj)(b.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:(b.consecutiveUseCount||0)+1})):(b=[...k].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(a.lastUsedAt)-new Date(b.lastUsedAt):1:-1:(a.priority||999)-(b.priority||999))[0],await (0,d.rj)(b.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:1}))}else b=k[0];let q=await (0,e.B)(b.providerSpecificData||{});return{apiKey:b.apiKey,accessToken:b.accessToken,refreshToken:b.refreshToken,projectId:b.projectId,connectionName:b.displayName||b.name||b.email||b.id,copilotToken:b.providerSpecificData?.copilotToken,providerSpecificData:{...b.providerSpecificData||{},connectionProxyEnabled:q.connectionProxyEnabled,connectionProxyUrl:q.connectionProxyUrl,connectionNoProxy:q.connectionNoProxy,connectionProxyPoolId:q.proxyPoolId||null,vercelRelayUrl:q.vercelRelayUrl||""},connectionId:b.id,testStatus:b.testStatus,lastError:b.lastError,_connection:b}}finally{k&&k()}}async function k(a,b,c,e=null,g=null){if(!a||"noauth"===a)return{shouldFallback:!1,cooldownMs:0};let i=(await (0,d.getProviderConnections)({provider:e})).find(b=>b.id===a),j=i?.backoffLevel||0,{shouldFallback:l,cooldownMs:m,newBackoffLevel:n}=(0,f.hk)(b,c,j);if(!l)return{shouldFallback:!1,cooldownMs:0};let o="string"==typeof c?c.slice(0,100):"Provider error",p=(0,f.S5)(g,m);await (0,d.rj)(a,{...p,testStatus:"unavailable",lastError:o,errorCode:b,lastErrorAt:new Date().toISOString(),backoffLevel:n??j});let q=Object.keys(p)[0],r=i?.displayName||i?.name||i?.email||a.slice(0,8);return h.warn("AUTH",`${r} locked ${q} for ${Math.round(m/1e3)}s [${b}]`),e&&b&&o&&console.error(`❌ ${e} [${b}]: ${o}`),{shouldFallback:!0,cooldownMs:m}}async function l(a,b,c=null){if(!a||"noauth"===a)return;let e=b._connection||b,f=Date.now(),g=Object.keys(e).filter(a=>a.startsWith("modelLock_"));if(!e.testStatus&&!e.lastError&&0===g.length)return;let h=g.filter(a=>{if(c&&a===`modelLock_${c}`||c&&"modelLock___all"===a)return!0;let b=e[a];return b&&new Date(b).getTime()<=f});if(0===h.length&&"unavailable"!==e.testStatus&&!e.lastError)return;let i=g.filter(a=>{if(h.includes(a))return!1;let b=e[a];return b&&new Date(b).getTime()>f}),j=Object.fromEntries(h.map(a=>[a,null]));0===i.length&&Object.assign(j,{testStatus:"active",lastError:null,lastErrorAt:null,backoffLevel:0}),await (0,d.rj)(a,j)}function m(a){let b=a.headers.get("Authorization");if(b?.startsWith("Bearer "))return b.slice(7);let c=a.headers.get("x-api-key");return c||null}async function n(a){return!!a&&await (0,d.ek)(a)}},93250:(a,b,c)=>{c.d(b,{B:()=>f});var d=c(89442);function e(a){return null==a?"":String(a).trim()}async function f(a={}){let b=e(a?.proxyPoolId),c="__none__"===b?"":b,g=function(a={}){let b=a?.connectionProxyEnabled===!0;return{connectionProxyEnabled:b,connectionProxyUrl:e(a?.connectionProxyUrl),connectionNoProxy:e(a?.connectionNoProxy)}}(a);if(c){let a=await (0,d.hr)(c),b=e(a?.proxyUrl),f=e(a?.noProxy);if(a&&!0===a.isActive&&b)return"vercel"===a.type?{source:"vercel",proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:f,strictProxy:!0===a.strictProxy,vercelRelayUrl:b}:{source:"pool",proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!0,connectionProxyUrl:b,connectionNoProxy:f,strictProxy:!0===a.strictProxy}}return g.connectionProxyEnabled&&g.connectionProxyUrl?{source:"legacy",proxyPoolId:c||null,proxyPool:null,...g}:{source:"none",proxyPoolId:c||null,proxyPool:null,...g}}},99218:(a,b,c)=>{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()}}}};
@@ -1,3 +1,3 @@
1
- "use strict";exports.id=3774,exports.ids=[3774],exports.modules={13774:(a,b,c)=>{c.d(b,{A1:()=>z,Kp:()=>x,LC:()=>G,OZ:()=>E,PZ:()=>H,Z2:()=>q,ZI:()=>I,a$:()=>w,c$:()=>F,xh:()=>u});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h),j=c(79646),k=c(98012);c(19931);let l=g().join(i().homedir(),".9router","bin"),m="darwin"===i().platform();i().platform();let n="win32"===i().platform(),o=g().join(l,n?"tailscale.exe":"tailscale"),p=g().join(i().homedir(),".9router","tailscale"),q=g().join(p,"tailscaled.sock"),r=n?[]:["--socket",q],s="C:\\Program Files\\Tailscale\\tailscale.exe";function t(){try{let a=(0,j.execSync)("which tailscale 2>/dev/null || where tailscale 2>nul",{encoding:"utf8",windowsHide:!0}).trim();if(a)return a}catch(a){}return e().existsSync(o)?o:n&&e().existsSync(s)?s:null}function u(){return null!==t()}function v(...a){return[...r,...a]}function w(){let a=t();if(!a)return!1;try{let b=(0,j.execSync)(`"${a}" ${r.join(" ")} status --json`,{encoding:"utf8",windowsHide:!0,env:{...process.env,PATH:A},timeout:5e3}),c=JSON.parse(b);return"Running"===c.BackendState}catch(a){return!1}}function x(){let a=t();if(!a)return!1;try{let b=(0,j.execSync)(`"${a}" ${r.join(" ")} funnel status --json 2>/dev/null`,{encoding:"utf8",windowsHide:!0}),c=JSON.parse(b);return Object.keys(c.AllowFunnel||{}).length>0}catch(a){return!1}}function y(a){let b=t();if(!b)return null;try{let a=(0,j.execSync)(`"${b}" ${r.join(" ")} status --json`,{encoding:"utf8",windowsHide:!0}),c=JSON.parse(a),d=c.Self?.DNSName?.replace(/\.$/,"");if(d)return`https://${d}`}catch(a){}return null}async function z(a,b,c){let d=c||(()=>{});return n?(await D(d),{success:!0}):(m?await B(a,d):await C(a,d),d("Starting daemon..."),await E(a),d("Logging in..."),F(b))}let A=`/usr/local/bin:/opt/homebrew/bin:/usr/bin:/bin:${process.env.PATH||""}`;async function B(a,b){if(function(){try{return(0,j.execSync)("which brew",{stdio:"ignore",windowsHide:!0,env:{...process.env,PATH:A}}),!0}catch{return!1}}()){b("Installing via Homebrew..."),await new Promise((a,c)=>{let d=(0,j.spawn)("brew",["install","tailscale"],{stdio:["ignore","pipe","pipe"],windowsHide:!0,env:{...process.env,PATH:A}});d.stdout.on("data",a=>{let c=a.toString().trim();c&&b(c)}),d.stderr.on("data",a=>{let c=a.toString().trim();c&&b(c)}),d.on("close",b=>{0===b?a():c(Error(`brew install failed (code ${b})`))}),d.on("error",c)});return}let c=g().join(i().tmpdir(),"tailscale.pkg");b("Downloading Tailscale package..."),await new Promise((a,d)=>{let e=(0,j.spawn)("curl",["-fL","--progress-bar","https://pkgs.tailscale.com/stable/tailscale-latest.pkg","-o",c],{stdio:["ignore","pipe","pipe"],windowsHide:!0});e.stderr.on("data",a=>{let c=a.toString().trim();c&&b(c)}),e.on("close",b=>{0===b?a():d(Error("Download failed"))}),e.on("error",d)}),b("Installing package..."),await new Promise((d,e)=>{let f=(0,j.spawn)("sudo",["-S","installer","-pkg",c,"-target","/"],{stdio:["pipe","pipe","pipe"],windowsHide:!0}),g="";f.stderr.on("data",a=>{g+=a.toString()}),f.stdout.on("data",a=>{let c=a.toString().trim();c&&b(c)}),f.on("close",a=>{try{(0,j.execSync)(`rm -f ${c}`,{stdio:"ignore",windowsHide:!0})}catch{}0===a?d():e(Error(g.includes("incorrect password")||g.includes("Sorry")?"Wrong sudo password":g||`Exit code ${a}`))}),f.on("error",e),f.stdin.write(`${a}
2
- `),f.stdin.end()})}async function C(a,b){return b("Downloading install script..."),new Promise((c,d)=>{let e=(0,j.spawn)("curl",["-fsSL","https://tailscale.com/install.sh"],{stdio:["ignore","pipe","pipe"],windowsHide:!0}),f="",g="";e.stdout.on("data",a=>{f+=a.toString()}),e.stderr.on("data",a=>{g+=a.toString()}),e.on("exit",e=>{if(0!==e)return d(Error(`Failed to download install script: ${g}`));b("Running install script...");let h=(0,j.spawn)("sudo",["-S","sh"],{stdio:["pipe","pipe","pipe"],windowsHide:!0}),i="";h.stdout.on("data",a=>{let c=a.toString().trim();c&&b(c)}),h.stderr.on("data",a=>{i+=a.toString()}),h.on("close",a=>{0===a?c():d(Error(i.includes("incorrect password")||i.includes("Sorry")?"Wrong sudo password":i||`Exit code ${a}`))}),h.on("error",d),h.stdin.write(`${a}
3
- `),h.stdin.write(f),h.stdin.end()}),e.on("error",d)})}async function D(a){let b=g().join(i().tmpdir(),"tailscale-setup.msi");a("Downloading Tailscale installer..."),await new Promise((c,d)=>{let e=(0,j.spawn)("curl.exe",["-L","-#","-o",b,"https://pkgs.tailscale.com/stable/tailscale-setup-latest-amd64.msi"],{stdio:["ignore","pipe","pipe"],windowsHide:!0}),f="";e.stderr.on("data",b=>{let c=b.toString().match(/(\d+\.\d)%/);c&&c[1]!==f&&(f=c[1],a(`Downloading... ${f}%`))}),e.on("close",a=>0===a?c():d(Error("Download failed"))),e.on("error",d)}),a("Installing Tailscale (UAC prompt may appear)..."),await new Promise((c,d)=>{let f=`'/i','${b}','TS_NOLAUNCH=true','/quiet','/norestart'`,g=(0,j.spawn)("powershell",["-NoProfile","-NonInteractive","-Command",`Start-Process msiexec -ArgumentList ${f} -Verb RunAs -Wait`],{stdio:["ignore","pipe","pipe"],windowsHide:!0});g.stderr.on("data",b=>{let c=b.toString().trim();c&&a(c)}),g.on("close",a=>{try{e().unlinkSync(b)}catch{}0===a?c():d(Error(`msiexec failed (code ${a})`))}),g.on("error",d)}),a("Verifying installation...");let c=Date.now();for(;Date.now()-c<1e4;){if(e().existsSync(s))return void a("Installation complete.");await new Promise(a=>setTimeout(a,1e3))}throw Error("Installation finished but tailscale.exe not found")}async function E(a){if(n)return;try{let a=t()||"tailscale";(0,j.execSync)(`"${a}" ${r.join(" ")} status --json`,{stdio:"ignore",windowsHide:!0,env:{...process.env,PATH:A},timeout:3e3});return}catch{}e().existsSync(p)||e().mkdirSync(p,{recursive:!0});let b=`${m?"/usr/local/bin/tailscaled":"tailscaled"} --socket=${q} --statedir=${p}`;await (0,k.execWithPassword)(`nohup ${b} > /dev/null 2>&1 &`,a||""),await new Promise(a=>setTimeout(a,3e3))}function F(a){let b=t();return b?new Promise((c,d)=>{if(E("").catch(()=>{}),w())return void c({alreadyLoggedIn:!0});let e=v("up","--accept-routes");a&&e.push(`--hostname=${a}`);let f=(0,j.spawn)(b,e,{stdio:["ignore","pipe","pipe"],detached:!0,windowsHide:!0}),g=!1,h="",i=setTimeout(()=>{if(g)return;g=!0,f.unref();let a=k(h);a?c({authUrl:a}):d(Error("tailscale up timed out without auth URL"))},15e3),k=a=>{let b=a.match(/https:\/\/login\.tailscale\.com\/a\/[a-zA-Z0-9]+/);return b?b[0]:null},l=a=>{let b=k(h+=a.toString());b&&!g&&(g=!0,clearTimeout(i),f.unref(),c({authUrl:b}))};f.stdout.on("data",l),f.stderr.on("data",l),f.on("error",a=>{g||(g=!0,clearTimeout(i),d(a))}),f.on("exit",a=>{if(g)return;g=!0,clearTimeout(i);let b=k(h);b?c({authUrl:b}):w()?c({alreadyLoggedIn:!0}):d(Error(`tailscale up exited with code ${a}`))})}):Promise.reject(Error("Tailscale not installed"))}async function G(a){let b=t();if(!b)throw Error("Tailscale not installed");try{(0,j.execSync)(`"${b}" ${r.join(" ")} funnel --bg reset`,{stdio:"ignore",windowsHide:!0})}catch(a){}return new Promise((c,d)=>{let e=(0,j.spawn)(b,v("funnel","--bg",`${a}`),{stdio:["ignore","pipe","pipe"],windowsHide:!0}),f=!1,g="",h=setTimeout(()=>{if(f)return;f=!0;let b=y(a);b?c({tunnelUrl:b}):d(Error(`Tailscale funnel timed out: ${g.trim()||"no output"}`))},3e4),i=a=>(a.match(/https:\/\/[a-z0-9-]+\.[a-z0-9.-]+\.ts\.net[^\s]*/i)||[])[0]?.replace(/\/$/,"")||null,k=!1,l=a=>{if((g+=a.toString()).includes("Funnel is not enabled")&&(k=!0),k&&!f){let a=g.match(/https:\/\/login\.tailscale\.com\/[^\s]+/);if(a){f=!0,clearTimeout(h),e.kill(),c({funnelNotEnabled:!0,enableUrl:a[0]});return}}let b=i(g);b&&!f&&(f=!0,clearTimeout(h),c({tunnelUrl:b}))};e.stdout.on("data",l),e.stderr.on("data",l),e.on("exit",b=>{if(f)return;f=!0,clearTimeout(h);let e=i(g)||y(a);e?c({tunnelUrl:e}):d(Error(`tailscale funnel failed (code ${b}): ${g.trim()}`))}),e.on("error",a=>{f||(f=!0,clearTimeout(h),d(a))})})}function H(){let a=t();if(a)try{(0,j.execSync)(`"${a}" ${r.join(" ")} funnel --bg reset`,{stdio:"ignore",windowsHide:!0})}catch(a){}}async function I(a){try{(0,j.execSync)("pkill -x tailscaled",{stdio:"ignore",windowsHide:!0,timeout:3e3})}catch{}try{(0,j.execSync)("pgrep -x tailscaled",{stdio:"ignore",windowsHide:!0,timeout:2e3})}catch{return}if(!n)try{await (0,k.execWithPassword)("pkill -x tailscaled",a||"")}catch{}try{e().existsSync(q)&&e().unlinkSync(q)}catch{}}},19931:(a,b,c)=>{c.d(b,{C7:()=>n,Cr:()=>q,LZ:()=>o,jd:()=>t,r4:()=>r,xS:()=>p});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h);let j=g().join(i().homedir(),".9router","tunnel"),k=g().join(j,"state.json"),l=g().join(j,"cloudflared.pid");function m(){e().existsSync(j)||e().mkdirSync(j,{recursive:!0})}function n(){try{if(e().existsSync(k))return JSON.parse(e().readFileSync(k,"utf8"))}catch(a){}return null}function o(a){m(),e().writeFileSync(k,JSON.stringify(a,null,2))}function p(a){m(),e().writeFileSync(l,a.toString())}function q(){try{if(e().existsSync(l))return parseInt(e().readFileSync(l,"utf8"))}catch(a){}return null}function r(){try{e().existsSync(l)&&e().unlinkSync(l)}catch(a){}}g().join(j,"tailscale.pid");let s="abcdefghijklmnpqrstuvwxyz23456789";function t(){let a="";for(let b=0;b<6;b++)a+=s.charAt(Math.floor(Math.random()*s.length));return a}}};
1
+ "use strict";exports.id=3774,exports.ids=[3774],exports.modules={13774:(a,b,c)=>{c.d(b,{A1:()=>A,Kp:()=>y,LC:()=>H,OZ:()=>F,PZ:()=>I,Z2:()=>r,ZI:()=>J,a$:()=>x,c$:()=>G,xh:()=>v});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h),j=c(79646),k=c(98012);c(19931);var l=c(81372);let m=g().join(l.n,"bin"),n="darwin"===i().platform();i().platform();let o="win32"===i().platform(),p=g().join(m,o?"tailscale.exe":"tailscale"),q=g().join(l.n,"tailscale"),r=g().join(q,"tailscaled.sock"),s=o?[]:["--socket",r],t="C:\\Program Files\\Tailscale\\tailscale.exe";function u(){try{let a=(0,j.execSync)("which tailscale 2>/dev/null || where tailscale 2>nul",{encoding:"utf8",windowsHide:!0}).trim();if(a)return a}catch(a){}return e().existsSync(p)?p:o&&e().existsSync(t)?t:null}function v(){return null!==u()}function w(...a){return[...s,...a]}function x(){let a=u();if(!a)return!1;try{let b=(0,j.execSync)(`"${a}" ${s.join(" ")} status --json`,{encoding:"utf8",windowsHide:!0,env:{...process.env,PATH:B},timeout:5e3}),c=JSON.parse(b);return"Running"===c.BackendState}catch(a){return!1}}function y(){let a=u();if(!a)return!1;try{let b=(0,j.execSync)(`"${a}" ${s.join(" ")} funnel status --json 2>/dev/null`,{encoding:"utf8",windowsHide:!0}),c=JSON.parse(b);return Object.keys(c.AllowFunnel||{}).length>0}catch(a){return!1}}function z(a){let b=u();if(!b)return null;try{let a=(0,j.execSync)(`"${b}" ${s.join(" ")} status --json`,{encoding:"utf8",windowsHide:!0}),c=JSON.parse(a),d=c.Self?.DNSName?.replace(/\.$/,"");if(d)return`https://${d}`}catch(a){}return null}async function A(a,b,c){let d=c||(()=>{});return o?(await E(d),{success:!0}):(n?await C(a,d):await D(a,d),d("Starting daemon..."),await F(a),d("Logging in..."),G(b))}let B=`/usr/local/bin:/opt/homebrew/bin:/usr/bin:/bin:${process.env.PATH||""}`;async function C(a,b){if(function(){try{return(0,j.execSync)("which brew",{stdio:"ignore",windowsHide:!0,env:{...process.env,PATH:B}}),!0}catch{return!1}}()){b("Installing via Homebrew..."),await new Promise((a,c)=>{let d=(0,j.spawn)("brew",["install","tailscale"],{stdio:["ignore","pipe","pipe"],windowsHide:!0,env:{...process.env,PATH:B}});d.stdout.on("data",a=>{let c=a.toString().trim();c&&b(c)}),d.stderr.on("data",a=>{let c=a.toString().trim();c&&b(c)}),d.on("close",b=>{0===b?a():c(Error(`brew install failed (code ${b})`))}),d.on("error",c)});return}let c=g().join(i().tmpdir(),"tailscale.pkg");b("Downloading Tailscale package..."),await new Promise((a,d)=>{let e=(0,j.spawn)("curl",["-fL","--progress-bar","https://pkgs.tailscale.com/stable/tailscale-latest.pkg","-o",c],{stdio:["ignore","pipe","pipe"],windowsHide:!0});e.stderr.on("data",a=>{let c=a.toString().trim();c&&b(c)}),e.on("close",b=>{0===b?a():d(Error("Download failed"))}),e.on("error",d)}),b("Installing package..."),await new Promise((d,e)=>{let f=(0,j.spawn)("sudo",["-S","installer","-pkg",c,"-target","/"],{stdio:["pipe","pipe","pipe"],windowsHide:!0}),g="";f.stderr.on("data",a=>{g+=a.toString()}),f.stdout.on("data",a=>{let c=a.toString().trim();c&&b(c)}),f.on("close",a=>{try{(0,j.execSync)(`rm -f ${c}`,{stdio:"ignore",windowsHide:!0})}catch{}0===a?d():e(Error(g.includes("incorrect password")||g.includes("Sorry")?"Wrong sudo password":g||`Exit code ${a}`))}),f.on("error",e),f.stdin.write(`${a}
2
+ `),f.stdin.end()})}async function D(a,b){return b("Downloading install script..."),new Promise((c,d)=>{let e=(0,j.spawn)("curl",["-fsSL","https://tailscale.com/install.sh"],{stdio:["ignore","pipe","pipe"],windowsHide:!0}),f="",g="";e.stdout.on("data",a=>{f+=a.toString()}),e.stderr.on("data",a=>{g+=a.toString()}),e.on("exit",e=>{if(0!==e)return d(Error(`Failed to download install script: ${g}`));b("Running install script...");let h=(0,j.spawn)("sudo",["-S","sh"],{stdio:["pipe","pipe","pipe"],windowsHide:!0}),i="";h.stdout.on("data",a=>{let c=a.toString().trim();c&&b(c)}),h.stderr.on("data",a=>{i+=a.toString()}),h.on("close",a=>{0===a?c():d(Error(i.includes("incorrect password")||i.includes("Sorry")?"Wrong sudo password":i||`Exit code ${a}`))}),h.on("error",d),h.stdin.write(`${a}
3
+ `),h.stdin.write(f),h.stdin.end()}),e.on("error",d)})}async function E(a){let b=g().join(i().tmpdir(),"tailscale-setup.msi");a("Downloading Tailscale installer..."),await new Promise((c,d)=>{let e=(0,j.spawn)("curl.exe",["-L","-#","-o",b,"https://pkgs.tailscale.com/stable/tailscale-setup-latest-amd64.msi"],{stdio:["ignore","pipe","pipe"],windowsHide:!0}),f="";e.stderr.on("data",b=>{let c=b.toString().match(/(\d+\.\d)%/);c&&c[1]!==f&&(f=c[1],a(`Downloading... ${f}%`))}),e.on("close",a=>0===a?c():d(Error("Download failed"))),e.on("error",d)}),a("Installing Tailscale (UAC prompt may appear)..."),await new Promise((c,d)=>{let f=`'/i','${b}','TS_NOLAUNCH=true','/quiet','/norestart'`,g=(0,j.spawn)("powershell",["-NoProfile","-NonInteractive","-Command",`Start-Process msiexec -ArgumentList ${f} -Verb RunAs -Wait`],{stdio:["ignore","pipe","pipe"],windowsHide:!0});g.stderr.on("data",b=>{let c=b.toString().trim();c&&a(c)}),g.on("close",a=>{try{e().unlinkSync(b)}catch{}0===a?c():d(Error(`msiexec failed (code ${a})`))}),g.on("error",d)}),a("Verifying installation...");let c=Date.now();for(;Date.now()-c<1e4;){if(e().existsSync(t))return void a("Installation complete.");await new Promise(a=>setTimeout(a,1e3))}throw Error("Installation finished but tailscale.exe not found")}async function F(a){if(o){try{let a=u();if(a)return void(0,j.execSync)(`"${a}" status --json`,{stdio:"ignore",windowsHide:!0,timeout:3e3})}catch{}try{(0,j.execSync)("net start Tailscale",{stdio:"ignore",windowsHide:!0,timeout:1e4}),await new Promise(a=>setTimeout(a,3e3))}catch{}return}try{let a=u()||"tailscale";(0,j.execSync)(`"${a}" ${s.join(" ")} status --json`,{stdio:"ignore",windowsHide:!0,env:{...process.env,PATH:B},timeout:3e3});return}catch{}e().existsSync(q)||e().mkdirSync(q,{recursive:!0});let b=`${n?"/usr/local/bin/tailscaled":"tailscaled"} --socket=${r} --statedir=${q}`;await (0,k.execWithPassword)(`nohup ${b} > /dev/null 2>&1 &`,a||""),await new Promise(a=>setTimeout(a,3e3))}function G(a){let b=u();return b?new Promise((c,d)=>{if(F("").catch(()=>{}),x())return void c({alreadyLoggedIn:!0});let e=w("up","--accept-routes");a&&e.push(`--hostname=${a}`);let f=(0,j.spawn)(b,e,{stdio:["ignore","pipe","pipe"],detached:!0,windowsHide:!0}),g=!1,h="",i=setTimeout(()=>{if(g)return;g=!0,f.unref();let a=k(h);a?c({authUrl:a}):d(Error("tailscale up timed out without auth URL"))},15e3),k=a=>{let b=a.match(/https:\/\/login\.tailscale\.com\/a\/[a-zA-Z0-9]+/);return b?b[0]:null},l=a=>{let b=k(h+=a.toString());b&&!g&&(g=!0,clearTimeout(i),f.unref(),c({authUrl:b}))};f.stdout.on("data",l),f.stderr.on("data",l),f.on("error",a=>{g||(g=!0,clearTimeout(i),d(a))}),f.on("exit",a=>{if(g)return;g=!0,clearTimeout(i);let b=k(h);b?c({authUrl:b}):0===a||x()?c({alreadyLoggedIn:!0}):d(Error(`tailscale up exited with code ${a}`))})}):Promise.reject(Error("Tailscale not installed"))}async function H(a){let b=u();if(!b)throw Error("Tailscale not installed");try{(0,j.execSync)(`"${b}" ${s.join(" ")} funnel --bg reset`,{stdio:"ignore",windowsHide:!0})}catch(a){}return new Promise((c,d)=>{let e=(0,j.spawn)(b,w("funnel","--bg",`${a}`),{stdio:["ignore","pipe","pipe"],windowsHide:!0}),f=!1,g="",h=setTimeout(()=>{if(f)return;f=!0;let b=z(a);b?c({tunnelUrl:b}):d(Error(`Tailscale funnel timed out: ${g.trim()||"no output"}`))},3e4),i=a=>(a.match(/https:\/\/[a-z0-9-]+\.[a-z0-9.-]+\.ts\.net[^\s]*/i)||[])[0]?.replace(/\/$/,"")||null,k=!1,l=a=>{if((g+=a.toString()).includes("Funnel is not enabled")&&(k=!0),k&&!f){let a=g.match(/https:\/\/login\.tailscale\.com\/[^\s]+/);if(a){f=!0,clearTimeout(h),e.kill(),c({funnelNotEnabled:!0,enableUrl:a[0]});return}}let b=i(g);b&&!f&&(f=!0,clearTimeout(h),c({tunnelUrl:b}))};e.stdout.on("data",l),e.stderr.on("data",l),e.on("exit",b=>{if(f)return;f=!0,clearTimeout(h);let e=i(g)||z(a);e?c({tunnelUrl:e}):d(Error(`tailscale funnel failed (code ${b}): ${g.trim()}`))}),e.on("error",a=>{f||(f=!0,clearTimeout(h),d(a))})})}function I(){let a=u();if(a)try{(0,j.execSync)(`"${a}" ${s.join(" ")} funnel --bg reset`,{stdio:"ignore",windowsHide:!0})}catch(a){}}async function J(a){try{(0,j.execSync)("pkill -x tailscaled",{stdio:"ignore",windowsHide:!0,timeout:3e3})}catch{}try{(0,j.execSync)("pgrep -x tailscaled",{stdio:"ignore",windowsHide:!0,timeout:2e3})}catch{return}if(!o)try{await (0,k.execWithPassword)("pkill -x tailscaled",a||"")}catch{}try{e().existsSync(r)&&e().unlinkSync(r)}catch{}}},19931:(a,b,c)=>{c.d(b,{C7:()=>m,Cr:()=>p,LZ:()=>n,jd:()=>s,r4:()=>q,xS:()=>o});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(81372);let i=g().join(h.n,"tunnel"),j=g().join(i,"state.json"),k=g().join(i,"cloudflared.pid");function l(){e().existsSync(i)||e().mkdirSync(i,{recursive:!0})}function m(){try{if(e().existsSync(j))return JSON.parse(e().readFileSync(j,"utf8"))}catch(a){}return null}function n(a){l(),e().writeFileSync(j,JSON.stringify(a,null,2))}function o(a){l(),e().writeFileSync(k,a.toString())}function p(){try{if(e().existsSync(k))return parseInt(e().readFileSync(k,"utf8"))}catch(a){}return null}function q(){try{e().existsSync(k)&&e().unlinkSync(k)}catch(a){}}g().join(i,"tailscale.pid");let r="abcdefghijklmnpqrstuvwxyz23456789";function s(){let a="";for(let b=0;b<6;b++)a+=r.charAt(Math.floor(Math.random()*r.length));return a}}};