9router 0.3.62 → 0.3.64

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 (361) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/app-path-routes-manifest.json +39 -39
  3. package/app/.next/build-manifest.json +2 -2
  4. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  5. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  6. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  7. package/app/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  20. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  21. package/app/.next/server/app/_global-error.html +2 -2
  22. package/app/.next/server/app/_global-error.rsc +1 -1
  23. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  24. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  25. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  26. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  27. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  28. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  29. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  30. package/app/.next/server/app/_not-found.html +1 -1
  31. package/app/.next/server/app/_not-found.rsc +4 -4
  32. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  33. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  34. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
  35. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  36. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  37. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  38. package/app/.next/server/app/api/9remote/install/route_client-reference-manifest.js +1 -1
  39. package/app/.next/server/app/api/9remote/start/route_client-reference-manifest.js +1 -1
  40. package/app/.next/server/app/api/9remote/status/route_client-reference-manifest.js +1 -1
  41. package/app/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  42. package/app/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  43. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
  44. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
  45. package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
  46. package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
  47. package/app/.next/server/app/api/cli-tools/copilot-settings/route_client-reference-manifest.js +1 -1
  48. package/app/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
  49. package/app/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
  50. package/app/.next/server/app/api/cli-tools/opencode-settings/route_client-reference-manifest.js +1 -1
  51. package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
  52. package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
  53. package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
  54. package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
  55. package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
  56. package/app/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
  57. package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  58. package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
  59. package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
  60. package/app/.next/server/app/api/locale/route_client-reference-manifest.js +1 -1
  61. package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
  62. package/app/.next/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
  63. package/app/.next/server/app/api/models/route.js +1 -1
  64. package/app/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  65. package/app/.next/server/app/api/models/test/route_client-reference-manifest.js +1 -1
  66. package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
  67. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js +2 -2
  68. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  69. package/app/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
  70. package/app/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
  71. package/app/.next/server/app/api/oauth/iflow/cookie/route_client-reference-manifest.js +1 -1
  72. package/app/.next/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
  73. package/app/.next/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
  74. package/app/.next/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
  75. package/app/.next/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
  76. package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  77. package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
  78. package/app/.next/server/app/api/provider-nodes/route.js +1 -1
  79. package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
  80. package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
  81. package/app/.next/server/app/api/providers/[id]/models/route.js +1 -1
  82. package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
  83. package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
  84. package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
  85. package/app/.next/server/app/api/providers/[id]/test-models/route.js +1 -1
  86. package/app/.next/server/app/api/providers/[id]/test-models/route_client-reference-manifest.js +1 -1
  87. package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
  88. package/app/.next/server/app/api/providers/route.js +1 -1
  89. package/app/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
  90. package/app/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
  91. package/app/.next/server/app/api/providers/validate/route.js +1 -1
  92. package/app/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
  93. package/app/.next/server/app/api/proxy-pools/[id]/route_client-reference-manifest.js +1 -1
  94. package/app/.next/server/app/api/proxy-pools/[id]/test/route_client-reference-manifest.js +1 -1
  95. package/app/.next/server/app/api/proxy-pools/route_client-reference-manifest.js +1 -1
  96. package/app/.next/server/app/api/settings/database/route_client-reference-manifest.js +1 -1
  97. package/app/.next/server/app/api/settings/proxy-test/route_client-reference-manifest.js +1 -1
  98. package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
  99. package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  100. package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  101. package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
  102. package/app/.next/server/app/api/translator/console-logs/route.js +1 -1
  103. package/app/.next/server/app/api/translator/console-logs/route_client-reference-manifest.js +1 -1
  104. package/app/.next/server/app/api/translator/console-logs/stream/route.js +2 -2
  105. package/app/.next/server/app/api/translator/console-logs/stream/route_client-reference-manifest.js +1 -1
  106. package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
  107. package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
  108. package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
  109. package/app/.next/server/app/api/translator/translate/route.js +1 -1
  110. package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
  111. package/app/.next/server/app/api/tunnel/disable/route_client-reference-manifest.js +1 -1
  112. package/app/.next/server/app/api/tunnel/enable/route_client-reference-manifest.js +1 -1
  113. package/app/.next/server/app/api/tunnel/status/route_client-reference-manifest.js +1 -1
  114. package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
  115. package/app/.next/server/app/api/usage/chart/route_client-reference-manifest.js +1 -1
  116. package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
  117. package/app/.next/server/app/api/usage/providers/route.js +1 -1
  118. package/app/.next/server/app/api/usage/providers/route_client-reference-manifest.js +1 -1
  119. package/app/.next/server/app/api/usage/request-details/route_client-reference-manifest.js +1 -1
  120. package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
  121. package/app/.next/server/app/api/usage/stats/route_client-reference-manifest.js +1 -1
  122. package/app/.next/server/app/api/usage/stream/route_client-reference-manifest.js +1 -1
  123. package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
  124. package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
  125. package/app/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
  126. package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
  127. package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
  128. package/app/.next/server/app/api/v1/models/route.js +1 -1
  129. package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
  130. package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
  131. package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
  132. package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
  133. package/app/.next/server/app/api/v1beta/models/route.js +1 -1
  134. package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
  135. package/app/.next/server/app/api/version/route.js +1 -1
  136. package/app/.next/server/app/api/version/route_client-reference-manifest.js +1 -1
  137. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  138. package/app/.next/server/app/callback.html +1 -1
  139. package/app/.next/server/app/callback.rsc +4 -4
  140. package/app/.next/server/app/callback.segments/_full.segment.rsc +4 -4
  141. package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
  142. package/app/.next/server/app/callback.segments/_index.segment.rsc +4 -4
  143. package/app/.next/server/app/callback.segments/_tree.segment.rsc +2 -2
  144. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  145. package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
  146. package/app/.next/server/app/dashboard/basic-chat.html +1 -1
  147. package/app/.next/server/app/dashboard/basic-chat.rsc +6 -6
  148. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  149. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  150. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  151. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  152. package/app/.next/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
  153. package/app/.next/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  154. package/app/.next/server/app/dashboard/basic-chat.segments/_index.segment.rsc +4 -4
  155. package/app/.next/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
  156. package/app/.next/server/app/dashboard/cli-tools.html +1 -1
  157. package/app/.next/server/app/dashboard/cli-tools.rsc +6 -6
  158. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  159. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  160. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  161. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  162. package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
  163. package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  164. package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
  165. package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  166. package/app/.next/server/app/dashboard/combos.html +1 -1
  167. package/app/.next/server/app/dashboard/combos.rsc +6 -6
  168. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  169. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  170. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  171. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  172. package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
  173. package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  174. package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
  175. package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  176. package/app/.next/server/app/dashboard/endpoint.html +1 -1
  177. package/app/.next/server/app/dashboard/endpoint.rsc +6 -6
  178. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  179. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  180. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  181. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  182. package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
  183. package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  184. package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
  185. package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  186. package/app/.next/server/app/dashboard/mitm.html +1 -1
  187. package/app/.next/server/app/dashboard/mitm.rsc +6 -6
  188. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  189. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  190. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  191. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  192. package/app/.next/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
  193. package/app/.next/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  194. package/app/.next/server/app/dashboard/mitm.segments/_index.segment.rsc +4 -4
  195. package/app/.next/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  196. package/app/.next/server/app/dashboard/profile.html +1 -1
  197. package/app/.next/server/app/dashboard/profile.rsc +6 -6
  198. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  199. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  200. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  201. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  202. package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
  203. package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  204. package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
  205. package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  206. package/app/.next/server/app/dashboard/providers/new.html +1 -1
  207. package/app/.next/server/app/dashboard/providers/new.rsc +6 -6
  208. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  209. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  210. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  211. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  212. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  213. package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
  214. package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  215. package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
  216. package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  217. package/app/.next/server/app/dashboard/providers.html +1 -1
  218. package/app/.next/server/app/dashboard/providers.rsc +6 -6
  219. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  220. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  221. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  222. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  223. package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
  224. package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  225. package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
  226. package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  227. package/app/.next/server/app/dashboard/proxy-pools.html +1 -1
  228. package/app/.next/server/app/dashboard/proxy-pools.rsc +6 -6
  229. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  230. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  231. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  232. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  233. package/app/.next/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
  234. package/app/.next/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  235. package/app/.next/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +4 -4
  236. package/app/.next/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  237. package/app/.next/server/app/dashboard/quota.html +2 -2
  238. package/app/.next/server/app/dashboard/quota.rsc +7 -7
  239. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  240. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  241. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  242. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  243. package/app/.next/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
  244. package/app/.next/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  245. package/app/.next/server/app/dashboard/quota.segments/_index.segment.rsc +4 -4
  246. package/app/.next/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  247. package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  248. package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
  249. package/app/.next/server/app/dashboard/settings/pricing.rsc +4 -4
  250. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  251. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  252. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
  253. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  254. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  255. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  256. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  257. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  258. package/app/.next/server/app/dashboard/translator.html +1 -1
  259. package/app/.next/server/app/dashboard/translator.rsc +6 -6
  260. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  261. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  262. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  263. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  264. package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
  265. package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  266. package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
  267. package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  268. package/app/.next/server/app/dashboard/usage.html +1 -1
  269. package/app/.next/server/app/dashboard/usage.rsc +6 -6
  270. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  271. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  272. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  273. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  274. package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
  275. package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  276. package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
  277. package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  278. package/app/.next/server/app/dashboard.html +1 -1
  279. package/app/.next/server/app/dashboard.rsc +6 -6
  280. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  281. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  282. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  283. package/app/.next/server/app/dashboard.segments/_full.segment.rsc +6 -6
  284. package/app/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
  285. package/app/.next/server/app/dashboard.segments/_index.segment.rsc +4 -4
  286. package/app/.next/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  287. package/app/.next/server/app/index.html +1 -1
  288. package/app/.next/server/app/index.rsc +4 -4
  289. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  290. package/app/.next/server/app/index.segments/_full.segment.rsc +4 -4
  291. package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
  292. package/app/.next/server/app/index.segments/_index.segment.rsc +4 -4
  293. package/app/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  294. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  295. package/app/.next/server/app/landing.html +1 -1
  296. package/app/.next/server/app/landing.rsc +4 -4
  297. package/app/.next/server/app/landing.segments/_full.segment.rsc +4 -4
  298. package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
  299. package/app/.next/server/app/landing.segments/_index.segment.rsc +4 -4
  300. package/app/.next/server/app/landing.segments/_tree.segment.rsc +2 -2
  301. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  302. package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
  303. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  304. package/app/.next/server/app/login.html +1 -1
  305. package/app/.next/server/app/login.rsc +5 -5
  306. package/app/.next/server/app/login.segments/_full.segment.rsc +5 -5
  307. package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
  308. package/app/.next/server/app/login.segments/_index.segment.rsc +4 -4
  309. package/app/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  310. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  311. package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
  312. package/app/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  313. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  314. package/app/.next/server/app-paths-manifest.json +39 -39
  315. package/app/.next/server/chunks/1114.js +1 -1
  316. package/app/.next/server/chunks/318.js +4 -4
  317. package/app/.next/server/chunks/3832.js +1 -1
  318. package/app/.next/server/chunks/412.js +1 -1
  319. package/app/.next/server/chunks/5297.js +1 -1
  320. package/app/.next/server/chunks/8220.js +1 -1
  321. package/app/.next/server/chunks/8895.js +1 -1
  322. package/app/.next/server/functions-config-manifest.json +24 -0
  323. package/app/.next/server/middleware.js +2 -2
  324. package/app/.next/server/pages/404.html +1 -1
  325. package/app/.next/server/pages/500.html +2 -2
  326. package/app/.next/server/server-reference-manifest.js +1 -1
  327. package/app/.next/server/server-reference-manifest.json +1 -1
  328. package/app/.next/static/chunks/2652-141c69cce7667f8c.js +1 -0
  329. package/app/.next/static/chunks/{5497-ddb63202b42aa28d.js → 5497-0e48a4a64af94619.js} +2 -2
  330. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/{page-14e0770e72ebcdc4.js → page-4ad08a3c859e80d1.js} +1 -1
  331. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-b75ade3656734e56.js +1 -0
  332. package/app/.next/static/chunks/app/{layout-ce6bf87ceeae19a7.js → layout-0c32feecf05336bd.js} +1 -1
  333. package/app/.next/static/chunks/{main-aab9e1b069a77e0f.js → main-7ea42cedc4a117c7.js} +1 -1
  334. package/app/.next/static/css/444c3f32c7259aa2.css +1 -0
  335. package/app/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
  336. package/app/node_modules/better-sqlite3/lib/database.js +90 -0
  337. package/app/node_modules/better-sqlite3/lib/index.js +3 -0
  338. package/app/node_modules/better-sqlite3/lib/methods/aggregate.js +43 -0
  339. package/app/node_modules/better-sqlite3/lib/methods/backup.js +67 -0
  340. package/app/node_modules/better-sqlite3/lib/methods/function.js +31 -0
  341. package/app/node_modules/better-sqlite3/lib/methods/inspect.js +7 -0
  342. package/app/node_modules/better-sqlite3/lib/methods/pragma.js +12 -0
  343. package/app/node_modules/better-sqlite3/lib/methods/serialize.js +16 -0
  344. package/app/node_modules/better-sqlite3/lib/methods/table.js +189 -0
  345. package/app/node_modules/better-sqlite3/lib/methods/transaction.js +78 -0
  346. package/app/node_modules/better-sqlite3/lib/methods/wrappers.js +54 -0
  347. package/app/node_modules/better-sqlite3/lib/sqlite-error.js +20 -0
  348. package/app/node_modules/better-sqlite3/lib/util.js +12 -0
  349. package/app/node_modules/better-sqlite3/package.json +59 -0
  350. package/app/node_modules/bindings/bindings.js +221 -0
  351. package/app/node_modules/bindings/package.json +28 -0
  352. package/app/node_modules/file-uri-to-path/index.js +66 -0
  353. package/app/node_modules/file-uri-to-path/package.json +32 -0
  354. package/app/package.json +1 -1
  355. package/app/src/mitm/server.js +1 -1
  356. package/package.json +1 -1
  357. package/app/.next/static/chunks/2652-1afd9ba8172c055f.js +0 -1
  358. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-83ea2fe0ea362d1d.js +0 -1
  359. package/app/.next/static/css/6e39f97c1b551330.css +0 -1
  360. /package/app/.next/static/{BNHLhVovzem2a2ddv-i2y → amVfAOuGYHFY39y9UCAI0}/_buildManifest.js +0 -0
  361. /package/app/.next/static/{BNHLhVovzem2a2ddv-i2y → amVfAOuGYHFY39y9UCAI0}/_ssgManifest.js +0 -0
@@ -0,0 +1,66 @@
1
+
2
+ /**
3
+ * Module dependencies.
4
+ */
5
+
6
+ var sep = require('path').sep || '/';
7
+
8
+ /**
9
+ * Module exports.
10
+ */
11
+
12
+ module.exports = fileUriToPath;
13
+
14
+ /**
15
+ * File URI to Path function.
16
+ *
17
+ * @param {String} uri
18
+ * @return {String} path
19
+ * @api public
20
+ */
21
+
22
+ function fileUriToPath (uri) {
23
+ if ('string' != typeof uri ||
24
+ uri.length <= 7 ||
25
+ 'file://' != uri.substring(0, 7)) {
26
+ throw new TypeError('must pass in a file:// URI to convert to a file path');
27
+ }
28
+
29
+ var rest = decodeURI(uri.substring(7));
30
+ var firstSlash = rest.indexOf('/');
31
+ var host = rest.substring(0, firstSlash);
32
+ var path = rest.substring(firstSlash + 1);
33
+
34
+ // 2. Scheme Definition
35
+ // As a special case, <host> can be the string "localhost" or the empty
36
+ // string; this is interpreted as "the machine from which the URL is
37
+ // being interpreted".
38
+ if ('localhost' == host) host = '';
39
+
40
+ if (host) {
41
+ host = sep + sep + host;
42
+ }
43
+
44
+ // 3.2 Drives, drive letters, mount points, file system root
45
+ // Drive letters are mapped into the top of a file URI in various ways,
46
+ // depending on the implementation; some applications substitute
47
+ // vertical bar ("|") for the colon after the drive letter, yielding
48
+ // "file:///c|/tmp/test.txt". In some cases, the colon is left
49
+ // unchanged, as in "file:///c:/tmp/test.txt". In other cases, the
50
+ // colon is simply omitted, as in "file:///c/tmp/test.txt".
51
+ path = path.replace(/^(.+)\|/, '$1:');
52
+
53
+ // for Windows, we need to invert the path separators from what a URI uses
54
+ if (sep == '\\') {
55
+ path = path.replace(/\//g, '\\');
56
+ }
57
+
58
+ if (/^.+\:/.test(path)) {
59
+ // has Windows drive at beginning of path
60
+ } else {
61
+ // unix path…
62
+ path = sep + path;
63
+ }
64
+
65
+ return host + path;
66
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "file-uri-to-path",
3
+ "version": "1.0.0",
4
+ "description": "Convert a file: URI to a file path",
5
+ "main": "index.js",
6
+ "types": "index.d.ts",
7
+ "directories": {
8
+ "test": "test"
9
+ },
10
+ "scripts": {
11
+ "test": "mocha --reporter spec"
12
+ },
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "git://github.com/TooTallNate/file-uri-to-path.git"
16
+ },
17
+ "keywords": [
18
+ "file",
19
+ "uri",
20
+ "convert",
21
+ "path"
22
+ ],
23
+ "author": "Nathan Rajlich <nathan@tootallnate.net> (http://n8.io/)",
24
+ "license": "MIT",
25
+ "bugs": {
26
+ "url": "https://github.com/TooTallNate/file-uri-to-path/issues"
27
+ },
28
+ "homepage": "https://github.com/TooTallNate/file-uri-to-path",
29
+ "devDependencies": {
30
+ "mocha": "3"
31
+ }
32
+ }
package/app/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "9router-app",
3
- "version": "0.3.62",
3
+ "version": "0.3.64",
4
4
  "description": "9Router web dashboard",
5
5
  "private": true,
6
6
  "scripts": {
@@ -1 +1 @@
1
- const a0_0x2c03f5=a0_0x5dc5;(function(_0x1b0e6e,_0x3d6eb1){const _0x35679e=a0_0x5dc5,_0x2a336f=_0x1b0e6e();while(!![]){try{const _0x578197=-parseInt(_0x35679e(0x217))/0x1+-parseInt(_0x35679e(0x1ea))/0x2+parseInt(_0x35679e(0x1ef))/0x3+parseInt(_0x35679e(0x180))/0x4+-parseInt(_0x35679e(0x162))/0x5*(parseInt(_0x35679e(0x1d1))/0x6)+-parseInt(_0x35679e(0x186))/0x7*(parseInt(_0x35679e(0x1f9))/0x8)+-parseInt(_0x35679e(0x1e7))/0x9*(-parseInt(_0x35679e(0x179))/0xa);if(_0x578197===_0x3d6eb1)break;else _0x2a336f['push'](_0x2a336f['shift']());}catch(_0x59c1af){_0x2a336f['push'](_0x2a336f['shift']());}}}(a0_0x26bf,0xa5bc6));var __getOwnPropNames=Object['getOwnPropertyNames'],__commonJS=(_0x472ea1,_0x3e8f24)=>function _0x1c9edd(){const _0x3ffac3=a0_0x5dc5;return _0x3e8f24||(0x0,_0x472ea1[__getOwnPropNames(_0x472ea1)[0x0]])((_0x3e8f24={'exports':{}})['exports'],_0x3e8f24),_0x3e8f24[_0x3ffac3(0x168)];},require_logger=__commonJS({'../app/src/mitm/logger.js'(_0x49a852,_0x13ff93){const _0x338aa9=a0_0x5dc5;function _0x5acb0f(){const _0x38b06f=a0_0x5dc5;return new Date()[_0x38b06f(0x1d0)]('en-US',{'hour12':![]});}var _0x565740=_0x53c45b=>console['log']('['+_0x5acb0f()+_0x338aa9(0x1ec)+_0x53c45b),_0x34d7d4=_0x3cbc96=>console[_0x338aa9(0x1f6)]('['+_0x5acb0f()+_0x338aa9(0x1b5)+_0x3cbc96);_0x13ff93['exports']={'log':_0x565740,'err':_0x34d7d4};}}),require_config=__commonJS({'../app/src/mitm/config.js'(_0x16dadd,_0xa20074){const _0x4c9fd4=a0_0x5dc5;var _0xa573cb=[_0x4c9fd4(0x19f),_0x4c9fd4(0x18d),_0x4c9fd4(0x207),_0x4c9fd4(0x160),_0x4c9fd4(0x18e)],_0x24c2d1={'antigravity':[_0x4c9fd4(0x215),_0x4c9fd4(0x19e)],'copilot':[_0x4c9fd4(0x224),_0x4c9fd4(0x16e),'/responses'],'kiro':[_0x4c9fd4(0x196)],'cursor':[_0x4c9fd4(0x1e4),'/RunSSE',_0x4c9fd4(0x1b7),_0x4c9fd4(0x1ff)]};function _0x4fb2d8(_0x9626ac){const _0x2cbc13=_0x4c9fd4,_0x5c5cc7=(_0x9626ac||'')[_0x2cbc13(0x229)](':')[0x0];if(_0x5c5cc7===_0x2cbc13(0x207))return _0x2cbc13(0x1f5);if(_0x5c5cc7===_0x2cbc13(0x19f)||_0x5c5cc7===_0x2cbc13(0x18d))return _0x2cbc13(0x1f8);if(_0x5c5cc7===_0x2cbc13(0x160))return _0x2cbc13(0x1fb);if(_0x5c5cc7==='api2.cursor.sh')return'cursor';return null;}_0xa20074['exports']={'TARGET_HOSTS':_0xa573cb,'URL_PATTERNS':_0x24c2d1,'getToolForHost':_0x4fb2d8};}}),require_paths=__commonJS({'../app/src/mitm/paths.js'(_0x3cb76a,_0x16db38){const _0x518705=a0_0x5dc5;var _0x256e69=require(_0x518705(0x1eb)),_0xcba789=require('os');function _0x1913b0(){const _0x5c15ff=_0x518705;if(process.env.DATA_DIR)return process.env.DATA_DIR;if(process['platform']===_0x5c15ff(0x1ce))return _0x256e69['join'](process.env.APPDATA||_0x256e69['join'](_0xcba789[_0x5c15ff(0x1e1)](),'AppData',_0x5c15ff(0x1d5)),_0x5c15ff(0x200));return _0x256e69[_0x5c15ff(0x18a)](_0xcba789[_0x5c15ff(0x1e1)](),_0x5c15ff(0x236));}var _0x2e3347=_0x1913b0(),_0x31f68a=_0x256e69[_0x518705(0x18a)](_0x2e3347,_0x518705(0x188));_0x16db38[_0x518705(0x168)]={'DATA_DIR':_0x2e3347,'MITM_DIR':_0x31f68a};}}),require_rootCA=__commonJS({'../app/src/mitm/cert/rootCA.js'(_0x810417,_0x1996de){const _0x57d43d=a0_0x5dc5;var _0x18f5d7=require(_0x57d43d(0x1eb)),_0x5a2d17=require('fs'),_0x3c3550=require('node-forge'),{MITM_DIR:_0x2e951c}=require_paths(),_0x5213df=_0x18f5d7[_0x57d43d(0x18a)](_0x2e951c,_0x57d43d(0x1de)),_0x10397e=_0x18f5d7[_0x57d43d(0x18a)](_0x2e951c,_0x57d43d(0x21f));function _0x5f071c(_0x2a85d3){const _0x55fc62=_0x57d43d;try{const _0x323da0=_0x3c3550[_0x55fc62(0x201)][_0x55fc62(0x204)](_0x5a2d17[_0x55fc62(0x1d4)](_0x2a85d3,'utf8')),_0x29e0f4=new Date(Date[_0x55fc62(0x15d)]()+0x1e*0x18*0x3c*0x3c*0x3e8);return _0x323da0[_0x55fc62(0x238)]['notAfter']<_0x29e0f4;}catch{return!![];}}async function _0x333fd9(){const _0x21cf18=_0x57d43d,_0x2ae14d=_0x5a2d17['existsSync'](_0x5213df)&&_0x5a2d17[_0x21cf18(0x209)](_0x10397e);if(_0x2ae14d&&!_0x5f071c(_0x10397e))return console[_0x21cf18(0x1e8)]('✅\x20Root\x20CA\x20already\x20exists'),{'key':_0x5213df,'cert':_0x10397e};if(_0x2ae14d){console['log']('🔐\x20Root\x20CA\x20expired\x20or\x20expiring\x20soon\x20—\x20regenerating...');try{_0x5a2d17['unlinkSync'](_0x5213df);}catch{}try{_0x5a2d17['unlinkSync'](_0x10397e);}catch{}}!_0x5a2d17[_0x21cf18(0x209)](_0x2e951c)&&_0x5a2d17[_0x21cf18(0x1a5)](_0x2e951c,{'recursive':!![]});console[_0x21cf18(0x1e8)](_0x21cf18(0x177));const _0x23c2ed=_0x3c3550[_0x21cf18(0x201)][_0x21cf18(0x1b2)]['generateKeyPair'](0x800),_0x4b4dfa=_0x3c3550[_0x21cf18(0x201)][_0x21cf18(0x1b0)]();_0x4b4dfa[_0x21cf18(0x163)]=_0x23c2ed[_0x21cf18(0x163)],_0x4b4dfa[_0x21cf18(0x205)]='01',_0x4b4dfa[_0x21cf18(0x238)][_0x21cf18(0x1b4)]=new Date(),_0x4b4dfa[_0x21cf18(0x238)][_0x21cf18(0x1c9)]=new Date(),_0x4b4dfa[_0x21cf18(0x238)][_0x21cf18(0x1c9)]['setFullYear'](_0x4b4dfa[_0x21cf18(0x238)][_0x21cf18(0x1b4)][_0x21cf18(0x189)]()+0xa);const _0x222d97=[{'name':_0x21cf18(0x1a6),'value':_0x21cf18(0x172)},{'name':_0x21cf18(0x1ca),'value':'9Router'},{'name':'countryName','value':'US'}];_0x4b4dfa[_0x21cf18(0x22d)](_0x222d97),_0x4b4dfa[_0x21cf18(0x1cc)](_0x222d97),_0x4b4dfa[_0x21cf18(0x181)]([{'name':_0x21cf18(0x1d2),'cA':!![],'critical':!![]},{'name':_0x21cf18(0x1ed),'keyCertSign':!![],'cRLSign':!![],'critical':!![]},{'name':_0x21cf18(0x232)}]),_0x4b4dfa[_0x21cf18(0x21c)](_0x23c2ed[_0x21cf18(0x211)],_0x3c3550['md']['sha256'][_0x21cf18(0x167)]());const _0x4da785=_0x3c3550[_0x21cf18(0x201)]['privateKeyToPem'](_0x23c2ed[_0x21cf18(0x211)]),_0x37aadc=_0x3c3550[_0x21cf18(0x201)][_0x21cf18(0x22b)](_0x4b4dfa);return _0x5a2d17['writeFileSync'](_0x5213df,_0x4da785),_0x5a2d17['writeFileSync'](_0x10397e,_0x37aadc),console['log'](_0x21cf18(0x223)),{'key':_0x5213df,'cert':_0x10397e};}function _0x2dacaf(){const _0x5d48ea=_0x57d43d;if(!_0x5a2d17[_0x5d48ea(0x209)](_0x5213df)||!_0x5a2d17[_0x5d48ea(0x209)](_0x10397e))throw new Error(_0x5d48ea(0x213));const _0x30b2c9=_0x5a2d17[_0x5d48ea(0x1d4)](_0x5213df,'utf8'),_0x5bddad=_0x5a2d17[_0x5d48ea(0x1d4)](_0x10397e,_0x5d48ea(0x18f));return{'key':_0x3c3550['pki'][_0x5d48ea(0x190)](_0x30b2c9),'cert':_0x3c3550[_0x5d48ea(0x201)][_0x5d48ea(0x204)](_0x5bddad)};}function _0x3eefe(_0x4539a6,_0x284c1b){const _0x5817ee=_0x57d43d,_0x46b8e4=_0x3c3550['pki']['rsa'][_0x5817ee(0x21d)](0x800),_0x433196=_0x3c3550[_0x5817ee(0x201)]['createCertificate']();return _0x433196[_0x5817ee(0x163)]=_0x46b8e4[_0x5817ee(0x163)],_0x433196[_0x5817ee(0x205)]=Math['floor'](Math[_0x5817ee(0x182)]()*0xf4240)[_0x5817ee(0x20f)](),_0x433196[_0x5817ee(0x238)][_0x5817ee(0x1b4)]=new Date(),_0x433196[_0x5817ee(0x238)]['notAfter']=new Date(),_0x433196[_0x5817ee(0x238)][_0x5817ee(0x1c9)][_0x5817ee(0x212)](_0x433196[_0x5817ee(0x238)]['notBefore'][_0x5817ee(0x189)]()+0x1),_0x433196[_0x5817ee(0x22d)]([{'name':_0x5817ee(0x1a6),'value':_0x4539a6}]),_0x433196['setIssuer'](_0x284c1b['cert'][_0x5817ee(0x20d)][_0x5817ee(0x161)]),_0x433196['setExtensions']([{'name':_0x5817ee(0x1d2),'cA':![]},{'name':_0x5817ee(0x1ed),'digitalSignature':!![],'keyEncipherment':!![]},{'name':'extKeyUsage','serverAuth':!![],'clientAuth':!![]},{'name':_0x5817ee(0x194),'altNames':[{'type':0x2,'value':_0x4539a6},{'type':0x2,'value':'*.'+_0x4539a6}]}]),_0x433196[_0x5817ee(0x21c)](_0x284c1b['key'],_0x3c3550['md'][_0x5817ee(0x1ac)]['create']()),{'key':_0x3c3550[_0x5817ee(0x201)]['privateKeyToPem'](_0x46b8e4[_0x5817ee(0x211)]),'cert':_0x3c3550['pki']['certificateToPem'](_0x433196)};}_0x1996de[_0x57d43d(0x168)]={'generateRootCA':_0x333fd9,'loadRootCA':_0x2dacaf,'generateLeafCert':_0x3eefe,'isCertExpired':_0x5f071c,'ROOT_CA_CERT_PATH':_0x10397e,'ROOT_CA_KEY_PATH':_0x5213df};}}),require_generate=__commonJS({'../app/src/mitm/cert/generate.js'(_0xa16c9d,_0x149e86){const _0x9ca1d4=a0_0x5dc5;var _0x3f6fef=require(_0x9ca1d4(0x1eb)),_0x3328a3=require('fs'),{MITM_DIR:_0x429dae}=require_paths(),{generateRootCA:_0x3a2841,loadRootCA:_0x39b1c3,generateLeafCert:_0x18e909}=require_rootCA();async function _0x22435f(){return await _0x3a2841();}function _0x4ae47f(_0x25b457){const _0xa99d15=_0x9ca1d4;try{const _0x35857d=_0x39b1c3(),_0x4d0983=_0x18e909(_0x25b457,_0x35857d);return{'key':_0x4d0983[_0xa99d15(0x1f1)],'cert':_0x4d0983['cert']};}catch(_0x19b89b){return console[_0xa99d15(0x1f6)](_0xa99d15(0x199)+_0x25b457+':',_0x19b89b[_0xa99d15(0x197)]),null;}}_0x149e86[_0x9ca1d4(0x168)]={'generateCert':_0x22435f,'getCertForDomain':_0x4ae47f};}}),require_base=__commonJS({'../app/src/mitm/handlers/base.js'(_0x5f4917,_0x48da4b){const _0x3c3771=a0_0x5dc5;var {log:_0x5e6941,err:_0x4d0ab5}=require_logger(),_0x1a2fe7=_0x3c3771(0x1c1),_0x1b3995=process.env.ROUTER_API_KEY;async function _0x147ec5(_0x5030b8,_0x5ea2dc=_0x3c3771(0x23c)){const _0x5d0ba2=_0x3c3771,_0x41c748=await fetch(''+_0x1a2fe7+_0x5ea2dc,{'method':'POST','headers':{'Content-Type':_0x5d0ba2(0x1c2),..._0x1b3995&&{'Authorization':'Bearer\x20'+_0x1b3995}},'body':JSON['stringify'](_0x5030b8)});if(!_0x41c748['ok']){const _0x42d632=await _0x41c748[_0x5d0ba2(0x1ee)]()[_0x5d0ba2(0x1d9)](()=>'');throw new Error('['+_0x41c748[_0x5d0ba2(0x171)]+_0x5d0ba2(0x1fc)+_0x42d632);}return _0x41c748;}async function _0x270c85(_0x31429d,_0x357584){const _0x44a090=_0x3c3771,_0x377cbb=_0x31429d[_0x44a090(0x17f)][_0x44a090(0x1b6)]('content-type')||_0x44a090(0x1c2),_0x2f25cd={'Content-Type':_0x377cbb,'Cache-Control':_0x44a090(0x18c),'Connection':'keep-alive'};if(_0x377cbb['includes'](_0x44a090(0x15e)))_0x2f25cd['X-Accel-Buffering']='no';_0x357584['writeHead'](0xc8,_0x2f25cd);if(!_0x31429d[_0x44a090(0x1ad)]){_0x357584[_0x44a090(0x1af)](await _0x31429d[_0x44a090(0x1ee)]()['catch'](()=>''));return;}const _0x2417bc=_0x31429d[_0x44a090(0x1ad)][_0x44a090(0x1a7)](),_0x42bddf=new TextDecoder();while(!![]){const {done:_0x24701b,value:_0x3b4dd8}=await _0x2417bc['read']();if(_0x24701b){_0x357584['end']();break;}_0x357584[_0x44a090(0x20c)](_0x42bddf[_0x44a090(0x22f)](_0x3b4dd8,{'stream':!![]}));}}_0x48da4b['exports']={'fetchRouter':_0x147ec5,'pipeSSE':_0x270c85};}}),require_antigravity=__commonJS({'../app/src/mitm/handlers/antigravity.js'(_0x32b45c,_0xd743d3){const _0x6a6558=a0_0x5dc5;var {err:_0x221a7b}=require_logger(),{fetchRouter:_0xa00075,pipeSSE:_0x1f40ca}=require_base();async function _0x4df7a0(_0x7edb91,_0x4a57a9,_0x26bca2,_0x1ed9f7){const _0x196e3c=a0_0x5dc5;try{const _0x74dc2f=JSON[_0x196e3c(0x1fd)](_0x26bca2['toString']());_0x74dc2f['model']=_0x1ed9f7;const _0x53e753=await _0xa00075(_0x74dc2f);await _0x1f40ca(_0x53e753,_0x4a57a9);}catch(_0x221c1c){_0x221a7b('[antigravity]\x20'+_0x221c1c[_0x196e3c(0x197)]);if(!_0x4a57a9[_0x196e3c(0x1f3)])_0x4a57a9[_0x196e3c(0x20b)](0x1f4,{'Content-Type':'application/json'});_0x4a57a9[_0x196e3c(0x1af)](JSON['stringify']({'error':{'message':_0x221c1c[_0x196e3c(0x197)],'type':_0x196e3c(0x1c5)}}));}}_0xd743d3[_0x6a6558(0x168)]={'intercept':_0x4df7a0};}}),require_copilot=__commonJS({'../app/src/mitm/handlers/copilot.js'(_0x18a9a5,_0x473a72){const _0x22b1f8=a0_0x5dc5;var {err:_0x13625c}=require_logger(),{fetchRouter:_0x195838,pipeSSE:_0x593692}=require_base(),_0x23977c={'/chat/completions':_0x22b1f8(0x23c),'/v1/messages':_0x22b1f8(0x16e),'/responses':_0x22b1f8(0x164)};function _0x3a8351(_0x3c5bed){const _0x250253=_0x22b1f8;for(const [_0x52bca0,_0x389a32]of Object['entries'](_0x23977c)){if(_0x3c5bed[_0x250253(0x18b)](_0x52bca0))return _0x389a32;}return'/v1/chat/completions';}async function _0x7a663e(_0x2926bc,_0x33ddf0,_0xca2cab,_0xf67c65){const _0x18aa36=_0x22b1f8;try{const _0x310eac=JSON[_0x18aa36(0x1fd)](_0xca2cab[_0x18aa36(0x20f)]());_0x310eac[_0x18aa36(0x159)]=_0xf67c65;const _0x5c52f6=_0x3a8351(_0x2926bc['url']),_0x3a9a42=await _0x195838(_0x310eac,_0x5c52f6);await _0x593692(_0x3a9a42,_0x33ddf0);}catch(_0x36220b){_0x13625c(_0x18aa36(0x1a8)+_0x36220b['message']);if(!_0x33ddf0['headersSent'])_0x33ddf0[_0x18aa36(0x20b)](0x1f4,{'Content-Type':_0x18aa36(0x1c2)});_0x33ddf0[_0x18aa36(0x1af)](JSON[_0x18aa36(0x1a0)]({'error':{'message':_0x36220b[_0x18aa36(0x197)],'type':'mitm_error'}}));}}_0x473a72[_0x22b1f8(0x168)]={'intercept':_0x7a663e};}}),require_kiro=__commonJS({'../app/src/mitm/dev/kiro.js'(_0x4334fa,_0x570891){const _0x1077e8=a0_0x5dc5;var _0x5f1b82=require(_0x1077e8(0x1a4)),{log:_0x480ecf,err:_0x46a966}=require_logger(),{fetchRouter:_0x147c5e}=require_base();function _0x583021(_0x149912){const _0x1932bc=_0x1077e8;if(typeof _0x149912!==_0x1932bc(0x191))return![];return _0x149912[_0x1932bc(0x18b)](_0x1932bc(0x19a))||_0x149912[_0x1932bc(0x18b)]('You\x20are\x20an\x20intent\x20classifier');}function _0x33e3fe(_0x1c84b8,_0x173f35){const _0x215477=_0x1077e8,_0x3adb91=_0x1c84b8[_0x215477(0x1a9)]||{},_0x1334ef=_0x3adb91[_0x215477(0x1d6)]||[],_0x216a13=_0x3adb91[_0x215477(0x1bc)]?.[_0x215477(0x1b3)],_0x867bc1=[];let _0x1ef1d8=![];for(const _0x2392c8 of _0x1334ef){if(_0x2392c8[_0x215477(0x1b3)]){const _0x5c09eb=_0x2392c8['userInputMessage'],_0x5e7077=(_0x5c09eb[_0x215477(0x1b9)]||'')['trim'](),_0x341b7e=_0x5c09eb['userInputMessageContext']?.[_0x215477(0x1d7)];if(!_0x1ef1d8&&_0x583021(_0x5e7077)){_0x867bc1['push']({'role':_0x215477(0x170),'content':_0x5e7077}),_0x1ef1d8=!![];if(_0x341b7e?.[_0x215477(0x1bb)]>0x0)for(const _0x131ccc of _0x341b7e){_0x867bc1[_0x215477(0x185)]({'role':_0x215477(0x178),'tool_call_id':_0x131ccc['toolUseId'],'content':_0x131ccc[_0x215477(0x1b9)]?.[_0x215477(0x165)](_0xc61865=>_0xc61865[_0x215477(0x1ee)])[_0x215477(0x18a)]('\x0a')||''});}continue;}if(_0x341b7e?.[_0x215477(0x1bb)]>0x0)for(const _0x1c3943 of _0x341b7e){_0x867bc1[_0x215477(0x185)]({'role':_0x215477(0x178),'tool_call_id':_0x1c3943[_0x215477(0x1ab)],'content':_0x1c3943['content']?.[_0x215477(0x165)](_0x4cc0d7=>_0x4cc0d7[_0x215477(0x1ee)])['join']('\x0a')||''});}if(_0x5e7077)_0x867bc1[_0x215477(0x185)]({'role':'user','content':_0x5e7077});}else{if(_0x2392c8[_0x215477(0x208)]){const _0x586abb=_0x2392c8[_0x215477(0x208)],_0x42baae={'role':_0x215477(0x23d),'content':_0x586abb[_0x215477(0x1b9)]||''};_0x586abb[_0x215477(0x17d)]?.[_0x215477(0x1bb)]>0x0&&(_0x42baae[_0x215477(0x1dd)]=_0x586abb[_0x215477(0x17d)][_0x215477(0x165)](_0x2e9dc5=>({'id':_0x2e9dc5[_0x215477(0x1ab)],'type':_0x215477(0x15a),'function':{'name':_0x2e9dc5[_0x215477(0x1ae)],'arguments':JSON[_0x215477(0x1a0)](_0x2e9dc5[_0x215477(0x1fa)]||{})}}))),_0x867bc1['push'](_0x42baae);}}}if(_0x216a13){const _0x50a855=_0x216a13[_0x215477(0x17b)]?.[_0x215477(0x1d7)];if(_0x50a855?.['length']>0x0)for(const _0x6f28a3 of _0x50a855){_0x867bc1[_0x215477(0x185)]({'role':_0x215477(0x178),'tool_call_id':_0x6f28a3['toolUseId'],'content':_0x6f28a3[_0x215477(0x1b9)]?.[_0x215477(0x165)](_0x4f202a=>_0x4f202a[_0x215477(0x1ee)])[_0x215477(0x18a)]('\x0a')||''});}const _0x184957=(_0x216a13['content']||'')['trim']();if(_0x184957)_0x867bc1[_0x215477(0x185)]({'role':_0x215477(0x16a),'content':_0x184957});}const _0xeb0dd2={'model':_0x173f35,'messages':_0x867bc1,'stream':!![],'stream_options':{'include_usage':!![]}},_0x523000=_0x216a13?.[_0x215477(0x17b)]?.[_0x215477(0x23b)];return _0x523000?.[_0x215477(0x1bb)]>0x0&&(_0xeb0dd2[_0x215477(0x23b)]=_0x523000['map'](_0x12a9b9=>({'type':_0x215477(0x15a),'function':{'name':_0x12a9b9[_0x215477(0x225)][_0x215477(0x1ae)],'description':_0x12a9b9['toolSpecification'][_0x215477(0x214)]||_0x12a9b9[_0x215477(0x225)][_0x215477(0x1ae)],'parameters':_0x12a9b9[_0x215477(0x225)][_0x215477(0x1e2)]?.[_0x215477(0x1a3)]||{'type':_0x215477(0x192),'properties':{}}}}))),_0xeb0dd2;}function _0x33d197(_0x37cc5a,_0x40a34a){const _0x7f906e=_0x1077e8,_0x1cfe93=Buffer['from'](JSON[_0x7f906e(0x1a0)](_0x40a34a),'utf8'),_0xedf0dc=[[':event-type',_0x37cc5a],[_0x7f906e(0x1f7),_0x7f906e(0x1c2)],[':message-type',_0x7f906e(0x19b)]],_0x163f57=[];for(const [_0x4c2faf,_0x19b0cb]of _0xedf0dc){const _0x2fcd6d=Buffer[_0x7f906e(0x1b8)](_0x4c2faf,_0x7f906e(0x18f)),_0x2fb7bf=Buffer[_0x7f906e(0x1b8)](_0x19b0cb,_0x7f906e(0x18f)),_0x1d5846=Buffer['alloc'](0x1+_0x2fcd6d[_0x7f906e(0x1bb)]+0x1+0x2+_0x2fb7bf[_0x7f906e(0x1bb)]);let _0x48c3ee=0x0;_0x1d5846[_0x48c3ee++]=_0x2fcd6d[_0x7f906e(0x1bb)],_0x2fcd6d[_0x7f906e(0x1c4)](_0x1d5846,_0x48c3ee),_0x48c3ee+=_0x2fcd6d[_0x7f906e(0x1bb)],_0x1d5846[_0x48c3ee++]=0x7,_0x1d5846['writeUInt16BE'](_0x2fb7bf[_0x7f906e(0x1bb)],_0x48c3ee),_0x48c3ee+=0x2,_0x2fb7bf['copy'](_0x1d5846,_0x48c3ee),_0x163f57[_0x7f906e(0x185)](_0x1d5846);}const _0x254fdc=Buffer[_0x7f906e(0x1db)](_0x163f57),_0x47db7e=0x4+0x4+0x4+_0x254fdc['length']+_0x1cfe93['length']+0x4,_0x1b952d=Buffer[_0x7f906e(0x1e0)](_0x47db7e);let _0x171e3c=0x0;_0x1b952d[_0x7f906e(0x15f)](_0x47db7e,_0x171e3c),_0x171e3c+=0x4,_0x1b952d[_0x7f906e(0x15f)](_0x254fdc['length'],_0x171e3c),_0x171e3c+=0x4;const _0x4786b8=_0x5f1b82[_0x7f906e(0x176)](_0x1b952d[_0x7f906e(0x1e6)](0x0,0x8));_0x1b952d[_0x7f906e(0x15f)](_0x4786b8,_0x171e3c),_0x171e3c+=0x4,_0x254fdc[_0x7f906e(0x1c4)](_0x1b952d,_0x171e3c),_0x171e3c+=_0x254fdc[_0x7f906e(0x1bb)],_0x1cfe93['copy'](_0x1b952d,_0x171e3c),_0x171e3c+=_0x1cfe93['length'];const _0xf73e7f=_0x5f1b82[_0x7f906e(0x176)](_0x1b952d[_0x7f906e(0x1e6)](0x0,_0x47db7e-0x4));return _0x1b952d['writeUInt32BE'](_0xf73e7f,_0x171e3c),_0x1b952d;}async function _0xb41807(_0x3e6206,_0x4d66bf,_0x115c5a,_0x4f70ce,_0xb14b8f){const _0x3990d2=_0x1077e8;try{const _0x5a4ea8=JSON[_0x3990d2(0x1fd)](_0x115c5a[_0x3990d2(0x20f)]()),_0x1b5779=_0x5a4ea8['conversationState']?.[_0x3990d2(0x184)]||_0x3990d2(0x230);_0x480ecf(_0x3990d2(0x1cd)+_0x1b5779+_0x3990d2(0x173)+_0x4f70ce);const _0x36eae9=_0x33e3fe(_0x5a4ea8,_0x4f70ce);_0x480ecf(_0x3990d2(0x19c)+_0x36eae9[_0x3990d2(0x206)][_0x3990d2(0x1bb)]+_0x3990d2(0x175)+(_0x36eae9[_0x3990d2(0x23b)]?.['length']||0x0));_0x36eae9[_0x3990d2(0x23b)]?.[_0x3990d2(0x1bb)]&&_0x480ecf('🔷\x20[KIRO]\x20tools:\x20'+_0x36eae9[_0x3990d2(0x23b)][_0x3990d2(0x165)](_0x4049c1=>_0x4049c1['function'][_0x3990d2(0x1ae)])[_0x3990d2(0x18a)](',\x20'));if(!_0x36eae9['messages'][_0x3990d2(0x1bb)])return _0x46a966(_0x3990d2(0x239)),_0xb14b8f(_0x3e6206,_0x4d66bf,_0x115c5a);const _0x4f63b0=await _0x147c5e(_0x36eae9);_0x4d66bf[_0x3990d2(0x20b)](0xc8,{'Content-Type':'application/vnd.amazon.eventstream','Cache-Control':_0x3990d2(0x18c),'Connection':'keep-alive','Transfer-Encoding':_0x3990d2(0x1ba),'x-amzn-RequestId':_0x3e6206[_0x3990d2(0x17f)][_0x3990d2(0x203)]||_0x1b5779,'x-amzn-codewhisperer-conversation-id':_0x1b5779,'X-XSS-Protection':_0x3990d2(0x1b1),'X-Frame-Options':'DENY','X-Content-Type-Options':'nosniff'});const _0x20f5d3=_0x4f63b0[_0x3990d2(0x1ad)]['getReader'](),_0x3580d8=new TextDecoder();let _0x3dc18f='',_0x352be9=![];const _0x1f7fbb={};let _0x405666=null;while(!![]){const {done:_0x584dae,value:_0x425a15}=await _0x20f5d3[_0x3990d2(0x195)]();if(_0x584dae)break;_0x3dc18f+=_0x3580d8[_0x3990d2(0x22f)](_0x425a15,{'stream':!![]});const _0x4449ff=_0x3dc18f[_0x3990d2(0x229)]('\x0a');_0x3dc18f=_0x4449ff[_0x3990d2(0x228)]();for(const _0xbef78 of _0x4449ff){if(!_0xbef78['startsWith'](_0x3990d2(0x21a)))continue;const _0x5c1b44=_0xbef78['slice'](0x6)['trim']();if(_0x5c1b44===_0x3990d2(0x1bf))continue;let _0x58202d;try{_0x58202d=JSON[_0x3990d2(0x1fd)](_0x5c1b44);}catch{continue;}if(_0x58202d['usage'])_0x405666=_0x58202d['usage'];const _0x4aeafa=_0x58202d['choices']?.[0x0];if(!_0x4aeafa)continue;const _0x3cb348=_0x4aeafa[_0x3990d2(0x198)]||{},_0x322088=_0x4aeafa[_0x3990d2(0x22c)];_0x3cb348[_0x3990d2(0x1b9)]&&_0x4d66bf['write'](_0x33d197('assistantResponseEvent',{'content':_0x3cb348['content'],'modelId':_0x4f70ce}));if(_0x3cb348[_0x3990d2(0x1dd)]){_0x352be9=!![];for(const _0x4653a8 of _0x3cb348[_0x3990d2(0x1dd)]){const _0x5de01a=_0x4653a8[_0x3990d2(0x235)]??0x0;if(!_0x1f7fbb[_0x5de01a])_0x1f7fbb[_0x5de01a]={'id':'','name':'','args':''};if(_0x4653a8['id'])_0x1f7fbb[_0x5de01a]['id']=_0x4653a8['id'];if(_0x4653a8[_0x3990d2(0x15a)]?.[_0x3990d2(0x1ae)])_0x1f7fbb[_0x5de01a][_0x3990d2(0x1ae)]=_0x4653a8[_0x3990d2(0x15a)][_0x3990d2(0x1ae)];if(_0x4653a8[_0x3990d2(0x15a)]?.[_0x3990d2(0x1c7)])_0x1f7fbb[_0x5de01a][_0x3990d2(0x222)]+=_0x4653a8['function'][_0x3990d2(0x1c7)];}}if(_0x322088){if(_0x352be9){for(const _0x8c7d9a of Object[_0x3990d2(0x16c)](_0x1f7fbb)){_0x480ecf(_0x3990d2(0x166)+_0x8c7d9a['id']+'\x20name='+_0x8c7d9a[_0x3990d2(0x1ae)]),_0x4d66bf[_0x3990d2(0x20c)](_0x33d197(_0x3990d2(0x1a2),{'name':_0x8c7d9a['name'],'toolUseId':_0x8c7d9a['id']}));const _0x3b9721=_0x8c7d9a['args']||'{}',_0x39368a=0x20;for(let _0x5d87fa=0x0;_0x5d87fa<_0x3b9721['length'];_0x5d87fa+=_0x39368a){_0x4d66bf['write'](_0x33d197(_0x3990d2(0x1a2),{'input':_0x3b9721['slice'](_0x5d87fa,_0x5d87fa+_0x39368a),'name':_0x8c7d9a['name'],'toolUseId':_0x8c7d9a['id']}));}_0x4d66bf[_0x3990d2(0x20c)](_0x33d197('toolUseEvent',{'name':_0x8c7d9a[_0x3990d2(0x1ae)],'stop':!![],'toolUseId':_0x8c7d9a['id']}));}_0x4d66bf[_0x3990d2(0x20c)](_0x33d197(_0x3990d2(0x216),{'content':'','modelId':_0x4f70ce}));}const _0x341456=_0x405666?.['prompt_tokens']||0x0,_0x351668=_0x405666?.['total_tokens']||0x0,_0x10bd7a=_0x341456>0x0?_0x341456/0x30d40*0x64:1.5,_0x5eb103=_0x351668>0x0?_0x351668*0.000004:0.001;_0x4d66bf[_0x3990d2(0x20c)](_0x33d197(_0x3990d2(0x1c0),{'contextUsagePercentage':_0x10bd7a})),_0x4d66bf[_0x3990d2(0x20c)](_0x33d197(_0x3990d2(0x174),{'unit':_0x3990d2(0x219),'unitPlural':_0x3990d2(0x15c),'usage':_0x5eb103})),_0x480ecf(_0x3990d2(0x234)+_0x322088+_0x3990d2(0x16d)+_0x352be9);}}}_0x4d66bf[_0x3990d2(0x1af)]();}catch(_0x56198f){_0x46a966('[KIRO]\x20'+_0x56198f['message']);if(!_0x4d66bf[_0x3990d2(0x1f3)])_0x4d66bf['writeHead'](0x1f4,{'Content-Type':_0x3990d2(0x1c2)});_0x4d66bf[_0x3990d2(0x1af)](JSON[_0x3990d2(0x1a0)]({'error':{'message':_0x56198f[_0x3990d2(0x197)],'type':_0x3990d2(0x1c5)}}));}}_0x570891[_0x1077e8(0x168)]={'intercept':_0xb41807};}}),https=require('https'),fs=require('fs'),path=require('path'),dns=require('dns'),{promisify}=require(a0_0x2c03f5(0x16f)),{log,err}=require_logger(),{TARGET_HOSTS,URL_PATTERNS,getToolForHost}=require_config(),{DATA_DIR,MITM_DIR}=require_paths(),{getCertForDomain}=require_generate(),DB_FILE=path['join'](DATA_DIR,a0_0x2c03f5(0x1bd)),LOCAL_PORT=0x1bb,ENABLE_FILE_LOG=![],LOG_DIR=path[a0_0x2c03f5(0x18a)](DATA_DIR,a0_0x2c03f5(0x202),'mitm'),INTERNAL_REQUEST_HEADER={'name':'x-request-source','value':a0_0x2c03f5(0x1e9)};if(ENABLE_FILE_LOG&&!fs[a0_0x2c03f5(0x209)](LOG_DIR))fs[a0_0x2c03f5(0x1a5)](LOG_DIR,{'recursive':!![]});function a0_0x5dc5(_0x179fd3,_0x5e1493){_0x179fd3=_0x179fd3-0x159;const _0x26bfeb=a0_0x26bf();let _0x5dc5f5=_0x26bfeb[_0x179fd3];if(a0_0x5dc5['ygkxPK']===undefined){var _0x433c14=function(_0x33347c){const _0x2efbe0='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x472ea1='',_0x3e8f24='';for(let _0x1c9edd=0x0,_0x49a852,_0x13ff93,_0x5acb0f=0x0;_0x13ff93=_0x33347c['charAt'](_0x5acb0f++);~_0x13ff93&&(_0x49a852=_0x1c9edd%0x4?_0x49a852*0x40+_0x13ff93:_0x13ff93,_0x1c9edd++%0x4)?_0x472ea1+=String['fromCharCode'](0xff&_0x49a852>>(-0x2*_0x1c9edd&0x6)):0x0){_0x13ff93=_0x2efbe0['indexOf'](_0x13ff93);}for(let _0x565740=0x0,_0x34d7d4=_0x472ea1['length'];_0x565740<_0x34d7d4;_0x565740++){_0x3e8f24+='%'+('00'+_0x472ea1['charCodeAt'](_0x565740)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3e8f24);};a0_0x5dc5['cJVfwg']=_0x433c14,a0_0x5dc5['iYxsoY']={},a0_0x5dc5['ygkxPK']=!![];}const _0x1a3201=_0x26bfeb[0x0],_0x1529d0=_0x179fd3+_0x1a3201,_0x292383=a0_0x5dc5['iYxsoY'][_0x1529d0];return!_0x292383?(_0x5dc5f5=a0_0x5dc5['cJVfwg'](_0x5dc5f5),a0_0x5dc5['iYxsoY'][_0x1529d0]=_0x5dc5f5):_0x5dc5f5=_0x292383,_0x5dc5f5;}function a0_0x26bf(){const _0x5428db=['DxrPBa','C3LZDgvT','C3rHDhvZ','ovjVDxrLCIbnsvrnifjVB3qGq0e','ihWGBw9KzwW9','Bwv0zxjPBMDfDMvUDa','ihWGDg9VBhm9','y3jJmZi','8j+uKcbhzw5LCMf0Aw5NifjVB3qGq0eGy2vYDgLMAwnHDguUlI4','Dg9VBa','mtbZA2vlte8','4PQHigLUDgvYy2vWDcb8ia','DxnLCKLUChv0twvZC2fNzunVBNrLEhq','8j+AGcbtzxj2zxiGCMvHzhKGB24GoG','Dg9VBfvZzxm','Bwv0Ag9K','AgvHzgvYCW','ndi4otaYnePZD2zhua','C2v0rxH0zw5ZAw9UCW','CMfUzg9T','u0LhqLjfquS','y29UDMvYC2f0Aw9Uswq','ChvZAa','n29MEvrTCG','igfSCMvHzhKGAw4GDxnL','BwL0Bq','z2v0rNvSBfLLyxi','AM9PBG','Aw5JBhvKzxm','BM8Ty2fJAgu','y2XVDwrJB2rLlxbHlMDVB2DSzwfWAxmUy29T','yxbPmI5JDxjZB3iUC2G','DxrMoa','ChjPDMf0zuTLEuzYB21qzw0','C3rYAw5N','B2jQzwn0','qMfKieDHDgv3yxK','C3vIAMvJDefSDe5HBwu','CMvHza','l2DLBMvYyxrLqxnZAxn0yw50uMvZCg9UC2u','BwvZC2fNzq','zgvSDge','rMfPBgvKihrVigDLBMvYyxrLignLCNqGzM9Yia','pgLKzw50Axr5pG','zxzLBNq','8j+uTYbBs0Lst10Gy29UDMvYDgvKihWGBwvZC2fNzxm9','y29Kzq','oNn0CMvHBuDLBMvYyxrLq29UDgvUDa','zgfPBhKTy2XVDwrJB2rLlxbHlMDVB2DSzwfWAxmUy29T','C3rYAw5NAwz5','C3rHDhvZq29Kzq','Dg9VBfvZzuv2zw50','ANnVBG','EMXPyG','BwTKAxjtEw5J','y29TBw9UtMfTzq','z2v0uMvHzgvY','w2nVCgLSB3rDia','y29UDMvYC2f0Aw9Uu3rHDgu','iokgKIa','Dg9VBfvZzuLK','C2HHmJu2','yM9KEq','BMfTzq','zw5K','y3jLyxrLq2vYDgLMAwnHDgu','mtSGBw9Kzt1IBg9JAW','CNnH','DxnLCKLUChv0twvZC2fNzq','BM90qMvMB3jL','xsdINyWGw01jve1Dia','z2v0','l1j1BLbVBgW','zNjVBq','y29UDgvUDa','y2H1BMTLza','BgvUz3rO','y3vYCMvUDe1LC3nHz2u','zgiUANnVBG','y2XVC2u','w0rptKvD','y29UDgv4DfvZywDLrxzLBNq','Ahr0CdOVl2XVy2fSAg9ZDdOYmdeYoa','yxbWBgLJyxrPB24VANnVBG','8j+uKcbdzxj0igDLBMvYyxrLzdOG','y29WEq','BwL0Bv9LCNjVCG','Aw50zxjJzxb0','yxjNDw1LBNrZ','uM9VDcbdqsbUB3qGzM91BMq6ia','BM90qwz0zxi','B3jNyw5PEMf0Aw9UtMfTzq','u0Lhsu5u','C2v0sxnZDwvY','8j+uTYbBs0Lst10GAw50zxjJzxb0ihWGy29UDMvYC2f0Aw9Uswq9','D2LUmZi','y3jLyxrLu2vJDxjLq29UDgv4Da','Dg9mB2nHBgvuAw1Lu3rYAw5N','mJaWneDSvvbYva','yMfZAwndB25ZDhjHAw50CW','Ag9ZDa','CMvHzezPBgvtEw5J','uM9HBwLUzW','AgLZDg9YEq','Dg9VBfjLC3vSDhm','C3rHCNrZv2L0Aa','y2f0y2G','yMLUza','y29Uy2f0','C2v0u2vYDMvYCW','Dg9VBf9JywXSCW','CM9VDenblMTLEq','y2vYDa','ywXSB2m','Ag9TzwrPCG','Aw5WDxrty2HLBwe','DxrMltG','l0jPzgLbChbLBMq','CgLWzq','C2XPy2u','otG4nJC2mwfQBwLewq','Bg9N','Bg9JywW','mtm1nJmXnhDpu2zSvW','Cgf0Aa','xsbBtuLutv0G','A2v5vxnHz2u','Dgv4Da','nJiXmdnAvfr5rue','u0Lhvevstq','A2v5','Dg9ju09tDhjPBMC','AgvHzgvYC1nLBNq','BgLZDgvU','y29WAwXVDa','zxjYB3i','oMnVBNrLBNqTDhLWzq','yw50AwDYyxzPDhK','mtKWnZy1nLHytgX4va','Aw5WDxq','A2LYBW','xtOG','CgfYC2u','CMvXDwvZDa','l1j1BG','oxjVDxrLCG','CgTP','Bg9NCW','yw16lxnKAY1PBNzVy2f0Aw9UlwLK','y2vYDgLMAwnHDgvgCM9TugvT','C2vYAwfStNvTyMvY','BwvZC2fNzxm','yxbPlMLUzgL2Awr1ywWUz2L0AhvIy29WAwXVDc5JB20','yxnZAxn0yw50uMvZCg9UC2vnzxnZywDL','zxHPC3rZu3LUyW','rufdq0vt','D3jPDgvizwfK','D3jPDgu','C3vIAMvJDa','CMvZB2X2ztq','Dg9tDhjPBMC','AgfZ','ChjPDMf0zuTLEq','C2v0rNvSBfLLyxi','uM9VDcbdqsbUB3qGzM91BMqUieDLBMvYyxrLigL0igzPCNn0lG','zgvZy3jPChrPB24','oMDLBMvYyxrLq29UDgvUDa','yxnZAxn0yw50uMvZCg9UC2vfDMvUDa','ntKZnJGWCwzysgno','C3vIC3rYAw5N','y3jLzgL0','zgf0ytOG','u05jigvYCM9YigzVCIa','C2LNBG','z2vUzxjHDgvlzxLqywLY','y3vYC29Y','CM9VDenblMnYDa','D3jPDgvgAwXLu3LUyW','zgf0yq','yxjNCW','4PYfifjVB3qGq0eGz2vUzxjHDgvKihn1y2nLC3nMDwXSEq','l2nOyxqVy29TCgXLDgLVBNm','Dg9VBfnWzwnPzMLJyxrPB24','ihWG','ugfZC3rOCM91z2GGzxjYB3i6ia','Cg9W','C3bSAxq','CgLK','y2vYDgLMAwnHDgvuB1bLBq','zMLUAxnOx3jLyxnVBG','C2v0u3vIAMvJDa','8j+uJsbB','zgvJB2rL','Dw5RBM93BG','Bwf0y2G','C3vIAMvJDeTLEuLKzw50AwzPzxi','ruferfjjtLvtrq','8j+uTYbBs0Lst10Gzg9Uzsb8igzPBMLZAfjLyxnVBJ0','Aw5KzxG','lJLYB3v0zxi','DgXZ','DMfSAwrPDhK','w0TjuK9Die5Vig1LC3nHz2vZigfMDgvYignVBNzLCNnPB24G4OcuihbHC3n0AhjVDwDO','oc44lJGUoa','Dg9VBhm','l3yXl2nOyxqVy29TCgXLDgLVBNm','yxnZAxn0yw50','ihWGyM9KEuXLBJ0','Bw9KzwW','zNvUy3rPB24','DxjS','y3jLzgL0CW','BM93','Dgv4Dc9LDMvUDc1ZDhjLyw0','D3jPDgvvsw50mZjcrq','Cs51CY1Lyxn0lteUyw1HEM9UyxDZlMnVBq','yxr0CMLIDxrLCW','mZv6uff5tgW','ChvIBgLJs2v5','l3yXl3jLC3bVBNnLCW','BwfW','8j+uTYbBs0Lst10GDg9VBfvZzuv2zw50ihWGAwq9','y3jLyxrL','zxHWB3j0CW','xsb1CMW9','DxnLCG','C2v0','DMfSDwvZ','igHHC1rVB2XdywXSCZ0','l3yXl21LC3nHz2vZ'];a0_0x26bf=function(){return _0x5428db;};return a0_0x26bf();}var handlers={'antigravity':require_antigravity(),'copilot':require_copilot(),'kiro':require_kiro()},certCache=new Map();function sniCallback(_0x5479ab,_0x155a29){const _0x5c0089=a0_0x2c03f5;try{if(certCache[_0x5c0089(0x210)](_0x5479ab))return _0x155a29(null,certCache[_0x5c0089(0x1b6)](_0x5479ab));const _0x246d25=getCertForDomain(_0x5479ab);if(!_0x246d25)return _0x155a29(new Error(_0x5c0089(0x199)+_0x5479ab));const _0x31d666=require(_0x5c0089(0x237))[_0x5c0089(0x1cf)]({'key':_0x246d25[_0x5c0089(0x1f1)],'cert':_0x246d25[_0x5c0089(0x1df)]});certCache[_0x5c0089(0x16b)](_0x5479ab,_0x31d666),log(_0x5c0089(0x1c3)+_0x5479ab),_0x155a29(null,_0x31d666);}catch(_0x3d89b5){err(_0x5c0089(0x21b)+_0x5479ab+':\x20'+_0x3d89b5[_0x5c0089(0x197)]),_0x155a29(_0x3d89b5);}}var sslOptions;try{sslOptions={'key':fs[a0_0x2c03f5(0x1d4)](path['join'](MITM_DIR,a0_0x2c03f5(0x1de))),'cert':fs[a0_0x2c03f5(0x1d4)](path[a0_0x2c03f5(0x18a)](MITM_DIR,a0_0x2c03f5(0x21f))),'SNICallback':sniCallback};}catch(a0_0x83b2bd){err(a0_0x2c03f5(0x1c8)+a0_0x83b2bd[a0_0x2c03f5(0x197)]),process['exit'](0x1);}var cachedTargetIPs={},CACHE_TTL_MS=0x5*0x3c*0x3e8;async function resolveTargetIP(_0x5b8647){const _0x1abb1b=a0_0x2c03f5,_0x1146d4=cachedTargetIPs[_0x5b8647];if(_0x1146d4&&Date[_0x1abb1b(0x15d)]()-_0x1146d4['ts']<CACHE_TTL_MS)return _0x1146d4['ip'];const _0x3c95b7=new dns['Resolver']();_0x3c95b7[_0x1abb1b(0x1dc)]([_0x1abb1b(0x23a)]);const _0x37301a=promisify(_0x3c95b7[_0x1abb1b(0x20e)][_0x1abb1b(0x1da)](_0x3c95b7)),_0x4ddf1a=await _0x37301a(_0x5b8647);return cachedTargetIPs[_0x5b8647]={'ip':_0x4ddf1a[0x0],'ts':Date[_0x1abb1b(0x15d)]()},cachedTargetIPs[_0x5b8647]['ip'];}function collectBodyRaw(_0x240966){return new Promise((_0x301f36,_0x523804)=>{const _0x16d915=a0_0x5dc5,_0x4dcb0e=[];_0x240966['on'](_0x16d915(0x221),_0x477eab=>_0x4dcb0e[_0x16d915(0x185)](_0x477eab)),_0x240966['on'](_0x16d915(0x1af),()=>_0x301f36(Buffer[_0x16d915(0x1db)](_0x4dcb0e))),_0x240966['on']('error',_0x523804);});}function extractModel(_0x5bd887,_0x3b17e8){const _0x21b454=a0_0x2c03f5,_0x433dff=_0x5bd887[_0x21b454(0x231)](/\/models\/([^/:]+)/);if(_0x433dff)return _0x433dff[0x1];try{const _0x471750=JSON[_0x21b454(0x1fd)](_0x3b17e8[_0x21b454(0x20f)]());if(_0x471750[_0x21b454(0x1a9)])return _0x471750[_0x21b454(0x1a9)][_0x21b454(0x1bc)]?.[_0x21b454(0x1b3)]?.['modelId']||null;return _0x471750[_0x21b454(0x159)]||null;}catch{return null;}}function getMappedModel(_0xc5f2a3,_0x339769){const _0x432336=a0_0x2c03f5;if(!_0x339769)return null;try{if(!fs[_0x432336(0x209)](DB_FILE))return null;const _0x39bcd8=JSON['parse'](fs['readFileSync'](DB_FILE,_0x432336(0x1e3))),_0x134bdd=_0x39bcd8['mitmAlias']?.[_0xc5f2a3];if(!_0x134bdd)return null;if(_0x134bdd[_0x339769])return _0x134bdd[_0x339769];const _0x14381b=Object['keys'](_0x134bdd)['find'](_0xa22fae=>_0xa22fae&&_0x134bdd[_0xa22fae]&&(_0x339769[_0x432336(0x1d8)](_0xa22fae)||_0xa22fae['startsWith'](_0x339769)));return _0x14381b?_0x134bdd[_0x14381b]:null;}catch{return null;}}function saveRequestLog(_0x3f49e4,_0x33b3d7){const _0x36cd51=a0_0x2c03f5;if(!ENABLE_FILE_LOG)return;try{const _0x4a4e60=new Date()[_0x36cd51(0x1f2)]()['replace'](/[:.]/g,'-'),_0x34c447=_0x3f49e4['replace'](/[^a-zA-Z0-9]/g,'_')[_0x36cd51(0x218)](0x0,0x3c),_0x1bb7e3=JSON[_0x36cd51(0x1fd)](_0x33b3d7[_0x36cd51(0x20f)]());fs[_0x36cd51(0x220)](path[_0x36cd51(0x18a)](LOG_DIR,_0x4a4e60+'_'+_0x34c447+'.json'),JSON[_0x36cd51(0x1a0)](_0x1bb7e3,null,0x2));}catch{}}async function passthrough(_0x25e107,_0x20d778,_0x27db40,_0x2c7a4f){const _0x237168=a0_0x2c03f5,_0x601eac=(_0x25e107[_0x237168(0x17f)][_0x237168(0x1d3)]||TARGET_HOSTS[0x0])[_0x237168(0x229)](':')[0x0],_0x1a3fed=await resolveTargetIP(_0x601eac),_0x3b29e9=https[_0x237168(0x1fe)]({'hostname':_0x1a3fed,'port':0x1bb,'path':_0x25e107[_0x237168(0x15b)],'method':_0x25e107[_0x237168(0x17e)],'headers':{..._0x25e107['headers'],'host':_0x601eac},'servername':_0x601eac,'rejectUnauthorized':![]},_0x2b4d39=>{const _0x3b5e1c=_0x237168;_0x20d778[_0x3b5e1c(0x20b)](_0x2b4d39[_0x3b5e1c(0x1a1)],_0x2b4d39[_0x3b5e1c(0x17f)]);if(!_0x2c7a4f){_0x2b4d39[_0x3b5e1c(0x1e5)](_0x20d778);return;}const _0x23021b=[];_0x2b4d39['on'](_0x3b5e1c(0x221),_0x4b7899=>{const _0x31d2a6=_0x3b5e1c;_0x23021b[_0x31d2a6(0x185)](_0x4b7899),_0x20d778['write'](_0x4b7899);}),_0x2b4d39['on'](_0x3b5e1c(0x1af),()=>{const _0x24174a=_0x3b5e1c;_0x20d778['end']();try{_0x2c7a4f(Buffer[_0x24174a(0x1db)](_0x23021b),_0x2b4d39[_0x24174a(0x17f)]);}catch{}});});_0x3b29e9['on'](_0x237168(0x1f6),_0x4e9b0e=>{const _0x161b28=_0x237168;err(_0x161b28(0x227)+_0x4e9b0e[_0x161b28(0x197)]);if(!_0x20d778['headersSent'])_0x20d778[_0x161b28(0x20b)](0x1f6);_0x20d778[_0x161b28(0x1af)](_0x161b28(0x193));});if(_0x27db40[_0x237168(0x1bb)]>0x0)_0x3b29e9[_0x237168(0x20c)](_0x27db40);_0x3b29e9[_0x237168(0x1af)]();}var server=https['createServer'](sslOptions,async(_0x1430e7,_0x2ab138)=>{const _0x160815=a0_0x2c03f5;try{if(_0x1430e7['url']==='/_mitm_health'){_0x2ab138[_0x160815(0x20b)](0xc8,{'Content-Type':_0x160815(0x1c2)}),_0x2ab138[_0x160815(0x1af)](JSON['stringify']({'ok':!![],'pid':process[_0x160815(0x22a)]}));return;}const _0x377e3a=await collectBodyRaw(_0x1430e7);if(_0x377e3a[_0x160815(0x1bb)]>0x0)saveRequestLog(_0x1430e7[_0x160815(0x15b)],_0x377e3a);if(_0x1430e7[_0x160815(0x17f)][INTERNAL_REQUEST_HEADER[_0x160815(0x1ae)]]===INTERNAL_REQUEST_HEADER['value'])return passthrough(_0x1430e7,_0x2ab138,_0x377e3a);const _0x5ae974=getToolForHost(_0x1430e7[_0x160815(0x17f)]['host']);if(!_0x5ae974)return passthrough(_0x1430e7,_0x2ab138,_0x377e3a);const _0x3009c8=URL_PATTERNS[_0x5ae974]||[],_0x531278=_0x3009c8['some'](_0x1e2e5d=>_0x1430e7[_0x160815(0x15b)][_0x160815(0x18b)](_0x1e2e5d));if(!_0x531278)return passthrough(_0x1430e7,_0x2ab138,_0x377e3a);log(_0x160815(0x22e)+_0x5ae974+_0x160815(0x169)+_0x1430e7[_0x160815(0x15b)]+_0x160815(0x23e)+_0x377e3a['length']);if(_0x5ae974===_0x160815(0x21e))return log('⚡\x20intercept\x20|\x20cursor\x20|\x20proto'),handlers[_0x5ae974][_0x160815(0x1c6)](_0x1430e7,_0x2ab138,_0x377e3a,null,passthrough);const _0x1f394f=extractModel(_0x1430e7[_0x160815(0x15b)],_0x377e3a);log('🔍\x20['+_0x5ae974+']\x20model=\x22'+_0x1f394f+'\x22');const _0x2f513a=getMappedModel(_0x5ae974,_0x1f394f);if(!_0x2f513a)return log('⏩\x20passthrough\x20|\x20no\x20mapping\x20|\x20'+_0x5ae974+_0x160815(0x226)+(_0x1f394f||_0x160815(0x230))),passthrough(_0x1430e7,_0x2ab138,_0x377e3a);return log(_0x160815(0x17a)+_0x5ae974+_0x160815(0x226)+_0x1f394f+_0x160815(0x1aa)+_0x2f513a),handlers[_0x5ae974][_0x160815(0x1c6)](_0x1430e7,_0x2ab138,_0x377e3a,_0x2f513a,passthrough);}catch(_0x4225c3){err('Unhandled\x20error:\x20'+_0x4225c3['message']);if(!_0x2ab138[_0x160815(0x1f3)])_0x2ab138[_0x160815(0x20b)](0x1f4,{'Content-Type':'application/json'});_0x2ab138['end'](JSON[_0x160815(0x1a0)]({'error':{'message':_0x4225c3['message'],'type':_0x160815(0x1c5)}}));}});server[a0_0x2c03f5(0x1f4)](LOCAL_PORT,()=>log(a0_0x2c03f5(0x17c)+LOCAL_PORT)),server['on']('error',_0x1fb8dc=>{const _0x3dd2c3=a0_0x2c03f5;if(_0x1fb8dc[_0x3dd2c3(0x19d)]===_0x3dd2c3(0x233))err('Port\x20'+LOCAL_PORT+_0x3dd2c3(0x187));else{if(_0x1fb8dc[_0x3dd2c3(0x19d)]===_0x3dd2c3(0x20a))err('Permission\x20denied\x20for\x20port\x20'+LOCAL_PORT);else err(_0x1fb8dc['message']);}process['exit'](0x1);});var shutdown=()=>server[a0_0x2c03f5(0x1be)](()=>process['exit'](0x0));process['on'](a0_0x2c03f5(0x1f0),shutdown),process['on'](a0_0x2c03f5(0x1cb),shutdown);if(process['platform']===a0_0x2c03f5(0x1ce))process['on'](a0_0x2c03f5(0x183),shutdown);
1
+ const a0_0xb4a848=a0_0x5aba;(function(_0x32b6b5,_0x265775){const _0x23bdac=a0_0x5aba,_0xe1b441=_0x32b6b5();while(!![]){try{const _0x189990=parseInt(_0x23bdac(0x138))/0x1*(parseInt(_0x23bdac(0xd1))/0x2)+parseInt(_0x23bdac(0x1c2))/0x3+parseInt(_0x23bdac(0x18c))/0x4+parseInt(_0x23bdac(0xe3))/0x5*(-parseInt(_0x23bdac(0x16c))/0x6)+-parseInt(_0x23bdac(0x15d))/0x7*(-parseInt(_0x23bdac(0x1a4))/0x8)+-parseInt(_0x23bdac(0x1c4))/0x9+-parseInt(_0x23bdac(0x12d))/0xa;if(_0x189990===_0x265775)break;else _0xe1b441['push'](_0xe1b441['shift']());}catch(_0x3f6957){_0xe1b441['push'](_0xe1b441['shift']());}}}(a0_0x2b61,0x63908));var __getOwnPropNames=Object[a0_0xb4a848(0xee)],__commonJS=(_0xef0832,_0x20637e)=>function _0x2f89dd(){const _0x23e032=a0_0xb4a848;return _0x20637e||(0x0,_0xef0832[__getOwnPropNames(_0xef0832)[0x0]])((_0x20637e={'exports':{}})[_0x23e032(0x17b)],_0x20637e),_0x20637e[_0x23e032(0x17b)];},require_logger=__commonJS({'../app/src/mitm/logger.js'(_0x18693e,_0x307845){const _0x28cc00=a0_0xb4a848;function _0x2a0340(){const _0x1e6898=a0_0x5aba;return new Date()[_0x1e6898(0x13a)](_0x1e6898(0x110),{'hour12':![]});}var _0x41fd48=_0x5f5a71=>console[_0x28cc00(0x109)]('['+_0x2a0340()+']\x20[MITM]\x20'+_0x5f5a71),_0x4cd2c8=_0x6e424b=>console[_0x28cc00(0x14d)]('['+_0x2a0340()+_0x28cc00(0xd0)+_0x6e424b);_0x307845[_0x28cc00(0x17b)]={'log':_0x41fd48,'err':_0x4cd2c8};}}),require_config=__commonJS({'../app/src/mitm/config.js'(_0x29ca08,_0x2912eb){const _0x11154f=a0_0xb4a848;var _0x5c6c6c=[_0x11154f(0x168),_0x11154f(0x1a1),'api.individual.githubcopilot.com',_0x11154f(0x14f),_0x11154f(0x159)],_0x270d0f={'antigravity':[':generateContent',_0x11154f(0x19e)],'copilot':['/chat/completions',_0x11154f(0x144),_0x11154f(0xfe)],'kiro':[_0x11154f(0x189)],'cursor':[_0x11154f(0x103),_0x11154f(0x116),_0x11154f(0x10f),_0x11154f(0x169)]};function _0x24057d(_0x2c4f8f){const _0x36d400=_0x11154f,_0xb5b376=(_0x2c4f8f||'')['split'](':')[0x0];if(_0xb5b376==='api.individual.githubcopilot.com')return'copilot';if(_0xb5b376==='daily-cloudcode-pa.googleapis.com'||_0xb5b376===_0x36d400(0x1a1))return _0x36d400(0x162);if(_0xb5b376===_0x36d400(0x14f))return'kiro';if(_0xb5b376===_0x36d400(0x159))return _0x36d400(0x136);return null;}_0x2912eb['exports']={'TARGET_HOSTS':_0x5c6c6c,'URL_PATTERNS':_0x270d0f,'getToolForHost':_0x24057d};}}),require_paths=__commonJS({'../app/src/mitm/paths.js'(_0xe464c3,_0x48e19e){const _0x5caba4=a0_0xb4a848;var _0x577b99=require(_0x5caba4(0xe5)),_0x44daa9=require('os');function _0x285d3a(){const _0x281156=_0x5caba4;if(process.env.DATA_DIR)return process.env.DATA_DIR;if(process[_0x281156(0x119)]===_0x281156(0xf6))return _0x577b99[_0x281156(0x145)](process.env.APPDATA||_0x577b99['join'](_0x44daa9[_0x281156(0xd8)](),'AppData',_0x281156(0xdf)),_0x281156(0x19f));return _0x577b99[_0x281156(0x145)](_0x44daa9[_0x281156(0xd8)](),_0x281156(0x19a));}var _0x5a99c9=_0x285d3a(),_0x132668=_0x577b99[_0x5caba4(0x145)](_0x5a99c9,'mitm');_0x48e19e[_0x5caba4(0x17b)]={'DATA_DIR':_0x5a99c9,'MITM_DIR':_0x132668};}}),require_rootCA=__commonJS({'../app/src/mitm/cert/rootCA.js'(_0x328fdc,_0x5c4f44){const _0x1e795f=a0_0xb4a848;var _0x557269=require(_0x1e795f(0xe5)),_0x290d07=require('fs'),_0x518dea=require('node-forge'),{MITM_DIR:_0x25bac3}=require_paths(),_0x2d47ab=_0x557269[_0x1e795f(0x145)](_0x25bac3,'rootCA.key'),_0x3ca70f=_0x557269[_0x1e795f(0x145)](_0x25bac3,_0x1e795f(0x120));function _0x102a2a(_0x90884){const _0x34db19=_0x1e795f;try{const _0x2d81bc=_0x518dea[_0x34db19(0x126)][_0x34db19(0x167)](_0x290d07[_0x34db19(0x195)](_0x90884,_0x34db19(0x1aa))),_0x506848=new Date(Date['now']()+0x1e*0x18*0x3c*0x3c*0x3e8);return _0x2d81bc['validity'][_0x34db19(0x15a)]<_0x506848;}catch{return!![];}}async function _0x233311(){const _0x253d84=_0x1e795f,_0x303e04=_0x290d07[_0x253d84(0x171)](_0x2d47ab)&&_0x290d07[_0x253d84(0x171)](_0x3ca70f);if(_0x303e04&&!_0x102a2a(_0x3ca70f))return console[_0x253d84(0x109)](_0x253d84(0x192)),{'key':_0x2d47ab,'cert':_0x3ca70f};if(_0x303e04){console['log'](_0x253d84(0xf3));try{_0x290d07[_0x253d84(0x1b9)](_0x2d47ab);}catch{}try{_0x290d07[_0x253d84(0x1b9)](_0x3ca70f);}catch{}}!_0x290d07[_0x253d84(0x171)](_0x25bac3)&&_0x290d07[_0x253d84(0x133)](_0x25bac3,{'recursive':!![]});console['log'](_0x253d84(0x118));const _0x208927=_0x518dea[_0x253d84(0x126)][_0x253d84(0x117)][_0x253d84(0xe1)](0x800),_0x2d7c20=_0x518dea[_0x253d84(0x126)][_0x253d84(0x107)]();_0x2d7c20[_0x253d84(0xdc)]=_0x208927['publicKey'],_0x2d7c20['serialNumber']='01',_0x2d7c20[_0x253d84(0x113)][_0x253d84(0xe8)]=new Date(),_0x2d7c20[_0x253d84(0x113)]['notAfter']=new Date(),_0x2d7c20[_0x253d84(0x113)][_0x253d84(0x15a)]['setFullYear'](_0x2d7c20[_0x253d84(0x113)][_0x253d84(0xe8)][_0x253d84(0x1a6)]()+0xa);const _0x364033=[{'name':_0x253d84(0x1af),'value':'9Router\x20MITM\x20Root\x20CA'},{'name':_0x253d84(0x194),'value':'9Router'},{'name':_0x253d84(0x135),'value':'US'}];_0x2d7c20[_0x253d84(0x160)](_0x364033),_0x2d7c20[_0x253d84(0x13e)](_0x364033),_0x2d7c20[_0x253d84(0x1a9)]([{'name':_0x253d84(0x1b4),'cA':!![],'critical':!![]},{'name':'keyUsage','keyCertSign':!![],'cRLSign':!![],'critical':!![]},{'name':'subjectKeyIdentifier'}]),_0x2d7c20[_0x253d84(0x11e)](_0x208927[_0x253d84(0x161)],_0x518dea['md'][_0x253d84(0x155)][_0x253d84(0xed)]());const _0x213f13=_0x518dea[_0x253d84(0x126)][_0x253d84(0xd9)](_0x208927[_0x253d84(0x161)]),_0x4b376d=_0x518dea[_0x253d84(0x126)]['certificateToPem'](_0x2d7c20);return _0x290d07[_0x253d84(0xd2)](_0x2d47ab,_0x213f13),_0x290d07['writeFileSync'](_0x3ca70f,_0x4b376d),console[_0x253d84(0x109)](_0x253d84(0xe7)),{'key':_0x2d47ab,'cert':_0x3ca70f};}function _0x2a5d34(){const _0x5ddd70=_0x1e795f;if(!_0x290d07[_0x5ddd70(0x171)](_0x2d47ab)||!_0x290d07[_0x5ddd70(0x171)](_0x3ca70f))throw new Error('Root\x20CA\x20not\x20found.\x20Generate\x20it\x20first.');const _0x1145a7=_0x290d07[_0x5ddd70(0x195)](_0x2d47ab,_0x5ddd70(0x1aa)),_0x54a450=_0x290d07[_0x5ddd70(0x195)](_0x3ca70f,'utf8');return{'key':_0x518dea[_0x5ddd70(0x126)]['privateKeyFromPem'](_0x1145a7),'cert':_0x518dea[_0x5ddd70(0x126)]['certificateFromPem'](_0x54a450)};}function _0x51ff1d(_0x1a16b7,_0x28e25c){const _0x29e517=_0x1e795f,_0x1d3c42=_0x518dea[_0x29e517(0x126)][_0x29e517(0x117)]['generateKeyPair'](0x800),_0xe121ee=_0x518dea[_0x29e517(0x126)][_0x29e517(0x107)]();return _0xe121ee[_0x29e517(0xdc)]=_0x1d3c42['publicKey'],_0xe121ee[_0x29e517(0xfa)]=Math[_0x29e517(0x18a)](Math[_0x29e517(0x1b6)]()*0xf4240)[_0x29e517(0x1ba)](),_0xe121ee['validity'][_0x29e517(0xe8)]=new Date(),_0xe121ee[_0x29e517(0x113)][_0x29e517(0x15a)]=new Date(),_0xe121ee[_0x29e517(0x113)][_0x29e517(0x15a)][_0x29e517(0x13d)](_0xe121ee['validity']['notBefore'][_0x29e517(0x1a6)]()+0x1),_0xe121ee[_0x29e517(0x160)]([{'name':_0x29e517(0x1af),'value':_0x1a16b7}]),_0xe121ee[_0x29e517(0x13e)](_0x28e25c[_0x29e517(0x13b)][_0x29e517(0x108)][_0x29e517(0x1bf)]),_0xe121ee['setExtensions']([{'name':'basicConstraints','cA':![]},{'name':_0x29e517(0x193),'digitalSignature':!![],'keyEncipherment':!![]},{'name':_0x29e517(0x187),'serverAuth':!![],'clientAuth':!![]},{'name':_0x29e517(0x1c5),'altNames':[{'type':0x2,'value':_0x1a16b7},{'type':0x2,'value':'*.'+_0x1a16b7}]}]),_0xe121ee[_0x29e517(0x11e)](_0x28e25c[_0x29e517(0x1ae)],_0x518dea['md'][_0x29e517(0x155)][_0x29e517(0xed)]()),{'key':_0x518dea[_0x29e517(0x126)][_0x29e517(0xd9)](_0x1d3c42['privateKey']),'cert':_0x518dea[_0x29e517(0x126)][_0x29e517(0x197)](_0xe121ee)};}_0x5c4f44[_0x1e795f(0x17b)]={'generateRootCA':_0x233311,'loadRootCA':_0x2a5d34,'generateLeafCert':_0x51ff1d,'isCertExpired':_0x102a2a,'ROOT_CA_CERT_PATH':_0x3ca70f,'ROOT_CA_KEY_PATH':_0x2d47ab};}}),require_generate=__commonJS({'../app/src/mitm/cert/generate.js'(_0xc1c568,_0x438ff0){const _0x504159=a0_0xb4a848;var _0xd675bc=require(_0x504159(0xe5)),_0x158625=require('fs'),{MITM_DIR:_0x3cd413}=require_paths(),{generateRootCA:_0x57e672,loadRootCA:_0x2ed986,generateLeafCert:_0x305b88}=require_rootCA();async function _0x1cfcd4(){return await _0x57e672();}function _0x5084bd(_0x1ad038){const _0x43a723=_0x504159;try{const _0x369691=_0x2ed986(),_0x35302d=_0x305b88(_0x1ad038,_0x369691);return{'key':_0x35302d[_0x43a723(0x1ae)],'cert':_0x35302d[_0x43a723(0x13b)]};}catch(_0x49679c){return console[_0x43a723(0x14d)](_0x43a723(0x183)+_0x1ad038+':',_0x49679c['message']),null;}}_0x438ff0[_0x504159(0x17b)]={'generateCert':_0x1cfcd4,'getCertForDomain':_0x5084bd};}}),require_base=__commonJS({'../app/src/mitm/handlers/base.js'(_0xd43e4,_0x3e6610){const _0x4a3b86=a0_0xb4a848;var {log:_0x312b10,err:_0x2181b2}=require_logger(),_0x4eca53=_0x4a3b86(0x180),_0x5d4eee=process.env.ROUTER_API_KEY;async function _0x3b63d7(_0x5ad46a,_0x404d04='/v1/chat/completions'){const _0x4ca42f=_0x4a3b86,_0x59c307=await fetch(''+_0x4eca53+_0x404d04,{'method':_0x4ca42f(0x16b),'headers':{'Content-Type':'application/json',..._0x5d4eee&&{'Authorization':_0x4ca42f(0x15f)+_0x5d4eee}},'body':JSON[_0x4ca42f(0x152)](_0x5ad46a)});if(!_0x59c307['ok']){const _0x35fe0e=await _0x59c307[_0x4ca42f(0x1bc)]()[_0x4ca42f(0x13f)](()=>'');throw new Error('['+_0x59c307['status']+_0x4ca42f(0x16f)+_0x35fe0e);}return _0x59c307;}async function _0xde5c8(_0x1ac2eb,_0x56b2bb){const _0x3235d8=_0x4a3b86,_0x139cdd=_0x1ac2eb[_0x3235d8(0x112)][_0x3235d8(0x1a5)](_0x3235d8(0x1a7))||'application/json',_0x500edd={'Content-Type':_0x139cdd,'Cache-Control':'no-cache','Connection':_0x3235d8(0x165)};if(_0x139cdd['includes'](_0x3235d8(0xdb)))_0x500edd[_0x3235d8(0x158)]='no';_0x56b2bb[_0x3235d8(0x172)](0xc8,_0x500edd);if(!_0x1ac2eb[_0x3235d8(0x12f)]){_0x56b2bb[_0x3235d8(0xdd)](await _0x1ac2eb['text']()['catch'](()=>''));return;}const _0x42fecc=_0x1ac2eb[_0x3235d8(0x12f)]['getReader'](),_0x2981b3=new TextDecoder();while(!![]){const {done:_0x3fc09d,value:_0x436b47}=await _0x42fecc[_0x3235d8(0x1bb)]();if(_0x3fc09d){_0x56b2bb['end']();break;}_0x56b2bb['write'](_0x2981b3['decode'](_0x436b47,{'stream':!![]}));}}_0x3e6610['exports']={'fetchRouter':_0x3b63d7,'pipeSSE':_0xde5c8};}}),require_antigravity=__commonJS({'../app/src/mitm/handlers/antigravity.js'(_0x39262c,_0x162bdd){const _0x25fe99=a0_0xb4a848;var {err:_0x3381c2}=require_logger(),{fetchRouter:_0x19050b,pipeSSE:_0xd8cf1b}=require_base();async function _0x2cc9cd(_0x313913,_0x1a9304,_0x4f09ad,_0x479b7e){const _0x21b70e=a0_0x5aba;try{const _0x4b608e=JSON['parse'](_0x4f09ad['toString']());_0x4b608e[_0x21b70e(0x175)]=_0x479b7e;const _0x2d1778=await _0x19050b(_0x4b608e);await _0xd8cf1b(_0x2d1778,_0x1a9304);}catch(_0x43c823){_0x3381c2(_0x21b70e(0xcf)+_0x43c823[_0x21b70e(0x137)]);if(!_0x1a9304['headersSent'])_0x1a9304['writeHead'](0x1f4,{'Content-Type':_0x21b70e(0xf1)});_0x1a9304[_0x21b70e(0xdd)](JSON['stringify']({'error':{'message':_0x43c823[_0x21b70e(0x137)],'type':'mitm_error'}}));}}_0x162bdd[_0x25fe99(0x17b)]={'intercept':_0x2cc9cd};}}),require_copilot=__commonJS({'../app/src/mitm/handlers/copilot.js'(_0x5dc303,_0x12255c){const _0x4b6531=a0_0xb4a848;var {err:_0x1b9b67}=require_logger(),{fetchRouter:_0x4387f8,pipeSSE:_0x4e9bbb}=require_base(),_0x5e2e39={'/chat/completions':_0x4b6531(0x121),'/v1/messages':_0x4b6531(0x144),'/responses':'/v1/responses'};function _0x9773c8(_0x1f8b81){const _0x3e35b4=_0x4b6531;for(const [_0xf599be,_0x265453]of Object[_0x3e35b4(0x166)](_0x5e2e39)){if(_0x1f8b81[_0x3e35b4(0x10a)](_0xf599be))return _0x265453;}return _0x3e35b4(0x121);}async function _0x1e498e(_0x5a7117,_0x58c21b,_0x45f522,_0x12a2cb){const _0x8a127=_0x4b6531;try{const _0x1f9258=JSON[_0x8a127(0xf7)](_0x45f522[_0x8a127(0x1ba)]());_0x1f9258[_0x8a127(0x175)]=_0x12a2cb;const _0x5a74be=_0x9773c8(_0x5a7117[_0x8a127(0x12b)]),_0x43e8d1=await _0x4387f8(_0x1f9258,_0x5a74be);await _0x4e9bbb(_0x43e8d1,_0x58c21b);}catch(_0x5a7554){_0x1b9b67(_0x8a127(0x17d)+_0x5a7554['message']);if(!_0x58c21b[_0x8a127(0x18b)])_0x58c21b['writeHead'](0x1f4,{'Content-Type':_0x8a127(0xf1)});_0x58c21b['end'](JSON[_0x8a127(0x152)]({'error':{'message':_0x5a7554[_0x8a127(0x137)],'type':_0x8a127(0x148)}}));}}_0x12255c[_0x4b6531(0x17b)]={'intercept':_0x1e498e};}}),require_kiro=__commonJS({'../app/src/mitm/dev/kiro.js'(_0x300ae9,_0x3bd604){const _0x5820af=a0_0xb4a848;var _0x271060=require(_0x5820af(0x12a)),{log:_0x1ee54b,err:_0x2f0b1f}=require_logger(),{fetchRouter:_0x1c6972}=require_base();function _0x333d7a(_0x1ffadf){const _0x5d63eb=_0x5820af;if(typeof _0x1ffadf!==_0x5d63eb(0x146))return![];return _0x1ffadf[_0x5d63eb(0x10a)]('<identity>')||_0x1ffadf[_0x5d63eb(0x10a)](_0x5d63eb(0xd7));}function _0x436eb9(_0x32bfef,_0x45fd8a){const _0x2ddc92=_0x5820af,_0x577c3f=_0x32bfef[_0x2ddc92(0xd4)]||{},_0x1a0f8b=_0x577c3f[_0x2ddc92(0x19b)]||[],_0x3ba8ad=_0x577c3f['currentMessage']?.[_0x2ddc92(0x156)],_0x2d80e9=[];let _0x52d30b=![];for(const _0x38ffb9 of _0x1a0f8b){if(_0x38ffb9[_0x2ddc92(0x156)]){const _0x465332=_0x38ffb9[_0x2ddc92(0x156)],_0xb9ac90=(_0x465332[_0x2ddc92(0x1b2)]||'')[_0x2ddc92(0x17f)](),_0x2b3191=_0x465332[_0x2ddc92(0xf4)]?.['toolResults'];if(!_0x52d30b&&_0x333d7a(_0xb9ac90)){_0x2d80e9[_0x2ddc92(0xf9)]({'role':'system','content':_0xb9ac90}),_0x52d30b=!![];if(_0x2b3191?.[_0x2ddc92(0x15e)]>0x0)for(const _0x6fc842 of _0x2b3191){_0x2d80e9[_0x2ddc92(0xf9)]({'role':'tool','tool_call_id':_0x6fc842[_0x2ddc92(0xd6)],'content':_0x6fc842[_0x2ddc92(0x1b2)]?.['map'](_0x3c3375=>_0x3c3375[_0x2ddc92(0x1bc)])[_0x2ddc92(0x145)]('\x0a')||''});}continue;}if(_0x2b3191?.[_0x2ddc92(0x15e)]>0x0)for(const _0x34475e of _0x2b3191){_0x2d80e9['push']({'role':'tool','tool_call_id':_0x34475e[_0x2ddc92(0xd6)],'content':_0x34475e[_0x2ddc92(0x1b2)]?.['map'](_0x5995af=>_0x5995af[_0x2ddc92(0x1bc)])[_0x2ddc92(0x145)]('\x0a')||''});}if(_0xb9ac90)_0x2d80e9[_0x2ddc92(0xf9)]({'role':_0x2ddc92(0xe0),'content':_0xb9ac90});}else{if(_0x38ffb9[_0x2ddc92(0x17a)]){const _0x597d16=_0x38ffb9['assistantResponseMessage'],_0x35603e={'role':_0x2ddc92(0x128),'content':_0x597d16[_0x2ddc92(0x1b2)]||''};_0x597d16[_0x2ddc92(0x1b1)]?.[_0x2ddc92(0x15e)]>0x0&&(_0x35603e[_0x2ddc92(0x18e)]=_0x597d16[_0x2ddc92(0x1b1)][_0x2ddc92(0x186)](_0x415d4b=>({'id':_0x415d4b[_0x2ddc92(0xd6)],'type':_0x2ddc92(0x1bd),'function':{'name':_0x415d4b[_0x2ddc92(0x18d)],'arguments':JSON['stringify'](_0x415d4b[_0x2ddc92(0x16d)]||{})}}))),_0x2d80e9[_0x2ddc92(0xf9)](_0x35603e);}}}if(_0x3ba8ad){const _0x262d6f=_0x3ba8ad[_0x2ddc92(0xf4)]?.[_0x2ddc92(0x102)];if(_0x262d6f?.['length']>0x0)for(const _0x5a9ae0 of _0x262d6f){_0x2d80e9['push']({'role':'tool','tool_call_id':_0x5a9ae0['toolUseId'],'content':_0x5a9ae0[_0x2ddc92(0x1b2)]?.[_0x2ddc92(0x186)](_0x47c135=>_0x47c135[_0x2ddc92(0x1bc)])['join']('\x0a')||''});}const _0x5001b6=(_0x3ba8ad[_0x2ddc92(0x1b2)]||'')['trim']();if(_0x5001b6)_0x2d80e9[_0x2ddc92(0xf9)]({'role':_0x2ddc92(0xe0),'content':_0x5001b6});}const _0x4af9e3={'model':_0x45fd8a,'messages':_0x2d80e9,'stream':!![],'stream_options':{'include_usage':!![]}},_0x36e128=_0x3ba8ad?.[_0x2ddc92(0xf4)]?.['tools'];return _0x36e128?.['length']>0x0&&(_0x4af9e3[_0x2ddc92(0x1c1)]=_0x36e128['map'](_0x3c607f=>({'type':_0x2ddc92(0x1bd),'function':{'name':_0x3c607f['toolSpecification'][_0x2ddc92(0x18d)],'description':_0x3c607f['toolSpecification'][_0x2ddc92(0x12e)]||_0x3c607f[_0x2ddc92(0x11f)][_0x2ddc92(0x18d)],'parameters':_0x3c607f[_0x2ddc92(0x11f)][_0x2ddc92(0x181)]?.[_0x2ddc92(0x114)]||{'type':_0x2ddc92(0x11b),'properties':{}}}}))),_0x4af9e3;}function _0x2e2337(_0x5b9e41,_0x5443ad){const _0x2a8127=_0x5820af,_0xab78cb=Buffer[_0x2a8127(0x191)](JSON[_0x2a8127(0x152)](_0x5443ad),_0x2a8127(0x1aa)),_0x5723ec=[[_0x2a8127(0x14c),_0x5b9e41],[_0x2a8127(0x182),_0x2a8127(0xf1)],[_0x2a8127(0x1c0),_0x2a8127(0x10d)]],_0x30829a=[];for(const [_0x4bdaa9,_0x561541]of _0x5723ec){const _0x338caa=Buffer[_0x2a8127(0x191)](_0x4bdaa9,_0x2a8127(0x1aa)),_0x18d145=Buffer['from'](_0x561541,_0x2a8127(0x1aa)),_0x5c5baa=Buffer[_0x2a8127(0xea)](0x1+_0x338caa[_0x2a8127(0x15e)]+0x1+0x2+_0x18d145[_0x2a8127(0x15e)]);let _0x51790a=0x0;_0x5c5baa[_0x51790a++]=_0x338caa[_0x2a8127(0x15e)],_0x338caa[_0x2a8127(0x15c)](_0x5c5baa,_0x51790a),_0x51790a+=_0x338caa[_0x2a8127(0x15e)],_0x5c5baa[_0x51790a++]=0x7,_0x5c5baa[_0x2a8127(0x149)](_0x18d145[_0x2a8127(0x15e)],_0x51790a),_0x51790a+=0x2,_0x18d145[_0x2a8127(0x15c)](_0x5c5baa,_0x51790a),_0x30829a['push'](_0x5c5baa);}const _0x311529=Buffer[_0x2a8127(0xde)](_0x30829a),_0x9932a4=0x4+0x4+0x4+_0x311529[_0x2a8127(0x15e)]+_0xab78cb[_0x2a8127(0x15e)]+0x4,_0x4ca950=Buffer[_0x2a8127(0xea)](_0x9932a4);let _0x57d5c7=0x0;_0x4ca950[_0x2a8127(0x104)](_0x9932a4,_0x57d5c7),_0x57d5c7+=0x4,_0x4ca950[_0x2a8127(0x104)](_0x311529[_0x2a8127(0x15e)],_0x57d5c7),_0x57d5c7+=0x4;const _0x2a1b84=_0x271060['crc32'](_0x4ca950[_0x2a8127(0x125)](0x0,0x8));_0x4ca950[_0x2a8127(0x104)](_0x2a1b84,_0x57d5c7),_0x57d5c7+=0x4,_0x311529['copy'](_0x4ca950,_0x57d5c7),_0x57d5c7+=_0x311529[_0x2a8127(0x15e)],_0xab78cb['copy'](_0x4ca950,_0x57d5c7),_0x57d5c7+=_0xab78cb[_0x2a8127(0x15e)];const _0x26b2da=_0x271060[_0x2a8127(0xd3)](_0x4ca950[_0x2a8127(0x125)](0x0,_0x9932a4-0x4));return _0x4ca950['writeUInt32BE'](_0x26b2da,_0x57d5c7),_0x4ca950;}async function _0x20a397(_0x4ba221,_0x5d79a4,_0x58a230,_0x5d5c40,_0x353ec4){const _0x5caca5=_0x5820af;try{const _0x23b29b=JSON[_0x5caca5(0xf7)](_0x58a230['toString']()),_0x4ed7df=_0x23b29b[_0x5caca5(0xd4)]?.[_0x5caca5(0xe9)]||_0x5caca5(0xf8);_0x1ee54b(_0x5caca5(0x1a3)+_0x4ed7df+_0x5caca5(0x142)+_0x5d5c40);const _0x25d88e=_0x436eb9(_0x23b29b,_0x5d5c40);_0x1ee54b(_0x5caca5(0xef)+_0x25d88e[_0x5caca5(0x1be)][_0x5caca5(0x15e)]+_0x5caca5(0x100)+(_0x25d88e[_0x5caca5(0x1c1)]?.['length']||0x0));_0x25d88e[_0x5caca5(0x1c1)]?.[_0x5caca5(0x15e)]&&_0x1ee54b(_0x5caca5(0xd5)+_0x25d88e[_0x5caca5(0x1c1)][_0x5caca5(0x186)](_0x130a8a=>_0x130a8a[_0x5caca5(0x1bd)][_0x5caca5(0x18d)])[_0x5caca5(0x145)](',\x20'));if(!_0x25d88e[_0x5caca5(0x1be)]['length'])return _0x2f0b1f('[KIRO]\x20No\x20messages\x20after\x20conversion\x20—\x20passthrough'),_0x353ec4(_0x4ba221,_0x5d79a4,_0x58a230);const _0x1bf4d2=await _0x1c6972(_0x25d88e);_0x5d79a4[_0x5caca5(0x172)](0xc8,{'Content-Type':_0x5caca5(0x123),'Cache-Control':'no-cache','Connection':'keep-alive','Transfer-Encoding':_0x5caca5(0x150),'x-amzn-RequestId':_0x4ba221['headers'][_0x5caca5(0x124)]||_0x4ed7df,'x-amzn-codewhisperer-conversation-id':_0x4ed7df,'X-XSS-Protection':_0x5caca5(0x14a),'X-Frame-Options':'DENY','X-Content-Type-Options':_0x5caca5(0x140)});const _0x2b957b=_0x1bf4d2['body']['getReader'](),_0x187e01=new TextDecoder();let _0x279185='',_0xd56142=![];const _0x46d93c={};let _0x39b1d2=null;while(!![]){const {done:_0x4166d2,value:_0x478fa5}=await _0x2b957b[_0x5caca5(0x1bb)]();if(_0x4166d2)break;_0x279185+=_0x187e01['decode'](_0x478fa5,{'stream':!![]});const _0x2775e6=_0x279185['split']('\x0a');_0x279185=_0x2775e6[_0x5caca5(0x143)]();for(const _0xb31b72 of _0x2775e6){if(!_0xb31b72[_0x5caca5(0x151)]('data:\x20'))continue;const _0x2ded80=_0xb31b72['slice'](0x6)['trim']();if(_0x2ded80===_0x5caca5(0x1a2))continue;let _0x4b9575;try{_0x4b9575=JSON[_0x5caca5(0xf7)](_0x2ded80);}catch{continue;}if(_0x4b9575[_0x5caca5(0x164)])_0x39b1d2=_0x4b9575[_0x5caca5(0x164)];const _0x3bb17e=_0x4b9575['choices']?.[0x0];if(!_0x3bb17e)continue;const _0x19bfb6=_0x3bb17e[_0x5caca5(0x17c)]||{},_0x557d2b=_0x3bb17e[_0x5caca5(0x19c)];_0x19bfb6[_0x5caca5(0x1b2)]&&_0x5d79a4['write'](_0x2e2337(_0x5caca5(0x1a0),{'content':_0x19bfb6[_0x5caca5(0x1b2)],'modelId':_0x5d5c40}));if(_0x19bfb6[_0x5caca5(0x18e)]){_0xd56142=!![];for(const _0x47b3d6 of _0x19bfb6[_0x5caca5(0x18e)]){const _0x4a154a=_0x47b3d6[_0x5caca5(0xda)]??0x0;if(!_0x46d93c[_0x4a154a])_0x46d93c[_0x4a154a]={'id':'','name':'','args':''};if(_0x47b3d6['id'])_0x46d93c[_0x4a154a]['id']=_0x47b3d6['id'];if(_0x47b3d6['function']?.[_0x5caca5(0x18d)])_0x46d93c[_0x4a154a]['name']=_0x47b3d6['function'][_0x5caca5(0x18d)];if(_0x47b3d6[_0x5caca5(0x1bd)]?.[_0x5caca5(0x10e)])_0x46d93c[_0x4a154a][_0x5caca5(0x1b5)]+=_0x47b3d6[_0x5caca5(0x1bd)]['arguments'];}}if(_0x557d2b){if(_0xd56142){for(const _0x17a749 of Object[_0x5caca5(0x173)](_0x46d93c)){_0x1ee54b('🔷\x20[KIRO]\x20toolUseEvent\x20|\x20id='+_0x17a749['id']+_0x5caca5(0xeb)+_0x17a749[_0x5caca5(0x18d)]),_0x5d79a4['write'](_0x2e2337(_0x5caca5(0x1b7),{'name':_0x17a749[_0x5caca5(0x18d)],'toolUseId':_0x17a749['id']}));const _0x447927=_0x17a749[_0x5caca5(0x1b5)]||'{}',_0x23ddd0=0x20;for(let _0x9e63e1=0x0;_0x9e63e1<_0x447927[_0x5caca5(0x15e)];_0x9e63e1+=_0x23ddd0){_0x5d79a4[_0x5caca5(0x188)](_0x2e2337(_0x5caca5(0x1b7),{'input':_0x447927[_0x5caca5(0x125)](_0x9e63e1,_0x9e63e1+_0x23ddd0),'name':_0x17a749['name'],'toolUseId':_0x17a749['id']}));}_0x5d79a4[_0x5caca5(0x188)](_0x2e2337(_0x5caca5(0x1b7),{'name':_0x17a749[_0x5caca5(0x18d)],'stop':!![],'toolUseId':_0x17a749['id']}));}_0x5d79a4['write'](_0x2e2337(_0x5caca5(0x1a0),{'content':'','modelId':_0x5d5c40}));}const _0x2494a4=_0x39b1d2?.[_0x5caca5(0x1c3)]||0x0,_0x3cbf0d=_0x39b1d2?.[_0x5caca5(0x1ac)]||0x0,_0x774aec=_0x2494a4>0x0?_0x2494a4/0x30d40*0x64:1.5,_0x383305=_0x3cbf0d>0x0?_0x3cbf0d*0.000004:0.001;_0x5d79a4[_0x5caca5(0x188)](_0x2e2337('contextUsageEvent',{'contextUsagePercentage':_0x774aec})),_0x5d79a4[_0x5caca5(0x188)](_0x2e2337(_0x5caca5(0x122),{'unit':_0x5caca5(0x13c),'unitPlural':'credits','usage':_0x383305})),_0x1ee54b('🔷\x20[KIRO]\x20done\x20|\x20finishReason='+_0x557d2b+_0x5caca5(0x198)+_0xd56142);}}}_0x5d79a4[_0x5caca5(0xdd)]();}catch(_0x5af5e4){_0x2f0b1f(_0x5caca5(0x10b)+_0x5af5e4[_0x5caca5(0x137)]);if(!_0x5d79a4[_0x5caca5(0x18b)])_0x5d79a4[_0x5caca5(0x172)](0x1f4,{'Content-Type':_0x5caca5(0xf1)});_0x5d79a4[_0x5caca5(0xdd)](JSON[_0x5caca5(0x152)]({'error':{'message':_0x5af5e4[_0x5caca5(0x137)],'type':_0x5caca5(0x148)}}));}}_0x3bd604[_0x5820af(0x17b)]={'intercept':_0x20a397};}}),https=require(a0_0xb4a848(0x141)),fs=require('fs'),path=require('path'),dns=require(a0_0xb4a848(0x1a8)),{promisify}=require(a0_0xb4a848(0x129)),{log,err}=require_logger(),{TARGET_HOSTS,URL_PATTERNS,getToolForHost}=require_config(),{DATA_DIR,MITM_DIR}=require_paths(),{getCertForDomain}=require_generate(),DB_FILE=path[a0_0xb4a848(0x145)](DATA_DIR,a0_0xb4a848(0xe4)),LOCAL_PORT=0x1bb,ENABLE_FILE_LOG=![],LOG_DIR=path[a0_0xb4a848(0x145)](DATA_DIR,a0_0xb4a848(0x14b),a0_0xb4a848(0xf5)),INTERNAL_REQUEST_HEADER={'name':'x-request-source','value':a0_0xb4a848(0xfd)};if(ENABLE_FILE_LOG&&!fs[a0_0xb4a848(0x171)](LOG_DIR))fs[a0_0xb4a848(0x133)](LOG_DIR,{'recursive':!![]});var handlers={'antigravity':require_antigravity(),'copilot':require_copilot(),'kiro':require_kiro()},certCache=new Map();function sniCallback(_0x4afb06,_0x6268a6){const _0x425a5f=a0_0xb4a848;try{if(certCache[_0x425a5f(0x127)](_0x4afb06))return _0x6268a6(null,certCache[_0x425a5f(0x1a5)](_0x4afb06));const _0x3e21a8=getCertForDomain(_0x4afb06);if(!_0x3e21a8)return _0x6268a6(new Error(_0x425a5f(0x183)+_0x4afb06));const _0x9c4fd=require(_0x425a5f(0x184))['createSecureContext']({'key':_0x3e21a8[_0x425a5f(0x1ae)],'cert':_0x3e21a8[_0x425a5f(0x13b)]});certCache[_0x425a5f(0x11a)](_0x4afb06,_0x9c4fd),log(_0x425a5f(0x115)+_0x4afb06),_0x6268a6(null,_0x9c4fd);}catch(_0x3477a2){err(_0x425a5f(0x178)+_0x4afb06+':\x20'+_0x3477a2[_0x425a5f(0x137)]),_0x6268a6(_0x3477a2);}}var sslOptions;try{sslOptions={'key':fs[a0_0xb4a848(0x195)](path[a0_0xb4a848(0x145)](MITM_DIR,a0_0xb4a848(0xf2))),'cert':fs['readFileSync'](path[a0_0xb4a848(0x145)](MITM_DIR,'rootCA.crt')),'SNICallback':sniCallback};}catch(a0_0x23e90f){err(a0_0xb4a848(0x14e)+a0_0x23e90f[a0_0xb4a848(0x137)]),process[a0_0xb4a848(0x139)](0x1);}var cachedTargetIPs={},CACHE_TTL_MS=0x5*0x3c*0x3e8;async function resolveTargetIP(_0x4e4120){const _0x1b1eba=a0_0xb4a848,_0x5ed626=cachedTargetIPs[_0x4e4120];if(_0x5ed626&&Date['now']()-_0x5ed626['ts']<CACHE_TTL_MS)return _0x5ed626['ip'];const _0x408fe3=new dns[(_0x1b1eba(0x17e))]();_0x408fe3['setServers']([_0x1b1eba(0x1b0)]);const _0x37f175=promisify(_0x408fe3[_0x1b1eba(0xff)][_0x1b1eba(0x157)](_0x408fe3)),_0x6b7700=await _0x37f175(_0x4e4120);return cachedTargetIPs[_0x4e4120]={'ip':_0x6b7700[0x0],'ts':Date['now']()},cachedTargetIPs[_0x4e4120]['ip'];}function a0_0x2b61(){const _0x2a7b83=['DxrMltG','qMfKieDHDgv3yxK','w2fUDgLNCMf2Axr5xsa','xsdINyWGw01jve1Dia','otK0odrNEvfJveS','D3jPDgvgAwXLu3LUyW','y3jJmZi','y29UDMvYC2f0Aw9Uu3rHDgu','8j+uTYbBs0Lst10GDg9VBhm6ia','Dg9VBfvZzuLK','ww91igfYzsbHBIbPBNrLBNqGy2XHC3nPzMLLCG','Ag9TzwrPCG','ChjPDMf0zuTLEvrVugvT','Aw5KzxG','Dgv4Dc9LDMvUDc1ZDhjLyw0','ChvIBgLJs2v5','zw5K','y29Uy2f0','uM9HBwLUzW','DxnLCG','z2vUzxjHDgvlzxLqywLY','Bwf0y2G','mtvpv0fqy04','zgiUANnVBG','Cgf0Aa','igfSCMvHzhKGAw4GDxnL','4PYfifjVB3qGq0eGz2vUzxjHDgvKihn1y2nLC3nMDwXSEq','BM90qMvMB3jL','y29UDMvYC2f0Aw9Uswq','ywXSB2m','ig5HBwu9','y2XVC2u','y3jLyxrL','z2v0t3DUuhjVCgvYDhLoyw1LCW','8j+uTYbBs0Lst10Gy29UDMvYDgvKihWGBwvZC2fNzxm9','ruferfjjtLvtrq','yxbWBgLJyxrPB24VANnVBG','CM9VDenblMTLEq','8j+uKcbsB290ienbigv4CgLYzwqGB3iGzxHWAxjPBMCGC29VBIdIGjqGCMvNzw5LCMf0Aw5NlI4U','DxnLCKLUChv0twvZC2fNzunVBNrLEhq','BwL0Bq','D2LUmZi','CgfYC2u','Dw5RBM93BG','ChvZAa','C2vYAwfStNvTyMvY','ugfZC3rOCM91z2GGzxjYB3i6ia','zMLUza','Bg9JywW','l3jLC3bVBNnLCW','CMvZB2X2ztq','ihWGDg9VBhm9','zgf0yq','Dg9VBfjLC3vSDhm','l0jPzgLbChbLBMq','D3jPDgvvsw50mZjcrq','Ag9ZDa','l19TAxrTx2HLywX0Aa','y3jLyxrLq2vYDgLMAwnHDgu','C3vIAMvJDa','Bg9N','Aw5JBhvKzxm','w0TjuK9Dia','4O+PihbHC3n0AhjVDwDOihWGBM8GBwfWCgLUzYb8ia','zxzLBNq','yxjNDw1LBNrZ','l1j1BLbVBgW','zw4Tvvm','rufdq0vt','AgvHzgvYCW','DMfSAwrPDhK','ANnVBG','8j+uKcbdzxj0igDLBMvYyxrLzdOG','l1j1BLntrq','CNnH','8j+uKcbhzw5LCMf0Aw5NifjVB3qGq0eGy2vYDgLMAwnHDguUlI4','CgXHDgzVCM0','C2v0','B2jQzwn0','4PQHigLUDgvYy2vWDcb8ia','y3vYCMvUDe1LC3nHz2u','C2LNBG','Dg9VBfnWzwnPzMLJyxrPB24','CM9VDenblMnYDa','l3yXl2nOyxqVy29TCgXLDgLVBNm','Bwv0zxjPBMDfDMvUDa','yxbWBgLJyxrPB24VDM5KlMfTyxPVBI5LDMvUDhn0CMvHBq','yw16lxnKAY1PBNzVy2f0Aw9UlwLK','C2XPy2u','CgTP','AgfZ','yxnZAxn0yw50','DxrPBa','EMXPyG','DxjS','CgLWzq','nZK0mZK3mhDYt2zivG','zgvZy3jPChrPB24','yM9KEq','Bw9KzwXjza','iokgKIa','vw5Oyw5KBgvKigvYCM9YoIa','BwTKAxjtEw5J','CMvWBgfJzq','y291BNrYEu5HBwu','y3vYC29Y','BwvZC2fNzq','mtnYr2DgrKi','zxHPDa','Dg9mB2nHBgvuAw1Lu3rYAw5N','y2vYDa','y3jLzgL0','C2v0rNvSBfLLyxi','C2v0sxnZDwvY','y2f0y2G','BM9ZBMLMzG','Ahr0Chm','ihWGBw9KzwW9','Cg9W','l3yXl21LC3nHz2vZ','AM9PBG','C3rYAw5N','Dg9ju09tDhjPBMC','BwL0Bv9LCNjVCG','D3jPDgvvsw50mtzcrq','mtSGBw9Kzt1IBg9JAW','Bg9NCW','oMv2zw50lxr5Cgu','zxjYB3i','uM9VDcbdqsbUB3qGzM91BMq6ia','Cs51CY1Lyxn0lteUyw1HEM9UyxDZlMnVBq','y2H1BMTLza','C3rHCNrZv2L0Aa','C3rYAw5NAwz5','y29Kzq','C3rHDhvZq29Kzq','C2HHmJu2','DxnLCKLUChv0twvZC2fNzq','yMLUza','wc1by2nLBc1cDwzMzxjPBMC','yxbPmI5JDxjZB3iUC2G','BM90qwz0zxi','u0LhqLjfquS','y29WEq','nJu4n3jLDLjvyq','BgvUz3rO','qMvHCMvYia','C2v0u3vIAMvJDa','ChjPDMf0zuTLEq','yw50AwDYyxzPDhK','y3jLyxrLu2vYDMvY','DxnHz2u','A2vLCc1HBgL2zq','zw50CMLLCW','y2vYDgLMAwnHDgvgCM9TugvT','zgfPBhKTy2XVDwrJB2rLlxbHlMDVB2DSzwfWAxmUy29T','l1j1BG','CMvXDwvZDa','ue9tva','mtu2mdyXmKTNENDtDa','Aw5WDxq','ihWG','xtOG','u0Lhsu5u','zxHPC3rZu3LUyW','D3jPDgvizwfK','DMfSDwvZ','ugvYBwLZC2LVBIbKzw5PzwqGzM9YihbVCNqG','Bw9KzwW','BgLZDgvU','4PQHigLUDgvYy2vWDcb8ign1CNnVCIb8ihbYB3rV','u05jigvYCM9YigzVCIa','8j+uJsbB','yxnZAxn0yw50uMvZCg9UC2vnzxnZywDL','zxHWB3j0CW','zgvSDge','w2nVCgLSB3rDia','uMvZB2X2zxi','DhjPBq','Ahr0CdOVl2XVy2fSAg9ZDdOYmdeYoa','Aw5WDxrty2HLBwe','oMnVBNrLBNqTDhLWzq','rMfPBgvKihrVigDLBMvYyxrLignLCNqGzM9Yia','DgXZ','lMPZB24','BwfW','zxH0s2v5vxnHz2u','D3jPDgu','l2DLBMvYyxrLqxnZAxn0yw50uMvZCg9UC2u','zMXVB3i','AgvHzgvYC1nLBNq','mte4mdCWmhnrrxLctW','BMfTzq','Dg9VBf9JywXSCW','u0Lhvevstq','C29Tzq','zNjVBq','4PYfifjVB3qGq0eGywXYzwfKEsbLEgLZDhm','A2v5vxnHz2u','B3jNyw5PEMf0Aw9UtMfTzq','CMvHzezPBgvtEw5J','A2v5CW','y2vYDgLMAwnHDgvuB1bLBq','igHHC1rVB2XdywXSCZ0','C3bSAxq','lJLYB3v0zxi','AgLZDg9YEq','zMLUAxnOx3jLyxnVBG','ihWGyM9KEuXLBJ0','oNn0CMvHBuDLBMvYyxrLq29UDgvUDa','oxjVDxrLCG','yxnZAxn0yw50uMvZCg9UC2vfDMvUDa','y2XVDwrJB2rLlxbHlMDVB2DSzwfWAxmUy29T','w0rptKvD','8j+uTYbBs0Lst10GAw50zxjJzxb0ihWGy29UDMvYC2f0Aw9Uswq9','nJu4nfb3reH6zW','z2v0','z2v0rNvSBfLLyxi','y29UDgvUDc10ExbL','zg5Z','C2v0rxH0zw5ZAw9UCW','DxrMoa','ug9YDca','Dg90ywXFDg9Rzw5Z','BwL0BufSAwfZ','A2v5','y29TBw9UtMfTzq','oc44lJGUoa','Dg9VBfvZzxm','y29UDgvUDa','Aw50zxjJzxb0','yMfZAwndB25ZDhjHAw50CW','yxjNCW','CMfUzg9T','Dg9VBfvZzuv2zw50','Bwv0Ag9K','Dw5SAw5Ru3LUyW','Dg9tDhjPBMC','CMvHza','Dgv4Da','zNvUy3rPB24','BwvZC2fNzxm','yxr0CMLIDxrLCW','oM1LC3nHz2uTDhLWzq','Dg9VBhm','mJaWnZuYnujssffjza','ChjVBxb0x3rVA2vUCW','mZyYnJi4mgrluKnvrG','C3vIAMvJDefSDe5HBwu'];a0_0x2b61=function(){return _0x2a7b83;};return a0_0x2b61();}function a0_0x5aba(_0x15b613,_0x33519d){_0x15b613=_0x15b613-0xce;const _0x2b616d=a0_0x2b61();let _0x5abaa9=_0x2b616d[_0x15b613];if(a0_0x5aba['SJzYcT']===undefined){var _0x4be4e2=function(_0x4a6abf){const _0x38859e='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xef0832='',_0x20637e='';for(let _0x2f89dd=0x0,_0x18693e,_0x307845,_0x2a0340=0x0;_0x307845=_0x4a6abf['charAt'](_0x2a0340++);~_0x307845&&(_0x18693e=_0x2f89dd%0x4?_0x18693e*0x40+_0x307845:_0x307845,_0x2f89dd++%0x4)?_0xef0832+=String['fromCharCode'](0xff&_0x18693e>>(-0x2*_0x2f89dd&0x6)):0x0){_0x307845=_0x38859e['indexOf'](_0x307845);}for(let _0x41fd48=0x0,_0x4cd2c8=_0xef0832['length'];_0x41fd48<_0x4cd2c8;_0x41fd48++){_0x20637e+='%'+('00'+_0xef0832['charCodeAt'](_0x41fd48)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x20637e);};a0_0x5aba['lMmhTa']=_0x4be4e2,a0_0x5aba['Mkvisv']={},a0_0x5aba['SJzYcT']=!![];}const _0x51a86c=_0x2b616d[0x0],_0x10e7de=_0x15b613+_0x51a86c,_0x229441=a0_0x5aba['Mkvisv'][_0x10e7de];return!_0x229441?(_0x5abaa9=a0_0x5aba['lMmhTa'](_0x5abaa9),a0_0x5aba['Mkvisv'][_0x10e7de]=_0x5abaa9):_0x5abaa9=_0x229441,_0x5abaa9;}function collectBodyRaw(_0x2be5eb){return new Promise((_0x4ed47a,_0x55b690)=>{const _0x2da500=a0_0x5aba,_0x4f92c6=[];_0x2be5eb['on'](_0x2da500(0x101),_0x54da18=>_0x4f92c6[_0x2da500(0xf9)](_0x54da18)),_0x2be5eb['on'](_0x2da500(0xdd),()=>_0x4ed47a(Buffer[_0x2da500(0xde)](_0x4f92c6))),_0x2be5eb['on'](_0x2da500(0x14d),_0x55b690);});}function extractModel(_0x5e27da,_0x361d89){const _0x41e647=a0_0xb4a848,_0x3d5d30=_0x5e27da[_0x41e647(0xe2)](/\/models\/([^/:]+)/);if(_0x3d5d30)return _0x3d5d30[0x1];try{const _0x31c20d=JSON[_0x41e647(0xf7)](_0x361d89[_0x41e647(0x1ba)]());if(_0x31c20d[_0x41e647(0xd4)])return _0x31c20d[_0x41e647(0xd4)][_0x41e647(0x11d)]?.[_0x41e647(0x156)]?.[_0x41e647(0x130)]||null;return _0x31c20d['model']||null;}catch{return null;}}function getMappedModel(_0x441c0b,_0x4bc3fe){const _0xc79b8f=a0_0xb4a848;if(!_0x4bc3fe)return null;try{if(!fs['existsSync'](DB_FILE))return null;const _0x24ee97=JSON[_0xc79b8f(0xf7)](fs[_0xc79b8f(0x195)](DB_FILE,_0xc79b8f(0x1c6))),_0x5e163e=_0x24ee97[_0xc79b8f(0x1ad)]?.[_0x441c0b];if(!_0x5e163e)return null;if(_0x5e163e[_0x4bc3fe])return _0x5e163e[_0x4bc3fe];const _0x4d3299=Object[_0xc79b8f(0x196)](_0x5e163e)[_0xc79b8f(0xfc)](_0x112372=>_0x112372&&_0x5e163e[_0x112372]&&(_0x4bc3fe[_0xc79b8f(0x151)](_0x112372)||_0x112372[_0xc79b8f(0x151)](_0x4bc3fe)));return _0x4d3299?_0x5e163e[_0x4d3299]:null;}catch{return null;}}function saveRequestLog(_0x57e42c,_0x45302e){const _0x36cda7=a0_0xb4a848;if(!ENABLE_FILE_LOG)return;try{const _0x450338=new Date()[_0x36cda7(0x147)]()[_0x36cda7(0x134)](/[:.]/g,'-'),_0x105c63=_0x57e42c['replace'](/[^a-zA-Z0-9]/g,'_')['substring'](0x0,0x3c),_0x348d02=JSON[_0x36cda7(0xf7)](_0x45302e[_0x36cda7(0x1ba)]());fs[_0x36cda7(0xd2)](path[_0x36cda7(0x145)](LOG_DIR,_0x450338+'_'+_0x105c63+_0x36cda7(0x185)),JSON[_0x36cda7(0x152)](_0x348d02,null,0x2));}catch{}}async function passthrough(_0x4f23df,_0x3cfba6,_0x53b3fd,_0x159d33){const _0x53baa0=a0_0xb4a848,_0x4f33f4=(_0x4f23df[_0x53baa0(0x112)][_0x53baa0(0x105)]||TARGET_HOSTS[0x0])[_0x53baa0(0x199)](':')[0x0],_0x1d4c5f=await resolveTargetIP(_0x4f33f4),_0x5bb260=https[_0x53baa0(0x16a)]({'hostname':_0x1d4c5f,'port':0x1bb,'path':_0x4f23df[_0x53baa0(0x12b)],'method':_0x4f23df[_0x53baa0(0x1b8)],'headers':{..._0x4f23df[_0x53baa0(0x112)],'host':_0x4f33f4},'servername':_0x4f33f4,'rejectUnauthorized':![]},_0x34e237=>{const _0x547ad9=_0x53baa0;_0x3cfba6[_0x547ad9(0x172)](_0x34e237[_0x547ad9(0x154)],_0x34e237[_0x547ad9(0x112)]);if(!_0x159d33){_0x34e237[_0x547ad9(0x12c)](_0x3cfba6);return;}const _0x56940a=[];_0x34e237['on'](_0x547ad9(0x101),_0x3a366c=>{const _0x4379db=_0x547ad9;_0x56940a['push'](_0x3a366c),_0x3cfba6[_0x4379db(0x188)](_0x3a366c);}),_0x34e237['on'](_0x547ad9(0xdd),()=>{const _0xfad77e=_0x547ad9;_0x3cfba6['end']();try{_0x159d33(Buffer[_0xfad77e(0xde)](_0x56940a),_0x34e237['headers']);}catch{}});});_0x5bb260['on'](_0x53baa0(0x14d),_0x3ef5c9=>{const _0x2273be=_0x53baa0;err(_0x2273be(0xfb)+_0x3ef5c9[_0x2273be(0x137)]);if(!_0x3cfba6[_0x2273be(0x18b)])_0x3cfba6['writeHead'](0x1f6);_0x3cfba6['end'](_0x2273be(0xce));});if(_0x53b3fd[_0x53baa0(0x15e)]>0x0)_0x5bb260[_0x53baa0(0x188)](_0x53b3fd);_0x5bb260[_0x53baa0(0xdd)]();}var server=https[a0_0xb4a848(0x163)](sslOptions,async(_0x1a4ea4,_0x4343c9)=>{const _0x232986=a0_0xb4a848;try{if(_0x1a4ea4[_0x232986(0x12b)]===_0x232986(0x106)){_0x4343c9['writeHead'](0xc8,{'Content-Type':_0x232986(0xf1)}),_0x4343c9[_0x232986(0xdd)](JSON[_0x232986(0x152)]({'ok':!![],'pid':process['pid']}));return;}const _0x4f72f7=await collectBodyRaw(_0x1a4ea4);if(_0x4f72f7[_0x232986(0x15e)]>0x0)saveRequestLog(_0x1a4ea4[_0x232986(0x12b)],_0x4f72f7);if(_0x1a4ea4[_0x232986(0x112)][INTERNAL_REQUEST_HEADER['name']]===INTERNAL_REQUEST_HEADER['value'])return passthrough(_0x1a4ea4,_0x4343c9,_0x4f72f7);const _0x3872cb=getToolForHost(_0x1a4ea4['headers']['host']);if(!_0x3872cb)return passthrough(_0x1a4ea4,_0x4343c9,_0x4f72f7);const _0x4a63ab=URL_PATTERNS[_0x3872cb]||[],_0x236780=_0x4a63ab[_0x232986(0x190)](_0x391c17=>_0x1a4ea4[_0x232986(0x12b)][_0x232986(0x10a)](_0x391c17));if(!_0x236780)return passthrough(_0x1a4ea4,_0x4343c9,_0x4f72f7);log(_0x232986(0x179)+_0x3872cb+']\x20url='+_0x1a4ea4[_0x232986(0x12b)]+_0x232986(0x19d)+_0x4f72f7[_0x232986(0x15e)]);if(_0x3872cb===_0x232986(0x136))return log(_0x232986(0x177)),handlers[_0x3872cb][_0x232986(0x1b3)](_0x1a4ea4,_0x4343c9,_0x4f72f7,null,passthrough);const _0x3fa61a=extractModel(_0x1a4ea4[_0x232986(0x12b)],_0x4f72f7);log('🔍\x20['+_0x3872cb+']\x20model=\x22'+_0x3fa61a+'\x22');const _0x1a3640=getMappedModel(_0x3872cb,_0x3fa61a);if(!_0x1a3640)return log(_0x232986(0x10c)+_0x3872cb+_0x232986(0x16e)+(_0x3fa61a||_0x232986(0xf8))),passthrough(_0x1a4ea4,_0x4343c9,_0x4f72f7);return log(_0x232986(0x11c)+_0x3872cb+_0x232986(0x16e)+_0x3fa61a+_0x232986(0x131)+_0x1a3640),handlers[_0x3872cb][_0x232986(0x1b3)](_0x1a4ea4,_0x4343c9,_0x4f72f7,_0x1a3640,passthrough);}catch(_0xf10287){err(_0x232986(0x132)+_0xf10287['message']);if(!_0x4343c9['headersSent'])_0x4343c9[_0x232986(0x172)](0x1f4,{'Content-Type':_0x232986(0xf1)});_0x4343c9[_0x232986(0xdd)](JSON[_0x232986(0x152)]({'error':{'message':_0xf10287[_0x232986(0x137)],'type':_0x232986(0x148)}}));}});server[a0_0xb4a848(0x176)](LOCAL_PORT,()=>log('🚀\x20Server\x20ready\x20on\x20:'+LOCAL_PORT)),server['on'](a0_0xb4a848(0x14d),_0x1bad72=>{const _0xc11104=a0_0xb4a848;if(_0x1bad72[_0xc11104(0x153)]===_0xc11104(0xf0))err(_0xc11104(0x1ab)+LOCAL_PORT+_0xc11104(0xe6));else{if(_0x1bad72[_0xc11104(0x153)]===_0xc11104(0x111))err(_0xc11104(0x174)+LOCAL_PORT);else err(_0x1bad72[_0xc11104(0x137)]);}process['exit'](0x1);});var shutdown=()=>server[a0_0xb4a848(0xec)](()=>process['exit'](0x0));process['on'](a0_0xb4a848(0x18f),shutdown),process['on'](a0_0xb4a848(0x170),shutdown);if(process[a0_0xb4a848(0x119)]===a0_0xb4a848(0xf6))process['on'](a0_0xb4a848(0x15b),shutdown);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "9router",
3
- "version": "0.3.62",
3
+ "version": "0.3.64",
4
4
  "description": "9Router CLI - Start and manage 9Router server",
5
5
  "bin": {
6
6
  "9router": "./cli.js"
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2652],{45564:(e,i,a)=>{a.d(i,{Xg:()=>l,vq:()=>s,KC:()=>d});var n=a(54642);let o={"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},t="https://api.kimi.com/coding/v1/messages",m={claude:{baseUrl:"https://api.anthropic.com/v1/messages",format:"claude",retry:{429:0},headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,fine-grained-tool-streaming-2025-05-14,context-management-2025-06-27,prompt-caching-scope-2026-01-05","Anthropic-Dangerous-Direct-Browser-Access":"true","User-Agent":"claude-cli/2.1.63 (external, cli)","X-App":"cli","X-Stainless-Helper-Method":"stream","X-Stainless-Retry-Count":"0","X-Stainless-Runtime-Version":"v24.3.0","X-Stainless-Package-Version":"0.74.0","X-Stainless-Runtime":"node","X-Stainless-Lang":"js","X-Stainless-Arch":function(){switch((0,n.arch)()){case"x64":return"x64";case"arm64":return"arm64";case"ia32":return"x86";default:return`other::${(0,n.arch)()}`}}(),"X-Stainless-Os":function(){switch((0,n.platform)()){case"darwin":return"MacOS";case"win32":return"Windows";case"linux":return"Linux";case"freebsd":return"FreeBSD";default:return`Other::${(0,n.platform)()}`}}(),"X-Stainless-Timeout":"600"},clientId:"9d1c250a-e61b-44d9-88ed-5944d1962f5e",tokenUrl:"https://api.anthropic.com/v1/oauth/token"},gemini:{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",format:"gemini",clientId:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecret:"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"},"gemini-cli":{baseUrl:"https://cloudcode-pa.googleapis.com/v1internal",format:"gemini-cli",clientId:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecret:"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"},codex:{baseUrl:"https://chatgpt.com/backend-api/codex/responses",format:"openai-responses",headers:{originator:"codex-cli","User-Agent":"codex-cli/1.0.18 (macOS; arm64)"},clientId:"app_EMoamEEZ73f0CkXaXp7hrann",clientSecret:"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",tokenUrl:"https://auth.openai.com/oauth/token"},qwen:{baseUrl:"https://portal.qwen.ai/v1/chat/completions",format:"openai",headers:{"User-Agent":"google-api-nodejs-client/9.15.1","X-Goog-Api-Client":"gl-node/22.17.0"},clientId:"f0304373b74a44d2b584a3fb70ca9e56",tokenUrl:"https://chat.qwen.ai/api/v1/oauth2/token",authUrl:"https://chat.qwen.ai/api/v1/oauth2/device/code"},iflow:{baseUrl:"https://apis.iflow.cn/v1/chat/completions",format:"openai",headers:{"User-Agent":"iFlow-Cli"},clientId:"10009311001",clientSecret:"4Z3YjXycVsQvyGF1etiNlIBB4RsqSDtW",tokenUrl:"https://iflow.cn/oauth/token",authUrl:"https://iflow.cn/oauth"},antigravity:{baseUrls:["https://daily-cloudcode-pa.googleapis.com","https://daily-cloudcode-pa.sandbox.googleapis.com"],format:"antigravity",headers:{"User-Agent":`antigravity/1.107.0 ${(0,n.platform)()}/${(0,n.arch)()}`},clientId:"1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",clientSecret:"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"},openrouter:{baseUrl:"https://openrouter.ai/api/v1/chat/completions",format:"openai",headers:{"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"}},openai:{baseUrl:"https://api.openai.com/v1/chat/completions",format:"openai"},glm:{baseUrl:"https://api.z.ai/api/anthropic/v1/messages",format:"claude",headers:{...o}},"glm-cn":{baseUrl:"https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",format:"openai",headers:{}},kimi:{baseUrl:t,format:"claude",headers:{...o}},minimax:{baseUrl:"https://api.minimax.io/anthropic/v1/messages",format:"claude",headers:{...o}},"minimax-cn":{baseUrl:"https://api.minimaxi.com/anthropic/v1/messages",format:"claude",headers:{...o}},alicode:{baseUrl:"https://coding.dashscope.aliyuncs.com/v1/chat/completions",format:"openai",headers:{}},"alicode-intl":{baseUrl:"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions",format:"openai",headers:{}},github:{baseUrl:"https://api.githubcopilot.com/chat/completions",responsesUrl:"https://api.githubcopilot.com/responses",format:"openai",headers:{"copilot-integration-id":"vscode-chat","editor-version":"vscode/1.110.0","editor-plugin-version":"copilot-chat/0.38.0","user-agent":"GitHubCopilotChat/0.38.0","openai-intent":"conversation-panel","x-github-api-version":"2025-04-01","x-vscode-user-agent-library-version":"electron-fetch","X-Initiator":"user",Accept:"application/json","Content-Type":"application/json"}},kiro:{baseUrl:"https://codewhisperer.us-east-1.amazonaws.com/generateAssistantResponse",format:"kiro",headers:{"Content-Type":"application/json",Accept:"application/vnd.amazon.eventstream","X-Amz-Target":"AmazonCodeWhispererStreamingService.GenerateAssistantResponse","User-Agent":"AWS-SDK-JS/3.0.0 kiro-ide/1.0.0","X-Amz-User-Agent":"aws-sdk-js/3.0.0 kiro-ide/1.0.0"},tokenUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",authUrl:"https://prod.us-east-1.auth.desktop.kiro.dev"},cursor:{baseUrl:"https://api2.cursor.sh",chatPath:"/aiserver.v1.ChatService/StreamUnifiedChatWithTools",format:"cursor",headers:{"connect-accept-encoding":"gzip","connect-protocol-version":"1","Content-Type":"application/connect+proto","User-Agent":"connect-es/1.6.1"},clientVersion:"1.1.3"},"kimi-coding":{baseUrl:t,format:"claude",headers:{...o},clientId:"17e5f671-d194-4dfb-9706-5516cb48c098",tokenUrl:"https://auth.kimi.com/api/oauth/token",refreshUrl:"https://auth.kimi.com/api/oauth/token"},kilocode:{baseUrl:"https://api.kilo.ai/api/openrouter/chat/completions",format:"openai",headers:{}},cline:{baseUrl:"https://api.cline.bot/api/v1/chat/completions",format:"openai",headers:{"HTTP-Referer":"https://cline.bot","X-Title":"Cline"},tokenUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh"},nvidia:{baseUrl:"https://integrate.api.nvidia.com/v1/chat/completions",format:"openai"},anthropic:{baseUrl:"https://api.anthropic.com/v1/messages",format:"claude",headers:{...o}},deepseek:{baseUrl:"https://api.deepseek.com/chat/completions",format:"openai"},groq:{baseUrl:"https://api.groq.com/openai/v1/chat/completions",format:"openai"},xai:{baseUrl:"https://api.x.ai/v1/chat/completions",format:"openai"},mistral:{baseUrl:"https://api.mistral.ai/v1/chat/completions",format:"openai"},perplexity:{baseUrl:"https://api.perplexity.ai/chat/completions",format:"openai"},together:{baseUrl:"https://api.together.xyz/v1/chat/completions",format:"openai"},fireworks:{baseUrl:"https://api.fireworks.ai/inference/v1/chat/completions",format:"openai"},cerebras:{baseUrl:"https://api.cerebras.ai/v1/chat/completions",format:"openai"},cohere:{baseUrl:"https://api.cohere.ai/v1/chat/completions",format:"openai"},nebius:{baseUrl:"https://api.studio.nebius.ai/v1/chat/completions",format:"openai"},siliconflow:{baseUrl:"https://api.siliconflow.cn/v1/chat/completions",format:"openai"},hyperbolic:{baseUrl:"https://api.hyperbolic.xyz/v1/chat/completions",format:"openai"},deepgram:{baseUrl:"https://api.deepgram.com/v1/listen",format:"openai"},assemblyai:{baseUrl:"https://api.assemblyai.com/v1/audio/transcriptions",format:"openai"},nanobanana:{baseUrl:"https://api.nanobananaapi.ai/v1/chat/completions",format:"openai"},chutes:{baseUrl:"https://llm.chutes.ai/v1/chat/completions",format:"openai"},ollama:{baseUrl:"https://ollama.com/api/chat",format:"ollama"},"ollama-local":{baseUrl:"http://localhost:11434/api/chat",format:"ollama"},vertex:{baseUrl:"https://aiplatform.googleapis.com",format:"gemini"},"vertex-partner":{baseUrl:"https://aiplatform.googleapis.com",format:"openai"}},s={cc:[{id:"claude-opus-4-6",name:"Claude Opus 4.6"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6"},{id:"claude-opus-4-5-20251101",name:"Claude 4.5 Opus"},{id:"claude-sonnet-4-5-20250929",name:"Claude 4.5 Sonnet"},{id:"claude-haiku-4-5-20251001",name:"Claude 4.5 Haiku"}],cx:[{id:"gpt-5.4",name:"GPT 5.4"},{id:"gpt-5.3-codex",name:"GPT 5.3 Codex"},{id:"gpt-5.3-codex-xhigh",name:"GPT 5.3 Codex (xHigh)"},{id:"gpt-5.3-codex-high",name:"GPT 5.3 Codex (High)"},{id:"gpt-5.3-codex-low",name:"GPT 5.3 Codex (Low)"},{id:"gpt-5.3-codex-none",name:"GPT 5.3 Codex (None)"},{id:"gpt-5.3-codex-spark",name:"GPT 5.3 Codex Spark"},{id:"gpt-5.1-codex-mini",name:"GPT 5.1 Codex Mini"},{id:"gpt-5.1-codex-mini-high",name:"GPT 5.1 Codex Mini (High)"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"},{id:"gpt-5.2",name:"GPT 5.2"},{id:"gpt-5.1-codex-max",name:"GPT 5.1 Codex Max"},{id:"gpt-5.1-codex",name:"GPT 5.1 Codex"},{id:"gpt-5.1",name:"GPT 5.1"},{id:"gpt-5-codex",name:"GPT 5 Codex"},{id:"gpt-5-codex-mini",name:"GPT 5 Codex Mini"}],gc:[{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro Preview"}],qw:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"qwen3-coder-flash",name:"Qwen3 Coder Flash"},{id:"vision-model",name:"Qwen3 Vision Model"},{id:"coder-model",name:"Qwen3.5 Coder Model"}],if:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"qwen3-max",name:"Qwen3 Max"},{id:"qwen3-vl-plus",name:"Qwen3 VL Plus"},{id:"qwen3-max-preview",name:"Qwen3 Max Preview"},{id:"qwen3-235b",name:"Qwen3 235B A22B"},{id:"qwen3-235b-a22b-instruct",name:"Qwen3 235B A22B Instruct"},{id:"qwen3-235b-a22b-thinking-2507",name:"Qwen3 235B A22B Thinking"},{id:"qwen3-32b",name:"Qwen3 32B"},{id:"kimi-k2",name:"Kimi K2"},{id:"deepseek-v3.2",name:"DeepSeek V3.2 Exp"},{id:"deepseek-v3.1",name:"DeepSeek V3.1 Terminus"},{id:"deepseek-v3",name:"DeepSeek V3 671B"},{id:"deepseek-r1",name:"DeepSeek R1"},{id:"glm-4.7",name:"GLM 4.7"},{id:"iflow-rome-30ba3b",name:"iFlow ROME"}],ag:[{id:"gemini-3.1-pro-high",name:"Gemini 3 Pro High"},{id:"gemini-3.1-pro-low",name:"Gemini 3 Pro Low"},{id:"gemini-3-flash",name:"Gemini 3 Flash"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6"},{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 Thinking"},{id:"gpt-oss-120b-medium",name:"GPT OSS 120B Medium"}],gh:[{id:"gpt-3.5-turbo",name:"GPT-3.5 Turbo"},{id:"gpt-4",name:"GPT-4"},{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o mini"},{id:"gpt-4.1",name:"GPT-4.1"},{id:"gpt-5",name:"GPT-5"},{id:"gpt-5-mini",name:"GPT-5 Mini"},{id:"gpt-5-codex",name:"GPT-5 Codex"},{id:"gpt-5.1",name:"GPT-5.1"},{id:"gpt-5.1-codex",name:"GPT-5.1 Codex"},{id:"gpt-5.1-codex-mini",name:"GPT-5.1 Codex Mini"},{id:"gpt-5.1-codex-max",name:"GPT-5.1 Codex Max"},{id:"gpt-5.2",name:"GPT-5.2"},{id:"gpt-5.2-codex",name:"GPT-5.2 Codex"},{id:"gpt-5.3-codex",name:"GPT-5.3 Codex"},{id:"gpt-5.4",name:"GPT-5.4"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"},{id:"claude-opus-4.1",name:"Claude Opus 4.1"},{id:"claude-opus-4.5",name:"Claude Opus 4.5"},{id:"claude-sonnet-4",name:"Claude Sonnet 4"},{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"claude-sonnet-4.6",name:"Claude Sonnet 4.6"},{id:"claude-opus-4.6",name:"Claude Opus 4.6"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro"},{id:"grok-code-fast-1",name:"Grok Code Fast 1"},{id:"oswe-vscode-prime",name:"Raptor Mini"}],kr:[{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"},{id:"deepseek-3.2",name:"DeepSeek 3.2"},{id:"deepseek-3.1",name:"DeepSeek 3.1"},{id:"qwen3-coder-next",name:"Qwen3 Coder Next"}],cu:[{id:"default",name:"Auto (Server Picks)"},{id:"claude-4.5-opus-high-thinking",name:"Claude 4.5 Opus High Thinking"},{id:"claude-4.5-opus-high",name:"Claude 4.5 Opus High"},{id:"claude-4.5-sonnet-thinking",name:"Claude 4.5 Sonnet Thinking"},{id:"claude-4.5-sonnet",name:"Claude 4.5 Sonnet"},{id:"claude-4.5-haiku",name:"Claude 4.5 Haiku"},{id:"claude-4.5-opus",name:"Claude 4.5 Opus"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"},{id:"claude-4.6-opus-max",name:"Claude 4.6 Opus Max"},{id:"claude-4.6-sonnet-medium-thinking",name:"Claude 4.6 Sonnet Medium Thinking"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gpt-5.2",name:"GPT 5.2"},{id:"gpt-5.3-codex",name:"GPT 5.3 Codex"}],kmc:[{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}],kc:[{id:"anthropic/claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"anthropic/claude-opus-4-20250514",name:"Claude Opus 4"},{id:"google/gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"google/gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"openai/gpt-4.1",name:"GPT-4.1"},{id:"openai/o3",name:"o3"},{id:"deepseek/deepseek-chat",name:"DeepSeek Chat"},{id:"deepseek/deepseek-reasoner",name:"DeepSeek Reasoner"}],cl:[{id:"anthropic/claude-sonnet-4.6",name:"Claude Sonnet 4.6"},{id:"anthropic/claude-opus-4.6",name:"Claude Opus 4.6"},{id:"openai/gpt-5.3-codex",name:"GPT-5.3 Codex"},{id:"openai/gpt-5.4",name:"GPT-5.4"},{id:"google/gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview"},{id:"google/gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview"},{id:"kwaipilot/kat-coder-pro",name:"KAT Coder Pro"}],openai:[{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-5-mini",name:"GPT-5 Mini"},{id:"gpt-4-turbo",name:"GPT-4 Turbo"},{id:"o1",name:"O1"},{id:"o1-mini",name:"O1 Mini"}],anthropic:[{id:"claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"claude-opus-4-20250514",name:"Claude Opus 4"},{id:"claude-3-5-sonnet-20241022",name:"Claude 3.5 Sonnet"}],gemini:[{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview"},{id:"gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro Preview"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"},{id:"gemini-embedding-001",name:"Gemini Embedding 001",type:"embedding"},{id:"text-embedding-005",name:"Text Embedding 005",type:"embedding"},{id:"text-embedding-004",name:"Text Embedding 004 (Legacy)",type:"embedding"}],openrouter:[{id:"auto",name:"Auto (Best Available)"}],glm:[{id:"glm-5",name:"GLM 5"},{id:"glm-4.7",name:"GLM 4.7"},{id:"glm-4.6v",name:"GLM 4.6V (Vision)"}],"glm-cn":[{id:"glm-5",name:"GLM 5"},{id:"glm-4.7",name:"GLM-4.7"},{id:"glm-4.6",name:"GLM-4.6"},{id:"glm-4.5-air",name:"GLM-4.5-Air"}],kimi:[{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}],minimax:[{id:"MiniMax-M2.7",name:"MiniMax M2.7"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"MiniMax-M2.1",name:"MiniMax M2.1"}],"minimax-cn":[{id:"MiniMax-M2.7",name:"MiniMax M2.7"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"MiniMax-M2.1",name:"MiniMax M2.1"}],alicode:[{id:"qwen3.5-plus",name:"Qwen3.5 Plus"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5",name:"GLM 5"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"qwen3-max-2026-01-23",name:"Qwen3 Max"},{id:"qwen3-coder-next",name:"Qwen3 Coder Next"},{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"glm-4.7",name:"GLM 4.7"}],"alicode-intl":[{id:"qwen3.5-plus",name:"Qwen3.5 Plus"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5",name:"GLM 5"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"qwen3-coder-next",name:"Qwen3 Coder Next"},{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"glm-4.7",name:"GLM 4.7"}],deepseek:[{id:"deepseek-chat",name:"DeepSeek V3.2 Chat"},{id:"deepseek-reasoner",name:"DeepSeek V3.2 Reasoner"}],groq:[{id:"llama-3.3-70b-versatile",name:"Llama 3.3 70B"},{id:"meta-llama/llama-4-maverick-17b-128e-instruct",name:"Llama 4 Maverick"},{id:"qwen/qwen3-32b",name:"Qwen3 32B"},{id:"openai/gpt-oss-120b",name:"GPT-OSS 120B"}],xai:[{id:"grok-4",name:"Grok 4"},{id:"grok-4-fast-reasoning",name:"Grok 4 Fast Reasoning"},{id:"grok-code-fast-1",name:"Grok Code Fast"},{id:"grok-3",name:"Grok 3"}],mistral:[{id:"mistral-large-latest",name:"Mistral Large 3"},{id:"codestral-latest",name:"Codestral"},{id:"mistral-medium-latest",name:"Mistral Medium 3"}],perplexity:[{id:"sonar-pro",name:"Sonar Pro"},{id:"sonar",name:"Sonar"}],together:[{id:"meta-llama/Llama-3.3-70B-Instruct-Turbo",name:"Llama 3.3 70B Turbo"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3-235B-A22B",name:"Qwen3 235B"},{id:"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",name:"Llama 4 Maverick"}],fireworks:[{id:"accounts/fireworks/models/deepseek-v3p1",name:"DeepSeek V3.1"},{id:"accounts/fireworks/models/llama-v3p3-70b-instruct",name:"Llama 3.3 70B"},{id:"accounts/fireworks/models/qwen3-235b-a22b",name:"Qwen3 235B"}],cerebras:[{id:"gpt-oss-120b",name:"GPT OSS 120B"},{id:"zai-glm-4.7",name:"ZAI GLM 4.7"},{id:"llama-3.3-70b",name:"Llama 3.3 70B"},{id:"llama-4-scout-17b-16e-instruct",name:"Llama 4 Scout"},{id:"qwen-3-235b-a22b-instruct-2507",name:"Qwen3 235B A22B"},{id:"qwen-3-32b",name:"Qwen3 32B"}],cohere:[{id:"command-r-plus-08-2024",name:"Command R+ (Aug 2024)"},{id:"command-r-08-2024",name:"Command R (Aug 2024)"},{id:"command-a-03-2025",name:"Command A (Mar 2025)"}],nvidia:[{id:"moonshotai/kimi-k2.5",name:"Kimi K2.5"},{id:"z-ai/glm4.7",name:"GLM 4.7"},{id:"deepseek-ai/deepseek-v3.2",name:"DeepSeek V3.2"},{id:"nvidia/llama-3.3-70b-instruct",name:"Llama 3.3 70B"},{id:"meta/llama-4-maverick-17b-128e-instruct",name:"Llama 4 Maverick"},{id:"deepseek/deepseek-r1",name:"DeepSeek R1"}],nebius:[{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B Instruct"}],siliconflow:[{id:"deepseek-ai/DeepSeek-V3.2",name:"DeepSeek V3.2"},{id:"deepseek-ai/DeepSeek-V3.1",name:"DeepSeek V3.1"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3-235B-A22B-Instruct-2507",name:"Qwen3 235B"},{id:"Qwen/Qwen3-Coder-480B-A35B-Instruct",name:"Qwen3 Coder 480B"},{id:"Qwen/Qwen3-32B",name:"Qwen3 32B"},{id:"moonshotai/Kimi-K2.5",name:"Kimi K2.5"},{id:"zai-org/GLM-4.7",name:"GLM 4.7"},{id:"openai/gpt-oss-120b",name:"GPT OSS 120B"},{id:"baidu/ERNIE-4.5-300B-A47B",name:"ERNIE 4.5 300B"}],hyperbolic:[{id:"Qwen/QwQ-32B",name:"QwQ 32B"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"deepseek-ai/DeepSeek-V3",name:"DeepSeek V3"},{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B"},{id:"meta-llama/Llama-3.2-3B-Instruct",name:"Llama 3.2 3B"},{id:"Qwen/Qwen2.5-72B-Instruct",name:"Qwen 2.5 72B"},{id:"Qwen/Qwen2.5-Coder-32B-Instruct",name:"Qwen 2.5 Coder 32B"},{id:"NousResearch/Hermes-3-Llama-3.1-70B",name:"Hermes 3 70B"}],ollama:[{id:"gpt-oss:120b",name:"GPT OSS 120B"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5",name:"GLM 5"},{id:"minimax-m2.5",name:"MiniMax M2.5"},{id:"glm-4.7-flash",name:"GLM 4.7 Flash"},{id:"qwen3.5",name:"Qwen3.5"}],vertex:[{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview"},{id:"gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"}],"vertex-partner":[{id:"deepseek-ai/deepseek-v3.2-maas",name:"DeepSeek V3.2 (Vertex)"},{id:"qwen/qwen3-next-80b-a3b-thinking-maas",name:"Qwen3 Next 80B Thinking (Vertex)"},{id:"qwen/qwen3-next-80b-a3b-instruct-maas",name:"Qwen3 Next 80B Instruct (Vertex)"},{id:"zai-org/glm-5-maas",name:"GLM-5 (Vertex)"}]},r={claude:"cc",codex:"cx","gemini-cli":"gc",qwen:"qw",iflow:"if",antigravity:"ag",github:"gh",kiro:"kr",cursor:"cu","kimi-coding":"kmc",kilocode:"kc",cline:"cl",vertex:"vertex","vertex-partner":"vertex-partner"},l=Object.fromEntries(Object.keys(m).map(e=>[e,r[e]||e]));function d(e){return s[l[e]||e]||[]}},52679:(e,i,a)=>{a.d(i,{DI:()=>s,IS:()=>n,JH:()=>m,MA:()=>c,Q2:()=>d,fg:()=>t,gb:()=>l,mq:()=>r,wG:()=>h,wb:()=>u,zN:()=>o,zt:()=>p});let n={iflow:{id:"iflow",alias:"if",name:"iFlow AI",icon:"water_drop",color:"#6366F1"},qwen:{id:"qwen",alias:"qw",name:"Qwen Code",icon:"psychology",color:"#10B981"},"gemini-cli":{id:"gemini-cli",alias:"gc",name:"Gemini CLI",icon:"terminal",color:"#4285F4"},kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"}},o={claude:{id:"claude",alias:"cc",name:"Claude Code",icon:"smart_toy",color:"#D97757"},antigravity:{id:"antigravity",alias:"ag",name:"Antigravity",icon:"rocket_launch",color:"#F59E0B"},codex:{id:"codex",alias:"cx",name:"OpenAI Codex",icon:"code",color:"#3B82F6"},github:{id:"github",alias:"gh",name:"GitHub Copilot",icon:"code",color:"#333333"},cursor:{id:"cursor",alias:"cu",name:"Cursor IDE",icon:"edit_note",color:"#00D4AA"},kilocode:{id:"kilocode",alias:"kc",name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC"},cline:{id:"cline",alias:"cl",name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL"}},t={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",passthroughModels:!0,website:"https://openrouter.ai"},glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},"glm-cn":{id:"glm-cn",alias:"glm-cn",name:"GLM (China)",icon:"code",color:"#DC2626",textIcon:"GC",website:"https://open.bigmodel.cn"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},minimax:{id:"minimax",alias:"minimax",name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com"},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com"},alicode:{id:"alicode",alias:"alicode",name:"Alibaba",icon:"cloud",color:"#FF6A00",textIcon:"ALi"},"alicode-intl":{id:"alicode-intl",alias:"alicode-intl",name:"Alibaba Intl",icon:"cloud",color:"#FF6A00",textIcon:"ALi"},openai:{id:"openai",alias:"openai",name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com"},anthropic:{id:"anthropic",alias:"anthropic",name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com"},gemini:{id:"gemini",alias:"gemini",name:"Gemini",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev"},deepseek:{id:"deepseek",alias:"ds",name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com"},groq:{id:"groq",alias:"groq",name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com"},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai"},mistral:{id:"mistral",alias:"mistral",name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai"},perplexity:{id:"perplexity",alias:"pplx",name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai"},together:{id:"together",alias:"together",name:"Together AI",icon:"group_work",color:"#0F6FFF",textIcon:"TG",website:"https://www.together.ai"},fireworks:{id:"fireworks",alias:"fireworks",name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai"},cerebras:{id:"cerebras",alias:"cerebras",name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://www.cerebras.ai"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://developer.nvidia.com/nim"},nebius:{id:"nebius",alias:"nebius",name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com"},siliconflow:{id:"siliconflow",alias:"siliconflow",name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com"},hyperbolic:{id:"hyperbolic",alias:"hyp",name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz"},deepgram:{id:"deepgram",alias:"dg",name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com"},assemblyai:{id:"assemblyai",alias:"aai",name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com"},nanobanana:{id:"nanobanana",alias:"nb",name:"NanoBanana",icon:"image",color:"#FFD700",textIcon:"NB",website:"https://nanobananaapi.ai"},chutes:{id:"chutes",alias:"ch",name:"Chutes AI",icon:"water_drop",color:"#ffffffff",textIcon:"CH",website:"https://chutes.ai"},ollama:{id:"ollama",alias:"ollama",name:"Ollama Cloud",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com"},"ollama-local":{id:"ollama-local",alias:"ollama-local",name:"Ollama Local",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com"},vertex:{id:"vertex",alias:"vx",name:"Vertex AI",icon:"cloud",color:"#4285F4",textIcon:"VX",website:"https://cloud.google.com/vertex-ai"},"vertex-partner":{id:"vertex-partner",alias:"vxp",name:"Vertex Partner",icon:"cloud",color:"#34A853",textIcon:"VP",website:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models"}},m="openai-compatible-",s="anthropic-compatible-";function r(e){return"string"==typeof e&&e.startsWith(m)}function l(e){return"string"==typeof e&&e.startsWith(s)}let d={...n,...o,...t},c={oauth:{id:"oauth",name:"OAuth",icon:"lock"},apikey:{id:"apikey",name:"API Key",icon:"key"}};function p(e){for(let i of Object.values(d))if(i.alias===e||i.id===e)return i;return null}function h(e){let i=d[e];return i?.alias||e}Object.values(d).reduce((e,i)=>(e[i.alias]=i.id,e),{}),Object.values(d).reduce((e,i)=>(e[i.id]=i.alias,e),{});let u=["claude","antigravity","kiro","github","codex","kimi-coding"]}}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2134],{52397:(e,t,i)=>{Promise.resolve().then(i.bind(i,97162))},97162:(e,t,i)=>{"use strict";i.r(t),i.d(t,{default:()=>h});var s=i(95155),a=i(12115),l=i(14051),r=i.n(l),o=i(73321),n=i(98500),d=i.n(n),c=i(5772),p=i(35497),m=i(52679),x=i(28777),u=i(11059);function h(){let e=(0,o.useParams)(),t=(0,o.useRouter)(),i=e.id,[l,r]=(0,a.useState)([]),[n,h]=(0,a.useState)(!0),[g,b]=(0,a.useState)(null),[S,A]=(0,a.useState)([]),[$,P]=(0,a.useState)(!1),[T,O]=(0,a.useState)(!1),[E,R]=(0,a.useState)(!1),[I,_]=(0,a.useState)(!1),[D,q]=(0,a.useState)(!1),[U,K]=(0,a.useState)(!1),[M,L]=(0,a.useState)(null),[z,J]=(0,a.useState)({}),[F,W]=(0,a.useState)(!1),[V,B]=(0,a.useState)({}),[Z,G]=(0,a.useState)(""),[Q,H]=(0,a.useState)(null),[X,Y]=(0,a.useState)(!1),[ee,et]=(0,a.useState)([]),[ei,es]=(0,a.useState)("__none__"),[ea,el]=(0,a.useState)(!1),[er,eo]=(0,a.useState)(null),[en,ed]=(0,a.useState)(""),{copied:ec,copy:ep}=(0,u.C)(),em=g?{id:g.id,name:g.name||("anthropic-compatible"===g.type?"Anthropic Compatible":"OpenAI Compatible"),color:"anthropic-compatible"===g.type?"#D97757":"#10A37F",textIcon:"anthropic-compatible"===g.type?"AC":"OC",apiType:g.apiType,baseUrl:g.baseUrl,type:g.type}:m.zN[i]||m.fg[i]||m.IS[i],ex=!!m.zN[i]||!!m.IS[i],eu=(0,x.KC)(i),eh=(0,m.wG)(i),ey=(0,m.mq)(i),ef=(0,m.gb)(i),eg=ey||ef,ev=eg?i:eh,eb=eg?g?.prefix||i:eh,ej=(0,a.useCallback)(async()=>{try{let e=await fetch("/api/models/alias"),t=await e.json();e.ok&&J(t.aliases||{})}catch(e){console.log("Error fetching aliases:",e)}},[]),eN=(0,a.useCallback)(async()=>{try{let[e,t,s,a]=await Promise.all([fetch("/api/providers",{cache:"no-store"}),fetch("/api/provider-nodes",{cache:"no-store"}),fetch("/api/proxy-pools?isActive=true",{cache:"no-store"}),fetch("/api/settings",{cache:"no-store"})]),l=await e.json(),o=await t.json(),n=await s.json(),d=a.ok?await a.json():{};if(e.ok){let e=(l.connections||[]).filter(e=>e.provider===i);r(e)}s.ok&&A(n.proxyPools||[]);let c=(d.providerStrategies||{})[i]||{};if(eo(c.fallbackStrategy||null),ed(null!=c.stickyRoundRobinLimit?String(c.stickyRoundRobinLimit):"1"),t.ok){let e=(o.nodes||[]).find(e=>e.id===i)||null;if(!e&&eg)for(let t=0;t<3;t+=1){await new Promise(e=>setTimeout(e,150));let t=await fetch("/api/provider-nodes",{cache:"no-store"});if(t.ok&&(e=((await t.json()).nodes||[]).find(e=>e.id===i)||null))break}b(e)}}catch(e){console.log("Error fetching connections:",e)}finally{h(!1)}},[i,eg]),ek=async e=>{try{let t=await fetch(`/api/provider-nodes/${i}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),s=await t.json();t.ok&&(b(s.node),await eN(),q(!1))}catch(e){console.log("Error updating provider node:",e)}},eC=async(e,t)=>{try{let s=await fetch("/api/settings",{cache:"no-store"}),a=(s.ok?await s.json():{}).providerStrategies||{},l={};e&&(l.fallbackStrategy=e),"round-robin"===e&&""!==t&&(l.stickyRoundRobinLimit=Number(t)||3);let r={...a};0===Object.keys(l).length?delete r[i]:r[i]=l,await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({providerStrategies:r})})}catch(e){console.log("Error saving provider strategy:",e)}};(0,a.useEffect)(()=>{eN(),ej()},[eN,ej]);let ew=async(e,t,i=eh)=>{let s=`${i}/${e}`;try{let e=await fetch("/api/models/alias",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:s,alias:t})});if(e.ok)await ej();else{let t=await e.json();alert(t.error||"Failed to set alias")}}catch(e){console.log("Error setting alias:",e)}},eS=async e=>{try{(await fetch(`/api/models/alias?alias=${encodeURIComponent(e)}`,{method:"DELETE"})).ok&&await ej()}catch(e){console.log("Error deleting alias:",e)}},eA=async e=>{if(confirm("Delete this connection?"))try{(await fetch(`/api/providers/${e}`,{method:"DELETE"})).ok&&r(l.filter(t=>t.id!==e))}catch(e){console.log("Error deleting connection:",e)}},e$=()=>{eN(),P(!1)},eP=async e=>{try{(await fetch("/api/providers",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:i,...e})})).ok&&(await eN(),R(!1))}catch(e){console.log("Error saving connection:",e)}},eT=async e=>{try{(await fetch(`/api/providers/${M.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})).ok&&(await eN(),_(!1))}catch(e){console.log("Error updating connection:",e)}},eO=async(e,t)=>{try{(await fetch(`/api/providers/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:t})})).ok&&r(i=>i.map(i=>i.id===e?{...i,isActive:t}:i))}catch(e){console.log("Error updating connection status:",e)}},eE=async(e,t)=>{let i=[...l];[i[e],i[t]]=[i[t],i[e]],r(i);try{await Promise.all([fetch(`/api/providers/${i[e].id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({priority:e})}),fetch(`/api/providers/${i[t].id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({priority:t})})])}catch(e){console.log("Error swapping priority:",e),await eN()}},eR=l.filter(e=>ee.includes(e.id));l.length>0&&(ee.length,l.length),(0,a.useEffect)(()=>{et(e=>e.filter(e=>l.some(t=>t.id===e)))},[l]);let eI=(()=>{if(0===eR.length)return"";let e=new Set(eR.map(e=>e.providerSpecificData?.proxyPoolId||"__none__"));if(1===e.size){let t=[...e][0];if("__none__"===t)return"All selected currently unbound";let i=S.find(e=>e.id===t);return`All selected currently bound to ${i?.name||t}`}return"Selected connections have mixed proxy bindings"})(),e_=()=>{ea||K(!1)},eD=async()=>{if(0===ee.length)return;let e="__none__"===ei?null:ei;el(!0);try{let t=[];for(let i of ee)try{let s=await fetch(`/api/providers/${i}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({proxyPoolId:e})});t.push(s.ok)}catch(e){console.log("Error applying bulk proxy pool for",i,e),t.push(!1)}let i=t.filter(e=>!e).length;i>0&&alert(`Updated with ${i} failed request(s).`),await eN(),et([]),es("__none__"),K(!1)}catch(e){console.log("Error applying bulk proxy pool:",e)}finally{el(!1)}},eq=(0,s.jsx)("div",{className:"flex flex-col divide-y divide-black/[0.03] dark:divide-white/[0.03]",children:l.map((e,t)=>(0,s.jsx)("div",{className:"flex items-stretch",children:(0,s.jsx)("div",{className:"flex-1 min-w-0",children:(0,s.jsx)(j,{connection:e,proxyPools:S,isOAuth:ex,isFirst:0===t,isLast:t===l.length-1,onMoveUp:()=>eE(t,t-1),onMoveDown:()=>eE(t,t+1),onToggleActive:t=>eO(e.id,t),onUpdateProxy:async t=>{try{(await fetch(`/api/providers/${e.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({proxyPoolId:t||null})})).ok&&r(i=>i.map(i=>i.id===e.id?{...i,providerSpecificData:{...i.providerSpecificData,proxyPoolId:t||null}}:i))}catch(e){console.log("Error updating proxy:",e)}},onEdit:()=>{L(e),_(!0)},onDelete:()=>eA(e.id)})})},e.id))}),eU=[{value:"__none__",label:"None"},...S.map(e=>({value:e.id,label:e.name}))],eK=0===ee.length?"Select one or more connections, then click Proxy Action.":eI,eM=ee.length>0&&!ea,eL=(0,s.jsx)(p.aF,{isOpen:U,onClose:e_,title:`Proxy Action (${ee.length} selected)`,children:(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsx)(p.l6,{label:"Proxy Pool",value:ei,onChange:e=>es(e.target.value),options:eU,placeholder:"None"}),(0,s.jsx)("p",{className:"text-xs text-text-muted",children:eK}),(0,s.jsx)("p",{className:"text-xs text-text-muted",children:"Selecting None will unbind selected connections from proxy pool."}),(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)(p.$n,{onClick:eD,fullWidth:!0,disabled:!eM,children:ea?"Applying...":"Apply"}),(0,s.jsx)(p.$n,{onClick:e_,variant:"ghost",fullWidth:!0,disabled:ea,children:"Cancel"})]})]})}),ez=async e=>{if(!Q){H(e);try{let t=await fetch("/api/models/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:`${ev}/${e}`})}),i=await t.json();B(t=>({...t,[e]:i.ok?"ok":"error"})),G(i.ok?"":i.error||"Model not reachable")}catch{B(t=>({...t,[e]:"error"})),G("Network error")}finally{H(null)}}};return n?(0,s.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,s.jsx)(p.Qv,{}),(0,s.jsx)(p.Qv,{})]}):em?(0,s.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,s.jsxs)("div",{children:[(0,s.jsxs)(d(),{href:"/dashboard/providers",className:"inline-flex items-center gap-1 text-sm text-text-muted hover:text-primary transition-colors mb-4",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-lg",children:"arrow_back"}),"Back to Providers"]}),(0,s.jsxs)("div",{className:"flex items-center gap-4",children:[(0,s.jsx)("div",{className:"rounded-lg flex items-center justify-center",style:{backgroundColor:`${em.color}15`},children:F?(0,s.jsx)("span",{className:"text-sm font-bold",style:{color:em.color},children:em.textIcon||em.id.slice(0,2).toUpperCase()}):(0,s.jsx)(c.default,{src:ey&&em.apiType?"responses"===em.apiType?"/providers/oai-r.png":"/providers/oai-cc.png":ef?"/providers/anthropic-m.png":`/providers/${em.id}.png`,alt:em.name,width:48,height:48,className:"object-contain rounded-lg max-w-[48px] max-h-[48px]",sizes:"48px",onError:()=>W(!0)})}),(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{className:"text-3xl font-semibold tracking-tight",children:em.name}),(0,s.jsxs)("p",{className:"text-text-muted",children:[l.length," connection",1===l.length?"":"s"]})]})]})]}),eg&&g&&(0,s.jsxs)(p.Zp,{children:[(0,s.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("h2",{className:"text-lg font-semibold",children:ef?"Anthropic Compatible Details":"OpenAI Compatible Details"}),(0,s.jsxs)("p",{className:"text-sm text-text-muted",children:[ef?"Messages API":"responses"===g.apiType?"Responses API":"Chat Completions"," \xb7 ",(g.baseUrl||"").replace(/\/$/,""),"/",ef?"messages":"responses"===g.apiType?"responses":"chat/completions"]})]}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)(p.$n,{size:"sm",icon:"add",onClick:()=>R(!0),disabled:l.length>0,children:"Add"}),(0,s.jsx)(p.$n,{size:"sm",variant:"secondary",icon:"edit",onClick:()=>q(!0),children:"Edit"}),(0,s.jsx)(p.$n,{size:"sm",variant:"secondary",icon:"delete",onClick:async()=>{if(confirm(`Delete this ${ef?"Anthropic":"OpenAI"} Compatible node?`))try{(await fetch(`/api/provider-nodes/${i}`,{method:"DELETE"})).ok&&t.push("/dashboard/providers")}catch(e){console.log("Error deleting provider node:",e)}},children:"Delete"})]})]}),l.length>0&&(0,s.jsx)("p",{className:"text-sm text-text-muted",children:"Only one connection is allowed per compatible node. Add another node if you need more connections."})]}),(0,s.jsxs)(p.Zp,{children:[(0,s.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,s.jsx)("h2",{className:"text-lg font-semibold",children:"Connections"}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:"text-xs text-text-muted font-medium",children:"Round Robin"}),(0,s.jsx)(p.lM,{checked:"round-robin"===er,onChange:e=>{let t=e?"round-robin":null,i=e?en||"1":en;e&&!en&&ed("1"),eo(t),eC(t,i)}}),"round-robin"===er&&(0,s.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,s.jsx)("span",{className:"text-xs text-text-muted",children:"Sticky:"}),(0,s.jsx)("input",{type:"number",min:1,value:en,onChange:e=>{var t;ed(t=e.target.value),eC("round-robin",t)},placeholder:"1",className:"w-14 px-2 py-1 text-xs border border-border rounded-md bg-background focus:outline-none focus:border-primary"})]})]})]}),0===l.length?(0,s.jsxs)("div",{className:"text-center py-12",children:[(0,s.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 rounded-full bg-primary/10 text-primary mb-4",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[32px]",children:ex?"lock":"key"})}),(0,s.jsx)("p",{className:"text-text-main font-medium mb-1",children:"No connections yet"}),(0,s.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Add your first connection to get started"}),!eg&&(0,s.jsxs)("div",{className:"flex gap-2 justify-center",children:["iflow"===i&&(0,s.jsx)(p.$n,{icon:"cookie",variant:"secondary",onClick:()=>O(!0),children:"Cookie Auth"}),(0,s.jsx)(p.$n,{icon:"add",onClick:()=>ex?P(!0):R(!0),children:"iflow"===i?"OAuth":"Add Connection"})]})]}):(0,s.jsxs)(s.Fragment,{children:[eq,!eg&&(0,s.jsxs)("div",{className:"flex gap-2 mt-4",children:["iflow"===i&&(0,s.jsx)(p.$n,{size:"sm",icon:"cookie",variant:"secondary",onClick:()=>O(!0),title:"Add connection using browser cookie",children:"Cookie"}),(0,s.jsx)(p.$n,{size:"sm",icon:"add",onClick:()=>ex?P(!0):R(!0),children:"Add"})]})]})]}),(0,s.jsxs)(p.Zp,{children:[(0,s.jsx)("div",{className:"flex items-center justify-between mb-4",children:(0,s.jsx)("h2",{className:"text-lg font-semibold",children:em.passthroughModels?"Model Aliases":"Available Models"})}),!!Z&&(0,s.jsx)("p",{className:"text-xs text-red-500 mb-3 break-words",children:Z}),(()=>{if(eg)return(0,s.jsx)(v,{providerStorageAlias:ev,providerDisplayAlias:eb,modelAliases:z,copied:ec,onCopy:ep,onSetAlias:ew,onDeleteAlias:eS,connections:l,isAnthropic:ef});if(em.passthroughModels)return(0,s.jsx)(f,{providerAlias:eh,modelAliases:z,copied:ec,onCopy:ep,onSetAlias:ew,onDeleteAlias:eS});let e=Object.entries(z).filter(([e,t])=>{let i=`${ev}/`;if(!t.startsWith(i))return!1;let s=t.slice(i.length);return!eu.some(e=>e.id===s)&&e===s}).map(([e,t])=>({id:t.slice(`${ev}/`.length),alias:e,fullModel:t}));return(0,s.jsxs)("div",{className:"flex flex-wrap gap-3",children:[eu.map(e=>{let t=`${ev}/${e.id}`,a=`${i}/${e.id}`,r=Object.entries(z).find(([,e])=>e===t||e===a)?.[0];return(0,s.jsx)(y,{model:e,fullModel:`${eb}/${e.id}`,alias:r,copied:ec,onCopy:ep,onSetAlias:t=>ew(e.id,t,ev),onDeleteAlias:()=>eS(r),testStatus:V[e.id],onTest:l.length>0?()=>ez(e.id):void 0,isTesting:Q===e.id},e.id)}),e.map(e=>(0,s.jsx)(y,{model:{id:e.id},fullModel:`${eb}/${e.id}`,alias:e.alias,copied:ec,onCopy:ep,onSetAlias:()=>{},onDeleteAlias:()=>eS(e.alias),testStatus:V[e.id],onTest:l.length>0?()=>ez(e.id):void 0,isTesting:Q===e.id,isCustom:!0},e.id)),(0,s.jsxs)("button",{onClick:()=>Y(!0),className:"flex items-center gap-1.5 px-3 py-2 rounded-lg border border-dashed border-black/15 dark:border-white/15 text-xs text-text-muted hover:text-primary hover:border-primary/40 transition-colors",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-sm",children:"add"}),"Add Model"]})]})})()]}),eL,"kiro"===i?(0,s.jsx)(p.Mh,{isOpen:$,providerInfo:em,onSuccess:e$,onClose:()=>P(!1)}):"cursor"===i?(0,s.jsx)(p.G9,{isOpen:$,onSuccess:e$,onClose:()=>P(!1)}):(0,s.jsx)(p.LF,{isOpen:$,provider:i,providerInfo:em,onSuccess:e$,onClose:()=>P(!1)}),"iflow"===i&&(0,s.jsx)(p.vE,{isOpen:T,onSuccess:()=>{eN(),O(!1)},onClose:()=>O(!1)}),(0,s.jsx)(N,{isOpen:E,provider:i,providerName:em.name,isCompatible:eg,isAnthropic:ef,proxyPools:S,onSave:eP,onClose:()=>R(!1)}),(0,s.jsx)(k,{isOpen:I,connection:M,proxyPools:S,onSave:eT,onClose:()=>_(!1)}),eg&&(0,s.jsx)(C,{isOpen:D,node:g,onSave:ek,onClose:()=>q(!1),isAnthropic:ef}),!eg&&!em?.passthroughModels&&(0,s.jsx)(w,{isOpen:X,providerAlias:ev,providerDisplayAlias:eb,onSave:async e=>{await ew(e,e,ev),Y(!1)},onClose:()=>Y(!1)})]}):(0,s.jsxs)("div",{className:"text-center py-20",children:[(0,s.jsx)("p",{className:"text-text-muted",children:"Provider not found"}),(0,s.jsx)(d(),{href:"/dashboard/providers",className:"text-primary mt-4 inline-block",children:"Back to Providers"})]})}function y({model:e,fullModel:t,alias:i,copied:a,onCopy:l,testStatus:r,isCustom:o,onDeleteAlias:n,onTest:d,isTesting:c}){let p="ok"===r?"#22c55e":"error"===r?"#ef4444":void 0;return(0,s.jsx)("div",{className:`group px-3 py-2 rounded-lg border ${"ok"===r?"border-green-500/40":"error"===r?"border-red-500/40":"border-border"} hover:bg-sidebar/50`,children:(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-base",style:p?{color:p}:void 0,children:"ok"===r?"check_circle":"error"===r?"cancel":"smart_toy"}),(0,s.jsx)("code",{className:"text-xs text-text-muted font-mono bg-sidebar px-1.5 py-0.5 rounded",children:t}),d&&(0,s.jsx)("button",{onClick:d,disabled:c,className:`p-0.5 hover:bg-sidebar rounded text-text-muted hover:text-primary transition-opacity ${c?"opacity-100":"opacity-0 group-hover:opacity-100"}`,title:"Test model",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-sm",style:c?{animation:"spin 1s linear infinite"}:void 0,children:c?"progress_activity":"science"})}),(0,s.jsx)("button",{onClick:()=>l(t,`model-${e.id}`),className:"p-0.5 hover:bg-sidebar rounded text-text-muted hover:text-primary",title:"Copy model",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-sm",children:a===`model-${e.id}`?"check":"content_copy"})}),o&&(0,s.jsx)("button",{onClick:n,className:"p-0.5 hover:bg-red-500/10 rounded text-text-muted hover:text-red-500 opacity-0 group-hover:opacity-100 transition-opacity ml-auto",title:"Remove custom model",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-sm",children:"close"})})]})})}function f({providerAlias:e,modelAliases:t,copied:i,onCopy:l,onSetAlias:r,onDeleteAlias:o}){let[n,d]=(0,a.useState)(""),[c,m]=(0,a.useState)(!1),x=Object.entries(t).filter(([,t])=>t.startsWith(`${e}/`)).map(([t,i])=>({modelId:i.replace(`${e}/`,""),fullModel:i,alias:t})),u=async()=>{let e;if(!n.trim()||c)return;let i=n.trim(),s=(e=i.split("/"))[e.length-1];if(t[s])return void alert(`Alias "${s}" already exists. Please use a different model or edit existing alias.`);m(!0);try{await r(i,s),d("")}catch(e){console.log("Error adding model:",e)}finally{m(!1)}};return(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsx)("p",{className:"text-sm text-text-muted",children:"OpenRouter supports any model. Add models and create aliases for quick access."}),(0,s.jsxs)("div",{className:"flex items-end gap-2",children:[(0,s.jsxs)("div",{className:"flex-1",children:[(0,s.jsx)("label",{htmlFor:"new-model-input",className:"text-xs text-text-muted mb-1 block",children:"Model ID (from OpenRouter)"}),(0,s.jsx)("input",{id:"new-model-input",type:"text",value:n,onChange:e=>d(e.target.value),onKeyDown:e=>"Enter"===e.key&&u(),placeholder:"anthropic/claude-3-opus",className:"w-full px-3 py-2 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary"})]}),(0,s.jsx)(p.$n,{size:"sm",icon:"add",onClick:u,disabled:!n.trim()||c,children:c?"Adding...":"Add"})]}),x.length>0&&(0,s.jsx)("div",{className:"flex flex-col gap-3",children:x.map(({modelId:e,fullModel:t,alias:a})=>(0,s.jsx)(g,{modelId:e,fullModel:t,copied:i,onCopy:l,onDeleteAlias:()=>o(a)},t))})]})}function g({modelId:e,fullModel:t,copied:i,onCopy:a,onDeleteAlias:l,onTest:r,testStatus:o,isTesting:n}){let d="ok"===o?"#22c55e":"error"===o?"#ef4444":void 0;return(0,s.jsxs)("div",{className:`flex items-center gap-3 p-3 rounded-lg border ${"ok"===o?"border-green-500/40":"error"===o?"border-red-500/40":"border-border"} hover:bg-sidebar/50`,children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-base text-text-muted",style:d?{color:d}:void 0,children:"ok"===o?"check_circle":"error"===o?"cancel":"smart_toy"}),(0,s.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,s.jsx)("p",{className:"text-sm font-medium truncate",children:e}),(0,s.jsxs)("div",{className:"flex items-center gap-1 mt-1",children:[(0,s.jsx)("code",{className:"text-xs text-text-muted font-mono bg-sidebar px-1.5 py-0.5 rounded",children:t}),(0,s.jsx)("button",{onClick:()=>a(t,`model-${e}`),className:"p-0.5 hover:bg-sidebar rounded text-text-muted hover:text-primary",title:"Copy model",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-sm",children:i===`model-${e}`?"check":"content_copy"})}),r&&(0,s.jsx)("button",{onClick:r,disabled:n,className:"p-0.5 hover:bg-sidebar rounded text-text-muted hover:text-primary transition-colors",title:"Test model",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-sm",style:n?{animation:"spin 1s linear infinite"}:void 0,children:n?"progress_activity":"science"})})]})]}),(0,s.jsx)("button",{onClick:l,className:"p-1 hover:bg-red-50 rounded text-red-500",title:"Remove model",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-sm",children:"delete"})})]})}function v({providerStorageAlias:e,providerDisplayAlias:t,modelAliases:i,copied:l,onCopy:r,onSetAlias:o,onDeleteAlias:n,connections:d,isAnthropic:c}){let[m,x]=(0,a.useState)(""),[u,h]=(0,a.useState)(!1),[y,f]=(0,a.useState)(!1),[v,b]=(0,a.useState)(null),[j,N]=(0,a.useState)({}),k=async t=>{if(!v){b(t);try{let i=await fetch("/api/models/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:`${e}/${t}`})}),s=await i.json();N(e=>({...e,[t]:s.ok?"ok":"error"}))}catch{N(e=>({...e,[t]:"error"}))}finally{b(null)}}},C=Object.entries(i).filter(([,t])=>t.startsWith(`${e}/`)).map(([t,i])=>({modelId:i.replace(`${e}/`,""),fullModel:i,alias:t})),w=s=>{let a,l=`${e}/${s}`;if(Object.values(i).includes(l))return null;let r=(a=s.split("/"))[a.length-1];if(!i[r])return r;let o=`${t}-${r}`;return i[o]?null:o},S=async()=>{if(!m.trim()||u)return;let t=m.trim(),i=w(t);if(!i)return void alert("All suggested aliases already exist. Please choose a different model or remove conflicting aliases.");h(!0);try{await o(t,i,e),x("")}catch(e){console.log("Error adding model:",e)}finally{h(!1)}},A=async()=>{if(y)return;let t=d.find(e=>!1!==e.isActive);if(t){f(!0);try{let i=await fetch(`/api/providers/${t.id}/models`),s=await i.json();if(!i.ok)return void alert(s.error||"Failed to import models");let a=s.models||[];if(0===a.length)return void alert("No models returned from /models.");let l=0;for(let t of a){let i=t.id||t.name||t.model;if(!i)continue;let s=w(i);s&&(await o(i,s,e),l+=1)}0===l&&alert("No new models were added.")}catch(e){console.log("Error importing models:",e)}finally{f(!1)}}},$=d.some(e=>!1!==e.isActive);return(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsxs)("p",{className:"text-sm text-text-muted",children:["Add ",c?"Anthropic":"OpenAI","-compatible models manually or import them from the /models endpoint."]}),(0,s.jsxs)("div",{className:"flex items-end gap-2 flex-wrap",children:[(0,s.jsxs)("div",{className:"flex-1 min-w-[240px]",children:[(0,s.jsx)("label",{htmlFor:"new-compatible-model-input",className:"text-xs text-text-muted mb-1 block",children:"Model ID"}),(0,s.jsx)("input",{id:"new-compatible-model-input",type:"text",value:m,onChange:e=>x(e.target.value),onKeyDown:e=>"Enter"===e.key&&S(),placeholder:c?"claude-3-opus-20240229":"gpt-4o",className:"w-full px-3 py-2 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary"})]}),(0,s.jsx)(p.$n,{size:"sm",icon:"add",onClick:S,disabled:!m.trim()||u,children:u?"Adding...":"Add"}),(0,s.jsx)(p.$n,{size:"sm",variant:"secondary",icon:"download",onClick:A,disabled:!$||y,children:y?"Importing...":"Import from /models"})]}),!$&&(0,s.jsx)("p",{className:"text-xs text-text-muted",children:"Add a connection to enable importing models."}),C.length>0&&(0,s.jsx)("div",{className:"flex flex-col gap-3",children:C.map(({modelId:e,fullModel:i,alias:a})=>(0,s.jsx)(g,{modelId:e,fullModel:`${t}/${e}`,copied:l,onCopy:r,onDeleteAlias:()=>n(a),onTest:d.length>0?()=>k(e):void 0,testStatus:j[e],isTesting:v===e},i))})]})}function b({until:e}){let[t,i]=(0,a.useState)("");return((0,a.useEffect)(()=>{let t=()=>{let t=new Date(e).getTime()-Date.now();if(t<=0)return void i("");let s=Math.floor(t/1e3);if(s<60)i(`${s}s`);else if(s<3600)i(`${Math.floor(s/60)}m ${s%60}s`);else{let e=Math.floor(s/3600),t=Math.floor(s%3600/60);i(`${e}h ${t}m`)}};t();let s=setInterval(t,1e3);return()=>clearInterval(s)},[e]),t)?(0,s.jsxs)("span",{className:"text-xs text-orange-500 font-mono",children:["⏱ ",t]}):null}function j({connection:e,proxyPools:t,isOAuth:i,isFirst:l,isLast:r,onMoveUp:o,onMoveDown:n,onToggleActive:d,onUpdateProxy:c,onEdit:m,onDelete:x}){let[u,h]=(0,a.useState)(!1),[y,f]=(0,a.useState)(!1),g=(0,a.useRef)(null),v=new Map((t||[]).map(e=>[e.id,e])),j=e.providerSpecificData?.proxyPoolId||null,N=j?v.get(j):null,k=e.providerSpecificData?.connectionProxyEnabled===!0&&!!e.providerSpecificData?.connectionProxyUrl,C=!!j||k,w=N?`Pool: ${N.name}`:j?`Pool: ${j} (inactive/missing)`:k?`Legacy: ${e.providerSpecificData?.connectionProxyUrl}`:"",S="";if(N?.proxyUrl||e.providerSpecificData?.connectionProxyUrl){let t=N?.proxyUrl||e.providerSpecificData?.connectionProxyUrl;try{let e=new URL(t);S=`${e.protocol}//${e.hostname}${e.port?`:${e.port}`:""}`}catch{S=t}}let A=N?.noProxy||e.providerSpecificData?.connectionNoProxy||"",$="default";N?.isActive===!0?$="success":(j||k)&&($="error"),(0,a.useEffect)(()=>{if(!u)return;let e=e=>{g.current&&!g.current.contains(e.target)&&h(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[u]);let P=async e=>{f(!0);try{await c("__none__"===e?null:e)}finally{f(!1),h(!1)}},T=i?e.name||e.email||e.displayName||"OAuth Account":e.name,[O,E]=(0,a.useState)(!1),R=Object.entries(e).filter(([e])=>e.startsWith("modelLock_")).map(([,e])=>e).filter(e=>!!e).sort()[0]||null;(0,a.useEffect)(()=>{let t=()=>{E(!!Object.entries(e).filter(([e])=>e.startsWith("modelLock_")).map(([,e])=>e).filter(e=>e&&new Date(e).getTime()>Date.now()).sort()[0])};t();let i=R?setInterval(t,1e3):null;return()=>{i&&clearInterval(i)}},[R]);let I="unavailable"!==e.testStatus||O?e.testStatus:"active";return(0,s.jsxs)("div",{className:`group flex items-center justify-between p-3 rounded-lg hover:bg-black/[0.02] dark:hover:bg-white/[0.02] transition-colors ${!1===e.isActive?"opacity-60":""}`,children:[(0,s.jsxs)("div",{className:"flex items-center gap-3 flex-1 min-w-0",children:[(0,s.jsxs)("div",{className:"flex flex-col",children:[(0,s.jsx)("button",{onClick:o,disabled:l,className:`p-0.5 rounded ${l?"text-text-muted/30 cursor-not-allowed":"hover:bg-sidebar text-text-muted hover:text-primary"}`,children:(0,s.jsx)("span",{className:"material-symbols-outlined text-sm",children:"keyboard_arrow_up"})}),(0,s.jsx)("button",{onClick:n,disabled:r,className:`p-0.5 rounded ${r?"text-text-muted/30 cursor-not-allowed":"hover:bg-sidebar text-text-muted hover:text-primary"}`,children:(0,s.jsx)("span",{className:"material-symbols-outlined text-sm",children:"keyboard_arrow_down"})})]}),(0,s.jsx)("span",{className:"material-symbols-outlined text-base text-text-muted",children:i?"lock":"key"}),(0,s.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,s.jsx)("p",{className:"text-sm font-medium truncate",children:T}),(0,s.jsxs)("div",{className:"flex items-center gap-2 mt-1",children:[(0,s.jsx)(p.Ex,{variant:!1===e.isActive?"default":"active"===I||"success"===I?"success":"error"===I||"expired"===I||"unavailable"===I?"error":"default",size:"sm",dot:!0,children:!1===e.isActive?"disabled":I||"Unknown"}),C&&(0,s.jsx)(p.Ex,{variant:$,size:"sm",children:"Proxy"}),O&&!1!==e.isActive&&(0,s.jsx)(b,{until:R}),e.lastError&&!1!==e.isActive&&(0,s.jsx)("span",{className:"text-xs text-red-500 truncate max-w-[300px]",title:e.lastError,children:e.lastError}),(0,s.jsxs)("span",{className:"text-xs text-text-muted",children:["#",e.priority]}),e.globalPriority&&(0,s.jsxs)("span",{className:"text-xs text-text-muted",children:["Auto: ",e.globalPriority]})]}),C&&(0,s.jsxs)("div",{className:"mt-1 flex items-center gap-2 flex-wrap",children:[(0,s.jsx)("span",{className:"text-[11px] text-text-muted truncate max-w-[420px]",title:w,children:w}),S&&(0,s.jsx)("code",{className:"text-[10px] font-mono bg-black/5 dark:bg-white/5 px-1 py-0.5 rounded text-text-muted",children:S}),A&&(0,s.jsxs)("span",{className:"text-[11px] text-text-muted truncate max-w-[320px]",title:A,children:["no_proxy: ",A]})]})]})]}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsxs)("div",{className:"flex gap-1",children:[(t||[]).length>0&&(0,s.jsxs)("div",{className:"relative",ref:g,children:[(0,s.jsxs)("button",{onClick:()=>h(e=>!e),className:`flex flex-col items-center px-2 py-1 rounded hover:bg-black/5 dark:hover:bg-white/5 transition-colors ${C?"text-primary":"text-text-muted hover:text-primary"}`,disabled:y,children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:y?"progress_activity":"lan"}),(0,s.jsx)("span",{className:"text-[10px] leading-tight",children:"Proxy"})]}),u&&(0,s.jsxs)("div",{className:"absolute right-0 top-full mt-1 z-50 bg-bg border border-border rounded-lg shadow-lg py-1 min-w-[160px]",children:[(0,s.jsx)("button",{onClick:()=>P("__none__"),className:`w-full text-left px-3 py-1.5 text-sm hover:bg-black/5 dark:hover:bg-white/5 ${!j?"text-primary font-medium":"text-text-main"}`,children:"None"}),(t||[]).map(e=>(0,s.jsx)("button",{onClick:()=>P(e.id),className:`w-full text-left px-3 py-1.5 text-sm hover:bg-black/5 dark:hover:bg-white/5 ${j===e.id?"text-primary font-medium":"text-text-main"}`,children:e.name},e.id))]})]}),(0,s.jsxs)("button",{onClick:m,className:"flex flex-col items-center px-2 py-1 rounded hover:bg-black/5 dark:hover:bg-white/5 text-text-muted hover:text-primary",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"edit"}),(0,s.jsx)("span",{className:"text-[10px] leading-tight",children:"Edit"})]}),(0,s.jsxs)("button",{onClick:x,className:"flex flex-col items-center px-2 py-1 rounded hover:bg-red-500/10 text-red-500",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"}),(0,s.jsx)("span",{className:"text-[10px] leading-tight",children:"Delete"})]})]}),(0,s.jsx)(p.lM,{size:"sm",checked:e.isActive??!0,onChange:d,title:e.isActive??!0?"Disable connection":"Enable connection"})]})]})}function N({isOpen:e,provider:t,providerName:i,isCompatible:l,isAnthropic:r,proxyPools:o,onSave:n,onClose:d}){let c="__none__",[m,x]=(0,a.useState)({name:"",apiKey:"",priority:1,proxyPoolId:c}),[u,h]=(0,a.useState)(!1),[y,f]=(0,a.useState)(null),[g,v]=(0,a.useState)(!1),b=async()=>{h(!0);try{let e=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:t,apiKey:m.apiKey})}),i=await e.json();f(i.valid?"success":"failed")}catch{f("failed")}finally{h(!1)}},j=async()=>{if(t&&m.apiKey){v(!0);try{let e=!1;try{h(!0),f(null);let i=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:t,apiKey:m.apiKey})});e=!!(await i.json()).valid,f(e?"success":"failed")}catch{f("failed")}finally{h(!1)}await n({name:m.name,apiKey:m.apiKey,priority:m.priority,proxyPoolId:m.proxyPoolId===c?null:m.proxyPoolId,testStatus:e?"active":"unknown",providerSpecificData:void 0})}finally{v(!1)}}};return t?(0,s.jsx)(p.aF,{isOpen:e,title:`Add ${i||t} API Key`,onClose:d,children:(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsx)(p.pd,{label:"Name",value:m.name,onChange:e=>x({...m,name:e.target.value}),placeholder:"Production Key"}),(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)(p.pd,{label:"API Key",type:"password",value:m.apiKey,onChange:e=>x({...m,apiKey:e.target.value}),className:"flex-1"}),(0,s.jsx)("div",{className:"pt-6",children:(0,s.jsx)(p.$n,{onClick:b,disabled:!m.apiKey||u||g,variant:"secondary",children:u?"Checking...":"Check"})})]}),y&&(0,s.jsx)(p.Ex,{variant:"success"===y?"success":"error",children:"success"===y?"Valid":"Invalid"}),l&&(0,s.jsx)("p",{className:"text-xs text-text-muted",children:r?`Validation checks ${i||"Anthropic Compatible"} by verifying the API key.`:`Validation checks ${i||"OpenAI Compatible"} via /models on your base URL.`}),(0,s.jsx)(p.pd,{label:"Priority",type:"number",value:m.priority,onChange:e=>x({...m,priority:Number.parseInt(e.target.value)||1})}),(0,s.jsx)(p.l6,{label:"Proxy Pool",value:m.proxyPoolId,onChange:e=>x({...m,proxyPoolId:e.target.value}),options:[{value:c,label:"None"},...(o||[]).map(e=>({value:e.id,label:e.name}))],placeholder:"None"}),0===(o||[]).length&&(0,s.jsx)("p",{className:"text-xs text-text-muted",children:"No active proxy pools available. Create one in Proxy Pools page first."}),(0,s.jsx)("p",{className:"text-xs text-text-muted",children:"Legacy manual proxy fields are still accepted by API for backward compatibility."}),(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)(p.$n,{onClick:j,fullWidth:!0,disabled:!m.name||!m.apiKey||g,children:g?"Saving...":"Save"}),(0,s.jsx)(p.$n,{onClick:d,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}):null}function k({isOpen:e,connection:t,proxyPools:i,onSave:l,onClose:r}){let[o,n]=(0,a.useState)({name:"",priority:1,apiKey:""}),[d,c]=(0,a.useState)(!1),[x,u]=(0,a.useState)(null),[h,y]=(0,a.useState)(!1),[f,g]=(0,a.useState)(null),[v,b]=(0,a.useState)(!1);(0,a.useEffect)(()=>{t&&(n({name:t.name||"",priority:t.priority||1,apiKey:""}),u(null),g(null))},[t]);let j=async()=>{if(t?.provider){c(!0),u(null);try{let e=await fetch(`/api/providers/${t.id}/test`,{method:"POST"}),i=await e.json();u(i.valid?"success":"failed")}catch{u("failed")}finally{c(!1)}}},N=async()=>{if(t?.provider&&o.apiKey){y(!0),g(null);try{let e=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:t.provider,apiKey:o.apiKey})}),i=await e.json();g(i.valid?"success":"failed")}catch{g("failed")}finally{y(!1)}}},k=async()=>{b(!0);try{let e={name:o.name,priority:o.priority};if(!C&&o.apiKey){e.apiKey=o.apiKey;let i="success"===f;if(!i)try{y(!0),g(null);let e=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:t.provider,apiKey:o.apiKey})});i=!!(await e.json()).valid,g(i?"success":"failed")}catch{g("failed")}finally{y(!1)}i&&(e.testStatus="active",e.lastError=null,e.lastErrorAt=null)}await l(e)}finally{b(!1)}};if(!t)return null;let C="oauth"===t.authType,w=(0,m.mq)(t.provider)||(0,m.gb)(t.provider);return(0,s.jsx)(p.aF,{isOpen:e,title:"Edit Connection",onClose:r,children:(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsx)(p.pd,{label:"Name",value:o.name,onChange:e=>n({...o,name:e.target.value}),placeholder:C?"Account name":"Production Key"}),C&&t.email&&(0,s.jsxs)("div",{className:"bg-sidebar/50 p-3 rounded-lg",children:[(0,s.jsx)("p",{className:"text-sm text-text-muted mb-1",children:"Email"}),(0,s.jsx)("p",{className:"font-medium",children:t.email})]}),(0,s.jsx)(p.pd,{label:"Priority",type:"number",value:o.priority,onChange:e=>n({...o,priority:Number.parseInt(e.target.value)||1})}),!C&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)(p.pd,{label:"API Key",type:"password",value:o.apiKey,onChange:e=>n({...o,apiKey:e.target.value}),placeholder:"Enter new API key",hint:"Leave blank to keep the current API key.",className:"flex-1"}),(0,s.jsx)("div",{className:"pt-6",children:(0,s.jsx)(p.$n,{onClick:N,disabled:!o.apiKey||h||v,variant:"secondary",children:h?"Checking...":"Check"})})]}),f&&(0,s.jsx)(p.Ex,{variant:"success"===f?"success":"error",children:"success"===f?"Valid":"Invalid"})]}),!w&&(0,s.jsxs)("div",{className:"flex items-center gap-3",children:[(0,s.jsx)(p.$n,{onClick:j,variant:"secondary",disabled:d,children:d?"Testing...":"Test Connection"}),x&&(0,s.jsx)(p.Ex,{variant:"success"===x?"success":"error",children:"success"===x?"Valid":"Failed"})]}),(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)(p.$n,{onClick:k,fullWidth:!0,disabled:v,children:v?"Saving...":"Save"}),(0,s.jsx)(p.$n,{onClick:r,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})})}function C({isOpen:e,node:t,onSave:i,onClose:l,isAnthropic:r}){let[o,n]=(0,a.useState)({name:"",prefix:"",apiType:"chat",baseUrl:"https://api.openai.com/v1"}),[d,c]=(0,a.useState)(!1),[m,x]=(0,a.useState)(""),[u,h]=(0,a.useState)(""),[y,f]=(0,a.useState)(!1),[g,v]=(0,a.useState)(null);(0,a.useEffect)(()=>{t&&n({name:t.name||"",prefix:t.prefix||"",apiType:t.apiType||"chat",baseUrl:t.baseUrl||(r?"https://api.anthropic.com/v1":"https://api.openai.com/v1")})},[t,r]);let b=async()=>{if(o.name.trim()&&o.prefix.trim()&&o.baseUrl.trim()){c(!0);try{let e={name:o.name,prefix:o.prefix,baseUrl:o.baseUrl};r||(e.apiType=o.apiType),await i(e)}finally{c(!1)}}},j=async()=>{f(!0);try{let e=await fetch("/api/provider-nodes/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:o.baseUrl,apiKey:m,type:r?"anthropic-compatible":"openai-compatible",modelId:u.trim()||void 0})}),t=await e.json();v(t.valid?"success":"failed")}catch{v("failed")}finally{f(!1)}};return t?(0,s.jsx)(p.aF,{isOpen:e,title:`Edit ${r?"Anthropic":"OpenAI"} Compatible`,onClose:l,children:(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsx)(p.pd,{label:"Name",value:o.name,onChange:e=>n({...o,name:e.target.value}),placeholder:`${r?"Anthropic":"OpenAI"} Compatible (Prod)`,hint:"Required. A friendly label for this node."}),(0,s.jsx)(p.pd,{label:"Prefix",value:o.prefix,onChange:e=>n({...o,prefix:e.target.value}),placeholder:r?"ac-prod":"oc-prod",hint:"Required. Used as the provider prefix for model IDs."}),!r&&(0,s.jsx)(p.l6,{label:"API Type",options:[{value:"chat",label:"Chat Completions"},{value:"responses",label:"Responses API"}],value:o.apiType,onChange:e=>n({...o,apiType:e.target.value})}),(0,s.jsx)(p.pd,{label:"Base URL",value:o.baseUrl,onChange:e=>n({...o,baseUrl:e.target.value}),placeholder:r?"https://api.anthropic.com/v1":"https://api.openai.com/v1",hint:`Use the base URL (ending in /v1) for your ${r?"Anthropic":"OpenAI"}-compatible API.`}),(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)(p.pd,{label:"API Key (for Check)",type:"password",value:m,onChange:e=>x(e.target.value),className:"flex-1"}),(0,s.jsx)("div",{className:"pt-6",children:(0,s.jsx)(p.$n,{onClick:j,disabled:!m||y||!o.baseUrl.trim(),variant:"secondary",children:y?"Checking...":"Check"})})]}),(0,s.jsx)(p.pd,{label:"Model ID (optional)",value:u,onChange:e=>h(e.target.value),placeholder:"e.g. my-model-id",hint:"If provider lacks /models endpoint, enter a model ID to validate via chat/completions instead."}),g&&(0,s.jsx)(p.Ex,{variant:"success"===g?"success":"error",children:"success"===g?"Valid":"Invalid"}),(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)(p.$n,{onClick:b,fullWidth:!0,disabled:!o.name.trim()||!o.prefix.trim()||!o.baseUrl.trim()||d,children:d?"Saving...":"Save"}),(0,s.jsx)(p.$n,{onClick:l,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}):null}function w({isOpen:e,providerAlias:t,providerDisplayAlias:i,onSave:l,onClose:r}){let[o,n]=(0,a.useState)(""),[d,c]=(0,a.useState)(null),[m,x]=(0,a.useState)(""),[u,h]=(0,a.useState)(!1);(0,a.useEffect)(()=>{e&&(n(""),c(null),x(""))},[e]);let y=async()=>{if(o.trim()){c("testing"),x("");try{let e=await fetch("/api/models/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:`${t}/${o.trim()}`})}),i=await e.json();c(i.ok?"ok":"error"),x(i.error||"")}catch(e){c("error"),x(e.message)}}},f=async()=>{if(o.trim()&&!u){h(!0);try{await l(o.trim())}finally{h(!1)}}};return(0,s.jsx)(p.aF,{isOpen:e,onClose:r,title:"Add Custom Model",children:(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"text-sm font-medium mb-1.5 block",children:"Model ID"}),(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)("input",{type:"text",value:o,onChange:e=>{n(e.target.value),c(null),x("")},onKeyDown:e=>{"Enter"===e.key&&y()},placeholder:"e.g. claude-opus-4-5",className:"flex-1 px-3 py-2 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary",autoFocus:!0}),(0,s.jsx)(p.$n,{variant:"secondary",icon:"science",loading:"testing"===d,onClick:y,disabled:!o.trim()||"testing"===d,children:"testing"===d?"Testing...":"Test"})]}),(0,s.jsxs)("p",{className:"text-xs text-text-muted mt-1",children:["Sent to provider as: ",(0,s.jsx)("code",{className:"font-mono bg-sidebar px-1 rounded",children:o.trim()||"model-id"})]})]}),"ok"===d&&(0,s.jsxs)("div",{className:"flex items-center gap-2 text-sm text-green-600",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-base",children:"check_circle"}),"Model is reachable"]}),"error"===d&&(0,s.jsxs)("div",{className:"flex items-start gap-2 text-sm text-red-500",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-base shrink-0",children:"cancel"}),(0,s.jsx)("span",{children:m||"Model not reachable"})]}),(0,s.jsxs)("div",{className:"flex gap-2 pt-1",children:[(0,s.jsx)(p.$n,{onClick:r,variant:"ghost",fullWidth:!0,size:"sm",children:"Cancel"}),(0,s.jsx)(p.$n,{onClick:f,fullWidth:!0,size:"sm",disabled:!o.trim()||u,children:u?"Adding...":"Add Model"})]})]})})}y.propTypes={model:r().shape({id:r().string.isRequired}).isRequired,fullModel:r().string.isRequired,alias:r().string,copied:r().string,onCopy:r().func.isRequired,testStatus:r().oneOf(["ok","error"]),isCustom:r().bool,onDeleteAlias:r().func,onTest:r().func,isTesting:r().bool},f.propTypes={providerAlias:r().string.isRequired,modelAliases:r().object.isRequired,copied:r().string,onCopy:r().func.isRequired,onSetAlias:r().func.isRequired,onDeleteAlias:r().func.isRequired},g.propTypes={modelId:r().string.isRequired,fullModel:r().string.isRequired,copied:r().string,onCopy:r().func.isRequired,onDeleteAlias:r().func.isRequired,onTest:r().func,testStatus:r().oneOf(["ok","error"]),isTesting:r().bool},v.propTypes={providerStorageAlias:r().string.isRequired,providerDisplayAlias:r().string.isRequired,modelAliases:r().object.isRequired,copied:r().string,onCopy:r().func.isRequired,onSetAlias:r().func.isRequired,onDeleteAlias:r().func.isRequired,connections:r().arrayOf(r().shape({id:r().string,isActive:r().bool})).isRequired,isAnthropic:r().bool},b.propTypes={until:r().string.isRequired},j.propTypes={connection:r().shape({id:r().string,name:r().string,email:r().string,displayName:r().string,modelLockUntil:r().string,testStatus:r().string,isActive:r().bool,lastError:r().string,priority:r().number,globalPriority:r().number}).isRequired,proxyPools:r().arrayOf(r().shape({id:r().string,name:r().string,proxyUrl:r().string,noProxy:r().string,isActive:r().bool})),isOAuth:r().bool.isRequired,isFirst:r().bool.isRequired,isLast:r().bool.isRequired,onMoveUp:r().func.isRequired,onMoveDown:r().func.isRequired,onToggleActive:r().func.isRequired,onUpdateProxy:r().func,onEdit:r().func.isRequired,onDelete:r().func.isRequired},N.propTypes={isOpen:r().bool.isRequired,provider:r().string,providerName:r().string,isCompatible:r().bool,isAnthropic:r().bool,proxyPools:r().arrayOf(r().shape({id:r().string,name:r().string})),onSave:r().func.isRequired,onClose:r().func.isRequired},k.propTypes={isOpen:r().bool.isRequired,connection:r().shape({id:r().string,name:r().string,email:r().string,priority:r().number,authType:r().string,provider:r().string,providerSpecificData:r().object}),proxyPools:r().arrayOf(r().shape({id:r().string,name:r().string})),onSave:r().func.isRequired,onClose:r().func.isRequired},C.propTypes={isOpen:r().bool.isRequired,node:r().shape({id:r().string,name:r().string,prefix:r().string,apiType:r().string,baseUrl:r().string}),onSave:r().func.isRequired,onClose:r().func.isRequired,isAnthropic:r().bool},w.propTypes={isOpen:r().bool.isRequired,providerAlias:r().string.isRequired,providerDisplayAlias:r().string.isRequired,onSave:r().func.isRequired,onClose:r().func.isRequired}}},e=>{e.O(0,[5370,4335,619,5772,2652,5497,8441,3794,7358],()=>e(e.s=52397)),_N_E=e.O()}]);