@ltgiang/9router 0.5.59 → 0.5.61

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 (965) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +19 -14
  3. package/app/.next-cli-build/build-manifest.json +2 -2
  4. package/app/.next-cli-build/prerender-manifest.json +27 -3
  5. package/app/.next-cli-build/required-server-files.json +8 -0
  6. package/app/.next-cli-build/routes-manifest.json +42 -0
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +3 -3
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/expose-models/page.js +2 -0
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/expose-models/page.js.nft.json +1 -0
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/expose-models/page_client-reference-manifest.js +1 -0
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +2 -2
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -2
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +3 -3
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +2 -2
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +3 -3
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  55. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  56. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  57. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  58. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +3 -3
  59. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  60. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  61. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +2 -2
  62. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  63. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  64. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +2 -2
  65. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  66. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  67. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +2 -2
  68. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  69. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  70. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +2 -2
  71. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  72. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  73. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  74. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  75. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  76. package/app/.next-cli-build/server/app/_global-error/page.js +3 -3
  77. package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  78. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  79. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  80. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  81. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  82. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  83. package/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  84. package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  85. package/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  86. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  87. package/app/.next-cli-build/server/app/_not-found/page.js +2 -2
  88. package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  89. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  90. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  91. package/app/.next-cli-build/server/app/_not-found.rsc +5 -5
  92. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +5 -5
  93. package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  94. package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +5 -5
  95. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  96. package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  97. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  98. package/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
  99. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  100. package/app/.next-cli-build/server/app/api/auth/logout/route.js +1 -1
  101. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  102. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
  103. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  104. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
  105. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  106. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
  107. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  108. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js +1 -1
  109. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js.nft.json +1 -1
  110. package/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
  111. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  112. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +4 -4
  113. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  114. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  115. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  116. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  117. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  118. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -2
  119. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  120. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -2
  121. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  122. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  123. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  124. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +2 -2
  125. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  126. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
  127. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  128. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
  129. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  130. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  131. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  132. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +2 -2
  133. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  134. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
  135. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  136. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +3 -3
  137. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  138. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  139. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  140. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  141. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  142. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  143. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  144. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  145. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  146. package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  147. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  148. package/app/.next-cli-build/server/app/api/combos/reorder/route.js +1 -1
  149. package/app/.next-cli-build/server/app/api/combos/reorder/route.js.nft.json +1 -1
  150. package/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  151. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  152. package/app/.next-cli-build/server/app/api/expose-combos/[id]/route.js +1 -0
  153. package/app/.next-cli-build/server/app/api/expose-combos/[id]/route.js.nft.json +1 -0
  154. package/app/.next-cli-build/server/app/api/expose-combos/[id]/route_client-reference-manifest.js +1 -0
  155. package/app/.next-cli-build/server/app/api/expose-combos/reorder/route.js +1 -0
  156. package/app/.next-cli-build/server/app/api/expose-combos/reorder/route.js.nft.json +1 -0
  157. package/app/.next-cli-build/server/app/api/expose-combos/reorder/route_client-reference-manifest.js +1 -0
  158. package/app/.next-cli-build/server/app/api/expose-combos/route.js +1 -0
  159. package/app/.next-cli-build/server/app/api/expose-combos/route.js.nft.json +1 -0
  160. package/app/.next-cli-build/server/app/api/expose-combos/route_client-reference-manifest.js +1 -0
  161. package/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -1
  162. package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  163. package/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -1
  164. package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  165. package/app/.next-cli-build/server/app/api/headroom/stop/route.js +1 -1
  166. package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  167. package/app/.next-cli-build/server/app/api/health/route.js +1 -1
  168. package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  169. package/app/.next-cli-build/server/app/api/init/route.js +1 -1
  170. package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  171. package/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
  172. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  173. package/app/.next-cli-build/server/app/api/keys/route.js +1 -1
  174. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  175. package/app/.next-cli-build/server/app/api/locale/route.js +1 -1
  176. package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  177. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js +1 -1
  178. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  179. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js +2 -2
  180. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  181. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  182. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  183. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  184. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  185. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  186. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  187. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  188. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  189. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
  190. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  191. package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  192. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  193. package/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
  194. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  195. package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  196. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  197. package/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
  198. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  199. package/app/.next-cli-build/server/app/api/models/order/route.js +1 -1
  200. package/app/.next-cli-build/server/app/api/models/order/route.js.nft.json +1 -1
  201. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  202. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  203. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  204. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  205. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  206. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  207. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js +1 -1
  208. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
  209. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  210. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  211. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js +2 -2
  212. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  213. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  214. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  215. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
  216. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  217. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
  218. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  219. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js +1 -1
  220. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
  221. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  222. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  223. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  224. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  225. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js +1 -1
  226. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
  227. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  228. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  229. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  230. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  231. package/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
  232. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  233. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
  234. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  235. package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  236. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  237. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
  238. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  239. package/app/.next-cli-build/server/app/api/providers/[id]/connections/disabled/route.js +1 -1
  240. package/app/.next-cli-build/server/app/api/providers/[id]/connections/disabled/route.js.nft.json +1 -1
  241. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  242. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  243. package/app/.next-cli-build/server/app/api/providers/[id]/pool/pull/route.js +1 -1
  244. package/app/.next-cli-build/server/app/api/providers/[id]/pool/pull/route.js.nft.json +1 -1
  245. package/app/.next-cli-build/server/app/api/providers/[id]/pool/push/route.js +1 -1
  246. package/app/.next-cli-build/server/app/api/providers/[id]/pool/push/route.js.nft.json +1 -1
  247. package/app/.next-cli-build/server/app/api/providers/[id]/pool/route.js +1 -1
  248. package/app/.next-cli-build/server/app/api/providers/[id]/pool/route.js.nft.json +1 -1
  249. package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  250. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  251. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  252. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  253. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  254. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  255. package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  256. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  257. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js +1 -1
  258. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  259. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  260. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  261. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js +1 -1
  262. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  263. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  264. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  265. package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  266. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  267. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
  268. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  269. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  270. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  271. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +2 -2
  272. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  273. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
  274. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  275. package/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
  276. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  277. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
  278. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  279. package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  280. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  281. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -1
  282. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  283. package/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
  284. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  285. package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  286. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  287. package/app/.next-cli-build/server/app/api/shutdown/route.js +1 -1
  288. package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  289. package/app/.next-cli-build/server/app/api/tags/route.js +1 -1
  290. package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  291. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  292. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  293. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
  294. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  295. package/app/.next-cli-build/server/app/api/translator/load/route.js +1 -1
  296. package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  297. package/app/.next-cli-build/server/app/api/translator/save/route.js +1 -1
  298. package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  299. package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  300. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  301. package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  302. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  303. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
  304. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  305. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
  306. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  307. package/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
  308. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  309. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -1
  310. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  311. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  312. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  313. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  314. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  315. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +2 -2
  316. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  317. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
  318. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
  319. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  320. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  321. package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
  322. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  323. package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
  324. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  325. package/app/.next-cli-build/server/app/api/usage/logs/route.js +1 -1
  326. package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
  327. package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  328. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  329. package/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
  330. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  331. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
  332. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  333. package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
  334. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  335. package/app/.next-cli-build/server/app/api/usage/stream/route.js +2 -2
  336. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  337. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  338. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  339. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  340. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  341. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  342. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  343. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
  344. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  345. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  346. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  347. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  348. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  349. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
  350. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  351. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -1
  352. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  353. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  354. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  355. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
  356. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  357. package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  358. package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  359. package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  360. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  361. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  362. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  363. package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  364. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  365. package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  366. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  367. package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  368. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  369. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  370. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  371. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  372. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  373. package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  374. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  375. package/app/.next-cli-build/server/app/api/v2/models/route.js +1 -0
  376. package/app/.next-cli-build/server/app/api/v2/models/route.js.nft.json +1 -0
  377. package/app/.next-cli-build/server/app/api/v2/models/route_client-reference-manifest.js +1 -0
  378. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  379. package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  380. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  381. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  382. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  383. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  384. package/app/.next-cli-build/server/app/callback/page.js +2 -2
  385. package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  386. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  387. package/app/.next-cli-build/server/app/callback.html +1 -1
  388. package/app/.next-cli-build/server/app/callback.rsc +5 -5
  389. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +5 -5
  390. package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  391. package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +5 -5
  392. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
  393. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  394. package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  395. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  396. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +7 -7
  397. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  398. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  399. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  400. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  401. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +7 -7
  402. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  403. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +5 -5
  404. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
  405. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  406. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +7 -7
  407. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  408. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  409. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  410. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  411. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +7 -7
  412. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  413. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +5 -5
  414. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  415. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  416. package/app/.next-cli-build/server/app/dashboard/combos.rsc +7 -7
  417. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  418. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  419. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  420. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  421. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +7 -7
  422. package/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  423. package/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +5 -5
  424. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  425. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  426. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +7 -7
  427. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  428. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  429. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  430. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  431. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +7 -7
  432. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  433. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +5 -5
  434. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  435. package/app/.next-cli-build/server/app/dashboard/expose-models.html +1 -0
  436. package/app/.next-cli-build/server/app/dashboard/expose-models.meta +17 -0
  437. package/app/.next-cli-build/server/app/dashboard/expose-models.rsc +27 -0
  438. package/app/.next-cli-build/server/app/dashboard/expose-models.segments/!KGRhc2hib2FyZCk/dashboard/expose-models/__PAGE__.segment.rsc +9 -0
  439. package/app/.next-cli-build/server/app/dashboard/expose-models.segments/!KGRhc2hib2FyZCk/dashboard/expose-models.segment.rsc +5 -0
  440. package/app/.next-cli-build/server/app/dashboard/expose-models.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +5 -0
  441. package/app/.next-cli-build/server/app/dashboard/expose-models.segments/!KGRhc2hib2FyZCk.segment.rsc +6 -0
  442. package/app/.next-cli-build/server/app/dashboard/expose-models.segments/_full.segment.rsc +27 -0
  443. package/app/.next-cli-build/server/app/dashboard/expose-models.segments/_head.segment.rsc +6 -0
  444. package/app/.next-cli-build/server/app/dashboard/expose-models.segments/_index.segment.rsc +9 -0
  445. package/app/.next-cli-build/server/app/dashboard/expose-models.segments/_tree.segment.rsc +5 -0
  446. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  447. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +7 -7
  448. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  449. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  450. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  451. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  452. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  453. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +7 -7
  454. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  455. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +5 -5
  456. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
  457. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  458. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +7 -7
  459. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  460. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  461. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  462. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  463. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +7 -7
  464. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  465. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +5 -5
  466. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  467. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  468. package/app/.next-cli-build/server/app/dashboard/profile.rsc +7 -7
  469. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  470. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  471. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  472. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  473. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +7 -7
  474. package/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  475. package/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +5 -5
  476. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  477. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  478. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +7 -7
  479. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  480. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  481. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  482. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  483. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  484. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +7 -7
  485. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  486. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +5 -5
  487. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  488. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  489. package/app/.next-cli-build/server/app/dashboard/providers.rsc +7 -7
  490. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  491. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  492. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  493. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  494. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +7 -7
  495. package/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  496. package/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +5 -5
  497. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  498. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  499. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +7 -7
  500. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  501. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  502. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  503. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  504. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +7 -7
  505. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  506. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +5 -5
  507. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  508. package/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  509. package/app/.next-cli-build/server/app/dashboard/quota.rsc +8 -8
  510. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  511. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  512. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  513. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  514. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +8 -8
  515. package/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  516. package/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +5 -5
  517. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  518. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +2 -2
  519. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  520. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  521. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  522. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +5 -5
  523. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +5 -5
  524. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  525. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +5 -5
  526. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  527. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  528. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  529. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  530. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  531. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  532. package/app/.next-cli-build/server/app/dashboard/skills.rsc +7 -7
  533. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  534. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  535. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  536. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  537. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +7 -7
  538. package/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  539. package/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +5 -5
  540. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
  541. package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  542. package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +7 -7
  543. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
  544. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  545. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  546. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  547. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +7 -7
  548. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  549. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +5 -5
  550. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +2 -2
  551. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  552. package/app/.next-cli-build/server/app/dashboard/translator.rsc +7 -7
  553. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  554. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  555. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  556. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  557. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +7 -7
  558. package/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  559. package/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +5 -5
  560. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  561. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  562. package/app/.next-cli-build/server/app/dashboard/usage.rsc +7 -7
  563. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  564. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  565. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  566. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  567. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +7 -7
  568. package/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  569. package/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +5 -5
  570. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  571. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  572. package/app/.next-cli-build/server/app/dashboard.rsc +7 -7
  573. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  574. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  575. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  576. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +7 -7
  577. package/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  578. package/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +5 -5
  579. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  580. package/app/.next-cli-build/server/app/favicon.ico/route.js +1 -1
  581. package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
  582. package/app/.next-cli-build/server/app/index.html +1 -1
  583. package/app/.next-cli-build/server/app/index.rsc +5 -5
  584. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  585. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +5 -5
  586. package/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  587. package/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +5 -5
  588. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
  589. package/app/.next-cli-build/server/app/landing/page.js +2 -2
  590. package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  591. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  592. package/app/.next-cli-build/server/app/landing.html +1 -1
  593. package/app/.next-cli-build/server/app/landing.rsc +5 -5
  594. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +5 -5
  595. package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  596. package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +5 -5
  597. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
  598. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  599. package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  600. package/app/.next-cli-build/server/app/login/page.js +2 -2
  601. package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  602. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  603. package/app/.next-cli-build/server/app/login.html +1 -1
  604. package/app/.next-cli-build/server/app/login.rsc +6 -6
  605. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +6 -6
  606. package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  607. package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +5 -5
  608. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
  609. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  610. package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  611. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js +2 -2
  612. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  613. package/app/.next-cli-build/server/app/page.js +2 -2
  614. package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  615. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  616. package/app/.next-cli-build/server/app-paths-manifest.json +19 -14
  617. package/app/.next-cli-build/server/chunks/238.js +1 -1
  618. package/app/.next-cli-build/server/chunks/2845.js +1 -1
  619. package/app/.next-cli-build/server/chunks/{1064.js → 3210.js} +1 -1
  620. package/app/.next-cli-build/server/chunks/3593.js +1 -1
  621. package/app/.next-cli-build/server/chunks/3617.js +1 -1
  622. package/app/.next-cli-build/server/chunks/4055.js +1 -1
  623. package/app/.next-cli-build/server/chunks/412.js +2 -2
  624. package/app/.next-cli-build/server/chunks/4739.js +1 -1
  625. package/app/.next-cli-build/server/chunks/4746.js +1 -1
  626. package/app/.next-cli-build/server/chunks/4780.js +1 -1
  627. package/app/.next-cli-build/server/chunks/4827.js +1 -1
  628. package/app/.next-cli-build/server/chunks/4989.js +1 -1
  629. package/app/.next-cli-build/server/chunks/507.js +1 -1
  630. package/app/.next-cli-build/server/chunks/5217.js +1 -1
  631. package/app/.next-cli-build/server/chunks/5258.js +1 -1
  632. package/app/.next-cli-build/server/chunks/5330.js +3 -3
  633. package/app/.next-cli-build/server/chunks/5335.js +1 -0
  634. package/app/.next-cli-build/server/chunks/5394.js +10 -0
  635. package/app/.next-cli-build/server/chunks/5615.js +1 -1
  636. package/app/.next-cli-build/server/chunks/6167.js +2 -2
  637. package/app/.next-cli-build/server/chunks/6173.js +1 -1
  638. package/app/.next-cli-build/server/chunks/698.js +1 -1
  639. package/app/.next-cli-build/server/chunks/7094.js +1 -10
  640. package/app/.next-cli-build/server/chunks/7220.js +1 -1
  641. package/app/.next-cli-build/server/chunks/7965.js +1 -1
  642. package/app/.next-cli-build/server/chunks/8031.js +1 -1
  643. package/app/.next-cli-build/server/chunks/8238.js +1 -1
  644. package/app/.next-cli-build/server/chunks/8520.js +1 -1
  645. package/app/.next-cli-build/server/chunks/8658.js +1 -1
  646. package/app/.next-cli-build/server/chunks/8668.js +1 -1
  647. package/app/.next-cli-build/server/chunks/8895.js +3 -3
  648. package/app/.next-cli-build/server/chunks/9350.js +1 -1
  649. package/app/.next-cli-build/server/chunks/9622.js +21 -0
  650. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  651. package/app/.next-cli-build/server/middleware.js +5 -5
  652. package/app/.next-cli-build/server/pages/404.html +1 -1
  653. package/app/.next-cli-build/server/pages/500.html +1 -1
  654. package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  655. package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  656. package/app/.next-cli-build/static/chunks/{1321-375600000ca9e76b.js → 1321-8091d010b4595473.js} +1 -1
  657. package/app/.next-cli-build/static/chunks/{5497-5c2a4e8c9f6b5339.js → 5497-f24493f33e6e5418.js} +1 -1
  658. package/app/.next-cli-build/static/chunks/7784-40a5085efed87853.js +3 -0
  659. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/expose-models/page-6a438ced5261e2e9.js +1 -0
  660. package/app/.next-cli-build/static/chunks/app/_global-error/page-4d6d6e402758effc.js +1 -0
  661. package/app/.next-cli-build/static/chunks/app/api/auth/login/route-4d6d6e402758effc.js +1 -0
  662. package/app/.next-cli-build/static/chunks/app/api/auth/logout/route-4d6d6e402758effc.js +1 -0
  663. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-4d6d6e402758effc.js +1 -0
  664. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-4d6d6e402758effc.js +1 -0
  665. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-4d6d6e402758effc.js +1 -0
  666. package/app/.next-cli-build/static/chunks/app/api/auth/reset-password/route-4d6d6e402758effc.js +1 -0
  667. package/app/.next-cli-build/static/chunks/app/api/auth/status/route-4d6d6e402758effc.js +1 -0
  668. package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-4d6d6e402758effc.js +1 -0
  669. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-4d6d6e402758effc.js +1 -0
  670. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-4d6d6e402758effc.js +1 -0
  671. package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-4d6d6e402758effc.js +1 -0
  672. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-4d6d6e402758effc.js +1 -0
  673. package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-4d6d6e402758effc.js +1 -0
  674. package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-4d6d6e402758effc.js +1 -0
  675. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-4d6d6e402758effc.js +1 -0
  676. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-4d6d6e402758effc.js +1 -0
  677. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-4d6d6e402758effc.js +1 -0
  678. package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-4d6d6e402758effc.js +1 -0
  679. package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-4d6d6e402758effc.js +1 -0
  680. package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-4d6d6e402758effc.js +1 -0
  681. package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-4d6d6e402758effc.js +1 -0
  682. package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-4d6d6e402758effc.js +1 -0
  683. package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-4d6d6e402758effc.js +1 -0
  684. package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-4d6d6e402758effc.js +1 -0
  685. package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-4d6d6e402758effc.js +1 -0
  686. package/app/.next-cli-build/static/chunks/app/api/combos/reorder/route-4d6d6e402758effc.js +1 -0
  687. package/app/.next-cli-build/static/chunks/app/api/combos/route-4d6d6e402758effc.js +1 -0
  688. package/app/.next-cli-build/static/chunks/app/api/expose-combos/[id]/route-4d6d6e402758effc.js +1 -0
  689. package/app/.next-cli-build/static/chunks/app/api/expose-combos/reorder/route-4d6d6e402758effc.js +1 -0
  690. package/app/.next-cli-build/static/chunks/app/api/expose-combos/route-4d6d6e402758effc.js +1 -0
  691. package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-4d6d6e402758effc.js +1 -0
  692. package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-4d6d6e402758effc.js +1 -0
  693. package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-4d6d6e402758effc.js +1 -0
  694. package/app/.next-cli-build/static/chunks/app/api/health/route-4d6d6e402758effc.js +1 -0
  695. package/app/.next-cli-build/static/chunks/app/api/init/route-4d6d6e402758effc.js +1 -0
  696. package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-4d6d6e402758effc.js +1 -0
  697. package/app/.next-cli-build/static/chunks/app/api/keys/route-4d6d6e402758effc.js +1 -0
  698. package/app/.next-cli-build/static/chunks/app/api/locale/route-4d6d6e402758effc.js +1 -0
  699. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-4d6d6e402758effc.js +1 -0
  700. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-4d6d6e402758effc.js +1 -0
  701. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-4d6d6e402758effc.js +1 -0
  702. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-4d6d6e402758effc.js +1 -0
  703. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-4d6d6e402758effc.js +1 -0
  704. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-4d6d6e402758effc.js +1 -0
  705. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-4d6d6e402758effc.js +1 -0
  706. package/app/.next-cli-build/static/chunks/app/api/models/alias/route-4d6d6e402758effc.js +1 -0
  707. package/app/.next-cli-build/static/chunks/app/api/models/availability/route-4d6d6e402758effc.js +1 -0
  708. package/app/.next-cli-build/static/chunks/app/api/models/custom/route-4d6d6e402758effc.js +1 -0
  709. package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-4d6d6e402758effc.js +1 -0
  710. package/app/.next-cli-build/static/chunks/app/api/models/order/route-4d6d6e402758effc.js +1 -0
  711. package/app/.next-cli-build/static/chunks/app/api/models/route-4d6d6e402758effc.js +1 -0
  712. package/app/.next-cli-build/static/chunks/app/api/models/test/route-4d6d6e402758effc.js +1 -0
  713. package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-4d6d6e402758effc.js +1 -0
  714. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-4d6d6e402758effc.js +1 -0
  715. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-4d6d6e402758effc.js +1 -0
  716. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-4d6d6e402758effc.js +1 -0
  717. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-4d6d6e402758effc.js +1 -0
  718. package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-4d6d6e402758effc.js +1 -0
  719. package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-4d6d6e402758effc.js +1 -0
  720. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-4d6d6e402758effc.js +1 -0
  721. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-4d6d6e402758effc.js +1 -0
  722. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-4d6d6e402758effc.js +1 -0
  723. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-4d6d6e402758effc.js +1 -0
  724. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-4d6d6e402758effc.js +1 -0
  725. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-4d6d6e402758effc.js +1 -0
  726. package/app/.next-cli-build/static/chunks/app/api/pricing/route-4d6d6e402758effc.js +1 -0
  727. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-4d6d6e402758effc.js +1 -0
  728. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-4d6d6e402758effc.js +1 -0
  729. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-4d6d6e402758effc.js +1 -0
  730. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/connections/disabled/route-4d6d6e402758effc.js +1 -0
  731. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-4d6d6e402758effc.js +1 -0
  732. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/pool/pull/route-4d6d6e402758effc.js +1 -0
  733. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/pool/push/route-4d6d6e402758effc.js +1 -0
  734. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/pool/route-4d6d6e402758effc.js +1 -0
  735. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-4d6d6e402758effc.js +1 -0
  736. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-4d6d6e402758effc.js +1 -0
  737. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-4d6d6e402758effc.js +1 -0
  738. package/app/.next-cli-build/static/chunks/app/api/providers/client/route-4d6d6e402758effc.js +1 -0
  739. package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-4d6d6e402758effc.js +1 -0
  740. package/app/.next-cli-build/static/chunks/app/api/providers/route-4d6d6e402758effc.js +1 -0
  741. package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-4d6d6e402758effc.js +1 -0
  742. package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-4d6d6e402758effc.js +1 -0
  743. package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-4d6d6e402758effc.js +1 -0
  744. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-4d6d6e402758effc.js +1 -0
  745. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-4d6d6e402758effc.js +1 -0
  746. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-4d6d6e402758effc.js +1 -0
  747. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-4d6d6e402758effc.js +1 -0
  748. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-4d6d6e402758effc.js +1 -0
  749. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-4d6d6e402758effc.js +1 -0
  750. package/app/.next-cli-build/static/chunks/app/api/settings/database/route-4d6d6e402758effc.js +1 -0
  751. package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-4d6d6e402758effc.js +1 -0
  752. package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-4d6d6e402758effc.js +1 -0
  753. package/app/.next-cli-build/static/chunks/app/api/settings/route-4d6d6e402758effc.js +1 -0
  754. package/app/.next-cli-build/static/chunks/app/api/shutdown/route-4d6d6e402758effc.js +1 -0
  755. package/app/.next-cli-build/static/chunks/app/api/tags/route-4d6d6e402758effc.js +1 -0
  756. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-4d6d6e402758effc.js +1 -0
  757. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-4d6d6e402758effc.js +1 -0
  758. package/app/.next-cli-build/static/chunks/app/api/translator/load/route-4d6d6e402758effc.js +1 -0
  759. package/app/.next-cli-build/static/chunks/app/api/translator/save/route-4d6d6e402758effc.js +1 -0
  760. package/app/.next-cli-build/static/chunks/app/api/translator/send/route-4d6d6e402758effc.js +1 -0
  761. package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-4d6d6e402758effc.js +1 -0
  762. package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-4d6d6e402758effc.js +1 -0
  763. package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-4d6d6e402758effc.js +1 -0
  764. package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-4d6d6e402758effc.js +1 -0
  765. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-4d6d6e402758effc.js +1 -0
  766. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-4d6d6e402758effc.js +1 -0
  767. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-4d6d6e402758effc.js +1 -0
  768. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-4d6d6e402758effc.js +1 -0
  769. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-4d6d6e402758effc.js +1 -0
  770. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-4d6d6e402758effc.js +1 -0
  771. package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-4d6d6e402758effc.js +1 -0
  772. package/app/.next-cli-build/static/chunks/app/api/usage/history/route-4d6d6e402758effc.js +1 -0
  773. package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-4d6d6e402758effc.js +1 -0
  774. package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-4d6d6e402758effc.js +1 -0
  775. package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-4d6d6e402758effc.js +1 -0
  776. package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-4d6d6e402758effc.js +1 -0
  777. package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-4d6d6e402758effc.js +1 -0
  778. package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-4d6d6e402758effc.js +1 -0
  779. package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-4d6d6e402758effc.js +1 -0
  780. package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-4d6d6e402758effc.js +1 -0
  781. package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-4d6d6e402758effc.js +1 -0
  782. package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-4d6d6e402758effc.js +1 -0
  783. package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-4d6d6e402758effc.js +1 -0
  784. package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-4d6d6e402758effc.js +1 -0
  785. package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-4d6d6e402758effc.js +1 -0
  786. package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-4d6d6e402758effc.js +1 -0
  787. package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-4d6d6e402758effc.js +1 -0
  788. package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-4d6d6e402758effc.js +1 -0
  789. package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-4d6d6e402758effc.js +1 -0
  790. package/app/.next-cli-build/static/chunks/app/api/v1/models/route-4d6d6e402758effc.js +1 -0
  791. package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-4d6d6e402758effc.js +1 -0
  792. package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-4d6d6e402758effc.js +1 -0
  793. package/app/.next-cli-build/static/chunks/app/api/v1/route-4d6d6e402758effc.js +1 -0
  794. package/app/.next-cli-build/static/chunks/app/api/v1/search/route-4d6d6e402758effc.js +1 -0
  795. package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-4d6d6e402758effc.js +1 -0
  796. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-4d6d6e402758effc.js +1 -0
  797. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-4d6d6e402758effc.js +1 -0
  798. package/app/.next-cli-build/static/chunks/app/api/v2/models/route-4d6d6e402758effc.js +1 -0
  799. package/app/.next-cli-build/static/chunks/app/api/version/route-4d6d6e402758effc.js +1 -0
  800. package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-4d6d6e402758effc.js +1 -0
  801. package/app/.next-cli-build/static/chunks/app/api/version/update/route-4d6d6e402758effc.js +1 -0
  802. package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-4d6d6e402758effc.js +1 -0
  803. package/app/.next-cli-build/static/chunks/app/page-4d6d6e402758effc.js +1 -0
  804. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-4d6d6e402758effc.js +1 -0
  805. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-4d6d6e402758effc.js +1 -0
  806. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-4d6d6e402758effc.js +1 -0
  807. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-4d6d6e402758effc.js +1 -0
  808. package/app/.next-cli-build/static/css/04bf574a573ae463.css +1 -0
  809. package/app/.next-cli-build/static/mxflWdP6p7uUZrnbTMijL/_buildManifest.js +1 -0
  810. package/app/cli/.build-home/.9router/db/backups/{upgrade-0.5.55-to-0.5.56-0.5.56-20260707-002425 → upgrade-0.5.58-to-0.5.59-0.5.59-20260708-021757}/data.sqlite +0 -0
  811. package/app/cli/.build-home/.9router/db/backups/{upgrade-0.5.54-to-0.5.55-0.5.55-20260706-225849 → upgrade-0.5.59-to-0.5.60-0.5.60-20260713-215333}/data.sqlite +0 -0
  812. package/app/cli/.build-home/.9router/db/data.sqlite +0 -0
  813. package/app/package.json +1 -1
  814. package/app/server.js +1 -1
  815. package/package.json +1 -1
  816. package/app/.next-cli-build/server/chunks/4713.js +0 -1
  817. package/app/.next-cli-build/server/chunks/914.js +0 -21
  818. package/app/.next-cli-build/static/6DlcFIbNVVQ80tzM8_60j/_buildManifest.js +0 -1
  819. package/app/.next-cli-build/static/chunks/7784-265a15eadd679bdc.js +0 -3
  820. package/app/.next-cli-build/static/chunks/app/_global-error/page-438b0daca26ddc22.js +0 -1
  821. package/app/.next-cli-build/static/chunks/app/api/auth/login/route-438b0daca26ddc22.js +0 -1
  822. package/app/.next-cli-build/static/chunks/app/api/auth/logout/route-438b0daca26ddc22.js +0 -1
  823. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-438b0daca26ddc22.js +0 -1
  824. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-438b0daca26ddc22.js +0 -1
  825. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-438b0daca26ddc22.js +0 -1
  826. package/app/.next-cli-build/static/chunks/app/api/auth/reset-password/route-438b0daca26ddc22.js +0 -1
  827. package/app/.next-cli-build/static/chunks/app/api/auth/status/route-438b0daca26ddc22.js +0 -1
  828. package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-438b0daca26ddc22.js +0 -1
  829. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-438b0daca26ddc22.js +0 -1
  830. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-438b0daca26ddc22.js +0 -1
  831. package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-438b0daca26ddc22.js +0 -1
  832. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-438b0daca26ddc22.js +0 -1
  833. package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-438b0daca26ddc22.js +0 -1
  834. package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-438b0daca26ddc22.js +0 -1
  835. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-438b0daca26ddc22.js +0 -1
  836. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-438b0daca26ddc22.js +0 -1
  837. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-438b0daca26ddc22.js +0 -1
  838. package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-438b0daca26ddc22.js +0 -1
  839. package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-438b0daca26ddc22.js +0 -1
  840. package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-438b0daca26ddc22.js +0 -1
  841. package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-438b0daca26ddc22.js +0 -1
  842. package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-438b0daca26ddc22.js +0 -1
  843. package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-438b0daca26ddc22.js +0 -1
  844. package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-438b0daca26ddc22.js +0 -1
  845. package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-438b0daca26ddc22.js +0 -1
  846. package/app/.next-cli-build/static/chunks/app/api/combos/reorder/route-438b0daca26ddc22.js +0 -1
  847. package/app/.next-cli-build/static/chunks/app/api/combos/route-438b0daca26ddc22.js +0 -1
  848. package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-438b0daca26ddc22.js +0 -1
  849. package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-438b0daca26ddc22.js +0 -1
  850. package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-438b0daca26ddc22.js +0 -1
  851. package/app/.next-cli-build/static/chunks/app/api/health/route-438b0daca26ddc22.js +0 -1
  852. package/app/.next-cli-build/static/chunks/app/api/init/route-438b0daca26ddc22.js +0 -1
  853. package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-438b0daca26ddc22.js +0 -1
  854. package/app/.next-cli-build/static/chunks/app/api/keys/route-438b0daca26ddc22.js +0 -1
  855. package/app/.next-cli-build/static/chunks/app/api/locale/route-438b0daca26ddc22.js +0 -1
  856. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-438b0daca26ddc22.js +0 -1
  857. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-438b0daca26ddc22.js +0 -1
  858. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-438b0daca26ddc22.js +0 -1
  859. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-438b0daca26ddc22.js +0 -1
  860. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-438b0daca26ddc22.js +0 -1
  861. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-438b0daca26ddc22.js +0 -1
  862. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-438b0daca26ddc22.js +0 -1
  863. package/app/.next-cli-build/static/chunks/app/api/models/alias/route-438b0daca26ddc22.js +0 -1
  864. package/app/.next-cli-build/static/chunks/app/api/models/availability/route-438b0daca26ddc22.js +0 -1
  865. package/app/.next-cli-build/static/chunks/app/api/models/custom/route-438b0daca26ddc22.js +0 -1
  866. package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-438b0daca26ddc22.js +0 -1
  867. package/app/.next-cli-build/static/chunks/app/api/models/order/route-438b0daca26ddc22.js +0 -1
  868. package/app/.next-cli-build/static/chunks/app/api/models/route-438b0daca26ddc22.js +0 -1
  869. package/app/.next-cli-build/static/chunks/app/api/models/test/route-438b0daca26ddc22.js +0 -1
  870. package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-438b0daca26ddc22.js +0 -1
  871. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-438b0daca26ddc22.js +0 -1
  872. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-438b0daca26ddc22.js +0 -1
  873. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-438b0daca26ddc22.js +0 -1
  874. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-438b0daca26ddc22.js +0 -1
  875. package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-438b0daca26ddc22.js +0 -1
  876. package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-438b0daca26ddc22.js +0 -1
  877. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-438b0daca26ddc22.js +0 -1
  878. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-438b0daca26ddc22.js +0 -1
  879. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-438b0daca26ddc22.js +0 -1
  880. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-438b0daca26ddc22.js +0 -1
  881. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-438b0daca26ddc22.js +0 -1
  882. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-438b0daca26ddc22.js +0 -1
  883. package/app/.next-cli-build/static/chunks/app/api/pricing/route-438b0daca26ddc22.js +0 -1
  884. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-438b0daca26ddc22.js +0 -1
  885. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-438b0daca26ddc22.js +0 -1
  886. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-438b0daca26ddc22.js +0 -1
  887. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/connections/disabled/route-438b0daca26ddc22.js +0 -1
  888. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-438b0daca26ddc22.js +0 -1
  889. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/pool/pull/route-438b0daca26ddc22.js +0 -1
  890. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/pool/push/route-438b0daca26ddc22.js +0 -1
  891. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/pool/route-438b0daca26ddc22.js +0 -1
  892. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-438b0daca26ddc22.js +0 -1
  893. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-438b0daca26ddc22.js +0 -1
  894. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-438b0daca26ddc22.js +0 -1
  895. package/app/.next-cli-build/static/chunks/app/api/providers/client/route-438b0daca26ddc22.js +0 -1
  896. package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-438b0daca26ddc22.js +0 -1
  897. package/app/.next-cli-build/static/chunks/app/api/providers/route-438b0daca26ddc22.js +0 -1
  898. package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-438b0daca26ddc22.js +0 -1
  899. package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-438b0daca26ddc22.js +0 -1
  900. package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-438b0daca26ddc22.js +0 -1
  901. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-438b0daca26ddc22.js +0 -1
  902. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-438b0daca26ddc22.js +0 -1
  903. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-438b0daca26ddc22.js +0 -1
  904. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-438b0daca26ddc22.js +0 -1
  905. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-438b0daca26ddc22.js +0 -1
  906. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-438b0daca26ddc22.js +0 -1
  907. package/app/.next-cli-build/static/chunks/app/api/settings/database/route-438b0daca26ddc22.js +0 -1
  908. package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-438b0daca26ddc22.js +0 -1
  909. package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-438b0daca26ddc22.js +0 -1
  910. package/app/.next-cli-build/static/chunks/app/api/settings/route-438b0daca26ddc22.js +0 -1
  911. package/app/.next-cli-build/static/chunks/app/api/shutdown/route-438b0daca26ddc22.js +0 -1
  912. package/app/.next-cli-build/static/chunks/app/api/tags/route-438b0daca26ddc22.js +0 -1
  913. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-438b0daca26ddc22.js +0 -1
  914. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-438b0daca26ddc22.js +0 -1
  915. package/app/.next-cli-build/static/chunks/app/api/translator/load/route-438b0daca26ddc22.js +0 -1
  916. package/app/.next-cli-build/static/chunks/app/api/translator/save/route-438b0daca26ddc22.js +0 -1
  917. package/app/.next-cli-build/static/chunks/app/api/translator/send/route-438b0daca26ddc22.js +0 -1
  918. package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-438b0daca26ddc22.js +0 -1
  919. package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-438b0daca26ddc22.js +0 -1
  920. package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-438b0daca26ddc22.js +0 -1
  921. package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-438b0daca26ddc22.js +0 -1
  922. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-438b0daca26ddc22.js +0 -1
  923. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-438b0daca26ddc22.js +0 -1
  924. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-438b0daca26ddc22.js +0 -1
  925. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-438b0daca26ddc22.js +0 -1
  926. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-438b0daca26ddc22.js +0 -1
  927. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-438b0daca26ddc22.js +0 -1
  928. package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-438b0daca26ddc22.js +0 -1
  929. package/app/.next-cli-build/static/chunks/app/api/usage/history/route-438b0daca26ddc22.js +0 -1
  930. package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-438b0daca26ddc22.js +0 -1
  931. package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-438b0daca26ddc22.js +0 -1
  932. package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-438b0daca26ddc22.js +0 -1
  933. package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-438b0daca26ddc22.js +0 -1
  934. package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-438b0daca26ddc22.js +0 -1
  935. package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-438b0daca26ddc22.js +0 -1
  936. package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-438b0daca26ddc22.js +0 -1
  937. package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-438b0daca26ddc22.js +0 -1
  938. package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-438b0daca26ddc22.js +0 -1
  939. package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-438b0daca26ddc22.js +0 -1
  940. package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-438b0daca26ddc22.js +0 -1
  941. package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-438b0daca26ddc22.js +0 -1
  942. package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-438b0daca26ddc22.js +0 -1
  943. package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-438b0daca26ddc22.js +0 -1
  944. package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-438b0daca26ddc22.js +0 -1
  945. package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-438b0daca26ddc22.js +0 -1
  946. package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-438b0daca26ddc22.js +0 -1
  947. package/app/.next-cli-build/static/chunks/app/api/v1/models/route-438b0daca26ddc22.js +0 -1
  948. package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-438b0daca26ddc22.js +0 -1
  949. package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-438b0daca26ddc22.js +0 -1
  950. package/app/.next-cli-build/static/chunks/app/api/v1/route-438b0daca26ddc22.js +0 -1
  951. package/app/.next-cli-build/static/chunks/app/api/v1/search/route-438b0daca26ddc22.js +0 -1
  952. package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-438b0daca26ddc22.js +0 -1
  953. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-438b0daca26ddc22.js +0 -1
  954. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-438b0daca26ddc22.js +0 -1
  955. package/app/.next-cli-build/static/chunks/app/api/version/route-438b0daca26ddc22.js +0 -1
  956. package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-438b0daca26ddc22.js +0 -1
  957. package/app/.next-cli-build/static/chunks/app/api/version/update/route-438b0daca26ddc22.js +0 -1
  958. package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-438b0daca26ddc22.js +0 -1
  959. package/app/.next-cli-build/static/chunks/app/page-438b0daca26ddc22.js +0 -1
  960. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-438b0daca26ddc22.js +0 -1
  961. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-438b0daca26ddc22.js +0 -1
  962. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-438b0daca26ddc22.js +0 -1
  963. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-438b0daca26ddc22.js +0 -1
  964. package/app/.next-cli-build/static/css/7834e98b0ab2c85c.css +0 -1
  965. /package/app/.next-cli-build/static/{6DlcFIbNVVQ80tzM8_60j → mxflWdP6p7uUZrnbTMijL}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";exports.id=238,exports.ids=[238,1998],exports.modules={5483:(a,b,c)=>{c.d(b,{Gz:()=>m,Yj:()=>j,ZO:()=>l});let d=JSON.parse('{"gemini-2.5-flash":{"rpm":5,"rpd":20,"tpm":250000},"gemini-2.5-pro":{"rpm":0,"rpd":0,"tpm":0},"gemini-2-flash":{"rpm":0,"rpd":0,"tpm":0},"gemini-2-flash-lite":{"rpm":0,"rpd":0,"tpm":0},"gemini-2.5-flash-tts":{"rpm":3,"rpd":10,"tpm":10000},"gemini-2.5-pro-tts":{"rpm":0,"rpd":0,"tpm":0},"imagen-4-generate":{"rpm":-1,"rpd":25,"tpm":-1},"imagen-4-ultra-generate":{"rpm":-1,"rpd":25,"tpm":-1},"imagen-4-fast-generate":{"rpm":-1,"rpd":25,"tpm":-1},"gemma-4-26b-it":{"rpm":15,"rpd":1500,"tpm":-1},"gemma-4-31b-it":{"rpm":15,"rpd":1500,"tpm":-1},"gemini-embedding-exp-03-07":{"rpm":100,"rpd":1000,"tpm":30000},"gemini-3.5-flash":{"rpm":5,"rpd":20,"tpm":250000},"gemini-3.1-flash-lite":{"rpm":15,"rpd":500,"tpm":250000},"gemini-3.1-pro":{"rpm":0,"rpd":0,"tpm":0},"gemini-2.5-flash-lite":{"rpm":10,"rpd":20,"tpm":250000},"nano-banana-gemini-2.5-flash-preview-image":{"rpm":0,"rpd":0,"tpm":0},"nano-banana-pro-gemini-3-pro-image":{"rpm":0,"rpd":0,"tpm":0},"nano-banana-2-gemini-3.1-flash-image":{"rpm":0,"rpd":0,"tpm":0},"lyria-3-clip":{"rpm":0,"rpd":0,"tpm":0},"lyria-3-pro":{"rpm":0,"rpd":0,"tpm":0},"veo-3-generate":{"rpm":0,"rpd":0,"tpm":-1},"veo-3-fast-generate":{"rpm":0,"rpd":0,"tpm":-1},"veo-3-lite-generate":{"rpm":0,"rpd":0,"tpm":-1},"gemini-3.1-flash-tts":{"rpm":3,"rpd":10,"tpm":10000},"gemini-robotics-er-1.5-preview":{"rpm":10,"rpd":20,"tpm":250000},"gemini-robotics-er-1.6-preview":{"rpm":5,"rpd":20,"tpm":250000},"computer-use-preview":{"rpm":0,"rpd":0,"tpm":0},"gemini-embedding-exp-04-07":{"rpm":100,"rpd":1000,"tpm":30000},"gemini-3.5-live-translate":{"rpm":-1,"rpd":-1,"tpm":20000},"gemini-2.5-flash-native-audio-dialog":{"rpm":-1,"rpd":-1,"tpm":1000000},"gemini-3-flash-live":{"rpm":-1,"rpd":-1,"tpm":65000}}'),e=new Map,f=new Map;function g(){return new Date().toISOString().slice(0,10)}function h(a){return a.replace(/^gemini\//,"").trim()}function i(a,b){if(!a)return 0;let c=h(a),e=d[c];if(!e){for(let[a,e]of Object.entries(d))if(c.endsWith(a)||a.endsWith(c)){let a=e[b];return"number"==typeof a&&a>0?a:0}return 0}let f=e[b];return"number"==typeof f&&f>0?f:0}function j(a){let b=i(a,"rpd");return!(b<=0)&&function(a){if(!a)return 0;let b=h(a),c=g(),d=e.get(b);return d&&d.date===c?d.count:0}(a)>=b}function k(a){let b=Date.now()-6e4,c=f.get(a);if(!c)return;let d=0;for(;d<c.length&&c[d]<b;)d++;d>0&&f.set(a,c.slice(d))}function l(a){let b=i(a,"rpm");return!(b<=0)&&function(a){if(!a)return 0;let b=h(a);return k(b),f.get(b)?.length??0}(a)>=b}function m(a){!function(a){if(!a)return;let b=h(a),c=g(),d=e.get(b);d&&d.date===c?d.count++:e.set(b,{date:c,count:1})}(a),function(a){if(!a)return;let b=h(a);k(b);let c=f.get(b)??[];c.push(Date.now()),f.set(b,c)}(a)}},10254:(a,b,c)=>{c.d(b,{hk:()=>an,w7:()=>ak,M$:()=>_,lB:()=>aa,Qo:()=>ao,ls:()=>ac,LN:()=>M,DZ:()=>Z,K7:()=>H,M1:()=>I,xs:()=>am,qw:()=>ab,me:()=>J,je:()=>af,v6:()=>ae,R7:()=>W,CY:()=>$,Ks:()=>ag,E$:()=>Y,p8:()=>ad,pX:()=>X});var d=c(61408),e=c(3662);function f(){return[{id:"opencode-quota-exhausted-headers",match:({status:a,headers:b})=>429!==a?null:"0"===b["x-ratelimit-remaining-requests"]||"0"===b["x-ratelimit-remaining-tokens"]?{reason:"quota_exhausted",scope:"provider"}:null},{id:"opencode-quota-exhausted-body",match:({status:a,body:b})=>{if(429!==a)return null;let c=JSON.stringify(b??"").toLowerCase();return c.includes("organization_quota_exceeded")||c.includes("account_quota_exceeded")||c.includes("plan_limit_reached")?{reason:"quota_exhausted",scope:"provider"}:null}}]}function g(){return[{id:"minimax-per-model-quota",match:({status:a,headers:b})=>{if(429!==a)return null;let c=b["x-model-quota-remaining"];return c&&c.split(",").some(a=>a.split("=")[1]?.trim()==="0")?{reason:"quota_exhausted",scope:"model"}:null}}]}let h=new Map([["opencode",f()],["opencode-go",f()],["opencode-cli",f()],["minimax",g()],["minimax-passthrough",g()]]);var i=c(36081),j=c(50102),k=c(77868),l=c(15300),m=c(40615),n=c(37664),o=c(21968),p=c(5483);function q(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}let r=new Set([408,429,500,502,503,504]),s=new Map,t=setInterval(()=>{let a=Date.now();for(let[b,c]of s)a-c>5e3&&s.delete(b)},6e4);"object"==typeof t&&"unref"in t&&t.unref?.();let u=["account_deactivated","account has been deactivated","account has been disabled","your account has been suspended","this account is deactivated","verify your account to continue","this service has been disabled in this account for violation","this service has been disabled in this account"],v=[],w=["insufficient_quota","billing_hard_limit_reached","exceeded your current quota","exceeded your current usage quota","credit_balance_too_low","your credit balance is too low","credits exhausted","out of credits","payment required","free tier of the model has been exhausted","insufficient balance","insufficient_balance","insufficient account balance"],x=["invalid authentication credentials","oauth 2","login cookie","valid authentication credential","invalid credentials"],y=[/\binput is too long\b/i,/\binput too long\b/i,/\bcontext.*(too long|exceeded|overflow|limit)/i,/\btoo many tokens\b/i,/\bprompt is too long\b/i,/\bcontext window/i,/\bmaximum context/i,/\bmax.*token/i,/\btoken limit/i,/\brequest too large\b/i],z=new Set(["model_not_found","deployment_not_found"]),A=new Set(["not_found_error"]),B=new Set(["permission_error"]),C=[/\binvalid model\b/i,/\bmodel.*not.*(?:available|found|supported|accessible)\b/i,/\bmodel.*(?:does not exist|doesn't exist)\b/i,/\baccess.*denied.*model\b/i,/\bmodel.*access.*denied\b/i,/\bplease select a different model\b/i,/\b(?:access|permission)[\s\S]{0,60}?\bmodel\b/i,/\bmodel[\s\S]{0,60}?\b(?:access|permission)\b/i],D=[/\b(?:invalid|incorrect|expired|missing|revoked)\s+api[\s_-]?key\b/i,/\bapi[\s_-]?key\s+(?:is\s+)?(?:invalid|incorrect|expired|missing|revoked|not\s+valid)\b/i,/\bauthentication\s+(?:failed|error|required)\b/i,/\b(?:invalid|expired|missing|revoked)\s+(?:token|credentials?|bearer)\b/i,/\bunauthorized\b/i,/\bnot\s+authenticated\b/i],E=[/\bimproperly formed request\b/i,/\binvalid.*message.*format/i,/\bmessages must alternate\b/i,/\bempty (message|content)\b/i,/\bfunction'?s? name (?:can't|can not|is|has) (?:blank|empty|missing)/i,/function.*name.*(?:blank|empty|missing)/i,/tool_call.*name.*(?:blank|empty|missing)/i],F=[/high.?frequency/i,/non-compliant/i,/too many requests/i,/rate.?limit/i,/频繁/,/频率/],G=[/max_tokens.*illegal/i,/max_tokens.*must be/i,/max_tokens.*range/i,/parameter is illegal/i,/is illegal.*range/i];function H(a){let b=String(a||"").toLowerCase();return(0===v.length?u:[...u,...v]).some(a=>b.includes(a))}function I(a){let b=String(a||"").toLowerCase();return!!w.some(a=>b.includes(a))||b.includes("insufficient")&&b.includes("balance")}function J(a){let b=String(a||"").toLowerCase();return x.some(a=>b.includes(a))}function K(a,b){let c=b?(0,j.xv)(b):j.aD,e=c.connectionCooldown[a],f=c.providerBreaker[a];return{baseCooldownMs:e.baseCooldownMs,useUpstreamRetryHints:e.useUpstreamRetryHints,useUpstream429BreakerHints:e.useUpstream429BreakerHints,maxCooldownMs:(0,k.Sy)(b).maxCooldownMs,maxBackoffSteps:e.maxBackoffSteps,failureThreshold:f.failureThreshold,resetTimeoutMs:f.resetTimeoutMs,transientCooldown:e.baseCooldownMs,rateLimitCooldown:e.useUpstreamRetryHints?0:e.baseCooldownMs,maxBackoffLevel:e.maxBackoffSteps,circuitBreakerThreshold:f.failureThreshold,circuitBreakerReset:f.resetTimeoutMs,degradationThreshold:f.degradationThreshold,providerFailureThreshold:d.xx[a].providerFailureThreshold,providerFailureWindowMs:d.xx[a].providerFailureWindowMs,maxBackoffMultiplier:d.xx[a].maxBackoffMultiplier,backoffEscalationCount:d.xx[a].backoffEscalationCount,providerCooldownMs:d.xx[a].providerCooldownMs}}function L(a){return K((0,i.oQ)(a))}async function M(a){try{let{getCachedSettings:b}=await c.e(4046).then(c.bind(c,14046)),d=await b(),e=(0,i.oQ)(a||"");return K(e,d)}catch{return L(a||"")}}let N=new Map,O=new Map,P=new Map;function Q(a){let b=P.get(a);return b||(b=(0,m.rs)(a),P.set(a,b)),b}function R(a,b,c){let d=Q(a),e="codex"===d?(0,n.t6)(c):(0,o.M$)(d,c)||c;return`${d}:${b}:${e}`}function S(a,b=Date.now()){let c=N.get(a);c&&b>c.until&&N.delete(a);let d=O.get(a);!d||b-d.lastFailureAt<=d.resetAfterMs+(d.lastCooldownMs??0)||N.has(a)||O.delete(a)}function T(a,b,c=e.EQ.maxLevel){return(Number.isFinite(a)&&a>0?a:1e3)*Math.pow(2,Math.min(Math.max(0,b-1),Math.max(0,c)))}let U=null;function V(){if(!U)try{U=setInterval(()=>{let a=Date.now();for(let b of N.keys())S(b,a);for(let b of O.keys())S(b,a)},15e3),"object"==typeof U&&"unref"in U&&U.unref?.()}catch{}}function W(a,b,c,d,e,f={}){if(!c)return;V();let g=R(a,b,c);S(g);let h=Date.now()+e,i=N.get(g);if(i&&i.until>h){f.failureCount&&f.failureCount>i.failureCount&&(i.failureCount=f.failureCount,i.lastFailureAt=f.lastFailureAt??i.lastFailureAt,i.resetAfterMs=f.resetAfterMs??i.resetAfterMs,N.set(g,i));return}let j=Date.now();N.set(g,{reason:d,until:h,lockedAt:j,failureCount:f.failureCount??i?.failureCount??1,lastFailureAt:f.lastFailureAt??j,resetAfterMs:f.resetAfterMs??i?.resetAfterMs??0})}function X(a,b){return"number"==typeof a&&a>b.baseCooldownMs?a:b.useExponentialBackoff?0:b.baseCooldownMs}function Y(a,b,c,f,g,h,i=null,j={}){V();let k=R(a,b,c),l=Date.now();S(k,l),"quota_exhausted"===f&&"number"!=typeof j.exactCooldownMs&&(j={...j,exactCooldownMs:al()});let m=function(a=null,b=18e5){let c=a?.resetTimeoutMs;return"number"==typeof c&&c>0?c:b}(i),n=O.get(k),o=n&&l-n.lastFailureAt<=n.resetAfterMs+(n.lastCooldownMs??0)?n.failureCount+1:1,p=function(a,b,c=null){return Number.isFinite(b)&&b>0?b:"number"==typeof c?.baseCooldownMs&&c.baseCooldownMs>=0?c.baseCooldownMs:a===d.gx.RATE_LIMITED?function(a=0){return(0,e.KI)(a)}(0):e.Bm.transientInitial}(g,h,i),q="number"==typeof j.maxCooldownMs&&j.maxCooldownMs>0?j.maxCooldownMs:e.EQ.max,r="number"==typeof j.exactCooldownMs&&j.exactCooldownMs>0?j.exactCooldownMs:Math.min(T(p,o,i?.maxBackoffSteps??e.EQ.maxLevel),q);return O.set(k,{failureCount:o,lastFailureAt:l,resetAfterMs:m,lastCooldownMs:r}),W(a,b,c,f,r,{failureCount:o,lastFailureAt:l,resetAfterMs:m}),{cooldownMs:r,failureCount:o,resetAfterMs:m}}function Z(a,b=null,c){return"boolean"==typeof c?c:!!a&&(!!("codex"===Q(a)||"gemini"===a||"github"===a||(0,i.Fp)().has(a))||!!("string"==typeof a&&(a.startsWith("openai-compatible-")||a.startsWith("anthropic-compatible-"))))}function $(a,b,c,d,e,f){return!(!Z(a,c,f)||!c||function(a){let b=a?(0,l.qF)(a):null;return!!b&&!b.canExecute()}(a))&&(W(a,b,c,d,e),!0)}function _(a){return 429===a?"rate_limit":403===a?"quota_exhausted":"unknown"}function aa(a,b,c){let d=R(a,b,c),e=O.get(d);if(!e)return{cleared:!1,newFailureCount:0};let f=Math.floor(e.failureCount/2);return 0===f?(O.delete(d),{cleared:!0,newFailureCount:0}):(O.set(d,{...e,failureCount:f}),{cleared:!1,newFailureCount:f})}function ab(a,b,c){if(!c)return!1;let d=R(a,b,c);return S(d),!!N.get(d)}function ac(a,b,c){if(!c)return null;let d=R(a,b,c);S(d);let e=N.get(d);return e?{reason:e.reason,remainingMs:e.until-Date.now(),lockedAt:new Date(e.lockedAt).toISOString(),failureCount:e.failureCount}:null}function ad(a,b,c,d){if(!a)return;if(c){let b=`${a}:${c}`,d=Date.now(),e=s.get(b);if(e&&d-e<5e3)return;s.delete(b),s.set(b,d),function(){for(;s.size>1e4;){let a=s.keys().next().value;if("string"!=typeof a)return;s.delete(a)}}()}let e=function(a,b){if(!a)return null;let c={...L(a),...b};return c.useUpstream429BreakerHints,(0,l.qF)(a,{failureThreshold:c.failureThreshold??c.circuitBreakerThreshold,resetTimeout:c.resetTimeoutMs??c.circuitBreakerReset,...{},degradationThreshold:c.degradationThreshold,maxBackoffMultiplier:c.maxBackoffMultiplier,backoffEscalationCount:c.backoffEscalationCount})}(a,d);!e||e.canExecute()&&(e._onFailure(),e.canExecute()||b?.warn?.(`[ProviderFailure] ${a}: circuit breaker opened after repeated failures`))}function ae(a){return r.has(a)}function af(a){return!!a.creditsExhausted||!!a.dailyQuotaExhausted||a.reason===d.QS.QUOTA_EXHAUSTED}function ag(a){let b;try{b=q("string"==typeof a?JSON.parse(a):a)}catch{return{retryAfterMs:null,reason:d.QS.UNKNOWN}}if(0===Object.keys(b).length)return{retryAfterMs:null,reason:d.QS.UNKNOWN};let c=q(b.error),e=c.details||b.details||[];for(let a of Array.isArray(e)?e:[]){let b=q(a);if(b.retryDelay)return{retryAfterMs:function(a){if(!a)return null;let b=String(a).trim(),c=/^(\d+)\s*ms$/i.exec(b);if(c)return Number.parseInt(c[1],10);let d=/^(\d+)\s*s$/i.exec(b);if(d)return 1e3*Number.parseInt(d[1],10);let e=/^(\d+)\s*m$/i.exec(b);if(e)return 60*Number.parseInt(e[1],10)*1e3;let f=/^(\d+)\s*h$/i.exec(b);if(f)return 3600*Number.parseInt(f[1],10)*1e3;let g=Number.parseInt(b,10);return Number.isNaN(g)?null:1e3*g}(b.retryDelay),reason:d.QS.RATE_LIMIT_EXCEEDED}}let f=String(c.message||b.message||""),g=/retry\s+after\s+(\d+)\s*s/i.exec(f);if(g)return{retryAfterMs:1e3*Number.parseInt(g[1],10),reason:d.QS.RATE_LIMIT_EXCEEDED};let h=String(c.type||b.type||"");return"rate_limit_error"===h?{retryAfterMs:null,reason:d.QS.RATE_LIMIT_EXCEEDED}:{retryAfterMs:null,reason:ak(f||h)}}function ah(a){if(!a||"string"!=typeof a)return null;let b=String(a),c=/\b(?:try again at|wait until|reset(?:s)? at|available at|retry after)\s+(\d{4}-\d{2}-\d{2}[Tt ]\d{2}:\d{2}(?::\d{2})?(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})?)/i.exec(b);if(c){let a=Date.parse(c[1]);if(Number.isFinite(a)){let b=a-Date.now();if(b>0)return b}}let d=/reset after (\d+h)?(\d+m)?(\d+s)?/i.exec(b);if(d?.[1]||d?.[2]||d?.[3])return ai(d);let e=/will reset after (\d+h)?(\d+m)?(\d+s)?/i.exec(b);if(e?.[1]||e?.[2]||e?.[3])return ai(e);let f=/resets? in (\d+h)?(\d+m)?(\d+s)?/i.exec(b);return f?.[1]||f?.[2]||f?.[3]?ai(f):null}function ai(a){let b=0;return a[1]&&(b+=3600*Number.parseInt(a[1],10)*1e3),a[2]&&(b+=60*Number.parseInt(a[2],10)*1e3),a[3]&&(b+=1e3*Number.parseInt(a[3],10)),b>0?Math.min(b,2592e6):null}function aj(a){return a.includes("usage limit reached")||a.includes("usage limit has been")||a.includes("claude pro usage limit")||a.includes("you've reached your usage limit")||a.includes("you have reached your usage limit")}function ak(a){if(!a)return d.QS.UNKNOWN;let b=String(a).toLowerCase();if(b.includes("quota exceeded")||b.includes("quota depleted")||b.includes("quota will reset")||b.includes("your quota will reset")||b.includes("quota has been exceeded")||b.includes("hour quota")||b.includes("billing")||aj(b)||I(b))return d.QS.QUOTA_EXHAUSTED;if(H(b))return d.QS.AUTH_ERROR;let c=(0,e.Mh)(a);return c?.reason?c.reason:b.includes("rate_limit")?d.QS.RATE_LIMIT_EXCEEDED:b.includes("resource exhausted")||b.includes("high demand")?d.QS.MODEL_CAPACITY:b.includes("unauthorized")||b.includes("invalid api key")||b.includes("authentication")?d.QS.AUTH_ERROR:b.includes("server error")||b.includes("internal error")?d.QS.SERVER_ERROR:d.QS.UNKNOWN}function al(){let a=Date.now(),b=new Date(a);b.setDate(b.getDate()+1),b.setHours(0,0,0,0);let c=b.getTime()-a;return c>0&&c<=9e7?c:864e5}function am(a){if(!a)return!1;let b=a.toLowerCase();return b.includes("today's quota")||b.includes("daily quota")||b.includes("try again tomorrow")}function an(a,b,c=0,f=null,g=null,j=null,k=null,l){if(503===a&&j){let a="function"==typeof j.get?j.get("x-omni-fallback-hint"):j["x-omni-fallback-hint"]||j["X-Omni-Fallback-Hint"];if("string"==typeof a&&"connection_cooldown"===a.toLowerCase())return{shouldFallback:!0,cooldownMs:5e3,baseCooldownMs:5e3,newBackoffLevel:0,reason:"service_not_running",skipProviderBreaker:!0}}let m=(b||"").toString(),n=k??(g?L(g):null),o=n?.maxBackoffSteps??e.EQ.maxLevel,q=new Set([d.gx.REQUEST_TIMEOUT,d.gx.RATE_LIMITED,d.gx.SERVER_ERROR,d.gx.BAD_GATEWAY,d.gx.SERVICE_UNAVAILABLE,d.gx.GATEWAY_TIMEOUT]);function r(){if(!n?.useUpstreamRetryHints)return null;let a=function(a){if(!a)return null;let b="function"==typeof a.get?a.get("retry-after"):a["retry-after"]||a["Retry-After"];if(b){let a=Number.parseInt(b,10);if(!Number.isNaN(a)&&String(a)===String(b).trim())return Date.now()+1e3*a;let c=new Date(b);if(!Number.isNaN(c.getTime()))return c.getTime()}let c="function"==typeof a.get?a.get("x-ratelimit-reset"):a["x-ratelimit-reset"]||a["X-RateLimit-Reset"];if(c){let a=Number.parseInt(c,10);if(!Number.isNaN(a))return a>1e10?a:1e3*a}return null}(j);if(a){let b=Math.max(a-Date.now(),0);if(b>0)return b}let b=ah(m);return b&&b>0?b:null}function s(a){let b=r();if("number"==typeof b&&b>0)return{shouldFallback:!0,cooldownMs:b,baseCooldownMs:b,newBackoffLevel:0,usedUpstreamRetryHint:!0,reason:a};let d=function(a=c){let b="number"==typeof n?.baseCooldownMs&&n.baseCooldownMs>=0?n.baseCooldownMs:e.Bm.transientInitial;return{baseCooldownMs:b,cooldownMs:T(b,a+1,o),newBackoffLevel:Math.min(a+1,o)}}(c);return{shouldFallback:!0,cooldownMs:d.cooldownMs,baseCooldownMs:d.baseCooldownMs,newBackoffLevel:d.newBackoffLevel,usedUpstreamRetryHint:!1,reason:a}}let t=a===d.gx.RATE_LIMITED,u=!g||"oauth"===(0,i.oQ)(g),v=!t||u;if(b){if(H(m))return{shouldFallback:!0,cooldownMs:31536e6,reason:d.QS.AUTH_ERROR,permanent:!0};if(v&&I(m))return{shouldFallback:!0,cooldownMs:e.Bm.paymentRequired??36e5,reason:d.QS.QUOTA_EXHAUSTED,creditsExhausted:!0};if(v&&am(m))return{shouldFallback:!0,cooldownMs:Math.min(al(),864e5),reason:d.QS.QUOTA_EXHAUSTED,dailyQuotaExhausted:!0};if(v&&!I(m)&&!am(m)&&aj(m.toLowerCase())){let a=r(),b=ah(m);return{shouldFallback:!0,cooldownMs:a??36e5,reason:d.QS.QUOTA_EXHAUSTED,usedUpstreamRetryHint:!!a,quotaResetHintMs:b??void 0}}let b=ah(m);if(v&&b&&ak(m)===d.QS.QUOTA_EXHAUSTED)return{...s(d.QS.QUOTA_EXHAUSTED),quotaResetHintMs:b};if(a===d.gx.FORBIDDEN&&m.toLowerCase().includes("not authorized for this route"))return{shouldFallback:!1,cooldownMs:0,reason:d.QS.UNKNOWN};if(a===d.gx.FORBIDDEN&&g&&"apikey"===(0,i.oQ)(g)&&!m.toLowerCase().includes("has not been used in project")&&!m.toLowerCase().includes("hour quota")&&!m.toLowerCase().includes("quota has been exceeded"))return s(d.QS.AUTH_ERROR)}if("gemini"===g&&a===d.gx.RATE_LIMITED&&f){if((0,p.Yj)(f))return s(d.QS.QUOTA_EXHAUSTED);if((0,p.ZO)(f))return s(d.QS.RATE_LIMIT_EXCEEDED)}let w=t&&!u?(0,e.UJ)(a):(0,e.lR)(a,m);if(w){if(w.backoff){let b=g?function(a,b,c,d){if(!a)return null;let e=h.get(a.toLowerCase());if(!e)return null;let f=c?"function"==typeof c.get?Object.fromEntries(c.entries()):Object.fromEntries(Object.entries(c).map(([a,b])=>[a.toLowerCase(),b])):{};for(let a of e){let c=a.match({status:b,headers:f,body:d});if(c)return c}return null}(g,a,j,l??null):null;return s(b?b.reason:w.reason??d.QS.UNKNOWN)}let b=w.cooldownMs??0;return{shouldFallback:!0,cooldownMs:b,baseCooldownMs:b,reason:w.reason??d.QS.UNKNOWN}}if(a===d.gx.NOT_ACCEPTABLE||q.has(a))return s(d.QS.SERVER_ERROR);if(a===d.gx.BAD_REQUEST){let a="string"==typeof l?.code?l.code.toLowerCase():"",b="string"==typeof l?.type?l.type.toLowerCase():"",c=!D.some(a=>a.test(m))&&C.some(a=>a.test(m)),e=!!l&&(z.has(a)||A.has(b)||B.has(b)&&c),f=y.some(a=>a.test(m)),g=E.some(a=>a.test(m)),h=G.some(a=>a.test(m));return f||g||h||e||c?{shouldFallback:!0,cooldownMs:0,reason:d.QS.MODEL_CAPACITY}:F.some(a=>a.test(m))?s(d.QS.RATE_LIMIT_EXCEEDED):{shouldFallback:!1,cooldownMs:0,reason:d.QS.UNKNOWN}}return{shouldFallback:!0,cooldownMs:n?.baseCooldownMs??e.Bm.transient,baseCooldownMs:n?.baseCooldownMs??e.Bm.transient,reason:d.QS.UNKNOWN}}function ao(a){if(!a)return"";let b=new Date(a).getTime()-Date.now();if(b<=0)return"reset after 0s";let c=Math.ceil(b/1e3),d=Math.floor(c/3600),e=Math.floor(c%3600/60),f=c%60,g=[];return d>0&&g.push(`${d}h`),e>0&&g.push(`${e}m`),(f>0||0===g.length)&&g.push(`${f}s`),`reset after ${g.join(" ")}`}},15300:(a,b,c)=>{c.d(b,{qF:()=>e});let d={getStatus:()=>({state:"CLOSED"}),reset:()=>{},recordFailure:()=>{},recordSuccess:()=>{}},e=()=>d},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}}}},21968:(a,b,c)=>{c.d(b,{M$:()=>f,dv:()=>g});let d="antigravity";function e(a){let b=String(a||"").trim().toLowerCase().replace(/^antigravity\//,""),c=b.indexOf("/"),d=c>=0?b.slice(c+1):b;return d.startsWith("gemini-")||d.includes("/gemini-")||d.includes("gemini")?"gemini":d.startsWith("claude-")||d.startsWith("cloud-")||d.includes("/claude-")||d.includes("/cloud-")||d.includes("anthropic")?"claude":"other"}function f(a,b){if(!b)return null;if(a!==d)return b;let c=e(b);return"other"===c?b:`family:${c}`}function g(a,b){return a!==d||"other"===e(b)?"model":"family"}},50102:(a,b,c)=>{c.d(b,{TR:()=>e,aD:()=>d,xv:()=>f});let d={providerCooldown:{enabled:!1,minRetryCooldownMs:1e3,maxRetryCooldownMs:6e4},requestQueue:{enabled:!1},comboCooldownWait:{enabled:!1,budgetMs:0,maxAttempts:1},quotaShareConcurrencyLimit:{enabled:!1},quotaPreflight:{enabled:!1},streamRecovery:{enabled:!1,continueMidStream:!1},connectionCooldown:{oauth:{baseCooldownMs:1e3,useUpstreamRetryHints:!0,useUpstream429BreakerHints:!0,maxBackoffSteps:5},apikey:{baseCooldownMs:1e3,useUpstreamRetryHints:!0,useUpstream429BreakerHints:!0,maxBackoffSteps:5}},providerBreaker:{oauth:{failureThreshold:5,resetTimeoutMs:3e4,degradationThreshold:.5},apikey:{failureThreshold:5,resetTimeoutMs:3e4,degradationThreshold:.5}}},e=()=>!1,f=a=>d},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)},77868:(a,b,c)=>{c.d(b,{Sy:()=>e});let d={enabled:!1,errorCodes:[],baseCooldownMs:3e4,useExponentialBackoff:!1,maxCooldownMs:3e5},e=()=>d},80238:(a,b,c)=>{c.d(b,{Pt:()=>v,Tn:()=>C,Tr:()=>w,c1:()=>s,kI:()=>x,vk:()=>u});var d=c(89718),e=c(16945),f=c(10254),g=c(3662),h=c(40615),i=c(77598),j=c(30184);let k=new Map,l=new Set,m="modelLock_",n="modelLock___all";function o(a,b){let c=a[b?`${m}${b}`:n]||a[n];return!!c&&new Date(c).getTime()>Date.now()}function p(a){if(!a)return null;let b=null,c=Date.now();for(let[d,e]of Object.entries(a)){if(!d.startsWith(m)||!e)continue;let a=new Date(e).getTime();a<=c||(!b||a<b)&&(b=a)}return b?new Date(b).toISOString():null}async function q(){try{let a=await (0,d.getProviderConnections)({provider:"cloudflare-ai"}),b=new Date().toISOString(),c=a.filter(a=>{let c=a.providerSpecificData||{};return!0===c.cloudflareQuotaDisabled&&c.cloudflareReEnableAt&&c.cloudflareReEnableAt<=b});if(0===c.length)return;for(let a of c){let b={...a.providerSpecificData||{}};delete b.cloudflareQuotaDisabled,delete b.cloudflareReEnableAt,await (0,d.updateProviderConnection)(a.id,{isActive:!0,providerSpecificData:b});let c=a.displayName||a.name||a.email||a.id.slice(0,8);j.info("AUTH",`[CLOUDFLARE] Re-enabled ${c} — daily quota cooldown expired (was disabled until ${a.providerSpecificData?.cloudflareReEnableAt})`)}}catch(a){j.warn("AUTH",`[CLOUDFLARE] re-enable check failed: ${a.message}`)}}async function r(){try{let a=await (0,d.getProviderConnections)({}),b=new Date().toISOString(),c=a.filter(a=>{let c=a.providerSpecificData||{};return!0===c.siliconflowBusyDisabled&&c.siliconflowReEnableAt&&c.siliconflowReEnableAt<=b});if(0===c.length)return;for(let a of c){let b={...a.providerSpecificData||{}};delete b.siliconflowBusyDisabled,delete b.siliconflowReEnableAt,await (0,d.updateProviderConnection)(a.id,{isActive:!0,providerSpecificData:b});let c=a.displayName||a.name||a.email||a.id.slice(0,8);j.info("AUTH",`[SILICONFLOW] Re-enabled ${c} — server busy cooldown expired (was disabled until ${a.providerSpecificData?.siliconflowReEnableAt})`)}}catch(a){j.warn("AUTH",`[SILICONFLOW] re-enable check failed: ${a.message}`)}}async function s(a,b=null,c=null,g={}){let i,l=b instanceof Set?b:b?new Set([b]):new Set,m=g?.preferredConnectionId||null,n=g?.allowRateLimited===!0,t=(0,h.rs)(a),u=k.get(t)||Promise.resolve(),v=new Promise(a=>{i=a});k.set(t,v);try{let b;if(await u,"cloudflare-ai"===t&&await q(),("siliconflow"===t||"string"==typeof t&&t.startsWith("openai-compatible-"))&&await r(),h.IS[t]?.noAuth){let a=((await (0,d.getSettings)()).providerStrategies||{})[t]||{},b=await (0,e.B)({proxyPoolId:a.proxyPoolId||""});return{id:"noauth",connectionName:"Public",isActive:!0,accessToken:"public",providerSpecificData:{connectionProxyEnabled:b.connectionProxyEnabled,connectionProxyUrl:b.connectionProxyUrl,connectionNoProxy:b.connectionNoProxy,connectionProxyPoolId:b.proxyPoolId||null,vercelRelayUrl:b.vercelRelayUrl||"",strictProxy:!0===b.strictProxy}}}let g=await (0,d.getProviderConnections)({provider:t,isActive:!0});if(j.debug("AUTH",`${a} | total connections: ${g.length}, excludeIds: ${l.size>0?[...l].join(","):"none"}, model: ${c||"any"}`),0===g.length)return j.warn("AUTH",`No credentials for ${a}`),null;let i=g.filter(a=>!(l.has(a.id)||o(a,c)));if(j.debug("AUTH",`${a} | available: ${i.length}/${g.length}`),g.forEach(a=>{let b=l.has(a.id),d=o(a,c);if(b||d){let e=p(a);j.debug("AUTH",` → ${a.id?.slice(0,8)} | ${b?"excluded":""} ${d?`modelLocked(${c}) until ${e}`:""}`)}}),0===i.length){if(n){let b=g.filter(a=>!l.has(a.id)&&o(a,c));if(b.length>0){b.sort((a,b)=>{let c=new Date(p(a)||0).getTime(),d=new Date(p(b)||0).getTime();return c-d});let c=b[0],d=c.displayName||c.name||c.email||c.id?.slice(0,8),g=p(c);j.warn("AUTH",`[FALLBACK-EMERGENCY] ${a} | all accounts locked — using ${d} (lock expires ${(0,f.Qo)(g)})`);let h=await (0,e.B)(c.providerSpecificData||{});return{authType:c.authType,apiKey:c.apiKey,accessToken:c.accessToken,refreshToken:c.refreshToken,idToken:c.idToken,expiresAt:c.expiresAt,expiresIn:c.expiresIn,lastRefreshAt:c.lastRefreshAt,projectId:c.projectId,connectionName:d,copilotToken:c.providerSpecificData?.copilotToken,providerSpecificData:{...c.providerSpecificData||{},connectionProxyEnabled:h.connectionProxyEnabled,connectionProxyUrl:h.connectionProxyUrl,connectionNoProxy:h.connectionNoProxy,connectionProxyPoolId:h.proxyPoolId||null,vercelRelayUrl:h.vercelRelayUrl||"",strictProxy:!0===h.strictProxy},connectionId:c.id,testStatus:c.testStatus,lastError:c.lastError,_connection:c,emergencyFallback:!0}}}let b=g.filter(a=>o(a,c)),d=b.map(a=>p(a)).filter(Boolean).sort()[0]||null;if(d){let e=b[0];return j.warn("AUTH",`${a} | all ${g.length} accounts locked for ${c||"all"} (${(0,f.Qo)(d)}) | lastError=${e?.lastError?.slice(0,50)}`),{allRateLimited:!0,retryAfter:d,retryAfterHuman:(0,f.Qo)(d),lastError:e?.lastError||null,lastErrorCode:e?.errorCode||null}}return j.warn("AUTH",`${a} | all ${g.length} accounts unavailable`),null}let k=await (0,d.getSettings)(),s=(k.providerStrategies||{})[t]||{},v=s.fallbackStrategy||k.fallbackStrategy||"fill-first";if(m&&(b=i.find(a=>a.id===m))&&j.info("AUTH",`${a} | pinned to ${b.id?.slice(0,8)} (${b.name||b.email||"unnamed"})`),b);else if("round-robin"===v){let a=s.stickyRoundRobinLimit||k.stickyRoundRobinLimit||3,c=[...i].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(b.lastUsedAt)-new Date(a.lastUsedAt):-1:1:(a.priority||999)-(b.priority||999))[0],e=c?.consecutiveUseCount||0;c&&c.lastUsedAt&&e<a?(b=c,await (0,d.updateProviderConnection)(b.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:(b.consecutiveUseCount||0)+1})):(b=[...i].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(a.lastUsedAt)-new Date(b.lastUsedAt):1:-1:(a.priority||999)-(b.priority||999))[0],await (0,d.updateProviderConnection)(b.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:1}))}else b=i[0];let w=await (0,e.B)(b.providerSpecificData||{});return{authType:b.authType,apiKey:b.apiKey,accessToken:b.accessToken,refreshToken:b.refreshToken,idToken:b.idToken,expiresAt:b.expiresAt,expiresIn:b.expiresIn,lastRefreshAt:b.lastRefreshAt,projectId:b.projectId,connectionName:b.displayName||b.name||b.email||b.id,copilotToken:b.providerSpecificData?.copilotToken,providerSpecificData:{...b.providerSpecificData||{},connectionProxyEnabled:w.connectionProxyEnabled,connectionProxyUrl:w.connectionProxyUrl,connectionNoProxy:w.connectionNoProxy,connectionProxyPoolId:w.proxyPoolId||null,vercelRelayUrl:w.vercelRelayUrl||"",strictProxy:!0===w.strictProxy},connectionId:b.id,testStatus:b.testStatus,lastError:b.lastError,_connection:b}}finally{i&&i(),k.get(t)===v&&k.delete(t)}}async function t(a,b){if(!l.has(b)){l.add(b);try{let[c,e]=await Promise.all([(0,d.CK)(a),(0,d.getProviderConnections)({provider:a,isActive:!0})]);if(!c)return;let f=e.map(a=>a.apiKey).filter(Boolean),g=await (0,d.Ax)(a,1,f);if(!g.length){j.warn("AUTH",`[POOL] pool empty for ${a}, cannot auto-replace`),await (0,d.updateProviderConnection)(b,{isActive:!1});return}let h=e.find(a=>a.providerSpecificData?.baseUrl)?.providerSpecificData||null,i=await (0,d.q5)(a,g,f,h);0===i&&j.warn("AUTH",`[POOL] replacement key already in connections for ${a}`),await (0,d.updateProviderConnection)(b,{isActive:!1}),j.info("AUTH",`[POOL] auto-replaced key for ${a} (created=${i})`)}catch(a){j.warn("AUTH",`[POOL] auto-replace failed: ${a.message}`)}finally{l.delete(b)}}}async function u(a,b,c,e=null,h=null,i=null){var k;let l,o,p;if(!a||"noauth"===a)return{shouldFallback:!1,cooldownMs:0};let q=await (0,d.getProviderConnections)({provider:e}),r=q.find(b=>b.id===a),s=r?.backoffLevel||0;if(i&&i>Date.now()?(l=!0,o=Math.min(i-Date.now(),g.fh),p=0):{shouldFallback:l,cooldownMs:o,newBackoffLevel:p}=(0,f.hk)(b,c,s),!l)return{shouldFallback:!1,cooldownMs:0};let v="string"==typeof c?c.slice(0,100):"Provider error";if("cloudflare-ai"===e&&"string"==typeof c&&c.toLowerCase().includes("used up your daily free allocation")){let c,e,f=((e=new Date(Date.UTC((c=new Date).getUTCFullYear(),c.getUTCMonth(),c.getUTCDate(),0,10,0,0))).getTime()<=c.getTime()&&e.setUTCDate(e.getUTCDate()+1),e.toISOString()),g={...r?.providerSpecificData||{},cloudflareQuotaDisabled:!0,cloudflareReEnableAt:f};await (0,d.updateProviderConnection)(a,{isActive:!1,providerSpecificData:g,testStatus:"unavailable",lastError:v,errorCode:b,lastErrorAt:new Date().toISOString()});let h=r?.displayName||r?.name||r?.email||a.slice(0,8);return j.warn("AUTH",`[CLOUDFLARE] ${h} disabled due to daily quota exhaustion — will re-enable at ${f}`),console.error(`❌ cloudflare-ai [${b}]: Daily quota exhausted — disabled until ${f}`),{shouldFallback:!0,cooldownMs:0}}let w=(r?.providerSpecificData?.baseUrl||"").toLowerCase();if(("siliconflow"===e||"string"==typeof e&&e.startsWith("openai-compatible-")&&w.includes("siliconflow"))&&"string"==typeof c&&c.toLowerCase().includes("system is really busy")){let a=new Date(Date.now()+6e5).toISOString();for(let c of q){let e={...c.providerSpecificData||{},siliconflowBusyDisabled:!0,siliconflowReEnableAt:a};await (0,d.updateProviderConnection)(c.id,{isActive:!1,providerSpecificData:e,testStatus:"unavailable",lastError:v,errorCode:b,lastErrorAt:new Date().toISOString()})}return j.warn("AUTH",`[SILICONFLOW] Disabled ${q.length} connection(s) due to server busy (503) — will re-enable at ${a}`),console.error(`❌ siliconflow [${b}]: System busy — disabled ${q.length} connection(s) until ${a}`),{shouldFallback:!0,cooldownMs:0}}let x=(k=o,{[h?`${m}${h}`:n]:new Date(Date.now()+k).toISOString()});await (0,d.updateProviderConnection)(a,{...x,testStatus:"unavailable",lastError:v,errorCode:b,lastErrorAt:new Date().toISOString(),backoffLevel:p??s});let y=Object.keys(x)[0],z=r?.displayName||r?.name||r?.email||a.slice(0,8);return j.warn("AUTH",`${z} locked ${y} for ${Math.round(o/1e3)}s [${b}]`),e&&b&&v&&console.error(`❌ ${e} [${b}]: ${v}`),(400===b||402===b||403===b)&&e&&(g.eq.some(a=>v.toLowerCase().includes(a))?t(e,a).catch(()=>{}):403===b&&j.warn("AUTH",`[POOL] 403 received but no quota pattern matched — reason: "${v.slice(0,80)}"`)),{shouldFallback:!0,cooldownMs:o}}async function v(a,b,c=null){if(!a||"noauth"===a)return;let e=b._connection||b,f=Date.now(),g=Object.keys(e).filter(a=>a.startsWith("modelLock_"));if(!e.testStatus&&!e.lastError&&0===g.length)return;let h=g.filter(a=>{if(c&&a===`modelLock_${c}`||c&&"modelLock___all"===a)return!0;let b=e[a];return b&&new Date(b).getTime()<=f});if(0===h.length&&"unavailable"!==e.testStatus&&!e.lastError)return;let i=g.filter(a=>{if(h.includes(a))return!1;let b=e[a];return b&&new Date(b).getTime()>f}),j=Object.fromEntries(h.map(a=>[a,null]));0===i.length&&Object.assign(j,{testStatus:"active",lastError:null,lastErrorAt:null,backoffLevel:0}),await (0,d.updateProviderConnection)(a,j)}function w(a){let b=a.headers.get("Authorization");if(b?.startsWith("Bearer "))return b.slice(7);let c=a.headers.get("x-api-key");return c||null}async function x(a){return!!a&&await (0,d.ek)(a)}function y(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}function z(a,b){if(!a)return null;if("function"==typeof a.get){let c=a.get(b)||a.get(b.toLowerCase());return"string"==typeof c&&c.trim().length>0?c.trim():null}let c=a[b]||a[b.toLowerCase()]||a[b.toUpperCase()];return Array.isArray(c)?"string"==typeof c[0]&&c[0].trim().length>0?c[0].trim():null:"string"==typeof c&&c.trim().length>0?c.trim():null}function A(a,b){if("string"!=typeof a||0===a.trim().length)return null;let c=a.trim();return c.length<=180&&/^[A-Za-z0-9._:-]+$/.test(c)?`${b}:${c}`:`${b}:sha256:${(0,i.createHash)("sha256").update(c).digest("hex")}`}function B(a){if("string"==typeof a)return a;if(Array.isArray(a)){let b=a.map(a=>{if("string"==typeof a)return a;let b=y(a);return"string"==typeof b.text?b.text:"string"==typeof b.content?b.content:null}).filter(Boolean);return b.length>0?b.join("\n"):JSON.stringify(a)}return a&&"object"==typeof a?JSON.stringify(a):null}function C(a,b){let c=A(z(b,"x-codex-session-id")??z(b,"x-session-id")??z(b,"x-omniroute-session"),"header");if(c)return c;let d=y(a),e=y(d.metadata),f=A(e.session_id,"metadata")??A(e.sessionId,"metadata")??A(d.conversation_id,"conversation")??A(d.session_id,"session")??A(d.prompt_cache_key,"prompt-cache");if(f)return f;let g=function(a){let b=y(a);if(void 0!==b.input){if("string"==typeof b.input)return b.input;if(Array.isArray(b.input))for(let a of b.input){let b=B(y(a).content??a);if(b&&b.trim().length>0)return b}let a=B(b.input);if(a&&a.trim().length>0)return a}if(Array.isArray(b.messages)){let a=b.messages.find(a=>"user"===y(a).role)??b.messages[0],c=B(y(a).content??a);if(c&&c.trim().length>0)return c}return null}(a);return g&&0!==g.trim().length?`input:sha256:${(0,i.createHash)("sha256").update(g.slice(0,4096)).digest("hex")}`:null}}};
1
+ "use strict";exports.id=238,exports.ids=[238,1998],exports.modules={5483:(a,b,c)=>{c.d(b,{Gz:()=>m,Yj:()=>j,ZO:()=>l});let d=JSON.parse('{"gemini-2.5-flash":{"rpm":5,"rpd":20,"tpm":250000},"gemini-2.5-pro":{"rpm":0,"rpd":0,"tpm":0},"gemini-2-flash":{"rpm":0,"rpd":0,"tpm":0},"gemini-2-flash-lite":{"rpm":0,"rpd":0,"tpm":0},"gemini-2.5-flash-tts":{"rpm":3,"rpd":10,"tpm":10000},"gemini-2.5-pro-tts":{"rpm":0,"rpd":0,"tpm":0},"imagen-4-generate":{"rpm":-1,"rpd":25,"tpm":-1},"imagen-4-ultra-generate":{"rpm":-1,"rpd":25,"tpm":-1},"imagen-4-fast-generate":{"rpm":-1,"rpd":25,"tpm":-1},"gemma-4-26b-it":{"rpm":15,"rpd":1500,"tpm":-1},"gemma-4-31b-it":{"rpm":15,"rpd":1500,"tpm":-1},"gemini-embedding-exp-03-07":{"rpm":100,"rpd":1000,"tpm":30000},"gemini-3.5-flash":{"rpm":5,"rpd":20,"tpm":250000},"gemini-3.1-flash-lite":{"rpm":15,"rpd":500,"tpm":250000},"gemini-3.1-pro":{"rpm":0,"rpd":0,"tpm":0},"gemini-2.5-flash-lite":{"rpm":10,"rpd":20,"tpm":250000},"nano-banana-gemini-2.5-flash-preview-image":{"rpm":0,"rpd":0,"tpm":0},"nano-banana-pro-gemini-3-pro-image":{"rpm":0,"rpd":0,"tpm":0},"nano-banana-2-gemini-3.1-flash-image":{"rpm":0,"rpd":0,"tpm":0},"lyria-3-clip":{"rpm":0,"rpd":0,"tpm":0},"lyria-3-pro":{"rpm":0,"rpd":0,"tpm":0},"veo-3-generate":{"rpm":0,"rpd":0,"tpm":-1},"veo-3-fast-generate":{"rpm":0,"rpd":0,"tpm":-1},"veo-3-lite-generate":{"rpm":0,"rpd":0,"tpm":-1},"gemini-3.1-flash-tts":{"rpm":3,"rpd":10,"tpm":10000},"gemini-robotics-er-1.5-preview":{"rpm":10,"rpd":20,"tpm":250000},"gemini-robotics-er-1.6-preview":{"rpm":5,"rpd":20,"tpm":250000},"computer-use-preview":{"rpm":0,"rpd":0,"tpm":0},"gemini-embedding-exp-04-07":{"rpm":100,"rpd":1000,"tpm":30000},"gemini-3.5-live-translate":{"rpm":-1,"rpd":-1,"tpm":20000},"gemini-2.5-flash-native-audio-dialog":{"rpm":-1,"rpd":-1,"tpm":1000000},"gemini-3-flash-live":{"rpm":-1,"rpd":-1,"tpm":65000}}'),e=new Map,f=new Map;function g(){return new Date().toISOString().slice(0,10)}function h(a){return a.replace(/^gemini\//,"").trim()}function i(a,b){if(!a)return 0;let c=h(a),e=d[c];if(!e){for(let[a,e]of Object.entries(d))if(c.endsWith(a)||a.endsWith(c)){let a=e[b];return"number"==typeof a&&a>0?a:0}return 0}let f=e[b];return"number"==typeof f&&f>0?f:0}function j(a){let b=i(a,"rpd");return!(b<=0)&&function(a){if(!a)return 0;let b=h(a),c=g(),d=e.get(b);return d&&d.date===c?d.count:0}(a)>=b}function k(a){let b=Date.now()-6e4,c=f.get(a);if(!c)return;let d=0;for(;d<c.length&&c[d]<b;)d++;d>0&&f.set(a,c.slice(d))}function l(a){let b=i(a,"rpm");return!(b<=0)&&function(a){if(!a)return 0;let b=h(a);return k(b),f.get(b)?.length??0}(a)>=b}function m(a){!function(a){if(!a)return;let b=h(a),c=g(),d=e.get(b);d&&d.date===c?d.count++:e.set(b,{date:c,count:1})}(a),function(a){if(!a)return;let b=h(a);k(b);let c=f.get(b)??[];c.push(Date.now()),f.set(b,c)}(a)}},10254:(a,b,c)=>{c.d(b,{hk:()=>an,w7:()=>ak,M$:()=>_,lB:()=>aa,Qo:()=>ao,ls:()=>ac,LN:()=>M,DZ:()=>Z,K7:()=>H,M1:()=>I,xs:()=>am,qw:()=>ab,me:()=>J,je:()=>af,v6:()=>ae,R7:()=>W,CY:()=>$,Ks:()=>ag,E$:()=>Y,p8:()=>ad,pX:()=>X});var d=c(61408),e=c(3662);function f(){return[{id:"opencode-quota-exhausted-headers",match:({status:a,headers:b})=>429!==a?null:"0"===b["x-ratelimit-remaining-requests"]||"0"===b["x-ratelimit-remaining-tokens"]?{reason:"quota_exhausted",scope:"provider"}:null},{id:"opencode-quota-exhausted-body",match:({status:a,body:b})=>{if(429!==a)return null;let c=JSON.stringify(b??"").toLowerCase();return c.includes("organization_quota_exceeded")||c.includes("account_quota_exceeded")||c.includes("plan_limit_reached")?{reason:"quota_exhausted",scope:"provider"}:null}}]}function g(){return[{id:"minimax-per-model-quota",match:({status:a,headers:b})=>{if(429!==a)return null;let c=b["x-model-quota-remaining"];return c&&c.split(",").some(a=>a.split("=")[1]?.trim()==="0")?{reason:"quota_exhausted",scope:"model"}:null}}]}let h=new Map([["opencode",f()],["opencode-go",f()],["opencode-cli",f()],["minimax",g()],["minimax-passthrough",g()]]);var i=c(36081),j=c(50102),k=c(77868),l=c(15300),m=c(40615),n=c(37664),o=c(21968),p=c(5483);function q(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}let r=new Set([408,429,500,502,503,504]),s=new Map,t=setInterval(()=>{let a=Date.now();for(let[b,c]of s)a-c>5e3&&s.delete(b)},6e4);"object"==typeof t&&"unref"in t&&t.unref?.();let u=["account_deactivated","account has been deactivated","account has been disabled","your account has been suspended","this account is deactivated","verify your account to continue","this service has been disabled in this account for violation","this service has been disabled in this account"],v=[],w=["insufficient_quota","billing_hard_limit_reached","exceeded your current quota","exceeded your current usage quota","credit_balance_too_low","your credit balance is too low","credits exhausted","out of credits","payment required","free tier of the model has been exhausted","insufficient balance","insufficient_balance","insufficient account balance"],x=["invalid authentication credentials","oauth 2","login cookie","valid authentication credential","invalid credentials"],y=[/\binput is too long\b/i,/\binput too long\b/i,/\bcontext.*(too long|exceeded|overflow|limit)/i,/\btoo many tokens\b/i,/\bprompt is too long\b/i,/\bcontext window/i,/\bmaximum context/i,/\bmax.*token/i,/\btoken limit/i,/\brequest too large\b/i],z=new Set(["model_not_found","deployment_not_found"]),A=new Set(["not_found_error"]),B=new Set(["permission_error"]),C=[/\binvalid model\b/i,/\bmodel.*not.*(?:available|found|supported|accessible)\b/i,/\bmodel.*(?:does not exist|doesn't exist)\b/i,/\baccess.*denied.*model\b/i,/\bmodel.*access.*denied\b/i,/\bplease select a different model\b/i,/\b(?:access|permission)[\s\S]{0,60}?\bmodel\b/i,/\bmodel[\s\S]{0,60}?\b(?:access|permission)\b/i],D=[/\b(?:invalid|incorrect|expired|missing|revoked)\s+api[\s_-]?key\b/i,/\bapi[\s_-]?key\s+(?:is\s+)?(?:invalid|incorrect|expired|missing|revoked|not\s+valid)\b/i,/\bauthentication\s+(?:failed|error|required)\b/i,/\b(?:invalid|expired|missing|revoked)\s+(?:token|credentials?|bearer)\b/i,/\bunauthorized\b/i,/\bnot\s+authenticated\b/i],E=[/\bimproperly formed request\b/i,/\binvalid.*message.*format/i,/\bmessages must alternate\b/i,/\bempty (message|content)\b/i,/\bfunction'?s? name (?:can't|can not|is|has) (?:blank|empty|missing)/i,/function.*name.*(?:blank|empty|missing)/i,/tool_call.*name.*(?:blank|empty|missing)/i],F=[/high.?frequency/i,/non-compliant/i,/too many requests/i,/rate.?limit/i,/频繁/,/频率/],G=[/max_tokens.*illegal/i,/max_tokens.*must be/i,/max_tokens.*range/i,/parameter is illegal/i,/is illegal.*range/i];function H(a){let b=String(a||"").toLowerCase();return(0===v.length?u:[...u,...v]).some(a=>b.includes(a))}function I(a){let b=String(a||"").toLowerCase();return!!w.some(a=>b.includes(a))||b.includes("insufficient")&&b.includes("balance")}function J(a){let b=String(a||"").toLowerCase();return x.some(a=>b.includes(a))}function K(a,b){let c=b?(0,j.xv)(b):j.aD,e=c.connectionCooldown[a],f=c.providerBreaker[a];return{baseCooldownMs:e.baseCooldownMs,useUpstreamRetryHints:e.useUpstreamRetryHints,useUpstream429BreakerHints:e.useUpstream429BreakerHints,maxCooldownMs:(0,k.Sy)(b).maxCooldownMs,maxBackoffSteps:e.maxBackoffSteps,failureThreshold:f.failureThreshold,resetTimeoutMs:f.resetTimeoutMs,transientCooldown:e.baseCooldownMs,rateLimitCooldown:e.useUpstreamRetryHints?0:e.baseCooldownMs,maxBackoffLevel:e.maxBackoffSteps,circuitBreakerThreshold:f.failureThreshold,circuitBreakerReset:f.resetTimeoutMs,degradationThreshold:f.degradationThreshold,providerFailureThreshold:d.xx[a].providerFailureThreshold,providerFailureWindowMs:d.xx[a].providerFailureWindowMs,maxBackoffMultiplier:d.xx[a].maxBackoffMultiplier,backoffEscalationCount:d.xx[a].backoffEscalationCount,providerCooldownMs:d.xx[a].providerCooldownMs}}function L(a){return K((0,i.oQ)(a))}async function M(a){try{let{getCachedSettings:b}=await c.e(4046).then(c.bind(c,14046)),d=await b(),e=(0,i.oQ)(a||"");return K(e,d)}catch{return L(a||"")}}let N=new Map,O=new Map,P=new Map;function Q(a){let b=P.get(a);return b||(b=(0,m.rs)(a),P.set(a,b)),b}function R(a,b,c){let d=Q(a),e="codex"===d?(0,n.t6)(c):(0,o.M$)(d,c)||c;return`${d}:${b}:${e}`}function S(a,b=Date.now()){let c=N.get(a);c&&b>c.until&&N.delete(a);let d=O.get(a);!d||b-d.lastFailureAt<=d.resetAfterMs+(d.lastCooldownMs??0)||N.has(a)||O.delete(a)}function T(a,b,c=e.EQ.maxLevel){return(Number.isFinite(a)&&a>0?a:1e3)*Math.pow(2,Math.min(Math.max(0,b-1),Math.max(0,c)))}let U=null;function V(){if(!U)try{U=setInterval(()=>{let a=Date.now();for(let b of N.keys())S(b,a);for(let b of O.keys())S(b,a)},15e3),"object"==typeof U&&"unref"in U&&U.unref?.()}catch{}}function W(a,b,c,d,e,f={}){if(!c)return;V();let g=R(a,b,c);S(g);let h=Date.now()+e,i=N.get(g);if(i&&i.until>h){f.failureCount&&f.failureCount>i.failureCount&&(i.failureCount=f.failureCount,i.lastFailureAt=f.lastFailureAt??i.lastFailureAt,i.resetAfterMs=f.resetAfterMs??i.resetAfterMs,N.set(g,i));return}let j=Date.now();N.set(g,{reason:d,until:h,lockedAt:j,failureCount:f.failureCount??i?.failureCount??1,lastFailureAt:f.lastFailureAt??j,resetAfterMs:f.resetAfterMs??i?.resetAfterMs??0})}function X(a,b){return"number"==typeof a&&a>b.baseCooldownMs?a:b.useExponentialBackoff?0:b.baseCooldownMs}function Y(a,b,c,f,g,h,i=null,j={}){V();let k=R(a,b,c),l=Date.now();S(k,l),"quota_exhausted"===f&&"number"!=typeof j.exactCooldownMs&&(j={...j,exactCooldownMs:al()});let m=function(a=null,b=18e5){let c=a?.resetTimeoutMs;return"number"==typeof c&&c>0?c:b}(i),n=O.get(k),o=n&&l-n.lastFailureAt<=n.resetAfterMs+(n.lastCooldownMs??0)?n.failureCount+1:1,p=function(a,b,c=null){return Number.isFinite(b)&&b>0?b:"number"==typeof c?.baseCooldownMs&&c.baseCooldownMs>=0?c.baseCooldownMs:a===d.gx.RATE_LIMITED?function(a=0){return(0,e.KI)(a)}(0):e.Bm.transientInitial}(g,h,i),q="number"==typeof j.maxCooldownMs&&j.maxCooldownMs>0?j.maxCooldownMs:e.EQ.max,r="number"==typeof j.exactCooldownMs&&j.exactCooldownMs>0?j.exactCooldownMs:Math.min(T(p,o,i?.maxBackoffSteps??e.EQ.maxLevel),q);return O.set(k,{failureCount:o,lastFailureAt:l,resetAfterMs:m,lastCooldownMs:r}),W(a,b,c,f,r,{failureCount:o,lastFailureAt:l,resetAfterMs:m}),{cooldownMs:r,failureCount:o,resetAfterMs:m}}function Z(a,b=null,c){return"boolean"==typeof c?c:!!a&&(!!("codex"===Q(a)||"gemini"===a||"github"===a||(0,i.Fp)().has(a))||!!("string"==typeof a&&(a.startsWith("openai-compatible-")||a.startsWith("anthropic-compatible-"))))}function $(a,b,c,d,e,f){return!(!Z(a,c,f)||!c||function(a){let b=a?(0,l.qF)(a):null;return!!b&&!b.canExecute()}(a))&&(W(a,b,c,d,e),!0)}function _(a){return 429===a?"rate_limit":403===a?"quota_exhausted":"unknown"}function aa(a,b,c){let d=R(a,b,c),e=O.get(d);if(!e)return{cleared:!1,newFailureCount:0};let f=Math.floor(e.failureCount/2);return 0===f?(O.delete(d),{cleared:!0,newFailureCount:0}):(O.set(d,{...e,failureCount:f}),{cleared:!1,newFailureCount:f})}function ab(a,b,c){if(!c)return!1;let d=R(a,b,c);return S(d),!!N.get(d)}function ac(a,b,c){if(!c)return null;let d=R(a,b,c);S(d);let e=N.get(d);return e?{reason:e.reason,remainingMs:e.until-Date.now(),lockedAt:new Date(e.lockedAt).toISOString(),failureCount:e.failureCount}:null}function ad(a,b,c,d){if(!a)return;if(c){let b=`${a}:${c}`,d=Date.now(),e=s.get(b);if(e&&d-e<5e3)return;s.delete(b),s.set(b,d),function(){for(;s.size>1e4;){let a=s.keys().next().value;if("string"!=typeof a)return;s.delete(a)}}()}let e=function(a,b){if(!a)return null;let c={...L(a),...b};return c.useUpstream429BreakerHints,(0,l.qF)(a,{failureThreshold:c.failureThreshold??c.circuitBreakerThreshold,resetTimeout:c.resetTimeoutMs??c.circuitBreakerReset,...{},degradationThreshold:c.degradationThreshold,maxBackoffMultiplier:c.maxBackoffMultiplier,backoffEscalationCount:c.backoffEscalationCount})}(a,d);!e||e.canExecute()&&(e._onFailure(),e.canExecute()||b?.warn?.(`[ProviderFailure] ${a}: circuit breaker opened after repeated failures`))}function ae(a){return r.has(a)}function af(a){return!!a.creditsExhausted||!!a.dailyQuotaExhausted||a.reason===d.QS.QUOTA_EXHAUSTED}function ag(a){let b;try{b=q("string"==typeof a?JSON.parse(a):a)}catch{return{retryAfterMs:null,reason:d.QS.UNKNOWN}}if(0===Object.keys(b).length)return{retryAfterMs:null,reason:d.QS.UNKNOWN};let c=q(b.error),e=c.details||b.details||[];for(let a of Array.isArray(e)?e:[]){let b=q(a);if(b.retryDelay)return{retryAfterMs:function(a){if(!a)return null;let b=String(a).trim(),c=/^(\d+)\s*ms$/i.exec(b);if(c)return Number.parseInt(c[1],10);let d=/^(\d+)\s*s$/i.exec(b);if(d)return 1e3*Number.parseInt(d[1],10);let e=/^(\d+)\s*m$/i.exec(b);if(e)return 60*Number.parseInt(e[1],10)*1e3;let f=/^(\d+)\s*h$/i.exec(b);if(f)return 3600*Number.parseInt(f[1],10)*1e3;let g=Number.parseInt(b,10);return Number.isNaN(g)?null:1e3*g}(b.retryDelay),reason:d.QS.RATE_LIMIT_EXCEEDED}}let f=String(c.message||b.message||""),g=/retry\s+after\s+(\d+)\s*s/i.exec(f);if(g)return{retryAfterMs:1e3*Number.parseInt(g[1],10),reason:d.QS.RATE_LIMIT_EXCEEDED};let h=String(c.type||b.type||"");return"rate_limit_error"===h?{retryAfterMs:null,reason:d.QS.RATE_LIMIT_EXCEEDED}:{retryAfterMs:null,reason:ak(f||h)}}function ah(a){if(!a||"string"!=typeof a)return null;let b=String(a),c=/\b(?:try again at|wait until|reset(?:s)? at|available at|retry after)\s+(\d{4}-\d{2}-\d{2}[Tt ]\d{2}:\d{2}(?::\d{2})?(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})?)/i.exec(b);if(c){let a=Date.parse(c[1]);if(Number.isFinite(a)){let b=a-Date.now();if(b>0)return b}}let d=/reset after (\d+h)?(\d+m)?(\d+s)?/i.exec(b);if(d?.[1]||d?.[2]||d?.[3])return ai(d);let e=/will reset after (\d+h)?(\d+m)?(\d+s)?/i.exec(b);if(e?.[1]||e?.[2]||e?.[3])return ai(e);let f=/resets? in (\d+h)?(\d+m)?(\d+s)?/i.exec(b);return f?.[1]||f?.[2]||f?.[3]?ai(f):null}function ai(a){let b=0;return a[1]&&(b+=3600*Number.parseInt(a[1],10)*1e3),a[2]&&(b+=60*Number.parseInt(a[2],10)*1e3),a[3]&&(b+=1e3*Number.parseInt(a[3],10)),b>0?Math.min(b,2592e6):null}function aj(a){return a.includes("usage limit reached")||a.includes("usage limit has been")||a.includes("claude pro usage limit")||a.includes("you've reached your usage limit")||a.includes("you have reached your usage limit")}function ak(a){if(!a)return d.QS.UNKNOWN;let b=String(a).toLowerCase();if(b.includes("quota exceeded")||b.includes("quota depleted")||b.includes("quota will reset")||b.includes("your quota will reset")||b.includes("quota has been exceeded")||b.includes("hour quota")||b.includes("billing")||aj(b)||I(b))return d.QS.QUOTA_EXHAUSTED;if(H(b))return d.QS.AUTH_ERROR;let c=(0,e.Mh)(a);return c?.reason?c.reason:b.includes("rate_limit")?d.QS.RATE_LIMIT_EXCEEDED:b.includes("resource exhausted")||b.includes("high demand")?d.QS.MODEL_CAPACITY:b.includes("unauthorized")||b.includes("invalid api key")||b.includes("authentication")?d.QS.AUTH_ERROR:b.includes("server error")||b.includes("internal error")?d.QS.SERVER_ERROR:d.QS.UNKNOWN}function al(){let a=Date.now(),b=new Date(a);b.setDate(b.getDate()+1),b.setHours(0,0,0,0);let c=b.getTime()-a;return c>0&&c<=9e7?c:864e5}function am(a){if(!a)return!1;let b=a.toLowerCase();return b.includes("today's quota")||b.includes("daily quota")||b.includes("try again tomorrow")}function an(a,b,c=0,f=null,g=null,j=null,k=null,l){if(503===a&&j){let a="function"==typeof j.get?j.get("x-omni-fallback-hint"):j["x-omni-fallback-hint"]||j["X-Omni-Fallback-Hint"];if("string"==typeof a&&"connection_cooldown"===a.toLowerCase())return{shouldFallback:!0,cooldownMs:5e3,baseCooldownMs:5e3,newBackoffLevel:0,reason:"service_not_running",skipProviderBreaker:!0}}let m=(b||"").toString(),n=k??(g?L(g):null),o=n?.maxBackoffSteps??e.EQ.maxLevel,q=new Set([d.gx.REQUEST_TIMEOUT,d.gx.RATE_LIMITED,d.gx.SERVER_ERROR,d.gx.BAD_GATEWAY,d.gx.SERVICE_UNAVAILABLE,d.gx.GATEWAY_TIMEOUT]);function r(){if(!n?.useUpstreamRetryHints)return null;let a=function(a){if(!a)return null;let b="function"==typeof a.get?a.get("retry-after"):a["retry-after"]||a["Retry-After"];if(b){let a=Number.parseInt(b,10);if(!Number.isNaN(a)&&String(a)===String(b).trim())return Date.now()+1e3*a;let c=new Date(b);if(!Number.isNaN(c.getTime()))return c.getTime()}let c="function"==typeof a.get?a.get("x-ratelimit-reset"):a["x-ratelimit-reset"]||a["X-RateLimit-Reset"];if(c){let a=Number.parseInt(c,10);if(!Number.isNaN(a))return a>1e10?a:1e3*a}return null}(j);if(a){let b=Math.max(a-Date.now(),0);if(b>0)return b}let b=ah(m);return b&&b>0?b:null}function s(a){let b=r();if("number"==typeof b&&b>0)return{shouldFallback:!0,cooldownMs:b,baseCooldownMs:b,newBackoffLevel:0,usedUpstreamRetryHint:!0,reason:a};let d=function(a=c){let b="number"==typeof n?.baseCooldownMs&&n.baseCooldownMs>=0?n.baseCooldownMs:e.Bm.transientInitial;return{baseCooldownMs:b,cooldownMs:T(b,a+1,o),newBackoffLevel:Math.min(a+1,o)}}(c);return{shouldFallback:!0,cooldownMs:d.cooldownMs,baseCooldownMs:d.baseCooldownMs,newBackoffLevel:d.newBackoffLevel,usedUpstreamRetryHint:!1,reason:a}}let t=a===d.gx.RATE_LIMITED,u=!g||"oauth"===(0,i.oQ)(g),v=!t||u;if(b){if(H(m))return{shouldFallback:!0,cooldownMs:31536e6,reason:d.QS.AUTH_ERROR,permanent:!0};if(v&&I(m))return{shouldFallback:!0,cooldownMs:e.Bm.paymentRequired??36e5,reason:d.QS.QUOTA_EXHAUSTED,creditsExhausted:!0};if(v&&am(m))return{shouldFallback:!0,cooldownMs:Math.min(al(),864e5),reason:d.QS.QUOTA_EXHAUSTED,dailyQuotaExhausted:!0};if(v&&!I(m)&&!am(m)&&aj(m.toLowerCase())){let a=r(),b=ah(m);return{shouldFallback:!0,cooldownMs:a??36e5,reason:d.QS.QUOTA_EXHAUSTED,usedUpstreamRetryHint:!!a,quotaResetHintMs:b??void 0}}let b=ah(m);if(v&&b&&ak(m)===d.QS.QUOTA_EXHAUSTED)return{...s(d.QS.QUOTA_EXHAUSTED),quotaResetHintMs:b};if(a===d.gx.FORBIDDEN&&m.toLowerCase().includes("not authorized for this route"))return{shouldFallback:!1,cooldownMs:0,reason:d.QS.UNKNOWN};if(a===d.gx.FORBIDDEN&&g&&"apikey"===(0,i.oQ)(g)&&!m.toLowerCase().includes("has not been used in project")&&!m.toLowerCase().includes("hour quota")&&!m.toLowerCase().includes("quota has been exceeded"))return s(d.QS.AUTH_ERROR)}if("gemini"===g&&a===d.gx.RATE_LIMITED&&f){if((0,p.Yj)(f))return s(d.QS.QUOTA_EXHAUSTED);if((0,p.ZO)(f))return s(d.QS.RATE_LIMIT_EXCEEDED)}let w=t&&!u?(0,e.UJ)(a):(0,e.lR)(a,m);if(w){if(w.backoff){let b=g?function(a,b,c,d){if(!a)return null;let e=h.get(a.toLowerCase());if(!e)return null;let f=c?"function"==typeof c.get?Object.fromEntries(c.entries()):Object.fromEntries(Object.entries(c).map(([a,b])=>[a.toLowerCase(),b])):{};for(let a of e){let c=a.match({status:b,headers:f,body:d});if(c)return c}return null}(g,a,j,l??null):null;return s(b?b.reason:w.reason??d.QS.UNKNOWN)}let b=w.cooldownMs??0;return{shouldFallback:!0,cooldownMs:b,baseCooldownMs:b,reason:w.reason??d.QS.UNKNOWN}}if(a===d.gx.NOT_ACCEPTABLE||q.has(a))return s(d.QS.SERVER_ERROR);if(a===d.gx.BAD_REQUEST){let a="string"==typeof l?.code?l.code.toLowerCase():"",b="string"==typeof l?.type?l.type.toLowerCase():"",c=!D.some(a=>a.test(m))&&C.some(a=>a.test(m)),e=!!l&&(z.has(a)||A.has(b)||B.has(b)&&c),f=y.some(a=>a.test(m)),g=E.some(a=>a.test(m)),h=G.some(a=>a.test(m));return f||g||h||e||c?{shouldFallback:!0,cooldownMs:0,reason:d.QS.MODEL_CAPACITY}:F.some(a=>a.test(m))?s(d.QS.RATE_LIMIT_EXCEEDED):{shouldFallback:!1,cooldownMs:0,reason:d.QS.UNKNOWN}}return{shouldFallback:!0,cooldownMs:n?.baseCooldownMs??e.Bm.transient,baseCooldownMs:n?.baseCooldownMs??e.Bm.transient,reason:d.QS.UNKNOWN}}function ao(a){if(!a)return"";let b=new Date(a).getTime()-Date.now();if(b<=0)return"reset after 0s";let c=Math.ceil(b/1e3),d=Math.floor(c/3600),e=Math.floor(c%3600/60),f=c%60,g=[];return d>0&&g.push(`${d}h`),e>0&&g.push(`${e}m`),(f>0||0===g.length)&&g.push(`${f}s`),`reset after ${g.join(" ")}`}},15300:(a,b,c)=>{c.d(b,{qF:()=>e});let d={getStatus:()=>({state:"CLOSED"}),reset:()=>{},recordFailure:()=>{},recordSuccess:()=>{}},e=()=>d},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}}}},21968:(a,b,c)=>{c.d(b,{M$:()=>f,dv:()=>g});let d="antigravity";function e(a){let b=String(a||"").trim().toLowerCase().replace(/^antigravity\//,""),c=b.indexOf("/"),d=c>=0?b.slice(c+1):b;return d.startsWith("gemini-")||d.includes("/gemini-")||d.includes("gemini")?"gemini":d.startsWith("claude-")||d.startsWith("cloud-")||d.includes("/claude-")||d.includes("/cloud-")||d.includes("anthropic")?"claude":"other"}function f(a,b){if(!b)return null;if(a!==d)return b;let c=e(b);return"other"===c?b:`family:${c}`}function g(a,b){return a!==d||"other"===e(b)?"model":"family"}},50102:(a,b,c)=>{c.d(b,{TR:()=>e,aD:()=>d,xv:()=>f});let d={providerCooldown:{enabled:!1,minRetryCooldownMs:1e3,maxRetryCooldownMs:6e4},requestQueue:{enabled:!1},comboCooldownWait:{enabled:!1,budgetMs:0,maxAttempts:1},quotaShareConcurrencyLimit:{enabled:!1},quotaPreflight:{enabled:!1},streamRecovery:{enabled:!1,continueMidStream:!1},connectionCooldown:{oauth:{baseCooldownMs:1e3,useUpstreamRetryHints:!0,useUpstream429BreakerHints:!0,maxBackoffSteps:5},apikey:{baseCooldownMs:1e3,useUpstreamRetryHints:!0,useUpstream429BreakerHints:!0,maxBackoffSteps:5}},providerBreaker:{oauth:{failureThreshold:5,resetTimeoutMs:3e4,degradationThreshold:.5},apikey:{failureThreshold:5,resetTimeoutMs:3e4,degradationThreshold:.5}}},e=()=>!1,f=a=>d},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)},77868:(a,b,c)=>{c.d(b,{Sy:()=>e});let d={enabled:!1,errorCodes:[],baseCooldownMs:3e4,useExponentialBackoff:!1,maxCooldownMs:3e5},e=()=>d},80238:(a,b,c)=>{c.d(b,{OK:()=>z,Pt:()=>v,Tn:()=>E,Tr:()=>w,c1:()=>s,kI:()=>x,vk:()=>u});var d=c(89718),e=c(16945),f=c(10254),g=c(3662),h=c(40615),i=c(77598),j=c(30184);let k=new Map,l=new Set,m="modelLock_",n="modelLock___all";function o(a,b){let c=a[b?`${m}${b}`:n]||a[n];return!!c&&new Date(c).getTime()>Date.now()}function p(a){if(!a)return null;let b=null,c=Date.now();for(let[d,e]of Object.entries(a)){if(!d.startsWith(m)||!e)continue;let a=new Date(e).getTime();a<=c||(!b||a<b)&&(b=a)}return b?new Date(b).toISOString():null}async function q(){try{let a=await (0,d.getProviderConnections)({provider:"cloudflare-ai"}),b=new Date().toISOString(),c=a.filter(a=>{let c=a.providerSpecificData||{};return!0===c.cloudflareQuotaDisabled&&c.cloudflareReEnableAt&&c.cloudflareReEnableAt<=b});if(0===c.length)return;for(let a of c){let b={...a.providerSpecificData||{}};delete b.cloudflareQuotaDisabled,delete b.cloudflareReEnableAt,await (0,d.updateProviderConnection)(a.id,{isActive:!0,providerSpecificData:b});let c=a.displayName||a.name||a.email||a.id.slice(0,8);j.info("AUTH",`[CLOUDFLARE] Re-enabled ${c} — daily quota cooldown expired (was disabled until ${a.providerSpecificData?.cloudflareReEnableAt})`)}}catch(a){j.warn("AUTH",`[CLOUDFLARE] re-enable check failed: ${a.message}`)}}async function r(){try{let a=await (0,d.getProviderConnections)({}),b=new Date().toISOString(),c=a.filter(a=>{let c=a.providerSpecificData||{};return!0===c.siliconflowBusyDisabled&&c.siliconflowReEnableAt&&c.siliconflowReEnableAt<=b});if(0===c.length)return;for(let a of c){let b={...a.providerSpecificData||{}};delete b.siliconflowBusyDisabled,delete b.siliconflowReEnableAt,await (0,d.updateProviderConnection)(a.id,{isActive:!0,providerSpecificData:b});let c=a.displayName||a.name||a.email||a.id.slice(0,8);j.info("AUTH",`[SILICONFLOW] Re-enabled ${c} — server busy cooldown expired (was disabled until ${a.providerSpecificData?.siliconflowReEnableAt})`)}}catch(a){j.warn("AUTH",`[SILICONFLOW] re-enable check failed: ${a.message}`)}}async function s(a,b=null,c=null,g={}){let i,l=b instanceof Set?b:b?new Set([b]):new Set,m=g?.preferredConnectionId||null,n=g?.allowRateLimited===!0,t=(0,h.rs)(a),u=k.get(t)||Promise.resolve(),v=new Promise(a=>{i=a});k.set(t,v);try{let b;if(await u,"cloudflare-ai"===t&&await q(),("siliconflow"===t||"string"==typeof t&&t.startsWith("openai-compatible-"))&&await r(),h.IS[t]?.noAuth){let a=((await (0,d.getSettings)()).providerStrategies||{})[t]||{},b=await (0,e.B)({proxyPoolId:a.proxyPoolId||""});return{id:"noauth",connectionName:"Public",isActive:!0,accessToken:"public",providerSpecificData:{connectionProxyEnabled:b.connectionProxyEnabled,connectionProxyUrl:b.connectionProxyUrl,connectionNoProxy:b.connectionNoProxy,connectionProxyPoolId:b.proxyPoolId||null,vercelRelayUrl:b.vercelRelayUrl||"",strictProxy:!0===b.strictProxy}}}let g=await (0,d.getProviderConnections)({provider:t,isActive:!0});if(j.debug("AUTH",`${a} | total connections: ${g.length}, excludeIds: ${l.size>0?[...l].join(","):"none"}, model: ${c||"any"}`),0===g.length)return j.warn("AUTH",`No credentials for ${a}`),null;let i=g.filter(a=>!(l.has(a.id)||o(a,c)));if(j.debug("AUTH",`${a} | available: ${i.length}/${g.length}`),g.forEach(a=>{let b=l.has(a.id),d=o(a,c);if(b||d){let e=p(a);j.debug("AUTH",` → ${a.id?.slice(0,8)} | ${b?"excluded":""} ${d?`modelLocked(${c}) until ${e}`:""}`)}}),0===i.length){if(n){let b=g.filter(a=>!l.has(a.id)&&o(a,c));if(b.length>0){b.sort((a,b)=>{let c=new Date(p(a)||0).getTime(),d=new Date(p(b)||0).getTime();return c-d});let c=b[0],d=c.displayName||c.name||c.email||c.id?.slice(0,8),g=p(c);j.warn("AUTH",`[FALLBACK-EMERGENCY] ${a} | all accounts locked — using ${d} (lock expires ${(0,f.Qo)(g)})`);let h=await (0,e.B)(c.providerSpecificData||{});return{authType:c.authType,apiKey:c.apiKey,accessToken:c.accessToken,refreshToken:c.refreshToken,idToken:c.idToken,expiresAt:c.expiresAt,expiresIn:c.expiresIn,lastRefreshAt:c.lastRefreshAt,projectId:c.projectId,connectionName:d,copilotToken:c.providerSpecificData?.copilotToken,providerSpecificData:{...c.providerSpecificData||{},connectionProxyEnabled:h.connectionProxyEnabled,connectionProxyUrl:h.connectionProxyUrl,connectionNoProxy:h.connectionNoProxy,connectionProxyPoolId:h.proxyPoolId||null,vercelRelayUrl:h.vercelRelayUrl||"",strictProxy:!0===h.strictProxy},connectionId:c.id,testStatus:c.testStatus,lastError:c.lastError,_connection:c,emergencyFallback:!0}}}let b=g.filter(a=>o(a,c)),d=b.map(a=>p(a)).filter(Boolean).sort()[0]||null;if(d){let e=b[0];return j.warn("AUTH",`${a} | all ${g.length} accounts locked for ${c||"all"} (${(0,f.Qo)(d)}) | lastError=${e?.lastError?.slice(0,50)}`),{allRateLimited:!0,retryAfter:d,retryAfterHuman:(0,f.Qo)(d),lastError:e?.lastError||null,lastErrorCode:e?.errorCode||null}}return j.warn("AUTH",`${a} | all ${g.length} accounts unavailable`),null}let k=await (0,d.getSettings)(),s=(k.providerStrategies||{})[t]||{},v=s.fallbackStrategy||k.fallbackStrategy||"fill-first";if(m&&(b=i.find(a=>a.id===m))&&j.info("AUTH",`${a} | pinned to ${b.id?.slice(0,8)} (${b.name||b.email||"unnamed"})`),b);else if("round-robin"===v){let a=s.stickyRoundRobinLimit||k.stickyRoundRobinLimit||3,c=[...i].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(b.lastUsedAt)-new Date(a.lastUsedAt):-1:1:(a.priority||999)-(b.priority||999))[0],e=c?.consecutiveUseCount||0;c&&c.lastUsedAt&&e<a?(b=c,await (0,d.updateProviderConnection)(b.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:(b.consecutiveUseCount||0)+1})):(b=[...i].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(a.lastUsedAt)-new Date(b.lastUsedAt):1:-1:(a.priority||999)-(b.priority||999))[0],await (0,d.updateProviderConnection)(b.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:1}))}else b=i[0];let w=await (0,e.B)(b.providerSpecificData||{});return{authType:b.authType,apiKey:b.apiKey,accessToken:b.accessToken,refreshToken:b.refreshToken,idToken:b.idToken,expiresAt:b.expiresAt,expiresIn:b.expiresIn,lastRefreshAt:b.lastRefreshAt,projectId:b.projectId,connectionName:b.displayName||b.name||b.email||b.id,copilotToken:b.providerSpecificData?.copilotToken,providerSpecificData:{...b.providerSpecificData||{},connectionProxyEnabled:w.connectionProxyEnabled,connectionProxyUrl:w.connectionProxyUrl,connectionNoProxy:w.connectionNoProxy,connectionProxyPoolId:w.proxyPoolId||null,vercelRelayUrl:w.vercelRelayUrl||"",strictProxy:!0===w.strictProxy},connectionId:b.id,testStatus:b.testStatus,lastError:b.lastError,_connection:b}}finally{i&&i(),k.get(t)===v&&k.delete(t)}}async function t(a,b){if(!l.has(b)){l.add(b);try{let[c,e]=await Promise.all([(0,d.CK)(a),(0,d.getProviderConnections)({provider:a,isActive:!0})]);if(!c)return;let f=e.map(a=>a.apiKey).filter(Boolean),g=await (0,d.Ax)(a,1,f);if(!g.length){j.warn("AUTH",`[POOL] pool empty for ${a}, cannot auto-replace`),await (0,d.updateProviderConnection)(b,{isActive:!1});return}let h=e.find(a=>a.providerSpecificData?.baseUrl)?.providerSpecificData||null,i=await (0,d.q5)(a,g,f,h);0===i&&j.warn("AUTH",`[POOL] replacement key already in connections for ${a}`),await (0,d.updateProviderConnection)(b,{isActive:!1}),j.info("AUTH",`[POOL] auto-replaced key for ${a} (created=${i})`)}catch(a){j.warn("AUTH",`[POOL] auto-replace failed: ${a.message}`)}finally{l.delete(b)}}}async function u(a,b,c,e=null,h=null,i=null){var k;let l,o,p;if(!a||"noauth"===a)return{shouldFallback:!1,cooldownMs:0};let q=await (0,d.getProviderConnections)({provider:e}),r=q.find(b=>b.id===a),s=r?.backoffLevel||0;if(i&&i>Date.now()?(l=!0,o=Math.min(i-Date.now(),g.fh),p=0):{shouldFallback:l,cooldownMs:o,newBackoffLevel:p}=(0,f.hk)(b,c,s),!l)return{shouldFallback:!1,cooldownMs:0};let v="string"==typeof c?c.slice(0,100):"Provider error";if("cloudflare-ai"===e&&"string"==typeof c&&c.toLowerCase().includes("used up your daily free allocation")){let c,e,f=((e=new Date(Date.UTC((c=new Date).getUTCFullYear(),c.getUTCMonth(),c.getUTCDate(),0,10,0,0))).getTime()<=c.getTime()&&e.setUTCDate(e.getUTCDate()+1),e.toISOString()),g={...r?.providerSpecificData||{},cloudflareQuotaDisabled:!0,cloudflareReEnableAt:f};await (0,d.updateProviderConnection)(a,{isActive:!1,providerSpecificData:g,testStatus:"unavailable",lastError:v,errorCode:b,lastErrorAt:new Date().toISOString()});let h=r?.displayName||r?.name||r?.email||a.slice(0,8);return j.warn("AUTH",`[CLOUDFLARE] ${h} disabled due to daily quota exhaustion — will re-enable at ${f}`),console.error(`❌ cloudflare-ai [${b}]: Daily quota exhausted — disabled until ${f}`),{shouldFallback:!0,cooldownMs:0}}let w=(r?.providerSpecificData?.baseUrl||"").toLowerCase();if(("siliconflow"===e||"string"==typeof e&&e.startsWith("openai-compatible-")&&w.includes("siliconflow"))&&"string"==typeof c&&c.toLowerCase().includes("system is really busy")){let a=new Date(Date.now()+6e5).toISOString();for(let c of q){let e={...c.providerSpecificData||{},siliconflowBusyDisabled:!0,siliconflowReEnableAt:a};await (0,d.updateProviderConnection)(c.id,{isActive:!1,providerSpecificData:e,testStatus:"unavailable",lastError:v,errorCode:b,lastErrorAt:new Date().toISOString()})}return j.warn("AUTH",`[SILICONFLOW] Disabled ${q.length} connection(s) due to server busy (503) — will re-enable at ${a}`),console.error(`❌ siliconflow [${b}]: System busy — disabled ${q.length} connection(s) until ${a}`),{shouldFallback:!0,cooldownMs:0}}let x=(k=o,{[h?`${m}${h}`:n]:new Date(Date.now()+k).toISOString()});await (0,d.updateProviderConnection)(a,{...x,testStatus:"unavailable",lastError:v,errorCode:b,lastErrorAt:new Date().toISOString(),backoffLevel:p??s});let y=Object.keys(x)[0],z=r?.displayName||r?.name||r?.email||a.slice(0,8);return j.warn("AUTH",`${z} locked ${y} for ${Math.round(o/1e3)}s [${b}]`),e&&b&&v&&console.error(`❌ ${e} [${b}]: ${v}`),(400===b||402===b||403===b)&&e&&(g.eq.some(a=>v.toLowerCase().includes(a))?t(e,a).catch(()=>{}):403===b&&j.warn("AUTH",`[POOL] 403 received but no quota pattern matched — reason: "${v.slice(0,80)}"`)),{shouldFallback:!0,cooldownMs:o}}async function v(a,b,c=null){if(!a||"noauth"===a)return;let e=b._connection||b,f=Date.now(),g=Object.keys(e).filter(a=>a.startsWith("modelLock_"));if(!e.testStatus&&!e.lastError&&0===g.length)return;let h=g.filter(a=>{if(c&&a===`modelLock_${c}`||c&&"modelLock___all"===a)return!0;let b=e[a];return b&&new Date(b).getTime()<=f});if(0===h.length&&"unavailable"!==e.testStatus&&!e.lastError)return;let i=g.filter(a=>{if(h.includes(a))return!1;let b=e[a];return b&&new Date(b).getTime()>f}),j=Object.fromEntries(h.map(a=>[a,null]));0===i.length&&Object.assign(j,{testStatus:"active",lastError:null,lastErrorAt:null,backoffLevel:0}),await (0,d.updateProviderConnection)(a,j)}function w(a){let b=a.headers.get("Authorization");if(b?.startsWith("Bearer "))return b.slice(7);let c=a.headers.get("x-api-key");return c||null}async function x(a){return!!a&&await (0,d.ek)(a)}async function y(a){if(!a)return null;try{return await (0,d.getApiKeyRecord)(a)}catch{return null}}async function z(a,b,d){if(!a)return{allowed:!0};let e=await y(a);if(!e)return{allowed:!1,reason:"Invalid API key"};let f=e.scope||"full";if("full"!==f&&"expose_only"!==f)return{allowed:!0};let g=!1;if(!b.includes("/"))try{let{getExposeComboByName:a,getComboByName:d}=await Promise.resolve().then(c.bind(c,89718));await a(b).catch(()=>null)?g=!0:await d(b).catch(()=>null)}catch{}return"full"===f&&g?{allowed:!1,reason:"This API key (full) cannot call Expose models. Use an expose_only key."}:"expose_only"!==f||g?{allowed:!0}:{allowed:!1,reason:"This API key (expose_only) can only call Expose models."}}function A(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}function B(a,b){if(!a)return null;if("function"==typeof a.get){let c=a.get(b)||a.get(b.toLowerCase());return"string"==typeof c&&c.trim().length>0?c.trim():null}let c=a[b]||a[b.toLowerCase()]||a[b.toUpperCase()];return Array.isArray(c)?"string"==typeof c[0]&&c[0].trim().length>0?c[0].trim():null:"string"==typeof c&&c.trim().length>0?c.trim():null}function C(a,b){if("string"!=typeof a||0===a.trim().length)return null;let c=a.trim();return c.length<=180&&/^[A-Za-z0-9._:-]+$/.test(c)?`${b}:${c}`:`${b}:sha256:${(0,i.createHash)("sha256").update(c).digest("hex")}`}function D(a){if("string"==typeof a)return a;if(Array.isArray(a)){let b=a.map(a=>{if("string"==typeof a)return a;let b=A(a);return"string"==typeof b.text?b.text:"string"==typeof b.content?b.content:null}).filter(Boolean);return b.length>0?b.join("\n"):JSON.stringify(a)}return a&&"object"==typeof a?JSON.stringify(a):null}function E(a,b){let c=C(B(b,"x-codex-session-id")??B(b,"x-session-id")??B(b,"x-omniroute-session"),"header");if(c)return c;let d=A(a),e=A(d.metadata),f=C(e.session_id,"metadata")??C(e.sessionId,"metadata")??C(d.conversation_id,"conversation")??C(d.session_id,"session")??C(d.prompt_cache_key,"prompt-cache");if(f)return f;let g=function(a){let b=A(a);if(void 0!==b.input){if("string"==typeof b.input)return b.input;if(Array.isArray(b.input))for(let a of b.input){let b=D(A(a).content??a);if(b&&b.trim().length>0)return b}let a=D(b.input);if(a&&a.trim().length>0)return a}if(Array.isArray(b.messages)){let a=b.messages.find(a=>"user"===A(a).role)??b.messages[0],c=D(A(a).content??a);if(c&&c.trim().length>0)return c}return null}(a);return g&&0!==g.trim().length?`input:sha256:${(0,i.createHash)("sha256").update(g.slice(0,4096)).digest("hex")}`:null}}};
@@ -1 +1 @@
1
- "use strict";exports.id=2845,exports.ids=[2845],exports.modules={16655:(a,b,c)=>{c.d(b,{oF:()=>d.oF,tm:()=>d.tm,vF:()=>d.vF});var d=c(58246)},66306:(a,b,c)=>{c.d(b,{a0:()=>g,nl:()=>k});var d=c(58920);let e={vision:!1,pdf:!1,audioInput:!1,videoInput:!1,imageOutput:!1,audioOutput:!1,search:!1,tools:!0,reasoning:!1,thinkingFormat:null,thinkingCanDisable:!0,thinkingRange:null,contextWindow:2e5,maxOutput:64e3},f={imageToText:{vision:!0},image:{imageOutput:!0},stt:{audioInput:!0},tts:{audioOutput:!0},embedding:{tools:!1}};function g(a){return f[a]||null}let h={"claude-opus-4.6":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4.7":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4-7":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4.8":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4-6":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4-8":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4.8-thinking":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4-8-thinking":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-4.6":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-4-6":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"gpt-image-1":{imageOutput:!0,tools:!1},"glm-4.6v":{vision:!0,reasoning:!0,thinkingFormat:"zai",contextWindow:128e3},"vision-model":{vision:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6},"coder-model":{reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6}},i={"codebuddy-cn":{"glm-5.2":{reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:48e3},"glm-5.1":{reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:48e3},"glm-5.0":{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:48e3},"glm-5.0-turbo":{reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:48e3},"glm-5v-turbo":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:38e3},"glm-4.7":{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:48e3},"minimax-m3":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:512e3,maxOutput:48e3},"minimax-m2.7":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:48e3},"kimi-k2.7":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:256e3,maxOutput:32e3},"kimi-k2.6":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:256e3,maxOutput:32e3},"kimi-k2.5":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:164e3,maxOutput:32e3},"hy3-preview":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:192e3,maxOutput:64e3},"deepseek-v4-pro":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:5e4},"deepseek-v4-flash":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:5e4},"deepseek-v3-2-volc":{reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:96e3,maxOutput:32e3}}},j=[{pattern:"*claude*opus-4.6*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*opus-4.7*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*opus-4.8*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*sonnet-4.6*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*sonnet-4.7*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*haiku*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget"}},{pattern:"*claude*opus*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget"}},{pattern:"*claude*sonnet*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget"}},{pattern:"*claude*fable*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget",contextWindow:1e6,maxOutput:128e3}},{pattern:"*claude*mythos*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget",contextWindow:1e6,maxOutput:128e3}},{pattern:"*claude-3*",caps:{vision:!0}},{pattern:"*claude*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget"}},{pattern:"*gemini*image*",caps:{vision:!0,imageOutput:!0,contextWindow:1048576}},{pattern:"*gemini-3*pro*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-level",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:65535}},{pattern:"*gemini-3*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-level",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini-2.5*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-budget",thinkingRange:{min:0,max:24576},contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini-2*",caps:{vision:!0,audioInput:!0,videoInput:!0,search:!0,contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini*",caps:{vision:!0,search:!0,contextWindow:1048576}},{pattern:"*gemma*",caps:{vision:!0,contextWindow:128e3}},{pattern:"*nanobanana*",caps:{vision:!0,imageOutput:!0}},{pattern:"*gpt-5*image*",caps:{imageOutput:!0}},{pattern:"*gpt-5*codex*",caps:{reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:4e5,maxOutput:128e3}},{pattern:"*gpt-5*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:4e5,maxOutput:128e3}},{pattern:"*gpt-4o*",caps:{vision:!0,search:!0,contextWindow:128e3,maxOutput:16384}},{pattern:"*gpt-4.1*",caps:{vision:!0,contextWindow:1e6,maxOutput:32768}},{pattern:"*gpt-4-turbo*",caps:{vision:!0,contextWindow:128e3}},{pattern:"*gpt-4*",caps:{contextWindow:128e3}},{pattern:"*gpt-3.5*",caps:{contextWindow:16385,maxOutput:4096}},{pattern:"*gpt-oss*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:128e3}},{pattern:"*o1-mini*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:128e3}},{pattern:"*o1*",caps:{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:1e5}},{pattern:"*o3*",caps:{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:1e5}},{pattern:"*o4*",caps:{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:1e5}},{pattern:"*grok*image*",caps:{imageOutput:!0}},{pattern:"*grok-code*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:256e3}},{pattern:"*grok-4*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:256e3}},{pattern:"*grok-3*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:131072}},{pattern:"*grok*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:256e3}},{pattern:"*qwen*vl*",caps:{vision:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:262144}},{pattern:"*qwen*omni*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:262144,maxOutput:65536}},{pattern:"*qwen*coder*",caps:{reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6}},{pattern:"*qwen*max*",caps:{reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen3.5*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen3.6*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen3.7*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen*plus*",caps:{vision:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen*235b*",caps:{reasoning:!0,thinkingFormat:"qwen",contextWindow:262144}},{pattern:"*qwq*",caps:{reasoning:!0,thinkingFormat:"qwen",thinkingCanDisable:!1,contextWindow:131072}},{pattern:"*qwen*",caps:{reasoning:!0,thinkingFormat:"qwen",contextWindow:262144}},{pattern:"*kimi*k2.7*code*",caps:{vision:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:262144,maxOutput:262144}},{pattern:"*kimi*k2*",caps:{vision:!0,reasoning:!0,thinkingFormat:"kimi",contextWindow:262144,maxOutput:262144}},{pattern:"*kimi*",caps:{reasoning:!0,thinkingFormat:"kimi",contextWindow:262144}},{pattern:"*glm-5*",caps:{reasoning:!0,thinkingFormat:"zai",contextWindow:2e5,maxOutput:128e3}},{pattern:"*glm-4.7*",caps:{reasoning:!0,thinkingFormat:"zai",contextWindow:2e5,maxOutput:128e3}},{pattern:"*glm-4*",caps:{reasoning:!0,thinkingFormat:"zai",contextWindow:2e5}},{pattern:"*glm*",caps:{reasoning:!0,thinkingFormat:"zai",contextWindow:2e5}},{pattern:"*deepseek-v4*",caps:{reasoning:!0,thinkingFormat:"deepseek",contextWindow:1e6,maxOutput:384e3}},{pattern:"*reasoner*",caps:{reasoning:!0,thinkingFormat:"deepseek",thinkingCanDisable:!1,contextWindow:128e3}},{pattern:"*deepseek-r*",caps:{reasoning:!0,thinkingFormat:"deepseek",thinkingCanDisable:!1,contextWindow:128e3}},{pattern:"*deepseek-chat*",caps:{contextWindow:128e3}},{pattern:"*deepseek*",caps:{reasoning:!0,thinkingFormat:"deepseek",contextWindow:128e3}},{pattern:"*minimax*image*",caps:{imageOutput:!0}},{pattern:"*minimax-m3*",caps:{vision:!0,reasoning:!0,thinkingFormat:"minimax",contextWindow:1048576,maxOutput:512e3}},{pattern:"*minimax-m2.7*",caps:{reasoning:!0,thinkingFormat:"minimax",thinkingCanDisable:!1,contextWindow:204800,maxOutput:131072}},{pattern:"*minimax*",caps:{reasoning:!0,thinkingFormat:"minimax",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:131072}},{pattern:"*mimo*v2.5*",caps:{vision:!0,contextWindow:1048576,maxOutput:131072}},{pattern:"*mimo*omni*",caps:{vision:!0,audioInput:!0,contextWindow:262144,maxOutput:131072}},{pattern:"*mimo*",caps:{vision:!0,contextWindow:262144,maxOutput:131072}},{pattern:"*llama-4*",caps:{vision:!0,contextWindow:1e6}},{pattern:"*llama*",caps:{contextWindow:128e3}},{pattern:"*codestral*",caps:{contextWindow:256e3}},{pattern:"*mistral-large*",caps:{vision:!0,contextWindow:256e3}},{pattern:"*mistral*",caps:{contextWindow:128e3}},{pattern:"*command-a-vision*",caps:{vision:!0,contextWindow:128e3}},{pattern:"*command*",caps:{contextWindow:128e3}},{pattern:"*sonar*",caps:{search:!0,contextWindow:128e3}},{pattern:"*pplx*",caps:{search:!0,contextWindow:128e3}},{pattern:"*perplexity*",caps:{search:!0,contextWindow:128e3}},{pattern:"*hunyuan*",caps:{reasoning:!0,thinkingFormat:"hunyuan",contextWindow:262144,maxOutput:262144}},{pattern:"hy3*",caps:{reasoning:!0,thinkingFormat:"hunyuan",contextWindow:262144,maxOutput:262144}},{pattern:"*step-*",caps:{reasoning:!0,thinkingFormat:"step",contextWindow:128e3}},{pattern:"*nemotron*",caps:{reasoning:!0,contextWindow:128e3}},{pattern:"*ling-*",caps:{reasoning:!0,contextWindow:128e3}}];function k(a,b){if(!b)return{...e};if(a&&i[a]?.[b])return{...e,...i[a][b]};let c=b.includes("/")?b.split("/").pop():b;if(h[c])return{...e,...h[c]};if(h[b])return{...e,...h[b]};for(let{pattern:a,caps:f}of j)if((0,d.gH)(a,c)||(0,d.gH)(a,b))return{...e,...f};return{...e}}},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}};
1
+ "use strict";exports.id=2845,exports.ids=[2845],exports.modules={16655:(a,b,c)=>{c.d(b,{oF:()=>d.oF,tm:()=>d.tm,vF:()=>d.vF});var d=c(50906)},66306:(a,b,c)=>{c.d(b,{a0:()=>g,nl:()=>k});var d=c(58920);let e={vision:!1,pdf:!1,audioInput:!1,videoInput:!1,imageOutput:!1,audioOutput:!1,search:!1,tools:!0,reasoning:!1,thinkingFormat:null,thinkingCanDisable:!0,thinkingRange:null,contextWindow:2e5,maxOutput:64e3},f={imageToText:{vision:!0},image:{imageOutput:!0},stt:{audioInput:!0},tts:{audioOutput:!0},embedding:{tools:!1}};function g(a){return f[a]||null}let h={"claude-opus-4.6":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4.7":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4-7":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4.8":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4-6":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4-8":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4.8-thinking":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4-8-thinking":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-4.6":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-4-6":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"gpt-image-1":{imageOutput:!0,tools:!1},"glm-4.6v":{vision:!0,reasoning:!0,thinkingFormat:"zai",contextWindow:128e3},"vision-model":{vision:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6},"coder-model":{reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6}},i={"codebuddy-cn":{"glm-5.2":{reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:48e3},"glm-5.1":{reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:48e3},"glm-5.0":{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:48e3},"glm-5.0-turbo":{reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:48e3},"glm-5v-turbo":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:38e3},"glm-4.7":{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:48e3},"minimax-m3":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:512e3,maxOutput:48e3},"minimax-m2.7":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:48e3},"kimi-k2.7":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:256e3,maxOutput:32e3},"kimi-k2.6":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:256e3,maxOutput:32e3},"kimi-k2.5":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:164e3,maxOutput:32e3},"hy3-preview":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:192e3,maxOutput:64e3},"deepseek-v4-pro":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:5e4},"deepseek-v4-flash":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:5e4},"deepseek-v3-2-volc":{reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:96e3,maxOutput:32e3}}},j=[{pattern:"*claude*opus-4.6*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*opus-4.7*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*opus-4.8*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*sonnet-4.6*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*sonnet-4.7*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*haiku*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget"}},{pattern:"*claude*opus*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget"}},{pattern:"*claude*sonnet*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget"}},{pattern:"*claude*fable*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget",contextWindow:1e6,maxOutput:128e3}},{pattern:"*claude*mythos*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget",contextWindow:1e6,maxOutput:128e3}},{pattern:"*claude-3*",caps:{vision:!0}},{pattern:"*claude*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget"}},{pattern:"*gemini*image*",caps:{vision:!0,imageOutput:!0,contextWindow:1048576}},{pattern:"*gemini-3*pro*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-level",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:65535}},{pattern:"*gemini-3*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-level",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini-2.5*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-budget",thinkingRange:{min:0,max:24576},contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini-2*",caps:{vision:!0,audioInput:!0,videoInput:!0,search:!0,contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini*",caps:{vision:!0,search:!0,contextWindow:1048576}},{pattern:"*gemma*",caps:{vision:!0,contextWindow:128e3}},{pattern:"*nanobanana*",caps:{vision:!0,imageOutput:!0}},{pattern:"*gpt-5*image*",caps:{imageOutput:!0}},{pattern:"*gpt-5*codex*",caps:{reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:4e5,maxOutput:128e3}},{pattern:"*gpt-5*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:4e5,maxOutput:128e3}},{pattern:"*gpt-4o*",caps:{vision:!0,search:!0,contextWindow:128e3,maxOutput:16384}},{pattern:"*gpt-4.1*",caps:{vision:!0,contextWindow:1e6,maxOutput:32768}},{pattern:"*gpt-4-turbo*",caps:{vision:!0,contextWindow:128e3}},{pattern:"*gpt-4*",caps:{contextWindow:128e3}},{pattern:"*gpt-3.5*",caps:{contextWindow:16385,maxOutput:4096}},{pattern:"*gpt-oss*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:128e3}},{pattern:"*o1-mini*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:128e3}},{pattern:"*o1*",caps:{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:1e5}},{pattern:"*o3*",caps:{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:1e5}},{pattern:"*o4*",caps:{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:1e5}},{pattern:"*grok*image*",caps:{imageOutput:!0}},{pattern:"*grok-code*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:256e3}},{pattern:"*grok-4*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:256e3}},{pattern:"*grok-3*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:131072}},{pattern:"*grok*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:256e3}},{pattern:"*qwen*vl*",caps:{vision:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:262144}},{pattern:"*qwen*omni*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:262144,maxOutput:65536}},{pattern:"*qwen*coder*",caps:{reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6}},{pattern:"*qwen*max*",caps:{reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen3.5*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen3.6*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen3.7*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen*plus*",caps:{vision:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen*235b*",caps:{reasoning:!0,thinkingFormat:"qwen",contextWindow:262144}},{pattern:"*qwq*",caps:{reasoning:!0,thinkingFormat:"qwen",thinkingCanDisable:!1,contextWindow:131072}},{pattern:"*qwen*",caps:{reasoning:!0,thinkingFormat:"qwen",contextWindow:262144}},{pattern:"*kimi*k2.7*code*",caps:{vision:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:262144,maxOutput:262144}},{pattern:"*kimi*k2*",caps:{vision:!0,reasoning:!0,thinkingFormat:"kimi",contextWindow:262144,maxOutput:262144}},{pattern:"*kimi*",caps:{reasoning:!0,thinkingFormat:"kimi",contextWindow:262144}},{pattern:"*glm-5*",caps:{reasoning:!0,thinkingFormat:"zai",contextWindow:2e5,maxOutput:128e3}},{pattern:"*glm-4.7*",caps:{reasoning:!0,thinkingFormat:"zai",contextWindow:2e5,maxOutput:128e3}},{pattern:"*glm-4*",caps:{reasoning:!0,thinkingFormat:"zai",contextWindow:2e5}},{pattern:"*glm*",caps:{reasoning:!0,thinkingFormat:"zai",contextWindow:2e5}},{pattern:"*deepseek-v4*",caps:{reasoning:!0,thinkingFormat:"deepseek",contextWindow:1e6,maxOutput:384e3}},{pattern:"*reasoner*",caps:{reasoning:!0,thinkingFormat:"deepseek",thinkingCanDisable:!1,contextWindow:128e3}},{pattern:"*deepseek-r*",caps:{reasoning:!0,thinkingFormat:"deepseek",thinkingCanDisable:!1,contextWindow:128e3}},{pattern:"*deepseek-chat*",caps:{contextWindow:128e3}},{pattern:"*deepseek*",caps:{reasoning:!0,thinkingFormat:"deepseek",contextWindow:128e3}},{pattern:"*minimax*image*",caps:{imageOutput:!0}},{pattern:"*minimax-m3*",caps:{vision:!0,reasoning:!0,thinkingFormat:"minimax",contextWindow:1048576,maxOutput:512e3}},{pattern:"*minimax-m2.7*",caps:{reasoning:!0,thinkingFormat:"minimax",thinkingCanDisable:!1,contextWindow:204800,maxOutput:131072}},{pattern:"*minimax*",caps:{reasoning:!0,thinkingFormat:"minimax",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:131072}},{pattern:"*mimo*v2.5*",caps:{vision:!0,contextWindow:1048576,maxOutput:131072}},{pattern:"*mimo*omni*",caps:{vision:!0,audioInput:!0,contextWindow:262144,maxOutput:131072}},{pattern:"*mimo*",caps:{vision:!0,contextWindow:262144,maxOutput:131072}},{pattern:"*llama-4*",caps:{vision:!0,contextWindow:1e6}},{pattern:"*llama*",caps:{contextWindow:128e3}},{pattern:"*codestral*",caps:{contextWindow:256e3}},{pattern:"*mistral-large*",caps:{vision:!0,contextWindow:256e3}},{pattern:"*mistral*",caps:{contextWindow:128e3}},{pattern:"*command-a-vision*",caps:{vision:!0,contextWindow:128e3}},{pattern:"*command*",caps:{contextWindow:128e3}},{pattern:"*sonar*",caps:{search:!0,contextWindow:128e3}},{pattern:"*pplx*",caps:{search:!0,contextWindow:128e3}},{pattern:"*perplexity*",caps:{search:!0,contextWindow:128e3}},{pattern:"*hunyuan*",caps:{reasoning:!0,thinkingFormat:"hunyuan",contextWindow:262144,maxOutput:262144}},{pattern:"hy3*",caps:{reasoning:!0,thinkingFormat:"hunyuan",contextWindow:262144,maxOutput:262144}},{pattern:"*step-*",caps:{reasoning:!0,thinkingFormat:"step",contextWindow:128e3}},{pattern:"*nemotron*",caps:{reasoning:!0,contextWindow:128e3}},{pattern:"*ling-*",caps:{reasoning:!0,contextWindow:128e3}}];function k(a,b){if(!b)return{...e};if(a&&i[a]?.[b])return{...e,...i[a][b]};let c=b.includes("/")?b.split("/").pop():b;if(h[c])return{...e,...h[c]};if(h[b])return{...e,...h[b]};for(let{pattern:a,caps:f}of j)if((0,d.gH)(a,c)||(0,d.gH)(a,b))return{...e,...f};return{...e}}},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}};
@@ -1 +1 @@
1
- "use strict";exports.id=1064,exports.ids=[1064],exports.modules={46960:(a,b,c)=>{c(69069),c(29385);let d=new Map,e=setInterval(()=>{let a=Date.now();for(let[b,c]of d)a-c>3e5&&d.delete(b);for(;d.size>500;){let a=d.keys().next().value;if(void 0!==a)d.delete(a);else break}},6e4);"object"==typeof e&&"unref"in e&&e.unref?.()},49333:(a,b,c)=>{function d(a,b,c,d){var e;let f=d&&"object"==typeof d&&!Array.isArray(d)?d:{userAgent:d};if(f.providerRequiresStreaming||!0===a)return!0;if(!1===a)return!1;let g="json"===f.streamDefaultMode?"json":"legacy",h="string"==typeof b&&/text\/event-stream/i.test(b);if("claude"===c||"openai-responses"===c)return!!h;return!("string"==typeof(e=f.userAgent)&&/nextcloud\s+openai\/localai\s+integration/i.test(e)&&!h||"json"===g&&!h||"string"==typeof b&&/application\/json/i.test(b))&&!function(a){if("string"!=typeof a)return!1;let b=a.toLowerCase();return b.includes("application/json")&&!b.includes("text/event-stream")}(b)}function e(a){return a&&"object"==typeof a?!0===a.streaming||!1!==a.streaming&&!0!==a.non_stream&&!0!==a.disable_stream&&!0!==a.disable_streaming&&void 0:void 0}function f(a){if("string"!=typeof a)return a;let b=a.trim().match(/^```(?:json|javascript|typescript|js|ts)?\s*\n?([\s\S]*?)\n?```\s*$/i);return b?b[1].trim():a}c.d(b,{ZA:()=>d,nV:()=>e,yN:()=>f})},69069:(a,b,c)=>{c.d(b,{__:()=>e,dN:()=>j});let d=new Map;function e(a){return d.get(a)||d.get(a.toLowerCase())}function f(a,b,c){if(!a)return c;let d=a(b);return"number"==typeof d&&Number.isFinite(d)&&d>=0&&d<=100?d:c}function g(a){return Math.max(0,(1-a)*100)}function h(a,b){return a<=b+1e-9}function i(a,b){return{proceed:!1,reason:"quota_exhausted",quotaPercent:a,resetAt:b}}function j(a,b){if(!a)return{proceed:!0};if(!0===a.limitReached)return i(1,a.resetAt??null);let c=a.windows;if(c&&Object.keys(c).length>0)return function(a,b){let c=0,d=null,e=null;for(let[i,j]of Object.entries(a)){if(!Number.isFinite(j.percentUsed))continue;let a=f(b?.resolveMinRemainingPercent,i,2);h(g(j.percentUsed),a)&&(j.percentUsed<=c&&null!==d||(c=j.percentUsed,d=i,e=j.resetAt??null))}return null===d?null:i(c,e)}(c,b)??{proceed:!0,quotaPercent:a.percentUsed};if(!Number.isFinite(a.percentUsed))return{proceed:!0};let d=f(b?.resolveMinRemainingPercent,null,2);return h(g(a.percentUsed),d)?i(a.percentUsed,a.resetAt??null):{proceed:!0,quotaPercent:a.percentUsed}}},74016:(a,b,c)=>{c.d(b,{GF:()=>k,tg:()=>q});var d=c(37664);c(69069),c(46960);let e="session",f="weekly",g=new Map,h=setInterval(()=>{let a=Date.now();for(let[b,c]of g)a-c.fetchedAt>3e5&&g.delete(b)},3e5);"object"==typeof h&&"unref"in h&&h.unref?.();let i=new Map;function j(a){for(let b of(g.delete(a),Array.from(g.keys()).filter(b=>b.startsWith(`${a}:`))))g.delete(b)}async function k(a,b){let c=function(a){if(!a||"object"!=typeof a)return null;let b=a.requestedModel??a.model;return"string"==typeof b&&b.trim().length>0?b.trim():null}(b),h=`${a}:${(0,d.t6)(c)}`,k=g.get(h);if(k&&Date.now()-k.fetchedAt<6e4)return k.quota;let l=function(a,b){if(b&&"object"==typeof b){let c=b.providerSpecificData&&"object"==typeof b.providerSpecificData&&!Array.isArray(b.providerSpecificData)?b.providerSpecificData:{},d="string"==typeof b.accessToken&&b.accessToken.trim().length>0?b.accessToken:null,e="string"==typeof c.workspaceId&&c.workspaceId.trim().length>0?c.workspaceId:void 0;if(d){let b={accessToken:d,...e?{workspaceId:e}:{}};if(!i.has(a)&&i.size>=100){let a=i.keys().next().value;void 0!==a&&(j(a),i.delete(a))}return i.set(a,b),b}}return i.get(a)||null}(a,b);if(!l?.accessToken)return null;try{let b={Authorization:`Bearer ${l.accessToken}`,"Content-Type":"application/json",Accept:"application/json"};l.workspaceId&&(b["chatgpt-account-id"]=l.workspaceId);let k=await fetch("https://chatgpt.com/backend-api/wham/usage",{method:"GET",headers:b,signal:AbortSignal.timeout(8e3)});if(!k.ok)return(401===k.status||403===k.status)&&(j(a),i.delete(a)),null;let n=await k.json(),q=function(a,b){var c;let g=m(a),h=m(g.rate_limit??g.rateLimit),i=function(a){let b=a.additional_rate_limits??a.additionalRateLimits;if(!Array.isArray(b))return null;for(let a of b){let b=m(a);if((0,d.j7)(b.limit_name,b.limitName,b.metered_feature,b.meteredFeature,b.limit_id,b.limitId,b.id,b.name,b.title,b.model,b.model_id,b.modelId))return m(b.rate_limit??b.rateLimit)}return null}(g),j="spark"===(0,d.t6)(b),k=j?i:h;if(!k)return null;let{primary:l,secondary:n}=o(k);if(!l&&!n)return null;let q=l??{percentUsed:0,resetAt:null},r=n??{percentUsed:0,resetAt:null},s=Math.max(q.percentUsed,r.percentUsed),t=!!(k.limit_reached??k.limitReached),u={};p(u,k,{primary:j?d.Iq:e,secondary:j?d.VS:f});let v={...u};return i&&p(v,i,{primary:d.Iq,secondary:d.VS}),p(v,h,{primary:e,secondary:f}),{used:Math.round(100*s),total:100,percentUsed:s,resetAt:(c={window5h:q,window7d:r}).window7d.percentUsed>c.window5h.percentUsed?c.window7d.resetAt||c.window5h.resetAt:c.window5h.percentUsed>c.window7d.percentUsed?c.window5h.resetAt||c.window7d.resetAt:c.window7d.resetAt||c.window5h.resetAt,windows:u,allWindows:v,window5h:q,window7d:r,limitReached:t}}(n,c);if(!q)return null;if(!g.has(a)&&g.size>=200){let a=g.keys().next().value;void 0!==a&&g.delete(a)}return g.set(h,{quota:q,fetchedAt:Date.now()}),q}catch{return null}}function l(a,b=0){if("number"==typeof a&&Number.isFinite(a))return a;if("string"==typeof a){let b=parseFloat(a);if(Number.isFinite(b))return b}return b}function m(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}function n(a){return a&&0!==Object.keys(a).length?{percentUsed:l(a.used_percent??a.usedPercent,0)/100,resetAt:function(a){let b=l(a.reset_at??a.resetAt,0);if(b>0)return new Date(1e3*b).toISOString();let c=l(a.reset_after_seconds??a.resetAfterSeconds,0);return c>0?new Date(Date.now()+1e3*c).toISOString():null}(a)}:null}function o(a){return{primary:n(m(a.primary_window??a.primaryWindow)),secondary:n(m(a.secondary_window??a.secondaryWindow))}}function p(a,b,c){let{primary:d,secondary:e}=o(b);d&&(a[c.primary]=d),e&&(a[c.secondary]=e)}function q(a){j(a)}},92085:(a,b,c)=>{c.d(b,{I:()=>d});let d=()=>void 0}};
1
+ "use strict";exports.id=3210,exports.ids=[3210],exports.modules={46960:(a,b,c)=>{c(69069),c(29385);let d=new Map,e=setInterval(()=>{let a=Date.now();for(let[b,c]of d)a-c>3e5&&d.delete(b);for(;d.size>500;){let a=d.keys().next().value;if(void 0!==a)d.delete(a);else break}},6e4);"object"==typeof e&&"unref"in e&&e.unref?.()},49333:(a,b,c)=>{function d(a,b,c,d){var e;let f=d&&"object"==typeof d&&!Array.isArray(d)?d:{userAgent:d};if(f.providerRequiresStreaming||!0===a)return!0;if(!1===a)return!1;let g="json"===f.streamDefaultMode?"json":"legacy",h="string"==typeof b&&/text\/event-stream/i.test(b);if("claude"===c||"openai-responses"===c)return!!h;return!("string"==typeof(e=f.userAgent)&&/nextcloud\s+openai\/localai\s+integration/i.test(e)&&!h||"json"===g&&!h||"string"==typeof b&&/application\/json/i.test(b))&&!function(a){if("string"!=typeof a)return!1;let b=a.toLowerCase();return b.includes("application/json")&&!b.includes("text/event-stream")}(b)}function e(a){return a&&"object"==typeof a?!0===a.streaming||!1!==a.streaming&&!0!==a.non_stream&&!0!==a.disable_stream&&!0!==a.disable_streaming&&void 0:void 0}function f(a){if("string"!=typeof a)return a;let b=a.trim().match(/^```(?:json|javascript|typescript|js|ts)?\s*\n?([\s\S]*?)\n?```\s*$/i);return b?b[1].trim():a}c.d(b,{ZA:()=>d,nV:()=>e,yN:()=>f})},69069:(a,b,c)=>{c.d(b,{__:()=>e,dN:()=>j});let d=new Map;function e(a){return d.get(a)||d.get(a.toLowerCase())}function f(a,b,c){if(!a)return c;let d=a(b);return"number"==typeof d&&Number.isFinite(d)&&d>=0&&d<=100?d:c}function g(a){return Math.max(0,(1-a)*100)}function h(a,b){return a<=b+1e-9}function i(a,b){return{proceed:!1,reason:"quota_exhausted",quotaPercent:a,resetAt:b}}function j(a,b){if(!a)return{proceed:!0};if(!0===a.limitReached)return i(1,a.resetAt??null);let c=a.windows;if(c&&Object.keys(c).length>0)return function(a,b){let c=0,d=null,e=null;for(let[i,j]of Object.entries(a)){if(!Number.isFinite(j.percentUsed))continue;let a=f(b?.resolveMinRemainingPercent,i,2);h(g(j.percentUsed),a)&&(j.percentUsed<=c&&null!==d||(c=j.percentUsed,d=i,e=j.resetAt??null))}return null===d?null:i(c,e)}(c,b)??{proceed:!0,quotaPercent:a.percentUsed};if(!Number.isFinite(a.percentUsed))return{proceed:!0};let d=f(b?.resolveMinRemainingPercent,null,2);return h(g(a.percentUsed),d)?i(a.percentUsed,a.resetAt??null):{proceed:!0,quotaPercent:a.percentUsed}}},74016:(a,b,c)=>{c.d(b,{GF:()=>k,tg:()=>q});var d=c(37664);c(69069),c(46960);let e="session",f="weekly",g=new Map,h=setInterval(()=>{let a=Date.now();for(let[b,c]of g)a-c.fetchedAt>3e5&&g.delete(b)},3e5);"object"==typeof h&&"unref"in h&&h.unref?.();let i=new Map;function j(a){for(let b of(g.delete(a),Array.from(g.keys()).filter(b=>b.startsWith(`${a}:`))))g.delete(b)}async function k(a,b){let c=function(a){if(!a||"object"!=typeof a)return null;let b=a.requestedModel??a.model;return"string"==typeof b&&b.trim().length>0?b.trim():null}(b),h=`${a}:${(0,d.t6)(c)}`,k=g.get(h);if(k&&Date.now()-k.fetchedAt<6e4)return k.quota;let l=function(a,b){if(b&&"object"==typeof b){let c=b.providerSpecificData&&"object"==typeof b.providerSpecificData&&!Array.isArray(b.providerSpecificData)?b.providerSpecificData:{},d="string"==typeof b.accessToken&&b.accessToken.trim().length>0?b.accessToken:null,e="string"==typeof c.workspaceId&&c.workspaceId.trim().length>0?c.workspaceId:void 0;if(d){let b={accessToken:d,...e?{workspaceId:e}:{}};if(!i.has(a)&&i.size>=100){let a=i.keys().next().value;void 0!==a&&(j(a),i.delete(a))}return i.set(a,b),b}}return i.get(a)||null}(a,b);if(!l?.accessToken)return null;try{let b={Authorization:`Bearer ${l.accessToken}`,"Content-Type":"application/json",Accept:"application/json"};l.workspaceId&&(b["chatgpt-account-id"]=l.workspaceId);let k=await fetch("https://chatgpt.com/backend-api/wham/usage",{method:"GET",headers:b,signal:AbortSignal.timeout(8e3)});if(!k.ok)return(401===k.status||403===k.status)&&(j(a),i.delete(a)),null;let n=await k.json(),q=function(a,b){var c;let g=m(a),h=m(g.rate_limit??g.rateLimit),i=function(a){let b=a.additional_rate_limits??a.additionalRateLimits;if(!Array.isArray(b))return null;for(let a of b){let b=m(a);if((0,d.j7)(b.limit_name,b.limitName,b.metered_feature,b.meteredFeature,b.limit_id,b.limitId,b.id,b.name,b.title,b.model,b.model_id,b.modelId))return m(b.rate_limit??b.rateLimit)}return null}(g),j="spark"===(0,d.t6)(b),k=j?i:h;if(!k)return null;let{primary:l,secondary:n}=o(k);if(!l&&!n)return null;let q=l??{percentUsed:0,resetAt:null},r=n??{percentUsed:0,resetAt:null},s=Math.max(q.percentUsed,r.percentUsed),t=!!(k.limit_reached??k.limitReached),u={};p(u,k,{primary:j?d.Iq:e,secondary:j?d.VS:f});let v={...u};return i&&p(v,i,{primary:d.Iq,secondary:d.VS}),p(v,h,{primary:e,secondary:f}),{used:Math.round(100*s),total:100,percentUsed:s,resetAt:(c={window5h:q,window7d:r}).window7d.percentUsed>c.window5h.percentUsed?c.window7d.resetAt||c.window5h.resetAt:c.window5h.percentUsed>c.window7d.percentUsed?c.window5h.resetAt||c.window7d.resetAt:c.window7d.resetAt||c.window5h.resetAt,windows:u,allWindows:v,window5h:q,window7d:r,limitReached:t}}(n,c);if(!q)return null;if(!g.has(a)&&g.size>=200){let a=g.keys().next().value;void 0!==a&&g.delete(a)}return g.set(h,{quota:q,fetchedAt:Date.now()}),q}catch{return null}}function l(a,b=0){if("number"==typeof a&&Number.isFinite(a))return a;if("string"==typeof a){let b=parseFloat(a);if(Number.isFinite(b))return b}return b}function m(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}function n(a){return a&&0!==Object.keys(a).length?{percentUsed:l(a.used_percent??a.usedPercent,0)/100,resetAt:function(a){let b=l(a.reset_at??a.resetAt,0);if(b>0)return new Date(1e3*b).toISOString();let c=l(a.reset_after_seconds??a.resetAfterSeconds,0);return c>0?new Date(Date.now()+1e3*c).toISOString():null}(a)}:null}function o(a){return{primary:n(m(a.primary_window??a.primaryWindow)),secondary:n(m(a.secondary_window??a.secondaryWindow))}}function p(a,b,c){let{primary:d,secondary:e}=o(b);d&&(a[c.primary]=d),e&&(a[c.secondary]=e)}function q(a){j(a)}},78769:(a,b,c)=>{c.d(b,{Zr:()=>f,eh:()=>e,jf:()=>d});let d=()=>null,e=()=>null,f=()=>null},92085:(a,b,c)=>{c.d(b,{I:()=>d});let d=()=>void 0}};
@@ -6,4 +6,4 @@ PRAGMA mmap_size = 30000000;
6
6
  PRAGMA cache_size = -64000;
7
7
  PRAGMA foreign_keys = ON;
8
8
  PRAGMA busy_timeout = 5000;
9
- `,e={_meta:{columns:{key:"TEXT PRIMARY KEY",value:"TEXT NOT NULL"}},settings:{columns:{id:"INTEGER PRIMARY KEY CHECK (id = 1)",data:"TEXT NOT NULL"}},providerConnections:{columns:{id:"TEXT PRIMARY KEY",provider:"TEXT NOT NULL",authType:"TEXT NOT NULL",name:"TEXT",email:"TEXT",priority:"INTEGER",isActive:"INTEGER DEFAULT 1",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pc_provider ON providerConnections(provider)","CREATE INDEX IF NOT EXISTS idx_pc_provider_active ON providerConnections(provider, isActive)","CREATE INDEX IF NOT EXISTS idx_pc_priority ON providerConnections(provider, priority)"]},providerNodes:{columns:{id:"TEXT PRIMARY KEY",type:"TEXT",name:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pn_type ON providerNodes(type)"]},proxyPools:{columns:{id:"TEXT PRIMARY KEY",isActive:"INTEGER DEFAULT 1",testStatus:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pp_active ON proxyPools(isActive)","CREATE INDEX IF NOT EXISTS idx_pp_status ON proxyPools(testStatus)"]},apiKeys:{columns:{id:"TEXT PRIMARY KEY",key:"TEXT UNIQUE NOT NULL",name:"TEXT",machineId:"TEXT",isActive:"INTEGER DEFAULT 1",createdAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_ak_key ON apiKeys(key)"]},apiKeyPools:{columns:{poolKey:"TEXT PRIMARY KEY",keys:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"}},combos:{columns:{id:"TEXT PRIMARY KEY",name:"TEXT UNIQUE NOT NULL",kind:"TEXT",models:"TEXT NOT NULL",sortOrder:"INTEGER DEFAULT 0",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_combo_name ON combos(name)"]},kv:{columns:{scope:"TEXT NOT NULL",key:"TEXT NOT NULL",value:"TEXT NOT NULL"},primaryKey:"PRIMARY KEY (scope, key)",indexes:["CREATE INDEX IF NOT EXISTS idx_kv_scope ON kv(scope)"]},usageHistory:{columns:{id:"INTEGER PRIMARY KEY AUTOINCREMENT",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",apiKey:"TEXT",endpoint:"TEXT",promptTokens:"INTEGER DEFAULT 0",completionTokens:"INTEGER DEFAULT 0",cost:"REAL DEFAULT 0",status:"TEXT",tokens:"TEXT",meta:"TEXT"},indexes:["CREATE INDEX IF NOT EXISTS idx_uh_ts ON usageHistory(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_provider ON usageHistory(provider)","CREATE INDEX IF NOT EXISTS idx_uh_model ON usageHistory(model)","CREATE INDEX IF NOT EXISTS idx_uh_conn ON usageHistory(connectionId)"]},usageDaily:{columns:{dateKey:"TEXT PRIMARY KEY",data:"TEXT NOT NULL"}},keyPool:{columns:{id:"TEXT PRIMARY KEY",provider:"TEXT NOT NULL",name:"TEXT",key:"TEXT NOT NULL",data:"TEXT",createdAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_kp_provider ON keyPool(provider)","CREATE UNIQUE INDEX IF NOT EXISTS idx_kp_provider_key ON keyPool(provider, key)"]},requestDetails:{columns:{id:"TEXT PRIMARY KEY",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",status:"TEXT",data:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_rd_ts ON requestDetails(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_rd_provider ON requestDetails(provider)","CREATE INDEX IF NOT EXISTS idx_rd_model ON requestDetails(model)","CREATE INDEX IF NOT EXISTS idx_rd_conn ON requestDetails(connectionId)"]}};function f(a,b){let c=Object.entries(b.columns).map(([a,b])=>`${a} ${b}`);return b.primaryKey&&c.push(b.primaryKey),`CREATE TABLE IF NOT EXISTS ${a} (${c.join(", ")})`}}};
9
+ `,e={_meta:{columns:{key:"TEXT PRIMARY KEY",value:"TEXT NOT NULL"}},settings:{columns:{id:"INTEGER PRIMARY KEY CHECK (id = 1)",data:"TEXT NOT NULL"}},providerConnections:{columns:{id:"TEXT PRIMARY KEY",provider:"TEXT NOT NULL",authType:"TEXT NOT NULL",name:"TEXT",email:"TEXT",priority:"INTEGER",isActive:"INTEGER DEFAULT 1",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pc_provider ON providerConnections(provider)","CREATE INDEX IF NOT EXISTS idx_pc_provider_active ON providerConnections(provider, isActive)","CREATE INDEX IF NOT EXISTS idx_pc_priority ON providerConnections(provider, priority)"]},providerNodes:{columns:{id:"TEXT PRIMARY KEY",type:"TEXT",name:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pn_type ON providerNodes(type)"]},proxyPools:{columns:{id:"TEXT PRIMARY KEY",isActive:"INTEGER DEFAULT 1",testStatus:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pp_active ON proxyPools(isActive)","CREATE INDEX IF NOT EXISTS idx_pp_status ON proxyPools(testStatus)"]},apiKeys:{columns:{id:"TEXT PRIMARY KEY",key:"TEXT UNIQUE NOT NULL",name:"TEXT",machineId:"TEXT",isActive:"INTEGER DEFAULT 1",scope:"TEXT DEFAULT 'full'",createdAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_ak_key ON apiKeys(key)"]},apiKeyPools:{columns:{poolKey:"TEXT PRIMARY KEY",keys:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"}},combos:{columns:{id:"TEXT PRIMARY KEY",name:"TEXT UNIQUE NOT NULL",kind:"TEXT",models:"TEXT NOT NULL",sortOrder:"INTEGER DEFAULT 0",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_combo_name ON combos(name)"]},exposeCombos:{columns:{id:"TEXT PRIMARY KEY",name:"TEXT UNIQUE NOT NULL",kind:"TEXT",models:"TEXT NOT NULL",sortOrder:"INTEGER DEFAULT 0",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_expose_combo_name ON exposeCombos(name)"]},kv:{columns:{scope:"TEXT NOT NULL",key:"TEXT NOT NULL",value:"TEXT NOT NULL"},primaryKey:"PRIMARY KEY (scope, key)",indexes:["CREATE INDEX IF NOT EXISTS idx_kv_scope ON kv(scope)"]},usageHistory:{columns:{id:"INTEGER PRIMARY KEY AUTOINCREMENT",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",apiKey:"TEXT",endpoint:"TEXT",promptTokens:"INTEGER DEFAULT 0",completionTokens:"INTEGER DEFAULT 0",cost:"REAL DEFAULT 0",status:"TEXT",tokens:"TEXT",meta:"TEXT"},indexes:["CREATE INDEX IF NOT EXISTS idx_uh_ts ON usageHistory(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_provider ON usageHistory(provider)","CREATE INDEX IF NOT EXISTS idx_uh_model ON usageHistory(model)","CREATE INDEX IF NOT EXISTS idx_uh_conn ON usageHistory(connectionId)"]},usageDaily:{columns:{dateKey:"TEXT PRIMARY KEY",data:"TEXT NOT NULL"}},keyPool:{columns:{id:"TEXT PRIMARY KEY",provider:"TEXT NOT NULL",name:"TEXT",key:"TEXT NOT NULL",data:"TEXT",createdAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_kp_provider ON keyPool(provider)","CREATE UNIQUE INDEX IF NOT EXISTS idx_kp_provider_key ON keyPool(provider, key)"]},requestDetails:{columns:{id:"TEXT PRIMARY KEY",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",status:"TEXT",data:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_rd_ts ON requestDetails(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_rd_provider ON requestDetails(provider)","CREATE INDEX IF NOT EXISTS idx_rd_model ON requestDetails(model)","CREATE INDEX IF NOT EXISTS idx_rd_conn ON requestDetails(connectionId)"]}};function f(a,b){let c=Object.entries(b.columns).map(([a,b])=>`${a} ${b}`);return b.primaryKey&&c.push(b.primaryKey),`CREATE TABLE IF NOT EXISTS ${a} (${c.join(", ")})`}}};
@@ -1 +1 @@
1
- exports.id=3617,exports.ids=[3617],exports.modules={8590:(a,b,c)=>{"use strict";c.d(b,{$B:()=>U,Bc:()=>s,I9:()=>J,Ib:()=>v,Og:()=>n,Ql:()=>M,iD:()=>S,jR:()=>P,jT:()=>R,oD:()=>l,qZ:()=>X});var d=c(16698),e=c(61408),f=c(86522),g=c(77598),h=c(95538),i=c(57843),j=c(54444),k=c(44418);let l=3e5,m={codex:3e5,openai:3e5,claude:3e5,"gitlab-duo":3e5,kiro:3e5,"kimi-coding":3e5,qwen:3e5,iflow:864e5,antigravity:9e5,agy:9e5};function n(a,b){let c=b?.refreshLeadMs;return"number"==typeof c&&Number.isFinite(c)&&c>0?c:m[a]??l}let o=new Map,p=new Map,q=new Map,r=new d.AsyncLocalStorage;function s(a,b){return a?r.run(a,b):b()}let t=new d.AsyncLocalStorage,u={skipped:0,persisted:0};function v(a,b){return a?t.run(a,b):b()}async function w(a){let b,c=t.getStore();if(!c||!c.expectedRefreshToken)return!1;try{b=await c.reread()}catch{return!1}return(0,i.Jv)(c.expectedRefreshToken,b)?(u.skipped++,a?.warn?.("TOKEN_REFRESH","CAS guard: skipping persist — a concurrent writer already rotated the refresh_token (#4038)"),!0):(u.persisted++,!1)}function x(a){let b=new URLSearchParams;for(let[c,d]of Object.entries(a))"string"==typeof d&&d.length>0&&b.set(c,d);return b}function y(a,b){let c=(0,g.pbkdf2Sync)(b,"omniroute-token-cache",1e3,32,"sha256").toString("hex");return`${a}:${c}`}let z=new Set(["invalid_grant","invalid_request","refresh_token_reused","invalid_token","expired_token","unauthorized_client","access_denied"]);function A(a,b=0){if(null==a||b>6)return null;if("string"==typeof a){let c=a.trim();if(!c)return null;if(z.has(c))return c;if("{"===c[0]||"["===c[0]||'"'===c[0])try{let a=A(JSON.parse(c),b+1);if(a)return a}catch{}let d=c.match(/"error(?:_code)?"\s*:\s*"([a-z_]+)"/i);return d&&z.has(d[1])?d[1]:null}return"object"==typeof a?A(a.error,b+1)??A(a.code,b+1)??A(a.error_code,b+1):null}async function B(a){let b=await a.text().catch(()=>""),c=b;try{c=JSON.parse(b)}catch{}let d=A(c)??A(b);return{rawText:b,code:d}}async function C(a,b,c,d,f=null){let g=e.xq[a],i=g?.refreshUrl||g?.tokenUrl;if(!g||!i)return d?.warn?.("TOKEN_REFRESH",`No refresh endpoint configured for provider: ${a}`),null;if(!b)return d?.warn?.("TOKEN_REFRESH",`No refresh token available for provider: ${a}`),null;try{let c=new URLSearchParams({grant_type:"refresh_token",refresh_token:b});g.clientId&&c.set("client_id",g.clientId),g.clientSecret&&c.set("client_secret",g.clientSecret);let e=await (0,h.jf)(f,()=>fetch(i,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:c}));if(!e.ok){let b=await e.text();d?.error?.("TOKEN_REFRESH",`Failed to refresh token for ${a}`,{status:e.status,error:b});let c=A(b);if("invalid_grant"===c||"invalid_request"===c)return{error:"unrecoverable_refresh_error",code:c};return null}let j=await e.json();return d?.info?.("TOKEN_REFRESH",`Successfully refreshed token for ${a}`,{hasNewAccessToken:!!j.access_token,hasNewRefreshToken:!!j.refresh_token,expiresIn:j.expires_in}),{accessToken:j.access_token,refreshToken:j.refresh_token||b,expiresIn:j.expires_in}}catch(b){return d?.error?.("TOKEN_REFRESH",`Error refreshing token for ${a}`,{error:b.message}),null}}async function D(a,b,c,d=null){if(!a)return c?.warn?.("TOKEN_REFRESH","No refresh token stored for Windsurf — token may be a long-lived API key"),null;if("import"===(b?.authMethod||"import"))return c?.debug?.("TOKEN_REFRESH","Windsurf import token is long-lived — no refresh needed"),null;let e=j.e.firebaseApiKey||"";if(!e)return c?.warn?.("TOKEN_REFRESH","Windsurf Firebase API key unavailable — skipping Firebase token refresh"),null;let f=`https://securetoken.googleapis.com/v1/token?key=${e}`;try{let b=await (0,h.jf)(d,()=>fetch(f,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:x({grant_type:"refresh_token",refresh_token:a})}));if(!b.ok){let a=await b.text();c?.error?.("TOKEN_REFRESH","Failed to refresh Windsurf Firebase token",{status:b.status,error:a.slice(0,200)});try{let b=JSON.parse(a),d="string"==typeof b?.error?.message?b.error.message:"string"==typeof b?.error?b.error:null;if("string"==typeof d&&(d.includes("USER_DISABLED")||d.includes("TOKEN_EXPIRED")||d.includes("INVALID_REFRESH_TOKEN")||d.includes("USER_NOT_FOUND")))return c?.error?.("TOKEN_REFRESH","Windsurf Firebase token is permanently invalid. Re-authentication required.",{fbCode:d}),{error:"unrecoverable_refresh_error",code:d}}catch{}return null}let e=await b.json(),g=parseInt(e.expires_in??"3600",10);return c?.info?.("TOKEN_REFRESH","Successfully refreshed Windsurf Firebase token",{expiresIn:g,hasNewIdToken:!!e.id_token}),{accessToken:e.id_token,refreshToken:e.refresh_token||a,expiresIn:g}}catch(a){return c?.error?.("TOKEN_REFRESH",`Network error refreshing Windsurf token: ${a instanceof Error?a.message:String(a)}`),null}}async function E(a,b,d=null){if(!a)return null;let{CODEBUDDY_CN_CONFIG:e}=await Promise.resolve().then(c.bind(c,54444));try{let c=await (0,h.jf)(d,()=>fetch(e.refreshUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json","User-Agent":e.userAgent,"X-Requested-With":"XMLHttpRequest","X-Domain":"copilot.tencent.com","X-Refresh-Token":a,"X-Auth-Refresh-Source":"plugin","X-Product":"SaaS"},body:"{}"}));if(!c.ok){let a=await c.text();return b?.error?.("TOKEN_REFRESH","Failed to refresh CodeBuddy CN token",{status:c.status,error:a}),null}let f=await c.json();if(f?.code!==0||!f?.data?.accessToken)return b?.error?.("TOKEN_REFRESH","CodeBuddy CN token refresh returned no token",{code:f?.code,msg:f?.msg}),null;return b?.info?.("TOKEN_REFRESH","Successfully refreshed CodeBuddy CN token",{hasNewAccessToken:!!f.data.accessToken,hasNewRefreshToken:!!f.data.refreshToken,expiresIn:f.data.expiresIn}),{accessToken:f.data.accessToken,refreshToken:f.data.refreshToken||a,expiresIn:f.data.expiresIn}}catch(a){return b?.error?.("TOKEN_REFRESH",`Network error refreshing CodeBuddy CN token: ${a?.message}`),null}}async function F(a,b,c=null){let d=e.xq.cline?.refreshUrl;if(!d)return b?.warn?.("TOKEN_REFRESH","No refresh URL configured for Cline"),null;try{let e=await (0,h.jf)(c,()=>fetch(d,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({refreshToken:a,grantType:"refresh_token",clientType:"extension"})}));if(!e.ok){let a=await e.text();b?.error?.("TOKEN_REFRESH","Failed to refresh Cline token",{status:e.status,error:a});let c=A(a);if("invalid_grant"===c||"invalid_request"===c)return{error:"unrecoverable_refresh_error",code:c};return null}let f=await e.json(),g=f?.data||f,i=g?.expiresAt,j=i?Math.max(1,Math.floor((new Date(i).getTime()-Date.now())/1e3)):void 0;return b?.info?.("TOKEN_REFRESH","Successfully refreshed Cline token",{hasNewAccessToken:!!g?.accessToken,hasNewRefreshToken:!!g?.refreshToken,expiresIn:j}),{accessToken:g?.accessToken,refreshToken:g?.refreshToken||a,expiresIn:j}}catch(a){return b?.error?.("TOKEN_REFRESH",`Network error refreshing Cline token: ${a.message}`),null}}async function G(a,b,c,d=null){let f=e.xq["kimi-coding"]?.refreshUrl||e.xq["kimi-coding"]?.tokenUrl;if(!f)return c?.warn?.("TOKEN_REFRESH","No refresh URL configured for Kimi Coding"),null;let i=b?.deviceId||(0,g.pbkdf2Sync)(a,"kimi-device-id",1e3,16,"sha256").toString("hex"),j=process.env.KIMI_CLI_VERSION||"1.36.0",k="u">typeof process?process.platform:"unknown",l=[k,"u">typeof process?process.arch:"unknown"].filter(Boolean).join(" ");try{let g=new URLSearchParams({grant_type:"refresh_token",refresh_token:a,client_id:e.xq["kimi-coding"]?.clientId||""}),m=await (0,h.jf)(d,()=>fetch(f,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json","X-Msh-Platform":"kimi_cli","X-Msh-Version":j,"X-Msh-Device-Model":b?.deviceModel||l,"X-Msh-Device-Id":i,"X-Msh-Device-Name":b?.deviceName||k,"X-Msh-Os-Version":b?.osVersion||k},body:g}));if(!m.ok){let a=await m.text();try{let b=JSON.parse(a),d=b?.error;if("invalid_grant"===d||"invalid_request"===d)return c?.error?.("TOKEN_REFRESH","Kimi Coding refresh token invalid. Re-authentication required.",{errorCode:d}),{error:"unrecoverable_refresh_error",code:d}}catch{}return c?.error?.("TOKEN_REFRESH","Failed to refresh Kimi Coding token",{status:m.status,error:a.slice(0,200)}),null}let n=await m.json();return c?.info?.("TOKEN_REFRESH","Successfully refreshed Kimi Coding token",{hasNewAccessToken:!!n.access_token,hasNewRefreshToken:!!n.refresh_token,expiresIn:n.expires_in}),{accessToken:n.access_token,refreshToken:n.refresh_token||a,expiresIn:n.expires_in,tokenType:n.token_type,scope:n.scope}}catch(a){return c?.error?.("TOKEN_REFRESH",`Network error refreshing Kimi Coding token: ${a instanceof Error?a.message:String(a)}`),null}}async function H(a,b,c,d=null){if(!a)return c?.warn?.("TOKEN_REFRESH","No refresh token for GitLab Duo"),null;let f=(0,k.L_)(b),g=(0,k.Tg)(f).tokenUrl,i=b?.clientId||e.xq["gitlab-duo"]?.clientId||process.env.GITLAB_DUO_OAUTH_CLIENT_ID||process.env.GITLAB_OAUTH_CLIENT_ID||"";try{let b=await (0,h.jf)(d,()=>fetch(g,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:x({grant_type:"refresh_token",refresh_token:a,client_id:i})}));if(!b.ok){let a=await b.text();try{let b=JSON.parse(a).error;if("invalid_grant"===b||"invalid_request"===b)return c?.error?.("TOKEN_REFRESH","GitLab Duo refresh token invalid. Re-authentication required.",{errorCode:b}),{error:"unrecoverable_refresh_error",code:b}}catch{}return c?.error?.("TOKEN_REFRESH","Failed to refresh GitLab Duo token",{status:b.status,error:a.slice(0,200)}),null}let e=await b.json();return c?.info?.("TOKEN_REFRESH","Successfully refreshed GitLab Duo token",{hasNewAccessToken:!!e.access_token,hasNewRefreshToken:!!e.refresh_token,expiresIn:e.expires_in}),{accessToken:e.access_token,refreshToken:e.refresh_token||a,expiresIn:e.expires_in}}catch(a){return c?.error?.("TOKEN_REFRESH",`Network error refreshing GitLab Duo token: ${a instanceof Error?a.message:String(a)}`),null}}async function I(a,b,c=null){try{let d=x({grant_type:"refresh_token",refresh_token:a,client_id:e.xq.claude.clientId}),f=await (0,h.jf)(c,()=>fetch(e.NA.anthropic.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json","anthropic-beta":"oauth-2025-04-20"},body:d.toString()}));if(!f.ok){let{rawText:a,code:c}=await B(f);if(b?.error?.("TOKEN_REFRESH","Failed to refresh Claude OAuth token",{status:f.status,error:a.slice(0,300)}),"invalid_grant"===c||"invalid_request"===c)return{error:"unrecoverable_refresh_error",code:c};return null}let g=await f.json();return b?.info?.("TOKEN_REFRESH","Successfully refreshed Claude OAuth token",{hasNewAccessToken:!!g.access_token,hasNewRefreshToken:!!g.refresh_token,expiresIn:g.expires_in}),{accessToken:g.access_token,refreshToken:g.refresh_token||a,expiresIn:g.expires_in}}catch(a){return b?.error?.("TOKEN_REFRESH",`Network error refreshing Claude token: ${a.message}`),null}}async function J(a,b,c,d,f=null){let g=await (0,h.jf)(f,()=>fetch(e.NA.google.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:x({grant_type:"refresh_token",refresh_token:a,client_id:b,client_secret:c})}));if(!g.ok){let a=await g.text();d?.error?.("TOKEN_REFRESH","Failed to refresh Google token",{status:g.status,error:a.slice(0,200)});try{let b=JSON.parse(a);if("invalid_grant"===b.error)return d?.error?.("TOKEN_REFRESH","Google refresh token invalid. Re-authentication required.",{provider:"google"}),{error:"unrecoverable_refresh_error",code:"invalid_grant"}}catch{}return null}let i=await g.json();return d?.info?.("TOKEN_REFRESH","Successfully refreshed Google token",{hasNewAccessToken:!!i.access_token,hasNewRefreshToken:!!i.refresh_token,expiresIn:i.expires_in}),{accessToken:i.access_token,refreshToken:i.refresh_token||a,expiresIn:i.expires_in}}async function K(a,b,c=null){let d=e.NA.qwen.token;try{let f=await (0,h.jf)(c,()=>fetch(d,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:x({grant_type:"refresh_token",refresh_token:a,client_id:e.xq.qwen.clientId})}));if(200===f.status){let c=await f.json();return b?.info?.("TOKEN_REFRESH","Successfully refreshed Qwen token",{hasNewAccessToken:!!c.access_token,hasNewRefreshToken:!!c.refresh_token,expiresIn:c.expires_in}),{accessToken:c.access_token,refreshToken:c.refresh_token||a,expiresIn:c.expires_in,providerSpecificData:c.resource_url?{resourceUrl:c.resource_url}:void 0}}{let a=await f.text().catch(()=>""),c=null;try{let b=JSON.parse(a);c=b?.error}catch{}if("invalid_request"===c||"invalid_grant"===c)return b?.error?.("TOKEN_REFRESH","Qwen refresh token is invalid or expired. Re-authentication required.",{status:f.status,errorCode:c}),{error:"unrecoverable_refresh_error",code:c};b?.warn?.("TOKEN_REFRESH","Error with Qwen endpoint",{status:f.status,error:a})}}catch(a){b?.warn?.("TOKEN_REFRESH","Network error trying Qwen endpoint",{error:a.message})}return b?.error?.("TOKEN_REFRESH","Failed to refresh Qwen token"),null}async function L(a,b,c=null){try{let d=await (0,h.jf)(c,()=>fetch(e.NA.openai.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:x({grant_type:"refresh_token",refresh_token:a,client_id:e.xq.codex.clientId})}));if(!d.ok){let a=await d.text(),c=null;try{let b=JSON.parse(a);c=b?.error?.code||("string"==typeof b?.error?b.error:null)}catch{}if("refresh_token_reused"===c||"invalid_grant"===c||"token_expired"===c||"invalid_token"===c)return b?.error?.("TOKEN_REFRESH","Codex refresh token already used or invalid. Re-authentication required.",{status:d.status,errorCode:c}),{error:"unrecoverable_refresh_error",code:c};if(401===d.status){let a=c||"unauthorized";return b?.error?.("TOKEN_REFRESH","Codex OAuth token endpoint returned 401. Re-authentication required.",{status:d.status,errorCode:a}),{error:"unrecoverable_refresh_error",code:a}}return b?.error?.("TOKEN_REFRESH","Failed to refresh Codex token",{status:d.status,error:a}),null}let f=await d.json();return b?.info?.("TOKEN_REFRESH","Successfully refreshed Codex token",{hasNewAccessToken:!!f.access_token,hasNewRefreshToken:!!f.refresh_token,expiresIn:f.expires_in}),{accessToken:f.access_token,refreshToken:f.refresh_token||a,expiresIn:f.expires_in}}catch(a){return b?.error?.("TOKEN_REFRESH",`Network error refreshing Codex token: ${a.message}`),null}}async function M(a,b,c,d=null){try{let f=b?.authMethod,g=b?.clientId,i=b?.clientSecret,j=b?.region;if(g&&i&&"imported"!==f){let b=`https://oidc.${j||"us-east-1"}.amazonaws.com/token`,e=await (0,h.jf)(d,()=>fetch(b,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({clientId:g,clientSecret:i,refreshToken:a,grantType:"refresh_token"})}));if(!e.ok){let f,g=await e.text();try{let a=JSON.parse(g);f=a.__type||a.error}catch{}if("InvalidGrantException"===f||"ExpiredTokenException"===f||"invalid_grant"===f)return c?.error?.("TOKEN_REFRESH","Kiro AWS refresh token expired/invalid. Re-authentication required.",{awsErrorType:f}),{error:"unrecoverable_refresh_error",code:f};c?.warn?.("TOKEN_REFRESH","Kiro OIDC refresh failed, attempting client re-registration...",{status:e.status,error:g.slice(0,200)});try{let e=`https://oidc.${j||"us-east-1"}.amazonaws.com/client/register`,f=await (0,h.jf)(d,()=>fetch(e,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({clientName:"kiro-oauth-client",clientType:"public",scopes:["codewhisperer:completions","codewhisperer:analysis","codewhisperer:conversations"],grantTypes:["urn:ietf:params:oauth:grant-type:device_code","refresh_token"],issuerUrl:"https://identitycenter.amazonaws.com/ssoins-722374e8c3c8e6c6"})}));if(f.ok){let e=await f.json(),g=await (0,h.jf)(d,()=>fetch(b,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({clientId:e.clientId,clientSecret:e.clientSecret,refreshToken:a,grantType:"refresh_token"})}));if(g.ok){let b=await g.json();return c?.info?.("TOKEN_REFRESH","Kiro refresh recovered via client re-registration",{hasNewAccessToken:!!b.accessToken,expiresIn:b.expiresIn}),{accessToken:b.accessToken,refreshToken:b.refreshToken||a,expiresIn:b.expiresIn,_newClientId:e.clientId,_newClientSecret:e.clientSecret,_newClientSecretExpiresAt:e.clientSecretExpiresAt}}}}catch(a){c?.warn?.("TOKEN_REFRESH","Kiro client re-registration fallback failed",{error:String(a)})}return c?.error?.("TOKEN_REFRESH","Failed to refresh Kiro AWS token",{status:e.status,error:g.slice(0,200)}),null}let f=await e.json();return c?.info?.("TOKEN_REFRESH","Successfully refreshed Kiro AWS token",{hasNewAccessToken:!!f.accessToken,expiresIn:f.expiresIn}),{accessToken:f.accessToken,refreshToken:f.refreshToken||a,expiresIn:f.expiresIn}}let k=e.xq.kiro.tokenUrl;if(!k)return c?.error?.("TOKEN_REFRESH","Missing Kiro token endpoint"),null;let l=await (0,h.jf)(d,()=>fetch(k,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({refreshToken:a})}));if(!l.ok){let a=await l.text();try{let b=JSON.parse(a),d=b.__type||b.error;if("InvalidGrantException"===d||"ExpiredTokenException"===d||"invalid_grant"===d)return c?.error?.("TOKEN_REFRESH","Kiro social refresh token expired/invalid. Re-authentication required.",{awsErrorType:d}),{error:"unrecoverable_refresh_error",code:d}}catch{}return c?.error?.("TOKEN_REFRESH","Failed to refresh Kiro social token",{status:l.status,error:a.slice(0,200)}),null}let m=await l.json();return c?.info?.("TOKEN_REFRESH","Successfully refreshed Kiro social token",{hasNewAccessToken:!!m.accessToken,expiresIn:m.expiresIn}),{accessToken:m.accessToken,refreshToken:m.refreshToken||a,expiresIn:m.expiresIn}}catch(a){return c?.error?.("TOKEN_REFRESH",`Network error refreshing Kiro token: ${a.message}`),null}}async function N(a,b,c=null){if(!e.NA.qoder.token||!e.xq.qoder.clientId||!e.xq.qoder.clientSecret)return b?.warn?.("TOKEN_REFRESH","Qoder OAuth refresh skipped: browser OAuth is not configured in this environment"),null;let d=btoa(`${e.xq.qoder.clientId}:${e.xq.qoder.clientSecret}`),f=await (0,h.jf)(c,()=>fetch(e.NA.qoder.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json",Authorization:`Basic ${d}`},body:x({grant_type:"refresh_token",refresh_token:a,client_id:e.xq.qoder.clientId,client_secret:e.xq.qoder.clientSecret})}));if(!f.ok){let a=await f.text();b?.error?.("TOKEN_REFRESH","Failed to refresh Qoder token",{status:f.status,error:a});let c=A(a);return"invalid_grant"===c||"invalid_request"===c?{error:"unrecoverable_refresh_error",code:c}:null}let g=await f.json();return b?.info?.("TOKEN_REFRESH","Successfully refreshed Qoder token",{hasNewAccessToken:!!g.access_token,hasNewRefreshToken:!!g.refresh_token,expiresIn:g.expires_in}),{accessToken:g.access_token,refreshToken:g.refresh_token||a,expiresIn:g.expires_in}}async function O(a,b,c=null){let d=await (0,h.jf)(c,()=>fetch(e.NA.github.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:x({grant_type:"refresh_token",refresh_token:a,client_id:e.xq.github.clientId,client_secret:e.xq.github.clientSecret})}));if(!d.ok){let a=await d.text();b?.error?.("TOKEN_REFRESH","Failed to refresh GitHub token",{status:d.status,error:a});let c=A(a);return"invalid_grant"===c||"invalid_request"===c?{error:"unrecoverable_refresh_error",code:c}:null}let f=await d.json();return b?.info?.("TOKEN_REFRESH","Successfully refreshed GitHub token",{hasNewAccessToken:!!f.access_token,hasNewRefreshToken:!!f.refresh_token,expiresIn:f.expires_in}),{accessToken:f.access_token,refreshToken:f.refresh_token||a,expiresIn:f.expires_in}}async function P(a,b,c=null){try{let d=await (0,h.jf)(c,()=>fetch("https://api.github.com/copilot_internal/v2/token",{headers:(0,f.H_)(`token ${a}`)}));if(!d.ok){let a=await d.text();return b?.error?.("TOKEN_REFRESH","Failed to refresh Copilot token",{status:d.status,error:a}),null}let e=await d.json();return b?.info?.("TOKEN_REFRESH","Successfully refreshed Copilot token",{hasToken:!!e.token,expiresAt:e.expires_at}),{token:e.token,expiresAt:e.expires_at}}catch(a){return b?.error?.("TOKEN_REFRESH","Error refreshing Copilot token",{error:a.message}),null}}async function Q(a,b,c,d=null){switch(a){case"gemini":case"antigravity":case"agy":return await J(b.refreshToken,e.xq[a].clientId,e.xq[a].clientSecret,c,d);case"claude":return await I(b.refreshToken,c,d);case"codex":return await L(b.refreshToken,c,d);case"qwen":return await K(b.refreshToken,c,d);case"qoder":return await N(b.refreshToken,c,d);case"github":return await O(b.refreshToken,c,d);case"kiro":case"amazon-q":return await M(b.refreshToken,b.providerSpecificData,c,d);case"cline":return await F(b.refreshToken,c,d);case"kimi-coding":return await G(b.refreshToken,b.providerSpecificData,c,d);case"gitlab-duo":return await H(b.refreshToken,b.providerSpecificData,c,d);case"windsurf":case"devin-cli":return await D(b.refreshToken,b.providerSpecificData,c,d);case"codebuddy-cn":return await E(b.refreshToken,c,d);default:return C(a,b.refreshToken,b,c,d)}}function R(a){return a&&"object"==typeof a&&("unrecoverable_refresh_error"===a.error||"refresh_token_reused"===a.error||"invalid_request"===a.error||"invalid_grant"===a.error)}async function S(a,b,d,e=null,f){if(!b||!b.refreshToken||"string"!=typeof b.refreshToken)return d?.warn?.("TOKEN_REFRESH",`No valid refresh token available for provider: ${a}`),null;let g=f??r.getStore(),h=b.connectionId;if(h&&"string"==typeof h){let f=p.get(h);if(f)return f.waiters++,d?.info?.("TOKEN_REFRESH","Concurrent refresh detected — sharing in-flight refresh",{provider:a,connectionId:h,waiters:f.waiters}),f.promise;let i={promise:null,waiters:0};return i.promise=(async()=>{let f=await T(a,b,d,e);if(f?.accessToken&&g){if(await w(d))return f;try{await g(f)}catch(e){let{sanitizeErrorMessage:b}=await c.e(3659).then(c.bind(c,43659));throw d?.error?.("TOKEN_REFRESH",`onPersist callback failed for ${a}/${h}: ${b(e instanceof Error?e:Error(String(e)))}`),e}}return f})().finally(()=>{p.delete(h)}),p.set(h,i),i.promise}let j=y(a,b.refreshToken);if(o.has(j))return d?.info?.("TOKEN_REFRESH",`Reusing in-flight refresh for ${a}`),o.get(j);let k=(0,i.Aj)(a,()=>Q(a,b,d,e)).then(async b=>{if(b?.accessToken&&g){if(await w(d))return b;try{await g(b)}catch(e){let{sanitizeErrorMessage:b}=await c.e(3659).then(c.bind(c,43659));throw d?.error?.("TOKEN_REFRESH",`Layer 2 onPersist callback failed for ${a}: ${b(e instanceof Error?e:Error(String(e)))}`),e}}else b?.accessToken&&!g&&d?.warn?.("TOKEN_REFRESH",`Layer 2 refresh succeeded for ${a} without onPersist — DB row will not be updated with rotated token. Callers should pass connectionId for Layer 1 atomicity.`);return b}).finally(()=>{o.delete(j)});return o.set(j,k),k}async function T(a,b,d,e){let f=function(a,b){!function(a=Date.now()){if(0!==q.size)for(let[b,c]of q.entries())c.expiresAt<=a&&q.delete(b)}();let c=y(a,b),d=q.get(c);if(d)return d.expiresAt<=Date.now()?void q.delete(c):d}(a,b.refreshToken);if(f)return d?.info?.("TOKEN_REFRESH",`Rotation map hit for ${a}. Returning cached rotated tokens (avoids family-revoke).`),f.result;if(b.connectionId)try{let{getProviderConnectionById:e}=await c.e(4713).then(c.bind(c,87094)),f=await e(b.connectionId);if(f&&f.refreshToken){let c=Date.now(),e=f.expiresAt?new Date(f.expiresAt).getTime():0;if(f.refreshToken!==b.refreshToken){if(d?.info?.("TOKEN_REFRESH",`Stale token detected in memory for ${a}. Using refreshed token from DB.`),e>c+6e4)return d?.info?.("TOKEN_REFRESH","DB token is still valid. Skipping OAuth refresh."),{accessToken:f.accessToken,refreshToken:f.refreshToken,expiresAt:f.expiresAt};b.refreshToken=f.refreshToken,b.accessToken=f.accessToken}}}catch(a){d?.warn?.("TOKEN_REFRESH",`Failed to check DB for stale token: ${a instanceof Error?a.message:String(a)}`)}let g=b.refreshToken,h=await (0,i.Aj)(a,()=>Q(a,b,d,e));return h&&"object"==typeof h&&!("error"in h)&&h.accessToken&&h.refreshToken&&function(a,b,c){if(!b||!c.refreshToken||b===c.refreshToken)return;let d=y(a,b);q.set(d,{result:c,expiresAt:Date.now()+6e4})}(a,g,h),h}let U=S,V={};async function W(a,b){return await new Promise((c,d)=>{let e=setTimeout(()=>c(null),b);"object"==typeof e&&"unref"in e&&e.unref?.(),a().then(a=>{clearTimeout(e),c(a)},a=>{clearTimeout(e),d(a)})})}async function X(a,b=3,c=null,d="unknown"){let e;if((e=V[d])&&e.blockedUntil&&(e.blockedUntil>Date.now()||(delete V[d],0)))return c?.warn?.("TOKEN_REFRESH",`⚡ Circuit breaker active for ${d}, skipping refresh`),null;for(let e=0;e<b;e++){if(e>0){let a=1e3*e;c?.debug?.("TOKEN_REFRESH",`Retry ${e}/${b} after ${a}ms`),await new Promise(b=>setTimeout(b,a))}try{let b=await W(a,3e4);if(R(b))return c?.warn?.("TOKEN_REFRESH",`Unrecoverable refresh error for ${d}: ${b.error} — skipping retries`),b;if(b)return V[d]&&delete V[d],b}catch(a){c?.warn?.("TOKEN_REFRESH",`Attempt ${e+1}/${b} failed: ${a.message}`)}}return!function(a,b=null){V[a]||(V[a]={failures:0,blockedUntil:0}),V[a].failures++,V[a].failures>=5&&(V[a].blockedUntil=Date.now()+18e5,b?.error?.("TOKEN_REFRESH",`🔴 Circuit breaker tripped for ${a}: 5 consecutive failures. Blocked for 30min. Provider needs re-authentication.`))}(d,c),c?.error?.("TOKEN_REFRESH",`All ${b} retry attempts failed for ${d}`),null}},20927:(a,b,c)=>{"use strict";var d=c(75919),e=c.n(d),f=c(28064);e()&&!e().markAsUncloneable&&(e().markAsUncloneable=function(a){if(e().markAsUntransferable)try{e().markAsUntransferable(a)}catch{}}),void 0===Promise.withResolvers&&(Promise.withResolvers=function(){let a,b;return{promise:new Promise((c,d)=>{a=c,b=d}),resolve:a,reject:b}}),void 0===globalThis.WebSocket&&(globalThis.WebSocket=f.WebSocket)},39727:()=>{},47990:()=>{},54444:(a,b,c)=>{"use strict";c.d(b,{e:()=>d});let d=null},57843:(a,b,c)=>{"use strict";c.d(b,{Aj:()=>f,Jv:()=>g});let d={codex:"openai-auth0",openai:"openai-auth0",claude:"anthropic-oauth","gitlab-duo":"gitlab-duo",kiro:"kiro","kimi-coding":"kimi-coding",qwen:"qwen"},e=new Map;async function f(a,b){let c,f=d[a]??null;if(!f)return b();let g=e.get(f)??Promise.resolve(),h=new Promise(a=>{c=a}),i=g.then(()=>h);e.set(f,i),await g.catch(()=>{});try{return await b()}finally{if(e.get(f)!==i){let a=function(){let a=process.env.CODEX_REFRESH_SPACING_MS;if(void 0===a||""===a)return 2e3;let b=Number(a);return Number.isFinite(b)&&b>=0?b:2e3}();a>0&&await new Promise(b=>setTimeout(b,a))}c(),e.get(f)===i&&e.delete(f)}}function g(a,b){return"string"==typeof a&&a.length>0&&"string"==typeof b&&b.length>0&&b!==a}},58643:(a,b,c)=>{"use strict";let d;c.d(b,{A:()=>g});var e=c(99765);try{let a=c(3725);d="function"==typeof a.createSession?a.createSession:null}catch{d=null}class f{constructor(){this.session=null,this.failureCount=0,this.maxFailures=3,this.baseCooldownMs=3e4,this.cooldownMs=3e4,this.cooldownMultiplier=1,this.MAX_COOLDOWN_MS=6e5,this.circuitOpenUntil=0,this.circuitTripped=!1,this._libraryAvailable=!!d}get available(){return!!this._libraryAvailable&&(!this.circuitTripped||Date.now()>=this.circuitOpenUntil)}recordFailure(){this.failureCount++,this.failureCount>=this.maxFailures&&(this.circuitOpenUntil=Date.now()+this.cooldownMs,this.circuitTripped=!0,this.session&&(Promise.resolve(this.session.close()).catch(()=>{}),this.session=null),console.warn(`[TlsClient] Circuit opened after ${this.failureCount} consecutive failures, cooling down for ${this.cooldownMs}ms`),this.escalateCooldown())}recordSuccess(){this.failureCount=0,this.circuitTripped&&(this.cooldownMultiplier=1,this.cooldownMs=this.baseCooldownMs,console.log("[TlsClient] Circuit closed (success after cooldown)"),this.circuitTripped=!1)}escalateCooldown(){this.cooldownMultiplier=Math.min(2*this.cooldownMultiplier,20),this.cooldownMs=Math.min(this.baseCooldownMs*this.cooldownMultiplier,this.MAX_COOLDOWN_MS)}checkCircuit(){return!this.circuitTripped||Date.now()>=this.circuitOpenUntil&&(console.log("[TlsClient] Half-open: retrying after cooldown"),!0)}async getSession(){if(!this.checkCircuit()||!this.available)return null;if(this.session)return this.session;let a=d;if(!a)return null;let b=process.env.HTTPS_PROXY||process.env.https_proxy||process.env.HTTP_PROXY||process.env.http_proxy||process.env.ALL_PROXY||process.env.all_proxy||void 0,c={browser:"chrome_124",os:"macos"};return b&&(c.proxy=b,console.log(`[TlsClient] Using proxy: ${b}`)),this.session=await a(c),console.log("[TlsClient] Session created (Chrome 124 TLS fingerprint)"),this.session}async fetch(a,b={}){if(!this.checkCircuit())throw Error("wreq-js circuit open — skipping TLS request");try{let c=await this.getSession();if(!c)throw Error("wreq-js not available");let{timeoutMs:d}=(0,e.uw)(process.env,a=>{console.warn(`[TlsClient] ${a}`)}),f={method:(b.method||"GET").toUpperCase(),headers:function(a){if(!a)return;if(a instanceof Headers)return Object.fromEntries(a.entries());if(Array.isArray(a))return Object.fromEntries(a.map(([a,b])=>[a,String(b)]));let b={};for(let[c,d]of Object.entries(a))"string"==typeof d&&(b[c]=d);return b}(b.headers),body:b.body,redirect:"manual"===b.redirect?"manual":"follow",timeout:d};b.signal&&(f.signal=b.signal);let g=await c.fetch(a,f);return this.recordSuccess(),g}catch(a){throw a instanceof Error&&("AbortError"===a.name||a.message.includes("aborted"))||this.recordFailure(),a}}async exit(){this.session&&(await this.session.close(),this.session=null)}resetCircuit(){this.failureCount=0,this.circuitTripped=!1,this.circuitOpenUntil=0}getCircuitState(){return{available:this.available,circuitTripped:this.circuitTripped,failureCount:this.failureCount,circuitOpenUntil:this.circuitOpenUntil,coolDownRemainingMs:this.circuitOpenUntil>0?Math.max(0,this.circuitOpenUntil-Date.now()):0}}}let g=new f},68404:(a,b,c)=>{"use strict";c.d(b,{KS:()=>d,wX:()=>e});let d=()=>!1,e=()=>!1},69889:(a,b,c)=>{"use strict";c.d(b,{Bm:()=>e,UL:()=>g,wI:()=>f});var d=c(77030);function e(a){return"string"!=typeof a?"":a.startsWith("[")&&a.endsWith("]")?a.slice(1,-1):a}function f(a){let b=e(a),c=(0,d.isIP)(b);return 0===c?null:c}function g(a){return"ipv4"===a||"ipv6"===a?a:"auto"}},85376:(a,b,c)=>{"use strict";c.d(b,{R4:()=>y,I_:()=>A,DJ:()=>q,Sn:()=>r,g4:()=>o,zP:()=>x,HN:()=>z,OK:()=>w}),c(20927);var d=c(47774),e=c(20406),f=c(99765),g=c(69889),h=c(13092);let i=Symbol.for("omniroute.proxyDispatcher.cache"),j=Symbol.for("omniroute.proxyDispatcher.default"),k=Symbol.for("omniroute.proxyDispatcher.retry");class l{constructor(a){this.nextIndex=0,this.dispatchers=a}dispatch(a,b){let c=this.dispatchers[this.nextIndex%this.dispatchers.length];return this.nextIndex=(this.nextIndex+1)%this.dispatchers.length,c.dispatch(a,b)}close(a){let b=Promise.all(this.dispatchers.map(a=>a.close())).then(()=>void 0);return a?void b.then(a):b}destroy(a,b){let c="function"==typeof a?a:b,d="function"==typeof a?null:a??null,e=Promise.all(this.dispatchers.map(a=>a.destroy(d))).then(()=>void 0);return c?void e.then(c):e}}let m=new Set(["http:","https:","socks5:"]),n=new Set(["vercel","deno","cloudflare"]);function o(a){return"string"==typeof a&&n.has(a)}function p(){let a=(0,f.pf)(process.env,a=>{console.warn(`[ProxyDispatcher] ${a}`)});return{headersTimeout:a.fetchHeadersTimeoutMs,bodyTimeout:a.fetchBodyTimeoutMs,connectTimeout:a.fetchConnectTimeoutMs,keepAliveTimeout:a.fetchKeepAliveTimeoutMs,keepAliveMaxTimeout:a.fetchKeepAliveTimeoutMs}}function q(){let a=globalThis[j];if(!a){var b,c;let e;c=function(a=process.env){let b=a.OMNIROUTE_DIRECT_DISPATCHER_CONNECTIONS;if(null==b||""===b.trim())return 32;let c=Number(b);return!Number.isFinite(c)||c<1?(console.warn(`[ProxyDispatcher] Invalid OMNIROUTE_DIRECT_DISPATCHER_CONNECTIONS="${b}". Using default 32.`),32):Math.min(Math.floor(c),256)}(),e={...p(),connections:1,pipelining:0},b=a=new l(Array.from({length:c},()=>new d.Agent(e))),globalThis[j]=b}return a}function r(){let a=globalThis[k];if(!a){var b;b=a=new d.Agent({...p(),keepAliveTimeout:1,keepAliveMaxTimeout:1,pipelining:0}),globalThis[k]=b}return a}function s(a){try{let b=a.indexOf("://");if(-1===b)return null;let c=b+3,d=a.indexOf("/",c),e=-1===d?a.slice(c):a.slice(c,d),f=e.lastIndexOf(":"),g=e.lastIndexOf("@");if(-1!==f&&f>g){let a=e.slice(f+1);if(/^\d+$/.test(a)){let b=Number(a);if(Number.isInteger(b)&&b>=1&&b<=65535)return String(b)}}}catch{}return null}function t(a){return"https:"===a||"wss:"===a?"443":"socks5:"===a?"1080":"8080"}function u(a,b){if(!a)return t(b);let c=Number(a);if(!Number.isInteger(c)||c<1||c>65535)throw Error("[ProxyDispatcher] Invalid proxy port");return String(c)}function v(){return!["false","0","no","off"].includes((process.env.ENABLE_SOCKS5_PROXY??"").trim().toLowerCase())}function w(a){let b=s(a),c=new URL(a),d=b||c.port||t(c.protocol);return`${c.protocol}//${c.hostname}:${d}`}function x(a,b="proxy",{allowSocks5:c=v()}={}){var d;let e,f,h=a.match(/\?family=(ipv4|ipv6)$/),i=h?h[0]:"",j=i?a.slice(0,-i.length):a,k=s(j);try{e=new URL(j)}catch{throw Error(`[ProxyDispatcher] Invalid ${b} URL`)}if(!m.has(e.protocol))throw Error(`[ProxyDispatcher] Unsupported ${b} protocol: ${e.protocol.replace(":","")}`);if("socks5:"===e.protocol&&!c)throw Error("[ProxyDispatcher] SOCKS5 proxy is disabled (remove ENABLE_SOCKS5_PROXY=false to enable — it is ON by default)");if(!e.hostname)throw Error(`[ProxyDispatcher] Invalid ${b} host`);let l=k||u(e.port,e.protocol),n=(0,g.UL)((h?h[1]:e.searchParams.get("family"))??void 0),o=(f=(d=e).username?`${d.username}${d.password?`:${d.password}`:""}@`:"",`${d.protocol}//${f}${d.hostname}:${l}`);return"auto"===n?o:`${o}?family=${n}`}function y(a,b){let c=new URL(a);return{"x-relay-target":`${c.protocol}//${c.host}`,"x-relay-path":c.pathname+c.search,"x-relay-auth":b}}function z(a,{allowSocks5:b=v()}={}){if(!a)return null;if("string"==typeof a)return x(a,"context proxy",{allowSocks5:b});if("object"!=typeof a||Array.isArray(a))throw Error("[ProxyDispatcher] Invalid context proxy config");if(!a.host)return null;let c=String(a.type||"http").toLowerCase();if(n.has(c))return a.host?`https://${a.host}`:null;let d=`${c}:`;if(!m.has(d))throw Error(`[ProxyDispatcher] Unsupported context proxy protocol: ${c}`);if("socks5:"===d&&!b)throw Error("[ProxyDispatcher] SOCKS5 proxy is disabled (remove ENABLE_SOCKS5_PROXY=false to enable — it is ON by default)");let e=u(a.port,d),f=a.username?`${encodeURIComponent(a.username)}:${a.password?encodeURIComponent(a.password):""}@`:"",h=`${c}://${f}${a.host}:${e}`,i=(0,g.UL)(a.family),j=x(h,"context proxy",{allowSocks5:b});return"auto"===i?j:`${j}?family=${i}`}function A(a){let b,c=x(a,"proxy dispatcher"),f=((b=globalThis)[i]||(b[i]=new Map),b[i]),j=function(a=process.env){return{...p(),connections:function(a=process.env){let b=a.OMNIROUTE_PROXY_DISPATCHER_CONNECTIONS;if(null==b||""===b.trim())return 32;let c=Number(b);return!Number.isFinite(c)||c<1?(console.warn(`[ProxyDispatcher] Invalid OMNIROUTE_PROXY_DISPATCHER_CONNECTIONS="${b}". Using default 32.`),32):Math.min(Math.floor(c),256)}(a),keepAliveTimeout:1,keepAliveMaxTimeout:1,pipelining:0}}(),k=f.get(c);if(k)return k;let l=new URL(c),m=function(a){let b=(0,g.UL)(a.searchParams.get("family")??void 0),c=(0,g.wI)(a.hostname);if("auto"===b)return c;let d="ipv6"===b?6:4;if(null!==c&&c!==d)throw Error(`[ProxyDispatcher] Proxy family directive ${b} contradicts ${6===c?"IPv6":"IPv4"} literal host`);return d}(l);l.searchParams.delete("family");let n=c.replace(/\?family=(ipv4|ipv6)$/,""),o=s(n)||u(l.port,l.protocol);if("socks5:"===l.protocol){let a={type:5,host:(0,g.Bm)(l.hostname),port:Number(o)};l.username&&(a.userId=decodeURIComponent(l.username)),l.password&&(a.password=decodeURIComponent(l.password)),k=null===m?(0,e.vI)(a,j):function(a,b,c={}){let{connect:e,...f}=c;return new d.Agent({...f,connect:function(a,b,c={}){let e=(0,d.buildConnector)(c),f=6===b?{family:6,autoSelectFamily:!1}:4===b?{family:4,autoSelectFamily:!1}:{};return async(b,c)=>{let{protocol:d,hostname:g,port:i,httpSocket:j}=b;try{let k=(await h.SocksClient.createConnection({command:"connect",proxy:a,timeout:function(a=process.env){let b=a.SOCKS_HANDSHAKE_TIMEOUT_MS;if(null==b||""===b.trim())return 1e4;let c=Number(b);return!Number.isFinite(c)||c<1?1e4:Math.min(Math.floor(c),12e4)}(),destination:{host:g,port:i?Number.parseInt(i,10):"http:"===d?80:443},existing_socket:j,socket_options:f})).socket;if("https:"!==d)return c(null,k.setNoDelay());return e({...b,httpSocket:k},c)}catch(a){return c(a,null)}}}(a,b,e)})}(a,m,j)}else k=new d.ProxyAgent({uri:n,...j,...null!==m?{proxyTls:{family:m,autoSelectFamily:!1}}:{}});return f.set(c,k),k}},95538:(a,b,c)=>{"use strict";let d;c.d(b,{proxyAwareFetch:()=>C,l:()=>x,jf:()=>z}),c(20927);var e=c(16698),f=c(47774),g=c(85376),h=c(58643),i=c(68404),j=c(89718);let k=new Map;function l(a){let b=a.username?`${encodeURIComponent(a.username)}:${encodeURIComponent(a.password||"")}@`:"";return`${a.type}://${b}${a.host}:${a.port}`}async function m(a){let b=new Set;try{let a=await (0,j.P)("global");a?.proxy&&b.add(l(a.proxy))}catch{}try{for(let a of(await (0,j.zU)({includeSecrets:!0})))a.host&&a.port&&b.add(l(a))}catch{}try{for(let a of(await (0,j.Bb)({limit:5})))a.host&&a.port&&b.add(l(a))}catch{}if(a)try{let c=function(a){let b,c=process.env.NO_PROXY||process.env.no_proxy;if(c){let b;try{b=new URL(a).hostname.toLowerCase()}catch{return null}if(c.split(",").map(a=>a.trim().toLowerCase()).filter(Boolean).some(a=>"*"===a||(a.includes("*")?RegExp("^"+a.split("*").map(a=>a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join(".*")+"$").test(b):b===a||b.endsWith(`.${a}`))))return null}try{b=new URL(a).protocol}catch{return null}let d="https:"===b?process.env.HTTPS_PROXY||process.env.https_proxy||process.env.ALL_PROXY||process.env.all_proxy:process.env.HTTP_PROXY||process.env.http_proxy||process.env.ALL_PROXY||process.env.all_proxy;if(!d)return null;try{return(0,g.zP)(d,"environment proxy")}catch{return null}}(a);c&&b.add(c)}catch{}return Array.from(b)}async function n(a,b,c=3e3){let d=Date.now();try{let e=new AbortController,h=setTimeout(()=>e.abort(),c),i=(0,g.I_)(a);await (0,f.fetch)(b,{method:"HEAD",signal:e.signal,dispatcher:i,headers:{"User-Agent":"OmniRoute/1.0"}}),clearTimeout(h);let j=Date.now()-d;return{ok:!0,latencyMs:j}}catch{return{ok:!1,latencyMs:null}}}async function o(a,b){if(!a)return null;let c=function(a,b){try{let a=new URL(b),c=`${a.pathname||"/"}${a.search}`;return`${a.protocol}//${a.host}${c}`}catch{return a.toLowerCase()}}(a,b),d=k.get(c);if(d){if(d.expiresAt>Date.now())return d.proxyUrl||null;k.delete(c)}let e=await ((void 0)??m)(b);if(0===e.length)return null;let f=(await Promise.allSettled(e.map(async a=>{let{ok:c}=await ((void 0)??n)(a,b);return{proxyUrl:a,ok:c}}))).find(a=>"fulfilled"===a.status&&a.value.ok);if(f&&"fulfilled"===f.status){let a=f.value.proxyUrl;return k.set(c,{proxyUrl:a,expiresAt:Date.now()+3e5}),a}return k.set(c,{proxyUrl:"",expiresAt:Date.now()+3e5}),null}let p=new e.AsyncLocalStorage,q=new e.AsyncLocalStorage;function r(a){let b=[],c=new Set,d=a;for(let a=0;d&&a<5&&!c.has(d);a++){c.add(d);let a=d,e=["string"==typeof a.name&&"Error"!==a.name?a.name:null,"string"==typeof a.message?a.message.slice(0,160):null,null!=a.code?`code=${String(a.code)}`:null,null!=a.syscall?`syscall=${String(a.syscall)}`:null,null!=a.errno?`errno=${String(a.errno)}`:null,null!=a.address?`address=${String(a.address)}${null!=a.port?`:${String(a.port)}`:""}`:null].filter(Boolean).join(" ");if(e&&b.push(e),Array.isArray(a.errors))for(let c of a.errors.slice(0,4)){let a=c??{},d=[null!=a.code?`code=${String(a.code)}`:null,null!=a.syscall?`syscall=${String(a.syscall)}`:null,null!=a.address?`address=${String(a.address)}${null!=a.port?`:${String(a.port)}`:""}`:null].filter(Boolean).join(" ");d?b.push(`↳ ${d}`):"string"==typeof a.message&&b.push(`↳ ${a.message.slice(0,80)}`)}d=a.cause}return b.join(" | ")||String(a)}let s="u">typeof caches&&"object"==typeof caches,t=Symbol.for("omniroute.proxyFetch.state"),u=((d=globalThis)[t]||(d[t]={originalFetch:globalThis.fetch,proxyContext:new e.AsyncLocalStorage,isPatched:!1}),d[t]),v=u.originalFetch,w=u.proxyContext;function x(a){let b,c;try{b=new URL(a)}catch{b=null}if(b&&("localhost"===(c=b.hostname.toLowerCase().replace(/^\[/,"").replace(/\]$/,"").replace(/^::ffff:/i,""))||"0.0.0.0"===c||"127.0.0.1"===c||"::1"===c||c.endsWith(".local")||c.endsWith(".lan")||c.endsWith(".internal")||c.startsWith("192.168.")||c.startsWith("10.")||c.startsWith("127.")||c.startsWith("169.254.")||/^172\.(1[6-9]|2\d|3[0-1])\./.test(c)||/^100\.(6[4-9]|[7-9]\d|1[01]\d|12[0-7])\./.test(c)||/^f[cd][0-9a-f]*:/i.test(c)||c.startsWith("fe80:")))return{source:"direct",proxyUrl:null};let d=w.getStore();if(d)return{source:"context",proxyUrl:(0,g.HN)(d)};let e=function(a){let b;if(function(a){let b,c=process.env.NO_PROXY||process.env.no_proxy;if(!c)return!1;try{b=new URL(a)}catch{return!1}let d=b.hostname.toLowerCase(),e=b.port||("https:"===b.protocol?"443":"80");return c.split(",").map(a=>a.trim().toLowerCase()).filter(Boolean).some(a=>{if("*"===a)return!0;let[b,c]=a.split(":");if(c&&c!==e||!b)return!1;if(b.includes("*")){let a=b.split("*"),c=0,e=d.startsWith(a[0]);if(e){c=a[0].length;for(let b=1;b<a.length&&e;b++){let f=a[b];if(b===a.length-1)e=""===f||d.endsWith(f)&&d.length-f.length>=c;else{let a=f?d.indexOf(f,c):c;-1===a?e=!1:c=a+f.length}}}if(e)return!0}return b.startsWith(".")?d.endsWith(b)||d===b.slice(1):d===b||d.endsWith(`.${b}`)})}(a))return null;try{b=new URL(a).protocol}catch{return null}let c="https:"===b?process.env.HTTPS_PROXY||process.env.https_proxy||process.env.ALL_PROXY||process.env.all_proxy:process.env.HTTP_PROXY||process.env.http_proxy||process.env.ALL_PROXY||process.env.all_proxy;return c?(0,g.zP)(c,"environment proxy"):null}(a);return e?{source:"env",proxyUrl:e}:{source:"direct",proxyUrl:null}}function y(a){return"string"==typeof a?a:a&&"string"==typeof a.url?a.url:String(a)}async function z(a,b,d){if("function"!=typeof b)throw TypeError("runWithProxyContext requires a callback function");let e=w.getStore(),f=a||e||null,h=f?(0,g.HN)(f):null,j=d?.directFallbackOnUnreachable===!0&&(0,i.KS)(),k=(0,g.g4)(f?.type);if(h&&!k&&!await !1){let a=(0,g.OK)(h);if(j)return console.warn(`[ProxyFetch] Proxy unreachable (${a}); using a direct connection for this request.`),w.run(null,b);let c=Error(`[Proxy Fast-Fail] Proxy unreachable: ${a}`);throw c.code="PROXY_UNREACHABLE",c.statusCode=503,c}if(h&&!k)try{let a=new URL(h),b=a.searchParams.get("family");if("ipv6"===b||"ipv4"===b){let{assertHostnameSupportsFamily:d}=await c.e(3041).then(c.bind(c,53041));await d(a.hostname,"ipv6"===b?6:4)}}catch(a){if(j)return console.warn(`[ProxyFetch] Proxy family pre-check failed (${(0,g.OK)(h)}); using a direct connection for this request.`),w.run(null,b);throw a.code=a.code||"PROXY_FAMILY_UNAVAILABLE",a.statusCode=a.statusCode||503,a}return w.run(f,async()=>{if(h&&f!==e&&console.log(`[ProxyFetch] Applied request proxy context: ${(0,g.OK)(h)}`),f){let a=q.getStore();a&&(a.proxy=f)}return b()})}async function A(a,b={},c={}){let d;if(b?.dispatcher)return(c.undiciFetch??f.fetch)(a,b);let e=y(a);try{d=x(e)}catch(b){let a=b instanceof Error?b.message:String(b);throw console.error(`[ProxyFetch] Proxy configuration error: ${a}`),b}let{source:j,proxyUrl:k}=d;if(!k){var l,m;if("true"===process.env.ENABLE_TLS_FINGERPRINT&&h.A.available)try{let a=p.getStore();return a&&(a.used=!0),await h.A.fetch(e,{...b,headers:b.headers,signal:b.signal??void 0})}catch(c){let a=c instanceof Error?c.message:String(c);console.warn(`[ProxyFetch] TLS fingerprint failed, falling back to native fetch: ${a}`);let b=p.getStore();b&&(b.used=!1)}let d=(l=a,!!(null!=(m=b.body)&&"object"==typeof m&&("function"==typeof m.getReader||"function"==typeof m.stream)||"u">typeof Request&&l instanceof Request&&(l.bodyUsed||null!==l.body))||!1),k=d?1:2,n=c.undiciFetch??f.fetch,q=c.nativeFetch??v,s=null;for(let c=0;c<k;c++)try{return await n(a,{...b,dispatcher:0===c?(0,g.DJ)():(0,g.Sn)()})}catch(l){let f=l instanceof Error?l.message:String(l);if(f.includes("onRequestStart"))throw console.error(`[ProxyFetch] Fatal version mismatch: Dispatcher (v8) vs Fetch (v6/native). Hardware upgrade or SOCKS5 config isolation required. Error: ${f}`),l;let h=l?.code;if(f.includes("fetch failed")||"ECONNREFUSED"===h||f.includes("ECONNREFUSED")||"string"==typeof h&&h.startsWith("UND_ERR")||f.includes("UND_ERR")){if(0===c&&k>1){s=l,await new Promise(a=>setTimeout(a,25+50*Math.random()));continue}if(d){let a=`dispatcher=[${r(l)}] native=[skipped: non-replayable request body]`;throw console.warn(`[ProxyFetch] skipping native fetch fallback for non-replayable body: ${a}`),l instanceof Error&&(l.proxyFetchDetail=a),l}if("direct"===j&&(0,i.wX)("PROXY_AUTO_SELECT_ENABLED")){let c="";try{c=new URL(e).hostname}catch{}if(c){let d=await o(c,e);if(d)try{let c=(0,g.I_)(d);return await n(a,{...b,dispatcher:c})}catch{}}}console.warn(`[ProxyFetch] Undici dispatcher failed, falling back to native fetch (after retry): ${r(l)}`);try{return await q(a,b)}catch(b){let a=`dispatcher=[${r(l)}] native=[${r(b)}]`;throw console.warn(`[ProxyFetch] native fetch fallback ALSO failed: ${a}`),b instanceof Error&&(b.proxyFetchDetail=a),b}}throw l}throw s}let n=w.getStore();if(n&&"object"==typeof n&&(0,g.g4)(n.type)){if(!n.relayAuth){let a="vercel"===n.type?"Vercel relay":`${n.type||"Edge"} relay`;throw Error(`${a} configuration error: missing relayAuth`)}let c=y(a),d=(0,g.R4)(c,n.relayAuth),e=new Headers(b?.headers);for(let[a,b]of Object.entries(d))e.set(a,b);let f=(0,g.OK)(n.host?`https://${n.host}`:"");return"true"===process.env.OMNIROUTE_PROXY_FETCH_DEBUG&&console.debug(`[ProxyFetch] Routing via ${n.type||"edge"} relay: ${f}`),await v(`https://${n.host}`,{...b,headers:e,duplex:"half"})}try{let d=(0,g.I_)(k),e=c.undiciFetch??f.fetch;return await e(a,{...b,dispatcher:d})}catch(b){let a=b instanceof Error?b.message:String(b);throw console.error(`[ProxyFetch] Proxy request failed (${j}, fail-closed): ${a}`),b}}async function B(a,b={},c={}){return A(a,b,c)}async function C(a,b={},c=null){return B(a,b)}s||u.isPatched||(globalThis.fetch=A,u.isPatched=!0)}};
1
+ exports.id=3617,exports.ids=[3617],exports.modules={8590:(a,b,c)=>{"use strict";c.d(b,{$B:()=>U,Bc:()=>s,I9:()=>J,Ib:()=>v,Og:()=>n,Ql:()=>M,iD:()=>S,jR:()=>P,jT:()=>R,oD:()=>l,qZ:()=>X});var d=c(16698),e=c(61408),f=c(86522),g=c(77598),h=c(95538),i=c(57843),j=c(54444),k=c(44418);let l=3e5,m={codex:3e5,openai:3e5,claude:3e5,"gitlab-duo":3e5,kiro:3e5,"kimi-coding":3e5,qwen:3e5,iflow:864e5,antigravity:9e5,agy:9e5};function n(a,b){let c=b?.refreshLeadMs;return"number"==typeof c&&Number.isFinite(c)&&c>0?c:m[a]??l}let o=new Map,p=new Map,q=new Map,r=new d.AsyncLocalStorage;function s(a,b){return a?r.run(a,b):b()}let t=new d.AsyncLocalStorage,u={skipped:0,persisted:0};function v(a,b){return a?t.run(a,b):b()}async function w(a){let b,c=t.getStore();if(!c||!c.expectedRefreshToken)return!1;try{b=await c.reread()}catch{return!1}return(0,i.Jv)(c.expectedRefreshToken,b)?(u.skipped++,a?.warn?.("TOKEN_REFRESH","CAS guard: skipping persist — a concurrent writer already rotated the refresh_token (#4038)"),!0):(u.persisted++,!1)}function x(a){let b=new URLSearchParams;for(let[c,d]of Object.entries(a))"string"==typeof d&&d.length>0&&b.set(c,d);return b}function y(a,b){let c=(0,g.pbkdf2Sync)(b,"omniroute-token-cache",1e3,32,"sha256").toString("hex");return`${a}:${c}`}let z=new Set(["invalid_grant","invalid_request","refresh_token_reused","invalid_token","expired_token","unauthorized_client","access_denied"]);function A(a,b=0){if(null==a||b>6)return null;if("string"==typeof a){let c=a.trim();if(!c)return null;if(z.has(c))return c;if("{"===c[0]||"["===c[0]||'"'===c[0])try{let a=A(JSON.parse(c),b+1);if(a)return a}catch{}let d=c.match(/"error(?:_code)?"\s*:\s*"([a-z_]+)"/i);return d&&z.has(d[1])?d[1]:null}return"object"==typeof a?A(a.error,b+1)??A(a.code,b+1)??A(a.error_code,b+1):null}async function B(a){let b=await a.text().catch(()=>""),c=b;try{c=JSON.parse(b)}catch{}let d=A(c)??A(b);return{rawText:b,code:d}}async function C(a,b,c,d,f=null){let g=e.xq[a],i=g?.refreshUrl||g?.tokenUrl;if(!g||!i)return d?.warn?.("TOKEN_REFRESH",`No refresh endpoint configured for provider: ${a}`),null;if(!b)return d?.warn?.("TOKEN_REFRESH",`No refresh token available for provider: ${a}`),null;try{let c=new URLSearchParams({grant_type:"refresh_token",refresh_token:b});g.clientId&&c.set("client_id",g.clientId),g.clientSecret&&c.set("client_secret",g.clientSecret);let e=await (0,h.jf)(f,()=>fetch(i,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:c}));if(!e.ok){let b=await e.text();d?.error?.("TOKEN_REFRESH",`Failed to refresh token for ${a}`,{status:e.status,error:b});let c=A(b);if("invalid_grant"===c||"invalid_request"===c)return{error:"unrecoverable_refresh_error",code:c};return null}let j=await e.json();return d?.info?.("TOKEN_REFRESH",`Successfully refreshed token for ${a}`,{hasNewAccessToken:!!j.access_token,hasNewRefreshToken:!!j.refresh_token,expiresIn:j.expires_in}),{accessToken:j.access_token,refreshToken:j.refresh_token||b,expiresIn:j.expires_in}}catch(b){return d?.error?.("TOKEN_REFRESH",`Error refreshing token for ${a}`,{error:b.message}),null}}async function D(a,b,c,d=null){if(!a)return c?.warn?.("TOKEN_REFRESH","No refresh token stored for Windsurf — token may be a long-lived API key"),null;if("import"===(b?.authMethod||"import"))return c?.debug?.("TOKEN_REFRESH","Windsurf import token is long-lived — no refresh needed"),null;let e=j.e.firebaseApiKey||"";if(!e)return c?.warn?.("TOKEN_REFRESH","Windsurf Firebase API key unavailable — skipping Firebase token refresh"),null;let f=`https://securetoken.googleapis.com/v1/token?key=${e}`;try{let b=await (0,h.jf)(d,()=>fetch(f,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:x({grant_type:"refresh_token",refresh_token:a})}));if(!b.ok){let a=await b.text();c?.error?.("TOKEN_REFRESH","Failed to refresh Windsurf Firebase token",{status:b.status,error:a.slice(0,200)});try{let b=JSON.parse(a),d="string"==typeof b?.error?.message?b.error.message:"string"==typeof b?.error?b.error:null;if("string"==typeof d&&(d.includes("USER_DISABLED")||d.includes("TOKEN_EXPIRED")||d.includes("INVALID_REFRESH_TOKEN")||d.includes("USER_NOT_FOUND")))return c?.error?.("TOKEN_REFRESH","Windsurf Firebase token is permanently invalid. Re-authentication required.",{fbCode:d}),{error:"unrecoverable_refresh_error",code:d}}catch{}return null}let e=await b.json(),g=parseInt(e.expires_in??"3600",10);return c?.info?.("TOKEN_REFRESH","Successfully refreshed Windsurf Firebase token",{expiresIn:g,hasNewIdToken:!!e.id_token}),{accessToken:e.id_token,refreshToken:e.refresh_token||a,expiresIn:g}}catch(a){return c?.error?.("TOKEN_REFRESH",`Network error refreshing Windsurf token: ${a instanceof Error?a.message:String(a)}`),null}}async function E(a,b,d=null){if(!a)return null;let{CODEBUDDY_CN_CONFIG:e}=await Promise.resolve().then(c.bind(c,54444));try{let c=await (0,h.jf)(d,()=>fetch(e.refreshUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json","User-Agent":e.userAgent,"X-Requested-With":"XMLHttpRequest","X-Domain":"copilot.tencent.com","X-Refresh-Token":a,"X-Auth-Refresh-Source":"plugin","X-Product":"SaaS"},body:"{}"}));if(!c.ok){let a=await c.text();return b?.error?.("TOKEN_REFRESH","Failed to refresh CodeBuddy CN token",{status:c.status,error:a}),null}let f=await c.json();if(f?.code!==0||!f?.data?.accessToken)return b?.error?.("TOKEN_REFRESH","CodeBuddy CN token refresh returned no token",{code:f?.code,msg:f?.msg}),null;return b?.info?.("TOKEN_REFRESH","Successfully refreshed CodeBuddy CN token",{hasNewAccessToken:!!f.data.accessToken,hasNewRefreshToken:!!f.data.refreshToken,expiresIn:f.data.expiresIn}),{accessToken:f.data.accessToken,refreshToken:f.data.refreshToken||a,expiresIn:f.data.expiresIn}}catch(a){return b?.error?.("TOKEN_REFRESH",`Network error refreshing CodeBuddy CN token: ${a?.message}`),null}}async function F(a,b,c=null){let d=e.xq.cline?.refreshUrl;if(!d)return b?.warn?.("TOKEN_REFRESH","No refresh URL configured for Cline"),null;try{let e=await (0,h.jf)(c,()=>fetch(d,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({refreshToken:a,grantType:"refresh_token",clientType:"extension"})}));if(!e.ok){let a=await e.text();b?.error?.("TOKEN_REFRESH","Failed to refresh Cline token",{status:e.status,error:a});let c=A(a);if("invalid_grant"===c||"invalid_request"===c)return{error:"unrecoverable_refresh_error",code:c};return null}let f=await e.json(),g=f?.data||f,i=g?.expiresAt,j=i?Math.max(1,Math.floor((new Date(i).getTime()-Date.now())/1e3)):void 0;return b?.info?.("TOKEN_REFRESH","Successfully refreshed Cline token",{hasNewAccessToken:!!g?.accessToken,hasNewRefreshToken:!!g?.refreshToken,expiresIn:j}),{accessToken:g?.accessToken,refreshToken:g?.refreshToken||a,expiresIn:j}}catch(a){return b?.error?.("TOKEN_REFRESH",`Network error refreshing Cline token: ${a.message}`),null}}async function G(a,b,c,d=null){let f=e.xq["kimi-coding"]?.refreshUrl||e.xq["kimi-coding"]?.tokenUrl;if(!f)return c?.warn?.("TOKEN_REFRESH","No refresh URL configured for Kimi Coding"),null;let i=b?.deviceId||(0,g.pbkdf2Sync)(a,"kimi-device-id",1e3,16,"sha256").toString("hex"),j=process.env.KIMI_CLI_VERSION||"1.36.0",k="u">typeof process?process.platform:"unknown",l=[k,"u">typeof process?process.arch:"unknown"].filter(Boolean).join(" ");try{let g=new URLSearchParams({grant_type:"refresh_token",refresh_token:a,client_id:e.xq["kimi-coding"]?.clientId||""}),m=await (0,h.jf)(d,()=>fetch(f,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json","X-Msh-Platform":"kimi_cli","X-Msh-Version":j,"X-Msh-Device-Model":b?.deviceModel||l,"X-Msh-Device-Id":i,"X-Msh-Device-Name":b?.deviceName||k,"X-Msh-Os-Version":b?.osVersion||k},body:g}));if(!m.ok){let a=await m.text();try{let b=JSON.parse(a),d=b?.error;if("invalid_grant"===d||"invalid_request"===d)return c?.error?.("TOKEN_REFRESH","Kimi Coding refresh token invalid. Re-authentication required.",{errorCode:d}),{error:"unrecoverable_refresh_error",code:d}}catch{}return c?.error?.("TOKEN_REFRESH","Failed to refresh Kimi Coding token",{status:m.status,error:a.slice(0,200)}),null}let n=await m.json();return c?.info?.("TOKEN_REFRESH","Successfully refreshed Kimi Coding token",{hasNewAccessToken:!!n.access_token,hasNewRefreshToken:!!n.refresh_token,expiresIn:n.expires_in}),{accessToken:n.access_token,refreshToken:n.refresh_token||a,expiresIn:n.expires_in,tokenType:n.token_type,scope:n.scope}}catch(a){return c?.error?.("TOKEN_REFRESH",`Network error refreshing Kimi Coding token: ${a instanceof Error?a.message:String(a)}`),null}}async function H(a,b,c,d=null){if(!a)return c?.warn?.("TOKEN_REFRESH","No refresh token for GitLab Duo"),null;let f=(0,k.L_)(b),g=(0,k.Tg)(f).tokenUrl,i=b?.clientId||e.xq["gitlab-duo"]?.clientId||process.env.GITLAB_DUO_OAUTH_CLIENT_ID||process.env.GITLAB_OAUTH_CLIENT_ID||"";try{let b=await (0,h.jf)(d,()=>fetch(g,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:x({grant_type:"refresh_token",refresh_token:a,client_id:i})}));if(!b.ok){let a=await b.text();try{let b=JSON.parse(a).error;if("invalid_grant"===b||"invalid_request"===b)return c?.error?.("TOKEN_REFRESH","GitLab Duo refresh token invalid. Re-authentication required.",{errorCode:b}),{error:"unrecoverable_refresh_error",code:b}}catch{}return c?.error?.("TOKEN_REFRESH","Failed to refresh GitLab Duo token",{status:b.status,error:a.slice(0,200)}),null}let e=await b.json();return c?.info?.("TOKEN_REFRESH","Successfully refreshed GitLab Duo token",{hasNewAccessToken:!!e.access_token,hasNewRefreshToken:!!e.refresh_token,expiresIn:e.expires_in}),{accessToken:e.access_token,refreshToken:e.refresh_token||a,expiresIn:e.expires_in}}catch(a){return c?.error?.("TOKEN_REFRESH",`Network error refreshing GitLab Duo token: ${a instanceof Error?a.message:String(a)}`),null}}async function I(a,b,c=null){try{let d=x({grant_type:"refresh_token",refresh_token:a,client_id:e.xq.claude.clientId}),f=await (0,h.jf)(c,()=>fetch(e.NA.anthropic.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json","anthropic-beta":"oauth-2025-04-20"},body:d.toString()}));if(!f.ok){let{rawText:a,code:c}=await B(f);if(b?.error?.("TOKEN_REFRESH","Failed to refresh Claude OAuth token",{status:f.status,error:a.slice(0,300)}),"invalid_grant"===c||"invalid_request"===c)return{error:"unrecoverable_refresh_error",code:c};return null}let g=await f.json();return b?.info?.("TOKEN_REFRESH","Successfully refreshed Claude OAuth token",{hasNewAccessToken:!!g.access_token,hasNewRefreshToken:!!g.refresh_token,expiresIn:g.expires_in}),{accessToken:g.access_token,refreshToken:g.refresh_token||a,expiresIn:g.expires_in}}catch(a){return b?.error?.("TOKEN_REFRESH",`Network error refreshing Claude token: ${a.message}`),null}}async function J(a,b,c,d,f=null){let g=await (0,h.jf)(f,()=>fetch(e.NA.google.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:x({grant_type:"refresh_token",refresh_token:a,client_id:b,client_secret:c})}));if(!g.ok){let a=await g.text();d?.error?.("TOKEN_REFRESH","Failed to refresh Google token",{status:g.status,error:a.slice(0,200)});try{let b=JSON.parse(a);if("invalid_grant"===b.error)return d?.error?.("TOKEN_REFRESH","Google refresh token invalid. Re-authentication required.",{provider:"google"}),{error:"unrecoverable_refresh_error",code:"invalid_grant"}}catch{}return null}let i=await g.json();return d?.info?.("TOKEN_REFRESH","Successfully refreshed Google token",{hasNewAccessToken:!!i.access_token,hasNewRefreshToken:!!i.refresh_token,expiresIn:i.expires_in}),{accessToken:i.access_token,refreshToken:i.refresh_token||a,expiresIn:i.expires_in}}async function K(a,b,c=null){let d=e.NA.qwen.token;try{let f=await (0,h.jf)(c,()=>fetch(d,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:x({grant_type:"refresh_token",refresh_token:a,client_id:e.xq.qwen.clientId})}));if(200===f.status){let c=await f.json();return b?.info?.("TOKEN_REFRESH","Successfully refreshed Qwen token",{hasNewAccessToken:!!c.access_token,hasNewRefreshToken:!!c.refresh_token,expiresIn:c.expires_in}),{accessToken:c.access_token,refreshToken:c.refresh_token||a,expiresIn:c.expires_in,providerSpecificData:c.resource_url?{resourceUrl:c.resource_url}:void 0}}{let a=await f.text().catch(()=>""),c=null;try{let b=JSON.parse(a);c=b?.error}catch{}if("invalid_request"===c||"invalid_grant"===c)return b?.error?.("TOKEN_REFRESH","Qwen refresh token is invalid or expired. Re-authentication required.",{status:f.status,errorCode:c}),{error:"unrecoverable_refresh_error",code:c};b?.warn?.("TOKEN_REFRESH","Error with Qwen endpoint",{status:f.status,error:a})}}catch(a){b?.warn?.("TOKEN_REFRESH","Network error trying Qwen endpoint",{error:a.message})}return b?.error?.("TOKEN_REFRESH","Failed to refresh Qwen token"),null}async function L(a,b,c=null){try{let d=await (0,h.jf)(c,()=>fetch(e.NA.openai.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:x({grant_type:"refresh_token",refresh_token:a,client_id:e.xq.codex.clientId})}));if(!d.ok){let a=await d.text(),c=null;try{let b=JSON.parse(a);c=b?.error?.code||("string"==typeof b?.error?b.error:null)}catch{}if("refresh_token_reused"===c||"invalid_grant"===c||"token_expired"===c||"invalid_token"===c)return b?.error?.("TOKEN_REFRESH","Codex refresh token already used or invalid. Re-authentication required.",{status:d.status,errorCode:c}),{error:"unrecoverable_refresh_error",code:c};if(401===d.status){let a=c||"unauthorized";return b?.error?.("TOKEN_REFRESH","Codex OAuth token endpoint returned 401. Re-authentication required.",{status:d.status,errorCode:a}),{error:"unrecoverable_refresh_error",code:a}}return b?.error?.("TOKEN_REFRESH","Failed to refresh Codex token",{status:d.status,error:a}),null}let f=await d.json();return b?.info?.("TOKEN_REFRESH","Successfully refreshed Codex token",{hasNewAccessToken:!!f.access_token,hasNewRefreshToken:!!f.refresh_token,expiresIn:f.expires_in}),{accessToken:f.access_token,refreshToken:f.refresh_token||a,expiresIn:f.expires_in}}catch(a){return b?.error?.("TOKEN_REFRESH",`Network error refreshing Codex token: ${a.message}`),null}}async function M(a,b,c,d=null){try{let f=b?.authMethod,g=b?.clientId,i=b?.clientSecret,j=b?.region;if(g&&i&&"imported"!==f){let b=`https://oidc.${j||"us-east-1"}.amazonaws.com/token`,e=await (0,h.jf)(d,()=>fetch(b,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({clientId:g,clientSecret:i,refreshToken:a,grantType:"refresh_token"})}));if(!e.ok){let f,g=await e.text();try{let a=JSON.parse(g);f=a.__type||a.error}catch{}if("InvalidGrantException"===f||"ExpiredTokenException"===f||"invalid_grant"===f)return c?.error?.("TOKEN_REFRESH","Kiro AWS refresh token expired/invalid. Re-authentication required.",{awsErrorType:f}),{error:"unrecoverable_refresh_error",code:f};c?.warn?.("TOKEN_REFRESH","Kiro OIDC refresh failed, attempting client re-registration...",{status:e.status,error:g.slice(0,200)});try{let e=`https://oidc.${j||"us-east-1"}.amazonaws.com/client/register`,f=await (0,h.jf)(d,()=>fetch(e,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({clientName:"kiro-oauth-client",clientType:"public",scopes:["codewhisperer:completions","codewhisperer:analysis","codewhisperer:conversations"],grantTypes:["urn:ietf:params:oauth:grant-type:device_code","refresh_token"],issuerUrl:"https://identitycenter.amazonaws.com/ssoins-722374e8c3c8e6c6"})}));if(f.ok){let e=await f.json(),g=await (0,h.jf)(d,()=>fetch(b,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({clientId:e.clientId,clientSecret:e.clientSecret,refreshToken:a,grantType:"refresh_token"})}));if(g.ok){let b=await g.json();return c?.info?.("TOKEN_REFRESH","Kiro refresh recovered via client re-registration",{hasNewAccessToken:!!b.accessToken,expiresIn:b.expiresIn}),{accessToken:b.accessToken,refreshToken:b.refreshToken||a,expiresIn:b.expiresIn,_newClientId:e.clientId,_newClientSecret:e.clientSecret,_newClientSecretExpiresAt:e.clientSecretExpiresAt}}}}catch(a){c?.warn?.("TOKEN_REFRESH","Kiro client re-registration fallback failed",{error:String(a)})}return c?.error?.("TOKEN_REFRESH","Failed to refresh Kiro AWS token",{status:e.status,error:g.slice(0,200)}),null}let f=await e.json();return c?.info?.("TOKEN_REFRESH","Successfully refreshed Kiro AWS token",{hasNewAccessToken:!!f.accessToken,expiresIn:f.expiresIn}),{accessToken:f.accessToken,refreshToken:f.refreshToken||a,expiresIn:f.expiresIn}}let k=e.xq.kiro.tokenUrl;if(!k)return c?.error?.("TOKEN_REFRESH","Missing Kiro token endpoint"),null;let l=await (0,h.jf)(d,()=>fetch(k,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({refreshToken:a})}));if(!l.ok){let a=await l.text();try{let b=JSON.parse(a),d=b.__type||b.error;if("InvalidGrantException"===d||"ExpiredTokenException"===d||"invalid_grant"===d)return c?.error?.("TOKEN_REFRESH","Kiro social refresh token expired/invalid. Re-authentication required.",{awsErrorType:d}),{error:"unrecoverable_refresh_error",code:d}}catch{}return c?.error?.("TOKEN_REFRESH","Failed to refresh Kiro social token",{status:l.status,error:a.slice(0,200)}),null}let m=await l.json();return c?.info?.("TOKEN_REFRESH","Successfully refreshed Kiro social token",{hasNewAccessToken:!!m.accessToken,expiresIn:m.expiresIn}),{accessToken:m.accessToken,refreshToken:m.refreshToken||a,expiresIn:m.expiresIn}}catch(a){return c?.error?.("TOKEN_REFRESH",`Network error refreshing Kiro token: ${a.message}`),null}}async function N(a,b,c=null){if(!e.NA.qoder.token||!e.xq.qoder.clientId||!e.xq.qoder.clientSecret)return b?.warn?.("TOKEN_REFRESH","Qoder OAuth refresh skipped: browser OAuth is not configured in this environment"),null;let d=btoa(`${e.xq.qoder.clientId}:${e.xq.qoder.clientSecret}`),f=await (0,h.jf)(c,()=>fetch(e.NA.qoder.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json",Authorization:`Basic ${d}`},body:x({grant_type:"refresh_token",refresh_token:a,client_id:e.xq.qoder.clientId,client_secret:e.xq.qoder.clientSecret})}));if(!f.ok){let a=await f.text();b?.error?.("TOKEN_REFRESH","Failed to refresh Qoder token",{status:f.status,error:a});let c=A(a);return"invalid_grant"===c||"invalid_request"===c?{error:"unrecoverable_refresh_error",code:c}:null}let g=await f.json();return b?.info?.("TOKEN_REFRESH","Successfully refreshed Qoder token",{hasNewAccessToken:!!g.access_token,hasNewRefreshToken:!!g.refresh_token,expiresIn:g.expires_in}),{accessToken:g.access_token,refreshToken:g.refresh_token||a,expiresIn:g.expires_in}}async function O(a,b,c=null){let d=await (0,h.jf)(c,()=>fetch(e.NA.github.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:x({grant_type:"refresh_token",refresh_token:a,client_id:e.xq.github.clientId,client_secret:e.xq.github.clientSecret})}));if(!d.ok){let a=await d.text();b?.error?.("TOKEN_REFRESH","Failed to refresh GitHub token",{status:d.status,error:a});let c=A(a);return"invalid_grant"===c||"invalid_request"===c?{error:"unrecoverable_refresh_error",code:c}:null}let f=await d.json();return b?.info?.("TOKEN_REFRESH","Successfully refreshed GitHub token",{hasNewAccessToken:!!f.access_token,hasNewRefreshToken:!!f.refresh_token,expiresIn:f.expires_in}),{accessToken:f.access_token,refreshToken:f.refresh_token||a,expiresIn:f.expires_in}}async function P(a,b,c=null){try{let d=await (0,h.jf)(c,()=>fetch("https://api.github.com/copilot_internal/v2/token",{headers:(0,f.H_)(`token ${a}`)}));if(!d.ok){let a=await d.text();return b?.error?.("TOKEN_REFRESH","Failed to refresh Copilot token",{status:d.status,error:a}),null}let e=await d.json();return b?.info?.("TOKEN_REFRESH","Successfully refreshed Copilot token",{hasToken:!!e.token,expiresAt:e.expires_at}),{token:e.token,expiresAt:e.expires_at}}catch(a){return b?.error?.("TOKEN_REFRESH","Error refreshing Copilot token",{error:a.message}),null}}async function Q(a,b,c,d=null){switch(a){case"gemini":case"antigravity":case"agy":return await J(b.refreshToken,e.xq[a].clientId,e.xq[a].clientSecret,c,d);case"claude":return await I(b.refreshToken,c,d);case"codex":return await L(b.refreshToken,c,d);case"qwen":return await K(b.refreshToken,c,d);case"qoder":return await N(b.refreshToken,c,d);case"github":return await O(b.refreshToken,c,d);case"kiro":case"amazon-q":return await M(b.refreshToken,b.providerSpecificData,c,d);case"cline":return await F(b.refreshToken,c,d);case"kimi-coding":return await G(b.refreshToken,b.providerSpecificData,c,d);case"gitlab-duo":return await H(b.refreshToken,b.providerSpecificData,c,d);case"windsurf":case"devin-cli":return await D(b.refreshToken,b.providerSpecificData,c,d);case"codebuddy-cn":return await E(b.refreshToken,c,d);default:return C(a,b.refreshToken,b,c,d)}}function R(a){return a&&"object"==typeof a&&("unrecoverable_refresh_error"===a.error||"refresh_token_reused"===a.error||"invalid_request"===a.error||"invalid_grant"===a.error)}async function S(a,b,d,e=null,f){if(!b||!b.refreshToken||"string"!=typeof b.refreshToken)return d?.warn?.("TOKEN_REFRESH",`No valid refresh token available for provider: ${a}`),null;let g=f??r.getStore(),h=b.connectionId;if(h&&"string"==typeof h){let f=p.get(h);if(f)return f.waiters++,d?.info?.("TOKEN_REFRESH","Concurrent refresh detected — sharing in-flight refresh",{provider:a,connectionId:h,waiters:f.waiters}),f.promise;let i={promise:null,waiters:0};return i.promise=(async()=>{let f=await T(a,b,d,e);if(f?.accessToken&&g){if(await w(d))return f;try{await g(f)}catch(e){let{sanitizeErrorMessage:b}=await c.e(3659).then(c.bind(c,43659));throw d?.error?.("TOKEN_REFRESH",`onPersist callback failed for ${a}/${h}: ${b(e instanceof Error?e:Error(String(e)))}`),e}}return f})().finally(()=>{p.delete(h)}),p.set(h,i),i.promise}let j=y(a,b.refreshToken);if(o.has(j))return d?.info?.("TOKEN_REFRESH",`Reusing in-flight refresh for ${a}`),o.get(j);let k=(0,i.Aj)(a,()=>Q(a,b,d,e)).then(async b=>{if(b?.accessToken&&g){if(await w(d))return b;try{await g(b)}catch(e){let{sanitizeErrorMessage:b}=await c.e(3659).then(c.bind(c,43659));throw d?.error?.("TOKEN_REFRESH",`Layer 2 onPersist callback failed for ${a}: ${b(e instanceof Error?e:Error(String(e)))}`),e}}else b?.accessToken&&!g&&d?.warn?.("TOKEN_REFRESH",`Layer 2 refresh succeeded for ${a} without onPersist — DB row will not be updated with rotated token. Callers should pass connectionId for Layer 1 atomicity.`);return b}).finally(()=>{o.delete(j)});return o.set(j,k),k}async function T(a,b,d,e){let f=function(a,b){!function(a=Date.now()){if(0!==q.size)for(let[b,c]of q.entries())c.expiresAt<=a&&q.delete(b)}();let c=y(a,b),d=q.get(c);if(d)return d.expiresAt<=Date.now()?void q.delete(c):d}(a,b.refreshToken);if(f)return d?.info?.("TOKEN_REFRESH",`Rotation map hit for ${a}. Returning cached rotated tokens (avoids family-revoke).`),f.result;if(b.connectionId)try{let{getProviderConnectionById:e}=await c.e(7094).then(c.bind(c,87094)),f=await e(b.connectionId);if(f&&f.refreshToken){let c=Date.now(),e=f.expiresAt?new Date(f.expiresAt).getTime():0;if(f.refreshToken!==b.refreshToken){if(d?.info?.("TOKEN_REFRESH",`Stale token detected in memory for ${a}. Using refreshed token from DB.`),e>c+6e4)return d?.info?.("TOKEN_REFRESH","DB token is still valid. Skipping OAuth refresh."),{accessToken:f.accessToken,refreshToken:f.refreshToken,expiresAt:f.expiresAt};b.refreshToken=f.refreshToken,b.accessToken=f.accessToken}}}catch(a){d?.warn?.("TOKEN_REFRESH",`Failed to check DB for stale token: ${a instanceof Error?a.message:String(a)}`)}let g=b.refreshToken,h=await (0,i.Aj)(a,()=>Q(a,b,d,e));return h&&"object"==typeof h&&!("error"in h)&&h.accessToken&&h.refreshToken&&function(a,b,c){if(!b||!c.refreshToken||b===c.refreshToken)return;let d=y(a,b);q.set(d,{result:c,expiresAt:Date.now()+6e4})}(a,g,h),h}let U=S,V={};async function W(a,b){return await new Promise((c,d)=>{let e=setTimeout(()=>c(null),b);"object"==typeof e&&"unref"in e&&e.unref?.(),a().then(a=>{clearTimeout(e),c(a)},a=>{clearTimeout(e),d(a)})})}async function X(a,b=3,c=null,d="unknown"){let e;if((e=V[d])&&e.blockedUntil&&(e.blockedUntil>Date.now()||(delete V[d],0)))return c?.warn?.("TOKEN_REFRESH",`⚡ Circuit breaker active for ${d}, skipping refresh`),null;for(let e=0;e<b;e++){if(e>0){let a=1e3*e;c?.debug?.("TOKEN_REFRESH",`Retry ${e}/${b} after ${a}ms`),await new Promise(b=>setTimeout(b,a))}try{let b=await W(a,3e4);if(R(b))return c?.warn?.("TOKEN_REFRESH",`Unrecoverable refresh error for ${d}: ${b.error} — skipping retries`),b;if(b)return V[d]&&delete V[d],b}catch(a){c?.warn?.("TOKEN_REFRESH",`Attempt ${e+1}/${b} failed: ${a.message}`)}}return!function(a,b=null){V[a]||(V[a]={failures:0,blockedUntil:0}),V[a].failures++,V[a].failures>=5&&(V[a].blockedUntil=Date.now()+18e5,b?.error?.("TOKEN_REFRESH",`🔴 Circuit breaker tripped for ${a}: 5 consecutive failures. Blocked for 30min. Provider needs re-authentication.`))}(d,c),c?.error?.("TOKEN_REFRESH",`All ${b} retry attempts failed for ${d}`),null}},20927:(a,b,c)=>{"use strict";var d=c(75919),e=c.n(d),f=c(28064);e()&&!e().markAsUncloneable&&(e().markAsUncloneable=function(a){if(e().markAsUntransferable)try{e().markAsUntransferable(a)}catch{}}),void 0===Promise.withResolvers&&(Promise.withResolvers=function(){let a,b;return{promise:new Promise((c,d)=>{a=c,b=d}),resolve:a,reject:b}}),void 0===globalThis.WebSocket&&(globalThis.WebSocket=f.WebSocket)},39727:()=>{},47990:()=>{},54444:(a,b,c)=>{"use strict";c.d(b,{e:()=>d});let d=null},57843:(a,b,c)=>{"use strict";c.d(b,{Aj:()=>f,Jv:()=>g});let d={codex:"openai-auth0",openai:"openai-auth0",claude:"anthropic-oauth","gitlab-duo":"gitlab-duo",kiro:"kiro","kimi-coding":"kimi-coding",qwen:"qwen"},e=new Map;async function f(a,b){let c,f=d[a]??null;if(!f)return b();let g=e.get(f)??Promise.resolve(),h=new Promise(a=>{c=a}),i=g.then(()=>h);e.set(f,i),await g.catch(()=>{});try{return await b()}finally{if(e.get(f)!==i){let a=function(){let a=process.env.CODEX_REFRESH_SPACING_MS;if(void 0===a||""===a)return 2e3;let b=Number(a);return Number.isFinite(b)&&b>=0?b:2e3}();a>0&&await new Promise(b=>setTimeout(b,a))}c(),e.get(f)===i&&e.delete(f)}}function g(a,b){return"string"==typeof a&&a.length>0&&"string"==typeof b&&b.length>0&&b!==a}},58643:(a,b,c)=>{"use strict";let d;c.d(b,{A:()=>g});var e=c(99765);try{let a=c(3725);d="function"==typeof a.createSession?a.createSession:null}catch{d=null}class f{constructor(){this.session=null,this.failureCount=0,this.maxFailures=3,this.baseCooldownMs=3e4,this.cooldownMs=3e4,this.cooldownMultiplier=1,this.MAX_COOLDOWN_MS=6e5,this.circuitOpenUntil=0,this.circuitTripped=!1,this._libraryAvailable=!!d}get available(){return!!this._libraryAvailable&&(!this.circuitTripped||Date.now()>=this.circuitOpenUntil)}recordFailure(){this.failureCount++,this.failureCount>=this.maxFailures&&(this.circuitOpenUntil=Date.now()+this.cooldownMs,this.circuitTripped=!0,this.session&&(Promise.resolve(this.session.close()).catch(()=>{}),this.session=null),console.warn(`[TlsClient] Circuit opened after ${this.failureCount} consecutive failures, cooling down for ${this.cooldownMs}ms`),this.escalateCooldown())}recordSuccess(){this.failureCount=0,this.circuitTripped&&(this.cooldownMultiplier=1,this.cooldownMs=this.baseCooldownMs,console.log("[TlsClient] Circuit closed (success after cooldown)"),this.circuitTripped=!1)}escalateCooldown(){this.cooldownMultiplier=Math.min(2*this.cooldownMultiplier,20),this.cooldownMs=Math.min(this.baseCooldownMs*this.cooldownMultiplier,this.MAX_COOLDOWN_MS)}checkCircuit(){return!this.circuitTripped||Date.now()>=this.circuitOpenUntil&&(console.log("[TlsClient] Half-open: retrying after cooldown"),!0)}async getSession(){if(!this.checkCircuit()||!this.available)return null;if(this.session)return this.session;let a=d;if(!a)return null;let b=process.env.HTTPS_PROXY||process.env.https_proxy||process.env.HTTP_PROXY||process.env.http_proxy||process.env.ALL_PROXY||process.env.all_proxy||void 0,c={browser:"chrome_124",os:"macos"};return b&&(c.proxy=b,console.log(`[TlsClient] Using proxy: ${b}`)),this.session=await a(c),console.log("[TlsClient] Session created (Chrome 124 TLS fingerprint)"),this.session}async fetch(a,b={}){if(!this.checkCircuit())throw Error("wreq-js circuit open — skipping TLS request");try{let c=await this.getSession();if(!c)throw Error("wreq-js not available");let{timeoutMs:d}=(0,e.uw)(process.env,a=>{console.warn(`[TlsClient] ${a}`)}),f={method:(b.method||"GET").toUpperCase(),headers:function(a){if(!a)return;if(a instanceof Headers)return Object.fromEntries(a.entries());if(Array.isArray(a))return Object.fromEntries(a.map(([a,b])=>[a,String(b)]));let b={};for(let[c,d]of Object.entries(a))"string"==typeof d&&(b[c]=d);return b}(b.headers),body:b.body,redirect:"manual"===b.redirect?"manual":"follow",timeout:d};b.signal&&(f.signal=b.signal);let g=await c.fetch(a,f);return this.recordSuccess(),g}catch(a){throw a instanceof Error&&("AbortError"===a.name||a.message.includes("aborted"))||this.recordFailure(),a}}async exit(){this.session&&(await this.session.close(),this.session=null)}resetCircuit(){this.failureCount=0,this.circuitTripped=!1,this.circuitOpenUntil=0}getCircuitState(){return{available:this.available,circuitTripped:this.circuitTripped,failureCount:this.failureCount,circuitOpenUntil:this.circuitOpenUntil,coolDownRemainingMs:this.circuitOpenUntil>0?Math.max(0,this.circuitOpenUntil-Date.now()):0}}}let g=new f},68404:(a,b,c)=>{"use strict";c.d(b,{KS:()=>d,wX:()=>e});let d=()=>!1,e=()=>!1},69889:(a,b,c)=>{"use strict";c.d(b,{Bm:()=>e,UL:()=>g,wI:()=>f});var d=c(77030);function e(a){return"string"!=typeof a?"":a.startsWith("[")&&a.endsWith("]")?a.slice(1,-1):a}function f(a){let b=e(a),c=(0,d.isIP)(b);return 0===c?null:c}function g(a){return"ipv4"===a||"ipv6"===a?a:"auto"}},85376:(a,b,c)=>{"use strict";c.d(b,{R4:()=>y,I_:()=>A,DJ:()=>q,Sn:()=>r,g4:()=>o,zP:()=>x,HN:()=>z,OK:()=>w}),c(20927);var d=c(47774),e=c(20406),f=c(99765),g=c(69889),h=c(13092);let i=Symbol.for("omniroute.proxyDispatcher.cache"),j=Symbol.for("omniroute.proxyDispatcher.default"),k=Symbol.for("omniroute.proxyDispatcher.retry");class l{constructor(a){this.nextIndex=0,this.dispatchers=a}dispatch(a,b){let c=this.dispatchers[this.nextIndex%this.dispatchers.length];return this.nextIndex=(this.nextIndex+1)%this.dispatchers.length,c.dispatch(a,b)}close(a){let b=Promise.all(this.dispatchers.map(a=>a.close())).then(()=>void 0);return a?void b.then(a):b}destroy(a,b){let c="function"==typeof a?a:b,d="function"==typeof a?null:a??null,e=Promise.all(this.dispatchers.map(a=>a.destroy(d))).then(()=>void 0);return c?void e.then(c):e}}let m=new Set(["http:","https:","socks5:"]),n=new Set(["vercel","deno","cloudflare"]);function o(a){return"string"==typeof a&&n.has(a)}function p(){let a=(0,f.pf)(process.env,a=>{console.warn(`[ProxyDispatcher] ${a}`)});return{headersTimeout:a.fetchHeadersTimeoutMs,bodyTimeout:a.fetchBodyTimeoutMs,connectTimeout:a.fetchConnectTimeoutMs,keepAliveTimeout:a.fetchKeepAliveTimeoutMs,keepAliveMaxTimeout:a.fetchKeepAliveTimeoutMs}}function q(){let a=globalThis[j];if(!a){var b,c;let e;c=function(a=process.env){let b=a.OMNIROUTE_DIRECT_DISPATCHER_CONNECTIONS;if(null==b||""===b.trim())return 32;let c=Number(b);return!Number.isFinite(c)||c<1?(console.warn(`[ProxyDispatcher] Invalid OMNIROUTE_DIRECT_DISPATCHER_CONNECTIONS="${b}". Using default 32.`),32):Math.min(Math.floor(c),256)}(),e={...p(),connections:1,pipelining:0},b=a=new l(Array.from({length:c},()=>new d.Agent(e))),globalThis[j]=b}return a}function r(){let a=globalThis[k];if(!a){var b;b=a=new d.Agent({...p(),keepAliveTimeout:1,keepAliveMaxTimeout:1,pipelining:0}),globalThis[k]=b}return a}function s(a){try{let b=a.indexOf("://");if(-1===b)return null;let c=b+3,d=a.indexOf("/",c),e=-1===d?a.slice(c):a.slice(c,d),f=e.lastIndexOf(":"),g=e.lastIndexOf("@");if(-1!==f&&f>g){let a=e.slice(f+1);if(/^\d+$/.test(a)){let b=Number(a);if(Number.isInteger(b)&&b>=1&&b<=65535)return String(b)}}}catch{}return null}function t(a){return"https:"===a||"wss:"===a?"443":"socks5:"===a?"1080":"8080"}function u(a,b){if(!a)return t(b);let c=Number(a);if(!Number.isInteger(c)||c<1||c>65535)throw Error("[ProxyDispatcher] Invalid proxy port");return String(c)}function v(){return!["false","0","no","off"].includes((process.env.ENABLE_SOCKS5_PROXY??"").trim().toLowerCase())}function w(a){let b=s(a),c=new URL(a),d=b||c.port||t(c.protocol);return`${c.protocol}//${c.hostname}:${d}`}function x(a,b="proxy",{allowSocks5:c=v()}={}){var d;let e,f,h=a.match(/\?family=(ipv4|ipv6)$/),i=h?h[0]:"",j=i?a.slice(0,-i.length):a,k=s(j);try{e=new URL(j)}catch{throw Error(`[ProxyDispatcher] Invalid ${b} URL`)}if(!m.has(e.protocol))throw Error(`[ProxyDispatcher] Unsupported ${b} protocol: ${e.protocol.replace(":","")}`);if("socks5:"===e.protocol&&!c)throw Error("[ProxyDispatcher] SOCKS5 proxy is disabled (remove ENABLE_SOCKS5_PROXY=false to enable — it is ON by default)");if(!e.hostname)throw Error(`[ProxyDispatcher] Invalid ${b} host`);let l=k||u(e.port,e.protocol),n=(0,g.UL)((h?h[1]:e.searchParams.get("family"))??void 0),o=(f=(d=e).username?`${d.username}${d.password?`:${d.password}`:""}@`:"",`${d.protocol}//${f}${d.hostname}:${l}`);return"auto"===n?o:`${o}?family=${n}`}function y(a,b){let c=new URL(a);return{"x-relay-target":`${c.protocol}//${c.host}`,"x-relay-path":c.pathname+c.search,"x-relay-auth":b}}function z(a,{allowSocks5:b=v()}={}){if(!a)return null;if("string"==typeof a)return x(a,"context proxy",{allowSocks5:b});if("object"!=typeof a||Array.isArray(a))throw Error("[ProxyDispatcher] Invalid context proxy config");if(!a.host)return null;let c=String(a.type||"http").toLowerCase();if(n.has(c))return a.host?`https://${a.host}`:null;let d=`${c}:`;if(!m.has(d))throw Error(`[ProxyDispatcher] Unsupported context proxy protocol: ${c}`);if("socks5:"===d&&!b)throw Error("[ProxyDispatcher] SOCKS5 proxy is disabled (remove ENABLE_SOCKS5_PROXY=false to enable — it is ON by default)");let e=u(a.port,d),f=a.username?`${encodeURIComponent(a.username)}:${a.password?encodeURIComponent(a.password):""}@`:"",h=`${c}://${f}${a.host}:${e}`,i=(0,g.UL)(a.family),j=x(h,"context proxy",{allowSocks5:b});return"auto"===i?j:`${j}?family=${i}`}function A(a){let b,c=x(a,"proxy dispatcher"),f=((b=globalThis)[i]||(b[i]=new Map),b[i]),j=function(a=process.env){return{...p(),connections:function(a=process.env){let b=a.OMNIROUTE_PROXY_DISPATCHER_CONNECTIONS;if(null==b||""===b.trim())return 32;let c=Number(b);return!Number.isFinite(c)||c<1?(console.warn(`[ProxyDispatcher] Invalid OMNIROUTE_PROXY_DISPATCHER_CONNECTIONS="${b}". Using default 32.`),32):Math.min(Math.floor(c),256)}(a),keepAliveTimeout:1,keepAliveMaxTimeout:1,pipelining:0}}(),k=f.get(c);if(k)return k;let l=new URL(c),m=function(a){let b=(0,g.UL)(a.searchParams.get("family")??void 0),c=(0,g.wI)(a.hostname);if("auto"===b)return c;let d="ipv6"===b?6:4;if(null!==c&&c!==d)throw Error(`[ProxyDispatcher] Proxy family directive ${b} contradicts ${6===c?"IPv6":"IPv4"} literal host`);return d}(l);l.searchParams.delete("family");let n=c.replace(/\?family=(ipv4|ipv6)$/,""),o=s(n)||u(l.port,l.protocol);if("socks5:"===l.protocol){let a={type:5,host:(0,g.Bm)(l.hostname),port:Number(o)};l.username&&(a.userId=decodeURIComponent(l.username)),l.password&&(a.password=decodeURIComponent(l.password)),k=null===m?(0,e.vI)(a,j):function(a,b,c={}){let{connect:e,...f}=c;return new d.Agent({...f,connect:function(a,b,c={}){let e=(0,d.buildConnector)(c),f=6===b?{family:6,autoSelectFamily:!1}:4===b?{family:4,autoSelectFamily:!1}:{};return async(b,c)=>{let{protocol:d,hostname:g,port:i,httpSocket:j}=b;try{let k=(await h.SocksClient.createConnection({command:"connect",proxy:a,timeout:function(a=process.env){let b=a.SOCKS_HANDSHAKE_TIMEOUT_MS;if(null==b||""===b.trim())return 1e4;let c=Number(b);return!Number.isFinite(c)||c<1?1e4:Math.min(Math.floor(c),12e4)}(),destination:{host:g,port:i?Number.parseInt(i,10):"http:"===d?80:443},existing_socket:j,socket_options:f})).socket;if("https:"!==d)return c(null,k.setNoDelay());return e({...b,httpSocket:k},c)}catch(a){return c(a,null)}}}(a,b,e)})}(a,m,j)}else k=new d.ProxyAgent({uri:n,...j,...null!==m?{proxyTls:{family:m,autoSelectFamily:!1}}:{}});return f.set(c,k),k}},95538:(a,b,c)=>{"use strict";let d;c.d(b,{proxyAwareFetch:()=>C,l:()=>x,jf:()=>z}),c(20927);var e=c(16698),f=c(47774),g=c(85376),h=c(58643),i=c(68404),j=c(89718);let k=new Map;function l(a){let b=a.username?`${encodeURIComponent(a.username)}:${encodeURIComponent(a.password||"")}@`:"";return`${a.type}://${b}${a.host}:${a.port}`}async function m(a){let b=new Set;try{let a=await (0,j.P)("global");a?.proxy&&b.add(l(a.proxy))}catch{}try{for(let a of(await (0,j.zU)({includeSecrets:!0})))a.host&&a.port&&b.add(l(a))}catch{}try{for(let a of(await (0,j.Bb)({limit:5})))a.host&&a.port&&b.add(l(a))}catch{}if(a)try{let c=function(a){let b,c=process.env.NO_PROXY||process.env.no_proxy;if(c){let b;try{b=new URL(a).hostname.toLowerCase()}catch{return null}if(c.split(",").map(a=>a.trim().toLowerCase()).filter(Boolean).some(a=>"*"===a||(a.includes("*")?RegExp("^"+a.split("*").map(a=>a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join(".*")+"$").test(b):b===a||b.endsWith(`.${a}`))))return null}try{b=new URL(a).protocol}catch{return null}let d="https:"===b?process.env.HTTPS_PROXY||process.env.https_proxy||process.env.ALL_PROXY||process.env.all_proxy:process.env.HTTP_PROXY||process.env.http_proxy||process.env.ALL_PROXY||process.env.all_proxy;if(!d)return null;try{return(0,g.zP)(d,"environment proxy")}catch{return null}}(a);c&&b.add(c)}catch{}return Array.from(b)}async function n(a,b,c=3e3){let d=Date.now();try{let e=new AbortController,h=setTimeout(()=>e.abort(),c),i=(0,g.I_)(a);await (0,f.fetch)(b,{method:"HEAD",signal:e.signal,dispatcher:i,headers:{"User-Agent":"OmniRoute/1.0"}}),clearTimeout(h);let j=Date.now()-d;return{ok:!0,latencyMs:j}}catch{return{ok:!1,latencyMs:null}}}async function o(a,b){if(!a)return null;let c=function(a,b){try{let a=new URL(b),c=`${a.pathname||"/"}${a.search}`;return`${a.protocol}//${a.host}${c}`}catch{return a.toLowerCase()}}(a,b),d=k.get(c);if(d){if(d.expiresAt>Date.now())return d.proxyUrl||null;k.delete(c)}let e=await ((void 0)??m)(b);if(0===e.length)return null;let f=(await Promise.allSettled(e.map(async a=>{let{ok:c}=await ((void 0)??n)(a,b);return{proxyUrl:a,ok:c}}))).find(a=>"fulfilled"===a.status&&a.value.ok);if(f&&"fulfilled"===f.status){let a=f.value.proxyUrl;return k.set(c,{proxyUrl:a,expiresAt:Date.now()+3e5}),a}return k.set(c,{proxyUrl:"",expiresAt:Date.now()+3e5}),null}let p=new e.AsyncLocalStorage,q=new e.AsyncLocalStorage;function r(a){let b=[],c=new Set,d=a;for(let a=0;d&&a<5&&!c.has(d);a++){c.add(d);let a=d,e=["string"==typeof a.name&&"Error"!==a.name?a.name:null,"string"==typeof a.message?a.message.slice(0,160):null,null!=a.code?`code=${String(a.code)}`:null,null!=a.syscall?`syscall=${String(a.syscall)}`:null,null!=a.errno?`errno=${String(a.errno)}`:null,null!=a.address?`address=${String(a.address)}${null!=a.port?`:${String(a.port)}`:""}`:null].filter(Boolean).join(" ");if(e&&b.push(e),Array.isArray(a.errors))for(let c of a.errors.slice(0,4)){let a=c??{},d=[null!=a.code?`code=${String(a.code)}`:null,null!=a.syscall?`syscall=${String(a.syscall)}`:null,null!=a.address?`address=${String(a.address)}${null!=a.port?`:${String(a.port)}`:""}`:null].filter(Boolean).join(" ");d?b.push(`↳ ${d}`):"string"==typeof a.message&&b.push(`↳ ${a.message.slice(0,80)}`)}d=a.cause}return b.join(" | ")||String(a)}let s="u">typeof caches&&"object"==typeof caches,t=Symbol.for("omniroute.proxyFetch.state"),u=((d=globalThis)[t]||(d[t]={originalFetch:globalThis.fetch,proxyContext:new e.AsyncLocalStorage,isPatched:!1}),d[t]),v=u.originalFetch,w=u.proxyContext;function x(a){let b,c;try{b=new URL(a)}catch{b=null}if(b&&("localhost"===(c=b.hostname.toLowerCase().replace(/^\[/,"").replace(/\]$/,"").replace(/^::ffff:/i,""))||"0.0.0.0"===c||"127.0.0.1"===c||"::1"===c||c.endsWith(".local")||c.endsWith(".lan")||c.endsWith(".internal")||c.startsWith("192.168.")||c.startsWith("10.")||c.startsWith("127.")||c.startsWith("169.254.")||/^172\.(1[6-9]|2\d|3[0-1])\./.test(c)||/^100\.(6[4-9]|[7-9]\d|1[01]\d|12[0-7])\./.test(c)||/^f[cd][0-9a-f]*:/i.test(c)||c.startsWith("fe80:")))return{source:"direct",proxyUrl:null};let d=w.getStore();if(d)return{source:"context",proxyUrl:(0,g.HN)(d)};let e=function(a){let b;if(function(a){let b,c=process.env.NO_PROXY||process.env.no_proxy;if(!c)return!1;try{b=new URL(a)}catch{return!1}let d=b.hostname.toLowerCase(),e=b.port||("https:"===b.protocol?"443":"80");return c.split(",").map(a=>a.trim().toLowerCase()).filter(Boolean).some(a=>{if("*"===a)return!0;let[b,c]=a.split(":");if(c&&c!==e||!b)return!1;if(b.includes("*")){let a=b.split("*"),c=0,e=d.startsWith(a[0]);if(e){c=a[0].length;for(let b=1;b<a.length&&e;b++){let f=a[b];if(b===a.length-1)e=""===f||d.endsWith(f)&&d.length-f.length>=c;else{let a=f?d.indexOf(f,c):c;-1===a?e=!1:c=a+f.length}}}if(e)return!0}return b.startsWith(".")?d.endsWith(b)||d===b.slice(1):d===b||d.endsWith(`.${b}`)})}(a))return null;try{b=new URL(a).protocol}catch{return null}let c="https:"===b?process.env.HTTPS_PROXY||process.env.https_proxy||process.env.ALL_PROXY||process.env.all_proxy:process.env.HTTP_PROXY||process.env.http_proxy||process.env.ALL_PROXY||process.env.all_proxy;return c?(0,g.zP)(c,"environment proxy"):null}(a);return e?{source:"env",proxyUrl:e}:{source:"direct",proxyUrl:null}}function y(a){return"string"==typeof a?a:a&&"string"==typeof a.url?a.url:String(a)}async function z(a,b,d){if("function"!=typeof b)throw TypeError("runWithProxyContext requires a callback function");let e=w.getStore(),f=a||e||null,h=f?(0,g.HN)(f):null,j=d?.directFallbackOnUnreachable===!0&&(0,i.KS)(),k=(0,g.g4)(f?.type);if(h&&!k&&!await !1){let a=(0,g.OK)(h);if(j)return console.warn(`[ProxyFetch] Proxy unreachable (${a}); using a direct connection for this request.`),w.run(null,b);let c=Error(`[Proxy Fast-Fail] Proxy unreachable: ${a}`);throw c.code="PROXY_UNREACHABLE",c.statusCode=503,c}if(h&&!k)try{let a=new URL(h),b=a.searchParams.get("family");if("ipv6"===b||"ipv4"===b){let{assertHostnameSupportsFamily:d}=await c.e(3041).then(c.bind(c,53041));await d(a.hostname,"ipv6"===b?6:4)}}catch(a){if(j)return console.warn(`[ProxyFetch] Proxy family pre-check failed (${(0,g.OK)(h)}); using a direct connection for this request.`),w.run(null,b);throw a.code=a.code||"PROXY_FAMILY_UNAVAILABLE",a.statusCode=a.statusCode||503,a}return w.run(f,async()=>{if(h&&f!==e&&console.log(`[ProxyFetch] Applied request proxy context: ${(0,g.OK)(h)}`),f){let a=q.getStore();a&&(a.proxy=f)}return b()})}async function A(a,b={},c={}){let d;if(b?.dispatcher)return(c.undiciFetch??f.fetch)(a,b);let e=y(a);try{d=x(e)}catch(b){let a=b instanceof Error?b.message:String(b);throw console.error(`[ProxyFetch] Proxy configuration error: ${a}`),b}let{source:j,proxyUrl:k}=d;if(!k){var l,m;if("true"===process.env.ENABLE_TLS_FINGERPRINT&&h.A.available)try{let a=p.getStore();return a&&(a.used=!0),await h.A.fetch(e,{...b,headers:b.headers,signal:b.signal??void 0})}catch(c){let a=c instanceof Error?c.message:String(c);console.warn(`[ProxyFetch] TLS fingerprint failed, falling back to native fetch: ${a}`);let b=p.getStore();b&&(b.used=!1)}let d=(l=a,!!(null!=(m=b.body)&&"object"==typeof m&&("function"==typeof m.getReader||"function"==typeof m.stream)||"u">typeof Request&&l instanceof Request&&(l.bodyUsed||null!==l.body))||!1),k=d?1:2,n=c.undiciFetch??f.fetch,q=c.nativeFetch??v,s=null;for(let c=0;c<k;c++)try{return await n(a,{...b,dispatcher:0===c?(0,g.DJ)():(0,g.Sn)()})}catch(l){let f=l instanceof Error?l.message:String(l);if(f.includes("onRequestStart"))throw console.error(`[ProxyFetch] Fatal version mismatch: Dispatcher (v8) vs Fetch (v6/native). Hardware upgrade or SOCKS5 config isolation required. Error: ${f}`),l;let h=l?.code;if(f.includes("fetch failed")||"ECONNREFUSED"===h||f.includes("ECONNREFUSED")||"string"==typeof h&&h.startsWith("UND_ERR")||f.includes("UND_ERR")){if(0===c&&k>1){s=l,await new Promise(a=>setTimeout(a,25+50*Math.random()));continue}if(d){let a=`dispatcher=[${r(l)}] native=[skipped: non-replayable request body]`;throw console.warn(`[ProxyFetch] skipping native fetch fallback for non-replayable body: ${a}`),l instanceof Error&&(l.proxyFetchDetail=a),l}if("direct"===j&&(0,i.wX)("PROXY_AUTO_SELECT_ENABLED")){let c="";try{c=new URL(e).hostname}catch{}if(c){let d=await o(c,e);if(d)try{let c=(0,g.I_)(d);return await n(a,{...b,dispatcher:c})}catch{}}}console.warn(`[ProxyFetch] Undici dispatcher failed, falling back to native fetch (after retry): ${r(l)}`);try{return await q(a,b)}catch(b){let a=`dispatcher=[${r(l)}] native=[${r(b)}]`;throw console.warn(`[ProxyFetch] native fetch fallback ALSO failed: ${a}`),b instanceof Error&&(b.proxyFetchDetail=a),b}}throw l}throw s}let n=w.getStore();if(n&&"object"==typeof n&&(0,g.g4)(n.type)){if(!n.relayAuth){let a="vercel"===n.type?"Vercel relay":`${n.type||"Edge"} relay`;throw Error(`${a} configuration error: missing relayAuth`)}let c=y(a),d=(0,g.R4)(c,n.relayAuth),e=new Headers(b?.headers);for(let[a,b]of Object.entries(d))e.set(a,b);let f=(0,g.OK)(n.host?`https://${n.host}`:"");return"true"===process.env.OMNIROUTE_PROXY_FETCH_DEBUG&&console.debug(`[ProxyFetch] Routing via ${n.type||"edge"} relay: ${f}`),await v(`https://${n.host}`,{...b,headers:e,duplex:"half"})}try{let d=(0,g.I_)(k),e=c.undiciFetch??f.fetch;return await e(a,{...b,dispatcher:d})}catch(b){let a=b instanceof Error?b.message:String(b);throw console.error(`[ProxyFetch] Proxy request failed (${j}, fail-closed): ${a}`),b}}async function B(a,b={},c={}){return A(a,b,c)}async function C(a,b={},c=null){return B(a,b)}s||u.isPatched||(globalThis.fetch=A,u.isPatched=!0)}};