omniroute 0.8.5 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (519) hide show
  1. package/README.de.md +995 -0
  2. package/README.es.md +995 -0
  3. package/README.fr.md +995 -0
  4. package/README.it.md +995 -0
  5. package/README.md +725 -101
  6. package/README.pt-BR.md +995 -0
  7. package/README.ru.md +995 -0
  8. package/README.zh-CN.md +995 -0
  9. package/app/.next/BUILD_ID +1 -1
  10. package/app/.next/app-path-routes-manifest.json +25 -24
  11. package/app/.next/build-manifest.json +2 -2
  12. package/app/.next/prerender-manifest.json +27 -3
  13. package/app/.next/routes-manifest.json +6 -0
  14. package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js.nft.json +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +5 -5
  18. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/costs/page.js +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/costs/page.js.nft.json +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/health/page.js +2 -2
  30. package/app/.next/server/app/(dashboard)/dashboard/health/page.js.nft.json +1 -1
  31. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  32. package/app/.next/server/app/(dashboard)/dashboard/limits/page.js +2 -0
  33. package/app/.next/server/app/(dashboard)/dashboard/limits/page.js.nft.json +1 -0
  34. package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -0
  35. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js +1 -1
  36. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js.nft.json +1 -1
  37. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
  38. package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
  39. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  40. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  41. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  42. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  43. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  44. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +1 -1
  45. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  46. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  47. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  48. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  49. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  50. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  51. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  52. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  53. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js +2 -2
  54. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js.nft.json +1 -1
  55. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  56. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js +1 -1
  57. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js.nft.json +1 -1
  58. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  59. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +1 -1
  60. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  61. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  62. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  63. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  64. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  65. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  66. package/app/.next/server/app/_global-error.html +2 -2
  67. package/app/.next/server/app/_global-error.rsc +1 -1
  68. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  69. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  70. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  71. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  72. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  73. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  74. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  75. package/app/.next/server/app/_not-found.html +1 -1
  76. package/app/.next/server/app/_not-found.rsc +3 -3
  77. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  78. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  79. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
  80. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  81. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  82. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  83. package/app/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  84. package/app/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  85. package/app/.next/server/app/api/cache/route_client-reference-manifest.js +1 -1
  86. package/app/.next/server/app/api/cache/stats/route_client-reference-manifest.js +1 -1
  87. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  88. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
  89. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +2 -2
  90. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
  91. package/app/.next/server/app/api/cli-tools/backups/route.js +1 -1
  92. package/app/.next/server/app/api/cli-tools/backups/route_client-reference-manifest.js +1 -1
  93. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +1 -1
  94. package/app/.next/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  95. package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
  96. package/app/.next/server/app/api/cli-tools/cline-settings/route.js +1 -1
  97. package/app/.next/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  98. package/app/.next/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
  99. package/app/.next/server/app/api/cli-tools/codex-profiles/route.js +2 -2
  100. package/app/.next/server/app/api/cli-tools/codex-profiles/route_client-reference-manifest.js +1 -1
  101. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +1 -1
  102. package/app/.next/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  103. package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
  104. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +1 -1
  105. package/app/.next/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  106. package/app/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
  107. package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route_client-reference-manifest.js +1 -1
  108. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  109. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  110. package/app/.next/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -1
  111. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +1 -1
  112. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  113. package/app/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
  114. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route.js +2 -2
  115. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route_client-reference-manifest.js +1 -1
  116. package/app/.next/server/app/api/cli-tools/status/route.js +1 -1
  117. package/app/.next/server/app/api/cli-tools/status/route.js.nft.json +1 -1
  118. package/app/.next/server/app/api/cli-tools/status/route_client-reference-manifest.js +1 -1
  119. package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
  120. package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
  121. package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
  122. package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
  123. package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
  124. package/app/.next/server/app/api/combos/metrics/route_client-reference-manifest.js +1 -1
  125. package/app/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
  126. package/app/.next/server/app/api/combos/test/route_client-reference-manifest.js +1 -1
  127. package/app/.next/server/app/api/compliance/audit-log/route_client-reference-manifest.js +1 -1
  128. package/app/.next/server/app/api/db-backups/route_client-reference-manifest.js +1 -1
  129. package/app/.next/server/app/api/evals/[suiteId]/route.js +1 -1
  130. package/app/.next/server/app/api/evals/[suiteId]/route.js.nft.json +1 -1
  131. package/app/.next/server/app/api/evals/[suiteId]/route_client-reference-manifest.js +1 -1
  132. package/app/.next/server/app/api/evals/route.js +1 -1
  133. package/app/.next/server/app/api/evals/route.js.nft.json +1 -1
  134. package/app/.next/server/app/api/evals/route_client-reference-manifest.js +1 -1
  135. package/app/.next/server/app/api/fallback/chains/route.js +2 -2
  136. package/app/.next/server/app/api/fallback/chains/route_client-reference-manifest.js +1 -1
  137. package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  138. package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
  139. package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
  140. package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
  141. package/app/.next/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
  142. package/app/.next/server/app/api/models/catalog/route_client-reference-manifest.js +1 -1
  143. package/app/.next/server/app/api/models/route.js +1 -1
  144. package/app/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  145. package/app/.next/server/app/api/monitoring/health/route.js +2 -2
  146. package/app/.next/server/app/api/monitoring/health/route_client-reference-manifest.js +1 -1
  147. package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
  148. package/app/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
  149. package/app/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
  150. package/app/.next/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
  151. package/app/.next/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
  152. package/app/.next/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
  153. package/app/.next/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
  154. package/app/.next/server/app/api/policies/route.js +2 -2
  155. package/app/.next/server/app/api/policies/route_client-reference-manifest.js +1 -1
  156. package/app/.next/server/app/api/pricing/defaults/route_client-reference-manifest.js +1 -1
  157. package/app/.next/server/app/api/pricing/models/route_client-reference-manifest.js +1 -1
  158. package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  159. package/app/.next/server/app/api/provider-metrics/route_client-reference-manifest.js +1 -1
  160. package/app/.next/server/app/api/provider-models/route_client-reference-manifest.js +1 -1
  161. package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
  162. package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
  163. package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
  164. package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
  165. package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
  166. package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
  167. package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
  168. package/app/.next/server/app/api/providers/route.js +1 -1
  169. package/app/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
  170. package/app/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
  171. package/app/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
  172. package/app/.next/server/app/api/rate-limit/route_client-reference-manifest.js +1 -1
  173. package/app/.next/server/app/api/rate-limits/route_client-reference-manifest.js +1 -1
  174. package/app/.next/server/app/api/resilience/reset/route_client-reference-manifest.js +1 -1
  175. package/app/.next/server/app/api/resilience/route.js +1 -1
  176. package/app/.next/server/app/api/resilience/route_client-reference-manifest.js +1 -1
  177. package/app/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  178. package/app/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  179. package/app/.next/server/app/api/settings/combo-defaults/route_client-reference-manifest.js +1 -1
  180. package/app/.next/server/app/api/settings/ip-filter/route_client-reference-manifest.js +1 -1
  181. package/app/.next/server/app/api/settings/proxy/route_client-reference-manifest.js +1 -1
  182. package/app/.next/server/app/api/settings/proxy/test/route_client-reference-manifest.js +1 -1
  183. package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
  184. package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  185. package/app/.next/server/app/api/settings/system-prompt/route_client-reference-manifest.js +1 -1
  186. package/app/.next/server/app/api/settings/thinking-budget/route_client-reference-manifest.js +1 -1
  187. package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  188. package/app/.next/server/app/api/storage/health/route_client-reference-manifest.js +1 -1
  189. package/app/.next/server/app/api/sync/cloud/route_client-reference-manifest.js +1 -1
  190. package/app/.next/server/app/api/sync/initialize/route_client-reference-manifest.js +1 -1
  191. package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
  192. package/app/.next/server/app/api/telemetry/summary/route_client-reference-manifest.js +1 -1
  193. package/app/.next/server/app/api/token-health/route_client-reference-manifest.js +1 -1
  194. package/app/.next/server/app/api/translator/detect/route_client-reference-manifest.js +1 -1
  195. package/app/.next/server/app/api/translator/history/route_client-reference-manifest.js +1 -1
  196. package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
  197. package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
  198. package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
  199. package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
  200. package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
  201. package/app/.next/server/app/api/usage/analytics/route_client-reference-manifest.js +1 -1
  202. package/app/.next/server/app/api/usage/budget/route.js +2 -2
  203. package/app/.next/server/app/api/usage/budget/route_client-reference-manifest.js +1 -1
  204. package/app/.next/server/app/api/usage/call-logs/[id]/route_client-reference-manifest.js +1 -1
  205. package/app/.next/server/app/api/usage/call-logs/route_client-reference-manifest.js +1 -1
  206. package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
  207. package/app/.next/server/app/api/usage/logs/route_client-reference-manifest.js +1 -1
  208. package/app/.next/server/app/api/usage/proxy-logs/route_client-reference-manifest.js +1 -1
  209. package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
  210. package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
  211. package/app/.next/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
  212. package/app/.next/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
  213. package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
  214. package/app/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
  215. package/app/.next/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
  216. package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
  217. package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
  218. package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
  219. package/app/.next/server/app/api/v1/moderations/route_client-reference-manifest.js +1 -1
  220. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route_client-reference-manifest.js +1 -1
  221. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route_client-reference-manifest.js +1 -1
  222. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route_client-reference-manifest.js +1 -1
  223. package/app/.next/server/app/api/v1/rerank/route_client-reference-manifest.js +1 -1
  224. package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
  225. package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
  226. package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
  227. package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
  228. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  229. package/app/.next/server/app/callback.html +1 -1
  230. package/app/.next/server/app/callback.rsc +3 -3
  231. package/app/.next/server/app/callback.segments/_full.segment.rsc +3 -3
  232. package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
  233. package/app/.next/server/app/callback.segments/_index.segment.rsc +3 -3
  234. package/app/.next/server/app/callback.segments/_tree.segment.rsc +2 -2
  235. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  236. package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
  237. package/app/.next/server/app/dashboard/analytics.html +1 -1
  238. package/app/.next/server/app/dashboard/analytics.rsc +5 -5
  239. package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics/__PAGE__.segment.rsc +2 -2
  240. package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics.segment.rsc +1 -1
  241. package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  242. package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  243. package/app/.next/server/app/dashboard/analytics.segments/_full.segment.rsc +5 -5
  244. package/app/.next/server/app/dashboard/analytics.segments/_head.segment.rsc +1 -1
  245. package/app/.next/server/app/dashboard/analytics.segments/_index.segment.rsc +3 -3
  246. package/app/.next/server/app/dashboard/analytics.segments/_tree.segment.rsc +2 -2
  247. package/app/.next/server/app/dashboard/cli-tools.html +1 -1
  248. package/app/.next/server/app/dashboard/cli-tools.rsc +5 -5
  249. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  250. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  251. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  252. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  253. package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
  254. package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  255. package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
  256. package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  257. package/app/.next/server/app/dashboard/combos.html +1 -1
  258. package/app/.next/server/app/dashboard/combos.rsc +5 -5
  259. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  260. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  261. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  262. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  263. package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
  264. package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  265. package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
  266. package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  267. package/app/.next/server/app/dashboard/costs.html +1 -1
  268. package/app/.next/server/app/dashboard/costs.rsc +5 -5
  269. package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk/dashboard/costs/__PAGE__.segment.rsc +2 -2
  270. package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk/dashboard/costs.segment.rsc +1 -1
  271. package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  272. package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  273. package/app/.next/server/app/dashboard/costs.segments/_full.segment.rsc +5 -5
  274. package/app/.next/server/app/dashboard/costs.segments/_head.segment.rsc +1 -1
  275. package/app/.next/server/app/dashboard/costs.segments/_index.segment.rsc +3 -3
  276. package/app/.next/server/app/dashboard/costs.segments/_tree.segment.rsc +2 -2
  277. package/app/.next/server/app/dashboard/endpoint.html +1 -1
  278. package/app/.next/server/app/dashboard/endpoint.rsc +5 -5
  279. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  280. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  281. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  282. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  283. package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
  284. package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  285. package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
  286. package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  287. package/app/.next/server/app/dashboard/health.html +1 -1
  288. package/app/.next/server/app/dashboard/health.rsc +5 -5
  289. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard/health/__PAGE__.segment.rsc +2 -2
  290. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard/health.segment.rsc +1 -1
  291. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  292. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  293. package/app/.next/server/app/dashboard/health.segments/_full.segment.rsc +5 -5
  294. package/app/.next/server/app/dashboard/health.segments/_head.segment.rsc +1 -1
  295. package/app/.next/server/app/dashboard/health.segments/_index.segment.rsc +3 -3
  296. package/app/.next/server/app/dashboard/health.segments/_tree.segment.rsc +2 -2
  297. package/app/.next/server/app/dashboard/limits.html +2 -0
  298. package/app/.next/server/app/dashboard/limits.meta +17 -0
  299. package/app/.next/server/app/dashboard/limits.rsc +24 -0
  300. package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk/dashboard/limits/__PAGE__.segment.rsc +9 -0
  301. package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk/dashboard/limits.segment.rsc +4 -0
  302. package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +4 -0
  303. package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -0
  304. package/app/.next/server/app/dashboard/limits.segments/_full.segment.rsc +24 -0
  305. package/app/.next/server/app/dashboard/limits.segments/_head.segment.rsc +6 -0
  306. package/app/.next/server/app/dashboard/limits.segments/_index.segment.rsc +9 -0
  307. package/app/.next/server/app/dashboard/limits.segments/_tree.segment.rsc +5 -0
  308. package/app/.next/server/app/dashboard/onboarding.html +1 -1
  309. package/app/.next/server/app/dashboard/onboarding.rsc +4 -4
  310. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard/onboarding/__PAGE__.segment.rsc +1 -1
  311. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard/onboarding.segment.rsc +1 -1
  312. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  313. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  314. package/app/.next/server/app/dashboard/onboarding.segments/_full.segment.rsc +4 -4
  315. package/app/.next/server/app/dashboard/onboarding.segments/_head.segment.rsc +1 -1
  316. package/app/.next/server/app/dashboard/onboarding.segments/_index.segment.rsc +3 -3
  317. package/app/.next/server/app/dashboard/onboarding.segments/_tree.segment.rsc +2 -2
  318. package/app/.next/server/app/dashboard/profile.html +1 -1
  319. package/app/.next/server/app/dashboard/profile.rsc +4 -4
  320. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +1 -1
  321. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  322. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  323. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  324. package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +4 -4
  325. package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  326. package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
  327. package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  328. package/app/.next/server/app/dashboard/providers/new.html +1 -1
  329. package/app/.next/server/app/dashboard/providers/new.rsc +5 -5
  330. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  331. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  332. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  333. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  334. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  335. package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
  336. package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  337. package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
  338. package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  339. package/app/.next/server/app/dashboard/providers.html +1 -1
  340. package/app/.next/server/app/dashboard/providers.rsc +5 -5
  341. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  342. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  343. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  344. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  345. package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
  346. package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  347. package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
  348. package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  349. package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
  350. package/app/.next/server/app/dashboard/settings/pricing.rsc +4 -4
  351. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  352. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing.segment.rsc +1 -1
  353. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings.segment.rsc +1 -1
  354. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  355. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  356. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  357. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  358. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
  359. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  360. package/app/.next/server/app/dashboard/settings.html +1 -1
  361. package/app/.next/server/app/dashboard/settings.rsc +5 -5
  362. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard/settings/__PAGE__.segment.rsc +2 -2
  363. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard/settings.segment.rsc +1 -1
  364. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  365. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  366. package/app/.next/server/app/dashboard/settings.segments/_full.segment.rsc +5 -5
  367. package/app/.next/server/app/dashboard/settings.segments/_head.segment.rsc +1 -1
  368. package/app/.next/server/app/dashboard/settings.segments/_index.segment.rsc +3 -3
  369. package/app/.next/server/app/dashboard/settings.segments/_tree.segment.rsc +2 -2
  370. package/app/.next/server/app/dashboard/translator.html +2 -2
  371. package/app/.next/server/app/dashboard/translator.rsc +5 -5
  372. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  373. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  374. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  375. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  376. package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
  377. package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  378. package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
  379. package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  380. package/app/.next/server/app/dashboard/usage.html +1 -1
  381. package/app/.next/server/app/dashboard/usage.rsc +5 -5
  382. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  383. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  384. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  385. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  386. package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
  387. package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  388. package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
  389. package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  390. package/app/.next/server/app/docs/page.js +1 -1
  391. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  392. package/app/.next/server/app/docs.html +1 -1
  393. package/app/.next/server/app/docs.rsc +3 -3
  394. package/app/.next/server/app/docs.segments/_full.segment.rsc +3 -3
  395. package/app/.next/server/app/docs.segments/_head.segment.rsc +1 -1
  396. package/app/.next/server/app/docs.segments/_index.segment.rsc +3 -3
  397. package/app/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
  398. package/app/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +1 -1
  399. package/app/.next/server/app/docs.segments/docs.segment.rsc +1 -1
  400. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
  401. package/app/.next/server/app/forbidden.html +1 -1
  402. package/app/.next/server/app/forbidden.rsc +3 -3
  403. package/app/.next/server/app/forbidden.segments/_full.segment.rsc +3 -3
  404. package/app/.next/server/app/forbidden.segments/_head.segment.rsc +1 -1
  405. package/app/.next/server/app/forbidden.segments/_index.segment.rsc +3 -3
  406. package/app/.next/server/app/forbidden.segments/_tree.segment.rsc +2 -2
  407. package/app/.next/server/app/forbidden.segments/forbidden/__PAGE__.segment.rsc +1 -1
  408. package/app/.next/server/app/forbidden.segments/forbidden.segment.rsc +1 -1
  409. package/app/.next/server/app/forgot-password/page.js +1 -1
  410. package/app/.next/server/app/forgot-password/page.js.nft.json +1 -1
  411. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  412. package/app/.next/server/app/forgot-password.html +1 -1
  413. package/app/.next/server/app/forgot-password.rsc +4 -4
  414. package/app/.next/server/app/forgot-password.segments/_full.segment.rsc +4 -4
  415. package/app/.next/server/app/forgot-password.segments/_head.segment.rsc +1 -1
  416. package/app/.next/server/app/forgot-password.segments/_index.segment.rsc +3 -3
  417. package/app/.next/server/app/forgot-password.segments/_tree.segment.rsc +2 -2
  418. package/app/.next/server/app/forgot-password.segments/forgot-password/__PAGE__.segment.rsc +2 -2
  419. package/app/.next/server/app/forgot-password.segments/forgot-password.segment.rsc +1 -1
  420. package/app/.next/server/app/index.html +1 -1
  421. package/app/.next/server/app/index.rsc +3 -3
  422. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  423. package/app/.next/server/app/index.segments/_full.segment.rsc +3 -3
  424. package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
  425. package/app/.next/server/app/index.segments/_index.segment.rsc +3 -3
  426. package/app/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  427. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  428. package/app/.next/server/app/landing.html +1 -1
  429. package/app/.next/server/app/landing.rsc +3 -3
  430. package/app/.next/server/app/landing.segments/_full.segment.rsc +3 -3
  431. package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
  432. package/app/.next/server/app/landing.segments/_index.segment.rsc +3 -3
  433. package/app/.next/server/app/landing.segments/_tree.segment.rsc +2 -2
  434. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  435. package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
  436. package/app/.next/server/app/login/page.js +1 -1
  437. package/app/.next/server/app/login/page.js.nft.json +1 -1
  438. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  439. package/app/.next/server/app/login.html +1 -1
  440. package/app/.next/server/app/login.rsc +4 -4
  441. package/app/.next/server/app/login.segments/_full.segment.rsc +4 -4
  442. package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
  443. package/app/.next/server/app/login.segments/_index.segment.rsc +3 -3
  444. package/app/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  445. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  446. package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
  447. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  448. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  449. package/app/.next/server/app/privacy.html +1 -1
  450. package/app/.next/server/app/privacy.rsc +3 -3
  451. package/app/.next/server/app/privacy.segments/_full.segment.rsc +3 -3
  452. package/app/.next/server/app/privacy.segments/_head.segment.rsc +1 -1
  453. package/app/.next/server/app/privacy.segments/_index.segment.rsc +3 -3
  454. package/app/.next/server/app/privacy.segments/_tree.segment.rsc +2 -2
  455. package/app/.next/server/app/privacy.segments/privacy/__PAGE__.segment.rsc +1 -1
  456. package/app/.next/server/app/privacy.segments/privacy.segment.rsc +1 -1
  457. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  458. package/app/.next/server/app/terms.html +1 -1
  459. package/app/.next/server/app/terms.rsc +3 -3
  460. package/app/.next/server/app/terms.segments/_full.segment.rsc +3 -3
  461. package/app/.next/server/app/terms.segments/_head.segment.rsc +1 -1
  462. package/app/.next/server/app/terms.segments/_index.segment.rsc +3 -3
  463. package/app/.next/server/app/terms.segments/_tree.segment.rsc +2 -2
  464. package/app/.next/server/app/terms.segments/terms/__PAGE__.segment.rsc +1 -1
  465. package/app/.next/server/app/terms.segments/terms.segment.rsc +1 -1
  466. package/app/.next/server/app-paths-manifest.json +25 -24
  467. package/app/.next/server/chunks/1020.js +1 -1
  468. package/app/.next/server/chunks/239.js +2 -2
  469. package/app/.next/server/chunks/2620.js +2 -2
  470. package/app/.next/server/chunks/4277.js +1 -0
  471. package/app/.next/server/chunks/438.js +1 -0
  472. package/app/.next/server/chunks/5583.js +1 -1
  473. package/app/.next/server/chunks/7669.js +2 -2
  474. package/app/.next/server/chunks/8369.js +1 -1
  475. package/app/.next/server/chunks/9824.js +1 -1
  476. package/app/.next/server/pages/404.html +1 -1
  477. package/app/.next/server/pages/500.html +2 -2
  478. package/app/.next/server/server-reference-manifest.js +1 -1
  479. package/app/.next/server/server-reference-manifest.json +1 -1
  480. package/app/.next/static/8ACUE6hz9uxBNe_Q_ZH6y/_buildManifest.js +1 -0
  481. package/app/.next/static/chunks/1149-fefe7f95f0e9842f.js +1 -0
  482. package/app/.next/static/chunks/{5846-2708fad522c4092b.js → 5846-0541241939d8c7e3.js} +1 -1
  483. package/app/.next/static/chunks/{993-6be0cd05a02eb09b.js → 993-b74bac8c882e8d1a.js} +2 -2
  484. package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/page-74ac2092c2a6b3dc.js +1 -0
  485. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-918d5f38d5cdbbc2.js +15 -0
  486. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/{page-2cf4a7b419667452.js → page-421e732016c49ee4.js} +1 -1
  487. package/app/.next/static/chunks/app/(dashboard)/dashboard/costs/{page-6913ad5d715dcc3f.js → page-9495b294cfe54d73.js} +1 -1
  488. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/{page-a446f6fd8dc64f29.js → page-623e54048b5d4f69.js} +1 -1
  489. package/app/.next/static/chunks/app/(dashboard)/dashboard/health/page-58ea3e55f475ea7b.js +1 -0
  490. package/app/.next/static/chunks/app/(dashboard)/dashboard/{usage/page-8e19076a0d9227ca.js → limits/page-3b7083be8adedc57.js} +1 -1
  491. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-3c840eaf6d7cd77d.js +1 -0
  492. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-26ec85a0bf8624f2.js +1 -0
  493. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/{page-521cffebf9da74b1.js → page-200bed170f9ee2b0.js} +1 -1
  494. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/{page-627628d3588d56d0.js → page-98c6b97d0c195a2c.js} +1 -1
  495. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-038687bc5d2c3bb5.js +1 -0
  496. package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/{page-c3cbea97c4f3a3b3.js → page-efca884c20a509a4.js} +1 -1
  497. package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-51a813eac9d71eed.js +1 -0
  498. package/app/.next/static/chunks/app/(dashboard)/{layout-c498dd9c790d0115.js → layout-cf710bbfb7c3ba11.js} +1 -1
  499. package/app/.next/static/chunks/app/forgot-password/{page-3682163d66078655.js → page-373672767bb0aae4.js} +1 -1
  500. package/app/.next/static/chunks/app/login/{page-319adaa570f7cef2.js → page-8a9aa887783f2370.js} +1 -1
  501. package/app/.next/static/css/1c99dc691f001331.css +1 -0
  502. package/app/package.json +1 -1
  503. package/app/public/providers/ironclaw.png +0 -0
  504. package/app/public/providers/nanobot.png +0 -0
  505. package/app/public/providers/opencode.svg +18 -0
  506. package/app/public/providers/picoclaw.jpg +0 -0
  507. package/app/public/providers/zeroclaw.png +0 -0
  508. package/package.json +1 -1
  509. package/app/.next/server/chunks/2951.js +0 -1
  510. package/app/.next/static/4zh9cgkOJsay7eUxfk-tb/_buildManifest.js +0 -1
  511. package/app/.next/static/chunks/7013-718042994c9127fa.js +0 -1
  512. package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/page-a7a7e3485f278504.js +0 -1
  513. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-1c6897612e762e03.js +0 -15
  514. package/app/.next/static/chunks/app/(dashboard)/dashboard/health/page-d3f501b59334c3d5.js +0 -1
  515. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-7312e2dd8b5feff0.js +0 -1
  516. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-a9c594cf56c3465e.js +0 -1
  517. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-ae5e43ea2a576094.js +0 -1
  518. package/app/.next/static/css/c08bd521c418658c.css +0 -1
  519. /package/app/.next/static/{4zh9cgkOJsay7eUxfk-tb → 8ACUE6hz9uxBNe_Q_ZH6y}/_ssgManifest.js +0 -0
@@ -0,0 +1,995 @@
1
+ <div align="center">
2
+ <img src="./images/omniroute.png" alt="OmniRoute Dashboard" width="800"/>
3
+
4
+ # 🚀 OmniRoute — O Gateway de IA Gratuito
5
+
6
+ ### Nunca pare de programar. Roteamento inteligente para **modelos de IA GRATUITOS e baratos** com fallback automático.
7
+
8
+ _Seu proxy de API universal — um endpoint, 36+ provedores, zero tempo de inatividade._
9
+
10
+ **Chat Completions • Embeddings • Geração de Imagem • Áudio • Reranking • 100% TypeScript**
11
+
12
+ ---
13
+
14
+ ### 🤖 Provedor de IA Gratuito para seus agentes de programação favoritos
15
+
16
+ _Conecte qualquer IDE ou ferramenta CLI com IA através do OmniRoute — gateway de API gratuito para programação ilimitada._
17
+
18
+ <table>
19
+ <tr>
20
+ <td align="center" width="110">
21
+ <a href="https://github.com/cline/cline">
22
+ <img src="./public/providers/openclaw.png" alt="OpenClaw" width="48"/><br/>
23
+ <b>OpenClaw</b>
24
+ </a><br/>
25
+ <sub>⭐ 205K</sub>
26
+ </td>
27
+ <td align="center" width="110">
28
+ <a href="https://github.com/HKUDS/nanobot">
29
+ <img src="./public/providers/nanobot.png" alt="NanoBot" width="48"/><br/>
30
+ <b>NanoBot</b>
31
+ </a><br/>
32
+ <sub>⭐ 20.9K</sub>
33
+ </td>
34
+ <td align="center" width="110">
35
+ <a href="https://github.com/sipeed/picoclaw">
36
+ <img src="./public/providers/picoclaw.jpg" alt="PicoClaw" width="48"/><br/>
37
+ <b>PicoClaw</b>
38
+ </a><br/>
39
+ <sub>⭐ 14.6K</sub>
40
+ </td>
41
+ <td align="center" width="110">
42
+ <a href="https://github.com/zeroclaw-labs/zeroclaw">
43
+ <img src="./public/providers/zeroclaw.png" alt="ZeroClaw" width="48"/><br/>
44
+ <b>ZeroClaw</b>
45
+ </a><br/>
46
+ <sub>⭐ 9.9K</sub>
47
+ </td>
48
+ <td align="center" width="110">
49
+ <a href="https://github.com/nearai/ironclaw">
50
+ <img src="./public/providers/ironclaw.png" alt="IronClaw" width="48"/><br/>
51
+ <b>IronClaw</b>
52
+ </a><br/>
53
+ <sub>⭐ 2.1K</sub>
54
+ </td>
55
+ </tr>
56
+ <tr>
57
+ <td align="center" width="110">
58
+ <a href="https://github.com/anomalyco/opencode">
59
+ <img src="./public/providers/opencode.svg" alt="OpenCode" width="48"/><br/>
60
+ <b>OpenCode</b>
61
+ </a><br/>
62
+ <sub>⭐ 106K</sub>
63
+ </td>
64
+ <td align="center" width="110">
65
+ <a href="https://github.com/openai/codex">
66
+ <img src="./public/providers/codex.png" alt="Codex CLI" width="48"/><br/>
67
+ <b>Codex CLI</b>
68
+ </a><br/>
69
+ <sub>⭐ 60.8K</sub>
70
+ </td>
71
+ <td align="center" width="110">
72
+ <a href="https://github.com/anthropics/claude-code">
73
+ <img src="./public/providers/claude.png" alt="Claude Code" width="48"/><br/>
74
+ <b>Claude Code</b>
75
+ </a><br/>
76
+ <sub>⭐ 67.3K</sub>
77
+ </td>
78
+ <td align="center" width="110">
79
+ <a href="https://github.com/google-gemini/gemini-cli">
80
+ <img src="./public/providers/gemini-cli.png" alt="Gemini CLI" width="48"/><br/>
81
+ <b>Gemini CLI</b>
82
+ </a><br/>
83
+ <sub>⭐ 94.7K</sub>
84
+ </td>
85
+ <td align="center" width="110">
86
+ <a href="https://github.com/Kilo-Org/kilocode">
87
+ <img src="./public/providers/kilocode.png" alt="Kilo Code" width="48"/><br/>
88
+ <b>Kilo Code</b>
89
+ </a><br/>
90
+ <sub>⭐ 15.5K</sub>
91
+ </td>
92
+ </tr>
93
+ </table>
94
+
95
+ <sub>📡 Todos os agentes se conectam via <code>http://localhost:20128/v1</code> ou <code>http://cloud.omniroute.online/v1</code> — uma configuração, modelos e cota ilimitados</sub>
96
+
97
+ ---
98
+
99
+ [![npm version](https://img.shields.io/npm/v/omniroute?color=cb3837&logo=npm)](https://www.npmjs.com/package/omniroute)
100
+ [![Docker Hub](https://img.shields.io/docker/v/diegosouzapw/omniroute?label=Docker%20Hub&logo=docker&color=2496ED)](https://hub.docker.com/r/diegosouzapw/omniroute)
101
+ [![License](https://img.shields.io/github/license/diegosouzapw/OmniRoute)](https://github.com/diegosouzapw/OmniRoute/blob/main/LICENSE)
102
+ [![Website](https://img.shields.io/badge/Website-omniroute.online-blue?logo=google-chrome&logoColor=white)](https://omniroute.online)
103
+
104
+ [🌐 Website](https://omniroute.online) • [🚀 Início Rápido](#-início-rápido) • [💡 Funcionalidades](#-funcionalidades-principais) • [📖 Docs](#-documentação) • [💰 Preços](#-preços-resumidos)
105
+
106
+ 🌐 **Disponível em:** [English](README.md) | [Português](README.pt-BR.md) | [Español](README.es.md) | [Русский](README.ru.md) | [中文](README.zh-CN.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Italiano](README.it.md)
107
+
108
+ </div>
109
+
110
+ ---
111
+
112
+ ## 🤔 Por que OmniRoute?
113
+
114
+ **Pare de desperdiçar dinheiro e bater em limites:**
115
+
116
+ - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Cota de assinatura expira sem uso todo mês
117
+ - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Limites de taxa param você no meio da programação
118
+ - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> APIs caras ($20-50/mês por provedor)
119
+ - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Trocar manualmente entre provedores
120
+
121
+ **OmniRoute resolve isso:**
122
+
123
+ - ✅ **Maximize assinaturas** - Rastreie cotas, use tudo antes do reset
124
+ - ✅ **Fallback automático** - Assinatura → API Key → Barato → Gratuito, zero tempo de inatividade
125
+ - ✅ **Multi-conta** - Round-robin entre contas por provedor
126
+ - ✅ **Universal** - Funciona com Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, qualquer ferramenta CLI
127
+
128
+ ---
129
+
130
+ ## 🔄 Como Funciona
131
+
132
+ ```
133
+ ┌─────────────┐
134
+ │ Sua CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...)
135
+ │ Tool │
136
+ └──────┬──────┘
137
+ │ http://localhost:20128/v1
138
+
139
+ ┌─────────────────────────────────────────┐
140
+ │ OmniRoute (Roteador Inteligente) │
141
+ │ • Tradução de formato (OpenAI ↔ Claude) │
142
+ │ • Rastreamento de cota + Embeddings + Imagens │
143
+ │ • Renovação automática de tokens │
144
+ └──────┬──────────────────────────────────┘
145
+
146
+ ├─→ [Tier 1: ASSINATURA] Claude Code, Codex, Gemini CLI
147
+ │ ↓ cota esgotada
148
+ ├─→ [Tier 2: API KEY] DeepSeek, Groq, xAI, Mistral, NVIDIA NIM, etc.
149
+ │ ↓ limite de orçamento
150
+ ├─→ [Tier 3: BARATO] GLM ($0.6/1M), MiniMax ($0.2/1M)
151
+ │ ↓ limite de orçamento
152
+ └─→ [Tier 4: GRATUITO] iFlow, Qwen, Kiro (ilimitado)
153
+
154
+ Resultado: Nunca pare de programar, custo mínimo
155
+ ```
156
+
157
+ ---
158
+
159
+ ## ⚡ Início Rápido
160
+
161
+ **1. Instale globalmente:**
162
+
163
+ ```bash
164
+ npm install -g omniroute
165
+ omniroute
166
+ ```
167
+
168
+ 🎉 Dashboard abre em `http://localhost:20128`
169
+
170
+ | Comando | Descrição |
171
+ | ----------------------- | ------------------------------------- |
172
+ | `omniroute` | Iniciar servidor (porta padrão 20128) |
173
+ | `omniroute --port 3000` | Usar porta personalizada |
174
+ | `omniroute --no-open` | Não abrir navegador automaticamente |
175
+ | `omniroute --help` | Mostrar ajuda |
176
+
177
+ **2. Conecte um provedor GRATUITO:**
178
+
179
+ Dashboard → Provedores → Conectar **Claude Code** ou **Antigravity** → Login OAuth → Pronto!
180
+
181
+ **3. Use na sua ferramenta CLI:**
182
+
183
+ ```
184
+ Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Configurações:
185
+ Endpoint: http://localhost:20128/v1
186
+ API Key: [copie do dashboard]
187
+ Model: if/kimi-k2-thinking
188
+ ```
189
+
190
+ **Pronto!** Comece a programar com modelos de IA GRATUITOS.
191
+
192
+ **Alternativa — rodar a partir do código-fonte:**
193
+
194
+ ```bash
195
+ cp .env.example .env
196
+ npm install
197
+ PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
198
+ ```
199
+
200
+ ---
201
+
202
+ ## 🐳 Docker
203
+
204
+ OmniRoute está disponível como imagem Docker pública no [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
205
+
206
+ **Execução rápida:**
207
+
208
+ ```bash
209
+ docker run -d \
210
+ --name omniroute \
211
+ --restart unless-stopped \
212
+ -p 20128:20128 \
213
+ -v omniroute-data:/app/data \
214
+ diegosouzapw/omniroute:latest
215
+ ```
216
+
217
+ **Com arquivo de ambiente:**
218
+
219
+ ```bash
220
+ # Copie e edite o .env primeiro
221
+ cp .env.example .env
222
+
223
+ docker run -d \
224
+ --name omniroute \
225
+ --restart unless-stopped \
226
+ --env-file .env \
227
+ -p 20128:20128 \
228
+ -v omniroute-data:/app/data \
229
+ diegosouzapw/omniroute:latest
230
+ ```
231
+
232
+ **Usando Docker Compose:**
233
+
234
+ ```bash
235
+ # Perfil base (sem ferramentas CLI)
236
+ docker compose --profile base up -d
237
+
238
+ # Perfil CLI (Claude Code, Codex, OpenClaw integrados)
239
+ docker compose --profile cli up -d
240
+ ```
241
+
242
+ | Imagem | Tag | Tamanho | Descrição |
243
+ | ------------------------ | -------- | ------- | --------------------- |
244
+ | `diegosouzapw/omniroute` | `latest` | ~250MB | Última versão estável |
245
+ | `diegosouzapw/omniroute` | `0.9.0` | ~250MB | Versão atual |
246
+
247
+ ---
248
+
249
+ ## 💰 Preços Resumidos
250
+
251
+ | Tier | Provedor | Custo | Reset de Cota | Melhor Para |
252
+ | ----------------- | ----------------- | ---------------------------- | ----------------- | ----------------------- |
253
+ | **💳 ASSINATURA** | Claude Code (Pro) | $20/mês | 5h + semanal | Já é assinante |
254
+ | | Codex (Plus/Pro) | $20-200/mês | 5h + semanal | Usuários OpenAI |
255
+ | | Gemini CLI | **GRATUITO** | 180K/mês + 1K/dia | Todos! |
256
+ | | GitHub Copilot | $10-19/mês | Mensal | Usuários GitHub |
257
+ | **🔑 API KEY** | NVIDIA NIM | **GRATUITO** (1000 créditos) | Único | Testes gratuitos |
258
+ | | DeepSeek | Por uso | Nenhum | Melhor preço/qualidade |
259
+ | | Groq | Tier gratuito + pago | Limitado | Inferência ultra-rápida |
260
+ | | xAI (Grok) | Por uso | Nenhum | Modelos Grok |
261
+ | | Mistral | Tier gratuito + pago | Limitado | IA Europeia |
262
+ | | OpenRouter | Por uso | Nenhum | 100+ modelos |
263
+ | **💰 BARATO** | GLM-4.7 | $0.6/1M | Diário 10h | Backup econômico |
264
+ | | MiniMax M2.1 | $0.2/1M | Rotativo 5h | Opção mais barata |
265
+ | | Kimi K2 | $9/mês fixo | 10M tokens/mês | Custo previsível |
266
+ | **🆓 GRATUITO** | iFlow | $0 | Ilimitado | 8 modelos gratuitos |
267
+ | | Qwen | $0 | Ilimitado | 3 modelos gratuitos |
268
+ | | Kiro | $0 | Ilimitado | Claude gratuito |
269
+
270
+ **💡 Dica Pro:** Comece com Gemini CLI (180K grátis/mês) + iFlow (ilimitado grátis) = $0 de custo!
271
+
272
+ ---
273
+
274
+ ## 🎯 Casos de Uso
275
+
276
+ ### Caso 1: "Tenho assinatura Claude Pro"
277
+
278
+ **Problema:** Cota expira sem uso, limites de taxa durante programação intensa
279
+
280
+ ```
281
+ Combo: "maximize-claude"
282
+ 1. cc/claude-opus-4-6 (usar assinatura ao máximo)
283
+ 2. glm/glm-4.7 (backup barato quando a cota acabar)
284
+ 3. if/kimi-k2-thinking (fallback de emergência gratuito)
285
+
286
+ Custo mensal: $20 (assinatura) + ~$5 (backup) = $25 total
287
+ vs. $20 + bater em limites = frustração
288
+ ```
289
+
290
+ ### Caso 2: "Quero custo zero"
291
+
292
+ **Problema:** Não pode pagar assinaturas, precisa de IA confiável para programar
293
+
294
+ ```
295
+ Combo: "free-forever"
296
+ 1. gc/gemini-3-flash (180K grátis/mês)
297
+ 2. if/kimi-k2-thinking (ilimitado grátis)
298
+ 3. qw/qwen3-coder-plus (ilimitado grátis)
299
+
300
+ Custo mensal: $0
301
+ Qualidade: Modelos prontos para produção
302
+ ```
303
+
304
+ ### Caso 3: "Preciso programar 24/7, sem interrupções"
305
+
306
+ **Problema:** Prazos apertados, não pode ter tempo de inatividade
307
+
308
+ ```
309
+ Combo: "always-on"
310
+ 1. cc/claude-opus-4-6 (melhor qualidade)
311
+ 2. cx/gpt-5.2-codex (segunda assinatura)
312
+ 3. glm/glm-4.7 (barato, reset diário)
313
+ 4. minimax/MiniMax-M2.1 (mais barato, reset 5h)
314
+ 5. if/kimi-k2-thinking (gratuito ilimitado)
315
+
316
+ Resultado: 5 camadas de fallback = zero tempo de inatividade
317
+ ```
318
+
319
+ ### Caso 4: "Quero IA GRATUITA no OpenClaw"
320
+
321
+ **Problema:** Precisa de assistente de IA em aplicativos de mensagens, completamente gratuito
322
+
323
+ ```
324
+ Combo: "openclaw-free"
325
+ 1. if/glm-4.7 (ilimitado grátis)
326
+ 2. if/minimax-m2.1 (ilimitado grátis)
327
+ 3. if/kimi-k2-thinking (ilimitado grátis)
328
+
329
+ Custo mensal: $0
330
+ Acesso via: WhatsApp, Telegram, Slack, Discord, iMessage, Signal...
331
+ ```
332
+
333
+ ---
334
+
335
+ ## 💡 Funcionalidades Principais
336
+
337
+ ### 🧠 Roteamento e Inteligência
338
+
339
+ | Funcionalidade | O que Faz |
340
+ | ----------------------------------------- | ------------------------------------------------------------------------------- |
341
+ | 🎯 **Fallback Inteligente 4 Tiers** | Auto-roteamento: Assinatura → API Key → Barato → Gratuito |
342
+ | 📊 **Rastreamento de Cota em Tempo Real** | Contagem de tokens ao vivo + countdown de reset por provedor |
343
+ | 🔄 **Tradução de Formato** | OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro transparente |
344
+ | 👥 **Suporte Multi-Conta** | Múltiplas contas por provedor com seleção inteligente |
345
+ | 🔄 **Renovação Automática de Token** | Tokens OAuth renovam automaticamente com retry |
346
+ | 🎨 **Combos Personalizados** | 6 estratégias: fill-first, round-robin, p2c, random, least-used, cost-optimized |
347
+ | 🧩 **Modelos Personalizados** | Adicione qualquer ID de modelo a qualquer provedor |
348
+ | 🌐 **Roteador Wildcard** | Roteie padrões `provider/*` para qualquer provedor dinamicamente |
349
+ | 🧠 **Budget de Raciocínio** | Modos passthrough, auto, custom e adaptativo para modelos de raciocínio |
350
+ | 💬 **Injeção de System Prompt** | System prompt global aplicado em todas as requisições |
351
+ | 📄 **API Responses** | Suporte completo à API Responses da OpenAI (`/v1/responses`) para Codex |
352
+
353
+ ### 🎵 APIs Multi-Modal
354
+
355
+ | Funcionalidade | O que Faz |
356
+ | --------------------------- | ---------------------------------------------------- |
357
+ | 🖼️ **Geração de Imagem** | `/v1/images/generations` — 4 provedores, 9+ modelos |
358
+ | 📐 **Embeddings** | `/v1/embeddings` — 6 provedores, 9+ modelos |
359
+ | 🎤 **Transcrição de Áudio** | `/v1/audio/transcriptions` — Compatível com Whisper |
360
+ | 🔊 **Texto para Fala** | `/v1/audio/speech` — Síntese de áudio multi-provedor |
361
+ | 🛡️ **Moderações** | `/v1/moderations` — Verificações de segurança |
362
+ | 🔀 **Reranking** | `/v1/rerank` — Reranking de relevância de documentos |
363
+
364
+ ### 🛡️ Resiliência e Segurança
365
+
366
+ | Funcionalidade | O que Faz |
367
+ | ---------------------------------- | --------------------------------------------------------------------- |
368
+ | 🔌 **Circuit Breaker** | Auto-abertura/fechamento por provedor com limites configuráveis |
369
+ | 🛡️ **Anti-Thundering Herd** | Mutex + semáforo rate-limit para provedores com API key |
370
+ | 🧠 **Cache Semântico** | Cache de duas camadas (assinatura + semântico) reduz custo e latência |
371
+ | ⚡ **Idempotência de Requisição** | Janela de dedup de 5s para requisições duplicadas |
372
+ | 🔒 **Spoofing de Fingerprint TLS** | Bypass de detecção de bot via TLS com wreq-js |
373
+ | 🌐 **Filtragem de IP** | Allowlist/blocklist para controle de acesso à API |
374
+ | 📊 **Rate Limits Editáveis** | RPM, gap mínimo e concorrência máxima configuráveis |
375
+
376
+ ### 📊 Observabilidade e Analytics
377
+
378
+ | Funcionalidade | O que Faz |
379
+ | -------------------------------- | --------------------------------------------------------------------- |
380
+ | 📝 **Logs de Requisição** | Modo debug com logs completos de request/response |
381
+ | 💾 **Logs SQLite** | Logs de proxy persistentes sobrevivem a reinicializações |
382
+ | 📊 **Dashboard de Analytics** | Recharts: cards de estatísticas, gráfico de uso, tabela de provedores |
383
+ | 📈 **Rastreamento de Progresso** | Eventos de progresso SSE opt-in para streaming |
384
+ | 🧪 **Avaliações de LLM** | Testes com conjunto golden e 4 estratégias de match |
385
+ | 🔍 **Telemetria de Requisição** | Agregação de latência p50/p95/p99 + rastreamento X-Request-Id |
386
+ | 📋 **Logs + Cotas** | Páginas dedicadas para navegação de logs e rastreamento de cotas |
387
+ | 🏥 **Dashboard de Saúde** | Uptime, estados de circuit breaker, lockouts, stats de cache |
388
+ | 💰 **Rastreamento de Custo** | Gestão de orçamento + configuração de preços por modelo |
389
+
390
+ ### ☁️ Deploy e Sincronização
391
+
392
+ | Funcionalidade | O que Faz |
393
+ | --------------------------------- | -------------------------------------------------------------------------------- |
394
+ | 💾 **Cloud Sync** | Sincronize configurações entre dispositivos via Cloudflare Workers |
395
+ | 🌐 **Deploy em Qualquer Lugar** | Localhost, VPS, Docker, Cloudflare Workers |
396
+ | 🔑 **Gestão de API Keys** | Gere, rotacione e defina escopo de API keys por provedor |
397
+ | 🧙 **Assistente de Configuração** | Setup guiado em 4 etapas para novos usuários |
398
+ | 🔧 **Dashboard CLI Tools** | Configuração em um clique para Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
399
+ | 🔄 **Backups de DB** | Backup e restauração automáticos de todas as configurações |
400
+
401
+ <details>
402
+ <summary><b>📖 Detalhes das Funcionalidades</b></summary>
403
+
404
+ ### 🎯 Fallback Inteligente 4 Tiers
405
+
406
+ Crie combos com fallback automático:
407
+
408
+ ```
409
+ Combo: "my-coding-stack"
410
+ 1. cc/claude-opus-4-6 (sua assinatura)
411
+ 2. nvidia/llama-3.3-70b (API NVIDIA gratuita)
412
+ 3. glm/glm-4.7 (backup barato, $0.6/1M)
413
+ 4. if/kimi-k2-thinking (fallback gratuito)
414
+
415
+ → Troca automaticamente quando a cota acaba ou erros ocorrem
416
+ ```
417
+
418
+ ### 📊 Rastreamento de Cota em Tempo Real
419
+
420
+ - Consumo de tokens por provedor
421
+ - Countdown de reset (5 horas, diário, semanal)
422
+ - Estimativa de custo para tiers pagos
423
+ - Relatórios de gastos mensais
424
+
425
+ ### 🔄 Tradução de Formato
426
+
427
+ Tradução transparente entre formatos:
428
+
429
+ - **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **OpenAI Responses**
430
+ - Sua ferramenta CLI envia formato OpenAI → OmniRoute traduz → Provedor recebe formato nativo
431
+ - Funciona com qualquer ferramenta que suporte endpoints OpenAI customizados
432
+
433
+ ### 👥 Suporte Multi-Conta
434
+
435
+ - Adicione múltiplas contas por provedor
436
+ - Round-robin automático ou roteamento por prioridade
437
+ - Fallback para próxima conta quando uma atinge a cota
438
+
439
+ ### 🔄 Renovação Automática de Token
440
+
441
+ - Tokens OAuth renovam automaticamente antes de expirar
442
+ - Sem necessidade de re-autenticação manual
443
+ - Experiência transparente em todos os provedores
444
+
445
+ ### 🎨 Combos Personalizados
446
+
447
+ - Crie combinações ilimitadas de modelos
448
+ - 6 estratégias: fill-first, round-robin, power-of-two-choices, random, least-used, cost-optimized
449
+ - Compartilhe combos entre dispositivos com Cloud Sync
450
+
451
+ ### 🏥 Dashboard de Saúde
452
+
453
+ - Status do sistema (uptime, versão, uso de memória)
454
+ - Estados de circuit breaker por provedor (Closed/Open/Half-Open)
455
+ - Status de rate limit e lockouts ativos
456
+ - Estatísticas de cache de assinatura
457
+ - Telemetria de latência (p50/p95/p99) + cache de prompt
458
+ - Reset de saúde com um clique
459
+
460
+ ### 🔧 Playground do Tradutor
461
+
462
+ - Debug, teste e visualize traduções de formato de API
463
+ - Envie requisições e veja como o OmniRoute traduz entre formatos de provedores
464
+ - Inestimável para troubleshooting de problemas de integração
465
+
466
+ ### 💾 Cloud Sync
467
+
468
+ - Sincronize provedores, combos e configurações entre dispositivos
469
+ - Sincronização automática em background
470
+ - Armazenamento criptografado seguro
471
+
472
+ </details>
473
+
474
+ ---
475
+
476
+ ## 📖 Guia de Configuração
477
+
478
+ <details>
479
+ <summary><b>💳 Provedores por Assinatura</b></summary>
480
+
481
+ ### Claude Code (Pro/Max)
482
+
483
+ ```bash
484
+ Dashboard → Provedores → Conectar Claude Code
485
+ → Login OAuth → Renovação automática de token
486
+ → Rastreamento de cota 5h + semanal
487
+
488
+ Modelos:
489
+ cc/claude-opus-4-6
490
+ cc/claude-sonnet-4-5-20250929
491
+ cc/claude-haiku-4-5-20251001
492
+ ```
493
+
494
+ **Dica Pro:** Use Opus para tarefas complexas, Sonnet para velocidade. OmniRoute rastreia cota por modelo!
495
+
496
+ ### OpenAI Codex (Plus/Pro)
497
+
498
+ ```bash
499
+ Dashboard → Provedores → Conectar Codex
500
+ → Login OAuth (porta 1455)
501
+ → Reset 5h + semanal
502
+
503
+ Modelos:
504
+ cx/gpt-5.2-codex
505
+ cx/gpt-5.1-codex-max
506
+ ```
507
+
508
+ ### Gemini CLI (GRATUITO 180K/mês!)
509
+
510
+ ```bash
511
+ Dashboard → Provedores → Conectar Gemini CLI
512
+ → Google OAuth
513
+ → 180K completions/mês + 1K/dia
514
+
515
+ Modelos:
516
+ gc/gemini-3-flash-preview
517
+ gc/gemini-2.5-pro
518
+ ```
519
+
520
+ **Melhor Valor:** Tier gratuito enorme! Use antes dos tiers pagos.
521
+
522
+ ### GitHub Copilot
523
+
524
+ ```bash
525
+ Dashboard → Provedores → Conectar GitHub
526
+ → OAuth via GitHub
527
+ → Reset mensal (1º do mês)
528
+
529
+ Modelos:
530
+ gh/gpt-5
531
+ gh/claude-4.5-sonnet
532
+ gh/gemini-3-pro
533
+ ```
534
+
535
+ </details>
536
+
537
+ <details>
538
+ <summary><b>🔑 Provedores por API Key</b></summary>
539
+
540
+ ### NVIDIA NIM (GRATUITO 1000 créditos!)
541
+
542
+ 1. Cadastre-se: [build.nvidia.com](https://build.nvidia.com)
543
+ 2. Obtenha API key gratuita (1000 créditos de inferência incluídos)
544
+ 3. Dashboard → Adicionar Provedor → NVIDIA NIM:
545
+ - API Key: `nvapi-your-key`
546
+
547
+ **Modelos:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct`, e 50+ mais
548
+
549
+ **Dica Pro:** API compatível com OpenAI — funciona perfeitamente com a tradução de formato do OmniRoute!
550
+
551
+ ### DeepSeek
552
+
553
+ 1. Cadastre-se: [platform.deepseek.com](https://platform.deepseek.com)
554
+ 2. Obtenha API key
555
+ 3. Dashboard → Adicionar Provedor → DeepSeek
556
+
557
+ **Modelos:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
558
+
559
+ ### Groq (Tier Gratuito Disponível!)
560
+
561
+ 1. Cadastre-se: [console.groq.com](https://console.groq.com)
562
+ 2. Obtenha API key (tier gratuito incluído)
563
+ 3. Dashboard → Adicionar Provedor → Groq
564
+
565
+ **Modelos:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
566
+
567
+ **Dica Pro:** Inferência ultra-rápida — melhor para programação em tempo real!
568
+
569
+ ### OpenRouter (100+ Modelos)
570
+
571
+ 1. Cadastre-se: [openrouter.ai](https://openrouter.ai)
572
+ 2. Obtenha API key
573
+ 3. Dashboard → Adicionar Provedor → OpenRouter
574
+
575
+ **Modelos:** Acesse 100+ modelos de todos os principais provedores através de uma única API key.
576
+
577
+ </details>
578
+
579
+ <details>
580
+ <summary><b>💰 Provedores Baratos (Backup)</b></summary>
581
+
582
+ ### GLM-4.7 (Reset diário, $0.6/1M)
583
+
584
+ 1. Cadastre-se: [Zhipu AI](https://open.bigmodel.cn/)
585
+ 2. Obtenha API key do Plano Coding
586
+ 3. Dashboard → Adicionar API Key:
587
+ - Provedor: `glm`
588
+ - API Key: `your-key`
589
+
590
+ **Use:** `glm/glm-4.7`
591
+
592
+ **Dica Pro:** Plano Coding oferece 3× cota a 1/7 do custo! Reset diário 10:00 AM.
593
+
594
+ ### MiniMax M2.1 (Reset 5h, $0.20/1M)
595
+
596
+ 1. Cadastre-se: [MiniMax](https://www.minimax.io/)
597
+ 2. Obtenha API key
598
+ 3. Dashboard → Adicionar API Key
599
+
600
+ **Use:** `minimax/MiniMax-M2.1`
601
+
602
+ **Dica Pro:** Opção mais barata para contexto longo (1M tokens)!
603
+
604
+ ### Kimi K2 ($9/mês fixo)
605
+
606
+ 1. Assine: [Moonshot AI](https://platform.moonshot.ai/)
607
+ 2. Obtenha API key
608
+ 3. Dashboard → Adicionar API Key
609
+
610
+ **Use:** `kimi/kimi-latest`
611
+
612
+ **Dica Pro:** $9/mês fixo por 10M tokens = $0.90/1M de custo efetivo!
613
+
614
+ </details>
615
+
616
+ <details>
617
+ <summary><b>🆓 Provedores GRATUITOS (Backup de Emergência)</b></summary>
618
+
619
+ ### iFlow (8 modelos GRATUITOS)
620
+
621
+ ```bash
622
+ Dashboard → Conectar iFlow
623
+ → Login OAuth iFlow
624
+ → Uso ilimitado
625
+
626
+ Modelos:
627
+ if/kimi-k2-thinking
628
+ if/qwen3-coder-plus
629
+ if/glm-4.7
630
+ if/minimax-m2
631
+ if/deepseek-r1
632
+ ```
633
+
634
+ ### Qwen (3 modelos GRATUITOS)
635
+
636
+ ```bash
637
+ Dashboard → Conectar Qwen
638
+ → Autorização por código de dispositivo
639
+ → Uso ilimitado
640
+
641
+ Modelos:
642
+ qw/qwen3-coder-plus
643
+ qw/qwen3-coder-flash
644
+ ```
645
+
646
+ ### Kiro (Claude GRATUITO)
647
+
648
+ ```bash
649
+ Dashboard → Conectar Kiro
650
+ → AWS Builder ID ou Google/GitHub
651
+ → Uso ilimitado
652
+
653
+ Modelos:
654
+ kr/claude-sonnet-4.5
655
+ kr/claude-haiku-4.5
656
+ ```
657
+
658
+ </details>
659
+
660
+ <details>
661
+ <summary><b>🎨 Criar Combos</b></summary>
662
+
663
+ ### Exemplo 1: Maximizar Assinatura → Backup Barato
664
+
665
+ ```
666
+ Dashboard → Combos → Criar Novo
667
+
668
+ Nome: premium-coding
669
+ Modelos:
670
+ 1. cc/claude-opus-4-6 (Assinatura primária)
671
+ 2. glm/glm-4.7 (Backup barato, $0.6/1M)
672
+ 3. minimax/MiniMax-M2.1 (Fallback mais barato, $0.20/1M)
673
+
674
+ Use na CLI: premium-coding
675
+ ```
676
+
677
+ ### Exemplo 2: Somente Gratuito (Custo Zero)
678
+
679
+ ```
680
+ Nome: free-combo
681
+ Modelos:
682
+ 1. gc/gemini-3-flash-preview (180K grátis/mês)
683
+ 2. if/kimi-k2-thinking (ilimitado)
684
+ 3. qw/qwen3-coder-plus (ilimitado)
685
+
686
+ Custo: $0 para sempre!
687
+ ```
688
+
689
+ </details>
690
+
691
+ <details>
692
+ <summary><b>🔧 Integração CLI</b></summary>
693
+
694
+ ### Cursor IDE
695
+
696
+ ```
697
+ Configurações → Modelos → Avançado:
698
+ OpenAI API Base URL: http://localhost:20128/v1
699
+ OpenAI API Key: [do dashboard OmniRoute]
700
+ Model: cc/claude-opus-4-6
701
+ ```
702
+
703
+ ### Claude Code
704
+
705
+ Use a página **CLI Tools** no dashboard para configuração em um clique, ou edite `~/.claude/settings.json` manualmente.
706
+
707
+ ### Codex CLI
708
+
709
+ ```bash
710
+ export OPENAI_BASE_URL="http://localhost:20128"
711
+ export OPENAI_API_KEY="your-omniroute-api-key"
712
+
713
+ codex "your prompt"
714
+ ```
715
+
716
+ ### OpenClaw
717
+
718
+ **Opção 1 — Dashboard (recomendado):**
719
+
720
+ ```
721
+ Dashboard → CLI Tools → OpenClaw → Selecionar Modelo → Aplicar
722
+ ```
723
+
724
+ **Opção 2 — Manual:** Edite `~/.openclaw/openclaw.json`:
725
+
726
+ ```json
727
+ {
728
+ "models": {
729
+ "providers": {
730
+ "omniroute": {
731
+ "baseUrl": "http://127.0.0.1:20128/v1",
732
+ "apiKey": "sk_omniroute",
733
+ "api": "openai-completions"
734
+ }
735
+ }
736
+ }
737
+ }
738
+ ```
739
+
740
+ > **Nota:** OpenClaw funciona apenas com OmniRoute local. Use `127.0.0.1` em vez de `localhost` para evitar problemas de resolução IPv6.
741
+
742
+ ### Cline / Continue / RooCode
743
+
744
+ ```
745
+ Configurações → Configuração de API:
746
+ Provedor: OpenAI Compatible
747
+ Base URL: http://localhost:20128/v1
748
+ API Key: [do dashboard OmniRoute]
749
+ Model: if/kimi-k2-thinking
750
+ ```
751
+
752
+ </details>
753
+
754
+ ---
755
+
756
+ ## 📊 Modelos Disponíveis
757
+
758
+ <details>
759
+ <summary><b>Ver todos os modelos disponíveis</b></summary>
760
+
761
+ **Claude Code (`cc/`)** - Pro/Max:
762
+
763
+ - `cc/claude-opus-4-6`
764
+ - `cc/claude-sonnet-4-5-20250929`
765
+ - `cc/claude-haiku-4-5-20251001`
766
+
767
+ **Codex (`cx/`)** - Plus/Pro:
768
+
769
+ - `cx/gpt-5.2-codex`
770
+ - `cx/gpt-5.1-codex-max`
771
+
772
+ **Gemini CLI (`gc/`)** - GRATUITO:
773
+
774
+ - `gc/gemini-3-flash-preview`
775
+ - `gc/gemini-2.5-pro`
776
+
777
+ **GitHub Copilot (`gh/`)**:
778
+
779
+ - `gh/gpt-5`
780
+ - `gh/claude-4.5-sonnet`
781
+
782
+ **NVIDIA NIM (`nvidia/`)** - Créditos GRATUITOS:
783
+
784
+ - `nvidia/llama-3.3-70b-instruct`
785
+ - `nvidia/mistral-7b-instruct`
786
+ - 50+ mais modelos em [build.nvidia.com](https://build.nvidia.com)
787
+
788
+ **GLM (`glm/`)** - $0.6/1M:
789
+
790
+ - `glm/glm-4.7`
791
+
792
+ **MiniMax (`minimax/`)** - $0.2/1M:
793
+
794
+ - `minimax/MiniMax-M2.1`
795
+
796
+ **iFlow (`if/`)** - GRATUITO:
797
+
798
+ - `if/kimi-k2-thinking`
799
+ - `if/qwen3-coder-plus`
800
+ - `if/deepseek-r1`
801
+ - `if/glm-4.7`
802
+ - `if/minimax-m2`
803
+
804
+ **Qwen (`qw/`)** - GRATUITO:
805
+
806
+ - `qw/qwen3-coder-plus`
807
+ - `qw/qwen3-coder-flash`
808
+
809
+ **Kiro (`kr/`)** - GRATUITO:
810
+
811
+ - `kr/claude-sonnet-4.5`
812
+ - `kr/claude-haiku-4.5`
813
+
814
+ **OpenRouter (`or/`)** - 100+ modelos:
815
+
816
+ - `or/anthropic/claude-4-sonnet`
817
+ - `or/google/gemini-2.5-pro`
818
+ - Qualquer modelo de [openrouter.ai/models](https://openrouter.ai/models)
819
+
820
+ </details>
821
+
822
+ ---
823
+
824
+ ## 🧪 Avaliações (Evals)
825
+
826
+ OmniRoute inclui um framework de avaliação integrado para testar a qualidade de respostas de LLM contra um conjunto golden. Acesse via **Analytics → Evals** no dashboard.
827
+
828
+ ### Conjunto Golden Integrado
829
+
830
+ O "OmniRoute Golden Set" pré-carregado contém 10 casos de teste cobrindo:
831
+
832
+ - Saudações, matemática, geografia, geração de código
833
+ - Conformidade de formato JSON, tradução, markdown
834
+ - Recusa de segurança (conteúdo prejudicial), contagem, lógica booleana
835
+
836
+ ### Estratégias de Avaliação
837
+
838
+ | Estratégia | Descrição | Exemplo |
839
+ | ---------- | ---------------------------------------------- | -------------------------------- |
840
+ | `exact` | Saída deve corresponder exatamente | `"4"` |
841
+ | `contains` | Saída deve conter substring (case-insensitive) | `"Paris"` |
842
+ | `regex` | Saída deve corresponder ao padrão regex | `"1.*2.*3"` |
843
+ | `custom` | Função JS customizada retorna true/false | `(output) => output.length > 10` |
844
+
845
+ ---
846
+
847
+ ## 🐛 Solução de Problemas
848
+
849
+ <details>
850
+ <summary><b>Clique para expandir o guia de solução de problemas</b></summary>
851
+
852
+ **"Language model did not provide messages"**
853
+
854
+ - Cota do provedor esgotada → Verifique o rastreador de cota no dashboard
855
+ - Solução: Use combo com fallback ou mude para tier mais barato
856
+
857
+ **Rate limiting**
858
+
859
+ - Cota de assinatura esgotada → Fallback para GLM/MiniMax
860
+ - Adicione combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
861
+
862
+ **Token OAuth expirado**
863
+
864
+ - Renovado automaticamente pelo OmniRoute
865
+ - Se persistir: Dashboard → Provedor → Reconectar
866
+
867
+ **Custos altos**
868
+
869
+ - Verifique estatísticas de uso em Dashboard → Custos
870
+ - Mude modelo primário para GLM/MiniMax
871
+ - Use tier gratuito (Gemini CLI, iFlow) para tarefas não-críticas
872
+
873
+ **Dashboard abre na porta errada**
874
+
875
+ - Defina `PORT=20128` e `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
876
+
877
+ **Erros de cloud sync**
878
+
879
+ - Verifique se `BASE_URL` aponta para sua instância em execução
880
+ - Verifique se `CLOUD_URL` aponta para seu endpoint cloud esperado
881
+ - Mantenha valores `NEXT_PUBLIC_*` alinhados com valores do servidor
882
+
883
+ **Primeiro login não funciona**
884
+
885
+ - Verifique `INITIAL_PASSWORD` no `.env`
886
+ - Se não definido, senha padrão é `123456`
887
+
888
+ **Sem logs de requisição**
889
+
890
+ - Defina `ENABLE_REQUEST_LOGS=true` no `.env`
891
+
892
+ **Teste de conexão mostra "Invalid" para provedores compatíveis com OpenAI**
893
+
894
+ - Muitos provedores não expõem endpoint `/models`
895
+ - OmniRoute v0.9.0+ inclui validação via chat completions como fallback
896
+ - Certifique-se de que a base URL inclui sufixo `/v1`
897
+
898
+ </details>
899
+
900
+ ---
901
+
902
+ ## 🛠️ Stack Tecnológico
903
+
904
+ - **Runtime**: Node.js 20+
905
+ - **Linguagem**: TypeScript 5.9 — **100% TypeScript** em `src/` e `open-sse/` (v0.9.0)
906
+ - **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
907
+ - **Banco de Dados**: LowDB (JSON) + SQLite (estado do domínio + logs de proxy)
908
+ - **Streaming**: Server-Sent Events (SSE)
909
+ - **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys
910
+ - **Testes**: Node.js test runner (368+ testes unitários)
911
+ - **CI/CD**: GitHub Actions (publicação automática npm + Docker Hub no release)
912
+ - **Website**: [omniroute.online](https://omniroute.online)
913
+ - **Pacote**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
914
+ - **Docker**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
915
+ - **Resiliência**: Circuit breaker, backoff exponencial, anti-thundering herd, spoofing TLS
916
+
917
+ ---
918
+
919
+ ## 📖 Documentação
920
+
921
+ | Documento | Descrição |
922
+ | ----------------------------------------------- | ------------------------------------------------- |
923
+ | [Guia do Usuário](docs/USER_GUIDE.md) | Provedores, combos, integração CLI, deploy |
924
+ | [Referência da API](docs/API_REFERENCE.md) | Todos os endpoints com exemplos |
925
+ | [Solução de Problemas](docs/TROUBLESHOOTING.md) | Problemas comuns e soluções |
926
+ | [Arquitetura](docs/ARCHITECTURE.md) | Arquitetura do sistema e internos |
927
+ | [Contribuindo](CONTRIBUTING.md) | Setup de desenvolvimento e diretrizes |
928
+ | [Spec OpenAPI](docs/openapi.yaml) | Especificação OpenAPI 3.0 |
929
+ | [Política de Segurança](SECURITY.md) | Reportar vulnerabilidades e práticas de segurança |
930
+
931
+ ---
932
+
933
+ ## 📧 Suporte
934
+
935
+ - **Website**: [omniroute.online](https://omniroute.online)
936
+ - **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
937
+ - **Issues**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
938
+ - **Projeto Original**: [9router por decolua](https://github.com/decolua/9router)
939
+
940
+ ---
941
+
942
+ ## 👥 Contribuidores
943
+
944
+ [![Contributors](https://contrib.rocks/image?repo=diegosouzapw/OmniRoute&max=100&columns=20&anon=1)](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
945
+
946
+ ### Como Contribuir
947
+
948
+ 1. Faça fork do repositório
949
+ 2. Crie sua branch de funcionalidade (`git checkout -b feature/amazing-feature`)
950
+ 3. Faça commit das suas alterações (`git commit -m 'Add amazing feature'`)
951
+ 4. Faça push para a branch (`git push origin feature/amazing-feature`)
952
+ 5. Abra um Pull Request
953
+
954
+ Veja [CONTRIBUTING.md](CONTRIBUTING.md) para diretrizes detalhadas.
955
+
956
+ ### Lançando uma Nova Versão
957
+
958
+ ```bash
959
+ # Crie um release — publicação no npm acontece automaticamente
960
+ gh release create v0.9.0 --title "v0.9.0" --generate-notes
961
+ ```
962
+
963
+ ---
964
+
965
+ ## 📊 Histórico de Stars
966
+
967
+ <a href="https://star-history.com/#diegosouzapw/OmniRoute&Date">
968
+ <picture>
969
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date&theme=dark" />
970
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
971
+ <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
972
+ </picture>
973
+ </a>
974
+
975
+ ---
976
+
977
+ ## 🙏 Agradecimentos
978
+
979
+ Agradecimento especial a **[9router](https://github.com/decolua/9router)** por **[decolua](https://github.com/decolua)** — o projeto original que inspirou este fork. OmniRoute se baseia nessa fundação incrível com funcionalidades adicionais, APIs multi-modal e uma reescrita completa em TypeScript.
980
+
981
+ Agradecimento especial a **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — a implementação original em Go que inspirou esta adaptação em JavaScript.
982
+
983
+ ---
984
+
985
+ ## 📄 Licença
986
+
987
+ Licença MIT - veja [LICENSE](LICENSE) para detalhes.
988
+
989
+ ---
990
+
991
+ <div align="center">
992
+ <sub>Feito com ❤️ para desenvolvedores que programam 24/7</sub>
993
+ <br/>
994
+ <sub><a href="https://omniroute.online">omniroute.online</a></sub>
995
+ </div>