omniroute 0.2.0 → 0.4.0

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 (899) hide show
  1. package/README.md +36 -1139
  2. package/app/.next/BUILD_ID +1 -1
  3. package/app/.next/app-path-routes-manifest.json +42 -25
  4. package/app/.next/build-manifest.json +3 -3
  5. package/app/.next/prerender-manifest.json +75 -3
  6. package/app/.next/routes-manifest.json +104 -0
  7. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
  8. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  11. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  14. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/health/page.js +2 -0
  17. package/app/.next/server/app/(dashboard)/dashboard/health/page.js.nft.json +1 -0
  18. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -0
  19. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js +2 -2
  20. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js.nft.json +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
  23. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  26. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  29. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  31. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  32. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  33. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  34. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  35. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  36. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  37. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js +2 -2
  38. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js.nft.json +1 -1
  39. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  40. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js +2 -2
  41. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js.nft.json +1 -1
  42. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  43. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +2 -2
  44. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  45. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  46. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  47. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  48. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  49. package/app/.next/server/app/_global-error/page.js +3 -3
  50. package/app/.next/server/app/_global-error/page.js.nft.json +1 -1
  51. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  52. package/app/.next/server/app/_global-error.html +2 -2
  53. package/app/.next/server/app/_global-error.rsc +10 -9
  54. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +10 -9
  55. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  56. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  57. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  58. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +2 -1
  59. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  60. package/app/.next/server/app/_not-found/page.js +2 -2
  61. package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
  62. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  63. package/app/.next/server/app/_not-found.html +1 -1
  64. package/app/.next/server/app/_not-found.rsc +16 -12
  65. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +16 -12
  66. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  67. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +4 -3
  68. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +8 -4
  69. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  70. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  71. package/app/.next/server/app/api/auth/login/route.js +1 -1
  72. package/app/.next/server/app/api/auth/login/route.js.nft.json +1 -1
  73. package/app/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  74. package/app/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  75. package/app/.next/server/app/api/cache/route.js +2 -0
  76. package/app/.next/server/app/api/cache/route.js.nft.json +1 -0
  77. package/app/.next/server/app/api/cache/route_client-reference-manifest.js +1 -0
  78. package/app/.next/server/app/api/cache/stats/route.js +1 -0
  79. package/app/.next/server/app/api/cache/stats/route.js.nft.json +1 -0
  80. package/app/.next/server/app/api/cache/stats/route_client-reference-manifest.js +1 -0
  81. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -157
  82. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  83. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
  84. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +2 -2
  85. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
  86. package/app/.next/server/app/api/cli-tools/backups/route.js +2 -2
  87. package/app/.next/server/app/api/cli-tools/backups/route_client-reference-manifest.js +1 -1
  88. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
  89. package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
  90. package/app/.next/server/app/api/cli-tools/cline-settings/route.js +2 -2
  91. package/app/.next/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
  92. package/app/.next/server/app/api/cli-tools/codex-profiles/route.js +2 -2
  93. package/app/.next/server/app/api/cli-tools/codex-profiles/route_client-reference-manifest.js +1 -1
  94. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +1 -1
  95. package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
  96. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +1 -1
  97. package/app/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
  98. package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route_client-reference-manifest.js +1 -1
  99. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +1 -1
  100. package/app/.next/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -1
  101. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +1 -1
  102. package/app/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
  103. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route.js +1 -1
  104. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route_client-reference-manifest.js +1 -1
  105. package/app/.next/server/app/api/cloud/auth/route.js +1 -156
  106. package/app/.next/server/app/api/cloud/auth/route.js.nft.json +1 -1
  107. package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
  108. package/app/.next/server/app/api/cloud/credentials/update/route.js +1 -156
  109. package/app/.next/server/app/api/cloud/credentials/update/route.js.nft.json +1 -1
  110. package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
  111. package/app/.next/server/app/api/cloud/model/resolve/route.js +1 -156
  112. package/app/.next/server/app/api/cloud/model/resolve/route.js.nft.json +1 -1
  113. package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
  114. package/app/.next/server/app/api/cloud/models/alias/route.js +1 -1
  115. package/app/.next/server/app/api/cloud/models/alias/route.js.nft.json +1 -1
  116. package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
  117. package/app/.next/server/app/api/combos/[id]/route.js +1 -1
  118. package/app/.next/server/app/api/combos/[id]/route.js.nft.json +1 -1
  119. package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
  120. package/app/.next/server/app/api/combos/metrics/route_client-reference-manifest.js +1 -1
  121. package/app/.next/server/app/api/combos/route.js +1 -1
  122. package/app/.next/server/app/api/combos/route.js.nft.json +1 -1
  123. package/app/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
  124. package/app/.next/server/app/api/combos/test/route.js +1 -156
  125. package/app/.next/server/app/api/combos/test/route.js.nft.json +1 -1
  126. package/app/.next/server/app/api/combos/test/route_client-reference-manifest.js +1 -1
  127. package/app/.next/server/app/api/compliance/audit-log/route.js +1 -0
  128. package/app/.next/server/app/api/compliance/audit-log/route.js.nft.json +1 -0
  129. package/app/.next/server/app/api/compliance/audit-log/route_client-reference-manifest.js +1 -0
  130. package/app/.next/server/app/api/db-backups/route.js +1 -156
  131. package/app/.next/server/app/api/db-backups/route.js.nft.json +1 -1
  132. package/app/.next/server/app/api/db-backups/route_client-reference-manifest.js +1 -1
  133. package/app/.next/server/app/api/evals/[suiteId]/route.js +1 -0
  134. package/app/.next/server/app/api/evals/[suiteId]/route.js.nft.json +1 -0
  135. package/app/.next/server/app/api/evals/[suiteId]/route_client-reference-manifest.js +1 -0
  136. package/app/.next/server/app/api/evals/route.js +1 -0
  137. package/app/.next/server/app/api/evals/route.js.nft.json +1 -0
  138. package/app/.next/server/app/api/evals/route_client-reference-manifest.js +1 -0
  139. package/app/.next/server/app/api/fallback/chains/route.js +3 -0
  140. package/app/.next/server/app/api/fallback/chains/route.js.nft.json +1 -0
  141. package/app/.next/server/app/api/fallback/chains/route_client-reference-manifest.js +1 -0
  142. package/app/.next/server/app/api/init/route.js +1 -1
  143. package/app/.next/server/app/api/init/route.js.nft.json +1 -1
  144. package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  145. package/app/.next/server/app/api/keys/[id]/route.js +1 -1
  146. package/app/.next/server/app/api/keys/[id]/route.js.nft.json +1 -1
  147. package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
  148. package/app/.next/server/app/api/keys/route.js +1 -1
  149. package/app/.next/server/app/api/keys/route.js.nft.json +1 -1
  150. package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
  151. package/app/.next/server/app/api/models/alias/route.js +1 -1
  152. package/app/.next/server/app/api/models/alias/route.js.nft.json +1 -1
  153. package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
  154. package/app/.next/server/app/api/models/availability/route.js +1 -0
  155. package/app/.next/server/app/api/models/availability/route.js.nft.json +1 -0
  156. package/app/.next/server/app/api/models/availability/route_client-reference-manifest.js +1 -0
  157. package/app/.next/server/app/api/models/catalog/route.js +2 -1
  158. package/app/.next/server/app/api/models/catalog/route.js.nft.json +1 -1
  159. package/app/.next/server/app/api/models/catalog/route_client-reference-manifest.js +1 -1
  160. package/app/.next/server/app/api/models/route.js +2 -156
  161. package/app/.next/server/app/api/models/route.js.nft.json +1 -1
  162. package/app/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  163. package/app/.next/server/app/api/monitoring/health/route.js +2 -0
  164. package/app/.next/server/app/api/monitoring/health/route.js.nft.json +1 -0
  165. package/app/.next/server/app/api/monitoring/health/route_client-reference-manifest.js +1 -0
  166. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +2 -2
  167. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  168. package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
  169. package/app/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
  170. package/app/.next/server/app/api/oauth/cursor/import/route.js +1 -1
  171. package/app/.next/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  172. package/app/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
  173. package/app/.next/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
  174. package/app/.next/server/app/api/oauth/kiro/import/route.js +1 -1
  175. package/app/.next/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  176. package/app/.next/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
  177. package/app/.next/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
  178. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  179. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  180. package/app/.next/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
  181. package/app/.next/server/app/api/policies/route.js +3 -0
  182. package/app/.next/server/app/api/policies/route.js.nft.json +1 -0
  183. package/app/.next/server/app/api/policies/route_client-reference-manifest.js +1 -0
  184. package/app/.next/server/app/api/pricing/defaults/route_client-reference-manifest.js +1 -1
  185. package/app/.next/server/app/api/pricing/models/route.js +1 -156
  186. package/app/.next/server/app/api/pricing/models/route.js.nft.json +1 -1
  187. package/app/.next/server/app/api/pricing/models/route_client-reference-manifest.js +1 -1
  188. package/app/.next/server/app/api/pricing/route.js +1 -156
  189. package/app/.next/server/app/api/pricing/route.js.nft.json +1 -1
  190. package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  191. package/app/.next/server/app/api/provider-models/route.js +1 -156
  192. package/app/.next/server/app/api/provider-models/route.js.nft.json +1 -1
  193. package/app/.next/server/app/api/provider-models/route_client-reference-manifest.js +1 -1
  194. package/app/.next/server/app/api/provider-nodes/[id]/route.js +1 -156
  195. package/app/.next/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  196. package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
  197. package/app/.next/server/app/api/provider-nodes/route.js +2 -156
  198. package/app/.next/server/app/api/provider-nodes/route.js.nft.json +1 -1
  199. package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
  200. package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
  201. package/app/.next/server/app/api/providers/[id]/models/route.js +2 -156
  202. package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  203. package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
  204. package/app/.next/server/app/api/providers/[id]/route.js +1 -1
  205. package/app/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
  206. package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
  207. package/app/.next/server/app/api/providers/[id]/test/route.js +1 -1
  208. package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  209. package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
  210. package/app/.next/server/app/api/providers/client/route.js +1 -156
  211. package/app/.next/server/app/api/providers/client/route.js.nft.json +1 -1
  212. package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
  213. package/app/.next/server/app/api/providers/route.js +2 -1
  214. package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
  215. package/app/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
  216. package/app/.next/server/app/api/providers/test-batch/route.js +2 -156
  217. package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  218. package/app/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
  219. package/app/.next/server/app/api/providers/validate/route.js +1 -156
  220. package/app/.next/server/app/api/providers/validate/route.js.nft.json +1 -1
  221. package/app/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
  222. package/app/.next/server/app/api/rate-limit/route.js +1 -156
  223. package/app/.next/server/app/api/rate-limit/route.js.nft.json +1 -1
  224. package/app/.next/server/app/api/rate-limit/route_client-reference-manifest.js +1 -1
  225. package/app/.next/server/app/api/rate-limits/route.js +1 -1
  226. package/app/.next/server/app/api/rate-limits/route.js.nft.json +1 -1
  227. package/app/.next/server/app/api/rate-limits/route_client-reference-manifest.js +1 -1
  228. package/app/.next/server/app/api/resilience/reset/route.js +1 -0
  229. package/app/.next/server/app/api/resilience/reset/route.js.nft.json +1 -0
  230. package/app/.next/server/app/api/resilience/reset/route_client-reference-manifest.js +1 -0
  231. package/app/.next/server/app/api/resilience/route.js +1 -0
  232. package/app/.next/server/app/api/resilience/route.js.nft.json +1 -0
  233. package/app/.next/server/app/api/resilience/route_client-reference-manifest.js +1 -0
  234. package/app/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  235. package/app/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  236. package/app/.next/server/app/api/settings/combo-defaults/route.js +1 -156
  237. package/app/.next/server/app/api/settings/combo-defaults/route.js.nft.json +1 -1
  238. package/app/.next/server/app/api/settings/combo-defaults/route_client-reference-manifest.js +1 -1
  239. package/app/.next/server/app/api/settings/ip-filter/route_client-reference-manifest.js +1 -1
  240. package/app/.next/server/app/api/settings/proxy/route.js +1 -156
  241. package/app/.next/server/app/api/settings/proxy/route.js.nft.json +1 -1
  242. package/app/.next/server/app/api/settings/proxy/route_client-reference-manifest.js +1 -1
  243. package/app/.next/server/app/api/settings/proxy/test/route_client-reference-manifest.js +1 -1
  244. package/app/.next/server/app/api/settings/require-login/route.js +1 -156
  245. package/app/.next/server/app/api/settings/require-login/route.js.nft.json +1 -1
  246. package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
  247. package/app/.next/server/app/api/settings/route.js +1 -1
  248. package/app/.next/server/app/api/settings/route.js.nft.json +1 -1
  249. package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  250. package/app/.next/server/app/api/settings/system-prompt/route.js +1 -156
  251. package/app/.next/server/app/api/settings/system-prompt/route.js.nft.json +1 -1
  252. package/app/.next/server/app/api/settings/system-prompt/route_client-reference-manifest.js +1 -1
  253. package/app/.next/server/app/api/settings/thinking-budget/route.js +1 -156
  254. package/app/.next/server/app/api/settings/thinking-budget/route.js.nft.json +1 -1
  255. package/app/.next/server/app/api/settings/thinking-budget/route_client-reference-manifest.js +1 -1
  256. package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  257. package/app/.next/server/app/api/storage/health/route_client-reference-manifest.js +1 -1
  258. package/app/.next/server/app/api/sync/cloud/route.js +1 -1
  259. package/app/.next/server/app/api/sync/cloud/route.js.nft.json +1 -1
  260. package/app/.next/server/app/api/sync/cloud/route_client-reference-manifest.js +1 -1
  261. package/app/.next/server/app/api/sync/initialize/route.js +1 -1
  262. package/app/.next/server/app/api/sync/initialize/route.js.nft.json +1 -1
  263. package/app/.next/server/app/api/sync/initialize/route_client-reference-manifest.js +1 -1
  264. package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
  265. package/app/.next/server/app/api/telemetry/summary/route.js +1 -0
  266. package/app/.next/server/app/api/telemetry/summary/route.js.nft.json +1 -0
  267. package/app/.next/server/app/api/telemetry/summary/route_client-reference-manifest.js +1 -0
  268. package/app/.next/server/app/api/token-health/route.js +1 -0
  269. package/app/.next/server/app/api/token-health/route.js.nft.json +1 -0
  270. package/app/.next/server/app/api/token-health/route_client-reference-manifest.js +1 -0
  271. package/app/.next/server/app/api/translator/detect/route.js +1 -1
  272. package/app/.next/server/app/api/translator/detect/route_client-reference-manifest.js +1 -1
  273. package/app/.next/server/app/api/translator/history/route_client-reference-manifest.js +1 -1
  274. package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
  275. package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
  276. package/app/.next/server/app/api/translator/send/route.js +1 -156
  277. package/app/.next/server/app/api/translator/send/route.js.nft.json +1 -1
  278. package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
  279. package/app/.next/server/app/api/translator/translate/route.js +1 -156
  280. package/app/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
  281. package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
  282. package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
  283. package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  284. package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
  285. package/app/.next/server/app/api/usage/analytics/route.js +1 -156
  286. package/app/.next/server/app/api/usage/analytics/route.js.nft.json +1 -1
  287. package/app/.next/server/app/api/usage/analytics/route_client-reference-manifest.js +1 -1
  288. package/app/.next/server/app/api/usage/budget/route.js +3 -0
  289. package/app/.next/server/app/api/usage/budget/route.js.nft.json +1 -0
  290. package/app/.next/server/app/api/usage/budget/route_client-reference-manifest.js +1 -0
  291. package/app/.next/server/app/api/usage/call-logs/[id]/route.js +1 -156
  292. package/app/.next/server/app/api/usage/call-logs/[id]/route.js.nft.json +1 -1
  293. package/app/.next/server/app/api/usage/call-logs/[id]/route_client-reference-manifest.js +1 -1
  294. package/app/.next/server/app/api/usage/call-logs/route.js +1 -156
  295. package/app/.next/server/app/api/usage/call-logs/route.js.nft.json +1 -1
  296. package/app/.next/server/app/api/usage/call-logs/route_client-reference-manifest.js +1 -1
  297. package/app/.next/server/app/api/usage/history/route.js +1 -156
  298. package/app/.next/server/app/api/usage/history/route.js.nft.json +1 -1
  299. package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
  300. package/app/.next/server/app/api/usage/logs/route.js +1 -156
  301. package/app/.next/server/app/api/usage/logs/route.js.nft.json +1 -1
  302. package/app/.next/server/app/api/usage/logs/route_client-reference-manifest.js +1 -1
  303. package/app/.next/server/app/api/usage/proxy-logs/route_client-reference-manifest.js +1 -1
  304. package/app/.next/server/app/api/usage/request-logs/route.js +1 -156
  305. package/app/.next/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  306. package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
  307. package/app/.next/server/app/api/v1/api/chat/route.js +1 -156
  308. package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  309. package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
  310. package/app/.next/server/app/api/v1/audio/speech/route.js +1 -156
  311. package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  312. package/app/.next/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
  313. package/app/.next/server/app/api/v1/audio/transcriptions/route.js +1 -156
  314. package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  315. package/app/.next/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
  316. package/app/.next/server/app/api/v1/chat/completions/route.js +1 -1
  317. package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  318. package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
  319. package/app/.next/server/app/api/v1/embeddings/route.js +1 -1
  320. package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  321. package/app/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
  322. package/app/.next/server/app/api/v1/images/generations/route.js +1 -1
  323. package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  324. package/app/.next/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
  325. package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
  326. package/app/.next/server/app/api/v1/messages/route.js +1 -156
  327. package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
  328. package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
  329. package/app/.next/server/app/api/v1/models/route.js +2 -1
  330. package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
  331. package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
  332. package/app/.next/server/app/api/v1/moderations/route.js +1 -156
  333. package/app/.next/server/app/api/v1/moderations/route.js.nft.json +1 -1
  334. package/app/.next/server/app/api/v1/moderations/route_client-reference-manifest.js +1 -1
  335. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js +1 -156
  336. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js.nft.json +1 -1
  337. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route_client-reference-manifest.js +1 -1
  338. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js +1 -1
  339. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js.nft.json +1 -1
  340. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route_client-reference-manifest.js +1 -1
  341. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js +1 -1
  342. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js.nft.json +1 -1
  343. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route_client-reference-manifest.js +1 -1
  344. package/app/.next/server/app/api/v1/rerank/route.js +1 -156
  345. package/app/.next/server/app/api/v1/rerank/route.js.nft.json +1 -1
  346. package/app/.next/server/app/api/v1/rerank/route_client-reference-manifest.js +1 -1
  347. package/app/.next/server/app/api/v1/responses/route.js +1 -156
  348. package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
  349. package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
  350. package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
  351. package/app/.next/server/app/api/v1beta/models/[...path]/route.js +1 -156
  352. package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  353. package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
  354. package/app/.next/server/app/api/v1beta/models/route.js +2 -1
  355. package/app/.next/server/app/api/v1beta/models/route.js.nft.json +1 -1
  356. package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
  357. package/app/.next/server/app/callback/page.js +2 -2
  358. package/app/.next/server/app/callback/page.js.nft.json +1 -1
  359. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  360. package/app/.next/server/app/callback.html +1 -1
  361. package/app/.next/server/app/callback.rsc +17 -16
  362. package/app/.next/server/app/callback.segments/_full.segment.rsc +17 -16
  363. package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
  364. package/app/.next/server/app/callback.segments/_index.segment.rsc +4 -3
  365. package/app/.next/server/app/callback.segments/_tree.segment.rsc +2 -2
  366. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  367. package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
  368. package/app/.next/server/app/dashboard/cli-tools.html +1 -1
  369. package/app/.next/server/app/dashboard/cli-tools.rsc +16 -15
  370. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  371. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  372. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  373. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  374. package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +16 -15
  375. package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  376. package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -3
  377. package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  378. package/app/.next/server/app/dashboard/combos.html +1 -1
  379. package/app/.next/server/app/dashboard/combos.rsc +18 -17
  380. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  381. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  382. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  383. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  384. package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +18 -17
  385. package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  386. package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +4 -3
  387. package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  388. package/app/.next/server/app/dashboard/endpoint.html +1 -1
  389. package/app/.next/server/app/dashboard/endpoint.rsc +16 -15
  390. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  391. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  392. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  393. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  394. package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +16 -15
  395. package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  396. package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -3
  397. package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  398. package/app/.next/server/app/dashboard/health.html +1 -0
  399. package/app/.next/server/app/dashboard/health.meta +17 -0
  400. package/app/.next/server/app/dashboard/health.rsc +24 -0
  401. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard/health/__PAGE__.segment.rsc +9 -0
  402. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard/health.segment.rsc +4 -0
  403. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +4 -0
  404. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -0
  405. package/app/.next/server/app/dashboard/health.segments/_full.segment.rsc +24 -0
  406. package/app/.next/server/app/dashboard/health.segments/_head.segment.rsc +6 -0
  407. package/app/.next/server/app/dashboard/health.segments/_index.segment.rsc +9 -0
  408. package/app/.next/server/app/dashboard/health.segments/_tree.segment.rsc +5 -0
  409. package/app/.next/server/app/dashboard/onboarding.html +1 -1
  410. package/app/.next/server/app/dashboard/onboarding.rsc +18 -17
  411. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard/onboarding/__PAGE__.segment.rsc +1 -1
  412. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard/onboarding.segment.rsc +1 -1
  413. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  414. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  415. package/app/.next/server/app/dashboard/onboarding.segments/_full.segment.rsc +18 -17
  416. package/app/.next/server/app/dashboard/onboarding.segments/_head.segment.rsc +1 -1
  417. package/app/.next/server/app/dashboard/onboarding.segments/_index.segment.rsc +4 -3
  418. package/app/.next/server/app/dashboard/onboarding.segments/_tree.segment.rsc +2 -2
  419. package/app/.next/server/app/dashboard/profile.html +1 -1
  420. package/app/.next/server/app/dashboard/profile.rsc +15 -14
  421. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +1 -1
  422. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  423. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  424. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  425. package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +15 -14
  426. package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  427. package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +4 -3
  428. package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  429. package/app/.next/server/app/dashboard/providers/new.html +1 -1
  430. package/app/.next/server/app/dashboard/providers/new.rsc +18 -17
  431. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  432. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  433. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  434. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  435. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  436. package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +18 -17
  437. package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  438. package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -3
  439. package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  440. package/app/.next/server/app/dashboard/providers.html +1 -1
  441. package/app/.next/server/app/dashboard/providers.rsc +18 -17
  442. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  443. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  444. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  445. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  446. package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +18 -17
  447. package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  448. package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +4 -3
  449. package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  450. package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
  451. package/app/.next/server/app/dashboard/settings/pricing.rsc +18 -17
  452. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  453. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing.segment.rsc +1 -1
  454. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings.segment.rsc +1 -1
  455. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  456. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  457. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +18 -17
  458. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  459. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -3
  460. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  461. package/app/.next/server/app/dashboard/settings.html +1 -1
  462. package/app/.next/server/app/dashboard/settings.rsc +18 -17
  463. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard/settings/__PAGE__.segment.rsc +2 -2
  464. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard/settings.segment.rsc +1 -1
  465. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  466. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  467. package/app/.next/server/app/dashboard/settings.segments/_full.segment.rsc +18 -17
  468. package/app/.next/server/app/dashboard/settings.segments/_head.segment.rsc +1 -1
  469. package/app/.next/server/app/dashboard/settings.segments/_index.segment.rsc +4 -3
  470. package/app/.next/server/app/dashboard/settings.segments/_tree.segment.rsc +2 -2
  471. package/app/.next/server/app/dashboard/translator.html +2 -2
  472. package/app/.next/server/app/dashboard/translator.rsc +15 -14
  473. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  474. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  475. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  476. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  477. package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +15 -14
  478. package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  479. package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +4 -3
  480. package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  481. package/app/.next/server/app/dashboard/usage.html +2 -1
  482. package/app/.next/server/app/dashboard/usage.rsc +18 -17
  483. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  484. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  485. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  486. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  487. package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +18 -17
  488. package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  489. package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +4 -3
  490. package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  491. package/app/.next/server/app/docs/page.js +3 -2
  492. package/app/.next/server/app/docs/page.js.nft.json +1 -1
  493. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  494. package/app/.next/server/app/docs.html +1 -1
  495. package/app/.next/server/app/docs.rsc +22 -24
  496. package/app/.next/server/app/docs.segments/_full.segment.rsc +22 -24
  497. package/app/.next/server/app/docs.segments/_head.segment.rsc +1 -1
  498. package/app/.next/server/app/docs.segments/_index.segment.rsc +4 -3
  499. package/app/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
  500. package/app/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +1 -1
  501. package/app/.next/server/app/docs.segments/docs.segment.rsc +1 -1
  502. package/app/.next/server/app/forbidden/page.js +2 -0
  503. package/app/.next/server/app/forbidden/page.js.nft.json +1 -0
  504. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -0
  505. package/app/.next/server/app/forbidden.html +1 -0
  506. package/app/.next/server/app/forbidden.meta +15 -0
  507. package/app/.next/server/app/forbidden.rsc +23 -0
  508. package/app/.next/server/app/forbidden.segments/_full.segment.rsc +23 -0
  509. package/app/.next/server/app/forbidden.segments/_head.segment.rsc +6 -0
  510. package/app/.next/server/app/forbidden.segments/_index.segment.rsc +9 -0
  511. package/app/.next/server/app/forbidden.segments/_tree.segment.rsc +5 -0
  512. package/app/.next/server/app/forbidden.segments/forbidden/__PAGE__.segment.rsc +9 -0
  513. package/app/.next/server/app/forbidden.segments/forbidden.segment.rsc +4 -0
  514. package/app/.next/server/app/forgot-password/page.js +2 -0
  515. package/app/.next/server/app/forgot-password/page.js.nft.json +1 -0
  516. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -0
  517. package/app/.next/server/app/forgot-password.html +1 -0
  518. package/app/.next/server/app/forgot-password.meta +15 -0
  519. package/app/.next/server/app/forgot-password.rsc +23 -0
  520. package/app/.next/server/app/forgot-password.segments/_full.segment.rsc +23 -0
  521. package/app/.next/server/app/forgot-password.segments/_head.segment.rsc +6 -0
  522. package/app/.next/server/app/forgot-password.segments/_index.segment.rsc +9 -0
  523. package/app/.next/server/app/forgot-password.segments/_tree.segment.rsc +5 -0
  524. package/app/.next/server/app/forgot-password.segments/forgot-password/__PAGE__.segment.rsc +9 -0
  525. package/app/.next/server/app/forgot-password.segments/forgot-password.segment.rsc +4 -0
  526. package/app/.next/server/app/index.html +1 -1
  527. package/app/.next/server/app/index.rsc +14 -13
  528. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  529. package/app/.next/server/app/index.segments/_full.segment.rsc +14 -13
  530. package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
  531. package/app/.next/server/app/index.segments/_index.segment.rsc +4 -3
  532. package/app/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  533. package/app/.next/server/app/landing/page.js +2 -2
  534. package/app/.next/server/app/landing/page.js.nft.json +1 -1
  535. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  536. package/app/.next/server/app/landing.html +1 -1
  537. package/app/.next/server/app/landing.rsc +17 -16
  538. package/app/.next/server/app/landing.segments/_full.segment.rsc +17 -16
  539. package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
  540. package/app/.next/server/app/landing.segments/_index.segment.rsc +4 -3
  541. package/app/.next/server/app/landing.segments/_tree.segment.rsc +2 -2
  542. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  543. package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
  544. package/app/.next/server/app/login/page.js +2 -2
  545. package/app/.next/server/app/login/page.js.nft.json +1 -1
  546. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  547. package/app/.next/server/app/login.html +1 -1
  548. package/app/.next/server/app/login.rsc +17 -16
  549. package/app/.next/server/app/login.segments/_full.segment.rsc +17 -16
  550. package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
  551. package/app/.next/server/app/login.segments/_index.segment.rsc +4 -3
  552. package/app/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  553. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  554. package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
  555. package/app/.next/server/app/page.js +2 -2
  556. package/app/.next/server/app/page.js.nft.json +1 -1
  557. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  558. package/app/.next/server/app/privacy/page.js +2 -2
  559. package/app/.next/server/app/privacy/page.js.nft.json +1 -1
  560. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  561. package/app/.next/server/app/privacy.html +1 -1
  562. package/app/.next/server/app/privacy.rsc +21 -23
  563. package/app/.next/server/app/privacy.segments/_full.segment.rsc +21 -23
  564. package/app/.next/server/app/privacy.segments/_head.segment.rsc +1 -1
  565. package/app/.next/server/app/privacy.segments/_index.segment.rsc +4 -3
  566. package/app/.next/server/app/privacy.segments/_tree.segment.rsc +2 -2
  567. package/app/.next/server/app/privacy.segments/privacy/__PAGE__.segment.rsc +2 -2
  568. package/app/.next/server/app/privacy.segments/privacy.segment.rsc +1 -1
  569. package/app/.next/server/app/terms/page.js +2 -2
  570. package/app/.next/server/app/terms/page.js.nft.json +1 -1
  571. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  572. package/app/.next/server/app/terms.html +1 -1
  573. package/app/.next/server/app/terms.rsc +22 -20
  574. package/app/.next/server/app/terms.segments/_full.segment.rsc +22 -20
  575. package/app/.next/server/app/terms.segments/_head.segment.rsc +1 -1
  576. package/app/.next/server/app/terms.segments/_index.segment.rsc +4 -3
  577. package/app/.next/server/app/terms.segments/_tree.segment.rsc +2 -2
  578. package/app/.next/server/app/terms.segments/terms/__PAGE__.segment.rsc +1 -1
  579. package/app/.next/server/app/terms.segments/terms.segment.rsc +1 -1
  580. package/app/.next/server/app-paths-manifest.json +42 -25
  581. package/app/.next/server/chunks/1228.js +3 -0
  582. package/app/.next/server/chunks/1362.js +1 -1
  583. package/app/.next/server/chunks/152.js +1 -0
  584. package/app/.next/server/chunks/1746.js +1 -0
  585. package/app/.next/server/chunks/216.js +37 -0
  586. package/app/.next/server/chunks/2399.js +1 -1
  587. package/app/.next/server/chunks/3676.js +2 -0
  588. package/app/.next/server/chunks/4004.js +1 -0
  589. package/app/.next/server/chunks/4352.js +46 -0
  590. package/app/.next/server/chunks/4436.js +1 -1
  591. package/app/.next/server/chunks/4443.js +1 -1
  592. package/app/.next/server/chunks/{8259.js → 4469.js} +52 -2
  593. package/app/.next/server/chunks/4755.js +16 -2
  594. package/app/.next/server/chunks/{7132.js → 4832.js} +3 -3
  595. package/app/.next/server/chunks/5040.js +1 -0
  596. package/app/.next/server/chunks/5727.js +1 -0
  597. package/app/.next/server/chunks/7093.js +2 -0
  598. package/app/.next/server/chunks/7271.js +1 -0
  599. package/app/.next/server/chunks/7615.js +9 -2
  600. package/app/.next/server/chunks/7763.js +1 -0
  601. package/app/.next/server/chunks/7802.js +1 -0
  602. package/app/.next/server/chunks/7968.js +3 -1
  603. package/app/.next/server/chunks/8020.js +13 -0
  604. package/app/.next/server/chunks/8108.js +1 -1
  605. package/app/.next/server/chunks/8392.js +1 -0
  606. package/app/.next/server/chunks/8400.js +1 -1
  607. package/app/.next/server/chunks/8847.js +3 -0
  608. package/app/.next/server/chunks/9263.js +1 -0
  609. package/app/.next/server/middleware-build-manifest.js +1 -1
  610. package/app/.next/server/middleware.js +207 -2
  611. package/app/.next/server/pages/404.html +1 -1
  612. package/app/.next/server/pages/500.html +2 -2
  613. package/app/.next/server/server-reference-manifest.js +1 -1
  614. package/app/.next/server/server-reference-manifest.json +1 -1
  615. package/app/.next/static/H6LKncewEoggilnvYL9Ff/_buildManifest.js +1 -0
  616. package/app/.next/static/chunks/1525-ec661e96acc6574e.js +21 -0
  617. package/app/.next/static/chunks/3191-0bbb8ebd1bd32d1d.js +1 -0
  618. package/app/.next/static/chunks/{6941-0643e7aebf5ed645.js → 6941-77ce2b3be7709b94.js} +1 -1
  619. package/app/.next/static/chunks/7896-6e5648294ec51150.js +2 -0
  620. package/app/.next/static/chunks/9751-3a35163d337d54ea.js +37 -0
  621. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/{page-148b0ad18f6bec86.js → page-4cec40aa933b932e.js} +1 -1
  622. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/page-962f1e2bfe0d0b8d.js +1 -0
  623. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-5caaa75c0ab78bc1.js +1 -0
  624. package/app/.next/static/chunks/app/(dashboard)/dashboard/health/page-81352b2272952085.js +1 -0
  625. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-3d3dabe4363d421d.js +1 -0
  626. package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/page-c02303813bcb9777.js +1 -0
  627. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-57279ed20b5399be.js +1 -0
  628. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/{page-4bd8ea64f2e8008b.js → page-9667287d75830fd5.js} +1 -1
  629. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-d08547fcb1031577.js +1 -0
  630. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-26179a630baa2686.js +1 -0
  631. package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/{page-c891465a1a2938d2.js → page-6190920e7526556c.js} +1 -1
  632. package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-d1066b6c4c28fe46.js +1 -0
  633. package/app/.next/static/chunks/app/(dashboard)/layout-b6fc79d0628b97e3.js +1 -0
  634. package/app/.next/static/chunks/app/_global-error/page-c02303813bcb9777.js +1 -0
  635. package/app/.next/static/chunks/app/_not-found/page-c02303813bcb9777.js +1 -0
  636. package/app/.next/static/chunks/app/api/auth/login/route-c02303813bcb9777.js +1 -0
  637. package/app/.next/static/chunks/app/api/auth/logout/route-c02303813bcb9777.js +1 -0
  638. package/app/.next/static/chunks/app/api/cache/route-c02303813bcb9777.js +1 -0
  639. package/app/.next/static/chunks/app/api/cache/stats/route-c02303813bcb9777.js +1 -0
  640. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-c02303813bcb9777.js +1 -0
  641. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-c02303813bcb9777.js +1 -0
  642. package/app/.next/static/chunks/app/api/cli-tools/backups/route-c02303813bcb9777.js +1 -0
  643. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-c02303813bcb9777.js +1 -0
  644. package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-c02303813bcb9777.js +1 -0
  645. package/app/.next/static/chunks/app/api/cli-tools/codex-profiles/route-c02303813bcb9777.js +1 -0
  646. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-c02303813bcb9777.js +1 -0
  647. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-c02303813bcb9777.js +1 -0
  648. package/app/.next/static/chunks/app/api/cli-tools/guide-settings/[toolId]/route-c02303813bcb9777.js +1 -0
  649. package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-c02303813bcb9777.js +1 -0
  650. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-c02303813bcb9777.js +1 -0
  651. package/app/.next/static/chunks/app/api/cli-tools/runtime/[toolId]/route-c02303813bcb9777.js +1 -0
  652. package/app/.next/static/chunks/app/api/cloud/auth/route-c02303813bcb9777.js +1 -0
  653. package/app/.next/static/chunks/app/api/cloud/credentials/update/route-c02303813bcb9777.js +1 -0
  654. package/app/.next/static/chunks/app/api/cloud/model/resolve/route-c02303813bcb9777.js +1 -0
  655. package/app/.next/static/chunks/app/api/cloud/models/alias/route-c02303813bcb9777.js +1 -0
  656. package/app/.next/static/chunks/app/api/combos/[id]/route-c02303813bcb9777.js +1 -0
  657. package/app/.next/static/chunks/app/api/combos/metrics/route-c02303813bcb9777.js +1 -0
  658. package/app/.next/static/chunks/app/api/combos/route-c02303813bcb9777.js +1 -0
  659. package/app/.next/static/chunks/app/api/combos/test/route-c02303813bcb9777.js +1 -0
  660. package/app/.next/static/chunks/app/api/compliance/audit-log/route-c02303813bcb9777.js +1 -0
  661. package/app/.next/static/chunks/app/api/db-backups/route-c02303813bcb9777.js +1 -0
  662. package/app/.next/static/chunks/app/api/evals/[suiteId]/route-c02303813bcb9777.js +1 -0
  663. package/app/.next/static/chunks/app/api/evals/route-c02303813bcb9777.js +1 -0
  664. package/app/.next/static/chunks/app/api/fallback/chains/route-c02303813bcb9777.js +1 -0
  665. package/app/.next/static/chunks/app/api/init/route-c02303813bcb9777.js +1 -0
  666. package/app/.next/static/chunks/app/api/keys/[id]/route-c02303813bcb9777.js +1 -0
  667. package/app/.next/static/chunks/app/api/keys/route-c02303813bcb9777.js +1 -0
  668. package/app/.next/static/chunks/app/api/models/alias/route-c02303813bcb9777.js +1 -0
  669. package/app/.next/static/chunks/app/api/models/availability/route-c02303813bcb9777.js +1 -0
  670. package/app/.next/static/chunks/app/api/models/catalog/route-c02303813bcb9777.js +1 -0
  671. package/app/.next/static/chunks/app/api/models/route-c02303813bcb9777.js +1 -0
  672. package/app/.next/static/chunks/app/api/monitoring/health/route-c02303813bcb9777.js +1 -0
  673. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-c02303813bcb9777.js +1 -0
  674. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-c02303813bcb9777.js +1 -0
  675. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-c02303813bcb9777.js +1 -0
  676. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-c02303813bcb9777.js +1 -0
  677. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-c02303813bcb9777.js +1 -0
  678. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-c02303813bcb9777.js +1 -0
  679. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-c02303813bcb9777.js +1 -0
  680. package/app/.next/static/chunks/app/api/policies/route-c02303813bcb9777.js +1 -0
  681. package/app/.next/static/chunks/app/api/pricing/defaults/route-c02303813bcb9777.js +1 -0
  682. package/app/.next/static/chunks/app/api/pricing/models/route-c02303813bcb9777.js +1 -0
  683. package/app/.next/static/chunks/app/api/pricing/route-c02303813bcb9777.js +1 -0
  684. package/app/.next/static/chunks/app/api/provider-models/route-c02303813bcb9777.js +1 -0
  685. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-c02303813bcb9777.js +1 -0
  686. package/app/.next/static/chunks/app/api/provider-nodes/route-c02303813bcb9777.js +1 -0
  687. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-c02303813bcb9777.js +1 -0
  688. package/app/.next/static/chunks/app/api/providers/[id]/models/route-c02303813bcb9777.js +1 -0
  689. package/app/.next/static/chunks/app/api/providers/[id]/route-c02303813bcb9777.js +1 -0
  690. package/app/.next/static/chunks/app/api/providers/[id]/test/route-c02303813bcb9777.js +1 -0
  691. package/app/.next/static/chunks/app/api/providers/client/route-c02303813bcb9777.js +1 -0
  692. package/app/.next/static/chunks/app/api/providers/route-c02303813bcb9777.js +1 -0
  693. package/app/.next/static/chunks/app/api/providers/test-batch/route-c02303813bcb9777.js +1 -0
  694. package/app/.next/static/chunks/app/api/providers/validate/route-c02303813bcb9777.js +1 -0
  695. package/app/.next/static/chunks/app/api/rate-limit/route-c02303813bcb9777.js +1 -0
  696. package/app/.next/static/chunks/app/api/rate-limits/route-c02303813bcb9777.js +1 -0
  697. package/app/.next/static/chunks/app/api/resilience/reset/route-c02303813bcb9777.js +1 -0
  698. package/app/.next/static/chunks/app/api/resilience/route-c02303813bcb9777.js +1 -0
  699. package/app/.next/static/chunks/app/api/restart/route-c02303813bcb9777.js +1 -0
  700. package/app/.next/static/chunks/app/api/sessions/route-c02303813bcb9777.js +1 -0
  701. package/app/.next/static/chunks/app/api/settings/combo-defaults/route-c02303813bcb9777.js +1 -0
  702. package/app/.next/static/chunks/app/api/settings/ip-filter/route-c02303813bcb9777.js +1 -0
  703. package/app/.next/static/chunks/app/api/settings/proxy/route-c02303813bcb9777.js +1 -0
  704. package/app/.next/static/chunks/app/api/settings/proxy/test/route-c02303813bcb9777.js +1 -0
  705. package/app/.next/static/chunks/app/api/settings/require-login/route-c02303813bcb9777.js +1 -0
  706. package/app/.next/static/chunks/app/api/settings/route-c02303813bcb9777.js +1 -0
  707. package/app/.next/static/chunks/app/api/settings/system-prompt/route-c02303813bcb9777.js +1 -0
  708. package/app/.next/static/chunks/app/api/settings/thinking-budget/route-c02303813bcb9777.js +1 -0
  709. package/app/.next/static/chunks/app/api/shutdown/route-c02303813bcb9777.js +1 -0
  710. package/app/.next/static/chunks/app/api/storage/health/route-c02303813bcb9777.js +1 -0
  711. package/app/.next/static/chunks/app/api/sync/cloud/route-c02303813bcb9777.js +1 -0
  712. package/app/.next/static/chunks/app/api/sync/initialize/route-c02303813bcb9777.js +1 -0
  713. package/app/.next/static/chunks/app/api/tags/route-c02303813bcb9777.js +1 -0
  714. package/app/.next/static/chunks/app/api/telemetry/summary/route-c02303813bcb9777.js +1 -0
  715. package/app/.next/static/chunks/app/api/token-health/route-c02303813bcb9777.js +1 -0
  716. package/app/.next/static/chunks/app/api/translator/detect/route-c02303813bcb9777.js +1 -0
  717. package/app/.next/static/chunks/app/api/translator/history/route-c02303813bcb9777.js +1 -0
  718. package/app/.next/static/chunks/app/api/translator/load/route-c02303813bcb9777.js +1 -0
  719. package/app/.next/static/chunks/app/api/translator/save/route-c02303813bcb9777.js +1 -0
  720. package/app/.next/static/chunks/app/api/translator/send/route-c02303813bcb9777.js +1 -0
  721. package/app/.next/static/chunks/app/api/translator/translate/route-c02303813bcb9777.js +1 -0
  722. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-c02303813bcb9777.js +1 -0
  723. package/app/.next/static/chunks/app/api/usage/analytics/route-c02303813bcb9777.js +1 -0
  724. package/app/.next/static/chunks/app/api/usage/budget/route-c02303813bcb9777.js +1 -0
  725. package/app/.next/static/chunks/app/api/usage/call-logs/[id]/route-c02303813bcb9777.js +1 -0
  726. package/app/.next/static/chunks/app/api/usage/call-logs/route-c02303813bcb9777.js +1 -0
  727. package/app/.next/static/chunks/app/api/usage/history/route-c02303813bcb9777.js +1 -0
  728. package/app/.next/static/chunks/app/api/usage/logs/route-c02303813bcb9777.js +1 -0
  729. package/app/.next/static/chunks/app/api/usage/proxy-logs/route-c02303813bcb9777.js +1 -0
  730. package/app/.next/static/chunks/app/api/usage/request-logs/route-c02303813bcb9777.js +1 -0
  731. package/app/.next/static/chunks/app/api/v1/api/chat/route-c02303813bcb9777.js +1 -0
  732. package/app/.next/static/chunks/app/api/v1/audio/speech/route-c02303813bcb9777.js +1 -0
  733. package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-c02303813bcb9777.js +1 -0
  734. package/app/.next/static/chunks/app/api/v1/chat/completions/route-c02303813bcb9777.js +1 -0
  735. package/app/.next/static/chunks/app/api/v1/embeddings/route-c02303813bcb9777.js +1 -0
  736. package/app/.next/static/chunks/app/api/v1/images/generations/route-c02303813bcb9777.js +1 -0
  737. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-c02303813bcb9777.js +1 -0
  738. package/app/.next/static/chunks/app/api/v1/messages/route-c02303813bcb9777.js +1 -0
  739. package/app/.next/static/chunks/app/api/v1/models/route-c02303813bcb9777.js +1 -0
  740. package/app/.next/static/chunks/app/api/v1/moderations/route-c02303813bcb9777.js +1 -0
  741. package/app/.next/static/chunks/app/api/v1/providers/[provider]/chat/completions/route-c02303813bcb9777.js +1 -0
  742. package/app/.next/static/chunks/app/api/v1/providers/[provider]/embeddings/route-c02303813bcb9777.js +1 -0
  743. package/app/.next/static/chunks/app/api/v1/providers/[provider]/images/generations/route-c02303813bcb9777.js +1 -0
  744. package/app/.next/static/chunks/app/api/v1/rerank/route-c02303813bcb9777.js +1 -0
  745. package/app/.next/static/chunks/app/api/v1/responses/route-c02303813bcb9777.js +1 -0
  746. package/app/.next/static/chunks/app/api/v1/route-c02303813bcb9777.js +1 -0
  747. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-c02303813bcb9777.js +1 -0
  748. package/app/.next/static/chunks/app/api/v1beta/models/route-c02303813bcb9777.js +1 -0
  749. package/app/.next/static/chunks/app/forbidden/page-6806872971c364f0.js +1 -0
  750. package/app/.next/static/chunks/app/forgot-password/page-9c116a597f3df4d1.js +1 -0
  751. package/app/.next/static/chunks/app/global-error-6abc2976016d7bd1.js +1 -0
  752. package/app/.next/static/chunks/app/layout-6504ce60623b0a41.js +1 -0
  753. package/app/.next/static/chunks/app/login/{page-e99ed6a85e91ae7c.js → page-93ac51059ef434b7.js} +1 -1
  754. package/app/.next/static/chunks/app/not-found-e1af8b9c5785b71b.js +1 -0
  755. package/app/.next/static/chunks/app/page-c02303813bcb9777.js +1 -0
  756. package/app/.next/static/chunks/main-app-c9da11a8061df107.js +1 -0
  757. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-c02303813bcb9777.js +1 -0
  758. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-c02303813bcb9777.js +1 -0
  759. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-c02303813bcb9777.js +1 -0
  760. package/app/.next/static/css/2ecfad7c4409b17e.css +1 -0
  761. package/app/package.json +9 -5
  762. package/app/src/shared/utils/apiKey.js +5 -1
  763. package/bin/reset-password.mjs +116 -0
  764. package/package.json +9 -5
  765. package/app/.next/server/chunks/1483.js +0 -156
  766. package/app/.next/server/chunks/21.js +0 -46
  767. package/app/.next/server/chunks/2116.js +0 -1
  768. package/app/.next/server/chunks/2250.js +0 -1
  769. package/app/.next/server/chunks/3919.js +0 -1
  770. package/app/.next/server/chunks/481.js +0 -156
  771. package/app/.next/server/chunks/5640.js +0 -1
  772. package/app/.next/server/chunks/6194.js +0 -1
  773. package/app/.next/server/chunks/6937.js +0 -156
  774. package/app/.next/server/chunks/7471.js +0 -13
  775. package/app/.next/server/chunks/9188.js +0 -1
  776. package/app/.next/static/XnNWFvV2IXZ4xuX0F1Skg/_buildManifest.js +0 -1
  777. package/app/.next/static/chunks/1525-8aaae9ffdaa67144.js +0 -7
  778. package/app/.next/static/chunks/7896-4e519429f67f381e.js +0 -1
  779. package/app/.next/static/chunks/8013-04b90e92e614b5d9.js +0 -1
  780. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/page-49caa7328acff82d.js +0 -1
  781. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-ab8b870377087bc7.js +0 -1
  782. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-bc5764734a448526.js +0 -1
  783. package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/page-c452284fb77ecee0.js +0 -1
  784. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-fb1fa9ae8a3af8c8.js +0 -1
  785. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-4140db5a52fc7323.js +0 -1
  786. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-70619a1bafdc9c4c.js +0 -1
  787. package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-9ee5997edb778414.js +0 -1
  788. package/app/.next/static/chunks/app/(dashboard)/layout-0ee92d902ee7a39c.js +0 -1
  789. package/app/.next/static/chunks/app/_global-error/page-c452284fb77ecee0.js +0 -1
  790. package/app/.next/static/chunks/app/_not-found/page-a99a85b5268f1c54.js +0 -1
  791. package/app/.next/static/chunks/app/api/auth/login/route-c452284fb77ecee0.js +0 -1
  792. package/app/.next/static/chunks/app/api/auth/logout/route-c452284fb77ecee0.js +0 -1
  793. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-c452284fb77ecee0.js +0 -1
  794. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-c452284fb77ecee0.js +0 -1
  795. package/app/.next/static/chunks/app/api/cli-tools/backups/route-c452284fb77ecee0.js +0 -1
  796. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-c452284fb77ecee0.js +0 -1
  797. package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-c452284fb77ecee0.js +0 -1
  798. package/app/.next/static/chunks/app/api/cli-tools/codex-profiles/route-c452284fb77ecee0.js +0 -1
  799. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-c452284fb77ecee0.js +0 -1
  800. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-c452284fb77ecee0.js +0 -1
  801. package/app/.next/static/chunks/app/api/cli-tools/guide-settings/[toolId]/route-c452284fb77ecee0.js +0 -1
  802. package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-c452284fb77ecee0.js +0 -1
  803. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-c452284fb77ecee0.js +0 -1
  804. package/app/.next/static/chunks/app/api/cli-tools/runtime/[toolId]/route-c452284fb77ecee0.js +0 -1
  805. package/app/.next/static/chunks/app/api/cloud/auth/route-c452284fb77ecee0.js +0 -1
  806. package/app/.next/static/chunks/app/api/cloud/credentials/update/route-c452284fb77ecee0.js +0 -1
  807. package/app/.next/static/chunks/app/api/cloud/model/resolve/route-c452284fb77ecee0.js +0 -1
  808. package/app/.next/static/chunks/app/api/cloud/models/alias/route-c452284fb77ecee0.js +0 -1
  809. package/app/.next/static/chunks/app/api/combos/[id]/route-c452284fb77ecee0.js +0 -1
  810. package/app/.next/static/chunks/app/api/combos/metrics/route-c452284fb77ecee0.js +0 -1
  811. package/app/.next/static/chunks/app/api/combos/route-c452284fb77ecee0.js +0 -1
  812. package/app/.next/static/chunks/app/api/combos/test/route-c452284fb77ecee0.js +0 -1
  813. package/app/.next/static/chunks/app/api/db-backups/route-c452284fb77ecee0.js +0 -1
  814. package/app/.next/static/chunks/app/api/init/route-c452284fb77ecee0.js +0 -1
  815. package/app/.next/static/chunks/app/api/keys/[id]/route-c452284fb77ecee0.js +0 -1
  816. package/app/.next/static/chunks/app/api/keys/route-c452284fb77ecee0.js +0 -1
  817. package/app/.next/static/chunks/app/api/models/alias/route-c452284fb77ecee0.js +0 -1
  818. package/app/.next/static/chunks/app/api/models/catalog/route-c452284fb77ecee0.js +0 -1
  819. package/app/.next/static/chunks/app/api/models/route-c452284fb77ecee0.js +0 -1
  820. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-c452284fb77ecee0.js +0 -1
  821. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-c452284fb77ecee0.js +0 -1
  822. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-c452284fb77ecee0.js +0 -1
  823. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-c452284fb77ecee0.js +0 -1
  824. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-c452284fb77ecee0.js +0 -1
  825. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-c452284fb77ecee0.js +0 -1
  826. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-c452284fb77ecee0.js +0 -1
  827. package/app/.next/static/chunks/app/api/pricing/defaults/route-c452284fb77ecee0.js +0 -1
  828. package/app/.next/static/chunks/app/api/pricing/models/route-c452284fb77ecee0.js +0 -1
  829. package/app/.next/static/chunks/app/api/pricing/route-c452284fb77ecee0.js +0 -1
  830. package/app/.next/static/chunks/app/api/provider-models/route-c452284fb77ecee0.js +0 -1
  831. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-c452284fb77ecee0.js +0 -1
  832. package/app/.next/static/chunks/app/api/provider-nodes/route-c452284fb77ecee0.js +0 -1
  833. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-c452284fb77ecee0.js +0 -1
  834. package/app/.next/static/chunks/app/api/providers/[id]/models/route-c452284fb77ecee0.js +0 -1
  835. package/app/.next/static/chunks/app/api/providers/[id]/route-c452284fb77ecee0.js +0 -1
  836. package/app/.next/static/chunks/app/api/providers/[id]/test/route-c452284fb77ecee0.js +0 -1
  837. package/app/.next/static/chunks/app/api/providers/client/route-c452284fb77ecee0.js +0 -1
  838. package/app/.next/static/chunks/app/api/providers/route-c452284fb77ecee0.js +0 -1
  839. package/app/.next/static/chunks/app/api/providers/test-batch/route-c452284fb77ecee0.js +0 -1
  840. package/app/.next/static/chunks/app/api/providers/validate/route-c452284fb77ecee0.js +0 -1
  841. package/app/.next/static/chunks/app/api/rate-limit/route-c452284fb77ecee0.js +0 -1
  842. package/app/.next/static/chunks/app/api/rate-limits/route-c452284fb77ecee0.js +0 -1
  843. package/app/.next/static/chunks/app/api/restart/route-c452284fb77ecee0.js +0 -1
  844. package/app/.next/static/chunks/app/api/sessions/route-c452284fb77ecee0.js +0 -1
  845. package/app/.next/static/chunks/app/api/settings/combo-defaults/route-c452284fb77ecee0.js +0 -1
  846. package/app/.next/static/chunks/app/api/settings/ip-filter/route-c452284fb77ecee0.js +0 -1
  847. package/app/.next/static/chunks/app/api/settings/proxy/route-c452284fb77ecee0.js +0 -1
  848. package/app/.next/static/chunks/app/api/settings/proxy/test/route-c452284fb77ecee0.js +0 -1
  849. package/app/.next/static/chunks/app/api/settings/require-login/route-c452284fb77ecee0.js +0 -1
  850. package/app/.next/static/chunks/app/api/settings/route-c452284fb77ecee0.js +0 -1
  851. package/app/.next/static/chunks/app/api/settings/system-prompt/route-c452284fb77ecee0.js +0 -1
  852. package/app/.next/static/chunks/app/api/settings/thinking-budget/route-c452284fb77ecee0.js +0 -1
  853. package/app/.next/static/chunks/app/api/shutdown/route-c452284fb77ecee0.js +0 -1
  854. package/app/.next/static/chunks/app/api/storage/health/route-c452284fb77ecee0.js +0 -1
  855. package/app/.next/static/chunks/app/api/sync/cloud/route-c452284fb77ecee0.js +0 -1
  856. package/app/.next/static/chunks/app/api/sync/initialize/route-c452284fb77ecee0.js +0 -1
  857. package/app/.next/static/chunks/app/api/tags/route-c452284fb77ecee0.js +0 -1
  858. package/app/.next/static/chunks/app/api/translator/detect/route-c452284fb77ecee0.js +0 -1
  859. package/app/.next/static/chunks/app/api/translator/history/route-c452284fb77ecee0.js +0 -1
  860. package/app/.next/static/chunks/app/api/translator/load/route-c452284fb77ecee0.js +0 -1
  861. package/app/.next/static/chunks/app/api/translator/save/route-c452284fb77ecee0.js +0 -1
  862. package/app/.next/static/chunks/app/api/translator/send/route-c452284fb77ecee0.js +0 -1
  863. package/app/.next/static/chunks/app/api/translator/translate/route-c452284fb77ecee0.js +0 -1
  864. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-c452284fb77ecee0.js +0 -1
  865. package/app/.next/static/chunks/app/api/usage/analytics/route-c452284fb77ecee0.js +0 -1
  866. package/app/.next/static/chunks/app/api/usage/call-logs/[id]/route-c452284fb77ecee0.js +0 -1
  867. package/app/.next/static/chunks/app/api/usage/call-logs/route-c452284fb77ecee0.js +0 -1
  868. package/app/.next/static/chunks/app/api/usage/history/route-c452284fb77ecee0.js +0 -1
  869. package/app/.next/static/chunks/app/api/usage/logs/route-c452284fb77ecee0.js +0 -1
  870. package/app/.next/static/chunks/app/api/usage/proxy-logs/route-c452284fb77ecee0.js +0 -1
  871. package/app/.next/static/chunks/app/api/usage/request-logs/route-c452284fb77ecee0.js +0 -1
  872. package/app/.next/static/chunks/app/api/v1/api/chat/route-c452284fb77ecee0.js +0 -1
  873. package/app/.next/static/chunks/app/api/v1/audio/speech/route-c452284fb77ecee0.js +0 -1
  874. package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-c452284fb77ecee0.js +0 -1
  875. package/app/.next/static/chunks/app/api/v1/chat/completions/route-c452284fb77ecee0.js +0 -1
  876. package/app/.next/static/chunks/app/api/v1/embeddings/route-c452284fb77ecee0.js +0 -1
  877. package/app/.next/static/chunks/app/api/v1/images/generations/route-c452284fb77ecee0.js +0 -1
  878. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-c452284fb77ecee0.js +0 -1
  879. package/app/.next/static/chunks/app/api/v1/messages/route-c452284fb77ecee0.js +0 -1
  880. package/app/.next/static/chunks/app/api/v1/models/route-c452284fb77ecee0.js +0 -1
  881. package/app/.next/static/chunks/app/api/v1/moderations/route-c452284fb77ecee0.js +0 -1
  882. package/app/.next/static/chunks/app/api/v1/providers/[provider]/chat/completions/route-c452284fb77ecee0.js +0 -1
  883. package/app/.next/static/chunks/app/api/v1/providers/[provider]/embeddings/route-c452284fb77ecee0.js +0 -1
  884. package/app/.next/static/chunks/app/api/v1/providers/[provider]/images/generations/route-c452284fb77ecee0.js +0 -1
  885. package/app/.next/static/chunks/app/api/v1/rerank/route-c452284fb77ecee0.js +0 -1
  886. package/app/.next/static/chunks/app/api/v1/responses/route-c452284fb77ecee0.js +0 -1
  887. package/app/.next/static/chunks/app/api/v1/route-c452284fb77ecee0.js +0 -1
  888. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-c452284fb77ecee0.js +0 -1
  889. package/app/.next/static/chunks/app/api/v1beta/models/route-c452284fb77ecee0.js +0 -1
  890. package/app/.next/static/chunks/app/layout-485b011f69e6ed37.js +0 -1
  891. package/app/.next/static/chunks/app/page-c452284fb77ecee0.js +0 -1
  892. package/app/.next/static/chunks/main-app-fbc16f70c595b197.js +0 -1
  893. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-c452284fb77ecee0.js +0 -1
  894. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-c452284fb77ecee0.js +0 -1
  895. package/app/.next/static/chunks/next/dist/client/components/builtin/global-error-d91548a7b6ba5970.js +0 -1
  896. package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-c452284fb77ecee0.js +0 -1
  897. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-c452284fb77ecee0.js +0 -1
  898. package/app/.next/static/css/5309860f6e486620.css +0 -1
  899. /package/app/.next/static/{XnNWFvV2IXZ4xuX0F1Skg → H6LKncewEoggilnvYL9Ff}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=7132,exports.ids=[7132],exports.modules={17132:(a,b,c)=>{c.d(b,{BY:()=>z,E5:()=>w,Zx:()=>x,gK:()=>B,jE:()=>D,kh:()=>C,sZ:()=>v,uO:()=>u,uw:()=>t,yN:()=>y});var d=c(33873),e=c(29021),f=c(14469),g=c(32677);let h=!f.m1&&!f.I8,i=f.m1?null:(0,g.sm)(),j=f.m1?null:d.join(f.nJ,"log.txt"),k=f.m1?null:d.join(f.nJ,"call_logs"),l=f.m1||!i?null:d.join(i,"usage.json"),m=f.m1||!i?null:d.join(i,"log.txt"),n=f.m1||!i?null:d.join(i,"call_logs.json"),o=f.m1||!i?null:d.join(i,"call_logs"),p=f.m1?null:d.join(f.nJ,"usage.json"),q=f.m1?null:d.join(f.nJ,"call_logs.json");function r(a,b,c){!a||!b||!e.existsSync(a)||e.existsSync(b)||(e.statSync(a).isDirectory()?e.cpSync(a,b,{recursive:!0}):e.copyFileSync(a,b),console.log(`[usageDb] Migrated ${c}: ${a} -> ${b}`))}if(h&&i&&!(0,g.ys)(f.nJ,i))try{r(l,p,"usage history"),r(m,j,"request log"),r(n,q,"call log index"),r(o,k,"call log files")}catch(a){console.error("[usageDb] Legacy migration failed:",a.message)}if(h)try{!function(){if(!h)return;let a=(0,f.sm)();if(p&&e.existsSync(p))try{let b=e.readFileSync(p,"utf-8"),c=JSON.parse(b).history||[];if(c.length>0){console.log(`[usageDb] Migrating ${c.length} usage entries from JSON → SQLite...`);let b=a.prepare(`
1
+ "use strict";exports.id=4832,exports.ids=[4832],exports.modules={74832:(a,b,c)=>{c.d(b,{E5:()=>w,yN:()=>y,jE:()=>D,kh:()=>C,Zx:()=>x,uO:()=>u,BY:()=>z,gK:()=>B,sZ:()=>v,uw:()=>t});var d=c(33873),e=c(29021),f=c(14469),g=c(32677);let h=!f.m1&&!f.I8,i=f.m1?null:(0,g.sm)(),j=f.m1?null:d.join(f.nJ,"log.txt"),k=f.m1?null:d.join(f.nJ,"call_logs"),l=f.m1||!i?null:d.join(i,"usage.json"),m=f.m1||!i?null:d.join(i,"log.txt"),n=f.m1||!i?null:d.join(i,"call_logs.json"),o=f.m1||!i?null:d.join(i,"call_logs"),p=f.m1?null:d.join(f.nJ,"usage.json"),q=f.m1?null:d.join(f.nJ,"call_logs.json");function r(a,b,c){!a||!b||!e.existsSync(a)||e.existsSync(b)||(e.statSync(a).isDirectory()?e.cpSync(a,b,{recursive:!0}):e.copyFileSync(a,b),console.log(`[usageDb] Migrated ${c}: ${a} -> ${b}`))}if(!function(){if(h&&i&&!(0,g.ys)(f.nJ,i))try{r(l,p,"usage history"),r(m,j,"request log"),r(n,q,"call log index"),r(o,k,"call log files")}catch(a){console.error("[usageDb] Legacy migration failed:",a.message)}}(),h)try{!function(){if(!h)return;let a=(0,f.sm)();if(p&&e.existsSync(p))try{let b=e.readFileSync(p,"utf-8"),c=JSON.parse(b).history||[];if(c.length>0){console.log(`[usageDb] Migrating ${c.length} usage entries from JSON → SQLite...`);let b=a.prepare(`
2
2
  INSERT INTO usage_history (provider, model, connection_id, api_key_id, api_key_name,
3
3
  tokens_input, tokens_output, tokens_cache_read, tokens_cache_creation, tokens_reasoning,
4
4
  status, timestamp)
@@ -17,8 +17,8 @@
17
17
  tokens_input, tokens_output, tokens_cache_read, tokens_cache_creation, tokens_reasoning,
18
18
  status, timestamp)
19
19
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
20
- `).run(a.provider||null,a.model||null,a.connectionId||null,a.apiKeyId||null,a.apiKeyName||null,a.tokens?.input??a.tokens?.prompt_tokens??0,a.tokens?.output??a.tokens?.completion_tokens??0,a.tokens?.cacheRead??a.tokens?.cached_tokens??0,a.tokens?.cacheCreation??a.tokens?.cache_creation_input_tokens??0,a.tokens?.reasoning??a.tokens?.reasoning_tokens??0,a.status||null,c)}catch(a){console.error("Failed to save usage stats:",a)}}async function w({model:a,provider:b,connectionId:d,tokens:f,status:g}){if(h)try{let h=function(a=new Date){let b=a=>String(a).padStart(2,"0"),c=b(a.getDate()),d=b(a.getMonth()+1),e=a.getFullYear(),f=b(a.getHours()),g=b(a.getMinutes()),h=b(a.getSeconds());return`${c}-${d}-${e} ${f}:${g}:${h}`}(),i=b?.toUpperCase()||"-",k=d?d.slice(0,8):"-";try{let{getProviderConnections:a}=await Promise.all([c.e(8108),c.e(21),c.e(7136)]).then(c.bind(c,60021)),b=(await a()).find(a=>a.id===d);b&&(k=b.name||b.email||k)}catch{}let l=f?.input!==void 0?f.input:f?.prompt_tokens!==void 0?f.prompt_tokens:"-",m=f?.output!==void 0?f.output:f?.completion_tokens!==void 0?f.completion_tokens:"-",n=`${h} | ${a||"-"} | ${i} | ${k} | ${l} | ${m} | ${g}
21
- `;e.appendFileSync(j,n);let o=e.readFileSync(j,"utf-8").trim().split("\n");o.length>200&&e.writeFileSync(j,o.slice(-200).join("\n")+"\n")}catch(a){console.error("Failed to append to log.txt:",a.message)}}async function x(a=200){if(!h||!e||"function"!=typeof e.existsSync||!j||!e.existsSync(j))return[];try{return e.readFileSync(j,"utf-8").trim().split("\n").slice(-a).reverse()}catch(a){return console.error("[usageDb] Failed to read log.txt:",a.message),[]}}async function y(a,b,d){if(!d||!a||!b)return 0;try{let{getPricingForModel:e}=await Promise.all([c.e(8108),c.e(21),c.e(7136)]).then(c.bind(c,60021)),f=await e(a,b);if(!f)return 0;let g=0,h=d.input??d.prompt_tokens??d.input_tokens??0,i=d.cacheRead??d.cached_tokens??d.cache_read_input_tokens??0,j=Math.max(0,h-i);g+=j*(f.input/1e6),i>0&&(g+=i*((f.cached||f.input)/1e6));let k=d.output??d.completion_tokens??d.output_tokens??0;g+=k*(f.output/1e6);let l=d.reasoning??d.reasoning_tokens??0;l>0&&(g+=l*((f.reasoning||f.output)/1e6));let m=d.cacheCreation??d.cache_creation_input_tokens??0;return m>0&&(g+=m*((f.cache_creation||f.input)/1e6)),g}catch(a){return console.error("Error calculating cost:",a),0}}async function z(){let a=(0,f.sm)().prepare("SELECT * FROM usage_history ORDER BY timestamp ASC").all(),{getProviderConnections:b}=await Promise.all([c.e(8108),c.e(21),c.e(7136)]).then(c.bind(c,60021)),d=[];try{d=await b()}catch{}let e={};for(let a of d)e[a.id]=a.name||a.email||a.id;let g={totalRequests:a.length,totalPromptTokens:0,totalCompletionTokens:0,totalCost:0,byProvider:{},byModel:{},byAccount:{},byApiKey:{},last10Minutes:[],pending:s,activeRequests:[]};for(let[a,b]of Object.entries(s.byAccount))for(let[c,d]of Object.entries(b))if(d>0){let b=e[a]||`Account ${a.slice(0,8)}...`,f=c.match(/^(.*) \((.*)\)$/);g.activeRequests.push({model:f?f[1]:c,provider:f?f[2]:"unknown",account:b,count:d})}let h=new Date,i=new Date(6e4*Math.floor(h.getTime()/6e4)),j=new Date(i.getTime()-54e4),k={};for(let a=0;a<10;a++){let b=new Date(i.getTime()-(9-a)*6e4).getTime();k[b]={requests:0,promptTokens:0,completionTokens:0,cost:0},g.last10Minutes.push(k[b])}for(let b of a){let a=b.tokens_input||0,c=b.tokens_output||0,d=new Date(b.timestamp),f={input:b.tokens_input,output:b.tokens_output,cacheRead:b.tokens_cache_read,cacheCreation:b.tokens_cache_creation,reasoning:b.tokens_reasoning},i=await y(b.provider,b.model,f);if(g.totalPromptTokens+=a,g.totalCompletionTokens+=c,g.totalCost+=i,d>=j&&d<=h){let b=6e4*Math.floor(d.getTime()/6e4);k[b]&&(k[b].requests++,k[b].promptTokens+=a,k[b].completionTokens+=c,k[b].cost+=i)}g.byProvider[b.provider]||(g.byProvider[b.provider]={requests:0,promptTokens:0,completionTokens:0,cost:0}),g.byProvider[b.provider].requests++,g.byProvider[b.provider].promptTokens+=a,g.byProvider[b.provider].completionTokens+=c,g.byProvider[b.provider].cost+=i;let l=b.provider?`${b.model} (${b.provider})`:b.model;if(g.byModel[l]||(g.byModel[l]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:b.model,provider:b.provider,lastUsed:b.timestamp}),g.byModel[l].requests++,g.byModel[l].promptTokens+=a,g.byModel[l].completionTokens+=c,g.byModel[l].cost+=i,new Date(b.timestamp)>new Date(g.byModel[l].lastUsed)&&(g.byModel[l].lastUsed=b.timestamp),b.connection_id){let d=e[b.connection_id]||`Account ${b.connection_id.slice(0,8)}...`,f=`${b.model} (${b.provider} - ${d})`;g.byAccount[f]||(g.byAccount[f]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:b.model,provider:b.provider,connectionId:b.connection_id,accountName:d,lastUsed:b.timestamp}),g.byAccount[f].requests++,g.byAccount[f].promptTokens+=a,g.byAccount[f].completionTokens+=c,g.byAccount[f].cost+=i,new Date(b.timestamp)>new Date(g.byAccount[f].lastUsed)&&(g.byAccount[f].lastUsed=b.timestamp)}if(b.api_key_id||b.api_key_name){let d=b.api_key_name||b.api_key_id||"unknown",e=b.api_key_id||null,f=e?`${d} (${e})`:d;g.byApiKey[f]||(g.byApiKey[f]={requests:0,promptTokens:0,completionTokens:0,cost:0,apiKeyId:e,apiKeyName:d,lastUsed:b.timestamp}),g.byApiKey[f].requests++,g.byApiKey[f].promptTokens+=a,g.byApiKey[f].completionTokens+=c,g.byApiKey[f].cost+=i,new Date(b.timestamp)>new Date(g.byApiKey[f].lastUsed)&&(g.byApiKey[f].lastUsed=b.timestamp)}}return g}let A=0;async function B(a){if(h)try{let b=a.connectionId?a.connectionId.slice(0,8):"-";try{let{getProviderConnections:d}=await Promise.all([c.e(8108),c.e(21),c.e(7136)]).then(c.bind(c,60021)),e=(await d()).find(b=>b.id===a.connectionId);e&&(b=e.name||e.email||b)}catch{}let g=a=>{if(!a)return null;let b=JSON.stringify(a);if(b.length<=8192)return b;try{return JSON.stringify({_truncated:!0,_originalSize:b.length,_preview:b.slice(0,8192)+"..."})}catch{return JSON.stringify({_truncated:!0})}},h={id:(A++,`${Date.now()}-${A}`),timestamp:new Date().toISOString(),method:a.method||"POST",path:a.path||"/v1/chat/completions",status:a.status||0,model:a.model||"-",provider:a.provider||"-",account:b,connectionId:a.connectionId||null,duration:a.duration||0,tokensIn:a.tokens?.prompt_tokens||0,tokensOut:a.tokens?.completion_tokens||0,sourceFormat:a.sourceFormat||null,targetFormat:a.targetFormat||null,apiKeyId:a.apiKeyId||null,apiKeyName:a.apiKeyName||null,comboName:a.comboName||null,requestBody:g(a.requestBody),responseBody:g(a.responseBody),error:a.error||null},i=(0,f.sm)();i.prepare(`
20
+ `).run(a.provider||null,a.model||null,a.connectionId||null,a.apiKeyId||null,a.apiKeyName||null,a.tokens?.input??a.tokens?.prompt_tokens??0,a.tokens?.output??a.tokens?.completion_tokens??0,a.tokens?.cacheRead??a.tokens?.cached_tokens??0,a.tokens?.cacheCreation??a.tokens?.cache_creation_input_tokens??0,a.tokens?.reasoning??a.tokens?.reasoning_tokens??0,a.status||null,c)}catch(a){console.error("Failed to save usage stats:",a)}}async function w({model:a,provider:b,connectionId:d,tokens:f,status:g}){if(h)try{let h=function(a=new Date){let b=a=>String(a).padStart(2,"0"),c=b(a.getDate()),d=b(a.getMonth()+1),e=a.getFullYear(),f=b(a.getHours()),g=b(a.getMinutes()),h=b(a.getSeconds());return`${c}-${d}-${e} ${f}:${g}:${h}`}(),i=b?.toUpperCase()||"-",k=d?d.slice(0,8):"-";try{let{getProviderConnections:a}=await Promise.all([c.e(8108),c.e(4352),c.e(7136)]).then(c.bind(c,24352)),b=(await a()).find(a=>a.id===d);b&&(k=b.name||b.email||k)}catch{}let l=f?.input!==void 0?f.input:f?.prompt_tokens!==void 0?f.prompt_tokens:"-",m=f?.output!==void 0?f.output:f?.completion_tokens!==void 0?f.completion_tokens:"-",n=`${h} | ${a||"-"} | ${i} | ${k} | ${l} | ${m} | ${g}
21
+ `;e.appendFileSync(j,n);let o=e.readFileSync(j,"utf-8").trim().split("\n");o.length>200&&e.writeFileSync(j,o.slice(-200).join("\n")+"\n")}catch(a){console.error("Failed to append to log.txt:",a.message)}}async function x(a=200){if(!h||!e||"function"!=typeof e.existsSync||!j||!e.existsSync(j))return[];try{return e.readFileSync(j,"utf-8").trim().split("\n").slice(-a).reverse()}catch(a){return console.error("[usageDb] Failed to read log.txt:",a.message),[]}}async function y(a,b,d){if(!d||!a||!b)return 0;try{let{getPricingForModel:e}=await Promise.all([c.e(8108),c.e(4352),c.e(7136)]).then(c.bind(c,24352)),f=await e(a,b);if(!f)return 0;let g=0,h=d.input??d.prompt_tokens??d.input_tokens??0,i=d.cacheRead??d.cached_tokens??d.cache_read_input_tokens??0,j=Math.max(0,h-i);g+=j*(f.input/1e6),i>0&&(g+=i*((f.cached||f.input)/1e6));let k=d.output??d.completion_tokens??d.output_tokens??0;g+=k*(f.output/1e6);let l=d.reasoning??d.reasoning_tokens??0;l>0&&(g+=l*((f.reasoning||f.output)/1e6));let m=d.cacheCreation??d.cache_creation_input_tokens??0;return m>0&&(g+=m*((f.cache_creation||f.input)/1e6)),g}catch(a){return console.error("Error calculating cost:",a),0}}async function z(){let a=(0,f.sm)().prepare("SELECT * FROM usage_history ORDER BY timestamp ASC").all(),{getProviderConnections:b}=await Promise.all([c.e(8108),c.e(4352),c.e(7136)]).then(c.bind(c,24352)),d=[];try{d=await b()}catch{}let e={};for(let a of d)e[a.id]=a.name||a.email||a.id;let g={totalRequests:a.length,totalPromptTokens:0,totalCompletionTokens:0,totalCost:0,byProvider:{},byModel:{},byAccount:{},byApiKey:{},last10Minutes:[],pending:s,activeRequests:[]};for(let[a,b]of Object.entries(s.byAccount))for(let[c,d]of Object.entries(b))if(d>0){let b=e[a]||`Account ${a.slice(0,8)}...`,f=c.match(/^(.*) \((.*)\)$/);g.activeRequests.push({model:f?f[1]:c,provider:f?f[2]:"unknown",account:b,count:d})}let h=new Date,i=new Date(6e4*Math.floor(h.getTime()/6e4)),j={};for(let a=0;a<10;a++){let b=new Date(i.getTime()-(9-a)*6e4).getTime();j[b]={requests:0,promptTokens:0,completionTokens:0,cost:0},g.last10Minutes.push(j[b])}let k=new Date(i.getTime()-54e4);for(let b of a){let a=b.tokens_input||0,c=b.tokens_output||0,d=new Date(b.timestamp),f={input:b.tokens_input,output:b.tokens_output,cacheRead:b.tokens_cache_read,cacheCreation:b.tokens_cache_creation,reasoning:b.tokens_reasoning},i=await y(b.provider,b.model,f);if(g.totalPromptTokens+=a,g.totalCompletionTokens+=c,g.totalCost+=i,d>=k&&d<=h){let b=6e4*Math.floor(d.getTime()/6e4);j[b]&&(j[b].requests++,j[b].promptTokens+=a,j[b].completionTokens+=c,j[b].cost+=i)}g.byProvider[b.provider]||(g.byProvider[b.provider]={requests:0,promptTokens:0,completionTokens:0,cost:0}),g.byProvider[b.provider].requests++,g.byProvider[b.provider].promptTokens+=a,g.byProvider[b.provider].completionTokens+=c,g.byProvider[b.provider].cost+=i;let l=b.provider?`${b.model} (${b.provider})`:b.model;if(g.byModel[l]||(g.byModel[l]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:b.model,provider:b.provider,lastUsed:b.timestamp}),g.byModel[l].requests++,g.byModel[l].promptTokens+=a,g.byModel[l].completionTokens+=c,g.byModel[l].cost+=i,new Date(b.timestamp)>new Date(g.byModel[l].lastUsed)&&(g.byModel[l].lastUsed=b.timestamp),b.connection_id){let d=e[b.connection_id]||`Account ${b.connection_id.slice(0,8)}...`,f=`${b.model} (${b.provider} - ${d})`;g.byAccount[f]||(g.byAccount[f]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:b.model,provider:b.provider,connectionId:b.connection_id,accountName:d,lastUsed:b.timestamp}),g.byAccount[f].requests++,g.byAccount[f].promptTokens+=a,g.byAccount[f].completionTokens+=c,g.byAccount[f].cost+=i,new Date(b.timestamp)>new Date(g.byAccount[f].lastUsed)&&(g.byAccount[f].lastUsed=b.timestamp)}if(b.api_key_id||b.api_key_name){let d=b.api_key_name||b.api_key_id||"unknown",e=b.api_key_id||null,f=e?`${d} (${e})`:d;g.byApiKey[f]||(g.byApiKey[f]={requests:0,promptTokens:0,completionTokens:0,cost:0,apiKeyId:e,apiKeyName:d,lastUsed:b.timestamp}),g.byApiKey[f].requests++,g.byApiKey[f].promptTokens+=a,g.byApiKey[f].completionTokens+=c,g.byApiKey[f].cost+=i,new Date(b.timestamp)>new Date(g.byApiKey[f].lastUsed)&&(g.byApiKey[f].lastUsed=b.timestamp)}}return g}let A=0;async function B(a){if(h)try{let b=a.connectionId?a.connectionId.slice(0,8):"-";try{let{getProviderConnections:d}=await Promise.all([c.e(8108),c.e(4352),c.e(7136)]).then(c.bind(c,24352)),e=(await d()).find(b=>b.id===a.connectionId);e&&(b=e.name||e.email||b)}catch{}let g=a=>{if(!a)return null;let b=JSON.stringify(a);if(b.length<=8192)return b;try{return JSON.stringify({_truncated:!0,_originalSize:b.length,_preview:b.slice(0,8192)+"..."})}catch{return JSON.stringify({_truncated:!0})}},h={id:(A++,`${Date.now()}-${A}`),timestamp:new Date().toISOString(),method:a.method||"POST",path:a.path||"/v1/chat/completions",status:a.status||0,model:a.model||"-",provider:a.provider||"-",account:b,connectionId:a.connectionId||null,duration:a.duration||0,tokensIn:a.tokens?.prompt_tokens||0,tokensOut:a.tokens?.completion_tokens||0,sourceFormat:a.sourceFormat||null,targetFormat:a.targetFormat||null,apiKeyId:a.apiKeyId||null,apiKeyName:a.apiKeyName||null,comboName:a.comboName||null,requestBody:g(a.requestBody),responseBody:g(a.responseBody),error:a.error||null},i=(0,f.sm)();i.prepare(`
22
22
  INSERT INTO call_logs (id, timestamp, method, path, status, model, provider,
23
23
  account, connection_id, duration, tokens_in, tokens_out, source_format, target_format,
24
24
  api_key_id, api_key_name, combo_name, request_body, response_body, error)
@@ -0,0 +1 @@
1
+ "use strict";exports.id=5040,exports.ids=[5040],exports.modules={15040:(a,b,c)=>{c.d(b,{Pt:()=>k,Tr:()=>l,c1:()=>i,kI:()=>m,vk:()=>j});var d=c(24352),e=c(49263),f=c(26262);let g=Promise.resolve(),h=new Map;async function i(a,b=null){let c,h=g;g=new Promise(a=>{c=a});try{let c;await h;let g=await (0,d.getProviderConnections)({provider:a,isActive:!0});if(f.debug("AUTH",`${a} | total connections: ${g.length}, excludeId: ${b||"none"}`),0===g.length){let b=await (0,d.getProviderConnections)({provider:a});if(f.debug("AUTH",`${a} | all connections (incl inactive): ${b.length}`),b.length>0){let c=(0,e.UY)(b);if(c)return f.warn("AUTH",`${a} | all ${b.length} accounts rate limited (${(0,e.Qo)(c)})`),{allRateLimited:!0,retryAfter:c,retryAfterHuman:(0,e.Qo)(c)};f.warn("AUTH",`${a} | ${b.length} accounts found but none active`),b.forEach(a=>{f.debug("AUTH",` → ${a.id?.slice(0,8)} | isActive=${a.isActive} | rateLimitedUntil=${a.rateLimitedUntil||"none"} | testStatus=${a.testStatus}`)})}return f.warn("AUTH",`No credentials for ${a}`),null}let i=g.filter(a=>!(b&&a.id===b||(0,e.AO)(a.rateLimitedUntil)));if(f.debug("AUTH",`${a} | available: ${i.length}/${g.length}`),g.forEach(a=>{let c=b&&a.id===b,d=(0,e.AO)(a.rateLimitedUntil);(c||d)&&f.debug("AUTH",` → ${a.id?.slice(0,8)} | ${c?"excluded":""} ${d?`rateLimited until ${a.rateLimitedUntil}`:""}`)}),0===i.length){let b=(0,e.UY)(g);if(b){let c=g.filter(a=>a.rateLimitedUntil&&new Date(a.rateLimitedUntil).getTime()>Date.now()).sort((a,b)=>new Date(a.rateLimitedUntil)-new Date(b.rateLimitedUntil))[0];return f.warn("AUTH",`${a} | all ${g.length} active accounts rate limited (${(0,e.Qo)(b)}) | lastErrorCode=${c?.errorCode}, lastError=${c?.lastError?.slice(0,50)}`),{allRateLimited:!0,retryAfter:b,retryAfterHuman:(0,e.Qo)(b),lastError:c?.lastError||null,lastErrorCode:c?.errorCode||null}}return f.warn("AUTH",`${a} | all ${g.length} accounts unavailable`),null}let j=await (0,d.mt)(),k=j.fallbackStrategy||"fill-first";if("round-robin"===k){let a=j.stickyRoundRobinLimit||3,b=[...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=b?.consecutiveUseCount||0;b&&b.lastUsedAt&&e<a?(c=b,await (0,d.rj)(c.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:(c.consecutiveUseCount||0)+1})):(c=[...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.rj)(c.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:1}))}else c=i[0];return{apiKey:c.apiKey,accessToken:c.accessToken,refreshToken:c.refreshToken,expiresAt:c.tokenExpiresAt||c.expiresAt||null,projectId:c.projectId,copilotToken:c.providerSpecificData?.copilotToken,providerSpecificData:c.providerSpecificData,connectionId:c.id,testStatus:c.testStatus,lastError:c.lastError,rateLimitedUntil:c.rateLimitedUntil}}finally{c&&c()}}async function j(a,b,c,g=null,i=null){let k,l=h.get(a)||Promise.resolve();h.set(a,new Promise(a=>{k=a}));try{await l;let h=(await (0,d.getProviderConnections)({provider:g})).find(b=>b.id===a),j=h?.backoffLevel||0;if(h?.rateLimitedUntil&&new Date(h.rateLimitedUntil).getTime()>Date.now())return f.info("AUTH",`${a.slice(0,8)} already marked unavailable (until ${h.rateLimitedUntil}), skipping duplicate mark`),{shouldFallback:!0,cooldownMs:new Date(h.rateLimitedUntil).getTime()-Date.now()};let{shouldFallback:k,cooldownMs:m,newBackoffLevel:n,reason:o}=(0,e.hk)(b,c,j,i,g);if(!k)return{shouldFallback:!1,cooldownMs:0};let p=(0,e.vp)(m),q="string"==typeof c?c.slice(0,100):"Provider error";return await (0,d.rj)(a,{rateLimitedUntil:p,testStatus:"unavailable",lastError:q,errorCode:b,lastErrorAt:new Date().toISOString(),backoffLevel:n??j}),g&&i&&m>0&&(0,e.R7)(g,a,i,o||"unknown",m),g&&b&&q&&console.error(`❌ ${g} [${b}]: ${q}`),{shouldFallback:!0,cooldownMs:m}}finally{k&&k(),h.delete(a)}}async function k(a,b){("unavailable"===b.testStatus||b.lastError||b.rateLimitedUntil)&&(await (0,d.rj)(a,{testStatus:"active",lastError:null,lastErrorAt:null,rateLimitedUntil:null,backoffLevel:0}),f.info("AUTH",`Account ${a.slice(0,8)} error cleared`))}function l(a){let b=a.headers.get("Authorization");return b?.startsWith("Bearer ")?b.slice(7):null}async function m(a){return!!a&&await (0,d.ek)(a)}},26262:(a,b,c)=>{c.r(b),c.d(b,{debug:()=>h,error:()=>k,info:()=>i,maskKey:()=>f,request:()=>l,response:()=>m,stream:()=>n,warn:()=>j});var d=c(74552);let e={level:process.env.LOG_LEVEL||"info",base:{service:"omniroute"},timestamp:d.stdTimeFunctions.isoTime,formatters:{level:a=>({level:a})}};function f(a){return!a||a.length<8?"***":`${a.slice(0,4)}...${a.slice(-4)}`}let g=d({...e}).child({module:"sse"});function h(a,b,c){g.debug({tag:a,...o(c)},b)}function i(a,b,c){g.info({tag:a,...o(c)},b)}function j(a,b,c){g.warn({tag:a,...o(c)},b)}function k(a,b,c){g.error({tag:a,...o(c)},b)}function l(a,b,c){g.info({tag:"HTTP",method:a,path:b,...o(c)},`📥 ${a} ${b}`)}function m(a,b,c){g[a<400?"info":"error"]({tag:"HTTP",status:a,duration:b,...o(c)},`📤 ${a} (${b}ms)`)}function n(a,b){g.debug({tag:"STREAM",event:a,...o(b)},`🌊 ${a}`)}function o(a){return a?"string"==typeof a?{detail:a}:"object"==typeof a?a:{detail:String(a)}:{}}}};
@@ -0,0 +1 @@
1
+ exports.id=5727,exports.ids=[5727,7271],exports.modules={78335:()=>{},85640:(a,b,c)=>{"use strict";c.d(b,{Ny:()=>t,Ql:()=>o,iD:()=>v,jR:()=>r,jT:()=>u,oD:()=>f,qZ:()=>w});var d=c(97271),e=c(77598);let f=3e5,g=new Map;async function h(a,b,c,e){let f=d.xq[a],g=f?.refreshUrl||f?.tokenUrl;if(!f||!g)return e?.warn?.("TOKEN_REFRESH",`No refresh endpoint configured for provider: ${a}`),null;if(!b)return e?.warn?.("TOKEN_REFRESH",`No refresh token available for provider: ${a}`),null;try{let c=new URLSearchParams({grant_type:"refresh_token",refresh_token:b});f.clientId&&c.set("client_id",f.clientId),f.clientSecret&&c.set("client_secret",f.clientSecret);let d=await fetch(g,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:c});if(!d.ok){let b=await d.text();return e?.error?.("TOKEN_REFRESH",`Failed to refresh token for ${a}`,{status:d.status,error:b}),null}let h=await d.json();return e?.info?.("TOKEN_REFRESH",`Successfully refreshed token for ${a}`,{hasNewAccessToken:!!h.access_token,hasNewRefreshToken:!!h.refresh_token,expiresIn:h.expires_in}),{accessToken:h.access_token,refreshToken:h.refresh_token||b,expiresIn:h.expires_in}}catch(b){return e?.error?.("TOKEN_REFRESH",`Error refreshing token for ${a}`,{error:b.message}),null}}async function i(a,b){let c=d.xq.cline?.refreshUrl;if(!c)return b?.warn?.("TOKEN_REFRESH","No refresh URL configured for Cline"),null;try{let d=await fetch(c,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({refreshToken:a,grantType:"refresh_token",clientType:"extension"})});if(!d.ok){let a=await d.text();return b?.error?.("TOKEN_REFRESH","Failed to refresh Cline token",{status:d.status,error:a}),null}let e=await d.json(),f=e?.data||e,g=f?.expiresAt,h=g?Math.max(1,Math.floor((new Date(g).getTime()-Date.now())/1e3)):void 0;return b?.info?.("TOKEN_REFRESH","Successfully refreshed Cline token",{hasNewAccessToken:!!f?.accessToken,hasNewRefreshToken:!!f?.refreshToken,expiresIn:h}),{accessToken:f?.accessToken,refreshToken:f?.refreshToken||a,expiresIn:h}}catch(a){return b?.error?.("TOKEN_REFRESH",`Network error refreshing Cline token: ${a.message}`),null}}async function j(a,b){let c=d.xq["kimi-coding"]?.refreshUrl||d.xq["kimi-coding"]?.tokenUrl;if(!c)return b?.warn?.("TOKEN_REFRESH","No refresh URL configured for Kimi Coding"),null;try{let e=new URLSearchParams({grant_type:"refresh_token",refresh_token:a,client_id:d.xq["kimi-coding"]?.clientId||""}),f=await fetch(c,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:e});if(!f.ok){let a=await f.text();return b?.error?.("TOKEN_REFRESH","Failed to refresh Kimi Coding token",{status:f.status,error:a}),null}let g=await f.json();return b?.info?.("TOKEN_REFRESH","Successfully refreshed Kimi Coding 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 Kimi Coding token: ${a.message}`),null}}async function k(a,b){try{let c=await fetch(d.NA.anthropic.token,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({grant_type:"refresh_token",refresh_token:a,client_id:d.xq.claude.clientId})});if(!c.ok){let a=await c.text();return b?.error?.("TOKEN_REFRESH","Failed to refresh Claude OAuth token",{status:c.status,error:a}),null}let e=await c.json();return b?.info?.("TOKEN_REFRESH","Successfully refreshed Claude OAuth 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 b?.error?.("TOKEN_REFRESH",`Network error refreshing Claude token: ${a.message}`),null}}async function l(a,b,c,e){let f=await fetch(d.NA.google.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:a,client_id:b,client_secret:c})});if(!f.ok){let a=await f.text();return e?.error?.("TOKEN_REFRESH","Failed to refresh Google token",{status:f.status,error:a}),null}let g=await f.json();return e?.info?.("TOKEN_REFRESH","Successfully refreshed Google 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 m(a,b){let c=d.NA.qwen.token;try{let e=await fetch(c,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:a,client_id:d.xq.qwen.clientId})});if(200===e.status){let c=await e.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}}{let a=await e.text().catch(()=>"");b?.warn?.("TOKEN_REFRESH","Error with Qwen endpoint",{status:e.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 n(a,b){try{let c=await fetch(d.NA.openai.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:a,client_id:d.xq.codex.clientId,scope:"openid profile email offline_access"})});if(!c.ok){let a=await c.text(),d=null;try{let b=JSON.parse(a);d=b?.error?.code}catch{}if("refresh_token_reused"===d)return b?.error?.("TOKEN_REFRESH","Codex refresh token already used (rotating token consumed). Re-authentication required.",{status:c.status}),{error:"refresh_token_reused"};return b?.error?.("TOKEN_REFRESH","Failed to refresh Codex token",{status:c.status,error:a}),null}let e=await c.json();return b?.info?.("TOKEN_REFRESH","Successfully refreshed Codex 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 b?.error?.("TOKEN_REFRESH",`Network error refreshing Codex token: ${a.message}`),null}}async function o(a,b,c){try{let e=b?.authMethod,f=b?.clientId,g=b?.clientSecret,h=b?.region;if(f&&g){let b="idc"===e&&h?`https://oidc.${h}.amazonaws.com/token`:"https://oidc.us-east-1.amazonaws.com/token",d=await fetch(b,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({clientId:f,clientSecret:g,refreshToken:a,grantType:"refresh_token"})});if(!d.ok){let a=await d.text();return c?.error?.("TOKEN_REFRESH","Failed to refresh Kiro AWS token",{status:d.status,error:a}),null}let i=await d.json();return c?.info?.("TOKEN_REFRESH","Successfully refreshed Kiro AWS token",{hasNewAccessToken:!!i.accessToken,expiresIn:i.expiresIn}),{accessToken:i.accessToken,refreshToken:i.refreshToken||a,expiresIn:i.expiresIn}}let i=await fetch(d.xq.kiro.tokenUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({refreshToken:a})});if(!i.ok){let a=await i.text();return c?.error?.("TOKEN_REFRESH","Failed to refresh Kiro social token",{status:i.status,error:a}),null}let j=await i.json();return c?.info?.("TOKEN_REFRESH","Successfully refreshed Kiro social token",{hasNewAccessToken:!!j.accessToken,expiresIn:j.expiresIn}),{accessToken:j.accessToken,refreshToken:j.refreshToken||a,expiresIn:j.expiresIn}}catch(a){return c?.error?.("TOKEN_REFRESH",`Network error refreshing Kiro token: ${a.message}`),null}}async function p(a,b){let c=btoa(`${d.xq.iflow.clientId}:${d.xq.iflow.clientSecret}`),e=await fetch(d.NA.iflow.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json",Authorization:`Basic ${c}`},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:a,client_id:d.xq.iflow.clientId,client_secret:d.xq.iflow.clientSecret})});if(!e.ok){let a=await e.text();return b?.error?.("TOKEN_REFRESH","Failed to refresh iFlow token",{status:e.status,error:a}),null}let f=await e.json();return b?.info?.("TOKEN_REFRESH","Successfully refreshed iFlow 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 q(a,b){let c=await fetch(d.NA.github.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:a,client_id:d.xq.github.clientId,client_secret:d.xq.github.clientSecret})});if(!c.ok){let a=await c.text();return b?.error?.("TOKEN_REFRESH","Failed to refresh GitHub token",{status:c.status,error:a}),null}let e=await c.json();return b?.info?.("TOKEN_REFRESH","Successfully refreshed GitHub 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}}async function r(a,b){try{let c=await fetch("https://api.github.com/copilot_internal/v2/token",{headers:{Authorization:`token ${a}`,"User-Agent":"GithubCopilot/1.0","Editor-Version":"vscode/1.100.0","Editor-Plugin-Version":"copilot/1.300.0",Accept:"application/json"}});if(!c.ok){let a=await c.text();return b?.error?.("TOKEN_REFRESH","Failed to refresh Copilot token",{status:c.status,error:a}),null}let d=await c.json();return b?.info?.("TOKEN_REFRESH","Successfully refreshed Copilot token",{hasToken:!!d.token,expiresAt:d.expires_at}),{token:d.token,expiresAt:d.expires_at}}catch(a){return b?.error?.("TOKEN_REFRESH","Error refreshing Copilot token",{error:a.message}),null}}async function s(a,b,c){switch(a){case"gemini":case"gemini-cli":case"antigravity":return await l(b.refreshToken,d.xq[a].clientId,d.xq[a].clientSecret,c);case"claude":return await k(b.refreshToken,c);case"codex":return await n(b.refreshToken,c);case"qwen":return await m(b.refreshToken,c);case"iflow":return await p(b.refreshToken,c);case"github":return await q(b.refreshToken,c);case"kiro":return await o(b.refreshToken,b.providerSpecificData,c);case"cline":return await i(b.refreshToken,c);case"kimi-coding":return await j(b.refreshToken,c);default:return h(a,b.refreshToken,b,c)}}function t(a){if(new Set(["gemini","gemini-cli","antigravity","claude","codex","qwen","iflow","github","kiro","cline","kimi-coding"]).has(a))return!0;let b=d.xq[a];return!!(b?.refreshUrl||b?.tokenUrl)}function u(a){return a&&"object"==typeof a&&"refresh_token_reused"===a.error}async function v(a,b,c){var d;let f;if(!b||!b.refreshToken||"string"!=typeof b.refreshToken)return c?.warn?.("TOKEN_REFRESH",`No valid refresh token available for provider: ${a}`),null;let h=(d=b.refreshToken,f=(0,e.createHash)("sha256").update(d).digest("hex"),`${a}:${f}`);if(g.has(h))return c?.info?.("TOKEN_REFRESH",`Reusing in-flight refresh for ${a}`),g.get(h);let i=s(a,b,c).finally(()=>{g.delete(h)});return g.set(h,i),i}async function w(a,b=3,c=null){for(let d=0;d<b;d++){if(d>0){let a=1e3*d;c?.debug?.("TOKEN_REFRESH",`Retry ${d}/${b} after ${a}ms`),await new Promise(b=>setTimeout(b,a))}try{let b=await a();if(b)return b}catch(a){c?.warn?.("TOKEN_REFRESH",`Attempt ${d+1}/${b} failed: ${a.message}`)}}return c?.error?.("TOKEN_REFRESH",`All ${b} retry attempts failed`),null}},96487:()=>{},97271:(a,b,c)=>{"use strict";c.d(b,{$V:()=>n,EQ:()=>u,Co:()=>m,Bm:()=>w,DEFAULT_API_LIMITS:()=>y,O:()=>t,Uc:()=>p,eo:()=>q,LY:()=>s,MT:()=>j,gx:()=>r,NA:()=>o,xq:()=>l,PROVIDER_PROFILES:()=>x,QS:()=>v,C8:()=>z,TH:()=>k});var d=c(29021),e=c(33873);let f=["clientId","clientSecret","tokenUrl","authUrl","refreshUrl"],g=0,h=null;var i=c(28108);let j=parseInt(process.env.FETCH_TIMEOUT_MS||"120000",10),k=parseInt(process.env.STREAM_IDLE_TIMEOUT_MS||"60000",10),l=(0,i.Z0)();!function(a){let b;if(h&&Date.now()-g<6e4)return;let c=(b=process.env.DATA_DIR||(0,e.join)(process.cwd(),"data"),(0,e.join)(b,"provider-credentials.json"));if(!(0,d.existsSync)(c))return h||console.log("[CREDENTIALS] No external credentials file found, using defaults."),h=a,g=Date.now();try{let b=(0,d.readFileSync)(c,"utf-8"),e=JSON.parse(b),g=0;for(let[b,c]of Object.entries(e)){if(!a[b]){console.log(`[CREDENTIALS] Warning: unknown provider "${b}" in credentials file, skipping.`);continue}if(!c||"object"!=typeof c){console.log(`[CREDENTIALS] Warning: provider "${b}" value must be an object, got ${typeof c}. Skipping.`);continue}for(let d of f)void 0!==c[d]&&(a[b][d]=c[d],g++)}let i=null!==h;console.log(`[CREDENTIALS] ${i?"Reloaded":"Loaded"} external credentials: ${g} field(s) from ${c}`)}catch(a){console.log(`[CREDENTIALS] Error reading credentials file: ${a.message}. Using defaults.`)}h=a,g=Date.now()}(l);let m="You are Claude Code, Anthropic's official CLI for Claude.",n="Please ignore the following [ignore]You are Antigravity, a powerful agentic AI coding assistant designed by the Google Deepmind team working on Advanced Agentic Coding.You are pair programming with a USER to solve their coding task. The task may require creating a new codebase, modifying or debugging an existing codebase, or simply answering a question.**Absolute paths only****Proactiveness**[/ignore]",o={google:{token:"https://oauth2.googleapis.com/token",auth:"https://accounts.google.com/o/oauth2/auth"},openai:{token:"https://auth.openai.com/oauth/token",auth:"https://auth.openai.com/oauth/authorize"},anthropic:{token:"https://console.anthropic.com/v1/oauth/token",auth:"https://console.anthropic.com/v1/oauth/authorize"},qwen:{token:"https://chat.qwen.ai/api/v1/oauth2/token",auth:"https://chat.qwen.ai/api/v1/oauth2/device/code"},iflow:{token:"https://iflow.cn/oauth/token",auth:"https://iflow.cn/oauth"},github:{token:"https://github.com/login/oauth/access_token",auth:"https://github.com/login/oauth/authorize",deviceCode:"https://github.com/login/device/code"}},p=64e3,q=32e3,r={BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,NOT_ACCEPTABLE:406,REQUEST_TIMEOUT:408,RATE_LIMITED:429,SERVER_ERROR:500,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504},s={[r.BAD_REQUEST]:{type:"invalid_request_error",code:"bad_request"},[r.UNAUTHORIZED]:{type:"authentication_error",code:"invalid_api_key"},[r.FORBIDDEN]:{type:"permission_error",code:"insufficient_quota"},[r.NOT_FOUND]:{type:"invalid_request_error",code:"model_not_found"},[r.RATE_LIMITED]:{type:"rate_limit_error",code:"rate_limit_exceeded"},[r.SERVER_ERROR]:{type:"server_error",code:"internal_server_error"},[r.BAD_GATEWAY]:{type:"server_error",code:"bad_gateway"},[r.SERVICE_UNAVAILABLE]:{type:"server_error",code:"service_unavailable"},[r.GATEWAY_TIMEOUT]:{type:"server_error",code:"gateway_timeout"}},t={[r.BAD_REQUEST]:"Bad request",[r.UNAUTHORIZED]:"Invalid API key provided",[r.FORBIDDEN]:"You exceeded your current quota",[r.NOT_FOUND]:"Model not found",[r.RATE_LIMITED]:"Rate limit exceeded",[r.SERVER_ERROR]:"Internal server error",[r.BAD_GATEWAY]:"Bad gateway - upstream provider error",[r.SERVICE_UNAVAILABLE]:"Service temporarily unavailable",[r.GATEWAY_TIMEOUT]:"Gateway timeout"},u={base:1e3,max:12e4,maxLevel:15},v={QUOTA_EXHAUSTED:"quota_exhausted",RATE_LIMIT_EXCEEDED:"rate_limit_exceeded",MODEL_CAPACITY:"model_capacity",SERVER_ERROR:"server_error",AUTH_ERROR:"auth_error",UNKNOWN:"unknown"},w={unauthorized:12e4,paymentRequired:12e4,notFound:12e4,transientInitial:5e3,transientMax:6e4,transient:5e3,requestNotAllowed:5e3,rateLimit:12e4,serviceUnavailable:2e3,authExpired:12e4},x={oauth:{transientCooldown:5e3,rateLimitCooldown:6e4,maxBackoffLevel:8,circuitBreakerThreshold:3,circuitBreakerReset:6e4},apikey:{transientCooldown:3e3,rateLimitCooldown:0,maxBackoffLevel:5,circuitBreakerThreshold:5,circuitBreakerReset:3e4}},y={requestsPerMinute:100,minTimeBetweenRequests:200,concurrentRequests:10},z=["Please write a 5-10 word title for the following conversation:"]}};
@@ -0,0 +1,2 @@
1
+ "use strict";exports.id=7093,exports.ids=[7093],exports.modules={29310:(a,b,c)=>{c.d(b,{Q2:()=>o,js:()=>p,DI:()=>l,fg:()=>j,IS:()=>h,zN:()=>i,JH:()=>k,gb:()=>n,mq:()=>m});var d=c(74443);let e=d.Ikc({id:d.YjP().min(1),alias:d.YjP().min(1),name:d.YjP().min(1),icon:d.YjP().min(1),color:d.YjP().regex(/^#[0-9A-Fa-f]{6}$/,"Must be a valid hex color (#RRGGBB)"),textIcon:d.YjP().optional(),website:d.YjP().url().optional(),passthroughModels:d.zMY().optional()}),f=d.g1P(d.YjP(),e);function g(a,b){let c=f.safeParse(a);if(!c.success){let a=c.error.issues.map(a=>` ${a.path.join(".")}: ${a.message}`).join("\n");throw console.error(`[PROVIDER VALIDATION] ${b} has invalid entries:
2
+ ${a}`),Error(`Provider validation failed for ${b}`)}}let h={iflow:{id:"iflow",alias:"if",name:"iFlow AI",icon:"water_drop",color:"#6366F1"},qwen:{id:"qwen",alias:"qw",name:"Qwen Code",icon:"psychology",color:"#10B981"},"gemini-cli":{id:"gemini-cli",alias:"gc",name:"Gemini CLI",icon:"terminal",color:"#4285F4"},kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"}},i={claude:{id:"claude",alias:"cc",name:"Claude Code",icon:"smart_toy",color:"#D97757"},antigravity:{id:"antigravity",alias:"ag",name:"Antigravity",icon:"rocket_launch",color:"#F59E0B"},codex:{id:"codex",alias:"cx",name:"OpenAI Codex",icon:"code",color:"#3B82F6"},github:{id:"github",alias:"gh",name:"GitHub Copilot",icon:"code",color:"#333333"},cursor:{id:"cursor",alias:"cu",name:"Cursor IDE",icon:"edit_note",color:"#00D4AA"},"kimi-coding":{id:"kimi-coding",alias:"kmc",name:"Kimi Coding",icon:"psychology",color:"#1E40AF",textIcon:"KC"},kilocode:{id:"kilocode",alias:"kc",name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC"},cline:{id:"cline",alias:"cl",name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL"}},j={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",passthroughModels:!0,website:"https://openrouter.ai"},glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},minimax:{id:"minimax",alias:"minimax",name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com"},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com"},openai:{id:"openai",alias:"openai",name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com"},anthropic:{id:"anthropic",alias:"anthropic",name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com"},gemini:{id:"gemini",alias:"gemini",name:"Gemini",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev"},deepseek:{id:"deepseek",alias:"ds",name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com"},groq:{id:"groq",alias:"groq",name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com"},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai"},mistral:{id:"mistral",alias:"mistral",name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai"},perplexity:{id:"perplexity",alias:"pplx",name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai"},together:{id:"together",alias:"together",name:"Together AI",icon:"group_work",color:"#0F6FFF",textIcon:"TG",website:"https://www.together.ai"},fireworks:{id:"fireworks",alias:"fireworks",name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai"},cerebras:{id:"cerebras",alias:"cerebras",name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://www.cerebras.ai"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://developer.nvidia.com/nim"},nebius:{id:"nebius",alias:"nebius",name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com"},siliconflow:{id:"siliconflow",alias:"siliconflow",name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com"},hyperbolic:{id:"hyperbolic",alias:"hyp",name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz"},deepgram:{id:"deepgram",alias:"dg",name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com"},assemblyai:{id:"assemblyai",alias:"aai",name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com"},nanobanana:{id:"nanobanana",alias:"nb",name:"NanoBanana",icon:"image",color:"#FFD700",textIcon:"NB",website:"https://nanobananaapi.ai"}},k="openai-compatible-",l="anthropic-compatible-";function m(a){return"string"==typeof a&&a.startsWith(k)}function n(a){return"string"==typeof a&&a.startsWith(l)}let o={...h,...i,...j},p=Object.values(o).reduce((a,b)=>(a[b.alias]=b.id,a),{});Object.values(o).reduce((a,b)=>(a[b.id]=b.alias,a),{}),g(h,"FREE_PROVIDERS"),g(i,"OAUTH_PROVIDERS"),g(j,"APIKEY_PROVIDERS")},77093:(a,b,c)=>{c.d(b,{j:()=>o});var d=c(28108),e=c(29310);let f=new Set(["openai","openai-responses"]),g=new Set(["gemini","gemini-cli"]);function h(a){return(a||"").trim().replace(/\/$/,"")}function i(a){return{"Content-Type":"application/json",Authorization:`Bearer ${a}`}}async function j({provider:a,apiKey:b,baseUrl:c,providerSpecificData:d={},modelId:f="gpt-4o-mini"}){if(!c)return{valid:!1,error:"Missing base URL"};let g=function(a){let b=h(a);if(!b)return"";for(let a of["/chat/completions","/responses","/chat","/messages"])if(b.endsWith(a))return`${b.slice(0,-a.length)}/models`;return`${b}/models`}(c);if(!g)return{valid:!1,error:"Invalid models endpoint"};let j=await fetch(g,{method:"GET",headers:i(b)});if(j.ok)return{valid:!0,error:null};if(401===j.status||403===j.status)return{valid:!1,error:"Invalid API key"};let k=function(a,b,c={}){let d=h(b);return d?(0,e.mq)(a)?c?.apiType==="responses"?`${d}/responses`:`${d}/chat/completions`:d.endsWith("/chat/completions")||d.endsWith("/responses")||d.endsWith("/chat")?d:d.endsWith("/v1")?`${d}/chat/completions`:d:""}(a,c,d);if(!k)return{valid:!1,error:`Validation failed: ${j.status}`};let l=await fetch(k,{method:"POST",headers:i(b),body:JSON.stringify({model:f,messages:[{role:"user",content:"test"}],max_tokens:1})});return l.ok?{valid:!0,error:null}:401===l.status||403===l.status?{valid:!1,error:"Invalid API key"}:404===l.status||405===l.status?{valid:!1,error:"Provider validation endpoint not supported"}:l.status>=500?{valid:!1,error:`Provider unavailable (${l.status})`}:{valid:!0,error:null}}async function k({apiKey:a,baseUrl:b,modelId:c,headers:d={}}){if(!b)return{valid:!1,error:"Missing base URL"};let e={"Content-Type":"application/json",...d};e["x-api-key"]||e["X-API-Key"]||(e["x-api-key"]=a),e["anthropic-version"]||e["Anthropic-Version"]||(e["anthropic-version"]="2023-06-01");let f=await fetch(b,{method:"POST",headers:e,body:JSON.stringify({model:c||"claude-3-5-sonnet-20241022",max_tokens:1,messages:[{role:"user",content:"test"}]})});return 401===f.status||403===f.status?{valid:!1,error:"Invalid API key"}:{valid:!0,error:null}}async function l({apiKey:a,baseUrl:b}){if(!b)return{valid:!1,error:"Missing base URL"};let c=b.includes("?")?"&":"?",d=await fetch(`${b}${c}key=${encodeURIComponent(a)}`,{method:"GET",headers:{"Content-Type":"application/json"}});return d.ok?{valid:!0,error:null}:401===d.status||403===d.status?{valid:!1,error:"Invalid API key"}:{valid:!1,error:`Validation failed: ${d.status}`}}async function m({apiKey:a,providerSpecificData:b={}}){let c=h(b.baseUrl);if(!c)return{valid:!1,error:"No base URL configured for OpenAI compatible provider"};let d=await fetch(`${c}/models`,{method:"GET",headers:i(a)});return d.ok?{valid:!0,error:null}:401===d.status||403===d.status?{valid:!1,error:"Invalid API key"}:{valid:!1,error:`Validation failed: ${d.status}`}}async function n({apiKey:a,providerSpecificData:b={}}){let c=h(b.baseUrl);if(!c)return{valid:!1,error:"No base URL configured for Anthropic compatible provider"};c.endsWith("/messages")&&(c=c.slice(0,-9));let d=await fetch(`${c}/models`,{method:"GET",headers:{"Content-Type":"application/json","x-api-key":a,"anthropic-version":"2023-06-01",Authorization:`Bearer ${a}`}});return d.ok?{valid:!0,error:null}:401===d.status||403===d.status?{valid:!1,error:"Invalid API key"}:{valid:!1,error:`Validation failed: ${d.status}`}}async function o({provider:a,apiKey:b,providerSpecificData:c={}}){if(!a||!b)return{valid:!1,error:"Provider and API key required",unsupported:!1};if((0,e.mq)(a))try{return await m({apiKey:b,providerSpecificData:c})}catch(a){return{valid:!1,error:a.message||"Validation failed",unsupported:!1}}if((0,e.gb)(a))try{return await n({apiKey:b,providerSpecificData:c})}catch(a){return{valid:!1,error:a.message||"Validation failed",unsupported:!1}}let i=(0,d.qs)(a);if(!i)return{valid:!1,error:"Provider validation not supported",unsupported:!0};let o=i.models?.[0]?.id||null,p=function(a,b={}){return b?.baseUrl?h(b.baseUrl):a?.baseUrl?h(a.baseUrl):""}(i,c);try{if(f.has(i.format))return await j({provider:a,apiKey:b,baseUrl:p,providerSpecificData:c,modelId:o});if("claude"===i.format){let a=`${p}${i.urlSuffix||""}`,c={...i.headers||{}};return"x-api-key"===(i.authHeader||"").toLowerCase()?c["x-api-key"]=b:c.Authorization=`Bearer ${b}`,await k({apiKey:b,baseUrl:a,modelId:o,headers:c})}if(g.has(i.format))return await l({apiKey:b,baseUrl:p});return{valid:!1,error:"Provider validation not supported",unsupported:!0}}catch(a){return{valid:!1,error:a.message||"Validation failed",unsupported:!1}}}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=7271,exports.ids=[7271],exports.modules={97271:(a,b,c)=>{c.d(b,{$V:()=>n,EQ:()=>u,Co:()=>m,Bm:()=>w,DEFAULT_API_LIMITS:()=>y,O:()=>t,Uc:()=>p,eo:()=>q,LY:()=>s,MT:()=>j,gx:()=>r,NA:()=>o,xq:()=>l,PROVIDER_PROFILES:()=>x,QS:()=>v,C8:()=>z,TH:()=>k});var d=c(29021),e=c(33873);let f=["clientId","clientSecret","tokenUrl","authUrl","refreshUrl"],g=0,h=null;var i=c(28108);let j=parseInt(process.env.FETCH_TIMEOUT_MS||"120000",10),k=parseInt(process.env.STREAM_IDLE_TIMEOUT_MS||"60000",10),l=(0,i.Z0)();!function(a){let b;if(h&&Date.now()-g<6e4)return;let c=(b=process.env.DATA_DIR||(0,e.join)(process.cwd(),"data"),(0,e.join)(b,"provider-credentials.json"));if(!(0,d.existsSync)(c))return h||console.log("[CREDENTIALS] No external credentials file found, using defaults."),h=a,g=Date.now();try{let b=(0,d.readFileSync)(c,"utf-8"),e=JSON.parse(b),g=0;for(let[b,c]of Object.entries(e)){if(!a[b]){console.log(`[CREDENTIALS] Warning: unknown provider "${b}" in credentials file, skipping.`);continue}if(!c||"object"!=typeof c){console.log(`[CREDENTIALS] Warning: provider "${b}" value must be an object, got ${typeof c}. Skipping.`);continue}for(let d of f)void 0!==c[d]&&(a[b][d]=c[d],g++)}let i=null!==h;console.log(`[CREDENTIALS] ${i?"Reloaded":"Loaded"} external credentials: ${g} field(s) from ${c}`)}catch(a){console.log(`[CREDENTIALS] Error reading credentials file: ${a.message}. Using defaults.`)}h=a,g=Date.now()}(l);let m="You are Claude Code, Anthropic's official CLI for Claude.",n="Please ignore the following [ignore]You are Antigravity, a powerful agentic AI coding assistant designed by the Google Deepmind team working on Advanced Agentic Coding.You are pair programming with a USER to solve their coding task. The task may require creating a new codebase, modifying or debugging an existing codebase, or simply answering a question.**Absolute paths only****Proactiveness**[/ignore]",o={google:{token:"https://oauth2.googleapis.com/token",auth:"https://accounts.google.com/o/oauth2/auth"},openai:{token:"https://auth.openai.com/oauth/token",auth:"https://auth.openai.com/oauth/authorize"},anthropic:{token:"https://console.anthropic.com/v1/oauth/token",auth:"https://console.anthropic.com/v1/oauth/authorize"},qwen:{token:"https://chat.qwen.ai/api/v1/oauth2/token",auth:"https://chat.qwen.ai/api/v1/oauth2/device/code"},iflow:{token:"https://iflow.cn/oauth/token",auth:"https://iflow.cn/oauth"},github:{token:"https://github.com/login/oauth/access_token",auth:"https://github.com/login/oauth/authorize",deviceCode:"https://github.com/login/device/code"}},p=64e3,q=32e3,r={BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,NOT_ACCEPTABLE:406,REQUEST_TIMEOUT:408,RATE_LIMITED:429,SERVER_ERROR:500,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504},s={[r.BAD_REQUEST]:{type:"invalid_request_error",code:"bad_request"},[r.UNAUTHORIZED]:{type:"authentication_error",code:"invalid_api_key"},[r.FORBIDDEN]:{type:"permission_error",code:"insufficient_quota"},[r.NOT_FOUND]:{type:"invalid_request_error",code:"model_not_found"},[r.RATE_LIMITED]:{type:"rate_limit_error",code:"rate_limit_exceeded"},[r.SERVER_ERROR]:{type:"server_error",code:"internal_server_error"},[r.BAD_GATEWAY]:{type:"server_error",code:"bad_gateway"},[r.SERVICE_UNAVAILABLE]:{type:"server_error",code:"service_unavailable"},[r.GATEWAY_TIMEOUT]:{type:"server_error",code:"gateway_timeout"}},t={[r.BAD_REQUEST]:"Bad request",[r.UNAUTHORIZED]:"Invalid API key provided",[r.FORBIDDEN]:"You exceeded your current quota",[r.NOT_FOUND]:"Model not found",[r.RATE_LIMITED]:"Rate limit exceeded",[r.SERVER_ERROR]:"Internal server error",[r.BAD_GATEWAY]:"Bad gateway - upstream provider error",[r.SERVICE_UNAVAILABLE]:"Service temporarily unavailable",[r.GATEWAY_TIMEOUT]:"Gateway timeout"},u={base:1e3,max:12e4,maxLevel:15},v={QUOTA_EXHAUSTED:"quota_exhausted",RATE_LIMIT_EXCEEDED:"rate_limit_exceeded",MODEL_CAPACITY:"model_capacity",SERVER_ERROR:"server_error",AUTH_ERROR:"auth_error",UNKNOWN:"unknown"},w={unauthorized:12e4,paymentRequired:12e4,notFound:12e4,transientInitial:5e3,transientMax:6e4,transient:5e3,requestNotAllowed:5e3,rateLimit:12e4,serviceUnavailable:2e3,authExpired:12e4},x={oauth:{transientCooldown:5e3,rateLimitCooldown:6e4,maxBackoffLevel:8,circuitBreakerThreshold:3,circuitBreakerReset:6e4},apikey:{transientCooldown:3e3,rateLimitCooldown:0,maxBackoffLevel:5,circuitBreakerThreshold:5,circuitBreakerReset:3e4}},y={requestsPerMinute:100,minTimeBetweenRequests:200,concurrentRequests:10},z=["Please write a 5-10 word title for the following conversation:"]}};
@@ -1,4 +1,11 @@
1
- "use strict";exports.id=7615,exports.ids=[7615],exports.modules={2735:(a,b,c)=>{c.d(b,{c:()=>i});var d=c(17717),e=c(25970),f=c(19956),g=c(97271),h=c(90859);function i(a,b,c=""){if(!c.includes("claude-cli")||!a.messages?.length)return null;let l=a.messages,m=a=>"string"==typeof a?a:Array.isArray(a)?a.filter(a=>"text"===a.type).map(a=>a.text).join(" "):"",n=!1,o=l[l.length-1];if(o?.role==="assistant"&&o.content?.[0]?.text==="{"&&(n=!0),n||"Warmup"===m(l[0]?.content)&&(n=!0),n||1!==l.length||l[0]?.role!=="user"||"count"===m(l[0]?.content)&&(n=!0),!n&&g.C8?.length){let a=l.filter(a=>"user"===a.role).map(a=>m(a.content)).join(" ");g.C8.some(b=>a.includes(b))&&(n=!0)}if(!n)return null;let p=(0,d.Tz)(a);return!1!==a.stream?function(a,b){let c=j(b),d=(0,e.Ws)(a);d.model=b;let g=k(c),i=[];for(let b of g){let c=(0,e.Y8)(f.h.OPENAI,a,b,d);if(c?.length>0)for(let b of c)i.push((0,h.v8)(b,a))}let l=(0,e.Y8)(f.h.OPENAI,a,null,d);if(l?.length>0)for(let b of l)i.push((0,h.v8)(b,a));return i.push("data: [DONE]\n\n"),{success:!0,response:new Response(i.join(""),{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","Access-Control-Allow-Origin":"*"}})}}(p,b):function(a,b){let c=j(b);if(a===f.h.OPENAI)return{success:!0,response:new Response(JSON.stringify(c),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})};let d=(0,e.Ws)(a);d.model=b;let g=k(c),h=[];for(let b of g){let c=(0,e.Y8)(f.h.OPENAI,a,b,d);c?.length>0&&h.push(...c)}let i=(0,e.Y8)(f.h.OPENAI,a,null,d);return i?.length>0&&h.push(...i),{success:!0,response:new Response(JSON.stringify(function(a,b){if(!a||0===a.length)return j("unknown");let c=a[a.length-1];if(b===f.h.CLAUDE&&a.find(a=>"message_stop"===a.type)){a.find(a=>"content_block_delta"===a.type);let b=a.find(a=>"message_delta"===a.type),d=a.find(a=>"message_start"===a.type);d?.message&&(c=d.message,b?.usage&&(c.usage=b.usage))}return c}(h,a)),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}}(p,b)}function j(a){let b=`chatcmpl-${Date.now()}`;return{id:b,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:a,choices:[{index:0,message:{role:"assistant",content:"CLI Command Execution: Clear Terminal"},finish_reason:"stop"}],usage:{prompt_tokens:1,completion_tokens:1,total_tokens:2}}}function k(a){let{id:b,created:c,model:d,choices:e}=a;return[{id:b,object:"chat.completion.chunk",created:c,model:d,choices:[{index:0,delta:{role:"assistant",content:e[0].message.content},finish_reason:null}]},{id:b,object:"chat.completion.chunk",created:c,model:d,choices:[{index:0,delta:{},finish_reason:"stop"}],usage:a.usage}]}},13618:(a,b,c)=>{c.d(b,{HN:()=>m,I_:()=>n,OK:()=>k,QX:()=>j,zP:()=>l});var d=c(47774),e=c(20406);let f=Symbol.for("omniroute.proxyDispatcher.cache"),g=new Set(["http:","https:","socks5:"]);function h(a){return"https:"===a||"wss:"===a?"443":"socks5:"===a?"1080":"8080"}function i(a,b){if(!a)return h(b);let c=Number(a);if(!Number.isInteger(c)||c<1||c>65535)throw Error("[ProxyDispatcher] Invalid proxy port");return String(c)}function j(){return"true"===process.env.ENABLE_SOCKS5_PROXY}function k(a){let b=new URL(a),c=b.port||h(b.protocol);return`${b.protocol}//${b.hostname}:${c}`}function l(a,b="proxy",{allowSocks5:c=j()}={}){let d;try{d=new URL(a)}catch{throw Error(`[ProxyDispatcher] Invalid ${b} URL`)}if(!g.has(d.protocol))throw Error(`[ProxyDispatcher] Unsupported ${b} protocol: ${d.protocol.replace(":","")}`);if("socks5:"===d.protocol&&!c)throw Error("[ProxyDispatcher] SOCKS5 proxy is disabled (set ENABLE_SOCKS5_PROXY=true to enable)");if(!d.hostname)throw Error(`[ProxyDispatcher] Invalid ${b} host`);return d.port=i(d.port,d.protocol),d.toString()}function m(a,{allowSocks5:b=j()}={}){if(!a)return null;if("string"==typeof a)return l(a,"context proxy",{allowSocks5:b});if("object"!=typeof a||Array.isArray(a))throw Error("[ProxyDispatcher] Invalid context proxy config");let c=String(a.type||"http").toLowerCase(),d=`${c}:`;if(!g.has(d))throw Error(`[ProxyDispatcher] Unsupported context proxy protocol: ${c}`);if("socks5:"===d&&!b)throw Error("[ProxyDispatcher] SOCKS5 proxy is disabled (set ENABLE_SOCKS5_PROXY=true to enable)");if(!a.host)throw Error("[ProxyDispatcher] Context proxy host is required");let e=i(a.port,d),f=new URL(`${c}://${a.host}:${e}`);return a.username&&(f.username=a.username,f.password=a.password||""),l(f.toString(),"context proxy",{allowSocks5:b})}function n(a){let b=l(a,"proxy dispatcher"),c=(globalThis[f]||(globalThis[f]=new Map),globalThis[f]),g=c.get(b);if(g)return g;let h=new URL(b);if("socks5:"===h.protocol){let a={type:5,host:h.hostname,port:Number(i(h.port,h.protocol))};h.username&&(a.userId=decodeURIComponent(h.username)),h.password&&(a.password=decodeURIComponent(h.password)),g=(0,e.vI)(a)}else g=new d.ProxyAgent(b);return c.set(b,g),g}},15040:(a,b,c)=>{c.d(b,{Pt:()=>j,Tr:()=>k,c1:()=>h,kI:()=>l,vk:()=>i});var d=c(60021),e=c(49263),f=c(26262);let g=Promise.resolve();async function h(a,b=null){let c,i=g;g=new Promise(a=>{c=a});try{let c;await i;let g=await (0,d.getProviderConnections)({provider:a,isActive:!0});if(f.debug("AUTH",`${a} | total connections: ${g.length}, excludeId: ${b||"none"}`),0===g.length){let b=await (0,d.getProviderConnections)({provider:a});if(f.debug("AUTH",`${a} | all connections (incl inactive): ${b.length}`),b.length>0){let c=(0,e.UY)(b);if(c)return f.warn("AUTH",`${a} | all ${b.length} accounts rate limited (${(0,e.Qo)(c)})`),{allRateLimited:!0,retryAfter:c,retryAfterHuman:(0,e.Qo)(c)};f.warn("AUTH",`${a} | ${b.length} accounts found but none active`),b.forEach(a=>{f.debug("AUTH",` → ${a.id?.slice(0,8)} | isActive=${a.isActive} | rateLimitedUntil=${a.rateLimitedUntil||"none"} | testStatus=${a.testStatus}`)})}return f.warn("AUTH",`No credentials for ${a}`),null}let h=g.filter(a=>!(b&&a.id===b||(0,e.AO)(a.rateLimitedUntil)));if(f.debug("AUTH",`${a} | available: ${h.length}/${g.length}`),g.forEach(a=>{let c=b&&a.id===b,d=(0,e.AO)(a.rateLimitedUntil);(c||d)&&f.debug("AUTH",` → ${a.id?.slice(0,8)} | ${c?"excluded":""} ${d?`rateLimited until ${a.rateLimitedUntil}`:""}`)}),0===h.length){let b=(0,e.UY)(g);if(b){let c=g.filter(a=>a.rateLimitedUntil&&new Date(a.rateLimitedUntil).getTime()>Date.now()).sort((a,b)=>new Date(a.rateLimitedUntil)-new Date(b.rateLimitedUntil))[0];return f.warn("AUTH",`${a} | all ${g.length} active accounts rate limited (${(0,e.Qo)(b)}) | lastErrorCode=${c?.errorCode}, lastError=${c?.lastError?.slice(0,50)}`),{allRateLimited:!0,retryAfter:b,retryAfterHuman:(0,e.Qo)(b),lastError:c?.lastError||null,lastErrorCode:c?.errorCode||null}}return f.warn("AUTH",`${a} | all ${g.length} accounts unavailable`),null}let j=await (0,d.mt)(),k=j.fallbackStrategy||"fill-first";if("round-robin"===k){let a=j.stickyRoundRobinLimit||3,b=[...h].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=b?.consecutiveUseCount||0;b&&b.lastUsedAt&&e<a?(c=b,await (0,d.rj)(c.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:(c.consecutiveUseCount||0)+1})):(c=[...h].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.rj)(c.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:1}))}else c=h[0];return{apiKey:c.apiKey,accessToken:c.accessToken,refreshToken:c.refreshToken,expiresAt:c.tokenExpiresAt||c.expiresAt||null,projectId:c.projectId,copilotToken:c.providerSpecificData?.copilotToken,providerSpecificData:c.providerSpecificData,connectionId:c.id,testStatus:c.testStatus,lastError:c.lastError,rateLimitedUntil:c.rateLimitedUntil}}finally{c&&c()}}async function i(a,b,c,f=null,g=null){let h=(await (0,d.getProviderConnections)({provider:f})).find(b=>b.id===a),j=h?.backoffLevel||0,{shouldFallback:k,cooldownMs:l,newBackoffLevel:m,reason:n}=(0,e.hk)(b,c,j,g);if(!k)return{shouldFallback:!1,cooldownMs:0};let o=(0,e.vp)(l),p="string"==typeof c?c.slice(0,100):"Provider error";return await (0,d.rj)(a,{rateLimitedUntil:o,testStatus:"unavailable",lastError:p,errorCode:b,lastErrorAt:new Date().toISOString(),backoffLevel:m??j}),f&&g&&l>0&&(0,e.R7)(f,a,g,n||"unknown",l),f&&b&&p&&console.error(`❌ ${f} [${b}]: ${p}`),{shouldFallback:!0,cooldownMs:l}}async function j(a,b){("unavailable"===b.testStatus||b.lastError||b.rateLimitedUntil)&&(await (0,d.rj)(a,{testStatus:"active",lastError:null,lastErrorAt:null,rateLimitedUntil:null,backoffLevel:0}),f.info("AUTH",`Account ${a.slice(0,8)} error cleared`))}function k(a){let b=a.headers.get("Authorization");return b?.startsWith("Bearer ")?b.slice(7):null}async function l(a){return!!a&&await (0,d.ek)(a)}},15575:(a,b,c)=>{function d({onDisconnect:a,log:b,provider:c,model:e}={}){let f=new AbortController,g=Date.now(),h=!1,i=null,j=a=>{let b=Date.now()-g,d=c?.toUpperCase()||"UNKNOWN";console.log(`[${new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"})}] 🌊 [STREAM] ${d} | ${e||"unknown"} | ${b}ms | ${a}`)};return{signal:f.signal,startTime:g,isConnected:()=>!h,handleDisconnect:(b="client_closed")=>{h||(h=!0,j(`disconnect: ${b}`),i=setTimeout(()=>{f.abort()},500),a?.({reason:b,duration:Date.now()-g}))},handleComplete:()=>{!h&&(h=!0,j("complete"),i&&(clearTimeout(i),i=null))},handleError:a=>{(i&&(clearTimeout(i),i=null),"AbortError"===a.name)?j("aborted"):j(`error: ${a.message}`)},abort:()=>f.abort()}}function e(a,b,c){var d;let e,f;return d={readable:a.body.pipeThrough(b),writable:{getWriter:()=>({abort:()=>{}})}},e=d.readable.getReader(),f=d.writable.getWriter(),new ReadableStream({async pull(a){if(!c.isConnected())return void a.close();try{let{done:b,value:d}=await e.read();if(b){c.handleComplete(),a.close();return}a.enqueue(d)}catch(b){c.handleError(b),a.error(b)}},cancel(a){c.handleDisconnect(a||"cancelled"),e.cancel(),f.abort()}})}c.d(b,{Jb:()=>e,jd:()=>d})},20638:(a,b,c)=>{c.d(b,{l:()=>e});var d=c(19956);function e(a,b,c){if(b===c||b===d.h.OPENAI)return a;if(b===d.h.OPENAI_RESPONSES){let b=a?.object==="response"?a:a?.response||a,c=Array.isArray(b?.output)?b.output:[],d=b?.usage||a?.usage,e="",f="",g=[];for(let a of c)if(a&&"object"==typeof a){if("message"===a.type&&Array.isArray(a.content))for(let b of a.content)b&&"object"==typeof b&&("output_text"===b.type&&"string"==typeof b.text?e+=b.text:"summary_text"===b.type&&"string"==typeof b.text&&(f+=b.text));else if("reasoning"===a.type&&Array.isArray(a.summary))for(let b of a.summary)b?.type==="summary_text"&&"string"==typeof b.text&&(f+=b.text);else if("function_call"===a.type){let b=a.call_id||a.id||`call_${Date.now()}_${g.length}`,c="string"==typeof a.arguments?a.arguments:JSON.stringify(a.arguments||{});g.push({id:b,type:"function",function:{name:a.name||"",arguments:c}})}}let h={role:"assistant"};e&&(h.content=e),f&&(h.reasoning_content=f),g.length>0&&(h.tool_calls=g),h.content||h.tool_calls||(h.content="");let i=Number(b?.created_at)||Math.floor(Date.now()/1e3),j=b?.model||a?.model||"openai-responses",k=g.length>0?"tool_calls":"stop",l={id:`chatcmpl-${b?.id||Date.now()}`,object:"chat.completion",created:i,model:j,choices:[{index:0,message:h,finish_reason:k}]};if(d&&"object"==typeof d){let a=d.input_tokens||0,b=d.output_tokens||0;l.usage={prompt_tokens:a,completion_tokens:b,total_tokens:a+b},d.reasoning_tokens>0&&(l.usage.completion_tokens_details={reasoning_tokens:d.reasoning_tokens}),(d.cache_read_input_tokens>0||d.cache_creation_input_tokens>0)&&(l.usage.prompt_tokens_details={},d.cache_read_input_tokens>0&&(l.usage.prompt_tokens_details.cached_tokens=d.cache_read_input_tokens),d.cache_creation_input_tokens>0&&(l.usage.prompt_tokens_details.cache_creation_tokens=d.cache_creation_input_tokens))}return l}if(b===d.h.GEMINI||b===d.h.ANTIGRAVITY||b===d.h.GEMINI_CLI){let b=a.response||a;if(!b?.candidates?.[0])return a;let c=b.candidates[0],d=c.content,e=b.usageMetadata||a.usageMetadata,f="",g=[],h="";if(d?.parts)for(let a of d.parts)!0===a.thought&&a.text?h+=a.text:void 0!==a.text&&(f+=a.text),a.functionCall&&g.push({id:`call_${a.functionCall.name}_${Date.now()}_${g.length}`,type:"function",function:{name:a.functionCall.name,arguments:JSON.stringify(a.functionCall.args||{})}});let i={role:"assistant"};f&&(i.content=f),h&&(i.reasoning_content=h),g.length>0&&(i.tool_calls=g),i.content||i.tool_calls||(i.content="");let j=(c.finishReason||"stop").toLowerCase();"stop"===j&&g.length>0&&(j="tool_calls");let k={id:`chatcmpl-${b.responseId||Date.now()}`,object:"chat.completion",created:Math.floor(new Date(b.createTime||Date.now()).getTime()/1e3),model:b.modelVersion||"gemini",choices:[{index:0,message:i,finish_reason:j}]};return e&&(k.usage={prompt_tokens:(e.promptTokenCount||0)+(e.thoughtsTokenCount||0),completion_tokens:e.candidatesTokenCount||0,total_tokens:e.totalTokenCount||0},e.thoughtsTokenCount>0&&(k.usage.completion_tokens_details={reasoning_tokens:e.thoughtsTokenCount})),k}if(b===d.h.CLAUDE){if(!a.content)return a;let b="",c="",d=[];for(let e of a.content)"text"===e.type?b+=e.text:"thinking"===e.type?c+=e.thinking||"":"tool_use"===e.type&&d.push({id:e.id,type:"function",function:{name:e.name,arguments:JSON.stringify(e.input||{})}});let e={role:"assistant"};b&&(e.content=b),c&&(e.reasoning_content=c),d.length>0&&(e.tool_calls=d),e.content||e.tool_calls||(e.content="");let f=a.stop_reason||"stop";"end_turn"===f&&(f="stop"),"tool_use"===f&&(f="tool_calls");let g={id:`chatcmpl-${a.id||Date.now()}`,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:a.model||"claude",choices:[{index:0,message:e,finish_reason:f}]};return a.usage&&(g.usage={prompt_tokens:a.usage.input_tokens||0,completion_tokens:a.usage.output_tokens||0,total_tokens:(a.usage.input_tokens||0)+(a.usage.output_tokens||0)}),g}return a}},24004:(a,b,c)=>{c.d(b,{$E:()=>k,Kr:()=>q,UE:()=>r,YO:()=>m,ZY:()=>s,mg:()=>j,rh:()=>i});var d=c(57217);c(49263);let e=new Map,f=new Set,g=!1,h={maxConcurrent:10,minTime:0,reservoir:null,reservoirRefreshAmount:null,reservoirRefreshInterval:null};async function i(){if(!g){g=!0;try{let{getProviderConnections:a}=await Promise.resolve().then(c.bind(c,60021)),b=await a(),d=0;for(let a of b)a.rateLimitProtection&&(f.add(a.id),d++);d>0&&console.log(`🛡️ [RATE-LIMIT] Loaded ${d} connection(s) with rate limit protection`)}catch(a){console.error("[RATE-LIMIT] Failed to load settings:",a.message)}}}function j(a){f.add(a)}function k(a){for(let[b]of(f.delete(a),e))if(b.includes(a)){let a=e.get(b);a?.disconnect(),e.delete(b)}}function l(a,b,c=null){let f=c?`${a}:${b}:${c}`:`${a}:${b}`;if(!e.has(f)){let a=new d({...h,id:f});a.on("queued",()=>{let b=a.counts();b.QUEUED>0&&console.log(`⏳ [RATE-LIMIT] ${f} — ${b.QUEUED} request(s) queued, ${b.RUNNING} running`)}),e.set(f,a)}return e.get(f)}async function m(a,b,c,d){return f.has(b)?l(a,b,null).schedule(d):d()}let n={limit:"x-ratelimit-limit-requests",remaining:"x-ratelimit-remaining-requests",reset:"x-ratelimit-reset-requests",limitTokens:"x-ratelimit-limit-tokens",remainingTokens:"x-ratelimit-remaining-tokens",resetTokens:"x-ratelimit-reset-tokens",retryAfter:"retry-after",overLimit:"x-ratelimit-over-limit"},o={limit:"anthropic-ratelimit-requests-limit",remaining:"anthropic-ratelimit-requests-remaining",reset:"anthropic-ratelimit-requests-reset",limitTokens:"anthropic-ratelimit-input-tokens-limit",remainingTokens:"anthropic-ratelimit-input-tokens-remaining",resetTokens:"anthropic-ratelimit-input-tokens-reset",retryAfter:"retry-after"};function p(a){if(!a)return null;let b=a.match(/^(?:(\d+)h)?(?:(\d+)m(?!s))?(?:(\d+)s)?(?:(\d+)ms)?$/);if(b){let[,a,c,d,e]=b;return(3600*parseInt(a||0)+60*parseInt(c||0)+parseInt(d||0))*1e3+parseInt(e||0)}let c=parseFloat(a);if(!isNaN(c)&&c>0)return c>17e8?Math.max(0,1e3*c-Date.now()):1e3*c;try{let b=new Date(a);if(!isNaN(b.getTime()))return Math.max(0,b.getTime()-Date.now())}catch{}return null}function q(a,b,c,d,e=null){if(!f.has(b)||!c)return;let g=l(a,b,null),h="claude"===a||"anthropic"===a?o:n,i=a=>"function"==typeof c.get?c.get(a):c[a]||null,j=parseInt(i(h.limit)),k=parseInt(i(h.remaining)),m=i(h.reset),r=i(h.retryAfter),s=i(n.overLimit);if(429===d){let c=p(r)||6e4;console.log(`🚫 [RATE-LIMIT] ${a}:${b.slice(0,8)} — 429 received, pausing for ${Math.ceil(c/1e3)}s`),g.updateSettings({reservoir:0,reservoirRefreshAmount:j||60,reservoirRefreshInterval:c});return}if("yes"===s){console.log(`⚠️ [RATE-LIMIT] ${a}:${b.slice(0,8)} — near capacity, slowing down`),g.updateSettings({minTime:200});return}if(!isNaN(j)&&j>0){let c=p(m)||6e4,d={minTime:Math.max(0,Math.floor(6e4/j)-10)};!isNaN(k)&&(k<.1*j?(d.reservoir=k,d.reservoirRefreshAmount=j,d.reservoirRefreshInterval=c,console.log(`⚠️ [RATE-LIMIT] ${a}:${b.slice(0,8)} — ${k}/${j} remaining, throttling`)):k>.5*j&&(d.minTime=0,d.reservoir=null,d.reservoirRefreshAmount=null,d.reservoirRefreshInterval=null)),g.updateSettings(d)}}function r(a,b){let c=`${a}:${b}`,d=e.get(c);if(!d)return{enabled:f.has(b),active:!1,queued:0,running:0};let g=d.counts();return{enabled:f.has(b),active:!0,queued:g.QUEUED||0,running:g.RUNNING||0,executing:g.EXECUTING||0,done:g.DONE||0}}function s(){let a={};for(let[b,c]of e){let d=c.counts();a[b]={queued:d.QUEUED||0,running:d.RUNNING||0,executing:d.EXECUTING||0}}return a}},26262:(a,b,c)=>{c.r(b),c.d(b,{debug:()=>h,error:()=>k,info:()=>i,maskKey:()=>f,request:()=>l,response:()=>m,stream:()=>n,warn:()=>j});var d=c(74552);let e={level:process.env.LOG_LEVEL||"info",base:{service:"omniroute"},timestamp:d.stdTimeFunctions.isoTime,formatters:{level:a=>({level:a})}};function f(a){return!a||a.length<8?"***":`${a.slice(0,4)}...${a.slice(-4)}`}let g=d({...e}).child({module:"sse"});function h(a,b,c){g.debug({tag:a,...o(c)},b)}function i(a,b,c){g.info({tag:a,...o(c)},b)}function j(a,b,c){g.warn({tag:a,...o(c)},b)}function k(a,b,c){g.error({tag:a,...o(c)},b)}function l(a,b,c){g.info({tag:"HTTP",method:a,path:b,...o(c)},`📥 ${a} ${b}`)}function m(a,b,c){g[a<400?"info":"error"]({tag:"HTTP",status:a,duration:b,...o(c)},`📤 ${a} (${b}ms)`)}function n(a,b){g.debug({tag:"STREAM",event:a,...o(b)},`🌊 ${a}`)}function o(a){return a?"string"==typeof a?{detail:a}:"object"==typeof a?a:{detail:String(a)}:{}}},32757:(a,b,c)=>{function d(a,b){let c=String(a||"").split("\n"),d=[];for(let a of c){let b=a.trim();if(!b.startsWith("data:"))continue;let c=b.slice(5).trim();if(c&&"[DONE]"!==c)try{d.push(JSON.parse(c))}catch{}}if(0===d.length)return null;let e=d[0],f=[],g=[],h="stop",i=null;for(let a of d){let b=a?.choices?.[0],c=b?.delta||{};"string"==typeof c.content&&c.content.length>0&&f.push(c.content),"string"==typeof c.reasoning_content&&c.reasoning_content.length>0&&g.push(c.reasoning_content),b?.finish_reason&&(h=b.finish_reason),a?.usage&&"object"==typeof a.usage&&(i=a.usage)}let j={role:"assistant",content:f.join("")};g.length>0&&(j.reasoning_content=g.join(""));let k={id:e.id||`chatcmpl-${Date.now()}`,object:"chat.completion",created:e.created||Math.floor(Date.now()/1e3),model:e.model||b||"unknown",choices:[{index:0,message:j,finish_reason:h}]};return i&&(k.usage=i),k}function e(a,b){let c=String(a||"").split("\n"),d=[];for(let a of c){let b=a.trim();if(!b.startsWith("data:"))continue;let c=b.slice(5).trim();if(c&&"[DONE]"!==c)try{d.push(JSON.parse(c))}catch{}}if(0===d.length)return null;let e=null,f=null;for(let a of d)a?.type==="response.completed"&&a.response&&(e=a.response),a?.response&&"object"==typeof a.response?f=a.response:a?.object==="response"&&(f=a);let g=e||f;return g&&"object"==typeof g?{id:g.id||`resp_${Date.now()}`,object:"response",model:g.model||b||"unknown",output:Array.isArray(g.output)?g.output:[],usage:g.usage||null,status:g.status||(e?"completed":"in_progress"),created_at:g.created_at||Math.floor(Date.now()/1e3),metadata:g.metadata||{}}:null}c.d(b,{B:()=>e,F:()=>d})},35345:(a,b,c)=>{c.d(b,{GL:()=>g,XT:()=>h,pq:()=>f});var d=c(94755);let e=[];function f(a){let b={id:(0,d.A)(),timestamp:new Date().toISOString(),status:a.status||"success",proxy:a.proxy||null,level:a.level||"direct",levelId:a.levelId||null,provider:a.provider||null,targetUrl:a.targetUrl||null,publicIp:a.publicIp||null,latencyMs:a.latencyMs||0,error:a.error||null,connectionId:a.connectionId||null,comboId:a.comboId||null,account:a.account||null};return e.unshift(b),e.length>500&&(e.length=500),b}function g(a={}){let b=[...e];if(a.status&&(b="ok"===a.status?b.filter(a=>"success"===a.status):b.filter(b=>b.status===a.status)),a.type&&(b=b.filter(b=>b.proxy?.type===a.type)),a.provider&&(b=b.filter(b=>b.provider===a.provider)),a.level&&(b=b.filter(b=>b.level===a.level)),a.search){let c=a.search.toLowerCase();b=b.filter(a=>(a.proxy?.host||"").toLowerCase().includes(c)||(a.provider||"").toLowerCase().includes(c)||(a.targetUrl||"").toLowerCase().includes(c)||(a.publicIp||"").toLowerCase().includes(c)||(a.level||"").toLowerCase().includes(c)||(a.error||"").toLowerCase().includes(c)||(a.account||"").toLowerCase().includes(c))}let c=a.limit||300;return b.slice(0,c)}function h(){e.length=0}},36362:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{w:()=>x});var e=c(17717),f=c(25970),g=c(19956),h=c(90859),i=c(15575),j=c(67677),k=c(85640),l=c(70718),m=c(29485),n=c(89865),o=c(97271),p=c(2735),q=c(17132),r=c(48400),s=c(20638),t=c(87290),u=c(32757),v=c(24004),w=a([r]);async function x({body:a,modelInfo:b,credentials:c,log:d,onCredentialsRefreshed:w,onRequestSuccess:x,onDisconnect:y,clientRawRequest:z,connectionId:A,apiKeyInfo:B=null,userAgent:C,comboName:D}){let E,F,G,H,I,{provider:J,model:K}=b,L=Date.now();await (0,v.rh)();let M=(0,e.Tz)(a),N=(z?.endpoint||"").toLowerCase().endsWith("/responses"),O=(0,p.c)(a,K,C);if(O)return O;let P=m.PROVIDER_ID_TO_ALIAS[J]||J,Q=(0,m.ux)(P,K)||(0,e.jJ)(J),R=!1!==a.stream,S=await (0,l.q)(M,Q,K);z&&S.logClientRawRequest(z.endpoint,z.body,z.headers),S.logRawRequest(a),d?.debug?.("FORMAT",`${M} → ${Q} | stream=${R}`);let T=a;try{T=(0,f.GH)(M,Q,K,a,R,c,J,S)}catch(f){let a=Number(f?.statusCode),b=Number.isInteger(a)&&a>=400&&a<=599?a:o.gx.SERVER_ERROR,c=f?.message||"Invalid request",e="string"==typeof f?.errorType?f.errorType:null;if(d?.warn?.("TRANSLATE",`Request translation failed: ${c}`),e)return{success:!1,status:b,error:c,response:new Response(JSON.stringify({error:{message:c,type:e,code:e}}),{status:b,headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})};return(0,n.A1)(b,c)}let U=T._toolNameMap;delete T._toolNameMap,T.model=K;let V=(0,r.SB)(J);(0,q.uw)(K,J,A,!0),(0,q.E5)({model:K,provider:J,connectionId:A,status:"PENDING"}).catch(()=>{});let W=T.messages?.length||T.contents?.length||T.request?.contents?.length||0;d?.debug?.("REQUEST",`${J.toUpperCase()} | ${K} | ${W} msgs`);let X=(0,i.jd)({onDisconnect:y,log:d,provider:J,model:K});try{let a=await (0,v.YO)(J,A,K,()=>V.execute({model:K,body:T,stream:R,credentials:c,signal:X.signal,log:d}));E=a.response,F=a.url,G=a.headers,H=a.transformedBody,S.logTargetRequest(F,G,H),(0,v.Kr)(J,A,E.headers,E.status,K)}catch(c){if((0,q.uw)(K,J,A,!1),(0,q.E5)({model:K,provider:J,connectionId:A,status:`FAILED ${"AbortError"===c.name?499:o.gx.BAD_GATEWAY}`}).catch(()=>{}),(0,q.gK)({method:"POST",path:z?.endpoint||"/v1/chat/completions",status:"AbortError"===c.name?499:o.gx.BAD_GATEWAY,model:K,provider:J,connectionId:A,duration:Date.now()-L,requestBody:a,error:c.message,sourceFormat:M,targetFormat:Q,comboName:D,apiKeyId:B?.id||null,apiKeyName:B?.name||null}).catch(()=>{}),"AbortError"===c.name)return X.handleError(c),(0,n.A1)(499,"Request aborted");let b=(0,n.lR)(c,J,K,o.gx.BAD_GATEWAY);return console.log(`${h.lm.red}[ERROR] ${b}${h.lm.reset}`),(0,n.A1)(o.gx.BAD_GATEWAY,b)}if(E.status===o.gx.UNAUTHORIZED||E.status===o.gx.FORBIDDEN){let a=await (0,k.qZ)(()=>V.refreshCredentials(c,d),3,d);if(a?.accessToken||a?.copilotToken){d?.info?.("TOKEN",`${J.toUpperCase()} | refreshed`),Object.assign(c,a),w&&a&&await w(a);try{let a=await V.execute({model:K,body:T,stream:R,credentials:c,signal:X.signal,log:d});a.response.ok&&(E=a.response,F=a.url)}catch(a){d?.warn?.("TOKEN",`${J.toUpperCase()} | retry after refresh failed`)}}else d?.warn?.("TOKEN",`${J.toUpperCase()} | refresh failed`)}if(!E.ok){(0,q.uw)(K,J,A,!1);let{statusCode:b,message:c,retryAfterMs:e}=await (0,n.zL)(E,J);(0,q.E5)({model:K,provider:J,connectionId:A,status:`FAILED ${b}`}).catch(()=>{}),(0,q.gK)({method:"POST",path:z?.endpoint||"/v1/chat/completions",status:b,model:K,provider:J,connectionId:A,duration:Date.now()-L,requestBody:a,error:c,sourceFormat:M,targetFormat:Q,comboName:D,apiKeyId:B?.id||null,apiKeyName:B?.name||null}).catch(()=>{});let f=(0,n.lR)(Error(c),J,K,b);if(console.log(`${h.lm.red}[ERROR] ${f}${h.lm.reset}`),e&&"antigravity"===J){let a=Math.ceil(e/1e3);d?.debug?.("RETRY",`Antigravity quota reset in ${a}s (${e}ms)`)}return S.logError(Error(c),H||T),(0,v.Kr)(J,A,E.headers,b,K),(0,n.A1)(b,f,e)}if(!R){let b;(0,q.uw)(K,J,A,!1);let c=(E.headers.get("content-type")||"").toLowerCase(),d=await E.text();if(c.includes("text/event-stream")||/(^|\n)\s*(event|data):/m.test(d)){let a=Q===g.h.OPENAI_RESPONSES?(0,u.B)(d,K):(0,u.F)(d,K);if(!a)return(0,q.E5)({model:K,provider:J,connectionId:A,status:`FAILED ${o.gx.BAD_GATEWAY}`}).catch(()=>{}),(0,n.A1)(o.gx.BAD_GATEWAY,"Invalid SSE response for non-streaming request");b=a}else try{b=d?JSON.parse(d):{}}catch{return(0,q.E5)({model:K,provider:J,connectionId:A,status:`FAILED ${o.gx.BAD_GATEWAY}`}).catch(()=>{}),(0,n.A1)(o.gx.BAD_GATEWAY,"Invalid JSON response from provider")}x&&await x();let e=(0,t.M)(b,J);if((0,q.E5)({model:K,provider:J,connectionId:A,tokens:e,status:"200 OK"}).catch(()=>{}),(0,q.gK)({method:"POST",path:z?.endpoint||"/v1/chat/completions",status:200,model:K,provider:J,connectionId:A,duration:Date.now()-L,tokens:e,requestBody:a,responseBody:b,sourceFormat:M,targetFormat:Q,comboName:D,apiKeyId:B?.id||null,apiKeyName:B?.name||null}).catch(()=>{}),e&&"object"==typeof e){let a=`[${new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit"})}] 📊 [USAGE] ${J.toUpperCase()} | in=${e?.prompt_tokens||0} | out=${e?.completion_tokens||0}${A?` | account=${A.slice(0,8)}...`:""}`;console.log(`${h.lm.green}${a}${h.lm.reset}`),(0,q.sZ)({provider:J||"unknown",model:K||"unknown",tokens:e,timestamp:new Date().toISOString(),connectionId:A||void 0,apiKeyId:B?.id||void 0,apiKeyName:B?.name||void 0}).catch(a=>{console.error("Failed to save usage stats:",a.message)})}let i=(0,f.nZ)(Q,M)?(0,s.l)(b,Q,M):b;if(i?.usage){let a=(0,j.O9)(i.usage);i.usage=(0,j.WL)(a,M)}else{let b=JSON.stringify(i?.choices?.[0]?.message?.content||"").length;if(b>0){let c=(0,j.OF)(a,b,M);i.usage=(0,j.WL)(c,M)}}return{success:!0,response:new Response(JSON.stringify(i),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}}x&&await x();let Y=({status:b,usage:c})=>{(0,q.gK)({method:"POST",path:z?.endpoint||"/v1/chat/completions",status:b||200,model:K,provider:J,connectionId:A,duration:Date.now()-L,tokens:c||{},requestBody:a,sourceFormat:M,targetFormat:Q,comboName:D,apiKeyId:B?.id||null,apiKeyName:B?.name||null}).catch(()=>{})},Z=C?.toLowerCase().includes("droid")||C?.toLowerCase().includes("codex-cli");"codex"!==J||Q!==g.h.OPENAI_RESPONSES||M!==g.h.OPENAI||N||Z?(0,f.nZ)(Q,M)?(d?.debug?.("STREAM",`Translation mode: ${Q} → ${M}`),I=(0,h.i5)(Q,M,J,S,U,K,A,a,Y,B)):(d?.debug?.("STREAM","Standard passthrough mode"),I=(0,h.l2)(J,S,K,A,a,Y,B)):(d?.debug?.("STREAM",`Codex translation mode: openai-responses → openai`),I=(0,h.i5)("openai-responses","openai",J,S,U,K,A,a,Y,B));let $=(0,i.Jb)(E,I,X);return{success:!0,response:new Response($,{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","Access-Control-Allow-Origin":"*"}})}}r=(w.then?(await w)():w)[0],d()}catch(a){d(a)}})},38825:(a,b,c)=>{c.d(b,{$m:()=>g,mA:()=>f});var d=c(60021),e=c(66451);async function f(a){let b=(0,e.Xh)(a);if(!b.isAlias){if(b.provider===b.providerAlias){let a=(await (0,d.Fh)({type:"openai-compatible"})).find(a=>a.prefix===b.providerAlias);if(a)return{provider:a.id,model:b.model};let c=(await (0,d.Fh)({type:"anthropic-compatible"})).find(a=>a.prefix===b.providerAlias);if(c)return{provider:c.id,model:b.model}}return(0,e.js)(a,null)}return(0,e.js)(a,d.OM)}async function g(a){let b=await (0,d.Dj)(a);return b&&b.models&&b.models.length>0?b:null}},44594:(a,b,c)=>{c.d(b,{eU:()=>i,vN:()=>h});var d=c(26262),e=c(60021),f=c(85640);let g=f.oD;async function h(a,b){try{let c={};b.accessToken&&(c.accessToken=b.accessToken),b.refreshToken&&(c.refreshToken=b.refreshToken),b.expiresIn&&(c.expiresAt=new Date(Date.now()+1e3*b.expiresIn).toISOString(),c.expiresIn=b.expiresIn),b.providerSpecificData&&(c.providerSpecificData=b.providerSpecificData);let f=await (0,e.rj)(a,c);return d.info("TOKEN_REFRESH","Credentials updated in localDb",{connectionId:a,success:!!f}),!!f}catch(b){return d.error("TOKEN_REFRESH","Error updating credentials in localDb",{connectionId:a,error:b.message}),!1}}async function i(a,b){let c={...b};if(c.expiresAt){let b=new Date(c.expiresAt).getTime(),e=Date.now();if(b-e<g){let g;d.info("TOKEN_REFRESH","Token expiring soon, refreshing proactively",{provider:a,expiresIn:Math.round((b-e)/1e3)});let i=await (g=c,(0,f.iD)(a,g,d));i&&i.accessToken&&(await h(c.connectionId,i),c={...c,accessToken:i.accessToken,refreshToken:i.refreshToken||c.refreshToken,expiresAt:i.expiresIn?new Date(Date.now()+1e3*i.expiresIn).toISOString():c.expiresAt})}}if("github"===a&&c.providerSpecificData?.copilotTokenExpiresAt){let b=1e3*c.providerSpecificData.copilotTokenExpiresAt,e=Date.now();if(b-e<g){let g;d.info("TOKEN_REFRESH","Copilot token expiring soon, refreshing proactively",{provider:a,expiresIn:Math.round((b-e)/1e3)});let i=await (g=c.accessToken,(0,f.jR)(g,d));i&&(await h(c.connectionId,{providerSpecificData:{...c.providerSpecificData,copilotToken:i.token,copilotTokenExpiresAt:i.expiresAt}}),c.providerSpecificData={...c.providerSpecificData,copilotToken:i.token,copilotTokenExpiresAt:i.expiresAt})}}return c}},49894:(a,b,c)=>{function d(){return globalThis.__translatorEvents||(globalThis.__translatorEvents=[]),globalThis.__translatorEvents}function e(a){if(!a||"object"!=typeof a)return;let b=d();b.unshift({id:`evt_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,timestamp:new Date().toISOString(),...a}),b.length>200&&(b.length=200)}function f(a=50){let b=Number(a),c=Number.isFinite(b)&&b>0?Math.min(Math.floor(b),200):50,e=d();return{events:e.slice(0,c),total:e.length}}c.d(b,{MR:()=>e,zS:()=>f})},66451:(a,b,c)=>{c.d(b,{Xh:()=>i,js:()=>j});var d=c(29485);let e={};for(let[a,b]of Object.entries(d.PROVIDER_ID_TO_ALIAS))e[b]&&console.log(`[MODEL] Warning: alias "${b}" maps to both "${e[b]}" and "${a}". Using "${a}".`),e[b]=a;let f={github:{"claude-4.5-opus":"claude-opus-4-5-20251101","claude-opus-4.5":"claude-opus-4-5-20251101","gemini-3-pro":"gemini-3-pro-preview","gemini-3-flash":"gemini-3-flash-preview","raptor-mini":"oswe-vscode-prime"},antigravity:{"gemini-3-flash":"gemini-3-flash-preview"}},g=new Map;for(let[a,b]of Object.entries(d.vq)){let c=e[a]||a;for(let a of b||[]){let b=a?.id;if(!b)continue;let d=g.get(b)||[];d.includes(c)||(d.push(c),g.set(b,d))}}function h(a,b){if(!b||"string"!=typeof b)return b;let c=f[e[a]||a];return c?.[b]||b}function i(a){if(!a)return{provider:null,model:null,isAlias:!1,providerAlias:null};if(/\.\.[\/\\]/.test(a)||/[\x00-\x1f]/.test(a))return console.log(`[MODEL] Warning: rejected malformed model string: "${a.substring(0,50)}"`),{provider:null,model:null,isAlias:!1,providerAlias:null};if(a.includes("/")){let b=a.indexOf("/"),c=a.slice(0,b),d=a.slice(b+1);return{provider:e[c]||c,model:d,isAlias:!1,providerAlias:c}}return{provider:null,model:a,isAlias:!0,providerAlias:null}}async function j(a,b){let c=i(a);if(!c.isAlias){let a=h(c.provider,c.model);return{provider:c.provider,model:a}}let f="function"==typeof b?await b():b,j=function(a,b){var c,d;if(!b)return null;let f=b[a];if(!f)return null;if("string"==typeof f&&f.includes("/")){let a=f.indexOf("/");return{provider:e[c=f.slice(0,a)]||c,model:f.slice(a+1)}}return"object"==typeof f&&f.provider&&f.model?{provider:e[d=f.provider]||d,model:f.model}:null}(c.model,f);if(j){let a=h(j.provider,j.model);return{provider:j.provider,model:a}}let k=c.model,l=g.get(k)||[];if(l.includes("openai"))return{provider:"openai",model:k};let m=l.filter(a=>"openai"!==a);if(1===m.length){let a=m[0],b=h(a,k);return{provider:a,model:b}}if(m.length>1){let a=m.map(a=>d.PROVIDER_ID_TO_ALIAS[a]||a),b=a.slice(0,2).map(a=>`${a}/${k}`),c=`Ambiguous model '${k}'. Use provider/model prefix (ex: ${b.join(" or ")}).`;return console.warn(`[MODEL] ${c} Candidates: ${a.join(", ")}`),{provider:null,model:k,errorType:"ambiguous_model",errorMessage:c,candidateProviders:m,candidateAliases:a}}return{provider:"openai",model:k}}},70718:(a,b,c)=>{c.d(b,{q:()=>m});let d="u">typeof process&&process.versions?.node&&!0,e="u">typeof process&&process.env?.ENABLE_REQUEST_LOGS==="true",f=null,g=null,h=null;async function i(){if(d&&e&&!f)try{f=await Promise.resolve().then(c.t.bind(c,29021,19)),h=(g=await Promise.resolve().then(c.t.bind(c,33873,19))).join("u">typeof process&&process.cwd?process.cwd():".","logs")}catch{}}async function j(a,b,c){if(await i(),!f||!h)return null;try{await f.promises.mkdir(h,{recursive:!0});let d=function(a=new Date){let b=a=>String(a).padStart(2,"0"),c=a.getFullYear(),d=b(a.getMonth()+1),e=b(a.getDate()),f=b(a.getHours()),g=b(a.getMinutes()),h=b(a.getSeconds());return`${c}${d}${e}_${f}${g}${h}`}(),e=(c||"unknown").replace(/[/:]/g,"-"),i=`${a}_${b}_${e}_${d}`,j=g.join(h,i);return await f.promises.mkdir(j,{recursive:!0}),j}catch(a){return console.log("[LOG] Failed to create log session:",a.message),null}}function k(a,b,c){if(!f||!a)return;let d=g.join(a,b);f.promises.writeFile(d,JSON.stringify(c,null,2)).catch(a=>console.log(`[LOG] Failed to write ${b}:`,a.message))}function l(a){if(!a)return{};let b={...a},c=["authorization","x-api-key","cookie","token"];for(let a of Object.keys(b)){let d=a.toLowerCase();if(c.some(a=>d.includes(a))){let c=b[a];c&&c.length>20&&(b[a]=c.slice(0,10)+"..."+c.slice(-5))}}return b}async function m(a,b,c){if(!e)return{sessionPath:null,logClientRawRequest(){},logRawRequest(){},logOpenAIRequest(){},logTargetRequest(){},logProviderResponse(){},appendProviderChunk(){},appendOpenAIChunk(){},logConvertedResponse(){},appendConvertedChunk(){},logError(){}};let d=await j(a,b,c);return{get sessionPath(){return d},logClientRawRequest(a,b,c={}){k(d,"1_req_client.json",{timestamp:new Date().toISOString(),endpoint:a,headers:l(c),body:b})},logRawRequest(a,b={}){k(d,"2_req_source.json",{timestamp:new Date().toISOString(),headers:l(b),body:a})},logOpenAIRequest(a){k(d,"3_req_openai.json",{timestamp:new Date().toISOString(),body:a})},logTargetRequest(a,b,c){k(d,"4_req_target.json",{timestamp:new Date().toISOString(),url:a,headers:l(b),body:c})},logProviderResponse(a,b,c,e){k(d,"5_res_provider.json",{timestamp:new Date().toISOString(),status:a,statusText:b,headers:c?"function"==typeof c.entries?Object.fromEntries(c.entries()):c:{},body:e})},appendProviderChunk(a){if(!f||!d)return;let b=g.join(d,"5_res_provider.txt");f.promises.appendFile(b,a).catch(()=>{})},appendOpenAIChunk(a){if(!f||!d)return;let b=g.join(d,"6_res_openai.txt");f.promises.appendFile(b,a).catch(()=>{})},logConvertedResponse(a){k(d,"7_res_client.json",{timestamp:new Date().toISOString(),body:a})},appendConvertedChunk(a){if(!f||!d)return;let b=g.join(d,"7_res_client.txt");f.promises.appendFile(b,a).catch(()=>{})},logError(a,b=null){k(d,"6_error.json",{timestamp:new Date().toISOString(),error:a?.message||String(a),stack:a?.stack,requestBody:b})}}}},77615:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{P:()=>u});var e=c(15040),f=c(38825),g=c(66451),h=c(17717),i=c(36362),j=c(89865),k=c(57968),l=c(97271),m=c(29485),n=c(89843),o=c(26262),p=c(44594),q=c(60021),r=c(35345),s=c(49894),t=a([i]);async function u(a,b=null){let c;try{c=await a.json()}catch{return o.warn("CHAT","Invalid JSON body"),(0,j.yj)(l.gx.BAD_REQUEST,"Invalid JSON body")}b||(b={endpoint:new URL(a.url).pathname,body:c,headers:Object.fromEntries(a.headers.entries())});let d=new URL(a.url),h=c.model,i=c.messages?.length||c.input?.length||0,m=c.tools?.length||0,n=c.reasoning_effort||c.reasoning?.effort||null;o.request("POST",`${d.pathname} | ${h} | ${i} msgs${m?` | ${m} tools`:""}${n?` | effort=${n}`:""}`);let p=a.headers.get("Authorization"),r=(0,e.Tr)(a),s=null;if(p&&r){let a=o.maskKey(r);o.debug("AUTH",`API Key: ${a}`);try{s=await (0,q.v9)(r)}catch{s=null}}else o.debug("AUTH","No API key provided (local mode)");if("true"===process.env.REQUIRE_API_KEY){if(!r)return o.warn("AUTH","Missing API key while REQUIRE_API_KEY=true"),(0,j.yj)(l.gx.UNAUTHORIZED,"Missing API key");if(!await (0,e.kI)(r))return o.warn("AUTH","Invalid API key while REQUIRE_API_KEY=true"),(0,j.yj)(l.gx.UNAUTHORIZED,"Invalid API key")}if(!h)return o.warn("CHAT","Missing model"),(0,j.yj)(l.gx.BAD_REQUEST,"Missing model");let t=await (0,f.$m)(h);if(t){o.info("CHAT",`Combo "${h}" [${t.strategy||"priority"}] with ${t.models.length} models`);let d=async a=>{let b=(0,g.Xh)(a).provider;if(!b)return!0;let c=await (0,e.c1)(b);return!!c&&!c.allRateLimited},[f,i]=await Promise.all([(0,q.mt)().catch(()=>({})),(0,q.Uv)().catch(()=>[])]);return(0,k.Pr)({body:c,combo:t,handleSingleModel:(c,d)=>v(c,d,b,a,t.name,s),isModelAvailable:d,log:o,settings:f,allCombos:i})}return v(c,h,b,a,null,s)}async function v(a,b,c=null,d=null,g=null,k=null){let t=await (0,f.mA)(b);if(!t.provider){if("ambiguous_model"===t.errorType){let a=t.errorMessage||`Ambiguous model '${b}'. Use provider/model prefix (ex: gh/${b} or cc/${b}).`;return o.warn("CHAT",a,{model:b,candidates:t.candidateAliases||t.candidateProviders||[]}),(0,j.yj)(l.gx.BAD_REQUEST,a)}return o.warn("CHAT","Invalid model format",{model:b}),(0,j.yj)(l.gx.BAD_REQUEST,"Invalid model format")}let{provider:u,model:w}=t,x=(0,h.Tz)(a),y=m.PROVIDER_ID_TO_ALIAS[u]||u,z=(0,m.ux)(y,w)||(0,h.jJ)(u);b!==`${u}/${w}`?o.info("ROUTING",`${b} → ${u}/${w}`):o.info("ROUTING",`Provider: ${u}, Model: ${w}`);let A=d?.headers?.get("user-agent")||"",B=null,C=null,D=null;for(;;){let b=await (0,e.c1)(u,B);if(!b||b.allRateLimited){if(b?.allRateLimited){let a=C||b.lastError||"Unavailable",c=D||Number(b.lastErrorCode)||l.gx.SERVICE_UNAVAILABLE;return o.warn("CHAT",`[${u}/${w}] ${a} (${b.retryAfterHuman})`),(0,j.wO)(c,`[${u}/${w}] ${a}`,b.retryAfter,b.retryAfterHuman)}if(!B)return o.error("AUTH",`No credentials for provider: ${u}`),(0,j.yj)(l.gx.BAD_REQUEST,`No credentials for provider: ${u}`);return o.warn("CHAT","No more accounts available",{provider:u}),(0,j.yj)(D||l.gx.SERVICE_UNAVAILABLE,C||"All accounts unavailable")}let d=b.connectionId.slice(0,8);o.info("AUTH",`Using ${u} account: ${d}...`);let f=await (0,p.eU)(u,b),h=null;try{h=await (0,q.YD)(b.connectionId)}catch(a){o.debug("PROXY",`Failed to resolve proxy: ${a.message}`)}let m=Date.now(),t=await (0,n.j)(h?.proxy||null,()=>(0,i.w)({body:{...a,model:`${u}/${w}`},modelInfo:{provider:u,model:w},credentials:f,log:o,clientRawRequest:c,connectionId:b.connectionId,apiKeyInfo:k,userAgent:A,comboName:g,onCredentialsRefreshed:async a=>{await (0,p.vN)(b.connectionId,{accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData,testStatus:"active"})},onRequestSuccess:async()=>{await (0,e.Pt)(b.connectionId,b)}})),v=Date.now()-m;try{let a=h?.proxy||null;(0,r.pq)({status:t.success?"success":408===t.status||504===t.status?"timeout":"error",proxy:a,level:h?.level||"direct",levelId:h?.levelId||null,provider:u,targetUrl:`${u}/${w}`,latencyMs:v,error:t.success?null:t.error||null,connectionId:b.connectionId,comboId:g||null,account:b.connectionId?.slice(0,8)||null})}catch(a){}try{(0,s.MR)({provider:u,model:w,sourceFormat:x,targetFormat:z,status:t.success?"success":"error",statusCode:t.success?200:t.status||500,latency:v,endpoint:c?.endpoint||"/v1/chat/completions",connectionId:b.connectionId||null,comboName:g||null})}catch{}if(t.success)return t.response;let{shouldFallback:y}=await (0,e.vk)(b.connectionId,t.status,t.error,u);if(y){o.warn("AUTH",`Account ${d}... unavailable (${t.status}), trying fallback`),B=b.connectionId,C=t.error,D=t.status;continue}return t.response}}i=(t.then?(await t)():t)[0],d()}catch(a){d(a)}})},87290:(a,b,c)=>{c.d(b,{M:()=>d});function d(a,b){if(!a||"object"!=typeof a)return null;if(a.usage&&"object"==typeof a.usage&&void 0!==a.usage.prompt_tokens)return{prompt_tokens:a.usage.prompt_tokens||0,completion_tokens:a.usage.completion_tokens||0,cached_tokens:a.usage.prompt_tokens_details?.cached_tokens,reasoning_tokens:a.usage.completion_tokens_details?.reasoning_tokens};let c=a.response?.usage||a.usage;return c&&"object"==typeof c&&(void 0!==c.input_tokens||void 0!==c.output_tokens)?{prompt_tokens:c.input_tokens||0,completion_tokens:c.output_tokens||0,cached_tokens:c.cache_read_input_tokens,cache_creation_input_tokens:c.cache_creation_input_tokens,reasoning_tokens:c.reasoning_tokens||c.output_tokens_details?.reasoning_tokens}:a.usage&&"object"==typeof a.usage&&(void 0!==a.usage.input_tokens||void 0!==a.usage.output_tokens)?{prompt_tokens:a.usage.input_tokens||0,completion_tokens:a.usage.output_tokens||0,cache_read_input_tokens:a.usage.cache_read_input_tokens,cache_creation_input_tokens:a.usage.cache_creation_input_tokens}:a.usageMetadata&&"object"==typeof a.usageMetadata?{prompt_tokens:a.usageMetadata.promptTokenCount||0,completion_tokens:a.usageMetadata.candidatesTokenCount||0,reasoning_tokens:a.usageMetadata.thoughtsTokenCount}:null}},89843:(a,b,c)=>{c.d(b,{j:()=>k});var d=c(16698),e=c(13618);let f="u">typeof caches&&"object"==typeof caches,g=Symbol.for("omniroute.proxyFetch.state"),h=(globalThis[g]||(globalThis[g]={originalFetch:globalThis.fetch,proxyContext:new d.AsyncLocalStorage,isPatched:!1}),globalThis[g]),i=h.originalFetch,j=h.proxyContext;async function k(a,b){if("function"!=typeof b)throw TypeError("runWithProxyContext requires a callback function");let c=a?(0,e.HN)(a):null;return j.run(a||null,async()=>(c&&console.log(`[ProxyFetch] Applied request proxy context: ${(0,e.OK)(c)}`),b()))}async function l(a,b={}){let c;if(b?.dispatcher)return i(a,b);let d="string"==typeof a?a:a&&"string"==typeof a.url?a.url:String(a);try{c=function(a){let b=j.getStore();if(b)return{source:"context",proxyUrl:(0,e.HN)(b)};let c=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(":");return(!c||c===e)&&!!b&&(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,e.zP)(c,"environment proxy"):null}(a);return c?{source:"env",proxyUrl:c}:{source:"direct",proxyUrl:null}}(d)}catch(b){let a=b instanceof Error?b.message:String(b);throw console.error(`[ProxyFetch] Proxy configuration error: ${a}`),b}let{source:f,proxyUrl:g}=c;if(!g)return i(a,b);try{let c=(0,e.I_)(g);return await i(a,{...b,dispatcher:c})}catch(b){let a=b instanceof Error?b.message:String(b);throw console.error(`[ProxyFetch] Proxy request failed (${f}, fail-closed): ${a}`),b}}f||h.isPatched||(globalThis.fetch=l,h.isPatched=!0)},90859:(a,b,c)=>{c.d(b,{lm:()=>g.lm,l2:()=>p,i5:()=>o,v8:()=>j});var d=c(25970),e=c(19956),f=c(17132),g=c(67677);function h(a){if(!a)return null;let b=a.trimStart();if(!b||100!==b.charCodeAt(0))return null;let c=b.slice(5).trim();if("[DONE]"===c)return{done:!0};try{return JSON.parse(c)}catch(a){return c.length>0&&console.log(`[WARN] Failed to parse SSE line (${c.length} chars): ${c.substring(0,200)}...`),null}}function i(a,b){if(b===e.h.OPENAI&&a.choices?.[0]?.delta){let b=a.choices[0].delta;return b.content&&""!==b.content||b.reasoning_content&&""!==b.reasoning_content||b.tool_calls&&b.tool_calls.length>0||a.choices[0].finish_reason||b.role}if(b===e.h.CLAUDE){let b="content_block_delta"===a.type,c=a.delta?.text&&""!==a.delta.text,d=a.delta?.thinking&&""!==a.delta.thinking,e=a.delta?.partial_json&&""!==a.delta.partial_json;return!b||!!c||!!d||!!e}if(b===e.h.GEMINI&&a.candidates?.[0]){let b=a.candidates[0];if(b.finishReason)return!0;let c=b.content?.parts;return!!c&&0!==c.length&&c.some(a=>a.text&&""!==a.text||a.functionCall||a.executableCode)}return!0}function j(a,b){return null==a?"data: null\n\n":a&&a.done?"data: [DONE]\n\n":a&&a.event&&a.data?`event: ${a.event}
1
+ "use strict";exports.id=7615,exports.ids=[7615],exports.modules={2735:(a,b,c)=>{c.d(b,{c:()=>i});var d=c(17717),e=c(25970),f=c(19956),g=c(97271),h=c(90859);function i(a,b,c=""){if(!c.includes("claude-cli")||!a.messages?.length)return null;let l=a.messages,m=a=>"string"==typeof a?a:Array.isArray(a)?a.filter(a=>"text"===a.type).map(a=>a.text).join(" "):"",n=!1,o=l[l.length-1];if(o?.role==="assistant"&&o.content?.[0]?.text==="{"&&(n=!0),n||"Warmup"===m(l[0]?.content)&&(n=!0),n||1!==l.length||l[0]?.role!=="user"||"count"===m(l[0]?.content)&&(n=!0),!n&&g.C8?.length){let a=l.filter(a=>"user"===a.role).map(a=>m(a.content)).join(" ");g.C8.some(b=>a.includes(b))&&(n=!0)}if(!n)return null;let p=(0,d.Tz)(a);return!1!==a.stream?function(a,b){let c=j(b),d=(0,e.Ws)(a);d.model=b;let g=k(c),i=[];for(let b of g){let c=(0,e.Y8)(f.h.OPENAI,a,b,d);if(c?.length>0)for(let b of c)i.push((0,h.v8)(b,a))}let l=(0,e.Y8)(f.h.OPENAI,a,null,d);if(l?.length>0)for(let b of l)i.push((0,h.v8)(b,a));return i.push("data: [DONE]\n\n"),{success:!0,response:new Response(i.join(""),{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","Access-Control-Allow-Origin":"*"}})}}(p,b):function(a,b){let c=j(b);if(a===f.h.OPENAI)return{success:!0,response:new Response(JSON.stringify(c),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})};let d=(0,e.Ws)(a);d.model=b;let g=k(c),h=[];for(let b of g){let c=(0,e.Y8)(f.h.OPENAI,a,b,d);c?.length>0&&h.push(...c)}let i=(0,e.Y8)(f.h.OPENAI,a,null,d);return i?.length>0&&h.push(...i),{success:!0,response:new Response(JSON.stringify(function(a,b){if(!a||0===a.length)return j("unknown");let c=a[a.length-1];if(b===f.h.CLAUDE&&a.find(a=>"message_stop"===a.type)){a.find(a=>"content_block_delta"===a.type);let b=a.find(a=>"message_delta"===a.type),d=a.find(a=>"message_start"===a.type);d?.message&&(c=d.message,b?.usage&&(c.usage=b.usage))}return c}(h,a)),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}}(p,b)}function j(a){let b=`chatcmpl-${Date.now()}`;return{id:b,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:a,choices:[{index:0,message:{role:"assistant",content:"CLI Command Execution: Clear Terminal"},finish_reason:"stop"}],usage:{prompt_tokens:1,completion_tokens:1,total_tokens:2}}}function k(a){let{id:b,created:c,model:d,choices:e}=a;return[{id:b,object:"chat.completion.chunk",created:c,model:d,choices:[{index:0,delta:{role:"assistant",content:e[0].message.content},finish_reason:null}]},{id:b,object:"chat.completion.chunk",created:c,model:d,choices:[{index:0,delta:{},finish_reason:"stop"}],usage:a.usage}]}},13396:(a,b,c)=>{c.d(b,{DQ:()=>h,GX:()=>j,Wj:()=>i,fj:()=>f,gC:()=>g});let d=new Map;function e(a,b){return`${a}::${b}`}function f(a,b){let c=e(a,b),f=d.get(c);return!f||Date.now()-f.unavailableSince>=f.cooldownMs&&(d.delete(c),!0)}function g(a,b,c=6e4,f){let h=e(a,b);d.set(h,{provider:a,model:b,unavailableSince:Date.now(),cooldownMs:c,reason:f||"unknown"})}function h(a,b){return d.delete(e(a,b))}function i(){let a=Date.now(),b=[];for(let[c,e]of d.entries()){let f=a-e.unavailableSince;if(f>=e.cooldownMs){d.delete(c);continue}b.push({provider:e.provider,model:e.model,reason:e.reason||"unknown",remainingMs:e.cooldownMs-f,unavailableSince:new Date(e.unavailableSince).toISOString()})}return b}function j(){return i(),d.size}},13618:(a,b,c)=>{c.d(b,{HN:()=>m,I_:()=>n,OK:()=>k,QX:()=>j,zP:()=>l});var d=c(47774),e=c(20406);let f=Symbol.for("omniroute.proxyDispatcher.cache"),g=new Set(["http:","https:","socks5:"]);function h(a){return"https:"===a||"wss:"===a?"443":"socks5:"===a?"1080":"8080"}function i(a,b){if(!a)return h(b);let c=Number(a);if(!Number.isInteger(c)||c<1||c>65535)throw Error("[ProxyDispatcher] Invalid proxy port");return String(c)}function j(){return"true"===process.env.ENABLE_SOCKS5_PROXY}function k(a){let b=new URL(a),c=b.port||h(b.protocol);return`${b.protocol}//${b.hostname}:${c}`}function l(a,b="proxy",{allowSocks5:c=j()}={}){let d;try{d=new URL(a)}catch{throw Error(`[ProxyDispatcher] Invalid ${b} URL`)}if(!g.has(d.protocol))throw Error(`[ProxyDispatcher] Unsupported ${b} protocol: ${d.protocol.replace(":","")}`);if("socks5:"===d.protocol&&!c)throw Error("[ProxyDispatcher] SOCKS5 proxy is disabled (set ENABLE_SOCKS5_PROXY=true to enable)");if(!d.hostname)throw Error(`[ProxyDispatcher] Invalid ${b} host`);return d.port=i(d.port,d.protocol),d.toString()}function m(a,{allowSocks5:b=j()}={}){if(!a)return null;if("string"==typeof a)return l(a,"context proxy",{allowSocks5:b});if("object"!=typeof a||Array.isArray(a))throw Error("[ProxyDispatcher] Invalid context proxy config");let c=String(a.type||"http").toLowerCase(),d=`${c}:`;if(!g.has(d))throw Error(`[ProxyDispatcher] Unsupported context proxy protocol: ${c}`);if("socks5:"===d&&!b)throw Error("[ProxyDispatcher] SOCKS5 proxy is disabled (set ENABLE_SOCKS5_PROXY=true to enable)");if(!a.host)throw Error("[ProxyDispatcher] Context proxy host is required");let e=i(a.port,d),f=new URL(`${c}://${a.host}:${e}`);return a.username&&(f.username=a.username,f.password=a.password||""),l(f.toString(),"context proxy",{allowSocks5:b})}function n(a){let b=l(a,"proxy dispatcher"),c=(globalThis[f]||(globalThis[f]=new Map),globalThis[f]),g=c.get(b);if(g)return g;let h=new URL(b);if("socks5:"===h.protocol){let a={type:5,host:h.hostname,port:Number(i(h.port,h.protocol))};h.username&&(a.userId=decodeURIComponent(h.username)),h.password&&(a.password=decodeURIComponent(h.password)),g=(0,e.vI)(a)}else g=new d.ProxyAgent(b);return c.set(b,g),g}},15575:(a,b,c)=>{function d({onDisconnect:a,log:b,provider:c,model:e}={}){let f=new AbortController,g=Date.now(),h=!1,i=null,j=a=>{let b=Date.now()-g,d=c?.toUpperCase()||"UNKNOWN";console.log(`[${new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"})}] 🌊 [STREAM] ${d} | ${e||"unknown"} | ${b}ms | ${a}`)};return{signal:f.signal,startTime:g,isConnected:()=>!h,handleDisconnect:(b="client_closed")=>{h||(h=!0,j(`disconnect: ${b}`),i=setTimeout(()=>{f.abort()},500),a?.({reason:b,duration:Date.now()-g}))},handleComplete:()=>{!h&&(h=!0,j("complete"),i&&(clearTimeout(i),i=null))},handleError:a=>{(i&&(clearTimeout(i),i=null),"AbortError"===a.name)?j("aborted"):j(`error: ${a.message}`)},abort:()=>f.abort()}}function e(a,b,c){var d;let e,f;return d={readable:a.body.pipeThrough(b),writable:{getWriter:()=>({abort:()=>{}})}},e=d.readable.getReader(),f=d.writable.getWriter(),new ReadableStream({async pull(a){if(!c.isConnected())return void a.close();try{let{done:b,value:d}=await e.read();if(b){c.handleComplete(),a.close();return}a.enqueue(d)}catch(b){c.handleError(b),a.error(b)}},cancel(a){c.handleDisconnect(a||"cancelled"),e.cancel(),f.abort()}})}c.d(b,{Jb:()=>e,jd:()=>d})},20638:(a,b,c)=>{c.d(b,{l:()=>e});var d=c(19956);function e(a,b,c){if(b===c||b===d.h.OPENAI)return a;if(b===d.h.OPENAI_RESPONSES){let b=a?.object==="response"?a:a?.response||a,c=Array.isArray(b?.output)?b.output:[],d=b?.usage||a?.usage,e="",f="",g=[];for(let a of c)if(a&&"object"==typeof a){if("message"===a.type&&Array.isArray(a.content))for(let b of a.content)b&&"object"==typeof b&&("output_text"===b.type&&"string"==typeof b.text?e+=b.text:"summary_text"===b.type&&"string"==typeof b.text&&(f+=b.text));else if("reasoning"===a.type&&Array.isArray(a.summary))for(let b of a.summary)b?.type==="summary_text"&&"string"==typeof b.text&&(f+=b.text);else if("function_call"===a.type){let b=a.call_id||a.id||`call_${Date.now()}_${g.length}`,c="string"==typeof a.arguments?a.arguments:JSON.stringify(a.arguments||{});g.push({id:b,type:"function",function:{name:a.name||"",arguments:c}})}}let h={role:"assistant"};e&&(h.content=e),f&&(h.reasoning_content=f),g.length>0&&(h.tool_calls=g),h.content||h.tool_calls||(h.content="");let i=Number(b?.created_at)||Math.floor(Date.now()/1e3),j=b?.model||a?.model||"openai-responses",k=g.length>0?"tool_calls":"stop",l={id:`chatcmpl-${b?.id||Date.now()}`,object:"chat.completion",created:i,model:j,choices:[{index:0,message:h,finish_reason:k}]};if(d&&"object"==typeof d){let a=d.input_tokens||0,b=d.output_tokens||0;l.usage={prompt_tokens:a,completion_tokens:b,total_tokens:a+b},d.reasoning_tokens>0&&(l.usage.completion_tokens_details={reasoning_tokens:d.reasoning_tokens}),(d.cache_read_input_tokens>0||d.cache_creation_input_tokens>0)&&(l.usage.prompt_tokens_details={},d.cache_read_input_tokens>0&&(l.usage.prompt_tokens_details.cached_tokens=d.cache_read_input_tokens),d.cache_creation_input_tokens>0&&(l.usage.prompt_tokens_details.cache_creation_tokens=d.cache_creation_input_tokens))}return l}if(b===d.h.GEMINI||b===d.h.ANTIGRAVITY||b===d.h.GEMINI_CLI){let b=a.response||a;if(!b?.candidates?.[0])return a;let c=b.candidates[0],d=c.content,e=b.usageMetadata||a.usageMetadata,f="",g=[],h="";if(d?.parts)for(let a of d.parts)!0===a.thought&&a.text?h+=a.text:void 0!==a.text&&(f+=a.text),a.functionCall&&g.push({id:`call_${a.functionCall.name}_${Date.now()}_${g.length}`,type:"function",function:{name:a.functionCall.name,arguments:JSON.stringify(a.functionCall.args||{})}});let i={role:"assistant"};f&&(i.content=f),h&&(i.reasoning_content=h),g.length>0&&(i.tool_calls=g),i.content||i.tool_calls||(i.content="");let j=(c.finishReason||"stop").toLowerCase();"stop"===j&&g.length>0&&(j="tool_calls");let k={id:`chatcmpl-${b.responseId||Date.now()}`,object:"chat.completion",created:Math.floor(new Date(b.createTime||Date.now()).getTime()/1e3),model:b.modelVersion||"gemini",choices:[{index:0,message:i,finish_reason:j}]};return e&&(k.usage={prompt_tokens:(e.promptTokenCount||0)+(e.thoughtsTokenCount||0),completion_tokens:e.candidatesTokenCount||0,total_tokens:e.totalTokenCount||0},e.thoughtsTokenCount>0&&(k.usage.completion_tokens_details={reasoning_tokens:e.thoughtsTokenCount})),k}if(b===d.h.CLAUDE){if(!a.content)return a;let b="",c="",d=[];for(let e of a.content)"text"===e.type?b+=e.text:"thinking"===e.type?c+=e.thinking||"":"tool_use"===e.type&&d.push({id:e.id,type:"function",function:{name:e.name,arguments:JSON.stringify(e.input||{})}});let e={role:"assistant"};b&&(e.content=b),c&&(e.reasoning_content=c),d.length>0&&(e.tool_calls=d),e.content||e.tool_calls||(e.content="");let f=a.stop_reason||"stop";"end_turn"===f&&(f="stop"),"tool_use"===f&&(f="tool_calls");let g={id:`chatcmpl-${a.id||Date.now()}`,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:a.model||"claude",choices:[{index:0,message:e,finish_reason:f}]};return a.usage&&(g.usage={prompt_tokens:a.usage.input_tokens||0,completion_tokens:a.usage.output_tokens||0,total_tokens:(a.usage.input_tokens||0)+(a.usage.output_tokens||0)}),g}return a}},24004:(a,b,c)=>{c.d(b,{$E:()=>m,Kr:()=>s,UE:()=>t,YO:()=>o,getAllRateLimitStatus:()=>u,mg:()=>l,rh:()=>k});var d=c(57217);c(49263);var e=c(28108),f=c(97271);let g=new Map,h=new Set,i=!1,j={maxConcurrent:10,minTime:0,reservoir:null,reservoirRefreshAmount:null,reservoirRefreshInterval:null};async function k(){if(!i){i=!0;try{let{getProviderConnections:a}=await Promise.resolve().then(c.bind(c,24352)),b=await a(),i=0,j=0;for(let a of b)if(a.rateLimitProtection)h.add(a.id),i++;else if(a.provider&&"apikey"===(0,e.oQ)(a.provider)&&a.isActive){h.add(a.id),j++;let b=`${a.provider}:${a.id}`;g.has(b)||g.set(b,new d({maxConcurrent:f.DEFAULT_API_LIMITS.concurrentRequests,minTime:f.DEFAULT_API_LIMITS.minTimeBetweenRequests,reservoir:f.DEFAULT_API_LIMITS.requestsPerMinute,reservoirRefreshAmount:f.DEFAULT_API_LIMITS.requestsPerMinute,reservoirRefreshInterval:6e4,id:b}))}(i>0||j>0)&&console.log(`🛡️ [RATE-LIMIT] Loaded ${i} explicit + ${j} auto-enabled (API key) protection(s)`)}catch(a){console.error("[RATE-LIMIT] Failed to load settings:",a.message)}}}function l(a){h.add(a)}function m(a){for(let[b]of(h.delete(a),g))if(b.includes(a)){let a=g.get(b);a?.disconnect(),g.delete(b)}}function n(a,b,c=null){let e=c?`${a}:${b}:${c}`:`${a}:${b}`;if(!g.has(e)){let a=new d({...j,id:e});a.on("queued",()=>{let b=a.counts();b.QUEUED>0&&console.log(`⏳ [RATE-LIMIT] ${e} — ${b.QUEUED} request(s) queued, ${b.RUNNING} running`)}),g.set(e,a)}return g.get(e)}async function o(a,b,c,d){return h.has(b)?n(a,b,null).schedule(d):d()}let p={limit:"x-ratelimit-limit-requests",remaining:"x-ratelimit-remaining-requests",reset:"x-ratelimit-reset-requests",limitTokens:"x-ratelimit-limit-tokens",remainingTokens:"x-ratelimit-remaining-tokens",resetTokens:"x-ratelimit-reset-tokens",retryAfter:"retry-after",overLimit:"x-ratelimit-over-limit"},q={limit:"anthropic-ratelimit-requests-limit",remaining:"anthropic-ratelimit-requests-remaining",reset:"anthropic-ratelimit-requests-reset",limitTokens:"anthropic-ratelimit-input-tokens-limit",remainingTokens:"anthropic-ratelimit-input-tokens-remaining",resetTokens:"anthropic-ratelimit-input-tokens-reset",retryAfter:"retry-after"};function r(a){if(!a)return null;let b=a.match(/^(?:(\d+)h)?(?:(\d+)m(?!s))?(?:(\d+)s)?(?:(\d+)ms)?$/);if(b){let[,a,c,d,e]=b;return(3600*parseInt(a||0)+60*parseInt(c||0)+parseInt(d||0))*1e3+parseInt(e||0)}let c=parseFloat(a);if(!isNaN(c)&&c>0)return c>17e8?Math.max(0,1e3*c-Date.now()):1e3*c;try{let b=new Date(a);if(!isNaN(b.getTime()))return Math.max(0,b.getTime()-Date.now())}catch{}return null}function s(a,b,c,d,e=null){if(!h.has(b)||!c)return;let f=n(a,b,null),g="claude"===a||"anthropic"===a?q:p,i=a=>"function"==typeof c.get?c.get(a):c[a]||null,j=parseInt(i(g.limit)),k=parseInt(i(g.remaining)),l=i(g.reset),m=i(g.retryAfter),o=i(p.overLimit);if(429===d){let c=r(m)||6e4;console.log(`🚫 [RATE-LIMIT] ${a}:${b.slice(0,8)} — 429 received, pausing for ${Math.ceil(c/1e3)}s`),f.updateSettings({reservoir:0,reservoirRefreshAmount:j||60,reservoirRefreshInterval:c});return}if("yes"===o){console.log(`⚠️ [RATE-LIMIT] ${a}:${b.slice(0,8)} — near capacity, slowing down`),f.updateSettings({minTime:200});return}if(!isNaN(j)&&j>0){let c=r(l)||6e4,d={minTime:Math.max(0,Math.floor(6e4/j)-10)};!isNaN(k)&&(k<.1*j?(d.reservoir=k,d.reservoirRefreshAmount=j,d.reservoirRefreshInterval=c,console.log(`⚠️ [RATE-LIMIT] ${a}:${b.slice(0,8)} — ${k}/${j} remaining, throttling`)):k>.5*j&&(d.minTime=0,d.reservoir=null,d.reservoirRefreshAmount=null,d.reservoirRefreshInterval=null)),f.updateSettings(d)}}function t(a,b){let c=`${a}:${b}`,d=g.get(c);if(!d)return{enabled:h.has(b),active:!1,queued:0,running:0};let e=d.counts();return{enabled:h.has(b),active:!0,queued:e.QUEUED||0,running:e.RUNNING||0,executing:e.EXECUTING||0,done:e.DONE||0}}function u(){let a={};for(let[b,c]of g){let d=c.counts();a[b]={queued:d.QUEUED||0,running:d.RUNNING||0,executing:d.EXECUTING||0}}return a}},25289:(a,b,c)=>{c.d(b,{i2:()=>e});var d=c(14469);function e(a={}){let b=function(){try{return(0,d.sm)()}catch{return null}}();if(!b)return[];let c=[],f=[];a.action&&(c.push("action = ?"),f.push(a.action)),a.actor&&(c.push("actor = ?"),f.push(a.actor));let g=c.length>0?`WHERE ${c.join(" AND ")}`:"",h=a.limit||100,i=a.offset||0;return b.prepare(`SELECT * FROM audit_log ${g} ORDER BY timestamp DESC LIMIT ? OFFSET ?`).all(...f,h,i).map(a=>({...a,details:a.details?JSON.parse(String(a.details)):null}))}parseInt(process.env.LOG_RETENTION_DAYS||"90",10)},32757:(a,b,c)=>{function d(a,b){let c=String(a||"").split("\n"),d=[];for(let a of c){let b=a.trim();if(!b.startsWith("data:"))continue;let c=b.slice(5).trim();if(c&&"[DONE]"!==c)try{d.push(JSON.parse(c))}catch{}}if(0===d.length)return null;let e=d[0],f=[],g=[],h="stop",i=null;for(let a of d){let b=a?.choices?.[0],c=b?.delta||{};"string"==typeof c.content&&c.content.length>0&&f.push(c.content),"string"==typeof c.reasoning_content&&c.reasoning_content.length>0&&g.push(c.reasoning_content),b?.finish_reason&&(h=b.finish_reason),a?.usage&&"object"==typeof a.usage&&(i=a.usage)}let j={role:"assistant",content:f.join("")};g.length>0&&(j.reasoning_content=g.join(""));let k={id:e.id||`chatcmpl-${Date.now()}`,object:"chat.completion",created:e.created||Math.floor(Date.now()/1e3),model:e.model||b||"unknown",choices:[{index:0,message:j,finish_reason:h}]};return i&&(k.usage=i),k}function e(a,b){let c=String(a||"").split("\n"),d=[];for(let a of c){let b=a.trim();if(!b.startsWith("data:"))continue;let c=b.slice(5).trim();if(c&&"[DONE]"!==c)try{d.push(JSON.parse(c))}catch{}}if(0===d.length)return null;let e=null,f=null;for(let a of d)a?.type==="response.completed"&&a.response&&(e=a.response),a?.response&&"object"==typeof a.response?f=a.response:a?.object==="response"&&(f=a);let g=e||f;return g&&"object"==typeof g?{id:g.id||`resp_${Date.now()}`,object:"response",model:g.model||b||"unknown",output:Array.isArray(g.output)?g.output:[],usage:g.usage||null,status:g.status||(e?"completed":"in_progress"),created_at:g.created_at||Math.floor(Date.now()/1e3),metadata:g.metadata||{}}:null}c.d(b,{B:()=>e,F:()=>d})},35345:(a,b,c)=>{c.d(b,{GL:()=>g,XT:()=>h,pq:()=>f});var d=c(94755);let e=[];function f(a){let b={id:(0,d.A)(),timestamp:new Date().toISOString(),status:a.status||"success",proxy:a.proxy||null,level:a.level||"direct",levelId:a.levelId||null,provider:a.provider||null,targetUrl:a.targetUrl||null,publicIp:a.publicIp||null,latencyMs:a.latencyMs||0,error:a.error||null,connectionId:a.connectionId||null,comboId:a.comboId||null,account:a.account||null};return e.unshift(b),e.length>500&&(e.length=500),b}function g(a={}){let b=[...e];if(a.status&&(b="ok"===a.status?b.filter(a=>"success"===a.status):b.filter(b=>b.status===a.status)),a.type&&(b=b.filter(b=>b.proxy?.type===a.type)),a.provider&&(b=b.filter(b=>b.provider===a.provider)),a.level&&(b=b.filter(b=>b.level===a.level)),a.search){let c=a.search.toLowerCase();b=b.filter(a=>(a.proxy?.host||"").toLowerCase().includes(c)||(a.provider||"").toLowerCase().includes(c)||(a.targetUrl||"").toLowerCase().includes(c)||(a.publicIp||"").toLowerCase().includes(c)||(a.level||"").toLowerCase().includes(c)||(a.error||"").toLowerCase().includes(c)||(a.account||"").toLowerCase().includes(c))}let c=a.limit||300;return b.slice(0,c)}function h(){e.length=0}},35790:(a,b,c)=>{c.d(b,{Jh:()=>g});let d=[{name:"system_override",pattern:/\b(ignore|disregard|forget)\s+(all\s+)?(previous|prior|above|earlier)\s+(instructions?|prompts?|rules?|context)/i,severity:"high"},{name:"role_hijack",pattern:/\b(you\s+are\s+now|act\s+as\s+if|pretend\s+(to\s+be|you\s+are)|from\s+now\s+on\s+you\s+are)\b/i,severity:"medium"},{name:"system_prompt_leak",pattern:/\b(reveal|show|display|print|output|repeat)\s+(your\s+)?(system\s+prompt|instructions?|initial\s+prompt|hidden\s+prompt)/i,severity:"high"},{name:"delimiter_injection",pattern:/(\[SYSTEM\]|\[INST\]|<<SYS>>|<\|im_start\|>|<\|system\|>|<\|user\|>)/i,severity:"high"},{name:"jailbreak_dan",pattern:/\b(DAN|do\s+anything\s+now|jailbreak|developer\s+mode|enable\s+developer)\b/i,severity:"medium"},{name:"encoding_evasion",pattern:/\b(base64\s+decode|rot13|hex\s+decode|unicode\s+escape)\b.*\b(instruction|prompt|command)\b/i,severity:"medium"}],e=[{name:"email",pattern:/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g,replacement:"[EMAIL_REDACTED]"},{name:"cpf",pattern:/\b\d{3}\.\d{3}\.\d{3}-\d{2}\b/g,replacement:"[CPF_REDACTED]"},{name:"cnpj",pattern:/\b\d{2}\.\d{3}\.\d{3}\/\d{4}-\d{2}\b/g,replacement:"[CNPJ_REDACTED]"},{name:"credit_card",pattern:/\b(?:\d{4}[-\s]?){3}\d{4}\b/g,replacement:"[CARD_REDACTED]"},{name:"phone_br",pattern:/\b\(?\d{2}\)?\s?\d{4,5}-?\d{4}\b/g,replacement:"[PHONE_REDACTED]"},{name:"ssn_us",pattern:/\b\d{3}-\d{2}-\d{4}\b/g,replacement:"[SSN_REDACTED]"}];function f(a,b=!1){let c=[],d=a;for(let f of e){let e=a.match(f.pattern);e&&e.length>0&&(c.push({type:f.name,count:e.length}),b&&(d=d.replace(f.pattern,f.replacement)))}return{text:d,detections:c}}function g(a,b=console){let c={enabled:"false"!==process.env.INPUT_SANITIZER_ENABLED,mode:process.env.INPUT_SANITIZER_MODE||"warn",piiRedaction:"true"===process.env.PII_REDACTION_ENABLED},e={blocked:!1,modified:!1,detections:[],piiDetections:[],sanitizedBody:null};if(!c.enabled)return e;let h=(function(a){let b=[];for(let c of a.messages||a.input||[])if("string"==typeof c)b.push(c);else if("string"==typeof c.content)b.push(c.content);else if(Array.isArray(c.content))for(let a of c.content)"string"==typeof a?b.push(a):a.text&&b.push(a.text);if("string"==typeof a.system)b.push(a.system);else if(Array.isArray(a.system))for(let c of a.system)"string"==typeof c?b.push(c):c.text&&b.push(c.text);return b})(a).join("\n"),i=function(a){let b=[];for(let c of d){let d=a.match(c.pattern);d&&b.push({pattern:c.name,severity:c.severity,match:d[0].slice(0,50)})}return b}(h);if(i.length>0){e.detections=i;let a=i.filter(a=>"high"===a.severity),d=a.length>0?"warn":"info";if(b[d]&&b[d](`[SANITIZER] Prompt injection detected: ${i.map(a=>a.pattern).join(", ")}`),"block"===c.mode&&a.length>0)return e.blocked=!0,e}if(c.piiRedaction){let d=f(h,"redact"===c.mode);e.piiDetections=d.detections,d.detections.length>0&&(b.warn?.(`[SANITIZER] PII detected: ${d.detections.map(a=>`${a.type}(${a.count})`).join(", ")}`),"redact"===c.mode&&(e.sanitizedBody=function(a){let b=JSON.parse(JSON.stringify(a));for(let a of b.messages||b.input||[])if("string"==typeof a.content)a.content=f(a.content,!0).text;else if(Array.isArray(a.content))for(let b of a.content)if("string"==typeof b){let c=a.content.indexOf(b);a.content[c]=f(b,!0).text}else b.text&&(b.text=f(b.text,!0).text);return"string"==typeof b.system&&(b.system=f(b.system,!0).text),b}(a),e.modified=!0))}return e}},36362:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{w:()=>A});var e=c(17717),f=c(25970),g=c(19956),h=c(90859),i=c(15575),j=c(67677),k=c(85640),l=c(70718),m=c(29485),n=c(89865),o=c(97271),p=c(2735),q=c(74832),r=c(48400),s=c(20638),t=c(87290),u=c(32757),v=c(24004),w=c(81983),x=c(91563),y=c(79498),z=a([r]);async function A({body:a,modelInfo:b,credentials:c,log:d,onCredentialsRefreshed:z,onRequestSuccess:A,onDisconnect:B,clientRawRequest:C,connectionId:D,apiKeyInfo:E=null,userAgent:F,comboName:G}){let H,I,J,K,L,M,{provider:N,model:O}=b,P=Date.now(),Q=(0,x.xp)(C?.headers),R=(0,x.ic)(Q);if(R)return d?.debug?.("IDEMPOTENCY",`Hit for key=${Q?.slice(0,12)}...`),{success:!0,response:new Response(JSON.stringify(R.response),{status:R.status,headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*","X-OmniRoute-Idempotent":"true"}})};await (0,v.rh)();let S=(0,e.Tz)(a),T=(C?.endpoint||"").toLowerCase().endsWith("/responses"),U=(0,p.c)(a,O,F);if(U)return U;let V=m.PROVIDER_ID_TO_ALIAS[N]||N,W=(0,m.ux)(V,O)||(0,e.jJ)(N),X=!1!==a.stream;if((0,w.TZ)(a,C?.headers)){let b=(0,w.gR)(O,a.messages,a.temperature,a.top_p),c=(0,w.Cb)(b);if(c)return d?.debug?.("CACHE",`Semantic cache HIT for ${O}`),{success:!0,response:new Response(JSON.stringify(c),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*","X-OmniRoute-Cache":"HIT"}})}}let Y=await (0,l.q)(S,W,O);C&&Y.logClientRawRequest(C.endpoint,C.body,C.headers),Y.logRawRequest(a),d?.debug?.("FORMAT",`${S} → ${W} | stream=${X}`);let Z=a;try{Z=(0,f.GH)(S,W,O,a,X,c,N,Y)}catch(f){let a=Number(f?.statusCode),b=Number.isInteger(a)&&a>=400&&a<=599?a:o.gx.SERVER_ERROR,c=f?.message||"Invalid request",e="string"==typeof f?.errorType?f.errorType:null;if(d?.warn?.("TRANSLATE",`Request translation failed: ${c}`),e)return{success:!1,status:b,error:c,response:new Response(JSON.stringify({error:{message:c,type:e,code:e}}),{status:b,headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})};return(0,n.A1)(b,c)}let $=Z._toolNameMap;delete Z._toolNameMap,Z.model=O;let _=(0,r.SB)(N);(0,q.uw)(O,N,D,!0),(0,q.E5)({model:O,provider:N,connectionId:D,status:"PENDING"}).catch(()=>{});let aa=Z.messages?.length||Z.contents?.length||Z.request?.contents?.length||0;d?.debug?.("REQUEST",`${N.toUpperCase()} | ${O} | ${aa} msgs`);let ab=(0,i.jd)({onDisconnect:B,log:d,provider:N,model:O});try{let a=await (0,v.YO)(N,D,O,()=>_.execute({model:O,body:Z,stream:X,credentials:c,signal:ab.signal,log:d}));H=a.response,I=a.url,J=a.headers,K=a.transformedBody,Y.logTargetRequest(I,J,K),(0,v.Kr)(N,D,H.headers,H.status,O)}catch(c){if((0,q.uw)(O,N,D,!1),(0,q.E5)({model:O,provider:N,connectionId:D,status:`FAILED ${"AbortError"===c.name?499:o.gx.BAD_GATEWAY}`}).catch(()=>{}),(0,q.gK)({method:"POST",path:C?.endpoint||"/v1/chat/completions",status:"AbortError"===c.name?499:o.gx.BAD_GATEWAY,model:O,provider:N,connectionId:D,duration:Date.now()-P,requestBody:a,error:c.message,sourceFormat:S,targetFormat:W,comboName:G,apiKeyId:E?.id||null,apiKeyName:E?.name||null}).catch(()=>{}),"AbortError"===c.name)return ab.handleError(c),(0,n.A1)(499,"Request aborted");let b=(0,n.lR)(c,N,O,o.gx.BAD_GATEWAY);return console.log(`${h.lm.red}[ERROR] ${b}${h.lm.reset}`),(0,n.A1)(o.gx.BAD_GATEWAY,b)}if(H.status===o.gx.UNAUTHORIZED||H.status===o.gx.FORBIDDEN){let a=await (0,k.qZ)(()=>_.refreshCredentials(c,d),3,d);if(a?.accessToken||a?.copilotToken){d?.info?.("TOKEN",`${N.toUpperCase()} | refreshed`),Object.assign(c,a),z&&a&&await z(a);try{let a=await _.execute({model:O,body:Z,stream:X,credentials:c,signal:ab.signal,log:d});a.response.ok&&(H=a.response,I=a.url)}catch(a){d?.warn?.("TOKEN",`${N.toUpperCase()} | retry after refresh failed`)}}else d?.warn?.("TOKEN",`${N.toUpperCase()} | refresh failed`)}if(!H.ok){(0,q.uw)(O,N,D,!1);let{statusCode:b,message:c,retryAfterMs:e}=await (0,n.zL)(H,N);(0,q.E5)({model:O,provider:N,connectionId:D,status:`FAILED ${b}`}).catch(()=>{}),(0,q.gK)({method:"POST",path:C?.endpoint||"/v1/chat/completions",status:b,model:O,provider:N,connectionId:D,duration:Date.now()-P,requestBody:a,error:c,sourceFormat:S,targetFormat:W,comboName:G,apiKeyId:E?.id||null,apiKeyName:E?.name||null}).catch(()=>{});let f=(0,n.lR)(Error(c),N,O,b);if(console.log(`${h.lm.red}[ERROR] ${f}${h.lm.reset}`),e&&"antigravity"===N){let a=Math.ceil(e/1e3);d?.debug?.("RETRY",`Antigravity quota reset in ${a}s (${e}ms)`)}return Y.logError(Error(c),K||Z),(0,v.Kr)(N,D,H.headers,b,O),(0,n.A1)(b,f,e)}if(!X){let b;(0,q.uw)(O,N,D,!1);let c=(H.headers.get("content-type")||"").toLowerCase(),e=await H.text();if(c.includes("text/event-stream")||/(^|\n)\s*(event|data):/m.test(e)){let a=W===g.h.OPENAI_RESPONSES?(0,u.B)(e,O):(0,u.F)(e,O);if(!a)return(0,q.E5)({model:O,provider:N,connectionId:D,status:`FAILED ${o.gx.BAD_GATEWAY}`}).catch(()=>{}),(0,n.A1)(o.gx.BAD_GATEWAY,"Invalid SSE response for non-streaming request");b=a}else try{b=e?JSON.parse(e):{}}catch{return(0,q.E5)({model:O,provider:N,connectionId:D,status:`FAILED ${o.gx.BAD_GATEWAY}`}).catch(()=>{}),(0,n.A1)(o.gx.BAD_GATEWAY,"Invalid JSON response from provider")}A&&await A();let i=(0,t.M)(b,N);if((0,q.E5)({model:O,provider:N,connectionId:D,tokens:i,status:"200 OK"}).catch(()=>{}),(0,q.gK)({method:"POST",path:C?.endpoint||"/v1/chat/completions",status:200,model:O,provider:N,connectionId:D,duration:Date.now()-P,tokens:i,requestBody:a,responseBody:b,sourceFormat:S,targetFormat:W,comboName:G,apiKeyId:E?.id||null,apiKeyName:E?.name||null}).catch(()=>{}),i&&"object"==typeof i){let a=`[${new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit"})}] 📊 [USAGE] ${N.toUpperCase()} | in=${i?.prompt_tokens||0} | out=${i?.completion_tokens||0}${D?` | account=${D.slice(0,8)}...`:""}`;console.log(`${h.lm.green}${a}${h.lm.reset}`),(0,q.sZ)({provider:N||"unknown",model:O||"unknown",tokens:i,timestamp:new Date().toISOString(),connectionId:D||void 0,apiKeyId:E?.id||void 0,apiKeyName:E?.name||void 0}).catch(a=>{console.error("Failed to save usage stats:",a.message)})}let k=(0,f.nZ)(W,S)?(0,s.l)(b,W,S):b;if(k?.usage){let a=(0,j.O9)(k.usage);k.usage=(0,j.WL)(a,S)}else{let b=JSON.stringify(k?.choices?.[0]?.message?.content||"").length;if(b>0){let c=(0,j.OF)(a,b,S);k.usage=(0,j.WL)(c,S)}}if((0,w.TZ)(a,C?.headers)){let b=(0,w.gR)(O,a.messages,a.temperature,a.top_p),c=i?.prompt_tokens+i?.completion_tokens||0;(0,w.yv)(b,O,k,c),d?.debug?.("CACHE",`Stored response for ${O} (${c} tokens)`)}return(0,x.tm)(Q,k,200),{success:!0,response:new Response(JSON.stringify(k),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*","X-OmniRoute-Cache":"MISS"}})}}A&&await A();let ac={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","Access-Control-Allow-Origin":"*"},ad=({status:b,usage:c})=>{(0,q.gK)({method:"POST",path:C?.endpoint||"/v1/chat/completions",status:b||200,model:O,provider:N,connectionId:D,duration:Date.now()-P,tokens:c||{},requestBody:a,sourceFormat:S,targetFormat:W,comboName:G,apiKeyId:E?.id||null,apiKeyName:E?.name||null}).catch(()=>{})},ae=F?.toLowerCase().includes("droid")||F?.toLowerCase().includes("codex-cli");if("codex"!==N||W!==g.h.OPENAI_RESPONSES||S!==g.h.OPENAI||T||ae?(0,f.nZ)(W,S)?(d?.debug?.("STREAM",`Translation mode: ${W} → ${S}`),L=(0,h.i5)(W,S,N,Y,$,O,D,a,ad,E)):(d?.debug?.("STREAM","Standard passthrough mode"),L=(0,h.l2)(N,Y,O,D,a,ad,E)):(d?.debug?.("STREAM",`Codex translation mode: openai-responses → openai`),L=(0,h.i5)("openai-responses","openai",N,Y,$,O,D,a,ad,E)),(0,y.Z)(C?.headers)){let a=(0,y.Y)({signal:ab.signal});M=(0,i.Jb)(H,L,ab).pipeThrough(a),ac["X-OmniRoute-Progress"]="enabled"}else M=(0,i.Jb)(H,L,ab);return{success:!0,response:new Response(M,{headers:ac})}}r=(z.then?(await z)():z)[0],d()}catch(a){d(a)}})},38825:(a,b,c)=>{c.d(b,{$m:()=>g,mA:()=>f});var d=c(24352),e=c(66451);async function f(a){let b=(0,e.Xh)(a);if(!b.isAlias){if(b.provider===b.providerAlias){let a=(await (0,d.Fh)({type:"openai-compatible"})).find(a=>a.prefix===b.providerAlias);if(a)return{provider:a.id,model:b.model};let c=(await (0,d.Fh)({type:"anthropic-compatible"})).find(a=>a.prefix===b.providerAlias);if(c)return{provider:c.id,model:b.model}}return(0,e.js)(a,null)}return(0,e.js)(a,d.OM)}async function g(a){let b=await (0,d.Dj)(a);return b&&b.models&&b.models.length>0?b:null}},44594:(a,b,c)=>{c.d(b,{eU:()=>i,vN:()=>h});var d=c(26262),e=c(24352),f=c(85640);let g=f.oD;async function h(a,b){try{let c={};b.accessToken&&(c.accessToken=b.accessToken),b.refreshToken&&(c.refreshToken=b.refreshToken),b.expiresIn&&(c.expiresAt=new Date(Date.now()+1e3*b.expiresIn).toISOString(),c.expiresIn=b.expiresIn),b.providerSpecificData&&(c.providerSpecificData=b.providerSpecificData);let f=await (0,e.rj)(a,c);return d.info("TOKEN_REFRESH","Credentials updated in localDb",{connectionId:a,success:!!f}),!!f}catch(b){return d.error("TOKEN_REFRESH","Error updating credentials in localDb",{connectionId:a,error:b.message}),!1}}async function i(a,b){let c={...b};if(c.expiresAt){let b=new Date(c.expiresAt).getTime(),e=Date.now();if(b-e<g){let g;d.info("TOKEN_REFRESH","Token expiring soon, refreshing proactively",{provider:a,expiresIn:Math.round((b-e)/1e3)});let i=await (g=c,(0,f.iD)(a,g,d));i&&i.accessToken&&(await h(c.connectionId,i),c={...c,accessToken:i.accessToken,refreshToken:i.refreshToken||c.refreshToken,expiresAt:i.expiresIn?new Date(Date.now()+1e3*i.expiresIn).toISOString():c.expiresAt})}}if("github"===a&&c.providerSpecificData?.copilotTokenExpiresAt){let b=1e3*c.providerSpecificData.copilotTokenExpiresAt,e=Date.now();if(b-e<g){let g;d.info("TOKEN_REFRESH","Copilot token expiring soon, refreshing proactively",{provider:a,expiresIn:Math.round((b-e)/1e3)});let i=await (g=c.accessToken,(0,f.jR)(g,d));i&&(await h(c.connectionId,{providerSpecificData:{...c.providerSpecificData,copilotToken:i.token,copilotTokenExpiresAt:i.expiresAt}}),c.providerSpecificData={...c.providerSpecificData,copilotToken:i.token,copilotTokenExpiresAt:i.expiresAt})}}return c}},49894:(a,b,c)=>{function d(){return globalThis.__translatorEvents||(globalThis.__translatorEvents=[]),globalThis.__translatorEvents}function e(a){if(!a||"object"!=typeof a)return;let b=d();b.unshift({id:`evt_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,timestamp:new Date().toISOString(),...a}),b.length>200&&(b.length=200)}function f(a=50){let b=Number(a),c=Number.isFinite(b)&&b>0?Math.min(Math.floor(b),200):50,e=d();return{events:e.slice(0,c),total:e.length}}c.d(b,{MR:()=>e,zS:()=>f})},62269:(a,b,c)=>{c.d(b,{N3:()=>g,TT:()=>e,ci:()=>i});let d=["parse","validate","policy","resolve","connect","stream","finalize"];class e{constructor(a){this.requestId=a,this.startTime=Date.now(),this.phases=[],this._currentPhase=null,this._phaseStart=null}startPhase(a){this._currentPhase&&this.endPhase(),this._currentPhase=a,this._phaseStart=Date.now()}endPhase(a={}){if(!this._currentPhase)return;let b=Date.now();this.phases.push({phase:this._currentPhase,startMs:this._phaseStart-this.startTime,endMs:b-this.startTime,durationMs:b-this._phaseStart,...a}),this._currentPhase=null,this._phaseStart=null}async measure(a,b){this.startPhase(a);try{let a=await b();return this.endPhase(),a}catch(a){throw this.endPhase({error:a.message}),a}}getSummary(){return this._currentPhase&&this.endPhase(),{requestId:this.requestId,totalMs:Date.now()-this.startTime,phases:[...this.phases]}}}let f=[];function g(a){let b=a.getSummary();for(b.recordedAt=Date.now(),f.push(b);f.length>1e3;)f.shift()}function h(a,b){if(0===a.length)return 0;let c=Math.ceil(b/100*a.length)-1;return a[Math.max(0,c)]}function i(a=3e5){let b=Date.now()-a,c=f.filter(a=>(a.recordedAt||0)>=b);if(0===c.length)return{count:0,p50:0,p95:0,p99:0,phaseBreakdown:{}};let e=c.map(a=>a.totalMs).sort((a,b)=>a-b),g={};for(let a of d){let b=c.flatMap(b=>b.phases.filter(b=>b.phase===a).map(a=>a.durationMs)).sort((a,b)=>a-b);b.length>0&&(g[a]={count:b.length,p50:h(b,50),p95:h(b,95),avg:Math.round(b.reduce((a,b)=>a+b,0)/b.length)})}return{count:c.length,p50:h(e,50),p95:h(e,95),p99:h(e,99),phaseBreakdown:g}}},65390:(a,b,c)=>{let d;c.d(b,{X:()=>g,q:()=>f});var e=c(77598);class f{#a;#b;#c;#d;#e;constructor(a={}){this.#a=new Map,this.#d=0,this.#e={hits:0,misses:0,evictions:0},this.#b=a.maxSize??100,this.#c=a.defaultTTL??3e5}static generateKey(a){let b=JSON.stringify(a,Object.keys(a).sort());return e.createHash("sha256").update(b).digest("hex").slice(0,16)}get(a){let b=this.#a.get(a);if(!b)return void this.#e.misses++;if(Date.now()-b.createdAt>b.ttl){this.#a.delete(a),this.#d--,this.#e.misses++;return}return this.#a.delete(a),b.hits++,this.#a.set(a,b),this.#e.hits++,b.value}set(a,b,c){for(this.#a.has(a)&&(this.#a.delete(a),this.#d--);this.#d>=this.#b;){let a=this.#a.keys().next().value;this.#a.delete(a),this.#d--,this.#e.evictions++}let d={key:a,value:b,createdAt:Date.now(),ttl:c??this.#c,size:JSON.stringify(b).length,hits:0};this.#a.set(a,d),this.#d++}has(a){let b=this.#a.get(a);return!!b&&(!(Date.now()-b.createdAt>b.ttl)||(this.#a.delete(a),this.#d--,!1))}delete(a){return!!this.#a.has(a)&&(this.#a.delete(a),this.#d--,!0)}clear(){this.#a.clear(),this.#d=0}getStats(){let a=this.#e.hits+this.#e.misses;return{size:this.#d,maxSize:this.#b,...this.#e,hitRate:a>0?this.#e.hits/a*100:0}}}function g(a){return d||(d=new f({maxSize:parseInt(process.env.PROMPT_CACHE_MAX_SIZE||"200",10),defaultTTL:parseInt(process.env.PROMPT_CACHE_TTL_MS||"600000",10),...a})),d}},70718:(a,b,c)=>{c.d(b,{q:()=>m});let d="u">typeof process&&process.versions?.node&&!0,e="u">typeof process&&process.env?.ENABLE_REQUEST_LOGS==="true",f=null,g=null,h=null;async function i(){if(d&&e&&!f)try{f=await Promise.resolve().then(c.t.bind(c,29021,19)),h=(g=await Promise.resolve().then(c.t.bind(c,33873,19))).join("u">typeof process&&process.cwd?process.cwd():".","logs")}catch{}}async function j(a,b,c){if(await i(),!f||!h)return null;try{await f.promises.mkdir(h,{recursive:!0});let d=function(a=new Date){let b=a=>String(a).padStart(2,"0"),c=a.getFullYear(),d=b(a.getMonth()+1),e=b(a.getDate()),f=b(a.getHours()),g=b(a.getMinutes()),h=b(a.getSeconds());return`${c}${d}${e}_${f}${g}${h}`}(),e=(c||"unknown").replace(/[/:]/g,"-"),i=`${a}_${b}_${e}_${d}`,j=g.join(h,i);return await f.promises.mkdir(j,{recursive:!0}),j}catch(a){return console.log("[LOG] Failed to create log session:",a.message),null}}function k(a,b,c){if(!f||!a)return;let d=g.join(a,b);f.promises.writeFile(d,JSON.stringify(c,null,2)).catch(a=>console.log(`[LOG] Failed to write ${b}:`,a.message))}function l(a){if(!a)return{};let b={...a},c=["authorization","x-api-key","cookie","token"];for(let a of Object.keys(b)){let d=a.toLowerCase();if(c.some(a=>d.includes(a))){let c=b[a];c&&c.length>20&&(b[a]=c.slice(0,10)+"..."+c.slice(-5))}}return b}async function m(a,b,c){if(!e)return{sessionPath:null,logClientRawRequest(){},logRawRequest(){},logOpenAIRequest(){},logTargetRequest(){},logProviderResponse(){},appendProviderChunk(){},appendOpenAIChunk(){},logConvertedResponse(){},appendConvertedChunk(){},logError(){}};let d=await j(a,b,c);return{get sessionPath(){return d},logClientRawRequest(a,b,c={}){k(d,"1_req_client.json",{timestamp:new Date().toISOString(),endpoint:a,headers:l(c),body:b})},logRawRequest(a,b={}){k(d,"2_req_source.json",{timestamp:new Date().toISOString(),headers:l(b),body:a})},logOpenAIRequest(a){k(d,"3_req_openai.json",{timestamp:new Date().toISOString(),body:a})},logTargetRequest(a,b,c){k(d,"4_req_target.json",{timestamp:new Date().toISOString(),url:a,headers:l(b),body:c})},logProviderResponse(a,b,c,e){k(d,"5_res_provider.json",{timestamp:new Date().toISOString(),status:a,statusText:b,headers:c?"function"==typeof c.entries?Object.fromEntries(c.entries()):c:{},body:e})},appendProviderChunk(a){if(!f||!d)return;let b=g.join(d,"5_res_provider.txt");f.promises.appendFile(b,a).catch(()=>{})},appendOpenAIChunk(a){if(!f||!d)return;let b=g.join(d,"6_res_openai.txt");f.promises.appendFile(b,a).catch(()=>{})},logConvertedResponse(a){k(d,"7_res_client.json",{timestamp:new Date().toISOString(),body:a})},appendConvertedChunk(a){if(!f||!d)return;let b=g.join(d,"7_res_client.txt");f.promises.appendFile(b,a).catch(()=>{})},logError(a,b=null){k(d,"6_error.json",{timestamp:new Date().toISOString(),error:a?.message||String(a),stack:a?.stack,requestBody:b})}}}},77615:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{P:()=>A});var e=c(15040),f=c(38825),g=c(66451),h=c(17717),i=c(36362),j=c(89865),k=c(57968),l=c(97271),m=c(29485),n=c(89843),o=c(26262),p=c(44594),q=c(24352),r=c(35345),s=c(49894),t=c(35790),u=c(51228),v=c(13396),w=c(62269),x=c(77653),y=c(82182);c(25289);var z=a([i]);async function A(a,b=null){let c,d=(0,x.KZ)(),h=new w.TT(d);try{h.startPhase("parse"),c=await a.json(),h.endPhase()}catch{return o.warn("CHAT","Invalid JSON body"),(0,j.yj)(l.gx.BAD_REQUEST,"Invalid JSON body")}h.startPhase("validate");let i=(0,t.Jh)(c,o);if(i.blocked)return o.warn("SANITIZER","Request blocked due to prompt injection",{detections:i.detections}),(0,j.yj)(l.gx.BAD_REQUEST,"Request rejected: suspicious content detected");i.modified&&i.sanitizedBody&&(c=i.sanitizedBody),h.endPhase(),b||(b={endpoint:new URL(a.url).pathname,body:c,headers:Object.fromEntries(a.headers.entries())});let m=new URL(a.url),n=c.model,p=c.messages?.length||c.input?.length||0,r=c.tools?.length||0,s=c.reasoning_effort||c.reasoning?.effort||null;o.request("POST",`${m.pathname} | ${n} | ${p} msgs${r?` | ${r} tools`:""}${s?` | effort=${s}`:""}`);let u=a.headers.get("Authorization"),z=(0,e.Tr)(a),C=null;if(u&&z){let a=o.maskKey(z);o.debug("AUTH",`API Key: ${a}`);try{C=await (0,q.v9)(z)}catch{C=null}}else o.debug("AUTH","No API key provided (local mode)");if("true"===process.env.REQUIRE_API_KEY){if(!z)return o.warn("AUTH","Missing API key while REQUIRE_API_KEY=true"),(0,j.yj)(l.gx.UNAUTHORIZED,"Missing API key");if(!await (0,e.kI)(z))return o.warn("AUTH","Invalid API key while REQUIRE_API_KEY=true"),(0,j.yj)(l.gx.UNAUTHORIZED,"Invalid API key")}if(!n)return o.warn("CHAT","Missing model"),(0,j.yj)(l.gx.BAD_REQUEST,"Missing model");if(h.startPhase("policy"),C?.id)try{let a=(0,y.Ik)(C.id);if(!a.allowed)return o.warn("BUDGET",`API key ${C.id} exceeded budget: ${a.reason}`),(0,j.yj)(429,a.reason||"Budget limit exceeded")}catch{}h.endPhase(),h.startPhase("resolve");let D=await (0,f.$m)(n);if(D){o.info("CHAT",`Combo "${n}" [${D.strategy||"priority"}] with ${D.models.length} models`);let d=async a=>{let b=(0,g.Xh)(a),c=b.provider;if(!c)return!0;if(!(0,v.fj)(c,b.model||a))return o.debug("AVAILABILITY",`${c}/${b.model} in cooldown, skipping`),!1;let d=await (0,e.c1)(c);return!!d&&!d.allRateLimited},[f,i]=await Promise.all([(0,q.mt)().catch(()=>({})),(0,q.Uv)().catch(()=>[])]);h.endPhase();let j=await (0,k.Pr)({body:c,combo:D,handleSingleModel:(c,d)=>B(c,d,b,a,D.name,C,h),isModelAvailable:d,log:o,settings:f,allCombos:i});return(0,w.N3)(h),j}h.endPhase();let E=await B(c,n,b,a,null,C,h);return(0,w.N3)(h),E}async function B(a,b,c=null,d=null,g=null,k=null,q=null){let t=await (0,f.mA)(b);if(!t.provider){if("ambiguous_model"===t.errorType){let a=t.errorMessage||`Ambiguous model '${b}'. Use provider/model prefix (ex: gh/${b} or cc/${b}).`;return o.warn("CHAT",a,{model:b,candidates:t.candidateAliases||t.candidateProviders||[]}),(0,j.yj)(l.gx.BAD_REQUEST,a)}return o.warn("CHAT","Invalid model format",{model:b}),(0,j.yj)(l.gx.BAD_REQUEST,"Invalid model format")}let{provider:w,model:x}=t,z=(0,h.Tz)(a),A=m.PROVIDER_ID_TO_ALIAS[w]||w,D=(0,m.ux)(A,x)||(0,h.jJ)(w);if(b!==`${w}/${x}`?o.info("ROUTING",`${b} → ${w}/${x}`):o.info("ROUTING",`Provider: ${w}, Model: ${x}`),!(0,v.fj)(w,x))return o.warn("AVAILABILITY",`${w}/${x} is in cooldown, rejecting request`),(0,j.wO)(l.gx.SERVICE_UNAVAILABLE,`Model ${w}/${x} is temporarily unavailable (cooldown)`,30);let E=(0,u.getCircuitBreaker)(w,{failureThreshold:5,resetTimeout:3e4,onStateChange:(a,b,c)=>o.info("CIRCUIT",`${a}: ${b} → ${c}`)});if(!E.canExecute())return o.warn("CIRCUIT",`Circuit breaker OPEN for ${w}, rejecting request`),(0,j.wO)(l.gx.SERVICE_UNAVAILABLE,`Provider ${w} circuit breaker is open`,30);let F=d?.headers?.get("user-agent")||"",G=null,H=null,I=null;for(;;){let b,d=await (0,e.c1)(w,G);if(!d||d.allRateLimited)return function(a,b,c,d,e,f){if(a?.allRateLimited){let b=e||a.lastError||"Unavailable",g=f||Number(a.lastErrorCode)||l.gx.SERVICE_UNAVAILABLE;return o.warn("CHAT",`[${c}/${d}] ${b} (${a.retryAfterHuman})`),(0,j.wO)(g,`[${c}/${d}] ${b}`,a.retryAfter,a.retryAfterHuman)}return b?(o.warn("CHAT","No more accounts available",{provider:c}),(0,j.yj)(f||l.gx.SERVICE_UNAVAILABLE,e||"All accounts unavailable")):(o.error("AUTH",`No credentials for provider: ${c}`),(0,j.yj)(l.gx.BAD_REQUEST,`No credentials for provider: ${c}`))}(d,G,w,x,H,I);let f=d.connectionId.slice(0,8);o.info("AUTH",`Using ${w} account: ${f}...`);let h=await (0,p.eU)(w,d),m=await C(d.connectionId),t=Date.now();q&&q.startPhase("connect");try{b=await E.execute(()=>(0,n.j)(m?.proxy||null,()=>(0,i.w)({body:{...a,model:`${w}/${x}`},modelInfo:{provider:w,model:x},credentials:h,log:o,clientRawRequest:c,connectionId:d.connectionId,apiKeyInfo:k,userAgent:F,comboName:g,onCredentialsRefreshed:async a=>{await (0,p.vN)(d.connectionId,{accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData,testStatus:"active"})},onRequestSuccess:async()=>{await (0,e.Pt)(d.connectionId,d)}})))}catch(a){if(a instanceof u.ez)return o.warn("CIRCUIT",`${w} circuit open during retry: ${a.message}`),(0,j.wO)(l.gx.SERVICE_UNAVAILABLE,`Provider ${w} circuit breaker is open`,Math.ceil(a.retryAfterMs/1e3));throw a}q&&q.endPhase();let A=Date.now()-t;if(function({result:a,proxyInfo:b,proxyLatency:c,provider:d,model:e,sourceFormat:f,targetFormat:g,credentials:h,comboName:i,clientRawRequest:j}){try{(0,r.pq)({status:a.success?"success":408===a.status||504===a.status?"timeout":"error",proxy:b?.proxy||null,level:b?.level||"direct",levelId:b?.levelId||null,provider:d,targetUrl:`${d}/${e}`,latencyMs:c,error:a.success?null:a.error||null,connectionId:h.connectionId,comboId:i||null,account:h.connectionId?.slice(0,8)||null})}catch{}try{(0,s.MR)({provider:d,model:e,sourceFormat:f,targetFormat:g,status:a.success?"success":"error",statusCode:a.success?200:a.status||500,latency:c,endpoint:j?.endpoint||"/v1/chat/completions",connectionId:h.connectionId||null,comboName:i||null})}catch{}}({result:b,proxyInfo:m,proxyLatency:A,provider:w,model:x,sourceFormat:z,targetFormat:D,credentials:d,comboName:g,clientRawRequest:c}),b.success){if(k?.id)try{let a=b.usage||{},c=((a.prompt_tokens||0)+(a.completion_tokens||0))*1e-6;c>0&&(0,y.n5)(k.id,c)}catch{}return q&&q.startPhase("finalize"),q&&q.endPhase(),b.response}(429===b.status||503===b.status)&&((0,v.gC)(w,x,6e4,`HTTP ${b.status}`),o.info("AVAILABILITY",`${w}/${x} marked unavailable for 60s (HTTP ${b.status})`));let{shouldFallback:B}=await (0,e.vk)(d.connectionId,b.status,b.error,w);if(B){o.warn("AUTH",`Account ${f}... unavailable (${b.status}), trying fallback`),G=d.connectionId,H=b.error,I=b.status;continue}return b.response}}async function C(a){try{return await (0,q.YD)(a)}catch(a){return o.debug("PROXY",`Failed to resolve proxy: ${a.message}`),null}}i=(z.then?(await z)():z)[0],d()}catch(a){d(a)}})},77653:(a,b,c)=>{c.d(b,{KZ:()=>f});var d=c(16698),e=c(77598);function f(){return(0,e.randomUUID)()}new d.AsyncLocalStorage},79498:(a,b,c)=>{function d({intervalMs:a=2e3,signal:b}={}){let c,e,f=0,g=Date.now(),h=new TextEncoder;return new TransformStream({start(d){e=d,g=Date.now(),c=setInterval(()=>{if(b?.aborted)return void clearInterval(c);let a=`event: progress
2
+ data: ${JSON.stringify({tokens_generated:f,elapsed_ms:Date.now()-g})}
3
+
4
+ `;try{d.enqueue(h.encode(a))}catch{clearInterval(c)}},a),b?.addEventListener("abort",()=>{clearInterval(c)},{once:!0})},transform(a,b){let c=("string"==typeof a?a:new TextDecoder().decode(a)).split("\n").filter(a=>a.startsWith("data: "));f+=c.length,b.enqueue(a)},flush(){if(clearInterval(c),e)try{let a=`event: progress
5
+ data: ${JSON.stringify({tokens_generated:f,elapsed_ms:Date.now()-g,done:!0})}
6
+
7
+ `;e.enqueue(h.encode(a))}catch{}}})}function e(a){return!!a&&"true"===("function"==typeof a.get?b=>a.get(b):b=>a[b])("x-omniroute-progress")}c.d(b,{Y:()=>d,Z:()=>e})},81983:(a,b,c)=>{let d;c.d(b,{Cb:()=>k,IL:()=>n,QS:()=>o,RE:()=>m,TZ:()=>p,gR:()=>j,yv:()=>l});var e=c(77598),f=c(65390),g=c(14469);let h={hits:0,misses:0,tokensSaved:0};function i(){return d||(d=new f.q({maxSize:parseInt(process.env.SEMANTIC_CACHE_MAX_SIZE||"500",10),defaultTTL:parseInt(process.env.SEMANTIC_CACHE_TTL_MS||"3600000",10)})),d}function j(a,b,c=0,d=1){var f;let g=JSON.stringify({model:a,messages:Array.isArray(f=b)?f.map(a=>({role:a.role||"user",content:"string"==typeof a.content?a.content:JSON.stringify(a.content)})):[],temperature:c,top_p:d});return e.createHash("sha256").update(g).digest("hex")}function k(a){let b=i().get(a);if(b)return h.hits++,h.tokensSaved+=b.tokensSaved||0,b.response;try{let b=(0,g.sm)(),c=b.prepare("SELECT response, tokens_saved FROM semantic_cache WHERE signature = ? AND expires_at > datetime('now')").get(a);if(c){let d=JSON.parse(c.response);return i().set(a,{response:d,tokensSaved:c.tokens_saved}),b.prepare("UPDATE semantic_cache SET hit_count = hit_count + 1 WHERE signature = ?").run(a),h.hits++,h.tokensSaved+=c.tokens_saved||0,d}}catch{}return h.misses++,null}function l(a,b,c,d=0,f=36e5){let h=parseInt(process.env.SEMANTIC_CACHE_TTL_MS||String(f),10);i().set(a,{response:c,tokensSaved:d},h);try{let f=(0,g.sm)(),i=e.randomUUID(),j=a.slice(0,16),k=new Date().toISOString(),l=new Date(Date.now()+h).toISOString();f.prepare(`INSERT OR REPLACE INTO semantic_cache (id, signature, model, prompt_hash, response, tokens_saved, hit_count, created_at, expires_at)
8
+ VALUES (?, ?, ?, ?, ?, ?, 0, ?, ?)`).run(i,a,b,j,JSON.stringify(c),d,k,l)}catch{}}function m(){try{return(0,g.sm)().prepare("DELETE FROM semantic_cache WHERE expires_at <= datetime('now')").run().changes}catch{return 0}}function n(){i().clear();try{(0,g.sm)().prepare("DELETE FROM semantic_cache").run()}catch{}h={hits:0,misses:0,tokensSaved:0}}function o(){let a=i().getStats(),b=0;try{let a=(0,g.sm)().prepare("SELECT COUNT(*) as count FROM semantic_cache WHERE expires_at > datetime('now')").get();b=a?.count||0}catch{}let c=h.hits+h.misses;return{memoryEntries:a.size,dbEntries:b,hits:h.hits,misses:h.misses,hitRate:c>0?(h.hits/c*100).toFixed(1):"0.0",tokensSaved:h.tokensSaved}}function p(a,b){return b?.get?.("x-omniroute-no-cache")!=="true"&&!1===a.stream&&(a.temperature??0)===0}},82182:(a,b,c)=>{c.d(b,{Ik:()=>i,n5:()=>h,qV:()=>f,uN:()=>j});var d=c(8809);let e=new Map;function f(a,b){let c={dailyLimitUsd:b.dailyLimitUsd,monthlyLimitUsd:b.monthlyLimitUsd||0,warningThreshold:b.warningThreshold??.8};e.set(a,c);try{(0,d.zd)(a,c)}catch{}}function g(a){if(e.has(a))return e.get(a);try{let b=(0,d.io)(a);if(b)return e.set(a,b),b}catch{}return null}function h(a,b){let c=Date.now();try{(0,d.tv)(a,b,c)}catch{}}function i(a,b=0){let c=g(a);if(!c)return{allowed:!0,dailyUsed:0,dailyLimit:0,warningReached:!1};let e=function(a){let b=new Date;b.setHours(0,0,0,0);let c=b.getTime();try{return(0,d.qA)(a,c).reduce((a,b)=>a+b.cost,0)}catch{return 0}}(a),f=e+b,h=f>=c.dailyLimitUsd*c.warningThreshold;return f>c.dailyLimitUsd?{allowed:!1,reason:`Daily budget exceeded: $${f.toFixed(4)} / $${c.dailyLimitUsd.toFixed(2)}`,dailyUsed:e,dailyLimit:c.dailyLimitUsd,warningReached:!0}:{allowed:!0,dailyUsed:e,dailyLimit:c.dailyLimitUsd,warningReached:h}}function j(a){let b=new Date,c=new Date(b);c.setHours(0,0,0,0);let e=new Date(b.getFullYear(),b.getMonth(),1);try{let b=(0,d.qA)(a,c.getTime()),f=(0,d.qA)(a,e.getTime()),h=b.reduce((a,b)=>a+b.cost,0),i=f.reduce((a,b)=>a+b.cost,0);return{dailyTotal:h,monthlyTotal:i,totalEntries:f.length,budget:g(a)}}catch{return{dailyTotal:0,monthlyTotal:0,totalEntries:0,budget:g(a)}}}},87290:(a,b,c)=>{c.d(b,{M:()=>d});function d(a,b){if(!a||"object"!=typeof a)return null;if(a.usage&&"object"==typeof a.usage&&void 0!==a.usage.prompt_tokens)return{prompt_tokens:a.usage.prompt_tokens||0,completion_tokens:a.usage.completion_tokens||0,cached_tokens:a.usage.prompt_tokens_details?.cached_tokens,reasoning_tokens:a.usage.completion_tokens_details?.reasoning_tokens};let c=a.response?.usage||a.usage;return c&&"object"==typeof c&&(void 0!==c.input_tokens||void 0!==c.output_tokens)?{prompt_tokens:c.input_tokens||0,completion_tokens:c.output_tokens||0,cached_tokens:c.cache_read_input_tokens,cache_creation_input_tokens:c.cache_creation_input_tokens,reasoning_tokens:c.reasoning_tokens||c.output_tokens_details?.reasoning_tokens}:a.usage&&"object"==typeof a.usage&&(void 0!==a.usage.input_tokens||void 0!==a.usage.output_tokens)?{prompt_tokens:a.usage.input_tokens||0,completion_tokens:a.usage.output_tokens||0,cache_read_input_tokens:a.usage.cache_read_input_tokens,cache_creation_input_tokens:a.usage.cache_creation_input_tokens}:a.usageMetadata&&"object"==typeof a.usageMetadata?{prompt_tokens:a.usageMetadata.promptTokenCount||0,completion_tokens:a.usageMetadata.candidatesTokenCount||0,reasoning_tokens:a.usageMetadata.thoughtsTokenCount}:null}},89843:(a,b,c)=>{c.d(b,{j:()=>k});var d=c(16698),e=c(13618);let f="u">typeof caches&&"object"==typeof caches,g=Symbol.for("omniroute.proxyFetch.state"),h=(globalThis[g]||(globalThis[g]={originalFetch:globalThis.fetch,proxyContext:new d.AsyncLocalStorage,isPatched:!1}),globalThis[g]),i=h.originalFetch,j=h.proxyContext;async function k(a,b){if("function"!=typeof b)throw TypeError("runWithProxyContext requires a callback function");let c=a?(0,e.HN)(a):null;return j.run(a||null,async()=>(c&&console.log(`[ProxyFetch] Applied request proxy context: ${(0,e.OK)(c)}`),b()))}async function l(a,b={}){let c;if(b?.dispatcher)return i(a,b);let d="string"==typeof a?a:a&&"string"==typeof a.url?a.url:String(a);try{c=function(a){let b=j.getStore();if(b)return{source:"context",proxyUrl:(0,e.HN)(b)};let c=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(":");return(!c||c===e)&&!!b&&(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,e.zP)(c,"environment proxy"):null}(a);return c?{source:"env",proxyUrl:c}:{source:"direct",proxyUrl:null}}(d)}catch(b){let a=b instanceof Error?b.message:String(b);throw console.error(`[ProxyFetch] Proxy configuration error: ${a}`),b}let{source:f,proxyUrl:g}=c;if(!g)return i(a,b);try{let c=(0,e.I_)(g);return await i(a,{...b,dispatcher:c})}catch(b){let a=b instanceof Error?b.message:String(b);throw console.error(`[ProxyFetch] Proxy request failed (${f}, fail-closed): ${a}`),b}}f||h.isPatched||(globalThis.fetch=l,h.isPatched=!0)},90859:(a,b,c)=>{c.d(b,{lm:()=>g.lm,l2:()=>p,i5:()=>o,v8:()=>j});var d=c(25970),e=c(19956),f=c(74832),g=c(67677);function h(a){if(!a)return null;let b=a.trimStart();if(!b||100!==b.charCodeAt(0))return null;let c=b.slice(5).trim();if("[DONE]"===c)return{done:!0};try{return JSON.parse(c)}catch(a){return c.length>0&&console.log(`[WARN] Failed to parse SSE line (${c.length} chars): ${c.substring(0,200)}...`),null}}function i(a,b){if(b===e.h.OPENAI&&a.choices?.[0]?.delta){let b=a.choices[0].delta;return b.content&&""!==b.content||b.reasoning_content&&""!==b.reasoning_content||b.tool_calls&&b.tool_calls.length>0||a.choices[0].finish_reason||b.role}if(b===e.h.CLAUDE){let b="content_block_delta"===a.type,c=a.delta?.text&&""!==a.delta.text,d=a.delta?.thinking&&""!==a.delta.thinking,e=a.delta?.partial_json&&""!==a.delta.partial_json;return!b||!!c||!!d||!!e}if(b===e.h.GEMINI&&a.candidates?.[0]){let b=a.candidates[0];if(b.finishReason)return!0;let c=b.content?.parts;return!!c&&0!==c.length&&c.some(a=>a.text&&""!==a.text||a.functionCall||a.executableCode)}return!0}function j(a,b){return null==a?"data: null\n\n":a&&a.done?"data: [DONE]\n\n":a&&a.event&&a.data?`event: ${a.event}
2
9
  data: ${JSON.stringify(a.data)}
3
10
 
4
11
  `:(a=function(a){if(a?.usage&&"object"==typeof a.usage&&null===a.usage.perf_metrics){let{perf_metrics:b,...c}=a.usage;return{...a,usage:c}}return a}(a),b===e.h.CLAUDE&&a&&a.type)?`event: ${a.type}
@@ -9,4 +16,4 @@ data: ${JSON.stringify(a)}
9
16
  `}var k=c(97271);let l="translate",m="passthrough";function n(a={}){let{mode:b=l,targetFormat:c,sourceFormat:o,provider:p=null,reqLogger:q=null,toolNameMap:r=null,model:s=null,connectionId:t=null,apiKeyInfo:u=null,body:v=null,onComplete:w=null}=a,x="",y=null,z=b===l?{...(0,d.Ws)(o),provider:p,toolNameMap:r}:null,A=0,B=!1,C=new TextDecoder,D=new TextEncoder,E=Date.now(),F=null,G=!1;return new TransformStream({start(a){k.TH>0&&(F=setInterval(()=>{if(!G&&Date.now()-E>k.TH){G=!0,clearInterval(F),F=null;let b=`[STREAM] Idle timeout: no data from ${p||"provider"} for ${k.TH}ms (model: ${s||"unknown"})`;console.warn(b),(0,f.uw)(s,p,t,!1),(0,f.E5)({model:s,provider:p,connectionId:t,status:`FAILED ${k.gx.GATEWAY_TIMEOUT}`}).catch(()=>{});let c=Error(b);c.name="StreamIdleTimeoutError",a.error(c)}},1e4))},transform(a,f){if(G)return;E=Date.now();let k=C.decode(a,{stream:!0});x+=k,q?.appendProviderChunk?.(k);let l=x.split("\n");for(let a of(x=l.pop()||"",l)){let k=a.trim();if(b===m){let b,c=!1;if(k.startsWith("data:")&&"[DONE]"!==k.slice(5).trim())try{let a=JSON.parse(k.slice(5).trim()),d=function(a){if(a.id&&("chat"===a.id||"completion"===a.id||a.id.length<8)){let b=a.extend_fields?.requestId||a.extend_fields?.traceId||Date.now().toString(36);return a.id=`chatcmpl-${b}`,!0}return!1}(a);if(!i(a,e.h.OPENAI))continue;let f=a.choices?.[0]?.delta,h=f?.content||f?.reasoning_content;h&&"string"==typeof h&&(A+=h.length);let j=(0,g.f5)(a);j&&(y=j);let l=a.choices?.[0]?.finish_reason;if(l&&!(0,g.Gh)(a.usage)){let d=(0,g.OF)(v,A,e.h.OPENAI);a.usage=(0,g.WL)(d,e.h.OPENAI),b=`data: ${JSON.stringify(a)}
10
17
  `,y=d,c=!0}else if(l&&y){let d=(0,g.O9)(y);a.usage=(0,g.WL)(d,e.h.OPENAI),b=`data: ${JSON.stringify(a)}
11
18
  `,c=!0}else d&&(b=`data: ${JSON.stringify(a)}
12
- `,c=!0)}catch{}c||(b=a.startsWith("data:")&&!a.startsWith("data: ")?"data: "+a.slice(5)+"\n":a+"\n"),q?.appendConvertedChunk?.(b),f.enqueue(D.encode(b));continue}if(!k)continue;let l=h(k);if(!l)continue;if(l&&l.done){if(!B){B=!0;let a="data: [DONE]\n\n";q?.appendConvertedChunk?.(a),f.enqueue(D.encode(a))}continue}if(l.delta?.text&&(A+=l.delta.text.length),l.delta?.thinking&&(A+=l.delta.thinking.length),l.choices?.[0]?.delta?.content&&(A+=l.choices[0].delta.content.length),l.choices?.[0]?.delta?.reasoning_content&&(A+=l.choices[0].delta.reasoning_content.length),l.candidates?.[0]?.content?.parts)for(let a of l.candidates[0].content.parts)a.text&&"string"==typeof a.text&&(A+=a.text.length);let n=(0,g.f5)(l);n&&(z.usage=n);let p=(0,d.Y8)(c,o,l,z);if(p?._openaiIntermediate)for(let a of p._openaiIntermediate){let b=j(a,e.h.OPENAI);q?.appendOpenAIChunk?.(b)}if(p?.length>0)for(let a of p){if(!i(a,o))continue;let b="message_delta"===a.type||a.choices?.[0]?.finish_reason;if(z.finishReason&&b&&!(0,g.Gh)(a.usage)&&A>0){let b=(0,g.OF)(v,A,o);a.usage=(0,g.WL)(b,o),z.usage=b}else if(z.finishReason&&b&&z.usage){let b=(0,g.O9)(z.usage);a.usage=(0,g.WL)(b,o)}let c=j(a,o);q?.appendConvertedChunk?.(c),f.enqueue(D.encode(c))}}},flush(a){if(F&&(clearInterval(F),F=null),!G){(0,f.uw)(s,p,t,!1);try{let i=C.decode();if(i&&(x+=i),b===m){if(x){let b=x;x.startsWith("data:")&&!x.startsWith("data: ")&&(b="data: "+x.slice(5)),q?.appendConvertedChunk?.(b),a.enqueue(D.encode(b))}if(!(0,g.Gh)(y)&&A>0&&(y=(0,g.OF)(v,A,e.h.OPENAI)),(0,g.Gh)(y)?(0,g.IF)(p,y,s,t,u):(0,f.E5)({model:s,provider:p,connectionId:t,tokens:null,status:"200 OK"}).catch(()=>{}),w)try{w({status:200,usage:y})}catch{}return}if(x.trim()){let b=h(x.trim());if(b&&!b.done){let f=(0,d.Y8)(c,o,b,z);if(f?._openaiIntermediate)for(let a of f._openaiIntermediate){let b=j(a,e.h.OPENAI);q?.appendOpenAIChunk?.(b)}if(f?.length>0)for(let b of f){let c=j(b,o);q?.appendConvertedChunk?.(c),a.enqueue(D.encode(c))}}}let k=(0,d.Y8)(c,o,null,z);if(k?._openaiIntermediate)for(let a of k._openaiIntermediate){let b=j(a,e.h.OPENAI);q?.appendOpenAIChunk?.(b)}if(k?.length>0)for(let b of k){let c=j(b,o);q?.appendConvertedChunk?.(c),a.enqueue(D.encode(c))}if(!B){B=!0;let b="data: [DONE]\n\n";q?.appendConvertedChunk?.(b),a.enqueue(D.encode(b))}if(!(0,g.Gh)(z?.usage)&&A>0&&(z.usage=(0,g.OF)(v,A,o)),(0,g.Gh)(z?.usage)?(0,g.IF)(z.provider||c,z.usage,s,t,u):(0,f.E5)({model:s,provider:p,connectionId:t,tokens:null,status:"200 OK"}).catch(()=>{}),w)try{w({status:200,usage:z?.usage})}catch{}}catch(a){console.log(`[STREAM] Error in flush (${s||"unknown"}):`,a.message||a)}}}},{highWaterMark:16},{highWaterMark:16})}function o(a,b,c=null,d=null,e=null,f=null,g=null,h=null,i=null,j=null){return n({mode:l,targetFormat:a,sourceFormat:b,provider:c,reqLogger:d,toolNameMap:e,model:f,connectionId:g,apiKeyInfo:j,body:h,onComplete:i})}function p(a=null,b=null,c=null,d=null,e=null,f=null,g=null){return n({mode:m,provider:a,reqLogger:b,model:c,connectionId:d,apiKeyInfo:g,body:e,onComplete:f})}}};
19
+ `,c=!0)}catch{}c||(b=a.startsWith("data:")&&!a.startsWith("data: ")?"data: "+a.slice(5)+"\n":a+"\n"),q?.appendConvertedChunk?.(b),f.enqueue(D.encode(b));continue}if(!k)continue;let l=h(k);if(!l)continue;if(l&&l.done){if(!B){B=!0;let a="data: [DONE]\n\n";q?.appendConvertedChunk?.(a),f.enqueue(D.encode(a))}continue}if(l.delta?.text&&(A+=l.delta.text.length),l.delta?.thinking&&(A+=l.delta.thinking.length),l.choices?.[0]?.delta?.content&&(A+=l.choices[0].delta.content.length),l.choices?.[0]?.delta?.reasoning_content&&(A+=l.choices[0].delta.reasoning_content.length),l.candidates?.[0]?.content?.parts)for(let a of l.candidates[0].content.parts)a.text&&"string"==typeof a.text&&(A+=a.text.length);let n=(0,g.f5)(l);n&&(z.usage=n);let p=(0,d.Y8)(c,o,l,z);if(p?._openaiIntermediate)for(let a of p._openaiIntermediate){let b=j(a,e.h.OPENAI);q?.appendOpenAIChunk?.(b)}if(p?.length>0)for(let a of p){if(!i(a,o))continue;let b="message_delta"===a.type||a.choices?.[0]?.finish_reason;if(z.finishReason&&b&&!(0,g.Gh)(a.usage)&&A>0){let b=(0,g.OF)(v,A,o);a.usage=(0,g.WL)(b,o),z.usage=b}else if(z.finishReason&&b&&z.usage){let b=(0,g.O9)(z.usage);a.usage=(0,g.WL)(b,o)}let c=j(a,o);q?.appendConvertedChunk?.(c),f.enqueue(D.encode(c))}}},flush(a){if(F&&(clearInterval(F),F=null),!G){(0,f.uw)(s,p,t,!1);try{let i=C.decode();if(i&&(x+=i),b===m){if(x){let b=x;x.startsWith("data:")&&!x.startsWith("data: ")&&(b="data: "+x.slice(5)),q?.appendConvertedChunk?.(b),a.enqueue(D.encode(b))}if(!(0,g.Gh)(y)&&A>0&&(y=(0,g.OF)(v,A,e.h.OPENAI)),(0,g.Gh)(y)?(0,g.IF)(p,y,s,t,u):(0,f.E5)({model:s,provider:p,connectionId:t,tokens:null,status:"200 OK"}).catch(()=>{}),w)try{w({status:200,usage:y})}catch{}return}if(x.trim()){let b=h(x.trim());if(b&&!b.done){let f=(0,d.Y8)(c,o,b,z);if(f?._openaiIntermediate)for(let a of f._openaiIntermediate){let b=j(a,e.h.OPENAI);q?.appendOpenAIChunk?.(b)}if(f?.length>0)for(let b of f){let c=j(b,o);q?.appendConvertedChunk?.(c),a.enqueue(D.encode(c))}}}let k=(0,d.Y8)(c,o,null,z);if(k?._openaiIntermediate)for(let a of k._openaiIntermediate){let b=j(a,e.h.OPENAI);q?.appendOpenAIChunk?.(b)}if(k?.length>0)for(let b of k){let c=j(b,o);q?.appendConvertedChunk?.(c),a.enqueue(D.encode(c))}if(!B){B=!0;let b="data: [DONE]\n\n";q?.appendConvertedChunk?.(b),a.enqueue(D.encode(b))}if(!(0,g.Gh)(z?.usage)&&A>0&&(z.usage=(0,g.OF)(v,A,o)),(0,g.Gh)(z?.usage)?(0,g.IF)(z.provider||c,z.usage,s,t,u):(0,f.E5)({model:s,provider:p,connectionId:t,tokens:null,status:"200 OK"}).catch(()=>{}),w)try{w({status:200,usage:z?.usage})}catch{}}catch(a){console.log(`[STREAM] Error in flush (${s||"unknown"}):`,a.message||a)}}}},{highWaterMark:16},{highWaterMark:16})}function o(a,b,c=null,d=null,e=null,f=null,g=null,h=null,i=null,j=null){return n({mode:l,targetFormat:a,sourceFormat:b,provider:c,reqLogger:d,toolNameMap:e,model:f,connectionId:g,apiKeyInfo:j,body:h,onComplete:i})}function p(a=null,b=null,c=null,d=null,e=null,f=null,g=null){return n({mode:m,provider:a,reqLogger:b,model:c,connectionId:d,apiKeyInfo:g,body:e,onComplete:f})}},91563:(a,b,c)=>{let d;c.d(b,{ic:()=>g,ne:()=>i,tm:()=>h,xp:()=>f});let e=new Map;function f(a){if(!a)return null;let b="function"==typeof a.get?b=>a.get(b):b=>a[b];return b("idempotency-key")||b("x-request-id")||null}function g(a){if(!a)return null;let b=e.get(a);return b?Date.now()>=b.expiresAt?(e.delete(a),null):{response:b.response,status:b.status}:null}function h(a,b,c,f=5e3){a&&(!d&&(d=setInterval(()=>{let a=Date.now();for(let[b,c]of e)a>=c.expiresAt&&e.delete(b)},3e4)).unref&&d.unref(),e.set(a,{response:b,status:c,expiresAt:Date.now()+f}))}function i(){return{activeKeys:e.size,windowMs:5e3}}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=7763,exports.ids=[7763],exports.modules={27763:(a,b,c)=>{c.d(b,{generateApiKeyWithMachine:()=>f});var d=c(55511);process.env.API_KEY_SECRET||console.error("[SECURITY] API_KEY_SECRET is not set. API key CRC will be insecure.");let e=process.env.API_KEY_SECRET;function f(a){let b=function(){let a="abcdefghijklmnopqrstuvwxyz0123456789",b="";for(let c=0;c<6;c++)b+=a.charAt(Math.floor(Math.random()*a.length));return b}(),c=d.createHmac("sha256",e).update(a+b).digest("hex").slice(0,8);return{key:`sk-${a}-${b}-${c}`,keyId:b}}}};
@@ -0,0 +1 @@
1
+ exports.id=7802,exports.ids=[7136,7271,7802],exports.modules={19225:(a,b,c)=>{"use strict";a.exports=c(44870)},50122:(a,b,c)=>{"use strict";c.d(b,{k:()=>e});let d=[];for(let a=0;a<256;++a)d.push((a+256).toString(16).slice(1));function e(a,b=0){return(d[a[b+0]]+d[a[b+1]]+d[a[b+2]]+d[a[b+3]]+"-"+d[a[b+4]]+d[a[b+5]]+"-"+d[a[b+6]]+d[a[b+7]]+"-"+d[a[b+8]]+d[a[b+9]]+"-"+d[a[b+10]]+d[a[b+11]]+d[a[b+12]]+d[a[b+13]]+d[a[b+14]]+d[a[b+15]]).toLowerCase()}},62402:(a,b,c)=>{"use strict";c.d(b,{Lb:()=>e,QG:()=>f,zD:()=>g});let d={nebius:{id:"nebius",baseUrl:"https://api.tokenfactory.nebius.com/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"Qwen/Qwen3-Embedding-8B",name:"Qwen3 Embedding 8B",dimensions:4096}]},openai:{id:"openai",baseUrl:"https://api.openai.com/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"text-embedding-3-small",name:"Text Embedding 3 Small",dimensions:1536},{id:"text-embedding-3-large",name:"Text Embedding 3 Large",dimensions:3072},{id:"text-embedding-ada-002",name:"Text Embedding Ada 002",dimensions:1536}]},mistral:{id:"mistral",baseUrl:"https://api.mistral.ai/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"mistral-embed",name:"Mistral Embed",dimensions:1024}]},together:{id:"together",baseUrl:"https://api.together.xyz/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"BAAI/bge-large-en-v1.5",name:"BGE Large EN v1.5",dimensions:1024},{id:"togethercomputer/m2-bert-80M-8k-retrieval",name:"M2 BERT 80M 8K",dimensions:768}]},fireworks:{id:"fireworks",baseUrl:"https://api.fireworks.ai/inference/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"nomic-ai/nomic-embed-text-v1.5",name:"Nomic Embed Text v1.5",dimensions:768}]},nvidia:{id:"nvidia",baseUrl:"https://integrate.api.nvidia.com/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"nvidia/nv-embedqa-e5-v5",name:"NV EmbedQA E5 v5",dimensions:1024}]}};function e(a){return d[a]||null}function f(a){if(!a)return{provider:null,model:null};let b=a.indexOf("/");if(b>0){for(let[b,c]of Object.entries(d))if(a.startsWith(b+"/"))return{provider:b,model:a.slice(b.length+1)};return{provider:a.slice(0,b),model:a.slice(b+1)}}for(let[b,c]of Object.entries(d))if(c.models.some(b=>b.id===a))return{provider:b,model:a};return{provider:null,model:a}}function g(){let a=[];for(let[b,c]of Object.entries(d))for(let d of c.models)a.push({id:`${b}/${d.id}`,name:d.name,provider:b,dimensions:d.dimensions});return a}},77825:(a,b,c)=>{"use strict";c.d(b,{Q:()=>f});var d=c(62402),e=c(74832);async function f({body:a,credentials:b,log:c}){let{provider:f,model:g}=(0,d.QG)(a.model),h=Date.now(),i={model:a.model,input_count:Array.isArray(a.input)?a.input.length:1,dimensions:a.dimensions||void 0};if(!f)return{success:!1,status:400,error:`Invalid embedding model: ${a.model}. Use format: provider/model`};let j=(0,d.Lb)(f);if(!j)return{success:!1,status:400,error:`Unknown embedding provider: ${f}`};let k={model:g,input:a.input};void 0!==a.dimensions&&(k.dimensions=a.dimensions),void 0!==a.encoding_format&&(k.encoding_format=a.encoding_format);let l={"Content-Type":"application/json"},m=b.apiKey||b.accessToken;"bearer"===j.authHeader?l.Authorization=`Bearer ${m}`:"x-api-key"===j.authHeader&&(l["x-api-key"]=m),c&&c.info("EMBED",`${f}/${g} | input: ${Array.isArray(a.input)?a.input.length+" items":"1 item"}`);try{let a=await fetch(j.baseUrl,{method:"POST",headers:l,body:JSON.stringify(k)});if(!a.ok){let b=await a.text();return c&&c.error("EMBED",`${f} error ${a.status}: ${b.slice(0,200)}`),(0,e.gK)({method:"POST",path:"/v1/embeddings",status:a.status,model:`${f}/${g}`,provider:f,duration:Date.now()-h,error:b.slice(0,500),requestBody:i}).catch(()=>{}),{success:!1,status:a.status,error:b}}let b=await a.json();return(0,e.gK)({method:"POST",path:"/v1/embeddings",status:200,model:`${f}/${g}`,provider:f,duration:Date.now()-h,tokens:{prompt_tokens:b.usage?.prompt_tokens||b.usage?.total_tokens||0,completion_tokens:0},requestBody:i,responseBody:{usage:b.usage||null,object:"list",data_count:b.data?.length||0}}).catch(()=>{}),{success:!0,data:{object:"list",data:b.data||b,model:`${f}/${g}`,usage:b.usage||{prompt_tokens:0,total_tokens:0}}}}catch(a){return c&&c.error("EMBED",`${f} fetch error: ${a.message}`),(0,e.gK)({method:"POST",path:"/v1/embeddings",status:502,model:`${f}/${g}`,provider:f,duration:Date.now()-h,error:a.message,requestBody:i}).catch(()=>{}),{success:!1,status:502,error:`Embedding provider error: ${a.message}`}}}},78335:()=>{},92280:(a,b,c)=>{"use strict";Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(28208),e=c(47617),f=c(62018);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}},94755:(a,b,c)=>{"use strict";c.d(b,{A:()=>i});var d=c(77598);let e={randomUUID:d.randomUUID},f=new Uint8Array(256),g=f.length;var h=c(50122);let i=function(a,b,c){if(e.randomUUID&&!b&&!a)return e.randomUUID();var i=a,j=c;let k=(i=i||{}).random??i.rng?.()??(g>f.length-16&&((0,d.randomFillSync)(f),g=0),f.slice(g,g+=16));if(k.length<16)throw Error("Random bytes length must be >= 16");if(k[6]=15&k[6]|64,k[8]=63&k[8]|128,b){if((j=j||0)<0||j+16>b.length)throw RangeError(`UUID byte range ${j}:${j+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[j+a]=k[a];return b}return(0,h.k)(k)}},96487:()=>{},97271:(a,b,c)=>{"use strict";c.d(b,{$V:()=>n,EQ:()=>u,Co:()=>m,Bm:()=>w,DEFAULT_API_LIMITS:()=>y,O:()=>t,Uc:()=>p,eo:()=>q,LY:()=>s,MT:()=>j,gx:()=>r,NA:()=>o,xq:()=>l,PROVIDER_PROFILES:()=>x,QS:()=>v,C8:()=>z,TH:()=>k});var d=c(29021),e=c(33873);let f=["clientId","clientSecret","tokenUrl","authUrl","refreshUrl"],g=0,h=null;var i=c(28108);let j=parseInt(process.env.FETCH_TIMEOUT_MS||"120000",10),k=parseInt(process.env.STREAM_IDLE_TIMEOUT_MS||"60000",10),l=(0,i.Z0)();!function(a){let b;if(h&&Date.now()-g<6e4)return;let c=(b=process.env.DATA_DIR||(0,e.join)(process.cwd(),"data"),(0,e.join)(b,"provider-credentials.json"));if(!(0,d.existsSync)(c))return h||console.log("[CREDENTIALS] No external credentials file found, using defaults."),h=a,g=Date.now();try{let b=(0,d.readFileSync)(c,"utf-8"),e=JSON.parse(b),g=0;for(let[b,c]of Object.entries(e)){if(!a[b]){console.log(`[CREDENTIALS] Warning: unknown provider "${b}" in credentials file, skipping.`);continue}if(!c||"object"!=typeof c){console.log(`[CREDENTIALS] Warning: provider "${b}" value must be an object, got ${typeof c}. Skipping.`);continue}for(let d of f)void 0!==c[d]&&(a[b][d]=c[d],g++)}let i=null!==h;console.log(`[CREDENTIALS] ${i?"Reloaded":"Loaded"} external credentials: ${g} field(s) from ${c}`)}catch(a){console.log(`[CREDENTIALS] Error reading credentials file: ${a.message}. Using defaults.`)}h=a,g=Date.now()}(l);let m="You are Claude Code, Anthropic's official CLI for Claude.",n="Please ignore the following [ignore]You are Antigravity, a powerful agentic AI coding assistant designed by the Google Deepmind team working on Advanced Agentic Coding.You are pair programming with a USER to solve their coding task. The task may require creating a new codebase, modifying or debugging an existing codebase, or simply answering a question.**Absolute paths only****Proactiveness**[/ignore]",o={google:{token:"https://oauth2.googleapis.com/token",auth:"https://accounts.google.com/o/oauth2/auth"},openai:{token:"https://auth.openai.com/oauth/token",auth:"https://auth.openai.com/oauth/authorize"},anthropic:{token:"https://console.anthropic.com/v1/oauth/token",auth:"https://console.anthropic.com/v1/oauth/authorize"},qwen:{token:"https://chat.qwen.ai/api/v1/oauth2/token",auth:"https://chat.qwen.ai/api/v1/oauth2/device/code"},iflow:{token:"https://iflow.cn/oauth/token",auth:"https://iflow.cn/oauth"},github:{token:"https://github.com/login/oauth/access_token",auth:"https://github.com/login/oauth/authorize",deviceCode:"https://github.com/login/device/code"}},p=64e3,q=32e3,r={BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,NOT_ACCEPTABLE:406,REQUEST_TIMEOUT:408,RATE_LIMITED:429,SERVER_ERROR:500,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504},s={[r.BAD_REQUEST]:{type:"invalid_request_error",code:"bad_request"},[r.UNAUTHORIZED]:{type:"authentication_error",code:"invalid_api_key"},[r.FORBIDDEN]:{type:"permission_error",code:"insufficient_quota"},[r.NOT_FOUND]:{type:"invalid_request_error",code:"model_not_found"},[r.RATE_LIMITED]:{type:"rate_limit_error",code:"rate_limit_exceeded"},[r.SERVER_ERROR]:{type:"server_error",code:"internal_server_error"},[r.BAD_GATEWAY]:{type:"server_error",code:"bad_gateway"},[r.SERVICE_UNAVAILABLE]:{type:"server_error",code:"service_unavailable"},[r.GATEWAY_TIMEOUT]:{type:"server_error",code:"gateway_timeout"}},t={[r.BAD_REQUEST]:"Bad request",[r.UNAUTHORIZED]:"Invalid API key provided",[r.FORBIDDEN]:"You exceeded your current quota",[r.NOT_FOUND]:"Model not found",[r.RATE_LIMITED]:"Rate limit exceeded",[r.SERVER_ERROR]:"Internal server error",[r.BAD_GATEWAY]:"Bad gateway - upstream provider error",[r.SERVICE_UNAVAILABLE]:"Service temporarily unavailable",[r.GATEWAY_TIMEOUT]:"Gateway timeout"},u={base:1e3,max:12e4,maxLevel:15},v={QUOTA_EXHAUSTED:"quota_exhausted",RATE_LIMIT_EXCEEDED:"rate_limit_exceeded",MODEL_CAPACITY:"model_capacity",SERVER_ERROR:"server_error",AUTH_ERROR:"auth_error",UNKNOWN:"unknown"},w={unauthorized:12e4,paymentRequired:12e4,notFound:12e4,transientInitial:5e3,transientMax:6e4,transient:5e3,requestNotAllowed:5e3,rateLimit:12e4,serviceUnavailable:2e3,authExpired:12e4},x={oauth:{transientCooldown:5e3,rateLimitCooldown:6e4,maxBackoffLevel:8,circuitBreakerThreshold:3,circuitBreakerReset:6e4},apikey:{transientCooldown:3e3,rateLimitCooldown:0,maxBackoffLevel:5,circuitBreakerThreshold:5,circuitBreakerReset:3e4}},y={requestsPerMinute:100,minTimeBetweenRequests:200,concurrentRequests:10},z=["Please write a 5-10 word title for the following conversation:"]}};
@@ -1 +1,3 @@
1
- "use strict";exports.id=7968,exports.ids=[7968],exports.modules={24575:(a,b,c)=>{c.d(b,{A5:()=>f,BS:()=>g,Go:()=>i,JF:()=>e,NZ:()=>h});let d=new Map;function e(a,b,{success:c,latencyMs:e,fallbackCount:f=0,strategy:g="priority"}){d.has(a)||d.set(a,{totalRequests:0,totalSuccesses:0,totalFailures:0,totalFallbacks:0,totalLatencyMs:0,strategy:g,lastUsedAt:null,byModel:{}});let h=d.get(a);if(h.totalRequests++,h.totalLatencyMs+=e,h.totalFallbacks+=f,h.lastUsedAt=new Date().toISOString(),h.strategy=g,c?h.totalSuccesses++:h.totalFailures++,b){h.byModel[b]||(h.byModel[b]={requests:0,successes:0,failures:0,totalLatencyMs:0,lastStatus:null,lastUsedAt:null});let a=h.byModel[b];a.requests++,a.totalLatencyMs+=e,a.lastUsedAt=new Date().toISOString(),c?(a.successes++,a.lastStatus="ok"):(a.failures++,a.lastStatus="error")}}function f(a){let b=d.get(a);return b?{...b,avgLatencyMs:b.totalRequests>0?Math.round(b.totalLatencyMs/b.totalRequests):0,successRate:b.totalRequests>0?Math.round(b.totalSuccesses/b.totalRequests*100):0,fallbackRate:b.totalRequests>0?Math.round(b.totalFallbacks/b.totalRequests*100):0,byModel:Object.fromEntries(Object.entries(b.byModel).map(([a,b])=>[a,{...b,avgLatencyMs:b.requests>0?Math.round(b.totalLatencyMs/b.requests):0,successRate:b.requests>0?Math.round(b.successes/b.requests*100):0}]))}:null}function g(){let a={};for(let[b]of d)a[b]=f(b);return a}function h(a){d.delete(a)}function i(){d.clear()}},57968:(a,b,c)=>{c.d(b,{Pr:()=>s,Vg:()=>function a(b,c,d=new Set,e=0){if(e>3)throw Error(`Max combo nesting depth (3) exceeded at "${b}"`);if(d.has(b))throw Error(`Circular combo reference detected: ${b}`);d.add(b);let f=Array.isArray(c)?c:c?.combos||[],g=f.find(a=>a.name===b);if(g&&g.models)for(let b of g.models){let c=o(b).model;f.find(a=>a.name===c)&&a(c,f,new Set(d),e+1)}}});var d=c(49263),e=c(89865),f=c(24575);let g={strategy:"priority",maxRetries:1,retryDelayMs:2e3,timeoutMs:12e4,concurrencyPerModel:3,queueTimeoutMs:3e4,healthCheckEnabled:!0,healthCheckTimeoutMs:3e3,maxComboDepth:3,trackMetrics:!0};function h(a,b,c){let d=b?.comboDefaults||{},e=c&&b?.providerOverrides?.[c]||{},f=a?.config||{},h=a=>Object.fromEntries(Object.entries(a).filter(([,a])=>null!=a));return{...g,...h(d),...h(e),...h(f)}}let i=new Map;function j(a,b=3){i.has(a)||i.set(a,{running:0,max:b,queue:[],rateLimitedUntil:null});let c=i.get(a);return c.max=b,c}function k(a){return!!a.rateLimitedUntil&&(!(Date.now()>=a.rateLimitedUntil)||(a.rateLimitedUntil=null,!1))}function l(a){let b=i.get(a);if(b)for(;b.queue.length>0&&b.running<b.max&&!k(b);){let c=b.queue.shift();clearTimeout(c.timer),b.running++,c.resolve(m(a))}}function m(a){let b=!1;return()=>{if(b)return;b=!0;let c=i.get(a);c&&c.running>0&&(c.running--,l(a))}}let n=new Map;function o(a){return"string"==typeof a?{model:a,weight:0}:{model:a.model,weight:a.weight||0}}function p(a,b,c=new Set,d=0){if(d>3)return a.models.map(a=>o(a).model);if(c.has(a.name))return[];c.add(a.name);let e=Array.isArray(b)?b:b?.combos||[],f=[];for(let b of a.models||[]){let a=o(b).model,g=e.find(b=>b.name===a);if(g){let a=p(g,e,new Set(c),d+1);f.push(...a)}else f.push(a)}return f}function q(a){let b=a.map(a=>o(a)),c=b.reduce((a,b)=>a+b.weight,0);if(c<=0)return b[Math.floor(Math.random()*b.length)].model;let d=Math.random()*c;for(let a of b)if((d-=a.weight)<=0)return a.model;return b[b.length-1].model}function r(a,b){let c=a.map(a=>o(a));return[c.find(a=>a.model===b),...c.filter(a=>a.model!==b).sort((a,b)=>b.weight-a.weight)].filter(Boolean).map(a=>a.model)}async function s({body:a,combo:b,handleSingleModel:c,isModelAvailable:i,log:j,settings:k,allCombos:l}){let m,n=b.strategy||"priority",s=b.models||[];if("round-robin"===n)return t({body:a,combo:b,handleSingleModel:c,isModelAvailable:i,log:j,settings:k,allCombos:l});let u=k?h(b,k):{...g,...b.config||{}},v=u.maxRetries??1,w=u.retryDelayMs??2e3;if(l){let a=p(b,l);if("weighted"===n){let a=q(s);m=(m=r(s,a)).flatMap(a=>{let b=(Array.isArray(l)?l:l?.combos||[]).find(b=>b.name===a);return b?p(b,l):[a]}),j.info("COMBO",`Weighted selection with nested resolution: ${m.length} total models`)}else m=a,j.info("COMBO",`Priority with nested resolution: ${m.length} total models`)}else if("weighted"===n){let a=q(s);m=r(s,a),j.info("COMBO",`Weighted selection: ${a} (from ${s.length} models)`)}else m=s.map(a=>o(a).model);let x=null,y=null,z=null,A=Date.now(),B=0;for(let e=0;e<m.length;e++){let g=m[e];if(i&&!await i(g)){j.info("COMBO",`Skipping ${g} (all accounts in cooldown)`),e>0&&B++;continue}for(let h=0;h<=v;h++){h>0&&(j.info("COMBO",`Retrying ${g} in ${w}ms (attempt ${h+1}/${v+1})`),await new Promise(a=>setTimeout(a,w))),j.info("COMBO",`Trying model ${e+1}/${m.length}: ${g}${h>0?` (retry ${h})`:""}`);let i=await c(a,g);if(i.ok){let a=Date.now()-A;return j.info("COMBO",`Model ${g} succeeded (${a}ms, ${B} fallbacks)`),(0,f.JF)(b.name,g,{success:!0,latencyMs:a,fallbackCount:B,strategy:n}),i}let k=i.statusText||"",l=null;try{let a=i.clone();try{let b=await a.json();k=b?.error?.message||b?.error||b?.message||k,l=b?.retryAfter||null}catch{try{let a=await i.text();a&&(k=a.substring(0,500))}catch{}}}catch{}if(l&&(!y||new Date(l)<new Date(y))&&(y=l),"string"!=typeof k)try{k=JSON.stringify(k)}catch{k=String(k)}let{shouldFallback:o}=(0,d.hk)(i.status,k);if(!o)return j.warn("COMBO",`Model ${g} failed (no fallback)`,{status:i.status}),i;let p=[408,429,500,502,503,504].includes(i.status);if(!(h<v)||!p){x=k||String(i.status),z||(z=i.status),e>0&&B++,j.warn("COMBO",`Model ${g} failed, trying next`,{status:i.status});break}}}let C=Date.now()-A;(0,f.JF)(b.name,null,{success:!1,latencyMs:C,fallbackCount:B,strategy:n});let D=z||406,E=x||"All combo models unavailable";if(y){let a=(0,d.Qo)(y);return j.warn("COMBO",`All models failed | ${E} (${a})`),(0,e.wO)(D,E,y,a)}return j.warn("COMBO",`All models failed | ${E}`),new Response(JSON.stringify({error:{message:E}}),{status:D,headers:{"Content-Type":"application/json"}})}async function t({body:a,combo:b,handleSingleModel:c,isModelAvailable:i,log:q,settings:r,allCombos:s}){let t,u=b.models||[],v=r?h(b,r):{...g,...b.config||{}},w=v.concurrencyPerModel??3,x=v.queueTimeoutMs??3e4,y=v.maxRetries??1,z=v.retryDelayMs??2e3,A=(t=s?p(b,s):u.map(a=>o(a).model)).length;if(0===A)return(0,e.wO)(406,"Round-robin combo has no models");let B=n.get(b.name)||0;n.set(b.name,B+1);let C=B%A,D=Date.now(),E=null,F=null,G=null,H=0;for(let e=0;e<A;e++){let g,h=t[(C+e)%A];if(i&&!await i(h)){q.info("COMBO-RR",`Skipping ${h} (all accounts in cooldown)`),e>0&&H++;continue}try{g=await function(a,{maxConcurrency:b=3,timeoutMs:c=3e4}={}){let d=j(a,b);return d.running<d.max&&!k(d)?(d.running++,Promise.resolve(m(a))):new Promise((b,e)=>{let f=setTimeout(()=>{let b=d.queue.findIndex(a=>a.timer===f);-1!==b&&d.queue.splice(b,1);let g=Error(`Semaphore timeout after ${c}ms for ${a}`);g.code="SEMAPHORE_TIMEOUT",e(g)},c);d.queue.push({resolve:b,reject:e,timer:f})})}(h,{maxConcurrency:w,timeoutMs:x})}catch(a){if("SEMAPHORE_TIMEOUT"===a.code){q.warn("COMBO-RR",`Semaphore timeout for ${h}, trying next model`),e>0&&H++;continue}throw a}try{for(let g=0;g<=y;g++){g>0&&(q.info("COMBO-RR",`Retrying ${h} in ${z}ms (attempt ${g+1}/${y+1})`),await new Promise(a=>setTimeout(a,z))),q.info("COMBO-RR",`[RR #${B}] → ${h}${e>0?` (fallback +${e})`:""}${g>0?` (retry ${g})`:""}`);let i=await c(a,h);if(i.ok){let a=Date.now()-D;return q.info("COMBO-RR",`${h} succeeded (${a}ms, ${H} fallbacks)`),(0,f.JF)(b.name,h,{success:!0,latencyMs:a,fallbackCount:H,strategy:"round-robin"}),i}let k=i.statusText||"",m=null;try{let a=i.clone();try{let b=await a.json();k=b?.error?.message||b?.error||b?.message||k,m=b?.retryAfter||null}catch{try{let a=await i.text();a&&(k=a.substring(0,500))}catch{}}}catch{}if(m&&(!G||new Date(m)<new Date(G))&&(G=m),"string"!=typeof k)try{k=JSON.stringify(k)}catch{k=String(k)}let{shouldFallback:n,cooldownMs:o}=(0,d.hk)(i.status,k);if(429===i.status&&o>0&&(!function(a,b){let c=j(a);c.rateLimitedUntil=Date.now()+b,setTimeout(()=>{c.rateLimitedUntil&&Date.now()>=c.rateLimitedUntil&&(c.rateLimitedUntil=null,l(a))},b+50)}(h,o),q.warn("COMBO-RR",`${h} rate-limited, cooldown ${o}ms`)),!n)return q.warn("COMBO-RR",`${h} failed (no fallback)`,{status:i.status}),i;let p=[408,429,500,502,503,504].includes(i.status);if(!(g<y)||!p){E=k||String(i.status),F||(F=i.status),e>0&&H++,q.warn("COMBO-RR",`${h} failed, trying next model`,{status:i.status});break}}}finally{g()}}let I=Date.now()-D;(0,f.JF)(b.name,null,{success:!1,latencyMs:I,fallbackCount:H,strategy:"round-robin"});let J=F||406,K=E||"All round-robin combo models unavailable";if(G){let a=(0,d.Qo)(G);return q.warn("COMBO-RR",`All models failed | ${K} (${a})`),(0,e.wO)(J,K,G,a)}return q.warn("COMBO-RR",`All models failed | ${K}`),new Response(JSON.stringify({error:{message:K}}),{status:J,headers:{"Content-Type":"application/json"}})}}};
1
+ "use strict";exports.id=7968,exports.ids=[1228,7968,8847],exports.modules={8809:(a,b,c)=>{c.d(b,{M4:()=>m,QM:()=>n,_s:()=>l,io:()=>i,mE:()=>f,qA:()=>k,tv:()=>j,vX:()=>o,xV:()=>e,xd:()=>p,z$:()=>g,zd:()=>h});var d=c(14469);function e(a,b){(0,d.sm)().prepare("INSERT OR REPLACE INTO domain_fallback_chains (model, chain) VALUES (?, ?)").run(a,JSON.stringify(b))}function f(){let a=(0,d.sm)().prepare("SELECT model, chain FROM domain_fallback_chains").all(),b={};for(let c of a)b[c.model]=JSON.parse(c.chain);return b}function g(a){return(0,d.sm)().prepare("DELETE FROM domain_fallback_chains WHERE model = ?").run(a).changes>0}function h(a,b){(0,d.sm)().prepare(`INSERT OR REPLACE INTO domain_budgets (api_key_id, daily_limit_usd, monthly_limit_usd, warning_threshold)
2
+ VALUES (?, ?, ?, ?)`).run(a,b.dailyLimitUsd,b.monthlyLimitUsd||0,b.warningThreshold??.8)}function i(a){let b=(0,d.sm)().prepare("SELECT * FROM domain_budgets WHERE api_key_id = ?").get(a);return b?{dailyLimitUsd:b.daily_limit_usd,monthlyLimitUsd:b.monthly_limit_usd,warningThreshold:b.warning_threshold}:null}function j(a,b,c=Date.now()){(0,d.sm)().prepare("INSERT INTO domain_cost_history (api_key_id, cost, timestamp) VALUES (?, ?, ?)").run(a,b,c)}function k(a,b){return(0,d.sm)().prepare("SELECT cost, timestamp FROM domain_cost_history WHERE api_key_id = ? AND timestamp >= ? ORDER BY timestamp").all(a,b)}function l(a){(0,d.sm)().prepare("DELETE FROM domain_lockout_state WHERE identifier = ?").run(a)}function m(){let a=(0,d.sm)(),b=Date.now();return a.prepare("SELECT identifier, locked_until FROM domain_lockout_state WHERE locked_until IS NOT NULL AND locked_until > ?").all(b).map(a=>({identifier:a.identifier,lockedUntil:a.locked_until}))}function n(a,b){(0,d.sm)().prepare(`INSERT OR REPLACE INTO domain_circuit_breakers (name, state, failure_count, last_failure_time, options)
3
+ VALUES (?, ?, ?, ?, ?)`).run(a,b.state,b.failureCount,b.lastFailureTime,b.options?JSON.stringify(b.options):null)}function o(a){let b=(0,d.sm)().prepare("SELECT * FROM domain_circuit_breakers WHERE name = ?").get(a);return b?{state:b.state,failureCount:b.failure_count,lastFailureTime:b.last_failure_time,options:b.options?JSON.parse(b.options):null}:null}function p(){return(0,d.sm)().prepare("SELECT name, state, failure_count, last_failure_time FROM domain_circuit_breakers").all().map(a=>({name:a.name,state:a.state,failureCount:a.failure_count,lastFailureTime:a.last_failure_time}))}},24575:(a,b,c)=>{c.d(b,{A5:()=>f,BS:()=>g,Go:()=>i,JF:()=>e,NZ:()=>h});let d=new Map;function e(a,b,{success:c,latencyMs:e,fallbackCount:f=0,strategy:g="priority"}){d.has(a)||d.set(a,{totalRequests:0,totalSuccesses:0,totalFailures:0,totalFallbacks:0,totalLatencyMs:0,strategy:g,lastUsedAt:null,byModel:{}});let h=d.get(a);if(h.totalRequests++,h.totalLatencyMs+=e,h.totalFallbacks+=f,h.lastUsedAt=new Date().toISOString(),h.strategy=g,c?h.totalSuccesses++:h.totalFailures++,b){h.byModel[b]||(h.byModel[b]={requests:0,successes:0,failures:0,totalLatencyMs:0,lastStatus:null,lastUsedAt:null});let a=h.byModel[b];a.requests++,a.totalLatencyMs+=e,a.lastUsedAt=new Date().toISOString(),c?(a.successes++,a.lastStatus="ok"):(a.failures++,a.lastStatus="error")}}function f(a){let b=d.get(a);return b?{...b,avgLatencyMs:b.totalRequests>0?Math.round(b.totalLatencyMs/b.totalRequests):0,successRate:b.totalRequests>0?Math.round(b.totalSuccesses/b.totalRequests*100):0,fallbackRate:b.totalRequests>0?Math.round(b.totalFallbacks/b.totalRequests*100):0,byModel:Object.fromEntries(Object.entries(b.byModel).map(([a,b])=>[a,{...b,avgLatencyMs:b.requests>0?Math.round(b.totalLatencyMs/b.requests):0,successRate:b.requests>0?Math.round(b.successes/b.requests*100):0}]))}:null}function g(){let a={};for(let[b]of d)a[b]=f(b);return a}function h(a){d.delete(a)}function i(){d.clear()}},51228:(a,b,c)=>{c.d(b,{ez:()=>i,getAllCircuitBreakerStatuses:()=>l,getCircuitBreaker:()=>k});var d=c(8809);let e="CLOSED",f="OPEN",g="HALF_OPEN";class h{constructor(a,b={}){this.name=a,this.failureThreshold=b.failureThreshold??5,this.resetTimeout=b.resetTimeout??3e4,this.halfOpenRequests=b.halfOpenRequests??1,this.onStateChange=b.onStateChange||null,this.isFailure=b.isFailure||(()=>!0),this.state=e,this.failureCount=0,this.successCount=0,this.lastFailureTime=null,this.halfOpenAllowed=0,this._restoreFromDb()}_restoreFromDb(){try{let a=(0,d.vX)(this.name);a&&(this.state=a.state,this.failureCount=a.failureCount,this.lastFailureTime=a.lastFailureTime,this.state===g&&(this.halfOpenAllowed=this.halfOpenRequests))}catch{}}_persistToDb(){try{(0,d.QM)(this.name,{state:this.state,failureCount:this.failureCount,lastFailureTime:this.lastFailureTime,options:{failureThreshold:this.failureThreshold,resetTimeout:this.resetTimeout,halfOpenRequests:this.halfOpenRequests}})}catch{}}async execute(a){if(this.state===f)if(this._shouldAttemptReset())this._transition(g);else throw new i(`Circuit breaker "${this.name}" is OPEN. Try again later.`,this.name,this._timeUntilReset());if(this.state===g&&this.halfOpenAllowed<=0)throw new i(`Circuit breaker "${this.name}" is HALF_OPEN, no more probe requests allowed.`,this.name,this._timeUntilReset());this.state===g&&this.halfOpenAllowed--;try{let b=await a();return this._onSuccess(),b}catch(a){throw this.isFailure(a)&&this._onFailure(),a}}canExecute(){return this.state===e||(this.state===f?this._shouldAttemptReset():this.state===g&&this.halfOpenAllowed>0)}getStatus(){return{name:this.name,state:this.state,failureCount:this.failureCount,lastFailureTime:this.lastFailureTime}}reset(){this._transition(e),this.failureCount=0,this.successCount=0,this.lastFailureTime=null,this._persistToDb()}_onSuccess(){this.state===g&&(this.successCount++,this._transition(e),this.failureCount=0),this.failureCount=0,this._persistToDb()}_onFailure(){this.failureCount++,this.lastFailureTime=Date.now(),this.state===g?this._transition(f):this.failureCount>=this.failureThreshold&&this._transition(f),this._persistToDb()}_shouldAttemptReset(){return!this.lastFailureTime||Date.now()-this.lastFailureTime>=this.resetTimeout}_timeUntilReset(){return this.lastFailureTime?Math.max(0,this.resetTimeout-(Date.now()-this.lastFailureTime)):0}_transition(a){let b=this.state;this.state=a,a===g&&(this.halfOpenAllowed=this.halfOpenRequests),this.onStateChange&&b!==a&&this.onStateChange(this.name,b,a)}}class i extends Error{constructor(a,b,c){super(a),this.name="CircuitBreakerOpenError",this.circuitName=b,this.retryAfterMs=c}}let j=new Map;function k(a,b){return j.has(a)||j.set(a,new h(a,b)),j.get(a)}function l(){try{for(let a of(0,d.xd)())j.has(a.name)||k(a.name)}catch{}return Array.from(j.values()).map(a=>a.getStatus())}},57968:(a,b,c)=>{c.d(b,{Pr:()=>v,Vg:()=>function a(b,c,d=new Set,e=0){if(e>3)throw Error(`Max combo nesting depth (3) exceeded at "${b}"`);if(d.has(b))throw Error(`Circular combo reference detected: ${b}`);d.add(b);let f=Array.isArray(c)?c:c?.combos||[],g=f.find(a=>a.name===b);if(g&&g.models)for(let b of g.models){let c=r(b).model;f.find(a=>a.name===c)&&a(c,f,new Set(d),e+1)}}});var d=c(49263),e=c(89865),f=c(24575);let g={strategy:"priority",maxRetries:1,retryDelayMs:2e3,timeoutMs:12e4,concurrencyPerModel:3,queueTimeoutMs:3e4,healthCheckEnabled:!0,healthCheckTimeoutMs:3e3,maxComboDepth:3,trackMetrics:!0};function h(a,b,c){let d=b?.comboDefaults||{},e=c&&b?.providerOverrides?.[c]||{},f=a?.config||{},h=a=>Object.fromEntries(Object.entries(a).filter(([,a])=>null!=a));return{...g,...h(d),...h(e),...h(f)}}let i=new Map;function j(a,b=3){i.has(a)||i.set(a,{running:0,max:b,queue:[],rateLimitedUntil:null});let c=i.get(a);return c.max=b,c}function k(a){return!!a.rateLimitedUntil&&(!(Date.now()>=a.rateLimitedUntil)||(a.rateLimitedUntil=null,!1))}function l(a){let b=i.get(a);if(b)for(;b.queue.length>0&&b.running<b.max&&!k(b);){let c=b.queue.shift();clearTimeout(c.timer),b.running++,c.resolve(m(a))}}function m(a){let b=!1;return()=>{if(b)return;b=!0;let c=i.get(a);c&&c.running>0&&(c.running--,l(a))}}var n=c(51228),o=c(66451);let p=[429,502,503,504],q=new Map;function r(a){return"string"==typeof a?{model:a,weight:0}:{model:a.model,weight:a.weight||0}}function s(a,b,c=new Set,d=0){if(d>3)return a.models.map(a=>r(a).model);if(c.has(a.name))return[];c.add(a.name);let e=Array.isArray(b)?b:b?.combos||[],f=[];for(let b of a.models||[]){let a=r(b).model,g=e.find(b=>b.name===a);if(g){let a=s(g,e,new Set(c),d+1);f.push(...a)}else f.push(a)}return f}function t(a){let b=a.map(a=>r(a)),c=b.reduce((a,b)=>a+b.weight,0);if(c<=0)return b[Math.floor(Math.random()*b.length)].model;let d=Math.random()*c;for(let a of b)if((d-=a.weight)<=0)return a.model;return b[b.length-1].model}function u(a,b){let c=a.map(a=>r(a));return[c.find(a=>a.model===b),...c.filter(a=>a.model!==b).sort((a,b)=>b.weight-a.weight)].filter(Boolean).map(a=>a.model)}async function v({body:a,combo:b,handleSingleModel:c,isModelAvailable:i,log:j,settings:k,allCombos:l}){let m,q=b.strategy||"priority",v=b.models||[];if("round-robin"===q)return w({body:a,combo:b,handleSingleModel:c,isModelAvailable:i,log:j,settings:k,allCombos:l});let x=k?h(b,k):{...g,...b.config||{}},y=x.maxRetries??1,z=x.retryDelayMs??2e3;if(l){let a=s(b,l);if("weighted"===q){let a=t(v);m=(m=u(v,a)).flatMap(a=>{let b=(Array.isArray(l)?l:l?.combos||[]).find(b=>b.name===a);return b?s(b,l):[a]}),j.info("COMBO",`Weighted selection with nested resolution: ${m.length} total models`)}else m=a,j.info("COMBO",`Priority with nested resolution: ${m.length} total models`)}else if("weighted"===q){let a=t(v);m=u(v,a),j.info("COMBO",`Weighted selection: ${a} (from ${v.length} models)`)}else m=v.map(a=>r(a).model);let A=null,B=null,C=null,D=Date.now(),E=0;for(let e=0;e<m.length;e++){let g=m[e],h=(0,o.Xh)(g),k=h.provider||h.providerAlias||"unknown",l=(0,d.T_)(k),r=(0,n.getCircuitBreaker)(`combo:${k}`,{failureThreshold:l.circuitBreakerThreshold,resetTimeout:l.circuitBreakerReset});if(!r.canExecute()){j.info("COMBO",`Skipping ${g}: circuit breaker OPEN for ${k}`),e>0&&E++;continue}if(i&&!await i(g)){j.info("COMBO",`Skipping ${g} (all accounts in cooldown)`),e>0&&E++;continue}for(let h=0;h<=y;h++){h>0&&(j.info("COMBO",`Retrying ${g} in ${z}ms (attempt ${h+1}/${y+1})`),await new Promise(a=>setTimeout(a,z))),j.info("COMBO",`Trying model ${e+1}/${m.length}: ${g}${h>0?` (retry ${h})`:""}`);let i=await c(a,g);if(i.ok){let a=Date.now()-D;return j.info("COMBO",`Model ${g} succeeded (${a}ms, ${E} fallbacks)`),(0,f.JF)(b.name,g,{success:!0,latencyMs:a,fallbackCount:E,strategy:q}),i}let l=i.statusText||"",n=null;try{let a=i.clone();try{let b=await a.json();l=b?.error?.message||b?.error||b?.message||l,n=b?.retryAfter||null}catch{try{let a=await i.text();a&&(l=a.substring(0,500))}catch{}}}catch{}if(n&&(!B||new Date(n)<new Date(B))&&(B=n),"string"!=typeof l)try{l=JSON.stringify(l)}catch{l=String(l)}let{shouldFallback:o,cooldownMs:s}=(0,d.hk)(i.status,l,0,null,k);if(p.includes(i.status)&&r._onFailure(),!o)return j.warn("COMBO",`Model ${g} failed (no fallback)`,{status:i.status}),i;let t=[408,429,500,502,503,504].includes(i.status);if(!(h<y)||!t){A=l||String(i.status),C||(C=i.status),e>0&&E++,j.warn("COMBO",`Model ${g} failed, trying next`,{status:i.status});break}}}let F=m.every(a=>{let b=(0,o.Xh)(a).provider||(0,o.Xh)(a).providerAlias||"unknown";return!(0,n.getCircuitBreaker)(`combo:${b}`).canExecute()}),G=Date.now()-D;if((0,f.JF)(b.name,null,{success:!1,latencyMs:G,fallbackCount:E,strategy:q}),F)return j.warn("COMBO","All models have circuit breaker OPEN — aborting"),(0,e.wO)(503,"All providers temporarily unavailable (circuit breakers open)");let H=C||406,I=A||"All combo models unavailable";if(B){let a=(0,d.Qo)(B);return j.warn("COMBO",`All models failed | ${I} (${a})`),(0,e.wO)(H,I,B,a)}return j.warn("COMBO",`All models failed | ${I}`),new Response(JSON.stringify({error:{message:I}}),{status:H,headers:{"Content-Type":"application/json"}})}async function w({body:a,combo:b,handleSingleModel:c,isModelAvailable:i,log:t,settings:u,allCombos:v}){let w,x=b.models||[],y=u?h(b,u):{...g,...b.config||{}},z=y.concurrencyPerModel??3,A=y.queueTimeoutMs??3e4,B=y.maxRetries??1,C=y.retryDelayMs??2e3,D=(w=v?s(b,v):x.map(a=>r(a).model)).length;if(0===D)return(0,e.wO)(406,"Round-robin combo has no models");let E=q.get(b.name)||0;q.set(b.name,E+1);let F=E%D,G=Date.now(),H=null,I=null,J=null,K=0;for(let e=0;e<D;e++){let g,h=w[(F+e)%D],q=(0,o.Xh)(h),r=q.provider||q.providerAlias||"unknown",s=(0,d.T_)(r),u=(0,n.getCircuitBreaker)(`combo:${r}`,{failureThreshold:s.circuitBreakerThreshold,resetTimeout:s.circuitBreakerReset});if(!u.canExecute()){t.info("COMBO-RR",`Skipping ${h}: circuit breaker OPEN for ${r}`),e>0&&K++;continue}if(i&&!await i(h)){t.info("COMBO-RR",`Skipping ${h} (all accounts in cooldown)`),e>0&&K++;continue}try{g=await function(a,{maxConcurrency:b=3,timeoutMs:c=3e4}={}){let d=j(a,b);return d.running<d.max&&!k(d)?(d.running++,Promise.resolve(m(a))):new Promise((b,e)=>{let f=setTimeout(()=>{let b=d.queue.findIndex(a=>a.timer===f);-1!==b&&d.queue.splice(b,1);let g=Error(`Semaphore timeout after ${c}ms for ${a}`);g.code="SEMAPHORE_TIMEOUT",e(g)},c);d.queue.push({resolve:b,reject:e,timer:f})})}(h,{maxConcurrency:z,timeoutMs:A})}catch(a){if("SEMAPHORE_TIMEOUT"===a.code){t.warn("COMBO-RR",`Semaphore timeout for ${h}, trying next model`),e>0&&K++;continue}throw a}try{for(let g=0;g<=B;g++){g>0&&(t.info("COMBO-RR",`Retrying ${h} in ${C}ms (attempt ${g+1}/${B+1})`),await new Promise(a=>setTimeout(a,C))),t.info("COMBO-RR",`[RR #${E}] → ${h}${e>0?` (fallback +${e})`:""}${g>0?` (retry ${g})`:""}`);let i=await c(a,h);if(i.ok){let a=Date.now()-G;return t.info("COMBO-RR",`${h} succeeded (${a}ms, ${K} fallbacks)`),(0,f.JF)(b.name,h,{success:!0,latencyMs:a,fallbackCount:K,strategy:"round-robin"}),i}let k=i.statusText||"",m=null;try{let a=i.clone();try{let b=await a.json();k=b?.error?.message||b?.error||b?.message||k,m=b?.retryAfter||null}catch{try{let a=await i.text();a&&(k=a.substring(0,500))}catch{}}}catch{}if(m&&(!J||new Date(m)<new Date(J))&&(J=m),"string"!=typeof k)try{k=JSON.stringify(k)}catch{k=String(k)}let{shouldFallback:n,cooldownMs:o}=(0,d.hk)(i.status,k,0,null,r);if(p.includes(i.status)&&o>0&&(!function(a,b){let c=j(a);c.rateLimitedUntil=Date.now()+b,setTimeout(()=>{c.rateLimitedUntil&&Date.now()>=c.rateLimitedUntil&&(c.rateLimitedUntil=null,l(a))},b+50)}(h,o),u._onFailure(),t.warn("COMBO-RR",`${h} error ${i.status}, cooldown ${o}ms (breaker: ${u.getStatus().failureCount}/${s.circuitBreakerThreshold})`)),!n)return t.warn("COMBO-RR",`${h} failed (no fallback)`,{status:i.status}),i;let q=[408,429,500,502,503,504].includes(i.status);if(!(g<B)||!q){H=k||String(i.status),I||(I=i.status),e>0&&K++,t.warn("COMBO-RR",`${h} failed, trying next model`,{status:i.status});break}}}finally{g()}}let L=Date.now()-G;if((0,f.JF)(b.name,null,{success:!1,latencyMs:L,fallbackCount:K,strategy:"round-robin"}),w.every(a=>{let b=(0,o.Xh)(a).provider||(0,o.Xh)(a).providerAlias||"unknown";return!(0,n.getCircuitBreaker)(`combo:${b}`).canExecute()}))return t.warn("COMBO-RR","All models have circuit breaker OPEN — aborting"),(0,e.wO)(503,"All providers temporarily unavailable (circuit breakers open)");let M=I||406,N=H||"All round-robin combo models unavailable";if(J){let a=(0,d.Qo)(J);return t.warn("COMBO-RR",`All models failed | ${N} (${a})`),(0,e.wO)(M,N,J,a)}return t.warn("COMBO-RR",`All models failed | ${N}`),new Response(JSON.stringify({error:{message:N}}),{status:M,headers:{"Content-Type":"application/json"}})}},66451:(a,b,c)=>{c.d(b,{Xh:()=>i,js:()=>j});var d=c(29485);let e={};for(let[a,b]of Object.entries(d.PROVIDER_ID_TO_ALIAS))e[b]&&console.log(`[MODEL] Warning: alias "${b}" maps to both "${e[b]}" and "${a}". Using "${a}".`),e[b]=a;let f={github:{"claude-4.5-opus":"claude-opus-4-5-20251101","claude-opus-4.5":"claude-opus-4-5-20251101","gemini-3-pro":"gemini-3-pro-preview","gemini-3-flash":"gemini-3-flash-preview","raptor-mini":"oswe-vscode-prime"},antigravity:{"gemini-3-flash":"gemini-3-flash-preview"}},g=new Map;for(let[a,b]of Object.entries(d.vq)){let c=e[a]||a;for(let a of b||[]){let b=a?.id;if(!b)continue;let d=g.get(b)||[];d.includes(c)||(d.push(c),g.set(b,d))}}function h(a,b){if(!b||"string"!=typeof b)return b;let c=f[e[a]||a];return c?.[b]||b}function i(a){if(!a)return{provider:null,model:null,isAlias:!1,providerAlias:null};if(/\.\.[\/\\]/.test(a)||/[\x00-\x1f]/.test(a))return console.log(`[MODEL] Warning: rejected malformed model string: "${a.substring(0,50)}"`),{provider:null,model:null,isAlias:!1,providerAlias:null};if(a.includes("/")){let b=a.indexOf("/"),c=a.slice(0,b),d=a.slice(b+1);return{provider:e[c]||c,model:d,isAlias:!1,providerAlias:c}}return{provider:null,model:a,isAlias:!0,providerAlias:null}}async function j(a,b){let c=i(a);if(!c.isAlias){let a=h(c.provider,c.model);return{provider:c.provider,model:a}}let f="function"==typeof b?await b():b,j=function(a,b){var c,d;if(!b)return null;let f=b[a];if(!f)return null;if("string"==typeof f&&f.includes("/")){let a=f.indexOf("/");return{provider:e[c=f.slice(0,a)]||c,model:f.slice(a+1)}}return"object"==typeof f&&f.provider&&f.model?{provider:e[d=f.provider]||d,model:f.model}:null}(c.model,f);if(j){let a=h(j.provider,j.model);return{provider:j.provider,model:a}}let k=c.model,l=g.get(k)||[];if(l.includes("openai"))return{provider:"openai",model:k};let m=l.filter(a=>"openai"!==a);if(1===m.length){let a=m[0],b=h(a,k);return{provider:a,model:b}}if(m.length>1){let a=m.map(a=>d.PROVIDER_ID_TO_ALIAS[a]||a),b=a.slice(0,2).map(a=>`${a}/${k}`),c=`Ambiguous model '${k}'. Use provider/model prefix (ex: ${b.join(" or ")}).`;return console.warn(`[MODEL] ${c} Candidates: ${a.join(", ")}`),{provider:null,model:k,errorType:"ambiguous_model",errorMessage:c,candidateProviders:m,candidateAliases:a}}return{provider:"openai",model:k}}}};