@ltgiang/9router 0.5.51 → 0.5.52

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 (381) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +7 -7
  3. package/app/.next-cli-build/build-manifest.json +2 -2
  4. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  5. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  30. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  31. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  32. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  33. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  34. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  35. package/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  36. package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  37. package/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  38. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  39. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  40. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  41. package/app/.next-cli-build/server/app/_not-found.rsc +4 -4
  42. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +4 -4
  43. package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  44. package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +4 -4
  45. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  46. package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  47. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  48. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  49. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  50. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  51. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  52. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  53. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js.nft.json +1 -1
  54. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  55. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  56. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  57. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  58. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  59. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  60. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  61. package/app/.next-cli-build/server/app/api/combos/reorder/route.js.nft.json +1 -1
  62. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  63. package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  64. package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  65. package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  66. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  67. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  68. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  69. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  70. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  71. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  72. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  73. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  74. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  75. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  76. package/app/.next-cli-build/server/app/api/models/order/route.js.nft.json +1 -1
  77. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  78. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  79. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  80. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  81. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
  82. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  83. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  84. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  85. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  86. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
  87. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  88. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
  89. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  90. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  91. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  92. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  93. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  94. package/app/.next-cli-build/server/app/api/providers/[id]/connections/disabled/route.js.nft.json +1 -1
  95. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  96. package/app/.next-cli-build/server/app/api/providers/[id]/pool/pull/route.js.nft.json +1 -1
  97. package/app/.next-cli-build/server/app/api/providers/[id]/pool/push/route.js.nft.json +1 -1
  98. package/app/.next-cli-build/server/app/api/providers/[id]/pool/route.js.nft.json +1 -1
  99. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  100. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  101. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  102. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  103. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  104. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  105. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  106. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  107. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  108. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  109. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  110. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  111. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  112. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  113. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  114. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  115. package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  116. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  117. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  118. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  119. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  120. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  121. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  122. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  123. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  124. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  125. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  126. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  127. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  128. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
  129. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  130. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  131. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  132. package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
  133. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  134. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  135. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  136. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  137. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  138. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  139. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  140. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  141. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  142. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  143. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  144. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  145. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  146. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  147. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  148. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  149. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  150. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  151. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  152. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  153. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  154. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  155. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  156. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  157. package/app/.next-cli-build/server/app/callback.html +1 -1
  158. package/app/.next-cli-build/server/app/callback.rsc +4 -4
  159. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +4 -4
  160. package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  161. package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +4 -4
  162. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  163. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  164. package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  165. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  166. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +6 -6
  167. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  168. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  169. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  170. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  171. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
  172. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  173. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +4 -4
  174. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  175. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  176. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +6 -6
  177. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  178. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  179. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  180. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  181. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
  182. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  183. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
  184. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  185. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  186. package/app/.next-cli-build/server/app/dashboard/combos.rsc +6 -6
  187. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  188. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  189. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  190. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  191. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
  192. package/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  193. package/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
  194. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  195. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  196. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +6 -6
  197. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  198. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  199. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  200. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  201. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
  202. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  203. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
  204. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  205. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  206. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +6 -6
  207. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  208. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  209. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  210. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  211. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  212. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +6 -6
  213. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  214. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +4 -4
  215. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  216. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  217. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +6 -6
  218. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  219. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  220. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  221. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  222. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
  223. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  224. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +4 -4
  225. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  226. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  227. package/app/.next-cli-build/server/app/dashboard/profile.rsc +6 -6
  228. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  229. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  230. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  231. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  232. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
  233. package/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  234. package/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
  235. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  236. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  237. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +6 -6
  238. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  239. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  240. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  241. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  242. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  243. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
  244. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  245. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
  246. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  247. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  248. package/app/.next-cli-build/server/app/dashboard/providers.rsc +6 -6
  249. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  250. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  251. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  252. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  253. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
  254. package/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  255. package/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
  256. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  257. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  258. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +6 -6
  259. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  260. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  261. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  262. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  263. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
  264. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  265. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +4 -4
  266. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  267. package/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  268. package/app/.next-cli-build/server/app/dashboard/quota.rsc +7 -7
  269. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  270. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  271. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  272. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  273. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
  274. package/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  275. package/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +4 -4
  276. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  277. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  278. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  279. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +4 -4
  280. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  281. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  282. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
  283. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  284. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  285. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  286. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  287. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  288. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  289. package/app/.next-cli-build/server/app/dashboard/skills.rsc +6 -6
  290. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  291. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  292. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  293. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  294. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +6 -6
  295. package/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  296. package/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +4 -4
  297. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
  298. package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  299. package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +6 -6
  300. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
  301. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  302. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  303. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  304. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +6 -6
  305. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  306. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +4 -4
  307. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
  308. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  309. package/app/.next-cli-build/server/app/dashboard/translator.rsc +6 -6
  310. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  311. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  312. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  313. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  314. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
  315. package/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  316. package/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
  317. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  318. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  319. package/app/.next-cli-build/server/app/dashboard/usage.rsc +6 -6
  320. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  321. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  322. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  323. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  324. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
  325. package/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  326. package/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
  327. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  328. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  329. package/app/.next-cli-build/server/app/dashboard.rsc +6 -6
  330. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  331. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  332. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  333. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +6 -6
  334. package/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  335. package/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +4 -4
  336. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  337. package/app/.next-cli-build/server/app/index.html +1 -1
  338. package/app/.next-cli-build/server/app/index.rsc +4 -4
  339. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  340. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +4 -4
  341. package/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  342. package/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +4 -4
  343. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  344. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  345. package/app/.next-cli-build/server/app/landing.html +1 -1
  346. package/app/.next-cli-build/server/app/landing.rsc +4 -4
  347. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
  348. package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  349. package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +4 -4
  350. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  351. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  352. package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  353. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  354. package/app/.next-cli-build/server/app/login.html +1 -1
  355. package/app/.next-cli-build/server/app/login.rsc +5 -5
  356. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +5 -5
  357. package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  358. package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +4 -4
  359. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  360. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  361. package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  362. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  363. package/app/.next-cli-build/server/app-paths-manifest.json +7 -7
  364. package/app/.next-cli-build/server/chunks/238.js +1 -1
  365. package/app/.next-cli-build/server/chunks/4746.js +1 -1
  366. package/app/.next-cli-build/server/chunks/4827.js +1 -1
  367. package/app/.next-cli-build/server/chunks/5330.js +5 -5
  368. package/app/.next-cli-build/server/chunks/8238.js +1 -1
  369. package/app/.next-cli-build/server/chunks/8668.js +1 -1
  370. package/app/.next-cli-build/server/chunks/8895.js +1 -1
  371. package/app/.next-cli-build/server/chunks/8914.js +1 -1
  372. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  373. package/app/.next-cli-build/server/pages/404.html +1 -1
  374. package/app/.next-cli-build/server/pages/500.html +1 -1
  375. package/app/.next-cli-build/static/chunks/{1321-b1f460dc2a52f986.js → 1321-066a2dfbc2d8f8c7.js} +1 -1
  376. package/app/cli/.build-home/.9router/db/backups/{upgrade-0.5.46-to-0.5.47-0.5.47-20260706-143030 → upgrade-0.5.50-to-0.5.51-0.5.51-20260706-164829}/data.sqlite +0 -0
  377. package/app/cli/.build-home/.9router/db/data.sqlite +0 -0
  378. package/app/package.json +1 -1
  379. package/package.json +1 -1
  380. /package/app/.next-cli-build/static/{dlIiEkrEMHPJ4Vd8Ldo5_ → 2JUIic2-2R3P-pgfrzRFx}/_buildManifest.js +0 -0
  381. /package/app/.next-cli-build/static/{dlIiEkrEMHPJ4Vd8Ldo5_ → 2JUIic2-2R3P-pgfrzRFx}/_ssgManifest.js +0 -0
@@ -344,7 +344,7 @@ var getComputedStyle = __getComputedStyle;
344
344
  }
345
345
  }`,variables:{bot:q,query:r?.content||""}},t={"Content-Type":"application/json","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36",Accept:"application/json",Referer:`${f}/`,Origin:f,Cookie:`p-b=${n}`};try{c=await fetch(g,{method:"POST",headers:t,body:JSON.stringify(s),signal:k})}catch(a){return(0,e.DV)(502,`Poe fetch failed: ${a instanceof Error?a.message:"unknown"}`,i,g)}if(!c.ok){let a=await c.text().catch(()=>"");return(0,e.DV)(c.status,`Poe error: ${a}`,i,g)}let u=(((await c.json()).data??{}).chatWithBot??{}).text||"";if(!l)return{response:new Response(JSON.stringify({id:`chatcmpl-poe-${Date.now()}`,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:p,choices:[{index:0,message:{role:"assistant",content:u},finish_reason:"stop"}]}),{headers:{"Content-Type":"application/json"}}),url:g,headers:t,transformedBody:s};let v=new TextEncoder,w={id:`chatcmpl-poe-${Date.now()}`,object:"chat.completion.chunk",created:Math.floor(Date.now()/1e3),model:p,choices:[{index:0,delta:{content:u},finish_reason:null}]};return{response:new Response(new ReadableStream({start(a){a.enqueue(v.encode(`data: ${JSON.stringify(w)}
346
346
 
347
- `)),a.enqueue(v.encode("data: [DONE]\n\n")),a.close()}}),{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}}),url:g,headers:t,transformedBody:s}}}},68085:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{D3:()=>l,Xb:()=>k});var e=c(83237),f=a([e]);async function g(a){try{let b=(await a.context().cookies()).find(a=>"cf_clearance"===a.name);return!!b?.value}catch{return!1}}async function h(a){let b=Date.now();for(;Date.now()-b<6e4;){if(await g(a))return;await a.waitForTimeout(500)}throw Error("Turnstile challenge not solved within 60000ms")}async function i(a){let b=(await a.context().cookies()).find(a=>"cf_clearance"===a.name);if(!b?.value)throw Error("cf_clearance cookie not found after challenge solve");return b.value}async function j(a){let b=a?.headless!==!1;a?.timeout;let c=null,d=null;try{c=await e.chromium.launch({headless:b});let a=await c.newContext({userAgent:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36",viewport:{width:1280,height:720},ignoreHTTPSErrors:"true"===process.env.OMNIROUTE_TURNSTILE_IGNORE_TLS_ERRORS});return d=await a.newPage(),await d.goto("https://claude.ai",{waitUntil:"domcontentloaded"}),await h(d),{cfClearance:await i(d),timestamp:Date.now()}}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to solve Turnstile: ${a}`)}finally{d&&await d.close().catch(()=>{}),c&&await c.close().catch(()=>{})}}e=(f.then?(await f)():f)[0];let m=new Map;async function k(a){let b="claude-cf-clearance",c=m.get(b);if(c&&!a?.force&&c.expiresAt>Date.now()+3e5)return c.token;let d=await j({headless:a?.headless!==!1});return m.set(b,{token:d.cfClearance,expiresAt:Date.now()+33e5}),d.cfClearance}function l(){let a=m.get("claude-cf-clearance");if(!a)return{hasCached:!1};let b=Math.max(0,a.expiresAt-Date.now());return{hasCached:!0,expiresIn:b}}d()}catch(a){d(a)}})},69071:(a,b,c)=>{c.d(b,{Vr:()=>p});var d=c(77598),e=c(48161),f=c(97510),g=c(85376),h=c(47774);let i="mimocode-cli-free",j="You are MiMoCode, an interactive CLI tool that helps users with software engineering tasks.";function k(a){let b=a.messages;return!Array.isArray(b)||b.some(a=>null!=a&&"object"==typeof a&&"system"===a.role&&"string"==typeof a.content&&a.content.includes(j))?a:{...a,messages:[{role:"system",content:j},...b]}}let l=["Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36","Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36"];function m(a){return!(a.cooldownUntil>Date.now())&&!!(a.jwt&&a.expiresAt-Date.now()>3e5)}let n=new Map;async function o(a,b,c,d){let e=n.get(b);if(e)return e;let f=`${a}/api/free-ai/bootstrap`,g=new AbortController,i=setTimeout(()=>g.abort(),15e3),j=c?()=>g.abort(c.reason):null;c&&j&&c.addEventListener("abort",j,{once:!0});let k=(async()=>{try{let a=d?await (0,h.fetch)(f,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client:b}),signal:g.signal,dispatcher:d}):await fetch(f,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client:b}),signal:g.signal});if(!a.ok){let b=await a.text().catch(()=>"");throw Error(`Bootstrap failed: ${a.status} ${b.slice(0,200)}`)}let c=await a.json();if(!c.jwt)throw Error("Bootstrap response missing jwt field");return{jwt:c.jwt,expiresAt:function(a){try{let b=a.split(".");if(b.length<2)return Date.now()+3e6;return(JSON.parse(Buffer.from(b[1],"base64url").toString()).exp??Math.floor(Date.now()/1e3)+3e3)*1e3}catch{return Date.now()+3e6}}(c.jwt)}}finally{clearTimeout(i),c&&j&&c.removeEventListener("abort",j),n.delete(b)}})();return n.set(b,k),k}class p extends f.Hv{static{this.encoder=new TextEncoder}constructor(){super("mimocode",{format:"openai"}),this.accounts=[],this.nextAccountIdx=0,this.proxyUrlMap=new Map,this.baseUrl=this.getBaseUrls()[0]||"https://api.xiaomimimo.com",this.accounts.push({fingerprint:function(){let a=e.hostname(),b=e.platform(),c=e.arch(),f=function(){try{let a=e.cpus();if(a.length>0&&a[0].model)return a[0].model.trim()}catch{}return"unknown-cpu"}(),g="unknown-user";try{g=e.userInfo().username}catch{}return d.createHash("sha256").update(`${a}|${b}|${c}|${f}|${g}`).digest("hex")}(),jwt:"",expiresAt:0,cooldownUntil:0,consecutiveFails:0,proxy:null})}getProxyDispatcher(a){let b=this.proxyUrlMap.get(a);if(b)return(0,g.I_)(b)}fetchWithProxy(a,b,c){let d=this.getProxyDispatcher(c);return d?(0,h.fetch)(a,{...b,dispatcher:d}):fetch(a,b)}syncAccountsFromCredentials(a){let b=a?.providerSpecificData,c=b?.fingerprints,d=b?.accountProxies;if(Array.isArray(d)){for(let a of d)if(a?.fingerprint&&a?.proxy?.host){let{type:b="socks5",host:c,port:d,username:e,password:f}=a.proxy,g=d??("socks5"===b?1080:8080),h=e?`${encodeURIComponent(e)}:${f?encodeURIComponent(f):""}@`:"";this.proxyUrlMap.set(a.fingerprint,`${b}://${h}${c}:${g}`)}}if(Array.isArray(c)){let a=new Set(this.accounts.map(a=>a.fingerprint));for(let b of c)"string"!=typeof b||a.has(b)||(this.accounts.push({fingerprint:b,jwt:"",expiresAt:0,cooldownUntil:0,consecutiveFails:0,proxy:null}),a.add(b))}let e=Array.isArray(d)?new Map(d.map(a=>[a.fingerprint,a.proxy])):null;for(let a of this.accounts)if(e){let b=e.get(a.fingerprint);a.proxy=void 0!==b?b??null:null}else a.proxy=null}async getJwtForAccount(a,b){if(m(a))return a.jwt;let c=this.getProxyDispatcher(a.fingerprint),d=await o(this.baseUrl,a.fingerprint,b,c);return a.jwt=d.jwt,a.expiresAt=d.expiresAt,a.jwt}pickAccount(){for(let a=0;a<this.accounts.length;a++){let b=(this.nextAccountIdx+a)%this.accounts.length,c=this.accounts[b];if(m(c))return this.nextAccountIdx=(b+1)%this.accounts.length,c}let a=this.nextAccountIdx%this.accounts.length;return this.nextAccountIdx=(this.nextAccountIdx+1)%this.accounts.length,this.accounts[a]}markCooldown(a){a.consecutiveFails++;let b=Math.min(5e3*Math.pow(2,a.consecutiveFails-1),6e4);a.cooldownUntil=Date.now()+b+1e3*Math.random()}markSuccess(a){a.consecutiveFails=0}buildUrl(a,b,c=0,d){return`${this.baseUrl.replace(/\/$/,"")}/api/free-ai/openai/chat`}buildHeaders(a,b=!0,c,d){let e={"Content-Type":"application/json","X-Mimo-Source":i,"User-Agent":l[Math.floor(Math.random()*l.length)]};return b&&(e.Accept="text/event-stream, application/json"),e}transformRequest(a,b,c,d){if("object"==typeof b&&null!==b){let c;return k({...b,model:(c=a.lastIndexOf("/"))>=0?a.slice(c+1):a})}return b}async testConnection(a,b,c){try{this.syncAccountsFromCredentials(a);let c=this.accounts[0],d=await this.getJwtForAccount(c,b),e=await this.fetchWithProxy(this.buildUrl("mimo-auto",!1),{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${d}`,"X-Mimo-Source":i},body:JSON.stringify(k({model:"mimo-auto",messages:[{role:"user",content:"ping"}],stream:!1})),signal:b??void 0},c.fingerprint);return 200===e.status}catch{return c?.warn?.("MIMOCODE","testConnection network error"),!1}}async execute(a){let{model:b,stream:c,body:d,signal:e,log:f}=a,g=p.encoder;if(e?.aborted)return{response:new Response(g.encode(JSON.stringify({error:{message:"Request aborted",type:"abort",code:"ABORTED"}})),{status:499,headers:{"Content-Type":"application/json"}}),url:this.buildUrl(b,c),headers:this.buildHeaders(a.credentials,c),transformedBody:d};let h=this.buildUrl(b,c),i=this.transformRequest(b,d,c,a.credentials);this.syncAccountsFromCredentials(a.credentials);for(let b=0;b<this.accounts.length;b++){let j=this.pickAccount();try{let b=await this.getJwtForAccount(j,e),d=this.buildHeaders(a.credentials,c);d.Authorization=`Bearer ${b}`;let g=await this.fetchWithProxy(h,{method:"POST",headers:d,body:JSON.stringify(i),signal:e??void 0},j.fingerprint);if(401===g.status||403===g.status){f?.warn?.("MIMOCODE",`Auth failed (${g.status}) on account ${j.fingerprint.slice(0,8)}…`),j.jwt="",j.expiresAt=0,j.consecutiveFails=0;let a=await this.getJwtForAccount(j,e);d.Authorization=`Bearer ${a}`,g=await this.fetchWithProxy(h,{method:"POST",headers:d,body:JSON.stringify(i),signal:e??void 0},j.fingerprint)}if(429===g.status){this.markCooldown(j),f?.warn?.("MIMOCODE",`Rate limited on account ${j.fingerprint.slice(0,8)}, trying next…`);continue}this.markSuccess(j);let k={};return g.headers.forEach((a,b)=>{k[b]=a}),{response:g,url:h,headers:k,transformedBody:i}}catch(e){if(this.markCooldown(j),b===this.accounts.length-1){let b=e instanceof Error?e.message:String(e);return f?.error?.("MIMOCODE",`Executor error: ${b}`),{response:new Response(g.encode(JSON.stringify({error:{message:b,type:"upstream_error",code:"EXECUTOR_ERROR"}})),{status:502,headers:{"Content-Type":"application/json"}}),url:h,headers:this.buildHeaders(a.credentials,c),transformedBody:d}}}}return{response:new Response(g.encode(JSON.stringify({error:{message:"All accounts exhausted",type:"upstream_error",code:"NO_ACCOUNTS"}})),{status:502,headers:{"Content-Type":"application/json"}}),url:h,headers:this.buildHeaders(a.credentials,c),transformedBody:d}}}},69386:(a,b,c)=>{c.d(b,{BI:()=>g,IL:()=>i});var d=c(57647),e=c(86522);let f={codex:{headerOrder:["Host","Content-Type","Authorization","Accept","User-Agent","Accept-Encoding"],bodyFieldOrder:["model","stream","input","instructions","store","reasoning","prompt_cache_key","tools","tool_choice","include","service_tier","client_metadata","parallel_tool_calls","metadata"]},claude:{headerOrder:["Accept","Authorization","Content-Type","User-Agent","X-Claude-Code-Session-Id","X-Stainless-Arch","X-Stainless-Lang","X-Stainless-OS","X-Stainless-Package-Version","X-Stainless-Retry-Count","X-Stainless-Runtime","X-Stainless-Runtime-Version","X-Stainless-Timeout","anthropic-beta","anthropic-dangerous-direct-browser-access","anthropic-version","x-app","x-client-request-id","Connection","Host","Accept-Encoding","Content-Length"],bodyFieldOrder:["model","messages","system","tools","tool_choice","metadata","max_tokens","temperature","thinking","context_management","output_config","stream"]},"claude-code-compatible":{headerOrder:["Host","Content-Type","Authorization","anthropic-version","anthropic-beta","anthropic-dangerous-direct-browser-access","x-app","User-Agent","X-Claude-Code-Session-Id","X-Stainless-Retry-Count","X-Stainless-Timeout","X-Stainless-Lang","X-Stainless-Package-Version","X-Stainless-OS","X-Stainless-Arch","X-Stainless-Runtime","X-Stainless-Runtime-Version","Accept","accept-encoding","Connection"],bodyFieldOrder:["model","messages","system","tools","tool_choice","metadata","max_tokens","thinking","output_config","stream"]},github:{headerOrder:["Host","Authorization","X-Request-Id","Vscode-Sessionid","Vscode-Machineid","Editor-Version","Editor-Plugin-Version","Copilot-Integration-Id","Openai-Organization","Openai-Intent","Content-Type","User-Agent","Accept","Accept-Encoding"],bodyFieldOrder:["messages","model","temperature","top_p","max_tokens","n","stream","intent","intent_threshold","intent_content"],userAgent:e._K},antigravity:{headerOrder:["Accept","Accept-Encoding","Authorization","Content-Type","User-Agent","x-goog-api-client","x-client-name","x-client-version","x-machine-id","x-vscode-sessionid","Host","Connection"],bodyFieldOrder:["project","requestId","request","model","userAgent","requestType","enabledCreditTypes"],userAgent:e.l0},qwen:{headerOrder:["Host","Content-Type","Authorization","User-Agent","X-Dashscope-AuthType","X-Dashscope-CacheControl","X-Dashscope-UserAgent","X-Stainless-Arch","X-Stainless-Lang","X-Stainless-Os","X-Stainless-Package-Version","X-Stainless-Retry-Count","X-Stainless-Runtime","X-Stainless-Runtime-Version","Connection","Accept","Accept-Language","Sec-Fetch-Mode","Accept-Encoding"],bodyFieldOrder:["model","messages","temperature","top_p","max_tokens","stream","tools","tool_choice","response_format","n","stop"],userAgent:(0,e.DS)()["User-Agent"],extraHeaders:(0,e.DS)()}};function g(a,b,c){var e;!(e=c)||"object"!=typeof e||Array.isArray(e)||(delete e._claudeCodeRequiresLowercaseToolNames,delete e._nativeCodexPassthrough,delete e._omnirouteResponsesStore),c=e;let g=f[(0,d.GK)(a)?"claude-code-compatible":void 0];return g?(g.userAgent&&(b["User-Agent"]="function"==typeof g.userAgent?g.userAgent():g.userAgent),g.extraHeaders&&Object.assign(b,g.extraHeaders),{headers:function(a,b){if(!b?.length||!a)return a;let c={},d=new Map;for(let[b,c]of Object.entries(a))d.set(b.toLowerCase(),[b,c]);for(let a of b){let b=d.get(a.toLowerCase());b&&(c[b[0]]=b[1],d.delete(a.toLowerCase()))}for(let[,[a,b]]of d)c[a]=b;return c}(b,g.headerOrder),bodyString:JSON.stringify(c&&"object"==typeof c&&!Array.isArray(c)?function(a,b){if(!b?.length||!a||"object"!=typeof a)return a;let c={},d=new Set(Object.keys(a));for(let e of b)e in a&&(c[e]=a[e],d.delete(e));for(let b of d)c[b]=a[b];return c}(c,g.bodyFieldOrder):c)}):{headers:b,bodyString:JSON.stringify(c)}}let h=new Set;function i(a){if((0,d.GK)(a))return!0;let b=a?.toLowerCase().replace(/[^a-z0-9]/g,"_");if(h.has(void 0))return!0;let c=`CLI_COMPAT_${b?.toUpperCase()}`;return"1"===process.env[c]||"true"===process.env[c]||"1"===process.env.CLI_COMPAT_ALL||"true"===process.env.CLI_COMPAT_ALL}},69505:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{s:()=>y});var e=c(97510),f=c(61408),g=c(27216),h=c(68085),i=c(50954),j=c(55511),k=c(43659),l=c(74184),m=a([h]);h=(m.then?(await m)():m)[0];let v="https://claude.ai/api",w=`${v}/organizations`;function n(a){if(!a||"object"!=typeof a)return"";let b="string"==typeof a.cookie?a.cookie:"";if(b.trim())return b;let c="string"==typeof a.apiKey?a.apiKey:"";if(c.trim())return c;let d=a.providerSpecificData;if(d&&"object"==typeof d){let a=d.cookie;if("string"==typeof a&&a.trim())return a}return""}function o(a){if(!a||"object"!=typeof a)return;if("string"==typeof a.deviceId&&a.deviceId.trim())return a.deviceId;let b=a.providerSpecificData;if(b&&"object"==typeof b){let a=b.deviceId;if("string"==typeof a&&a.trim())return a}}let x="claude-sonnet-4-6";function p(a){let b={Accept:"text/event-stream","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9","Cache-Control":"no-cache","Content-Type":"application/json",Origin:"https://claude.ai",Pragma:"no-cache",Priority:"u=1, i",Referer:"https://claude.ai/new","Sec-Ch-Ua":'"Chromium";v="149", "Not-A.Brand";v="24", "Google Chrome";v="149"',"Sec-Ch-Ua-Mobile":"?0","Sec-Ch-Ua-Platform":'"Linux"',"Sec-Fetch-Dest":"empty","Sec-Fetch-Mode":"cors","Sec-Fetch-Site":"same-origin","User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36","anthropic-client-platform":"web_claude_ai"};return a&&(b["anthropic-device-id"]=a),b}async function q(a,b){let c=(0,i.p1)(a,"sessionKey");if(c.includes("cf_clearance="))return c;if(b?.allowAutoSolve!==!1)try{b?.log?.info?.("CLAUDE-WEB","cf_clearance missing, attempting to solve Turnstile...");let a=await (0,h.Xb)(),d=`cf_clearance=${a}`;c=c?`${c}; ${d}`:d,b?.log?.info?.("CLAUDE-WEB","cf_clearance injected successfully")}catch(c){let a=c instanceof Error?c.message:String(c);b?.log?.warn?.("CLAUDE-WEB",`cf_clearance injection failed: ${a}`)}return c}function r(a,b,c){return{id:`chatcmpl-${Date.now()}`,object:"chat.completion.chunk",created:Math.floor(Date.now()/1e3),model:b,choices:[{index:0,delta:{content:a},finish_reason:"end_turn"===c?"stop":null,logprobs:null}]}}async function s(a,b,c){try{let d=AbortSignal.timeout(f.MT),h=c?(0,e.OW)(c,d):d,i=await (0,g.wf)(w,{method:"GET",headers:{...p(b),Cookie:a},timeoutMs:f.MT,signal:h});return 200===i.status}catch(a){return!1}}async function t(a,b,c){try{let d=AbortSignal.timeout(f.MT),h=c?(0,e.OW)(c,d):d,i=await (0,g.wf)(w,{method:"GET",headers:{...p(b),Cookie:a},timeoutMs:f.MT,signal:h});if(200!==i.status)return null;let j=JSON.parse(i.text??"[]");return j?.[0]?.uuid||j?.[0]?.id||null}catch(a){return null}}async function u(a,b,c,d){let e=d??a.body;if(!e)return new Response(JSON.stringify({error:{message:"No upstream response body available",type:"upstream_error"}}),{status:502,headers:{"Content-Type":"application/json"}});let f=!1,g=new ReadableStream({async start(a){let d=e.getReader(),g=new TextDecoder,h="";try{for(;;){let{value:c,done:e}=await d.read();if(e)break;let i=(h+=g.decode(c,{stream:!0})).split("\n");for(let c of(h=i.pop()??"",i)){let d=c.trim();if(!d||!d.startsWith("data: "))continue;let e=d.slice(6);try{let c=JSON.parse(e);if("content_block_delta"===c.type){let d=c.delta,e=d?.text;if(e){let c=r(e,b),d=`data: ${JSON.stringify(c)}
347
+ `)),a.enqueue(v.encode("data: [DONE]\n\n")),a.close()}}),{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}}),url:g,headers:t,transformedBody:s}}}},68085:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{D3:()=>l,Xb:()=>k});var e=c(83237),f=a([e]);async function g(a){try{let b=(await a.context().cookies()).find(a=>"cf_clearance"===a.name);return!!b?.value}catch{return!1}}async function h(a){let b=Date.now();for(;Date.now()-b<6e4;){if(await g(a))return;await a.waitForTimeout(500)}throw Error("Turnstile challenge not solved within 60000ms")}async function i(a){let b=(await a.context().cookies()).find(a=>"cf_clearance"===a.name);if(!b?.value)throw Error("cf_clearance cookie not found after challenge solve");return b.value}async function j(a){let b=a?.headless!==!1;a?.timeout;let c=null,d=null;try{c=await e.chromium.launch({headless:b});let a=await c.newContext({userAgent:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36",viewport:{width:1280,height:720},ignoreHTTPSErrors:"true"===process.env.OMNIROUTE_TURNSTILE_IGNORE_TLS_ERRORS});return d=await a.newPage(),await d.goto("https://claude.ai",{waitUntil:"domcontentloaded"}),await h(d),{cfClearance:await i(d),timestamp:Date.now()}}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to solve Turnstile: ${a}`)}finally{d&&await d.close().catch(()=>{}),c&&await c.close().catch(()=>{})}}e=(f.then?(await f)():f)[0];let m=new Map;async function k(a){let b="claude-cf-clearance",c=m.get(b);if(c&&!a?.force&&c.expiresAt>Date.now()+3e5)return c.token;let d=await j({headless:a?.headless!==!1});return m.set(b,{token:d.cfClearance,expiresAt:Date.now()+33e5}),d.cfClearance}function l(){let a=m.get("claude-cf-clearance");if(!a)return{hasCached:!1};let b=Math.max(0,a.expiresAt-Date.now());return{hasCached:!0,expiresIn:b}}d()}catch(a){d(a)}})},69071:(a,b,c)=>{c.d(b,{Vr:()=>p});var d=c(77598),e=c(48161),f=c(97510),g=c(85376),h=c(47774);let i="mimocode-cli-free",j="You are MiMoCode, an interactive CLI tool that helps users with software engineering tasks.";function k(a){let b=a.messages;return!Array.isArray(b)||b.some(a=>null!=a&&"object"==typeof a&&"system"===a.role&&"string"==typeof a.content&&a.content.includes(j))?a:{...a,messages:[{role:"system",content:j},...b]}}let l=["Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36","Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36"];function m(a){return!(a.cooldownUntil>Date.now())&&!!(a.jwt&&a.expiresAt-Date.now()>3e5)}let n=new Map;async function o(a,b,c,d){let e=n.get(b);if(e)return e;let f=`${a}/api/free-ai/bootstrap`,g=new AbortController,i=setTimeout(()=>g.abort(),15e3),j=c?()=>g.abort(c.reason):null;c&&j&&c.addEventListener("abort",j,{once:!0});let k=(async()=>{try{let a=d?await (0,h.fetch)(f,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client:b}),signal:g.signal,dispatcher:d}):await fetch(f,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client:b}),signal:g.signal});if(!a.ok){let b=await a.text().catch(()=>"");throw Error(`Bootstrap failed: ${a.status} ${b.slice(0,200)}`)}let c=await a.json();if(!c.jwt)throw Error("Bootstrap response missing jwt field");return{jwt:c.jwt,expiresAt:function(a){try{let b=a.split(".");if(b.length<2)return Date.now()+3e6;return(JSON.parse(Buffer.from(b[1],"base64url").toString()).exp??Math.floor(Date.now()/1e3)+3e3)*1e3}catch{return Date.now()+3e6}}(c.jwt)}}finally{clearTimeout(i),c&&j&&c.removeEventListener("abort",j),n.delete(b)}})();return n.set(b,k),k}class p extends f.Hv{static{this.encoder=new TextEncoder}constructor(){super("mimocode",{format:"openai"}),this.accounts=[],this.nextAccountIdx=0,this.proxyUrlMap=new Map,this.baseUrl=this.getBaseUrls()[0]||"https://api.xiaomimimo.com",this.accounts.push({fingerprint:function(){let a=e.hostname(),b=e.platform(),c=e.arch(),f=function(){try{let a=e.cpus();if(a.length>0&&a[0].model)return a[0].model.trim()}catch{}return"unknown-cpu"}(),g="unknown-user";try{g=e.userInfo().username}catch{}return d.createHash("sha256").update(`${a}|${b}|${c}|${f}|${g}`).digest("hex")}(),jwt:"",expiresAt:0,cooldownUntil:0,consecutiveFails:0,proxy:null})}getProxyDispatcher(a){let b=this.proxyUrlMap.get(a);if(b)return(0,g.I_)(b)}fetchWithProxy(a,b,c){let d=this.getProxyDispatcher(c);return d?(0,h.fetch)(a,{...b,dispatcher:d}):fetch(a,b)}syncAccountsFromCredentials(a){let b=a?.providerSpecificData,c=b?.fingerprints,d=b?.accountProxies;if(Array.isArray(d)){for(let a of d)if(a?.fingerprint&&a?.proxy?.host){let{type:b="socks5",host:c,port:d,username:e,password:f}=a.proxy,g=d??("socks5"===b?1080:8080),h=e?`${encodeURIComponent(e)}:${f?encodeURIComponent(f):""}@`:"";this.proxyUrlMap.set(a.fingerprint,`${b}://${h}${c}:${g}`)}}if(Array.isArray(c)){let a=new Set(this.accounts.map(a=>a.fingerprint));for(let b of c)"string"!=typeof b||a.has(b)||(this.accounts.push({fingerprint:b,jwt:"",expiresAt:0,cooldownUntil:0,consecutiveFails:0,proxy:null}),a.add(b));let b=new Set(c.filter(a=>"string"==typeof a));this.accounts=this.accounts.filter(a=>b.has(a.fingerprint)),this.accounts.length>0?this.nextAccountIdx=this.nextAccountIdx%this.accounts.length:this.nextAccountIdx=0}let e=Array.isArray(d)?new Map(d.map(a=>[a.fingerprint,a.proxy])):null;for(let a of this.accounts)if(e){let b=e.get(a.fingerprint);a.proxy=void 0!==b?b??null:null}else a.proxy=null}async getJwtForAccount(a,b){if(m(a))return a.jwt;let c=this.getProxyDispatcher(a.fingerprint),d=await o(this.baseUrl,a.fingerprint,b,c);return a.jwt=d.jwt,a.expiresAt=d.expiresAt,a.jwt}pickAccount(){for(let a=0;a<this.accounts.length;a++){let b=(this.nextAccountIdx+a)%this.accounts.length,c=this.accounts[b];if(m(c))return this.nextAccountIdx=(b+1)%this.accounts.length,c}let a=this.nextAccountIdx%this.accounts.length;return this.nextAccountIdx=(this.nextAccountIdx+1)%this.accounts.length,this.accounts[a]}markCooldown(a){a.consecutiveFails++;let b=Math.min(5e3*Math.pow(2,a.consecutiveFails-1),6e4);a.cooldownUntil=Date.now()+b+1e3*Math.random()}markSuccess(a){a.consecutiveFails=0}buildUrl(a,b,c=0,d){return`${this.baseUrl.replace(/\/$/,"")}/api/free-ai/openai/chat`}buildHeaders(a,b=!0,c,d){let e={"Content-Type":"application/json","X-Mimo-Source":i,"User-Agent":l[Math.floor(Math.random()*l.length)]};return b&&(e.Accept="text/event-stream, application/json"),e}transformRequest(a,b,c,d){if("object"==typeof b&&null!==b){let c;return k({...b,model:(c=a.lastIndexOf("/"))>=0?a.slice(c+1):a})}return b}async testConnection(a,b,c){try{this.syncAccountsFromCredentials(a);let c=this.accounts[0],d=await this.getJwtForAccount(c,b),e=await this.fetchWithProxy(this.buildUrl("mimo-auto",!1),{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${d}`,"X-Mimo-Source":i},body:JSON.stringify(k({model:"mimo-auto",messages:[{role:"user",content:"ping"}],stream:!1})),signal:b??void 0},c.fingerprint);return 200===e.status}catch{return c?.warn?.("MIMOCODE","testConnection network error"),!1}}async execute(a){let{model:b,stream:c,body:d,signal:e,log:f}=a,g=p.encoder;if(e?.aborted)return{response:new Response(g.encode(JSON.stringify({error:{message:"Request aborted",type:"abort",code:"ABORTED"}})),{status:499,headers:{"Content-Type":"application/json"}}),url:this.buildUrl(b,c),headers:this.buildHeaders(a.credentials,c),transformedBody:d};let h=this.buildUrl(b,c),i=this.transformRequest(b,d,c,a.credentials);this.syncAccountsFromCredentials(a.credentials);for(let b=0;b<this.accounts.length;b++){let j=this.pickAccount();try{let b=await this.getJwtForAccount(j,e),d=this.buildHeaders(a.credentials,c);d.Authorization=`Bearer ${b}`;let g=await this.fetchWithProxy(h,{method:"POST",headers:d,body:JSON.stringify(i),signal:e??void 0},j.fingerprint);if(401===g.status||403===g.status){f?.warn?.("MIMOCODE",`Auth failed (${g.status}) on account ${j.fingerprint.slice(0,8)}…`),j.jwt="",j.expiresAt=0,j.consecutiveFails=0;let a=await this.getJwtForAccount(j,e);d.Authorization=`Bearer ${a}`,g=await this.fetchWithProxy(h,{method:"POST",headers:d,body:JSON.stringify(i),signal:e??void 0},j.fingerprint)}if(429===g.status){this.markCooldown(j),f?.warn?.("MIMOCODE",`Rate limited on account ${j.fingerprint.slice(0,8)}, trying next…`);continue}this.markSuccess(j);let k={};return g.headers.forEach((a,b)=>{k[b]=a}),{response:g,url:h,headers:k,transformedBody:i}}catch(e){if(this.markCooldown(j),b===this.accounts.length-1){let b=e instanceof Error?e.message:String(e);return f?.error?.("MIMOCODE",`Executor error: ${b}`),{response:new Response(g.encode(JSON.stringify({error:{message:b,type:"upstream_error",code:"EXECUTOR_ERROR"}})),{status:502,headers:{"Content-Type":"application/json"}}),url:h,headers:this.buildHeaders(a.credentials,c),transformedBody:d}}}}return{response:new Response(g.encode(JSON.stringify({error:{message:"All accounts exhausted",type:"upstream_error",code:"NO_ACCOUNTS"}})),{status:502,headers:{"Content-Type":"application/json"}}),url:h,headers:this.buildHeaders(a.credentials,c),transformedBody:d}}}},69386:(a,b,c)=>{c.d(b,{BI:()=>g,IL:()=>i});var d=c(57647),e=c(86522);let f={codex:{headerOrder:["Host","Content-Type","Authorization","Accept","User-Agent","Accept-Encoding"],bodyFieldOrder:["model","stream","input","instructions","store","reasoning","prompt_cache_key","tools","tool_choice","include","service_tier","client_metadata","parallel_tool_calls","metadata"]},claude:{headerOrder:["Accept","Authorization","Content-Type","User-Agent","X-Claude-Code-Session-Id","X-Stainless-Arch","X-Stainless-Lang","X-Stainless-OS","X-Stainless-Package-Version","X-Stainless-Retry-Count","X-Stainless-Runtime","X-Stainless-Runtime-Version","X-Stainless-Timeout","anthropic-beta","anthropic-dangerous-direct-browser-access","anthropic-version","x-app","x-client-request-id","Connection","Host","Accept-Encoding","Content-Length"],bodyFieldOrder:["model","messages","system","tools","tool_choice","metadata","max_tokens","temperature","thinking","context_management","output_config","stream"]},"claude-code-compatible":{headerOrder:["Host","Content-Type","Authorization","anthropic-version","anthropic-beta","anthropic-dangerous-direct-browser-access","x-app","User-Agent","X-Claude-Code-Session-Id","X-Stainless-Retry-Count","X-Stainless-Timeout","X-Stainless-Lang","X-Stainless-Package-Version","X-Stainless-OS","X-Stainless-Arch","X-Stainless-Runtime","X-Stainless-Runtime-Version","Accept","accept-encoding","Connection"],bodyFieldOrder:["model","messages","system","tools","tool_choice","metadata","max_tokens","thinking","output_config","stream"]},github:{headerOrder:["Host","Authorization","X-Request-Id","Vscode-Sessionid","Vscode-Machineid","Editor-Version","Editor-Plugin-Version","Copilot-Integration-Id","Openai-Organization","Openai-Intent","Content-Type","User-Agent","Accept","Accept-Encoding"],bodyFieldOrder:["messages","model","temperature","top_p","max_tokens","n","stream","intent","intent_threshold","intent_content"],userAgent:e._K},antigravity:{headerOrder:["Accept","Accept-Encoding","Authorization","Content-Type","User-Agent","x-goog-api-client","x-client-name","x-client-version","x-machine-id","x-vscode-sessionid","Host","Connection"],bodyFieldOrder:["project","requestId","request","model","userAgent","requestType","enabledCreditTypes"],userAgent:e.l0},qwen:{headerOrder:["Host","Content-Type","Authorization","User-Agent","X-Dashscope-AuthType","X-Dashscope-CacheControl","X-Dashscope-UserAgent","X-Stainless-Arch","X-Stainless-Lang","X-Stainless-Os","X-Stainless-Package-Version","X-Stainless-Retry-Count","X-Stainless-Runtime","X-Stainless-Runtime-Version","Connection","Accept","Accept-Language","Sec-Fetch-Mode","Accept-Encoding"],bodyFieldOrder:["model","messages","temperature","top_p","max_tokens","stream","tools","tool_choice","response_format","n","stop"],userAgent:(0,e.DS)()["User-Agent"],extraHeaders:(0,e.DS)()}};function g(a,b,c){var e;!(e=c)||"object"!=typeof e||Array.isArray(e)||(delete e._claudeCodeRequiresLowercaseToolNames,delete e._nativeCodexPassthrough,delete e._omnirouteResponsesStore),c=e;let g=f[(0,d.GK)(a)?"claude-code-compatible":void 0];return g?(g.userAgent&&(b["User-Agent"]="function"==typeof g.userAgent?g.userAgent():g.userAgent),g.extraHeaders&&Object.assign(b,g.extraHeaders),{headers:function(a,b){if(!b?.length||!a)return a;let c={},d=new Map;for(let[b,c]of Object.entries(a))d.set(b.toLowerCase(),[b,c]);for(let a of b){let b=d.get(a.toLowerCase());b&&(c[b[0]]=b[1],d.delete(a.toLowerCase()))}for(let[,[a,b]]of d)c[a]=b;return c}(b,g.headerOrder),bodyString:JSON.stringify(c&&"object"==typeof c&&!Array.isArray(c)?function(a,b){if(!b?.length||!a||"object"!=typeof a)return a;let c={},d=new Set(Object.keys(a));for(let e of b)e in a&&(c[e]=a[e],d.delete(e));for(let b of d)c[b]=a[b];return c}(c,g.bodyFieldOrder):c)}):{headers:b,bodyString:JSON.stringify(c)}}let h=new Set;function i(a){if((0,d.GK)(a))return!0;let b=a?.toLowerCase().replace(/[^a-z0-9]/g,"_");if(h.has(void 0))return!0;let c=`CLI_COMPAT_${b?.toUpperCase()}`;return"1"===process.env[c]||"true"===process.env[c]||"1"===process.env.CLI_COMPAT_ALL||"true"===process.env.CLI_COMPAT_ALL}},69505:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{s:()=>y});var e=c(97510),f=c(61408),g=c(27216),h=c(68085),i=c(50954),j=c(55511),k=c(43659),l=c(74184),m=a([h]);h=(m.then?(await m)():m)[0];let v="https://claude.ai/api",w=`${v}/organizations`;function n(a){if(!a||"object"!=typeof a)return"";let b="string"==typeof a.cookie?a.cookie:"";if(b.trim())return b;let c="string"==typeof a.apiKey?a.apiKey:"";if(c.trim())return c;let d=a.providerSpecificData;if(d&&"object"==typeof d){let a=d.cookie;if("string"==typeof a&&a.trim())return a}return""}function o(a){if(!a||"object"!=typeof a)return;if("string"==typeof a.deviceId&&a.deviceId.trim())return a.deviceId;let b=a.providerSpecificData;if(b&&"object"==typeof b){let a=b.deviceId;if("string"==typeof a&&a.trim())return a}}let x="claude-sonnet-4-6";function p(a){let b={Accept:"text/event-stream","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9","Cache-Control":"no-cache","Content-Type":"application/json",Origin:"https://claude.ai",Pragma:"no-cache",Priority:"u=1, i",Referer:"https://claude.ai/new","Sec-Ch-Ua":'"Chromium";v="149", "Not-A.Brand";v="24", "Google Chrome";v="149"',"Sec-Ch-Ua-Mobile":"?0","Sec-Ch-Ua-Platform":'"Linux"',"Sec-Fetch-Dest":"empty","Sec-Fetch-Mode":"cors","Sec-Fetch-Site":"same-origin","User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36","anthropic-client-platform":"web_claude_ai"};return a&&(b["anthropic-device-id"]=a),b}async function q(a,b){let c=(0,i.p1)(a,"sessionKey");if(c.includes("cf_clearance="))return c;if(b?.allowAutoSolve!==!1)try{b?.log?.info?.("CLAUDE-WEB","cf_clearance missing, attempting to solve Turnstile...");let a=await (0,h.Xb)(),d=`cf_clearance=${a}`;c=c?`${c}; ${d}`:d,b?.log?.info?.("CLAUDE-WEB","cf_clearance injected successfully")}catch(c){let a=c instanceof Error?c.message:String(c);b?.log?.warn?.("CLAUDE-WEB",`cf_clearance injection failed: ${a}`)}return c}function r(a,b,c){return{id:`chatcmpl-${Date.now()}`,object:"chat.completion.chunk",created:Math.floor(Date.now()/1e3),model:b,choices:[{index:0,delta:{content:a},finish_reason:"end_turn"===c?"stop":null,logprobs:null}]}}async function s(a,b,c){try{let d=AbortSignal.timeout(f.MT),h=c?(0,e.OW)(c,d):d,i=await (0,g.wf)(w,{method:"GET",headers:{...p(b),Cookie:a},timeoutMs:f.MT,signal:h});return 200===i.status}catch(a){return!1}}async function t(a,b,c){try{let d=AbortSignal.timeout(f.MT),h=c?(0,e.OW)(c,d):d,i=await (0,g.wf)(w,{method:"GET",headers:{...p(b),Cookie:a},timeoutMs:f.MT,signal:h});if(200!==i.status)return null;let j=JSON.parse(i.text??"[]");return j?.[0]?.uuid||j?.[0]?.id||null}catch(a){return null}}async function u(a,b,c,d){let e=d??a.body;if(!e)return new Response(JSON.stringify({error:{message:"No upstream response body available",type:"upstream_error"}}),{status:502,headers:{"Content-Type":"application/json"}});let f=!1,g=new ReadableStream({async start(a){let d=e.getReader(),g=new TextDecoder,h="";try{for(;;){let{value:c,done:e}=await d.read();if(e)break;let i=(h+=g.decode(c,{stream:!0})).split("\n");for(let c of(h=i.pop()??"",i)){let d=c.trim();if(!d||!d.startsWith("data: "))continue;let e=d.slice(6);try{let c=JSON.parse(e);if("content_block_delta"===c.type){let d=c.delta,e=d?.text;if(e){let c=r(e,b),d=`data: ${JSON.stringify(c)}
348
348
 
349
349
  `;a.enqueue(new TextEncoder().encode(d))}}else if("message_stop"===c.type){let c=r("",b,"end_turn"),d=`data: ${JSON.stringify(c)}
350
350
 
@@ -361,7 +361,7 @@ Respond ONLY with the JSON object, no other text.`,e=Array.isArray(a.messages)?a
361
361
 
362
362
  ${d}`:Array.isArray(f.content)&&f.content.push({type:"text",text:`
363
363
 
364
- ${d}`}):e.unshift({role:"system",content:d}),{...a,messages:e,response_format:{type:"json_object"}}}defaultResponsesTextFormat(a){if(!this.provider?.startsWith?.("openai-compatible-")||!this.provider.includes("responses")||!a||"object"!=typeof a||Array.isArray(a))return a;let b=a.text;return!b||"object"!=typeof b||Array.isArray(b)||void 0!==b.format?a:{...a,text:{...b,format:{type:"text"}}}}transformRequest(a,b,c,d){let e=super.transformRequest(a,b,c,d),f=(0,o.b)(e,this.config.requestDefaults);if(f=this.applyJsonSchemaFallback(f),(f=this.defaultResponsesTextFormat(f))&&"object"==typeof f&&!Array.isArray(f)&&("cerebras"===this.provider||"mistral"===this.provider)&&Object.prototype.hasOwnProperty.call(f,"client_metadata")){let a={...f};delete a.client_metadata,f=a}let g=(0,q.jJ)(this.provider,d?.providerSpecificData),h=f&&"object"==typeof f&&!Array.isArray(f)?(0,q.Tz)(f):"openai";if("object"==typeof f&&null!==f&&!Array.isArray(f)){if(this.provider?.startsWith?.("anthropic-compatible-")){if(Object.prototype.hasOwnProperty.call(f,"stream_options")){let a={...f};delete a.stream_options,f=a}}else if(c&&"openai"===g&&"openai-responses"!==h){let a=f,b=void 0!==a.stream&&!0!==a.stream,c="qwen"===this.provider&&(!!a.thinking||!!a.enable_thinking);if(b||c){if(Object.prototype.hasOwnProperty.call(a,"stream_options")){let b={...a};delete b.stream_options,f=b}}else if(d?.providerSpecificData?.disableStreamOptions){if(Object.prototype.hasOwnProperty.call(f,"stream_options")){let a={...f};delete a.stream_options,f=a}}else f={...f,stream:!0,stream_options:{...a.stream_options||{},include_usage:!0}}}else if(!c&&Object.prototype.hasOwnProperty.call(f,"stream_options")){let a={...f};delete a.stream_options,f=a}else if(("openai-responses"===g||"openai-responses"===h)&&Object.prototype.hasOwnProperty.call(f,"stream_options")){let a={...f};delete a.stream_options,f=a}if("openai"===g&&/^(o1|o3|o4|gpt-5)/i.test(a)&&f&&"object"==typeof f){let a=f;"max_tokens"in a&&(a.max_completion_tokens=a.max_tokens,delete a.max_tokens)}if("openrouter"===this.provider){var i;let a=(i=d?.providerSpecificData,("string"==typeof i?.preset?i.preset.trim():"")||null);a&&void 0===f.preset&&(f={...f,preset:a})}}if("qwen"===this.provider&&"object"==typeof f&&null!==f)return(0,r.i8)(f,"QwenExecutor");if("object"==typeof f&&null!==f){let b=f,c="string"==typeof b.model?b.model:a;(0,p.c)(this.provider,c,b)}if("object"==typeof f&&null!==f){let a=(0,l.qs)(this.provider);if(a?.modelIdPrefix){let b=f;"string"==typeof b.model&&([a.modelIdPrefix,...a.acceptedModelIdPrefixes??[]].some(a=>b.model.startsWith(a))||(b.model=`${a.modelIdPrefix}${b.model}`))}}return f}async refreshCredentials(a,b){if("gigachat"===this.provider){if(!a.apiKey)return null;try{return await k({credentials:a.apiKey})}catch(a){return b?.error?.("TOKEN",`gigachat refresh error: ${a.message}`),null}}if(!a.refreshToken)return null;try{return await (0,f.iD)(this.provider,a,b)}catch(a){return b?.error?.("TOKEN",`${this.provider} refresh error: ${a.message}`),null}}needsRefresh(a){if("gigachat"===this.provider){if(a.apiKey&&!a.accessToken)return!0;if(!a.expiresAt)return!1}return super.needsRefresh(a)}async execute(a){let b,c=this.getPool();if(!c)return super.execute(a);let d=c.acquire();d&&(a.upstreamExtraHeaders={...d.buildHeaders(),...a.upstreamExtraHeaders});try{b=await super.execute(a)}catch(a){throw d&&(c.reportCooldown(d),d.release()),a}if(d)try{let a=b?.response?.status;429===a?c.reportCooldown(d):a>=500?c.reportDead(d):c.reportSuccess(d)}finally{d.release()}return b}}},75582:(a,b,c)=>{c.d(b,{Fs:()=>g});var d=c(97510),e=c(61408),f=c(43659);class g extends d.Hv{constructor(a){const b=a??function(){let a=process.env.NINEROUTER_HOST||"127.0.0.1",b=parseInt(process.env.NINEROUTER_PORT||String(20130),10);return`http://${a}:${b}`}();super("9router",{id:"9router",baseUrl:`${b}/v1/chat/completions`,headers:{"Content-Type":"application/json"}}),this.upstreamBaseUrl=b}buildUrl(a,b,c=0,d=null){return`${this.upstreamBaseUrl}/v1/chat/completions`}buildServiceUnavailableResponse(a){let b=(0,f.buildErrorBody)(503,a);return b.error.code="service_not_running",new Response(JSON.stringify(b),{status:503,headers:{"Content-Type":"application/json","X-Omni-Fallback-Hint":"connection_cooldown"}})}isAnthropicShape(a){if(!a||"object"!=typeof a)return!1;if(void 0!==a.system||void 0!==a.thinking||a.metadata&&"object"==typeof a.metadata&&void 0!==a.metadata.user_id)return!0;let b=a.messages;if(Array.isArray(b)&&b.length>0){let a=b[0];if(Array.isArray(a?.content))return!0}return!1}selectEndpoint(a){return this.isAnthropicShape(a)?"/v1/messages":"/v1/chat/completions"}buildHeaders(a,b=!0){let c=a?.apiKey??a?.accessToken,d={"Content-Type":"application/json"};return c&&(d.Authorization=`Bearer ${c}`),b&&(d.Accept="text/event-stream"),d}transformRequest(a,b,c,d){if(!b||"object"!=typeof b)return b;let e={...b};return e.model!==a&&(e.model=a),e}async execute(a){let b=void 0;!0;{let c=b?.state??"unknown",d=`9router is not running (state: ${c})`;return a.log?.warn?.("9ROUTER",d),{response:this.buildServiceUnavailableResponse(d),url:"",headers:{},transformedBody:null}}}async healthCheck(){let a=Date.now();try{let b=await fetch(`${this.upstreamBaseUrl}/api/health`,{signal:AbortSignal.timeout(3e3)});return{ok:b.ok,latencyMs:Date.now()-a,...!b.ok?{error:`HTTP ${b.status}`}:{}}}catch(b){return{ok:!1,latencyMs:Date.now()-a,error:b instanceof Error?b.message:String(b)}}}}},76422:(a,b,c)=>{c.d(b,{OD:()=>k});var d=c(77598),e=c(97510),f=c(43659);let g="https://amelia.chipotle.com";class h{async init(){let a=await fetch(`${g}/Amelia/api/init`,{headers:{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36",Origin:g,Referer:`${g}/Amelia/ui/chipotle/chat?embed=iframe`},redirect:"manual"});if(!a.ok)throw Error(`Amelia init failed: ${a.status}`);let b=await a.json(),c=(a.headers.getSetCookie?.()??[]).map(a=>a.split(";")[0]).join("; ");this.session={csrfToken:b.csrfToken,userId:b.user.userId,cookieHeader:c}}async connect(){if(!this.session)throw Error("Call init() first");if(null!==this.connectPromise)return this.connectPromise;this.connectPromise=this._connect();try{await this.connectPromise}finally{this.connectPromise=null}}async _connect(){let{WebSocket:a}=await Promise.resolve().then(c.bind(c,28064)),b=String((0,d.randomInt)(0,1e3)).padStart(3,"0"),e=(0,d.randomUUID)().replace(/-/g,"").slice(0,32),f=`wss://amelia.chipotle.com/Amelia/api/sock/${b}/${e}/websocket`;return new Promise((b,c)=>{let d=setTimeout(()=>c(Error("WS connect timeout")),15e3),e=new a(f,{headers:{Cookie:this.session.cookieHeader,Origin:g,"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36"}});e.on("open",()=>{}),e.on("message",a=>{let e=a.toString();this.handleSockJSFrame(e,b,c,d)}),e.on("error",a=>{clearTimeout(d),c(a)}),e.on("close",()=>{this.stompConnected=!1,this.ws=null}),this.ws=e})}handleSockJSFrame(a,b,c,d){if("o"===a)return void this.sendSockJS(this.buildStompConnect());if("h"!==a&&a.startsWith("a"))try{for(let e of JSON.parse(a.slice(1)))this.handleStompFrame(e,b,c,d)}catch{}}handleStompFrame(a,b,c,d){let e=a.split("\n")[0].replace(/\r$/,"");if("CONNECTED"===e){this.stompConnected=!0,this.sendSockJS(this.buildStompSubscribe(`/queue/session.${this.session.userId}`,"sub-0")),this.sendSockJS(this.buildStompSubscribe("/user/queue/session","sub-1")),clearTimeout(d),b();return}"MESSAGE"===e?this.handleStompMessage(a):"ERROR"===e&&(clearTimeout(d),c(Error(`STOMP ERROR: ${a}`)))}handleStompMessage(a){let b=a.indexOf("\0"),c=a.indexOf("\n\n");-1===c&&(c=a.indexOf("\r\n\r\n"));let d=-1!==c?"\r"===a[c+2]?4:2:0,e="";if(-1!==c&&(e=a.substring(c+d,-1!==b?b:void 0).replace(/\0$/,"")),!e)return;let f=e;try{let a=JSON.parse(e);if("message"===a.type&&a.body){let b=a.body;f=b.text||JSON.stringify(b)}else if(a.text)f=a.text;else{if(!a.message)return;f=a.message}}catch{}for(let[a,b]of this.messageCallbacks.entries())b(f),this.messageCallbacks.delete(a)}async chat(a,b=15e3,c){if(this.stompConnected||(await this.init(),await this.connect()),c?.aborted)throw new DOMException("Aborted","AbortError");let d=crypto.randomUUID();return new Promise((e,f)=>{let g=setTimeout(()=>{this.messageCallbacks.delete(d),f(Error("Response timeout"))},b),h=()=>{clearTimeout(g),this.messageCallbacks.delete(d),f(new DOMException("Aborted","AbortError"))};c?.addEventListener("abort",h,{once:!0}),this.messageCallbacks.set(d,a=>{clearTimeout(g),c?.removeEventListener("abort",h),e(a)});let i=JSON.stringify({message:a,domainCode:"chipotle",conversationId:null,type:"text"});this.sendSockJS(this.buildStompSend("/app/send",i))})}buildStompConnect(){return`CONNECT
364
+ ${d}`}):e.unshift({role:"system",content:d}),{...a,messages:e,response_format:{type:"json_object"}}}defaultResponsesTextFormat(a){if(!this.provider?.startsWith?.("openai-compatible-")||!this.provider.includes("responses")||!a||"object"!=typeof a||Array.isArray(a))return a;let b=a.text;return!b||"object"!=typeof b||Array.isArray(b)||void 0!==b.format?a:{...a,text:{...b,format:{type:"text"}}}}transformRequest(a,b,c,d){let e=super.transformRequest(a,b,c,d),f=(0,o.b)(e,this.config.requestDefaults);if(f=this.applyJsonSchemaFallback(f),(f=this.defaultResponsesTextFormat(f))&&"object"==typeof f&&!Array.isArray(f)&&("cerebras"===this.provider||"mistral"===this.provider)&&Object.prototype.hasOwnProperty.call(f,"client_metadata")){let a={...f};delete a.client_metadata,f=a}let g=(0,q.jJ)(this.provider,d?.providerSpecificData),h=f&&"object"==typeof f&&!Array.isArray(f)?(0,q.Tz)(f):"openai";if("object"==typeof f&&null!==f&&!Array.isArray(f)){if(this.provider?.startsWith?.("anthropic-compatible-")){if(Object.prototype.hasOwnProperty.call(f,"stream_options")){let a={...f};delete a.stream_options,f=a}}else if(c&&"openai"===g&&"openai-responses"!==h){let a=f,b=void 0!==a.stream&&!0!==a.stream,c="qwen"===this.provider&&(!!a.thinking||!!a.enable_thinking);if(b||c){if(Object.prototype.hasOwnProperty.call(a,"stream_options")){let b={...a};delete b.stream_options,f=b}}else if(d?.providerSpecificData?.disableStreamOptions){if(Object.prototype.hasOwnProperty.call(f,"stream_options")){let a={...f};delete a.stream_options,f=a}}else f={...f,stream:!0,stream_options:{...a.stream_options||{},include_usage:!0}}}else if(!c&&Object.prototype.hasOwnProperty.call(f,"stream_options")){let a={...f};delete a.stream_options,f=a}else if(("openai-responses"===g||"openai-responses"===h)&&Object.prototype.hasOwnProperty.call(f,"stream_options")){let a={...f};delete a.stream_options,f=a}if("openai"===g&&/^(o1|o3|o4|gpt-5)/i.test(a)&&f&&"object"==typeof f){let a=f;"max_tokens"in a&&(a.max_completion_tokens=a.max_tokens,delete a.max_tokens)}if("openrouter"===this.provider){var i;let a=(i=d?.providerSpecificData,("string"==typeof i?.preset?i.preset.trim():"")||null);a&&void 0===f.preset&&(f={...f,preset:a})}}if("qwen"===this.provider&&"object"==typeof f&&null!==f)return(0,r.i8)(f,"QwenExecutor");if("object"==typeof f&&null!==f){let b=f,c="string"==typeof b.model?b.model:a;(0,p.c)(this.provider,c,b)}if("object"==typeof f&&null!==f){let a=(0,l.qs)(this.provider);if(a?.modelIdPrefix){let b=f;"string"==typeof b.model&&([a.modelIdPrefix,...a.acceptedModelIdPrefixes??[]].some(a=>b.model.startsWith(a))||(b.model=`${a.modelIdPrefix}${b.model}`))}}return f}async refreshCredentials(a,b){if("gigachat"===this.provider){if(!a.apiKey)return null;try{return await k({credentials:a.apiKey})}catch(a){return b?.error?.("TOKEN",`gigachat refresh error: ${a.message}`),null}}if(!a.refreshToken)return null;try{return await (0,f.iD)(this.provider,a,b)}catch(a){return b?.error?.("TOKEN",`${this.provider} refresh error: ${a.message}`),null}}needsRefresh(a){if("gigachat"===this.provider){if(a.apiKey&&!a.accessToken)return!0;if(!a.expiresAt)return!1}return super.needsRefresh(a)}async execute(a){let b,c=this.getPool();if(!c)return super.execute(a);let d=c.acquire();d&&(a.upstreamExtraHeaders={...d.buildHeaders(),...a.upstreamExtraHeaders});try{b=await super.execute(a)}catch(a){throw d&&(c.reportCooldown(d),d.release()),a}if(d)try{let a=b?.response?.status;429===a?c.reportCooldown(d):a>=500?c.reportDead(d):c.reportSuccess(d)}finally{d.release()}return b}}},75582:(a,b,c)=>{c.d(b,{Fs:()=>g});var d=c(97510),e=c(61408),f=c(43659);class g extends d.Hv{constructor(a){const b=a??function(){let a=process.env.NINEROUTER_HOST||"127.0.0.1",b=parseInt(process.env.NINEROUTER_PORT||String(20130),10);return`http://${a}:${b}`}();super("9router",{id:"9router",baseUrl:`${b}/v1/chat/completions`,headers:{"Content-Type":"application/json"}}),this.upstreamBaseUrl=b}buildUrl(a,b,c=0,d=null){return`${this.upstreamBaseUrl}/v1/chat/completions`}buildServiceUnavailableResponse(a){let b=(0,f.buildErrorBody)(503,a);return b.error.code="service_not_running",new Response(JSON.stringify(b),{status:503,headers:{"Content-Type":"application/json","X-Omni-Fallback-Hint":"connection_cooldown"}})}isAnthropicShape(a){if(!a||"object"!=typeof a)return!1;if(void 0!==a.system||void 0!==a.thinking||a.metadata&&"object"==typeof a.metadata&&void 0!==a.metadata.user_id)return!0;let b=a.messages;if(Array.isArray(b)&&b.length>0){let a=b[0];if(Array.isArray(a?.content))return!0}return!1}selectEndpoint(a){return this.isAnthropicShape(a)?"/v1/messages":"/v1/chat/completions"}buildHeaders(a,b=!0){let c=a?.apiKey??a?.accessToken,d={"Content-Type":"application/json"};return c&&(d.Authorization=`Bearer ${c}`),b&&(d.Accept="text/event-stream"),d}transformRequest(a,b,c,d){if(!b||"object"!=typeof b)return b;let e={...b};return e.model!==a&&(e.model=a),e}async execute(a){let b=void 0;!0;{let c=b?.state??"unknown",d=`9router is not running (state: ${c})`;return a.log?.warn?.("9ROUTER",d),{response:this.buildServiceUnavailableResponse(d),url:"",headers:{},transformedBody:null}}}async healthCheck(){let a=Date.now();try{let b=await fetch(`${this.upstreamBaseUrl}/api/health`,{signal:AbortSignal.timeout(3e3)});return{ok:b.ok,latencyMs:Date.now()-a,...!b.ok?{error:`HTTP ${b.status}`}:{}}}catch(b){return{ok:!1,latencyMs:Date.now()-a,error:b instanceof Error?b.message:String(b)}}}}},76422:(a,b,c)=>{c.d(b,{OD:()=>m});var d=c(77598),e=c(97510),f=c(43659);let g="https://amelia.chipotle.com";class h{async init(){let a=await fetch(`${g}/Amelia/api/init`,{headers:{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36",Origin:g,Referer:`${g}/Amelia/ui/chipotle/chat?embed=iframe`},redirect:"manual"});if(!a.ok)throw Error(`Amelia init failed: ${a.status}`);let b=await a.json(),c=(a.headers.getSetCookie?.()??[]).map(a=>a.split(";")[0]).join("; ");this.session={csrfToken:b.csrfToken,userId:b.user.userId,cookieHeader:c}}async connect(){if(!this.session)throw Error("Call init() first");if(null!==this.connectPromise)return this.connectPromise;this.connectPromise=this._connect();try{await this.connectPromise}finally{this.connectPromise=null}}async _connect(){let{WebSocket:a}=await Promise.resolve().then(c.bind(c,28064)),b=String((0,d.randomInt)(0,1e3)).padStart(3,"0"),e=(0,d.randomUUID)().replace(/-/g,"").slice(0,32),f=`wss://amelia.chipotle.com/Amelia/api/sock/${b}/${e}/websocket`;return new Promise((b,c)=>{let d=setTimeout(()=>c(Error("WS connect timeout")),15e3),e=new a(f,{headers:{Cookie:this.session.cookieHeader,Origin:g,"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36"}});e.on("open",()=>{}),e.on("message",a=>{let e=a.toString();this.handleSockJSFrame(e,b,c,d)}),e.on("error",a=>{clearTimeout(d),c(a)}),e.on("close",()=>{this.stompConnected=!1,this.ws=null}),this.ws=e})}handleSockJSFrame(a,b,c,d){if("o"===a)return void this.sendSockJS(this.buildStompConnect());if("h"!==a&&a.startsWith("a"))try{for(let e of JSON.parse(a.slice(1)))this.handleStompFrame(e,b,c,d)}catch{}}handleStompFrame(a,b,c,d){let e=a.split("\n")[0].replace(/\r$/,"");if("CONNECTED"===e){this.stompConnected=!0,this.sendSockJS(this.buildStompSubscribe(`/queue/session.${this.session.userId}`,"sub-0")),this.sendSockJS(this.buildStompSubscribe("/user/queue/session","sub-1")),clearTimeout(d),b();return}"MESSAGE"===e?this.handleStompMessage(a):"ERROR"===e&&(clearTimeout(d),c(Error(`STOMP ERROR: ${a}`)))}handleStompMessage(a){let b=a.indexOf("\0"),c=a.indexOf("\n\n");-1===c&&(c=a.indexOf("\r\n\r\n"));let d=-1!==c?"\r"===a[c+2]?4:2:0,e="";if(-1!==c&&(e=a.substring(c+d,-1!==b?b:void 0).replace(/\0$/,"")),!e)return;let f=e;try{let a=JSON.parse(e);if("message"===a.type&&a.body){let b=a.body;f=b.text||JSON.stringify(b)}else if(a.text)f=a.text;else{if(!a.message)return;f=a.message}}catch{}for(let[a,b]of this.messageCallbacks.entries())b(f),this.messageCallbacks.delete(a)}async chat(a,b=15e3,c){if(this.stompConnected||(await this.init(),await this.connect()),c?.aborted)throw new DOMException("Aborted","AbortError");let d=crypto.randomUUID();return new Promise((e,f)=>{let g=setTimeout(()=>{this.messageCallbacks.delete(d),f(Error("Response timeout"))},b),h=()=>{clearTimeout(g),this.messageCallbacks.delete(d),f(new DOMException("Aborted","AbortError"))};c?.addEventListener("abort",h,{once:!0}),this.messageCallbacks.set(d,a=>{clearTimeout(g),c?.removeEventListener("abort",h),e(a)});let i=JSON.stringify({message:a,domainCode:"chipotle",conversationId:null,type:"text"});this.sendSockJS(this.buildStompSend("/app/send",i))})}buildStompConnect(){return`CONNECT
365
365
  accept-version:1.1,1.0
366
366
  heart-beat:0,0
367
367
  X-CSRF-TOKEN:${this.session.csrfToken}
@@ -375,10 +375,10 @@ destination:${a}
375
375
  content-type:application/json
376
376
  content-length:${Buffer.byteLength(b)}
377
377
 
378
- ${b}\0`}sendSockJS(a){if(!this.ws||1!==this.ws.readyState)throw Error("WebSocket not open");this.ws.send(JSON.stringify([a]))}async close(){this.ws&&(this.ws.close(),this.ws=null),this.stompConnected=!1,this.session=null}constructor(){this.session=null,this.ws=null,this.stompConnected=!1,this.messageCallbacks=new Map,this.connectPromise=null}}let i=[];async function j(){if(i.length>0)return i.pop();let a=new h;return await a.init(),await a.connect(),a}class k extends e.Hv{constructor(){super("chipotle",{format:"openai"})}buildUrl(a,b){return`${g}/Amelia/api/chat`}buildHeaders(a){return{"Content-Type":"application/json"}}transformRequest(a,b,c){return"object"==typeof b&&null!==b?{...b,model:a}:b}async execute(a){let{model:b,stream:c,body:d,signal:e,log:g}=a,h=new TextEncoder;if(e?.aborted)return{response:new Response(h.encode(JSON.stringify({error:{message:"Request aborted",type:"abort",code:"ABORTED"}})),{status:499,headers:{"Content-Type":"application/json"}}),url:this.buildUrl(b,c),headers:this.buildHeaders(a.credentials),transformedBody:d};let k=[...d?.messages??[]].reverse().find(a=>"user"===a.role),l=k?.content??"",m=null;try{var n;m=await j(),g?.info?.("CHIPOTLE",`Sending to Pepper (model=${b})`);let f=await m.chat(l,15e3,e);n=m,i.length<5?i.push(n):n.close().catch(()=>{}),m=null;let k=`chatcmpl-${Date.now()}`,o=Math.floor(Date.now()/1e3);if(c){let e=`data: ${JSON.stringify({id:k,object:"chat.completion.chunk",created:o,model:b,choices:[{index:0,delta:{role:"assistant",content:f},finish_reason:null}]})}
379
- data: ${JSON.stringify({id:k,object:"chat.completion.chunk",created:o,model:b,choices:[{index:0,delta:{},finish_reason:"stop"}]})}
378
+ ${b}\0`}sendSockJS(a){if(!this.ws||1!==this.ws.readyState)throw Error("WebSocket not open");this.ws.send(JSON.stringify([a]))}async close(){this.ws&&(this.ws.close(),this.ws=null),this.stompConnected=!1,this.session=null}constructor(){this.session=null,this.ws=null,this.stompConnected=!1,this.messageCallbacks=new Map,this.connectPromise=null}}let i=[],j=null;async function k(){if(i.length>0)return i.pop();let a=new h;return await a.init(),await a.connect(),a}function l(a){i.length<5?i.push(a):a.close().catch(()=>{}),i.length<1&&(j||(j=setTimeout(async()=>{for(j=null;i.length<1;)try{let a=new h;if(await a.init(),await a.connect(),i.length>=5){a.close().catch(()=>{});break}i.push(a)}catch{break}},100),j.unref?.()))}class m extends e.Hv{constructor(){super("chipotle",{format:"openai"})}buildUrl(a,b){return`${g}/Amelia/api/chat`}buildHeaders(a){return{"Content-Type":"application/json"}}transformRequest(a,b,c){return"object"==typeof b&&null!==b?{...b,model:a}:b}async execute(a){let{model:b,stream:c,body:d,signal:e,log:g}=a,h=new TextEncoder;if(e?.aborted)return{response:new Response(h.encode(JSON.stringify({error:{message:"Request aborted",type:"abort",code:"ABORTED"}})),{status:499,headers:{"Content-Type":"application/json"}}),url:this.buildUrl(b,c),headers:this.buildHeaders(a.credentials),transformedBody:d};let i=[...d?.messages??[]].reverse().find(a=>"user"===a.role),j=i?.content??"",m=null;try{m=await k(),g?.info?.("CHIPOTLE",`Sending to Pepper (model=${b})`);let f=await m.chat(j,15e3,e);l(m),m=null;let i=`chatcmpl-${Date.now()}`,n=Math.floor(Date.now()/1e3);if(c){let e=`data: ${JSON.stringify({id:i,object:"chat.completion.chunk",created:n,model:b,choices:[{index:0,delta:{role:"assistant",content:f},finish_reason:null}]})}
379
+ data: ${JSON.stringify({id:i,object:"chat.completion.chunk",created:n,model:b,choices:[{index:0,delta:{},finish_reason:"stop"}]})}
380
380
  data: [DONE]
381
- `;return{response:new Response(h.encode(e),{status:200,headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache"}}),url:this.buildUrl(b,c),headers:this.buildHeaders(a.credentials),transformedBody:d}}let p=JSON.stringify({id:k,object:"chat.completion",created:o,model:b,choices:[{index:0,message:{role:"assistant",content:f},finish_reason:"stop"}],usage:{prompt_tokens:0,completion_tokens:0,total_tokens:0}});return{response:new Response(h.encode(p),{status:200,headers:{"Content-Type":"application/json"}}),url:this.buildUrl(b,c),headers:this.buildHeaders(a.credentials),transformedBody:d}}catch(i){m&&m.close().catch(()=>{});let e=i instanceof Error?i.message:String(i);return g?.error?.("CHIPOTLE",`Error: ${e}`),{response:new Response(h.encode(JSON.stringify({error:{message:(0,f.sanitizeErrorMessage)(e),type:"upstream_error",code:"CHIPOTLE_ERROR"}})),{status:502,headers:{"Content-Type":"application/json"}}),url:this.buildUrl(b,c),headers:this.buildHeaders(a.credentials),transformedBody:d}}}}},78095:(a,b,c)=>{c.d(b,{$:()=>ap});var d=c(97510),e=c(61408),f=c(50954),g=c(48161),h=c(76760),i=c(51455),j=c(77598),k=c(95538),l=c(93804);let m=null,n=!1,o=Number.parseInt(process.env.OMNIROUTE_GROK_TLS_TIMEOUT_MS||"",10)||6e4,p=Number.parseInt(process.env.OMNIROUTE_GROK_TLS_GRACE_MS||"",10)||1e4;class q extends Error{constructor(a){super(a),this.name="TlsClientHangError"}}async function r(a,b,c){let d=null,e=null;try{let f=[a,new Promise((a,c)=>{d=setTimeout(()=>{c(new q(`tls-client-node call exceeded ${b}ms — native binding likely deadlocked`))},b)})];return c&&f.push(new Promise((a,b)=>{c.aborted?b(v(c)):(e=()=>b(v(c)),c.addEventListener("abort",e,{once:!0}))})),await Promise.race(f)}finally{d&&clearTimeout(d),c&&e&&c.removeEventListener("abort",e)}}async function s(){return m||(m=(async()=>{try{let a=new(await Promise.resolve().then(c.bind(c,23560))).TLSClient({runtimeMode:"native"});return await a.start(),!function(){if(n)return;n=!0;let a=async()=>{if(null!==m)try{let a=await m;await a.stop?.()}catch{}};process.once("beforeExit",a),process.once("SIGINT",()=>{a()}),process.once("SIGTERM",()=>{a()})}(),a}catch(b){m=null;let a=b instanceof Error?b.message:String(b);throw new t(`TLS impersonation client failed to start: ${a}. Verify tls-client-node is installed and its native binary downloaded.`)}})()),m}class t extends Error{constructor(a){super(a),this.name="TlsClientUnavailableError"}}async function u(a,b={}){var c;let d;if(b.signal?.aborted)throw v(b.signal);let e=await s();if(b.signal?.aborted)throw v(b.signal);let f={method:b.method||"GET",headers:b.headers||{},body:b.body,tlsClientIdentifier:"chrome_146",timeoutMilliseconds:b.timeoutMs??o,followRedirects:!0,withRandomTLSExtensionOrder:!0,proxyUrl:(c=b.proxyUrl,(0,l.G)("https://grok.com",c,k.l))};if(b.stream)return await x(e,a,f,b.streamEofSymbol,b.signal??null,(b.timeoutMs??o)+p);try{d=await r(e.request(a,f),(b.timeoutMs??o)+p,b.signal??null)}catch(a){throw a instanceof q&&(m=null),a}if(b.signal?.aborted)throw v(b.signal);return{status:d.status,headers:w(d.headers),text:d.body,body:null}}function v(a){let b=a.reason;if(b instanceof Error)return b;let c=Error("string"==typeof b?b:"The operation was aborted");return c.name="AbortError",c}function w(a){let b=new Headers;for(let[c,d]of Object.entries(a||{}))for(let a of d)b.append(c,a);return b}async function x(a,b,c,d="[DONE]",e=null,f=o+p){let k=await (0,i.mkdtemp)((0,h.join)((0,g.tmpdir)(),"grok-stream-")),l=(0,h.join)(k,`${(0,j.randomUUID)()}.ndjson`),n={...c,streamOutputPath:l,streamOutputBlockSize:1024,streamOutputEOFSymbol:d},s=!0,t=r(a.request(b,n),f,e).catch(a=>{throw s&&a instanceof q&&(m=null,s=!1),a});if(!await A(l,5e3,t)){let a=await t.catch(a=>({status:502,headers:{},body:String(a)}));return await y(l),{status:a.status,headers:w(a.headers),text:a.body,body:null}}let u=await z(l,256);if(u&&/just a moment|window\._cf_chl_opt|challenges\.cloudflare\.com|attention required|cf-chl/i.test(u))return await y(l),{status:403,headers:new Headers({"Content-Type":"text/html"}),text:u,body:null};if(u.trimStart().startsWith("<"))return await y(l),{status:502,headers:new Headers({"Content-Type":"text/html"}),text:u,body:null};let v=function(a,b,c,d=null){return new ReadableStream({async start(e){let f=await (0,i.open)(a,"r"),g=Buffer.alloc(65536),h=0,j=!1,k=!1,l=null;c.then(()=>{j=!0},a=>{l=a instanceof Error?a:Error(String(a)),j=!0});let m=()=>{k=!0};d&&(d.aborted?k=!0:d.addEventListener("abort",m,{once:!0}));let n=!1;try{for(;!k;){let{bytesRead:a}=await f.read(g,0,g.length,h);if(a>0){let c=g.subarray(0,a);h+=a;let d=c.toString("utf8");if(d.includes(b)){let a=d.substring(0,d.indexOf(b));a&&e.enqueue(Buffer.from(a,"utf8")),e.close();return}e.enqueue(Buffer.from(c))}if(j){for(;;){let{bytesRead:a}=await f.read(g,0,g.length,h);if(0===a)break;let c=g.subarray(0,a);h+=a;let d=c.toString("utf8");if(d.includes(b)){let a=d.substring(0,d.indexOf(b));a&&e.enqueue(Buffer.from(a,"utf8")),e.close();return}e.enqueue(Buffer.from(c))}if(l&&!n){n=!0,e.error(l);return}e.close();return}await B(25)}}catch(a){n||(n=!0,e.error(a instanceof Error?a:Error(String(a))))}finally{await f.close().catch(()=>{}),await y(a),d&&d.removeEventListener("abort",m)}}})}(l,d,t,e);return{status:200,headers:new Headers({"Content-Type":"application/x-ndjson","Cache-Control":"no-cache"}),text:null,body:v}}async function y(a){await (0,i.unlink)(a).catch(()=>{}),await (0,i.rmdir)((0,h.dirname)(a)).catch(()=>{})}async function z(a,b){let c=await (0,i.open)(a,"r");try{let a=Buffer.alloc(b),{bytesRead:d}=await c.read(a,0,b,0);return a.subarray(0,d).toString("utf8")}finally{await c.close().catch(()=>{})}}async function A(a,b,c){let d=!1;c.then(()=>{d=!0},()=>{d=!0});let e=Date.now();for(;Date.now()-e<b;){try{if((await (0,i.stat)(a)).size>0)return!0}catch{}if(d)break;await B(25)}return!1}function B(a){return new Promise(b=>setTimeout(b,a))}var C=c(43659);let D="https://grok.com/rest/app-chat/conversations/new",E={fast:{modeId:"fast",isThinking:!1},expert:{modeId:"expert",isThinking:!0},heavy:{modeId:"heavy",isThinking:!0},"grok-420-computer-use-sa":{modeId:"grok-420-computer-use-sa",isThinking:!0},"grok-4":{modeId:"fast",isThinking:!1},"grok-4.1-fast":{modeId:"fast",isThinking:!1},"grok-4.1-expert":{modeId:"expert",isThinking:!0},"grok-4-heavy":{modeId:"heavy",isThinking:!0},"grok-4.20":{modeId:"expert",isThinking:!0},"grok-4.20-heavy":{modeId:"heavy",isThinking:!0},"grok-4.3":{modeId:"grok-420-computer-use-sa",isThinking:!0},"grok-4-3-thinking-1129":{modeId:"grok-420-computer-use-sa",isThinking:!0}};function F(a,b=!1){let c=b?"abcdefghijklmnopqrstuvwxyz0123456789":"abcdefghijklmnopqrstuvwxyz",d="";for(let b=0;b<a;b++)d+=c[Math.floor(Math.random()*c.length)];return d}function G(a){let b=new Uint8Array(a);return crypto.getRandomValues(b),Array.from(b,a=>a.toString(16).padStart(2,"0")).join("")}function H(a){return a.replace(/\n?---\s*\n\s*<internal_reminder>[\s\S]*?<\/internal_reminder>/gi,"").replace(/<internal_reminder>[\s\S]*?<\/internal_reminder>/gi,"").replace(/\n{3,}/g,"\n\n").trim()}function I(a){return"string"==typeof a.content?H(a.content):Array.isArray(a.content)?H(a.content.filter(a=>"text"===a.type).map(a=>String(a.text||"")).join(" ")):""}function J(a){if(!a)return{};if("object"==typeof a)return a;if("string"==typeof a)try{let b=JSON.parse(a);return b&&"object"==typeof b?b:{input:a}}catch{return{input:a}}return{}}function K(a){return a&&"object"==typeof a?Array.isArray(a)?`[${a.map(K).join(",")}]`:`{${Object.keys(a).sort().map(b=>`${JSON.stringify(b)}:${K(a[b])}`).join(",")}}`:JSON.stringify(a)}function L(a){return a.trim().replace(/\s+/g," ")}function M(a){return a.trim().replace(/^['"]|['"]$/g,"")}function N(a){return a.trim().replace(/\s+/g," ").toLowerCase()}function O(a,b){let c=a.trim(),d=J(b),e=aa(d.command,d.cmd,d.shell);if(e)return`${c}:command:${L(e)}`;let f=aa(d.url,d.uri);if(f)return`${c}:url:${M(f)}`;let g=aa(d.filePath,d.file_path,d.path,d.filename);if(g)return`${c}:path:${M(g)}`;let h=aa(d.query,d.search);return h?`${c}:query:${N(h)}`:`${c}:${K(J(d))}`}function P(a){let b=a.match(/https?:\/\/[^\s)\]}>"']+/i);if(b?.[0])return b[0].replace(/[.,;:!?]+$/,"");let c=a.match(/(?:^|\s)((?:[a-z0-9-]+\.)+[a-z]{2,}(?:\/[^\s)\]}>"']*)?)/i)?.[1];return c?`https://${c.replace(/[.,;:!?]+$/,"")}`:void 0}function Q(a){return/\b(webfetch|web_fetch|fetch|browse|open|read|lee|abre|extrae|investiga|analiza|resume|summarize|de qu[eé] va)\b/i.test(a)&&!!P(a)}function R(a){if(!a||"object"!=typeof a)return{};let b=a.properties;return b&&"object"==typeof b?b:{}}function S(a){if(!a||"object"!=typeof a)return[];let b=a.required;return Array.isArray(b)?b.filter(a=>"string"==typeof a):[]}function T(a){return`${a.name} ${a.description||""}`.toLowerCase()}function U(a,b){let c=new Set(Object.keys(R(a.parameters)).map(a=>a.toLowerCase()));return b.some(a=>c.has(a.toLowerCase()))}function V(a){if($(a))return!1;let b=T(a),c=a.name.toLowerCase(),d=/\b(bash|shell|terminal|run_command|execute_command|exec|command)\b/.test(c),e=/\b(?:run|execute).{0,24}\b(?:shell|bash|terminal|command)\b|\b(?:shell|bash|terminal)\b/.test(b);return d||U(a,["command","cmd","shell"])&&e}function W(a){let b=T(a);return U(a,["filePath","file_path","path"])&&/\b(read|file|filesystem|open)\b/.test(b)&&!/\b(write|edit|patch|delete|remove|grep|search|bash|shell|command)\b/.test(b)}function X(a){let b=T(a),c=a.name.toLowerCase(),d=/\b(webfetch|web.fetch|fetch_url|url_fetch|read_url|browse_page|browsepage)\b/.test(c),e=/\b(?:fetch|browse|read).{0,32}\b(?:url|uri|web page|page content)\b|\b(?:url|uri|web page|page content).{0,32}\b(?:fetch|browse|read)\b/.test(b);return d||!$(a)&&U(a,["url","uri"])&&e}function Y(a){let b=T(a);return U(a,["query","search"])&&/\b(web|internet|exa|browser|browse|serp)\b/.test(b)&&!$(a)&&!Z(a)}function Z(a){let b=T(a);return/\b(ctx_|memory|memories|conversation history|session notes|git commits|project memories|context.db|magic context)\b/.test(b)}function $(a){let b=T(a);return/\b(mcp|mcpproxy|upstream|registry|registries|quarantine|oauth|cache key|token usage|session notes|conversation transcript|handoff|context management|memory|memories|lsp|language server|plan file|server management|tool discovery|tools? using bm25)\b/.test(b)}function _(a){return null!=a&&""!==a}function aa(...a){for(let b of a)if("string"==typeof b&&b.trim())return b}function ab(a,b){let c=b.map(a=>a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|"),d=RegExp(`\\b(?:${c})\\s*(?:=|:|a|de)?\\s*(\\d+)`,"i"),e=a.match(d);if(!e)return;let f=Number(e[1]);return Number.isFinite(f)?f:void 0}function ac(a,b,c,d,e={preserveUnknownArgs:!0}){let f=c.toolsByName.get(a);if(!f)return b;let g=R(f.parameters),h=S(f.parameters),i={...b};for(let a of("filePath"in g&&!_(i.filePath)&&(i.filePath=aa(b.filePath,b.file_path,b.path)),"file_path"in g&&!_(i.file_path)&&(i.file_path=aa(b.file_path,b.filePath,b.path)),"path"in g&&!_(i.path)&&(i.path=aa(b.path,b.filePath,b.file_path)),"query"in g&&!_(i.query)&&(i.query=aa(b.query,b.search,b.input)),"url"in g&&!_(i.url)&&(i.url=aa(b.url,b.uri)),"uri"in g&&!_(i.uri)&&(i.uri=aa(b.uri,b.url)),"input"in g&&!_(i.input)&&(i.input=aa(b.input,b.query,b.command)),h)){if(_(i[a]))continue;let b=function(a,b,c,d){let e=a.toLowerCase(),f=aa(c.command,c.cmd,c.shell,c.input),g=aa(c.filePath,c.file_path,c.path,c.filename),h=aa(c.query,c.search,c.input),i=aa(c.url,c.uri);return"command"===e||"cmd"===e?f:"filepath"===e||"file_path"===e||"path"===e?g:"query"===e||"search"===e?h:"url"===e||"uri"===e?i:"input"===e?h||i||f||g:"description"===e||"reason"===e||"intent_reason"===e?f?`Execute shell command: ${f}`:g?`Read file: ${g}`:i?`Fetch URL: ${i}`:h?`Search: ${h}`:`Grok Web ${d} tool call`:"intent_data_sensitivity"===e?"private":void 0}(a,function(a,b){let c=a[b];if(!c||"object"!=typeof c)return;let d=c.type;return"string"==typeof d?d:void 0}(g,a),i,d);void 0!==b&&(i[a]=b)}if(!1!==e.preserveUnknownArgs||0===Object.keys(g).length)return i;let j={};for(let a of Object.keys(g))_(i[a])&&(j[a]=i[a]);for(let a of h)_(i[a])&&(j[a]=i[a]);return j}function ad(a,b){if(!b.enabled||!a.includes("<tool_call>"))return null;let c=[];for(let d of a.matchAll(/<tool_call>\s*([\s\S]*?)\s*<\/tool_call>/g)){let a;try{a=JSON.parse(d[1])}catch{continue}if(!a||"object"!=typeof a)continue;let e=a,f="string"==typeof e.name?e.name.trim():"";if(!f||!b.toolsByName.has(f))continue;let g=ac(f,function(a){if(!a)return{};if("object"==typeof a)return a;if("string"==typeof a)try{let b=JSON.parse(a);return b&&"object"==typeof b?b:{}}catch{return{input:a}}return{}}(e.arguments),b,"clientTool",{preserveUnknownArgs:!0});b.executedToolKeys.has(O(f,g))||c.push({id:"string"==typeof e.id&&e.id.trim()?e.id.trim():`call_${crypto.randomUUID()}`,type:"function",function:{name:f,arguments:JSON.stringify(g)}})}return c.length>0?c:null}function ae(a,b){let c=null;for(let d of b.toolsByName.values()){let e=function(a,b,c){let d=a.name.toLowerCase(),e=(a.description||"").toLowerCase(),f=new Set(Object.keys(R(a.parameters)).map(a=>a.toLowerCase())),g=`${d} ${e}`,h=c.lastUserText.toLowerCase(),i=0;if("bash"===b)V(a)||(i-=80),"bash"===d&&(i+=100),["shell","terminal","run_command","execute_command","exec","command"].includes(d)&&(i+=80),(f.has("command")||f.has("cmd"))&&(i+=60),/bash|shell|terminal|command|execute|run/.test(g)&&(i+=25),/read|search|grep|web|http|browser|context|note|memory/.test(d)&&(i-=50);else if("readFile"===b)W(a)||(i-=60),["read","read_file","readfile","file_read"].includes(d)&&(i+=100),(f.has("filepath")||f.has("file_path")||f.has("path"))&&(i+=50),/read.*file|file.*read|filesystem/.test(g)&&(i+=25),/write|edit|delete|remove|bash|shell|command/.test(g)&&(i-=50);else if("webSearch"===b||"browsePage"===b){let c=Q(h);(Z(a)||$(a))&&(i-=180),("browsePage"===b||c)&&(X(a)||(i-=60),/webfetch|web_fetch|fetch|browse|browse_page|read_url|url_fetch|page/.test(d)&&(i+=140),(f.has("url")||f.has("uri"))&&(i+=90),/fetch|browse|url|web page|page content|extract.*url|read.*url/.test(g)&&(i+=55),/websearch|web_search|search/.test(d)&&!(f.has("url")||f.has("uri"))&&(i-=80)),"webSearch"!==b||Y(a)||(i-=60),"browsePage"===b&&/\b(websearch|web_search|search)\b/.test(d)&&!(f.has("url")||f.has("uri"))&&(i-=120),["web_search","websearch","search"].includes(d)&&(i+=100),(f.has("query")||f.has("search"))&&(i+=50),/web.*search|search.*web|internet|browse/.test(g)&&(i+=25),/file|bash|shell|command|write|edit/.test(g)&&(i-=50)}return i}(d,a,{lastUserText:b.lastUserText});e<=0||(!c||e>c.score)&&(c={name:d.name,score:e})}return c?.name||null}async function*af(a,b){let c=a.getReader(),d=new TextDecoder,e="";try{for(;;){if(b?.aborted)return;let{value:a,done:f}=await c.read();if(f)break;for(e+=d.decode(a,{stream:!0});;){let a=e.indexOf("\n");if(a<0)break;let b=e.slice(0,a).trim();if(e=e.slice(a+1),b)try{yield JSON.parse(b)}catch{}}}let a=(e+=d.decode()).trim();if(a)try{yield JSON.parse(a)}catch{}}finally{c.releaseLock()}}let ag=[{start:"<xai:tool_usage_card",end:"</xai:tool_usage_card>"}];function ah(a){return a.replace(/<\/?xai:[^>]*>/g,"").replace(/<\/?grok:[^>]*>/g,"").replace(/<\/?argument\b[^>]*>/g,"").replace(/<!\[CDATA\[/g,"").replace(/\]\]>/g,"")}class ai{feed(a){return a?(this.buffer+=a,this.drain(!1)):""}flush(){let a=this.drain(!0);return this.buffer="",this.suppressedUntil=null,a}drain(a){let b="";for(;this.buffer;){if(this.suppressedUntil){let a=this.buffer.indexOf(this.suppressedUntil);if(a<0)return this.buffer=this.buffer.slice(this.longestEndPrefixStart(this.suppressedUntil)),b;this.buffer=this.buffer.slice(a+this.suppressedUntil.length),this.suppressedUntil=null;continue}let c=-1,d="";for(let a of ag){let b=this.buffer.indexOf(a.start);b>=0&&(c<0||b<c)&&(c=b,d=a.end)}if(c<0){if(!a){let a=this.buffer.lastIndexOf("<");if(a>=0&&this.buffer.length-a<=32)return b+=ah(this.buffer.slice(0,a)),this.buffer=this.buffer.slice(a),b}b+=ah(this.buffer),this.buffer="";break}b+=ah(this.buffer.slice(0,c)),this.buffer=this.buffer.slice(c);let e=this.buffer.indexOf(d),f=this.buffer.indexOf(">");if(f>=0&&/\/\s*>$/.test(this.buffer.slice(0,f+1))){this.buffer=this.buffer.slice(f+1);continue}if(e<0){this.suppressedUntil=d,this.buffer=this.buffer.slice(this.longestEndPrefixStart(d));break}this.buffer=this.buffer.slice(e+d.length)}return b}longestEndPrefixStart(a){let b=Math.min(this.buffer.length,a.length-1);for(let c=b;c>0;c--)if(this.buffer.slice(-c)===a.slice(0,c))return this.buffer.length-c;return this.buffer.length}constructor(){this.buffer="",this.suppressedUntil=null}}function aj(a){let b=new ai;return b.feed(a)+b.flush()}function ak(a){if(!a)return"";for(let b of["reasoning","reasoningContent","reasoning_content","thinking","thought"]){let c=a[b];if("string"==typeof c&&c.trim())return aj(c)}return""}async function*al(a,b,c,d,e=!1){let f="",g="",h=new ai,i=new ai,j="",k=!1;for await(let l of af(a,d)){if(l.error)return void(yield{error:l.error.message||`Grok error: ${l.error.code}`,done:!0});let a=l.result?.response;if(!a)continue;a.llmInfo?.modelHash&&!f&&(f=a.llmInfo.modelHash),a.responseId&&(g=a.responseId);let d=function(a,b){if(!b.enabled||!a.toolUsageCard)return null;let c=a.toolUsageCard,d=a.toolUsageCardId||String(c.toolUsageCardId||`call_${crypto.randomUUID()}`),e=c.bash;if(e?.args){let a=ae("bash",b);if(a){let c=ac(a,e.args,b,"bash",{preserveUnknownArgs:!1});return b.executedToolKeys.has(O(a,c))?null:{id:d,type:"function",function:{name:a,arguments:JSON.stringify(c)}}}}let f=c.readFile||c.read_file;if(f?.args){let a=f.args.filePath||f.args.file_path||f.args.path,c=ae("readFile",b);if(c&&"string"==typeof a){let e=ab(b.lastUserText,["offset"]),g=ab(b.lastUserText,["limit","limite","l\xedmite"]),h=ac(c,{...f.args,...void 0!==e?{offset:e}:{},...void 0!==g?{limit:g}:{},filePath:a,file_path:a,path:a},b,"readFile",{preserveUnknownArgs:!1});return b.executedToolKeys.has(O(c,h))?null:{id:d,type:"function",function:{name:c,arguments:JSON.stringify(h)}}}}let g=c.webSearch;if(g?.args){let a=ae("webSearch",b);if(a){let c=Q(b.lastUserText)?P(b.lastUserText):void 0,e=ac(a,c?{...g.args,url:c,uri:c}:g.args,b,c?"webFetch":"webSearch",{preserveUnknownArgs:!1});return b.executedToolKeys.has(O(a,e))?null:{id:d,type:"function",function:{name:a,arguments:JSON.stringify(e)}}}}let h=c.browsePage||c.browse_page;if(h?.args){let a=aa(h.args.url,h.args.uri),c=ae("browsePage",b);if(c&&a){let e=ac(c,{...h.args,url:a,uri:a,input:a},b,"browsePage",{preserveUnknownArgs:!1});return b.executedToolKeys.has(O(c,e))?null:{id:d,type:"function",function:{name:c,arguments:JSON.stringify(e)}}}}return null}(a,c);if(d)return void(yield{toolCalls:[d],fingerprint:f,responseId:g});if("raw_function_result"===a.messageTag||"tool_usage_card"===a.messageTag)continue;if(a.modelResponse){let c=a.modelResponse,d=b?ak(c):"";if((!e||!k)&&d){let a=i.feed(d),b=a.startsWith(j)?a.slice(j.length):a;b&&(j+=b,yield{thinking:b})}if(c.message){let a=aj(c.message);a&&(k=!0),yield{fullMessage:a,fingerprint:f,responseId:g}}c.metadata?.llm_info?.modelHash&&(f=c.metadata.llm_info.modelHash);continue}let m=b?ak(a):"";if((!e||!k)&&m){let a=i.feed(m),b=a.startsWith(j)?a.slice(j.length):a;b&&(j+=b,yield{thinking:b,fingerprint:f,responseId:g})}if(null!=a.token){if(a.isThinking){let b=e&&k?"":function(a){let b=aj(a.token||""),c=b.trim();return!c||"header"===a.messageTag&&0===a.messageStepId&&/^(?:\.{3}|thinking(?: about your request)?)$/i.test(c)?"":"header"===a.messageTag||"summary"===a.messageTag?`${c}
381
+ `;return{response:new Response(h.encode(e),{status:200,headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache"}}),url:this.buildUrl(b,c),headers:this.buildHeaders(a.credentials),transformedBody:d}}let o=JSON.stringify({id:i,object:"chat.completion",created:n,model:b,choices:[{index:0,message:{role:"assistant",content:f},finish_reason:"stop"}],usage:{prompt_tokens:0,completion_tokens:0,total_tokens:0}});return{response:new Response(h.encode(o),{status:200,headers:{"Content-Type":"application/json"}}),url:this.buildUrl(b,c),headers:this.buildHeaders(a.credentials),transformedBody:d}}catch(i){m&&(m.stompConnected&&m.ws&&1===m.ws.readyState?l(m):m.close().catch(()=>{}),m=null);let e=i instanceof Error?i.message:String(i);return g?.error?.("CHIPOTLE",`Error: ${e}`),{response:new Response(h.encode(JSON.stringify({error:{message:(0,f.sanitizeErrorMessage)(e),type:"upstream_error",code:"CHIPOTLE_ERROR"}})),{status:502,headers:{"Content-Type":"application/json"}}),url:this.buildUrl(b,c),headers:this.buildHeaders(a.credentials),transformedBody:d}}}}},78095:(a,b,c)=>{c.d(b,{$:()=>ap});var d=c(97510),e=c(61408),f=c(50954),g=c(48161),h=c(76760),i=c(51455),j=c(77598),k=c(95538),l=c(93804);let m=null,n=!1,o=Number.parseInt(process.env.OMNIROUTE_GROK_TLS_TIMEOUT_MS||"",10)||6e4,p=Number.parseInt(process.env.OMNIROUTE_GROK_TLS_GRACE_MS||"",10)||1e4;class q extends Error{constructor(a){super(a),this.name="TlsClientHangError"}}async function r(a,b,c){let d=null,e=null;try{let f=[a,new Promise((a,c)=>{d=setTimeout(()=>{c(new q(`tls-client-node call exceeded ${b}ms — native binding likely deadlocked`))},b)})];return c&&f.push(new Promise((a,b)=>{c.aborted?b(v(c)):(e=()=>b(v(c)),c.addEventListener("abort",e,{once:!0}))})),await Promise.race(f)}finally{d&&clearTimeout(d),c&&e&&c.removeEventListener("abort",e)}}async function s(){return m||(m=(async()=>{try{let a=new(await Promise.resolve().then(c.bind(c,23560))).TLSClient({runtimeMode:"native"});return await a.start(),!function(){if(n)return;n=!0;let a=async()=>{if(null!==m)try{let a=await m;await a.stop?.()}catch{}};process.once("beforeExit",a),process.once("SIGINT",()=>{a()}),process.once("SIGTERM",()=>{a()})}(),a}catch(b){m=null;let a=b instanceof Error?b.message:String(b);throw new t(`TLS impersonation client failed to start: ${a}. Verify tls-client-node is installed and its native binary downloaded.`)}})()),m}class t extends Error{constructor(a){super(a),this.name="TlsClientUnavailableError"}}async function u(a,b={}){var c;let d;if(b.signal?.aborted)throw v(b.signal);let e=await s();if(b.signal?.aborted)throw v(b.signal);let f={method:b.method||"GET",headers:b.headers||{},body:b.body,tlsClientIdentifier:"chrome_146",timeoutMilliseconds:b.timeoutMs??o,followRedirects:!0,withRandomTLSExtensionOrder:!0,proxyUrl:(c=b.proxyUrl,(0,l.G)("https://grok.com",c,k.l))};if(b.stream)return await x(e,a,f,b.streamEofSymbol,b.signal??null,(b.timeoutMs??o)+p);try{d=await r(e.request(a,f),(b.timeoutMs??o)+p,b.signal??null)}catch(a){throw a instanceof q&&(m=null),a}if(b.signal?.aborted)throw v(b.signal);return{status:d.status,headers:w(d.headers),text:d.body,body:null}}function v(a){let b=a.reason;if(b instanceof Error)return b;let c=Error("string"==typeof b?b:"The operation was aborted");return c.name="AbortError",c}function w(a){let b=new Headers;for(let[c,d]of Object.entries(a||{}))for(let a of d)b.append(c,a);return b}async function x(a,b,c,d="[DONE]",e=null,f=o+p){let k=await (0,i.mkdtemp)((0,h.join)((0,g.tmpdir)(),"grok-stream-")),l=(0,h.join)(k,`${(0,j.randomUUID)()}.ndjson`),n={...c,streamOutputPath:l,streamOutputBlockSize:1024,streamOutputEOFSymbol:d},s=!0,t=r(a.request(b,n),f,e).catch(a=>{throw s&&a instanceof q&&(m=null,s=!1),a});if(!await A(l,5e3,t)){let a=await t.catch(a=>({status:502,headers:{},body:String(a)}));return await y(l),{status:a.status,headers:w(a.headers),text:a.body,body:null}}let u=await z(l,256);if(u&&/just a moment|window\._cf_chl_opt|challenges\.cloudflare\.com|attention required|cf-chl/i.test(u))return await y(l),{status:403,headers:new Headers({"Content-Type":"text/html"}),text:u,body:null};if(u.trimStart().startsWith("<"))return await y(l),{status:502,headers:new Headers({"Content-Type":"text/html"}),text:u,body:null};let v=function(a,b,c,d=null){return new ReadableStream({async start(e){let f=await (0,i.open)(a,"r"),g=Buffer.alloc(65536),h=0,j=!1,k=!1,l=null;c.then(()=>{j=!0},a=>{l=a instanceof Error?a:Error(String(a)),j=!0});let m=()=>{k=!0};d&&(d.aborted?k=!0:d.addEventListener("abort",m,{once:!0}));let n=!1;try{for(;!k;){let{bytesRead:a}=await f.read(g,0,g.length,h);if(a>0){let c=g.subarray(0,a);h+=a;let d=c.toString("utf8");if(d.includes(b)){let a=d.substring(0,d.indexOf(b));a&&e.enqueue(Buffer.from(a,"utf8")),e.close();return}e.enqueue(Buffer.from(c))}if(j){for(;;){let{bytesRead:a}=await f.read(g,0,g.length,h);if(0===a)break;let c=g.subarray(0,a);h+=a;let d=c.toString("utf8");if(d.includes(b)){let a=d.substring(0,d.indexOf(b));a&&e.enqueue(Buffer.from(a,"utf8")),e.close();return}e.enqueue(Buffer.from(c))}if(l&&!n){n=!0,e.error(l);return}e.close();return}await B(25)}}catch(a){n||(n=!0,e.error(a instanceof Error?a:Error(String(a))))}finally{await f.close().catch(()=>{}),await y(a),d&&d.removeEventListener("abort",m)}}})}(l,d,t,e);return{status:200,headers:new Headers({"Content-Type":"application/x-ndjson","Cache-Control":"no-cache"}),text:null,body:v}}async function y(a){await (0,i.unlink)(a).catch(()=>{}),await (0,i.rmdir)((0,h.dirname)(a)).catch(()=>{})}async function z(a,b){let c=await (0,i.open)(a,"r");try{let a=Buffer.alloc(b),{bytesRead:d}=await c.read(a,0,b,0);return a.subarray(0,d).toString("utf8")}finally{await c.close().catch(()=>{})}}async function A(a,b,c){let d=!1;c.then(()=>{d=!0},()=>{d=!0});let e=Date.now();for(;Date.now()-e<b;){try{if((await (0,i.stat)(a)).size>0)return!0}catch{}if(d)break;await B(25)}return!1}function B(a){return new Promise(b=>setTimeout(b,a))}var C=c(43659);let D="https://grok.com/rest/app-chat/conversations/new",E={fast:{modeId:"fast",isThinking:!1},expert:{modeId:"expert",isThinking:!0},heavy:{modeId:"heavy",isThinking:!0},"grok-420-computer-use-sa":{modeId:"grok-420-computer-use-sa",isThinking:!0},"grok-4":{modeId:"fast",isThinking:!1},"grok-4.1-fast":{modeId:"fast",isThinking:!1},"grok-4.1-expert":{modeId:"expert",isThinking:!0},"grok-4-heavy":{modeId:"heavy",isThinking:!0},"grok-4.20":{modeId:"expert",isThinking:!0},"grok-4.20-heavy":{modeId:"heavy",isThinking:!0},"grok-4.3":{modeId:"grok-420-computer-use-sa",isThinking:!0},"grok-4-3-thinking-1129":{modeId:"grok-420-computer-use-sa",isThinking:!0}};function F(a,b=!1){let c=b?"abcdefghijklmnopqrstuvwxyz0123456789":"abcdefghijklmnopqrstuvwxyz",d="";for(let b=0;b<a;b++)d+=c[Math.floor(Math.random()*c.length)];return d}function G(a){let b=new Uint8Array(a);return crypto.getRandomValues(b),Array.from(b,a=>a.toString(16).padStart(2,"0")).join("")}function H(a){return a.replace(/\n?---\s*\n\s*<internal_reminder>[\s\S]*?<\/internal_reminder>/gi,"").replace(/<internal_reminder>[\s\S]*?<\/internal_reminder>/gi,"").replace(/\n{3,}/g,"\n\n").trim()}function I(a){return"string"==typeof a.content?H(a.content):Array.isArray(a.content)?H(a.content.filter(a=>"text"===a.type).map(a=>String(a.text||"")).join(" ")):""}function J(a){if(!a)return{};if("object"==typeof a)return a;if("string"==typeof a)try{let b=JSON.parse(a);return b&&"object"==typeof b?b:{input:a}}catch{return{input:a}}return{}}function K(a){return a&&"object"==typeof a?Array.isArray(a)?`[${a.map(K).join(",")}]`:`{${Object.keys(a).sort().map(b=>`${JSON.stringify(b)}:${K(a[b])}`).join(",")}}`:JSON.stringify(a)}function L(a){return a.trim().replace(/\s+/g," ")}function M(a){return a.trim().replace(/^['"]|['"]$/g,"")}function N(a){return a.trim().replace(/\s+/g," ").toLowerCase()}function O(a,b){let c=a.trim(),d=J(b),e=aa(d.command,d.cmd,d.shell);if(e)return`${c}:command:${L(e)}`;let f=aa(d.url,d.uri);if(f)return`${c}:url:${M(f)}`;let g=aa(d.filePath,d.file_path,d.path,d.filename);if(g)return`${c}:path:${M(g)}`;let h=aa(d.query,d.search);return h?`${c}:query:${N(h)}`:`${c}:${K(J(d))}`}function P(a){let b=a.match(/https?:\/\/[^\s)\]}>"']+/i);if(b?.[0])return b[0].replace(/[.,;:!?]+$/,"");let c=a.match(/(?:^|\s)((?:[a-z0-9-]+\.)+[a-z]{2,}(?:\/[^\s)\]}>"']*)?)/i)?.[1];return c?`https://${c.replace(/[.,;:!?]+$/,"")}`:void 0}function Q(a){return/\b(webfetch|web_fetch|fetch|browse|open|read|lee|abre|extrae|investiga|analiza|resume|summarize|de qu[eé] va)\b/i.test(a)&&!!P(a)}function R(a){if(!a||"object"!=typeof a)return{};let b=a.properties;return b&&"object"==typeof b?b:{}}function S(a){if(!a||"object"!=typeof a)return[];let b=a.required;return Array.isArray(b)?b.filter(a=>"string"==typeof a):[]}function T(a){return`${a.name} ${a.description||""}`.toLowerCase()}function U(a,b){let c=new Set(Object.keys(R(a.parameters)).map(a=>a.toLowerCase()));return b.some(a=>c.has(a.toLowerCase()))}function V(a){if($(a))return!1;let b=T(a),c=a.name.toLowerCase(),d=/\b(bash|shell|terminal|run_command|execute_command|exec|command)\b/.test(c),e=/\b(?:run|execute).{0,24}\b(?:shell|bash|terminal|command)\b|\b(?:shell|bash|terminal)\b/.test(b);return d||U(a,["command","cmd","shell"])&&e}function W(a){let b=T(a);return U(a,["filePath","file_path","path"])&&/\b(read|file|filesystem|open)\b/.test(b)&&!/\b(write|edit|patch|delete|remove|grep|search|bash|shell|command)\b/.test(b)}function X(a){let b=T(a),c=a.name.toLowerCase(),d=/\b(webfetch|web.fetch|fetch_url|url_fetch|read_url|browse_page|browsepage)\b/.test(c),e=/\b(?:fetch|browse|read).{0,32}\b(?:url|uri|web page|page content)\b|\b(?:url|uri|web page|page content).{0,32}\b(?:fetch|browse|read)\b/.test(b);return d||!$(a)&&U(a,["url","uri"])&&e}function Y(a){let b=T(a);return U(a,["query","search"])&&/\b(web|internet|exa|browser|browse|serp)\b/.test(b)&&!$(a)&&!Z(a)}function Z(a){let b=T(a);return/\b(ctx_|memory|memories|conversation history|session notes|git commits|project memories|context.db|magic context)\b/.test(b)}function $(a){let b=T(a);return/\b(mcp|mcpproxy|upstream|registry|registries|quarantine|oauth|cache key|token usage|session notes|conversation transcript|handoff|context management|memory|memories|lsp|language server|plan file|server management|tool discovery|tools? using bm25)\b/.test(b)}function _(a){return null!=a&&""!==a}function aa(...a){for(let b of a)if("string"==typeof b&&b.trim())return b}function ab(a,b){let c=b.map(a=>a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|"),d=RegExp(`\\b(?:${c})\\s*(?:=|:|a|de)?\\s*(\\d+)`,"i"),e=a.match(d);if(!e)return;let f=Number(e[1]);return Number.isFinite(f)?f:void 0}function ac(a,b,c,d,e={preserveUnknownArgs:!0}){let f=c.toolsByName.get(a);if(!f)return b;let g=R(f.parameters),h=S(f.parameters),i={...b};for(let a of("filePath"in g&&!_(i.filePath)&&(i.filePath=aa(b.filePath,b.file_path,b.path)),"file_path"in g&&!_(i.file_path)&&(i.file_path=aa(b.file_path,b.filePath,b.path)),"path"in g&&!_(i.path)&&(i.path=aa(b.path,b.filePath,b.file_path)),"query"in g&&!_(i.query)&&(i.query=aa(b.query,b.search,b.input)),"url"in g&&!_(i.url)&&(i.url=aa(b.url,b.uri)),"uri"in g&&!_(i.uri)&&(i.uri=aa(b.uri,b.url)),"input"in g&&!_(i.input)&&(i.input=aa(b.input,b.query,b.command)),h)){if(_(i[a]))continue;let b=function(a,b,c,d){let e=a.toLowerCase(),f=aa(c.command,c.cmd,c.shell,c.input),g=aa(c.filePath,c.file_path,c.path,c.filename),h=aa(c.query,c.search,c.input),i=aa(c.url,c.uri);return"command"===e||"cmd"===e?f:"filepath"===e||"file_path"===e||"path"===e?g:"query"===e||"search"===e?h:"url"===e||"uri"===e?i:"input"===e?h||i||f||g:"description"===e||"reason"===e||"intent_reason"===e?f?`Execute shell command: ${f}`:g?`Read file: ${g}`:i?`Fetch URL: ${i}`:h?`Search: ${h}`:`Grok Web ${d} tool call`:"intent_data_sensitivity"===e?"private":void 0}(a,function(a,b){let c=a[b];if(!c||"object"!=typeof c)return;let d=c.type;return"string"==typeof d?d:void 0}(g,a),i,d);void 0!==b&&(i[a]=b)}if(!1!==e.preserveUnknownArgs||0===Object.keys(g).length)return i;let j={};for(let a of Object.keys(g))_(i[a])&&(j[a]=i[a]);for(let a of h)_(i[a])&&(j[a]=i[a]);return j}function ad(a,b){if(!b.enabled||!a.includes("<tool_call>"))return null;let c=[];for(let d of a.matchAll(/<tool_call>\s*([\s\S]*?)\s*<\/tool_call>/g)){let a;try{a=JSON.parse(d[1])}catch{continue}if(!a||"object"!=typeof a)continue;let e=a,f="string"==typeof e.name?e.name.trim():"";if(!f||!b.toolsByName.has(f))continue;let g=ac(f,function(a){if(!a)return{};if("object"==typeof a)return a;if("string"==typeof a)try{let b=JSON.parse(a);return b&&"object"==typeof b?b:{}}catch{return{input:a}}return{}}(e.arguments),b,"clientTool",{preserveUnknownArgs:!0});b.executedToolKeys.has(O(f,g))||c.push({id:"string"==typeof e.id&&e.id.trim()?e.id.trim():`call_${crypto.randomUUID()}`,type:"function",function:{name:f,arguments:JSON.stringify(g)}})}return c.length>0?c:null}function ae(a,b){let c=null;for(let d of b.toolsByName.values()){let e=function(a,b,c){let d=a.name.toLowerCase(),e=(a.description||"").toLowerCase(),f=new Set(Object.keys(R(a.parameters)).map(a=>a.toLowerCase())),g=`${d} ${e}`,h=c.lastUserText.toLowerCase(),i=0;if("bash"===b)V(a)||(i-=80),"bash"===d&&(i+=100),["shell","terminal","run_command","execute_command","exec","command"].includes(d)&&(i+=80),(f.has("command")||f.has("cmd"))&&(i+=60),/bash|shell|terminal|command|execute|run/.test(g)&&(i+=25),/read|search|grep|web|http|browser|context|note|memory/.test(d)&&(i-=50);else if("readFile"===b)W(a)||(i-=60),["read","read_file","readfile","file_read"].includes(d)&&(i+=100),(f.has("filepath")||f.has("file_path")||f.has("path"))&&(i+=50),/read.*file|file.*read|filesystem/.test(g)&&(i+=25),/write|edit|delete|remove|bash|shell|command/.test(g)&&(i-=50);else if("webSearch"===b||"browsePage"===b){let c=Q(h);(Z(a)||$(a))&&(i-=180),("browsePage"===b||c)&&(X(a)||(i-=60),/webfetch|web_fetch|fetch|browse|browse_page|read_url|url_fetch|page/.test(d)&&(i+=140),(f.has("url")||f.has("uri"))&&(i+=90),/fetch|browse|url|web page|page content|extract.*url|read.*url/.test(g)&&(i+=55),/websearch|web_search|search/.test(d)&&!(f.has("url")||f.has("uri"))&&(i-=80)),"webSearch"!==b||Y(a)||(i-=60),"browsePage"===b&&/\b(websearch|web_search|search)\b/.test(d)&&!(f.has("url")||f.has("uri"))&&(i-=120),["web_search","websearch","search"].includes(d)&&(i+=100),(f.has("query")||f.has("search"))&&(i+=50),/web.*search|search.*web|internet|browse/.test(g)&&(i+=25),/file|bash|shell|command|write|edit/.test(g)&&(i-=50)}return i}(d,a,{lastUserText:b.lastUserText});e<=0||(!c||e>c.score)&&(c={name:d.name,score:e})}return c?.name||null}async function*af(a,b){let c=a.getReader(),d=new TextDecoder,e="";try{for(;;){if(b?.aborted)return;let{value:a,done:f}=await c.read();if(f)break;for(e+=d.decode(a,{stream:!0});;){let a=e.indexOf("\n");if(a<0)break;let b=e.slice(0,a).trim();if(e=e.slice(a+1),b)try{yield JSON.parse(b)}catch{}}}let a=(e+=d.decode()).trim();if(a)try{yield JSON.parse(a)}catch{}}finally{c.releaseLock()}}let ag=[{start:"<xai:tool_usage_card",end:"</xai:tool_usage_card>"}];function ah(a){return a.replace(/<\/?xai:[^>]*>/g,"").replace(/<\/?grok:[^>]*>/g,"").replace(/<\/?argument\b[^>]*>/g,"").replace(/<!\[CDATA\[/g,"").replace(/\]\]>/g,"")}class ai{feed(a){return a?(this.buffer+=a,this.drain(!1)):""}flush(){let a=this.drain(!0);return this.buffer="",this.suppressedUntil=null,a}drain(a){let b="";for(;this.buffer;){if(this.suppressedUntil){let a=this.buffer.indexOf(this.suppressedUntil);if(a<0)return this.buffer=this.buffer.slice(this.longestEndPrefixStart(this.suppressedUntil)),b;this.buffer=this.buffer.slice(a+this.suppressedUntil.length),this.suppressedUntil=null;continue}let c=-1,d="";for(let a of ag){let b=this.buffer.indexOf(a.start);b>=0&&(c<0||b<c)&&(c=b,d=a.end)}if(c<0){if(!a){let a=this.buffer.lastIndexOf("<");if(a>=0&&this.buffer.length-a<=32)return b+=ah(this.buffer.slice(0,a)),this.buffer=this.buffer.slice(a),b}b+=ah(this.buffer),this.buffer="";break}b+=ah(this.buffer.slice(0,c)),this.buffer=this.buffer.slice(c);let e=this.buffer.indexOf(d),f=this.buffer.indexOf(">");if(f>=0&&/\/\s*>$/.test(this.buffer.slice(0,f+1))){this.buffer=this.buffer.slice(f+1);continue}if(e<0){this.suppressedUntil=d,this.buffer=this.buffer.slice(this.longestEndPrefixStart(d));break}this.buffer=this.buffer.slice(e+d.length)}return b}longestEndPrefixStart(a){let b=Math.min(this.buffer.length,a.length-1);for(let c=b;c>0;c--)if(this.buffer.slice(-c)===a.slice(0,c))return this.buffer.length-c;return this.buffer.length}constructor(){this.buffer="",this.suppressedUntil=null}}function aj(a){let b=new ai;return b.feed(a)+b.flush()}function ak(a){if(!a)return"";for(let b of["reasoning","reasoningContent","reasoning_content","thinking","thought"]){let c=a[b];if("string"==typeof c&&c.trim())return aj(c)}return""}async function*al(a,b,c,d,e=!1){let f="",g="",h=new ai,i=new ai,j="",k=!1;for await(let l of af(a,d)){if(l.error)return void(yield{error:l.error.message||`Grok error: ${l.error.code}`,done:!0});let a=l.result?.response;if(!a)continue;a.llmInfo?.modelHash&&!f&&(f=a.llmInfo.modelHash),a.responseId&&(g=a.responseId);let d=function(a,b){if(!b.enabled||!a.toolUsageCard)return null;let c=a.toolUsageCard,d=a.toolUsageCardId||String(c.toolUsageCardId||`call_${crypto.randomUUID()}`),e=c.bash;if(e?.args){let a=ae("bash",b);if(a){let c=ac(a,e.args,b,"bash",{preserveUnknownArgs:!1});return b.executedToolKeys.has(O(a,c))?null:{id:d,type:"function",function:{name:a,arguments:JSON.stringify(c)}}}}let f=c.readFile||c.read_file;if(f?.args){let a=f.args.filePath||f.args.file_path||f.args.path,c=ae("readFile",b);if(c&&"string"==typeof a){let e=ab(b.lastUserText,["offset"]),g=ab(b.lastUserText,["limit","limite","l\xedmite"]),h=ac(c,{...f.args,...void 0!==e?{offset:e}:{},...void 0!==g?{limit:g}:{},filePath:a,file_path:a,path:a},b,"readFile",{preserveUnknownArgs:!1});return b.executedToolKeys.has(O(c,h))?null:{id:d,type:"function",function:{name:c,arguments:JSON.stringify(h)}}}}let g=c.webSearch;if(g?.args){let a=ae("webSearch",b);if(a){let c=Q(b.lastUserText)?P(b.lastUserText):void 0,e=ac(a,c?{...g.args,url:c,uri:c}:g.args,b,c?"webFetch":"webSearch",{preserveUnknownArgs:!1});return b.executedToolKeys.has(O(a,e))?null:{id:d,type:"function",function:{name:a,arguments:JSON.stringify(e)}}}}let h=c.browsePage||c.browse_page;if(h?.args){let a=aa(h.args.url,h.args.uri),c=ae("browsePage",b);if(c&&a){let e=ac(c,{...h.args,url:a,uri:a,input:a},b,"browsePage",{preserveUnknownArgs:!1});return b.executedToolKeys.has(O(c,e))?null:{id:d,type:"function",function:{name:c,arguments:JSON.stringify(e)}}}}return null}(a,c);if(d)return void(yield{toolCalls:[d],fingerprint:f,responseId:g});if("raw_function_result"===a.messageTag||"tool_usage_card"===a.messageTag)continue;if(a.modelResponse){let c=a.modelResponse,d=b?ak(c):"";if((!e||!k)&&d){let a=i.feed(d),b=a.startsWith(j)?a.slice(j.length):a;b&&(j+=b,yield{thinking:b})}if(c.message){let a=aj(c.message);a&&(k=!0),yield{fullMessage:a,fingerprint:f,responseId:g}}c.metadata?.llm_info?.modelHash&&(f=c.metadata.llm_info.modelHash);continue}let m=b?ak(a):"";if((!e||!k)&&m){let a=i.feed(m),b=a.startsWith(j)?a.slice(j.length):a;b&&(j+=b,yield{thinking:b,fingerprint:f,responseId:g})}if(null!=a.token){if(a.isThinking){let b=e&&k?"":function(a){let b=aj(a.token||""),c=b.trim();return!c||"header"===a.messageTag&&0===a.messageStepId&&/^(?:\.{3}|thinking(?: about your request)?)$/i.test(c)?"":"header"===a.messageTag||"summary"===a.messageTag?`${c}
382
382
  `:b}(a);b&&(yield{thinking:b,fingerprint:f,responseId:g});continue}let b=h.feed(a.token);b&&(k=!0,yield{delta:b,fingerprint:f,responseId:g})}}let l=e&&k?"":i.flush();if(l){let a=l.startsWith(j)?l.slice(j.length):l;a&&(yield{thinking:a,fingerprint:f,responseId:g})}let m=h.flush();m&&(yield{delta:m,fingerprint:f,responseId:g}),yield{done:!0,fingerprint:f,responseId:g}}function am(a){return`data: ${JSON.stringify(a)}
383
383
 
384
384
  `}function an(a,b,c){for(let d=0;d<c.toolCalls.length;d++)a.enqueue(b.encode(am({id:c.id,object:"chat.completion.chunk",created:c.created,model:c.model,system_fingerprint:c.fingerprint||null,choices:[{index:0,delta:{tool_calls:[{index:d,...c.toolCalls[d]}]},finish_reason:null,logprobs:null}]})));a.enqueue(b.encode(am({id:c.id,object:"chat.completion.chunk",created:c.created,model:c.model,system_fingerprint:c.fingerprint||null,choices:[{index:0,delta:{},finish_reason:"tool_calls",logprobs:null}]}))),a.enqueue(b.encode("data: [DONE]\n\n"))}async function ao(a,b,c,d,e,f,g){let h="",i="",j=[];for await(let k of al(a,e,f,g)){if(k.fingerprint&&(i=k.fingerprint),k.error)return new Response(JSON.stringify({error:{message:k.error,type:"upstream_error",code:"GROK_ERROR"}}),{status:502,headers:{"Content-Type":"application/json"}});if(k.thinking){j.push(k.thinking);continue}if(k.toolCalls)return new Response(JSON.stringify({id:c,object:"chat.completion",created:d,model:b,system_fingerprint:i||null,choices:[{index:0,message:{role:"assistant",content:null,tool_calls:k.toolCalls},finish_reason:"tool_calls",logprobs:null}],usage:{prompt_tokens:0,completion_tokens:0,total_tokens:0}}),{status:200,headers:{"Content-Type":"application/json"}});if(k.done)break;k.fullMessage?h=k.fullMessage:k.delta&&(h+=k.delta)}let k=ad(h,f);if(k)return new Response(JSON.stringify({id:c,object:"chat.completion",created:d,model:b,system_fingerprint:i||null,choices:[{index:0,message:{role:"assistant",content:null,tool_calls:k},finish_reason:"tool_calls",logprobs:null}],usage:{prompt_tokens:0,completion_tokens:0,total_tokens:0}}),{status:200,headers:{"Content-Type":"application/json"}});let l={role:"assistant",content:h};j.length>0&&(l.reasoning_content=j.join("\n"));let m=Math.ceil(h.length/4),n=Math.ceil(h.length/4);return new Response(JSON.stringify({id:c,object:"chat.completion",created:d,model:b,system_fingerprint:i||null,choices:[{index:0,message:l,finish_reason:"stop",logprobs:null}],usage:{prompt_tokens:m,completion_tokens:n,total_tokens:m+n}}),{status:200,headers:{"Content-Type":"application/json"}})}class ap extends d.Hv{constructor(){super("grok-web",{id:"grok-web",baseUrl:D})}async execute({model:a,body:b,stream:c,credentials:g,signal:h,log:i,upstreamExtraHeaders:j}){let k,l,m=b.messages;if(!m||!Array.isArray(m)||0===m.length)return{response:new Response(JSON.stringify({error:{message:"Missing or empty messages array",type:"invalid_request"}}),{status:400,headers:{"Content-Type":"application/json"}}),url:D,headers:{},transformedBody:b};let n=E[a];n||i?.info?.("GROK-WEB",`Unmapped model ${a}, defaulting to fast mode`);let o=function(a){let b=Array.isArray(a.tools)?a.tools:[],c=Array.isArray(a.messages)?a.messages:[],d=function(a){for(let b=a.length-1;b>=0;b--)if("user"===String(a[b].role||""))return I(a[b]);return""}(c),e=function(a){let b=-1;for(let c=a.length-1;c>=0;c--)if("user"===String(a[c].role||"")){b=c;break}let c=new Map,d=new Set,e=[];for(let f=Math.max(0,b+1);f<a.length;f++){let b=a[f];if("assistant"===String(b.role||"")&&Array.isArray(b.tool_calls))for(let a of b.tool_calls){let b="string"==typeof a.id?a.id:"",d=a.function;if(!b||!d||"object"!=typeof d)continue;let e="string"==typeof d.name?d.name:"";e&&c.set(b,{name:e,args:J(d.arguments)})}if("tool"===String(b.role||"")){let a="string"==typeof b.tool_call_id?b.tool_call_id:"",f=a?c.get(a):null;if(f){let a=O(f.name,f.args);d.add(a);let b=function(a,b){let c=J(b),d=aa(c.command,c.cmd,c.shell);if(d)return`${a}(command=${JSON.stringify(L(d))})`;let e=aa(c.url,c.uri);if(e)return`${a}(url=${JSON.stringify(M(e))})`;let f=aa(c.filePath,c.file_path,c.path,c.filename);if(f)return`${a}(path=${JSON.stringify(M(f))})`;let g=aa(c.query,c.search);return g?`${a}(query=${JSON.stringify(N(g))})`:`${a}(${K(c)})`}(f.name,f.args);e.includes(b)||e.push(b)}}}return{keys:d,summaries:e}}(c),f=a.tool_choice??"auto";if("none"===f)return{enabled:!1,toolsByName:new Map,lastUserText:d,executedToolKeys:e.keys,completedToolCalls:e.summaries};let g=b.map(a=>{let b=a?.function;if(a?.type!=="function"||!b||"object"!=typeof b)return null;let c="string"==typeof b.name?b.name.trim():"";return c?{name:c,..."string"==typeof b.description?{description:b.description}:{},parameters:b.parameters||{type:"object",properties:{}}}:null}).filter(a=>!!a),h=function(a){if(!a||"object"!=typeof a||"function"!==a.type||!a.function||"object"!=typeof a.function)return null;let b=a.function.name;return"string"==typeof b&&b.trim()?b.trim():null}(f),i=h?g.filter(a=>a.name===h):g;return{enabled:i.length>0,toolsByName:new Map(i.map(a=>[a.name,a])),lastUserText:d,executedToolKeys:e.keys,completedToolCalls:e.summaries}}(b),{modeId:p,isThinking:q}=n||E.fast,r=function(a,b=""){let c=[],d=-1,e=-1;for(let b=a.length-1;b>=0;b--)if("user"===String(a[b].role||"")){e=b;break}let f=[];for(let b=0;b<a.length;b++){let c=a[b],d=String(c.role||"user");"developer"===d&&(d="system");let g=I(c);if("tool"===d){if(b<e)continue;let a="string"==typeof c.name?c.name:"unknown_tool",d="string"==typeof c.tool_call_id?c.tool_call_id:"unknown_call";g=`CLIENT TOOL RESULT from caller runtime for ${a} (${d}). Use this result to answer; do not call the same tool again:
@@ -1 +1 @@
1
- "use strict";exports.id=8238,exports.ids=[615,8238],exports.modules={30869:(a,b,c)=>{c.d(b,{UY:()=>h,eh:()=>f.eh,fg:()=>e.fg,h0:()=>g,oc:()=>i});var d=c(39006),e=c(40615),f=c(81329);d.rE;let g={npmPackageName:"9router",installCmd:"npm i -g 9router",installCmdLatest:"npm i -g 9router@latest --prefer-online",shutdownCountdownSec:3,exitDelayMs:500,statusPort:20129,statusPollIntervalMs:1e3,statusLogTailLines:8,installRetries:3,installRetryDelayMs:5e3,lingerAfterDoneMs:3e4,waitForExitMinMs:5e3,waitForExitMaxMs:2e4,waitForExitCheckMs:500,appPort:20128},h={maxLines:200,pollIntervalMs:1e3},i={tickIntervalMs:6e4,pingLeadMs:5e3,refreshAheadMs:3e5,failureCooldownMs:9e5,providers:{claude:{settingsKey:"claudeAutoPing",quotaKey:"session (5h)",pingModel:"claude-haiku-4-5-20251001",pingText:"hi",pingMaxTokens:1},codex:{settingsKey:"codexAutoPing",quotaKey:"session",pingWhenResetAtSlides:!0,resetAtDriftMs:3e4,minPingIntervalMs:6e5,skipWhenBlockingQuotaExhausted:!0,pingModel:"gpt-5.5",pingText:"hi",pingInstructions:"Reply with OK.",pingReasoningEffort:"none"}}}},38238:(a,b,c)=>{c.d(b,{P:()=>h});var d=c(89718),e=c(30869),f=c(54603);async function g(){let a=null;try{let b=await (0,d.PX)();a=b.find(a=>!1!==a.isActive)?.key||null}catch{}let b={"Content-Type":"application/json"};return a&&(b.Authorization=`Bearer ${a}`),b["x-9r-cli-token"]=await (0,f.Xj)("9r-cli-auth"),b}async function h(a,b,c=`http://127.0.0.1:${process.env.PORT||e.h0.appPort}`){let d=await g(),f=Date.now();if("embedding"===b){let b=await fetch(`${c}/api/v1/embeddings`,{method:"POST",headers:d,body:JSON.stringify({model:a,input:"test"}),signal:AbortSignal.timeout(15e3)}),e=Date.now()-f,g=await b.text().catch(()=>""),h=null;try{h=g?JSON.parse(g):null}catch{}if(!b.ok){let a=h?.error?.message||h?.error||g;return{ok:!1,latencyMs:e,error:`HTTP ${b.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:b.status}}return Array.isArray(h?.data)&&h.data.length>0&&Array.isArray(h.data[0]?.embedding)?{ok:!0,latencyMs:e,error:null,status:b.status}:{ok:!1,latencyMs:e,status:b.status,error:"Provider returned no embedding data"}}if("image"===b){let b=await fetch(`${c}/api/v1/images/generations`,{method:"POST",headers:d,body:JSON.stringify({model:a,prompt:"test"}),signal:AbortSignal.timeout(15e3)}),e=Date.now()-f,g=await b.text().catch(()=>""),h=null;try{h=g?JSON.parse(g):null}catch{}if(!b.ok){let a=h?.error?.message||h?.msg||h?.message||h?.error||g;return{ok:!1,latencyMs:e,error:`HTTP ${b.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:b.status}}return Array.isArray(h?.data)&&h.data.length>0?{ok:!0,latencyMs:e,error:null,status:b.status}:{ok:!1,latencyMs:e,status:b.status,error:"Provider returned no image data for this model"}}if("stt"===b){let b,e,g,h,i=new FormData,j=(g=new DataView(e=new ArrayBuffer(44+(b=2*Math.max(1,Math.floor(4e3))))),(h=(a,b)=>{for(let c=0;c<b.length;c+=1)g.setUint8(a+c,b.charCodeAt(c))})(0,"RIFF"),g.setUint32(4,36+b,!0),h(8,"WAVE"),h(12,"fmt "),g.setUint32(16,16,!0),g.setUint16(20,1,!0),g.setUint16(22,1,!0),g.setUint32(24,16e3,!0),g.setUint32(28,32e3,!0),g.setUint16(32,2,!0),g.setUint16(34,16,!0),h(36,"data"),g.setUint32(40,b,!0),new Blob([e],{type:"audio/wav"}));i.append("file",j,"test.wav"),i.append("model",a);let k=await fetch(`${c}/api/v1/audio/transcriptions`,{method:"POST",headers:Object.fromEntries(Object.entries(d).filter(([a])=>"content-type"!==a.toLowerCase())),body:i,signal:AbortSignal.timeout(15e3)}),l=Date.now()-f,m=await k.text().catch(()=>""),n=null;try{n=m?JSON.parse(m):null}catch{}if(!k.ok){let a=n?.error?.message||n?.msg||n?.message||n?.error||m;return{ok:!1,latencyMs:l,error:`HTTP ${k.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:k.status}}return("string"==typeof n?.text?n.text:"").trim()?{ok:!0,latencyMs:l,error:null,status:k.status}:{ok:!1,latencyMs:l,status:k.status,error:"Provider returned no transcription text for this model"}}let i=await fetch(`${c}/api/v1/chat/completions`,{method:"POST",headers:d,body:JSON.stringify({model:a,max_tokens:16,stream:!1,messages:[{role:"user",content:"hi"}]}),signal:AbortSignal.timeout(15e3)}),j=Date.now()-f,k=await i.text().catch(()=>""),l=null;try{l=k?JSON.parse(k):null}catch{}if(!i.ok){let a=l?.error?.message||l?.msg||l?.message||l?.error||k;return{ok:!1,latencyMs:j,error:`HTTP ${i.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:i.status}}let m=l?.status,n=l?.msg||l?.message;if(null!=m&&"200"!==String(m)&&"0"!==String(m)&&n)return{ok:!1,latencyMs:j,status:i.status,error:`Provider status ${m}: ${String(n).slice(0,240)}`};if(l?.error){let a=l?.error?.message||l?.error||"Provider returned an error";return{ok:!1,latencyMs:j,status:i.status,error:String(a).slice(0,240)}}return Array.isArray(l?.choices)&&l.choices.length>0?{ok:!0,latencyMs:j,error:null,status:i.status}:{ok:!1,latencyMs:j,status:i.status,error:"Provider returned no completion choices for this model"}}},39006:a=>{a.exports={rE:"0.5.51"}},40615:(a,b,c)=>{c.d(b,{AI_PROVIDERS:()=>t,js:()=>x,DI:()=>o,fg:()=>l,Pd:()=>p,IS:()=>i,nJ:()=>j,HP:()=>A,vh:()=>B,zN:()=>k,JH:()=>n,jO:()=>z,wb:()=>y,br:()=>m,wG:()=>w,zt:()=>u,gb:()=>r,gC:()=>s,mq:()=>q,rs:()=>v});var d=c(30255);let e="⚠️ Risk Notice: This provider uses a subscription/OAuth session not officially licensed for proxy/router use. Account may be restricted or banned. Use at your own risk.";Object.fromEntries(d.A.filter(a=>a.display).map(a=>{let b;return[a.id,"RISK_NOTICE"===(b=a.display).deprecationNotice?{...b,deprecationNotice:e}:b]}));let f=["serviceKinds","ttsConfig","sttConfig","embeddingConfig","imageConfig","imageToTextConfig","videoConfig","musicConfig","searchViaChat","searchConfig","fetchConfig","modelsFetcher","mediaPriority","hiddenKinds"];function g(a){let b={};for(let c of(a.media&&Object.assign(b,a.media),f))void 0!==a[c]&&(b[c]=a[c]);let c={...a.display||{}};return"RISK_NOTICE"===c.deprecationNotice&&(c.deprecationNotice=e),{...c,id:a.id,alias:a.uiAlias||a.alias,...a.hidden?{hidden:!0}:{},...b,...void 0!==a.priority?{priority:a.priority}:{},...a.hasFree?{hasFree:!0}:{},...a.thinkingConfig?{thinkingConfig:a.thinkingConfig}:{},...a.regions?{regions:a.regions,defaultRegion:a.defaultRegion}:{},...a.hasProviderSpecificData?{hasProviderSpecificData:!0}:{},...a.noAuth?{noAuth:!0}:{},...a.passthroughModels?{passthroughModels:!0}:{},...a.hasOAuth?{hasOAuth:!0}:{},...a.authModes?{authModes:a.authModes}:{},...a.authType?{authType:a.authType}:{},...a.authHint?{authHint:a.authHint}:{}}}let h=a=>Object.fromEntries(d.A.filter(b=>b.category===a).map(a=>[a.id,g(a)])),i=h("free"),j=h("freeTier"),k=h("oauth"),l=h("apikey"),m=h("webCookie"),n="openai-compatible-",o="anthropic-compatible-",p="custom-embedding-";function q(a){return"string"==typeof a&&a.startsWith(n)}function r(a){return"string"==typeof a&&a.startsWith(o)}function s(a){return"string"==typeof a&&a.startsWith(p)}let t={...i,...j,...k,...l,...m};function u(a){for(let b of Object.values(t))if(b.alias===a||b.id===a)return b;return null}function v(a){let b=u(a);return b?.id||a}function w(a){let b=t[a];return b?.alias||a}let x=Object.values(t).reduce((a,b)=>(a[b.alias]=b.id,a),{});Object.values(t).reduce((a,b)=>(a[b.id]=b.alias,a),{});let y=d.A.filter(a=>a.features?.usage).map(a=>a.id),z=d.A.filter(a=>a.features?.usageApikey).map(a=>a.id),A={},B=Object.fromEntries(d.A.filter(a=>a.noAuth).map(a=>[a.id,g(a)]))},54603:(a,b,c)=>{c.d(b,{Xj:()=>q});var d=c(19713),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(77598),j=c.n(i),k=c(49120);let l=h().join(k.n,"machine-id"),m=h().join(k.n,"auth"),n=h().join(m,"cli-secret"),o=null,p=null;async function q(a=null){let b=a||process.env.MACHINE_ID_SALT||"endpoint-proxy-salt",c=function(){if(o)return o;try{if(o=f().readFileSync(l,"utf8").trim())return o}catch{}try{o=(0,d.machineIdSync)()}catch{o=j().randomUUID()}try{f().mkdirSync(k.n,{recursive:!0}),f().writeFileSync(l,o,{mode:384})}catch{}return o}(),e="9r-cli-auth"===b?function(){if(p)return p;try{if(p=f().readFileSync(n,"utf8").trim())return p}catch{}p=j().randomBytes(32).toString("hex");try{f().mkdirSync(m,{recursive:!0}),f().writeFileSync(n,p,{mode:384})}catch{}return p}():"";return j().createHash("sha256").update(c+b+e).digest("hex").substring(0,16)}},81329:(a,b,c)=>{c.d(b,{CP:()=>f,Xg:()=>d.Xg,eh:()=>e,vq:()=>d.PROVIDER_MODELS});var d=c(57247);Object.entries(c(40615).AI_PROVIDERS).filter(([,a])=>a.passthroughModels).map(([a])=>a);let e=Object.entries(d.PROVIDER_MODELS).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name}))),f=(a,b=null)=>a?.kind||a?.type||b},89718:(a,b,c)=>{c.d(b,{Ax:()=>d.Ax,Az:()=>o,Bb:()=>n,By:()=>i,CG:()=>d.CG,CK:()=>d.CK,EE:()=>d.EE,Fh:()=>d.Fh,ID:()=>d.ID,Iq:()=>d.Iq,Is:()=>d.Is,K1:()=>d.K1,KJ:()=>d.KJ,L:()=>d.L,L9:()=>d.L9,Lh:()=>d.Lh,MQ:()=>h,Mc:()=>d.Mc,OM:()=>d.OM,P:()=>l,PX:()=>d.PX,Pc:()=>d.Pc,QT:()=>e,Q_:()=>d.Q_,Qu:()=>d.Qu,Rp:()=>d.Rp,S8:()=>d.S8,VT:()=>d.VT,W:()=>k,Wq:()=>d.Wq,XW:()=>d.XW,Xx:()=>d.Xx,Yd:()=>d.Yd,ZO:()=>d.ZO,a_:()=>g,bI:()=>d.bI,c:()=>d.c,e8:()=>f,ek:()=>d.ek,fK:()=>d.fK,fu:()=>d.fu,fv:()=>d.fv,g4:()=>d.g4,g5:()=>j,getComboByName:()=>d.Dj,getCombos:()=>d.Uv,getPricingForModel:()=>d.PS,getProviderConnections:()=>d.P,getSettings:()=>d.mt,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,iE:()=>d.iE,ik:()=>d.ik,jd:()=>d.jd,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,q5:()=>d.q5,r4:()=>d.r4,sN:()=>d.sN,uL:()=>d.uL,ui:()=>d.ui,updateProviderConnection:()=>d.rj,uv:()=>d.uv,yF:()=>d.yF,yg:()=>d.yg,zP:()=>d.zP,zU:()=>m});var d=c(58246);function e(a,b,c){return!1}function f(a,b,c){}async function g(a,b,c){return"number"==typeof c?c:0}async function h(a,b){return 0}async function i(a,b){return{windowStart:b,needsReset:!1}}async function j(a){return[]}async function k(a){}async function l(a){return null}async function m(a={}){return[]}async function n(a={}){return[]}async function o(a){return null}}};
1
+ "use strict";exports.id=8238,exports.ids=[615,8238],exports.modules={30869:(a,b,c)=>{c.d(b,{UY:()=>h,eh:()=>f.eh,fg:()=>e.fg,h0:()=>g,oc:()=>i});var d=c(39006),e=c(40615),f=c(81329);d.rE;let g={npmPackageName:"9router",installCmd:"npm i -g 9router",installCmdLatest:"npm i -g 9router@latest --prefer-online",shutdownCountdownSec:3,exitDelayMs:500,statusPort:20129,statusPollIntervalMs:1e3,statusLogTailLines:8,installRetries:3,installRetryDelayMs:5e3,lingerAfterDoneMs:3e4,waitForExitMinMs:5e3,waitForExitMaxMs:2e4,waitForExitCheckMs:500,appPort:20128},h={maxLines:200,pollIntervalMs:1e3},i={tickIntervalMs:6e4,pingLeadMs:5e3,refreshAheadMs:3e5,failureCooldownMs:9e5,providers:{claude:{settingsKey:"claudeAutoPing",quotaKey:"session (5h)",pingModel:"claude-haiku-4-5-20251001",pingText:"hi",pingMaxTokens:1},codex:{settingsKey:"codexAutoPing",quotaKey:"session",pingWhenResetAtSlides:!0,resetAtDriftMs:3e4,minPingIntervalMs:6e5,skipWhenBlockingQuotaExhausted:!0,pingModel:"gpt-5.5",pingText:"hi",pingInstructions:"Reply with OK.",pingReasoningEffort:"none"}}}},38238:(a,b,c)=>{c.d(b,{P:()=>h});var d=c(89718),e=c(30869),f=c(54603);async function g(){let a=null;try{let b=await (0,d.PX)();a=b.find(a=>!1!==a.isActive)?.key||null}catch{}let b={"Content-Type":"application/json"};return a&&(b.Authorization=`Bearer ${a}`),b["x-9r-cli-token"]=await (0,f.Xj)("9r-cli-auth"),b}async function h(a,b,c=`http://127.0.0.1:${process.env.PORT||e.h0.appPort}`){let d=await g(),f=Date.now();if("embedding"===b){let b=await fetch(`${c}/api/v1/embeddings`,{method:"POST",headers:d,body:JSON.stringify({model:a,input:"test"}),signal:AbortSignal.timeout(15e3)}),e=Date.now()-f,g=await b.text().catch(()=>""),h=null;try{h=g?JSON.parse(g):null}catch{}if(!b.ok){let a=h?.error?.message||h?.error||g;return{ok:!1,latencyMs:e,error:`HTTP ${b.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:b.status}}return Array.isArray(h?.data)&&h.data.length>0&&Array.isArray(h.data[0]?.embedding)?{ok:!0,latencyMs:e,error:null,status:b.status}:{ok:!1,latencyMs:e,status:b.status,error:"Provider returned no embedding data"}}if("image"===b){let b=await fetch(`${c}/api/v1/images/generations`,{method:"POST",headers:d,body:JSON.stringify({model:a,prompt:"test"}),signal:AbortSignal.timeout(15e3)}),e=Date.now()-f,g=await b.text().catch(()=>""),h=null;try{h=g?JSON.parse(g):null}catch{}if(!b.ok){let a=h?.error?.message||h?.msg||h?.message||h?.error||g;return{ok:!1,latencyMs:e,error:`HTTP ${b.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:b.status}}return Array.isArray(h?.data)&&h.data.length>0?{ok:!0,latencyMs:e,error:null,status:b.status}:{ok:!1,latencyMs:e,status:b.status,error:"Provider returned no image data for this model"}}if("stt"===b){let b,e,g,h,i=new FormData,j=(g=new DataView(e=new ArrayBuffer(44+(b=2*Math.max(1,Math.floor(4e3))))),(h=(a,b)=>{for(let c=0;c<b.length;c+=1)g.setUint8(a+c,b.charCodeAt(c))})(0,"RIFF"),g.setUint32(4,36+b,!0),h(8,"WAVE"),h(12,"fmt "),g.setUint32(16,16,!0),g.setUint16(20,1,!0),g.setUint16(22,1,!0),g.setUint32(24,16e3,!0),g.setUint32(28,32e3,!0),g.setUint16(32,2,!0),g.setUint16(34,16,!0),h(36,"data"),g.setUint32(40,b,!0),new Blob([e],{type:"audio/wav"}));i.append("file",j,"test.wav"),i.append("model",a);let k=await fetch(`${c}/api/v1/audio/transcriptions`,{method:"POST",headers:Object.fromEntries(Object.entries(d).filter(([a])=>"content-type"!==a.toLowerCase())),body:i,signal:AbortSignal.timeout(15e3)}),l=Date.now()-f,m=await k.text().catch(()=>""),n=null;try{n=m?JSON.parse(m):null}catch{}if(!k.ok){let a=n?.error?.message||n?.msg||n?.message||n?.error||m;return{ok:!1,latencyMs:l,error:`HTTP ${k.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:k.status}}return("string"==typeof n?.text?n.text:"").trim()?{ok:!0,latencyMs:l,error:null,status:k.status}:{ok:!1,latencyMs:l,status:k.status,error:"Provider returned no transcription text for this model"}}let i=await fetch(`${c}/api/v1/chat/completions`,{method:"POST",headers:d,body:JSON.stringify({model:a,max_tokens:16,stream:!1,messages:[{role:"user",content:"hi"}]}),signal:AbortSignal.timeout(15e3)}),j=Date.now()-f,k=await i.text().catch(()=>""),l=null;try{l=k?JSON.parse(k):null}catch{}if(!i.ok){let a=l?.error?.message||l?.msg||l?.message||l?.error||k;return{ok:!1,latencyMs:j,error:`HTTP ${i.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:i.status}}let m=l?.status,n=l?.msg||l?.message;if(null!=m&&"200"!==String(m)&&"0"!==String(m)&&n)return{ok:!1,latencyMs:j,status:i.status,error:`Provider status ${m}: ${String(n).slice(0,240)}`};if(l?.error){let a=l?.error?.message||l?.error||"Provider returned an error";return{ok:!1,latencyMs:j,status:i.status,error:String(a).slice(0,240)}}return Array.isArray(l?.choices)&&l.choices.length>0?{ok:!0,latencyMs:j,error:null,status:i.status}:{ok:!1,latencyMs:j,status:i.status,error:"Provider returned no completion choices for this model"}}},39006:a=>{a.exports={rE:"0.5.52"}},40615:(a,b,c)=>{c.d(b,{AI_PROVIDERS:()=>t,js:()=>x,DI:()=>o,fg:()=>l,Pd:()=>p,IS:()=>i,nJ:()=>j,HP:()=>A,vh:()=>B,zN:()=>k,JH:()=>n,jO:()=>z,wb:()=>y,br:()=>m,wG:()=>w,zt:()=>u,gb:()=>r,gC:()=>s,mq:()=>q,rs:()=>v});var d=c(30255);let e="⚠️ Risk Notice: This provider uses a subscription/OAuth session not officially licensed for proxy/router use. Account may be restricted or banned. Use at your own risk.";Object.fromEntries(d.A.filter(a=>a.display).map(a=>{let b;return[a.id,"RISK_NOTICE"===(b=a.display).deprecationNotice?{...b,deprecationNotice:e}:b]}));let f=["serviceKinds","ttsConfig","sttConfig","embeddingConfig","imageConfig","imageToTextConfig","videoConfig","musicConfig","searchViaChat","searchConfig","fetchConfig","modelsFetcher","mediaPriority","hiddenKinds"];function g(a){let b={};for(let c of(a.media&&Object.assign(b,a.media),f))void 0!==a[c]&&(b[c]=a[c]);let c={...a.display||{}};return"RISK_NOTICE"===c.deprecationNotice&&(c.deprecationNotice=e),{...c,id:a.id,alias:a.uiAlias||a.alias,...a.hidden?{hidden:!0}:{},...b,...void 0!==a.priority?{priority:a.priority}:{},...a.hasFree?{hasFree:!0}:{},...a.thinkingConfig?{thinkingConfig:a.thinkingConfig}:{},...a.regions?{regions:a.regions,defaultRegion:a.defaultRegion}:{},...a.hasProviderSpecificData?{hasProviderSpecificData:!0}:{},...a.noAuth?{noAuth:!0}:{},...a.passthroughModels?{passthroughModels:!0}:{},...a.hasOAuth?{hasOAuth:!0}:{},...a.authModes?{authModes:a.authModes}:{},...a.authType?{authType:a.authType}:{},...a.authHint?{authHint:a.authHint}:{}}}let h=a=>Object.fromEntries(d.A.filter(b=>b.category===a).map(a=>[a.id,g(a)])),i=h("free"),j=h("freeTier"),k=h("oauth"),l=h("apikey"),m=h("webCookie"),n="openai-compatible-",o="anthropic-compatible-",p="custom-embedding-";function q(a){return"string"==typeof a&&a.startsWith(n)}function r(a){return"string"==typeof a&&a.startsWith(o)}function s(a){return"string"==typeof a&&a.startsWith(p)}let t={...i,...j,...k,...l,...m};function u(a){for(let b of Object.values(t))if(b.alias===a||b.id===a)return b;return null}function v(a){let b=u(a);return b?.id||a}function w(a){let b=t[a];return b?.alias||a}let x=Object.values(t).reduce((a,b)=>(a[b.alias]=b.id,a),{});Object.values(t).reduce((a,b)=>(a[b.id]=b.alias,a),{});let y=d.A.filter(a=>a.features?.usage).map(a=>a.id),z=d.A.filter(a=>a.features?.usageApikey).map(a=>a.id),A={},B=Object.fromEntries(d.A.filter(a=>a.noAuth).map(a=>[a.id,g(a)]))},54603:(a,b,c)=>{c.d(b,{Xj:()=>q});var d=c(19713),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(77598),j=c.n(i),k=c(49120);let l=h().join(k.n,"machine-id"),m=h().join(k.n,"auth"),n=h().join(m,"cli-secret"),o=null,p=null;async function q(a=null){let b=a||process.env.MACHINE_ID_SALT||"endpoint-proxy-salt",c=function(){if(o)return o;try{if(o=f().readFileSync(l,"utf8").trim())return o}catch{}try{o=(0,d.machineIdSync)()}catch{o=j().randomUUID()}try{f().mkdirSync(k.n,{recursive:!0}),f().writeFileSync(l,o,{mode:384})}catch{}return o}(),e="9r-cli-auth"===b?function(){if(p)return p;try{if(p=f().readFileSync(n,"utf8").trim())return p}catch{}p=j().randomBytes(32).toString("hex");try{f().mkdirSync(m,{recursive:!0}),f().writeFileSync(n,p,{mode:384})}catch{}return p}():"";return j().createHash("sha256").update(c+b+e).digest("hex").substring(0,16)}},81329:(a,b,c)=>{c.d(b,{CP:()=>f,Xg:()=>d.Xg,eh:()=>e,vq:()=>d.PROVIDER_MODELS});var d=c(57247);Object.entries(c(40615).AI_PROVIDERS).filter(([,a])=>a.passthroughModels).map(([a])=>a);let e=Object.entries(d.PROVIDER_MODELS).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name}))),f=(a,b=null)=>a?.kind||a?.type||b},89718:(a,b,c)=>{c.d(b,{Ax:()=>d.Ax,Az:()=>o,Bb:()=>n,By:()=>i,CG:()=>d.CG,CK:()=>d.CK,EE:()=>d.EE,Fh:()=>d.Fh,ID:()=>d.ID,Iq:()=>d.Iq,Is:()=>d.Is,K1:()=>d.K1,KJ:()=>d.KJ,L:()=>d.L,L9:()=>d.L9,Lh:()=>d.Lh,MQ:()=>h,Mc:()=>d.Mc,OM:()=>d.OM,P:()=>l,PX:()=>d.PX,Pc:()=>d.Pc,QT:()=>e,Q_:()=>d.Q_,Qu:()=>d.Qu,Rp:()=>d.Rp,S8:()=>d.S8,VT:()=>d.VT,W:()=>k,Wq:()=>d.Wq,XW:()=>d.XW,Xx:()=>d.Xx,Yd:()=>d.Yd,ZO:()=>d.ZO,a_:()=>g,bI:()=>d.bI,c:()=>d.c,e8:()=>f,ek:()=>d.ek,fK:()=>d.fK,fu:()=>d.fu,fv:()=>d.fv,g4:()=>d.g4,g5:()=>j,getComboByName:()=>d.Dj,getCombos:()=>d.Uv,getPricingForModel:()=>d.PS,getProviderConnections:()=>d.P,getSettings:()=>d.mt,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,iE:()=>d.iE,ik:()=>d.ik,jd:()=>d.jd,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,q5:()=>d.q5,r4:()=>d.r4,sN:()=>d.sN,uL:()=>d.uL,ui:()=>d.ui,updateProviderConnection:()=>d.rj,uv:()=>d.uv,yF:()=>d.yF,yg:()=>d.yg,zP:()=>d.zP,zU:()=>m});var d=c(58246);function e(a,b,c){return!1}function f(a,b,c){}async function g(a,b,c){return"number"==typeof c?c:0}async function h(a,b){return 0}async function i(a,b){return{windowStart:b,needsReset:!1}}async function j(a){return[]}async function k(a){}async function l(a){return null}async function m(a={}){return[]}async function n(a={}){return[]}async function o(a){return null}}};
@@ -1 +1 @@
1
- "use strict";exports.id=8668,exports.ids=[1998,8668],exports.modules={16945:(a,b,c)=>{c.d(b,{B:()=>f});var d=c(71998);function e(a){return null==a?"":String(a).trim()}async function f(a={}){try{let b=e(a?.proxyPoolId),c="__none__"===b?"":b,f=function(a={}){let b=a?.connectionProxyEnabled===!0,c=e(a?.connectionProxyUrl);return{connectionProxyEnabled:b,connectionProxyUrl:c,connectionNoProxy:e(a?.connectionNoProxy)}}(a);if(c){let a=await (0,d.hr)(c),b=e(a?.proxyUrl),f=e(a?.noProxy);if(a&&!0===a.isActive&&b){if("vercel"===a.type||"cloudflare"===a.type||"deno"===a.type)return{source:a.type,proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:f,strictProxy:!0===a.strictProxy,vercelRelayUrl:b};return{source:"pool",proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!0,connectionProxyUrl:b,connectionNoProxy:f,strictProxy:!0===a.strictProxy}}}if(f.connectionProxyEnabled&&f.connectionProxyUrl)return{source:"legacy",proxyPoolId:c||null,proxyPool:null,...f};return{source:"none",proxyPoolId:c||null,proxyPool:null,...f}}catch(a){return console.error("[resolveConnectionProxyConfig] Failed to resolve proxy config:",a),{source:"error",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:"",strictProxy:!1}}}},35024:(a,b,c)=>{c.d(b,{Ak:()=>e,Yg:()=>h,sr:()=>d.sr,xq:()=>d.xq});var d=c(26070);function e(a){return(a?.providerSpecificData?.baseUrl?.trim()||"http://localhost:11434").replace(/\/$/,"")}let f=d.xq["xiaomi-tokenplan"]?.regions||{},g=d.xq["xiaomi-tokenplan"]?.defaultRegion;function h(a){return f[a?.providerSpecificData?.region]||f[g]}},39006:a=>{a.exports={rE:"0.5.51"}},52007:(a,b,c)=>{c.d(b,{K$:()=>g,av:()=>p,gK:()=>n});var d=c(55511),e=c(95538);let f="https://llm.kimchi.dev",g="kimchi/dev",h=new Set([429,500,502,503,504]),i=new Map,j=new Map;function k(a){return(("string"==typeof a?a.trim():"")||f).replace(/\/+$/,"")}function l(a){return a?.accessToken||a?.apiKey||a?.providerSpecificData?.apiKey||null}function m(a){if(!a||"object"!=typeof a)return null;let b=a.slug||a.id||a.model||a.name;if("string"!=typeof b||""===b.trim())return null;let c=Array.isArray(a.input_modalities)?a.input_modalities.filter(a=>"text"===a||"image"===a):[],d=a.limits&&"object"==typeof a.limits?a.limits:{},e=Number(d.context_window||a.contextLength||a.context_length)||void 0,f=Number(d.max_output_tokens||a.maxOutputTokens||a.max_output_tokens)||void 0,g="string"==typeof a.provider?a.provider:"",h=!0===a.reasoning,i=Array.isArray(c)&&c.includes("image")?"imageToText":"llm",j={...a,id:b.trim(),name:String(a.display_name||a.displayName||a.name||b).trim(),provider:g,upstreamProvider:g,reasoning:h,inputModalities:c,kind:i,type:i,capabilities:{vision:c.includes("image"),reasoning:h,...e?{contextWindow:e}:{},...f?{maxOutput:f}:{},...g?{upstreamProvider:g}:{}},...e?{contextLength:e}:{},...f?{maxOutputTokens:f}:{}};return"anthropic"===g&&(j.compat={supportsReasoningEffort:!1,cacheControlFormat:"anthropic"}),j}function n(a){if("string"!=typeof a||""===a.trim())return null;let b=a.includes("/")?a.split("/").pop():a;return j.get(b)||j.get(b.toLowerCase())||null}async function o(a,b,c={}){let d=`${k(b)}/v1/models/metadata?include_in_cli=true`,f=new AbortController,i=setTimeout(()=>f.abort(Error("Kimchi models fetch timeout")),2e4),j=c.signal?AbortSignal.any([c.signal,f.signal]):f.signal;try{let b=await (0,e.proxyAwareFetch)(d,{method:"GET",headers:{Accept:"application/json",Authorization:`Bearer ${a}`,"User-Agent":g},cache:"no-store",signal:j},c.proxyOptions||null);if(!b.ok){let a=Error(`Kimchi models ${b.status}: ${b.statusText}`);throw a.status=b.status,a.retryable=h.has(b.status),a}let f=await b.json();return Array.isArray(f?.models)?f.models:[]}finally{clearTimeout(i)}}async function p(a,b={}){let c,e,g,h=l(a);if(!h)return null;let n=a?.providerSpecificData?.kimchiEndpoint||b.endpoint||f,q=(g=(e=a?.providerSpecificData||{}).userId||e.username||a?.refreshToken||l(a)||"anonymous",(0,d.createHash)("sha256").update(`kimchi:${k(n)}:${g}`).digest("hex")),r=Date.now();if(!b.forceRefresh){let a=i.get(q);if(a&&a.expiresAt>r)return a}try{c=await o(h,n,b)}catch(a){return b.log?.warn?.("KIMCHI_MODELS",a.message),null}let s=c.map(m).filter(Boolean);if(0===s.length)return null;for(let a of s||[])a?.id&&(j.set(a.id,a),j.set(a.id.toLowerCase(),a));let t={expiresAt:Date.now()+3e5,models:s,rawModels:c};return i.set(q,t),t}},68668:(a,b,c)=>{c.d(b,{F:()=>v});var d=c(89718),e=c(16945),f=c(74926),g=c(40615),h=c(57247),i=c(35024),j=c(93943),k=c(92990);let l=c(39006).rE||"0.0.0";var m=c(52007);let n={claude:{checkExpiry:!0,refreshable:!0},codex:{url:"https://chatgpt.com/backend-api/codex/responses",method:"POST",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{"Content-Type":"application/json",originator:"codex_cli_rs","User-Agent":"codex_cli_rs/0.136.0"},body:JSON.stringify({model:"gpt-5.3-codex",input:[],stream:!1,store:!1}),acceptStatuses:[400],refreshable:!0},"gemini-cli":{url:"https://www.googleapis.com/oauth2/v1/userinfo?alt=json",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!0},antigravity:{url:"https://www.googleapis.com/oauth2/v1/userinfo?alt=json",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!0},github:{url:"https://api.github.com/user",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{"User-Agent":"9Router",Accept:"application/vnd.github+json"}},iflow:{buildUrl:a=>`https://iflow.cn/api/oauth/getUserInfo?accessToken=${encodeURIComponent(a)}`,method:"GET",noAuth:!0},qwen:{checkExpiry:!0,refreshable:!0},kiro:{checkExpiry:!0,refreshable:!0},qoder:{url:"https://openapi.qoder.sh/api/v1/userinfo",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!1},"kimi-coding":{checkExpiry:!0,refreshable:!1},cursor:{tokenExists:!0},kilocode:{url:`${k.MZ.apiBaseUrl}/api/profile`,method:"GET",authHeader:"Authorization",authPrefix:"Bearer "},cline:{refreshable:!0},gitlab:{url:"https://gitlab.com/api/v4/user",method:"GET",authHeader:"Authorization",authPrefix:"Bearer "},"codebuddy-cn":{tokenExists:!0},kimchi:{url:k.Td.validationUrl||"https://api.cast.ai/v1/llm/openai/supported-providers",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{Accept:"application/json","User-Agent":m.K$},refreshable:!1}};async function o(a){return await fetch("https://api.cline.bot/api/v1/users/me",{method:"GET",headers:function(a,b={}){let c,d=(c=function(a){if("string"!=typeof a)return"";let b=a.trim();return b?b.startsWith("workos:")?b:`workos:${b}`:""}(a))?`Bearer ${c}`:"",e={"HTTP-Referer":"https://cline.bot","X-Title":"Cline","User-Agent":`9Router/${l}`,"X-PLATFORM":process.platform||"unknown","X-PLATFORM-VERSION":process.version||"unknown","X-CLIENT-TYPE":"9router","X-CLIENT-VERSION":l,"X-CORE-VERSION":l,"X-IS-MULTIROOT":"false",...b};return d&&(e.Authorization=d),e}(a,{Accept:"application/json"})})}let p=JSON.stringify({metadata:{ideType:"IDE_UNSPECIFIED",platform:"PLATFORM_UNSPECIFIED",pluginType:"GEMINI"}});async function q(a,b,c=null){let d="antigravity"===a.provider?"google-api-nodejs-client/9.15.1 vscode-antigravity/1.107.0":"google-api-nodejs-client/9.15.1 gemini-cli/0.34.0",e=await t("https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",{method:"POST",headers:{Authorization:`Bearer ${b}`,"Content-Type":"application/json","User-Agent":d},body:p},c);return e.ok?{valid:!0,error:null}:{valid:!1,error:function(a,b){if(!a)return b;try{let b=JSON.parse(a),c=b?.error?.message||b?.message||b?.error;if("string"==typeof c&&c.trim())return c.trim();if(c)return JSON.stringify(c)}catch{}return a.trim()||b}(await e.text().catch(()=>""),`API returned ${e.status}`),status:e.status}}async function r(a){let b=a.provider,c=a.refreshToken;if(!c)return null;try{if("gemini-cli"===b||"antigravity"===b){let a="gemini-cli"===b?k.LT:k.YT,d=await fetch("https://oauth2.googleapis.com/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:a.clientId,client_secret:a.clientSecret,grant_type:"refresh_token",refresh_token:c})});if(!d.ok)return null;let e=await d.json();return{accessToken:e.access_token,expiresIn:e.expires_in,refreshToken:e.refresh_token||c}}if("codex"===b)return await (0,j.Vq)(b,a,console);if("claude"===b){let a=await fetch(k.OV.tokenUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({grant_type:"refresh_token",refresh_token:c,client_id:k.OV.clientId})});if(!a.ok)return null;let b=await a.json();return{accessToken:b.access_token,expiresIn:b.expires_in,refreshToken:b.refresh_token||c}}if("kiro"===b){let b=a.providerSpecificData||{},d=b.clientId||a.clientId,e=b.clientSecret||a.clientSecret,f=b.region||a.region;if(d&&e){let a=`https://oidc.${f||"us-east-1"}.amazonaws.com/token`,b=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientId:d,clientSecret:e,refreshToken:c,grantType:"refresh_token"})});if(!b.ok)return null;let g=await b.json();return{accessToken:g.accessToken,expiresIn:g.expiresIn||3600,refreshToken:g.refreshToken||c}}let g=await fetch(k.Tx.socialRefreshUrl,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":"kiro-cli/1.0.0"},body:JSON.stringify({refreshToken:c})});if(!g.ok)return null;let h=await g.json();return{accessToken:h.accessToken,expiresIn:h.expiresIn||3600,refreshToken:h.refreshToken||c}}if("qwen"===b){let a=await fetch(k.Hp.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:c,client_id:k.Hp.clientId})});if(!a.ok)return null;let b=await a.json();return{accessToken:b.access_token,expiresIn:b.expires_in,refreshToken:b.refresh_token||c}}if("cline"===b){let a=await fetch(k.lB.refreshUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({refreshToken:c,grantType:"refresh_token",clientType:"extension"})});if(!a.ok)return null;let b=await a.json(),d=b?.data||b,e=d?.expiresAt?Math.max(1,Math.floor((new Date(d.expiresAt).getTime()-Date.now())/1e3)):3600;return{accessToken:d?.accessToken,expiresIn:e,refreshToken:d?.refreshToken||c}}return null}catch(a){return console.log(`Error refreshing ${b} token:`,a.message),null}}async function s(a,b=null){let c=n[a.provider];if(!c)return{valid:!1,error:"Provider test not supported",refreshed:!1};if(!a.accessToken)return{valid:!1,error:"No access token",refreshed:!1};if(c.tokenExists)return{valid:!0,error:null,refreshed:!1,newTokens:null};let d=a.accessToken,e=!1,f=null,g=(0,j.fp)(a.provider,a);if(c.refreshable&&g&&a.refreshToken){let b=await r(a);if(!b)return{valid:!1,error:"Token expired and refresh failed",refreshed:!1};d=b.accessToken,e=!0,f=b}if(c.checkExpiry)return e?{valid:!0,error:null,refreshed:e,newTokens:f}:g?{valid:!1,error:"Token expired",refreshed:!1}:{valid:!0,error:null,refreshed:!1,newTokens:null};if("gemini-cli"===a.provider||"antigravity"===a.provider){let g=await q(a,d,b);if(g.valid)return{valid:!0,error:null,refreshed:e,newTokens:f};if(401===g.status&&c.refreshable&&!e&&a.refreshToken){let c=await r(a);if(c?.accessToken){let d=await q(a,c.accessToken,b);return d.valid?{valid:!0,error:null,refreshed:!0,newTokens:c}:{valid:!1,error:d.error,refreshed:!0,newTokens:c}}return{valid:!1,error:"Token invalid or revoked",refreshed:!1}}return{valid:!1,error:g.error,refreshed:e}}if("cline"===a.provider){let b=async a=>{let b=await o(a);return b.ok?{valid:!0,error:null,refreshed:e,newTokens:f}:401===b.status?{valid:!1,error:"Token invalid or revoked",refreshed:e}:403===b.status?{valid:!1,error:"Access denied",refreshed:e}:{valid:!1,error:`API returned ${b.status}`,refreshed:e}},c=await b(d);if(c.valid||"Token invalid or revoked"!==c.error||!a.refreshToken)return c;let g=await r(a);return g?.accessToken?(e=!0,f=g,d=g.accessToken,await b(d)):{valid:!1,error:"Token invalid or revoked",refreshed:!1}}try{let g=c.buildUrl?c.buildUrl(d):c.url,h=c.noAuth?{...c.extraHeaders}:{[c.authHeader]:`${c.authPrefix}${d}`,...c.extraHeaders},i={method:c.method,headers:h};c.body&&(i.body=c.body);let j=await t(g,i,b);if(j.ok||c.acceptStatuses&&c.acceptStatuses.includes(j.status))return{valid:!0,error:null,refreshed:e,newTokens:f};if(401===j.status&&c.refreshable&&!e&&a.refreshToken){let d=await r(a);if(d){let a=c.buildUrl?c.buildUrl(d.accessToken):g,e=c.noAuth?{...c.extraHeaders}:{[c.authHeader]:`${c.authPrefix}${d.accessToken}`,...c.extraHeaders},f={method:c.method,headers:e};c.body&&(f.body=c.body);let h=await t(a,f,b);if(h.ok||c.acceptStatuses&&c.acceptStatuses.includes(h.status))return{valid:!0,error:null,refreshed:!0,newTokens:d}}return{valid:!1,error:"Token invalid or revoked",refreshed:!1}}if(401===j.status)return{valid:!1,error:"Token invalid or revoked",refreshed:e};if(403===j.status)return{valid:!1,error:"Access denied",refreshed:e};return{valid:!1,error:`API returned ${j.status}`,refreshed:e}}catch(a){return{valid:!1,error:a.message,refreshed:e}}}async function t(a,b={},d=null){if(d?.vercelRelayUrl){let{proxyAwareFetch:e}=await Promise.resolve().then(c.bind(c,95538));return e(a,b,{vercelRelayUrl:d.vercelRelayUrl})}if(!d?.connectionProxyEnabled||!d?.connectionProxyUrl)return fetch(a,b);let{proxyAwareFetch:e}=await Promise.resolve().then(c.bind(c,95538));return e(a,b,{connectionProxyEnabled:!0,connectionProxyUrl:d.connectionProxyUrl,connectionNoProxy:d.connectionNoProxy||""})}async function u(a,b=null){if((0,g.mq)(a.provider)){let c=a.providerSpecificData?.baseUrl;if(!c)return{valid:!1,error:"Missing base URL"};try{let d=await t(`${c.replace(/\/$/,"")}/models`,{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:d.ok,error:d.ok?null:"Invalid API key or base URL"}}catch(a){return{valid:!1,error:a.message}}}if((0,g.gb)(a.provider)){let c=a.providerSpecificData?.baseUrl;if(!c)return{valid:!1,error:"Missing base URL"};try{(c=c.replace(/\/$/,"")).endsWith("/messages")&&(c=c.slice(0,-9));let d=`${c}/v1/messages`,e=a.defaultModel||"claude-3-haiku-20240307",f=await t(d,{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json",Authorization:`Bearer ${a.apiKey}`},body:JSON.stringify({model:e,max_tokens:1,messages:[{role:"user",content:"test"}]})},b),g=401!==f.status&&403!==f.status;return{valid:g,error:g?null:"Invalid API key or base URL"}}catch(a){return{valid:!1,error:a.message}}}try{switch(a.provider){case"cloudflare-ai":{let c=(a.providerSpecificData||{}).accountId;if(!c)return{valid:!1,error:"Missing Account ID"};let d=`https://api.cloudflare.com/client/v4/accounts/${c}/ai/v1/chat/completions`,e=await t(d,{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"Content-Type":"application/json"},body:JSON.stringify({model:(0,h.fZ)("cloudflare-ai"),messages:[{role:"user",content:"test"}],max_tokens:1})},b),f=401!==e.status&&403!==e.status&&404!==e.status;return{valid:f,error:f?null:"Invalid API token or Account ID"}}case"azure":{let c=a.providerSpecificData||{},d=(c.azureEndpoint||"").replace(/\/$/,""),e=c.deployment||"gpt-4",f=c.apiVersion||"2024-10-01-preview",g=`${d}/openai/deployments/${e}/chat/completions?api-version=${f}`,h={"api-key":a.apiKey,"Content-Type":"application/json"};c.organization&&(h["OpenAI-Organization"]=c.organization);let i=await t(g,{method:"POST",headers:h,body:JSON.stringify({messages:[{role:"user",content:"test"}],max_completion_tokens:1})},b),j=401!==i.status&&403!==i.status;return{valid:j,error:j?null:"Invalid API key or Azure configuration"}}case"openai":{let c=await t("https://api.openai.com/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"vercel-ai-gateway":{let c=await t("https://ai-gateway.vercel.sh/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"anthropic":{let c=await t("https://api.anthropic.com/v1/messages",{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"claude-3-haiku-20240307",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"gemini":{let c=await t(`https://generativelanguage.googleapis.com/v1/models?key=${a.apiKey}`,{},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"openrouter":{let c=await t("https://openrouter.ai/api/v1/auth/key",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"glm":{let c=await t("https://api.z.ai/api/anthropic/v1/messages",{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"glm-4.7",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"glm-cn":{let c=await t("https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:"glm-4.7",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"minimax":case"minimax-cn":{let c=await t({minimax:"https://api.minimax.io/anthropic/v1/messages","minimax-cn":"https://api.minimaxi.com/anthropic/v1/messages"}[a.provider],{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"minimax-m2",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"kimi":{let c=await t("https://api.kimi.com/coding/v1/messages",{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"kimi-latest",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"alicode":case"alicode-intl":{let c="alicode-intl"===a.provider?"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions":"https://coding.dashscope.aliyuncs.com/v1/chat/completions",d=await t(c,{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:(0,h.fZ)(a.provider),max_tokens:1,messages:[{role:"user",content:"test"}]})},b),e=401!==d.status&&403!==d.status;return{valid:e,error:e?null:"Invalid API key"}}case"volcengine-ark":case"byteplus":{let c=await t(i.xq[a.provider]?.baseUrl,{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:(0,h.fZ)(a.provider),max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"deepseek":{let c=await t("https://api.deepseek.com/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"groq":{let c=await t("https://api.groq.com/openai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"mistral":{let c=await t("https://api.mistral.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"xai":{let c=await t("https://api.x.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"nvidia":{let c=await t("https://integrate.api.nvidia.com/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"perplexity":{let c=await t("https://api.perplexity.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"together":{let c=await t("https://api.together.xyz/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"fireworks":{let c=await t("https://api.fireworks.ai/inference/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"cerebras":{let c=await t("https://api.cerebras.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"cohere":{let c=await t("https://api.cohere.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"nebius":{let c=await t("https://api.studio.nebius.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"siliconflow":{let c=await t("https://api.siliconflow.com/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"hyperbolic":{let c=await t("https://api.hyperbolic.xyz/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"ollama":{let b=await fetch("https://ollama.com/api/tags",{headers:{Authorization:`Bearer ${a.apiKey}`}});return{valid:b.ok,error:b.ok?null:"Invalid API key"}}case"ollama-local":{let b=(0,i.Ak)(a),c=await fetch(`${b}/api/tags`);return{valid:c.ok,error:c.ok?null:`Ollama not reachable at ${b}`}}case"deepgram":{let c=await t("https://api.deepgram.com/v1/projects",{headers:{Authorization:`Token ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"assemblyai":{let c=await t("https://api.assemblyai.com/v1/account",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"nanobanana":{let c=await t("https://api.nanobananaapi.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"fal-ai":{let c=await t("https://api.fal.ai/v1/models?limit=1",{headers:{Authorization:`Key ${a.apiKey}`}},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"chutes":{let c=await t("https://llm.chutes.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"grok-web":{let c=a.apiKey.startsWith("sso=")?a.apiKey.slice(4):a.apiKey,d=a=>Array.from(crypto.getRandomValues(new Uint8Array(a)),a=>a.toString(16).padStart(2,"0")).join(""),e=Buffer.from("e:TypeError: Cannot read properties of null (reading 'children')").toString("base64"),f=await t("https://grok.com/rest/app-chat/conversations/new",{method:"POST",headers:{Accept:"*/*","Content-Type":"application/json",Cookie:`sso=${c}`,Origin:"https://grok.com",Referer:"https://grok.com/","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36","x-statsig-id":e,"x-xai-request-id":crypto.randomUUID(),traceparent:`00-${d(16)}-${d(8)}-00`},body:JSON.stringify({temporary:!0,modelName:"grok-4",message:"ping",fileAttachments:[],imageAttachments:[],disableSearch:!1,enableImageGeneration:!1,sendFinalMetadata:!0})},b),g=401!==f.status&&403!==f.status;return{valid:g,error:g?null:"Invalid SSO cookie"}}case"perplexity-web":{let c=a.apiKey;c.startsWith("__Secure-next-auth.session-token=")&&(c=c.slice(33));let d=await t("https://www.perplexity.ai/api/auth/session",{method:"GET",headers:{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36",Cookie:`__Secure-next-auth.session-token=${c}`}},b);if(!d.ok)return{valid:!1,error:"Invalid session cookie"};let e=await d.json().catch(()=>null),f=!!(e&&e.user);return{valid:f,error:f?null:"Session expired — re-paste cookie"}}case"opencode-go":{let c=await t("https://opencode.ai/zen/go/v1/chat/completions",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${a.apiKey}`},body:JSON.stringify({model:(0,h.fZ)("opencode-go"),messages:[{role:"user",content:"ping"}],max_tokens:1,stream:!1})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"xiaomi-mimo":case"xiaomi-tokenplan":{let c=await t(`${{"xiaomi-mimo":"https://api.xiaomimimo.com/v1","xiaomi-tokenplan":"https://token-plan-sgp.xiaomimimo.com/v1"}[a.provider]}/models`,{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"blackbox":{let c=i.xq.blackbox?.baseUrl?.replace(/\/chat\/completions$/,"")||"https://api.blackbox.ai/v1",d=await t(`${c}/models`,{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:d.ok,error:d.ok?null:"Invalid API key"}}default:return{valid:!1,error:"Provider test not supported"}}}catch(a){return{valid:!1,error:a.message}}}async function v(a){let b,c=await (0,d.Mc)(a);if(!c)return{valid:!1,error:"Connection not found",latencyMs:0,testedAt:new Date().toISOString()};let g=await (0,e.B)(c.providerSpecificData||{});if(g.connectionProxyEnabled&&g.connectionProxyUrl&&!g.vercelRelayUrl){let b=await (0,f.C)({proxyUrl:g.connectionProxyUrl});if(!b.ok){let c=b.error||`Proxy test failed with status ${b.status}`;return await (0,d.updateProviderConnection)(a,{testStatus:"error",lastError:c,lastErrorAt:new Date().toISOString()}),{valid:!1,error:c,latencyMs:0,testedAt:new Date().toISOString()}}}let h=Date.now();b="apikey"===c.authType||"cookie"===c.authType?await u(c,g):await s(c,g);let i=Date.now()-h,j={testStatus:b.valid?"active":"error",lastError:b.valid?null:b.error,lastErrorAt:b.valid?null:new Date().toISOString()};return b.refreshed&&b.newTokens&&(b.newTokens.accessToken&&(j.accessToken=b.newTokens.accessToken),b.newTokens.refreshToken&&(j.refreshToken=b.newTokens.refreshToken),b.newTokens.idToken&&(j.idToken=b.newTokens.idToken),b.newTokens.lastRefreshAt&&(j.lastRefreshAt=b.newTokens.lastRefreshAt),b.newTokens.expiresIn&&(j.expiresIn=b.newTokens.expiresIn),b.newTokens.expiresIn?j.expiresAt=new Date(Date.now()+1e3*b.newTokens.expiresIn).toISOString():b.newTokens.expiresAt&&(j.expiresAt=b.newTokens.expiresAt),b.newTokens.providerSpecificData&&(j.providerSpecificData={...c.providerSpecificData||{},...b.newTokens.providerSpecificData})),await (0,d.updateProviderConnection)(a,j),{valid:b.valid,error:b.error,refreshed:!!b.refreshed,latencyMs:i,testedAt:new Date().toISOString()}}},71998:(a,b,c)=>{c.d(b,{Ax:()=>d.Ax,CK:()=>d.CK,EE:()=>d.EE,Fh:()=>d.Fh,ID:()=>d.ID,Is:()=>d.Is,L9:()=>d.L9,Mc:()=>d.Mc,OM:()=>d.OM,P:()=>d.getProviderConnections,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Wq:()=>d.Wq,Yd:()=>d.Yd,ZO:()=>d.ZO,c:()=>d.c,createProviderConnection:()=>d.iE,fK:()=>d.fK,fu:()=>d.fu,fv:()=>d.fv,g4:()=>d.g4,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,ik:()=>d.ik,o5:()=>d.o5,op:()=>d.op,q5:()=>d.q5,rj:()=>d.updateProviderConnection,sN:()=>d.sN,uL:()=>d.uL,ui:()=>d.ui,uv:()=>d.uv});var d=c(89718)},74926:(a,b,c)=>{c.d(b,{C:()=>f});var d=c(47774);function e(a){return null==a?"":String(a).trim()}async function f({proxyUrl:a,testUrl:b,timeoutMs:c}={}){let g,h=e(a);if(!h)return{ok:!1,status:400,error:"proxyUrl is required"};let i=e(b)||"https://google.com/",j=Number(c),k=Number.isFinite(j)&&j>0?Math.min(j,3e4):8e3;try{try{g=new d.ProxyAgent({uri:h})}catch(a){return{ok:!1,status:400,error:`Invalid proxy URL: ${a?.message||String(a)}`}}let a=new AbortController,b=Date.now(),c=setTimeout(()=>a.abort(),k);try{let c=await (0,d.fetch)(i,{method:"HEAD",dispatcher:g,signal:a.signal,headers:{"User-Agent":"9Router"}});return{ok:c.ok,status:c.status,statusText:c.statusText,url:i,elapsedMs:Date.now()-b}}catch(b){let a=b?.name==="AbortError"?"Proxy test timed out":function(a){if(!a)return"Unknown error";let b=a?.message||String(a),c=a?.cause?.code||a?.code,d=a?.cause?.message;return d&&d!==b?c?`${b}: ${d} (${c})`:`${b}: ${d}`:c&&!b.includes(c)?`${b} (${c})`:b}(b);return{ok:!1,status:500,error:a}}finally{clearTimeout(c)}}finally{try{await g?.close?.()}catch{}}}},92990:(a,b,c)=>{c.d(b,{DI:()=>i,Hp:()=>k,LT:()=>j,MZ:()=>v,Nl:()=>y,Nu:()=>p,OV:()=>h,S6:()=>s,Td:()=>z,Tx:()=>q,WN:()=>t,Ww:()=>A,YT:()=>n,ZL:()=>m,cD:()=>o,f7:()=>x,hF:()=>l,lB:()=>w,t:()=>u});var d=c(21820),e=c(74129),f=c(26070);function g(){let a=(0,d.platform)(),b=(0,d.arch)();return"darwin"===a?"arm64"===b?2:1:"linux"===a?"arm64"===b?4:3:5*("win32"===a)}let h={...f.sr.claude},i={...f.sr.codex},j={...e.w3,...f.sr["gemini-cli"]},k={...f.sr.qwen},l={...f.sr.qoder},m={...f.sr.iflow},n={...e.XP,...f.sr.antigravity,loadCodeAssistClientMetadata:JSON.stringify({ideType:9,platform:g(),pluginType:2})};function o(){return{ideType:9,platform:g(),pluginType:2}}({...f.sr.openai});let p={...f.sr.github},q={...f.sr.kiro},r=/^[a-z]{2}-[a-z]+-\d{1,2}$/;function s(a){if("string"!=typeof a||!r.test(a))throw Error("Invalid region");return a}let t={...f.sr.cursor,tokenStoragePaths:{linux:"~/.config/Cursor/User/globalStorage/state.vscdb",macos:"/Users/<user>/Library/Application Support/Cursor/User/globalStorage/state.vscdb",windows:"%APPDATA%\\Cursor\\User\\globalStorage\\state.vscdb"}},u={...f.sr["kimi-coding"],clientId:process.env.KIMI_CODING_OAUTH_CLIENT_ID||f.xq["kimi-coding"]?.clientId},v={...f.sr.kilocode},w={...f.sr.cline},x={...f.sr.gitlab},y={...f.sr["codebuddy-cn"]},z={...f.sr.kimchi},A=3e5},93943:(a,b,c)=>{c.d(b,{Vq:()=>k,fp:()=>i});var d=c(8590),e=c(26070);let f=e.sr.codex?.maxRefreshAgeMs,g=new Map;function h(a){if(null==a||""===a)return null;if("number"==typeof a)return a<1e12?1e3*a:a;let b=new Date(a).getTime();return Number.isFinite(b)?b:null}function i(a,b,c=Date.now()){if(!b)return!1;let g=h(b?.expiresAt??b?.tokenExpiresAt);if(null!==g&&g-c<(0,d.Og)(a))return!0;let j=e.sr[a]?.maxRefreshAgeMs;return!!(j&&b.refreshToken&&function(a,b=Date.now(),c=f){let d=h(a?.lastRefreshAt??a?.lastRefresh??a?.providerSpecificData?.lastRefreshAt);return!d||b-d>=c}(b,c,j))}async function j(a,b,c){let d,e=(d=b?.connectionId||b?.id||b?.email||b?.name||b?.refreshToken?.slice?.(-16)||"default",`${a}:${d}`),f=g.get(e);if(f)return f;let h=Promise.resolve().then(c).finally(()=>{g.delete(e)});return g.set(e,h),h}async function k(a,b,c){return b?j(a,b,async()=>{let f=await (0,d.$B)(a,b,c);return function(a,b,c,f=Date.now()){var g,h;if(!c)return null;if((0,d.jT)(c))return c;let i={},j=new Date(f).toISOString();c.accessToken&&(i.accessToken=c.accessToken),c.apiKey&&(i.apiKey=c.apiKey),c.token&&(i.token=c.token);let k=c.refreshToken??b?.refreshToken;k&&(i.refreshToken=k);let l=c.idToken??b?.idToken;return l&&(i.idToken=l),c.expiresIn?(i.expiresIn=c.expiresIn,i.expiresAt=function(a,b=Date.now()){return a?new Date(b+1e3*a).toISOString():null}(c.expiresIn,f)):c.expiresAt&&(i.expiresAt=c.expiresAt),c.projectId&&(i.projectId=c.projectId),c.providerSpecificData&&(g=b?.providerSpecificData,i.providerSpecificData=(h=c.providerSpecificData)&&"object"==typeof h?{...g||{},...h}:g),c.copilotToken&&(i.copilotToken=c.copilotToken),c.copilotTokenExpiresAt&&(i.copilotTokenExpiresAt=c.copilotTokenExpiresAt),(e.sr[a]?.trackRefreshAt||i.accessToken||i.apiKey||i.token||i.refreshToken||i.copilotToken)&&(i.lastRefreshAt=c.lastRefreshAt||j),i}(a,b,f)}):null}}};
1
+ "use strict";exports.id=8668,exports.ids=[1998,8668],exports.modules={16945:(a,b,c)=>{c.d(b,{B:()=>f});var d=c(71998);function e(a){return null==a?"":String(a).trim()}async function f(a={}){try{let b=e(a?.proxyPoolId),c="__none__"===b?"":b,f=function(a={}){let b=a?.connectionProxyEnabled===!0,c=e(a?.connectionProxyUrl);return{connectionProxyEnabled:b,connectionProxyUrl:c,connectionNoProxy:e(a?.connectionNoProxy)}}(a);if(c){let a=await (0,d.hr)(c),b=e(a?.proxyUrl),f=e(a?.noProxy);if(a&&!0===a.isActive&&b){if("vercel"===a.type||"cloudflare"===a.type||"deno"===a.type)return{source:a.type,proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:f,strictProxy:!0===a.strictProxy,vercelRelayUrl:b};return{source:"pool",proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!0,connectionProxyUrl:b,connectionNoProxy:f,strictProxy:!0===a.strictProxy}}}if(f.connectionProxyEnabled&&f.connectionProxyUrl)return{source:"legacy",proxyPoolId:c||null,proxyPool:null,...f};return{source:"none",proxyPoolId:c||null,proxyPool:null,...f}}catch(a){return console.error("[resolveConnectionProxyConfig] Failed to resolve proxy config:",a),{source:"error",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:"",strictProxy:!1}}}},35024:(a,b,c)=>{c.d(b,{Ak:()=>e,Yg:()=>h,sr:()=>d.sr,xq:()=>d.xq});var d=c(26070);function e(a){return(a?.providerSpecificData?.baseUrl?.trim()||"http://localhost:11434").replace(/\/$/,"")}let f=d.xq["xiaomi-tokenplan"]?.regions||{},g=d.xq["xiaomi-tokenplan"]?.defaultRegion;function h(a){return f[a?.providerSpecificData?.region]||f[g]}},39006:a=>{a.exports={rE:"0.5.52"}},52007:(a,b,c)=>{c.d(b,{K$:()=>g,av:()=>p,gK:()=>n});var d=c(55511),e=c(95538);let f="https://llm.kimchi.dev",g="kimchi/dev",h=new Set([429,500,502,503,504]),i=new Map,j=new Map;function k(a){return(("string"==typeof a?a.trim():"")||f).replace(/\/+$/,"")}function l(a){return a?.accessToken||a?.apiKey||a?.providerSpecificData?.apiKey||null}function m(a){if(!a||"object"!=typeof a)return null;let b=a.slug||a.id||a.model||a.name;if("string"!=typeof b||""===b.trim())return null;let c=Array.isArray(a.input_modalities)?a.input_modalities.filter(a=>"text"===a||"image"===a):[],d=a.limits&&"object"==typeof a.limits?a.limits:{},e=Number(d.context_window||a.contextLength||a.context_length)||void 0,f=Number(d.max_output_tokens||a.maxOutputTokens||a.max_output_tokens)||void 0,g="string"==typeof a.provider?a.provider:"",h=!0===a.reasoning,i=Array.isArray(c)&&c.includes("image")?"imageToText":"llm",j={...a,id:b.trim(),name:String(a.display_name||a.displayName||a.name||b).trim(),provider:g,upstreamProvider:g,reasoning:h,inputModalities:c,kind:i,type:i,capabilities:{vision:c.includes("image"),reasoning:h,...e?{contextWindow:e}:{},...f?{maxOutput:f}:{},...g?{upstreamProvider:g}:{}},...e?{contextLength:e}:{},...f?{maxOutputTokens:f}:{}};return"anthropic"===g&&(j.compat={supportsReasoningEffort:!1,cacheControlFormat:"anthropic"}),j}function n(a){if("string"!=typeof a||""===a.trim())return null;let b=a.includes("/")?a.split("/").pop():a;return j.get(b)||j.get(b.toLowerCase())||null}async function o(a,b,c={}){let d=`${k(b)}/v1/models/metadata?include_in_cli=true`,f=new AbortController,i=setTimeout(()=>f.abort(Error("Kimchi models fetch timeout")),2e4),j=c.signal?AbortSignal.any([c.signal,f.signal]):f.signal;try{let b=await (0,e.proxyAwareFetch)(d,{method:"GET",headers:{Accept:"application/json",Authorization:`Bearer ${a}`,"User-Agent":g},cache:"no-store",signal:j},c.proxyOptions||null);if(!b.ok){let a=Error(`Kimchi models ${b.status}: ${b.statusText}`);throw a.status=b.status,a.retryable=h.has(b.status),a}let f=await b.json();return Array.isArray(f?.models)?f.models:[]}finally{clearTimeout(i)}}async function p(a,b={}){let c,e,g,h=l(a);if(!h)return null;let n=a?.providerSpecificData?.kimchiEndpoint||b.endpoint||f,q=(g=(e=a?.providerSpecificData||{}).userId||e.username||a?.refreshToken||l(a)||"anonymous",(0,d.createHash)("sha256").update(`kimchi:${k(n)}:${g}`).digest("hex")),r=Date.now();if(!b.forceRefresh){let a=i.get(q);if(a&&a.expiresAt>r)return a}try{c=await o(h,n,b)}catch(a){return b.log?.warn?.("KIMCHI_MODELS",a.message),null}let s=c.map(m).filter(Boolean);if(0===s.length)return null;for(let a of s||[])a?.id&&(j.set(a.id,a),j.set(a.id.toLowerCase(),a));let t={expiresAt:Date.now()+3e5,models:s,rawModels:c};return i.set(q,t),t}},68668:(a,b,c)=>{c.d(b,{F:()=>v});var d=c(89718),e=c(16945),f=c(74926),g=c(40615),h=c(57247),i=c(35024),j=c(93943),k=c(92990);let l=c(39006).rE||"0.0.0";var m=c(52007);let n={claude:{checkExpiry:!0,refreshable:!0},codex:{url:"https://chatgpt.com/backend-api/codex/responses",method:"POST",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{"Content-Type":"application/json",originator:"codex_cli_rs","User-Agent":"codex_cli_rs/0.136.0"},body:JSON.stringify({model:"gpt-5.3-codex",input:[],stream:!1,store:!1}),acceptStatuses:[400],refreshable:!0},"gemini-cli":{url:"https://www.googleapis.com/oauth2/v1/userinfo?alt=json",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!0},antigravity:{url:"https://www.googleapis.com/oauth2/v1/userinfo?alt=json",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!0},github:{url:"https://api.github.com/user",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{"User-Agent":"9Router",Accept:"application/vnd.github+json"}},iflow:{buildUrl:a=>`https://iflow.cn/api/oauth/getUserInfo?accessToken=${encodeURIComponent(a)}`,method:"GET",noAuth:!0},qwen:{checkExpiry:!0,refreshable:!0},kiro:{checkExpiry:!0,refreshable:!0},qoder:{url:"https://openapi.qoder.sh/api/v1/userinfo",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!1},"kimi-coding":{checkExpiry:!0,refreshable:!1},cursor:{tokenExists:!0},kilocode:{url:`${k.MZ.apiBaseUrl}/api/profile`,method:"GET",authHeader:"Authorization",authPrefix:"Bearer "},cline:{refreshable:!0},gitlab:{url:"https://gitlab.com/api/v4/user",method:"GET",authHeader:"Authorization",authPrefix:"Bearer "},"codebuddy-cn":{tokenExists:!0},kimchi:{url:k.Td.validationUrl||"https://api.cast.ai/v1/llm/openai/supported-providers",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{Accept:"application/json","User-Agent":m.K$},refreshable:!1}};async function o(a){return await fetch("https://api.cline.bot/api/v1/users/me",{method:"GET",headers:function(a,b={}){let c,d=(c=function(a){if("string"!=typeof a)return"";let b=a.trim();return b?b.startsWith("workos:")?b:`workos:${b}`:""}(a))?`Bearer ${c}`:"",e={"HTTP-Referer":"https://cline.bot","X-Title":"Cline","User-Agent":`9Router/${l}`,"X-PLATFORM":process.platform||"unknown","X-PLATFORM-VERSION":process.version||"unknown","X-CLIENT-TYPE":"9router","X-CLIENT-VERSION":l,"X-CORE-VERSION":l,"X-IS-MULTIROOT":"false",...b};return d&&(e.Authorization=d),e}(a,{Accept:"application/json"})})}let p=JSON.stringify({metadata:{ideType:"IDE_UNSPECIFIED",platform:"PLATFORM_UNSPECIFIED",pluginType:"GEMINI"}});async function q(a,b,c=null){let d="antigravity"===a.provider?"google-api-nodejs-client/9.15.1 vscode-antigravity/1.107.0":"google-api-nodejs-client/9.15.1 gemini-cli/0.34.0",e=await t("https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",{method:"POST",headers:{Authorization:`Bearer ${b}`,"Content-Type":"application/json","User-Agent":d},body:p},c);return e.ok?{valid:!0,error:null}:{valid:!1,error:function(a,b){if(!a)return b;try{let b=JSON.parse(a),c=b?.error?.message||b?.message||b?.error;if("string"==typeof c&&c.trim())return c.trim();if(c)return JSON.stringify(c)}catch{}return a.trim()||b}(await e.text().catch(()=>""),`API returned ${e.status}`),status:e.status}}async function r(a){let b=a.provider,c=a.refreshToken;if(!c)return null;try{if("gemini-cli"===b||"antigravity"===b){let a="gemini-cli"===b?k.LT:k.YT,d=await fetch("https://oauth2.googleapis.com/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:a.clientId,client_secret:a.clientSecret,grant_type:"refresh_token",refresh_token:c})});if(!d.ok)return null;let e=await d.json();return{accessToken:e.access_token,expiresIn:e.expires_in,refreshToken:e.refresh_token||c}}if("codex"===b)return await (0,j.Vq)(b,a,console);if("claude"===b){let a=await fetch(k.OV.tokenUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({grant_type:"refresh_token",refresh_token:c,client_id:k.OV.clientId})});if(!a.ok)return null;let b=await a.json();return{accessToken:b.access_token,expiresIn:b.expires_in,refreshToken:b.refresh_token||c}}if("kiro"===b){let b=a.providerSpecificData||{},d=b.clientId||a.clientId,e=b.clientSecret||a.clientSecret,f=b.region||a.region;if(d&&e){let a=`https://oidc.${f||"us-east-1"}.amazonaws.com/token`,b=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientId:d,clientSecret:e,refreshToken:c,grantType:"refresh_token"})});if(!b.ok)return null;let g=await b.json();return{accessToken:g.accessToken,expiresIn:g.expiresIn||3600,refreshToken:g.refreshToken||c}}let g=await fetch(k.Tx.socialRefreshUrl,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":"kiro-cli/1.0.0"},body:JSON.stringify({refreshToken:c})});if(!g.ok)return null;let h=await g.json();return{accessToken:h.accessToken,expiresIn:h.expiresIn||3600,refreshToken:h.refreshToken||c}}if("qwen"===b){let a=await fetch(k.Hp.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:c,client_id:k.Hp.clientId})});if(!a.ok)return null;let b=await a.json();return{accessToken:b.access_token,expiresIn:b.expires_in,refreshToken:b.refresh_token||c}}if("cline"===b){let a=await fetch(k.lB.refreshUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({refreshToken:c,grantType:"refresh_token",clientType:"extension"})});if(!a.ok)return null;let b=await a.json(),d=b?.data||b,e=d?.expiresAt?Math.max(1,Math.floor((new Date(d.expiresAt).getTime()-Date.now())/1e3)):3600;return{accessToken:d?.accessToken,expiresIn:e,refreshToken:d?.refreshToken||c}}return null}catch(a){return console.log(`Error refreshing ${b} token:`,a.message),null}}async function s(a,b=null){let c=n[a.provider];if(!c)return{valid:!1,error:"Provider test not supported",refreshed:!1};if(!a.accessToken)return{valid:!1,error:"No access token",refreshed:!1};if(c.tokenExists)return{valid:!0,error:null,refreshed:!1,newTokens:null};let d=a.accessToken,e=!1,f=null,g=(0,j.fp)(a.provider,a);if(c.refreshable&&g&&a.refreshToken){let b=await r(a);if(!b)return{valid:!1,error:"Token expired and refresh failed",refreshed:!1};d=b.accessToken,e=!0,f=b}if(c.checkExpiry)return e?{valid:!0,error:null,refreshed:e,newTokens:f}:g?{valid:!1,error:"Token expired",refreshed:!1}:{valid:!0,error:null,refreshed:!1,newTokens:null};if("gemini-cli"===a.provider||"antigravity"===a.provider){let g=await q(a,d,b);if(g.valid)return{valid:!0,error:null,refreshed:e,newTokens:f};if(401===g.status&&c.refreshable&&!e&&a.refreshToken){let c=await r(a);if(c?.accessToken){let d=await q(a,c.accessToken,b);return d.valid?{valid:!0,error:null,refreshed:!0,newTokens:c}:{valid:!1,error:d.error,refreshed:!0,newTokens:c}}return{valid:!1,error:"Token invalid or revoked",refreshed:!1}}return{valid:!1,error:g.error,refreshed:e}}if("cline"===a.provider){let b=async a=>{let b=await o(a);return b.ok?{valid:!0,error:null,refreshed:e,newTokens:f}:401===b.status?{valid:!1,error:"Token invalid or revoked",refreshed:e}:403===b.status?{valid:!1,error:"Access denied",refreshed:e}:{valid:!1,error:`API returned ${b.status}`,refreshed:e}},c=await b(d);if(c.valid||"Token invalid or revoked"!==c.error||!a.refreshToken)return c;let g=await r(a);return g?.accessToken?(e=!0,f=g,d=g.accessToken,await b(d)):{valid:!1,error:"Token invalid or revoked",refreshed:!1}}try{let g=c.buildUrl?c.buildUrl(d):c.url,h=c.noAuth?{...c.extraHeaders}:{[c.authHeader]:`${c.authPrefix}${d}`,...c.extraHeaders},i={method:c.method,headers:h};c.body&&(i.body=c.body);let j=await t(g,i,b);if(j.ok||c.acceptStatuses&&c.acceptStatuses.includes(j.status))return{valid:!0,error:null,refreshed:e,newTokens:f};if(401===j.status&&c.refreshable&&!e&&a.refreshToken){let d=await r(a);if(d){let a=c.buildUrl?c.buildUrl(d.accessToken):g,e=c.noAuth?{...c.extraHeaders}:{[c.authHeader]:`${c.authPrefix}${d.accessToken}`,...c.extraHeaders},f={method:c.method,headers:e};c.body&&(f.body=c.body);let h=await t(a,f,b);if(h.ok||c.acceptStatuses&&c.acceptStatuses.includes(h.status))return{valid:!0,error:null,refreshed:!0,newTokens:d}}return{valid:!1,error:"Token invalid or revoked",refreshed:!1}}if(401===j.status)return{valid:!1,error:"Token invalid or revoked",refreshed:e};if(403===j.status)return{valid:!1,error:"Access denied",refreshed:e};return{valid:!1,error:`API returned ${j.status}`,refreshed:e}}catch(a){return{valid:!1,error:a.message,refreshed:e}}}async function t(a,b={},d=null){if(d?.vercelRelayUrl){let{proxyAwareFetch:e}=await Promise.resolve().then(c.bind(c,95538));return e(a,b,{vercelRelayUrl:d.vercelRelayUrl})}if(!d?.connectionProxyEnabled||!d?.connectionProxyUrl)return fetch(a,b);let{proxyAwareFetch:e}=await Promise.resolve().then(c.bind(c,95538));return e(a,b,{connectionProxyEnabled:!0,connectionProxyUrl:d.connectionProxyUrl,connectionNoProxy:d.connectionNoProxy||""})}async function u(a,b=null){if((0,g.mq)(a.provider)){let c=a.providerSpecificData?.baseUrl;if(!c)return{valid:!1,error:"Missing base URL"};try{let d=await t(`${c.replace(/\/$/,"")}/models`,{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:d.ok,error:d.ok?null:"Invalid API key or base URL"}}catch(a){return{valid:!1,error:a.message}}}if((0,g.gb)(a.provider)){let c=a.providerSpecificData?.baseUrl;if(!c)return{valid:!1,error:"Missing base URL"};try{(c=c.replace(/\/$/,"")).endsWith("/messages")&&(c=c.slice(0,-9));let d=`${c}/v1/messages`,e=a.defaultModel||"claude-3-haiku-20240307",f=await t(d,{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json",Authorization:`Bearer ${a.apiKey}`},body:JSON.stringify({model:e,max_tokens:1,messages:[{role:"user",content:"test"}]})},b),g=401!==f.status&&403!==f.status;return{valid:g,error:g?null:"Invalid API key or base URL"}}catch(a){return{valid:!1,error:a.message}}}try{switch(a.provider){case"cloudflare-ai":{let c=(a.providerSpecificData||{}).accountId;if(!c)return{valid:!1,error:"Missing Account ID"};let d=`https://api.cloudflare.com/client/v4/accounts/${c}/ai/v1/chat/completions`,e=await t(d,{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"Content-Type":"application/json"},body:JSON.stringify({model:(0,h.fZ)("cloudflare-ai"),messages:[{role:"user",content:"test"}],max_tokens:1})},b),f=401!==e.status&&403!==e.status&&404!==e.status;return{valid:f,error:f?null:"Invalid API token or Account ID"}}case"azure":{let c=a.providerSpecificData||{},d=(c.azureEndpoint||"").replace(/\/$/,""),e=c.deployment||"gpt-4",f=c.apiVersion||"2024-10-01-preview",g=`${d}/openai/deployments/${e}/chat/completions?api-version=${f}`,h={"api-key":a.apiKey,"Content-Type":"application/json"};c.organization&&(h["OpenAI-Organization"]=c.organization);let i=await t(g,{method:"POST",headers:h,body:JSON.stringify({messages:[{role:"user",content:"test"}],max_completion_tokens:1})},b),j=401!==i.status&&403!==i.status;return{valid:j,error:j?null:"Invalid API key or Azure configuration"}}case"openai":{let c=await t("https://api.openai.com/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"vercel-ai-gateway":{let c=await t("https://ai-gateway.vercel.sh/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"anthropic":{let c=await t("https://api.anthropic.com/v1/messages",{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"claude-3-haiku-20240307",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"gemini":{let c=await t(`https://generativelanguage.googleapis.com/v1/models?key=${a.apiKey}`,{},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"openrouter":{let c=await t("https://openrouter.ai/api/v1/auth/key",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"glm":{let c=await t("https://api.z.ai/api/anthropic/v1/messages",{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"glm-4.7",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"glm-cn":{let c=await t("https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:"glm-4.7",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"minimax":case"minimax-cn":{let c=await t({minimax:"https://api.minimax.io/anthropic/v1/messages","minimax-cn":"https://api.minimaxi.com/anthropic/v1/messages"}[a.provider],{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"minimax-m2",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"kimi":{let c=await t("https://api.kimi.com/coding/v1/messages",{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"kimi-latest",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"alicode":case"alicode-intl":{let c="alicode-intl"===a.provider?"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions":"https://coding.dashscope.aliyuncs.com/v1/chat/completions",d=await t(c,{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:(0,h.fZ)(a.provider),max_tokens:1,messages:[{role:"user",content:"test"}]})},b),e=401!==d.status&&403!==d.status;return{valid:e,error:e?null:"Invalid API key"}}case"volcengine-ark":case"byteplus":{let c=await t(i.xq[a.provider]?.baseUrl,{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:(0,h.fZ)(a.provider),max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"deepseek":{let c=await t("https://api.deepseek.com/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"groq":{let c=await t("https://api.groq.com/openai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"mistral":{let c=await t("https://api.mistral.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"xai":{let c=await t("https://api.x.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"nvidia":{let c=await t("https://integrate.api.nvidia.com/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"perplexity":{let c=await t("https://api.perplexity.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"together":{let c=await t("https://api.together.xyz/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"fireworks":{let c=await t("https://api.fireworks.ai/inference/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"cerebras":{let c=await t("https://api.cerebras.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"cohere":{let c=await t("https://api.cohere.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"nebius":{let c=await t("https://api.studio.nebius.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"siliconflow":{let c=await t("https://api.siliconflow.com/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"hyperbolic":{let c=await t("https://api.hyperbolic.xyz/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"ollama":{let b=await fetch("https://ollama.com/api/tags",{headers:{Authorization:`Bearer ${a.apiKey}`}});return{valid:b.ok,error:b.ok?null:"Invalid API key"}}case"ollama-local":{let b=(0,i.Ak)(a),c=await fetch(`${b}/api/tags`);return{valid:c.ok,error:c.ok?null:`Ollama not reachable at ${b}`}}case"deepgram":{let c=await t("https://api.deepgram.com/v1/projects",{headers:{Authorization:`Token ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"assemblyai":{let c=await t("https://api.assemblyai.com/v1/account",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"nanobanana":{let c=await t("https://api.nanobananaapi.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"fal-ai":{let c=await t("https://api.fal.ai/v1/models?limit=1",{headers:{Authorization:`Key ${a.apiKey}`}},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"chutes":{let c=await t("https://llm.chutes.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"grok-web":{let c=a.apiKey.startsWith("sso=")?a.apiKey.slice(4):a.apiKey,d=a=>Array.from(crypto.getRandomValues(new Uint8Array(a)),a=>a.toString(16).padStart(2,"0")).join(""),e=Buffer.from("e:TypeError: Cannot read properties of null (reading 'children')").toString("base64"),f=await t("https://grok.com/rest/app-chat/conversations/new",{method:"POST",headers:{Accept:"*/*","Content-Type":"application/json",Cookie:`sso=${c}`,Origin:"https://grok.com",Referer:"https://grok.com/","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36","x-statsig-id":e,"x-xai-request-id":crypto.randomUUID(),traceparent:`00-${d(16)}-${d(8)}-00`},body:JSON.stringify({temporary:!0,modelName:"grok-4",message:"ping",fileAttachments:[],imageAttachments:[],disableSearch:!1,enableImageGeneration:!1,sendFinalMetadata:!0})},b),g=401!==f.status&&403!==f.status;return{valid:g,error:g?null:"Invalid SSO cookie"}}case"perplexity-web":{let c=a.apiKey;c.startsWith("__Secure-next-auth.session-token=")&&(c=c.slice(33));let d=await t("https://www.perplexity.ai/api/auth/session",{method:"GET",headers:{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36",Cookie:`__Secure-next-auth.session-token=${c}`}},b);if(!d.ok)return{valid:!1,error:"Invalid session cookie"};let e=await d.json().catch(()=>null),f=!!(e&&e.user);return{valid:f,error:f?null:"Session expired — re-paste cookie"}}case"opencode-go":{let c=await t("https://opencode.ai/zen/go/v1/chat/completions",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${a.apiKey}`},body:JSON.stringify({model:(0,h.fZ)("opencode-go"),messages:[{role:"user",content:"ping"}],max_tokens:1,stream:!1})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"xiaomi-mimo":case"xiaomi-tokenplan":{let c=await t(`${{"xiaomi-mimo":"https://api.xiaomimimo.com/v1","xiaomi-tokenplan":"https://token-plan-sgp.xiaomimimo.com/v1"}[a.provider]}/models`,{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"blackbox":{let c=i.xq.blackbox?.baseUrl?.replace(/\/chat\/completions$/,"")||"https://api.blackbox.ai/v1",d=await t(`${c}/models`,{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:d.ok,error:d.ok?null:"Invalid API key"}}default:return{valid:!1,error:"Provider test not supported"}}}catch(a){return{valid:!1,error:a.message}}}async function v(a){let b,c=await (0,d.Mc)(a);if(!c)return{valid:!1,error:"Connection not found",latencyMs:0,testedAt:new Date().toISOString()};let g=await (0,e.B)(c.providerSpecificData||{});if(g.connectionProxyEnabled&&g.connectionProxyUrl&&!g.vercelRelayUrl){let b=await (0,f.C)({proxyUrl:g.connectionProxyUrl});if(!b.ok){let c=b.error||`Proxy test failed with status ${b.status}`;return await (0,d.updateProviderConnection)(a,{testStatus:"error",lastError:c,lastErrorAt:new Date().toISOString()}),{valid:!1,error:c,latencyMs:0,testedAt:new Date().toISOString()}}}let h=Date.now();b="apikey"===c.authType||"cookie"===c.authType?await u(c,g):await s(c,g);let i=Date.now()-h,j={testStatus:b.valid?"active":"error",lastError:b.valid?null:b.error,lastErrorAt:b.valid?null:new Date().toISOString()};return b.refreshed&&b.newTokens&&(b.newTokens.accessToken&&(j.accessToken=b.newTokens.accessToken),b.newTokens.refreshToken&&(j.refreshToken=b.newTokens.refreshToken),b.newTokens.idToken&&(j.idToken=b.newTokens.idToken),b.newTokens.lastRefreshAt&&(j.lastRefreshAt=b.newTokens.lastRefreshAt),b.newTokens.expiresIn&&(j.expiresIn=b.newTokens.expiresIn),b.newTokens.expiresIn?j.expiresAt=new Date(Date.now()+1e3*b.newTokens.expiresIn).toISOString():b.newTokens.expiresAt&&(j.expiresAt=b.newTokens.expiresAt),b.newTokens.providerSpecificData&&(j.providerSpecificData={...c.providerSpecificData||{},...b.newTokens.providerSpecificData})),await (0,d.updateProviderConnection)(a,j),{valid:b.valid,error:b.error,refreshed:!!b.refreshed,latencyMs:i,testedAt:new Date().toISOString()}}},71998:(a,b,c)=>{c.d(b,{Ax:()=>d.Ax,CK:()=>d.CK,EE:()=>d.EE,Fh:()=>d.Fh,ID:()=>d.ID,Is:()=>d.Is,L9:()=>d.L9,Mc:()=>d.Mc,OM:()=>d.OM,P:()=>d.getProviderConnections,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Wq:()=>d.Wq,Yd:()=>d.Yd,ZO:()=>d.ZO,c:()=>d.c,createProviderConnection:()=>d.iE,fK:()=>d.fK,fu:()=>d.fu,fv:()=>d.fv,g4:()=>d.g4,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,ik:()=>d.ik,o5:()=>d.o5,op:()=>d.op,q5:()=>d.q5,rj:()=>d.updateProviderConnection,sN:()=>d.sN,uL:()=>d.uL,ui:()=>d.ui,uv:()=>d.uv});var d=c(89718)},74926:(a,b,c)=>{c.d(b,{C:()=>f});var d=c(47774);function e(a){return null==a?"":String(a).trim()}async function f({proxyUrl:a,testUrl:b,timeoutMs:c}={}){let g,h=e(a);if(!h)return{ok:!1,status:400,error:"proxyUrl is required"};let i=e(b)||"https://google.com/",j=Number(c),k=Number.isFinite(j)&&j>0?Math.min(j,3e4):8e3;try{try{g=new d.ProxyAgent({uri:h})}catch(a){return{ok:!1,status:400,error:`Invalid proxy URL: ${a?.message||String(a)}`}}let a=new AbortController,b=Date.now(),c=setTimeout(()=>a.abort(),k);try{let c=await (0,d.fetch)(i,{method:"HEAD",dispatcher:g,signal:a.signal,headers:{"User-Agent":"9Router"}});return{ok:c.ok,status:c.status,statusText:c.statusText,url:i,elapsedMs:Date.now()-b}}catch(b){let a=b?.name==="AbortError"?"Proxy test timed out":function(a){if(!a)return"Unknown error";let b=a?.message||String(a),c=a?.cause?.code||a?.code,d=a?.cause?.message;return d&&d!==b?c?`${b}: ${d} (${c})`:`${b}: ${d}`:c&&!b.includes(c)?`${b} (${c})`:b}(b);return{ok:!1,status:500,error:a}}finally{clearTimeout(c)}}finally{try{await g?.close?.()}catch{}}}},92990:(a,b,c)=>{c.d(b,{DI:()=>i,Hp:()=>k,LT:()=>j,MZ:()=>v,Nl:()=>y,Nu:()=>p,OV:()=>h,S6:()=>s,Td:()=>z,Tx:()=>q,WN:()=>t,Ww:()=>A,YT:()=>n,ZL:()=>m,cD:()=>o,f7:()=>x,hF:()=>l,lB:()=>w,t:()=>u});var d=c(21820),e=c(74129),f=c(26070);function g(){let a=(0,d.platform)(),b=(0,d.arch)();return"darwin"===a?"arm64"===b?2:1:"linux"===a?"arm64"===b?4:3:5*("win32"===a)}let h={...f.sr.claude},i={...f.sr.codex},j={...e.w3,...f.sr["gemini-cli"]},k={...f.sr.qwen},l={...f.sr.qoder},m={...f.sr.iflow},n={...e.XP,...f.sr.antigravity,loadCodeAssistClientMetadata:JSON.stringify({ideType:9,platform:g(),pluginType:2})};function o(){return{ideType:9,platform:g(),pluginType:2}}({...f.sr.openai});let p={...f.sr.github},q={...f.sr.kiro},r=/^[a-z]{2}-[a-z]+-\d{1,2}$/;function s(a){if("string"!=typeof a||!r.test(a))throw Error("Invalid region");return a}let t={...f.sr.cursor,tokenStoragePaths:{linux:"~/.config/Cursor/User/globalStorage/state.vscdb",macos:"/Users/<user>/Library/Application Support/Cursor/User/globalStorage/state.vscdb",windows:"%APPDATA%\\Cursor\\User\\globalStorage\\state.vscdb"}},u={...f.sr["kimi-coding"],clientId:process.env.KIMI_CODING_OAUTH_CLIENT_ID||f.xq["kimi-coding"]?.clientId},v={...f.sr.kilocode},w={...f.sr.cline},x={...f.sr.gitlab},y={...f.sr["codebuddy-cn"]},z={...f.sr.kimchi},A=3e5},93943:(a,b,c)=>{c.d(b,{Vq:()=>k,fp:()=>i});var d=c(8590),e=c(26070);let f=e.sr.codex?.maxRefreshAgeMs,g=new Map;function h(a){if(null==a||""===a)return null;if("number"==typeof a)return a<1e12?1e3*a:a;let b=new Date(a).getTime();return Number.isFinite(b)?b:null}function i(a,b,c=Date.now()){if(!b)return!1;let g=h(b?.expiresAt??b?.tokenExpiresAt);if(null!==g&&g-c<(0,d.Og)(a))return!0;let j=e.sr[a]?.maxRefreshAgeMs;return!!(j&&b.refreshToken&&function(a,b=Date.now(),c=f){let d=h(a?.lastRefreshAt??a?.lastRefresh??a?.providerSpecificData?.lastRefreshAt);return!d||b-d>=c}(b,c,j))}async function j(a,b,c){let d,e=(d=b?.connectionId||b?.id||b?.email||b?.name||b?.refreshToken?.slice?.(-16)||"default",`${a}:${d}`),f=g.get(e);if(f)return f;let h=Promise.resolve().then(c).finally(()=>{g.delete(e)});return g.set(e,h),h}async function k(a,b,c){return b?j(a,b,async()=>{let f=await (0,d.$B)(a,b,c);return function(a,b,c,f=Date.now()){var g,h;if(!c)return null;if((0,d.jT)(c))return c;let i={},j=new Date(f).toISOString();c.accessToken&&(i.accessToken=c.accessToken),c.apiKey&&(i.apiKey=c.apiKey),c.token&&(i.token=c.token);let k=c.refreshToken??b?.refreshToken;k&&(i.refreshToken=k);let l=c.idToken??b?.idToken;return l&&(i.idToken=l),c.expiresIn?(i.expiresIn=c.expiresIn,i.expiresAt=function(a,b=Date.now()){return a?new Date(b+1e3*a).toISOString():null}(c.expiresIn,f)):c.expiresAt&&(i.expiresAt=c.expiresAt),c.projectId&&(i.projectId=c.projectId),c.providerSpecificData&&(g=b?.providerSpecificData,i.providerSpecificData=(h=c.providerSpecificData)&&"object"==typeof h?{...g||{},...h}:g),c.copilotToken&&(i.copilotToken=c.copilotToken),c.copilotTokenExpiresAt&&(i.copilotTokenExpiresAt=c.copilotTokenExpiresAt),(e.sr[a]?.trackRefreshAt||i.accessToken||i.apiKey||i.token||i.refreshToken||i.copilotToken)&&(i.lastRefreshAt=c.lastRefreshAt||j),i}(a,b,f)}):null}}};