n9router 0.4.52 → 0.4.53

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 (338) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/app-path-routes-manifest.json +3 -3
  3. package/app/.next/build-manifest.json +2 -2
  4. package/app/.next/prerender-manifest.json +3 -3
  5. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  6. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  7. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  28. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  29. package/app/.next/server/app/_global-error.html +1 -1
  30. package/app/.next/server/app/_global-error.rsc +1 -1
  31. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  32. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  33. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  34. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  35. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  36. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  37. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  38. package/app/.next/server/app/_not-found.html +1 -1
  39. package/app/.next/server/app/_not-found.rsc +3 -3
  40. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  41. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  42. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
  43. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  44. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  45. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  46. package/app/.next/server/app/api/cli-tools/all-statuses/route.js +5 -5
  47. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  48. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
  49. package/app/.next/server/app/api/cli-tools/cline-settings/route.js +1 -1
  50. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +1 -1
  51. package/app/.next/server/app/api/cli-tools/copilot-settings/route.js +2 -2
  52. package/app/.next/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
  53. package/app/.next/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
  54. package/app/.next/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  55. package/app/.next/server/app/api/cli-tools/deepseek-tui-settings/route.js +2 -2
  56. package/app/.next/server/app/api/cli-tools/devin-settings/route.js +1 -1
  57. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +1 -1
  58. package/app/.next/server/app/api/cli-tools/grok-build-settings/route.js +2 -2
  59. package/app/.next/server/app/api/cli-tools/hermes-settings/route.js +2 -2
  60. package/app/.next/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  61. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  62. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  63. package/app/.next/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  64. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  65. package/app/.next/server/app/api/oauth/codex/bulk-import/route.js +1 -1
  66. package/app/.next/server/app/api/oauth/codex/import-token/route.js +1 -1
  67. package/app/.next/server/app/api/providers/client/route.js +1 -1
  68. package/app/.next/server/app/api/providers/validate/route.js +1 -1
  69. package/app/.next/server/app/api/translator/send/route.js +1 -1
  70. package/app/.next/server/app/api/translator/translate/route.js +1 -1
  71. package/app/.next/server/app/api/tunnel/tailscale-install/route.js +2 -2
  72. package/app/.next/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
  73. package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
  74. package/app/.next/server/app/api/v1/embeddings/route.js +1 -1
  75. package/app/.next/server/app/api/v1/images/generations/route.js +1 -1
  76. package/app/.next/server/app/api/v1/search/route.js +1 -1
  77. package/app/.next/server/app/api/v1/web/fetch/route.js +1 -1
  78. package/app/.next/server/app/api/version/route.js +1 -1
  79. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  80. package/app/.next/server/app/callback.html +1 -1
  81. package/app/.next/server/app/callback.rsc +3 -3
  82. package/app/.next/server/app/callback.segments/_full.segment.rsc +3 -3
  83. package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
  84. package/app/.next/server/app/callback.segments/_index.segment.rsc +3 -3
  85. package/app/.next/server/app/callback.segments/_tree.segment.rsc +1 -1
  86. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  87. package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
  88. package/app/.next/server/app/dashboard/basic-chat.html +1 -1
  89. package/app/.next/server/app/dashboard/basic-chat.rsc +5 -5
  90. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  91. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  92. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  93. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  94. package/app/.next/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
  95. package/app/.next/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  96. package/app/.next/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
  97. package/app/.next/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  98. package/app/.next/server/app/dashboard/cli-tools.html +1 -1
  99. package/app/.next/server/app/dashboard/cli-tools.rsc +5 -5
  100. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  101. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  102. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  103. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  104. package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
  105. package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  106. package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
  107. package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  108. package/app/.next/server/app/dashboard/combos.html +1 -1
  109. package/app/.next/server/app/dashboard/combos.rsc +5 -5
  110. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  111. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  112. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  113. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  114. package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
  115. package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  116. package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
  117. package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  118. package/app/.next/server/app/dashboard/endpoint.html +1 -1
  119. package/app/.next/server/app/dashboard/endpoint.rsc +5 -5
  120. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  121. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  122. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  123. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  124. package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
  125. package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  126. package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
  127. package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  128. package/app/.next/server/app/dashboard/media-providers/web.html +1 -1
  129. package/app/.next/server/app/dashboard/media-providers/web.rsc +5 -5
  130. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  131. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  132. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  133. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  134. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  135. package/app/.next/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
  136. package/app/.next/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  137. package/app/.next/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
  138. package/app/.next/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  139. package/app/.next/server/app/dashboard/mitm.html +1 -1
  140. package/app/.next/server/app/dashboard/mitm.rsc +5 -5
  141. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  142. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  143. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  144. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  145. package/app/.next/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
  146. package/app/.next/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  147. package/app/.next/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
  148. package/app/.next/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  149. package/app/.next/server/app/dashboard/profile.html +1 -1
  150. package/app/.next/server/app/dashboard/profile.rsc +5 -5
  151. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  152. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  153. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  154. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  155. package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
  156. package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  157. package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
  158. package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  159. package/app/.next/server/app/dashboard/providers/new.html +1 -1
  160. package/app/.next/server/app/dashboard/providers/new.rsc +5 -5
  161. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  162. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  163. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  164. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  165. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  166. package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
  167. package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  168. package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
  169. package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  170. package/app/.next/server/app/dashboard/providers.html +1 -1
  171. package/app/.next/server/app/dashboard/providers.rsc +5 -5
  172. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  173. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  174. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  175. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  176. package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
  177. package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  178. package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
  179. package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  180. package/app/.next/server/app/dashboard/proxy-pools.html +1 -1
  181. package/app/.next/server/app/dashboard/proxy-pools.rsc +5 -5
  182. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  183. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  184. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  185. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  186. package/app/.next/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
  187. package/app/.next/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  188. package/app/.next/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
  189. package/app/.next/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  190. package/app/.next/server/app/dashboard/pxpipe.html +1 -1
  191. package/app/.next/server/app/dashboard/pxpipe.rsc +5 -5
  192. package/app/.next/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
  193. package/app/.next/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
  194. package/app/.next/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  195. package/app/.next/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  196. package/app/.next/server/app/dashboard/pxpipe.segments/_full.segment.rsc +5 -5
  197. package/app/.next/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
  198. package/app/.next/server/app/dashboard/pxpipe.segments/_index.segment.rsc +3 -3
  199. package/app/.next/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +1 -1
  200. package/app/.next/server/app/dashboard/quota.html +2 -2
  201. package/app/.next/server/app/dashboard/quota.rsc +6 -6
  202. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  203. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  204. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  205. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  206. package/app/.next/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
  207. package/app/.next/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  208. package/app/.next/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
  209. package/app/.next/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  210. package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  211. package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
  212. package/app/.next/server/app/dashboard/settings/pricing.rsc +3 -3
  213. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  214. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  215. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
  216. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  217. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  218. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  219. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  220. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  221. package/app/.next/server/app/dashboard/skills.html +1 -1
  222. package/app/.next/server/app/dashboard/skills.rsc +5 -5
  223. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  224. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  225. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  226. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  227. package/app/.next/server/app/dashboard/skills.segments/_full.segment.rsc +5 -5
  228. package/app/.next/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  229. package/app/.next/server/app/dashboard/skills.segments/_index.segment.rsc +3 -3
  230. package/app/.next/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
  231. package/app/.next/server/app/dashboard/token-saver.html +1 -1
  232. package/app/.next/server/app/dashboard/token-saver.rsc +5 -5
  233. package/app/.next/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
  234. package/app/.next/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  235. package/app/.next/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  236. package/app/.next/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  237. package/app/.next/server/app/dashboard/token-saver.segments/_full.segment.rsc +5 -5
  238. package/app/.next/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  239. package/app/.next/server/app/dashboard/token-saver.segments/_index.segment.rsc +3 -3
  240. package/app/.next/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
  241. package/app/.next/server/app/dashboard/translator.html +1 -1
  242. package/app/.next/server/app/dashboard/translator.rsc +5 -5
  243. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  244. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  245. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  246. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  247. package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
  248. package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  249. package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
  250. package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  251. package/app/.next/server/app/dashboard/usage.html +1 -1
  252. package/app/.next/server/app/dashboard/usage.rsc +5 -5
  253. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  254. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  255. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  256. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  257. package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
  258. package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  259. package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
  260. package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  261. package/app/.next/server/app/dashboard.html +1 -1
  262. package/app/.next/server/app/dashboard.rsc +5 -5
  263. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  264. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  265. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  266. package/app/.next/server/app/dashboard.segments/_full.segment.rsc +5 -5
  267. package/app/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
  268. package/app/.next/server/app/dashboard.segments/_index.segment.rsc +3 -3
  269. package/app/.next/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  270. package/app/.next/server/app/index.html +1 -1
  271. package/app/.next/server/app/index.rsc +3 -3
  272. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  273. package/app/.next/server/app/index.segments/_full.segment.rsc +3 -3
  274. package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
  275. package/app/.next/server/app/index.segments/_index.segment.rsc +3 -3
  276. package/app/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  277. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  278. package/app/.next/server/app/landing.html +1 -1
  279. package/app/.next/server/app/landing.rsc +3 -3
  280. package/app/.next/server/app/landing.segments/_full.segment.rsc +3 -3
  281. package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
  282. package/app/.next/server/app/landing.segments/_index.segment.rsc +3 -3
  283. package/app/.next/server/app/landing.segments/_tree.segment.rsc +1 -1
  284. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  285. package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
  286. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  287. package/app/.next/server/app/login.html +1 -1
  288. package/app/.next/server/app/login.rsc +4 -4
  289. package/app/.next/server/app/login.segments/_full.segment.rsc +4 -4
  290. package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
  291. package/app/.next/server/app/login.segments/_index.segment.rsc +3 -3
  292. package/app/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  293. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  294. package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
  295. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  296. package/app/.next/server/app-paths-manifest.json +3 -3
  297. package/app/.next/server/chunks/112.js +1 -1
  298. package/app/.next/server/chunks/1470.js +1 -1
  299. package/app/.next/server/chunks/3481.js +1 -1
  300. package/app/.next/server/chunks/3913.js +1 -1
  301. package/app/.next/server/chunks/4037.js +1 -1
  302. package/app/.next/server/chunks/412.js +1 -1
  303. package/app/.next/server/chunks/4705.js +1 -1
  304. package/app/.next/server/chunks/4963.js +1 -1
  305. package/app/.next/server/chunks/5619.js +1 -1
  306. package/app/.next/server/chunks/6306.js +1 -1
  307. package/app/.next/server/chunks/6671.js +1 -1
  308. package/app/.next/server/chunks/6763.js +1 -1
  309. package/app/.next/server/chunks/7137.js +1 -1
  310. package/app/.next/server/chunks/7211.js +1 -1
  311. package/app/.next/server/chunks/8145.js +1 -1
  312. package/app/.next/server/chunks/8301.js +1 -1
  313. package/app/.next/server/chunks/869.js +1 -1
  314. package/app/.next/server/chunks/8920.js +1 -1
  315. package/app/.next/server/middleware-build-manifest.js +1 -1
  316. package/app/.next/server/middleware.js +3 -3
  317. package/app/.next/server/pages/404.html +1 -1
  318. package/app/.next/server/pages/500.html +1 -1
  319. package/app/.next/server/server-reference-manifest.js +1 -1
  320. package/app/.next/server/server-reference-manifest.json +1 -1
  321. package/app/.next/static/chunks/1321-d151de24f85b1705.js +1 -0
  322. package/app/.next/static/chunks/{4028-dd9deab6b8261f02.js → 4028-f5a8d63d47b1b2cf.js} +1 -1
  323. package/app/.next/static/chunks/5497-91a1a5870e39d2d0.js +7 -0
  324. package/app/.next/static/chunks/{8198-b19a16e6810e84a2.js → 8198-6ba877462e24c355.js} +1 -1
  325. package/app/open-sse/providers/capabilities.js +1 -0
  326. package/app/open-sse/providers/pricing.js +4 -0
  327. package/app/open-sse/providers/registry/antigravity.js +3 -0
  328. package/app/open-sse/providers/registry/gemini.js +1 -0
  329. package/app/open-sse/providers/shared.js +3 -2
  330. package/app/open-sse/services/usage/google.js +22 -16
  331. package/app/package.json +1 -1
  332. package/app/src/mitm/config.js +7 -2
  333. package/app/src/shared/constants/cliTools.js +4 -1
  334. package/package.json +1 -1
  335. package/app/.next/static/chunks/1321-f70183ecee5bedb5.js +0 -1
  336. package/app/.next/static/chunks/5497-dd7adaddb5a1e51d.js +0 -7
  337. /package/app/.next/static/{q96GO6bFy0GB26MaN-AFa → __qB-b0EP9cu_2Y1YJiUT}/_buildManifest.js +0 -0
  338. /package/app/.next/static/{q96GO6bFy0GB26MaN-AFa → __qB-b0EP9cu_2Y1YJiUT}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8198],{11017:(e,t,r)=>{function n(e){if(null==e)return null;let t=String(e).trim();if(!t)return null;let r=t.toLowerCase();return r.includes("ultra")?"Ultra":r.includes("pro")?"Pro":r.includes("plus")?"Plus":r.includes("free")?"Free":null}function a(e){if(!e)return null;if("string"==typeof e)return n(e);for(let t of[e.accountType,e.plan,e.paidTier?.name,e.subscriptionTier,e.subscription_tier,e.currentTier?.name,e.subscriptionInfo?.paidTier?.name,e.quota?.subscription_tier,e.subscriptionInfo?.currentTier?.name]){let e=n(t);if(e)return e}return null}r.d(t,{_P:()=>a,fd:()=>n}),["Free","Plus","Pro","Ultra"].map(e=>({value:e,label:e}))},57294:(e,t,r)=>{r.d(t,{$4:()=>j,$L:()=>_,AA:()=>g,AI:()=>a,ED:()=>A,Ih:()=>M,JJ:()=>m,J_:()=>o,Jp:()=>O,Ld:()=>D,Uh:()=>E,WA:()=>l,W_:()=>I,Wg:()=>s,Xr:()=>y,ZS:()=>S,b8:()=>f,dE:()=>k,dR:()=>z,fZ:()=>u,fr:()=>$,g5:()=>q,ku:()=>b,kx:()=>w,mO:()=>C,pT:()=>c,sL:()=>F,sQ:()=>T,uf:()=>p,vF:()=>d,w2:()=>i,wU:()=>P,wi:()=>v});var n=r(45564);let a="quotaCacheData",o=6e4,i=18e4,u=5,l="quotaAutoRefresh",s=20,c=[10,20,50,100],f=500,g=[{value:"all",label:"All accounts"},{value:"active",label:"Active"},{value:"inactive",label:"Turned off"}],d=[{value:"default",label:"Default quota order"},{value:"remaining-asc",label:"% quota: low to high"},{value:"remaining-desc",label:"% quota: high to low"}];function m(e){return e.name?.trim()||e.email?.trim()||e.displayName?.trim()||null}function h(e,t){let r=t[e.id]?.quotas?.[0];return r&&"number"==typeof r.remaining?r.remaining:1/0}function p(e,t,r,n,a){if("codex"===n&&"default"!==a)return[...e].sort((e,r)=>{let n=h(e,t),o=h(r,t),i="remaining-asc"===a?n-o:o-n;return 0!==i?i:(m(e)||"").localeCompare(m(r)||"")});if(!r)return e;let o=e=>{let r=(t[e.id]?.quotas||[]).map(e=>e.resetAt?new Date(e.resetAt).getTime():1/0).filter(e=>Number.isFinite(e));return r.length>0?Math.min(...r):1/0};return[...e].sort((e,t)=>{let r=o(e)-o(t);return 0!==r?r:(e.provider||"").localeCompare(t.provider||"")||(m(e)||"").localeCompare(m(t)||"")})}function b(e){let t={};return e.forEach(e=>{t[e.id]=!0}),t}function A(e,t){let r=new Set(t.map(e=>e.id));return Object.fromEntries(Object.entries(e).filter(([e])=>r.has(e)))}function q(e,t,r){return e.eligibleConnections?e.providerFilteredConnections?{icon:"filter_alt_off",title:"No Accounts On This Page",description:"Try moving to another page or refreshing the current filters."}:{icon:"filter_alt_off",title:"No Accounts Match Current Filters",description:"all"===t?"Try changing the account status filter to see more quota trackers.":`No ${"inactive"===r?"turned off":"active"===r?"active":"matching"} accounts found for ${t}.`}:{icon:"cloud_off",title:"No Providers Connected",description:"Connect to providers with OAuth to track your API quota limits and usage."}}function y(e,t){return t?`Custom: ${e} / page`:`${e} / page`}function w(e){var t;let{start:r,end:n}=(t=e).total?{start:(t.page-1)*t.pageSize+1,end:Math.min(t.page*t.pageSize,t.total)}:{start:0,end:0};return`Showing ${r}-${n} of ${e.total}`}function v(e,t){return e||{page:1,pageSize:t,total:0,totalPages:1}}function k(e,t=0){return e||{eligibleConnections:t,providerFilteredConnections:t}}function P(e,t){return e!==t}function S(e,t){return e?.page||t}function E(e){return e||[]}async function O(e,t){return await e(t)}function D(){try{let e=window.localStorage.getItem(a);return e?JSON.parse(e):{}}catch(e){return console.error("Error reading quota cache:",e),{}}}function $(e,t){try{let r=D();r[e]={...t,cachedAt:new Date().toISOString()},window.localStorage.setItem(a,JSON.stringify(r))}catch(e){console.error("Error writing quota cache:",e)}}function C(e){if(!e)return"-";try{let t="string"==typeof e?new Date(e):e,r=new Date,n=t-r;if(n<=0)return"-";let a=Math.ceil(n/6e4);if(a<60)return`${a}m`;let o=Math.floor(a/60),i=a%60;if(o<24)return`${o}h ${i}m`;let u=Math.floor(o/24);return`${u}d ${o%24}h ${i}m`}catch(e){return"-"}}function T(e){if(!e)return null;try{let t="string"==typeof e?new Date(e):e,r=new Date,n=new Date(r.getFullYear(),r.getMonth(),r.getDate()),a=new Date(n);a.setDate(a.getDate()+1);let o=new Date(a);o.setDate(o.getDate()+1);let i="";i=t>=n&&t<a?"Today":t>=a&&t<o?"Tomorrow":t.toLocaleDateString("en-US",{month:"short",day:"numeric"});let u=t.toLocaleTimeString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0});return`${i}, ${u}`}catch{return null}}function j(e,t){return t&&0!==t?!e||e<0?100:e>=t?0:Math.round((t-e)/t*100):0}function _(e){return e?.remaining!==void 0?Math.max(0,Math.round(e.remaining)):e?.remainingPercentage!==void 0?Math.round(e.remainingPercentage):j(e?.used,e?.total)}function M(e){return e&&"object"==typeof e?String(e.modelKey||e.name||"").trim():""}function N(e,t){let r=t?.[e]?.hidden;return new Set(Array.isArray(r)?r.map(String):[])}function z(e,t=[],r={}){if(!Array.isArray(t)||0===t.length)return[];let n=N(e,r);return 0===n.size?t:t.filter(e=>!n.has(M(e)))}function F(e,t=[],r={}){if(!Array.isArray(t)||0===t.length)return[];let n=N(e,r);return 0===n.size?[]:t.filter(e=>n.has(M(e)))}function I(e,t){if(!t||"object"!=typeof t)return[];let r=[];try{switch(e.toLowerCase()){case"github":default:t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})});break;case"antigravity":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:t.displayName||e,modelKey:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null,remainingPercentage:t.remainingPercentage})});break;case"codex":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:e,used:t.used||0,total:t.total||0,remaining:t.remaining,resetAt:t.resetAt||null})});break;case"kiro":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})});break;case"qoder":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{("organization"!==e||t&&0!==(Number(t.total)||0))&&r.push({name:"user"===e?"Personal":"organization"===e?"Organization":e,used:t.used||0,total:t.total||0,unit:t.unit,resetAt:t.resetAt||null})});break;case"claude":t.message?r.push({name:"error",used:0,total:0,resetAt:null,message:t.message}):t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})});break;case"vercel-ai-gateway":case"ollama":case"deepseek":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null,remainingPercentage:t.remainingPercentage})});break;case"codebuddy-cn":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null,recurring:!1!==t.recurring})});break;case"grok-cli":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null,remainingPercentage:t.remainingPercentage})});break;case"kimi":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null,remainingPercentage:t.remainingPercentage})})}}catch(t){return console.error(`Error parsing quota data for ${e}:`,t),[]}let a=(0,n.KC)(e);if(a.length>0){let e=new Map(a.map((e,t)=>[e.id,t]));r.sort((t,r)=>{let n=t.modelKey||t.name,a=r.modelKey||r.name;return(e.get(n)??999)-(e.get(a)??999)})}return r}}}]);
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8198],{11017:(e,t,r)=>{function n(e){if(null==e)return null;let t=String(e).trim();if(!t)return null;let r=t.toLowerCase();return r.includes("ultra")?"Ultra":r.includes("pro")?"Pro":r.includes("plus")?"Plus":r.includes("free")?"Free":null}function a(e){if(!e)return null;if("string"==typeof e)return n(e);for(let t of[e.accountType,e.plan,e.paidTier?.name,e.subscriptionTier,e.subscription_tier,e.currentTier?.name,e.subscriptionInfo?.paidTier?.name,e.quota?.subscription_tier,e.subscriptionInfo?.currentTier?.name]){let e=n(t);if(e)return e}return null}r.d(t,{_P:()=>a,fd:()=>n}),["Free","Plus","Pro","Ultra"].map(e=>({value:e,label:e}))},57294:(e,t,r)=>{r.d(t,{$4:()=>j,$L:()=>_,AA:()=>g,AI:()=>a,ED:()=>A,Ih:()=>M,JJ:()=>h,J_:()=>i,Jp:()=>O,Ld:()=>C,Uh:()=>E,WA:()=>l,W_:()=>I,Wg:()=>s,Xr:()=>q,ZS:()=>S,b8:()=>f,dE:()=>k,dR:()=>z,fZ:()=>u,fr:()=>D,g5:()=>y,ku:()=>b,kx:()=>w,mO:()=>$,pT:()=>c,sL:()=>F,sQ:()=>T,uf:()=>p,vF:()=>d,w2:()=>o,wU:()=>P,wi:()=>v});var n=r(45564);let a="quotaCacheData",i=6e4,o=18e4,u=5,l="quotaAutoRefresh",s=20,c=[10,20,50,100],f=500,g=[{value:"all",label:"All accounts"},{value:"active",label:"Active"},{value:"inactive",label:"Turned off"}],d=[{value:"default",label:"Default quota order"},{value:"remaining-asc",label:"% quota: low to high"},{value:"remaining-desc",label:"% quota: high to low"}];function h(e){return e.name?.trim()||e.email?.trim()||e.displayName?.trim()||null}function m(e,t){let r=t[e.id]?.quotas?.[0];return r&&"number"==typeof r.remaining?r.remaining:1/0}function p(e,t,r,n,a){if("codex"===n&&"default"!==a)return[...e].sort((e,r)=>{let n=m(e,t),i=m(r,t),o="remaining-asc"===a?n-i:i-n;return 0!==o?o:(h(e)||"").localeCompare(h(r)||"")});if(!r)return e;let i=e=>{let r=(t[e.id]?.quotas||[]).map(e=>e.resetAt?new Date(e.resetAt).getTime():1/0).filter(e=>Number.isFinite(e));return r.length>0?Math.min(...r):1/0};return[...e].sort((e,t)=>{let r=i(e)-i(t);return 0!==r?r:(e.provider||"").localeCompare(t.provider||"")||(h(e)||"").localeCompare(h(t)||"")})}function b(e){let t={};return e.forEach(e=>{t[e.id]=!0}),t}function A(e,t){let r=new Set(t.map(e=>e.id));return Object.fromEntries(Object.entries(e).filter(([e])=>r.has(e)))}function y(e,t,r){return e.eligibleConnections?e.providerFilteredConnections?{icon:"filter_alt_off",title:"No Accounts On This Page",description:"Try moving to another page or refreshing the current filters."}:{icon:"filter_alt_off",title:"No Accounts Match Current Filters",description:"all"===t?"Try changing the account status filter to see more quota trackers.":`No ${"inactive"===r?"turned off":"active"===r?"active":"matching"} accounts found for ${t}.`}:{icon:"cloud_off",title:"No Providers Connected",description:"Connect to providers with OAuth to track your API quota limits and usage."}}function q(e,t){return t?`Custom: ${e} / page`:`${e} / page`}function w(e){var t;let{start:r,end:n}=(t=e).total?{start:(t.page-1)*t.pageSize+1,end:Math.min(t.page*t.pageSize,t.total)}:{start:0,end:0};return`Showing ${r}-${n} of ${e.total}`}function v(e,t){return e||{page:1,pageSize:t,total:0,totalPages:1}}function k(e,t=0){return e||{eligibleConnections:t,providerFilteredConnections:t}}function P(e,t){return e!==t}function S(e,t){return e?.page||t}function E(e){return e||[]}async function O(e,t){return await e(t)}function C(){try{let e=window.localStorage.getItem(a);return e?JSON.parse(e):{}}catch(e){return console.error("Error reading quota cache:",e),{}}}function D(e,t){try{let r=C();r[e]={...t,cachedAt:new Date().toISOString()},window.localStorage.setItem(a,JSON.stringify(r))}catch(e){console.error("Error writing quota cache:",e)}}function $(e){if(!e)return"-";try{let t="string"==typeof e?new Date(e):e,r=new Date,n=t-r;if(n<=0)return"-";let a=Math.ceil(n/6e4);if(a<60)return`${a}m`;let i=Math.floor(a/60),o=a%60;if(i<24)return`${i}h ${o}m`;let u=Math.floor(i/24);return`${u}d ${i%24}h ${o}m`}catch(e){return"-"}}function T(e){if(!e)return null;try{let t="string"==typeof e?new Date(e):e,r=new Date,n=new Date(r.getFullYear(),r.getMonth(),r.getDate()),a=new Date(n);a.setDate(a.getDate()+1);let i=new Date(a);i.setDate(i.getDate()+1);let o="";o=t>=n&&t<a?"Today":t>=a&&t<i?"Tomorrow":t.toLocaleDateString("en-US",{month:"short",day:"numeric"});let u=t.toLocaleTimeString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0});return`${o}, ${u}`}catch{return null}}function j(e,t){return t&&0!==t?!e||e<0?100:e>=t?0:Math.round((t-e)/t*100):0}function _(e){return e?.remaining!==void 0?Math.max(0,Math.round(e.remaining)):e?.remainingPercentage!==void 0?Math.round(e.remainingPercentage):j(e?.used,e?.total)}function M(e){return e&&"object"==typeof e?String(e.modelKey||e.name||"").trim():""}function N(e,t){let r=t?.[e]?.hidden;return new Set(Array.isArray(r)?r.map(String):[])}function z(e,t=[],r={}){if(!Array.isArray(t)||0===t.length)return[];let n=N(e,r);return 0===n.size?t:t.filter(e=>!n.has(M(e)))}function F(e,t=[],r={}){if(!Array.isArray(t)||0===t.length)return[];let n=N(e,r);return 0===n.size?[]:t.filter(e=>n.has(M(e)))}function I(e,t){if(!t||"object"!=typeof t)return[];let r=[];try{switch(e.toLowerCase()){case"github":default:t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})});break;case"antigravity":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:t.displayName||e,modelKey:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null,remainingPercentage:t.remainingPercentage})});break;case"codex":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:e,used:t.used||0,total:t.total||0,remaining:t.remaining,resetAt:t.resetAt||null})});break;case"kiro":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})});break;case"qoder":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{("organization"!==e||t&&0!==(Number(t.total)||0))&&r.push({name:"user"===e?"Personal":"organization"===e?"Organization":e,used:t.used||0,total:t.total||0,unit:t.unit,resetAt:t.resetAt||null})});break;case"claude":t.message?r.push({name:"error",used:0,total:0,resetAt:null,message:t.message}):t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})});break;case"vercel-ai-gateway":case"ollama":case"deepseek":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null,remainingPercentage:t.remainingPercentage})});break;case"codebuddy-cn":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null,recurring:!1!==t.recurring})});break;case"grok-cli":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null,remainingPercentage:t.remainingPercentage})});break;case"kimi":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null,remainingPercentage:t.remainingPercentage})})}}catch(t){return console.error(`Error parsing quota data for ${e}:`,t),[]}let a=(0,n.KC)(e);if(a.length>0){let t=new Map(a.map((e,t)=>[e.id,t]));if("antigravity"===e.toLowerCase()&&!t.has("gemini-3.7-flash-tiered")){let e=t.has("gemini-3.7-flash-high")?t.get("gemini-3.7-flash-high"):0;t.set("gemini-3.7-flash-tiered",e-.5)}r.sort((e,r)=>{let n=e.modelKey||e.name,a=r.modelKey||r.name;return(t.get(n)??999)-(t.get(a)??999)})}return r}}}]);
@@ -205,6 +205,7 @@ export const PATTERN_CAPABILITIES = [
205
205
 
206
206
  // ── Gemini (all 2.0+ multimodal + google_search grounding, 1M ctx) ─
207
207
  { pattern: "*gemini*image*", caps: { vision: true, imageOutput: true, contextWindow: 1048576 } },
208
+ { pattern: "*gemini-3.7*", caps: { vision: true, audioInput: true, videoInput: true, reasoning: true, search: true, thinkingFormat: "gemini-level", thinkingCanDisable: false, contextWindow: 1048576, maxOutput: 65536 } },
208
209
  { pattern: "*gemini-3*pro*", caps: { vision: true, audioInput: true, videoInput: true, reasoning: true, search: true, thinkingFormat: "gemini-level", thinkingCanDisable: false, contextWindow: 1048576, maxOutput: 65535 } },
209
210
  { pattern: "*gemini-3*", caps: { vision: true, audioInput: true, videoInput: true, reasoning: true, search: true, thinkingFormat: "gemini-level", thinkingCanDisable: false, contextWindow: 1048576, maxOutput: 65536 } },
210
211
  { pattern: "*gemini-2.5*", caps: { vision: true, audioInput: true, videoInput: true, reasoning: true, search: true, thinkingFormat: "gemini-budget", thinkingRange: { min: 0, max: 24576 }, contextWindow: 1048576, maxOutput: 65536 } },
@@ -65,6 +65,10 @@ export const MODEL_PRICING = {
65
65
  "gpt-5.4-nano": { input: 0.10, output: 0.40, cached: 0.05, reasoning: 0.60, cache_creation: 0.10 },
66
66
 
67
67
  // === Gemini ===
68
+ "gemini-3.7-flash": { input: 1.50, output: 7.50, cached: 0.15, reasoning: 11.25, cache_creation: 1.875 },
69
+ "gemini-3.7-flash-high": { input: 1.50, output: 7.50, cached: 0.15, reasoning: 11.25, cache_creation: 1.875 },
70
+ "gemini-3.7-flash-medium": { input: 1.50, output: 7.50, cached: 0.15, reasoning: 11.25, cache_creation: 1.875 },
71
+ "gemini-3.7-flash-low": { input: 1.50, output: 7.50, cached: 0.15, reasoning: 11.25, cache_creation: 1.875 },
68
72
  "gemini-3.6-flash": { input: 1.50, output: 7.50, cached: 0.15, reasoning: 11.25, cache_creation: 1.875 },
69
73
  "gemini-3.6-flash-high": { input: 1.50, output: 7.50, cached: 0.15, reasoning: 11.25, cache_creation: 1.875 },
70
74
  "gemini-3.6-flash-medium": { input: 1.50, output: 7.50, cached: 0.15, reasoning: 11.25, cache_creation: 1.875 },
@@ -45,6 +45,9 @@ export default {
45
45
  clientSecret: "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",
46
46
  },
47
47
  models: [
48
+ { id: "gemini-3.7-flash-high", name: "Gemini 3.7 Flash (High)", upstreamModelId: "gemini-3.7-flash-tiered(high)" },
49
+ { id: "gemini-3.7-flash-medium", name: "Gemini 3.7 Flash (Medium)", upstreamModelId: "gemini-3.7-flash-tiered(medium)" },
50
+ { id: "gemini-3.7-flash-low", name: "Gemini 3.7 Flash (Low)", upstreamModelId: "gemini-3.7-flash-tiered(low)" },
48
51
  { id: "gemini-3.6-flash-high", name: "Gemini 3.6 Flash (High)", upstreamModelId: "gemini-3.6-flash-tiered(high)" },
49
52
  { id: "gemini-3.6-flash-medium", name: "Gemini 3.6 Flash (Medium)", upstreamModelId: "gemini-3.6-flash-tiered(medium)" },
50
53
  { id: "gemini-3.6-flash-low", name: "Gemini 3.6 Flash (Low)", upstreamModelId: "gemini-3.6-flash-tiered(low)" },
@@ -36,6 +36,7 @@ export default {
36
36
  },
37
37
  },
38
38
  models: [
39
+ { id: "gemini-3.7-flash", name: "Gemini 3.7 Flash" },
39
40
  { id: "gemini-3.6-flash", name: "Gemini 3.6 Flash" },
40
41
  { id: "gemini-3.5-flash-lite", name: "Gemini 3.5 Flash Lite" },
41
42
  { id: "gemini-3.1-pro-preview", name: "Gemini 3.1 Pro Preview" },
@@ -74,10 +74,11 @@ export const KIMI_CODING_BASE_URL = "https://api.kimi.com/coding/v1/messages";
74
74
  export const OPENAI_COMPAT_BASE = "https://api.openai.com/v1";
75
75
  export const ANTHROPIC_COMPAT_BASE = "https://api.anthropic.com/v1";
76
76
 
77
- // Official Antigravity IDE Desktop 2.1.1 fingerprint captured from macOS arm64.
77
+ // Official Antigravity IDE fingerprint. 2.5.5 is the first IDE build that
78
+ // exposes Gemini 3.7 Flash in fetchAvailableModels.
78
79
  // Keep this static even when 9router runs on Linux: the provider profile is
79
80
  // intentionally matching the IDE client, not the server host.
80
- export const ANTIGRAVITY_IDE_VERSION = "2.1.1";
81
+ export const ANTIGRAVITY_IDE_VERSION = "2.5.5";
81
82
  export const ANTIGRAVITY_IDE_BASE_URL = "https://daily-cloudcode-pa.googleapis.com";
82
83
  export const ANTIGRAVITY_IDE_USER_AGENT = `antigravity/ide/${ANTIGRAVITY_IDE_VERSION} darwin/arm64`;
83
84
 
@@ -159,21 +159,27 @@ export async function getAntigravityUsage(accessToken, providerSpecificData, pro
159
159
 
160
160
  // Parse model quotas (inspired by vscode-antigravity-cockpit)
161
161
  if (data.models) {
162
- // Filter only recommended/important models (must match PROVIDER_MODELS ag ids)
163
- const importantModels = [
164
- 'gemini-3.6-flash-high',
165
- 'gemini-3.6-flash-medium',
166
- 'gemini-3.6-flash-low',
167
- 'gemini-3.5-flash-low',
168
- 'gemini-3.5-flash-extra-low',
169
- 'gemini-pro-agent',
170
- 'gemini-3.1-pro-low',
171
- 'claude-sonnet-4-6',
172
- 'claude-opus-4-6-thinking',
173
- 'gpt-oss-120b-medium',
162
+ // Filter only recommended/important models (must match PROVIDER_MODELS ag ids,
163
+ // plus live fetchAvailableModels keys that have not been split into tiers yet).
164
+ const importantModels = {
165
+ // Live API currently ships 3.7 as one `*-tiered` bucket, not high/medium/low.
166
+ "gemini-3.7-flash-tiered": "Gemini 3.7 Flash",
167
+ "gemini-3.7-flash-high": "Gemini 3.7 Flash (High)",
168
+ "gemini-3.7-flash-medium": "Gemini 3.7 Flash (Medium)",
169
+ "gemini-3.7-flash-low": "Gemini 3.7 Flash (Low)",
170
+ "gemini-3.6-flash-high": "Gemini 3.6 Flash (High)",
171
+ "gemini-3.6-flash-medium": "Gemini 3.6 Flash (Medium)",
172
+ "gemini-3.6-flash-low": "Gemini 3.6 Flash (Low)",
173
+ "gemini-3.5-flash-low": "Gemini 3.5 Flash (Medium)",
174
+ "gemini-3.5-flash-extra-low": "Gemini 3.5 Flash (Low)",
175
+ "gemini-pro-agent": "Gemini 3.1 Pro (High)",
176
+ "gemini-3.1-pro-low": "Gemini 3.1 Pro (Low)",
177
+ "claude-sonnet-4-6": "Claude Sonnet 4.6 (Thinking)",
178
+ "claude-opus-4-6-thinking": "Claude Opus 4.6 (Thinking)",
179
+ "gpt-oss-120b-medium": "GPT-OSS 120B (Medium)",
174
180
  // Image generation models
175
- 'gemini-3.1-flash-image',
176
- ];
181
+ "gemini-3.1-flash-image": "Gemini 3.1 Flash Image",
182
+ };
177
183
 
178
184
  for (const [modelKey, info] of Object.entries(data.models)) {
179
185
  // Skip models without quota info
@@ -182,7 +188,7 @@ export async function getAntigravityUsage(accessToken, providerSpecificData, pro
182
188
  }
183
189
 
184
190
  // Skip internal models and non-important models
185
- if (info.isInternal || !importantModels.includes(modelKey)) {
191
+ if (info.isInternal || !Object.hasOwn(importantModels, modelKey)) {
186
192
  continue;
187
193
  }
188
194
 
@@ -201,7 +207,7 @@ export async function getAntigravityUsage(accessToken, providerSpecificData, pro
201
207
  resetAt: parseResetTime(info.quotaInfo.resetTime),
202
208
  remainingPercentage,
203
209
  unlimited: false,
204
- displayName: info.displayName || modelKey,
210
+ displayName: info.displayName || importantModels[modelKey] || modelKey,
205
211
  };
206
212
  }
207
213
  }
package/app/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n9router",
3
- "version": "0.4.52",
3
+ "version": "0.4.53",
4
4
  "description": "Self-hosted AI routing gateway — local proxy for Claude, Gemini, OpenAI and 40+ providers",
5
5
  "keywords": [
6
6
  "ai",
@@ -37,6 +37,9 @@ const MODEL_SYNONYMS = {
37
37
  "gemini-3.5-flash-high": "gemini-3-flash-agent",
38
38
  "gemini-3.5-flash-medium": "gemini-3.5-flash-low",
39
39
  "gemini-3.5-flash-extra-low": "gemini-3.5-flash-extra-low",
40
+ "gemini-3.7-flash-high": "gemini-3.7-flash-high",
41
+ "gemini-3.7-flash-medium": "gemini-3.7-flash-medium",
42
+ "gemini-3.7-flash-low": "gemini-3.7-flash-low",
40
43
  "gemini-3.1-pro-high": "gemini-pro-agent",
41
44
  "gemini-3-pro-high": "gemini-pro-agent",
42
45
  "gemini-3-pro-low": "gemini-3.1-pro-low",
@@ -113,13 +116,15 @@ function extractModel(url, body) {
113
116
  return parsed.conversationState.currentMessage?.userInputMessage?.modelId || null;
114
117
  }
115
118
  const model = urlModel || parsed.model || null;
116
- if (String(model).replace(/^models\//, "") === "gemini-3.6-flash-tiered") {
119
+ const cleanModelName = String(model).replace(/^models\//, "");
120
+ if (cleanModelName === "gemini-3.6-flash-tiered" || cleanModelName === "gemini-3.7-flash-tiered") {
121
+ const ver = cleanModelName.includes("3.7") ? "3.7" : "3.6";
117
122
  const rawLevel = parsed.request?.generationConfig?.thinkingConfig?.thinkingLevel
118
123
  || parsed.generationConfig?.thinkingConfig?.thinkingLevel;
119
124
  const level = ["high", "medium", "low"].includes(String(rawLevel).toLowerCase())
120
125
  ? String(rawLevel).toLowerCase()
121
126
  : "medium";
122
- return `gemini-3.6-flash-${level}`;
127
+ return `gemini-${ver}-flash-${level}`;
123
128
  }
124
129
  return model;
125
130
  } catch {
@@ -10,8 +10,11 @@ export const MITM_TOOLS = {
10
10
  mitmDomain: "daily-cloudcode-pa.googleapis.com",
11
11
  supportsTokenSwap: true,
12
12
  tokenSwapProvider: "antigravity",
13
- modelAliases: ["gemini-3.6-flash-high", "gemini-3.6-flash-medium", "gemini-3.6-flash-low", "gemini-3.5-flash-low", "gemini-3-flash-agent", "gemini-3.5-flash-extra-low", "gemini-3.1-pro-low", "gemini-pro-agent", "claude-sonnet-4-6", "claude-opus-4-6-thinking", "gpt-oss-120b-medium", "gemini-3-flash"],
13
+ modelAliases: ["gemini-3.7-flash-high", "gemini-3.7-flash-medium", "gemini-3.7-flash-low", "gemini-3.6-flash-high", "gemini-3.6-flash-medium", "gemini-3.6-flash-low", "gemini-3.5-flash-low", "gemini-3-flash-agent", "gemini-3.5-flash-extra-low", "gemini-3.1-pro-low", "gemini-pro-agent", "claude-sonnet-4-6", "claude-opus-4-6-thinking", "gpt-oss-120b-medium", "gemini-3-flash"],
14
14
  defaultModels: [
15
+ { id: "gemini-3.7-flash-high", name: "Gemini 3.7 Flash (High)", alias: "gemini-3.7-flash-high" },
16
+ { id: "gemini-3.7-flash-medium", name: "Gemini 3.7 Flash (Medium)", alias: "gemini-3.7-flash-medium" },
17
+ { id: "gemini-3.7-flash-low", name: "Gemini 3.7 Flash (Low)", alias: "gemini-3.7-flash-low" },
15
18
  { id: "gemini-3.6-flash-high", name: "Gemini 3.6 Flash (High)", alias: "gemini-3.6-flash-high" },
16
19
  { id: "gemini-3.6-flash-medium", name: "Gemini 3.6 Flash (Medium)", alias: "gemini-3.6-flash-medium" },
17
20
  { id: "gemini-3.6-flash-low", name: "Gemini 3.6 Flash (Low)", alias: "gemini-3.6-flash-low" },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n9router",
3
- "version": "0.4.52",
3
+ "version": "0.4.53",
4
4
  "description": "Self-hosted AI routing gateway — local proxy for Claude, Gemini, OpenAI and 40+ providers",
5
5
  "keywords": [
6
6
  "ai",