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
package/README.it.md ADDED
@@ -0,0 +1,995 @@
1
+ <div align="center">
2
+ <img src="./images/omniroute.png" alt="OmniRoute Dashboard" width="800"/>
3
+
4
+ # 🚀 OmniRoute — Il Gateway IA Gratuito
5
+
6
+ ### Non smettere mai di programmare. Routing intelligente verso **modelli IA GRATUITI e economici** con fallback automatico.
7
+
8
+ _Il tuo proxy API universale — un endpoint, 36+ provider, zero downtime._
9
+
10
+ **Chat Completions • Embeddings • Generazione Immagini • Audio • Reranking • 100% TypeScript**
11
+
12
+ ---
13
+
14
+ ### 🤖 Provider IA gratuito per i tuoi agenti di programmazione preferiti
15
+
16
+ _Connetti qualsiasi IDE o strumento CLI con IA tramite OmniRoute — gateway API gratuito per programmazione illimitata._
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>📡 Tutti gli agenti si connettono via <code>http://localhost:20128/v1</code> o <code>http://cloud.omniroute.online/v1</code> — una configurazione, modelli e quota illimitati</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
+ [🌐 Sito Web](https://omniroute.online) • [🚀 Avvio Rapido](#-avvio-rapido) • [💡 Funzionalità](#-funzionalità-principali) • [📖 Docs](#-documentazione) • [💰 Prezzi](#-panoramica-prezzi)
105
+
106
+ 🌐 **Disponibile in:** [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
+ ## 🤔 Perché OmniRoute?
113
+
114
+ **Smetti di sprecare soldi e di sbattere contro i limiti:**
115
+
116
+ - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> La quota dell'abbonamento scade inutilizzata ogni mese
117
+ - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> I limiti di rate ti fermano nel mezzo della programmazione
118
+ - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> API costose ($20-50/mese per provider)
119
+ - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Cambio manuale tra provider
120
+
121
+ **OmniRoute risolve tutto questo:**
122
+
123
+ - ✅ **Massimizza gli abbonamenti** — Traccia le quote, usa tutto prima del reset
124
+ - ✅ **Fallback automatico** — Abbonamento → API Key → Economico → Gratuito, zero downtime
125
+ - ✅ **Multi-account** — Round-robin tra account per provider
126
+ - ✅ **Universale** — Funziona con Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, qualsiasi strumento CLI
127
+
128
+ ---
129
+
130
+ ## 🔄 Come Funziona
131
+
132
+ ```
133
+ ┌─────────────┐
134
+ │ Il tuo CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...)
135
+ │ Tool │
136
+ └──────┬──────┘
137
+ │ http://localhost:20128/v1
138
+
139
+ ┌─────────────────────────────────────────┐
140
+ │ OmniRoute (Router Intelligente) │
141
+ │ • Traduzione formato (OpenAI ↔ Claude) │
142
+ │ • Tracciamento quote + Embeddings + Immagini │
143
+ │ • Rinnovo automatico dei token │
144
+ └──────┬──────────────────────────────────┘
145
+
146
+ ├─→ [Tier 1: ABBONAMENTO] Claude Code, Codex, Gemini CLI
147
+ │ ↓ quota esaurita
148
+ ├─→ [Tier 2: API KEY] DeepSeek, Groq, xAI, Mistral, NVIDIA NIM, ecc.
149
+ │ ↓ limite budget
150
+ ├─→ [Tier 3: ECONOMICO] GLM ($0.6/1M), MiniMax ($0.2/1M)
151
+ │ ↓ limite budget
152
+ └─→ [Tier 4: GRATUITO] iFlow, Qwen, Kiro (illimitato)
153
+
154
+ Risultato: Non smettere mai di programmare, costo minimo
155
+ ```
156
+
157
+ ---
158
+
159
+ ## ⚡ Avvio Rapido
160
+
161
+ **1. Installa globalmente:**
162
+
163
+ ```bash
164
+ npm install -g omniroute
165
+ omniroute
166
+ ```
167
+
168
+ 🎉 La Dashboard si apre su `http://localhost:20128`
169
+
170
+ | Comando | Descrizione |
171
+ | ----------------------- | ------------------------------------------- |
172
+ | `omniroute` | Avviare il server (porta predefinita 20128) |
173
+ | `omniroute --port 3000` | Usare una porta personalizzata |
174
+ | `omniroute --no-open` | Non aprire il browser automaticamente |
175
+ | `omniroute --help` | Mostrare l'aiuto |
176
+
177
+ **2. Connetti un provider GRATUITO:**
178
+
179
+ Dashboard → Provider → Connetti **Claude Code** o **Antigravity** → Login OAuth → Fatto!
180
+
181
+ **3. Usa nel tuo strumento CLI:**
182
+
183
+ ```
184
+ Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Impostazioni:
185
+ Endpoint: http://localhost:20128/v1
186
+ API Key: [copia dalla dashboard]
187
+ Model: if/kimi-k2-thinking
188
+ ```
189
+
190
+ **Tutto qui!** Inizia a programmare con modelli IA GRATUITI.
191
+
192
+ **Alternativa — eseguire dal codice sorgente:**
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 è disponibile come immagine Docker pubblica su [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
205
+
206
+ **Avvio rapido:**
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
+ **Con file di ambiente:**
218
+
219
+ ```bash
220
+ # Copia e modifica il .env prima
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
+ **Con Docker Compose:**
233
+
234
+ ```bash
235
+ # Profilo base (senza strumenti CLI)
236
+ docker compose --profile base up -d
237
+
238
+ # Profilo CLI (Claude Code, Codex, OpenClaw integrati)
239
+ docker compose --profile cli up -d
240
+ ```
241
+
242
+ | Immagine | Tag | Dimensione | Descrizione |
243
+ | ------------------------ | -------- | ---------- | ----------------------- |
244
+ | `diegosouzapw/omniroute` | `latest` | ~250MB | Ultima versione stabile |
245
+ | `diegosouzapw/omniroute` | `0.9.0` | ~250MB | Versione attuale |
246
+
247
+ ---
248
+
249
+ ## 💰 Panoramica Prezzi
250
+
251
+ | Tier | Provider | Costo | Reset Quota | Ideale Per |
252
+ | ------------------ | ----------------- | ---------------------------- | --------------------- | ------------------------------- |
253
+ | **💳 ABBONAMENTO** | Claude Code (Pro) | $20/mese | 5h + settimanale | Già abbonato |
254
+ | | Codex (Plus/Pro) | $20-200/mese | 5h + settimanale | Utenti OpenAI |
255
+ | | Gemini CLI | **GRATUITO** | 180K/mese + 1K/giorno | Tutti! |
256
+ | | GitHub Copilot | $10-19/mese | Mensile | Utenti GitHub |
257
+ | **🔑 API KEY** | NVIDIA NIM | **GRATUITO** (1000 crediti) | Una tantum | Test gratuiti |
258
+ | | DeepSeek | A consumo | Nessuno | Miglior rapporto qualità-prezzo |
259
+ | | Groq | Livello gratis + a pagamento | Limitato | Inferenza ultra-veloce |
260
+ | | xAI (Grok) | A consumo | Nessuno | Modelli Grok |
261
+ | | Mistral | Livello gratis + a pagamento | Limitato | IA Europea |
262
+ | | OpenRouter | A consumo | Nessuno | 100+ modelli |
263
+ | **💰 ECONOMICO** | GLM-4.7 | $0.6/1M | Giornaliero 10h | Backup economico |
264
+ | | MiniMax M2.1 | $0.2/1M | Rotativo 5h | Opzione più economica |
265
+ | | Kimi K2 | $9/mese fisso | 10M token/mese | Costo prevedibile |
266
+ | **🆓 GRATUITO** | iFlow | $0 | Illimitato | 8 modelli gratuiti |
267
+ | | Qwen | $0 | Illimitato | 3 modelli gratuiti |
268
+ | | Kiro | $0 | Illimitato | Claude gratuito |
269
+
270
+ **💡 Consiglio Pro:** Inizia con Gemini CLI (180K gratis/mese) + iFlow (illimitato gratis) = $0 di costo!
271
+
272
+ ---
273
+
274
+ ## 🎯 Casi d'Uso
275
+
276
+ ### Caso 1: "Ho un abbonamento Claude Pro"
277
+
278
+ **Problema:** La quota scade inutilizzata, limiti di rate durante la programmazione intensa
279
+
280
+ ```
281
+ Combo: "maximize-claude"
282
+ 1. cc/claude-opus-4-6 (usa l'abbonamento al massimo)
283
+ 2. glm/glm-4.7 (backup economico quando la quota è esaurita)
284
+ 3. if/kimi-k2-thinking (fallback d'emergenza gratuito)
285
+
286
+ Costo mensile: $20 (abbonamento) + ~$5 (backup) = $25 totale
287
+ vs. $20 + sbattere contro i limiti = frustrazione
288
+ ```
289
+
290
+ ### Caso 2: "Voglio costo zero"
291
+
292
+ **Problema:** Non può permettersi abbonamenti, ha bisogno di IA affidabile per programmare
293
+
294
+ ```
295
+ Combo: "free-forever"
296
+ 1. gc/gemini-3-flash (180K gratis/mese)
297
+ 2. if/kimi-k2-thinking (illimitato gratis)
298
+ 3. qw/qwen3-coder-plus (illimitato gratis)
299
+
300
+ Costo mensile: $0
301
+ Qualità: Modelli pronti per la produzione
302
+ ```
303
+
304
+ ### Caso 3: "Devo programmare 24/7, senza interruzioni"
305
+
306
+ **Problema:** Scadenze strette, non può permettersi downtime
307
+
308
+ ```
309
+ Combo: "always-on"
310
+ 1. cc/claude-opus-4-6 (migliore qualità)
311
+ 2. cx/gpt-5.2-codex (secondo abbonamento)
312
+ 3. glm/glm-4.7 (economico, reset giornaliero)
313
+ 4. minimax/MiniMax-M2.1 (più economico, reset 5h)
314
+ 5. if/kimi-k2-thinking (gratuito illimitato)
315
+
316
+ Risultato: 5 livelli di fallback = zero downtime
317
+ ```
318
+
319
+ ### Caso 4: "Voglio IA GRATUITA in OpenClaw"
320
+
321
+ **Problema:** Ha bisogno di assistente IA nelle app di messaggistica, completamente gratuito
322
+
323
+ ```
324
+ Combo: "openclaw-free"
325
+ 1. if/glm-4.7 (illimitato gratis)
326
+ 2. if/minimax-m2.1 (illimitato gratis)
327
+ 3. if/kimi-k2-thinking (illimitato gratis)
328
+
329
+ Costo mensile: $0
330
+ Accesso via: WhatsApp, Telegram, Slack, Discord, iMessage, Signal...
331
+ ```
332
+
333
+ ---
334
+
335
+ ## 💡 Funzionalità Principali
336
+
337
+ ### 🧠 Routing & Intelligenza
338
+
339
+ | Funzionalità | Cosa Fa |
340
+ | ---------------------------------------- | ----------------------------------------------------------------------------- |
341
+ | 🎯 **Fallback intelligente 4 livelli** | Auto-routing: Abbonamento → API Key → Economico → Gratuito |
342
+ | 📊 **Tracciamento quote in tempo reale** | Conteggio token live + countdown reset per provider |
343
+ | 🔄 **Traduzione di formato** | OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro trasparente |
344
+ | 👥 **Supporto multi-account** | Account multipli per provider con selezione intelligente |
345
+ | 🔄 **Rinnovo automatico dei token** | I token OAuth si rinnovano automaticamente con retry |
346
+ | 🎨 **Combo personalizzati** | 6 strategie: fill-first, round-robin, p2c, random, least-used, cost-optimized |
347
+ | 🧩 **Modelli personalizzati** | Aggiungi qualsiasi ID modello a qualsiasi provider |
348
+ | 🌐 **Router wildcard** | Instrada pattern `provider/*` verso qualsiasi provider dinamicamente |
349
+ | 🧠 **Budget di ragionamento** | Modalità passthrough, auto, custom e adaptive per modelli di ragionamento |
350
+ | 💬 **Iniezione System Prompt** | System prompt globale applicato a tutte le richieste |
351
+ | 📄 **API Responses** | Supporto completo per OpenAI Responses API (`/v1/responses`) per Codex |
352
+
353
+ ### 🎵 API Multi-modali
354
+
355
+ | Funzionalità | Cosa Fa |
356
+ | --------------------------- | ---------------------------------------------------- |
357
+ | 🖼️ **Generazione immagini** | `/v1/images/generations` — 4 provider, 9+ modelli |
358
+ | 📐 **Embeddings** | `/v1/embeddings` — 6 provider, 9+ modelli |
359
+ | 🎤 **Trascrizione audio** | `/v1/audio/transcriptions` — Compatibile Whisper |
360
+ | 🔊 **Testo a voce** | `/v1/audio/speech` — Sintesi audio multi-provider |
361
+ | 🛡️ **Moderazioni** | `/v1/moderations` — Controlli di sicurezza |
362
+ | 🔀 **Reranking** | `/v1/rerank` — Riclassificazione rilevanza documenti |
363
+
364
+ ### 🛡️ Resilienza & Sicurezza
365
+
366
+ | Funzionalità | Cosa Fa |
367
+ | ------------------------------- | -------------------------------------------------------------- |
368
+ | 🔌 **Circuit Breaker** | Apertura/chiusura auto per provider con soglie configurabili |
369
+ | 🛡️ **Anti-Thundering Herd** | Mutex + semaforo rate-limit per provider con API key |
370
+ | 🧠 **Cache semantica** | Cache a due livelli (firma + semantica) riduce costi e latenza |
371
+ | ⚡ **Idempotenza richieste** | Finestra dedup 5s per richieste duplicate |
372
+ | 🔒 **Spoofing TLS Fingerprint** | Bypass rilevamento bot tramite wreq-js |
373
+ | 🌐 **Filtro IP** | Allowlist/blocklist per controllo accesso API |
374
+ | 📊 **Rate limit modificabili** | RPM, gap minimo e concorrenza massima configurabili |
375
+
376
+ ### 📊 Osservabilità & Analytics
377
+
378
+ | Funzionalità | Cosa Fa |
379
+ | ----------------------------- | ------------------------------------------------------------ |
380
+ | 📝 **Log richieste** | Modalità debug con log completi richiesta/risposta |
381
+ | 💾 **Log SQLite** | Log proxy persistenti che sopravvivono ai riavvii |
382
+ | 📊 **Dashboard analytics** | Recharts: card statistiche, grafico uso, tabella provider |
383
+ | 📈 **Tracciamento progresso** | Eventi SSE di progresso opt-in per lo streaming |
384
+ | 🧪 **Valutazioni LLM** | Test con golden set e 4 strategie di corrispondenza |
385
+ | 🔍 **Telemetria richieste** | Aggregazione latenza p50/p95/p99 + tracciamento X-Request-Id |
386
+ | 📋 **Log + Quote** | Pagine dedicate per navigazione log e tracciamento quote |
387
+ | 🏥 **Dashboard salute** | Uptime, stati circuit breaker, lockout, statistiche cache |
388
+ | 💰 **Tracciamento costi** | Gestione budget + configurazione prezzi per modello |
389
+
390
+ ### ☁️ Deploy & Sincronizzazione
391
+
392
+ | Funzionalità | Cosa Fa |
393
+ | -------------------------------- | -------------------------------------------------------------------------------- |
394
+ | 💾 **Cloud Sync** | Sincronizza impostazioni tra dispositivi via Cloudflare Workers |
395
+ | 🌐 **Deploy ovunque** | Localhost, VPS, Docker, Cloudflare Workers |
396
+ | 🔑 **Gestione API Key** | Genera, ruota e limita API key per provider |
397
+ | 🧙 **Assistente configurazione** | Setup guidato in 4 passaggi per nuovi utenti |
398
+ | 🔧 **Dashboard CLI Tools** | Configurazione con un clic per Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
399
+ | 🔄 **Backup DB** | Backup e ripristino automatici di tutte le impostazioni |
400
+
401
+ <details>
402
+ <summary><b>📖 Dettagli funzionalità</b></summary>
403
+
404
+ ### 🎯 Fallback intelligente 4 livelli
405
+
406
+ Crea combo con fallback automatico:
407
+
408
+ ```
409
+ Combo: "my-coding-stack"
410
+ 1. cc/claude-opus-4-6 (il tuo abbonamento)
411
+ 2. nvidia/llama-3.3-70b (API NVIDIA gratuita)
412
+ 3. glm/glm-4.7 (backup economico, $0.6/1M)
413
+ 4. if/kimi-k2-thinking (fallback gratuito)
414
+
415
+ → Cambia automaticamente quando la quota si esaurisce o si verificano errori
416
+ ```
417
+
418
+ ### 📊 Tracciamento quote in tempo reale
419
+
420
+ - Consumo token per provider
421
+ - Countdown reset (5 ore, giornaliero, settimanale)
422
+ - Stima dei costi per livelli a pagamento
423
+ - Report spese mensili
424
+
425
+ ### 🔄 Traduzione di formato
426
+
427
+ Traduzione trasparente tra formati:
428
+
429
+ - **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **OpenAI Responses**
430
+ - Il tuo CLI invia in formato OpenAI → OmniRoute traduce → Il provider riceve il formato nativo
431
+ - Funziona con qualsiasi strumento che supporti endpoint OpenAI personalizzati
432
+
433
+ ### 👥 Supporto multi-account
434
+
435
+ - Aggiungi account multipli per provider
436
+ - Round-robin automatico o routing per priorità
437
+ - Fallback all'account successivo quando la quota viene raggiunta
438
+
439
+ ### 🔄 Rinnovo automatico dei token
440
+
441
+ - I token OAuth si rinnovano automaticamente prima della scadenza
442
+ - Nessuna necessità di ri-autenticazione manuale
443
+ - Esperienza trasparente su tutti i provider
444
+
445
+ ### 🎨 Combo personalizzati
446
+
447
+ - Crea combinazioni di modelli illimitate
448
+ - 6 strategie: fill-first, round-robin, power-of-two-choices, random, least-used, cost-optimized
449
+ - Condividi combo tra dispositivi con Cloud Sync
450
+
451
+ ### 🏥 Dashboard salute
452
+
453
+ - Stato del sistema (uptime, versione, utilizzo memoria)
454
+ - Stati circuit breaker per provider (Closed/Open/Half-Open)
455
+ - Stato rate limit e lockout attivi
456
+ - Statistiche cache firme
457
+ - Telemetria latenza (p50/p95/p99) + cache prompt
458
+ - Reset salute con un clic
459
+
460
+ ### 🔧 Playground del traduttore
461
+
462
+ - Debug, test e visualizzazione delle traduzioni di formato API
463
+ - Invia richieste e vedi come OmniRoute traduce tra formati dei provider
464
+ - Inestimabile per risolvere problemi di integrazione
465
+
466
+ ### 💾 Cloud Sync
467
+
468
+ - Sincronizza provider, combo e impostazioni tra dispositivi
469
+ - Sincronizzazione in background automatica
470
+ - Archiviazione criptata sicura
471
+
472
+ </details>
473
+
474
+ ---
475
+
476
+ ## 📖 Guida alla Configurazione
477
+
478
+ <details>
479
+ <summary><b>💳 Provider per abbonamento</b></summary>
480
+
481
+ ### Claude Code (Pro/Max)
482
+
483
+ ```bash
484
+ Dashboard → Provider → Connetti Claude Code
485
+ → Login OAuth → Rinnovo automatico token
486
+ → Tracciamento quota 5h + settimanale
487
+
488
+ Modelli:
489
+ cc/claude-opus-4-6
490
+ cc/claude-sonnet-4-5-20250929
491
+ cc/claude-haiku-4-5-20251001
492
+ ```
493
+
494
+ **Consiglio Pro:** Usa Opus per compiti complessi, Sonnet per velocità. OmniRoute traccia la quota per modello!
495
+
496
+ ### OpenAI Codex (Plus/Pro)
497
+
498
+ ```bash
499
+ Dashboard → Provider → Connetti Codex
500
+ → Login OAuth (porta 1455)
501
+ → Reset 5h + settimanale
502
+
503
+ Modelli:
504
+ cx/gpt-5.2-codex
505
+ cx/gpt-5.1-codex-max
506
+ ```
507
+
508
+ ### Gemini CLI (GRATUITO 180K/mese!)
509
+
510
+ ```bash
511
+ Dashboard → Provider → Connetti Gemini CLI
512
+ → Google OAuth
513
+ → 180K completions/mese + 1K/giorno
514
+
515
+ Modelli:
516
+ gc/gemini-3-flash-preview
517
+ gc/gemini-2.5-pro
518
+ ```
519
+
520
+ **Miglior valore:** Livello gratuito enorme! Usa prima dei livelli a pagamento.
521
+
522
+ ### GitHub Copilot
523
+
524
+ ```bash
525
+ Dashboard → Provider → Connetti GitHub
526
+ → OAuth via GitHub
527
+ → Reset mensile (1° del mese)
528
+
529
+ Modelli:
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>🔑 Provider per API Key</b></summary>
539
+
540
+ ### NVIDIA NIM (GRATUITO 1000 crediti!)
541
+
542
+ 1. Registrati: [build.nvidia.com](https://build.nvidia.com)
543
+ 2. Ottieni una API key gratuita (1000 crediti di inferenza inclusi)
544
+ 3. Dashboard → Aggiungi Provider → NVIDIA NIM:
545
+ - API Key: `nvapi-your-key`
546
+
547
+ **Modelli:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` e 50+ altri
548
+
549
+ **Consiglio Pro:** API compatibile OpenAI — funziona perfettamente con la traduzione di formato di OmniRoute!
550
+
551
+ ### DeepSeek
552
+
553
+ 1. Registrati: [platform.deepseek.com](https://platform.deepseek.com)
554
+ 2. Ottieni una API key
555
+ 3. Dashboard → Aggiungi Provider → DeepSeek
556
+
557
+ **Modelli:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
558
+
559
+ ### Groq (Livello gratuito disponibile!)
560
+
561
+ 1. Registrati: [console.groq.com](https://console.groq.com)
562
+ 2. Ottieni una API key (livello gratuito incluso)
563
+ 3. Dashboard → Aggiungi Provider → Groq
564
+
565
+ **Modelli:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
566
+
567
+ **Consiglio Pro:** Inferenza ultra-veloce — ideale per programmazione in tempo reale!
568
+
569
+ ### OpenRouter (100+ modelli)
570
+
571
+ 1. Registrati: [openrouter.ai](https://openrouter.ai)
572
+ 2. Ottieni una API key
573
+ 3. Dashboard → Aggiungi Provider → OpenRouter
574
+
575
+ **Modelli:** Accesso a 100+ modelli da tutti i principali provider tramite una singola API key.
576
+
577
+ </details>
578
+
579
+ <details>
580
+ <summary><b>💰 Provider economici (Backup)</b></summary>
581
+
582
+ ### GLM-4.7 (Reset giornaliero, $0.6/1M)
583
+
584
+ 1. Registrati: [Zhipu AI](https://open.bigmodel.cn/)
585
+ 2. Ottieni la API key dal Coding Plan
586
+ 3. Dashboard → Aggiungi API Key:
587
+ - Provider: `glm`
588
+ - API Key: `your-key`
589
+
590
+ **Usa:** `glm/glm-4.7`
591
+
592
+ **Consiglio Pro:** Il Coding Plan offre 3× quota a 1/7 del costo! Reset giornaliero alle 10:00.
593
+
594
+ ### MiniMax M2.1 (Reset 5h, $0.20/1M)
595
+
596
+ 1. Registrati: [MiniMax](https://www.minimax.io/)
597
+ 2. Ottieni una API key
598
+ 3. Dashboard → Aggiungi API Key
599
+
600
+ **Usa:** `minimax/MiniMax-M2.1`
601
+
602
+ **Consiglio Pro:** L'opzione più economica per contesto lungo (1M token)!
603
+
604
+ ### Kimi K2 ($9/mese fisso)
605
+
606
+ 1. Abbonati: [Moonshot AI](https://platform.moonshot.ai/)
607
+ 2. Ottieni una API key
608
+ 3. Dashboard → Aggiungi API Key
609
+
610
+ **Usa:** `kimi/kimi-latest`
611
+
612
+ **Consiglio Pro:** $9/mese fisso per 10M token = $0.90/1M di costo effettivo!
613
+
614
+ </details>
615
+
616
+ <details>
617
+ <summary><b>🆓 Provider GRATUITI (Backup d'emergenza)</b></summary>
618
+
619
+ ### iFlow (8 modelli GRATUITI)
620
+
621
+ ```bash
622
+ Dashboard → Connetti iFlow
623
+ → Login OAuth iFlow
624
+ → Utilizzo illimitato
625
+
626
+ Modelli:
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 modelli GRATUITI)
635
+
636
+ ```bash
637
+ Dashboard → Connetti Qwen
638
+ → Autorizzazione con codice dispositivo
639
+ → Utilizzo illimitato
640
+
641
+ Modelli:
642
+ qw/qwen3-coder-plus
643
+ qw/qwen3-coder-flash
644
+ ```
645
+
646
+ ### Kiro (Claude GRATUITO)
647
+
648
+ ```bash
649
+ Dashboard → Connetti Kiro
650
+ → AWS Builder ID o Google/GitHub
651
+ → Utilizzo illimitato
652
+
653
+ Modelli:
654
+ kr/claude-sonnet-4.5
655
+ kr/claude-haiku-4.5
656
+ ```
657
+
658
+ </details>
659
+
660
+ <details>
661
+ <summary><b>🎨 Creare combo</b></summary>
662
+
663
+ ### Esempio 1: Massimizzare abbonamento → Backup economico
664
+
665
+ ```
666
+ Dashboard → Combo → Crea nuovo
667
+
668
+ Nome: premium-coding
669
+ Modelli:
670
+ 1. cc/claude-opus-4-6 (Abbonamento principale)
671
+ 2. glm/glm-4.7 (Backup economico, $0.6/1M)
672
+ 3. minimax/MiniMax-M2.1 (Fallback più economico, $0.20/1M)
673
+
674
+ Usa nel CLI: premium-coding
675
+ ```
676
+
677
+ ### Esempio 2: Solo gratuiti (Costo zero)
678
+
679
+ ```
680
+ Nome: free-combo
681
+ Modelli:
682
+ 1. gc/gemini-3-flash-preview (180K gratis/mese)
683
+ 2. if/kimi-k2-thinking (illimitato)
684
+ 3. qw/qwen3-coder-plus (illimitato)
685
+
686
+ Costo: $0 per sempre!
687
+ ```
688
+
689
+ </details>
690
+
691
+ <details>
692
+ <summary><b>🔧 Integrazione CLI</b></summary>
693
+
694
+ ### Cursor IDE
695
+
696
+ ```
697
+ Impostazioni → Modelli → Avanzato:
698
+ OpenAI API Base URL: http://localhost:20128/v1
699
+ OpenAI API Key: [dalla dashboard OmniRoute]
700
+ Model: cc/claude-opus-4-6
701
+ ```
702
+
703
+ ### Claude Code
704
+
705
+ Usa la pagina **CLI Tools** nella dashboard per la configurazione con un clic, o modifica `~/.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
+ **Opzione 1 — Dashboard (consigliato):**
719
+
720
+ ```
721
+ Dashboard → CLI Tools → OpenClaw → Seleziona Modello → Applica
722
+ ```
723
+
724
+ **Opzione 2 — Manuale:** Modifica `~/.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 funziona solo con OmniRoute locale. Usa `127.0.0.1` invece di `localhost` per evitare problemi di risoluzione IPv6.
741
+
742
+ ### Cline / Continue / RooCode
743
+
744
+ ```
745
+ Impostazioni → Configurazione API:
746
+ Provider: OpenAI Compatible
747
+ Base URL: http://localhost:20128/v1
748
+ API Key: [dalla dashboard OmniRoute]
749
+ Model: if/kimi-k2-thinking
750
+ ```
751
+
752
+ </details>
753
+
754
+ ---
755
+
756
+ ## 📊 Modelli Disponibili
757
+
758
+ <details>
759
+ <summary><b>Vedi tutti i modelli disponibili</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/`)** - Crediti GRATUITI:
783
+
784
+ - `nvidia/llama-3.3-70b-instruct`
785
+ - `nvidia/mistral-7b-instruct`
786
+ - 50+ modelli su [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+ modelli:
815
+
816
+ - `or/anthropic/claude-4-sonnet`
817
+ - `or/google/gemini-2.5-pro`
818
+ - Qualsiasi modello da [openrouter.ai/models](https://openrouter.ai/models)
819
+
820
+ </details>
821
+
822
+ ---
823
+
824
+ ## 🧪 Valutazioni (Evals)
825
+
826
+ OmniRoute include un framework di valutazione integrato per testare la qualità delle risposte LLM contro un golden set. Accesso via **Analytics → Evals** nella dashboard.
827
+
828
+ ### Golden Set integrato
829
+
830
+ Il "OmniRoute Golden Set" precaricato contiene 10 casi di test:
831
+
832
+ - Saluti, matematica, geografia, generazione codice
833
+ - Conformità formato JSON, traduzione, markdown
834
+ - Rifiuto sicurezza (contenuto nocivo), conteggio, logica booleana
835
+
836
+ ### Strategie di valutazione
837
+
838
+ | Strategia | Descrizione | Esempio |
839
+ | ---------- | ---------------------------------------------------------- | -------------------------------- |
840
+ | `exact` | L'output deve corrispondere esattamente | `"4"` |
841
+ | `contains` | L'output deve contenere la sottostringa (case-insensitive) | `"Paris"` |
842
+ | `regex` | L'output deve corrispondere al pattern regex | `"1.*2.*3"` |
843
+ | `custom` | Funzione JS personalizzata restituisce true/false | `(output) => output.length > 10` |
844
+
845
+ ---
846
+
847
+ ## 🐛 Risoluzione Problemi
848
+
849
+ <details>
850
+ <summary><b>Clicca per espandere la guida alla risoluzione problemi</b></summary>
851
+
852
+ **"Language model did not provide messages"**
853
+
854
+ - Quota del provider esaurita → Controlla il tracker quote nella dashboard
855
+ - Soluzione: Usa un combo con fallback o passa a un livello più economico
856
+
857
+ **Rate limiting**
858
+
859
+ - Quota abbonamento esaurita → Fallback a GLM/MiniMax
860
+ - Aggiungi combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
861
+
862
+ **Token OAuth scaduto**
863
+
864
+ - Rinnovato automaticamente da OmniRoute
865
+ - Se il problema persiste: Dashboard → Provider → Riconnetti
866
+
867
+ **Costi elevati**
868
+
869
+ - Controlla le statistiche di utilizzo in Dashboard → Costi
870
+ - Cambia il modello principale a GLM/MiniMax
871
+ - Usa il livello gratuito (Gemini CLI, iFlow) per compiti non critici
872
+
873
+ **La dashboard si apre sulla porta sbagliata**
874
+
875
+ - Imposta `PORT=20128` e `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
876
+
877
+ **Errori cloud sync**
878
+
879
+ - Verifica che `BASE_URL` punti alla tua istanza in esecuzione
880
+ - Verifica che `CLOUD_URL` punti all'endpoint cloud previsto
881
+ - Mantieni i valori `NEXT_PUBLIC_*` allineati con i valori del server
882
+
883
+ **Il primo login non funziona**
884
+
885
+ - Controlla `INITIAL_PASSWORD` nel `.env`
886
+ - Se non impostata, la password predefinita è `123456`
887
+
888
+ **Nessun log delle richieste**
889
+
890
+ - Imposta `ENABLE_REQUEST_LOGS=true` nel `.env`
891
+
892
+ **Il test di connessione mostra "Invalid" per provider compatibili OpenAI**
893
+
894
+ - Molti provider non espongono l'endpoint `/models`
895
+ - OmniRoute v0.9.0+ include validazione fallback tramite chat completions
896
+ - Assicurati che la URL base includa il suffisso `/v1`
897
+
898
+ </details>
899
+
900
+ ---
901
+
902
+ ## 🛠️ Stack Tecnologico
903
+
904
+ - **Runtime**: Node.js 20+
905
+ - **Linguaggio**: TypeScript 5.9 — **100% TypeScript** in `src/` e `open-sse/` (v0.9.0)
906
+ - **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
907
+ - **Database**: LowDB (JSON) + SQLite (stato dominio + log proxy)
908
+ - **Streaming**: Server-Sent Events (SSE)
909
+ - **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys
910
+ - **Testing**: Node.js test runner (368+ test unitari)
911
+ - **CI/CD**: GitHub Actions (pubblicazione automatica npm + Docker Hub al rilascio)
912
+ - **Sito Web**: [omniroute.online](https://omniroute.online)
913
+ - **Pacchetto**: [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
+ - **Resilienza**: Circuit breaker, backoff esponenziale, anti-thundering herd, TLS spoofing
916
+
917
+ ---
918
+
919
+ ## 📖 Documentazione
920
+
921
+ | Documento | Descrizione |
922
+ | ----------------------------------------------- | -------------------------------------------------- |
923
+ | [Guida Utente](docs/USER_GUIDE.md) | Provider, combo, integrazione CLI, deploy |
924
+ | [Riferimento API](docs/API_REFERENCE.md) | Tutti gli endpoint con esempi |
925
+ | [Risoluzione Problemi](docs/TROUBLESHOOTING.md) | Problemi comuni e soluzioni |
926
+ | [Architettura](docs/ARCHITECTURE.md) | Architettura del sistema e dettagli interni |
927
+ | [Come Contribuire](CONTRIBUTING.md) | Setup di sviluppo e linee guida |
928
+ | [Spec OpenAPI](docs/openapi.yaml) | Specifica OpenAPI 3.0 |
929
+ | [Politica di Sicurezza](SECURITY.md) | Segnalazione vulnerabilità e pratiche di sicurezza |
930
+
931
+ ---
932
+
933
+ ## 📧 Supporto
934
+
935
+ - **Sito Web**: [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
+ - **Progetto Originale**: [9router di decolua](https://github.com/decolua/9router)
939
+
940
+ ---
941
+
942
+ ## 👥 Contributori
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
+ ### Come Contribuire
947
+
948
+ 1. Fai il fork del repository
949
+ 2. Crea il tuo branch di funzionalità (`git checkout -b feature/amazing-feature`)
950
+ 3. Fai il commit delle modifiche (`git commit -m 'Add amazing feature'`)
951
+ 4. Fai il push al branch (`git push origin feature/amazing-feature`)
952
+ 5. Apri una Pull Request
953
+
954
+ Consulta [CONTRIBUTING.md](CONTRIBUTING.md) per le linee guida dettagliate.
955
+
956
+ ### Rilasciare una nuova versione
957
+
958
+ ```bash
959
+ # Crea un rilascio — la pubblicazione npm avviene automaticamente
960
+ gh release create v0.9.0 --title "v0.9.0" --generate-notes
961
+ ```
962
+
963
+ ---
964
+
965
+ ## 📊 Cronologia Stelle
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
+ ## 🙏 Ringraziamenti
978
+
979
+ Un ringraziamento speciale a **[9router](https://github.com/decolua/9router)** di **[decolua](https://github.com/decolua)** — il progetto originale che ha ispirato questo fork. OmniRoute si costruisce su quell'incredibile base con funzionalità aggiuntive, API multi-modali e una riscrittura completa in TypeScript.
980
+
981
+ Un ringraziamento speciale a **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — l'implementazione originale in Go che ha ispirato questo porting in JavaScript.
982
+
983
+ ---
984
+
985
+ ## 📄 Licenza
986
+
987
+ Licenza MIT — vedi [LICENSE](LICENSE) per i dettagli.
988
+
989
+ ---
990
+
991
+ <div align="center">
992
+ <sub>Fatto con ❤️ per gli sviluppatori che programmano 24/7</sub>
993
+ <br/>
994
+ <sub><a href="https://omniroute.online">omniroute.online</a></sub>
995
+ </div>