@ltgiang/9router 0.5.64 → 0.5.65

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 (395) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +18 -18
  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/expose-models/page_client-reference-manifest.js +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  31. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  32. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  33. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  34. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  35. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  36. package/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  37. package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  38. package/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  39. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  40. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  41. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  42. package/app/.next-cli-build/server/app/_not-found.rsc +4 -4
  43. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +4 -4
  44. package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  45. package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +4 -4
  46. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  47. package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  48. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  49. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  50. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  51. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  52. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  53. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  54. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js.nft.json +1 -1
  55. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  56. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  57. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  58. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  59. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  60. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  61. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  62. package/app/.next-cli-build/server/app/api/combos/reorder/route.js.nft.json +1 -1
  63. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  64. package/app/.next-cli-build/server/app/api/expose-combos/[id]/route.js.nft.json +1 -1
  65. package/app/.next-cli-build/server/app/api/expose-combos/reorder/route.js.nft.json +1 -1
  66. package/app/.next-cli-build/server/app/api/expose-combos/route.js.nft.json +1 -1
  67. package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  68. package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  69. package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  70. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  71. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  72. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  73. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  74. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  75. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  76. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  77. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  78. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  79. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  80. package/app/.next-cli-build/server/app/api/models/order/route.js.nft.json +1 -1
  81. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  82. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  83. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  84. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  85. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
  86. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  87. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  88. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  89. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  90. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
  91. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  92. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
  93. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  94. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  95. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  96. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  97. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  98. package/app/.next-cli-build/server/app/api/providers/[id]/connections/disabled/route.js.nft.json +1 -1
  99. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  100. package/app/.next-cli-build/server/app/api/providers/[id]/pool/pull/route.js.nft.json +1 -1
  101. package/app/.next-cli-build/server/app/api/providers/[id]/pool/push/route.js.nft.json +1 -1
  102. package/app/.next-cli-build/server/app/api/providers/[id]/pool/route.js.nft.json +1 -1
  103. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  104. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  105. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  106. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  107. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  108. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  109. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  110. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  111. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  112. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  113. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  114. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  115. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  116. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  117. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  118. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  119. package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  120. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  121. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  122. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  123. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  124. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  125. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  126. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  127. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  128. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  129. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  130. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  131. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  132. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
  133. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  134. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  135. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  136. package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
  137. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  138. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  139. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  140. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  141. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  142. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  143. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  144. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  145. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  146. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  147. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  148. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  149. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  150. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  151. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  152. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  153. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  154. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  155. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  156. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  157. package/app/.next-cli-build/server/app/api/v2/models/route.js.nft.json +1 -1
  158. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  159. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  160. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  161. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  162. package/app/.next-cli-build/server/app/callback.html +1 -1
  163. package/app/.next-cli-build/server/app/callback.rsc +4 -4
  164. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +4 -4
  165. package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  166. package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +4 -4
  167. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  168. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  169. package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  170. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  171. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +6 -6
  172. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  173. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  174. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  175. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  176. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
  177. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  178. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +4 -4
  179. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  180. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  181. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +6 -6
  182. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  183. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  184. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  185. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  186. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
  187. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  188. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
  189. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  190. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  191. package/app/.next-cli-build/server/app/dashboard/combos.rsc +6 -6
  192. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  193. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  194. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  195. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  196. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
  197. package/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  198. package/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
  199. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  200. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  201. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +6 -6
  202. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  203. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  204. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  205. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  206. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
  207. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  208. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
  209. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  210. package/app/.next-cli-build/server/app/dashboard/expose-models.html +1 -1
  211. package/app/.next-cli-build/server/app/dashboard/expose-models.rsc +6 -6
  212. package/app/.next-cli-build/server/app/dashboard/expose-models.segments/!KGRhc2hib2FyZCk/dashboard/expose-models/__PAGE__.segment.rsc +2 -2
  213. package/app/.next-cli-build/server/app/dashboard/expose-models.segments/!KGRhc2hib2FyZCk/dashboard/expose-models.segment.rsc +1 -1
  214. package/app/.next-cli-build/server/app/dashboard/expose-models.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  215. package/app/.next-cli-build/server/app/dashboard/expose-models.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  216. package/app/.next-cli-build/server/app/dashboard/expose-models.segments/_full.segment.rsc +6 -6
  217. package/app/.next-cli-build/server/app/dashboard/expose-models.segments/_head.segment.rsc +1 -1
  218. package/app/.next-cli-build/server/app/dashboard/expose-models.segments/_index.segment.rsc +4 -4
  219. package/app/.next-cli-build/server/app/dashboard/expose-models.segments/_tree.segment.rsc +1 -1
  220. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  221. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +6 -6
  222. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  223. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  224. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  225. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  226. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  227. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +6 -6
  228. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  229. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +4 -4
  230. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  231. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  232. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +6 -6
  233. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  234. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  235. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  236. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  237. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
  238. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  239. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +4 -4
  240. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  241. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  242. package/app/.next-cli-build/server/app/dashboard/profile.rsc +6 -6
  243. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  244. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  245. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  246. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  247. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
  248. package/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  249. package/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
  250. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  251. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  252. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +6 -6
  253. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  254. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  255. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  256. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  257. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  258. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
  259. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  260. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
  261. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  262. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  263. package/app/.next-cli-build/server/app/dashboard/providers.rsc +6 -6
  264. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  265. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  266. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  267. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  268. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
  269. package/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  270. package/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
  271. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  272. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  273. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +6 -6
  274. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  275. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  276. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  277. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  278. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
  279. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  280. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +4 -4
  281. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  282. package/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  283. package/app/.next-cli-build/server/app/dashboard/quota.rsc +7 -7
  284. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  285. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  286. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  287. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  288. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
  289. package/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  290. package/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +4 -4
  291. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  292. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  293. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  294. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +4 -4
  295. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  296. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  297. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
  298. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  299. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  300. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  301. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  302. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  303. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  304. package/app/.next-cli-build/server/app/dashboard/skills.rsc +6 -6
  305. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  306. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  307. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  308. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  309. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +6 -6
  310. package/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  311. package/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +4 -4
  312. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
  313. package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  314. package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +6 -6
  315. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
  316. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  317. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  318. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  319. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +6 -6
  320. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  321. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +4 -4
  322. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
  323. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  324. package/app/.next-cli-build/server/app/dashboard/translator.rsc +6 -6
  325. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  326. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  327. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  328. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  329. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
  330. package/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  331. package/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
  332. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  333. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  334. package/app/.next-cli-build/server/app/dashboard/usage.rsc +6 -6
  335. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  336. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  337. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  338. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  339. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
  340. package/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  341. package/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
  342. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  343. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  344. package/app/.next-cli-build/server/app/dashboard.rsc +6 -6
  345. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  346. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  347. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  348. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +6 -6
  349. package/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  350. package/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +4 -4
  351. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  352. package/app/.next-cli-build/server/app/index.html +1 -1
  353. package/app/.next-cli-build/server/app/index.rsc +4 -4
  354. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  355. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +4 -4
  356. package/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  357. package/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +4 -4
  358. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  359. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  360. package/app/.next-cli-build/server/app/landing.html +1 -1
  361. package/app/.next-cli-build/server/app/landing.rsc +4 -4
  362. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
  363. package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  364. package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +4 -4
  365. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  366. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  367. package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  368. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  369. package/app/.next-cli-build/server/app/login.html +1 -1
  370. package/app/.next-cli-build/server/app/login.rsc +5 -5
  371. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +5 -5
  372. package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  373. package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +4 -4
  374. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  375. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  376. package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  377. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  378. package/app/.next-cli-build/server/app-paths-manifest.json +18 -18
  379. package/app/.next-cli-build/server/chunks/1961.js +1 -1
  380. package/app/.next-cli-build/server/chunks/4746.js +1 -1
  381. package/app/.next-cli-build/server/chunks/4827.js +1 -1
  382. package/app/.next-cli-build/server/chunks/5330.js +1 -1
  383. package/app/.next-cli-build/server/chunks/8238.js +1 -1
  384. package/app/.next-cli-build/server/chunks/8668.js +1 -1
  385. package/app/.next-cli-build/server/chunks/9350.js +1 -1
  386. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  387. package/app/.next-cli-build/server/pages/404.html +1 -1
  388. package/app/.next-cli-build/server/pages/500.html +1 -1
  389. package/app/.next-cli-build/static/chunks/{1321-ec61a2d4566c6ef3.js → 1321-be088789822eccdf.js} +1 -1
  390. package/app/cli/.build-home/.9router/db/backups/{upgrade-0.5.59-to-0.5.60-0.5.60-20260713-215333 → upgrade-0.5.63-to-0.5.64-0.5.64-20260827-205057}/data.sqlite +0 -0
  391. package/app/cli/.build-home/.9router/db/data.sqlite +0 -0
  392. package/app/package.json +1 -1
  393. package/package.json +1 -1
  394. /package/app/.next-cli-build/static/{JT0vECv8MnC-rYaphym2y → LICZWDvsIbskgz9vsKyhN}/_buildManifest.js +0 -0
  395. /package/app/.next-cli-build/static/{JT0vECv8MnC-rYaphym2y → LICZWDvsIbskgz9vsKyhN}/_ssgManifest.js +0 -0
@@ -353,7 +353,7 @@ var getComputedStyle = __getComputedStyle;
353
353
  `;a.enqueue(new TextEncoder().encode(d))}}}catch{}}}if(h.trim()){let c=h.trim();if(c.startsWith("data: ")){let d=c.slice(6);try{let c=JSON.parse(d);if("content_block_delta"===c.type){let d=c.delta,e=d?.text;if(e){let c=r(e,b);a.enqueue(new TextEncoder().encode(`data: ${JSON.stringify(c)}
354
354
 
355
355
  `))}}}catch{}}}f||a.enqueue(new TextEncoder().encode("data: [DONE]\n\n"))}catch(b){c?.error?.("CLAUDE-WEB-STREAM",`Stream error: ${String(b)}`),a.error(b)}finally{try{d.releaseLock()}catch{}try{a.close()}catch{}}}});return new Response(g,{status:200,headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}class y extends e.Hv{constructor(){super("claude-web",{baseUrl:v})}async testConnection(a,b){try{let c=n(a);if(!c.trim())return!1;let d=await q(c,{allowAutoSolve:!1}),e=o(a);return await s(d,e,b)}catch(a){return!1}}async execute({model:a,body:b,stream:c,credentials:d,signal:h,log:i}){let m=b||{};try{let b;if(!d||"object"!=typeof d)return{response:new Response(JSON.stringify({error:{message:"Invalid credentials",type:"invalid_request_error"}}),{status:400,statusText:"Bad Request",headers:{"Content-Type":"application/json"}}),url:"",headers:{},transformedBody:m};let c=n(d);if(!c.trim())return{response:new Response(JSON.stringify({error:{message:"Missing session cookie",type:"authentication_error"}}),{status:401,statusText:"Unauthorized",headers:{"Content-Type":"application/json"}}),url:"",headers:{},transformedBody:m};let k=await q(c,{allowAutoSolve:!0,log:i}),r=o(d);try{b=function(a,b){let c=Array.isArray(a.messages)?a.messages:[],d="";for(let a of c)"object"==typeof a&&null!==a&&"user"===a.role&&(d=String(a.content||""));if(!d.trim())throw Error("No user message found in request");return{prompt:d,model:b||x,timezone:"Asia/Jakarta",personalized_styles:[{type:"default",key:"Default",name:"Normal",nameKey:"normal_style_name",prompt:"Normal\n",summary:"Default responses from Claude",summaryKey:"normal_style_summary",isDefault:!0}],locale:"en-US",tools:[{name:"show_widget",description:"Display interactive widgets and visualizations",input_schema:{type:"object",properties:{widget_type:{type:"string",description:"Type of widget to display"}}},integration_name:"visualize",is_mcp_app:!0},{name:"read_me",description:"Read and reference documents",input_schema:{type:"object",properties:{file_path:{type:"string",description:"Path to the file to read"}}},integration_name:"visualize",is_mcp_app:!1},{type:"web_search_v0",name:"web_search"},{type:"artifacts_v0",name:"artifacts"},{type:"repl_v0",name:"repl"},{type:"widget",name:"weather_fetch"},{type:"widget",name:"recipe_display_v0"},{type:"widget",name:"places_map_display_v0"},{type:"widget",name:"message_compose_v1"},{type:"widget",name:"ask_user_input_v0"},{type:"widget",name:"recommend_claude_apps"},{type:"widget",name:"places_search"},{type:"widget",name:"fetch_sports_data"}],turn_message_uuids:{human_message_uuid:(0,j.randomUUID)(),assistant_message_uuid:(0,j.randomUUID)()},attachments:[],effort:"low",files:[],sync_sources:[],rendering_mode:"messages",thinking_mode:"off",create_conversation_params:{name:"",model:b||x,include_conversation_preferences:!0,paprika_mode:null,compass_mode:null,is_temporary:!1,enabled_imagine:!0,tool_search_mode:"auto"}}}(m,a)}catch(a){return{response:new Response(JSON.stringify({error:{message:a instanceof Error?a.message:"Invalid request format",type:"invalid_request_error"}}),{status:400,statusText:"Bad Request",headers:{"Content-Type":"application/json"}}),url:"",headers:{},transformedBody:m}}let s=d?.orgId,w=d?.conversationId;!s&&((s=await t(k,r,h))||(i?.warn?.("CLAUDE-WEB","Could not retrieve organization ID, using fallback"),s="")),w||(w=(0,j.randomUUID)());let y=p(r);if(function(){let a=process.env.WEB_COOKIE_USE_BROWSER;if("1"===a||"true"===a||"on"===a)return!0;let b=process.env.OMNIROUTE_BROWSER_POOL;return"on"===b||"1"===b||"true"===b}()){let d=function(a){let b=Array.isArray(a.messages)?a.messages:[];for(let a=b.length-1;a>=0;a--)if("user"===b[a].role){let c=b[a].content;if("string"==typeof c)return c;if(Array.isArray(c))return c.map(a=>"object"==typeof a&&a&&"text"in a?String(a.text):"").filter(Boolean).join("\n")}return"Reply with OK"}(m),e=s?`${v}/organizations/${s}/chat_conversations/PLACEHOLDER/completion`:`${v}/chat_conversations/PLACEHOLDER/completion`,f=await (0,l.As)({poolKey:"claude-web",chatPageUrl:"https://claude.ai/new",chatUrl:e,chatUrlMatchDomain:"claude.ai",cookieString:c,cookieDomain:".claude.ai",userMessage:d,inputSelector:"div[contenteditable='true']",postSubmitWaitMs:15e3,signal:h??null});if(f.status>0){let c=new Response(f.body,{status:f.status,headers:{"Content-Type":f.contentType||"text/event-stream"}});return{response:await u(c,a,i,null),url:e,headers:y,transformedBody:b}}return{response:new Response(JSON.stringify({error:{message:`Claude Web browser-backed chat captured no upstream response (timing: ${JSON.stringify(f.timing)})`,type:"upstream_error"}}),{status:502,headers:{"Content-Type":"application/json"}}),url:e,headers:y,transformedBody:b}}let z=s&&w?`${v}/organizations/${s}/chat_conversations/${w}/completion`:`${v}/chat_conversations/new/completion`,A=AbortSignal.timeout(f.MT),B=h?(0,e.OW)(h,A):A;i?.debug?.("CLAUDE-WEB",`Making request to ${z}`);let C=await (0,g.wf)(z,{method:"POST",headers:{...y,Cookie:k},body:JSON.stringify(b),timeoutMs:f.MT,stream:!0,signal:B});if(C.status<200||C.status>=300){let a;if(i?.error?.("CLAUDE-WEB",`HTTP ${C.status}`),401===C.status)return{response:new Response(JSON.stringify({error:{message:"Session expired or invalid",type:"authentication_error"}}),{status:401,statusText:"Unauthorized",headers:{"Content-Type":"application/json"}}),url:z,headers:y,transformedBody:b};if(429===C.status)return{response:new Response(JSON.stringify({error:{message:"Rate limited by Claude Web API",type:"rate_limit_error"}}),{status:429,statusText:"Too Many Requests",headers:{"Content-Type":"application/json"}}),url:z,headers:y,transformedBody:b};let c="",d=null;try{if(C.body){let a=C.body.getReader(),b=new TextDecoder,d=[],e=0;for(;e<2048;){let{value:b,done:c}=await a.read();if(c||!b)break;d.push(b),e+=b.byteLength}try{a.releaseLock()}catch{}if(1===d.length)c=b.decode(d[0]);else{let a=new Uint8Array(e),f=0;for(let b of d)a.set(b,f),f+=b.byteLength;c=b.decode(a)}}else C.text&&(c=C.text)}catch{c=""}d=C.headers.get("cf-mitigated");let e=403===C.status&&("challenge"===d||/<title>\s*Just a moment/i.test(c)||/<title>\s*Attention Required/i.test(c));if(e)a=`Claude Web returned a Cloudflare bot-management challenge (cf-mitigated=${d??"challenge"}). The sandbox / VPS IP appears to be flagged; the cf_clearance cookie pasted from a residential IP won't pass. Probe from a residential network, or use the official Anthropic API (provider: 'claude') instead.`;else{let b=c.trim().slice(0,500);a=b?`Claude Web API error (${C.status}): ${b}`:`Claude Web API error (${C.status}) with no response body`}return{response:new Response(JSON.stringify({error:{message:a,type:e?"cloudflare_challenge":"api_error",code:e?"cf_mitigated_challenge":`HTTP_${C.status}`,...d?{cfMitigated:d}:{}}}),{status:C.status,statusText:"HTTP Error",headers:{"Content-Type":"application/json"}}),url:z,headers:y,transformedBody:b}}return{response:await u(C,a,i,C.body),url:z,headers:y,transformedBody:b}}catch(b){let a=b instanceof Error?b.message:String(b);return i?.error?.("CLAUDE-WEB",`Fetch failed: ${a}`),{response:new Response(JSON.stringify({error:{message:`Claude Web connection failed: ${(0,k.sanitizeErrorMessage)(a)}`,type:"api_connection_error"}}),{status:500,statusText:"Internal Server Error",headers:{"Content-Type":"application/json"}}),url:"",headers:{},transformedBody:m}}}}d()}catch(a){d(a)}})},69734:(a,b,c)=>{c.d(b,{Fx:()=>d,y9:()=>e});let d=()=>void 0,e=()=>void 0},69896:(a,b,c)=>{c.d(b,{l:()=>m});var d=c(14170),e=c(81167),f=c(23874),g=c(31252);function h(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}function i(a,b=""){return"string"==typeof a?a:b}function j(a,b=0){let c="number"==typeof a?a:"string"==typeof a&&a.trim().length>0?Number(a):NaN;return Number.isFinite(c)?c:b}function k(...a){for(let b of a){let a=j(b,0);if(a>0)return a}return 0}function l(a){if(!Array.isArray(a.content))return"";let b="";for(let c of a.content){if(!c||"object"!=typeof c)continue;let a=h(c);"output_text"===a.type&&"string"==typeof a.text&&(b+=a.text)}return b}function m(a,b,c,m){if(b===c)return a;let n=a;if(b===d.h.OPENAI_RESPONSES){let b=h(a),c="response"===b.object?b:h(b.response??b),d=Array.isArray(c.output)?c.output:[],e=h(c.usage??b.usage),f=function(a){let b=a.map(a=>h(a)).filter(a=>"message"===a.type&&Array.isArray(a.content));for(let a=b.length-1;a>=0;a-=1){let c=l(b[a]);if(c.trim().length>0)return{text:c,selectedMessageIndex:a,messageItems:b}}if(b.length>0){let a=b.length-1;return{text:l(b[a]),selectedMessageIndex:a,messageItems:b}}return{text:"",selectedMessageIndex:-1,messageItems:[]}}(d),g=f.text,o="",p=[];for(let a of d){if(!a||"object"!=typeof a)continue;let b=h(a);if("message"===b.type&&Array.isArray(b.content))for(let a of b.content){if(!a||"object"!=typeof a)continue;let b=h(a);"summary_text"===b.type&&"string"==typeof b.text&&(o+=b.text)}else if("reasoning"===b.type&&Array.isArray(b.summary))for(let a of b.summary){let b=h(a);"summary_text"===b.type&&"string"==typeof b.text&&(o+=b.text)}else if("function_call"===b.type){let a=i(b.call_id)||i(b.id)||`call_${Date.now()}_${p.length}`,c=b.arguments;if(null!=c&&"object"==typeof c&&!Array.isArray(c)){let a={...c};for(let[b,c]of Object.entries(a))(""===c||Array.isArray(c)&&0===c.length)&&delete a[b];c=a}let d="string"==typeof c?c:JSON.stringify(c||{}),e=i(b.name),f=m?.get(e)??e;p.push({id:a,type:"function",function:{name:f,arguments:d}})}}let q={role:"assistant"};g&&(q.content=g),o&&(q.reasoning_content=o),p.length>0&&(q.tool_calls=p),void 0===q.content&&(q.content=""),"true"===process.env.DEBUG_RESPONSES_SSE_TO_JSON&&(console.log(`[ResponsesSSE] ${d.length} output items, ${f.messageItems.length} message items`),f.messageItems.forEach((a,b)=>{let c=l(a).length;console.log(` [${b}] text length: ${c}`)}),console.log(` → Selected message index: ${f.selectedMessageIndex}`),console.log(` → Final text content length: ${g.length}`));let r=j(c.created_at,Math.floor(Date.now()/1e3)),s=i(c.model||b.model,"openai-responses"),t=p.length>0?"tool_calls":"stop",u={id:`chatcmpl-${i(c.id,String(Date.now()))}`,object:"chat.completion",created:r,model:s,choices:[{index:0,message:q,finish_reason:t}]};if(Object.keys(e).length>0){let a=j(e.input_tokens,0),b=j(e.output_tokens,0),c=h(e.input_tokens_details),d=h(e.output_tokens_details),f=h(e.prompt_tokens_details),g=h(e.completion_tokens_details),i=k(c.cached_tokens,f.cached_tokens,e.cache_read_input_tokens),l=k(c.cache_creation_tokens,f.cache_creation_tokens,e.cache_creation_input_tokens),m=k(d.reasoning_tokens,g.reasoning_tokens,e.reasoning_tokens);if(u.usage={prompt_tokens:a,completion_tokens:b,total_tokens:a+b},m>0&&(u.usage.completion_tokens_details={reasoning_tokens:m}),i>0||l>0){u.usage.prompt_tokens_details={};let a=u.usage.prompt_tokens_details;i>0&&(a.cached_tokens=i),l>0&&(a.cache_creation_tokens=l)}}n=u}else if(b===d.h.GEMINI||b===d.h.ANTIGRAVITY){let b=h(a),c=h(b.response??b),d=Array.isArray(c.candidates)?c.candidates:[],k=h(c.usageMetadata??b.usageMetadata),l=h(c.promptFeedback??b.promptFeedback);if(d.length>0||Object.keys(l).length>0){let a=Date.parse(i(c.createTime)),b=Number.isFinite(a)?Math.floor(a/1e3):Math.floor(Date.now()/1e3),l=d.length>0?d.map((a,b)=>{let c=h(a),d=h(c.content),j="",k=[],l=[],n="",o="";if(Array.isArray(d.parts))for(let a of d.parts){let b=h(a);if(!0===b.thought&&"string"==typeof b.text){n+=b.text;continue}let c=i(b.thoughtSignature??b.thought_signature);if(c&&(o=c),"string"==typeof b.text){let a=function(a){if("string"!=typeof a)return null;let b=a.replace(/[\u200B-\u200D\uFEFF]/g,"").match(/^[\s\S]*?\[Tool call:\s*([^\]\n]+)\]\s*\nArguments:\s*([\s\S]+?)\s*$/);if(!b)return null;let c=b[1]?.trim(),d=b[2]?.trim();if(!c||!d)return null;try{let a=JSON.parse(d);if("string"==typeof a){let b=a.trim();(b.startsWith("{")||b.startsWith("["))&&(a=JSON.parse(b))}if(a&&"object"==typeof a&&!Array.isArray(a))return{name:c,args:a}}catch{}return null}(b.text);if(a){let b=`call_${i(a.name,"unknown")}_${Date.now()}_${l.length}`;l.push({id:b,type:"function",function:{name:a.name,arguments:JSON.stringify(a.args||{})}})}else(0,g.vE)(b.text)||(j+=b.text,k.push({type:"text",text:b.text}))}let d=h(b.inlineData??b.inline_data);if("string"==typeof d.data&&d.data.length>0){let a=i(d.mimeType??d.mime_type,"image/png");k.push({type:"image_url",image_url:{url:`data:${a};base64,${d.data}`}})}if(b.functionCall){let a=h(b.functionCall),d=i(a.name),f=m?.get(d)??d,g=i(a.id),j=g.length>0?g:`call_${i(f,"unknown")}_${Date.now()}_${l.length}`,k=c||o;if(k){let a=(0,e.q)(null,j);(0,e.Sk)(a,k)}l.push({id:j,type:"function",function:{name:f,arguments:JSON.stringify(function(a){if("string"!=typeof a)return a;let b=a.trim();if(!b||!(b.startsWith("{")||b.startsWith("[")))return a;try{return JSON.parse(b)}catch{return a}}(a.args||{}))}})}}let p={role:"assistant"};1===k.length&&"text"===k[0].type?p.content=k[0].text:k.length>0?p.content=k:j&&(p.content=j),n&&(p.reasoning_content=n),l.length>0&&(p.tool_calls=l),p.content||p.tool_calls||(p.content="");let q=(0,f.U)(i(c.finishReason,"stop"));return"stop"===q&&l.length>0&&(q="tool_calls"),{index:b,message:p,finish_reason:q}}):[{index:0,message:{role:"assistant",content:""},finish_reason:"content_filter"}],o={id:`chatcmpl-${i(c.responseId,String(Date.now()))}`,object:"chat.completion",created:b,model:i(c.modelVersion,"gemini"),choices:l};if(Object.keys(k).length>0){let a=j(k.promptTokenCount,0),b=j(k.thoughtsTokenCount,0);o.usage={prompt_tokens:a,completion_tokens:j(k.candidatesTokenCount,0)+b,total_tokens:j(k.totalTokenCount,0)},b>0&&(o.usage.completion_tokens_details={reasoning_tokens:b}),j(k.cachedContentTokenCount,0)>0&&(o.usage.prompt_tokens_details={cached_tokens:j(k.cachedContentTokenCount,0)})}n=o}}else if(b===d.h.CLAUDE){let b=h(a),c=Array.isArray(b.content)?b.content:[];if(c.length>0){let a="",d="",e=[];for(let b of c){let c=h(b);if("text"===c.type)a+=i(c.text);else if("thinking"===c.type)d+=i(c.thinking);else if("tool_use"===c.type){let a=i(c.name),b=m?.get(a)??a;e.push({id:i(c.id,`call_${Date.now()}_${e.length}`),type:"function",function:{name:b,arguments:JSON.stringify(c.input||{})}})}}let f={role:"assistant"};a&&(f.content=a),d&&(f.reasoning_content=d),e.length>0&&(f.tool_calls=e),void 0===f.content&&(f.content="");let g=i(b.stop_reason,"stop");"end_turn"===g&&(g="stop"),"tool_use"===g&&(g="tool_calls");let k={id:`chatcmpl-${i(b.id,String(Date.now()))}`,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:i(b.model,"claude"),choices:[{index:0,message:f,finish_reason:g}]},l=h(b.usage);if(Object.keys(l).length>0){let a=j(l.input_tokens,0),b=j(l.output_tokens,0);k.usage={prompt_tokens:a,completion_tokens:b,total_tokens:a+b}}n=k}}return c===d.h.CLAUDE&&c!==b?function(a){let b=a.choices,c=Array.isArray(b);if(!c&&"chat.completion"!==a.object)return a;let d=c?b[0]:null,e=d?h(d):{},f=e.message?h(e.message):{},g=[],k=!1;if(f.reasoning_content&&(k=!0,g.push({type:"thinking",thinking:i(f.reasoning_content)})),Array.isArray(f.tool_calls)&&f.tool_calls.length,void 0!==f.content&&null!==f.content){k=!0;let a=i(f.content);g.push({type:"text",text:""===a?"(empty response)":a})}else k||g.push({type:"text",text:"(empty response)"});if(Array.isArray(f.tool_calls))for(let a of f.tool_calls){let b=h(a),c=h(b.function);g.push({type:"tool_use",id:i(b.id,`call_${Date.now()}`),name:i(c.name),input:"string"==typeof c.arguments?JSON.parse(c.arguments||"{}"):c.arguments||{}})}let l=i(e.finish_reason,"end_turn");"stop"===l&&(l="end_turn"),"tool_calls"===l&&(l="tool_use");let m=h(a.usage);return{id:i(a.id,`msg_${Date.now()}`),type:"message",role:"assistant",model:i(a.model,"claude"),content:g,stop_reason:l,stop_sequence:null,usage:{input_tokens:j(m.prompt_tokens,0),output_tokens:j(m.completion_tokens,0)}}}(h(n)):n}},71394:(a,b,c)=>{c.d(b,{C:()=>k});var d=c(74350),e=c(56452),f=c(33748);function g(a){return"string"==typeof a.reasoning_content&&a.reasoning_content.trim().length>0}function h(a){return!!a&&"object"==typeof a&&!Array.isArray(a)&&"tool_use"===a.type}function i(a){return!!a&&"object"==typeof a&&!Array.isArray(a)&&("thinking"===a.type||"redacted_thinking"===a.type)}function j(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:null}class k extends d.L{constructor(a="kimi-coding"){super(a)}transformRequest(a,b,c,d){return function(a){let b,c=(0,e.b)(a,void 0),d=j(c);if(!d||!Array.isArray(d.messages))return c;let k=function(a){if(!(Array.isArray(a.system)||Array.isArray(a.messages)&&a.messages.some(a=>{let b=j(a);return!!b&&!!Array.isArray(b.content)&&b.content.some(a=>{let b=j(a);return b?.type==="text"||b?.type==="tool_use"||b?.type==="tool_result"})})))return a;let b=j(a.thinking)??{type:"enabled"};return null===b.keep?a:{...a,thinking:{...b,keep:null}}}(d);if(!(b=k.thinking)||"object"!=typeof b||Array.isArray(b)||"enabled"!==b.type&&"adaptive"!==b.type)return k;let l=!1,m=(Array.isArray(k.messages)?k.messages:d.messages).map(a=>{let b=j(a);if(!b||"assistant"!==b.role||!(Array.isArray(b.tool_calls)&&b.tool_calls.length>0||Array.isArray(b.content)&&b.content.some(h)))return a;let c=function(a){let b=g(a)?String(a.reasoning_content):f.A_,c=g(a)?a:{...a,reasoning_content:b};if(!Array.isArray(c.content))return c;let d=c.content.findIndex(h);if(d<0||c.content.some(i))return c;let e=[...c.content];return e.splice(d,0,{type:"thinking",thinking:b}),{...c,content:e}}(b);return c!==b&&(l=!0),c});return l?{...k,messages:m}:k}(super.transformRequest(a,b,c,d))}}},72221:(a,b,c)=>{c.d(b,{LW:()=>k,S$:()=>n,Ub:()=>i,mU:()=>o,n:()=>j,r3:()=>l,uQ:()=>m,x2:()=>g});let d=/<tool>\s*([\s\S]*?)\s*<\/tool>/g,e=/<tool_call(?:\s+[^>]*)?\s*>\s*([\s\S]*?)\s*<\/tool_call>/g;function f(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:null}function g(a){if(!Array.isArray(a))return[];let b=[],c=new Set;for(let d of a){let a=f(d),e=f(a?.function),g="string"==typeof e?.name?e.name.trim():"";!g||c.has(g)||(c.add(g),b.push({original:g,normalized:h(g)}))}return b}function h(a){return a.toLowerCase().replace(/[^a-z0-9]/g,"")}function i(a,b){if(0===b.length)return a;let c=null,d=0;for(let e of b){let b=function(a,b){if(a===b.original)return 1;let c=h(a);if(!c||!b.normalized)return 0;if(c===b.normalized)return .98;let d=Math.min(c.length,b.normalized.length),e=Math.max(c.length,b.normalized.length);if(d>=4&&(c.includes(b.normalized)||b.normalized.includes(c)))return .86-(e-d)/Math.max(e,1)/4;let f=1-function(a,b){if(a===b)return 0;if(!a)return b.length;if(!b)return a.length;let c=Array.from({length:b.length+1},(a,b)=>b),d=Array(b.length+1);for(let e=1;e<=a.length;e+=1){d[0]=e;for(let f=1;f<=b.length;f+=1){let g=+(a[e-1]!==b[f-1]);d[f]=Math.min(d[f-1]+1,c[f]+1,c[f-1]+g)}let f=c;c=d,d=f}return c[b.length]}(c,b.normalized)/Math.max(e,1);return f>=.72?f:0}(a,e);!c||b>c.score?(d=c?.score??0,c={name:e.original,score:b}):b>d&&(d=b)}return!c||c.score<.72||c.score<.98&&c.score-d<.08?null:c.name}function j(a){let b=a.trim().replace(/^```(?:json|javascript|js|python)?\s*/i,"").replace(/\s*```$/i,"").trim();for(let a of[b,(function(a){let b="",c=!1,d=!1,e="",f=()=>{"True"===e?b+="true":"False"===e?b+="false":"None"===e?b+="null":b+=e,e=""};for(let g of a){if(d){e&&f(),b+=g,d=!1;continue}if("\\"===g){e&&f(),b+=g,d=c;continue}if('"'===g){e&&f(),c=!c,b+=g;continue}if(!c&&/[A-Za-z]/.test(g)){e+=g;continue}e&&f(),b+=g}return e&&f(),b})(function(a){let b="",c=!1,d=!1,e=!1;for(let f of a){if(e){b+='"'===f&&c?'\\"':f,e=!1;continue}if("\\"===f){b+=f,e=!0;continue}if('"'===f){c?b+='\\"':(d=!d,b+=f);continue}if("'"===f&&!d){c=!c,b+='"';continue}b+=f}return b}(b)).replace(/([{,]\s*)([A-Za-z_][A-Za-z0-9_-]*)(\s*:)/g,'$1"$2"$3').replace(/,\s*([}\]])/g,"$1")])try{return f(JSON.parse(a))}catch{}return null}function k(a,b){let c=a;for(let a of[...b].sort((a,b)=>b.start-a.start)){let b=c.lastIndexOf("\n",a.start-1)+1,d=c.indexOf("\n",a.end),e=-1===d?c.length:d,f=c.slice(b,a.start),g=c.slice(a.end,e),h=""===f.trim()&&""===g.trim(),i=h?b:a.start,j=h&&-1!==d?d+1:h?e:a.end;c=`${c.slice(0,i)}${c.slice(j)}`}return c.replace(/\n{3,}/g,"\n\n").trim()}function l(a){if(void 0===a)return"{}";if("string"==typeof a){let b=j(a);return b?JSON.stringify(b):a}try{return JSON.stringify(a)}catch{return"{}"}}function m(a,b="call",c){let f,h=g(c),n=h.length>0;if("string"!=typeof a||!a.includes("<tool>")&&!a.includes("<tool_call")&&!n)return{content:a??"",toolCalls:null};let o=[],p=[];for(d.lastIndex=0;null!==(f=d.exec(a));){let a={start:f.index,end:d.lastIndex};p.push(a),o.push({raw:f[1].trim(),start:a.start,end:a.end,requireRequestedTool:!1})}for(e.lastIndex=0;null!==(f=e.exec(a));){let a={start:f.index,end:e.lastIndex};p.push(a),o.push({raw:f[1].trim(),start:a.start,end:a.end,requireRequestedTool:!1})}if(n)for(let b of function(a){let b=[],c=-1,d=0,e="",f=!1;for(let g=0;g<a.length;g+=1){let h=a[g];if(0!==d||"{"===h){if(f){f=!1;continue}if(e){"\\"===h?f=!0:h===e&&(e="");continue}if('"'===h||"'"===h){e=h;continue}if("{"===h){0===d&&(c=g),d+=1;continue}if("}"===h&&d>0&&0==(d-=1)&&c>=0){let d=a.slice(c,g+1);/[{,]\s*["']?(name|command)["']?\s*:/i.test(d)&&/[{,]\s*["']?arguments["']?\s*:/i.test(d)&&b.push({raw:d,start:c,end:g+1,requireRequestedTool:!0}),c=-1}}}return b}(a))p.some(a=>a.start<b.end&&b.start<a.end)||o.push(b);o.sort((a,b)=>a.start-b.start);let q=[],r=[];for(let a of o){let c=j(a.raw),d=c&&"string"==typeof c.name?c.name:c&&"string"==typeof c.command?c.command:null;if(!d)continue;let e=i(d,h)||(a.requireRequestedTool?null:d);if(!e||a.requireRequestedTool&&0===h.length)continue;let f=l(c?.arguments);q.push({id:`${b}_${q.length}`,type:"function",function:{name:e,arguments:f}}),r.push({start:a.start,end:a.end})}return 0===q.length?{content:a,toolCalls:null}:{content:k(a,r),toolCalls:q}}function n(a,b){let c=a.tools;if(!(Array.isArray(c)&&c.length>0))return{hasTools:!1,requestedTools:c,effectiveMessages:b};let d=function(a){if(!Array.isArray(a)||0===a.length)return"";let b=[];for(let c of a){let a=c?.function;if(!a?.name)continue;let d="string"==typeof a.description&&a.description?a.description:"",e="";try{e=a.parameters?JSON.stringify(a.parameters):""}catch{e=""}b.push(`- ${a.name}${d?`: ${d}`:""}${e?`
356
- parameters: ${e}`:""}`)}return 0===b.length?"":["You can call tools. To call a tool, reply with a single line containing a <tool> block",'with JSON: <tool>{"name": "<tool_name>", "arguments": { ... }}</tool>',"Only emit the <tool> block when you actually want to call a tool; otherwise answer normally.","","Available tools:",...b].join("\n")}(c);return{hasTools:!0,requestedTools:c,effectiveMessages:[{role:"system",content:d},...b]}}function o(a,b,c="call"){let{content:d,toolCalls:e}=m(a,`${c}-${Date.now()}`,b);return{content:d,toolCalls:e,finishReason:e?"tool_calls":"stop"}}},73483:(a,b,c)=>{c.d(b,{Gh:()=>m,IF:()=>s,O9:()=>j,OF:()=>r,WL:()=>k,bC:()=>p,f5:()=>n,lm:()=>f,oT:()=>q});var d=c(47370),e=c(14170);let f={reset:"\x1b[0m",red:"\x1b[31m",green:"\x1b[32m",yellow:"\x1b[33m",blue:"\x1b[34m",cyan:"\x1b[36m"},g=null,h=0;async function i(){try{let{getSettings:a}=await c.e(8279).then(c.bind(c,18279)),b=(await a()).usageTokenBuffer;"number"==typeof b&&b>=0&&(g=b,h=Date.now())}catch{}}function j(a){if(!a||"object"!=typeof a)return a;let b=function(){let a=Date.now(),b=null!==g&&a-h>=3e4;if(null!==g&&!b)return g;let c=process.env.USAGE_TOKEN_BUFFER;if(void 0!==c){let b=parseInt(c,10);if(!isNaN(b)&&b>=0)return g=b,h=a,b}return(null===g||b)&&(null===g&&(g=2e3),h=a,i()),g}();if(0===b)return a;let c={...a};return void 0!==c.input_tokens&&(c.input_tokens+=b),void 0!==c.prompt_tokens&&(c.prompt_tokens+=b),void 0!==c.total_tokens?c.total_tokens+=b:void 0!==c.prompt_tokens&&void 0!==c.completion_tokens&&(c.total_tokens=c.prompt_tokens+c.completion_tokens),c}function k(a,b){if(!a||"object"!=typeof a)return a;let c={...a};b===e.h.CLAUDE||b===e.h.OPENAI_RESPONSES?(void 0!==c.prompt_tokens&&void 0===c.input_tokens&&(c.input_tokens=c.prompt_tokens),void 0!==c.completion_tokens&&void 0===c.output_tokens&&(c.output_tokens=c.completion_tokens)):(void 0!==c.input_tokens&&void 0===c.prompt_tokens&&(c.prompt_tokens=c.input_tokens),void 0!==c.output_tokens&&void 0===c.completion_tokens&&(c.completion_tokens=c.output_tokens),void 0===c.total_tokens&&void 0!==c.prompt_tokens&&void 0!==c.completion_tokens&&(c.total_tokens=c.prompt_tokens+c.completion_tokens));let d={[e.h.CLAUDE]:["input_tokens","output_tokens","cache_read_input_tokens","cache_creation_input_tokens","estimated"],[e.h.GEMINI]:["promptTokenCount","candidatesTokenCount","totalTokenCount","cachedContentTokenCount","thoughtsTokenCount","estimated"],[e.h.OPENAI_RESPONSES]:["input_tokens","output_tokens","input_tokens_details","output_tokens_details","estimated"],default:["prompt_tokens","completion_tokens","total_tokens","cached_tokens","reasoning_tokens","prompt_tokens_details","completion_tokens_details","estimated"]},f=d[b];b===e.h.ANTIGRAVITY?f=d[e.h.GEMINI]:b===e.h.OPENAI_RESPONSE?f=d[e.h.OPENAI_RESPONSES]:f||(f=d.default);let g={};for(let a of f)void 0!==c[a]&&(g[a]=c[a]);return g}function l(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b={},c=(a,c)=>{if(null==c)return;let d=Number(c);Number.isFinite(d)&&(b[a]=d)};return(c("prompt_tokens",a?.prompt_tokens),c("completion_tokens",a?.completion_tokens),c("total_tokens",a?.total_tokens),c("input_tokens",a?.input_tokens),c("output_tokens",a?.output_tokens),c("cache_read_input_tokens",a?.cache_read_input_tokens),c("cache_creation_input_tokens",a?.cache_creation_input_tokens),c("cached_tokens",a?.cached_tokens),c("reasoning_tokens",a?.reasoning_tokens),0===Object.keys(b).length)?null:b}function m(a){if(!a||"object"!=typeof a)return!1;for(let b of["prompt_tokens","completion_tokens","total_tokens","input_tokens","output_tokens","promptTokenCount","candidatesTokenCount"])if("number"==typeof a[b]&&a[b]>0)return!0;return!1}function n(a){if(!a||"object"!=typeof a)return null;if("message_start"===a.type&&a.message?.usage){let b=a.message.usage,c=b.input_tokens||b.prompt_tokens||0,d=b.cache_read_input_tokens||0,e=b.cache_creation_input_tokens||0;if(c>0||d>0||e>0)return l({prompt_tokens:c+d+e,completion_tokens:b.output_tokens||b.completion_tokens||0,input_tokens:c+d+e,output_tokens:b.output_tokens||b.completion_tokens||0,cache_read_input_tokens:b.cache_read_input_tokens,cache_creation_input_tokens:b.cache_creation_input_tokens})}if("message_delta"===a.type&&a.usage&&"object"==typeof a.usage){let b=a.usage.input_tokens||0,c=a.usage.cache_read_input_tokens||0,d=a.usage.cache_creation_input_tokens||0;return l({prompt_tokens:b+c+d,completion_tokens:a.usage.output_tokens||0,input_tokens:b+c+d,output_tokens:a.usage.output_tokens||0,cache_read_input_tokens:a.usage.cache_read_input_tokens,cache_creation_input_tokens:a.usage.cache_creation_input_tokens})}if(("response.completed"===a.type||"response.done"===a.type)&&a.response?.usage&&"object"==typeof a.response.usage){let b=a.response.usage;return l({prompt_tokens:b.input_tokens||b.prompt_tokens||0,completion_tokens:b.output_tokens||b.completion_tokens||0,cached_tokens:b.input_tokens_details?.cached_tokens??b.prompt_tokens_details?.cached_tokens??b.cache_read_input_tokens,cache_creation_input_tokens:b.cache_creation_input_tokens,reasoning_tokens:b.output_tokens_details?.reasoning_tokens??b.completion_tokens_details?.reasoning_tokens??b.reasoning_tokens})}if(a.usage&&"object"==typeof a.usage&&(void 0!==a.usage.prompt_tokens||void 0!==a.usage.input_tokens))return l({prompt_tokens:a.usage.prompt_tokens??a.usage.input_tokens??0,completion_tokens:a.usage.completion_tokens??a.usage.output_tokens??0,cached_tokens:a.usage.prompt_tokens_details?.cached_tokens??a.usage.input_tokens_details?.cached_tokens??a.usage.prompt_cache_hit_tokens??a.usage.cached_tokens,reasoning_tokens:a.usage.completion_tokens_details?.reasoning_tokens??a.usage.output_tokens_details?.reasoning_tokens??a.usage.reasoning_tokens});let b=a.usageMetadata||a.response?.usageMetadata;if(b&&"object"==typeof b)return l({prompt_tokens:b.promptTokenCount||0,completion_tokens:b.candidatesTokenCount||0,total_tokens:b.totalTokenCount,cached_tokens:b.cachedContentTokenCount,reasoning_tokens:b.thoughtsTokenCount});if(!0===a.done&&"number"==typeof a.prompt_eval_count){let b=a.prompt_eval_count||0,c=a.eval_count||0;return l({prompt_tokens:b,completion_tokens:c,total_tokens:b+c})}return null}function o(a){if(!a||"string"!=typeof a)return 0;let b=a.match(/[\u3000-\u9fff\uf900-\ufaff\u{20000}-\u{2fa1f}]/gu);return(b?b.length:0)+Math.ceil(1.3*a.replace(/[\u3000-\u9fff\uf900-\ufaff]/g," ").split(/(\s+|[^\w\s]|(?<=[a-z])(?=[A-Z]))/).filter(a=>a&&a.trim().length>0).length)}function p(a){if(!a||"object"!=typeof a)return 0;try{let b=0,c=0;if(a.tools&&Array.isArray(a.tools)){let d=JSON.stringify(a.tools);b=Math.ceil(d.length/6);let{tools:e,...f}=a;c=o(JSON.stringify(f))}else c=o(JSON.stringify(a));return c+b}catch(a){return 0}}function q(a){return!a||a<=0?0:Math.max(1,Math.ceil(a/3.5))}function r(a,b,c=e.h.OPENAI){var d,f;return d=p(a),f=q(b),c===e.h.CLAUDE?j({input_tokens:d,output_tokens:f,estimated:!0}):j({prompt_tokens:d,completion_tokens:f,total_tokens:d+f,estimated:!0})}function s(a,b,c=null,e=null,g=null,h=null,i="ok",j=!0){if(!b||"object"!=typeof b)return;let k=a?.toUpperCase()||"UNKNOWN",l=b?.prompt_tokens??b?.input_tokens??null,m=b?.completion_tokens??b?.output_tokens??null,n="string"==typeof e?e:void 0,o=n?n.slice(0,8)+"...":"unknown",p="ok"===i||200===i||"200"===i?`${f.green}ok${f.reset}`:`${f.red}${i}${f.reset}`,q=null!==h?`${h}ms`:"-",r=`[${new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"})}] 📊 [USAGE] ${k} | ${c||"unknown"} | ${p} | ${j?"stream":"sync"} | ${q} | in=${l} | out=${m} | account=${o}`;b.estimated&&(r+=` ${f.yellow}(estimated)${f.reset}`);let t=b?.cached_tokens??b?.cache_read_input_tokens??null;t&&(r+=` | cache_read=${t}`);let u=b?.cache_creation_input_tokens??null;u&&(r+=` | cache_create=${u}`);let v=b.reasoning_tokens;v&&(r+=` | reasoning=${v}`),console.log(r),(0,d.E5)({model:"string"==typeof c?c:void 0,provider:"string"==typeof a?a:void 0,connectionId:n,tokens:{input:l,output:m,cacheRead:t||0,cacheCreation:u||0,reasoning:v||0},status:"200 OK"}).catch(()=>{})}},73870:(a,b,c)=>{c.d(b,{w0:()=>o});var d=c(89419),e=c(86935),f=c(97510),g=c(61408);let h=new Map,i=["https://www.googleapis.com/auth/cloud-platform","https://www.googleapis.com/auth/generative-language.retriever"];function j(a){try{return JSON.parse(a)}catch{throw Error("Vertex AI requires a valid Service Account JSON as the API key")}}function k(a){if(!a||"string"!=typeof a)return!1;try{let b=JSON.parse(a);return!!b&&"object"==typeof b&&!Array.isArray(b)}catch{return!1}}async function l(a){if(!a.client_email||!a.private_key)throw Error("Service Account JSON is missing required fields (client_email or private_key)");let b=a.client_email,c=h.get(b);if(c&&Date.now()<c.expiresAt-6e4)return c.token;let f=await (0,d.Lf)(a.private_key,"RS256"),g=Math.floor(Date.now()/1e3),j=await new e.P({iss:a.client_email,sub:a.client_email,aud:"https://oauth2.googleapis.com/token",iat:g,exp:g+3600,scope:i.join(" ")}).setProtectedHeader({alg:"RS256",kid:a.private_key_id}).sign(f),k=await fetch("https://oauth2.googleapis.com/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"urn:ietf:params:oauth:grant-type:jwt-bearer",assertion:j})});if(!k.ok){let a=await k.text();throw Error(`Failed to exchange JWT for Vertex access token: ${k.status} ${a}`)}let l=(await k.json()).access_token;if(!l)throw Error("Vertex AI token exchange succeeded but no access_token found");return h.set(b,{token:l,expiresAt:(g+3600)*1e3}),l}let m=new Set(["claude-3-5-sonnet","claude-3-opus","claude-3-haiku","deepseek-v3","deepseek-v3.2","deepseek-v4","deepseek-deepseek-r1","qwen3-next-80b","qwen3.6-","llama-3.1","mistral-","glm-5","glm-5.1","meta/llama"]);function n(a){let b=a.toLowerCase();return[...m].some(a=>b.startsWith(a))}class o extends f.Hv{constructor(){super("vertex",g.xq.vertex)}async execute(a){let{credentials:b,log:c}=a;if("string"==typeof b.apiKey&&(b.apiKey=b.apiKey.trim()),b.apiKey&&!b.accessToken&&k(b.apiKey))try{let a=j(b.apiKey);b.accessToken=await l(a)}catch(a){throw c?.error?.("VERTEX",`Failed to generate JWT token: ${a.message}`),a}return super.execute(a)}buildUrl(a,b,c=0,d=null){var e;if("string"==typeof(e=d?.apiKey)&&e.trim().length>0&&!k(e)&&!d?.accessToken){let c=encodeURIComponent(String(d.apiKey).trim());return n(a)?`https://aiplatform.googleapis.com/v1/publishers/openapi/chat/completions?key=${c}`:`https://aiplatform.googleapis.com/v1/publishers/google/models/${a}:${b?"streamGenerateContent?alt=sse&":"generateContent?"}key=${c}`}let f=d?.providerSpecificData?.region||"us-central1",g="unknown-project";if(d?.apiKey)try{let a=j(d.apiKey);a.project_id&&(g=a.project_id)}catch{}return n(a)?`https://aiplatform.googleapis.com/v1/projects/${g}/locations/global/endpoints/openapi/chat/completions`:`https://aiplatform.googleapis.com/v1/projects/${g}/locations/${f}/publishers/google/models/${a}:${b?"streamGenerateContent?alt=sse":"generateContent"}`}buildHeaders(a,b=!0){let c={"Content-Type":"application/json"};return a.accessToken&&(c.Authorization=`Bearer ${a.accessToken}`),b&&(c.Accept="text/event-stream"),c}}},74184:(a,b,c)=>{c.d(b,{As:()=>E});var d=c(4573);let e={browser:null,contexts:new Map,pendingContexts:new Map,launching:null,lastActivity:0,idleTimer:null,evictTimer:null,cloakLaunch:null,cloakLaunchResolved:!1,metrics:{browserLaunches:0,browserLaunchFailures:0,contextsCreated:0,contextsReused:0,contextsEvicted:0,contextsReleased:0,contextCreateFailures:0,shutdowns:0,lastShutdownReason:null}};async function f(){if(e.cloakLaunchResolved)return e.cloakLaunch;e.cloakLaunchResolved=!0;try{e.cloakLaunch=(await import("cloakbrowser")).launch??null}catch{e.cloakLaunch=null}return e.cloakLaunch}function g(){e.idleTimer&&clearTimeout(e.idleTimer),e.idleTimer=setTimeout(()=>{m("idle-timeout")},3e5),e.idleTimer.unref?.()}async function h(a,b){try{let d=b?.resolveProxy??(async a=>{let{resolveProxyForProvider:b}=await c.e(1676).then(c.bind(c,51676));return b(a)}),e=await d(a);if(!e?.host)return;let f="socks5"===e.type?"socks5":"http",g={server:`${f}://${e.host}:${e.port}`};return e.username&&(g.username=String(e.username),g.password=null==e.password?"":String(e.password)),g}catch(a){console.warn("[BrowserPool] Failed to resolve proxy from DB:",a);return}}async function i(){if(e.browser)return e.browser;if(e.launching)return e.launching;e.launching=(async()=>{let a,b=await f();if(b)a=await b({headless:!0,args:["--no-sandbox","--disable-dev-shm-usage"]});else{let{chromium:b}=await Promise.resolve().then(c.bind(c,83237));a=await b.launch({headless:!0,args:["--no-sandbox","--disable-dev-shm-usage","--disable-blink-features=AutomationControlled"]})}return e.browser=a,e.launching=null,e.metrics.browserLaunches++,a})();try{return await e.launching}catch(a){throw e.launching=null,e.metrics.browserLaunchFailures++,a}}function j(a,b){b&&e.metrics.contextCreateFailures++,e.pendingContexts.delete(a)}async function k(a,b){let c;if(void 0!==(c=process.env.OMNIROUTE_BROWSER_POOL)&&("off"===c||"0"===c||"false"===c))throw Error("browserPool: OMNIROUTE_BROWSER_POOL=off — context requested but pool is disabled");let d=e.contexts.get(a);if(d)return d.lastUsed=Date.now(),e.lastActivity=Date.now(),e.metrics.contextsReused++,g(),d;let f=e.pendingContexts.get(a);if(f)return f;let k=(async()=>{let[c,d]=await Promise.all([i(),h(a)]),f=null!==e.cloakLaunch,j=await c.newContext({userAgent:b.userAgent||"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36",locale:b.locale||"en-US",timezoneId:b.timezone||"America/New_York",viewport:{width:1280,height:800},...d?{proxy:d}:{}});if(b.cookieString){var k,l;let a=(k=b.cookieString,l=b.cookieDomain,k.split(";").map(a=>a.trim()).filter(Boolean).map(a=>{let b=a.indexOf("=");if(b<0)return null;let c=a.slice(0,b).trim(),d=a.slice(b+1).trim();return c&&d?{name:c,value:d,domain:l.startsWith(".")?l:`.${l}`,path:"/",expires:-1,httpOnly:!1,secure:!0,sameSite:"Lax"}:null}).filter(Boolean));a.length>0&&await j.addCookies(a)}let n=null;if(b.warmupUrl)try{n=await j.newPage(),await n.goto(b.warmupUrl,{waitUntil:"domcontentloaded",timeout:3e4}),await new Promise(a=>setTimeout(a,1500))}catch(a){try{await n?.close()}catch{}n=null}if(e.browser!==c)throw await j.close().catch(()=>{}),n&&await n.close().catch(()=>{}),Error("Pool shut down during context creation");let o={id:a,context:j,warmupPage:n,lastUsed:Date.now(),isStealth:f};return e.contexts.set(a,o),e.metrics.contextsCreated++,e.lastActivity=Date.now(),g(),e.evictTimer&&clearInterval(e.evictTimer),e.evictTimer=setInterval(()=>(function(){let a=Date.now();for(let[b,c]of e.contexts)a-c.lastUsed>6e5&&(console.log("[BrowserPool] Evicted stale context:",b,"(idle",((a-c.lastUsed)/1e3).toFixed(0)+"s)"),e.contexts.delete(b),e.metrics.contextsEvicted++,c.context.close().catch(()=>{}));0!==e.contexts.size||e.launching||m("all-contexts-evicted")})(),6e4),e.evictTimer.unref?.(),o})();return e.pendingContexts.set(a,k),k.then(()=>j(a,!1)).catch(()=>j(a,!0)),k}async function l(a){return a.context.newPage()}async function m(a){for(let[b,c]of(e.metrics.shutdowns++,e.metrics.lastShutdownReason=a,e.idleTimer&&(clearTimeout(e.idleTimer),e.idleTimer=null),e.evictTimer&&(clearInterval(e.evictTimer),e.evictTimer=null),e.pendingContexts.clear(),e.contexts)){try{await c.context.close()}catch{}e.contexts.delete(b)}if(e.browser){try{await e.browser.close()}catch{}e.browser=null}e.lastActivity=Date.now()}async function n(a){let b={};for(let[c,d]of Object.entries(a.headers()))b[c]=d;let c=await a.body();return{status:a.status(),headers:b,body:d.Buffer.from(c)}}var o=c(58643),p=c(43659);let q=new Map;function r(a){let b=q.get(a);return b&&Date.now()<b.expiresAt?b.cookieString:(q.delete(a),null)}function s(a,b,c){q.set(a,{cookieString:b,expiresAt:Date.now()+(c??3e5),domain:a})}let t=new Map;function u(a,b){return new Promise((c,d)=>{if(b?.aborted)return d(new DOMException("Aborted","AbortError"));let e=()=>{clearTimeout(f),d(new DOMException("Aborted","AbortError"))},f=setTimeout(()=>{b?.removeEventListener("abort",e),c()},a);b?.addEventListener("abort",e,{once:!0})}).catch(a=>{if(a instanceof DOMException&&"AbortError"===a.name)throw a})}async function v(a,b){return b?{key:a,acquired:!0}:{key:`${a}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,acquired:!1}}async function w(a){let b=Date.now(),{poolKey:c,chatUrl:e,chatPageUrl:f,userMessage:g,cookieString:h,cookieDomain:i,chatUrlMatchDomain:j,userAgent:m,locale:o,timezone:q,inputSelector:r,submitButtonSelector:s,postSubmitWaitMs:t=15e3,signal:w,reuseContext:x=!0}=a,{key:y,acquired:z}=await v(c,x),A=Date.now(),B=await k(y,{cookieDomain:i||j,cookieString:h||null,warmupUrl:f,userAgent:m,locale:o,timezone:q}),C=Date.now()-A,D=await l(B);try{let a,c=Date.now();await D.goto(f,{waitUntil:"domcontentloaded",timeout:6e4,signal:w??void 0}),await u(2500,w);let h=Date.now()-c,i=D.locator(r).first();await i.waitFor({state:"visible",timeout:1e4,signal:w??void 0}),await i.fill(g),await u(800,w),Date.now();let k=D.waitForResponse(a=>"POST"===a.request().method()&&function(a,b,c){let d,e;if(a===c)return!0;try{d=new URL(a),e=new URL(c)}catch{return!1}if(!d.host.endsWith(b))return!1;let f=e.pathname.split("/").filter(Boolean),g=d.pathname.split("/").filter(Boolean);if(f.length<2||g.length!==f.length)return!1;let h=1;for(let a=0;a<f.length;a++)if(f[a]!==g[a]){if("PLACEHOLDER"===f[a]&&h>0){h--;continue}return!1}return!0}(a.url(),j,e),{timeout:3e4}),l=w?new Promise((b,c)=>{if(w.aborted)return c(new DOMException("Aborted","AbortError"));a=()=>c(new DOMException("Aborted","AbortError")),w.addEventListener("abort",a,{once:!0})}):null;if(s){let a=D.locator(s).first();if(await a.count()>0)try{await a.click({timeout:2e3})}catch{await D.keyboard.press("Enter")}else await D.keyboard.press("Enter")}else await D.keyboard.press("Enter");let m=Date.now(),o=l?await Promise.race([k,l]).catch(()=>null):await k.catch(()=>null);w&&a&&w.removeEventListener("abort",a),o?await u(Math.min(t,3e4),w):await u(t,w);let p=Date.now()-m,q=0,v=null,x=d.Buffer.alloc(0);if(o){let a=await n(o);a.body.length>0xa00000?(x=d.Buffer.from(JSON.stringify({error:{message:"Response too large",type:"upstream_error"}})),q=502,v="application/json"):(q=a.status,v=a.headers["content-type"]||null,x=a.body)}return{status:q,contentType:v,body:x,isStealth:B.isStealth,timing:{acquireContextMs:C,navigateMs:h,submitMs:p,captureResponseMs:p,totalMs:Date.now()-b}}}catch(c){let a=c instanceof Error?c.message:String(c);return{status:502,contentType:"application/json",body:d.Buffer.from(JSON.stringify({error:{message:(0,p.sanitizeErrorMessage)(`browserBackedChat failed: ${a}`),type:"upstream_error"}})),isStealth:B.isStealth,timing:{acquireContextMs:C,navigateMs:0,submitMs:0,captureResponseMs:0,totalMs:Date.now()-b}}}finally{if(await D.close(),!z)try{await B.context.close()}catch{}}}async function x(a){let b,c=Date.now(),{chatUrl:e,userMessage:f,cookieString:g,cookieDomain:h,chatUrlMatchDomain:i,signal:j}=a,k={"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",Accept:"text/event-stream, application/json, text/plain, */*","Accept-Language":"en-US,en;q=0.9","Content-Type":"application/json",Origin:"duckduckgo.com"===i?"https://duckduckgo.com":`https://${i}`,Referer:"duckduckgo.com"===i?"https://duckduckgo.com/":`https://${i}/`,"Sec-Fetch-Dest":"empty","Sec-Fetch-Mode":"cors","Sec-Fetch-Site":"same-origin","Sec-Ch-Ua":'"Chromium";v="149", "Google Chrome";v="149", "Not-A.Brand";v="99"',"Sec-Ch-Ua-Mobile":"?0","Sec-Ch-Ua-Platform":'"macOS"',Priority:"u=1, i"};g&&(k.Cookie=g),b=new URL(e).hostname.includes("duckduckgo")?JSON.stringify({model:"gpt-4o-mini",messages:[{role:"user",content:f}]}):JSON.stringify({messages:[{role:"user",content:f}]});try{let a=Date.now();if(!o.A.available)return{status:501,contentType:"application/json",body:d.Buffer.from(JSON.stringify({error:{message:"httpBackedChat unavailable: wreq-js (TLS client) not installed",type:"configuration_error"}})),isStealth:!1,timing:{acquireContextMs:0,navigateMs:0,submitMs:Date.now()-c,captureResponseMs:0,totalMs:Date.now()-c}};let f=await o.A.fetch(e,{method:"POST",headers:k,body:b,signal:j??void 0}),g=Date.now()-a,h=f.headers.get("content-length");if(h&&parseInt(h,10)>0xa00000)throw Error("Response too large");let i=d.Buffer.from(await f.text()),l=f.status,m=f.headers.get("content-type")||"text/event-stream";return{status:l,contentType:m,body:i,isStealth:!0,timing:{acquireContextMs:0,navigateMs:0,submitMs:g,captureResponseMs:0,totalMs:Date.now()-c}}}catch(b){if(b instanceof DOMException&&"AbortError"===b.name)throw b;let a=b instanceof Error?b.message:String(b);return{status:502,contentType:"application/json",body:d.Buffer.from(JSON.stringify({error:{message:(0,p.sanitizeErrorMessage)(`httpBackedChat failed: ${a}`),type:"upstream_error"}})),isStealth:!0,timing:{acquireContextMs:0,navigateMs:0,submitMs:0,captureResponseMs:0,totalMs:Date.now()-c}}}}async function y(a,b,c){let d=Date.now()+5e3;for(;Date.now()<d;){if(c?.aborted)throw new DOMException("Aborted","AbortError");let e=(await a.cookies(b)).map(a=>`${a.name}=${a.value}`).join("; ");if(e)return e;let f=d-Date.now();if(f<=0)break;await u(Math.min(500,f),c)}return null}async function z(a,b,c,d){let e=await l(a);try{return await e.goto(b,{waitUntil:"domcontentloaded",timeout:6e4,signal:d??void 0}),await y(a.context,c,d)}catch(a){if(a instanceof DOMException&&"AbortError"===a.name)throw a;return null}finally{await e.close().catch(()=>{})}}async function A(a,b,c,d){let e=r(c);if(e)return e;let f=t.get(a);if(f)return f;let g=B(a,b,c,d);return t.set(a,g),g.finally(()=>t.delete(a)),g}async function B(a,b,c,d){let e,{key:f}=await v(a,!0);try{e=await k(f,{cookieDomain:c,cookieString:null,warmupUrl:b})}catch{return null}let g=await z(e,b,c,d);return g&&s(c,g),g}async function C(a){if(!a.cookieDomain)return null;let b=process.env.OMNIROUTE_BROWSER_POOL;if("off"===b||"0"===b||"false"===b)return null;try{let{key:b}=await v(a.poolKey,!0);return await k(b,{cookieDomain:a.cookieDomain,cookieString:null})}catch{return null}}async function D(a,b,c,d,e){if(e)try{let a=await e;if(a){let e=await z(a,b,c,d);if(e)return s(c,e),e}}catch{}return A(a,b,c,d)}async function E(a){let b=a.signal?null:new AbortController,c=a.signal??b?.signal??null;b&&setTimeout(()=>b.abort(),45e3);let e=C(a);try{var f;let b=await x({...a,signal:c??void 0});if(b.status>=200&&b.status<300||!((f=b.status)>=400&&501!==f))return b;let d=null;if(a.cookieDomain){if(d=r(a.cookieDomain)){let b=await x({...a,cookieString:d,signal:c??void 0});if(b.status>=200&&b.status<300)return b;d=null}if(!d&&(d=await D(a.poolKey,a.chatPageUrl,a.cookieDomain,c,e))){let b=await x({...a,cookieString:d,signal:c??void 0});if(b.status>=200&&b.status<300)return b}}let g=d?{...a,cookieString:d,signal:c??void 0}:{...a,signal:c??void 0},h=await w(g);return h.status>=200&&h.status,h}catch(a){if(a instanceof DOMException&&"AbortError"===a.name)return{status:504,contentType:"application/json",body:d.Buffer.from(JSON.stringify({error:{message:"tryBackedChat timed out",type:"timeout_error"}})),isStealth:!1,timing:{acquireContextMs:0,navigateMs:0,submitMs:0,captureResponseMs:0,totalMs:0}};throw a}}},74199:(a,b,c)=>{c.d(b,{R:()=>d});let d=()=>!1},74350:(a,b,c)=>{c.d(b,{L:()=>I});var d=c(97510),e=c(61408),f=c(8590),g=c(89625),h=c(55511);let i=new Map,j=new Map;async function k(a={}){let b=(a.credentials||"").trim();if(!b)throw Error("Missing GigaChat credentials");let c=(a.authUrl||"https://ngw.devices.sberbank.ru:9443/api/v2/oauth").trim(),d=(a.scope||"GIGACHAT_API_PERS").trim(),e=`${c}::${d}::${b}`,f=i.get(e);if(function(a){if(!a?.accessToken||!a?.expiresAt)return!1;let b=new Date(a.expiresAt).getTime();return Number.isFinite(b)&&b-Date.now()>6e4}(f))return f;let g=j.get(e);if(g)return g;let l=(async()=>{let f=await fetch(c,{method:"POST",headers:{Authorization:`Basic ${b}`,RqUID:(0,h.randomUUID)(),"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({scope:d}).toString(),signal:a.signal});if(!f.ok){let a=await f.text();throw Error(`GigaChat token request failed: ${f.status} ${a}`.trim())}let g=await f.json(),j="string"==typeof g.tok?g.tok:"string"==typeof g.access_token?g.access_token:"";if(!j)throw Error("GigaChat token response missing access token");let k={accessToken:j,expiresAt:function(a){if("number"==typeof a&&Number.isFinite(a))return new Date(a).toISOString();if("string"==typeof a&&a.trim().length>0){let b=Number(a);if(Number.isFinite(b))return new Date(b).toISOString();let c=Date.parse(a);if(Number.isFinite(c))return new Date(c).toISOString()}return new Date(Date.now()+18e5).toISOString()}(g.exp??g.expires_at)};return i.set(e,k),k})();j.set(e,l);try{return await l}finally{j.delete(e)}}var l=c(36081),m=c(57247),n=c(93462),o=c(56452),p=c(78340),q=c(57647),r=c(57441),s=c(9427);let t="/api/v2",u="/genai/llmgw/chat/completions/",v="https://app.datarobot.com",w="https://example-resource.services.ai.azure.com/openai/v1",x="https://ca-tor.ml.cloud.ibm.com/ml/gateway/v1",y="https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/openai/v1",z="https://example-aicore.cfapps.eu10.hana.ondemand.com/v2/lm/deployments/example-deployment";var A=c(74361),B=c(40615);let C=()=>!1;var D=c(96303),E=c(4928),F=c(13568);function G(a,b){let c=null;if(b&&"object"==typeof b&&!Array.isArray(b))c=b;else if("string"==typeof b)try{let a=JSON.parse(b);a&&"object"==typeof a&&!Array.isArray(a)&&(c=a)}catch{}if(c)for(let[b,d]of Object.entries(c)){if("string"!=typeof b||"string"!=typeof d||C(b)||/[\r\n\0]/.test(b)||/[\r\n]/.test(d))continue;let c=b.toLowerCase();for(let b of Object.keys(a))b.toLowerCase()===c&&delete a[b];a[b]=d}}function H(a){let b=(0,s.q)(a);return b.endsWith("/chat/completions")||b.endsWith("/responses")||b.endsWith("/chat")?b:b.endsWith("/v1")?`${b}/chat/completions`:`${b}/v1/chat/completions`}class I extends d.Hv{constructor(a){super(a,e.xq[a]||e.xq.openai);const b=(0,l.qs)(a);b?.poolConfig&&(this.poolConfig=b.poolConfig)}buildUrl(a,b,c=0,d=null){if(this.provider?.startsWith?.("openai-compatible-")){let a=d?.providerSpecificData,b=(a?.baseUrl||"https://api.openai.com/v1").replace(/\/$/,""),c="string"==typeof a?.chatPath&&a.chatPath?a.chatPath:null;if(c)return`${b}${c}`;let e=a?._omnirouteForceResponsesUpstream===!0||"responses"===(0,q.J9)(this.provider,a)?"/responses":"/chat/completions";return`${b}${e}`}if(this.provider?.startsWith?.("anthropic-compatible-")){let a=d?.providerSpecificData,b=a?.baseUrl||"https://api.anthropic.com/v1",c="string"==typeof a?.chatPath&&a.chatPath?a.chatPath:null;if((0,q.GK)(this.provider))return(0,g.tI)(b,c||g.np);let e=b.replace(/\/$/,"");return`${e}${c||"/messages"}`}switch(this.provider){case"openai":{let b="string"==typeof d?.providerSpecificData?.baseUrl&&d.providerSpecificData.baseUrl.trim()?d.providerSpecificData.baseUrl:null,c=b?H(b):this.config.baseUrl;if("openai-responses"===(0,m.ux)("openai",a))return c.replace(/\/chat\/completions\/?$/,"/responses");return c}case"bailian-coding-plan":{let a;return h=this.resolveBaseUrl(d),(a=(0,s.q)(h).replace(/\?beta=true$/,"")).endsWith("/messages")?a:`${a}/messages`}case"heroku":case"databricks":case"snowflake":case"gigachat":return void this.resolveBaseUrl(d);case"datarobot":{let a;var e,f,h,i=this.resolveBaseUrl(d);return(a=(0,s.q)(i||v)||v).endsWith("/chat/completions")?a:/\/api\/v2\/deployments\/[^/]+$/i.test(a)?`${a}/chat/completions`:/\/api\/v2\/genai\/llmgw$/i.test(a)?`${a}/chat/completions/`:/\/api\/v2\/genai\/llmgw\/chat$/i.test(a)?`${a}/completions/`:a.includes(t)?`${a}${u}`:`${a}${t}${u}`}case"azure-ai":{let a=d?.providerSpecificData?._omnirouteForceResponsesUpstream===!0||d?.providerSpecificData?.apiType==="responses"?"responses":"chat";return function(a,b="chat"){return function(a,b="chat"){let c=function(a){let b=(0,s.q)(a||w);if(!b)return w;if(b.endsWith("/chat/completions")||b.endsWith("/responses")||b.endsWith("/models"))return b.replace(/\/(?:chat\/completions|responses|models)$/i,"");if(b.endsWith("/openai/v1")||b.endsWith("/v1"))return b;if(b.endsWith("/openai"))return`${b}/v1`;let c=new URL(b);return(c.hostname.endsWith(".services.ai.azure.com")||c.hostname.endsWith(".openai.azure.com"))&&(!c.pathname||"/"===c.pathname)?(c.pathname="/openai/v1",(0,s.o)(c.toString())):b}(a);return`${c}/${"responses"===b?"responses":"chat/completions"}`}(a,b)}(this.resolveBaseUrl(d),a)}case"watsonx":return e=this.resolveBaseUrl(d),`${function(a){let b=(0,s.q)(a||x);if(!b)return x;let c=b.replace(/\/(?:chat\/completions|completions|embeddings|models)$/i,"");if(c.endsWith("/ml/gateway/v1"))return c;if(c.endsWith("/ml/gateway"))return`${c}/v1`;try{let a=new URL(c);return a.pathname&&"/"!==a.pathname?a.pathname.endsWith("/ml/gateway")&&(a.pathname=`${a.pathname}/v1`):a.pathname="/ml/gateway/v1",a.search="",a.hash="",(0,s.o)(a.toString())}catch{return c}}(e)}/chat/completions`;case"oci":{let a=d?.providerSpecificData?._omnirouteForceResponsesUpstream===!0||d?.providerSpecificData?.apiType==="responses"?"responses":"chat";return function(a,b="chat"){return function(a,b="chat"){return`${function(a){let b=(0,s.q)(a||y);if(!b)return y;let c=b.replace(/\/(?:chat\/completions|responses|models)$/i,"");if(c.endsWith("/openai/v1"))return c;if(c.endsWith("/openai"))return`${c}/v1`;try{let a=new URL(c);return a.pathname&&"/"!==a.pathname?a.pathname.endsWith("/openai")&&(a.pathname=`${a.pathname}/v1`):a.pathname="/openai/v1",a.search="",a.hash="",(0,s.o)(a.toString())}catch{return c}}(a)}/${"responses"===b?"responses":"chat/completions"}`}(a,b)}(this.resolveBaseUrl(d),a)}case"sap":{let a;return(a=function(a){let b=(0,s.q)(a||z);if(!b)return z;var c=b.replace(/\/chat\/completions$/i,"");try{let a=new URL(c);return a.search="",a.hash="",(0,s.o)(a.toString())}catch{return c}}(this.resolveBaseUrl(d))).endsWith("/chat/completions")?a:`${a}/chat/completions`}case"xiaomi-mimo":{let a;return f=this.resolveBaseUrl(d),a=(0,s.q)(f).replace(/\/chat\/completions$/,""),`${a}/chat/completions`}case"maritalk":{let a=this.resolveBaseUrl(d);return(0,A.$D)(a)}case"siliconflow":return H(this.resolveBaseUrl(d));case"ollama-local":case"llama-cpp":case"lm-studio":case"modal":case"reka":case"vllm":case"lemonade":case"llamafile":case"triton":case"docker-model-runner":case"xinference":case"oobabooga":{let a=B.HP[this.provider]?.localDefault;return H(d?.providerSpecificData?.baseUrl||a||this.config.baseUrl)}case"zai":case"glm-coding-apikey":{let a=this.resolveBaseUrl(d);return`${a}?beta=true`}case"claude":case"glm":case"glmt":case"kimi-coding":case"minimax":case"minimax-cn":return`${this.config.baseUrl}?beta=true`;case"gemini":return`${this.config.baseUrl}/${a}:${b?"streamGenerateContent?alt=sse":"generateContent"}`;case"qwen":{let a=d?.providerSpecificData?.resourceUrl;return`https://${a||"portal.qwen.ai"}/v1/chat/completions`}default:{let a="string"==typeof d?.providerSpecificData?.baseUrl&&d.providerSpecificData.baseUrl.trim()?d.providerSpecificData.baseUrl:null,b=!this.config.format||"openai"===this.config.format;if(a&&b)return H(a);let c=this.config.baseUrl,e=(0,l.qs)(this.provider);return e?.urlSuffix?`${c}${e.urlSuffix}`:c}}}buildHeaders(a,b=!0,c){let{headers:d,effectiveKey:e}=this.buildHeadersPreamble(a,b);switch(this.provider){case"gemini":e?d["x-goog-api-key"]=e:d.Authorization=`Bearer ${a.accessToken}`;break;case"snowflake":{let b=e||a.accessToken||"",c=b.startsWith("pat/");d.Authorization=`Bearer ${c?b.slice(4):b}`,d["X-Snowflake-Authorization-Token-Type"]=c?"PROGRAMMATIC_ACCESS_TOKEN":"KEYPAIR_JWT";break}case"gigachat":d.Authorization=`Bearer ${a.accessToken||e}`;break;case"clarifai":{let b=e||a.accessToken;b&&(d.Authorization=`Key ${b}`);break}case"azure-ai":(e||a.accessToken)&&(d["api-key"]=e||a.accessToken),delete d.Authorization;break;case"oci":{let b=e||a.accessToken;b&&(d.Authorization=`Bearer ${b}`);let c=a.projectId||a?.providerSpecificData?.projectId||a?.providerSpecificData?.project;c&&(d["OpenAI-Project"]=c);break}case"sap":{let b=e||a.accessToken;b&&(d.Authorization=`Bearer ${b}`),d["AI-Resource-Group"]=function(a,b="default"){for(let b of[a?.resourceGroup,a?.aiResourceGroup,a?.resource_group])if("string"==typeof b&&b.trim())return b.trim();return b}(a?.providerSpecificData);break}case"reka":{let b=e||a.accessToken;b&&(d.Authorization=`Bearer ${b}`,d["X-Api-Key"]=b);break}case"maritalk":{let b=e||a.accessToken;b&&(d.Authorization=`Key ${b}`);break}case"claude":case"anthropic":e?d["x-api-key"]=e:d.Authorization=`Bearer ${a.accessToken}`;break;case"glm":case"glmt":case"kimi-coding":case"bailian-coding-plan":case"kimi-coding-apikey":case"zai":case"glm-coding-apikey":d["x-api-key"]=e||a.accessToken;break;case"cline":Object.assign(d,(0,E.w)(e||a.accessToken));break;default:if((0,q.GK)(this.provider)){let c=(0,D.RG)(a?.providerSpecificData),d=(0,g.mu)(e||a.accessToken||"",b,a?.providerSpecificData?.ccSessionId,{redactThinking:!0===c.redactThinking});return G(d,a.providerSpecificData?.customHeaders),d}if(this.provider?.startsWith?.("anthropic-compatible-"))e?d["x-api-key"]=e:a.accessToken&&(d.Authorization=`Bearer ${a.accessToken}`),e&&!d.Authorization&&!function(a){if(!a)return!0;let b=null;try{b=new URL(a).hostname}catch{try{b=new URL(`https://${a}`).hostname}catch{return!1}}return"api.anthropic.com"===b}(a?.providerSpecificData?.baseUrl||"")&&(d.Authorization=`Bearer ${e}`),Object.keys(d).some(a=>"anthropic-version"===a.toLowerCase())||(d["anthropic-version"]="2023-06-01");else{let b=(0,l.qs)(this.provider),c=b?.authHeader||"bearer",f=e||a.accessToken||b?.anonymousApiKey;f&&("x-api-key"===c?d["x-api-key"]=f:"x-goog-api-key"===c?d["x-goog-api-key"]=f:d.Authorization=`Bearer ${f}`)}}if(d.Accept=b?"text/event-stream":"application/json","qwen"===this.provider&&e)for(let a of Object.keys(d))a.toLowerCase().startsWith("x-dashscope-")&&delete d[a];if((this.provider?.startsWith?.("openai-compatible-")||this.provider?.startsWith?.("anthropic-compatible-"))&&G(d,a.providerSpecificData?.customHeaders),c){(0,F.G)(d,c);let a=c["anthropic-beta"]??c["Anthropic-Beta"]??null,b=Object.keys(d).find(a=>"anthropic-beta"===a.toLowerCase());b&&a&&(d[b]=(0,n.S9)(d[b],a))}return(0,n.Xs)(d),d}applyJsonSchemaFallback(a){if(!this.provider?.startsWith?.("openai-compatible-")||!a||"object"!=typeof a||Array.isArray(a))return a;let b=a.response_format;if(b?.type!=="json_schema"||!b.json_schema?.schema)return a;let c=JSON.stringify(b.json_schema.schema,null,2),d=`You must respond with valid JSON that strictly follows this JSON schema:
356
+ parameters: ${e}`:""}`)}return 0===b.length?"":["You can call tools. To call a tool, reply with a single line containing a <tool> block",'with JSON: <tool>{"name": "<tool_name>", "arguments": { ... }}</tool>',"Only emit the <tool> block when you actually want to call a tool; otherwise answer normally.","","Available tools:",...b].join("\n")}(c);return{hasTools:!0,requestedTools:c,effectiveMessages:[{role:"system",content:d},...b]}}function o(a,b,c="call"){let{content:d,toolCalls:e}=m(a,`${c}-${Date.now()}`,b);return{content:d,toolCalls:e,finishReason:e?"tool_calls":"stop"}}},73483:(a,b,c)=>{c.d(b,{Gh:()=>m,IF:()=>s,O9:()=>j,OF:()=>r,WL:()=>k,bC:()=>p,f5:()=>n,lm:()=>f,oT:()=>q});var d=c(47370),e=c(14170);let f={reset:"\x1b[0m",red:"\x1b[31m",green:"\x1b[32m",yellow:"\x1b[33m",blue:"\x1b[34m",cyan:"\x1b[36m"},g=null,h=0;async function i(){try{let{getSettings:a}=await c.e(8279).then(c.bind(c,18279)),b=(await a()).usageTokenBuffer;"number"==typeof b&&b>=0&&(g=b,h=Date.now())}catch{}}function j(a){if(!a||"object"!=typeof a)return a;let b=function(){let a=Date.now(),b=null!==g&&a-h>=3e4;if(null!==g&&!b)return g;let c=process.env.USAGE_TOKEN_BUFFER;if(void 0!==c){let b=parseInt(c,10);if(!isNaN(b)&&b>=0)return g=b,h=a,b}return(null===g||b)&&(null===g&&(g=0),h=a,i()),g}();if(0===b)return a;let c={...a};return void 0!==c.input_tokens&&(c.input_tokens+=b),void 0!==c.prompt_tokens&&(c.prompt_tokens+=b),void 0!==c.total_tokens?c.total_tokens+=b:void 0!==c.prompt_tokens&&void 0!==c.completion_tokens&&(c.total_tokens=c.prompt_tokens+c.completion_tokens),c}function k(a,b){if(!a||"object"!=typeof a)return a;let c={...a};b===e.h.CLAUDE||b===e.h.OPENAI_RESPONSES?(void 0!==c.prompt_tokens&&void 0===c.input_tokens&&(c.input_tokens=c.prompt_tokens),void 0!==c.completion_tokens&&void 0===c.output_tokens&&(c.output_tokens=c.completion_tokens)):(void 0!==c.input_tokens&&void 0===c.prompt_tokens&&(c.prompt_tokens=c.input_tokens),void 0!==c.output_tokens&&void 0===c.completion_tokens&&(c.completion_tokens=c.output_tokens),void 0===c.total_tokens&&void 0!==c.prompt_tokens&&void 0!==c.completion_tokens&&(c.total_tokens=c.prompt_tokens+c.completion_tokens));let d={[e.h.CLAUDE]:["input_tokens","output_tokens","cache_read_input_tokens","cache_creation_input_tokens","estimated"],[e.h.GEMINI]:["promptTokenCount","candidatesTokenCount","totalTokenCount","cachedContentTokenCount","thoughtsTokenCount","estimated"],[e.h.OPENAI_RESPONSES]:["input_tokens","output_tokens","input_tokens_details","output_tokens_details","estimated"],default:["prompt_tokens","completion_tokens","total_tokens","cached_tokens","reasoning_tokens","prompt_tokens_details","completion_tokens_details","estimated"]},f=d[b];b===e.h.ANTIGRAVITY?f=d[e.h.GEMINI]:b===e.h.OPENAI_RESPONSE?f=d[e.h.OPENAI_RESPONSES]:f||(f=d.default);let g={};for(let a of f)void 0!==c[a]&&(g[a]=c[a]);return g}function l(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b={},c=(a,c)=>{if(null==c)return;let d=Number(c);Number.isFinite(d)&&(b[a]=d)};return(c("prompt_tokens",a?.prompt_tokens),c("completion_tokens",a?.completion_tokens),c("total_tokens",a?.total_tokens),c("input_tokens",a?.input_tokens),c("output_tokens",a?.output_tokens),c("cache_read_input_tokens",a?.cache_read_input_tokens),c("cache_creation_input_tokens",a?.cache_creation_input_tokens),c("cached_tokens",a?.cached_tokens),c("reasoning_tokens",a?.reasoning_tokens),0===Object.keys(b).length)?null:b}function m(a){if(!a||"object"!=typeof a)return!1;for(let b of["prompt_tokens","completion_tokens","total_tokens","input_tokens","output_tokens","promptTokenCount","candidatesTokenCount"])if("number"==typeof a[b]&&a[b]>0)return!0;return!1}function n(a){if(!a||"object"!=typeof a)return null;if("message_start"===a.type&&a.message?.usage){let b=a.message.usage,c=b.input_tokens||b.prompt_tokens||0,d=b.cache_read_input_tokens||0,e=b.cache_creation_input_tokens||0;if(c>0||d>0||e>0)return l({prompt_tokens:c+d+e,completion_tokens:b.output_tokens||b.completion_tokens||0,input_tokens:c+d+e,output_tokens:b.output_tokens||b.completion_tokens||0,cache_read_input_tokens:b.cache_read_input_tokens,cache_creation_input_tokens:b.cache_creation_input_tokens})}if("message_delta"===a.type&&a.usage&&"object"==typeof a.usage){let b=a.usage.input_tokens||0,c=a.usage.cache_read_input_tokens||0,d=a.usage.cache_creation_input_tokens||0;return l({prompt_tokens:b+c+d,completion_tokens:a.usage.output_tokens||0,input_tokens:b+c+d,output_tokens:a.usage.output_tokens||0,cache_read_input_tokens:a.usage.cache_read_input_tokens,cache_creation_input_tokens:a.usage.cache_creation_input_tokens})}if(("response.completed"===a.type||"response.done"===a.type)&&a.response?.usage&&"object"==typeof a.response.usage){let b=a.response.usage;return l({prompt_tokens:b.input_tokens||b.prompt_tokens||0,completion_tokens:b.output_tokens||b.completion_tokens||0,cached_tokens:b.input_tokens_details?.cached_tokens??b.prompt_tokens_details?.cached_tokens??b.cache_read_input_tokens,cache_creation_input_tokens:b.cache_creation_input_tokens,reasoning_tokens:b.output_tokens_details?.reasoning_tokens??b.completion_tokens_details?.reasoning_tokens??b.reasoning_tokens})}if(a.usage&&"object"==typeof a.usage&&(void 0!==a.usage.prompt_tokens||void 0!==a.usage.input_tokens))return l({prompt_tokens:a.usage.prompt_tokens??a.usage.input_tokens??0,completion_tokens:a.usage.completion_tokens??a.usage.output_tokens??0,cached_tokens:a.usage.prompt_tokens_details?.cached_tokens??a.usage.input_tokens_details?.cached_tokens??a.usage.prompt_cache_hit_tokens??a.usage.cached_tokens,reasoning_tokens:a.usage.completion_tokens_details?.reasoning_tokens??a.usage.output_tokens_details?.reasoning_tokens??a.usage.reasoning_tokens});let b=a.usageMetadata||a.response?.usageMetadata;if(b&&"object"==typeof b)return l({prompt_tokens:b.promptTokenCount||0,completion_tokens:b.candidatesTokenCount||0,total_tokens:b.totalTokenCount,cached_tokens:b.cachedContentTokenCount,reasoning_tokens:b.thoughtsTokenCount});if(!0===a.done&&"number"==typeof a.prompt_eval_count){let b=a.prompt_eval_count||0,c=a.eval_count||0;return l({prompt_tokens:b,completion_tokens:c,total_tokens:b+c})}return null}function o(a){if(!a||"string"!=typeof a)return 0;let b=a.match(/[\u3000-\u9fff\uf900-\ufaff\u{20000}-\u{2fa1f}]/gu);return(b?b.length:0)+Math.ceil(1.3*a.replace(/[\u3000-\u9fff\uf900-\ufaff]/g," ").split(/(\s+|[^\w\s]|(?<=[a-z])(?=[A-Z]))/).filter(a=>a&&a.trim().length>0).length)}function p(a){if(!a||"object"!=typeof a)return 0;try{let b=0,c=0;if(a.tools&&Array.isArray(a.tools)){let d=JSON.stringify(a.tools);b=Math.ceil(d.length/6);let{tools:e,...f}=a;c=o(JSON.stringify(f))}else c=o(JSON.stringify(a));return c+b}catch(a){return 0}}function q(a){return!a||a<=0?0:Math.max(1,Math.ceil(a/3.5))}function r(a,b,c=e.h.OPENAI){var d,f;return d=p(a),f=q(b),c===e.h.CLAUDE?j({input_tokens:d,output_tokens:f,estimated:!0}):j({prompt_tokens:d,completion_tokens:f,total_tokens:d+f,estimated:!0})}function s(a,b,c=null,e=null,g=null,h=null,i="ok",j=!0){if(!b||"object"!=typeof b)return;let k=a?.toUpperCase()||"UNKNOWN",l=b?.prompt_tokens??b?.input_tokens??null,m=b?.completion_tokens??b?.output_tokens??null,n="string"==typeof e?e:void 0,o=n?n.slice(0,8)+"...":"unknown",p="ok"===i||200===i||"200"===i?`${f.green}ok${f.reset}`:`${f.red}${i}${f.reset}`,q=null!==h?`${h}ms`:"-",r=`[${new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"})}] 📊 [USAGE] ${k} | ${c||"unknown"} | ${p} | ${j?"stream":"sync"} | ${q} | in=${l} | out=${m} | account=${o}`;b.estimated&&(r+=` ${f.yellow}(estimated)${f.reset}`);let t=b?.cached_tokens??b?.cache_read_input_tokens??null;t&&(r+=` | cache_read=${t}`);let u=b?.cache_creation_input_tokens??null;u&&(r+=` | cache_create=${u}`);let v=b.reasoning_tokens;v&&(r+=` | reasoning=${v}`),console.log(r),(0,d.E5)({model:"string"==typeof c?c:void 0,provider:"string"==typeof a?a:void 0,connectionId:n,tokens:{input:l,output:m,cacheRead:t||0,cacheCreation:u||0,reasoning:v||0},status:"200 OK"}).catch(()=>{})}},73870:(a,b,c)=>{c.d(b,{w0:()=>o});var d=c(89419),e=c(86935),f=c(97510),g=c(61408);let h=new Map,i=["https://www.googleapis.com/auth/cloud-platform","https://www.googleapis.com/auth/generative-language.retriever"];function j(a){try{return JSON.parse(a)}catch{throw Error("Vertex AI requires a valid Service Account JSON as the API key")}}function k(a){if(!a||"string"!=typeof a)return!1;try{let b=JSON.parse(a);return!!b&&"object"==typeof b&&!Array.isArray(b)}catch{return!1}}async function l(a){if(!a.client_email||!a.private_key)throw Error("Service Account JSON is missing required fields (client_email or private_key)");let b=a.client_email,c=h.get(b);if(c&&Date.now()<c.expiresAt-6e4)return c.token;let f=await (0,d.Lf)(a.private_key,"RS256"),g=Math.floor(Date.now()/1e3),j=await new e.P({iss:a.client_email,sub:a.client_email,aud:"https://oauth2.googleapis.com/token",iat:g,exp:g+3600,scope:i.join(" ")}).setProtectedHeader({alg:"RS256",kid:a.private_key_id}).sign(f),k=await fetch("https://oauth2.googleapis.com/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"urn:ietf:params:oauth:grant-type:jwt-bearer",assertion:j})});if(!k.ok){let a=await k.text();throw Error(`Failed to exchange JWT for Vertex access token: ${k.status} ${a}`)}let l=(await k.json()).access_token;if(!l)throw Error("Vertex AI token exchange succeeded but no access_token found");return h.set(b,{token:l,expiresAt:(g+3600)*1e3}),l}let m=new Set(["claude-3-5-sonnet","claude-3-opus","claude-3-haiku","deepseek-v3","deepseek-v3.2","deepseek-v4","deepseek-deepseek-r1","qwen3-next-80b","qwen3.6-","llama-3.1","mistral-","glm-5","glm-5.1","meta/llama"]);function n(a){let b=a.toLowerCase();return[...m].some(a=>b.startsWith(a))}class o extends f.Hv{constructor(){super("vertex",g.xq.vertex)}async execute(a){let{credentials:b,log:c}=a;if("string"==typeof b.apiKey&&(b.apiKey=b.apiKey.trim()),b.apiKey&&!b.accessToken&&k(b.apiKey))try{let a=j(b.apiKey);b.accessToken=await l(a)}catch(a){throw c?.error?.("VERTEX",`Failed to generate JWT token: ${a.message}`),a}return super.execute(a)}buildUrl(a,b,c=0,d=null){var e;if("string"==typeof(e=d?.apiKey)&&e.trim().length>0&&!k(e)&&!d?.accessToken){let c=encodeURIComponent(String(d.apiKey).trim());return n(a)?`https://aiplatform.googleapis.com/v1/publishers/openapi/chat/completions?key=${c}`:`https://aiplatform.googleapis.com/v1/publishers/google/models/${a}:${b?"streamGenerateContent?alt=sse&":"generateContent?"}key=${c}`}let f=d?.providerSpecificData?.region||"us-central1",g="unknown-project";if(d?.apiKey)try{let a=j(d.apiKey);a.project_id&&(g=a.project_id)}catch{}return n(a)?`https://aiplatform.googleapis.com/v1/projects/${g}/locations/global/endpoints/openapi/chat/completions`:`https://aiplatform.googleapis.com/v1/projects/${g}/locations/${f}/publishers/google/models/${a}:${b?"streamGenerateContent?alt=sse":"generateContent"}`}buildHeaders(a,b=!0){let c={"Content-Type":"application/json"};return a.accessToken&&(c.Authorization=`Bearer ${a.accessToken}`),b&&(c.Accept="text/event-stream"),c}}},74184:(a,b,c)=>{c.d(b,{As:()=>E});var d=c(4573);let e={browser:null,contexts:new Map,pendingContexts:new Map,launching:null,lastActivity:0,idleTimer:null,evictTimer:null,cloakLaunch:null,cloakLaunchResolved:!1,metrics:{browserLaunches:0,browserLaunchFailures:0,contextsCreated:0,contextsReused:0,contextsEvicted:0,contextsReleased:0,contextCreateFailures:0,shutdowns:0,lastShutdownReason:null}};async function f(){if(e.cloakLaunchResolved)return e.cloakLaunch;e.cloakLaunchResolved=!0;try{e.cloakLaunch=(await import("cloakbrowser")).launch??null}catch{e.cloakLaunch=null}return e.cloakLaunch}function g(){e.idleTimer&&clearTimeout(e.idleTimer),e.idleTimer=setTimeout(()=>{m("idle-timeout")},3e5),e.idleTimer.unref?.()}async function h(a,b){try{let d=b?.resolveProxy??(async a=>{let{resolveProxyForProvider:b}=await c.e(1676).then(c.bind(c,51676));return b(a)}),e=await d(a);if(!e?.host)return;let f="socks5"===e.type?"socks5":"http",g={server:`${f}://${e.host}:${e.port}`};return e.username&&(g.username=String(e.username),g.password=null==e.password?"":String(e.password)),g}catch(a){console.warn("[BrowserPool] Failed to resolve proxy from DB:",a);return}}async function i(){if(e.browser)return e.browser;if(e.launching)return e.launching;e.launching=(async()=>{let a,b=await f();if(b)a=await b({headless:!0,args:["--no-sandbox","--disable-dev-shm-usage"]});else{let{chromium:b}=await Promise.resolve().then(c.bind(c,83237));a=await b.launch({headless:!0,args:["--no-sandbox","--disable-dev-shm-usage","--disable-blink-features=AutomationControlled"]})}return e.browser=a,e.launching=null,e.metrics.browserLaunches++,a})();try{return await e.launching}catch(a){throw e.launching=null,e.metrics.browserLaunchFailures++,a}}function j(a,b){b&&e.metrics.contextCreateFailures++,e.pendingContexts.delete(a)}async function k(a,b){let c;if(void 0!==(c=process.env.OMNIROUTE_BROWSER_POOL)&&("off"===c||"0"===c||"false"===c))throw Error("browserPool: OMNIROUTE_BROWSER_POOL=off — context requested but pool is disabled");let d=e.contexts.get(a);if(d)return d.lastUsed=Date.now(),e.lastActivity=Date.now(),e.metrics.contextsReused++,g(),d;let f=e.pendingContexts.get(a);if(f)return f;let k=(async()=>{let[c,d]=await Promise.all([i(),h(a)]),f=null!==e.cloakLaunch,j=await c.newContext({userAgent:b.userAgent||"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36",locale:b.locale||"en-US",timezoneId:b.timezone||"America/New_York",viewport:{width:1280,height:800},...d?{proxy:d}:{}});if(b.cookieString){var k,l;let a=(k=b.cookieString,l=b.cookieDomain,k.split(";").map(a=>a.trim()).filter(Boolean).map(a=>{let b=a.indexOf("=");if(b<0)return null;let c=a.slice(0,b).trim(),d=a.slice(b+1).trim();return c&&d?{name:c,value:d,domain:l.startsWith(".")?l:`.${l}`,path:"/",expires:-1,httpOnly:!1,secure:!0,sameSite:"Lax"}:null}).filter(Boolean));a.length>0&&await j.addCookies(a)}let n=null;if(b.warmupUrl)try{n=await j.newPage(),await n.goto(b.warmupUrl,{waitUntil:"domcontentloaded",timeout:3e4}),await new Promise(a=>setTimeout(a,1500))}catch(a){try{await n?.close()}catch{}n=null}if(e.browser!==c)throw await j.close().catch(()=>{}),n&&await n.close().catch(()=>{}),Error("Pool shut down during context creation");let o={id:a,context:j,warmupPage:n,lastUsed:Date.now(),isStealth:f};return e.contexts.set(a,o),e.metrics.contextsCreated++,e.lastActivity=Date.now(),g(),e.evictTimer&&clearInterval(e.evictTimer),e.evictTimer=setInterval(()=>(function(){let a=Date.now();for(let[b,c]of e.contexts)a-c.lastUsed>6e5&&(console.log("[BrowserPool] Evicted stale context:",b,"(idle",((a-c.lastUsed)/1e3).toFixed(0)+"s)"),e.contexts.delete(b),e.metrics.contextsEvicted++,c.context.close().catch(()=>{}));0!==e.contexts.size||e.launching||m("all-contexts-evicted")})(),6e4),e.evictTimer.unref?.(),o})();return e.pendingContexts.set(a,k),k.then(()=>j(a,!1)).catch(()=>j(a,!0)),k}async function l(a){return a.context.newPage()}async function m(a){for(let[b,c]of(e.metrics.shutdowns++,e.metrics.lastShutdownReason=a,e.idleTimer&&(clearTimeout(e.idleTimer),e.idleTimer=null),e.evictTimer&&(clearInterval(e.evictTimer),e.evictTimer=null),e.pendingContexts.clear(),e.contexts)){try{await c.context.close()}catch{}e.contexts.delete(b)}if(e.browser){try{await e.browser.close()}catch{}e.browser=null}e.lastActivity=Date.now()}async function n(a){let b={};for(let[c,d]of Object.entries(a.headers()))b[c]=d;let c=await a.body();return{status:a.status(),headers:b,body:d.Buffer.from(c)}}var o=c(58643),p=c(43659);let q=new Map;function r(a){let b=q.get(a);return b&&Date.now()<b.expiresAt?b.cookieString:(q.delete(a),null)}function s(a,b,c){q.set(a,{cookieString:b,expiresAt:Date.now()+(c??3e5),domain:a})}let t=new Map;function u(a,b){return new Promise((c,d)=>{if(b?.aborted)return d(new DOMException("Aborted","AbortError"));let e=()=>{clearTimeout(f),d(new DOMException("Aborted","AbortError"))},f=setTimeout(()=>{b?.removeEventListener("abort",e),c()},a);b?.addEventListener("abort",e,{once:!0})}).catch(a=>{if(a instanceof DOMException&&"AbortError"===a.name)throw a})}async function v(a,b){return b?{key:a,acquired:!0}:{key:`${a}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,acquired:!1}}async function w(a){let b=Date.now(),{poolKey:c,chatUrl:e,chatPageUrl:f,userMessage:g,cookieString:h,cookieDomain:i,chatUrlMatchDomain:j,userAgent:m,locale:o,timezone:q,inputSelector:r,submitButtonSelector:s,postSubmitWaitMs:t=15e3,signal:w,reuseContext:x=!0}=a,{key:y,acquired:z}=await v(c,x),A=Date.now(),B=await k(y,{cookieDomain:i||j,cookieString:h||null,warmupUrl:f,userAgent:m,locale:o,timezone:q}),C=Date.now()-A,D=await l(B);try{let a,c=Date.now();await D.goto(f,{waitUntil:"domcontentloaded",timeout:6e4,signal:w??void 0}),await u(2500,w);let h=Date.now()-c,i=D.locator(r).first();await i.waitFor({state:"visible",timeout:1e4,signal:w??void 0}),await i.fill(g),await u(800,w),Date.now();let k=D.waitForResponse(a=>"POST"===a.request().method()&&function(a,b,c){let d,e;if(a===c)return!0;try{d=new URL(a),e=new URL(c)}catch{return!1}if(!d.host.endsWith(b))return!1;let f=e.pathname.split("/").filter(Boolean),g=d.pathname.split("/").filter(Boolean);if(f.length<2||g.length!==f.length)return!1;let h=1;for(let a=0;a<f.length;a++)if(f[a]!==g[a]){if("PLACEHOLDER"===f[a]&&h>0){h--;continue}return!1}return!0}(a.url(),j,e),{timeout:3e4}),l=w?new Promise((b,c)=>{if(w.aborted)return c(new DOMException("Aborted","AbortError"));a=()=>c(new DOMException("Aborted","AbortError")),w.addEventListener("abort",a,{once:!0})}):null;if(s){let a=D.locator(s).first();if(await a.count()>0)try{await a.click({timeout:2e3})}catch{await D.keyboard.press("Enter")}else await D.keyboard.press("Enter")}else await D.keyboard.press("Enter");let m=Date.now(),o=l?await Promise.race([k,l]).catch(()=>null):await k.catch(()=>null);w&&a&&w.removeEventListener("abort",a),o?await u(Math.min(t,3e4),w):await u(t,w);let p=Date.now()-m,q=0,v=null,x=d.Buffer.alloc(0);if(o){let a=await n(o);a.body.length>0xa00000?(x=d.Buffer.from(JSON.stringify({error:{message:"Response too large",type:"upstream_error"}})),q=502,v="application/json"):(q=a.status,v=a.headers["content-type"]||null,x=a.body)}return{status:q,contentType:v,body:x,isStealth:B.isStealth,timing:{acquireContextMs:C,navigateMs:h,submitMs:p,captureResponseMs:p,totalMs:Date.now()-b}}}catch(c){let a=c instanceof Error?c.message:String(c);return{status:502,contentType:"application/json",body:d.Buffer.from(JSON.stringify({error:{message:(0,p.sanitizeErrorMessage)(`browserBackedChat failed: ${a}`),type:"upstream_error"}})),isStealth:B.isStealth,timing:{acquireContextMs:C,navigateMs:0,submitMs:0,captureResponseMs:0,totalMs:Date.now()-b}}}finally{if(await D.close(),!z)try{await B.context.close()}catch{}}}async function x(a){let b,c=Date.now(),{chatUrl:e,userMessage:f,cookieString:g,cookieDomain:h,chatUrlMatchDomain:i,signal:j}=a,k={"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",Accept:"text/event-stream, application/json, text/plain, */*","Accept-Language":"en-US,en;q=0.9","Content-Type":"application/json",Origin:"duckduckgo.com"===i?"https://duckduckgo.com":`https://${i}`,Referer:"duckduckgo.com"===i?"https://duckduckgo.com/":`https://${i}/`,"Sec-Fetch-Dest":"empty","Sec-Fetch-Mode":"cors","Sec-Fetch-Site":"same-origin","Sec-Ch-Ua":'"Chromium";v="149", "Google Chrome";v="149", "Not-A.Brand";v="99"',"Sec-Ch-Ua-Mobile":"?0","Sec-Ch-Ua-Platform":'"macOS"',Priority:"u=1, i"};g&&(k.Cookie=g),b=new URL(e).hostname.includes("duckduckgo")?JSON.stringify({model:"gpt-4o-mini",messages:[{role:"user",content:f}]}):JSON.stringify({messages:[{role:"user",content:f}]});try{let a=Date.now();if(!o.A.available)return{status:501,contentType:"application/json",body:d.Buffer.from(JSON.stringify({error:{message:"httpBackedChat unavailable: wreq-js (TLS client) not installed",type:"configuration_error"}})),isStealth:!1,timing:{acquireContextMs:0,navigateMs:0,submitMs:Date.now()-c,captureResponseMs:0,totalMs:Date.now()-c}};let f=await o.A.fetch(e,{method:"POST",headers:k,body:b,signal:j??void 0}),g=Date.now()-a,h=f.headers.get("content-length");if(h&&parseInt(h,10)>0xa00000)throw Error("Response too large");let i=d.Buffer.from(await f.text()),l=f.status,m=f.headers.get("content-type")||"text/event-stream";return{status:l,contentType:m,body:i,isStealth:!0,timing:{acquireContextMs:0,navigateMs:0,submitMs:g,captureResponseMs:0,totalMs:Date.now()-c}}}catch(b){if(b instanceof DOMException&&"AbortError"===b.name)throw b;let a=b instanceof Error?b.message:String(b);return{status:502,contentType:"application/json",body:d.Buffer.from(JSON.stringify({error:{message:(0,p.sanitizeErrorMessage)(`httpBackedChat failed: ${a}`),type:"upstream_error"}})),isStealth:!0,timing:{acquireContextMs:0,navigateMs:0,submitMs:0,captureResponseMs:0,totalMs:Date.now()-c}}}}async function y(a,b,c){let d=Date.now()+5e3;for(;Date.now()<d;){if(c?.aborted)throw new DOMException("Aborted","AbortError");let e=(await a.cookies(b)).map(a=>`${a.name}=${a.value}`).join("; ");if(e)return e;let f=d-Date.now();if(f<=0)break;await u(Math.min(500,f),c)}return null}async function z(a,b,c,d){let e=await l(a);try{return await e.goto(b,{waitUntil:"domcontentloaded",timeout:6e4,signal:d??void 0}),await y(a.context,c,d)}catch(a){if(a instanceof DOMException&&"AbortError"===a.name)throw a;return null}finally{await e.close().catch(()=>{})}}async function A(a,b,c,d){let e=r(c);if(e)return e;let f=t.get(a);if(f)return f;let g=B(a,b,c,d);return t.set(a,g),g.finally(()=>t.delete(a)),g}async function B(a,b,c,d){let e,{key:f}=await v(a,!0);try{e=await k(f,{cookieDomain:c,cookieString:null,warmupUrl:b})}catch{return null}let g=await z(e,b,c,d);return g&&s(c,g),g}async function C(a){if(!a.cookieDomain)return null;let b=process.env.OMNIROUTE_BROWSER_POOL;if("off"===b||"0"===b||"false"===b)return null;try{let{key:b}=await v(a.poolKey,!0);return await k(b,{cookieDomain:a.cookieDomain,cookieString:null})}catch{return null}}async function D(a,b,c,d,e){if(e)try{let a=await e;if(a){let e=await z(a,b,c,d);if(e)return s(c,e),e}}catch{}return A(a,b,c,d)}async function E(a){let b=a.signal?null:new AbortController,c=a.signal??b?.signal??null;b&&setTimeout(()=>b.abort(),45e3);let e=C(a);try{var f;let b=await x({...a,signal:c??void 0});if(b.status>=200&&b.status<300||!((f=b.status)>=400&&501!==f))return b;let d=null;if(a.cookieDomain){if(d=r(a.cookieDomain)){let b=await x({...a,cookieString:d,signal:c??void 0});if(b.status>=200&&b.status<300)return b;d=null}if(!d&&(d=await D(a.poolKey,a.chatPageUrl,a.cookieDomain,c,e))){let b=await x({...a,cookieString:d,signal:c??void 0});if(b.status>=200&&b.status<300)return b}}let g=d?{...a,cookieString:d,signal:c??void 0}:{...a,signal:c??void 0},h=await w(g);return h.status>=200&&h.status,h}catch(a){if(a instanceof DOMException&&"AbortError"===a.name)return{status:504,contentType:"application/json",body:d.Buffer.from(JSON.stringify({error:{message:"tryBackedChat timed out",type:"timeout_error"}})),isStealth:!1,timing:{acquireContextMs:0,navigateMs:0,submitMs:0,captureResponseMs:0,totalMs:0}};throw a}}},74199:(a,b,c)=>{c.d(b,{R:()=>d});let d=()=>!1},74350:(a,b,c)=>{c.d(b,{L:()=>I});var d=c(97510),e=c(61408),f=c(8590),g=c(89625),h=c(55511);let i=new Map,j=new Map;async function k(a={}){let b=(a.credentials||"").trim();if(!b)throw Error("Missing GigaChat credentials");let c=(a.authUrl||"https://ngw.devices.sberbank.ru:9443/api/v2/oauth").trim(),d=(a.scope||"GIGACHAT_API_PERS").trim(),e=`${c}::${d}::${b}`,f=i.get(e);if(function(a){if(!a?.accessToken||!a?.expiresAt)return!1;let b=new Date(a.expiresAt).getTime();return Number.isFinite(b)&&b-Date.now()>6e4}(f))return f;let g=j.get(e);if(g)return g;let l=(async()=>{let f=await fetch(c,{method:"POST",headers:{Authorization:`Basic ${b}`,RqUID:(0,h.randomUUID)(),"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({scope:d}).toString(),signal:a.signal});if(!f.ok){let a=await f.text();throw Error(`GigaChat token request failed: ${f.status} ${a}`.trim())}let g=await f.json(),j="string"==typeof g.tok?g.tok:"string"==typeof g.access_token?g.access_token:"";if(!j)throw Error("GigaChat token response missing access token");let k={accessToken:j,expiresAt:function(a){if("number"==typeof a&&Number.isFinite(a))return new Date(a).toISOString();if("string"==typeof a&&a.trim().length>0){let b=Number(a);if(Number.isFinite(b))return new Date(b).toISOString();let c=Date.parse(a);if(Number.isFinite(c))return new Date(c).toISOString()}return new Date(Date.now()+18e5).toISOString()}(g.exp??g.expires_at)};return i.set(e,k),k})();j.set(e,l);try{return await l}finally{j.delete(e)}}var l=c(36081),m=c(57247),n=c(93462),o=c(56452),p=c(78340),q=c(57647),r=c(57441),s=c(9427);let t="/api/v2",u="/genai/llmgw/chat/completions/",v="https://app.datarobot.com",w="https://example-resource.services.ai.azure.com/openai/v1",x="https://ca-tor.ml.cloud.ibm.com/ml/gateway/v1",y="https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/openai/v1",z="https://example-aicore.cfapps.eu10.hana.ondemand.com/v2/lm/deployments/example-deployment";var A=c(74361),B=c(40615);let C=()=>!1;var D=c(96303),E=c(4928),F=c(13568);function G(a,b){let c=null;if(b&&"object"==typeof b&&!Array.isArray(b))c=b;else if("string"==typeof b)try{let a=JSON.parse(b);a&&"object"==typeof a&&!Array.isArray(a)&&(c=a)}catch{}if(c)for(let[b,d]of Object.entries(c)){if("string"!=typeof b||"string"!=typeof d||C(b)||/[\r\n\0]/.test(b)||/[\r\n]/.test(d))continue;let c=b.toLowerCase();for(let b of Object.keys(a))b.toLowerCase()===c&&delete a[b];a[b]=d}}function H(a){let b=(0,s.q)(a);return b.endsWith("/chat/completions")||b.endsWith("/responses")||b.endsWith("/chat")?b:b.endsWith("/v1")?`${b}/chat/completions`:`${b}/v1/chat/completions`}class I extends d.Hv{constructor(a){super(a,e.xq[a]||e.xq.openai);const b=(0,l.qs)(a);b?.poolConfig&&(this.poolConfig=b.poolConfig)}buildUrl(a,b,c=0,d=null){if(this.provider?.startsWith?.("openai-compatible-")){let a=d?.providerSpecificData,b=(a?.baseUrl||"https://api.openai.com/v1").replace(/\/$/,""),c="string"==typeof a?.chatPath&&a.chatPath?a.chatPath:null;if(c)return`${b}${c}`;let e=a?._omnirouteForceResponsesUpstream===!0||"responses"===(0,q.J9)(this.provider,a)?"/responses":"/chat/completions";return`${b}${e}`}if(this.provider?.startsWith?.("anthropic-compatible-")){let a=d?.providerSpecificData,b=a?.baseUrl||"https://api.anthropic.com/v1",c="string"==typeof a?.chatPath&&a.chatPath?a.chatPath:null;if((0,q.GK)(this.provider))return(0,g.tI)(b,c||g.np);let e=b.replace(/\/$/,"");return`${e}${c||"/messages"}`}switch(this.provider){case"openai":{let b="string"==typeof d?.providerSpecificData?.baseUrl&&d.providerSpecificData.baseUrl.trim()?d.providerSpecificData.baseUrl:null,c=b?H(b):this.config.baseUrl;if("openai-responses"===(0,m.ux)("openai",a))return c.replace(/\/chat\/completions\/?$/,"/responses");return c}case"bailian-coding-plan":{let a;return h=this.resolveBaseUrl(d),(a=(0,s.q)(h).replace(/\?beta=true$/,"")).endsWith("/messages")?a:`${a}/messages`}case"heroku":case"databricks":case"snowflake":case"gigachat":return void this.resolveBaseUrl(d);case"datarobot":{let a;var e,f,h,i=this.resolveBaseUrl(d);return(a=(0,s.q)(i||v)||v).endsWith("/chat/completions")?a:/\/api\/v2\/deployments\/[^/]+$/i.test(a)?`${a}/chat/completions`:/\/api\/v2\/genai\/llmgw$/i.test(a)?`${a}/chat/completions/`:/\/api\/v2\/genai\/llmgw\/chat$/i.test(a)?`${a}/completions/`:a.includes(t)?`${a}${u}`:`${a}${t}${u}`}case"azure-ai":{let a=d?.providerSpecificData?._omnirouteForceResponsesUpstream===!0||d?.providerSpecificData?.apiType==="responses"?"responses":"chat";return function(a,b="chat"){return function(a,b="chat"){let c=function(a){let b=(0,s.q)(a||w);if(!b)return w;if(b.endsWith("/chat/completions")||b.endsWith("/responses")||b.endsWith("/models"))return b.replace(/\/(?:chat\/completions|responses|models)$/i,"");if(b.endsWith("/openai/v1")||b.endsWith("/v1"))return b;if(b.endsWith("/openai"))return`${b}/v1`;let c=new URL(b);return(c.hostname.endsWith(".services.ai.azure.com")||c.hostname.endsWith(".openai.azure.com"))&&(!c.pathname||"/"===c.pathname)?(c.pathname="/openai/v1",(0,s.o)(c.toString())):b}(a);return`${c}/${"responses"===b?"responses":"chat/completions"}`}(a,b)}(this.resolveBaseUrl(d),a)}case"watsonx":return e=this.resolveBaseUrl(d),`${function(a){let b=(0,s.q)(a||x);if(!b)return x;let c=b.replace(/\/(?:chat\/completions|completions|embeddings|models)$/i,"");if(c.endsWith("/ml/gateway/v1"))return c;if(c.endsWith("/ml/gateway"))return`${c}/v1`;try{let a=new URL(c);return a.pathname&&"/"!==a.pathname?a.pathname.endsWith("/ml/gateway")&&(a.pathname=`${a.pathname}/v1`):a.pathname="/ml/gateway/v1",a.search="",a.hash="",(0,s.o)(a.toString())}catch{return c}}(e)}/chat/completions`;case"oci":{let a=d?.providerSpecificData?._omnirouteForceResponsesUpstream===!0||d?.providerSpecificData?.apiType==="responses"?"responses":"chat";return function(a,b="chat"){return function(a,b="chat"){return`${function(a){let b=(0,s.q)(a||y);if(!b)return y;let c=b.replace(/\/(?:chat\/completions|responses|models)$/i,"");if(c.endsWith("/openai/v1"))return c;if(c.endsWith("/openai"))return`${c}/v1`;try{let a=new URL(c);return a.pathname&&"/"!==a.pathname?a.pathname.endsWith("/openai")&&(a.pathname=`${a.pathname}/v1`):a.pathname="/openai/v1",a.search="",a.hash="",(0,s.o)(a.toString())}catch{return c}}(a)}/${"responses"===b?"responses":"chat/completions"}`}(a,b)}(this.resolveBaseUrl(d),a)}case"sap":{let a;return(a=function(a){let b=(0,s.q)(a||z);if(!b)return z;var c=b.replace(/\/chat\/completions$/i,"");try{let a=new URL(c);return a.search="",a.hash="",(0,s.o)(a.toString())}catch{return c}}(this.resolveBaseUrl(d))).endsWith("/chat/completions")?a:`${a}/chat/completions`}case"xiaomi-mimo":{let a;return f=this.resolveBaseUrl(d),a=(0,s.q)(f).replace(/\/chat\/completions$/,""),`${a}/chat/completions`}case"maritalk":{let a=this.resolveBaseUrl(d);return(0,A.$D)(a)}case"siliconflow":return H(this.resolveBaseUrl(d));case"ollama-local":case"llama-cpp":case"lm-studio":case"modal":case"reka":case"vllm":case"lemonade":case"llamafile":case"triton":case"docker-model-runner":case"xinference":case"oobabooga":{let a=B.HP[this.provider]?.localDefault;return H(d?.providerSpecificData?.baseUrl||a||this.config.baseUrl)}case"zai":case"glm-coding-apikey":{let a=this.resolveBaseUrl(d);return`${a}?beta=true`}case"claude":case"glm":case"glmt":case"kimi-coding":case"minimax":case"minimax-cn":return`${this.config.baseUrl}?beta=true`;case"gemini":return`${this.config.baseUrl}/${a}:${b?"streamGenerateContent?alt=sse":"generateContent"}`;case"qwen":{let a=d?.providerSpecificData?.resourceUrl;return`https://${a||"portal.qwen.ai"}/v1/chat/completions`}default:{let a="string"==typeof d?.providerSpecificData?.baseUrl&&d.providerSpecificData.baseUrl.trim()?d.providerSpecificData.baseUrl:null,b=!this.config.format||"openai"===this.config.format;if(a&&b)return H(a);let c=this.config.baseUrl,e=(0,l.qs)(this.provider);return e?.urlSuffix?`${c}${e.urlSuffix}`:c}}}buildHeaders(a,b=!0,c){let{headers:d,effectiveKey:e}=this.buildHeadersPreamble(a,b);switch(this.provider){case"gemini":e?d["x-goog-api-key"]=e:d.Authorization=`Bearer ${a.accessToken}`;break;case"snowflake":{let b=e||a.accessToken||"",c=b.startsWith("pat/");d.Authorization=`Bearer ${c?b.slice(4):b}`,d["X-Snowflake-Authorization-Token-Type"]=c?"PROGRAMMATIC_ACCESS_TOKEN":"KEYPAIR_JWT";break}case"gigachat":d.Authorization=`Bearer ${a.accessToken||e}`;break;case"clarifai":{let b=e||a.accessToken;b&&(d.Authorization=`Key ${b}`);break}case"azure-ai":(e||a.accessToken)&&(d["api-key"]=e||a.accessToken),delete d.Authorization;break;case"oci":{let b=e||a.accessToken;b&&(d.Authorization=`Bearer ${b}`);let c=a.projectId||a?.providerSpecificData?.projectId||a?.providerSpecificData?.project;c&&(d["OpenAI-Project"]=c);break}case"sap":{let b=e||a.accessToken;b&&(d.Authorization=`Bearer ${b}`),d["AI-Resource-Group"]=function(a,b="default"){for(let b of[a?.resourceGroup,a?.aiResourceGroup,a?.resource_group])if("string"==typeof b&&b.trim())return b.trim();return b}(a?.providerSpecificData);break}case"reka":{let b=e||a.accessToken;b&&(d.Authorization=`Bearer ${b}`,d["X-Api-Key"]=b);break}case"maritalk":{let b=e||a.accessToken;b&&(d.Authorization=`Key ${b}`);break}case"claude":case"anthropic":e?d["x-api-key"]=e:d.Authorization=`Bearer ${a.accessToken}`;break;case"glm":case"glmt":case"kimi-coding":case"bailian-coding-plan":case"kimi-coding-apikey":case"zai":case"glm-coding-apikey":d["x-api-key"]=e||a.accessToken;break;case"cline":Object.assign(d,(0,E.w)(e||a.accessToken));break;default:if((0,q.GK)(this.provider)){let c=(0,D.RG)(a?.providerSpecificData),d=(0,g.mu)(e||a.accessToken||"",b,a?.providerSpecificData?.ccSessionId,{redactThinking:!0===c.redactThinking});return G(d,a.providerSpecificData?.customHeaders),d}if(this.provider?.startsWith?.("anthropic-compatible-"))e?d["x-api-key"]=e:a.accessToken&&(d.Authorization=`Bearer ${a.accessToken}`),e&&!d.Authorization&&!function(a){if(!a)return!0;let b=null;try{b=new URL(a).hostname}catch{try{b=new URL(`https://${a}`).hostname}catch{return!1}}return"api.anthropic.com"===b}(a?.providerSpecificData?.baseUrl||"")&&(d.Authorization=`Bearer ${e}`),Object.keys(d).some(a=>"anthropic-version"===a.toLowerCase())||(d["anthropic-version"]="2023-06-01");else{let b=(0,l.qs)(this.provider),c=b?.authHeader||"bearer",f=e||a.accessToken||b?.anonymousApiKey;f&&("x-api-key"===c?d["x-api-key"]=f:"x-goog-api-key"===c?d["x-goog-api-key"]=f:d.Authorization=`Bearer ${f}`)}}if(d.Accept=b?"text/event-stream":"application/json","qwen"===this.provider&&e)for(let a of Object.keys(d))a.toLowerCase().startsWith("x-dashscope-")&&delete d[a];if((this.provider?.startsWith?.("openai-compatible-")||this.provider?.startsWith?.("anthropic-compatible-"))&&G(d,a.providerSpecificData?.customHeaders),c){(0,F.G)(d,c);let a=c["anthropic-beta"]??c["Anthropic-Beta"]??null,b=Object.keys(d).find(a=>"anthropic-beta"===a.toLowerCase());b&&a&&(d[b]=(0,n.S9)(d[b],a))}return(0,n.Xs)(d),d}applyJsonSchemaFallback(a){if(!this.provider?.startsWith?.("openai-compatible-")||!a||"object"!=typeof a||Array.isArray(a))return a;let b=a.response_format;if(b?.type!=="json_schema"||!b.json_schema?.schema)return a;let c=JSON.stringify(b.json_schema.schema,null,2),d=`You must respond with valid JSON that strictly follows this JSON schema:
357
357
  \`\`\`json
358
358
  ${c}
359
359
  \`\`\`
@@ -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.64"}},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,Pq:()=>d.Pq,QT:()=>e,Q_:()=>d.Q_,Qu:()=>d.Qu,Rp:()=>d.Rp,S8:()=>d.S8,VT:()=>d.VT,W:()=>k,WS:()=>d.WS,Wq:()=>d.Wq,XW:()=>d.XW,Xx:()=>d.Xx,Yd:()=>d.Yd,ZO:()=>d.ZO,a_:()=>g,bI:()=>d.bI,c:()=>d.c,dC:()=>d.dC,e8:()=>f,ek:()=>d.ek,fK:()=>d.fK,fu:()=>d.fu,fv:()=>d.fv,g4:()=>d.g4,g5:()=>j,getApiKeyRecord:()=>d.Dr,getComboByName:()=>d.Dj,getCombos:()=>d.Uv,getExposeComboByName:()=>d.JC,getExposeCombos:()=>d.KG,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,k8:()=>d.k8,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,v8:()=>d.v8,yF:()=>d.yF,yg:()=>d.yg,zP:()=>d.zP,zU:()=>m});var d=c(50906);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.65"}},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,Pq:()=>d.Pq,QT:()=>e,Q_:()=>d.Q_,Qu:()=>d.Qu,Rp:()=>d.Rp,S8:()=>d.S8,VT:()=>d.VT,W:()=>k,WS:()=>d.WS,Wq:()=>d.Wq,XW:()=>d.XW,Xx:()=>d.Xx,Yd:()=>d.Yd,ZO:()=>d.ZO,a_:()=>g,bI:()=>d.bI,c:()=>d.c,dC:()=>d.dC,e8:()=>f,ek:()=>d.ek,fK:()=>d.fK,fu:()=>d.fu,fv:()=>d.fv,g4:()=>d.g4,g5:()=>j,getApiKeyRecord:()=>d.Dr,getComboByName:()=>d.Dj,getCombos:()=>d.Uv,getExposeComboByName:()=>d.JC,getExposeCombos:()=>d.KG,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,k8:()=>d.k8,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,v8:()=>d.v8,yF:()=>d.yF,yg:()=>d.yg,zP:()=>d.zP,zU:()=>m});var d=c(50906);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.64"}},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.65"}},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}}};