omniroute 1.4.5 → 1.4.9

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 (659) hide show
  1. package/README.md +90 -8
  2. package/README.pt-BR.md +1 -0
  3. package/app/.next/BUILD_ID +1 -1
  4. package/app/.next/app-path-routes-manifest.json +26 -26
  5. package/app/.next/build-manifest.json +2 -2
  6. package/app/.next/prerender-manifest.json +3 -676
  7. package/app/.next/required-server-files.json +4 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js +2 -2
  9. package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js.nft.json +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page.js +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page.js.nft.json +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js +2 -2
  15. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js.nft.json +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +4 -4
  18. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/costs/page.js +2 -2
  24. package/app/.next/server/app/(dashboard)/dashboard/costs/page.js.nft.json +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  27. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/health/page.js +2 -2
  30. package/app/.next/server/app/(dashboard)/dashboard/health/page.js.nft.json +1 -1
  31. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  32. package/app/.next/server/app/(dashboard)/dashboard/limits/page.js +2 -2
  33. package/app/.next/server/app/(dashboard)/dashboard/limits/page.js.nft.json +1 -1
  34. package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
  35. package/app/.next/server/app/(dashboard)/dashboard/logs/page.js +1 -1
  36. package/app/.next/server/app/(dashboard)/dashboard/logs/page.js.nft.json +1 -1
  37. package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
  38. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js +2 -2
  39. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js.nft.json +1 -1
  40. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
  41. package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
  42. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  43. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  44. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  45. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  46. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  47. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +1 -1
  48. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  49. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  50. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  51. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  52. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  53. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  54. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  55. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  56. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js +2 -2
  57. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js.nft.json +1 -1
  58. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  59. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js +2 -2
  60. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js.nft.json +1 -1
  61. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  62. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +3 -3
  63. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  64. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  65. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +1 -1
  66. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  67. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  68. package/app/.next/server/app/_global-error/page.js +1 -1
  69. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  70. package/app/.next/server/app/_global-error.html +2 -2
  71. package/app/.next/server/app/_global-error.rsc +1 -1
  72. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  73. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  74. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  75. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  76. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  77. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  78. package/app/.next/server/app/_not-found/page.js +1 -1
  79. package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
  80. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  81. package/app/.next/server/app/api/auth/login/route.js +1 -1
  82. package/app/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  83. package/app/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  84. package/app/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  85. package/app/.next/server/app/api/cache/route_client-reference-manifest.js +1 -1
  86. package/app/.next/server/app/api/cache/stats/route_client-reference-manifest.js +1 -1
  87. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  88. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
  89. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +2 -2
  90. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
  91. package/app/.next/server/app/api/cli-tools/backups/route.js +2 -2
  92. package/app/.next/server/app/api/cli-tools/backups/route_client-reference-manifest.js +1 -1
  93. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +1 -1
  94. package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
  95. package/app/.next/server/app/api/cli-tools/cline-settings/route.js +2 -2
  96. package/app/.next/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
  97. package/app/.next/server/app/api/cli-tools/codex-profiles/route.js +1 -1
  98. package/app/.next/server/app/api/cli-tools/codex-profiles/route_client-reference-manifest.js +1 -1
  99. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +1 -1
  100. package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
  101. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +2 -2
  102. package/app/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
  103. package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route_client-reference-manifest.js +1 -1
  104. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +1 -1
  105. package/app/.next/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -1
  106. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  107. package/app/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
  108. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route.js +2 -2
  109. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route_client-reference-manifest.js +1 -1
  110. package/app/.next/server/app/api/cli-tools/status/route.js +2 -2
  111. package/app/.next/server/app/api/cli-tools/status/route_client-reference-manifest.js +1 -1
  112. package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
  113. package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
  114. package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
  115. package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
  116. package/app/.next/server/app/api/combos/[id]/route.js +1 -1
  117. package/app/.next/server/app/api/combos/[id]/route.js.nft.json +1 -1
  118. package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
  119. package/app/.next/server/app/api/combos/metrics/route_client-reference-manifest.js +1 -1
  120. package/app/.next/server/app/api/combos/route.js +1 -1
  121. package/app/.next/server/app/api/combos/route.js.nft.json +1 -1
  122. package/app/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
  123. package/app/.next/server/app/api/combos/test/route_client-reference-manifest.js +1 -1
  124. package/app/.next/server/app/api/compliance/audit-log/route_client-reference-manifest.js +1 -1
  125. package/app/.next/server/app/api/db-backups/export/route_client-reference-manifest.js +1 -1
  126. package/app/.next/server/app/api/db-backups/exportAll/route_client-reference-manifest.js +1 -1
  127. package/app/.next/server/app/api/db-backups/import/route.js +1 -1
  128. package/app/.next/server/app/api/db-backups/import/route_client-reference-manifest.js +1 -1
  129. package/app/.next/server/app/api/db-backups/route_client-reference-manifest.js +1 -1
  130. package/app/.next/server/app/api/evals/[suiteId]/route_client-reference-manifest.js +1 -1
  131. package/app/.next/server/app/api/evals/route_client-reference-manifest.js +1 -1
  132. package/app/.next/server/app/api/fallback/chains/route_client-reference-manifest.js +1 -1
  133. package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  134. package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
  135. package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
  136. package/app/.next/server/app/api/logs/console/route_client-reference-manifest.js +1 -1
  137. package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
  138. package/app/.next/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
  139. package/app/.next/server/app/api/models/catalog/route_client-reference-manifest.js +1 -1
  140. package/app/.next/server/app/api/models/route.js +1 -1
  141. package/app/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  142. package/app/.next/server/app/api/monitoring/health/route.js +1 -1
  143. package/app/.next/server/app/api/monitoring/health/route_client-reference-manifest.js +1 -1
  144. package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
  145. package/app/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
  146. package/app/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
  147. package/app/.next/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
  148. package/app/.next/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
  149. package/app/.next/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
  150. package/app/.next/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
  151. package/app/.next/server/app/api/policies/route_client-reference-manifest.js +1 -1
  152. package/app/.next/server/app/api/pricing/defaults/route.js +1 -1
  153. package/app/.next/server/app/api/pricing/defaults/route_client-reference-manifest.js +1 -1
  154. package/app/.next/server/app/api/pricing/models/route_client-reference-manifest.js +1 -1
  155. package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  156. package/app/.next/server/app/api/provider-metrics/route_client-reference-manifest.js +1 -1
  157. package/app/.next/server/app/api/provider-models/route_client-reference-manifest.js +1 -1
  158. package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
  159. package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
  160. package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
  161. package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
  162. package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
  163. package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
  164. package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
  165. package/app/.next/server/app/api/providers/route.js +1 -1
  166. package/app/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
  167. package/app/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
  168. package/app/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
  169. package/app/.next/server/app/api/rate-limit/route_client-reference-manifest.js +1 -1
  170. package/app/.next/server/app/api/rate-limits/route_client-reference-manifest.js +1 -1
  171. package/app/.next/server/app/api/resilience/reset/route_client-reference-manifest.js +1 -1
  172. package/app/.next/server/app/api/resilience/route_client-reference-manifest.js +1 -1
  173. package/app/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  174. package/app/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  175. package/app/.next/server/app/api/settings/combo-defaults/route_client-reference-manifest.js +1 -1
  176. package/app/.next/server/app/api/settings/ip-filter/route_client-reference-manifest.js +1 -1
  177. package/app/.next/server/app/api/settings/proxy/route_client-reference-manifest.js +1 -1
  178. package/app/.next/server/app/api/settings/proxy/test/route_client-reference-manifest.js +1 -1
  179. package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
  180. package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  181. package/app/.next/server/app/api/settings/system-prompt/route_client-reference-manifest.js +1 -1
  182. package/app/.next/server/app/api/settings/thinking-budget/route_client-reference-manifest.js +1 -1
  183. package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  184. package/app/.next/server/app/api/storage/health/route_client-reference-manifest.js +1 -1
  185. package/app/.next/server/app/api/sync/cloud/route_client-reference-manifest.js +1 -1
  186. package/app/.next/server/app/api/sync/initialize/route_client-reference-manifest.js +1 -1
  187. package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
  188. package/app/.next/server/app/api/telemetry/summary/route_client-reference-manifest.js +1 -1
  189. package/app/.next/server/app/api/token-health/route_client-reference-manifest.js +1 -1
  190. package/app/.next/server/app/api/translator/detect/route_client-reference-manifest.js +1 -1
  191. package/app/.next/server/app/api/translator/history/route_client-reference-manifest.js +1 -1
  192. package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
  193. package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
  194. package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
  195. package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
  196. package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
  197. package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
  198. package/app/.next/server/app/api/usage/analytics/route_client-reference-manifest.js +1 -1
  199. package/app/.next/server/app/api/usage/budget/route_client-reference-manifest.js +1 -1
  200. package/app/.next/server/app/api/usage/call-logs/[id]/route_client-reference-manifest.js +1 -1
  201. package/app/.next/server/app/api/usage/call-logs/route_client-reference-manifest.js +1 -1
  202. package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
  203. package/app/.next/server/app/api/usage/logs/route_client-reference-manifest.js +1 -1
  204. package/app/.next/server/app/api/usage/proxy-logs/route_client-reference-manifest.js +1 -1
  205. package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
  206. package/app/.next/server/app/api/v1/api/chat/route.js +1 -1
  207. package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  208. package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
  209. package/app/.next/server/app/api/v1/audio/speech/route.js +1 -1
  210. package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  211. package/app/.next/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
  212. package/app/.next/server/app/api/v1/audio/transcriptions/route.js +1 -1
  213. package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  214. package/app/.next/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
  215. package/app/.next/server/app/api/v1/chat/completions/route.js +1 -1
  216. package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  217. package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
  218. package/app/.next/server/app/api/v1/embeddings/route.js +1 -1
  219. package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  220. package/app/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
  221. package/app/.next/server/app/api/v1/images/generations/route.js +1 -1
  222. package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  223. package/app/.next/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
  224. package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
  225. package/app/.next/server/app/api/v1/messages/route.js +1 -1
  226. package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
  227. package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
  228. package/app/.next/server/app/api/v1/models/route.js +1 -1
  229. package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
  230. package/app/.next/server/app/api/v1/moderations/route.js +1 -1
  231. package/app/.next/server/app/api/v1/moderations/route.js.nft.json +1 -1
  232. package/app/.next/server/app/api/v1/moderations/route_client-reference-manifest.js +1 -1
  233. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js +1 -1
  234. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js.nft.json +1 -1
  235. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route_client-reference-manifest.js +1 -1
  236. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js +1 -1
  237. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js.nft.json +1 -1
  238. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route_client-reference-manifest.js +1 -1
  239. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js +1 -1
  240. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js.nft.json +1 -1
  241. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route_client-reference-manifest.js +1 -1
  242. package/app/.next/server/app/api/v1/rerank/route.js +1 -1
  243. package/app/.next/server/app/api/v1/rerank/route.js.nft.json +1 -1
  244. package/app/.next/server/app/api/v1/rerank/route_client-reference-manifest.js +1 -1
  245. package/app/.next/server/app/api/v1/responses/route.js +1 -1
  246. package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
  247. package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
  248. package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
  249. package/app/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
  250. package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  251. package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
  252. package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
  253. package/app/.next/server/app/callback/page.js +2 -2
  254. package/app/.next/server/app/callback/page.js.nft.json +1 -1
  255. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  256. package/app/.next/server/app/docs/page.js +1 -1
  257. package/app/.next/server/app/docs/page.js.nft.json +1 -1
  258. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  259. package/app/.next/server/app/forbidden/page.js +2 -2
  260. package/app/.next/server/app/forbidden/page.js.nft.json +1 -1
  261. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
  262. package/app/.next/server/app/forgot-password/page.js +2 -2
  263. package/app/.next/server/app/forgot-password/page.js.nft.json +1 -1
  264. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  265. package/app/.next/server/app/landing/page.js +1 -1
  266. package/app/.next/server/app/landing/page.js.nft.json +1 -1
  267. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  268. package/app/.next/server/app/login/page.js +2 -2
  269. package/app/.next/server/app/login/page.js.nft.json +1 -1
  270. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  271. package/app/.next/server/app/page.js +1 -1
  272. package/app/.next/server/app/page.js.nft.json +1 -1
  273. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  274. package/app/.next/server/app/privacy/page.js +1 -1
  275. package/app/.next/server/app/privacy/page.js.nft.json +1 -1
  276. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  277. package/app/.next/server/app/terms/page.js +1 -1
  278. package/app/.next/server/app/terms/page.js.nft.json +1 -1
  279. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  280. package/app/.next/server/app-paths-manifest.json +26 -26
  281. package/app/.next/server/chunks/1259.js +2 -0
  282. package/app/.next/server/chunks/1960.js +1 -0
  283. package/app/.next/server/chunks/1990.js +1 -0
  284. package/app/.next/server/chunks/2767.js +2 -2
  285. package/app/.next/server/chunks/2901.js +2 -2
  286. package/app/.next/server/chunks/3447.js +1 -1
  287. package/app/.next/server/chunks/3498.js +39 -0
  288. package/app/.next/server/chunks/3596.js +1 -1
  289. package/app/.next/server/chunks/3699.js +1 -1
  290. package/app/.next/server/chunks/{1079.js → 3875.js} +3 -1
  291. package/app/.next/server/chunks/4509.js +1 -0
  292. package/app/.next/server/chunks/5248.js +1 -1
  293. package/app/.next/server/chunks/5573.js +1 -1
  294. package/app/.next/server/chunks/7544.js +1 -1
  295. package/app/.next/server/chunks/7669.js +1 -3
  296. package/app/.next/server/chunks/8020.js +1 -1
  297. package/app/.next/server/chunks/9340.js +1 -0
  298. package/app/.next/server/chunks/9342.js +1 -1
  299. package/app/.next/server/chunks/9824.js +3 -3
  300. package/app/.next/server/instrumentation.js +1 -1
  301. package/app/.next/server/middleware.js +1 -1
  302. package/app/.next/server/pages/500.html +2 -2
  303. package/app/.next/server/pages-manifest.json +0 -1
  304. package/app/.next/server/server-reference-manifest.js +1 -1
  305. package/app/.next/server/server-reference-manifest.json +1 -1
  306. package/app/.next/static/chunks/3418-66271bd83bd2e66a.js +3 -0
  307. package/app/.next/static/chunks/5846-756d72eb0e01a60c.js +2 -0
  308. package/app/.next/static/chunks/{1149-fefe7f95f0e9842f.js → 6458-085536744d592424.js} +1 -1
  309. package/app/.next/static/chunks/993-961f6e199b93539a.js +21 -0
  310. package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/page-3fcbbdb2221f0b0c.js +1 -0
  311. package/app/.next/static/chunks/app/(dashboard)/dashboard/api-manager/page-d806e4f28c15636a.js +1 -0
  312. package/app/.next/static/chunks/app/(dashboard)/dashboard/audit-log/page-27bc511cf3930e1e.js +1 -0
  313. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/{page-918d5f38d5cdbbc2.js → page-012be9f38cda4c4a.js} +4 -4
  314. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/page-ede2315b6918315e.js +1 -0
  315. package/app/.next/static/chunks/app/(dashboard)/dashboard/costs/page-f256689b8410bd74.js +1 -0
  316. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-6e4f3ca7ac9778be.js +1 -0
  317. package/app/.next/static/chunks/app/(dashboard)/dashboard/health/page-8725f1a181e558a3.js +1 -0
  318. package/app/.next/static/chunks/app/(dashboard)/dashboard/limits/page-a5a48afa8c125ada.js +1 -0
  319. package/app/.next/static/chunks/app/(dashboard)/dashboard/logs/page-6ee69634597daee0.js +1 -0
  320. package/app/.next/static/chunks/app/(dashboard)/dashboard/onboarding/page-931fa0c45dca76c9.js +1 -0
  321. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-04bc41f9e9de17ef.js +1 -0
  322. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-62c6fceede3a5549.js +1 -0
  323. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/page-2dc2a865e90681dd.js +1 -0
  324. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-ac85ce5066cd9044.js +1 -0
  325. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-88cac9e6f2fbe335.js +1 -0
  326. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/pricing/page-77158451270c1852.js +1 -0
  327. package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/page-75c8b38a55e13042.js +4 -0
  328. package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/{page-51a813eac9d71eed.js → page-f0809c7842e4f5b4.js} +1 -1
  329. package/app/.next/static/chunks/app/(dashboard)/layout-b23c2c5427e04dcf.js +1 -0
  330. package/app/.next/static/chunks/app/callback/page-e439cd5a287000d8.js +1 -0
  331. package/app/.next/static/chunks/app/forbidden/page-4a39fedc08aaaf55.js +1 -0
  332. package/app/.next/static/chunks/app/forgot-password/page-057ea91c6f140e0b.js +1 -0
  333. package/app/.next/static/chunks/app/layout-108592eafb959363.js +1 -0
  334. package/app/.next/static/chunks/app/login/page-c1d7bfab91a7877c.js +1 -0
  335. package/app/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
  336. package/app/package.json +2 -1
  337. package/app/server.js +1 -1
  338. package/package.json +2 -1
  339. package/app/.next/server/app/_not-found.html +0 -1
  340. package/app/.next/server/app/_not-found.meta +0 -16
  341. package/app/.next/server/app/_not-found.rsc +0 -23
  342. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +0 -23
  343. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +0 -6
  344. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +0 -10
  345. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +0 -9
  346. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +0 -4
  347. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +0 -5
  348. package/app/.next/server/app/callback.html +0 -1
  349. package/app/.next/server/app/callback.meta +0 -15
  350. package/app/.next/server/app/callback.rsc +0 -24
  351. package/app/.next/server/app/callback.segments/_full.segment.rsc +0 -24
  352. package/app/.next/server/app/callback.segments/_head.segment.rsc +0 -6
  353. package/app/.next/server/app/callback.segments/_index.segment.rsc +0 -10
  354. package/app/.next/server/app/callback.segments/_tree.segment.rsc +0 -5
  355. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +0 -9
  356. package/app/.next/server/app/callback.segments/callback.segment.rsc +0 -4
  357. package/app/.next/server/app/dashboard/analytics.html +0 -2
  358. package/app/.next/server/app/dashboard/analytics.meta +0 -17
  359. package/app/.next/server/app/dashboard/analytics.rsc +0 -26
  360. package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics/__PAGE__.segment.rsc +0 -9
  361. package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics.segment.rsc +0 -5
  362. package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -4
  363. package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -5
  364. package/app/.next/server/app/dashboard/analytics.segments/_full.segment.rsc +0 -26
  365. package/app/.next/server/app/dashboard/analytics.segments/_head.segment.rsc +0 -6
  366. package/app/.next/server/app/dashboard/analytics.segments/_index.segment.rsc +0 -10
  367. package/app/.next/server/app/dashboard/analytics.segments/_tree.segment.rsc +0 -5
  368. package/app/.next/server/app/dashboard/api-manager.html +0 -1
  369. package/app/.next/server/app/dashboard/api-manager.meta +0 -17
  370. package/app/.next/server/app/dashboard/api-manager.rsc +0 -22
  371. package/app/.next/server/app/dashboard/api-manager.segments/!KGRhc2hib2FyZCk/dashboard/api-manager/__PAGE__.segment.rsc +0 -6
  372. package/app/.next/server/app/dashboard/api-manager.segments/!KGRhc2hib2FyZCk/dashboard/api-manager.segment.rsc +0 -4
  373. package/app/.next/server/app/dashboard/api-manager.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -4
  374. package/app/.next/server/app/dashboard/api-manager.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -5
  375. package/app/.next/server/app/dashboard/api-manager.segments/_full.segment.rsc +0 -22
  376. package/app/.next/server/app/dashboard/api-manager.segments/_head.segment.rsc +0 -6
  377. package/app/.next/server/app/dashboard/api-manager.segments/_index.segment.rsc +0 -10
  378. package/app/.next/server/app/dashboard/api-manager.segments/_tree.segment.rsc +0 -5
  379. package/app/.next/server/app/dashboard/audit-log.html +0 -1
  380. package/app/.next/server/app/dashboard/audit-log.meta +0 -17
  381. package/app/.next/server/app/dashboard/audit-log.rsc +0 -25
  382. package/app/.next/server/app/dashboard/audit-log.segments/!KGRhc2hib2FyZCk/dashboard/audit-log/__PAGE__.segment.rsc +0 -9
  383. package/app/.next/server/app/dashboard/audit-log.segments/!KGRhc2hib2FyZCk/dashboard/audit-log.segment.rsc +0 -4
  384. package/app/.next/server/app/dashboard/audit-log.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -4
  385. package/app/.next/server/app/dashboard/audit-log.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -5
  386. package/app/.next/server/app/dashboard/audit-log.segments/_full.segment.rsc +0 -25
  387. package/app/.next/server/app/dashboard/audit-log.segments/_head.segment.rsc +0 -6
  388. package/app/.next/server/app/dashboard/audit-log.segments/_index.segment.rsc +0 -10
  389. package/app/.next/server/app/dashboard/audit-log.segments/_tree.segment.rsc +0 -5
  390. package/app/.next/server/app/dashboard/cli-tools.html +0 -1
  391. package/app/.next/server/app/dashboard/cli-tools.meta +0 -17
  392. package/app/.next/server/app/dashboard/cli-tools.rsc +0 -23
  393. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +0 -6
  394. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +0 -4
  395. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -4
  396. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -5
  397. package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +0 -23
  398. package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +0 -6
  399. package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +0 -10
  400. package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +0 -5
  401. package/app/.next/server/app/dashboard/combos.html +0 -1
  402. package/app/.next/server/app/dashboard/combos.meta +0 -17
  403. package/app/.next/server/app/dashboard/combos.rsc +0 -25
  404. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +0 -9
  405. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +0 -4
  406. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -4
  407. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -5
  408. package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +0 -25
  409. package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +0 -6
  410. package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +0 -10
  411. package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +0 -5
  412. package/app/.next/server/app/dashboard/costs.html +0 -1
  413. package/app/.next/server/app/dashboard/costs.meta +0 -17
  414. package/app/.next/server/app/dashboard/costs.rsc +0 -25
  415. package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk/dashboard/costs/__PAGE__.segment.rsc +0 -9
  416. package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk/dashboard/costs.segment.rsc +0 -4
  417. package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -4
  418. package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -5
  419. package/app/.next/server/app/dashboard/costs.segments/_full.segment.rsc +0 -25
  420. package/app/.next/server/app/dashboard/costs.segments/_head.segment.rsc +0 -6
  421. package/app/.next/server/app/dashboard/costs.segments/_index.segment.rsc +0 -10
  422. package/app/.next/server/app/dashboard/costs.segments/_tree.segment.rsc +0 -5
  423. package/app/.next/server/app/dashboard/endpoint.html +0 -1
  424. package/app/.next/server/app/dashboard/endpoint.meta +0 -17
  425. package/app/.next/server/app/dashboard/endpoint.rsc +0 -23
  426. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +0 -6
  427. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +0 -4
  428. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -4
  429. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -5
  430. package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +0 -23
  431. package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +0 -6
  432. package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +0 -10
  433. package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +0 -5
  434. package/app/.next/server/app/dashboard/health.html +0 -1
  435. package/app/.next/server/app/dashboard/health.meta +0 -17
  436. package/app/.next/server/app/dashboard/health.rsc +0 -25
  437. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard/health/__PAGE__.segment.rsc +0 -9
  438. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard/health.segment.rsc +0 -4
  439. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -4
  440. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -5
  441. package/app/.next/server/app/dashboard/health.segments/_full.segment.rsc +0 -25
  442. package/app/.next/server/app/dashboard/health.segments/_head.segment.rsc +0 -6
  443. package/app/.next/server/app/dashboard/health.segments/_index.segment.rsc +0 -10
  444. package/app/.next/server/app/dashboard/health.segments/_tree.segment.rsc +0 -5
  445. package/app/.next/server/app/dashboard/limits.html +0 -2
  446. package/app/.next/server/app/dashboard/limits.meta +0 -17
  447. package/app/.next/server/app/dashboard/limits.rsc +0 -25
  448. package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk/dashboard/limits/__PAGE__.segment.rsc +0 -9
  449. package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk/dashboard/limits.segment.rsc +0 -4
  450. package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -4
  451. package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -5
  452. package/app/.next/server/app/dashboard/limits.segments/_full.segment.rsc +0 -25
  453. package/app/.next/server/app/dashboard/limits.segments/_head.segment.rsc +0 -6
  454. package/app/.next/server/app/dashboard/limits.segments/_index.segment.rsc +0 -10
  455. package/app/.next/server/app/dashboard/limits.segments/_tree.segment.rsc +0 -5
  456. package/app/.next/server/app/dashboard/logs.html +0 -1
  457. package/app/.next/server/app/dashboard/logs.meta +0 -17
  458. package/app/.next/server/app/dashboard/logs.rsc +0 -25
  459. package/app/.next/server/app/dashboard/logs.segments/!KGRhc2hib2FyZCk/dashboard/logs/__PAGE__.segment.rsc +0 -9
  460. package/app/.next/server/app/dashboard/logs.segments/!KGRhc2hib2FyZCk/dashboard/logs.segment.rsc +0 -4
  461. package/app/.next/server/app/dashboard/logs.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -4
  462. package/app/.next/server/app/dashboard/logs.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -5
  463. package/app/.next/server/app/dashboard/logs.segments/_full.segment.rsc +0 -25
  464. package/app/.next/server/app/dashboard/logs.segments/_head.segment.rsc +0 -6
  465. package/app/.next/server/app/dashboard/logs.segments/_index.segment.rsc +0 -10
  466. package/app/.next/server/app/dashboard/logs.segments/_tree.segment.rsc +0 -5
  467. package/app/.next/server/app/dashboard/onboarding.html +0 -1
  468. package/app/.next/server/app/dashboard/onboarding.meta +0 -17
  469. package/app/.next/server/app/dashboard/onboarding.rsc +0 -25
  470. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard/onboarding/__PAGE__.segment.rsc +0 -9
  471. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard/onboarding.segment.rsc +0 -4
  472. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -4
  473. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -5
  474. package/app/.next/server/app/dashboard/onboarding.segments/_full.segment.rsc +0 -25
  475. package/app/.next/server/app/dashboard/onboarding.segments/_head.segment.rsc +0 -6
  476. package/app/.next/server/app/dashboard/onboarding.segments/_index.segment.rsc +0 -10
  477. package/app/.next/server/app/dashboard/onboarding.segments/_tree.segment.rsc +0 -5
  478. package/app/.next/server/app/dashboard/profile.html +0 -1
  479. package/app/.next/server/app/dashboard/profile.meta +0 -19
  480. package/app/.next/server/app/dashboard/profile.rsc +0 -22
  481. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +0 -6
  482. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +0 -4
  483. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -4
  484. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -5
  485. package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +0 -22
  486. package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +0 -6
  487. package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +0 -10
  488. package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +0 -5
  489. package/app/.next/server/app/dashboard/providers/new.html +0 -2
  490. package/app/.next/server/app/dashboard/providers/new.meta +0 -18
  491. package/app/.next/server/app/dashboard/providers/new.rsc +0 -27
  492. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +0 -9
  493. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +0 -4
  494. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +0 -6
  495. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -4
  496. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -5
  497. package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +0 -27
  498. package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +0 -6
  499. package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +0 -10
  500. package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +0 -5
  501. package/app/.next/server/app/dashboard/providers.html +0 -2
  502. package/app/.next/server/app/dashboard/providers.meta +0 -17
  503. package/app/.next/server/app/dashboard/providers.rsc +0 -27
  504. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +0 -9
  505. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +0 -6
  506. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -4
  507. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -5
  508. package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +0 -27
  509. package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +0 -6
  510. package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +0 -10
  511. package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +0 -5
  512. package/app/.next/server/app/dashboard/settings/pricing.html +0 -2
  513. package/app/.next/server/app/dashboard/settings/pricing.meta +0 -18
  514. package/app/.next/server/app/dashboard/settings/pricing.rsc +0 -27
  515. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing/__PAGE__.segment.rsc +0 -9
  516. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing.segment.rsc +0 -4
  517. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings.segment.rsc +0 -6
  518. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -4
  519. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -5
  520. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +0 -27
  521. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +0 -6
  522. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +0 -10
  523. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +0 -5
  524. package/app/.next/server/app/dashboard/settings.html +0 -1
  525. package/app/.next/server/app/dashboard/settings.meta +0 -17
  526. package/app/.next/server/app/dashboard/settings.rsc +0 -27
  527. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard/settings/__PAGE__.segment.rsc +0 -9
  528. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard/settings.segment.rsc +0 -6
  529. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -4
  530. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -5
  531. package/app/.next/server/app/dashboard/settings.segments/_full.segment.rsc +0 -27
  532. package/app/.next/server/app/dashboard/settings.segments/_head.segment.rsc +0 -6
  533. package/app/.next/server/app/dashboard/settings.segments/_index.segment.rsc +0 -10
  534. package/app/.next/server/app/dashboard/settings.segments/_tree.segment.rsc +0 -5
  535. package/app/.next/server/app/dashboard/translator.html +0 -19
  536. package/app/.next/server/app/dashboard/translator.meta +0 -17
  537. package/app/.next/server/app/dashboard/translator.rsc +0 -22
  538. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +0 -6
  539. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +0 -4
  540. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -4
  541. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -5
  542. package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +0 -22
  543. package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +0 -6
  544. package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +0 -10
  545. package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +0 -5
  546. package/app/.next/server/app/dashboard/usage.html +0 -1
  547. package/app/.next/server/app/dashboard/usage.meta +0 -17
  548. package/app/.next/server/app/dashboard/usage.rsc +0 -25
  549. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +0 -9
  550. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +0 -4
  551. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -4
  552. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -5
  553. package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +0 -25
  554. package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +0 -6
  555. package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +0 -10
  556. package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +0 -5
  557. package/app/.next/server/app/docs.html +0 -1
  558. package/app/.next/server/app/docs.meta +0 -15
  559. package/app/.next/server/app/docs.rsc +0 -88
  560. package/app/.next/server/app/docs.segments/_full.segment.rsc +0 -88
  561. package/app/.next/server/app/docs.segments/_head.segment.rsc +0 -6
  562. package/app/.next/server/app/docs.segments/_index.segment.rsc +0 -10
  563. package/app/.next/server/app/docs.segments/_tree.segment.rsc +0 -5
  564. package/app/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +0 -67
  565. package/app/.next/server/app/docs.segments/docs.segment.rsc +0 -4
  566. package/app/.next/server/app/forbidden.html +0 -1
  567. package/app/.next/server/app/forbidden.meta +0 -15
  568. package/app/.next/server/app/forbidden.rsc +0 -24
  569. package/app/.next/server/app/forbidden.segments/_full.segment.rsc +0 -24
  570. package/app/.next/server/app/forbidden.segments/_head.segment.rsc +0 -6
  571. package/app/.next/server/app/forbidden.segments/_index.segment.rsc +0 -10
  572. package/app/.next/server/app/forbidden.segments/_tree.segment.rsc +0 -5
  573. package/app/.next/server/app/forbidden.segments/forbidden/__PAGE__.segment.rsc +0 -9
  574. package/app/.next/server/app/forbidden.segments/forbidden.segment.rsc +0 -4
  575. package/app/.next/server/app/forgot-password.html +0 -1
  576. package/app/.next/server/app/forgot-password.meta +0 -15
  577. package/app/.next/server/app/forgot-password.rsc +0 -24
  578. package/app/.next/server/app/forgot-password.segments/_full.segment.rsc +0 -24
  579. package/app/.next/server/app/forgot-password.segments/_head.segment.rsc +0 -6
  580. package/app/.next/server/app/forgot-password.segments/_index.segment.rsc +0 -10
  581. package/app/.next/server/app/forgot-password.segments/_tree.segment.rsc +0 -5
  582. package/app/.next/server/app/forgot-password.segments/forgot-password/__PAGE__.segment.rsc +0 -9
  583. package/app/.next/server/app/forgot-password.segments/forgot-password.segment.rsc +0 -4
  584. package/app/.next/server/app/index.html +0 -1
  585. package/app/.next/server/app/index.meta +0 -16
  586. package/app/.next/server/app/index.rsc +0 -21
  587. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +0 -6
  588. package/app/.next/server/app/index.segments/_full.segment.rsc +0 -21
  589. package/app/.next/server/app/index.segments/_head.segment.rsc +0 -6
  590. package/app/.next/server/app/index.segments/_index.segment.rsc +0 -10
  591. package/app/.next/server/app/index.segments/_tree.segment.rsc +0 -5
  592. package/app/.next/server/app/landing.html +0 -1
  593. package/app/.next/server/app/landing.meta +0 -15
  594. package/app/.next/server/app/landing.rsc +0 -24
  595. package/app/.next/server/app/landing.segments/_full.segment.rsc +0 -24
  596. package/app/.next/server/app/landing.segments/_head.segment.rsc +0 -6
  597. package/app/.next/server/app/landing.segments/_index.segment.rsc +0 -10
  598. package/app/.next/server/app/landing.segments/_tree.segment.rsc +0 -5
  599. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +0 -9
  600. package/app/.next/server/app/landing.segments/landing.segment.rsc +0 -4
  601. package/app/.next/server/app/login.html +0 -1
  602. package/app/.next/server/app/login.meta +0 -15
  603. package/app/.next/server/app/login.rsc +0 -24
  604. package/app/.next/server/app/login.segments/_full.segment.rsc +0 -24
  605. package/app/.next/server/app/login.segments/_head.segment.rsc +0 -6
  606. package/app/.next/server/app/login.segments/_index.segment.rsc +0 -10
  607. package/app/.next/server/app/login.segments/_tree.segment.rsc +0 -5
  608. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +0 -9
  609. package/app/.next/server/app/login.segments/login.segment.rsc +0 -4
  610. package/app/.next/server/app/privacy.html +0 -1
  611. package/app/.next/server/app/privacy.meta +0 -15
  612. package/app/.next/server/app/privacy.rsc +0 -28
  613. package/app/.next/server/app/privacy.segments/_full.segment.rsc +0 -28
  614. package/app/.next/server/app/privacy.segments/_head.segment.rsc +0 -6
  615. package/app/.next/server/app/privacy.segments/_index.segment.rsc +0 -10
  616. package/app/.next/server/app/privacy.segments/_tree.segment.rsc +0 -5
  617. package/app/.next/server/app/privacy.segments/privacy/__PAGE__.segment.rsc +0 -11
  618. package/app/.next/server/app/privacy.segments/privacy.segment.rsc +0 -4
  619. package/app/.next/server/app/terms.html +0 -1
  620. package/app/.next/server/app/terms.meta +0 -15
  621. package/app/.next/server/app/terms.rsc +0 -29
  622. package/app/.next/server/app/terms.segments/_full.segment.rsc +0 -29
  623. package/app/.next/server/app/terms.segments/_head.segment.rsc +0 -6
  624. package/app/.next/server/app/terms.segments/_index.segment.rsc +0 -10
  625. package/app/.next/server/app/terms.segments/_tree.segment.rsc +0 -5
  626. package/app/.next/server/app/terms.segments/terms/__PAGE__.segment.rsc +0 -7
  627. package/app/.next/server/app/terms.segments/terms.segment.rsc +0 -4
  628. package/app/.next/server/chunks/2760.js +0 -1
  629. package/app/.next/server/chunks/438.js +0 -1
  630. package/app/.next/server/chunks/9723.js +0 -37
  631. package/app/.next/server/chunks/9979.js +0 -2
  632. package/app/.next/server/pages/404.html +0 -1
  633. package/app/.next/static/chunks/5846-8a4d88e4bc5e07f6.js +0 -2
  634. package/app/.next/static/chunks/993-4cb24412f8681dc9.js +0 -21
  635. package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/page-f8b57e41a1b6fce6.js +0 -1
  636. package/app/.next/static/chunks/app/(dashboard)/dashboard/api-manager/page-10e24238da560d00.js +0 -1
  637. package/app/.next/static/chunks/app/(dashboard)/dashboard/audit-log/page-c37f849e39b1bf02.js +0 -1
  638. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/page-f017a1a13b450ed3.js +0 -1
  639. package/app/.next/static/chunks/app/(dashboard)/dashboard/costs/page-9495b294cfe54d73.js +0 -1
  640. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-90f0a2f2cfc02a76.js +0 -1
  641. package/app/.next/static/chunks/app/(dashboard)/dashboard/health/page-58ea3e55f475ea7b.js +0 -1
  642. package/app/.next/static/chunks/app/(dashboard)/dashboard/limits/page-2a3cd7fd5ca34713.js +0 -1
  643. package/app/.next/static/chunks/app/(dashboard)/dashboard/logs/page-88e667cb7ae99420.js +0 -1
  644. package/app/.next/static/chunks/app/(dashboard)/dashboard/onboarding/page-19072ecdea202e4e.js +0 -1
  645. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-d2651dc387e7fdfd.js +0 -1
  646. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-56e8174ce9caec1b.js +0 -1
  647. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/page-200bed170f9ee2b0.js +0 -1
  648. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-7fec684a49291104.js +0 -1
  649. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-06d076294b449efb.js +0 -1
  650. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/pricing/page-1b3f14c99d3edf09.js +0 -1
  651. package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/page-775e1506821cac94.js +0 -4
  652. package/app/.next/static/chunks/app/(dashboard)/layout-cf710bbfb7c3ba11.js +0 -1
  653. package/app/.next/static/chunks/app/callback/page-5c58a06902dd94ed.js +0 -1
  654. package/app/.next/static/chunks/app/forbidden/page-86b6392f80a3ff69.js +0 -1
  655. package/app/.next/static/chunks/app/forgot-password/page-373672767bb0aae4.js +0 -1
  656. package/app/.next/static/chunks/app/layout-3375493e8f9133db.js +0 -1
  657. package/app/.next/static/chunks/app/login/page-ca4dde4376ccd169.js +0 -1
  658. /package/app/.next/static/{5wRmzcux4mm_n3yTB8RLl → oaQaCPrOo77oe3OAEMAe-}/_buildManifest.js +0 -0
  659. /package/app/.next/static/{5wRmzcux4mm_n3yTB8RLl → oaQaCPrOo77oe3OAEMAe-}/_ssgManifest.js +0 -0
@@ -1,5 +1,5 @@
1
1
  "use strict";exports.id=2767,exports.ids=[2767],exports.modules={1308:(a,b,c)=>{c.d(b,{$E:()=>n,Kr:()=>t,UE:()=>u,YO:()=>p,getAllRateLimitStatus:()=>v,mg:()=>m,rh:()=>l});var d=c(57217),e=c.n(d);c(74163);var f=c(83596),g=c(60293);let h=new Map,i=new Set,j=!1,k={maxConcurrent:10,minTime:0,reservoir:null,reservoirRefreshAmount:null,reservoirRefreshInterval:null};async function l(){if(!j){j=!0;try{let{getProviderConnections:a}=await Promise.resolve().then(c.bind(c,22901)),b=await a(),d=0,j=0;for(let a of b)if(a.rateLimitProtection)i.add(a.id),d++;else if(a.provider&&"apikey"===(0,f.oQ)(a.provider)&&a.isActive){i.add(a.id),j++;let b=`${a.provider}:${a.id}`;h.has(b)||h.set(b,new(e())({maxConcurrent:g.DEFAULT_API_LIMITS.concurrentRequests,minTime:g.DEFAULT_API_LIMITS.minTimeBetweenRequests,reservoir:g.DEFAULT_API_LIMITS.requestsPerMinute,reservoirRefreshAmount:g.DEFAULT_API_LIMITS.requestsPerMinute,reservoirRefreshInterval:6e4,id:b}))}(d>0||j>0)&&console.log(`🛡️ [RATE-LIMIT] Loaded ${d} explicit + ${j} auto-enabled (API key) protection(s)`)}catch(a){console.error("[RATE-LIMIT] Failed to load settings:",a.message)}}}function m(a){i.add(a)}function n(a){for(let[b]of(i.delete(a),h))if(b.includes(a)){let a=h.get(b);a?.disconnect(),h.delete(b)}}function o(a,b,c=null){let d=c?`${a}:${b}:${c}`:`${a}:${b}`;if(!h.has(d)){let a=new(e())({...k,id:d});a.on("queued",()=>{let b=a.counts();b.QUEUED>0&&console.log(`⏳ [RATE-LIMIT] ${d} — ${b.QUEUED} request(s) queued, ${b.RUNNING} running`)}),h.set(d,a)}return h.get(d)}async function p(a,b,c,d){return i.has(b)?o(a,b,null).schedule(d):d()}let q={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"},r={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 s(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 t(a,b,c,d,e=null){if(!i.has(b)||!c)return;let f=o(a,b,null),g="claude"===a||"anthropic"===a?r:q,h=a=>"function"==typeof c.get?c.get(a):c[a]||null,j=parseInt(h(g.limit)),k=parseInt(h(g.remaining)),l=h(g.reset),m=h(g.retryAfter),n=h(q.overLimit);if(429===d){let c=s(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"===n){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=s(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 u(a,b){let c=`${a}:${b}`,d=h.get(c);if(!d)return{enabled:i.has(b),active:!1,queued:0,running:0};let e=d.counts();return{enabled:i.has(b),active:!0,queued:e.QUEUED||0,running:e.RUNNING||0,executing:e.EXECUTING||0,done:e.DONE||0}}function v(){let a={};for(let[b,c]of h){let d=c.counts();a[b]={queued:d.QUEUED||0,running:d.RUNNING||0,executing:d.EXECUTING||0}}return a}},6327:(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})},8550:(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}},9315:(a,b,c)=>{let d;c.d(b,{Cb:()=>l,IL:()=>o,QS:()=>p,RE:()=>n,TZ:()=>q,gR:()=>k,yv:()=>m});var e=c(77598),f=c.n(e),g=c(44594),h=c(42910);let i={hits:0,misses:0,tokensSaved:0};function j(){return d||(d=new g.q({maxSize:parseInt(process.env.SEMANTIC_CACHE_MAX_SIZE||"500",10),defaultTTL:parseInt(process.env.SEMANTIC_CACHE_TTL_MS||"3600000",10)})),d}function k(a,b,c=0,d=1){var e;let g=JSON.stringify({model:a,messages:Array.isArray(e=b)?e.map(a=>({role:a.role||"user",content:"string"==typeof a.content?a.content:JSON.stringify(a.content)})):[],temperature:c,top_p:d});return f().createHash("sha256").update(g).digest("hex")}function l(a){let b=j().get(a);if(b)return i.hits++,i.tokensSaved+=b.tokensSaved||0,b.response;try{let b=(0,h.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 j().set(a,{response:d,tokensSaved:c.tokens_saved}),b.prepare("UPDATE semantic_cache SET hit_count = hit_count + 1 WHERE signature = ?").run(a),i.hits++,i.tokensSaved+=c.tokens_saved||0,d}}catch{}return i.misses++,null}function m(a,b,c,d=0,e=36e5){let g=parseInt(process.env.SEMANTIC_CACHE_TTL_MS||String(e),10);j().set(a,{response:c,tokensSaved:d},g);try{let e=(0,h.sm)(),i=f().randomUUID(),j=a.slice(0,16),k=new Date().toISOString(),l=new Date(Date.now()+g).toISOString();e.prepare(`INSERT OR REPLACE INTO semantic_cache (id, signature, model, prompt_hash, response, tokens_saved, hit_count, created_at, expires_at)
2
- VALUES (?, ?, ?, ?, ?, ?, 0, ?, ?)`).run(i,a,b,j,JSON.stringify(c),d,k,l)}catch{}}function n(){try{return(0,h.sm)().prepare("DELETE FROM semantic_cache WHERE expires_at <= datetime('now')").run().changes}catch{return 0}}function o(){j().clear();try{(0,h.sm)().prepare("DELETE FROM semantic_cache").run()}catch{}i={hits:0,misses:0,tokensSaved:0}}function p(){let a=j().getStats(),b=0;try{let a=(0,h.sm)().prepare("SELECT COUNT(*) as count FROM semantic_cache WHERE expires_at > datetime('now')").get();b=a?.count||0}catch{}let c=i.hits+i.misses;return{memoryEntries:a.size,dbEntries:b,hits:i.hits,misses:i.misses,hitRate:c>0?(i.hits/c*100).toFixed(1):"0.0",tokensSaved:i.tokensSaved}}function q(a,b){return b?.get?.("x-omniroute-no-cache")!=="true"&&!1===a.stream&&(a.temperature??0)===0}},9686:(a,b,c)=>{c.d(b,{eU:()=>i,vN:()=>h});var d=c(83779),e=c(22901),f=c(87068);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}},12767:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{P:()=>z});var e=c(21020),f=c(13961),g=c(32113),h=c(69590),i=c(71861),j=c(17669),k=c(60293),l=c(23969),m=c(76340),n=c(83779),o=c(9686),p=c(22901),q=c(34493),r=c(26510),s=c(77458),t=c(12620),u=c(20864),v=c(44057),w=c(59545),x=c(78790),y=a([h]);async function z(a,b=null){let c,d=(0,w.KZ)(),g=new v.TT(d);try{g.startPhase("parse"),c=await a.json(),g.endPhase()}catch{return n.warn("CHAT","Invalid JSON body"),(0,i.yj)(k.gx.BAD_REQUEST,"Invalid JSON body")}g.startPhase("validate");let h=(0,s.Jh)(c,n);if(h.blocked)return n.warn("SANITIZER","Request blocked due to prompt injection",{detections:h.detections}),(0,i.yj)(k.gx.BAD_REQUEST,"Request rejected: suspicious content detected");h.modified&&h.sanitizedBody&&(c=h.sanitizedBody),g.endPhase(),b||(b={endpoint:new URL(a.url).pathname,body:c,headers:Object.fromEntries(a.headers.entries())});let l=new URL(a.url),m=c.model,o=c.messages?.length||c.input?.length||0,q=c.tools?.length||0,r=c.reasoning_effort||c.reasoning?.effort||null;n.request("POST",`${l.pathname} | ${m} | ${o} msgs${q?` | ${q} tools`:""}${r?` | effort=${r}`:""}`);let t=a.headers.get("Authorization"),y=(0,e.Tr)(a),B=null;if(t&&y){let a=n.maskKey(y);n.debug("AUTH",`API Key: ${a}`);try{B=await (0,p.v9)(y)}catch{B=null}}else n.debug("AUTH","No API key provided (local mode)");if("true"===process.env.REQUIRE_API_KEY){if(!y)return n.warn("AUTH","Missing API key while REQUIRE_API_KEY=true"),(0,i.yj)(k.gx.UNAUTHORIZED,"Missing API key");if(!await (0,e.kI)(y))return n.warn("AUTH","Invalid API key while REQUIRE_API_KEY=true"),(0,i.yj)(k.gx.UNAUTHORIZED,"Invalid API key")}if(!m)return n.warn("CHAT","Missing model"),(0,i.yj)(k.gx.BAD_REQUEST,"Missing model");if(g.startPhase("policy"),B?.id)try{let a=(0,x.Ik)(B.id);if(!a.allowed)return n.warn("BUDGET",`API key ${B.id} exceeded budget: ${a.reason}`),(0,i.yj)(429,a.reason||"Budget limit exceeded")}catch{}g.endPhase(),g.startPhase("resolve");let C=await (0,f.$m)(m);if(C){n.info("CHAT",`Combo "${m}" [${C.strategy||"priority"}] with ${C.models.length} models`);let d=async a=>{let b=await (0,f.mA)(a),c=b.provider;if(!c)return!0;if(!(0,u.fj)(c,b.model||a))return n.debug("AVAILABILITY",`${c}/${b.model} in cooldown, skipping`),!1;let d=await (0,e.c1)(c);return!!d&&!d.allRateLimited},[h,i]=await Promise.all([(0,p.V7)().catch(()=>({})),(0,p.Uv)().catch(()=>[])]);g.endPhase();let k=await (0,j.Pr)({body:c,combo:C,handleSingleModel:(c,d)=>A(c,d,b,a,C.name,B,g),isModelAvailable:d,log:n,settings:h,allCombos:i});return(0,v.N3)(g),k}g.endPhase();let D=await A(c,m,b,a,null,B,g);return(0,v.N3)(g),D}async function A(a,b,c=null,d=null,f=null,g=null,h=null){var j,l;let m=await B(b,a);if(m.error)return m.error;let{provider:p,model:s,sourceFormat:v,targetFormat:w}=m,y=(j=p,l=s,(0,u.fj)(j,l)?(0,t.getCircuitBreaker)(j,{failureThreshold:5,resetTimeout:3e4,onStateChange:(a,b,c)=>n.info("CIRCUIT",`${a}: ${b} → ${c}`)}).canExecute()?null:(n.warn("CIRCUIT",`Circuit breaker OPEN for ${j}, rejecting request`),(0,i.wO)(k.gx.SERVICE_UNAVAILABLE,`Provider ${j} circuit breaker is open`,30)):(n.warn("AVAILABILITY",`${j}/${l} is in cooldown, rejecting request`),(0,i.wO)(k.gx.SERVICE_UNAVAILABLE,`Model ${j}/${l} is temporarily unavailable (cooldown)`,30)));if(y)return y;let z=(0,t.getCircuitBreaker)(p,{failureThreshold:5,resetTimeout:3e4,onStateChange:(a,b,c)=>n.info("CIRCUIT",`${a}: ${b} → ${c}`)}),E=d?.headers?.get("user-agent")||"",F=null,G=null,H=null;for(;;){let b=await (0,e.c1)(p,F);if(!b||b.allRateLimited)return function(a,b,c,d,e,f){if(a?.allRateLimited){let b=e||a.lastError||"Unavailable",g=f||Number(a.lastErrorCode)||k.gx.SERVICE_UNAVAILABLE;return n.warn("CHAT",`[${c}/${d}] ${b} (${a.retryAfterHuman})`),(0,i.wO)(g,`[${c}/${d}] ${b}`,a.retryAfter,a.retryAfterHuman)}return b?(n.warn("CHAT","No more accounts available",{provider:c}),(0,i.yj)(f||k.gx.SERVICE_UNAVAILABLE,e||"All accounts unavailable")):(n.error("AUTH",`No credentials for provider: ${c}`),(0,i.yj)(k.gx.BAD_REQUEST,`No credentials for provider: ${c}`))}(b,F,p,s,G,H);let d=b.connectionId.slice(0,8);n.info("AUTH",`Using ${p} account: ${d}...`);let j=await (0,o.eU)(p,b),l=await D(b.connectionId),m=Date.now();h&&h.startPhase("connect");let{result:t,tlsFingerprintUsed:y}=await C({breaker:z,body:a,provider:p,model:s,refreshedCredentials:j,proxyInfo:l,log:n,clientRawRequest:c,credentials:b,apiKeyInfo:g,userAgent:E,comboName:f});h&&h.endPhase();let A=Date.now()-m;if(function({result:a,proxyInfo:b,proxyLatency:c,provider:d,model:e,sourceFormat:f,targetFormat:g,credentials:h,comboName:i,clientRawRequest:j,tlsFingerprintUsed:k=!1}){try{(0,q.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,tlsFingerprint:k})}catch{}try{(0,r.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:t,proxyInfo:l,proxyLatency:A,provider:p,model:s,sourceFormat:v,targetFormat:w,credentials:b,comboName:f,clientRawRequest:c,tlsFingerprintUsed:y}),t.success)return function(a,b){if(a?.id)try{let c=b.usage||{},d=((c.prompt_tokens||0)+(c.completion_tokens||0))*1e-6;d>0&&(0,x.n5)(a.id,d)}catch{}}(g,t),h&&h.startPhase("finalize"),h&&h.endPhase(),t.response;(429===t.status||503===t.status)&&((0,u.gC)(p,s,6e4,`HTTP ${t.status}`),n.info("AVAILABILITY",`${p}/${s} marked unavailable for 60s (HTTP ${t.status})`));let{shouldFallback:B}=await (0,e.vk)(b.connectionId,t.status,t.error,p);if(B){n.warn("AUTH",`Account ${d}... unavailable (${t.status}), trying fallback`),F=b.connectionId,G=t.error,H=t.status;continue}return t.response}}async function B(a,b){let c=await (0,f.mA)(a);if(!c.provider){if("ambiguous_model"===c.errorType){let b=c.errorMessage||`Ambiguous model '${a}'. Use provider/model prefix (ex: gh/${a} or cc/${a}).`;return n.warn("CHAT",b,{model:a,candidates:c.candidateAliases||c.candidateProviders||[]}),{error:(0,i.yj)(k.gx.BAD_REQUEST,b)}}return n.warn("CHAT","Invalid model format",{model:a}),{error:(0,i.yj)(k.gx.BAD_REQUEST,"Invalid model format")}}let{provider:d,model:e}=c,h=(0,g.Tz)(b),j=l.PROVIDER_ID_TO_ALIAS[d]||d,m=(0,l.ux)(j,e)||(0,g.jJ)(d);return a!==`${d}/${e}`?n.info("ROUTING",`${a} → ${d}/${e}`):n.info("ROUTING",`Provider: ${d}, Model: ${e}`),{provider:d,model:e,sourceFormat:h,targetFormat:m}}async function C({breaker:a,body:b,provider:c,model:d,refreshedCredentials:f,proxyInfo:g,log:j,clientRawRequest:l,credentials:p,apiKeyInfo:q,userAgent:r,comboName:s}){try{let i=()=>(0,m.jf)(g?.proxy||null,()=>(0,h.w)({body:{...b,model:`${c}/${d}`},modelInfo:{provider:c,model:d},credentials:f,log:j,clientRawRequest:l,connectionId:p.connectionId,apiKeyInfo:q,userAgent:r,comboName:s,onCredentialsRefreshed:async a=>{await (0,o.vN)(p.connectionId,{accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData,testStatus:"active"})},onRequestSuccess:async()=>{await (0,e.Pt)(p.connectionId,p)}}));if(!g?.proxy&&(0,m.Wk)()){let b=await a.execute(async()=>(0,m.qT)(i));return{result:b.result,tlsFingerprintUsed:b.tlsFingerprintUsed}}return{result:await a.execute(i),tlsFingerprintUsed:!1}}catch(a){if(a instanceof t.ez)return n.warn("CIRCUIT",`${c} circuit open during retry: ${a.message}`),{result:{success:!1,response:(0,i.wO)(k.gx.SERVICE_UNAVAILABLE,`Provider ${c} circuit breaker is open`,Math.ceil(a.retryAfterMs/1e3)),status:k.gx.SERVICE_UNAVAILABLE},tlsFingerprintUsed:!1};throw a}}async function D(a){try{return await (0,p.YD)(a)}catch(a){return n.debug("PROXY",`Failed to resolve proxy: ${a.message}`),null}}h=(y.then?(await y)():y)[0],d()}catch(a){d(a)}})},13961:(a,b,c)=>{c.d(b,{$m:()=>g,mA:()=>f});var d=c(22901),e=c(99939);async function f(a){let b=(0,e.Xh)(a);if(b.providerAlias||b.provider){let a=b.providerAlias||b.provider,c=(await (0,d.Fh)({type:"openai-compatible"})).find(b=>b.prefix===a);if(c)return{provider:c.id,model:b.model};let e=(await (0,d.Fh)({type:"anthropic-compatible"})).find(b=>b.prefix===a);if(e)return{provider:e.id,model:b.model}}return b.isAlias?(0,e.js)(a,d.OM):(0,e.js)(a,null)}async function g(a){let b=await (0,d.Dj)(a);return b&&b.models&&b.models.length>0?b:null}},20864:(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}},26510:(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})},26695:(a,b,c)=>{c.d(b,{lm:()=>g.lm,l2:()=>q,i5:()=>p,v8:()=>j});var d=c(89575),e=c(55120),f=c(27230),g=c(50101);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
+ VALUES (?, ?, ?, ?, ?, ?, 0, ?, ?)`).run(i,a,b,j,JSON.stringify(c),d,k,l)}catch{}}function n(){try{return(0,h.sm)().prepare("DELETE FROM semantic_cache WHERE expires_at <= datetime('now')").run().changes}catch{return 0}}function o(){j().clear();try{(0,h.sm)().prepare("DELETE FROM semantic_cache").run()}catch{}i={hits:0,misses:0,tokensSaved:0}}function p(){let a=j().getStats(),b=0;try{let a=(0,h.sm)().prepare("SELECT COUNT(*) as count FROM semantic_cache WHERE expires_at > datetime('now')").get();b=a?.count||0}catch{}let c=i.hits+i.misses;return{memoryEntries:a.size,dbEntries:b,hits:i.hits,misses:i.misses,hitRate:c>0?(i.hits/c*100).toFixed(1):"0.0",tokensSaved:i.tokensSaved}}function q(a,b){return b?.get?.("x-omniroute-no-cache")!=="true"&&!1===a.stream&&(a.temperature??0)===0}},9686:(a,b,c)=>{c.d(b,{eU:()=>i,vN:()=>h});var d=c(83779),e=c(22901),f=c(87068);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}},12767:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{P:()=>A});var e=c(21020),f=c(13961),g=c(32113),h=c(69590),i=c(71861),j=c(17669),k=c(60293),l=c(23969),m=c(76340),n=c(83779),o=c(9686),p=c(22901),q=c(34493),r=c(26510),s=c(77458),t=c(12620),u=c(20864),v=c(44057),w=c(59545),x=c(78790),y=c(70884),z=a([h]);async function A(a,b=null){let c,d=(0,w.KZ)(),g=new v.TT(d);try{g.startPhase("parse"),c=await a.json(),g.endPhase()}catch{return n.warn("CHAT","Invalid JSON body"),(0,i.yj)(k.gx.BAD_REQUEST,"Invalid JSON body")}g.startPhase("validate");let h=(0,s.Jh)(c,n);if(h.blocked)return n.warn("SANITIZER","Request blocked due to prompt injection",{detections:h.detections}),(0,i.yj)(k.gx.BAD_REQUEST,"Request rejected: suspicious content detected");h.modified&&h.sanitizedBody&&(c=h.sanitizedBody),g.endPhase(),b||(b={endpoint:new URL(a.url).pathname,body:c,headers:Object.fromEntries(a.headers.entries())});let l=new URL(a.url),m=c.model,o=c.messages?.length||c.input?.length||0,q=c.tools?.length||0,r=c.reasoning_effort||c.reasoning?.effort||null;n.request("POST",`${l.pathname} | ${m} | ${o} msgs${q?` | ${q} tools`:""}${r?` | effort=${r}`:""}`);let t=a.headers.get("Authorization"),x=(0,e.Tr)(a);if(t&&x?n.debug("AUTH",`API Key: ${n.maskKey(x)}`):n.debug("AUTH","No API key provided (local mode)"),"true"===process.env.REQUIRE_API_KEY){if(!x)return n.warn("AUTH","Missing API key while REQUIRE_API_KEY=true"),(0,i.yj)(k.gx.UNAUTHORIZED,"Missing API key");if(!await (0,e.kI)(x))return n.warn("AUTH","Invalid API key while REQUIRE_API_KEY=true"),(0,i.yj)(k.gx.UNAUTHORIZED,"Invalid API key")}if(!m)return n.warn("CHAT","Missing model"),(0,i.yj)(k.gx.BAD_REQUEST,"Missing model");g.startPhase("policy");let z=await (0,y.S)(a,m);if(z.rejection)return n.warn("POLICY",`API key policy rejected: ${m} (key=${z.apiKeyInfo?.id||"unknown"})`),z.rejection;let C=z.apiKeyInfo;g.endPhase(),g.startPhase("resolve");let D=await (0,f.$m)(m);if(D){n.info("CHAT",`Combo "${m}" [${D.strategy||"priority"}] with ${D.models.length} models`);let d=async a=>{let b=await (0,f.mA)(a),c=b.provider;if(!c)return!0;if(!(0,u.fj)(c,b.model||a))return n.debug("AVAILABILITY",`${c}/${b.model} in cooldown, skipping`),!1;let d=await (0,e.c1)(c);return!!d&&!d.allRateLimited},[h,i]=await Promise.all([(0,p.V7)().catch(()=>({})),(0,p.Uv)().catch(()=>[])]);g.endPhase();let k=await (0,j.Pr)({body:c,combo:D,handleSingleModel:(c,d)=>B(c,d,b,a,D.name,C,g),isModelAvailable:d,log:n,settings:h,allCombos:i});return(0,v.N3)(g),k}g.endPhase();let E=await B(c,m,b,a,null,C,g);return(0,v.N3)(g),E}async function B(a,b,c=null,d=null,f=null,g=null,h=null){var j,l;let m=await C(b,a);if(m.error)return m.error;let{provider:p,model:s,sourceFormat:v,targetFormat:w}=m,y=(j=p,l=s,(0,u.fj)(j,l)?(0,t.getCircuitBreaker)(j,{failureThreshold:5,resetTimeout:3e4,onStateChange:(a,b,c)=>n.info("CIRCUIT",`${a}: ${b} → ${c}`)}).canExecute()?null:(n.warn("CIRCUIT",`Circuit breaker OPEN for ${j}, rejecting request`),(0,i.wO)(k.gx.SERVICE_UNAVAILABLE,`Provider ${j} circuit breaker is open`,30)):(n.warn("AVAILABILITY",`${j}/${l} is in cooldown, rejecting request`),(0,i.wO)(k.gx.SERVICE_UNAVAILABLE,`Model ${j}/${l} is temporarily unavailable (cooldown)`,30)));if(y)return y;let z=(0,t.getCircuitBreaker)(p,{failureThreshold:5,resetTimeout:3e4,onStateChange:(a,b,c)=>n.info("CIRCUIT",`${a}: ${b} → ${c}`)}),A=d?.headers?.get("user-agent")||"",F=null,G=null,H=null;for(;;){let b=await (0,e.c1)(p,F);if(!b||b.allRateLimited)return function(a,b,c,d,e,f){if(a?.allRateLimited){let b=e||a.lastError||"Unavailable",g=f||Number(a.lastErrorCode)||k.gx.SERVICE_UNAVAILABLE;return n.warn("CHAT",`[${c}/${d}] ${b} (${a.retryAfterHuman})`),(0,i.wO)(g,`[${c}/${d}] ${b}`,a.retryAfter,a.retryAfterHuman)}return b?(n.warn("CHAT","No more accounts available",{provider:c}),(0,i.yj)(f||k.gx.SERVICE_UNAVAILABLE,e||"All accounts unavailable")):(n.error("AUTH",`No credentials for provider: ${c}`),(0,i.yj)(k.gx.BAD_REQUEST,`No credentials for provider: ${c}`))}(b,F,p,s,G,H);let d=b.connectionId.slice(0,8);n.info("AUTH",`Using ${p} account: ${d}...`);let j=await (0,o.eU)(p,b),l=await E(b.connectionId),m=Date.now();h&&h.startPhase("connect");let{result:t,tlsFingerprintUsed:y}=await D({breaker:z,body:a,provider:p,model:s,refreshedCredentials:j,proxyInfo:l,log:n,clientRawRequest:c,credentials:b,apiKeyInfo:g,userAgent:A,comboName:f});h&&h.endPhase();let B=Date.now()-m;if(function({result:a,proxyInfo:b,proxyLatency:c,provider:d,model:e,sourceFormat:f,targetFormat:g,credentials:h,comboName:i,clientRawRequest:j,tlsFingerprintUsed:k=!1}){try{(0,q.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,tlsFingerprint:k})}catch{}try{(0,r.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:t,proxyInfo:l,proxyLatency:B,provider:p,model:s,sourceFormat:v,targetFormat:w,credentials:b,comboName:f,clientRawRequest:c,tlsFingerprintUsed:y}),t.success)return function(a,b){if(a?.id)try{let c=b.usage||{},d=((c.prompt_tokens||0)+(c.completion_tokens||0))*1e-6;d>0&&(0,x.n5)(a.id,d)}catch{}}(g,t),h&&h.startPhase("finalize"),h&&h.endPhase(),t.response;(429===t.status||503===t.status)&&((0,u.gC)(p,s,6e4,`HTTP ${t.status}`),n.info("AVAILABILITY",`${p}/${s} marked unavailable for 60s (HTTP ${t.status})`));let{shouldFallback:C}=await (0,e.vk)(b.connectionId,t.status,t.error,p);if(C){n.warn("AUTH",`Account ${d}... unavailable (${t.status}), trying fallback`),F=b.connectionId,G=t.error,H=t.status;continue}return t.response}}async function C(a,b){let c=await (0,f.mA)(a);if(!c.provider){if("ambiguous_model"===c.errorType){let b=c.errorMessage||`Ambiguous model '${a}'. Use provider/model prefix (ex: gh/${a} or cc/${a}).`;return n.warn("CHAT",b,{model:a,candidates:c.candidateAliases||c.candidateProviders||[]}),{error:(0,i.yj)(k.gx.BAD_REQUEST,b)}}return n.warn("CHAT","Invalid model format",{model:a}),{error:(0,i.yj)(k.gx.BAD_REQUEST,"Invalid model format")}}let{provider:d,model:e}=c,h=(0,g.Tz)(b),j=l.PROVIDER_ID_TO_ALIAS[d]||d,m=(0,l.ux)(j,e)||(0,g.jJ)(d);return a!==`${d}/${e}`?n.info("ROUTING",`${a} → ${d}/${e}`):n.info("ROUTING",`Provider: ${d}, Model: ${e}`),{provider:d,model:e,sourceFormat:h,targetFormat:m}}async function D({breaker:a,body:b,provider:c,model:d,refreshedCredentials:f,proxyInfo:g,log:j,clientRawRequest:l,credentials:p,apiKeyInfo:q,userAgent:r,comboName:s}){try{let i=()=>(0,m.jf)(g?.proxy||null,()=>(0,h.w)({body:{...b,model:`${c}/${d}`},modelInfo:{provider:c,model:d},credentials:f,log:j,clientRawRequest:l,connectionId:p.connectionId,apiKeyInfo:q,userAgent:r,comboName:s,onCredentialsRefreshed:async a=>{await (0,o.vN)(p.connectionId,{accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData,testStatus:"active"})},onRequestSuccess:async()=>{await (0,e.Pt)(p.connectionId,p)}}));if(!g?.proxy&&(0,m.Wk)()){let b=await a.execute(async()=>(0,m.qT)(i));return{result:b.result,tlsFingerprintUsed:b.tlsFingerprintUsed}}return{result:await a.execute(i),tlsFingerprintUsed:!1}}catch(a){if(a instanceof t.ez)return n.warn("CIRCUIT",`${c} circuit open during retry: ${a.message}`),{result:{success:!1,response:(0,i.wO)(k.gx.SERVICE_UNAVAILABLE,`Provider ${c} circuit breaker is open`,Math.ceil(a.retryAfterMs/1e3)),status:k.gx.SERVICE_UNAVAILABLE},tlsFingerprintUsed:!1};throw a}}async function E(a){try{return await (0,p.YD)(a)}catch(a){return n.debug("PROXY",`Failed to resolve proxy: ${a.message}`),null}}h=(z.then?(await z)():z)[0],d()}catch(a){d(a)}})},13961:(a,b,c)=>{c.d(b,{$m:()=>g,mA:()=>f});var d=c(22901),e=c(99939);async function f(a){let b=(0,e.Xh)(a);if(b.providerAlias||b.provider){let a=b.providerAlias||b.provider,c=(await (0,d.Fh)({type:"openai-compatible"})).find(b=>b.prefix===a);if(c)return{provider:c.id,model:b.model};let e=(await (0,d.Fh)({type:"anthropic-compatible"})).find(b=>b.prefix===a);if(e)return{provider:e.id,model:b.model}}return b.isAlias?(0,e.js)(a,d.OM):(0,e.js)(a,null)}async function g(a){let b=await (0,d.Dj)(a);return b&&b.models&&b.models.length>0?b:null}},20864:(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}},26510:(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})},26695:(a,b,c)=>{c.d(b,{lm:()=>g.lm,l2:()=>q,i5:()=>p,v8:()=>j});var d=c(89575),e=c(55120),f=c(27230),g=c(50101);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}
3
3
  data: ${JSON.stringify(a.data)}
4
4
 
5
5
  `:(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}
@@ -23,4 +23,4 @@ data: ${JSON.stringify({tokens_generated:f,elapsed_ms:Date.now()-g})}
23
23
  `;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
24
24
  data: ${JSON.stringify({tokens_generated:f,elapsed_ms:Date.now()-g,done:!0})}
25
25
 
26
- `;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})},69590:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{w:()=>C});var e=c(95982),f=c(32113),g=c(89575),h=c(55120),i=c(26695),j=c(6327),k=c(50101),l=c(87068),m=c(89122),n=c(23969),o=c(71861),p=c(60293),q=c(82795),r=c(27230),s=c(37544),t=c(50498),u=c(8550),v=c(54745),w=c(92937),x=c(1308),y=c(9315),z=c(79335),A=c(65982),B=a([s]);async function C({body:a,modelInfo:b,credentials:c,log:d,onCredentialsRefreshed:B,onRequestSuccess:C,onDisconnect:D,clientRawRequest:E,connectionId:F,apiKeyInfo:G=null,userAgent:H,comboName:I}){let J,K,L,M,N,O,{provider:P,model:Q}=b,R=Date.now(),S=(0,z.xp)(E?.headers),T=(0,z.ic)(S);if(T)return d?.debug?.("IDEMPOTENCY",`Hit for key=${S?.slice(0,12)}...`),{success:!0,response:new Response(JSON.stringify(T.response),{status:T.status,headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":(0,e.i)(),"X-OmniRoute-Idempotent":"true"}})};await (0,x.rh)();let U=(0,f.Tz)(a),V=(E?.endpoint||"").toLowerCase().endsWith("/responses"),W=(0,q.c)(a,Q,H);if(W)return W;let X=n.PROVIDER_ID_TO_ALIAS[P]||P,Y=(0,n.ux)(X,Q)||(0,f.jJ)(P),Z=!0===a.stream;if((0,y.TZ)(a,E?.headers)){let b=(0,y.gR)(Q,a.messages,a.temperature,a.top_p),c=(0,y.Cb)(b);if(c)return d?.debug?.("CACHE",`Semantic cache HIT for ${Q}`),{success:!0,response:new Response(JSON.stringify(c),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":(0,e.i)(),"X-OmniRoute-Cache":"HIT"}})}}let $=await (0,m.q)(U,Y,Q);E&&$.logClientRawRequest(E.endpoint,E.body,E.headers),$.logRawRequest(a),d?.debug?.("FORMAT",`${U} → ${Y} | stream=${Z}`);let _=a;try{_=(0,g.GH)(U,Y,Q,a,Z,c,P,$)}catch(g){let a=Number(g?.statusCode),b=Number.isInteger(a)&&a>=400&&a<=599?a:p.gx.SERVER_ERROR,c=g?.message||"Invalid request",f="string"==typeof g?.errorType?g.errorType:null;if(d?.warn?.("TRANSLATE",`Request translation failed: ${c}`),f)return{success:!1,status:b,error:c,response:new Response(JSON.stringify({error:{message:c,type:f,code:f}}),{status:b,headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":(0,e.i)()}})};return(0,o.A1)(b,c)}let aa=_._toolNameMap;delete _._toolNameMap,_.model=Q;let ab=(0,s.SB)(P);(0,r.uw)(Q,P,F,!0),(0,r.E5)({model:Q,provider:P,connectionId:F,status:"PENDING"}).catch(()=>{});let ac=_.messages?.length||_.contents?.length||_.request?.contents?.length||0;d?.debug?.("REQUEST",`${P.toUpperCase()} | ${Q} | ${ac} msgs`);let ad=(0,j.jd)({onDisconnect:D,log:d,provider:P,model:Q});try{let a=await (0,x.YO)(P,F,Q,()=>ab.execute({model:Q,body:_,stream:Z,credentials:c,signal:ad.signal,log:d}));J=a.response,K=a.url,L=a.headers,M=a.transformedBody,$.logTargetRequest(K,L,M),(0,x.Kr)(P,F,J.headers,J.status,Q)}catch(c){if((0,r.uw)(Q,P,F,!1),(0,r.E5)({model:Q,provider:P,connectionId:F,status:`FAILED ${"AbortError"===c.name?499:p.gx.BAD_GATEWAY}`}).catch(()=>{}),(0,r.gK)({method:"POST",path:E?.endpoint||"/v1/chat/completions",status:"AbortError"===c.name?499:p.gx.BAD_GATEWAY,model:Q,provider:P,connectionId:F,duration:Date.now()-R,requestBody:a,error:c.message,sourceFormat:U,targetFormat:Y,comboName:I,apiKeyId:G?.id||null,apiKeyName:G?.name||null}).catch(()=>{}),"AbortError"===c.name)return ad.handleError(c),(0,o.A1)(499,"Request aborted");let b=(0,o.lR)(c,P,Q,p.gx.BAD_GATEWAY);return console.log(`${i.lm.red}[ERROR] ${b}${i.lm.reset}`),(0,o.A1)(p.gx.BAD_GATEWAY,b)}if(J.status===p.gx.UNAUTHORIZED||J.status===p.gx.FORBIDDEN){let a=await (0,l.qZ)(()=>ab.refreshCredentials(c,d),3,d);if(a?.accessToken||a?.copilotToken){d?.info?.("TOKEN",`${P.toUpperCase()} | refreshed`),Object.assign(c,a),B&&a&&await B(a);try{let a=await ab.execute({model:Q,body:_,stream:Z,credentials:c,signal:ad.signal,log:d});a.response.ok&&(J=a.response,K=a.url)}catch(a){d?.warn?.("TOKEN",`${P.toUpperCase()} | retry after refresh failed`)}}else d?.warn?.("TOKEN",`${P.toUpperCase()} | refresh failed`)}if(!J.ok){(0,r.uw)(Q,P,F,!1);let{statusCode:b,message:c,retryAfterMs:e}=await (0,o.zL)(J,P);(0,r.E5)({model:Q,provider:P,connectionId:F,status:`FAILED ${b}`}).catch(()=>{}),(0,r.gK)({method:"POST",path:E?.endpoint||"/v1/chat/completions",status:b,model:Q,provider:P,connectionId:F,duration:Date.now()-R,requestBody:a,error:c,sourceFormat:U,targetFormat:Y,comboName:I,apiKeyId:G?.id||null,apiKeyName:G?.name||null}).catch(()=>{});let f=(0,o.lR)(Error(c),P,Q,b);if(console.log(`${i.lm.red}[ERROR] ${f}${i.lm.reset}`),e&&"antigravity"===P){let a=Math.ceil(e/1e3);d?.debug?.("RETRY",`Antigravity quota reset in ${a}s (${e}ms)`)}return $.logError(Error(c),M||_),(0,x.Kr)(P,F,J.headers,b,Q),(0,o.A1)(b,f,e)}if(!Z){let b;(0,r.uw)(Q,P,F,!1);let c=(J.headers.get("content-type")||"").toLowerCase(),f=await J.text();if(c.includes("text/event-stream")||/(^|\n)\s*(event|data):/m.test(f)){let a=Y===h.h.OPENAI_RESPONSES?(0,v.B)(f,Q):(0,v.F)(f,Q);if(!a)return(0,r.E5)({model:Q,provider:P,connectionId:F,status:`FAILED ${p.gx.BAD_GATEWAY}`}).catch(()=>{}),(0,o.A1)(p.gx.BAD_GATEWAY,"Invalid SSE response for non-streaming request");b=a}else try{b=f?JSON.parse(f):{}}catch{return(0,r.E5)({model:Q,provider:P,connectionId:F,status:`FAILED ${p.gx.BAD_GATEWAY}`}).catch(()=>{}),(0,o.A1)(p.gx.BAD_GATEWAY,"Invalid JSON response from provider")}C&&await C();let j=(0,u.M)(b,P);if((0,r.E5)({model:Q,provider:P,connectionId:F,tokens:j,status:"200 OK"}).catch(()=>{}),(0,r.gK)({method:"POST",path:E?.endpoint||"/v1/chat/completions",status:200,model:Q,provider:P,connectionId:F,duration:Date.now()-R,tokens:j,requestBody:a,responseBody:b,sourceFormat:U,targetFormat:Y,comboName:I,apiKeyId:G?.id||null,apiKeyName:G?.name||null}).catch(()=>{}),j&&"object"==typeof j){let a=`[${new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit"})}] 📊 [USAGE] ${P.toUpperCase()} | in=${j?.prompt_tokens||0} | out=${j?.completion_tokens||0}${F?` | account=${F.slice(0,8)}...`:""}`;console.log(`${i.lm.green}${a}${i.lm.reset}`),(0,r.sZ)({provider:P||"unknown",model:Q||"unknown",tokens:j,timestamp:new Date().toISOString(),connectionId:F||void 0,apiKeyId:G?.id||void 0,apiKeyName:G?.name||void 0}).catch(a=>{console.error("Failed to save usage stats:",a.message)})}let l=(0,g.nZ)(Y,U)?(0,t.l)(b,Y,U):b;if(U===h.h.OPENAI&&(l=(0,w.LG)(l)),l?.usage){let a=(0,k.O9)(l.usage);l.usage=(0,k.WL)(a,U)}else{let b=JSON.stringify(l?.choices?.[0]?.message?.content||"").length;if(b>0){let c=(0,k.OF)(a,b,U);l.usage=(0,k.WL)(c,U)}}if((0,y.TZ)(a,E?.headers)){let b=(0,y.gR)(Q,a.messages,a.temperature,a.top_p),c=j?.prompt_tokens+j?.completion_tokens||0;(0,y.yv)(b,Q,l,c),d?.debug?.("CACHE",`Stored response for ${Q} (${c} tokens)`)}return(0,z.tm)(S,l,200),{success:!0,response:new Response(JSON.stringify(l),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":(0,e.i)(),"X-OmniRoute-Cache":"MISS"}})}}C&&await C();let ae={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","Access-Control-Allow-Origin":(0,e.i)()},af=({status:b,usage:c})=>{(0,r.gK)({method:"POST",path:E?.endpoint||"/v1/chat/completions",status:b||200,model:Q,provider:P,connectionId:F,duration:Date.now()-R,tokens:c||{},requestBody:a,sourceFormat:U,targetFormat:Y,comboName:I,apiKeyId:G?.id||null,apiKeyName:G?.name||null}).catch(()=>{})},ag=H?.toLowerCase().includes("droid")||H?.toLowerCase().includes("codex-cli");if("codex"!==P||Y!==h.h.OPENAI_RESPONSES||U!==h.h.OPENAI||V||ag?(0,g.nZ)(Y,U)?(d?.debug?.("STREAM",`Translation mode: ${Y} → ${U}`),N=(0,i.i5)(Y,U,P,$,aa,Q,F,a,af,G)):(d?.debug?.("STREAM","Standard passthrough mode"),N=(0,i.l2)(P,$,Q,F,a,af,G)):(d?.debug?.("STREAM",`Codex translation mode: openai-responses → openai`),N=(0,i.i5)("openai-responses","openai",P,$,aa,Q,F,a,af,G)),(0,A.Z)(E?.headers)){let a=(0,A.Y)({signal:ad.signal});O=(0,j.Jb)(J,N,ad).pipeThrough(a),ae["X-OmniRoute-Progress"]="enabled"}else O=(0,j.Jb)(J,N,ad);return{success:!0,response:new Response(O,{headers:ae})}}s=(B.then?(await B)():B)[0],d()}catch(a){d(a)}})},76340:(a,b,c)=>{let d;c.d(b,{Wk:()=>s,jf:()=>p,qT:()=>r});var e=c(16698),f=c(79522);try{({createSession:d}=c(22546))}catch{d=null}class g{constructor(){this.session=null,this.available=!!d}async getSession(){if(!this.available)return null;if(this.session)return this.session;let a=process.env.HTTPS_PROXY||process.env.https_proxy||process.env.HTTP_PROXY||process.env.http_proxy||process.env.ALL_PROXY||process.env.all_proxy||void 0,b={browser:"chrome_124",os:"macos"};return a&&(b.proxy=a,console.log(`[TlsClient] Using proxy: ${a}`)),this.session=await d(b),console.log("[TlsClient] Session created (Chrome 124 TLS fingerprint)"),this.session}async fetch(a,b={}){let c=await this.getSession();if(!c)throw Error("wreq-js not available");let d={method:(b.method||"GET").toUpperCase(),headers:b.headers,body:b.body,redirect:"manual"===b.redirect?"manual":"follow"};return b.signal&&(d.signal=b.signal),await c.fetch(a,d)}async exit(){this.session&&(await this.session.close(),this.session=null)}}let h=new g;function i(){return"true"===process.env.ENABLE_TLS_FINGERPRINT}let j=new e.AsyncLocalStorage,k="u">typeof caches&&"object"==typeof caches,l=Symbol.for("omniroute.proxyFetch.state"),m=(globalThis[l]||(globalThis[l]={originalFetch:globalThis.fetch,proxyContext:new e.AsyncLocalStorage,isPatched:!1}),globalThis[l]),n=m.originalFetch,o=m.proxyContext;async function p(a,b){if("function"!=typeof b)throw TypeError("runWithProxyContext requires a callback function");let c=a?(0,f.HN)(a):null;return o.run(a||null,async()=>(c&&console.log(`[ProxyFetch] Applied request proxy context: ${(0,f.OK)(c)}`),b()))}async function q(a,b={}){let c;if(b?.dispatcher)return n(a,b);let d="string"==typeof a?a:a&&"string"==typeof a.url?a.url:String(a);try{c=function(a){let b=o.getStore();if(b)return{source:"context",proxyUrl:(0,f.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,f.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:e,proxyUrl:g}=c;if(!g){if(i()&&h.available)try{let a=j.getStore();return a&&(a.used=!0),await h.fetch(d,b)}catch(c){let a=c instanceof Error?c.message:String(c);console.warn(`[ProxyFetch] TLS fingerprint failed, falling back to native fetch: ${a}`);let b=j.getStore();b&&(b.used=!1)}return n(a,b)}try{let c=(0,f.I_)(g);return await n(a,{...b,dispatcher:c})}catch(b){let a=b instanceof Error?b.message:String(b);throw console.error(`[ProxyFetch] Proxy request failed (${e}, fail-closed): ${a}`),b}}async function r(a){let b={used:!1};return{result:await j.run(b,a),tlsFingerprintUsed:b.used}}function s(){return i()&&h.available}k||m.isPatched||(globalThis.fetch=q,m.isPatched=!0)},77458:(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}},78790:(a,b,c)=>{c.d(b,{Ik:()=>i,n5:()=>h,qV:()=>f,uN:()=>j});var d=c(97917);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)}}}},79335:(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}}},79522:(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}},82795:(a,b,c)=>{c.d(b,{c:()=>j});var d=c(95982),e=c(32113),f=c(89575),g=c(55120),h=c(60293),i=c(26695);function j(a,b,c=""){if(!c.includes("claude-cli")||!a.messages?.length)return null;let m=a.messages,n=a=>"string"==typeof a?a:Array.isArray(a)?a.filter(a=>"text"===a.type).map(a=>a.text).join(" "):"",o=!1,p=m[m.length-1];if(p?.role==="assistant"&&p.content?.[0]?.text==="{"&&(o=!0),o||"Warmup"===n(m[0]?.content)&&(o=!0),o||1!==m.length||m[0]?.role!=="user"||"count"===n(m[0]?.content)&&(o=!0),!o&&h.C8?.length){let a=m.filter(a=>"user"===a.role).map(a=>n(a.content)).join(" ");h.C8.some(b=>a.includes(b))&&(o=!0)}if(!o)return null;let q=(0,e.Tz)(a);return!1!==a.stream?function(a,b){let c=k(b),e=(0,f.Ws)(a);e.model=b;let h=l(c),j=[];for(let b of h){let c=(0,f.Y8)(g.h.OPENAI,a,b,e);if(c?.length>0)for(let b of c)j.push((0,i.v8)(b,a))}let m=(0,f.Y8)(g.h.OPENAI,a,null,e);if(m?.length>0)for(let b of m)j.push((0,i.v8)(b,a));return j.push("data: [DONE]\n\n"),{success:!0,response:new Response(j.join(""),{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","Access-Control-Allow-Origin":(0,d.i)()}})}}(q,b):function(a,b){let c=k(b);if(a===g.h.OPENAI)return{success:!0,response:new Response(JSON.stringify(c),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":(0,d.i)()}})};let e=(0,f.Ws)(a);e.model=b;let h=l(c),i=[];for(let b of h){let c=(0,f.Y8)(g.h.OPENAI,a,b,e);c?.length>0&&i.push(...c)}let j=(0,f.Y8)(g.h.OPENAI,a,null,e);return j?.length>0&&i.push(...j),{success:!0,response:new Response(JSON.stringify(function(a,b){if(!a||0===a.length)return k("unknown");let c=a[a.length-1];if(b===g.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}(i,a)),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":(0,d.i)()}})}}(q,b)}function k(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 l(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}]}},89122:(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,23)),h=(g=await Promise.resolve().then(c.t.bind(c,33873,23))).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})}}}},92937:(a,b,c)=>{c.d(b,{LG:()=>g,LM:()=>j,Zb:()=>f});let d=new Set(["prompt_tokens","completion_tokens","total_tokens","prompt_tokens_details","completion_tokens_details"]),e=/<think>([\s\S]*?)<\/think>/gi;function f(a){if(!a||"string"!=typeof a)return{content:a||"",thinking:null};let b=[],c=!1,d=a.replace(e,(a,d)=>{c=!0;let e=d.trim();return e&&b.push(e),""});return c?{content:d.trim(),thinking:b.length>0?b.join("\n\n"):null}:{content:a,thinking:null}}function g(a){var b;if(!a||"object"!=typeof a)return a;let c={};return c.id=(b=a.id)&&"string"==typeof b?(b.startsWith("chatcmpl-"),b):`chatcmpl-${crypto.randomUUID().replace(/-/g,"").slice(0,29)}`,c.object=a.object||"chat.completion",c.created=a.created||Math.floor(Date.now()/1e3),c.model=a.model||"unknown",Array.isArray(a.choices)?c.choices=a.choices.map((a,b)=>{var c,d;let e;return c=a,d=b,e={index:c.index??d,finish_reason:c.finish_reason||null},c.message&&(e.message=h(c.message)),c.delta&&(e.delta=h(c.delta)),void 0!==c.logprobs&&(e.logprobs=c.logprobs),e}):c.choices=[],a.usage&&"object"==typeof a.usage&&(c.usage=i(a.usage)),a.system_fingerprint&&(c.system_fingerprint=a.system_fingerprint),c}function h(a){if(!a||"object"!=typeof a)return a;let b={};if(a.role&&(b.role=a.role),void 0!==a.refusal&&(b.refusal=a.refusal),"string"==typeof a.content){let{content:c,thinking:d}=f(a.content);b.content=c,d&&!a.reasoning_content&&(b.reasoning_content=d)}else void 0!==a.content&&(b.content=a.content);return a.reasoning_content&&!b.reasoning_content&&(b.reasoning_content=a.reasoning_content),a.tool_calls&&(b.tool_calls=a.tool_calls),a.function_call&&(b.function_call=a.function_call),b}function i(a){if(!a||"object"!=typeof a)return a;let b={};for(let c of d)void 0!==a[c]&&(b[c]=a[c]);return void 0===b.prompt_tokens&&(b.prompt_tokens=0),void 0===b.completion_tokens&&(b.completion_tokens=0),void 0===b.total_tokens&&(b.total_tokens=b.prompt_tokens+b.completion_tokens),b}function j(a){if(!a||"object"!=typeof a)return a;let b={};return void 0!==a.id&&(b.id=a.id),b.object=a.object||"chat.completion.chunk",void 0!==a.created&&(b.created=a.created),void 0!==a.model&&(b.model=a.model),Array.isArray(a.choices)&&(b.choices=a.choices.map(a=>{let b={index:a.index??0};if(void 0!==a.delta){b.delta={};let c=a.delta;void 0!==c.role&&(b.delta.role=c.role),void 0!==c.content&&(b.delta.content=c.content),void 0!==c.reasoning_content&&(b.delta.reasoning_content=c.reasoning_content),void 0!==c.tool_calls&&(b.delta.tool_calls=c.tool_calls),void 0!==c.function_call&&(b.delta.function_call=c.function_call)}return void 0!==a.finish_reason&&(b.finish_reason=a.finish_reason),void 0!==a.logprobs&&(b.logprobs=a.logprobs),b})),a.usage&&"object"==typeof a.usage&&(b.usage=i(a.usage)),a.system_fingerprint&&(b.system_fingerprint=a.system_fingerprint),b}}};
26
+ `;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})},69590:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{w:()=>C});var e=c(95982),f=c(32113),g=c(89575),h=c(55120),i=c(26695),j=c(6327),k=c(50101),l=c(87068),m=c(89122),n=c(23969),o=c(71861),p=c(60293),q=c(82795),r=c(27230),s=c(37544),t=c(50498),u=c(8550),v=c(54745),w=c(92937),x=c(1308),y=c(9315),z=c(79335),A=c(65982),B=a([s]);async function C({body:a,modelInfo:b,credentials:c,log:d,onCredentialsRefreshed:B,onRequestSuccess:C,onDisconnect:D,clientRawRequest:E,connectionId:F,apiKeyInfo:G=null,userAgent:H,comboName:I}){let J,K,L,M,N,O,{provider:P,model:Q}=b,R=Date.now(),S=(0,z.xp)(E?.headers),T=(0,z.ic)(S);if(T)return d?.debug?.("IDEMPOTENCY",`Hit for key=${S?.slice(0,12)}...`),{success:!0,response:new Response(JSON.stringify(T.response),{status:T.status,headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":(0,e.i)(),"X-OmniRoute-Idempotent":"true"}})};await (0,x.rh)();let U=(0,f.Tz)(a),V=(E?.endpoint||"").toLowerCase().endsWith("/responses"),W=(0,q.c)(a,Q,H);if(W)return W;let X=n.PROVIDER_ID_TO_ALIAS[P]||P,Y=(0,n.ux)(X,Q)||(0,f.jJ)(P),Z=!0===a.stream;if((0,y.TZ)(a,E?.headers)){let b=(0,y.gR)(Q,a.messages,a.temperature,a.top_p),c=(0,y.Cb)(b);if(c)return d?.debug?.("CACHE",`Semantic cache HIT for ${Q}`),{success:!0,response:new Response(JSON.stringify(c),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":(0,e.i)(),"X-OmniRoute-Cache":"HIT"}})}}let $=await (0,m.q)(U,Y,Q);E&&$.logClientRawRequest(E.endpoint,E.body,E.headers),$.logRawRequest(a),d?.debug?.("FORMAT",`${U} → ${Y} | stream=${Z}`);let _=a;try{_=(0,g.GH)(U,Y,Q,a,Z,c,P,$)}catch(g){let a=Number(g?.statusCode),b=Number.isInteger(a)&&a>=400&&a<=599?a:p.gx.SERVER_ERROR,c=g?.message||"Invalid request",f="string"==typeof g?.errorType?g.errorType:null;if(d?.warn?.("TRANSLATE",`Request translation failed: ${c}`),f)return{success:!1,status:b,error:c,response:new Response(JSON.stringify({error:{message:c,type:f,code:f}}),{status:b,headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":(0,e.i)()}})};return(0,o.A1)(b,c)}let aa=_._toolNameMap;delete _._toolNameMap,_.model=Q;let ab=(0,s.SB)(P);(0,r.uw)(Q,P,F,!0),(0,r.E5)({model:Q,provider:P,connectionId:F,status:"PENDING"}).catch(()=>{});let ac=_.messages?.length||_.contents?.length||_.request?.contents?.length||0;d?.debug?.("REQUEST",`${P.toUpperCase()} | ${Q} | ${ac} msgs`);let ad=(0,j.jd)({onDisconnect:D,log:d,provider:P,model:Q});try{let a=await (0,x.YO)(P,F,Q,()=>ab.execute({model:Q,body:_,stream:Z,credentials:c,signal:ad.signal,log:d}));J=a.response,K=a.url,L=a.headers,M=a.transformedBody,$.logTargetRequest(K,L,M),(0,x.Kr)(P,F,J.headers,J.status,Q)}catch(c){if((0,r.uw)(Q,P,F,!1),(0,r.E5)({model:Q,provider:P,connectionId:F,status:`FAILED ${"AbortError"===c.name?499:p.gx.BAD_GATEWAY}`}).catch(()=>{}),(0,r.gK)({method:"POST",path:E?.endpoint||"/v1/chat/completions",status:"AbortError"===c.name?499:p.gx.BAD_GATEWAY,model:Q,provider:P,connectionId:F,duration:Date.now()-R,requestBody:a,error:c.message,sourceFormat:U,targetFormat:Y,comboName:I,apiKeyId:G?.id||null,apiKeyName:G?.name||null}).catch(()=>{}),"AbortError"===c.name)return ad.handleError(c),(0,o.A1)(499,"Request aborted");let b=(0,o.lR)(c,P,Q,p.gx.BAD_GATEWAY);return console.log(`${i.lm.red}[ERROR] ${b}${i.lm.reset}`),(0,o.A1)(p.gx.BAD_GATEWAY,b)}if(J.status===p.gx.UNAUTHORIZED||J.status===p.gx.FORBIDDEN){let a=await (0,l.qZ)(()=>ab.refreshCredentials(c,d),3,d);if(a?.accessToken||a?.copilotToken){d?.info?.("TOKEN",`${P.toUpperCase()} | refreshed`),Object.assign(c,a),B&&a&&await B(a);try{let a=await ab.execute({model:Q,body:_,stream:Z,credentials:c,signal:ad.signal,log:d});a.response.ok&&(J=a.response,K=a.url)}catch(a){d?.warn?.("TOKEN",`${P.toUpperCase()} | retry after refresh failed`)}}else d?.warn?.("TOKEN",`${P.toUpperCase()} | refresh failed`)}if(!J.ok){(0,r.uw)(Q,P,F,!1);let{statusCode:b,message:c,retryAfterMs:e}=await (0,o.zL)(J,P);(0,r.E5)({model:Q,provider:P,connectionId:F,status:`FAILED ${b}`}).catch(()=>{}),(0,r.gK)({method:"POST",path:E?.endpoint||"/v1/chat/completions",status:b,model:Q,provider:P,connectionId:F,duration:Date.now()-R,requestBody:a,error:c,sourceFormat:U,targetFormat:Y,comboName:I,apiKeyId:G?.id||null,apiKeyName:G?.name||null}).catch(()=>{});let f=(0,o.lR)(Error(c),P,Q,b);if(console.log(`${i.lm.red}[ERROR] ${f}${i.lm.reset}`),e&&"antigravity"===P){let a=Math.ceil(e/1e3);d?.debug?.("RETRY",`Antigravity quota reset in ${a}s (${e}ms)`)}return $.logError(Error(c),M||_),(0,x.Kr)(P,F,J.headers,b,Q),(0,o.A1)(b,f,e)}if(!Z){let b;(0,r.uw)(Q,P,F,!1);let c=(J.headers.get("content-type")||"").toLowerCase(),f=await J.text();if(c.includes("text/event-stream")||/(^|\n)\s*(event|data):/m.test(f)){let a=Y===h.h.OPENAI_RESPONSES?(0,v.B)(f,Q):(0,v.F)(f,Q);if(!a)return(0,r.E5)({model:Q,provider:P,connectionId:F,status:`FAILED ${p.gx.BAD_GATEWAY}`}).catch(()=>{}),(0,o.A1)(p.gx.BAD_GATEWAY,"Invalid SSE response for non-streaming request");b=a}else try{b=f?JSON.parse(f):{}}catch{return(0,r.E5)({model:Q,provider:P,connectionId:F,status:`FAILED ${p.gx.BAD_GATEWAY}`}).catch(()=>{}),(0,o.A1)(p.gx.BAD_GATEWAY,"Invalid JSON response from provider")}C&&await C();let j=(0,u.M)(b,P);if((0,r.E5)({model:Q,provider:P,connectionId:F,tokens:j,status:"200 OK"}).catch(()=>{}),(0,r.gK)({method:"POST",path:E?.endpoint||"/v1/chat/completions",status:200,model:Q,provider:P,connectionId:F,duration:Date.now()-R,tokens:j,requestBody:a,responseBody:b,sourceFormat:U,targetFormat:Y,comboName:I,apiKeyId:G?.id||null,apiKeyName:G?.name||null}).catch(()=>{}),j&&"object"==typeof j){let a=`[${new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit"})}] 📊 [USAGE] ${P.toUpperCase()} | in=${j?.prompt_tokens||0} | out=${j?.completion_tokens||0}${F?` | account=${F.slice(0,8)}...`:""}`;console.log(`${i.lm.green}${a}${i.lm.reset}`),(0,r.sZ)({provider:P||"unknown",model:Q||"unknown",tokens:j,timestamp:new Date().toISOString(),connectionId:F||void 0,apiKeyId:G?.id||void 0,apiKeyName:G?.name||void 0}).catch(a=>{console.error("Failed to save usage stats:",a.message)})}let l=(0,g.nZ)(Y,U)?(0,t.l)(b,Y,U):b;if(U===h.h.OPENAI&&(l=(0,w.LG)(l)),l?.usage){let a=(0,k.O9)(l.usage);l.usage=(0,k.WL)(a,U)}else{let b=JSON.stringify(l?.choices?.[0]?.message?.content||"").length;if(b>0){let c=(0,k.OF)(a,b,U);l.usage=(0,k.WL)(c,U)}}if((0,y.TZ)(a,E?.headers)){let b=(0,y.gR)(Q,a.messages,a.temperature,a.top_p),c=j?.prompt_tokens+j?.completion_tokens||0;(0,y.yv)(b,Q,l,c),d?.debug?.("CACHE",`Stored response for ${Q} (${c} tokens)`)}return(0,z.tm)(S,l,200),{success:!0,response:new Response(JSON.stringify(l),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":(0,e.i)(),"X-OmniRoute-Cache":"MISS"}})}}C&&await C();let ae={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","Access-Control-Allow-Origin":(0,e.i)()},af=({status:b,usage:c})=>{(0,r.gK)({method:"POST",path:E?.endpoint||"/v1/chat/completions",status:b||200,model:Q,provider:P,connectionId:F,duration:Date.now()-R,tokens:c||{},requestBody:a,sourceFormat:U,targetFormat:Y,comboName:I,apiKeyId:G?.id||null,apiKeyName:G?.name||null}).catch(()=>{})},ag=H?.toLowerCase().includes("droid")||H?.toLowerCase().includes("codex-cli");if("codex"!==P||Y!==h.h.OPENAI_RESPONSES||U!==h.h.OPENAI||V||ag?(0,g.nZ)(Y,U)?(d?.debug?.("STREAM",`Translation mode: ${Y} → ${U}`),N=(0,i.i5)(Y,U,P,$,aa,Q,F,a,af,G)):(d?.debug?.("STREAM","Standard passthrough mode"),N=(0,i.l2)(P,$,Q,F,a,af,G)):(d?.debug?.("STREAM",`Codex translation mode: openai-responses → openai`),N=(0,i.i5)("openai-responses","openai",P,$,aa,Q,F,a,af,G)),(0,A.Z)(E?.headers)){let a=(0,A.Y)({signal:ad.signal});O=(0,j.Jb)(J,N,ad).pipeThrough(a),ae["X-OmniRoute-Progress"]="enabled"}else O=(0,j.Jb)(J,N,ad);return{success:!0,response:new Response(O,{headers:ae})}}s=(B.then?(await B)():B)[0],d()}catch(a){d(a)}})},76340:(a,b,c)=>{let d;c.d(b,{Wk:()=>s,jf:()=>p,qT:()=>r});var e=c(16698),f=c(79522);try{({createSession:d}=c(22546))}catch{d=null}class g{constructor(){this.session=null,this.available=!!d}async getSession(){if(!this.available)return null;if(this.session)return this.session;let a=process.env.HTTPS_PROXY||process.env.https_proxy||process.env.HTTP_PROXY||process.env.http_proxy||process.env.ALL_PROXY||process.env.all_proxy||void 0,b={browser:"chrome_124",os:"macos"};return a&&(b.proxy=a,console.log(`[TlsClient] Using proxy: ${a}`)),this.session=await d(b),console.log("[TlsClient] Session created (Chrome 124 TLS fingerprint)"),this.session}async fetch(a,b={}){let c=await this.getSession();if(!c)throw Error("wreq-js not available");let d={method:(b.method||"GET").toUpperCase(),headers:b.headers,body:b.body,redirect:"manual"===b.redirect?"manual":"follow"};return b.signal&&(d.signal=b.signal),await c.fetch(a,d)}async exit(){this.session&&(await this.session.close(),this.session=null)}}let h=new g;function i(){return"true"===process.env.ENABLE_TLS_FINGERPRINT}let j=new e.AsyncLocalStorage,k="u">typeof caches&&"object"==typeof caches,l=Symbol.for("omniroute.proxyFetch.state"),m=(globalThis[l]||(globalThis[l]={originalFetch:globalThis.fetch,proxyContext:new e.AsyncLocalStorage,isPatched:!1}),globalThis[l]),n=m.originalFetch,o=m.proxyContext;async function p(a,b){if("function"!=typeof b)throw TypeError("runWithProxyContext requires a callback function");let c=a?(0,f.HN)(a):null;return o.run(a||null,async()=>(c&&console.log(`[ProxyFetch] Applied request proxy context: ${(0,f.OK)(c)}`),b()))}async function q(a,b={}){let c;if(b?.dispatcher)return n(a,b);let d="string"==typeof a?a:a&&"string"==typeof a.url?a.url:String(a);try{c=function(a){let b=o.getStore();if(b)return{source:"context",proxyUrl:(0,f.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,f.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:e,proxyUrl:g}=c;if(!g){if(i()&&h.available)try{let a=j.getStore();return a&&(a.used=!0),await h.fetch(d,b)}catch(c){let a=c instanceof Error?c.message:String(c);console.warn(`[ProxyFetch] TLS fingerprint failed, falling back to native fetch: ${a}`);let b=j.getStore();b&&(b.used=!1)}return n(a,b)}try{let c=(0,f.I_)(g);return await n(a,{...b,dispatcher:c})}catch(b){let a=b instanceof Error?b.message:String(b);throw console.error(`[ProxyFetch] Proxy request failed (${e}, fail-closed): ${a}`),b}}async function r(a){let b={used:!1};return{result:await j.run(b,a),tlsFingerprintUsed:b.used}}function s(){return i()&&h.available}k||m.isPatched||(globalThis.fetch=q,m.isPatched=!0)},77458:(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}},79335:(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}}},79522:(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}},82795:(a,b,c)=>{c.d(b,{c:()=>j});var d=c(95982),e=c(32113),f=c(89575),g=c(55120),h=c(60293),i=c(26695);function j(a,b,c=""){if(!c.includes("claude-cli")||!a.messages?.length)return null;let m=a.messages,n=a=>"string"==typeof a?a:Array.isArray(a)?a.filter(a=>"text"===a.type).map(a=>a.text).join(" "):"",o=!1,p=m[m.length-1];if(p?.role==="assistant"&&p.content?.[0]?.text==="{"&&(o=!0),o||"Warmup"===n(m[0]?.content)&&(o=!0),o||1!==m.length||m[0]?.role!=="user"||"count"===n(m[0]?.content)&&(o=!0),!o&&h.C8?.length){let a=m.filter(a=>"user"===a.role).map(a=>n(a.content)).join(" ");h.C8.some(b=>a.includes(b))&&(o=!0)}if(!o)return null;let q=(0,e.Tz)(a);return!1!==a.stream?function(a,b){let c=k(b),e=(0,f.Ws)(a);e.model=b;let h=l(c),j=[];for(let b of h){let c=(0,f.Y8)(g.h.OPENAI,a,b,e);if(c?.length>0)for(let b of c)j.push((0,i.v8)(b,a))}let m=(0,f.Y8)(g.h.OPENAI,a,null,e);if(m?.length>0)for(let b of m)j.push((0,i.v8)(b,a));return j.push("data: [DONE]\n\n"),{success:!0,response:new Response(j.join(""),{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","Access-Control-Allow-Origin":(0,d.i)()}})}}(q,b):function(a,b){let c=k(b);if(a===g.h.OPENAI)return{success:!0,response:new Response(JSON.stringify(c),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":(0,d.i)()}})};let e=(0,f.Ws)(a);e.model=b;let h=l(c),i=[];for(let b of h){let c=(0,f.Y8)(g.h.OPENAI,a,b,e);c?.length>0&&i.push(...c)}let j=(0,f.Y8)(g.h.OPENAI,a,null,e);return j?.length>0&&i.push(...j),{success:!0,response:new Response(JSON.stringify(function(a,b){if(!a||0===a.length)return k("unknown");let c=a[a.length-1];if(b===g.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}(i,a)),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":(0,d.i)()}})}}(q,b)}function k(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 l(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}]}},89122:(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,23)),h=(g=await Promise.resolve().then(c.t.bind(c,33873,23))).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})}}}},92937:(a,b,c)=>{c.d(b,{LG:()=>g,LM:()=>j,Zb:()=>f});let d=new Set(["prompt_tokens","completion_tokens","total_tokens","prompt_tokens_details","completion_tokens_details"]),e=/<think>([\s\S]*?)<\/think>/gi;function f(a){if(!a||"string"!=typeof a)return{content:a||"",thinking:null};let b=[],c=!1,d=a.replace(e,(a,d)=>{c=!0;let e=d.trim();return e&&b.push(e),""});return c?{content:d.trim(),thinking:b.length>0?b.join("\n\n"):null}:{content:a,thinking:null}}function g(a){var b;if(!a||"object"!=typeof a)return a;let c={};return c.id=(b=a.id)&&"string"==typeof b?(b.startsWith("chatcmpl-"),b):`chatcmpl-${crypto.randomUUID().replace(/-/g,"").slice(0,29)}`,c.object=a.object||"chat.completion",c.created=a.created||Math.floor(Date.now()/1e3),c.model=a.model||"unknown",Array.isArray(a.choices)?c.choices=a.choices.map((a,b)=>{var c,d;let e;return c=a,d=b,e={index:c.index??d,finish_reason:c.finish_reason||null},c.message&&(e.message=h(c.message)),c.delta&&(e.delta=h(c.delta)),void 0!==c.logprobs&&(e.logprobs=c.logprobs),e}):c.choices=[],a.usage&&"object"==typeof a.usage&&(c.usage=i(a.usage)),a.system_fingerprint&&(c.system_fingerprint=a.system_fingerprint),c}function h(a){if(!a||"object"!=typeof a)return a;let b={};if(a.role&&(b.role=a.role),void 0!==a.refusal&&(b.refusal=a.refusal),"string"==typeof a.content){let{content:c,thinking:d}=f(a.content);b.content=c,d&&!a.reasoning_content&&(b.reasoning_content=d)}else void 0!==a.content&&(b.content=a.content);return a.reasoning_content&&!b.reasoning_content&&(b.reasoning_content=a.reasoning_content),a.tool_calls&&(b.tool_calls=a.tool_calls),a.function_call&&(b.function_call=a.function_call),b}function i(a){if(!a||"object"!=typeof a)return a;let b={};for(let c of d)void 0!==a[c]&&(b[c]=a[c]);return void 0===b.prompt_tokens&&(b.prompt_tokens=0),void 0===b.completion_tokens&&(b.completion_tokens=0),void 0===b.total_tokens&&(b.total_tokens=b.prompt_tokens+b.completion_tokens),b}function j(a){if(!a||"object"!=typeof a)return a;let b={};return void 0!==a.id&&(b.id=a.id),b.object=a.object||"chat.completion.chunk",void 0!==a.created&&(b.created=a.created),void 0!==a.model&&(b.model=a.model),Array.isArray(a.choices)&&(b.choices=a.choices.map(a=>{let b={index:a.index??0};if(void 0!==a.delta){b.delta={};let c=a.delta;void 0!==c.role&&(b.delta.role=c.role),void 0!==c.content&&(b.delta.content=c.content),void 0!==c.reasoning_content&&(b.delta.reasoning_content=c.reasoning_content),void 0!==c.tool_calls&&(b.delta.tool_calls=c.tool_calls),void 0!==c.function_call&&(b.delta.function_call=c.function_call)}return void 0!==a.finish_reason&&(b.finish_reason=a.finish_reason),void 0!==a.logprobs&&(b.logprobs=a.logprobs),b})),a.usage&&"object"==typeof a.usage&&(b.usage=i(a.usage)),a.system_fingerprint&&(b.system_fingerprint=a.system_fingerprint),b}}};
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=2901,exports.ids=[2901],exports.modules={9679:(a,b,c)=>{c.d(b,{HL:()=>v,KJ:()=>l,PM:()=>x,PS:()=>k,VT:()=>n,Xx:()=>h,YD:()=>w,isCloudEnabled:()=>i,mt:()=>g,o4:()=>t,r4:()=>j,ru:()=>s,yF:()=>m});var d=c(42910),e=c(39948),f=c(23969);async function g(){let a=(0,d.sm)(),b=a.prepare("SELECT key, value FROM key_value WHERE namespace = 'settings'").all(),c={cloudEnabled:!1,stickyRoundRobinLimit:3,requireLogin:!0};for(let a of b)c[a.key]=JSON.parse(a.value);return!c.setupComplete&&process.env.INITIAL_PASSWORD&&(c.setupComplete=!0,c.requireLogin=!0,a.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('settings', 'setupComplete', 'true')").run(),a.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('settings', 'requireLogin', 'true')").run()),c}async function h(a){let b=(0,d.sm)(),c=b.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('settings', ?, ?)");return b.transaction(()=>{for(let[b,d]of Object.entries(a))c.run(b,JSON.stringify(d))})(),(0,e.lR)("pre-write"),g()}async function i(){return!0===(await g()).cloudEnabled}async function j(){let a=(0,d.sm)().prepare("SELECT key, value FROM key_value WHERE namespace = 'pricing'").all(),b={};for(let c of a)b[c.key]=JSON.parse(c.value);let{getDefaultPricing:e}=await c.e(3699).then(c.bind(c,53699)),f=e(),g={};for(let[a,c]of Object.entries(f))if(g[a]={...c},b[a])for(let[c,d]of Object.entries(b[a]))g[a][c]=g[a][c]?{...g[a][c],...d}:d;for(let[a,c]of Object.entries(b))if(g[a])for(let[b,d]of Object.entries(c))g[a][b]||(g[a][b]=d);else g[a]={...c};return g}async function k(a,b){let d=await j();if(d[a]?.[b])return d[a][b];let{PROVIDER_ID_TO_ALIAS:e}=await Promise.resolve().then(c.bind(c,23969)),f=e[a];if(f&&d[f])return d[f][b]||null;let g=a?.replace(/-cn$/,"");return g&&g!==a&&d[g]&&d[g][b]||null}async function l(a){let b=(0,d.sm)(),c=b.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('pricing', ?, ?)"),f=b.prepare("SELECT key, value FROM key_value WHERE namespace = 'pricing'").all(),g={};for(let a of f)g[a.key]=JSON.parse(a.value);b.transaction(()=>{for(let[b,d]of Object.entries(a))c.run(b,JSON.stringify({...g[b]||{},...d}))})(),(0,e.lR)("pre-write");let h={};for(let a of b.prepare("SELECT key, value FROM key_value WHERE namespace = 'pricing'").all())h[a.key]=JSON.parse(a.value);return h}async function m(a,b){let c=(0,d.sm)();if(b){let d=c.prepare("SELECT value FROM key_value WHERE namespace = 'pricing' AND key = ?").get(a);if(d){let e=JSON.parse(d.value);delete e[b],0===Object.keys(e).length?c.prepare("DELETE FROM key_value WHERE namespace = 'pricing' AND key = ?").run(a):c.prepare("UPDATE key_value SET value = ? WHERE namespace = 'pricing' AND key = ?").run(JSON.stringify(e),a)}}else c.prepare("DELETE FROM key_value WHERE namespace = 'pricing' AND key = ?").run(a);(0,e.lR)("pre-write");let f=c.prepare("SELECT key, value FROM key_value WHERE namespace = 'pricing'").all(),g={};for(let a of f)g[a.key]=JSON.parse(a.value);return g}async function n(){return(0,d.sm)().prepare("DELETE FROM key_value WHERE namespace = 'pricing'").run(),(0,e.lR)("pre-write"),{}}let o={global:null,providers:{},combos:{},keys:{}},p=Object.entries(f.PROVIDER_ID_TO_ALIAS).reduce((a,[b,c])=>(c&&(a[c]=b),a[b]=b,a),{});function q(a){return"string"!=typeof a?a:p[a]||a}function r(a){if(!a)return null;if("object"==typeof a&&a.type)return a;if("string"!=typeof a)return null;try{let b=new URL(a);return{type:b.protocol.replace(":","").replace("//","")||"http",host:b.hostname,port:b.port||("socks5:"===b.protocol?"1080":"8080"),username:b.username||"",password:b.password||""}}catch{let b=a.split(":");return{type:"http",host:b[0]||a,port:b[1]||"8080",username:"",password:""}}}async function s(){let a=(0,d.sm)(),b=a.prepare("SELECT key, value FROM key_value WHERE namespace = 'proxyConfig'").all(),c={...o};for(let a of b)c[a.key]=JSON.parse(a.value);let e=!1;if(c.global&&"string"==typeof c.global&&(c.global=r(c.global),e=!0),c.providers)for(let[a,b]of Object.entries(c.providers))"string"==typeof b&&(c.providers[a]=r(b),e=!0);if(e){let b=a.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('proxyConfig', ?, ?)");void 0!==c.global&&b.run("global",JSON.stringify(c.global)),c.providers&&b.run("providers",JSON.stringify(c.providers))}return c}async function t(a,b){let c=await s();if("global"===a)return c.global||null;let d=c[a+"s"]||c[a]||{};return(b?d[b]:null)||null}async function u(a,b,c){let f=(0,d.sm)(),g=await s();if("global"===a)g.global=c||null,f.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('proxyConfig', 'global', ?)").run(JSON.stringify(g.global));else{let d=a+"s";g[d]||(g[d]={}),c?g[d][b]=c:delete g[d][b],f.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('proxyConfig', ?, ?)").run(d,JSON.stringify(g[d]))}return(0,e.lR)("pre-write"),g}async function v(a,b){return u(a,b,null)}async function w(a){let b=await s();if(a&&b.keys?.[a])return{proxy:b.keys[a],level:"key",levelId:a};let c=(0,d.sm)(),e=c.prepare("SELECT provider FROM provider_connections WHERE id = ?").get(a);if(e){if(b.combos&&Object.keys(b.combos).length>0){for(let a of c.prepare("SELECT id, data FROM combos").all())if(b.combos[a.id])try{if((JSON.parse(a.data).models||[]).some(a=>(function(a){if(a&&"string"==typeof a.provider)return q(a.provider);let b="string"==typeof a?a:"string"==typeof a?.model?a.model:null;if(!b)return null;let[c]=b.split("/",1);return c?q(c):null})(a)===e.provider))return{proxy:b.combos[a.id],level:"combo",levelId:a.id}}catch{}}if(b.providers?.[e.provider])return{proxy:b.providers[e.provider],level:"provider",levelId:e.provider}}return b.global?{proxy:b.global,level:"global",levelId:null}:{proxy:null,level:"direct",levelId:null}}async function x(a){if(void 0!==a.level)return u(a.level,a.id||null,a.proxy);let b=(0,d.sm)(),c=await s(),f=b.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('proxyConfig', ?, ?)");return b.transaction(()=>{for(let b of(void 0!==a.global&&(c.global=a.global||null,f.run("global",JSON.stringify(c.global))),["providers","combos","keys"]))if(a[b]){for(let[d,e]of(c[b]={...c[b]||{},...a[b]},Object.entries(c[b])))e||delete c[b][d];f.run(b,JSON.stringify(c[b]))}})(),(0,e.lR)("pre-write"),c}},22901:(a,b,c)=>{c.d(b,{S8:()=>L,lR:()=>f.lR,bI:()=>y,Iq:()=>T.Iq,jd:()=>Q,iE:()=>s,i0:()=>B,Lh:()=>T.Lh,CG:()=>S,fv:()=>G,fK:()=>v,op:()=>w,Pc:()=>D,HL:()=>U.HL,NL:()=>K,yg:()=>T.yg,v9:()=>T.v9,PX:()=>T.PX,L:()=>O,Dj:()=>P,Uv:()=>N,uv:()=>J,c:()=>H,OM:()=>E,r4:()=>U.r4,getPricingForModel:()=>U.PS,Mc:()=>r,getProviderConnections:()=>q,Qu:()=>A,Fh:()=>z,ru:()=>U.ru,o4:()=>U.o4,V7:()=>U.mt,Nx:()=>U.isCloudEnabled,eF:()=>f.eF,BD:()=>M,VT:()=>U.VT,yF:()=>U.yF,YD:()=>U.YD,Dp:()=>f.Dp,L9:()=>I,o5:()=>F,PM:()=>U.PM,Jg:()=>T.Jg,oG:()=>R,KJ:()=>U.KJ,rj:()=>u,ho:()=>C,Xx:()=>U.Xx,ek:()=>T.validateApiKey});var d=c(94755),e=c(42910),f=c(39948),g=c(55511);let h="aes-256-gcm",i="enc:v1:",j=null;function k(){if(null!==j)return j;let a=process.env.STORAGE_ENCRYPTION_KEY;return a?j=(0,g.scryptSync)(a,"omniroute-field-encryption-v1",32):null}function l(){return!!process.env.STORAGE_ENCRYPTION_KEY}function m(a){if(!a||"string"!=typeof a)return a;let b=k();if(!b||a.startsWith(i))return a;let c=(0,g.randomBytes)(16),d=(0,g.createCipheriv)(h,b,c),e=d.update(a,"utf8","hex");e+=d.final("hex");let f=d.getAuthTag().toString("hex");return`${i}${c.toString("hex")}:${e}:${f}`}function n(a){if(!a||"string"!=typeof a||!a.startsWith(i))return a;let b=k();if(!b)return console.warn("[Encryption] Found encrypted data but STORAGE_ENCRYPTION_KEY is not set. Cannot decrypt."),a;let c=a.slice(i.length).split(":");if(3!==c.length)return console.error("[Encryption] Malformed encrypted value"),a;let[d,e,f]=c;try{let a=Buffer.from(d,"hex"),c=Buffer.from(f,"hex"),i=(0,g.createDecipheriv)(h,b,a);i.setAuthTag(c);let j=i.update(e,"hex","utf8");return j+=i.final("utf8")}catch(b){return console.error("[Encryption] Decryption failed:",b instanceof Error?b.message:String(b)),a}}function o(a){return l()&&(a.apiKey&&(a.apiKey=m(a.apiKey)),a.accessToken&&(a.accessToken=m(a.accessToken)),a.refreshToken&&(a.refreshToken=m(a.refreshToken)),a.idToken&&(a.idToken=m(a.idToken))),a}function p(a){return a&&l()?{...a,apiKey:n(a.apiKey),accessToken:n(a.accessToken),refreshToken:n(a.refreshToken),idToken:n(a.idToken)}:a}async function q(a={}){let b=(0,e.sm)(),c="SELECT * FROM provider_connections",d=[],f={};return a.provider&&(d.push("provider = @provider"),f.provider=a.provider),void 0!==a.isActive&&(d.push("is_active = @isActive"),f.isActive=+!!a.isActive),d.length>0&&(c+=" WHERE "+d.join(" AND ")),c+=" ORDER BY priority ASC, updated_at DESC",b.prepare(c).all(f).map(a=>p((0,e.G6)((0,e.kB)(a))))}async function r(a){let b=(0,e.sm)().prepare("SELECT * FROM provider_connections WHERE id = ?").get(a);return b?p((0,e.G6)((0,e.kB)(b))):null}async function s(a){var b,c;let g=(0,e.sm)(),h=new Date().toISOString(),i=null;if("oauth"===a.authType&&a.email){let b=a.providerSpecificData?.workspaceId;i="codex"===a.provider&&b?g.prepare("SELECT * FROM provider_connections WHERE provider = ? AND auth_type = 'oauth' AND json_extract(provider_specific_data, '$.workspaceId') = ?").get(a.provider,b):g.prepare("SELECT * FROM provider_connections WHERE provider = ? AND auth_type = 'oauth' AND email = ?").get(a.provider,a.email)}else"apikey"===a.authType&&a.name&&(i=g.prepare("SELECT * FROM provider_connections WHERE provider = ? AND auth_type = 'apikey' AND name = ?").get(a.provider,a.name));if(i){let b={...(0,e.kB)(i),...a,updatedAt:h};return t(g,i.id,b),(0,f.lR)("pre-write"),(0,e.G6)(b)}let j=a.name||null;if(!j&&"oauth"===a.authType)if(a.email)j=a.email;else{let b=g.prepare("SELECT COUNT(*) as cnt FROM provider_connections WHERE provider = ?").get(a.provider)?.cnt||0;j=`Account ${b+1}`}let k=a.priority;if(!k){let b=g.prepare("SELECT MAX(priority) as maxP FROM provider_connections WHERE provider = ?").get(a.provider);k=(b?.maxP||0)+1}let l={id:(0,d.A)(),provider:a.provider,authType:a.authType||"oauth",name:j,priority:k,isActive:void 0===a.isActive||a.isActive,createdAt:h,updatedAt:h};for(let b of["displayName","email","globalPriority","defaultModel","accessToken","refreshToken","expiresAt","tokenType","scope","idToken","projectId","apiKey","testStatus","lastTested","lastError","lastErrorAt","lastErrorType","lastErrorSource","rateLimitedUntil","expiresIn","errorCode","consecutiveUseCount","rateLimitProtection"])void 0!==a[b]&&null!==a[b]&&(l[b]=a[b]);return a.providerSpecificData&&Object.keys(a.providerSpecificData).length>0&&(l.providerSpecificData=a.providerSpecificData),b=g,c=o({...l}),b.prepare(`
1
+ "use strict";exports.id=2901,exports.ids=[2901],exports.modules={9679:(a,b,c)=>{c.d(b,{HL:()=>v,KJ:()=>l,PM:()=>x,PS:()=>k,VT:()=>n,Xx:()=>h,YD:()=>w,isCloudEnabled:()=>i,mt:()=>g,o4:()=>t,r4:()=>j,ru:()=>s,yF:()=>m});var d=c(42910),e=c(39948),f=c(23969);async function g(){let a=(0,d.sm)(),b=a.prepare("SELECT key, value FROM key_value WHERE namespace = 'settings'").all(),c={cloudEnabled:!1,stickyRoundRobinLimit:3,requireLogin:!0};for(let a of b)c[a.key]=JSON.parse(a.value);return!c.setupComplete&&process.env.INITIAL_PASSWORD&&(c.setupComplete=!0,c.requireLogin=!0,a.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('settings', 'setupComplete', 'true')").run(),a.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('settings', 'requireLogin', 'true')").run()),c}async function h(a){let b=(0,d.sm)(),c=b.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('settings', ?, ?)");return b.transaction(()=>{for(let[b,d]of Object.entries(a))c.run(b,JSON.stringify(d))})(),(0,e.lR)("pre-write"),g()}async function i(){return!0===(await g()).cloudEnabled}async function j(){let a=(0,d.sm)().prepare("SELECT key, value FROM key_value WHERE namespace = 'pricing'").all(),b={};for(let c of a)b[c.key]=JSON.parse(c.value);let{getDefaultPricing:e}=await c.e(3699).then(c.bind(c,53699)),f=e(),g={};for(let[a,c]of Object.entries(f))if(g[a]={...c},b[a])for(let[c,d]of Object.entries(b[a]))g[a][c]=g[a][c]?{...g[a][c],...d}:d;for(let[a,c]of Object.entries(b))if(g[a])for(let[b,d]of Object.entries(c))g[a][b]||(g[a][b]=d);else g[a]={...c};return g}async function k(a,b){let d=await j();if(d[a]?.[b])return d[a][b];let{PROVIDER_ID_TO_ALIAS:e}=await Promise.resolve().then(c.bind(c,23969)),f=e[a];if(f&&d[f])return d[f][b]||null;let g=a?.replace(/-cn$/,"");return g&&g!==a&&d[g]&&d[g][b]||null}async function l(a){let b=(0,d.sm)(),c=b.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('pricing', ?, ?)"),f=b.prepare("SELECT key, value FROM key_value WHERE namespace = 'pricing'").all(),g={};for(let a of f)g[a.key]=JSON.parse(a.value);b.transaction(()=>{for(let[b,d]of Object.entries(a))c.run(b,JSON.stringify({...g[b]||{},...d}))})(),(0,e.lR)("pre-write");let h={};for(let a of b.prepare("SELECT key, value FROM key_value WHERE namespace = 'pricing'").all())h[a.key]=JSON.parse(a.value);return h}async function m(a,b){let c=(0,d.sm)();if(b){let d=c.prepare("SELECT value FROM key_value WHERE namespace = 'pricing' AND key = ?").get(a);if(d){let e=JSON.parse(d.value);delete e[b],0===Object.keys(e).length?c.prepare("DELETE FROM key_value WHERE namespace = 'pricing' AND key = ?").run(a):c.prepare("UPDATE key_value SET value = ? WHERE namespace = 'pricing' AND key = ?").run(JSON.stringify(e),a)}}else c.prepare("DELETE FROM key_value WHERE namespace = 'pricing' AND key = ?").run(a);(0,e.lR)("pre-write");let f=c.prepare("SELECT key, value FROM key_value WHERE namespace = 'pricing'").all(),g={};for(let a of f)g[a.key]=JSON.parse(a.value);return g}async function n(){return(0,d.sm)().prepare("DELETE FROM key_value WHERE namespace = 'pricing'").run(),(0,e.lR)("pre-write"),{}}let o={global:null,providers:{},combos:{},keys:{}},p=Object.entries(f.PROVIDER_ID_TO_ALIAS).reduce((a,[b,c])=>(c&&(a[c]=b),a[b]=b,a),{});function q(a){return"string"!=typeof a?a:p[a]||a}function r(a){if(!a)return null;if("object"==typeof a&&a.type)return a;if("string"!=typeof a)return null;try{let b=new URL(a);return{type:b.protocol.replace(":","").replace("//","")||"http",host:b.hostname,port:b.port||("socks5:"===b.protocol?"1080":"8080"),username:b.username||"",password:b.password||""}}catch{let b=a.split(":");return{type:"http",host:b[0]||a,port:b[1]||"8080",username:"",password:""}}}async function s(){let a=(0,d.sm)(),b=a.prepare("SELECT key, value FROM key_value WHERE namespace = 'proxyConfig'").all(),c={...o};for(let a of b)c[a.key]=JSON.parse(a.value);let e=!1;if(c.global&&"string"==typeof c.global&&(c.global=r(c.global),e=!0),c.providers)for(let[a,b]of Object.entries(c.providers))"string"==typeof b&&(c.providers[a]=r(b),e=!0);if(e){let b=a.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('proxyConfig', ?, ?)");void 0!==c.global&&b.run("global",JSON.stringify(c.global)),c.providers&&b.run("providers",JSON.stringify(c.providers))}return c}async function t(a,b){let c=await s();if("global"===a)return c.global||null;let d=c[a+"s"]||c[a]||{};return(b?d[b]:null)||null}async function u(a,b,c){let f=(0,d.sm)(),g=await s();if("global"===a)g.global=c||null,f.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('proxyConfig', 'global', ?)").run(JSON.stringify(g.global));else{let d=a+"s";g[d]||(g[d]={}),c?g[d][b]=c:delete g[d][b],f.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('proxyConfig', ?, ?)").run(d,JSON.stringify(g[d]))}return(0,e.lR)("pre-write"),g}async function v(a,b){return u(a,b,null)}async function w(a){let b=await s();if(a&&b.keys?.[a])return{proxy:b.keys[a],level:"key",levelId:a};let c=(0,d.sm)(),e=c.prepare("SELECT provider FROM provider_connections WHERE id = ?").get(a);if(e){if(b.combos&&Object.keys(b.combos).length>0){for(let a of c.prepare("SELECT id, data FROM combos").all())if(b.combos[a.id])try{if((JSON.parse(a.data).models||[]).some(a=>(function(a){if(a&&"string"==typeof a.provider)return q(a.provider);let b="string"==typeof a?a:"string"==typeof a?.model?a.model:null;if(!b)return null;let[c]=b.split("/",1);return c?q(c):null})(a)===e.provider))return{proxy:b.combos[a.id],level:"combo",levelId:a.id}}catch{}}if(b.providers?.[e.provider])return{proxy:b.providers[e.provider],level:"provider",levelId:e.provider}}return b.global?{proxy:b.global,level:"global",levelId:null}:{proxy:null,level:"direct",levelId:null}}async function x(a){if(void 0!==a.level)return u(a.level,a.id||null,a.proxy);let b=(0,d.sm)(),c=await s(),f=b.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('proxyConfig', ?, ?)");return b.transaction(()=>{for(let b of(void 0!==a.global&&(c.global=a.global||null,f.run("global",JSON.stringify(c.global))),["providers","combos","keys"]))if(a[b]){for(let[d,e]of(c[b]={...c[b]||{},...a[b]},Object.entries(c[b])))e||delete c[b][d];f.run(b,JSON.stringify(c[b]))}})(),(0,e.lR)("pre-write"),c}},22901:(a,b,c)=>{c.d(b,{S8:()=>L,lR:()=>f.lR,bI:()=>y,Iq:()=>T.Iq,jd:()=>Q,iE:()=>s,i0:()=>B,Lh:()=>T.Lh,CG:()=>S,fv:()=>G,fK:()=>v,op:()=>w,Pc:()=>D,HL:()=>U.HL,NL:()=>K,yg:()=>T.yg,v9:()=>T.v9,PX:()=>T.PX,L:()=>O,Dj:()=>P,Uv:()=>N,uv:()=>J,c:()=>H,OM:()=>E,r4:()=>U.r4,getPricingForModel:()=>U.PS,Mc:()=>r,getProviderConnections:()=>q,Qu:()=>A,Fh:()=>z,ru:()=>U.ru,o4:()=>U.o4,V7:()=>U.mt,Nx:()=>U.isCloudEnabled,Oo:()=>T.Oo,eF:()=>f.eF,BD:()=>M,VT:()=>U.VT,yF:()=>U.yF,YD:()=>U.YD,Dp:()=>f.Dp,L9:()=>I,o5:()=>F,PM:()=>U.PM,Jg:()=>T.Jg,oG:()=>R,KJ:()=>U.KJ,rj:()=>u,ho:()=>C,Xx:()=>U.Xx,ek:()=>T.validateApiKey});var d=c(94755),e=c(42910),f=c(39948),g=c(55511);let h="aes-256-gcm",i="enc:v1:",j=null;function k(){if(null!==j)return j;let a=process.env.STORAGE_ENCRYPTION_KEY;return a?j=(0,g.scryptSync)(a,"omniroute-field-encryption-v1",32):null}function l(){return!!process.env.STORAGE_ENCRYPTION_KEY}function m(a){if(!a||"string"!=typeof a)return a;let b=k();if(!b||a.startsWith(i))return a;let c=(0,g.randomBytes)(16),d=(0,g.createCipheriv)(h,b,c),e=d.update(a,"utf8","hex");e+=d.final("hex");let f=d.getAuthTag().toString("hex");return`${i}${c.toString("hex")}:${e}:${f}`}function n(a){if(!a||"string"!=typeof a||!a.startsWith(i))return a;let b=k();if(!b)return console.warn("[Encryption] Found encrypted data but STORAGE_ENCRYPTION_KEY is not set. Cannot decrypt."),a;let c=a.slice(i.length).split(":");if(3!==c.length)return console.error("[Encryption] Malformed encrypted value"),a;let[d,e,f]=c;try{let a=Buffer.from(d,"hex"),c=Buffer.from(f,"hex"),i=(0,g.createDecipheriv)(h,b,a);i.setAuthTag(c);let j=i.update(e,"hex","utf8");return j+=i.final("utf8")}catch(b){return console.error("[Encryption] Decryption failed:",b instanceof Error?b.message:String(b)),a}}function o(a){return l()&&(a.apiKey&&(a.apiKey=m(a.apiKey)),a.accessToken&&(a.accessToken=m(a.accessToken)),a.refreshToken&&(a.refreshToken=m(a.refreshToken)),a.idToken&&(a.idToken=m(a.idToken))),a}function p(a){return a&&l()?{...a,apiKey:n(a.apiKey),accessToken:n(a.accessToken),refreshToken:n(a.refreshToken),idToken:n(a.idToken)}:a}async function q(a={}){let b=(0,e.sm)(),c="SELECT * FROM provider_connections",d=[],f={};return a.provider&&(d.push("provider = @provider"),f.provider=a.provider),void 0!==a.isActive&&(d.push("is_active = @isActive"),f.isActive=+!!a.isActive),d.length>0&&(c+=" WHERE "+d.join(" AND ")),c+=" ORDER BY priority ASC, updated_at DESC",b.prepare(c).all(f).map(a=>p((0,e.G6)((0,e.kB)(a))))}async function r(a){let b=(0,e.sm)().prepare("SELECT * FROM provider_connections WHERE id = ?").get(a);return b?p((0,e.G6)((0,e.kB)(b))):null}async function s(a){var b,c;let g=(0,e.sm)(),h=new Date().toISOString(),i=null;if("oauth"===a.authType&&a.email){let b=a.providerSpecificData?.workspaceId;"codex"===a.provider&&b?(i=g.prepare("SELECT * FROM provider_connections WHERE provider = ? AND auth_type = 'oauth' AND json_extract(provider_specific_data, '$.workspaceId') = ? AND email = ?").get(a.provider,b,a.email))||(i=g.prepare("SELECT * FROM provider_connections WHERE provider = ? AND auth_type = 'oauth' AND json_extract(provider_specific_data, '$.workspaceId') = ? AND (email IS NULL OR email = '')").get(a.provider,b)):i=g.prepare("SELECT * FROM provider_connections WHERE provider = ? AND auth_type = 'oauth' AND email = ?").get(a.provider,a.email)}else"apikey"===a.authType&&a.name&&(i=g.prepare("SELECT * FROM provider_connections WHERE provider = ? AND auth_type = 'apikey' AND name = ?").get(a.provider,a.name));if(i){let b={...(0,e.kB)(i),...a,updatedAt:h};return t(g,i.id,b),(0,f.lR)("pre-write"),(0,e.G6)(b)}let j=a.name||null;if(!j&&"oauth"===a.authType)if(a.email)j=a.email;else{let b=g.prepare("SELECT COUNT(*) as cnt FROM provider_connections WHERE provider = ?").get(a.provider)?.cnt||0;j=`Account ${b+1}`}let k=a.priority;if(!k){let b=g.prepare("SELECT MAX(priority) as maxP FROM provider_connections WHERE provider = ?").get(a.provider);k=(b?.maxP||0)+1}let l={id:(0,d.A)(),provider:a.provider,authType:a.authType||"oauth",name:j,priority:k,isActive:void 0===a.isActive||a.isActive,createdAt:h,updatedAt:h};for(let b of["displayName","email","globalPriority","defaultModel","accessToken","refreshToken","expiresAt","tokenType","scope","idToken","projectId","apiKey","testStatus","lastTested","lastError","lastErrorAt","lastErrorType","lastErrorSource","rateLimitedUntil","expiresIn","errorCode","consecutiveUseCount","rateLimitProtection"])void 0!==a[b]&&null!==a[b]&&(l[b]=a[b]);return a.providerSpecificData&&Object.keys(a.providerSpecificData).length>0&&(l.providerSpecificData=a.providerSpecificData),b=g,c=o({...l}),b.prepare(`
2
2
  INSERT INTO provider_connections (
3
3
  id, provider, auth_type, name, email, priority, is_active,
4
4
  access_token, refresh_token, expires_at, token_expires_at,
@@ -42,4 +42,4 @@
42
42
  UPDATE provider_nodes SET type = @type, name = @name, prefix = @prefix,
43
43
  api_type = @apiType, base_url = @baseUrl, updated_at = @updatedAt
44
44
  WHERE id = @id
45
- `).run({id:a,type:g.type,name:g.name,prefix:g.prefix||null,apiType:g.apiType||null,baseUrl:g.baseUrl||null,updatedAt:g.updatedAt}),(0,f.lR)("pre-write"),g}async function D(a){let b=(0,e.sm)(),c=b.prepare("SELECT * FROM provider_nodes WHERE id = ?").get(a);return c?(b.prepare("DELETE FROM provider_nodes WHERE id = ?").run(a),(0,f.lR)("pre-write"),(0,e.kB)(c)):null}async function E(){let a=(0,e.sm)().prepare("SELECT key, value FROM key_value WHERE namespace = 'modelAliases'").all(),b={};for(let c of a)b[c.key]=JSON.parse(c.value);return b}async function F(a,b){(0,e.sm)().prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('modelAliases', ?, ?)").run(a,JSON.stringify(b)),(0,f.lR)("pre-write")}async function G(a){(0,e.sm)().prepare("DELETE FROM key_value WHERE namespace = 'modelAliases' AND key = ?").run(a),(0,f.lR)("pre-write")}async function H(a){let b=(0,e.sm)();if(a){let c=b.prepare("SELECT value FROM key_value WHERE namespace = 'mitmAlias' AND key = ?").get(a);return c?JSON.parse(c.value):{}}let c=b.prepare("SELECT key, value FROM key_value WHERE namespace = 'mitmAlias'").all(),d={};for(let a of c)d[a.key]=JSON.parse(a.value);return d}async function I(a,b){(0,e.sm)().prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('mitmAlias', ?, ?)").run(a,JSON.stringify(b||{})),(0,f.lR)("pre-write")}async function J(a){let b=(0,e.sm)();if(a){let c=b.prepare("SELECT value FROM key_value WHERE namespace = 'customModels' AND key = ?").get(a);return c?JSON.parse(c.value):[]}let c=b.prepare("SELECT key, value FROM key_value WHERE namespace = 'customModels'").all(),d={};for(let a of c)d[a.key]=JSON.parse(a.value);return d}async function K(){let a=(0,e.sm)().prepare("SELECT key, value FROM key_value WHERE namespace = 'customModels'").all(),b={};for(let c of a)b[c.key]=JSON.parse(c.value);return b}async function L(a,b,c,d="manual"){let g=(0,e.sm)(),h=g.prepare("SELECT value FROM key_value WHERE namespace = 'customModels' AND key = ?").get(a),i=h?JSON.parse(h.value):[],j=i.find(a=>a.id===b);if(j)return j;let k={id:b,name:c||b,source:d};return i.push(k),g.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('customModels', ?, ?)").run(a,JSON.stringify(i)),(0,f.lR)("pre-write"),k}async function M(a,b){let c=(0,e.sm)(),d=c.prepare("SELECT value FROM key_value WHERE namespace = 'customModels' AND key = ?").get(a);if(!d)return!1;let g=JSON.parse(d.value),h=g.length,i=g.filter(a=>a.id!==b);return i.length!==h&&(0===i.length?c.prepare("DELETE FROM key_value WHERE namespace = 'customModels' AND key = ?").run(a):c.prepare("UPDATE key_value SET value = ? WHERE namespace = 'customModels' AND key = ?").run(JSON.stringify(i),a),(0,f.lR)("pre-write"),!0)}async function N(){return(0,e.sm)().prepare("SELECT data FROM combos ORDER BY name").all().map(a=>JSON.parse(a.data))}async function O(a){let b=(0,e.sm)().prepare("SELECT data FROM combos WHERE id = ?").get(a);return b?JSON.parse(b.data):null}async function P(a){let b=(0,e.sm)().prepare("SELECT data FROM combos WHERE name = ?").get(a);return b?JSON.parse(b.data):null}async function Q(a){let b=(0,e.sm)(),c=new Date().toISOString(),g={id:(0,d.A)(),name:a.name,models:a.models||[],strategy:a.strategy||"priority",config:a.config||{},createdAt:c,updatedAt:c};return b.prepare("INSERT INTO combos (id, name, data, created_at, updated_at) VALUES (?, ?, ?, ?, ?)").run(g.id,g.name,JSON.stringify(g),c,c),(0,f.lR)("pre-write"),g}async function R(a,b){let c=(0,e.sm)(),d=c.prepare("SELECT data FROM combos WHERE id = ?").get(a);if(!d)return null;let g={...JSON.parse(d.data),...b,updatedAt:new Date().toISOString()};return c.prepare("UPDATE combos SET name = ?, data = ?, updated_at = ? WHERE id = ?").run(g.name,JSON.stringify(g),g.updatedAt,a),(0,f.lR)("pre-write"),g}async function S(a){return 0!==(0,e.sm)().prepare("DELETE FROM combos WHERE id = ?").run(a).changes&&((0,f.lR)("pre-write"),!0)}var T=c(80500),U=c(9679)},23969:(a,b,c)=>{c.d(b,{PROVIDER_ID_TO_ALIAS:()=>f,ux:()=>g,vq:()=>e});var d=c(83596);let e=(0,d.oD)(),f=(0,d.Qv)();function g(a,b){let c=e[a];if(!c)return null;let d=c.find(a=>a.id===b);return d?.targetFormat||null}},39948:(a,b,c)=>{c.d(b,{Dp:()=>o,eF:()=>n,lR:()=>m});var d=c(87550),e=c.n(d),f=c(76760),g=c.n(f),h=c(73024),i=c.n(h),j=c(42910),k=c(80500);let l=0;function m(a="auto"){try{if(j.I8||j.m1||!j.oh||!i().existsSync(j.oh))return null;let b=i().statSync(j.oh);if(b.size<4096)return console.warn(`[DB] Backup SKIPPED — DB too small (${b.size}B)`),null;let c=Date.now();if("manual"!==a&&"pre-restore"!==a&&c-l<36e5)return null;l=c;let d=j.NJ||g().join(j.nJ,"db_backups");i().existsSync(d)||i().mkdirSync(d,{recursive:!0});let e=i().readdirSync(d).filter(a=>a.startsWith("db_")&&a.endsWith(".sqlite")).sort();if(e.length>0){let a=e[e.length-1],c=i().statSync(g().join(d,a));if(c.size>4096&&b.size<.5*c.size)return console.warn(`[DB] Backup SKIPPED — DB shrank from ${c.size}B to ${b.size}B`),null}let f=new Date().toISOString().replace(/[:.]/g,"-"),h=g().join(d,`db_${f}_${a}.sqlite`);(0,j.sm)().backup(h).then(()=>{console.log(`[DB] Backup created: ${h} (${b.size} bytes)`)}).catch(a=>{console.error("[DB] Backup failed:",a.message)});let k=i().readdirSync(d).filter(a=>a.startsWith("db_")&&a.endsWith(".sqlite")).sort();for(;k.length>20;){let a=0,b=1/0;for(let c=0;c<k.length-1;c++)try{let e=i().statSync(g().join(d,k[c]));e.size<b&&(b=e.size,a=c)}catch{a=c;break}try{i().unlinkSync(g().join(d,k[a]))}catch{}k.splice(a,1)}return{filename:g().basename(h),size:b.size}}catch(a){return console.error("[DB] Backup failed:",a.message),null}}async function n(){let a=j.NJ||g().join(j.nJ,"db_backups");try{if(!i().existsSync(a))return[];return i().readdirSync(a).filter(a=>a.startsWith("db_")&&a.endsWith(".sqlite")).sort().reverse().map(b=>{let c=g().join(a,b),d=i().statSync(c),f=b.match(/^db_(.+?)_([^.]+)\.sqlite$/),h=f?f[2]:"unknown",j=0;try{let a=new(e())(c,{readonly:!0}),b=a.prepare("SELECT COUNT(*) as cnt FROM provider_connections").get();j=b?.cnt||0,a.close()}catch{}return{id:b,filename:b,createdAt:d.mtime.toISOString(),size:d.size,reason:h,connectionCount:j}})}catch{return[]}}async function o(a){let b=j.NJ||g().join(j.nJ,"db_backups"),c=g().join(b,a);if(!a.startsWith("db_")||!a.endsWith(".sqlite"))throw Error("Invalid backup ID");if(!i().existsSync(c))throw Error(`Backup not found: ${a}`);try{let a=new(e())(c,{readonly:!0}),b=a.pragma("integrity_check");if(a.close(),b[0]?.integrity_check!=="ok")throw Error("Backup integrity check failed")}catch(a){if("Backup integrity check failed"===a.message)throw a;throw Error(`Backup file is corrupt: ${a.message}`)}for(let a of(l=0,m("pre-restore"),(0,j.jX)(),(0,k.AH)(),[j.oh,`${j.oh}-wal`,`${j.oh}-shm`,`${j.oh}-journal`]))a&&i().existsSync(a)&&i().unlinkSync(a);i().copyFileSync(c,j.oh);let d=(0,j.sm)(),f=d.prepare("SELECT COUNT(*) as cnt FROM provider_connections").get()?.cnt||0,h=d.prepare("SELECT COUNT(*) as cnt FROM provider_nodes").get()?.cnt||0,n=d.prepare("SELECT COUNT(*) as cnt FROM combos").get()?.cnt||0,o=d.prepare("SELECT COUNT(*) as cnt FROM api_keys").get()?.cnt||0;return console.log(`[DB] Restored backup: ${a} (${f} connections)`),{restored:!0,backupId:a,connectionCount:f,nodeCount:h,comboCount:n,apiKeyCount:o}}},80500:(a,b,c)=>{c.d(b,{AH:()=>E,Iq:()=>z,Jg:()=>A,Lh:()=>B,PX:()=>w,v9:()=>D,validateApiKey:()=>C,yg:()=>x});var d=c(94755),e=c(42910),f=c(39948);let g=!1,h=new Map,i=new Map,j=new Map,k=new Map,l=null,m=null,n=null,o=null,p=null,q=null,r=null;function s(){h.clear(),i.clear(),k.clear()}function t(a){if(a.size>1e3){let b=Math.floor(200),c=0;for(let d of a.keys()){if(c++>=b)break;a.delete(d)}}}function u(a){if(!g)try{let b=a.prepare("PRAGMA table_info(api_keys)").all();new Set(b.map(a=>a.name)).has("allowed_models")||(a.exec("ALTER TABLE api_keys ADD COLUMN allowed_models TEXT"),console.log("[DB] Added api_keys.allowed_models column")),g=!0}catch(a){console.warn("[DB] Failed to verify api_keys schema:",a.message)}}function v(a){return l||(l=a.prepare("SELECT * FROM api_keys ORDER BY created_at"),m=a.prepare("SELECT * FROM api_keys WHERE id = ?"),n=a.prepare("SELECT 1 FROM api_keys WHERE key = ?"),o=a.prepare("SELECT id, name, machine_id, allowed_models FROM api_keys WHERE key = ?"),p=a.prepare("INSERT INTO api_keys (id, name, key, machine_id, allowed_models, created_at) VALUES (?, ?, ?, ?, ?, ?)"),q=a.prepare("UPDATE api_keys SET allowed_models = ? WHERE id = ?"),r=a.prepare("DELETE FROM api_keys WHERE id = ?")),{getAllKeys:l,getKeyById:m,validateKey:n,getKeyMetadata:o,insertKey:p,updatePermissions:q,deleteKey:r}}async function w(){let a=(0,e.sm)();return u(a),v(a).getAllKeys.all().map(a=>{let b=(0,e.kB)(a);return b.allowedModels=y(b.allowedModels),b})}async function x(a){let b=(0,e.sm)();u(b);let c=v(b).getKeyById.get(a);if(!c)return null;let d=(0,e.kB)(c);return d.allowedModels=y(d.allowedModels),d}function y(a){if(!a||"string"!=typeof a||""===a.trim())return[];try{let b=JSON.parse(a);return Array.isArray(b)?b:[]}catch{return[]}}async function z(a,b){if(!b)throw Error("machineId is required");let g=(0,e.sm)();u(g);let h=new Date().toISOString(),{generateApiKeyWithMachine:i}=await c.e(2286).then(c.bind(c,62286)),j=i(b),k={id:(0,d.A)(),name:a,key:j.key,machineId:b,allowedModels:[],createdAt:h};return v(g).insertKey.run(k.id,k.name,k.key,k.machineId,"[]",k.createdAt),(0,f.lR)("pre-write"),k}async function A(a,b){let c=(0,e.sm)();u(c);let d=JSON.stringify(b||[]);return 0!==v(c).updatePermissions.run(d,a).changes&&(s(),(0,f.lR)("pre-write"),!0)}async function B(a){return 0!==v((0,e.sm)()).deleteKey.run(a).changes&&(s(),(0,f.lR)("pre-write"),!0)}async function C(a){if(!a||"string"!=typeof a)return!1;let b=Date.now(),c=h.get(a);if(c&&b-c.timestamp<6e4)return c.valid;let d=!!v((0,e.sm)()).validateKey.get(a);return d&&(t(h),h.set(a,{valid:!0,timestamp:b})),d}async function D(a){if(!a||"string"!=typeof a)return null;let b=Date.now(),c=i.get(a);if(c&&b-c.timestamp<6e4)return c.metadata;let d=(0,e.sm)();u(d);let f=v(d).getKeyMetadata.get(a);if(!f)return null;let g={id:f.id,name:f.name,machineId:f.machine_id,allowedModels:y(f.allowed_models)};return t(i),i.set(a,{metadata:g,timestamp:b}),g}function E(){l=null,m=null,n=null,o=null,p=null,q=null,r=null,g=!1,s(),k.clear(),j.clear()}}};
45
+ `).run({id:a,type:g.type,name:g.name,prefix:g.prefix||null,apiType:g.apiType||null,baseUrl:g.baseUrl||null,updatedAt:g.updatedAt}),(0,f.lR)("pre-write"),g}async function D(a){let b=(0,e.sm)(),c=b.prepare("SELECT * FROM provider_nodes WHERE id = ?").get(a);return c?(b.prepare("DELETE FROM provider_nodes WHERE id = ?").run(a),(0,f.lR)("pre-write"),(0,e.kB)(c)):null}async function E(){let a=(0,e.sm)().prepare("SELECT key, value FROM key_value WHERE namespace = 'modelAliases'").all(),b={};for(let c of a)b[c.key]=JSON.parse(c.value);return b}async function F(a,b){(0,e.sm)().prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('modelAliases', ?, ?)").run(a,JSON.stringify(b)),(0,f.lR)("pre-write")}async function G(a){(0,e.sm)().prepare("DELETE FROM key_value WHERE namespace = 'modelAliases' AND key = ?").run(a),(0,f.lR)("pre-write")}async function H(a){let b=(0,e.sm)();if(a){let c=b.prepare("SELECT value FROM key_value WHERE namespace = 'mitmAlias' AND key = ?").get(a);return c?JSON.parse(c.value):{}}let c=b.prepare("SELECT key, value FROM key_value WHERE namespace = 'mitmAlias'").all(),d={};for(let a of c)d[a.key]=JSON.parse(a.value);return d}async function I(a,b){(0,e.sm)().prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('mitmAlias', ?, ?)").run(a,JSON.stringify(b||{})),(0,f.lR)("pre-write")}async function J(a){let b=(0,e.sm)();if(a){let c=b.prepare("SELECT value FROM key_value WHERE namespace = 'customModels' AND key = ?").get(a);return c?JSON.parse(c.value):[]}let c=b.prepare("SELECT key, value FROM key_value WHERE namespace = 'customModels'").all(),d={};for(let a of c)d[a.key]=JSON.parse(a.value);return d}async function K(){let a=(0,e.sm)().prepare("SELECT key, value FROM key_value WHERE namespace = 'customModels'").all(),b={};for(let c of a)b[c.key]=JSON.parse(c.value);return b}async function L(a,b,c,d="manual"){let g=(0,e.sm)(),h=g.prepare("SELECT value FROM key_value WHERE namespace = 'customModels' AND key = ?").get(a),i=h?JSON.parse(h.value):[],j=i.find(a=>a.id===b);if(j)return j;let k={id:b,name:c||b,source:d};return i.push(k),g.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('customModels', ?, ?)").run(a,JSON.stringify(i)),(0,f.lR)("pre-write"),k}async function M(a,b){let c=(0,e.sm)(),d=c.prepare("SELECT value FROM key_value WHERE namespace = 'customModels' AND key = ?").get(a);if(!d)return!1;let g=JSON.parse(d.value),h=g.length,i=g.filter(a=>a.id!==b);return i.length!==h&&(0===i.length?c.prepare("DELETE FROM key_value WHERE namespace = 'customModels' AND key = ?").run(a):c.prepare("UPDATE key_value SET value = ? WHERE namespace = 'customModels' AND key = ?").run(JSON.stringify(i),a),(0,f.lR)("pre-write"),!0)}async function N(){return(0,e.sm)().prepare("SELECT data FROM combos ORDER BY name").all().map(a=>JSON.parse(a.data))}async function O(a){let b=(0,e.sm)().prepare("SELECT data FROM combos WHERE id = ?").get(a);return b?JSON.parse(b.data):null}async function P(a){let b=(0,e.sm)().prepare("SELECT data FROM combos WHERE name = ?").get(a);return b?JSON.parse(b.data):null}async function Q(a){let b=(0,e.sm)(),c=new Date().toISOString(),g={id:(0,d.A)(),name:a.name,models:a.models||[],strategy:a.strategy||"priority",config:a.config||{},createdAt:c,updatedAt:c};return b.prepare("INSERT INTO combos (id, name, data, created_at, updated_at) VALUES (?, ?, ?, ?, ?)").run(g.id,g.name,JSON.stringify(g),c,c),(0,f.lR)("pre-write"),g}async function R(a,b){let c=(0,e.sm)(),d=c.prepare("SELECT data FROM combos WHERE id = ?").get(a);if(!d)return null;let g={...JSON.parse(d.data),...b,updatedAt:new Date().toISOString()};return c.prepare("UPDATE combos SET name = ?, data = ?, updated_at = ? WHERE id = ?").run(g.name,JSON.stringify(g),g.updatedAt,a),(0,f.lR)("pre-write"),g}async function S(a){return 0!==(0,e.sm)().prepare("DELETE FROM combos WHERE id = ?").run(a).changes&&((0,f.lR)("pre-write"),!0)}var T=c(80500),U=c(9679)},23969:(a,b,c)=>{c.d(b,{PROVIDER_ID_TO_ALIAS:()=>f,ux:()=>g,vq:()=>e});var d=c(83596);let e=(0,d.oD)(),f=(0,d.Qv)();function g(a,b){let c=e[a];if(!c)return null;let d=c.find(a=>a.id===b);return d?.targetFormat||null}},39948:(a,b,c)=>{c.d(b,{Dp:()=>o,eF:()=>n,lR:()=>m});var d=c(87550),e=c.n(d),f=c(76760),g=c.n(f),h=c(73024),i=c.n(h),j=c(42910),k=c(80500);let l=0;function m(a="auto"){try{if(j.I8||j.m1||!j.oh||!i().existsSync(j.oh))return null;let b=i().statSync(j.oh);if(b.size<4096)return console.warn(`[DB] Backup SKIPPED — DB too small (${b.size}B)`),null;let c=Date.now();if("manual"!==a&&"pre-restore"!==a&&c-l<36e5)return null;l=c;let d=j.NJ||g().join(j.nJ,"db_backups");i().existsSync(d)||i().mkdirSync(d,{recursive:!0});let e=i().readdirSync(d).filter(a=>a.startsWith("db_")&&a.endsWith(".sqlite")).sort();if(e.length>0){let a=e[e.length-1],c=i().statSync(g().join(d,a));if(c.size>4096&&b.size<.5*c.size)return console.warn(`[DB] Backup SKIPPED — DB shrank from ${c.size}B to ${b.size}B`),null}let f=new Date().toISOString().replace(/[:.]/g,"-"),h=g().join(d,`db_${f}_${a}.sqlite`);(0,j.sm)().backup(h).then(()=>{console.log(`[DB] Backup created: ${h} (${b.size} bytes)`)}).catch(a=>{console.error("[DB] Backup failed:",a.message)});let k=i().readdirSync(d).filter(a=>a.startsWith("db_")&&a.endsWith(".sqlite")).sort();for(;k.length>20;){let a=0,b=1/0;for(let c=0;c<k.length-1;c++)try{let e=i().statSync(g().join(d,k[c]));e.size<b&&(b=e.size,a=c)}catch{a=c;break}try{i().unlinkSync(g().join(d,k[a]))}catch{}k.splice(a,1)}return{filename:g().basename(h),size:b.size}}catch(a){return console.error("[DB] Backup failed:",a.message),null}}async function n(){let a=j.NJ||g().join(j.nJ,"db_backups");try{if(!i().existsSync(a))return[];return i().readdirSync(a).filter(a=>a.startsWith("db_")&&a.endsWith(".sqlite")).sort().reverse().map(b=>{let c=g().join(a,b),d=i().statSync(c),f=b.match(/^db_(.+?)_([^.]+)\.sqlite$/),h=f?f[2]:"unknown",j=0;try{let a=new(e())(c,{readonly:!0}),b=a.prepare("SELECT COUNT(*) as cnt FROM provider_connections").get();j=b?.cnt||0,a.close()}catch{}return{id:b,filename:b,createdAt:d.mtime.toISOString(),size:d.size,reason:h,connectionCount:j}})}catch{return[]}}async function o(a){let b=j.NJ||g().join(j.nJ,"db_backups"),c=g().join(b,a);if(!a.startsWith("db_")||!a.endsWith(".sqlite"))throw Error("Invalid backup ID");if(!i().existsSync(c))throw Error(`Backup not found: ${a}`);try{let a=new(e())(c,{readonly:!0}),b=a.pragma("integrity_check");if(a.close(),b[0]?.integrity_check!=="ok")throw Error("Backup integrity check failed")}catch(a){if("Backup integrity check failed"===a.message)throw a;throw Error(`Backup file is corrupt: ${a.message}`)}for(let a of(l=0,m("pre-restore"),(0,j.jX)(),(0,k.AH)(),[j.oh,`${j.oh}-wal`,`${j.oh}-shm`,`${j.oh}-journal`]))a&&i().existsSync(a)&&i().unlinkSync(a);i().copyFileSync(c,j.oh);let d=(0,j.sm)(),f=d.prepare("SELECT COUNT(*) as cnt FROM provider_connections").get()?.cnt||0,h=d.prepare("SELECT COUNT(*) as cnt FROM provider_nodes").get()?.cnt||0,n=d.prepare("SELECT COUNT(*) as cnt FROM combos").get()?.cnt||0,o=d.prepare("SELECT COUNT(*) as cnt FROM api_keys").get()?.cnt||0;return console.log(`[DB] Restored backup: ${a} (${f} connections)`),{restored:!0,backupId:a,connectionCount:f,nodeCount:h,comboCount:n,apiKeyCount:o}}},80500:(a,b,c)=>{c.d(b,{AH:()=>F,Iq:()=>z,Jg:()=>A,Lh:()=>B,Oo:()=>E,PX:()=>w,v9:()=>D,validateApiKey:()=>C,yg:()=>x});var d=c(94755),e=c(42910),f=c(39948);let g=!1,h=new Map,i=new Map,j=new Map,k=new Map,l=null,m=null,n=null,o=null,p=null,q=null,r=null;function s(){h.clear(),i.clear(),k.clear()}function t(a){if(a.size>1e3){let b=Math.floor(200),c=0;for(let d of a.keys()){if(c++>=b)break;a.delete(d)}}}function u(a){if(!g)try{let b=a.prepare("PRAGMA table_info(api_keys)").all();new Set(b.map(a=>a.name)).has("allowed_models")||(a.exec("ALTER TABLE api_keys ADD COLUMN allowed_models TEXT"),console.log("[DB] Added api_keys.allowed_models column")),g=!0}catch(a){console.warn("[DB] Failed to verify api_keys schema:",a.message)}}function v(a){return l||(l=a.prepare("SELECT * FROM api_keys ORDER BY created_at"),m=a.prepare("SELECT * FROM api_keys WHERE id = ?"),n=a.prepare("SELECT 1 FROM api_keys WHERE key = ?"),o=a.prepare("SELECT id, name, machine_id, allowed_models FROM api_keys WHERE key = ?"),p=a.prepare("INSERT INTO api_keys (id, name, key, machine_id, allowed_models, created_at) VALUES (?, ?, ?, ?, ?, ?)"),q=a.prepare("UPDATE api_keys SET allowed_models = ? WHERE id = ?"),r=a.prepare("DELETE FROM api_keys WHERE id = ?")),{getAllKeys:l,getKeyById:m,validateKey:n,getKeyMetadata:o,insertKey:p,updatePermissions:q,deleteKey:r}}async function w(){let a=(0,e.sm)();return u(a),v(a).getAllKeys.all().map(a=>{let b=(0,e.kB)(a);return b.allowedModels=y(b.allowedModels),b})}async function x(a){let b=(0,e.sm)();u(b);let c=v(b).getKeyById.get(a);if(!c)return null;let d=(0,e.kB)(c);return d.allowedModels=y(d.allowedModels),d}function y(a){if(!a||"string"!=typeof a||""===a.trim())return[];try{let b=JSON.parse(a);return Array.isArray(b)?b:[]}catch{return[]}}async function z(a,b){if(!b)throw Error("machineId is required");let g=(0,e.sm)();u(g);let h=new Date().toISOString(),{generateApiKeyWithMachine:i}=await c.e(2286).then(c.bind(c,62286)),j=i(b),k={id:(0,d.A)(),name:a,key:j.key,machineId:b,allowedModels:[],createdAt:h};return v(g).insertKey.run(k.id,k.name,k.key,k.machineId,"[]",k.createdAt),(0,f.lR)("pre-write"),k}async function A(a,b){let c=(0,e.sm)();u(c);let d=JSON.stringify(b||[]);return 0!==v(c).updatePermissions.run(d,a).changes&&(s(),(0,f.lR)("pre-write"),!0)}async function B(a){return 0!==v((0,e.sm)()).deleteKey.run(a).changes&&(s(),(0,f.lR)("pre-write"),!0)}async function C(a){if(!a||"string"!=typeof a)return!1;let b=Date.now(),c=h.get(a);if(c&&b-c.timestamp<6e4)return c.valid;let d=!!v((0,e.sm)()).validateKey.get(a);return d&&(t(h),h.set(a,{valid:!0,timestamp:b})),d}async function D(a){if(!a||"string"!=typeof a)return null;let b=Date.now(),c=i.get(a);if(c&&b-c.timestamp<6e4)return c.metadata;let d=(0,e.sm)();u(d);let f=v(d).getKeyMetadata.get(a);if(!f)return null;let g={id:f.id,name:f.name,machineId:f.machine_id,allowedModels:y(f.allowed_models)};return t(i),i.set(a,{metadata:g,timestamp:b}),g}async function E(a,b){if(!a)return!0;if(!b)return!1;let c=`${a}:${b}`,d=Date.now(),e=k.get(c);if(e&&d-e.timestamp<6e4)return e.allowed;let f=await D(a);if(!f)return!1;let{allowedModels:g}=f;if(!g||0===g.length)return!0;let h=!1;for(let a of g){if(a===b){h=!0;break}if(a.endsWith("/*")){let c=a.slice(0,-2);if(b.startsWith(c+"/")||b.startsWith(c)){h=!0;break}}if(a.includes("*")&&(function(a){let b=j.get(a);if(!b){let c=a.replace(/\*/g,".*");if(b=RegExp(`^${c}$`),j.set(a,b),j.size>100){let a=j.keys().next().value;a&&j.delete(a)}}return b})(a).test(b)){h=!0;break}}return t(k),k.set(c,{allowed:h,timestamp:d}),h}function F(){l=null,m=null,n=null,o=null,p=null,q=null,r=null,g=!1,s(),k.clear(),j.clear()}}};