omniroute 1.0.1 → 1.0.2

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 (956) hide show
  1. package/README.de.md +4 -4
  2. package/README.es.md +4 -4
  3. package/README.fr.md +4 -4
  4. package/README.it.md +4 -4
  5. package/README.md +9 -5
  6. package/README.pt-BR.md +4 -4
  7. package/README.ru.md +4 -4
  8. package/README.zh-CN.md +4 -4
  9. package/app/.next/BUILD_ID +1 -1
  10. package/app/.next/app-path-routes-manifest.json +30 -28
  11. package/app/.next/build-manifest.json +2 -2
  12. package/app/.next/prerender-manifest.json +27 -3
  13. package/app/.next/required-server-files.json +6 -2
  14. package/app/.next/routes-manifest.json +12 -0
  15. package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js +2 -2
  16. package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js.nft.json +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js +2 -0
  19. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js.nft.json +1 -0
  20. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -0
  21. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
  22. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  25. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/costs/page.js +2 -2
  28. package/app/.next/server/app/(dashboard)/dashboard/costs/page.js.nft.json +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  31. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  32. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  33. package/app/.next/server/app/(dashboard)/dashboard/health/page.js +2 -2
  34. package/app/.next/server/app/(dashboard)/dashboard/health/page.js.nft.json +1 -1
  35. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  36. package/app/.next/server/app/(dashboard)/dashboard/limits/page.js +2 -2
  37. package/app/.next/server/app/(dashboard)/dashboard/limits/page.js.nft.json +1 -1
  38. package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
  39. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js +2 -2
  40. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js.nft.json +1 -1
  41. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
  42. package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
  43. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  44. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  45. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  46. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  47. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  48. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  49. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  50. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  51. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  52. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  53. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  54. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  55. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  56. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  57. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js +2 -2
  58. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js.nft.json +1 -1
  59. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  60. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js +2 -2
  61. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js.nft.json +1 -1
  62. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  63. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +3 -3
  64. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  65. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  66. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  67. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  68. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  69. package/app/.next/server/app/_global-error/page.js +3 -3
  70. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  71. package/app/.next/server/app/_global-error.html +2 -2
  72. package/app/.next/server/app/_global-error.rsc +12 -11
  73. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +12 -11
  74. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  75. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  76. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  77. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +4 -3
  78. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  79. package/app/.next/server/app/_not-found/page.js +2 -2
  80. package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
  81. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  82. package/app/.next/server/app/_not-found.html +1 -1
  83. package/app/.next/server/app/_not-found.rsc +18 -17
  84. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +18 -17
  85. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  86. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +6 -5
  87. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  88. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  89. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  90. package/app/.next/server/app/api/auth/login/route.js +1 -1
  91. package/app/.next/server/app/api/auth/login/route.js.nft.json +1 -1
  92. package/app/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  93. package/app/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  94. package/app/.next/server/app/api/auth/status/route.js +1 -0
  95. package/app/.next/server/app/api/auth/status/route.js.nft.json +1 -0
  96. package/app/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -0
  97. package/app/.next/server/app/api/cache/route.js +2 -2
  98. package/app/.next/server/app/api/cache/route.js.nft.json +1 -1
  99. package/app/.next/server/app/api/cache/route_client-reference-manifest.js +1 -1
  100. package/app/.next/server/app/api/cache/stats/route_client-reference-manifest.js +1 -1
  101. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  102. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  103. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
  104. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +2 -2
  105. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
  106. package/app/.next/server/app/api/cli-tools/backups/route.js +2 -2
  107. package/app/.next/server/app/api/cli-tools/backups/route_client-reference-manifest.js +1 -1
  108. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +1 -1
  109. package/app/.next/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  110. package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
  111. package/app/.next/server/app/api/cli-tools/cline-settings/route.js +2 -2
  112. package/app/.next/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  113. package/app/.next/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
  114. package/app/.next/server/app/api/cli-tools/codex-profiles/route.js +2 -2
  115. package/app/.next/server/app/api/cli-tools/codex-profiles/route_client-reference-manifest.js +1 -1
  116. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +1 -1
  117. package/app/.next/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  118. package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
  119. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +2 -2
  120. package/app/.next/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  121. package/app/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
  122. package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route_client-reference-manifest.js +1 -1
  123. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +1 -1
  124. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  125. package/app/.next/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -1
  126. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +1 -1
  127. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  128. package/app/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
  129. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route.js +1 -1
  130. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route_client-reference-manifest.js +1 -1
  131. package/app/.next/server/app/api/cli-tools/status/route.js +2 -2
  132. package/app/.next/server/app/api/cli-tools/status/route.js.nft.json +1 -1
  133. package/app/.next/server/app/api/cli-tools/status/route_client-reference-manifest.js +1 -1
  134. package/app/.next/server/app/api/cloud/auth/route.js +1 -1
  135. package/app/.next/server/app/api/cloud/auth/route.js.nft.json +1 -1
  136. package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
  137. package/app/.next/server/app/api/cloud/credentials/update/route.js +1 -1
  138. package/app/.next/server/app/api/cloud/credentials/update/route.js.nft.json +1 -1
  139. package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
  140. package/app/.next/server/app/api/cloud/model/resolve/route.js +1 -1
  141. package/app/.next/server/app/api/cloud/model/resolve/route.js.nft.json +1 -1
  142. package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
  143. package/app/.next/server/app/api/cloud/models/alias/route.js +1 -1
  144. package/app/.next/server/app/api/cloud/models/alias/route.js.nft.json +1 -1
  145. package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
  146. package/app/.next/server/app/api/combos/[id]/route.js +1 -1
  147. package/app/.next/server/app/api/combos/[id]/route.js.nft.json +1 -1
  148. package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
  149. package/app/.next/server/app/api/combos/metrics/route_client-reference-manifest.js +1 -1
  150. package/app/.next/server/app/api/combos/route.js +1 -1
  151. package/app/.next/server/app/api/combos/route.js.nft.json +1 -1
  152. package/app/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
  153. package/app/.next/server/app/api/combos/test/route.js +1 -1
  154. package/app/.next/server/app/api/combos/test/route.js.nft.json +1 -1
  155. package/app/.next/server/app/api/combos/test/route_client-reference-manifest.js +1 -1
  156. package/app/.next/server/app/api/compliance/audit-log/route.js +1 -1
  157. package/app/.next/server/app/api/compliance/audit-log/route.js.nft.json +1 -1
  158. package/app/.next/server/app/api/compliance/audit-log/route_client-reference-manifest.js +1 -1
  159. package/app/.next/server/app/api/db-backups/export/route.js +1 -1
  160. package/app/.next/server/app/api/db-backups/export/route.js.nft.json +1 -1
  161. package/app/.next/server/app/api/db-backups/export/route_client-reference-manifest.js +1 -1
  162. package/app/.next/server/app/api/db-backups/exportAll/route.js +1 -1
  163. package/app/.next/server/app/api/db-backups/exportAll/route.js.nft.json +1 -1
  164. package/app/.next/server/app/api/db-backups/exportAll/route_client-reference-manifest.js +1 -1
  165. package/app/.next/server/app/api/db-backups/import/route.js +1 -1
  166. package/app/.next/server/app/api/db-backups/import/route.js.nft.json +1 -1
  167. package/app/.next/server/app/api/db-backups/import/route_client-reference-manifest.js +1 -1
  168. package/app/.next/server/app/api/db-backups/route.js +1 -1
  169. package/app/.next/server/app/api/db-backups/route.js.nft.json +1 -1
  170. package/app/.next/server/app/api/db-backups/route_client-reference-manifest.js +1 -1
  171. package/app/.next/server/app/api/evals/[suiteId]/route_client-reference-manifest.js +1 -1
  172. package/app/.next/server/app/api/evals/route_client-reference-manifest.js +1 -1
  173. package/app/.next/server/app/api/fallback/chains/route.js +2 -2
  174. package/app/.next/server/app/api/fallback/chains/route.js.nft.json +1 -1
  175. package/app/.next/server/app/api/fallback/chains/route_client-reference-manifest.js +1 -1
  176. package/app/.next/server/app/api/init/route.js +1 -1
  177. package/app/.next/server/app/api/init/route.js.nft.json +1 -1
  178. package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  179. package/app/.next/server/app/api/keys/[id]/route.js +1 -1
  180. package/app/.next/server/app/api/keys/[id]/route.js.nft.json +1 -1
  181. package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
  182. package/app/.next/server/app/api/keys/route.js +1 -1
  183. package/app/.next/server/app/api/keys/route.js.nft.json +1 -1
  184. package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
  185. package/app/.next/server/app/api/models/alias/route.js +1 -1
  186. package/app/.next/server/app/api/models/alias/route.js.nft.json +1 -1
  187. package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
  188. package/app/.next/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
  189. package/app/.next/server/app/api/models/catalog/route.js +2 -2
  190. package/app/.next/server/app/api/models/catalog/route.js.nft.json +1 -1
  191. package/app/.next/server/app/api/models/catalog/route_client-reference-manifest.js +1 -1
  192. package/app/.next/server/app/api/models/route.js +2 -2
  193. package/app/.next/server/app/api/models/route.js.nft.json +1 -1
  194. package/app/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  195. package/app/.next/server/app/api/monitoring/health/route.js +2 -2
  196. package/app/.next/server/app/api/monitoring/health/route.js.nft.json +1 -1
  197. package/app/.next/server/app/api/monitoring/health/route_client-reference-manifest.js +1 -1
  198. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  199. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  200. package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
  201. package/app/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
  202. package/app/.next/server/app/api/oauth/cursor/import/route.js +1 -1
  203. package/app/.next/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  204. package/app/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
  205. package/app/.next/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
  206. package/app/.next/server/app/api/oauth/kiro/import/route.js +1 -1
  207. package/app/.next/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  208. package/app/.next/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
  209. package/app/.next/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
  210. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  211. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  212. package/app/.next/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
  213. package/app/.next/server/app/api/policies/route.js +2 -2
  214. package/app/.next/server/app/api/policies/route.js.nft.json +1 -1
  215. package/app/.next/server/app/api/policies/route_client-reference-manifest.js +1 -1
  216. package/app/.next/server/app/api/pricing/defaults/route_client-reference-manifest.js +1 -1
  217. package/app/.next/server/app/api/pricing/models/route.js +1 -1
  218. package/app/.next/server/app/api/pricing/models/route.js.nft.json +1 -1
  219. package/app/.next/server/app/api/pricing/models/route_client-reference-manifest.js +1 -1
  220. package/app/.next/server/app/api/pricing/route.js +1 -1
  221. package/app/.next/server/app/api/pricing/route.js.nft.json +1 -1
  222. package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  223. package/app/.next/server/app/api/provider-metrics/route.js +2 -2
  224. package/app/.next/server/app/api/provider-metrics/route.js.nft.json +1 -1
  225. package/app/.next/server/app/api/provider-metrics/route_client-reference-manifest.js +1 -1
  226. package/app/.next/server/app/api/provider-models/route.js +1 -1
  227. package/app/.next/server/app/api/provider-models/route.js.nft.json +1 -1
  228. package/app/.next/server/app/api/provider-models/route_client-reference-manifest.js +1 -1
  229. package/app/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
  230. package/app/.next/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  231. package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
  232. package/app/.next/server/app/api/provider-nodes/route.js +2 -2
  233. package/app/.next/server/app/api/provider-nodes/route.js.nft.json +1 -1
  234. package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
  235. package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
  236. package/app/.next/server/app/api/providers/[id]/models/route.js +2 -2
  237. package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  238. package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
  239. package/app/.next/server/app/api/providers/[id]/route.js +1 -1
  240. package/app/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
  241. package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
  242. package/app/.next/server/app/api/providers/[id]/test/route.js +1 -1
  243. package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  244. package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
  245. package/app/.next/server/app/api/providers/client/route.js +1 -1
  246. package/app/.next/server/app/api/providers/client/route.js.nft.json +1 -1
  247. package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
  248. package/app/.next/server/app/api/providers/route.js +2 -2
  249. package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
  250. package/app/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
  251. package/app/.next/server/app/api/providers/test-batch/route.js +1 -1
  252. package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  253. package/app/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
  254. package/app/.next/server/app/api/providers/validate/route.js +1 -1
  255. package/app/.next/server/app/api/providers/validate/route.js.nft.json +1 -1
  256. package/app/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
  257. package/app/.next/server/app/api/rate-limit/route_client-reference-manifest.js +1 -1
  258. package/app/.next/server/app/api/rate-limits/route.js +1 -1
  259. package/app/.next/server/app/api/rate-limits/route.js.nft.json +1 -1
  260. package/app/.next/server/app/api/rate-limits/route_client-reference-manifest.js +1 -1
  261. package/app/.next/server/app/api/resilience/reset/route.js +1 -1
  262. package/app/.next/server/app/api/resilience/reset/route.js.nft.json +1 -1
  263. package/app/.next/server/app/api/resilience/reset/route_client-reference-manifest.js +1 -1
  264. package/app/.next/server/app/api/resilience/route.js +1 -1
  265. package/app/.next/server/app/api/resilience/route.js.nft.json +1 -1
  266. package/app/.next/server/app/api/resilience/route_client-reference-manifest.js +1 -1
  267. package/app/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  268. package/app/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  269. package/app/.next/server/app/api/settings/combo-defaults/route.js +1 -1
  270. package/app/.next/server/app/api/settings/combo-defaults/route.js.nft.json +1 -1
  271. package/app/.next/server/app/api/settings/combo-defaults/route_client-reference-manifest.js +1 -1
  272. package/app/.next/server/app/api/settings/ip-filter/route_client-reference-manifest.js +1 -1
  273. package/app/.next/server/app/api/settings/proxy/route.js +1 -1
  274. package/app/.next/server/app/api/settings/proxy/route.js.nft.json +1 -1
  275. package/app/.next/server/app/api/settings/proxy/route_client-reference-manifest.js +1 -1
  276. package/app/.next/server/app/api/settings/proxy/test/route_client-reference-manifest.js +1 -1
  277. package/app/.next/server/app/api/settings/require-login/route.js +1 -1
  278. package/app/.next/server/app/api/settings/require-login/route.js.nft.json +1 -1
  279. package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
  280. package/app/.next/server/app/api/settings/route.js +1 -1
  281. package/app/.next/server/app/api/settings/route.js.nft.json +1 -1
  282. package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  283. package/app/.next/server/app/api/settings/system-prompt/route.js +1 -1
  284. package/app/.next/server/app/api/settings/system-prompt/route.js.nft.json +1 -1
  285. package/app/.next/server/app/api/settings/system-prompt/route_client-reference-manifest.js +1 -1
  286. package/app/.next/server/app/api/settings/thinking-budget/route.js +1 -1
  287. package/app/.next/server/app/api/settings/thinking-budget/route.js.nft.json +1 -1
  288. package/app/.next/server/app/api/settings/thinking-budget/route_client-reference-manifest.js +1 -1
  289. package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  290. package/app/.next/server/app/api/storage/health/route_client-reference-manifest.js +1 -1
  291. package/app/.next/server/app/api/sync/cloud/route.js +1 -1
  292. package/app/.next/server/app/api/sync/cloud/route.js.nft.json +1 -1
  293. package/app/.next/server/app/api/sync/cloud/route_client-reference-manifest.js +1 -1
  294. package/app/.next/server/app/api/sync/initialize/route.js +1 -1
  295. package/app/.next/server/app/api/sync/initialize/route.js.nft.json +1 -1
  296. package/app/.next/server/app/api/sync/initialize/route_client-reference-manifest.js +1 -1
  297. package/app/.next/server/app/api/tags/route.js +1 -1
  298. package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
  299. package/app/.next/server/app/api/telemetry/summary/route_client-reference-manifest.js +1 -1
  300. package/app/.next/server/app/api/token-health/route.js +1 -1
  301. package/app/.next/server/app/api/token-health/route.js.nft.json +1 -1
  302. package/app/.next/server/app/api/token-health/route_client-reference-manifest.js +1 -1
  303. package/app/.next/server/app/api/translator/detect/route_client-reference-manifest.js +1 -1
  304. package/app/.next/server/app/api/translator/history/route_client-reference-manifest.js +1 -1
  305. package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
  306. package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
  307. package/app/.next/server/app/api/translator/send/route.js +1 -1
  308. package/app/.next/server/app/api/translator/send/route.js.nft.json +1 -1
  309. package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
  310. package/app/.next/server/app/api/translator/translate/route.js +1 -1
  311. package/app/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
  312. package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
  313. package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
  314. package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  315. package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
  316. package/app/.next/server/app/api/usage/analytics/route.js +1 -1
  317. package/app/.next/server/app/api/usage/analytics/route.js.nft.json +1 -1
  318. package/app/.next/server/app/api/usage/analytics/route_client-reference-manifest.js +1 -1
  319. package/app/.next/server/app/api/usage/budget/route.js +2 -2
  320. package/app/.next/server/app/api/usage/budget/route.js.nft.json +1 -1
  321. package/app/.next/server/app/api/usage/budget/route_client-reference-manifest.js +1 -1
  322. package/app/.next/server/app/api/usage/call-logs/[id]/route.js +1 -1
  323. package/app/.next/server/app/api/usage/call-logs/[id]/route.js.nft.json +1 -1
  324. package/app/.next/server/app/api/usage/call-logs/[id]/route_client-reference-manifest.js +1 -1
  325. package/app/.next/server/app/api/usage/call-logs/route.js +1 -1
  326. package/app/.next/server/app/api/usage/call-logs/route.js.nft.json +1 -1
  327. package/app/.next/server/app/api/usage/call-logs/route_client-reference-manifest.js +1 -1
  328. package/app/.next/server/app/api/usage/history/route.js +1 -1
  329. package/app/.next/server/app/api/usage/history/route.js.nft.json +1 -1
  330. package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
  331. package/app/.next/server/app/api/usage/logs/route.js +1 -1
  332. package/app/.next/server/app/api/usage/logs/route.js.nft.json +1 -1
  333. package/app/.next/server/app/api/usage/logs/route_client-reference-manifest.js +1 -1
  334. package/app/.next/server/app/api/usage/proxy-logs/route.js +2 -2
  335. package/app/.next/server/app/api/usage/proxy-logs/route.js.nft.json +1 -1
  336. package/app/.next/server/app/api/usage/proxy-logs/route_client-reference-manifest.js +1 -1
  337. package/app/.next/server/app/api/usage/request-logs/route.js +1 -1
  338. package/app/.next/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  339. package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
  340. package/app/.next/server/app/api/v1/api/chat/route.js +1 -1
  341. package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  342. package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
  343. package/app/.next/server/app/api/v1/audio/speech/route.js +1 -1
  344. package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  345. package/app/.next/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
  346. package/app/.next/server/app/api/v1/audio/transcriptions/route.js +1 -1
  347. package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  348. package/app/.next/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
  349. package/app/.next/server/app/api/v1/chat/completions/route.js +1 -1
  350. package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  351. package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
  352. package/app/.next/server/app/api/v1/embeddings/route.js +1 -1
  353. package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  354. package/app/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
  355. package/app/.next/server/app/api/v1/images/generations/route.js +1 -1
  356. package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  357. package/app/.next/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
  358. package/app/.next/server/app/api/v1/messages/count_tokens/route.js +1 -1
  359. package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
  360. package/app/.next/server/app/api/v1/messages/route.js +1 -1
  361. package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
  362. package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
  363. package/app/.next/server/app/api/v1/models/route.js +2 -2
  364. package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
  365. package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
  366. package/app/.next/server/app/api/v1/moderations/route.js +1 -1
  367. package/app/.next/server/app/api/v1/moderations/route.js.nft.json +1 -1
  368. package/app/.next/server/app/api/v1/moderations/route_client-reference-manifest.js +1 -1
  369. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js +1 -1
  370. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js.nft.json +1 -1
  371. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route_client-reference-manifest.js +1 -1
  372. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js +1 -1
  373. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js.nft.json +1 -1
  374. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route_client-reference-manifest.js +1 -1
  375. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js +1 -1
  376. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js.nft.json +1 -1
  377. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route_client-reference-manifest.js +1 -1
  378. package/app/.next/server/app/api/v1/rerank/route.js +1 -1
  379. package/app/.next/server/app/api/v1/rerank/route.js.nft.json +1 -1
  380. package/app/.next/server/app/api/v1/rerank/route_client-reference-manifest.js +1 -1
  381. package/app/.next/server/app/api/v1/responses/route.js +1 -1
  382. package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
  383. package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
  384. package/app/.next/server/app/api/v1/route.js +1 -1
  385. package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
  386. package/app/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
  387. package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  388. package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
  389. package/app/.next/server/app/api/v1beta/models/route.js +1 -1
  390. package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
  391. package/app/.next/server/app/callback/page.js +2 -2
  392. package/app/.next/server/app/callback/page.js.nft.json +1 -1
  393. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  394. package/app/.next/server/app/callback.html +1 -1
  395. package/app/.next/server/app/callback.rsc +19 -18
  396. package/app/.next/server/app/callback.segments/_full.segment.rsc +19 -18
  397. package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
  398. package/app/.next/server/app/callback.segments/_index.segment.rsc +6 -5
  399. package/app/.next/server/app/callback.segments/_tree.segment.rsc +2 -2
  400. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  401. package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
  402. package/app/.next/server/app/dashboard/analytics.html +2 -1
  403. package/app/.next/server/app/dashboard/analytics.rsc +21 -19
  404. package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics/__PAGE__.segment.rsc +2 -2
  405. package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics.segment.rsc +2 -1
  406. package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  407. package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  408. package/app/.next/server/app/dashboard/analytics.segments/_full.segment.rsc +21 -19
  409. package/app/.next/server/app/dashboard/analytics.segments/_head.segment.rsc +1 -1
  410. package/app/.next/server/app/dashboard/analytics.segments/_index.segment.rsc +6 -5
  411. package/app/.next/server/app/dashboard/analytics.segments/_tree.segment.rsc +2 -2
  412. package/app/.next/server/app/dashboard/audit-log.html +1 -0
  413. package/app/.next/server/app/dashboard/audit-log.meta +17 -0
  414. package/app/.next/server/app/dashboard/audit-log.rsc +25 -0
  415. package/app/.next/server/app/dashboard/audit-log.segments/!KGRhc2hib2FyZCk/dashboard/audit-log/__PAGE__.segment.rsc +9 -0
  416. package/app/.next/server/app/dashboard/audit-log.segments/!KGRhc2hib2FyZCk/dashboard/audit-log.segment.rsc +4 -0
  417. package/app/.next/server/app/dashboard/audit-log.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +4 -0
  418. package/app/.next/server/app/dashboard/audit-log.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -0
  419. package/app/.next/server/app/dashboard/audit-log.segments/_full.segment.rsc +25 -0
  420. package/app/.next/server/app/dashboard/audit-log.segments/_head.segment.rsc +6 -0
  421. package/app/.next/server/app/dashboard/audit-log.segments/_index.segment.rsc +10 -0
  422. package/app/.next/server/app/dashboard/audit-log.segments/_tree.segment.rsc +5 -0
  423. package/app/.next/server/app/dashboard/cli-tools.html +1 -1
  424. package/app/.next/server/app/dashboard/cli-tools.rsc +18 -17
  425. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  426. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  427. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  428. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  429. package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +18 -17
  430. package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  431. package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +6 -5
  432. package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  433. package/app/.next/server/app/dashboard/combos.html +1 -1
  434. package/app/.next/server/app/dashboard/combos.rsc +20 -19
  435. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  436. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  437. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  438. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  439. package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +20 -19
  440. package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  441. package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +6 -5
  442. package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  443. package/app/.next/server/app/dashboard/costs.html +1 -1
  444. package/app/.next/server/app/dashboard/costs.rsc +20 -19
  445. package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk/dashboard/costs/__PAGE__.segment.rsc +2 -2
  446. package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk/dashboard/costs.segment.rsc +1 -1
  447. package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  448. package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  449. package/app/.next/server/app/dashboard/costs.segments/_full.segment.rsc +20 -19
  450. package/app/.next/server/app/dashboard/costs.segments/_head.segment.rsc +1 -1
  451. package/app/.next/server/app/dashboard/costs.segments/_index.segment.rsc +6 -5
  452. package/app/.next/server/app/dashboard/costs.segments/_tree.segment.rsc +2 -2
  453. package/app/.next/server/app/dashboard/endpoint.html +1 -1
  454. package/app/.next/server/app/dashboard/endpoint.rsc +18 -17
  455. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  456. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  457. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  458. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  459. package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +18 -17
  460. package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  461. package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +6 -5
  462. package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  463. package/app/.next/server/app/dashboard/health.html +1 -1
  464. package/app/.next/server/app/dashboard/health.rsc +20 -19
  465. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard/health/__PAGE__.segment.rsc +2 -2
  466. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard/health.segment.rsc +1 -1
  467. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  468. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  469. package/app/.next/server/app/dashboard/health.segments/_full.segment.rsc +20 -19
  470. package/app/.next/server/app/dashboard/health.segments/_head.segment.rsc +1 -1
  471. package/app/.next/server/app/dashboard/health.segments/_index.segment.rsc +6 -5
  472. package/app/.next/server/app/dashboard/health.segments/_tree.segment.rsc +2 -2
  473. package/app/.next/server/app/dashboard/limits.html +2 -2
  474. package/app/.next/server/app/dashboard/limits.rsc +20 -19
  475. package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk/dashboard/limits/__PAGE__.segment.rsc +2 -2
  476. package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk/dashboard/limits.segment.rsc +1 -1
  477. package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  478. package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  479. package/app/.next/server/app/dashboard/limits.segments/_full.segment.rsc +20 -19
  480. package/app/.next/server/app/dashboard/limits.segments/_head.segment.rsc +1 -1
  481. package/app/.next/server/app/dashboard/limits.segments/_index.segment.rsc +6 -5
  482. package/app/.next/server/app/dashboard/limits.segments/_tree.segment.rsc +2 -2
  483. package/app/.next/server/app/dashboard/onboarding.html +1 -1
  484. package/app/.next/server/app/dashboard/onboarding.rsc +20 -19
  485. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard/onboarding/__PAGE__.segment.rsc +2 -2
  486. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard/onboarding.segment.rsc +1 -1
  487. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  488. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  489. package/app/.next/server/app/dashboard/onboarding.segments/_full.segment.rsc +20 -19
  490. package/app/.next/server/app/dashboard/onboarding.segments/_head.segment.rsc +1 -1
  491. package/app/.next/server/app/dashboard/onboarding.segments/_index.segment.rsc +6 -5
  492. package/app/.next/server/app/dashboard/onboarding.segments/_tree.segment.rsc +2 -2
  493. package/app/.next/server/app/dashboard/profile.html +1 -1
  494. package/app/.next/server/app/dashboard/profile.rsc +17 -16
  495. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +1 -1
  496. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  497. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  498. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  499. package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +17 -16
  500. package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  501. package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +6 -5
  502. package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  503. package/app/.next/server/app/dashboard/providers/new.html +2 -1
  504. package/app/.next/server/app/dashboard/providers/new.rsc +22 -19
  505. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  506. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  507. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +4 -2
  508. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  509. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  510. package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +22 -19
  511. package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  512. package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +6 -5
  513. package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  514. package/app/.next/server/app/dashboard/providers.html +2 -1
  515. package/app/.next/server/app/dashboard/providers.rsc +22 -19
  516. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  517. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +4 -2
  518. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  519. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  520. package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +22 -19
  521. package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  522. package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +6 -5
  523. package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  524. package/app/.next/server/app/dashboard/settings/pricing.html +2 -1
  525. package/app/.next/server/app/dashboard/settings/pricing.rsc +22 -19
  526. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  527. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing.segment.rsc +1 -1
  528. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings.segment.rsc +4 -2
  529. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  530. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  531. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +22 -19
  532. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  533. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +6 -5
  534. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  535. package/app/.next/server/app/dashboard/settings.html +2 -1
  536. package/app/.next/server/app/dashboard/settings.rsc +22 -19
  537. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard/settings/__PAGE__.segment.rsc +2 -2
  538. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard/settings.segment.rsc +4 -2
  539. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  540. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  541. package/app/.next/server/app/dashboard/settings.segments/_full.segment.rsc +22 -19
  542. package/app/.next/server/app/dashboard/settings.segments/_head.segment.rsc +1 -1
  543. package/app/.next/server/app/dashboard/settings.segments/_index.segment.rsc +6 -5
  544. package/app/.next/server/app/dashboard/settings.segments/_tree.segment.rsc +2 -2
  545. package/app/.next/server/app/dashboard/translator.html +2 -2
  546. package/app/.next/server/app/dashboard/translator.rsc +17 -16
  547. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  548. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  549. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  550. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  551. package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +17 -16
  552. package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  553. package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +6 -5
  554. package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  555. package/app/.next/server/app/dashboard/usage.html +1 -1
  556. package/app/.next/server/app/dashboard/usage.rsc +20 -19
  557. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  558. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  559. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  560. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  561. package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +20 -19
  562. package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  563. package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +6 -5
  564. package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  565. package/app/.next/server/app/docs/page.js +3 -3
  566. package/app/.next/server/app/docs/page.js.nft.json +1 -1
  567. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  568. package/app/.next/server/app/docs.html +1 -1
  569. package/app/.next/server/app/docs.rsc +83 -82
  570. package/app/.next/server/app/docs.segments/_full.segment.rsc +83 -82
  571. package/app/.next/server/app/docs.segments/_head.segment.rsc +1 -1
  572. package/app/.next/server/app/docs.segments/_index.segment.rsc +6 -5
  573. package/app/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
  574. package/app/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +2 -2
  575. package/app/.next/server/app/docs.segments/docs.segment.rsc +1 -1
  576. package/app/.next/server/app/forbidden/page.js +2 -2
  577. package/app/.next/server/app/forbidden/page.js.nft.json +1 -1
  578. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
  579. package/app/.next/server/app/forbidden.html +1 -1
  580. package/app/.next/server/app/forbidden.rsc +19 -18
  581. package/app/.next/server/app/forbidden.segments/_full.segment.rsc +19 -18
  582. package/app/.next/server/app/forbidden.segments/_head.segment.rsc +1 -1
  583. package/app/.next/server/app/forbidden.segments/_index.segment.rsc +6 -5
  584. package/app/.next/server/app/forbidden.segments/_tree.segment.rsc +2 -2
  585. package/app/.next/server/app/forbidden.segments/forbidden/__PAGE__.segment.rsc +1 -1
  586. package/app/.next/server/app/forbidden.segments/forbidden.segment.rsc +1 -1
  587. package/app/.next/server/app/forgot-password/page.js +2 -2
  588. package/app/.next/server/app/forgot-password/page.js.nft.json +1 -1
  589. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  590. package/app/.next/server/app/forgot-password.html +1 -1
  591. package/app/.next/server/app/forgot-password.rsc +19 -18
  592. package/app/.next/server/app/forgot-password.segments/_full.segment.rsc +19 -18
  593. package/app/.next/server/app/forgot-password.segments/_head.segment.rsc +1 -1
  594. package/app/.next/server/app/forgot-password.segments/_index.segment.rsc +6 -5
  595. package/app/.next/server/app/forgot-password.segments/_tree.segment.rsc +2 -2
  596. package/app/.next/server/app/forgot-password.segments/forgot-password/__PAGE__.segment.rsc +2 -2
  597. package/app/.next/server/app/forgot-password.segments/forgot-password.segment.rsc +1 -1
  598. package/app/.next/server/app/index.html +1 -1
  599. package/app/.next/server/app/index.rsc +16 -15
  600. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  601. package/app/.next/server/app/index.segments/_full.segment.rsc +16 -15
  602. package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
  603. package/app/.next/server/app/index.segments/_index.segment.rsc +6 -5
  604. package/app/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  605. package/app/.next/server/app/landing/page.js +2 -2
  606. package/app/.next/server/app/landing/page.js.nft.json +1 -1
  607. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  608. package/app/.next/server/app/landing.html +1 -1
  609. package/app/.next/server/app/landing.rsc +19 -18
  610. package/app/.next/server/app/landing.segments/_full.segment.rsc +19 -18
  611. package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
  612. package/app/.next/server/app/landing.segments/_index.segment.rsc +6 -5
  613. package/app/.next/server/app/landing.segments/_tree.segment.rsc +2 -2
  614. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  615. package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
  616. package/app/.next/server/app/login/page.js +2 -2
  617. package/app/.next/server/app/login/page.js.nft.json +1 -1
  618. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  619. package/app/.next/server/app/login.html +1 -1
  620. package/app/.next/server/app/login.rsc +19 -18
  621. package/app/.next/server/app/login.segments/_full.segment.rsc +19 -18
  622. package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
  623. package/app/.next/server/app/login.segments/_index.segment.rsc +6 -5
  624. package/app/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  625. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  626. package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
  627. package/app/.next/server/app/page.js +2 -2
  628. package/app/.next/server/app/page.js.nft.json +1 -1
  629. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  630. package/app/.next/server/app/privacy/page.js +2 -2
  631. package/app/.next/server/app/privacy/page.js.nft.json +1 -1
  632. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  633. package/app/.next/server/app/privacy.html +1 -1
  634. package/app/.next/server/app/privacy.rsc +23 -22
  635. package/app/.next/server/app/privacy.segments/_full.segment.rsc +23 -22
  636. package/app/.next/server/app/privacy.segments/_head.segment.rsc +1 -1
  637. package/app/.next/server/app/privacy.segments/_index.segment.rsc +6 -5
  638. package/app/.next/server/app/privacy.segments/_tree.segment.rsc +2 -2
  639. package/app/.next/server/app/privacy.segments/privacy/__PAGE__.segment.rsc +1 -1
  640. package/app/.next/server/app/privacy.segments/privacy.segment.rsc +1 -1
  641. package/app/.next/server/app/terms/page.js +2 -2
  642. package/app/.next/server/app/terms/page.js.nft.json +1 -1
  643. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  644. package/app/.next/server/app/terms.html +1 -1
  645. package/app/.next/server/app/terms.rsc +24 -23
  646. package/app/.next/server/app/terms.segments/_full.segment.rsc +24 -23
  647. package/app/.next/server/app/terms.segments/_head.segment.rsc +1 -1
  648. package/app/.next/server/app/terms.segments/_index.segment.rsc +6 -5
  649. package/app/.next/server/app/terms.segments/_tree.segment.rsc +2 -2
  650. package/app/.next/server/app/terms.segments/terms/__PAGE__.segment.rsc +1 -1
  651. package/app/.next/server/app/terms.segments/terms.segment.rsc +1 -1
  652. package/app/.next/server/app-paths-manifest.json +30 -28
  653. package/app/.next/server/chunks/1079.js +1 -1
  654. package/app/.next/server/chunks/239.js +1 -1
  655. package/app/.next/server/chunks/2620.js +1 -1
  656. package/app/.next/server/chunks/2767.js +6 -6
  657. package/app/.next/server/chunks/287.js +1 -1
  658. package/app/.next/server/chunks/{1549.js → 2910.js} +17 -3
  659. package/app/.next/server/chunks/3447.js +9 -0
  660. package/app/.next/server/chunks/4133.js +1 -0
  661. package/app/.next/server/chunks/4488.js +243 -0
  662. package/app/.next/server/chunks/7109.js +1 -1
  663. package/app/.next/server/chunks/7230.js +4 -4
  664. package/app/.next/server/chunks/73.js +1 -0
  665. package/app/.next/server/chunks/7669.js +1 -1
  666. package/app/.next/server/chunks/7723.js +2 -0
  667. package/app/.next/server/chunks/9979.js +2 -0
  668. package/app/.next/server/functions-config-manifest.json +4 -0
  669. package/app/.next/server/instrumentation.js +1 -0
  670. package/app/.next/server/middleware.js +18 -4
  671. package/app/.next/server/pages/404.html +1 -1
  672. package/app/.next/server/pages/500.html +2 -2
  673. package/app/.next/server/server-reference-manifest.js +1 -1
  674. package/app/.next/server/server-reference-manifest.json +1 -1
  675. package/app/.next/static/chunks/{5846-dfe52e95348ffdd8.js → 5846-69e259486db2f6f8.js} +1 -1
  676. package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/loading-6f1750506292c630.js +1 -0
  677. package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/{page-74ac2092c2a6b3dc.js → page-f8b57e41a1b6fce6.js} +1 -1
  678. package/app/.next/static/chunks/app/(dashboard)/dashboard/audit-log/page-c37f849e39b1bf02.js +1 -0
  679. package/app/.next/static/chunks/app/(dashboard)/dashboard/onboarding/page-19072ecdea202e4e.js +1 -0
  680. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-d2651dc387e7fdfd.js +1 -0
  681. package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/{page-58b169603fdf1d6f.js → page-2e6b2c37e502d893.js} +1 -1
  682. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/error-2f0177a2197dd556.js +1 -0
  683. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/loading-99ab4d478260d53b.js +1 -0
  684. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/error-e844916e39172c8b.js +1 -0
  685. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/loading-bb068659ee679ff4.js +1 -0
  686. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-1067b7b1be3728d7.js +1 -0
  687. package/app/.next/static/chunks/app/_global-error/{page-58b169603fdf1d6f.js → page-2e6b2c37e502d893.js} +1 -1
  688. package/app/.next/static/chunks/app/_not-found/{page-58b169603fdf1d6f.js → page-2e6b2c37e502d893.js} +1 -1
  689. package/app/.next/static/chunks/app/api/auth/login/{route-58b169603fdf1d6f.js → route-2e6b2c37e502d893.js} +1 -1
  690. package/app/.next/static/chunks/app/api/auth/logout/route-2e6b2c37e502d893.js +1 -0
  691. package/app/.next/static/chunks/app/api/auth/status/route-2e6b2c37e502d893.js +1 -0
  692. package/app/.next/static/chunks/app/api/cache/route-2e6b2c37e502d893.js +1 -0
  693. package/app/.next/static/chunks/app/api/cache/stats/route-2e6b2c37e502d893.js +1 -0
  694. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-2e6b2c37e502d893.js +1 -0
  695. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-2e6b2c37e502d893.js +1 -0
  696. package/app/.next/static/chunks/app/api/cli-tools/backups/route-2e6b2c37e502d893.js +1 -0
  697. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-2e6b2c37e502d893.js +1 -0
  698. package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-2e6b2c37e502d893.js +1 -0
  699. package/app/.next/static/chunks/app/api/cli-tools/codex-profiles/route-2e6b2c37e502d893.js +1 -0
  700. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-2e6b2c37e502d893.js +1 -0
  701. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-2e6b2c37e502d893.js +1 -0
  702. package/app/.next/static/chunks/app/api/cli-tools/guide-settings/[toolId]/route-2e6b2c37e502d893.js +1 -0
  703. package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-2e6b2c37e502d893.js +1 -0
  704. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-2e6b2c37e502d893.js +1 -0
  705. package/app/.next/static/chunks/app/api/cli-tools/runtime/[toolId]/route-2e6b2c37e502d893.js +1 -0
  706. package/app/.next/static/chunks/app/api/cli-tools/status/route-2e6b2c37e502d893.js +1 -0
  707. package/app/.next/static/chunks/app/api/cloud/auth/route-2e6b2c37e502d893.js +1 -0
  708. package/app/.next/static/chunks/app/api/cloud/credentials/update/route-2e6b2c37e502d893.js +1 -0
  709. package/app/.next/static/chunks/app/api/cloud/model/resolve/route-2e6b2c37e502d893.js +1 -0
  710. package/app/.next/static/chunks/app/api/cloud/models/alias/route-2e6b2c37e502d893.js +1 -0
  711. package/app/.next/static/chunks/app/api/combos/[id]/route-2e6b2c37e502d893.js +1 -0
  712. package/app/.next/static/chunks/app/api/combos/metrics/route-2e6b2c37e502d893.js +1 -0
  713. package/app/.next/static/chunks/app/api/combos/route-2e6b2c37e502d893.js +1 -0
  714. package/app/.next/static/chunks/app/api/combos/test/route-2e6b2c37e502d893.js +1 -0
  715. package/app/.next/static/chunks/app/api/compliance/audit-log/route-2e6b2c37e502d893.js +1 -0
  716. package/app/.next/static/chunks/app/api/db-backups/export/route-2e6b2c37e502d893.js +1 -0
  717. package/app/.next/static/chunks/app/api/db-backups/exportAll/route-2e6b2c37e502d893.js +1 -0
  718. package/app/.next/static/chunks/app/api/db-backups/import/route-2e6b2c37e502d893.js +1 -0
  719. package/app/.next/static/chunks/app/api/db-backups/route-2e6b2c37e502d893.js +1 -0
  720. package/app/.next/static/chunks/app/api/evals/[suiteId]/route-2e6b2c37e502d893.js +1 -0
  721. package/app/.next/static/chunks/app/api/evals/route-2e6b2c37e502d893.js +1 -0
  722. package/app/.next/static/chunks/app/api/fallback/chains/route-2e6b2c37e502d893.js +1 -0
  723. package/app/.next/static/chunks/app/api/init/route-2e6b2c37e502d893.js +1 -0
  724. package/app/.next/static/chunks/app/api/keys/[id]/route-2e6b2c37e502d893.js +1 -0
  725. package/app/.next/static/chunks/app/api/keys/route-2e6b2c37e502d893.js +1 -0
  726. package/app/.next/static/chunks/app/api/models/alias/route-2e6b2c37e502d893.js +1 -0
  727. package/app/.next/static/chunks/app/api/models/availability/route-2e6b2c37e502d893.js +1 -0
  728. package/app/.next/static/chunks/app/api/models/catalog/route-2e6b2c37e502d893.js +1 -0
  729. package/app/.next/static/chunks/app/api/models/route-2e6b2c37e502d893.js +1 -0
  730. package/app/.next/static/chunks/app/api/monitoring/health/route-2e6b2c37e502d893.js +1 -0
  731. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-2e6b2c37e502d893.js +1 -0
  732. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-2e6b2c37e502d893.js +1 -0
  733. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-2e6b2c37e502d893.js +1 -0
  734. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-2e6b2c37e502d893.js +1 -0
  735. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-2e6b2c37e502d893.js +1 -0
  736. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-2e6b2c37e502d893.js +1 -0
  737. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-2e6b2c37e502d893.js +1 -0
  738. package/app/.next/static/chunks/app/api/policies/route-2e6b2c37e502d893.js +1 -0
  739. package/app/.next/static/chunks/app/api/pricing/defaults/route-2e6b2c37e502d893.js +1 -0
  740. package/app/.next/static/chunks/app/api/pricing/models/route-2e6b2c37e502d893.js +1 -0
  741. package/app/.next/static/chunks/app/api/pricing/route-2e6b2c37e502d893.js +1 -0
  742. package/app/.next/static/chunks/app/api/provider-metrics/route-2e6b2c37e502d893.js +1 -0
  743. package/app/.next/static/chunks/app/api/provider-models/route-2e6b2c37e502d893.js +1 -0
  744. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-2e6b2c37e502d893.js +1 -0
  745. package/app/.next/static/chunks/app/api/provider-nodes/route-2e6b2c37e502d893.js +1 -0
  746. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-2e6b2c37e502d893.js +1 -0
  747. package/app/.next/static/chunks/app/api/providers/[id]/models/route-2e6b2c37e502d893.js +1 -0
  748. package/app/.next/static/chunks/app/api/providers/[id]/route-2e6b2c37e502d893.js +1 -0
  749. package/app/.next/static/chunks/app/api/providers/[id]/test/route-2e6b2c37e502d893.js +1 -0
  750. package/app/.next/static/chunks/app/api/providers/client/route-2e6b2c37e502d893.js +1 -0
  751. package/app/.next/static/chunks/app/api/providers/route-2e6b2c37e502d893.js +1 -0
  752. package/app/.next/static/chunks/app/api/providers/test-batch/route-2e6b2c37e502d893.js +1 -0
  753. package/app/.next/static/chunks/app/api/providers/validate/route-2e6b2c37e502d893.js +1 -0
  754. package/app/.next/static/chunks/app/api/rate-limit/route-2e6b2c37e502d893.js +1 -0
  755. package/app/.next/static/chunks/app/api/rate-limits/route-2e6b2c37e502d893.js +1 -0
  756. package/app/.next/static/chunks/app/api/resilience/reset/route-2e6b2c37e502d893.js +1 -0
  757. package/app/.next/static/chunks/app/api/resilience/route-2e6b2c37e502d893.js +1 -0
  758. package/app/.next/static/chunks/app/api/restart/route-2e6b2c37e502d893.js +1 -0
  759. package/app/.next/static/chunks/app/api/sessions/route-2e6b2c37e502d893.js +1 -0
  760. package/app/.next/static/chunks/app/api/settings/combo-defaults/route-2e6b2c37e502d893.js +1 -0
  761. package/app/.next/static/chunks/app/api/settings/ip-filter/route-2e6b2c37e502d893.js +1 -0
  762. package/app/.next/static/chunks/app/api/settings/proxy/route-2e6b2c37e502d893.js +1 -0
  763. package/app/.next/static/chunks/app/api/settings/proxy/test/route-2e6b2c37e502d893.js +1 -0
  764. package/app/.next/static/chunks/app/api/settings/require-login/route-2e6b2c37e502d893.js +1 -0
  765. package/app/.next/static/chunks/app/api/settings/route-2e6b2c37e502d893.js +1 -0
  766. package/app/.next/static/chunks/app/api/settings/system-prompt/route-2e6b2c37e502d893.js +1 -0
  767. package/app/.next/static/chunks/app/api/settings/thinking-budget/route-2e6b2c37e502d893.js +1 -0
  768. package/app/.next/static/chunks/app/api/shutdown/route-2e6b2c37e502d893.js +1 -0
  769. package/app/.next/static/chunks/app/api/storage/health/route-2e6b2c37e502d893.js +1 -0
  770. package/app/.next/static/chunks/app/api/sync/cloud/route-2e6b2c37e502d893.js +1 -0
  771. package/app/.next/static/chunks/app/api/sync/initialize/route-2e6b2c37e502d893.js +1 -0
  772. package/app/.next/static/chunks/app/api/tags/route-2e6b2c37e502d893.js +1 -0
  773. package/app/.next/static/chunks/app/api/telemetry/summary/route-2e6b2c37e502d893.js +1 -0
  774. package/app/.next/static/chunks/app/api/token-health/route-2e6b2c37e502d893.js +1 -0
  775. package/app/.next/static/chunks/app/api/translator/detect/route-2e6b2c37e502d893.js +1 -0
  776. package/app/.next/static/chunks/app/api/translator/history/route-2e6b2c37e502d893.js +1 -0
  777. package/app/.next/static/chunks/app/api/translator/load/route-2e6b2c37e502d893.js +1 -0
  778. package/app/.next/static/chunks/app/api/translator/save/route-2e6b2c37e502d893.js +1 -0
  779. package/app/.next/static/chunks/app/api/translator/send/route-2e6b2c37e502d893.js +1 -0
  780. package/app/.next/static/chunks/app/api/translator/translate/route-2e6b2c37e502d893.js +1 -0
  781. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-2e6b2c37e502d893.js +1 -0
  782. package/app/.next/static/chunks/app/api/usage/analytics/route-2e6b2c37e502d893.js +1 -0
  783. package/app/.next/static/chunks/app/api/usage/budget/route-2e6b2c37e502d893.js +1 -0
  784. package/app/.next/static/chunks/app/api/usage/call-logs/[id]/route-2e6b2c37e502d893.js +1 -0
  785. package/app/.next/static/chunks/app/api/usage/call-logs/route-2e6b2c37e502d893.js +1 -0
  786. package/app/.next/static/chunks/app/api/usage/history/route-2e6b2c37e502d893.js +1 -0
  787. package/app/.next/static/chunks/app/api/usage/logs/route-2e6b2c37e502d893.js +1 -0
  788. package/app/.next/static/chunks/app/api/usage/proxy-logs/route-2e6b2c37e502d893.js +1 -0
  789. package/app/.next/static/chunks/app/api/usage/request-logs/route-2e6b2c37e502d893.js +1 -0
  790. package/app/.next/static/chunks/app/api/v1/api/chat/route-2e6b2c37e502d893.js +1 -0
  791. package/app/.next/static/chunks/app/api/v1/audio/speech/route-2e6b2c37e502d893.js +1 -0
  792. package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-2e6b2c37e502d893.js +1 -0
  793. package/app/.next/static/chunks/app/api/v1/chat/completions/route-2e6b2c37e502d893.js +1 -0
  794. package/app/.next/static/chunks/app/api/v1/embeddings/route-2e6b2c37e502d893.js +1 -0
  795. package/app/.next/static/chunks/app/api/v1/images/generations/route-2e6b2c37e502d893.js +1 -0
  796. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-2e6b2c37e502d893.js +1 -0
  797. package/app/.next/static/chunks/app/api/v1/messages/route-2e6b2c37e502d893.js +1 -0
  798. package/app/.next/static/chunks/app/api/v1/models/route-2e6b2c37e502d893.js +1 -0
  799. package/app/.next/static/chunks/app/api/v1/moderations/route-2e6b2c37e502d893.js +1 -0
  800. package/app/.next/static/chunks/app/api/v1/providers/[provider]/chat/completions/route-2e6b2c37e502d893.js +1 -0
  801. package/app/.next/static/chunks/app/api/v1/providers/[provider]/embeddings/route-2e6b2c37e502d893.js +1 -0
  802. package/app/.next/static/chunks/app/api/v1/providers/[provider]/images/generations/route-2e6b2c37e502d893.js +1 -0
  803. package/app/.next/static/chunks/app/api/v1/rerank/route-2e6b2c37e502d893.js +1 -0
  804. package/app/.next/static/chunks/app/api/v1/responses/route-2e6b2c37e502d893.js +1 -0
  805. package/app/.next/static/chunks/app/api/v1/route-2e6b2c37e502d893.js +1 -0
  806. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-2e6b2c37e502d893.js +1 -0
  807. package/app/.next/static/chunks/app/api/v1beta/models/route-2e6b2c37e502d893.js +1 -0
  808. package/app/.next/static/chunks/app/error-0d59fc4efafbc38c.js +1 -0
  809. package/app/.next/static/chunks/app/global-error-41eef2a698918fc1.js +1 -0
  810. package/app/.next/static/chunks/app/login/page-40a8824400706b5e.js +1 -0
  811. package/app/.next/static/chunks/app/not-found-38123f3e1e5abc33.js +1 -0
  812. package/app/.next/static/chunks/app/page-2e6b2c37e502d893.js +1 -0
  813. package/app/.next/static/chunks/{main-db1120009090c406.js → main-47efa2ccb55b4a8d.js} +1 -1
  814. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-2e6b2c37e502d893.js +1 -0
  815. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-2e6b2c37e502d893.js +1 -0
  816. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-2e6b2c37e502d893.js +1 -0
  817. package/app/.next/static/css/039e32048ea8e51e.css +1 -0
  818. package/app/.next/static/kMztjIo6CDmStqcKcXLeh/_buildManifest.js +1 -0
  819. package/app/package.json +4 -3
  820. package/app/server.js +1 -1
  821. package/app/src/lib/db/migrations/001_initial_schema.sql +202 -0
  822. package/app/src/mitm/server.ts +48 -3
  823. package/package.json +4 -3
  824. package/app/.next/server/chunks/1020.js +0 -1
  825. package/app/.next/server/chunks/2817.js +0 -4
  826. package/app/.next/server/chunks/5583.js +0 -2
  827. package/app/.next/static/chunks/app/(dashboard)/dashboard/onboarding/page-207d4961e362eae5.js +0 -1
  828. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-3c840eaf6d7cd77d.js +0 -1
  829. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-cdc5fc5dfecc1047.js +0 -1
  830. package/app/.next/static/chunks/app/api/auth/logout/route-58b169603fdf1d6f.js +0 -1
  831. package/app/.next/static/chunks/app/api/cache/route-58b169603fdf1d6f.js +0 -1
  832. package/app/.next/static/chunks/app/api/cache/stats/route-58b169603fdf1d6f.js +0 -1
  833. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-58b169603fdf1d6f.js +0 -1
  834. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-58b169603fdf1d6f.js +0 -1
  835. package/app/.next/static/chunks/app/api/cli-tools/backups/route-58b169603fdf1d6f.js +0 -1
  836. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-58b169603fdf1d6f.js +0 -1
  837. package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-58b169603fdf1d6f.js +0 -1
  838. package/app/.next/static/chunks/app/api/cli-tools/codex-profiles/route-58b169603fdf1d6f.js +0 -1
  839. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-58b169603fdf1d6f.js +0 -1
  840. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-58b169603fdf1d6f.js +0 -1
  841. package/app/.next/static/chunks/app/api/cli-tools/guide-settings/[toolId]/route-58b169603fdf1d6f.js +0 -1
  842. package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-58b169603fdf1d6f.js +0 -1
  843. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-58b169603fdf1d6f.js +0 -1
  844. package/app/.next/static/chunks/app/api/cli-tools/runtime/[toolId]/route-58b169603fdf1d6f.js +0 -1
  845. package/app/.next/static/chunks/app/api/cli-tools/status/route-58b169603fdf1d6f.js +0 -1
  846. package/app/.next/static/chunks/app/api/cloud/auth/route-58b169603fdf1d6f.js +0 -1
  847. package/app/.next/static/chunks/app/api/cloud/credentials/update/route-58b169603fdf1d6f.js +0 -1
  848. package/app/.next/static/chunks/app/api/cloud/model/resolve/route-58b169603fdf1d6f.js +0 -1
  849. package/app/.next/static/chunks/app/api/cloud/models/alias/route-58b169603fdf1d6f.js +0 -1
  850. package/app/.next/static/chunks/app/api/combos/[id]/route-58b169603fdf1d6f.js +0 -1
  851. package/app/.next/static/chunks/app/api/combos/metrics/route-58b169603fdf1d6f.js +0 -1
  852. package/app/.next/static/chunks/app/api/combos/route-58b169603fdf1d6f.js +0 -1
  853. package/app/.next/static/chunks/app/api/combos/test/route-58b169603fdf1d6f.js +0 -1
  854. package/app/.next/static/chunks/app/api/compliance/audit-log/route-58b169603fdf1d6f.js +0 -1
  855. package/app/.next/static/chunks/app/api/db-backups/export/route-58b169603fdf1d6f.js +0 -1
  856. package/app/.next/static/chunks/app/api/db-backups/exportAll/route-58b169603fdf1d6f.js +0 -1
  857. package/app/.next/static/chunks/app/api/db-backups/import/route-58b169603fdf1d6f.js +0 -1
  858. package/app/.next/static/chunks/app/api/db-backups/route-58b169603fdf1d6f.js +0 -1
  859. package/app/.next/static/chunks/app/api/evals/[suiteId]/route-58b169603fdf1d6f.js +0 -1
  860. package/app/.next/static/chunks/app/api/evals/route-58b169603fdf1d6f.js +0 -1
  861. package/app/.next/static/chunks/app/api/fallback/chains/route-58b169603fdf1d6f.js +0 -1
  862. package/app/.next/static/chunks/app/api/init/route-58b169603fdf1d6f.js +0 -1
  863. package/app/.next/static/chunks/app/api/keys/[id]/route-58b169603fdf1d6f.js +0 -1
  864. package/app/.next/static/chunks/app/api/keys/route-58b169603fdf1d6f.js +0 -1
  865. package/app/.next/static/chunks/app/api/models/alias/route-58b169603fdf1d6f.js +0 -1
  866. package/app/.next/static/chunks/app/api/models/availability/route-58b169603fdf1d6f.js +0 -1
  867. package/app/.next/static/chunks/app/api/models/catalog/route-58b169603fdf1d6f.js +0 -1
  868. package/app/.next/static/chunks/app/api/models/route-58b169603fdf1d6f.js +0 -1
  869. package/app/.next/static/chunks/app/api/monitoring/health/route-58b169603fdf1d6f.js +0 -1
  870. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-58b169603fdf1d6f.js +0 -1
  871. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-58b169603fdf1d6f.js +0 -1
  872. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-58b169603fdf1d6f.js +0 -1
  873. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-58b169603fdf1d6f.js +0 -1
  874. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-58b169603fdf1d6f.js +0 -1
  875. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-58b169603fdf1d6f.js +0 -1
  876. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-58b169603fdf1d6f.js +0 -1
  877. package/app/.next/static/chunks/app/api/policies/route-58b169603fdf1d6f.js +0 -1
  878. package/app/.next/static/chunks/app/api/pricing/defaults/route-58b169603fdf1d6f.js +0 -1
  879. package/app/.next/static/chunks/app/api/pricing/models/route-58b169603fdf1d6f.js +0 -1
  880. package/app/.next/static/chunks/app/api/pricing/route-58b169603fdf1d6f.js +0 -1
  881. package/app/.next/static/chunks/app/api/provider-metrics/route-58b169603fdf1d6f.js +0 -1
  882. package/app/.next/static/chunks/app/api/provider-models/route-58b169603fdf1d6f.js +0 -1
  883. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-58b169603fdf1d6f.js +0 -1
  884. package/app/.next/static/chunks/app/api/provider-nodes/route-58b169603fdf1d6f.js +0 -1
  885. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-58b169603fdf1d6f.js +0 -1
  886. package/app/.next/static/chunks/app/api/providers/[id]/models/route-58b169603fdf1d6f.js +0 -1
  887. package/app/.next/static/chunks/app/api/providers/[id]/route-58b169603fdf1d6f.js +0 -1
  888. package/app/.next/static/chunks/app/api/providers/[id]/test/route-58b169603fdf1d6f.js +0 -1
  889. package/app/.next/static/chunks/app/api/providers/client/route-58b169603fdf1d6f.js +0 -1
  890. package/app/.next/static/chunks/app/api/providers/route-58b169603fdf1d6f.js +0 -1
  891. package/app/.next/static/chunks/app/api/providers/test-batch/route-58b169603fdf1d6f.js +0 -1
  892. package/app/.next/static/chunks/app/api/providers/validate/route-58b169603fdf1d6f.js +0 -1
  893. package/app/.next/static/chunks/app/api/rate-limit/route-58b169603fdf1d6f.js +0 -1
  894. package/app/.next/static/chunks/app/api/rate-limits/route-58b169603fdf1d6f.js +0 -1
  895. package/app/.next/static/chunks/app/api/resilience/reset/route-58b169603fdf1d6f.js +0 -1
  896. package/app/.next/static/chunks/app/api/resilience/route-58b169603fdf1d6f.js +0 -1
  897. package/app/.next/static/chunks/app/api/restart/route-58b169603fdf1d6f.js +0 -1
  898. package/app/.next/static/chunks/app/api/sessions/route-58b169603fdf1d6f.js +0 -1
  899. package/app/.next/static/chunks/app/api/settings/combo-defaults/route-58b169603fdf1d6f.js +0 -1
  900. package/app/.next/static/chunks/app/api/settings/ip-filter/route-58b169603fdf1d6f.js +0 -1
  901. package/app/.next/static/chunks/app/api/settings/proxy/route-58b169603fdf1d6f.js +0 -1
  902. package/app/.next/static/chunks/app/api/settings/proxy/test/route-58b169603fdf1d6f.js +0 -1
  903. package/app/.next/static/chunks/app/api/settings/require-login/route-58b169603fdf1d6f.js +0 -1
  904. package/app/.next/static/chunks/app/api/settings/route-58b169603fdf1d6f.js +0 -1
  905. package/app/.next/static/chunks/app/api/settings/system-prompt/route-58b169603fdf1d6f.js +0 -1
  906. package/app/.next/static/chunks/app/api/settings/thinking-budget/route-58b169603fdf1d6f.js +0 -1
  907. package/app/.next/static/chunks/app/api/shutdown/route-58b169603fdf1d6f.js +0 -1
  908. package/app/.next/static/chunks/app/api/storage/health/route-58b169603fdf1d6f.js +0 -1
  909. package/app/.next/static/chunks/app/api/sync/cloud/route-58b169603fdf1d6f.js +0 -1
  910. package/app/.next/static/chunks/app/api/sync/initialize/route-58b169603fdf1d6f.js +0 -1
  911. package/app/.next/static/chunks/app/api/tags/route-58b169603fdf1d6f.js +0 -1
  912. package/app/.next/static/chunks/app/api/telemetry/summary/route-58b169603fdf1d6f.js +0 -1
  913. package/app/.next/static/chunks/app/api/token-health/route-58b169603fdf1d6f.js +0 -1
  914. package/app/.next/static/chunks/app/api/translator/detect/route-58b169603fdf1d6f.js +0 -1
  915. package/app/.next/static/chunks/app/api/translator/history/route-58b169603fdf1d6f.js +0 -1
  916. package/app/.next/static/chunks/app/api/translator/load/route-58b169603fdf1d6f.js +0 -1
  917. package/app/.next/static/chunks/app/api/translator/save/route-58b169603fdf1d6f.js +0 -1
  918. package/app/.next/static/chunks/app/api/translator/send/route-58b169603fdf1d6f.js +0 -1
  919. package/app/.next/static/chunks/app/api/translator/translate/route-58b169603fdf1d6f.js +0 -1
  920. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-58b169603fdf1d6f.js +0 -1
  921. package/app/.next/static/chunks/app/api/usage/analytics/route-58b169603fdf1d6f.js +0 -1
  922. package/app/.next/static/chunks/app/api/usage/budget/route-58b169603fdf1d6f.js +0 -1
  923. package/app/.next/static/chunks/app/api/usage/call-logs/[id]/route-58b169603fdf1d6f.js +0 -1
  924. package/app/.next/static/chunks/app/api/usage/call-logs/route-58b169603fdf1d6f.js +0 -1
  925. package/app/.next/static/chunks/app/api/usage/history/route-58b169603fdf1d6f.js +0 -1
  926. package/app/.next/static/chunks/app/api/usage/logs/route-58b169603fdf1d6f.js +0 -1
  927. package/app/.next/static/chunks/app/api/usage/proxy-logs/route-58b169603fdf1d6f.js +0 -1
  928. package/app/.next/static/chunks/app/api/usage/request-logs/route-58b169603fdf1d6f.js +0 -1
  929. package/app/.next/static/chunks/app/api/v1/api/chat/route-58b169603fdf1d6f.js +0 -1
  930. package/app/.next/static/chunks/app/api/v1/audio/speech/route-58b169603fdf1d6f.js +0 -1
  931. package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-58b169603fdf1d6f.js +0 -1
  932. package/app/.next/static/chunks/app/api/v1/chat/completions/route-58b169603fdf1d6f.js +0 -1
  933. package/app/.next/static/chunks/app/api/v1/embeddings/route-58b169603fdf1d6f.js +0 -1
  934. package/app/.next/static/chunks/app/api/v1/images/generations/route-58b169603fdf1d6f.js +0 -1
  935. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-58b169603fdf1d6f.js +0 -1
  936. package/app/.next/static/chunks/app/api/v1/messages/route-58b169603fdf1d6f.js +0 -1
  937. package/app/.next/static/chunks/app/api/v1/models/route-58b169603fdf1d6f.js +0 -1
  938. package/app/.next/static/chunks/app/api/v1/moderations/route-58b169603fdf1d6f.js +0 -1
  939. package/app/.next/static/chunks/app/api/v1/providers/[provider]/chat/completions/route-58b169603fdf1d6f.js +0 -1
  940. package/app/.next/static/chunks/app/api/v1/providers/[provider]/embeddings/route-58b169603fdf1d6f.js +0 -1
  941. package/app/.next/static/chunks/app/api/v1/providers/[provider]/images/generations/route-58b169603fdf1d6f.js +0 -1
  942. package/app/.next/static/chunks/app/api/v1/rerank/route-58b169603fdf1d6f.js +0 -1
  943. package/app/.next/static/chunks/app/api/v1/responses/route-58b169603fdf1d6f.js +0 -1
  944. package/app/.next/static/chunks/app/api/v1/route-58b169603fdf1d6f.js +0 -1
  945. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-58b169603fdf1d6f.js +0 -1
  946. package/app/.next/static/chunks/app/api/v1beta/models/route-58b169603fdf1d6f.js +0 -1
  947. package/app/.next/static/chunks/app/global-error-ece0210f8bb4e441.js +0 -1
  948. package/app/.next/static/chunks/app/login/page-8a9aa887783f2370.js +0 -1
  949. package/app/.next/static/chunks/app/not-found-a1cabc3706cf5b84.js +0 -1
  950. package/app/.next/static/chunks/app/page-58b169603fdf1d6f.js +0 -1
  951. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-58b169603fdf1d6f.js +0 -1
  952. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-58b169603fdf1d6f.js +0 -1
  953. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-58b169603fdf1d6f.js +0 -1
  954. package/app/.next/static/css/99e359b9e40091af.css +0 -1
  955. package/app/.next/static/mo3wTjoSYKP1E96Wu512B/_buildManifest.js +0 -1
  956. /package/app/.next/static/{mo3wTjoSYKP1E96Wu512B → kMztjIo6CDmStqcKcXLeh}/_ssgManifest.js +0 -0
@@ -1,5 +1,5 @@
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,40287)),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(41549);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(54194),e=c(40287),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(99939),h=c(32113),i=c(69590),j=c(71861),k=c(17669),l=c(60293),m=c(23969),n=c(76340),o=c(54194),p=c(9686),q=c(40287),r=c(34493),s=c(26510),t=c(77458),u=c(12620),v=c(20864),w=c(44057),x=c(59545),y=c(78790),z=a([i]);async function A(a,b=null){let c,d=(0,x.KZ)(),h=new w.TT(d);try{h.startPhase("parse"),c=await a.json(),h.endPhase()}catch{return o.warn("CHAT","Invalid JSON body"),(0,j.yj)(l.gx.BAD_REQUEST,"Invalid JSON body")}h.startPhase("validate");let i=(0,t.Jh)(c,o);if(i.blocked)return o.warn("SANITIZER","Request blocked due to prompt injection",{detections:i.detections}),(0,j.yj)(l.gx.BAD_REQUEST,"Request rejected: suspicious content detected");i.modified&&i.sanitizedBody&&(c=i.sanitizedBody),h.endPhase(),b||(b={endpoint:new URL(a.url).pathname,body:c,headers:Object.fromEntries(a.headers.entries())});let m=new URL(a.url),n=c.model,p=c.messages?.length||c.input?.length||0,r=c.tools?.length||0,s=c.reasoning_effort||c.reasoning?.effort||null;o.request("POST",`${m.pathname} | ${n} | ${p} msgs${r?` | ${r} tools`:""}${s?` | effort=${s}`:""}`);let u=a.headers.get("Authorization"),z=(0,e.Tr)(a),C=null;if(u&&z){let a=o.maskKey(z);o.debug("AUTH",`API Key: ${a}`);try{C=await (0,q.v9)(z)}catch{C=null}}else o.debug("AUTH","No API key provided (local mode)");if("true"===process.env.REQUIRE_API_KEY){if(!z)return o.warn("AUTH","Missing API key while REQUIRE_API_KEY=true"),(0,j.yj)(l.gx.UNAUTHORIZED,"Missing API key");if(!await (0,e.kI)(z))return o.warn("AUTH","Invalid API key while REQUIRE_API_KEY=true"),(0,j.yj)(l.gx.UNAUTHORIZED,"Invalid API key")}if(!n)return o.warn("CHAT","Missing model"),(0,j.yj)(l.gx.BAD_REQUEST,"Missing model");if(h.startPhase("policy"),C?.id)try{let a=(0,y.Ik)(C.id);if(!a.allowed)return o.warn("BUDGET",`API key ${C.id} exceeded budget: ${a.reason}`),(0,j.yj)(429,a.reason||"Budget limit exceeded")}catch{}h.endPhase(),h.startPhase("resolve");let D=await (0,f.$m)(n);if(D){o.info("CHAT",`Combo "${n}" [${D.strategy||"priority"}] with ${D.models.length} models`);let d=async a=>{let b=(0,g.Xh)(a),c=b.provider;if(!c)return!0;if(!(0,v.fj)(c,b.model||a))return o.debug("AVAILABILITY",`${c}/${b.model} in cooldown, skipping`),!1;let d=await (0,e.c1)(c);return!!d&&!d.allRateLimited},[f,i]=await Promise.all([(0,q.mt)().catch(()=>({})),(0,q.Uv)().catch(()=>[])]);h.endPhase();let j=await (0,k.Pr)({body:c,combo:D,handleSingleModel:(c,d)=>B(c,d,b,a,D.name,C,h),isModelAvailable:d,log:o,settings:f,allCombos:i});return(0,w.N3)(h),j}h.endPhase();let E=await B(c,n,b,a,null,C,h);return(0,w.N3)(h),E}async function B(a,b,c=null,d=null,g=null,k=null,q=null){let t=await (0,f.mA)(b);if(!t.provider){if("ambiguous_model"===t.errorType){let a=t.errorMessage||`Ambiguous model '${b}'. Use provider/model prefix (ex: gh/${b} or cc/${b}).`;return o.warn("CHAT",a,{model:b,candidates:t.candidateAliases||t.candidateProviders||[]}),(0,j.yj)(l.gx.BAD_REQUEST,a)}return o.warn("CHAT","Invalid model format",{model:b}),(0,j.yj)(l.gx.BAD_REQUEST,"Invalid model format")}let{provider:w,model:x}=t,z=(0,h.Tz)(a),A=m.PROVIDER_ID_TO_ALIAS[w]||w,D=(0,m.ux)(A,x)||(0,h.jJ)(w);if(b!==`${w}/${x}`?o.info("ROUTING",`${b} → ${w}/${x}`):o.info("ROUTING",`Provider: ${w}, Model: ${x}`),!(0,v.fj)(w,x))return o.warn("AVAILABILITY",`${w}/${x} is in cooldown, rejecting request`),(0,j.wO)(l.gx.SERVICE_UNAVAILABLE,`Model ${w}/${x} is temporarily unavailable (cooldown)`,30);let E=(0,u.getCircuitBreaker)(w,{failureThreshold:5,resetTimeout:3e4,onStateChange:(a,b,c)=>o.info("CIRCUIT",`${a}: ${b} → ${c}`)});if(!E.canExecute())return o.warn("CIRCUIT",`Circuit breaker OPEN for ${w}, rejecting request`),(0,j.wO)(l.gx.SERVICE_UNAVAILABLE,`Provider ${w} circuit breaker is open`,30);let F=d?.headers?.get("user-agent")||"",G=null,H=null,I=null;for(;;){let b,d=await (0,e.c1)(w,G);if(!d||d.allRateLimited)return function(a,b,c,d,e,f){if(a?.allRateLimited){let b=e||a.lastError||"Unavailable",g=f||Number(a.lastErrorCode)||l.gx.SERVICE_UNAVAILABLE;return o.warn("CHAT",`[${c}/${d}] ${b} (${a.retryAfterHuman})`),(0,j.wO)(g,`[${c}/${d}] ${b}`,a.retryAfter,a.retryAfterHuman)}return b?(o.warn("CHAT","No more accounts available",{provider:c}),(0,j.yj)(f||l.gx.SERVICE_UNAVAILABLE,e||"All accounts unavailable")):(o.error("AUTH",`No credentials for provider: ${c}`),(0,j.yj)(l.gx.BAD_REQUEST,`No credentials for provider: ${c}`))}(d,G,w,x,H,I);let f=d.connectionId.slice(0,8);o.info("AUTH",`Using ${w} account: ${f}...`);let h=await (0,p.eU)(w,d),m=await C(d.connectionId),t=Date.now();q&&q.startPhase("connect");let A=!1;try{let f=()=>(0,n.jf)(m?.proxy||null,()=>(0,i.w)({body:{...a,model:`${w}/${x}`},modelInfo:{provider:w,model:x},credentials:h,log:o,clientRawRequest:c,connectionId:d.connectionId,apiKeyInfo:k,userAgent:F,comboName:g,onCredentialsRefreshed:async a=>{await (0,p.vN)(d.connectionId,{accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData,testStatus:"active"})},onRequestSuccess:async()=>{await (0,e.Pt)(d.connectionId,d)}}));if(!m?.proxy&&(0,n.Wk)()){let a=await E.execute(async()=>await (0,n.qT)(f));b=a.result,A=a.tlsFingerprintUsed}else b=await E.execute(f)}catch(a){if(a instanceof u.ez)return o.warn("CIRCUIT",`${w} circuit open during retry: ${a.message}`),(0,j.wO)(l.gx.SERVICE_UNAVAILABLE,`Provider ${w} circuit breaker is open`,Math.ceil(a.retryAfterMs/1e3));throw a}q&&q.endPhase();let B=Date.now()-t;if(function({result:a,proxyInfo:b,proxyLatency:c,provider:d,model:e,sourceFormat:f,targetFormat:g,credentials:h,comboName:i,clientRawRequest:j,tlsFingerprintUsed:k=!1}){try{(0,r.pq)({status:a.success?"success":408===a.status||504===a.status?"timeout":"error",proxy:b?.proxy||null,level:b?.level||"direct",levelId:b?.levelId||null,provider:d,targetUrl:`${d}/${e}`,latencyMs:c,error:a.success?null:a.error||null,connectionId:h.connectionId,comboId:i||null,account:h.connectionId?.slice(0,8)||null,tlsFingerprint:k})}catch{}try{(0,s.MR)({provider:d,model:e,sourceFormat:f,targetFormat:g,status:a.success?"success":"error",statusCode:a.success?200:a.status||500,latency:c,endpoint:j?.endpoint||"/v1/chat/completions",connectionId:h.connectionId||null,comboName:i||null})}catch{}}({result:b,proxyInfo:m,proxyLatency:B,provider:w,model:x,sourceFormat:z,targetFormat:D,credentials:d,comboName:g,clientRawRequest:c,tlsFingerprintUsed:A}),b.success){if(k?.id)try{let a=b.usage||{},c=((a.prompt_tokens||0)+(a.completion_tokens||0))*1e-6;c>0&&(0,y.n5)(k.id,c)}catch{}return q&&q.startPhase("finalize"),q&&q.endPhase(),b.response}(429===b.status||503===b.status)&&((0,v.gC)(w,x,6e4,`HTTP ${b.status}`),o.info("AVAILABILITY",`${w}/${x} marked unavailable for 60s (HTTP ${b.status})`));let{shouldFallback:J}=await (0,e.vk)(d.connectionId,b.status,b.error,w);if(J){o.warn("AUTH",`Account ${f}... unavailable (${b.status}), trying fallback`),G=d.connectionId,H=b.error,I=b.status;continue}return b.response}}async function C(a){try{return await (0,q.YD)(a)}catch(a){return o.debug("PROXY",`Failed to resolve proxy: ${a.message}`),null}}i=(z.then?(await z)():z)[0],d()}catch(a){d(a)}})},13961:(a,b,c)=>{c.d(b,{$m:()=>g,mA:()=>f});var d=c(40287),e=c(99939);async function f(a){let b=(0,e.Xh)(a);if(!b.isAlias){if(b.provider===b.providerAlias){let a=(await (0,d.Fh)({type:"openai-compatible"})).find(a=>a.prefix===b.providerAlias);if(a)return{provider:a.id,model:b.model};let c=(await (0,d.Fh)({type:"anthropic-compatible"})).find(a=>a.prefix===b.providerAlias);if(c)return{provider:c.id,model:b.model}}return(0,e.js)(a,null)}return(0,e.js)(a,d.OM)}async function g(a){let b=await (0,d.Dj)(a);return b&&b.models&&b.models.length>0?b:null}},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:()=>p,i5:()=>o,v8:()=>j});var d=c(59957),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}
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,40287)),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(54194),e=c(40287),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(99939),h=c(32113),i=c(69590),j=c(71861),k=c(17669),l=c(60293),m=c(23969),n=c(76340),o=c(54194),p=c(9686),q=c(40287),r=c(34493),s=c(26510),t=c(77458),u=c(12620),v=c(20864),w=c(44057),x=c(59545),y=c(78790),z=a([i]);async function A(a,b=null){let c,d=(0,x.KZ)(),h=new w.TT(d);try{h.startPhase("parse"),c=await a.json(),h.endPhase()}catch{return o.warn("CHAT","Invalid JSON body"),(0,j.yj)(l.gx.BAD_REQUEST,"Invalid JSON body")}h.startPhase("validate");let i=(0,t.Jh)(c,o);if(i.blocked)return o.warn("SANITIZER","Request blocked due to prompt injection",{detections:i.detections}),(0,j.yj)(l.gx.BAD_REQUEST,"Request rejected: suspicious content detected");i.modified&&i.sanitizedBody&&(c=i.sanitizedBody),h.endPhase(),b||(b={endpoint:new URL(a.url).pathname,body:c,headers:Object.fromEntries(a.headers.entries())});let m=new URL(a.url),n=c.model,p=c.messages?.length||c.input?.length||0,r=c.tools?.length||0,s=c.reasoning_effort||c.reasoning?.effort||null;o.request("POST",`${m.pathname} | ${n} | ${p} msgs${r?` | ${r} tools`:""}${s?` | effort=${s}`:""}`);let u=a.headers.get("Authorization"),z=(0,e.Tr)(a),C=null;if(u&&z){let a=o.maskKey(z);o.debug("AUTH",`API Key: ${a}`);try{C=await (0,q.v9)(z)}catch{C=null}}else o.debug("AUTH","No API key provided (local mode)");if("true"===process.env.REQUIRE_API_KEY){if(!z)return o.warn("AUTH","Missing API key while REQUIRE_API_KEY=true"),(0,j.yj)(l.gx.UNAUTHORIZED,"Missing API key");if(!await (0,e.kI)(z))return o.warn("AUTH","Invalid API key while REQUIRE_API_KEY=true"),(0,j.yj)(l.gx.UNAUTHORIZED,"Invalid API key")}if(!n)return o.warn("CHAT","Missing model"),(0,j.yj)(l.gx.BAD_REQUEST,"Missing model");if(h.startPhase("policy"),C?.id)try{let a=(0,y.Ik)(C.id);if(!a.allowed)return o.warn("BUDGET",`API key ${C.id} exceeded budget: ${a.reason}`),(0,j.yj)(429,a.reason||"Budget limit exceeded")}catch{}h.endPhase(),h.startPhase("resolve");let D=await (0,f.$m)(n);if(D){o.info("CHAT",`Combo "${n}" [${D.strategy||"priority"}] with ${D.models.length} models`);let d=async a=>{let b=(0,g.Xh)(a),c=b.provider;if(!c)return!0;if(!(0,v.fj)(c,b.model||a))return o.debug("AVAILABILITY",`${c}/${b.model} in cooldown, skipping`),!1;let d=await (0,e.c1)(c);return!!d&&!d.allRateLimited},[f,i]=await Promise.all([(0,q.mt)().catch(()=>({})),(0,q.Uv)().catch(()=>[])]);h.endPhase();let j=await (0,k.Pr)({body:c,combo:D,handleSingleModel:(c,d)=>B(c,d,b,a,D.name,C,h),isModelAvailable:d,log:o,settings:f,allCombos:i});return(0,w.N3)(h),j}h.endPhase();let E=await B(c,n,b,a,null,C,h);return(0,w.N3)(h),E}async function B(a,b,c=null,d=null,f=null,g=null,h=null){var i,k;let m=await C(b,a);if(m.error)return m.error;let{provider:n,model:q,sourceFormat:t,targetFormat:w}=m,x=(i=n,k=q,(0,v.fj)(i,k)?(0,u.getCircuitBreaker)(i,{failureThreshold:5,resetTimeout:3e4,onStateChange:(a,b,c)=>o.info("CIRCUIT",`${a}: ${b} → ${c}`)}).canExecute()?null:(o.warn("CIRCUIT",`Circuit breaker OPEN for ${i}, rejecting request`),(0,j.wO)(l.gx.SERVICE_UNAVAILABLE,`Provider ${i} circuit breaker is open`,30)):(o.warn("AVAILABILITY",`${i}/${k} is in cooldown, rejecting request`),(0,j.wO)(l.gx.SERVICE_UNAVAILABLE,`Model ${i}/${k} is temporarily unavailable (cooldown)`,30)));if(x)return x;let z=(0,u.getCircuitBreaker)(n,{failureThreshold:5,resetTimeout:3e4,onStateChange:(a,b,c)=>o.info("CIRCUIT",`${a}: ${b} → ${c}`)}),A=d?.headers?.get("user-agent")||"",F=null,G=null,H=null;for(;;){let b=await (0,e.c1)(n,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)||l.gx.SERVICE_UNAVAILABLE;return o.warn("CHAT",`[${c}/${d}] ${b} (${a.retryAfterHuman})`),(0,j.wO)(g,`[${c}/${d}] ${b}`,a.retryAfter,a.retryAfterHuman)}return b?(o.warn("CHAT","No more accounts available",{provider:c}),(0,j.yj)(f||l.gx.SERVICE_UNAVAILABLE,e||"All accounts unavailable")):(o.error("AUTH",`No credentials for provider: ${c}`),(0,j.yj)(l.gx.BAD_REQUEST,`No credentials for provider: ${c}`))}(b,F,n,q,G,H);let d=b.connectionId.slice(0,8);o.info("AUTH",`Using ${n} account: ${d}...`);let i=await (0,p.eU)(n,b),k=await E(b.connectionId),m=Date.now();h&&h.startPhase("connect");let{result:u,tlsFingerprintUsed:x}=await D({breaker:z,body:a,provider:n,model:q,refreshedCredentials:i,proxyInfo:k,log:o,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,r.pq)({status:a.success?"success":408===a.status||504===a.status?"timeout":"error",proxy:b?.proxy||null,level:b?.level||"direct",levelId:b?.levelId||null,provider:d,targetUrl:`${d}/${e}`,latencyMs:c,error:a.success?null:a.error||null,connectionId:h.connectionId,comboId:i||null,account:h.connectionId?.slice(0,8)||null,tlsFingerprint:k})}catch{}try{(0,s.MR)({provider:d,model:e,sourceFormat:f,targetFormat:g,status:a.success?"success":"error",statusCode:a.success?200:a.status||500,latency:c,endpoint:j?.endpoint||"/v1/chat/completions",connectionId:h.connectionId||null,comboName:i||null})}catch{}}({result:u,proxyInfo:k,proxyLatency:B,provider:n,model:q,sourceFormat:t,targetFormat:w,credentials:b,comboName:f,clientRawRequest:c,tlsFingerprintUsed:x}),u.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,y.n5)(a.id,d)}catch{}}(g,u),h&&h.startPhase("finalize"),h&&h.endPhase(),u.response;(429===u.status||503===u.status)&&((0,v.gC)(n,q,6e4,`HTTP ${u.status}`),o.info("AVAILABILITY",`${n}/${q} marked unavailable for 60s (HTTP ${u.status})`));let{shouldFallback:C}=await (0,e.vk)(b.connectionId,u.status,u.error,n);if(C){o.warn("AUTH",`Account ${d}... unavailable (${u.status}), trying fallback`),F=b.connectionId,G=u.error,H=u.status;continue}return u.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 o.warn("CHAT",b,{model:a,candidates:c.candidateAliases||c.candidateProviders||[]}),{error:(0,j.yj)(l.gx.BAD_REQUEST,b)}}return o.warn("CHAT","Invalid model format",{model:a}),{error:(0,j.yj)(l.gx.BAD_REQUEST,"Invalid model format")}}let{provider:d,model:e}=c,g=(0,h.Tz)(b),i=m.PROVIDER_ID_TO_ALIAS[d]||d,k=(0,m.ux)(i,e)||(0,h.jJ)(d);return a!==`${d}/${e}`?o.info("ROUTING",`${a} → ${d}/${e}`):o.info("ROUTING",`Provider: ${d}, Model: ${e}`),{provider:d,model:e,sourceFormat:g,targetFormat:k}}async function D({breaker:a,body:b,provider:c,model:d,refreshedCredentials:f,proxyInfo:g,log:h,clientRawRequest:k,credentials:m,apiKeyInfo:q,userAgent:r,comboName:s}){try{let j=()=>(0,n.jf)(g?.proxy||null,()=>(0,i.w)({body:{...b,model:`${c}/${d}`},modelInfo:{provider:c,model:d},credentials:f,log:h,clientRawRequest:k,connectionId:m.connectionId,apiKeyInfo:q,userAgent:r,comboName:s,onCredentialsRefreshed:async a=>{await (0,p.vN)(m.connectionId,{accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData,testStatus:"active"})},onRequestSuccess:async()=>{await (0,e.Pt)(m.connectionId,m)}}));if(!g?.proxy&&(0,n.Wk)()){let b=await a.execute(async()=>(0,n.qT)(j));return{result:b.result,tlsFingerprintUsed:b.tlsFingerprintUsed}}return{result:await a.execute(j),tlsFingerprintUsed:!1}}catch(a){if(a instanceof u.ez)return o.warn("CIRCUIT",`${c} circuit open during retry: ${a.message}`),{result:{success:!1,response:(0,j.wO)(l.gx.SERVICE_UNAVAILABLE,`Provider ${c} circuit breaker is open`,Math.ceil(a.retryAfterMs/1e3)),status:l.gx.SERVICE_UNAVAILABLE},tlsFingerprintUsed:!1};throw a}}async function E(a){try{return await (0,q.YD)(a)}catch(a){return o.debug("PROXY",`Failed to resolve proxy: ${a.message}`),null}}i=(z.then?(await z)():z)[0],d()}catch(a){d(a)}})},13961:(a,b,c)=>{c.d(b,{$m:()=>g,mA:()=>f});var d=c(40287),e=c(99939);async function f(a){let b=(0,e.Xh)(a);if(!b.isAlias){if(b.provider===b.providerAlias){let a=(await (0,d.Fh)({type:"openai-compatible"})).find(a=>a.prefix===b.providerAlias);if(a)return{provider:a.id,model:b.model};let c=(await (0,d.Fh)({type:"anthropic-compatible"})).find(a=>a.prefix===b.providerAlias);if(c)return{provider:c.id,model:b.model}}return(0,e.js)(a,null)}return(0,e.js)(a,d.OM)}async function g(a){let b=await (0,d.Dj)(a);return b&&b.models&&b.models.length>0?b:null}},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}
@@ -7,10 +7,10 @@ data: ${JSON.stringify(a)}
7
7
 
8
8
  `:`data: ${JSON.stringify(a)}
9
9
 
10
- `}var k=c(60293);let l="translate",m="passthrough";function n(a={}){let{mode:b=l,targetFormat:c,sourceFormat:o,provider:p=null,reqLogger:q=null,toolNameMap:r=null,model:s=null,connectionId:t=null,apiKeyInfo:u=null,body:v=null,onComplete:w=null}=a,x="",y=null,z=b===l?{...(0,d.Ws)(o),provider:p,toolNameMap:r}:null,A=0,B=!1,C=new TextDecoder,D=new TextEncoder,E=Date.now(),F=null,G=!1;return new TransformStream({start(a){k.TH>0&&(F=setInterval(()=>{if(!G&&Date.now()-E>k.TH){G=!0,clearInterval(F),F=null;let b=`[STREAM] Idle timeout: no data from ${p||"provider"} for ${k.TH}ms (model: ${s||"unknown"})`;console.warn(b),(0,f.uw)(s,p,t,!1),(0,f.E5)({model:s,provider:p,connectionId:t,status:`FAILED ${k.gx.GATEWAY_TIMEOUT}`}).catch(()=>{});let c=Error(b);c.name="StreamIdleTimeoutError",a.error(c)}},1e4))},transform(a,f){if(G)return;E=Date.now();let k=C.decode(a,{stream:!0});x+=k,q?.appendProviderChunk?.(k);let l=x.split("\n");for(let a of(x=l.pop()||"",l)){let k=a.trim();if(b===m){let b,c=!1;if(k.startsWith("data:")&&"[DONE]"!==k.slice(5).trim())try{let a=JSON.parse(k.slice(5).trim()),d=function(a){if(a.id&&("chat"===a.id||"completion"===a.id||a.id.length<8)){let b=a.extend_fields?.requestId||a.extend_fields?.traceId||Date.now().toString(36);return a.id=`chatcmpl-${b}`,!0}return!1}(a);if(!i(a,e.h.OPENAI))continue;let f=a.choices?.[0]?.delta,h=f?.content||f?.reasoning_content;h&&"string"==typeof h&&(A+=h.length);let j=(0,g.f5)(a);j&&(y=j);let l=a.choices?.[0]?.finish_reason;if(l&&!(0,g.Gh)(a.usage)){let d=(0,g.OF)(v,A,e.h.OPENAI);a.usage=(0,g.WL)(d,e.h.OPENAI),b=`data: ${JSON.stringify(a)}
11
- `,y=d,c=!0}else if(l&&y){let d=(0,g.O9)(y);a.usage=(0,g.WL)(d,e.h.OPENAI),b=`data: ${JSON.stringify(a)}
10
+ `}var k=c(60293),l=c(92937);let m="translate",n="passthrough";function o(a={}){let{mode:b=m,targetFormat:c,sourceFormat:p,provider:q=null,reqLogger:r=null,toolNameMap:s=null,model:t=null,connectionId:u=null,apiKeyInfo:v=null,body:w=null,onComplete:x=null}=a,y="",z=null,A=b===m?{...(0,d.Ws)(p),provider:q,toolNameMap:s}:null,B=0,C=!1,D=new TextDecoder,E=new TextEncoder,F=Date.now(),G=null,H=!1;return new TransformStream({start(a){k.TH>0&&(G=setInterval(()=>{if(!H&&Date.now()-F>k.TH){H=!0,clearInterval(G),G=null;let b=`[STREAM] Idle timeout: no data from ${q||"provider"} for ${k.TH}ms (model: ${t||"unknown"})`;console.warn(b),(0,f.uw)(t,q,u,!1),(0,f.E5)({model:t,provider:q,connectionId:u,status:`FAILED ${k.gx.GATEWAY_TIMEOUT}`}).catch(()=>{});let c=Error(b);c.name="StreamIdleTimeoutError",a.error(c)}},1e4))},transform(a,f){if(H)return;F=Date.now();let k=D.decode(a,{stream:!0});y+=k,r?.appendProviderChunk?.(k);let m=y.split("\n");for(let a of(y=m.pop()||"",m)){let k=a.trim();if(b===n){let b,c=!1;if(k.startsWith("data:")&&"[DONE]"!==k.slice(5).trim())try{let a=JSON.parse(k.slice(5).trim());a=(0,l.LM)(a);let d=function(a){if(a.id&&("chat"===a.id||"completion"===a.id||a.id.length<8)){let b=a.extend_fields?.requestId||a.extend_fields?.traceId||Date.now().toString(36);return a.id=`chatcmpl-${b}`,!0}return!1}(a);if(!i(a,e.h.OPENAI))continue;let f=a.choices?.[0]?.delta;if(f?.content&&"string"==typeof f.content){let{content:a,thinking:b}=(0,l.Zb)(f.content);f.content=a,b&&!f.reasoning_content&&(f.reasoning_content=b)}let h=f?.content||f?.reasoning_content;h&&"string"==typeof h&&(B+=h.length);let j=(0,g.f5)(a);j&&(z=j);let m=a.choices?.[0]?.finish_reason;if(m&&!(0,g.Gh)(a.usage)){let d=(0,g.OF)(w,B,e.h.OPENAI);a.usage=(0,g.WL)(d,e.h.OPENAI),b=`data: ${JSON.stringify(a)}
11
+ `,z=d,c=!0}else if(m&&z){let d=(0,g.O9)(z);a.usage=(0,g.WL)(d,e.h.OPENAI),b=`data: ${JSON.stringify(a)}
12
12
  `,c=!0}else d&&(b=`data: ${JSON.stringify(a)}
13
- `,c=!0)}catch{}c||(b=a.startsWith("data:")&&!a.startsWith("data: ")?"data: "+a.slice(5)+"\n":a+"\n"),q?.appendConvertedChunk?.(b),f.enqueue(D.encode(b));continue}if(!k)continue;let l=h(k);if(!l)continue;if(l&&l.done){if(!B){B=!0;let a="data: [DONE]\n\n";q?.appendConvertedChunk?.(a),f.enqueue(D.encode(a))}continue}if(l.delta?.text&&(A+=l.delta.text.length),l.delta?.thinking&&(A+=l.delta.thinking.length),l.choices?.[0]?.delta?.content&&(A+=l.choices[0].delta.content.length),l.choices?.[0]?.delta?.reasoning_content&&(A+=l.choices[0].delta.reasoning_content.length),l.candidates?.[0]?.content?.parts)for(let a of l.candidates[0].content.parts)a.text&&"string"==typeof a.text&&(A+=a.text.length);let n=(0,g.f5)(l);n&&(z.usage=n);let p=(0,d.Y8)(c,o,l,z);if(p?._openaiIntermediate)for(let a of p._openaiIntermediate){let b=j(a,e.h.OPENAI);q?.appendOpenAIChunk?.(b)}if(p?.length>0)for(let a of p){if(!i(a,o))continue;let b="message_delta"===a.type||a.choices?.[0]?.finish_reason;if(z.finishReason&&b&&!(0,g.Gh)(a.usage)&&A>0){let b=(0,g.OF)(v,A,o);a.usage=(0,g.WL)(b,o),z.usage=b}else if(z.finishReason&&b&&z.usage){let b=(0,g.O9)(z.usage);a.usage=(0,g.WL)(b,o)}let c=j(a,o);q?.appendConvertedChunk?.(c),f.enqueue(D.encode(c))}}},flush(a){if(F&&(clearInterval(F),F=null),!G){(0,f.uw)(s,p,t,!1);try{let i=C.decode();if(i&&(x+=i),b===m){if(x){let b=x;x.startsWith("data:")&&!x.startsWith("data: ")&&(b="data: "+x.slice(5)),q?.appendConvertedChunk?.(b),a.enqueue(D.encode(b))}if(!(0,g.Gh)(y)&&A>0&&(y=(0,g.OF)(v,A,e.h.OPENAI)),(0,g.Gh)(y)?(0,g.IF)(p,y,s,t,u):(0,f.E5)({model:s,provider:p,connectionId:t,tokens:null,status:"200 OK"}).catch(()=>{}),w)try{w({status:200,usage:y})}catch{}return}if(x.trim()){let b=h(x.trim());if(b&&!b.done){let f=(0,d.Y8)(c,o,b,z);if(f?._openaiIntermediate)for(let a of f._openaiIntermediate){let b=j(a,e.h.OPENAI);q?.appendOpenAIChunk?.(b)}if(f?.length>0)for(let b of f){let c=j(b,o);q?.appendConvertedChunk?.(c),a.enqueue(D.encode(c))}}}let k=(0,d.Y8)(c,o,null,z);if(k?._openaiIntermediate)for(let a of k._openaiIntermediate){let b=j(a,e.h.OPENAI);q?.appendOpenAIChunk?.(b)}if(k?.length>0)for(let b of k){let c=j(b,o);q?.appendConvertedChunk?.(c),a.enqueue(D.encode(c))}if(!B){B=!0;let b="data: [DONE]\n\n";q?.appendConvertedChunk?.(b),a.enqueue(D.encode(b))}if(!(0,g.Gh)(z?.usage)&&A>0&&(z.usage=(0,g.OF)(v,A,o)),(0,g.Gh)(z?.usage)?(0,g.IF)(z.provider||c,z.usage,s,t,u):(0,f.E5)({model:s,provider:p,connectionId:t,tokens:null,status:"200 OK"}).catch(()=>{}),w)try{w({status:200,usage:z?.usage})}catch{}}catch(a){console.log(`[STREAM] Error in flush (${s||"unknown"}):`,a.message||a)}}}},{highWaterMark:16},{highWaterMark:16})}function o(a,b,c=null,d=null,e=null,f=null,g=null,h=null,i=null,j=null){return n({mode:l,targetFormat:a,sourceFormat:b,provider:c,reqLogger:d,toolNameMap:e,model:f,connectionId:g,apiKeyInfo:j,body:h,onComplete:i})}function p(a=null,b=null,c=null,d=null,e=null,f=null,g=null){return n({mode:m,provider:a,reqLogger:b,model:c,connectionId:d,apiKeyInfo:g,body:e,onComplete:f})}},34493:(a,b,c)=>{c.d(b,{GL:()=>i,XT:()=>j,pq:()=>h});var d=c(94755),e=c(41549);let f=!e.m1&&!e.I8,g=[];if(f)try{for(let a of(0,e.sm)().prepare("SELECT * FROM proxy_logs ORDER BY timestamp DESC LIMIT ?").all(500))g.push({id:a.id,timestamp:a.timestamp,status:a.status||"success",proxy:a.proxy_host?{type:a.proxy_type,host:a.proxy_host,port:a.proxy_port}:null,level:a.level||"direct",levelId:a.level_id||null,provider:a.provider||null,targetUrl:a.target_url||null,publicIp:a.public_ip||null,latencyMs:a.latency_ms||0,error:a.error||null,connectionId:a.connection_id||null,comboId:a.combo_id||null,account:a.account||null,tlsFingerprint:1===a.tls_fingerprint});g.length>0&&console.log(`[proxyLogger] Loaded ${g.length} proxy logs from SQLite`)}catch(a){console.warn("[proxyLogger] Failed to load from DB:",a.message)}function h(a){let b={id:(0,d.A)(),timestamp:new Date().toISOString(),status:a.status||"success",proxy:a.proxy||null,level:a.level||"direct",levelId:a.levelId||null,provider:a.provider||null,targetUrl:a.targetUrl||null,publicIp:a.publicIp||null,latencyMs:a.latencyMs||0,error:a.error||null,connectionId:a.connectionId||null,comboId:a.comboId||null,account:a.account||null,tlsFingerprint:a.tlsFingerprint||!1};if(g.unshift(b),g.length>500&&(g.length=500),f)try{let a=(0,e.sm)();a.prepare(`INSERT INTO proxy_logs (id, timestamp, status, proxy_type, proxy_host, proxy_port,
13
+ `,c=!0)}catch{}c||(b=a.startsWith("data:")&&!a.startsWith("data: ")?"data: "+a.slice(5)+"\n":a+"\n"),r?.appendConvertedChunk?.(b),f.enqueue(E.encode(b));continue}if(!k)continue;let m=h(k);if(!m)continue;if(m&&m.done){if(!C){C=!0;let a="data: [DONE]\n\n";r?.appendConvertedChunk?.(a),f.enqueue(E.encode(a))}continue}if(m.delta?.text&&(B+=m.delta.text.length),m.delta?.thinking&&(B+=m.delta.thinking.length),m.choices?.[0]?.delta?.content&&(B+=m.choices[0].delta.content.length),m.choices?.[0]?.delta?.reasoning_content&&(B+=m.choices[0].delta.reasoning_content.length),m.candidates?.[0]?.content?.parts)for(let a of m.candidates[0].content.parts)a.text&&"string"==typeof a.text&&(B+=a.text.length);let o=(0,g.f5)(m);o&&(A.usage=o);let q=(0,d.Y8)(c,p,m,A);if(q?._openaiIntermediate)for(let a of q._openaiIntermediate){let b=j(a,e.h.OPENAI);r?.appendOpenAIChunk?.(b)}if(q?.length>0)for(let a of q){if(!i(a,p))continue;let b="message_delta"===a.type||a.choices?.[0]?.finish_reason;if(A.finishReason&&b&&!(0,g.Gh)(a.usage)&&B>0){let b=(0,g.OF)(w,B,p);a.usage=(0,g.WL)(b,p),A.usage=b}else if(A.finishReason&&b&&A.usage){let b=(0,g.O9)(A.usage);a.usage=(0,g.WL)(b,p)}let c=j(a,p);r?.appendConvertedChunk?.(c),f.enqueue(E.encode(c))}}},flush(a){if(G&&(clearInterval(G),G=null),!H){(0,f.uw)(t,q,u,!1);try{let i=D.decode();if(i&&(y+=i),b===n){if(y){let b=y;y.startsWith("data:")&&!y.startsWith("data: ")&&(b="data: "+y.slice(5)),r?.appendConvertedChunk?.(b),a.enqueue(E.encode(b))}if(!(0,g.Gh)(z)&&B>0&&(z=(0,g.OF)(w,B,e.h.OPENAI)),(0,g.Gh)(z)?(0,g.IF)(q,z,t,u,v):(0,f.E5)({model:t,provider:q,connectionId:u,tokens:null,status:"200 OK"}).catch(()=>{}),x)try{x({status:200,usage:z})}catch{}return}if(y.trim()){let b=h(y.trim());if(b&&!b.done){let f=(0,d.Y8)(c,p,b,A);if(f?._openaiIntermediate)for(let a of f._openaiIntermediate){let b=j(a,e.h.OPENAI);r?.appendOpenAIChunk?.(b)}if(f?.length>0)for(let b of f){let c=j(b,p);r?.appendConvertedChunk?.(c),a.enqueue(E.encode(c))}}}let k=(0,d.Y8)(c,p,null,A);if(k?._openaiIntermediate)for(let a of k._openaiIntermediate){let b=j(a,e.h.OPENAI);r?.appendOpenAIChunk?.(b)}if(k?.length>0)for(let b of k){let c=j(b,p);r?.appendConvertedChunk?.(c),a.enqueue(E.encode(c))}if(!C){C=!0;let b="data: [DONE]\n\n";r?.appendConvertedChunk?.(b),a.enqueue(E.encode(b))}if(!(0,g.Gh)(A?.usage)&&B>0&&(A.usage=(0,g.OF)(w,B,p)),(0,g.Gh)(A?.usage)?(0,g.IF)(A.provider||c,A.usage,t,u,v):(0,f.E5)({model:t,provider:q,connectionId:u,tokens:null,status:"200 OK"}).catch(()=>{}),x)try{x({status:200,usage:A?.usage})}catch{}}catch(a){console.log(`[STREAM] Error in flush (${t||"unknown"}):`,a.message||a)}}}},{highWaterMark:16},{highWaterMark:16})}function p(a,b,c=null,d=null,e=null,f=null,g=null,h=null,i=null,j=null){return o({mode:m,targetFormat:a,sourceFormat:b,provider:c,reqLogger:d,toolNameMap:e,model:f,connectionId:g,apiKeyInfo:j,body:h,onComplete:i})}function q(a=null,b=null,c=null,d=null,e=null,f=null,g=null){return o({mode:n,provider:a,reqLogger:b,model:c,connectionId:d,apiKeyInfo:g,body:e,onComplete:f})}},34493:(a,b,c)=>{c.d(b,{GL:()=>i,XT:()=>j,pq:()=>h});var d=c(94755),e=c(42910);let f=!e.m1&&!e.I8,g=[];if(f)try{for(let a of(0,e.sm)().prepare("SELECT * FROM proxy_logs ORDER BY timestamp DESC LIMIT ?").all(500))g.push({id:a.id,timestamp:a.timestamp,status:a.status||"success",proxy:a.proxy_host?{type:a.proxy_type,host:a.proxy_host,port:a.proxy_port}:null,level:a.level||"direct",levelId:a.level_id||null,provider:a.provider||null,targetUrl:a.target_url||null,publicIp:a.public_ip||null,latencyMs:a.latency_ms||0,error:a.error||null,connectionId:a.connection_id||null,comboId:a.combo_id||null,account:a.account||null,tlsFingerprint:1===a.tls_fingerprint});g.length>0&&console.log(`[proxyLogger] Loaded ${g.length} proxy logs from SQLite`)}catch(a){console.warn("[proxyLogger] Failed to load from DB:",a.message)}function h(a){let b={id:(0,d.A)(),timestamp:new Date().toISOString(),status:a.status||"success",proxy:a.proxy||null,level:a.level||"direct",levelId:a.levelId||null,provider:a.provider||null,targetUrl:a.targetUrl||null,publicIp:a.publicIp||null,latencyMs:a.latencyMs||0,error:a.error||null,connectionId:a.connectionId||null,comboId:a.comboId||null,account:a.account||null,tlsFingerprint:a.tlsFingerprint||!1};if(g.unshift(b),g.length>500&&(g.length=500),f)try{let a=(0,e.sm)();a.prepare(`INSERT INTO proxy_logs (id, timestamp, status, proxy_type, proxy_host, proxy_port,
14
14
  level, level_id, provider, target_url, public_ip, latency_ms, error,
15
15
  connection_id, combo_id, account, tls_fingerprint)
16
16
  VALUES (@id, @timestamp, @status, @proxyType, @proxyHost, @proxyPort,
@@ -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:()=>A});var e=c(32113),f=c(59957),g=c(55120),h=c(26695),i=c(6327),j=c(50101),k=c(87068),l=c(89122),m=c(23969),n=c(71861),o=c(60293),p=c(82795),q=c(27230),r=c(37544),s=c(50498),t=c(8550),u=c(54745),v=c(1308),w=c(9315),x=c(79335),y=c(65982),z=a([r]);async function A({body:a,modelInfo:b,credentials:c,log:d,onCredentialsRefreshed:z,onRequestSuccess:A,onDisconnect:B,clientRawRequest:C,connectionId:D,apiKeyInfo:E=null,userAgent:F,comboName:G}){let H,I,J,K,L,M,{provider:N,model:O}=b,P=Date.now(),Q=(0,x.xp)(C?.headers),R=(0,x.ic)(Q);if(R)return d?.debug?.("IDEMPOTENCY",`Hit for key=${Q?.slice(0,12)}...`),{success:!0,response:new Response(JSON.stringify(R.response),{status:R.status,headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*","X-OmniRoute-Idempotent":"true"}})};await (0,v.rh)();let S=(0,e.Tz)(a),T=(C?.endpoint||"").toLowerCase().endsWith("/responses"),U=(0,p.c)(a,O,F);if(U)return U;let V=m.PROVIDER_ID_TO_ALIAS[N]||N,W=(0,m.ux)(V,O)||(0,e.jJ)(N),X=!1!==a.stream;if((0,w.TZ)(a,C?.headers)){let b=(0,w.gR)(O,a.messages,a.temperature,a.top_p),c=(0,w.Cb)(b);if(c)return d?.debug?.("CACHE",`Semantic cache HIT for ${O}`),{success:!0,response:new Response(JSON.stringify(c),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*","X-OmniRoute-Cache":"HIT"}})}}let Y=await (0,l.q)(S,W,O);C&&Y.logClientRawRequest(C.endpoint,C.body,C.headers),Y.logRawRequest(a),d?.debug?.("FORMAT",`${S} → ${W} | stream=${X}`);let Z=a;try{Z=(0,f.GH)(S,W,O,a,X,c,N,Y)}catch(f){let a=Number(f?.statusCode),b=Number.isInteger(a)&&a>=400&&a<=599?a:o.gx.SERVER_ERROR,c=f?.message||"Invalid request",e="string"==typeof f?.errorType?f.errorType:null;if(d?.warn?.("TRANSLATE",`Request translation failed: ${c}`),e)return{success:!1,status:b,error:c,response:new Response(JSON.stringify({error:{message:c,type:e,code:e}}),{status:b,headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})};return(0,n.A1)(b,c)}let $=Z._toolNameMap;delete Z._toolNameMap,Z.model=O;let _=(0,r.SB)(N);(0,q.uw)(O,N,D,!0),(0,q.E5)({model:O,provider:N,connectionId:D,status:"PENDING"}).catch(()=>{});let aa=Z.messages?.length||Z.contents?.length||Z.request?.contents?.length||0;d?.debug?.("REQUEST",`${N.toUpperCase()} | ${O} | ${aa} msgs`);let ab=(0,i.jd)({onDisconnect:B,log:d,provider:N,model:O});try{let a=await (0,v.YO)(N,D,O,()=>_.execute({model:O,body:Z,stream:X,credentials:c,signal:ab.signal,log:d}));H=a.response,I=a.url,J=a.headers,K=a.transformedBody,Y.logTargetRequest(I,J,K),(0,v.Kr)(N,D,H.headers,H.status,O)}catch(c){if((0,q.uw)(O,N,D,!1),(0,q.E5)({model:O,provider:N,connectionId:D,status:`FAILED ${"AbortError"===c.name?499:o.gx.BAD_GATEWAY}`}).catch(()=>{}),(0,q.gK)({method:"POST",path:C?.endpoint||"/v1/chat/completions",status:"AbortError"===c.name?499:o.gx.BAD_GATEWAY,model:O,provider:N,connectionId:D,duration:Date.now()-P,requestBody:a,error:c.message,sourceFormat:S,targetFormat:W,comboName:G,apiKeyId:E?.id||null,apiKeyName:E?.name||null}).catch(()=>{}),"AbortError"===c.name)return ab.handleError(c),(0,n.A1)(499,"Request aborted");let b=(0,n.lR)(c,N,O,o.gx.BAD_GATEWAY);return console.log(`${h.lm.red}[ERROR] ${b}${h.lm.reset}`),(0,n.A1)(o.gx.BAD_GATEWAY,b)}if(H.status===o.gx.UNAUTHORIZED||H.status===o.gx.FORBIDDEN){let a=await (0,k.qZ)(()=>_.refreshCredentials(c,d),3,d);if(a?.accessToken||a?.copilotToken){d?.info?.("TOKEN",`${N.toUpperCase()} | refreshed`),Object.assign(c,a),z&&a&&await z(a);try{let a=await _.execute({model:O,body:Z,stream:X,credentials:c,signal:ab.signal,log:d});a.response.ok&&(H=a.response,I=a.url)}catch(a){d?.warn?.("TOKEN",`${N.toUpperCase()} | retry after refresh failed`)}}else d?.warn?.("TOKEN",`${N.toUpperCase()} | refresh failed`)}if(!H.ok){(0,q.uw)(O,N,D,!1);let{statusCode:b,message:c,retryAfterMs:e}=await (0,n.zL)(H,N);(0,q.E5)({model:O,provider:N,connectionId:D,status:`FAILED ${b}`}).catch(()=>{}),(0,q.gK)({method:"POST",path:C?.endpoint||"/v1/chat/completions",status:b,model:O,provider:N,connectionId:D,duration:Date.now()-P,requestBody:a,error:c,sourceFormat:S,targetFormat:W,comboName:G,apiKeyId:E?.id||null,apiKeyName:E?.name||null}).catch(()=>{});let f=(0,n.lR)(Error(c),N,O,b);if(console.log(`${h.lm.red}[ERROR] ${f}${h.lm.reset}`),e&&"antigravity"===N){let a=Math.ceil(e/1e3);d?.debug?.("RETRY",`Antigravity quota reset in ${a}s (${e}ms)`)}return Y.logError(Error(c),K||Z),(0,v.Kr)(N,D,H.headers,b,O),(0,n.A1)(b,f,e)}if(!X){let b;(0,q.uw)(O,N,D,!1);let c=(H.headers.get("content-type")||"").toLowerCase(),e=await H.text();if(c.includes("text/event-stream")||/(^|\n)\s*(event|data):/m.test(e)){let a=W===g.h.OPENAI_RESPONSES?(0,u.B)(e,O):(0,u.F)(e,O);if(!a)return(0,q.E5)({model:O,provider:N,connectionId:D,status:`FAILED ${o.gx.BAD_GATEWAY}`}).catch(()=>{}),(0,n.A1)(o.gx.BAD_GATEWAY,"Invalid SSE response for non-streaming request");b=a}else try{b=e?JSON.parse(e):{}}catch{return(0,q.E5)({model:O,provider:N,connectionId:D,status:`FAILED ${o.gx.BAD_GATEWAY}`}).catch(()=>{}),(0,n.A1)(o.gx.BAD_GATEWAY,"Invalid JSON response from provider")}A&&await A();let i=(0,t.M)(b,N);if((0,q.E5)({model:O,provider:N,connectionId:D,tokens:i,status:"200 OK"}).catch(()=>{}),(0,q.gK)({method:"POST",path:C?.endpoint||"/v1/chat/completions",status:200,model:O,provider:N,connectionId:D,duration:Date.now()-P,tokens:i,requestBody:a,responseBody:b,sourceFormat:S,targetFormat:W,comboName:G,apiKeyId:E?.id||null,apiKeyName:E?.name||null}).catch(()=>{}),i&&"object"==typeof i){let a=`[${new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit"})}] 📊 [USAGE] ${N.toUpperCase()} | in=${i?.prompt_tokens||0} | out=${i?.completion_tokens||0}${D?` | account=${D.slice(0,8)}...`:""}`;console.log(`${h.lm.green}${a}${h.lm.reset}`),(0,q.sZ)({provider:N||"unknown",model:O||"unknown",tokens:i,timestamp:new Date().toISOString(),connectionId:D||void 0,apiKeyId:E?.id||void 0,apiKeyName:E?.name||void 0}).catch(a=>{console.error("Failed to save usage stats:",a.message)})}let k=(0,f.nZ)(W,S)?(0,s.l)(b,W,S):b;if(k?.usage){let a=(0,j.O9)(k.usage);k.usage=(0,j.WL)(a,S)}else{let b=JSON.stringify(k?.choices?.[0]?.message?.content||"").length;if(b>0){let c=(0,j.OF)(a,b,S);k.usage=(0,j.WL)(c,S)}}if((0,w.TZ)(a,C?.headers)){let b=(0,w.gR)(O,a.messages,a.temperature,a.top_p),c=i?.prompt_tokens+i?.completion_tokens||0;(0,w.yv)(b,O,k,c),d?.debug?.("CACHE",`Stored response for ${O} (${c} tokens)`)}return(0,x.tm)(Q,k,200),{success:!0,response:new Response(JSON.stringify(k),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*","X-OmniRoute-Cache":"MISS"}})}}A&&await A();let ac={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","Access-Control-Allow-Origin":"*"},ad=({status:b,usage:c})=>{(0,q.gK)({method:"POST",path:C?.endpoint||"/v1/chat/completions",status:b||200,model:O,provider:N,connectionId:D,duration:Date.now()-P,tokens:c||{},requestBody:a,sourceFormat:S,targetFormat:W,comboName:G,apiKeyId:E?.id||null,apiKeyName:E?.name||null}).catch(()=>{})},ae=F?.toLowerCase().includes("droid")||F?.toLowerCase().includes("codex-cli");if("codex"!==N||W!==g.h.OPENAI_RESPONSES||S!==g.h.OPENAI||T||ae?(0,f.nZ)(W,S)?(d?.debug?.("STREAM",`Translation mode: ${W} → ${S}`),L=(0,h.i5)(W,S,N,Y,$,O,D,a,ad,E)):(d?.debug?.("STREAM","Standard passthrough mode"),L=(0,h.l2)(N,Y,O,D,a,ad,E)):(d?.debug?.("STREAM",`Codex translation mode: openai-responses → openai`),L=(0,h.i5)("openai-responses","openai",N,Y,$,O,D,a,ad,E)),(0,y.Z)(C?.headers)){let a=(0,y.Y)({signal:ab.signal});M=(0,i.Jb)(H,L,ab).pipeThrough(a),ac["X-OmniRoute-Progress"]="enabled"}else M=(0,i.Jb)(H,L,ab);return{success:!0,response:new Response(M,{headers:ac})}}r=(z.then?(await z)():z)[0],d()}catch(a){d(a)}})},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:()=>i});var d=c(32113),e=c(59957),f=c(55120),g=c(60293),h=c(26695);function i(a,b,c=""){if(!c.includes("claude-cli")||!a.messages?.length)return null;let l=a.messages,m=a=>"string"==typeof a?a:Array.isArray(a)?a.filter(a=>"text"===a.type).map(a=>a.text).join(" "):"",n=!1,o=l[l.length-1];if(o?.role==="assistant"&&o.content?.[0]?.text==="{"&&(n=!0),n||"Warmup"===m(l[0]?.content)&&(n=!0),n||1!==l.length||l[0]?.role!=="user"||"count"===m(l[0]?.content)&&(n=!0),!n&&g.C8?.length){let a=l.filter(a=>"user"===a.role).map(a=>m(a.content)).join(" ");g.C8.some(b=>a.includes(b))&&(n=!0)}if(!n)return null;let p=(0,d.Tz)(a);return!1!==a.stream?function(a,b){let c=j(b),d=(0,e.Ws)(a);d.model=b;let g=k(c),i=[];for(let b of g){let c=(0,e.Y8)(f.h.OPENAI,a,b,d);if(c?.length>0)for(let b of c)i.push((0,h.v8)(b,a))}let l=(0,e.Y8)(f.h.OPENAI,a,null,d);if(l?.length>0)for(let b of l)i.push((0,h.v8)(b,a));return i.push("data: [DONE]\n\n"),{success:!0,response:new Response(i.join(""),{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","Access-Control-Allow-Origin":"*"}})}}(p,b):function(a,b){let c=j(b);if(a===f.h.OPENAI)return{success:!0,response:new Response(JSON.stringify(c),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})};let d=(0,e.Ws)(a);d.model=b;let g=k(c),h=[];for(let b of g){let c=(0,e.Y8)(f.h.OPENAI,a,b,d);c?.length>0&&h.push(...c)}let i=(0,e.Y8)(f.h.OPENAI,a,null,d);return i?.length>0&&h.push(...i),{success:!0,response:new Response(JSON.stringify(function(a,b){if(!a||0===a.length)return j("unknown");let c=a[a.length-1];if(b===f.h.CLAUDE&&a.find(a=>"message_stop"===a.type)){a.find(a=>"content_block_delta"===a.type);let b=a.find(a=>"message_delta"===a.type),d=a.find(a=>"message_start"===a.type);d?.message&&(c=d.message,b?.usage&&(c.usage=b.usage))}return c}(h,a)),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}}(p,b)}function j(a){let b=`chatcmpl-${Date.now()}`;return{id:b,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:a,choices:[{index:0,message:{role:"assistant",content:"CLI Command Execution: Clear Terminal"},finish_reason:"stop"}],usage:{prompt_tokens:1,completion_tokens:1,total_tokens:2}}}function k(a){let{id:b,created:c,model:d,choices:e}=a;return[{id:b,object:"chat.completion.chunk",created:c,model:d,choices:[{index:0,delta:{role:"assistant",content:e[0].message.content},finish_reason:null}]},{id:b,object:"chat.completion.chunk",created:c,model:d,choices:[{index:0,delta:{},finish_reason:"stop"}],usage:a.usage}]}},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})}}}}};
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=!1!==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}}};
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=287,exports.ids=[287],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(41549),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}},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:()=>n,eF:()=>m,lR:()=>l});var d=c(87550),e=c.n(d),f=c(76760),g=c.n(f),h=c(73024),i=c.n(h),j=c(41549);let k=0;function l(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-k<36e5)return null;k=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 l=i().readdirSync(d).filter(a=>a.startsWith("db_")&&a.endsWith(".sqlite")).sort();for(;l.length>20;){let a=0,b=1/0;for(let c=0;c<l.length-1;c++)try{let e=i().statSync(g().join(d,l[c]));e.size<b&&(b=e.size,a=c)}catch{a=c;break}try{i().unlinkSync(g().join(d,l[a]))}catch{}l.splice(a,1)}return{filename:g().basename(h),size:b.size}}catch(a){return console.error("[DB] Backup failed:",a.message),null}}async function m(){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 n(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(k=0,l("pre-restore"),(0,j.jX)(),[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,m=d.prepare("SELECT COUNT(*) as cnt FROM combos").get()?.cnt||0,n=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:m,apiKeyCount:n}}},40287:(a,b,c)=>{c.d(b,{S8:()=>L,lR:()=>f.lR,bI:()=>y,Iq:()=>U,jd:()=>Q,iE:()=>s,i0:()=>B,Lh:()=>V,CG:()=>S,fv:()=>G,fK:()=>v,op:()=>w,Pc:()=>D,HL:()=>Y.HL,NL:()=>K,v9:()=>X,PX:()=>T,L:()=>O,Dj:()=>P,Uv:()=>N,uv:()=>J,c:()=>H,OM:()=>E,r4:()=>Y.r4,getPricingForModel:()=>Y.PS,Mc:()=>r,getProviderConnections:()=>q,Qu:()=>A,Fh:()=>z,ru:()=>Y.ru,o4:()=>Y.o4,mt:()=>Y.mt,Nx:()=>Y.isCloudEnabled,eF:()=>f.eF,BD:()=>M,VT:()=>Y.VT,yF:()=>Y.yF,YD:()=>Y.YD,Dp:()=>f.Dp,L9:()=>I,o5:()=>F,PM:()=>Y.PM,oG:()=>R,KJ:()=>Y.KJ,rj:()=>u,ho:()=>C,Xx:()=>Y.Xx,ek:()=>W});var d=c(94755),e=c(41549),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.message),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?i=g.prepare("SELECT * FROM provider_connections WHERE provider = ? AND auth_type = 'oauth' AND email = ?").get(a.provider,a.email):"oauth"!==a.authType||a.email?"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)):i=g.prepare(`SELECT * FROM provider_connections WHERE provider = ? AND auth_type = 'oauth'
1
+ "use strict";exports.id=287,exports.ids=[287],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}},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:()=>n,eF:()=>m,lR:()=>l});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);let k=0;function l(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-k<36e5)return null;k=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 l=i().readdirSync(d).filter(a=>a.startsWith("db_")&&a.endsWith(".sqlite")).sort();for(;l.length>20;){let a=0,b=1/0;for(let c=0;c<l.length-1;c++)try{let e=i().statSync(g().join(d,l[c]));e.size<b&&(b=e.size,a=c)}catch{a=c;break}try{i().unlinkSync(g().join(d,l[a]))}catch{}l.splice(a,1)}return{filename:g().basename(h),size:b.size}}catch(a){return console.error("[DB] Backup failed:",a.message),null}}async function m(){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 n(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(k=0,l("pre-restore"),(0,j.jX)(),[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,m=d.prepare("SELECT COUNT(*) as cnt FROM combos").get()?.cnt||0,n=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:m,apiKeyCount:n}}},40287:(a,b,c)=>{c.d(b,{S8:()=>L,lR:()=>f.lR,bI:()=>y,Iq:()=>U,jd:()=>Q,iE:()=>s,i0:()=>B,Lh:()=>V,CG:()=>S,fv:()=>G,fK:()=>v,op:()=>w,Pc:()=>D,HL:()=>Y.HL,NL:()=>K,v9:()=>X,PX:()=>T,L:()=>O,Dj:()=>P,Uv:()=>N,uv:()=>J,c:()=>H,OM:()=>E,r4:()=>Y.r4,getPricingForModel:()=>Y.PS,Mc:()=>r,getProviderConnections:()=>q,Qu:()=>A,Fh:()=>z,ru:()=>Y.ru,o4:()=>Y.o4,mt:()=>Y.mt,Nx:()=>Y.isCloudEnabled,eF:()=>f.eF,BD:()=>M,VT:()=>Y.VT,yF:()=>Y.yF,YD:()=>Y.YD,Dp:()=>f.Dp,L9:()=>I,o5:()=>F,PM:()=>Y.PM,oG:()=>R,KJ:()=>Y.KJ,rj:()=>u,ho:()=>C,Xx:()=>Y.Xx,ek:()=>W});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?i=g.prepare("SELECT * FROM provider_connections WHERE provider = ? AND auth_type = 'oauth' AND email = ?").get(a.provider,a.email):"oauth"!==a.authType||a.email?"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)):i=g.prepare(`SELECT * FROM provider_connections WHERE provider = ? AND auth_type = 'oauth'
2
2
  ORDER BY updated_at DESC LIMIT 1`).get(a.provider),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(`
3
3
  INSERT INTO provider_connections (
4
4
  id, provider, auth_type, name, email, priority, is_active,
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=1549,exports.ids=[1549],exports.modules={41549:(a,b,c)=>{c.d(b,{G6:()=>s,I8:()=>l,NJ:()=>p,jX:()=>v,kB:()=>r,m1:()=>k,nJ:()=>m,oh:()=>n,sm:()=>u});var d=c(87550),e=c.n(d),f=c(76760),g=c.n(f),h=c(73024),i=c.n(h),j=c(88189);let k="object"==typeof globalThis.caches&&null!==globalThis.caches,l="phase-production-build"===process.env.NEXT_PHASE,m=(0,j._3)({isCloud:k});k||(0,j.sm)();let n=k?null:g().join(m,"storage.sqlite"),o=k?null:g().join(m,"db.json"),p=k?null:g().join(m,"db_backups");k||i().existsSync(m)||i().mkdirSync(m,{recursive:!0});let q=`
1
+ "use strict";exports.id=2910,exports.ids=[2910],exports.modules={42910:(a,b,c)=>{c.d(b,{nJ:()=>p,NJ:()=>s,oh:()=>q,G6:()=>v,sm:()=>x,I8:()=>o,m1:()=>n,jX:()=>y,kB:()=>u});var d=c(87550),e=c.n(d),f=c(76760),g=c.n(f),h=c(73024),i=c.n(h),j=c(88189);let k=(0,c(73136).fileURLToPath)("file:///home/runner/work/OmniRoute/OmniRoute/src/lib/db/migrationRunner.ts"),l=g().dirname(k),m=g().join(l,"migrations"),n="object"==typeof globalThis.caches&&null!==globalThis.caches,o="phase-production-build"===process.env.NEXT_PHASE,p=(0,j._3)({isCloud:n});n||(0,j.sm)();let q=n?null:g().join(p,"storage.sqlite"),r=n?null:g().join(p,"db.json"),s=n?null:g().join(p,"db_backups");n||i().existsSync(p)||i().mkdirSync(p,{recursive:!0});let t=`
2
2
  CREATE TABLE IF NOT EXISTS provider_connections (
3
3
  id TEXT PRIMARY KEY,
4
4
  provider TEXT NOT NULL,
@@ -197,7 +197,21 @@
197
197
  );
198
198
  CREATE INDEX IF NOT EXISTS idx_sc_sig ON semantic_cache(signature);
199
199
  CREATE INDEX IF NOT EXISTS idx_sc_model ON semantic_cache(model);
200
- `;function r(a){if(!a)return null;let b={};for(let[c,d]of Object.entries(a)){let a=c.replace(/_([a-z])/g,(a,b)=>b.toUpperCase());if("isActive"===a||"rateLimitProtection"===a)b[a]=1===d||!0===d;else if("providerSpecificData"===a&&"string"==typeof d)try{b[a]=JSON.parse(d)}catch{b[a]=d}else b[a]=d}return b}function s(a){let b={};for(let[c,d]of Object.entries(a))null!=d&&(b[c]=d);return b}let t=null;function u(){if(t)return t;if(k||l)return l&&console.log("[DB] Build phase detected — using in-memory SQLite (read-only)"),(t=new(e())(":memory:")).pragma("journal_mode = WAL"),t.exec(q),t;if(i().existsSync(n))try{let a=new(e())(n,{readonly:!0}),b=a.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='schema_migrations'").get();if(a.close(),b){let a=n+".old-schema";for(let b of(console.log(`[DB] Old incompatible schema detected — renaming to ${g().basename(a)}`),i().renameSync(n,a),["-wal","-shm"]))try{i().existsSync(n+b)&&i().unlinkSync(n+b)}catch{}}}catch(a){console.warn("[DB] Could not probe existing DB, will create fresh:",a.message);try{i().unlinkSync(n)}catch{}}(t=new(e())(n)).pragma("journal_mode = WAL"),t.pragma("busy_timeout = 5000"),t.pragma("synchronous = NORMAL"),t.exec(q);var a=t;try{let b=a.prepare("PRAGMA table_info(provider_connections)").all();new Set(b.map(a=>a.name)).has("rate_limit_protection")||(a.exec("ALTER TABLE provider_connections ADD COLUMN rate_limit_protection INTEGER DEFAULT 0"),console.log("[DB] Added provider_connections.rate_limit_protection column"))}catch(a){console.warn("[DB] Failed to verify provider_connections schema:",a.message)}return o&&i().existsSync(o)&&function(a,b){try{let c=i().readFileSync(b,"utf-8"),d=JSON.parse(c),e=(d.providerConnections||[]).length,f=(d.providerNodes||[]).length,h=(d.apiKeys||[]).length;if(0===e&&0===f&&0===h){console.log("[DB] db.json has no data to migrate, skipping"),i().renameSync(b,b+".empty");return}console.log(`[DB] Migrating db.json → SQLite (${e} connections, ${f} nodes, ${h} keys)...`),a.transaction(()=>{let b=a.prepare(`
200
+ `;function u(a){if(!a)return null;let b={};for(let[c,d]of Object.entries(a)){let a=c.replace(/_([a-z])/g,(a,b)=>b.toUpperCase());if("isActive"===a||"rateLimitProtection"===a)b[a]=1===d||!0===d;else if("providerSpecificData"===a&&"string"==typeof d)try{b[a]=JSON.parse(d)}catch{b[a]=d}else b[a]=d}return b}function v(a){let b={};for(let[c,d]of Object.entries(a))null!=d&&(b[c]=d);return b}let w=null;function x(){if(w)return w;if(n||o)return o&&console.log("[DB] Build phase detected — using in-memory SQLite (read-only)"),(w=new(e())(":memory:")).pragma("journal_mode = WAL"),w.exec(t),w;if(i().existsSync(q))try{let a=new(e())(q,{readonly:!0}),b=a.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='schema_migrations'").get();if(a.close(),b){let a=q+".old-schema";for(let b of(console.log(`[DB] Old incompatible schema detected — renaming to ${g().basename(a)}`),i().renameSync(q,a),["-wal","-shm"]))try{i().existsSync(q+b)&&i().unlinkSync(q+b)}catch{}}}catch(a){console.warn("[DB] Could not probe existing DB, will create fresh:",a.message);try{i().unlinkSync(q)}catch{}}(w=new(e())(q)).pragma("journal_mode = WAL"),w.pragma("busy_timeout = 5000"),w.pragma("synchronous = NORMAL"),w.exec(t);var a=w;try{let b=a.prepare("PRAGMA table_info(provider_connections)").all();new Set(b.map(a=>a.name)).has("rate_limit_protection")||(a.exec("ALTER TABLE provider_connections ADD COLUMN rate_limit_protection INTEGER DEFAULT 0"),console.log("[DB] Added provider_connections.rate_limit_protection column"))}catch(a){console.warn("[DB] Failed to verify provider_connections schema:",a.message)}return w.exec(`
201
+ CREATE TABLE IF NOT EXISTS _omniroute_migrations (
202
+ version TEXT PRIMARY KEY,
203
+ name TEXT NOT NULL,
204
+ applied_at TEXT NOT NULL DEFAULT (datetime('now'))
205
+ );
206
+ INSERT OR IGNORE INTO _omniroute_migrations (version, name)
207
+ VALUES ('001', 'initial_schema');
208
+ `),!function(a){a.exec(`
209
+ CREATE TABLE IF NOT EXISTS _omniroute_migrations (
210
+ version TEXT PRIMARY KEY,
211
+ name TEXT NOT NULL,
212
+ applied_at TEXT NOT NULL DEFAULT (datetime('now'))
213
+ );
214
+ `);let b=i().existsSync(m)?i().readdirSync(m).filter(a=>a.endsWith(".sql")).sort().map(a=>{let b=a.match(/^(\d+)_(.+)\.sql$/);return b?{version:b[1],name:b[2],path:g().join(m,a)}:null}).filter(Boolean):[],c=new Set(a.prepare("SELECT version FROM _omniroute_migrations").all().map(a=>a.version)),d=0;for(let e of b){if(c.has(e.version))continue;let b=i().readFileSync(e.path,"utf-8"),f=a.transaction(()=>{a.exec(b),a.prepare("INSERT INTO _omniroute_migrations (version, name) VALUES (?, ?)").run(e.version,e.name)});try{f(),d++,console.log(`[Migration] Applied: ${e.version}_${e.name}`)}catch(b){let a=b instanceof Error?b.message:String(b);throw console.error(`[Migration] FAILED: ${e.version}_${e.name} — ${a}`),b}}d>0&&console.log(`[Migration] ${d} migration(s) applied successfully.`)}(w),r&&i().existsSync(r)&&function(a,b){try{let c=i().readFileSync(b,"utf-8"),d=JSON.parse(c),e=(d.providerConnections||[]).length,f=(d.providerNodes||[]).length,h=(d.apiKeys||[]).length;if(0===e&&0===f&&0===h){console.log("[DB] db.json has no data to migrate, skipping"),i().renameSync(b,b+".empty");return}console.log(`[DB] Migrating db.json → SQLite (${e} connections, ${f} nodes, ${h} keys)...`),a.transaction(()=>{let b=a.prepare(`
201
215
  INSERT OR REPLACE INTO provider_connections (
202
216
  id, provider, auth_type, name, email, priority, is_active,
203
217
  access_token, refresh_token, expires_at, token_expires_at,
@@ -226,4 +240,4 @@
226
240
  `);for(let a of d.combos||[])f.run({id:a.id,name:a.name,data:JSON.stringify(a),createdAt:a.createdAt||new Date().toISOString(),updatedAt:a.updatedAt||new Date().toISOString()});let g=a.prepare(`
227
241
  INSERT OR REPLACE INTO api_keys (id, name, key, machine_id, created_at)
228
242
  VALUES (@id, @name, @key, @machineId, @createdAt)
229
- `);for(let a of d.apiKeys||[])g.run({id:a.id,name:a.name,key:a.key,machineId:a.machineId||null,createdAt:a.createdAt||new Date().toISOString()})})();let j=b+".migrated";i().renameSync(b,j),console.log(`[DB] ✓ Migration complete. Original saved as ${j}`);let k=g().join(m,"db_backups");if(i().existsSync(k)){let a=i().readdirSync(k).filter(a=>a.endsWith(".json"));a.length>0&&console.log(`[DB] Note: ${a.length} legacy .json backups remain in ${k}`)}}catch(a){console.error("[DB] Migration from db.json failed:",a.message)}}(t,o),t.prepare("INSERT OR REPLACE INTO db_meta (key, value) VALUES ('schema_version', '1')").run(),console.log(`[DB] SQLite database ready: ${n}`),t}function v(){t&&(t.close(),t=null)}},88189:(a,b,c)=>{c.d(b,{_3:()=>l,sm:()=>k,ys:()=>m});var d=c(76760),e=c.n(d),f=c(48161),g=c.n(f);let h="omniroute";function i(){try{return g().homedir()}catch{return process.cwd()}}function j(a){if("string"!=typeof a)return null;let b=a.trim();return b?e().resolve(b):null}function k(){return e().join(i(),`.${h}`)}function l({isCloud:a=!1}={}){if(a)return"/tmp";let b=j(process.env.DATA_DIR);if(b)return b;let c=i();if("win32"===process.platform){let a=process.env.APPDATA||e().join(c,"AppData","Roaming");return e().join(a,h)}let d=j(process.env.XDG_CONFIG_HOME);return d?e().join(d,h):k()}function m(a,b){if(!a||!b)return!1;let c=e().resolve(a),d=e().resolve(b);return"win32"===process.platform?c.toLowerCase()===d.toLowerCase():c===d}}};
243
+ `);for(let a of d.apiKeys||[])g.run({id:a.id,name:a.name,key:a.key,machineId:a.machineId||null,createdAt:a.createdAt||new Date().toISOString()})})();let j=b+".migrated";i().renameSync(b,j),console.log(`[DB] ✓ Migration complete. Original saved as ${j}`);let k=g().join(p,"db_backups");if(i().existsSync(k)){let a=i().readdirSync(k).filter(a=>a.endsWith(".json"));a.length>0&&console.log(`[DB] Note: ${a.length} legacy .json backups remain in ${k}`)}}catch(a){console.error("[DB] Migration from db.json failed:",a.message)}}(w,r),w.prepare("INSERT OR REPLACE INTO db_meta (key, value) VALUES ('schema_version', '1')").run(),console.log(`[DB] SQLite database ready: ${q}`),w}function y(){w&&(w.close(),w=null)}},88189:(a,b,c)=>{c.d(b,{_3:()=>l,sm:()=>k,ys:()=>m});var d=c(76760),e=c.n(d),f=c(48161),g=c.n(f);let h="omniroute";function i(){try{return g().homedir()}catch{return process.cwd()}}function j(a){if("string"!=typeof a)return null;let b=a.trim();return b?e().resolve(b):null}function k(){return e().join(i(),`.${h}`)}function l({isCloud:a=!1}={}){if(a)return"/tmp";let b=j(process.env.DATA_DIR);if(b)return b;let c=i();if("win32"===process.platform){let a=process.env.APPDATA||e().join(c,"AppData","Roaming");return e().join(a,h)}let d=j(process.env.XDG_CONFIG_HOME);return d?e().join(d,h):k()}function m(a,b){if(!a||!b)return!1;let c=e().resolve(a),d=e().resolve(b);return"win32"===process.platform?c.toLowerCase()===d.toLowerCase():c===d}}};