9router 0.3.55 → 0.3.57

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 (375) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/app-path-routes-manifest.json +40 -40
  3. package/app/.next/build-manifest.json +5 -5
  4. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  5. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  6. package/app/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  7. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.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_client-reference-manifest.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  20. package/app/.next/server/app/_global-error.html +2 -2
  21. package/app/.next/server/app/_global-error.rsc +1 -1
  22. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  23. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  24. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  25. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  26. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  27. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  28. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  29. package/app/.next/server/app/_not-found.html +1 -1
  30. package/app/.next/server/app/_not-found.rsc +4 -4
  31. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  32. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  33. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
  34. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  35. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  36. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  37. package/app/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  38. package/app/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  39. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
  40. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
  41. package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
  42. package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
  43. package/app/.next/server/app/api/cli-tools/copilot-settings/route_client-reference-manifest.js +1 -1
  44. package/app/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
  45. package/app/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
  46. package/app/.next/server/app/api/cli-tools/opencode-settings/route_client-reference-manifest.js +1 -1
  47. package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
  48. package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
  49. package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
  50. package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
  51. package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
  52. package/app/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
  53. package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  54. package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
  55. package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
  56. package/app/.next/server/app/api/locale/route.js +1 -1
  57. package/app/.next/server/app/api/locale/route_client-reference-manifest.js +1 -1
  58. package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
  59. package/app/.next/server/app/api/models/route.js +1 -1
  60. package/app/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  61. package/app/.next/server/app/api/models/test/route_client-reference-manifest.js +1 -1
  62. package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
  63. package/app/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
  64. package/app/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
  65. package/app/.next/server/app/api/oauth/iflow/cookie/route_client-reference-manifest.js +1 -1
  66. package/app/.next/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
  67. package/app/.next/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
  68. package/app/.next/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
  69. package/app/.next/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
  70. package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  71. package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
  72. package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
  73. package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
  74. package/app/.next/server/app/api/providers/[id]/models/route.js +1 -1
  75. package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
  76. package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
  77. package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
  78. package/app/.next/server/app/api/providers/[id]/test-models/route_client-reference-manifest.js +1 -1
  79. package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
  80. package/app/.next/server/app/api/providers/route.js +1 -1
  81. package/app/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
  82. package/app/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
  83. package/app/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
  84. package/app/.next/server/app/api/proxy-pools/[id]/route_client-reference-manifest.js +1 -1
  85. package/app/.next/server/app/api/proxy-pools/[id]/test/route_client-reference-manifest.js +1 -1
  86. package/app/.next/server/app/api/proxy-pools/route_client-reference-manifest.js +1 -1
  87. package/app/.next/server/app/api/settings/database/route_client-reference-manifest.js +1 -1
  88. package/app/.next/server/app/api/settings/proxy-test/route_client-reference-manifest.js +1 -1
  89. package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
  90. package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  91. package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  92. package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
  93. package/app/.next/server/app/api/translator/console-logs/route.js +1 -1
  94. package/app/.next/server/app/api/translator/console-logs/route_client-reference-manifest.js +1 -1
  95. package/app/.next/server/app/api/translator/console-logs/stream/route.js +1 -1
  96. package/app/.next/server/app/api/translator/console-logs/stream/route_client-reference-manifest.js +1 -1
  97. package/app/.next/server/app/api/translator/load/route.js.nft.json +1 -1
  98. package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
  99. package/app/.next/server/app/api/translator/save/route.js.nft.json +1 -1
  100. package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
  101. package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
  102. package/app/.next/server/app/api/translator/translate/route.js +1 -1
  103. package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
  104. package/app/.next/server/app/api/tunnel/disable/route_client-reference-manifest.js +1 -1
  105. package/app/.next/server/app/api/tunnel/enable/route_client-reference-manifest.js +1 -1
  106. package/app/.next/server/app/api/tunnel/status/route_client-reference-manifest.js +1 -1
  107. package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
  108. package/app/.next/server/app/api/usage/chart/route_client-reference-manifest.js +1 -1
  109. package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
  110. package/app/.next/server/app/api/usage/providers/route_client-reference-manifest.js +1 -1
  111. package/app/.next/server/app/api/usage/request-details/route_client-reference-manifest.js +1 -1
  112. package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
  113. package/app/.next/server/app/api/usage/stats/route_client-reference-manifest.js +1 -1
  114. package/app/.next/server/app/api/usage/stream/route_client-reference-manifest.js +1 -1
  115. package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
  116. package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
  117. package/app/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
  118. package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
  119. package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
  120. package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
  121. package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
  122. package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
  123. package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
  124. package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
  125. package/app/.next/server/app/api/version/route.js +1 -1
  126. package/app/.next/server/app/api/version/route_client-reference-manifest.js +1 -1
  127. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  128. package/app/.next/server/app/callback.html +1 -1
  129. package/app/.next/server/app/callback.rsc +4 -4
  130. package/app/.next/server/app/callback.segments/_full.segment.rsc +4 -4
  131. package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
  132. package/app/.next/server/app/callback.segments/_index.segment.rsc +4 -4
  133. package/app/.next/server/app/callback.segments/_tree.segment.rsc +2 -2
  134. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  135. package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
  136. package/app/.next/server/app/dashboard/cli-tools.html +1 -1
  137. package/app/.next/server/app/dashboard/cli-tools.rsc +6 -6
  138. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  139. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  140. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  141. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  142. package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
  143. package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  144. package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
  145. package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  146. package/app/.next/server/app/dashboard/combos.html +1 -1
  147. package/app/.next/server/app/dashboard/combos.rsc +6 -6
  148. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  149. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  150. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  151. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  152. package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
  153. package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  154. package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
  155. package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  156. package/app/.next/server/app/dashboard/endpoint.html +1 -1
  157. package/app/.next/server/app/dashboard/endpoint.rsc +6 -6
  158. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  159. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  160. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  161. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  162. package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
  163. package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  164. package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
  165. package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  166. package/app/.next/server/app/dashboard/mitm.html +1 -1
  167. package/app/.next/server/app/dashboard/mitm.rsc +6 -6
  168. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  169. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  170. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  171. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  172. package/app/.next/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
  173. package/app/.next/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  174. package/app/.next/server/app/dashboard/mitm.segments/_index.segment.rsc +4 -4
  175. package/app/.next/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  176. package/app/.next/server/app/dashboard/profile.html +1 -1
  177. package/app/.next/server/app/dashboard/profile.rsc +6 -6
  178. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  179. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  180. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  181. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  182. package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
  183. package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  184. package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
  185. package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  186. package/app/.next/server/app/dashboard/providers/new.html +1 -1
  187. package/app/.next/server/app/dashboard/providers/new.rsc +6 -6
  188. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  189. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  190. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  191. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  192. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  193. package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
  194. package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  195. package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
  196. package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  197. package/app/.next/server/app/dashboard/providers.html +1 -1
  198. package/app/.next/server/app/dashboard/providers.rsc +6 -6
  199. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  200. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  201. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  202. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  203. package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
  204. package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  205. package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
  206. package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  207. package/app/.next/server/app/dashboard/proxy-pools.html +1 -1
  208. package/app/.next/server/app/dashboard/proxy-pools.rsc +6 -6
  209. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  210. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  211. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  212. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  213. package/app/.next/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
  214. package/app/.next/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  215. package/app/.next/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +4 -4
  216. package/app/.next/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  217. package/app/.next/server/app/dashboard/quota.html +2 -2
  218. package/app/.next/server/app/dashboard/quota.rsc +7 -7
  219. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  220. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  221. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  222. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  223. package/app/.next/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
  224. package/app/.next/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  225. package/app/.next/server/app/dashboard/quota.segments/_index.segment.rsc +4 -4
  226. package/app/.next/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  227. package/app/.next/server/app/dashboard/settings/pricing/page.js +1 -1
  228. package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  229. package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
  230. package/app/.next/server/app/dashboard/settings/pricing.rsc +5 -5
  231. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +5 -5
  232. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  233. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
  234. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  235. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +2 -2
  236. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  237. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  238. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  239. package/app/.next/server/app/dashboard/translator.html +1 -1
  240. package/app/.next/server/app/dashboard/translator.rsc +6 -6
  241. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  242. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  243. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  244. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  245. package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
  246. package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  247. package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
  248. package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  249. package/app/.next/server/app/dashboard/usage.html +1 -1
  250. package/app/.next/server/app/dashboard/usage.rsc +6 -6
  251. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  252. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  253. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  254. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  255. package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
  256. package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  257. package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
  258. package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  259. package/app/.next/server/app/dashboard.html +1 -1
  260. package/app/.next/server/app/dashboard.rsc +6 -6
  261. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  262. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  263. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  264. package/app/.next/server/app/dashboard.segments/_full.segment.rsc +6 -6
  265. package/app/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
  266. package/app/.next/server/app/dashboard.segments/_index.segment.rsc +4 -4
  267. package/app/.next/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  268. package/app/.next/server/app/index.html +1 -1
  269. package/app/.next/server/app/index.rsc +4 -4
  270. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  271. package/app/.next/server/app/index.segments/_full.segment.rsc +4 -4
  272. package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
  273. package/app/.next/server/app/index.segments/_index.segment.rsc +4 -4
  274. package/app/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  275. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  276. package/app/.next/server/app/landing.html +1 -1
  277. package/app/.next/server/app/landing.rsc +5 -5
  278. package/app/.next/server/app/landing.segments/_full.segment.rsc +5 -5
  279. package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
  280. package/app/.next/server/app/landing.segments/_index.segment.rsc +4 -4
  281. package/app/.next/server/app/landing.segments/_tree.segment.rsc +2 -2
  282. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +2 -2
  283. package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
  284. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  285. package/app/.next/server/app/login.html +1 -1
  286. package/app/.next/server/app/login.rsc +5 -5
  287. package/app/.next/server/app/login.segments/_full.segment.rsc +5 -5
  288. package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
  289. package/app/.next/server/app/login.segments/_index.segment.rsc +4 -4
  290. package/app/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  291. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  292. package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
  293. package/app/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  294. package/app/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  295. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  296. package/app/.next/server/app-paths-manifest.json +40 -40
  297. package/app/.next/server/chunks/1114.js +1 -1
  298. package/app/.next/server/chunks/1424.js +1 -1
  299. package/app/.next/server/chunks/318.js +1 -1
  300. package/app/.next/server/chunks/3832.js +1 -1
  301. package/app/.next/server/chunks/412.js +1 -1
  302. package/app/.next/server/chunks/6182.js +1 -1
  303. package/app/.next/server/chunks/649.js +1 -1
  304. package/app/.next/server/chunks/7341.js +1 -1
  305. package/app/.next/server/chunks/8590.js +1 -1
  306. package/app/.next/server/chunks/9201.js +1 -1
  307. package/app/.next/server/chunks/9718.js +1 -1
  308. package/app/.next/server/middleware-build-manifest.js +1 -1
  309. package/app/.next/server/pages/404.html +1 -1
  310. package/app/.next/server/pages/500.html +2 -2
  311. package/app/.next/server/server-reference-manifest.js +1 -1
  312. package/app/.next/server/server-reference-manifest.json +1 -1
  313. package/app/.next/static/chunks/2652-51aca5cd32bd186f.js +1 -0
  314. package/app/.next/static/chunks/3794-23858078d298f399.js +2 -0
  315. package/app/.next/static/chunks/{4bd1b696-e5d7c65570c947b7.js → 4bd1b696-84e33c69f320f6a0.js} +1 -1
  316. package/app/.next/static/chunks/{5497-9933573cfe960e0c.js → 5497-ea854c092fddeb4d.js} +3 -3
  317. package/app/.next/static/chunks/{619-c4c101a6a78feeb4.js → 619-bfe7e89fff6eb942.js} +1 -1
  318. package/app/.next/static/chunks/{9242-3e0fdad972d9b35d.js → 9242-a85bb5812b359227.js} +3 -3
  319. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/{page-d973cbda9e65d6ae.js → page-15fc16f73981b9be.js} +1 -1
  320. package/app/.next/static/chunks/app/(dashboard)/dashboard/mitm/page-fb6736d76c7a3b6a.js +1 -0
  321. package/app/.next/static/chunks/app/dashboard/settings/pricing/{page-4b7305b3e5d6e57b.js → page-e097c892258ad1fd.js} +1 -1
  322. package/app/.next/static/chunks/app/landing/{page-106f74afc6f71a31.js → page-cb9f1320605eaafc.js} +1 -1
  323. package/app/.next/static/chunks/app/{layout-08e56eacc7acf9e1.js → layout-095f249fd620f9cf.js} +1 -1
  324. package/app/.next/static/chunks/{framework-9f63a52f5ba18ac8.js → framework-6854168261815bb6.js} +1 -1
  325. package/app/.next/static/chunks/{main-aab9e1b069a77e0f.js → main-5b78d3de83609121.js} +2 -2
  326. package/app/.next/static/chunks/webpack-9bef9bba7ebc0551.js +1 -0
  327. package/app/.next/static/css/9dff3edaebe94c91.css +3 -0
  328. package/app/package.json +3 -1
  329. package/app/public/i18n/literals/ar.json +196 -0
  330. package/app/public/i18n/literals/bn.json +196 -0
  331. package/app/public/i18n/literals/cs.json +196 -0
  332. package/app/public/i18n/literals/da.json +196 -0
  333. package/app/public/i18n/literals/de.json +196 -0
  334. package/app/public/i18n/literals/el.json +196 -0
  335. package/app/public/i18n/literals/es.json +196 -0
  336. package/app/public/i18n/literals/fi.json +196 -0
  337. package/app/public/i18n/literals/fr.json +196 -0
  338. package/app/public/i18n/literals/he.json +196 -0
  339. package/app/public/i18n/literals/hi.json +196 -0
  340. package/app/public/i18n/literals/hu.json +196 -0
  341. package/app/public/i18n/literals/id.json +196 -0
  342. package/app/public/i18n/literals/it.json +196 -0
  343. package/app/public/i18n/literals/ja.json +196 -0
  344. package/app/public/i18n/literals/ko.json +196 -0
  345. package/app/public/i18n/literals/nl.json +196 -0
  346. package/app/public/i18n/literals/no.json +196 -0
  347. package/app/public/i18n/literals/pl.json +196 -0
  348. package/app/public/i18n/literals/pt-BR.json +196 -0
  349. package/app/public/i18n/literals/pt-PT.json +196 -0
  350. package/app/public/i18n/literals/ro.json +196 -0
  351. package/app/public/i18n/literals/ru.json +196 -0
  352. package/app/public/i18n/literals/sv.json +196 -0
  353. package/app/public/i18n/literals/th.json +196 -0
  354. package/app/public/i18n/literals/tl.json +196 -0
  355. package/app/public/i18n/literals/tr.json +196 -0
  356. package/app/public/i18n/literals/uk.json +196 -0
  357. package/app/public/i18n/literals/ur.json +196 -0
  358. package/app/public/i18n/literals/zh-TW.json +196 -0
  359. package/app/src/mitm/server.js +1 -297
  360. package/package.json +1 -1
  361. package/app/.next/static/chunks/2652-378fd4fa14847021.js +0 -1
  362. package/app/.next/static/chunks/3794-c67589461d449d62.js +0 -2
  363. package/app/.next/static/chunks/app/(dashboard)/dashboard/mitm/page-bf88929b2cc595ab.js +0 -1
  364. package/app/.next/static/chunks/webpack-25c43999146c934e.js +0 -1
  365. package/app/.next/static/css/4016074f63f34af9.css +0 -3
  366. package/app/src/mitm/cert/generate.js +0 -32
  367. package/app/src/mitm/cert/install.js +0 -176
  368. package/app/src/mitm/cert/rootCA.js +0 -173
  369. package/app/src/mitm/dns/dnsConfig.js +0 -216
  370. package/app/src/mitm/logger.js +0 -8
  371. package/app/src/mitm/manager.js +0 -602
  372. package/app/src/mitm/paths.js +0 -16
  373. package/app/src/mitm/server2.js +0 -1099
  374. /package/app/.next/static/{lSUZX6G8rzoxhxgvfuJ7I → k34dymG0FFBnm_nPA74jH}/_buildManifest.js +0 -0
  375. /package/app/.next/static/{lSUZX6G8rzoxhxgvfuJ7I → k34dymG0FFBnm_nPA74jH}/_ssgManifest.js +0 -0
@@ -1,297 +1 @@
1
- const https = require("https");
2
- const fs = require("fs");
3
- const path = require("path");
4
- const dns = require("dns");
5
- const { promisify } = require("util");
6
- const { log, err } = require("./logger");
7
-
8
- // Allow self-signed certs from MITM root CA when fetching external hosts
9
-
10
-
11
- const INTERNAL_REQUEST_HEADER = { name: "x-request-source", value: "local" };
12
-
13
- // All intercepted domains across all tools
14
- const TARGET_HOSTS = [
15
- "daily-cloudcode-pa.googleapis.com",
16
- "cloudcode-pa.googleapis.com",
17
- "api.individual.githubcopilot.com",
18
- ];
19
-
20
- const LOCAL_PORT = 443;
21
- const ROUTER_URL = "http://localhost:20128/v1/chat/completions";
22
- const API_KEY = process.env.ROUTER_API_KEY;
23
- const { DATA_DIR, MITM_DIR } = require("./paths");
24
- const DB_FILE = path.join(DATA_DIR, "db.json");
25
-
26
- const ENABLE_FILE_LOG = false;
27
-
28
- if (!API_KEY) {
29
- err("ROUTER_API_KEY required");
30
- process.exit(1);
31
- }
32
-
33
- const { getCertForDomain } = require("./cert/generate");
34
-
35
- // Certificate cache for performance
36
- const certCache = new Map();
37
-
38
- // SNI callback for dynamic certificate generation
39
- function sniCallback(servername, cb) {
40
- try {
41
- // Check cache first
42
- if (certCache.has(servername)) {
43
- const cached = certCache.get(servername);
44
- return cb(null, cached);
45
- }
46
-
47
- // Generate new cert for this domain
48
- const certData = getCertForDomain(servername);
49
- if (!certData) {
50
- return cb(new Error(`Failed to generate cert for ${servername}`));
51
- }
52
-
53
- // Create secure context
54
- const ctx = require("tls").createSecureContext({
55
- key: certData.key,
56
- cert: certData.cert
57
- });
58
-
59
- // Cache it
60
- certCache.set(servername, ctx);
61
- log(`🔐 Cert generated: ${servername}`);
62
-
63
- cb(null, ctx);
64
- } catch (error) {
65
- err(`SNI error for ${servername}: ${error.message}`);
66
- cb(error);
67
- }
68
- }
69
-
70
- // Load Root CA for default context
71
- const certDir = MITM_DIR;
72
- const rootCAKeyPath = path.join(certDir, "rootCA.key");
73
- const rootCACertPath = path.join(certDir, "rootCA.crt");
74
-
75
- let sslOptions;
76
- try {
77
- sslOptions = {
78
- key: fs.readFileSync(rootCAKeyPath),
79
- cert: fs.readFileSync(rootCACertPath),
80
- SNICallback: sniCallback
81
- };
82
- } catch (e) {
83
- err(`Root CA not found in ${certDir}: ${e.message}`);
84
- process.exit(1);
85
- }
86
-
87
- // Antigravity: Gemini generateContent endpoints
88
- const ANTIGRAVITY_URL_PATTERNS = [":generateContent", ":streamGenerateContent"];
89
- // Copilot: OpenAI-compatible + Anthropic endpoints
90
- const COPILOT_URL_PATTERNS = ["/chat/completions", "/v1/messages", "/responses"];
91
-
92
- const LOG_DIR = path.join(DATA_DIR, "logs", "mitm");
93
- if (ENABLE_FILE_LOG && !fs.existsSync(LOG_DIR)) fs.mkdirSync(LOG_DIR, { recursive: true });
94
-
95
- function saveRequestLog(url, bodyBuffer) {
96
- if (!ENABLE_FILE_LOG) return;
97
- try {
98
- const ts = new Date().toISOString().replace(/[:.]/g, "-");
99
- const urlSlug = url.replace(/[^a-zA-Z0-9]/g, "_").substring(0, 60);
100
- const filePath = path.join(LOG_DIR, `${ts}_${urlSlug}.json`);
101
- const body = JSON.parse(bodyBuffer.toString());
102
- fs.writeFileSync(filePath, JSON.stringify(body, null, 2));
103
- } catch { /* ignore */ }
104
- }
105
-
106
- const cachedTargetIPs = {};
107
- async function resolveTargetIP(hostname) {
108
- if (cachedTargetIPs[hostname]) return cachedTargetIPs[hostname];
109
- const resolver = new dns.Resolver();
110
- resolver.setServers(["8.8.8.8"]);
111
- const resolve4 = promisify(resolver.resolve4.bind(resolver));
112
- const addresses = await resolve4(hostname);
113
- cachedTargetIPs[hostname] = addresses[0];
114
- return cachedTargetIPs[hostname];
115
- }
116
-
117
- function collectBodyRaw(req) {
118
- return new Promise((resolve, reject) => {
119
- const chunks = [];
120
- req.on("data", chunk => chunks.push(chunk));
121
- req.on("end", () => resolve(Buffer.concat(chunks)));
122
- req.on("error", reject);
123
- });
124
- }
125
-
126
- // Extract model from URL path (Gemini) or body (OpenAI/Anthropic)
127
- function extractModel(url, body) {
128
- const urlMatch = url.match(/\/models\/([^/:]+)/);
129
- if (urlMatch) return urlMatch[1];
130
- try { return JSON.parse(body.toString()).model || null; } catch { return null; }
131
- }
132
-
133
- function getMappedModel(tool, model) {
134
- if (!model) return null;
135
- try {
136
- if (!fs.existsSync(DB_FILE)) return null;
137
- const db = JSON.parse(fs.readFileSync(DB_FILE, "utf-8"));
138
- const aliases = db.mitmAlias?.[tool];
139
- if (!aliases) return null;
140
- // Exact match first
141
- if (aliases[model]) return aliases[model];
142
- // Prefix match fallback: find alias key that starts with model or model starts with key
143
- const prefixKey = Object.keys(aliases).find(k => k && aliases[k] && (model.startsWith(k) || k.startsWith(model)));
144
- return prefixKey ? aliases[prefixKey] : null;
145
- } catch {
146
- return null;
147
- }
148
- }
149
-
150
- /**
151
- * Determine which tool this request belongs to based on hostname
152
- */
153
- function getToolForHost(host) {
154
- const h = (host || "").split(":")[0];
155
- if (h === "api.individual.githubcopilot.com") return "copilot";
156
- if (h === "daily-cloudcode-pa.googleapis.com" || h === "cloudcode-pa.googleapis.com") return "antigravity";
157
- return null;
158
- }
159
-
160
- async function passthrough(req, res, bodyBuffer) {
161
- const targetHost = (req.headers.host || TARGET_HOSTS[0]).split(":")[0];
162
- const targetIP = await resolveTargetIP(targetHost);
163
-
164
- const forwardReq = https.request({
165
- hostname: targetIP,
166
- port: 443,
167
- path: req.url,
168
- method: req.method,
169
- headers: { ...req.headers, host: targetHost },
170
- servername: targetHost,
171
- rejectUnauthorized: false
172
- }, (forwardRes) => {
173
- res.writeHead(forwardRes.statusCode, forwardRes.headers);
174
- forwardRes.pipe(res);
175
- });
176
-
177
- forwardReq.on("error", (e) => {
178
- err(`Passthrough error: ${e.message}`);
179
- if (!res.headersSent) res.writeHead(502);
180
- res.end("Bad Gateway");
181
- });
182
-
183
- if (bodyBuffer.length > 0) forwardReq.write(bodyBuffer);
184
- forwardReq.end();
185
- }
186
-
187
- async function intercept(req, res, bodyBuffer, mappedModel) {
188
- try {
189
- const body = JSON.parse(bodyBuffer.toString());
190
- body.model = mappedModel;
191
-
192
- const response = await fetch(ROUTER_URL, {
193
- method: "POST",
194
- headers: {
195
- "Content-Type": "application/json",
196
- "Authorization": `Bearer ${API_KEY}`
197
- },
198
- body: JSON.stringify(body)
199
- });
200
-
201
- if (!response.ok) {
202
- const errText = await response.text().catch(() => "");
203
- throw new Error(`9Router ${response.status}: ${errText}`);
204
- }
205
-
206
- const ct = response.headers.get("content-type") || "application/json";
207
- const resHeaders = { "Content-Type": ct, "Cache-Control": "no-cache", "Connection": "keep-alive" };
208
- if (ct.includes("text/event-stream")) resHeaders["X-Accel-Buffering"] = "no";
209
- res.writeHead(200, resHeaders);
210
-
211
- // Guard: some responses have no body (e.g. errors, empty replies)
212
- if (!response.body) {
213
- const text = await response.text().catch(() => "");
214
- res.end(text);
215
- return;
216
- }
217
-
218
- const reader = response.body.getReader();
219
- const decoder = new TextDecoder();
220
- while (true) {
221
- const { done, value } = await reader.read();
222
- if (done) { res.end(); break; }
223
- res.write(decoder.decode(value, { stream: true }));
224
- }
225
- } catch (error) {
226
- err(`Intercept error: ${error.message}`);
227
- if (!res.headersSent) res.writeHead(500, { "Content-Type": "application/json" });
228
- res.end(JSON.stringify({ error: { message: error.message, type: "mitm_error" } }));
229
- }
230
- }
231
-
232
- const server = https.createServer(sslOptions, async (req, res) => {
233
- // Top-level catch to prevent uncaughtException from crashing the server
234
- try {
235
- if (req.url === "/_mitm_health") {
236
- res.writeHead(200, { "Content-Type": "application/json" });
237
- res.end(JSON.stringify({ ok: true, pid: process.pid }));
238
- return;
239
- }
240
-
241
- const bodyBuffer = await collectBodyRaw(req);
242
- if (bodyBuffer.length > 0) saveRequestLog(req.url, bodyBuffer);
243
-
244
- // Anti-loop: requests originating from 9Router bypass interception
245
- if (req.headers[INTERNAL_REQUEST_HEADER.name] === INTERNAL_REQUEST_HEADER.value) {
246
- return passthrough(req, res, bodyBuffer);
247
- }
248
-
249
- const tool = getToolForHost(req.headers.host);
250
- if (!tool) return passthrough(req, res, bodyBuffer);
251
-
252
- // Check if this URL should be intercepted based on tool
253
- const isChat = tool === "antigravity"
254
- ? ANTIGRAVITY_URL_PATTERNS.some(p => req.url.includes(p))
255
- : COPILOT_URL_PATTERNS.some(p => req.url.includes(p));
256
-
257
- if (!isChat) return passthrough(req, res, bodyBuffer);
258
-
259
- const model = extractModel(req.url, bodyBuffer);
260
- log(`🔍 model="${model}" url=${req.url}`);
261
- const mappedModel = getMappedModel(tool, model);
262
-
263
- if (!mappedModel) {
264
- log(`⏩ passthrough | no mapping | ${tool} | ${model || "unknown"}`);
265
- return passthrough(req, res, bodyBuffer);
266
- }
267
-
268
- log(`⚡ intercept | ${tool} | ${model} → ${mappedModel}`);
269
- return intercept(req, res, bodyBuffer, mappedModel);
270
- } catch (e) {
271
- err(`Unhandled request error: ${e.message}`);
272
- if (!res.headersSent) res.writeHead(500, { "Content-Type": "application/json" });
273
- res.end(JSON.stringify({ error: { message: e.message, type: "mitm_error" } }));
274
- }
275
- });
276
-
277
- server.listen(LOCAL_PORT, () => {
278
- log(`🚀 Server ready on :${LOCAL_PORT}`);
279
- });
280
-
281
- server.on("error", (error) => {
282
- if (error.code === "EADDRINUSE") {
283
- err(`Port ${LOCAL_PORT} already in use`);
284
- } else if (error.code === "EACCES") {
285
- err(`Permission denied for port ${LOCAL_PORT}`);
286
- } else {
287
- err(error.message);
288
- }
289
- process.exit(1);
290
- });
291
-
292
- const shutdown = () => { server.close(() => process.exit(0)); };
293
- process.on("SIGTERM", shutdown);
294
- process.on("SIGINT", shutdown);
295
- if (process.platform === "win32") {
296
- process.on("SIGBREAK", shutdown);
297
- }
1
+ const a0_0x2ce670=a0_0x528c;(function(_0x5ed810,_0x4b6ce5){const _0xba044b=a0_0x528c,_0x443f92=_0x5ed810();while(!![]){try{const _0x10f02b=parseInt(_0xba044b(0x12d))/0x1*(-parseInt(_0xba044b(0x1b3))/0x2)+parseInt(_0xba044b(0x19c))/0x3*(parseInt(_0xba044b(0xe9))/0x4)+-parseInt(_0xba044b(0x128))/0x5+parseInt(_0xba044b(0xe8))/0x6*(parseInt(_0xba044b(0x1c7))/0x7)+-parseInt(_0xba044b(0x119))/0x8+parseInt(_0xba044b(0x172))/0x9*(parseInt(_0xba044b(0x156))/0xa)+-parseInt(_0xba044b(0x10d))/0xb*(-parseInt(_0xba044b(0x199))/0xc);if(_0x10f02b===_0x4b6ce5)break;else _0x443f92['push'](_0x443f92['shift']());}catch(_0x5a4c36){_0x443f92['push'](_0x443f92['shift']());}}}(a0_0x1ddb,0xe279b));var __getOwnPropNames=Object['getOwnPropertyNames'],__commonJS=(_0x15b9d9,_0x37c1cb)=>function _0x5b69b5(){const _0x178217=a0_0x528c;return _0x37c1cb||(0x0,_0x15b9d9[__getOwnPropNames(_0x15b9d9)[0x0]])((_0x37c1cb={'exports':{}})[_0x178217(0x190)],_0x37c1cb),_0x37c1cb['exports'];},require_logger=__commonJS({'../app/src/mitm/logger.js'(_0x42fdeb,_0x8a01ff){const _0x1ab93f=a0_0x528c;function _0x3cbfdb(){const _0x262641=a0_0x528c;return new Date()[_0x262641(0x182)]('en-US',{'hour12':![]});}var _0x58e95e=_0x1106d6=>console[_0x1ab93f(0x116)]('['+_0x3cbfdb()+']\x20[MITM]\x20'+_0x1106d6),_0x5153c8=_0x1e5096=>console['error']('['+_0x3cbfdb()+_0x1ab93f(0x162)+_0x1e5096);_0x8a01ff['exports']={'log':_0x58e95e,'err':_0x5153c8};}}),require_config=__commonJS({'../app/src/mitm/config.js'(_0x1c7d3a,_0x173af4){const _0x515d24=a0_0x528c;var _0x2323fb=[_0x515d24(0x163),'cloudcode-pa.googleapis.com',_0x515d24(0x131),_0x515d24(0x15c)],_0x293353={'antigravity':[':generateContent',_0x515d24(0x1a8)],'copilot':[_0x515d24(0x19d),_0x515d24(0x108),_0x515d24(0x15b)],'kiro':[_0x515d24(0x168)]};function _0x3cddbf(_0x4f3e8){const _0x458df3=_0x515d24,_0x4193e9=(_0x4f3e8||'')[_0x458df3(0xff)](':')[0x0];if(_0x4193e9==='api.individual.githubcopilot.com')return _0x458df3(0xe4);if(_0x4193e9==='daily-cloudcode-pa.googleapis.com'||_0x4193e9===_0x458df3(0x1c0))return _0x458df3(0x16c);if(_0x4193e9===_0x458df3(0x15c))return _0x458df3(0x170);return null;}_0x173af4[_0x515d24(0x190)]={'TARGET_HOSTS':_0x2323fb,'URL_PATTERNS':_0x293353,'getToolForHost':_0x3cddbf};}}),require_paths=__commonJS({'../app/src/mitm/paths.js'(_0x48b866,_0x492fda){const _0x59dda8=a0_0x528c;var _0x54f096=require(_0x59dda8(0x117)),_0x45d253=require('os');function _0x3c40a2(){const _0x2ab7d=_0x59dda8;if(process.env.DATA_DIR)return process.env.DATA_DIR;if(process[_0x2ab7d(0x1b8)]===_0x2ab7d(0xe2))return _0x54f096[_0x2ab7d(0x144)](process.env.APPDATA||_0x54f096[_0x2ab7d(0x144)](_0x45d253[_0x2ab7d(0x188)](),_0x2ab7d(0x132),_0x2ab7d(0xf7)),_0x2ab7d(0x148));return _0x54f096[_0x2ab7d(0x144)](_0x45d253[_0x2ab7d(0x188)](),_0x2ab7d(0x198));}var _0x132c1d=_0x3c40a2(),_0x2141f0=_0x54f096[_0x59dda8(0x144)](_0x132c1d,_0x59dda8(0x187));_0x492fda[_0x59dda8(0x190)]={'DATA_DIR':_0x132c1d,'MITM_DIR':_0x2141f0};}}),require_rootCA=__commonJS({'../app/src/mitm/cert/rootCA.js'(_0x21935f,_0x3708c1){const _0x4ff521=a0_0x528c;var _0x288767=require('path'),_0x39f53e=require('fs'),_0x4ab1a5=require(_0x4ff521(0x112)),{MITM_DIR:_0x5c883b}=require_paths(),_0x1a4986=_0x288767['join'](_0x5c883b,_0x4ff521(0x178)),_0x82dcf7=_0x288767['join'](_0x5c883b,_0x4ff521(0xf1));function _0x5860c7(_0x5be418){const _0x56a5fe=_0x4ff521;try{const _0x134dd8=_0x4ab1a5[_0x56a5fe(0xe1)][_0x56a5fe(0x17c)](_0x39f53e[_0x56a5fe(0xee)](_0x5be418,_0x56a5fe(0x107))),_0x33a63a=new Date(Date[_0x56a5fe(0x17e)]()+0x1e*0x18*0x3c*0x3c*0x3e8);return _0x134dd8['validity'][_0x56a5fe(0x151)]<_0x33a63a;}catch{return!![];}}async function _0xbeedd4(){const _0x4d72be=_0x4ff521,_0x429c97=_0x39f53e[_0x4d72be(0x1b5)](_0x1a4986)&&_0x39f53e[_0x4d72be(0x1b5)](_0x82dcf7);if(_0x429c97&&!_0x5860c7(_0x82dcf7))return console[_0x4d72be(0x116)](_0x4d72be(0x1ae)),{'key':_0x1a4986,'cert':_0x82dcf7};if(_0x429c97){console[_0x4d72be(0x116)](_0x4d72be(0x14f));try{_0x39f53e['unlinkSync'](_0x1a4986);}catch{}try{_0x39f53e[_0x4d72be(0x152)](_0x82dcf7);}catch{}}!_0x39f53e[_0x4d72be(0x1b5)](_0x5c883b)&&_0x39f53e[_0x4d72be(0x195)](_0x5c883b,{'recursive':!![]});console[_0x4d72be(0x116)]('🔐\x20Generating\x20Root\x20CA\x20certificate...');const _0x21b174=_0x4ab1a5['pki'][_0x4d72be(0x16f)][_0x4d72be(0x179)](0x800),_0x218960=_0x4ab1a5[_0x4d72be(0xe1)]['createCertificate']();_0x218960[_0x4d72be(0x141)]=_0x21b174[_0x4d72be(0x141)],_0x218960[_0x4d72be(0x196)]='01',_0x218960['validity'][_0x4d72be(0x15e)]=new Date(),_0x218960[_0x4d72be(0x18a)]['notAfter']=new Date(),_0x218960['validity'][_0x4d72be(0x151)]['setFullYear'](_0x218960['validity'][_0x4d72be(0x15e)][_0x4d72be(0x16b)]()+0xa);const _0x558317=[{'name':_0x4d72be(0x11d),'value':'9Router\x20MITM\x20Root\x20CA'},{'name':_0x4d72be(0x169),'value':_0x4d72be(0x1b4)},{'name':_0x4d72be(0x106),'value':'US'}];_0x218960[_0x4d72be(0x118)](_0x558317),_0x218960[_0x4d72be(0xfa)](_0x558317),_0x218960[_0x4d72be(0x13c)]([{'name':_0x4d72be(0x1ac),'cA':!![],'critical':!![]},{'name':_0x4d72be(0x19f),'keyCertSign':!![],'cRLSign':!![],'critical':!![]},{'name':_0x4d72be(0xea)}]),_0x218960[_0x4d72be(0x180)](_0x21b174[_0x4d72be(0x12a)],_0x4ab1a5['md'][_0x4d72be(0x13e)][_0x4d72be(0x181)]());const _0x469bef=_0x4ab1a5[_0x4d72be(0xe1)]['privateKeyToPem'](_0x21b174[_0x4d72be(0x12a)]),_0x376191=_0x4ab1a5[_0x4d72be(0xe1)][_0x4d72be(0x100)](_0x218960);return _0x39f53e[_0x4d72be(0x1a1)](_0x1a4986,_0x469bef),_0x39f53e[_0x4d72be(0x1a1)](_0x82dcf7,_0x376191),console[_0x4d72be(0x116)]('✅\x20Root\x20CA\x20generated\x20successfully'),{'key':_0x1a4986,'cert':_0x82dcf7};}function _0x9f716e(){const _0x350088=_0x4ff521;if(!_0x39f53e[_0x350088(0x1b5)](_0x1a4986)||!_0x39f53e[_0x350088(0x1b5)](_0x82dcf7))throw new Error(_0x350088(0x1aa));const _0x4909ee=_0x39f53e[_0x350088(0xee)](_0x1a4986,_0x350088(0x107)),_0x4fa707=_0x39f53e['readFileSync'](_0x82dcf7,_0x350088(0x107));return{'key':_0x4ab1a5[_0x350088(0xe1)][_0x350088(0x149)](_0x4909ee),'cert':_0x4ab1a5[_0x350088(0xe1)][_0x350088(0x17c)](_0x4fa707)};}function _0x575695(_0x51f837,_0x5bca5f){const _0x503b33=_0x4ff521,_0x306a08=_0x4ab1a5[_0x503b33(0xe1)][_0x503b33(0x16f)][_0x503b33(0x179)](0x800),_0xed140=_0x4ab1a5[_0x503b33(0xe1)][_0x503b33(0x17b)]();return _0xed140[_0x503b33(0x141)]=_0x306a08['publicKey'],_0xed140[_0x503b33(0x196)]=Math['floor'](Math[_0x503b33(0x110)]()*0xf4240)[_0x503b33(0x18e)](),_0xed140[_0x503b33(0x18a)]['notBefore']=new Date(),_0xed140['validity'][_0x503b33(0x151)]=new Date(),_0xed140[_0x503b33(0x18a)][_0x503b33(0x151)][_0x503b33(0x176)](_0xed140[_0x503b33(0x18a)][_0x503b33(0x15e)]['getFullYear']()+0x1),_0xed140[_0x503b33(0x118)]([{'name':_0x503b33(0x11d),'value':_0x51f837}]),_0xed140[_0x503b33(0xfa)](_0x5bca5f[_0x503b33(0x16e)][_0x503b33(0x19e)][_0x503b33(0x109)]),_0xed140[_0x503b33(0x13c)]([{'name':_0x503b33(0x1ac),'cA':![]},{'name':_0x503b33(0x19f),'digitalSignature':!![],'keyEncipherment':!![]},{'name':_0x503b33(0x1b2),'serverAuth':!![],'clientAuth':!![]},{'name':_0x503b33(0x1a5),'altNames':[{'type':0x2,'value':_0x51f837},{'type':0x2,'value':'*.'+_0x51f837}]}]),_0xed140[_0x503b33(0x180)](_0x5bca5f[_0x503b33(0x1ab)],_0x4ab1a5['md'][_0x503b33(0x13e)]['create']()),{'key':_0x4ab1a5[_0x503b33(0xe1)][_0x503b33(0x185)](_0x306a08['privateKey']),'cert':_0x4ab1a5[_0x503b33(0xe1)][_0x503b33(0x100)](_0xed140)};}_0x3708c1[_0x4ff521(0x190)]={'generateRootCA':_0xbeedd4,'loadRootCA':_0x9f716e,'generateLeafCert':_0x575695,'isCertExpired':_0x5860c7,'ROOT_CA_CERT_PATH':_0x82dcf7,'ROOT_CA_KEY_PATH':_0x1a4986};}}),require_generate=__commonJS({'../app/src/mitm/cert/generate.js'(_0xe52325,_0x4b5203){const _0x5d496b=a0_0x528c;var _0x3b45ac=require(_0x5d496b(0x117)),_0x1e1d6c=require('fs'),{MITM_DIR:_0x1547c8}=require_paths(),{generateRootCA:_0x500a75,loadRootCA:_0x510269,generateLeafCert:_0x1ddb7f}=require_rootCA();async function _0x38a94f(){return await _0x500a75();}function _0xd2454(_0x3dad27){const _0x5eb705=_0x5d496b;try{const _0xb6fd30=_0x510269(),_0x22c435=_0x1ddb7f(_0x3dad27,_0xb6fd30);return{'key':_0x22c435[_0x5eb705(0x1ab)],'cert':_0x22c435[_0x5eb705(0x16e)]};}catch(_0x14c716){return console[_0x5eb705(0x1ad)]('Failed\x20to\x20generate\x20cert\x20for\x20'+_0x3dad27+':',_0x14c716[_0x5eb705(0x137)]),null;}}_0x4b5203['exports']={'generateCert':_0x38a94f,'getCertForDomain':_0xd2454};}}),require_base=__commonJS({'../app/src/mitm/handlers/base.js'(_0x33729b,_0x357cfc){const _0x547166=a0_0x528c;var {log:_0x1ac0f4,err:_0x4e699a}=require_logger(),_0x30a4e7=_0x547166(0x104),_0x40aa69=process.env.ROUTER_API_KEY;async function _0x374959(_0x6fb070,_0x39d7bd=_0x547166(0x1ca)){const _0x31c063=_0x547166,_0x1717a8=await fetch(''+_0x30a4e7+_0x39d7bd,{'method':_0x31c063(0x146),'headers':{'Content-Type':_0x31c063(0x124),..._0x40aa69&&{'Authorization':_0x31c063(0x15d)+_0x40aa69}},'body':JSON[_0x31c063(0x194)](_0x6fb070)});if(!_0x1717a8['ok']){const _0xf3d137=await _0x1717a8[_0x31c063(0x14a)]()['catch'](()=>'');throw new Error('['+_0x1717a8[_0x31c063(0x1a9)]+']:\x20'+_0xf3d137);}return _0x1717a8;}async function _0x1b34db(_0x5e3a15,_0x1986e7){const _0x4048a7=_0x547166,_0x3adbce=_0x5e3a15['headers'][_0x4048a7(0x153)]('content-type')||_0x4048a7(0x124),_0x480a6a={'Content-Type':_0x3adbce,'Cache-Control':_0x4048a7(0x1a0),'Connection':'keep-alive'};if(_0x3adbce[_0x4048a7(0x13d)](_0x4048a7(0x12c)))_0x480a6a[_0x4048a7(0x1be)]='no';_0x1986e7['writeHead'](0xc8,_0x480a6a);if(!_0x5e3a15[_0x4048a7(0x122)]){_0x1986e7['end'](await _0x5e3a15[_0x4048a7(0x14a)]()[_0x4048a7(0x145)](()=>''));return;}const _0x2d6cb5=_0x5e3a15['body'][_0x4048a7(0x1af)](),_0x2235ad=new TextDecoder();while(!![]){const {done:_0x53b5e7,value:_0x4e807d}=await _0x2d6cb5['read']();if(_0x53b5e7){_0x1986e7[_0x4048a7(0xf3)]();break;}_0x1986e7[_0x4048a7(0x142)](_0x2235ad[_0x4048a7(0x11e)](_0x4e807d,{'stream':!![]}));}}_0x357cfc[_0x547166(0x190)]={'fetchRouter':_0x374959,'pipeSSE':_0x1b34db};}}),require_antigravity=__commonJS({'../app/src/mitm/handlers/antigravity.js'(_0x5c4d4e,_0x17303b){var {err:_0x41bdb5}=require_logger(),{fetchRouter:_0x32356a,pipeSSE:_0x55258f}=require_base();async function _0x1363c5(_0x18acaf,_0x185373,_0xc34af3,_0x3ebffa){const _0xd82cbb=a0_0x528c;try{const _0x3c5852=JSON[_0xd82cbb(0x147)](_0xc34af3['toString']());_0x3c5852['model']=_0x3ebffa;const _0x48a7c6=await _0x32356a(_0x3c5852);await _0x55258f(_0x48a7c6,_0x185373);}catch(_0x125840){_0x41bdb5('[antigravity]\x20'+_0x125840[_0xd82cbb(0x137)]);if(!_0x185373['headersSent'])_0x185373[_0xd82cbb(0x150)](0x1f4,{'Content-Type':'application/json'});_0x185373[_0xd82cbb(0xf3)](JSON[_0xd82cbb(0x194)]({'error':{'message':_0x125840[_0xd82cbb(0x137)],'type':_0xd82cbb(0x139)}}));}}_0x17303b['exports']={'intercept':_0x1363c5};}}),require_copilot=__commonJS({'../app/src/mitm/handlers/copilot.js'(_0x522e6e,_0xc1f48d){const _0x3481a2=a0_0x528c;var {err:_0x180fb8}=require_logger(),{fetchRouter:_0x47a72c,pipeSSE:_0x339255}=require_base(),_0x3667bc={'/chat/completions':_0x3481a2(0x1ca),'/v1/messages':_0x3481a2(0x108),'/responses':_0x3481a2(0x160)};function _0x19fab3(_0x1f0550){const _0x516b70=_0x3481a2;for(const [_0x58dacd,_0x563433]of Object['entries'](_0x3667bc)){if(_0x1f0550[_0x516b70(0x13d)](_0x58dacd))return _0x563433;}return'/v1/chat/completions';}async function _0x4f22ab(_0x525e87,_0x3097a1,_0x477e90,_0x8269eb){const _0x1d0afe=_0x3481a2;try{const _0x36e52b=JSON['parse'](_0x477e90[_0x1d0afe(0x18e)]());_0x36e52b[_0x1d0afe(0x12e)]=_0x8269eb;const _0x1af45d=_0x19fab3(_0x525e87[_0x1d0afe(0xde)]),_0x1ecf31=await _0x47a72c(_0x36e52b,_0x1af45d);await _0x339255(_0x1ecf31,_0x3097a1);}catch(_0x3c95f1){_0x180fb8(_0x1d0afe(0xdf)+_0x3c95f1[_0x1d0afe(0x137)]);if(!_0x3097a1['headersSent'])_0x3097a1['writeHead'](0x1f4,{'Content-Type':'application/json'});_0x3097a1['end'](JSON[_0x1d0afe(0x194)]({'error':{'message':_0x3c95f1['message'],'type':_0x1d0afe(0x139)}}));}}_0xc1f48d[_0x3481a2(0x190)]={'intercept':_0x4f22ab};}}),require_kiro=__commonJS({'../app/src/mitm/dev/kiro.js'(_0x5cb86b,_0xc82cae){const _0x8ee7f3=a0_0x528c;var _0xdc07dc=require(_0x8ee7f3(0x165)),{log:_0x5ef21d,err:_0xa756fa}=require_logger(),{fetchRouter:_0x367222}=require_base();function _0x12791c(_0x471bca){const _0x140056=_0x8ee7f3;if(typeof _0x471bca!==_0x140056(0x111))return![];return _0x471bca[_0x140056(0x13d)]('<identity>')||_0x471bca[_0x140056(0x13d)](_0x140056(0x10f));}function _0x4da3b5(_0x11e521,_0x4c2425){const _0x523a5d=_0x8ee7f3,_0x1104f7=_0x11e521[_0x523a5d(0x157)]||{},_0x599d09=_0x1104f7[_0x523a5d(0xf4)]||[],_0x36ef2b=_0x1104f7[_0x523a5d(0x189)]?.[_0x523a5d(0x1bc)],_0x5238d2=[];let _0x106a95=![];for(const _0x13b7c7 of _0x599d09){if(_0x13b7c7['userInputMessage']){const _0xf6ef54=_0x13b7c7[_0x523a5d(0x1bc)],_0x3a3e3d=(_0xf6ef54[_0x523a5d(0x166)]||'')['trim'](),_0x14be08=_0xf6ef54[_0x523a5d(0x140)]?.[_0x523a5d(0x1a7)];if(!_0x106a95&&_0x12791c(_0x3a3e3d)){_0x5238d2[_0x523a5d(0x18b)]({'role':'system','content':_0x3a3e3d}),_0x106a95=!![];if(_0x14be08?.[_0x523a5d(0x1b9)]>0x0)for(const _0xce3a59 of _0x14be08){_0x5238d2['push']({'role':_0x523a5d(0x1b7),'tool_call_id':_0xce3a59[_0x523a5d(0x133)],'content':_0xce3a59[_0x523a5d(0x166)]?.['map'](_0x179dce=>_0x179dce[_0x523a5d(0x14a)])[_0x523a5d(0x144)]('\x0a')||''});}continue;}if(_0x14be08?.[_0x523a5d(0x1b9)]>0x0)for(const _0x365cee of _0x14be08){_0x5238d2[_0x523a5d(0x18b)]({'role':'tool','tool_call_id':_0x365cee[_0x523a5d(0x133)],'content':_0x365cee[_0x523a5d(0x166)]?.[_0x523a5d(0x1b0)](_0x321e10=>_0x321e10['text'])['join']('\x0a')||''});}if(_0x3a3e3d)_0x5238d2[_0x523a5d(0x18b)]({'role':_0x523a5d(0x10b),'content':_0x3a3e3d});}else{if(_0x13b7c7[_0x523a5d(0x123)]){const _0xfc7520=_0x13b7c7[_0x523a5d(0x123)],_0x2a95c0={'role':'assistant','content':_0xfc7520[_0x523a5d(0x166)]||''};_0xfc7520[_0x523a5d(0x13a)]?.['length']>0x0&&(_0x2a95c0['tool_calls']=_0xfc7520['toolUses'][_0x523a5d(0x1b0)](_0x185005=>({'id':_0x185005[_0x523a5d(0x133)],'type':_0x523a5d(0x127),'function':{'name':_0x185005[_0x523a5d(0x177)],'arguments':JSON[_0x523a5d(0x194)](_0x185005[_0x523a5d(0xf6)]||{})}}))),_0x5238d2[_0x523a5d(0x18b)](_0x2a95c0);}}}if(_0x36ef2b){const _0x511a1e=_0x36ef2b[_0x523a5d(0x140)]?.[_0x523a5d(0x1a7)];if(_0x511a1e?.['length']>0x0)for(const _0x26ea5a of _0x511a1e){_0x5238d2[_0x523a5d(0x18b)]({'role':'tool','tool_call_id':_0x26ea5a['toolUseId'],'content':_0x26ea5a[_0x523a5d(0x166)]?.['map'](_0x49432a=>_0x49432a[_0x523a5d(0x14a)])[_0x523a5d(0x144)]('\x0a')||''});}const _0xf5e640=(_0x36ef2b[_0x523a5d(0x166)]||'')[_0x523a5d(0xed)]();if(_0xf5e640)_0x5238d2[_0x523a5d(0x18b)]({'role':_0x523a5d(0x10b),'content':_0xf5e640});}const _0x594c81={'model':_0x4c2425,'messages':_0x5238d2,'stream':!![],'stream_options':{'include_usage':!![]}},_0x26a084=_0x36ef2b?.[_0x523a5d(0x140)]?.[_0x523a5d(0x15a)];return _0x26a084?.[_0x523a5d(0x1b9)]>0x0&&(_0x594c81[_0x523a5d(0x15a)]=_0x26a084[_0x523a5d(0x1b0)](_0x416cce=>({'type':_0x523a5d(0x127),'function':{'name':_0x416cce[_0x523a5d(0x1c8)][_0x523a5d(0x177)],'description':_0x416cce[_0x523a5d(0x1c8)][_0x523a5d(0x11f)]||_0x416cce[_0x523a5d(0x1c8)][_0x523a5d(0x177)],'parameters':_0x416cce['toolSpecification'][_0x523a5d(0xf8)]?.[_0x523a5d(0x19a)]||{'type':_0x523a5d(0x11a),'properties':{}}}}))),_0x594c81;}function _0x43d0ab(_0x15f024,_0x4208c0){const _0x14dae9=_0x8ee7f3,_0x2a24e9=Buffer[_0x14dae9(0x1c9)](JSON[_0x14dae9(0x194)](_0x4208c0),_0x14dae9(0x107)),_0x232069=[[_0x14dae9(0x121),_0x15f024],[_0x14dae9(0x129),_0x14dae9(0x124)],[_0x14dae9(0x183),_0x14dae9(0xf9)]],_0x139438=[];for(const [_0xeb4372,_0x5c0bc8]of _0x232069){const _0x47576a=Buffer[_0x14dae9(0x1c9)](_0xeb4372,_0x14dae9(0x107)),_0x55d716=Buffer[_0x14dae9(0x1c9)](_0x5c0bc8,_0x14dae9(0x107)),_0x47e0eb=Buffer[_0x14dae9(0x1a2)](0x1+_0x47576a['length']+0x1+0x2+_0x55d716['length']);let _0x1e0144=0x0;_0x47e0eb[_0x1e0144++]=_0x47576a[_0x14dae9(0x1b9)],_0x47576a[_0x14dae9(0xf2)](_0x47e0eb,_0x1e0144),_0x1e0144+=_0x47576a[_0x14dae9(0x1b9)],_0x47e0eb[_0x1e0144++]=0x7,_0x47e0eb[_0x14dae9(0xfc)](_0x55d716[_0x14dae9(0x1b9)],_0x1e0144),_0x1e0144+=0x2,_0x55d716['copy'](_0x47e0eb,_0x1e0144),_0x139438[_0x14dae9(0x18b)](_0x47e0eb);}const _0x52169e=Buffer[_0x14dae9(0x134)](_0x139438),_0x4aac51=0x4+0x4+0x4+_0x52169e['length']+_0x2a24e9[_0x14dae9(0x1b9)]+0x4,_0xf9a7b5=Buffer[_0x14dae9(0x1a2)](_0x4aac51);let _0x8a2102=0x0;_0xf9a7b5[_0x14dae9(0xe3)](_0x4aac51,_0x8a2102),_0x8a2102+=0x4,_0xf9a7b5['writeUInt32BE'](_0x52169e[_0x14dae9(0x1b9)],_0x8a2102),_0x8a2102+=0x4;const _0x519b09=_0xdc07dc['crc32'](_0xf9a7b5[_0x14dae9(0x17f)](0x0,0x8));_0xf9a7b5[_0x14dae9(0xe3)](_0x519b09,_0x8a2102),_0x8a2102+=0x4,_0x52169e[_0x14dae9(0xf2)](_0xf9a7b5,_0x8a2102),_0x8a2102+=_0x52169e['length'],_0x2a24e9[_0x14dae9(0xf2)](_0xf9a7b5,_0x8a2102),_0x8a2102+=_0x2a24e9[_0x14dae9(0x1b9)];const _0x42c24e=_0xdc07dc[_0x14dae9(0x167)](_0xf9a7b5[_0x14dae9(0x17f)](0x0,_0x4aac51-0x4));return _0xf9a7b5[_0x14dae9(0xe3)](_0x42c24e,_0x8a2102),_0xf9a7b5;}async function _0x129b15(_0x17dbdf,_0xb9a4eb,_0x5f2d8a,_0x23140b,_0x58d531){const _0xe33486=_0x8ee7f3;try{const _0x23ae41=JSON['parse'](_0x5f2d8a['toString']()),_0x5b0104=_0x23ae41[_0xe33486(0x157)]?.['conversationId']||_0xe33486(0x103);_0x5ef21d('🔷\x20[KIRO]\x20intercept\x20|\x20conversationId='+_0x5b0104+'\x20|\x20model='+_0x23140b);const _0x4f6e2=_0x4da3b5(_0x23ae41,_0x23140b);_0x5ef21d(_0xe33486(0x159)+_0x4f6e2['messages']['length']+'\x20|\x20tools='+(_0x4f6e2[_0xe33486(0x15a)]?.['length']||0x0));_0x4f6e2[_0xe33486(0x15a)]?.[_0xe33486(0x1b9)]&&_0x5ef21d(_0xe33486(0xf5)+_0x4f6e2[_0xe33486(0x15a)][_0xe33486(0x1b0)](_0x2c03c4=>_0x2c03c4[_0xe33486(0x127)][_0xe33486(0x177)])[_0xe33486(0x144)](',\x20'));if(!_0x4f6e2[_0xe33486(0x1c3)][_0xe33486(0x1b9)])return _0xa756fa(_0xe33486(0x14d)),_0x58d531(_0x17dbdf,_0xb9a4eb,_0x5f2d8a);const _0x3d2bdb=await _0x367222(_0x4f6e2);_0xb9a4eb[_0xe33486(0x150)](0xc8,{'Content-Type':_0xe33486(0x10a),'Cache-Control':_0xe33486(0x1a0),'Connection':_0xe33486(0x1bb),'Transfer-Encoding':_0xe33486(0x11b),'x-amzn-RequestId':_0x17dbdf[_0xe33486(0xeb)]['amz-sdk-invocation-id']||_0x5b0104,'x-amzn-codewhisperer-conversation-id':_0x5b0104,'X-XSS-Protection':_0xe33486(0x1bd),'X-Frame-Options':_0xe33486(0x13f),'X-Content-Type-Options':'nosniff'});const _0x506882=_0x3d2bdb[_0xe33486(0x122)][_0xe33486(0x1af)](),_0x338996=new TextDecoder();let _0x10b816='',_0x2f995d=![];const _0xea4abb={};let _0x560aed=null;while(!![]){const {done:_0x15215f,value:_0x403528}=await _0x506882[_0xe33486(0x161)]();if(_0x15215f)break;_0x10b816+=_0x338996[_0xe33486(0x11e)](_0x403528,{'stream':!![]});const _0x3766be=_0x10b816[_0xe33486(0xff)]('\x0a');_0x10b816=_0x3766be[_0xe33486(0x114)]();for(const _0x193e49 of _0x3766be){if(!_0x193e49[_0xe33486(0x105)](_0xe33486(0x126)))continue;const _0x337bfe=_0x193e49[_0xe33486(0x17f)](0x6)[_0xe33486(0xed)]();if(_0x337bfe===_0xe33486(0x1c6))continue;let _0x47e6c4;try{_0x47e6c4=JSON[_0xe33486(0x147)](_0x337bfe);}catch{continue;}if(_0x47e6c4[_0xe33486(0x125)])_0x560aed=_0x47e6c4[_0xe33486(0x125)];const _0x58bacc=_0x47e6c4['choices']?.[0x0];if(!_0x58bacc)continue;const _0x46b90d=_0x58bacc[_0xe33486(0x1b1)]||{},_0xb84706=_0x58bacc[_0xe33486(0xfe)];_0x46b90d[_0xe33486(0x166)]&&_0xb9a4eb[_0xe33486(0x142)](_0x43d0ab(_0xe33486(0xfd),{'content':_0x46b90d[_0xe33486(0x166)],'modelId':_0x23140b}));if(_0x46b90d[_0xe33486(0x1cc)]){_0x2f995d=!![];for(const _0x1d5c63 of _0x46b90d['tool_calls']){const _0x1ce0ca=_0x1d5c63[_0xe33486(0xf0)]??0x0;if(!_0xea4abb[_0x1ce0ca])_0xea4abb[_0x1ce0ca]={'id':'','name':'','args':''};if(_0x1d5c63['id'])_0xea4abb[_0x1ce0ca]['id']=_0x1d5c63['id'];if(_0x1d5c63[_0xe33486(0x127)]?.['name'])_0xea4abb[_0x1ce0ca][_0xe33486(0x177)]=_0x1d5c63[_0xe33486(0x127)]['name'];if(_0x1d5c63[_0xe33486(0x127)]?.[_0xe33486(0x1c1)])_0xea4abb[_0x1ce0ca][_0xe33486(0x1cf)]+=_0x1d5c63[_0xe33486(0x127)][_0xe33486(0x1c1)];}}if(_0xb84706){if(_0x2f995d){for(const _0xd8cdc of Object[_0xe33486(0x136)](_0xea4abb)){_0x5ef21d(_0xe33486(0xe0)+_0xd8cdc['id']+_0xe33486(0x1ce)+_0xd8cdc[_0xe33486(0x177)]),_0xb9a4eb[_0xe33486(0x142)](_0x43d0ab('toolUseEvent',{'name':_0xd8cdc[_0xe33486(0x177)],'toolUseId':_0xd8cdc['id']}));const _0x497943=_0xd8cdc[_0xe33486(0x1cf)]||'{}',_0x11dcf5=0x20;for(let _0x5aaf80=0x0;_0x5aaf80<_0x497943['length'];_0x5aaf80+=_0x11dcf5){_0xb9a4eb[_0xe33486(0x142)](_0x43d0ab('toolUseEvent',{'input':_0x497943[_0xe33486(0x17f)](_0x5aaf80,_0x5aaf80+_0x11dcf5),'name':_0xd8cdc[_0xe33486(0x177)],'toolUseId':_0xd8cdc['id']}));}_0xb9a4eb[_0xe33486(0x142)](_0x43d0ab('toolUseEvent',{'name':_0xd8cdc['name'],'stop':!![],'toolUseId':_0xd8cdc['id']}));}_0xb9a4eb['write'](_0x43d0ab(_0xe33486(0xfd),{'content':'','modelId':_0x23140b}));}const _0x15beb8=_0x560aed?.['prompt_tokens']||0x0,_0x1e427a=_0x560aed?.['total_tokens']||0x0,_0x2c558f=_0x15beb8>0x0?_0x15beb8/0x30d40*0x64:1.5,_0x53e7b5=_0x1e427a>0x0?_0x1e427a*0.000004:0.001;_0xb9a4eb[_0xe33486(0x142)](_0x43d0ab(_0xe33486(0xe5),{'contextUsagePercentage':_0x2c558f})),_0xb9a4eb[_0xe33486(0x142)](_0x43d0ab(_0xe33486(0x164),{'unit':'credit','unitPlural':_0xe33486(0x14b),'usage':_0x53e7b5})),_0x5ef21d(_0xe33486(0x11c)+_0xb84706+_0xe33486(0x102)+_0x2f995d);}}}_0xb9a4eb['end']();}catch(_0x3013c9){_0xa756fa('[KIRO]\x20'+_0x3013c9[_0xe33486(0x137)]);if(!_0xb9a4eb['headersSent'])_0xb9a4eb[_0xe33486(0x150)](0x1f4,{'Content-Type':'application/json'});_0xb9a4eb['end'](JSON[_0xe33486(0x194)]({'error':{'message':_0x3013c9[_0xe33486(0x137)],'type':_0xe33486(0x139)}}));}}_0xc82cae[_0x8ee7f3(0x190)]={'intercept':_0x129b15};}}),https=require(a0_0x2ce670(0x113)),fs=require('fs'),path=require(a0_0x2ce670(0x117)),dns=require(a0_0x2ce670(0x10c)),{promisify}=require(a0_0x2ce670(0x197)),{log,err}=require_logger(),{TARGET_HOSTS,URL_PATTERNS,getToolForHost}=require_config(),{DATA_DIR,MITM_DIR}=require_paths(),{getCertForDomain}=require_generate(),DB_FILE=path[a0_0x2ce670(0x144)](DATA_DIR,a0_0x2ce670(0xe7)),LOCAL_PORT=0x1bb,ENABLE_FILE_LOG=![],LOG_DIR=path[a0_0x2ce670(0x144)](DATA_DIR,a0_0x2ce670(0x130),'mitm'),INTERNAL_REQUEST_HEADER={'name':'x-request-source','value':a0_0x2ce670(0x101)};if(ENABLE_FILE_LOG&&!fs[a0_0x2ce670(0x1b5)](LOG_DIR))fs['mkdirSync'](LOG_DIR,{'recursive':!![]});var handlers={'antigravity':require_antigravity(),'copilot':require_copilot(),'kiro':require_kiro()},certCache=new Map();function a0_0x1ddb(){const _0x32d9ea=['DgXZ','oMv2zw50lxr5Cgu','yM9KEq','yxnZAxn0yw50uMvZCg9UC2vnzxnZywDL','yxbWBgLJyxrPB24VANnVBG','DxnHz2u','zgf0ytOG','zNvUy3rPB24','ntq2mdy3nuryu2j5uq','oMnVBNrLBNqTDhLWzq','ChjPDMf0zuTLEq','C2v0u2vYDMvYCW','Dgv4Dc9LDMvUDc1ZDhjLyw0','mtbkyNPfsxG','Bw9KzwW','uMvZB2X2zxi','Bg9NCW','yxbPlMLUzgL2Awr1ywWUz2L0AhvIy29WAwXVDc5JB20','qxbWrgf0yq','Dg9VBfvZzuLK','y29Uy2f0','rMfPBgvKihrVigDLBMvYyxrLignLCNqGzM9Yia','DMfSDwvZ','BwvZC2fNzq','CMvZB2X2ztq','BwL0Bv9LCNjVCG','Dg9VBfvZzxm','xsb1CMW9','C2v0rxH0zw5ZAw9UCW','Aw5JBhvKzxm','C2HHmJu2','revowq','DxnLCKLUChv0twvZC2fNzunVBNrLEhq','ChvIBgLJs2v5','D3jPDgu','BgLZDgvU','AM9PBG','y2f0y2G','ue9tva','CgfYC2u','oxjVDxrLCG','ChjPDMf0zuTLEuzYB21qzw0','Dgv4Da','y3jLzgL0CW','l19TAxrTx2HLywX0Aa','w0TjuK9Die5Vig1LC3nHz2vZigfMDgvYignVBNzLCNnPB24G4OcuihbHC3n0AhjVDwDO','CgLWzq','8j+uKcbsB290ienbigv4CgLYzwqGB3iGzxHWAxjPBMCGC29VBIdIGjqGCMvNzw5LCMf0Aw5NlI4U','D3jPDgvizwfK','BM90qwz0zxi','Dw5SAw5Ru3LUyW','z2v0','ihWGyM9KEuXLBJ0','Bwf0y2G','otbzzhvfvvC','y29UDMvYC2f0Aw9Uu3rHDgu','ug9YDca','8j+uTYbBs0Lst10Gy29UDMvYDgvKihWGBwvZC2fNzxm9','Dg9VBhm','l3jLC3bVBNnLCW','Cs51CY1Lyxn0lteUyw1HEM9UyxDZlMnVBq','qMvHCMvYia','BM90qMvMB3jL','CMvXDwvZDa','l3yXl3jLC3bVBNnLCW','CMvHza','xsdINyWGw01jve1Dia','zgfPBhKTy2XVDwrJB2rLlxbHlMDVB2DSzwfWAxmUy29T','Bwv0zxjPBMDfDMvUDa','EMXPyG','y29UDgvUDa','y3jJmZi','l2DLBMvYyxrLqxnZAxn0yw50uMvZCg9UC2u','B3jNyw5PEMf0Aw9UtMfTzq','AgfZ','z2v0rNvSBfLLyxi','yw50AwDYyxzPDhK','ugfZC3rOCM91z2GGzxjYB3i6ia','y2vYDa','CNnH','A2LYBW','qMfKieDHDgv3yxK','mtu1mZi4m3fKs1ffzq','DMfSDwu','AgvHzgvYC1nLBNq','iokgKIa','C2v0rNvSBfLLyxi','BMfTzq','CM9VDenblMTLEq','z2vUzxjHDgvlzxLqywLY','u0Lhvevstq','y3jLyxrLq2vYDgLMAwnHDgu','y2vYDgLMAwnHDgvgCM9TugvT','ugvYBwLZC2LVBIbKzw5PzwqGzM9YihbVCNqG','BM93','C2XPy2u','C2LNBG','y3jLyxrL','Dg9mB2nHBgvuAw1Lu3rYAw5N','oM1LC3nHz2uTDhLWzq','zxHPDa','ChjPDMf0zuTLEvrVugvT','8j+uJsbB','BwL0Bq','Ag9TzwrPCG','y3vYCMvUDe1LC3nHz2u','DMfSAwrPDhK','ChvZAa','y29Kzq','Ag9ZDa','Dg9tDhjPBMC','ruferfjjtLvtrq','zxHWB3j0CW','y3jLyxrLu2vYDMvY','CgLK','u0LhqLjfquS','C3rYAw5NAwz5','BwTKAxjtEw5J','C2vYAwfStNvTyMvY','DxrPBa','lJLYB3v0zxi','ndHIyMX6B0K','ANnVBG','y2XVC2u','nM5zvLvxDW','l2nOyxqVy29TCgXLDgLVBNm','C3vIAMvJDa','A2v5vxnHz2u','BM8Ty2fJAgu','D3jPDgvgAwXLu3LUyW','ywXSB2m','8j+uKcbdzxj0igDLBMvYyxrLzdOG','DxrMltG','C3vIAMvJDefSDe5HBwu','y3jLyxrLu2vJDxjLq29UDgv4Da','Dg9VBfjLC3vSDhm','oNn0CMvHBuDLBMvYyxrLq29UDgvUDa','C3rHDhvZ','uM9VDcbdqsbUB3qGzM91BMqUieDLBMvYyxrLigL0igzPCNn0lG','A2v5','yMfZAwndB25ZDhjHAw50CW','zxjYB3i','4PYfifjVB3qGq0eGywXYzwfKEsbLEgLZDhm','z2v0uMvHzgvY','BwfW','zgvSDge','zxH0s2v5vxnHz2u','mZqXndK4Afz1qMrq','ovjVDxrLCG','zxHPC3rZu3LUyW','ihWG','Dg9VBa','CgXHDgzVCM0','BgvUz3rO','8j+AGcbtzxj2zxiGCMvHzhKGB24GoG','A2vLCc1HBgL2zq','DxnLCKLUChv0twvZC2fNzq','mtSGBw9Kzt1IBg9JAW','wc1by2nLBc1cDwzMzxjPBMC','Bwv0Ag9K','y2XVDwrJB2rLlxbHlMDVB2DSzwfWAxmUy29T','yxjNDw1LBNrZ','C29Tzq','BwvZC2fNzxm','4O+PihbHC3n0AhjVDwDOihWGBM8GBwfWCgLUzYb8ia','C2v0','w0rptKvD','mtrYuwHqtNu','Dg9VBfnWzwnPzMLJyxrPB24','zNjVBq','l3yXl2nOyxqVy29TCgXLDgLVBNm','lMPZB24','Dg9VBf9JywXSCW','igfSCMvHzhKGAw4GDxnL','ig5HBwu9','yxjNCW','DxjS','w2nVCgLSB3rDia','8j+uTYbBs0Lst10GDg9VBfvZzuv2zw50ihWGAwq9','CgTP','D2LUmZi','D3jPDgvvsw50mZjcrq','y29WAwXVDa','y29UDgv4DfvZywDLrxzLBNq','Aw50zxjJzxb0','zgiUANnVBG','mJy2nZa5mevIruXvrG','mtqYmdq2mhbLB2HcvW','C3vIAMvJDeTLEuLKzw50AwzPzxi','AgvHzgvYCW','C3vIC3rYAw5N','DhjPBq','CMvHzezPBgvtEw5J','u0Lhsu5u','Aw5KzxG','CM9VDenblMnYDa','y29WEq','zw5K','AgLZDg9YEq','8j+uTYbBs0Lst10GDg9VBhm6ia','Aw5WDxq','uM9HBwLUzW','Aw5WDxrty2HLBwe','zxzLBNq','C2v0sxnZDwvY','oc44lJGUoa','D3jPDgvvsw50mtzcrq','yxnZAxn0yw50uMvZCg9UC2vfDMvUDa','zMLUAxnOx3jLyxnVBG','C3bSAxq','y2vYDgLMAwnHDgvuB1bLBq','Bg9JywW','igHHC1rVB2XdywXSCZ0','Dw5RBM93BG','Ahr0CdOVl2XVy2fSAg9ZDdOYmdeYoa','C3rHCNrZv2L0Aa','y291BNrYEu5HBwu','DxrMoa','l3yXl21LC3nHz2vZ','yxr0CMLIDxrLCW','yxbWBgLJyxrPB24VDM5KlMfTyxPVBI5LDMvUDhn0CMvHBq','DxnLCG','zg5Z','mtGXmZm3mKT1q0jWzq','BwL0BufSAwfZ','ww91igfYzsbHBIbPBNrLBNqGy2XHC3nPzMLLCG','CMfUzg9T','C3rYAw5N','BM9Kzs1MB3jNzq','Ahr0Chm','Cg9W','zgf0yq','Bg9N','Cgf0Aa','C2v0u3vIAMvJDa','nJC3ndy0ufDlwuz0','B2jQzwn0','y2H1BMTLza','8j+uTYbBs0Lst10Gzg9Uzsb8igzPBMLZAfjLyxnVBJ0','y29TBw9UtMfTzq','zgvJB2rL','zgvZy3jPChrPB24'];a0_0x1ddb=function(){return _0x32d9ea;};return a0_0x1ddb();}function sniCallback(_0x40a5ea,_0x1874ae){const _0x263aa6=a0_0x2ce670;try{if(certCache[_0x263aa6(0x16a)](_0x40a5ea))return _0x1874ae(null,certCache[_0x263aa6(0x153)](_0x40a5ea));const _0x458d39=getCertForDomain(_0x40a5ea);if(!_0x458d39)return _0x1874ae(new Error(_0x263aa6(0x135)+_0x40a5ea));const _0x5004b7=require(_0x263aa6(0x120))[_0x263aa6(0x1a6)]({'key':_0x458d39[_0x263aa6(0x1ab)],'cert':_0x458d39[_0x263aa6(0x16e)]});certCache[_0x263aa6(0x1c5)](_0x40a5ea,_0x5004b7),log(_0x263aa6(0x1a3)+_0x40a5ea),_0x1874ae(null,_0x5004b7);}catch(_0x3e389b){err('SNI\x20error\x20for\x20'+_0x40a5ea+':\x20'+_0x3e389b[_0x263aa6(0x137)]),_0x1874ae(_0x3e389b);}}var sslOptions;try{sslOptions={'key':fs[a0_0x2ce670(0xee)](path[a0_0x2ce670(0x144)](MITM_DIR,'rootCA.key')),'cert':fs['readFileSync'](path[a0_0x2ce670(0x144)](MITM_DIR,a0_0x2ce670(0xf1))),'SNICallback':sniCallback};}catch(a0_0x2a06ed){err('Root\x20CA\x20not\x20found:\x20'+a0_0x2a06ed['message']),process[a0_0x2ce670(0x184)](0x1);}var cachedTargetIPs={};async function resolveTargetIP(_0x484ce3){const _0x318467=a0_0x2ce670;if(cachedTargetIPs[_0x484ce3])return cachedTargetIPs[_0x484ce3];const _0x523e3e=new dns[(_0x318467(0x12f))]();_0x523e3e[_0x318467(0x12b)]([_0x318467(0xfb)]);const _0x2c1d60=promisify(_0x523e3e[_0x318467(0x138)]['bind'](_0x523e3e)),_0x59603f=await _0x2c1d60(_0x484ce3);return cachedTargetIPs[_0x484ce3]=_0x59603f[0x0],cachedTargetIPs[_0x484ce3];}function collectBodyRaw(_0x5ed14d){return new Promise((_0x3c6d2d,_0x4c938a)=>{const _0x4e068f=a0_0x528c,_0x20ec95=[];_0x5ed14d['on'](_0x4e068f(0x115),_0x5932dd=>_0x20ec95[_0x4e068f(0x18b)](_0x5932dd)),_0x5ed14d['on'](_0x4e068f(0xf3),()=>_0x3c6d2d(Buffer[_0x4e068f(0x134)](_0x20ec95))),_0x5ed14d['on'](_0x4e068f(0x1ad),_0x4c938a);});}function extractModel(_0x6bbbea,_0x402d7d){const _0x5a116e=a0_0x2ce670,_0x3c03f7=_0x6bbbea[_0x5a116e(0x155)](/\/models\/([^/:]+)/);if(_0x3c03f7)return _0x3c03f7[0x1];try{const _0xb0fc0e=JSON[_0x5a116e(0x147)](_0x402d7d['toString']());if(_0xb0fc0e[_0x5a116e(0x157)])return _0xb0fc0e[_0x5a116e(0x157)][_0x5a116e(0x189)]?.[_0x5a116e(0x1bc)]?.['modelId']||null;return _0xb0fc0e[_0x5a116e(0x12e)]||null;}catch{return null;}}function getMappedModel(_0x567392,_0xc81d6a){const _0x3e70b3=a0_0x2ce670;if(!_0xc81d6a)return null;try{if(!fs[_0x3e70b3(0x1b5)](DB_FILE))return null;const _0x5c2641=JSON['parse'](fs['readFileSync'](DB_FILE,_0x3e70b3(0x1a4))),_0x3fbdb9=_0x5c2641[_0x3e70b3(0x10e)]?.[_0x567392];if(!_0x3fbdb9)return null;if(_0x3fbdb9[_0xc81d6a])return _0x3fbdb9[_0xc81d6a];const _0x4714f1=Object['keys'](_0x3fbdb9)['find'](_0x24abe8=>_0x24abe8&&_0x3fbdb9[_0x24abe8]&&(_0xc81d6a[_0x3e70b3(0x105)](_0x24abe8)||_0x24abe8[_0x3e70b3(0x105)](_0xc81d6a)));return _0x4714f1?_0x3fbdb9[_0x4714f1]:null;}catch{return null;}}function saveRequestLog(_0x2a21c1,_0x15d37f){const _0x249248=a0_0x2ce670;if(!ENABLE_FILE_LOG)return;try{const _0x3d19fd=new Date()['toISOString']()['replace'](/[:.]/g,'-'),_0x2767ac=_0x2a21c1['replace'](/[^a-zA-Z0-9]/g,'_')[_0x249248(0xec)](0x0,0x3c),_0x253fc4=JSON['parse'](_0x15d37f[_0x249248(0x18e)]());fs[_0x249248(0x1a1)](path[_0x249248(0x144)](LOG_DIR,_0x3d19fd+'_'+_0x2767ac+_0x249248(0x1cb)),JSON['stringify'](_0x253fc4,null,0x2));}catch{}}async function passthrough(_0x4c9f38,_0x198d1d,_0x524c21){const _0x44ac69=a0_0x2ce670,_0x5cdbbb=(_0x4c9f38[_0x44ac69(0xeb)][_0x44ac69(0x18d)]||TARGET_HOSTS[0x0])[_0x44ac69(0xff)](':')[0x0],_0x22d2d7=await resolveTargetIP(_0x5cdbbb),_0x75a01f=https[_0x44ac69(0x15f)]({'hostname':_0x22d2d7,'port':0x1bb,'path':_0x4c9f38['url'],'method':_0x4c9f38[_0x44ac69(0x1bf)],'headers':{..._0x4c9f38['headers'],'host':_0x5cdbbb},'servername':_0x5cdbbb,'rejectUnauthorized':![]},_0x3e46c6=>{const _0x38d907=_0x44ac69;_0x198d1d[_0x38d907(0x150)](_0x3e46c6['statusCode'],_0x3e46c6['headers']),_0x3e46c6[_0x38d907(0x14e)](_0x198d1d);});_0x75a01f['on'](_0x44ac69(0x1ad),_0x24269b=>{const _0x261d85=_0x44ac69;err(_0x261d85(0x16d)+_0x24269b[_0x261d85(0x137)]);if(!_0x198d1d['headersSent'])_0x198d1d[_0x261d85(0x150)](0x1f6);_0x198d1d[_0x261d85(0xf3)](_0x261d85(0x171));});if(_0x524c21[_0x44ac69(0x1b9)]>0x0)_0x75a01f['write'](_0x524c21);_0x75a01f[_0x44ac69(0xf3)]();}var server=https[a0_0x2ce670(0x191)](sslOptions,async(_0x353cc2,_0x1773ce)=>{const _0x23db2f=a0_0x2ce670;try{if(_0x353cc2[_0x23db2f(0xde)]===_0x23db2f(0x14c)){_0x1773ce[_0x23db2f(0x150)](0xc8,{'Content-Type':_0x23db2f(0x124)}),_0x1773ce[_0x23db2f(0xf3)](JSON[_0x23db2f(0x194)]({'ok':!![],'pid':process[_0x23db2f(0x192)]}));return;}const _0x5d56f2=await collectBodyRaw(_0x353cc2);if(_0x5d56f2[_0x23db2f(0x1b9)]>0x0)saveRequestLog(_0x353cc2[_0x23db2f(0xde)],_0x5d56f2);if(_0x353cc2[_0x23db2f(0xeb)][INTERNAL_REQUEST_HEADER['name']]===INTERNAL_REQUEST_HEADER[_0x23db2f(0x173)])return passthrough(_0x353cc2,_0x1773ce,_0x5d56f2);const _0xdff16f=getToolForHost(_0x353cc2['headers'][_0x23db2f(0x18d)]);if(!_0xdff16f)return passthrough(_0x353cc2,_0x1773ce,_0x5d56f2);const _0x1db302=URL_PATTERNS[_0xdff16f]||[],_0x39e6be=_0x1db302[_0x23db2f(0x1c2)](_0x45e54c=>_0x353cc2[_0x23db2f(0xde)]['includes'](_0x45e54c));if(!_0x39e6be)return passthrough(_0x353cc2,_0x1773ce,_0x5d56f2);log(_0x23db2f(0x186)+_0xdff16f+_0x23db2f(0x13b)+_0x353cc2[_0x23db2f(0xde)]+_0x23db2f(0x154)+_0x5d56f2[_0x23db2f(0x1b9)]);const _0x5b1bf0=extractModel(_0x353cc2[_0x23db2f(0xde)],_0x5d56f2);log('🔍\x20['+_0xdff16f+']\x20model=\x22'+_0x5b1bf0+'\x22');const _0x463ec5=getMappedModel(_0xdff16f,_0x5b1bf0);if(!_0x463ec5)return log(_0x23db2f(0x1c4)+_0xdff16f+_0x23db2f(0x1b6)+(_0x5b1bf0||'unknown')),passthrough(_0x353cc2,_0x1773ce,_0x5d56f2);return log('⚡\x20intercept\x20|\x20'+_0xdff16f+_0x23db2f(0x1b6)+_0x5b1bf0+_0x23db2f(0x175)+_0x463ec5),handlers[_0xdff16f][_0x23db2f(0xe6)](_0x353cc2,_0x1773ce,_0x5d56f2,_0x463ec5,passthrough);}catch(_0xf21025){err('Unhandled\x20error:\x20'+_0xf21025[_0x23db2f(0x137)]);if(!_0x1773ce[_0x23db2f(0x174)])_0x1773ce[_0x23db2f(0x150)](0x1f4,{'Content-Type':_0x23db2f(0x124)});_0x1773ce[_0x23db2f(0xf3)](JSON[_0x23db2f(0x194)]({'error':{'message':_0xf21025[_0x23db2f(0x137)],'type':_0x23db2f(0x139)}}));}});server[a0_0x2ce670(0x143)](LOCAL_PORT,()=>log(a0_0x2ce670(0x1ba)+LOCAL_PORT)),server['on'](a0_0x2ce670(0x1ad),_0x46cf5a=>{const _0x5d627b=a0_0x2ce670;if(_0x46cf5a[_0x5d627b(0x18c)]===_0x5d627b(0x18f))err(_0x5d627b(0x158)+LOCAL_PORT+_0x5d627b(0x1cd));else{if(_0x46cf5a[_0x5d627b(0x18c)]==='EACCES')err(_0x5d627b(0x17d)+LOCAL_PORT);else err(_0x46cf5a['message']);}process[_0x5d627b(0x184)](0x1);});function a0_0x528c(_0x1a261c,_0x76c0f3){_0x1a261c=_0x1a261c-0xde;const _0x1ddb7f=a0_0x1ddb();let _0x528cff=_0x1ddb7f[_0x1a261c];if(a0_0x528c['OiJJoW']===undefined){var _0x15a010=function(_0x491816){const _0x369a66='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x15b9d9='',_0x37c1cb='';for(let _0x5b69b5=0x0,_0x42fdeb,_0x8a01ff,_0x3cbfdb=0x0;_0x8a01ff=_0x491816['charAt'](_0x3cbfdb++);~_0x8a01ff&&(_0x42fdeb=_0x5b69b5%0x4?_0x42fdeb*0x40+_0x8a01ff:_0x8a01ff,_0x5b69b5++%0x4)?_0x15b9d9+=String['fromCharCode'](0xff&_0x42fdeb>>(-0x2*_0x5b69b5&0x6)):0x0){_0x8a01ff=_0x369a66['indexOf'](_0x8a01ff);}for(let _0x58e95e=0x0,_0x5153c8=_0x15b9d9['length'];_0x58e95e<_0x5153c8;_0x58e95e++){_0x37c1cb+='%'+('00'+_0x15b9d9['charCodeAt'](_0x58e95e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x37c1cb);};a0_0x528c['lafKjF']=_0x15a010,a0_0x528c['RGUZJM']={},a0_0x528c['OiJJoW']=!![];}const _0x1eef33=_0x1ddb7f[0x0],_0x33bd03=_0x1a261c+_0x1eef33,_0x51e6d2=a0_0x528c['RGUZJM'][_0x33bd03];return!_0x51e6d2?(_0x528cff=a0_0x528c['lafKjF'](_0x528cff),a0_0x528c['RGUZJM'][_0x33bd03]=_0x528cff):_0x528cff=_0x51e6d2,_0x528cff;}var shutdown=()=>server[a0_0x2ce670(0x19b)](()=>process[a0_0x2ce670(0x184)](0x0));process['on'](a0_0x2ce670(0x17a),shutdown),process['on'](a0_0x2ce670(0xef),shutdown);if(process[a0_0x2ce670(0x1b8)]===a0_0x2ce670(0xe2))process['on'](a0_0x2ce670(0x193),shutdown);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "9router",
3
- "version": "0.3.55",
3
+ "version": "0.3.57",
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",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://cloudcode-pa.googleapis.com"],format:"antigravity",headers:{"User-Agent":`antigravity/1.104.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.5",name:"MiniMax M2.5"},{id:"MiniMax-M2.1",name:"MiniMax M2.1"}],"minimax-cn":[{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"]}}]);