n9router 0.4.34 → 0.4.35

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 (293) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/app-path-routes-manifest.json +12 -12
  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/page.js +1 -1
  7. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
  17. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  30. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  31. package/app/.next/server/app/_global-error.html +1 -1
  32. package/app/.next/server/app/_global-error.rsc +1 -1
  33. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  34. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  35. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  36. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  37. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  38. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  39. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  40. package/app/.next/server/app/_not-found.html +1 -1
  41. package/app/.next/server/app/_not-found.rsc +4 -4
  42. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  43. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  44. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
  45. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  46. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  47. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  48. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  49. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
  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-settings/route.js +2 -2
  54. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +1 -1
  55. package/app/.next/server/app/api/cli-tools/hermes-settings/route.js +2 -2
  56. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  57. package/app/.next/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  58. package/app/.next/server/app/api/models/route.js +1 -1
  59. package/app/.next/server/app/api/providers/[id]/models/route.js +1 -1
  60. package/app/.next/server/app/api/providers/[id]/route.js +1 -1
  61. package/app/.next/server/app/api/providers/route.js +1 -1
  62. package/app/.next/server/app/api/translator/console-logs/route.js +1 -1
  63. package/app/.next/server/app/api/translator/console-logs/stream/route.js +1 -1
  64. package/app/.next/server/app/api/tunnel/tailscale-install/route.js +2 -2
  65. package/app/.next/server/app/api/tunnel/tailscale-start-daemon/route.js +1 -1
  66. package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
  67. package/app/.next/server/app/api/version/route.js +1 -1
  68. package/app/.next/server/app/api/version/update/route.js +1 -1
  69. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  70. package/app/.next/server/app/callback.html +1 -1
  71. package/app/.next/server/app/callback.rsc +4 -4
  72. package/app/.next/server/app/callback.segments/_full.segment.rsc +4 -4
  73. package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
  74. package/app/.next/server/app/callback.segments/_index.segment.rsc +4 -4
  75. package/app/.next/server/app/callback.segments/_tree.segment.rsc +2 -2
  76. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  77. package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
  78. package/app/.next/server/app/dashboard/basic-chat.html +1 -1
  79. package/app/.next/server/app/dashboard/basic-chat.rsc +6 -6
  80. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  81. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  82. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  83. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  84. package/app/.next/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
  85. package/app/.next/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  86. package/app/.next/server/app/dashboard/basic-chat.segments/_index.segment.rsc +4 -4
  87. package/app/.next/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
  88. package/app/.next/server/app/dashboard/cli-tools.html +1 -1
  89. package/app/.next/server/app/dashboard/cli-tools.rsc +6 -6
  90. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  91. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  92. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  93. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  94. package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
  95. package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  96. package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
  97. package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  98. package/app/.next/server/app/dashboard/combos.html +1 -1
  99. package/app/.next/server/app/dashboard/combos.rsc +6 -6
  100. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  101. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  102. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  103. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  104. package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
  105. package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  106. package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
  107. package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  108. package/app/.next/server/app/dashboard/endpoint.html +1 -1
  109. package/app/.next/server/app/dashboard/endpoint.rsc +6 -6
  110. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  111. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  112. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  113. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  114. package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
  115. package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  116. package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
  117. package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  118. package/app/.next/server/app/dashboard/media-providers/web.html +1 -1
  119. package/app/.next/server/app/dashboard/media-providers/web.rsc +6 -6
  120. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  121. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  122. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  123. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  124. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  125. package/app/.next/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +6 -6
  126. package/app/.next/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  127. package/app/.next/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +4 -4
  128. package/app/.next/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
  129. package/app/.next/server/app/dashboard/mitm.html +1 -1
  130. package/app/.next/server/app/dashboard/mitm.rsc +6 -6
  131. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  132. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  133. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  134. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  135. package/app/.next/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
  136. package/app/.next/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  137. package/app/.next/server/app/dashboard/mitm.segments/_index.segment.rsc +4 -4
  138. package/app/.next/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  139. package/app/.next/server/app/dashboard/profile.html +1 -1
  140. package/app/.next/server/app/dashboard/profile.rsc +6 -6
  141. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  142. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  143. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  144. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  145. package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
  146. package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  147. package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
  148. package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  149. package/app/.next/server/app/dashboard/providers/new.html +1 -1
  150. package/app/.next/server/app/dashboard/providers/new.rsc +6 -6
  151. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  152. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  153. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  154. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  155. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  156. package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
  157. package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  158. package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
  159. package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  160. package/app/.next/server/app/dashboard/providers.html +1 -1
  161. package/app/.next/server/app/dashboard/providers.rsc +6 -6
  162. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  163. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  164. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  165. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  166. package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
  167. package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  168. package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
  169. package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  170. package/app/.next/server/app/dashboard/proxy-pools.html +1 -1
  171. package/app/.next/server/app/dashboard/proxy-pools.rsc +6 -6
  172. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  173. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  174. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  175. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  176. package/app/.next/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
  177. package/app/.next/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  178. package/app/.next/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +4 -4
  179. package/app/.next/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  180. package/app/.next/server/app/dashboard/quota.html +2 -2
  181. package/app/.next/server/app/dashboard/quota.rsc +7 -7
  182. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  183. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  184. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  185. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  186. package/app/.next/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
  187. package/app/.next/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  188. package/app/.next/server/app/dashboard/quota.segments/_index.segment.rsc +4 -4
  189. package/app/.next/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  190. package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  191. package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
  192. package/app/.next/server/app/dashboard/settings/pricing.rsc +4 -4
  193. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  194. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  195. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
  196. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  197. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  198. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  199. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  200. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  201. package/app/.next/server/app/dashboard/skills.html +1 -1
  202. package/app/.next/server/app/dashboard/skills.rsc +6 -6
  203. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  204. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  205. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  206. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  207. package/app/.next/server/app/dashboard/skills.segments/_full.segment.rsc +6 -6
  208. package/app/.next/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  209. package/app/.next/server/app/dashboard/skills.segments/_index.segment.rsc +4 -4
  210. package/app/.next/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
  211. package/app/.next/server/app/dashboard/translator.html +1 -1
  212. package/app/.next/server/app/dashboard/translator.rsc +6 -6
  213. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  214. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  215. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  216. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  217. package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
  218. package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  219. package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
  220. package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  221. package/app/.next/server/app/dashboard/usage.html +1 -1
  222. package/app/.next/server/app/dashboard/usage.rsc +6 -6
  223. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  224. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  225. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  226. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  227. package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
  228. package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  229. package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
  230. package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  231. package/app/.next/server/app/dashboard.html +1 -1
  232. package/app/.next/server/app/dashboard.rsc +6 -6
  233. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  234. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  235. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  236. package/app/.next/server/app/dashboard.segments/_full.segment.rsc +6 -6
  237. package/app/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
  238. package/app/.next/server/app/dashboard.segments/_index.segment.rsc +4 -4
  239. package/app/.next/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  240. package/app/.next/server/app/index.html +1 -1
  241. package/app/.next/server/app/index.rsc +4 -4
  242. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  243. package/app/.next/server/app/index.segments/_full.segment.rsc +4 -4
  244. package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
  245. package/app/.next/server/app/index.segments/_index.segment.rsc +4 -4
  246. package/app/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  247. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  248. package/app/.next/server/app/landing.html +1 -1
  249. package/app/.next/server/app/landing.rsc +4 -4
  250. package/app/.next/server/app/landing.segments/_full.segment.rsc +4 -4
  251. package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
  252. package/app/.next/server/app/landing.segments/_index.segment.rsc +4 -4
  253. package/app/.next/server/app/landing.segments/_tree.segment.rsc +2 -2
  254. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  255. package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
  256. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  257. package/app/.next/server/app/login.html +1 -1
  258. package/app/.next/server/app/login.rsc +5 -5
  259. package/app/.next/server/app/login.segments/_full.segment.rsc +5 -5
  260. package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
  261. package/app/.next/server/app/login.segments/_index.segment.rsc +4 -4
  262. package/app/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  263. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  264. package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
  265. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  266. package/app/.next/server/app-paths-manifest.json +12 -12
  267. package/app/.next/server/chunks/{2406.js → 1985.js} +2 -2
  268. package/app/.next/server/chunks/3110.js +1 -1
  269. package/app/.next/server/chunks/3646.js +1 -1
  270. package/app/.next/server/chunks/412.js +1 -1
  271. package/app/.next/server/chunks/7595.js +1 -1
  272. package/app/.next/server/chunks/9718.js +1 -1
  273. package/app/.next/server/middleware-build-manifest.js +1 -1
  274. package/app/.next/server/pages/404.html +1 -1
  275. package/app/.next/server/pages/500.html +1 -1
  276. package/app/.next/server/server-reference-manifest.js +1 -1
  277. package/app/.next/server/server-reference-manifest.json +1 -1
  278. package/app/.next/static/chunks/{1321-f018eeb978c98075.js → 1321-bd1e73c270cd20da.js} +1 -1
  279. package/app/.next/static/chunks/5497-c5298509cc559792.js +7 -0
  280. package/app/.next/static/chunks/{9803-860e2a1e4e3ef09f.js → 7844-acf8217cdcb39d9a.js} +5 -5
  281. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-40604134b500e7ee.js +1 -0
  282. package/app/.next/static/chunks/app/(dashboard)/dashboard/mitm/page-08e3714a029236f2.js +1 -0
  283. package/app/.next/static/chunks/app/(dashboard)/dashboard/quota/page-6420e67a5bd79512.js +1 -0
  284. package/app/.next/static/css/{e0054c8830b88cae.css → 5903295427476216.css} +1 -1
  285. package/app/open-sse/services/usage.js +182 -84
  286. package/app/package.json +1 -1
  287. package/package.json +1 -1
  288. package/app/.next/static/chunks/5497-829884464a5b2ac5.js +0 -7
  289. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-2997d55628e09b76.js +0 -1
  290. package/app/.next/static/chunks/app/(dashboard)/dashboard/mitm/page-7c6dd9e7e1c4bb8a.js +0 -1
  291. package/app/.next/static/chunks/app/(dashboard)/dashboard/quota/page-c6cab27ae3842aeb.js +0 -1
  292. /package/app/.next/static/{nKBxD9e1uLpS2wHVBNCBM → DMu6oAfCAJu7LOUJpB89l}/_buildManifest.js +0 -0
  293. /package/app/.next/static/{nKBxD9e1uLpS2wHVBNCBM → DMu6oAfCAJu7LOUJpB89l}/_ssgManifest.js +0 -0
@@ -332,87 +332,121 @@ async function getAntigravityUsage(accessToken, providerSpecificData, proxyOptio
332
332
  // Fetch subscription info once — reuse for both projectId and plan
333
333
  const subscriptionInfo = await getAntigravitySubscriptionInfo(accessToken, proxyOptions);
334
334
  const projectId = subscriptionInfo?.cloudaicompanionProject || null;
335
+ const subscriptionTier = subscriptionInfo?.subscriptionTier || "Unknown";
335
336
 
336
- // Fetch quota data with timeout
337
- const controller = new AbortController();
338
- const timeoutId = setTimeout(() => controller.abort(), 10000); // 10s timeout
337
+ const endpoints = [
338
+ "https://daily-cloudcode-pa.sandbox.googleapis.com/v1internal:fetchAvailableModels",
339
+ "https://daily-cloudcode-pa.googleapis.com/v1internal:fetchAvailableModels",
340
+ "https://cloudcode-pa.googleapis.com/v1internal:fetchAvailableModels"
341
+ ];
339
342
 
340
- let response;
341
- try {
342
- response = await proxyAwareFetch(ANTIGRAVITY_CONFIG.quotaApiUrl, {
343
- method: "POST",
344
- headers: {
345
- "Authorization": `Bearer ${accessToken}`,
346
- "User-Agent": ANTIGRAVITY_CONFIG.userAgent,
347
- "Content-Type": "application/json",
348
- "X-Client-Name": "antigravity",
349
- "X-Client-Version": "1.107.0",
350
- "x-request-source": "local", // MITM bypass
351
- },
352
- body: JSON.stringify({
353
- ...(projectId ? { project: projectId } : {})
354
- }),
355
- signal: controller.signal,
356
- }, proxyOptions);
357
- } finally {
358
- clearTimeout(timeoutId);
359
- }
343
+ let response = null;
344
+ let responseData = null;
345
+ let fetchError = null;
360
346
 
361
- if (response.status === 403) {
362
- return {
363
- message: "Antigravity quota API access forbidden. Chat may still work.",
364
- quotas: {}
365
- };
366
- }
347
+ for (const url of endpoints) {
348
+ const controller = new AbortController();
349
+ const timeoutId = setTimeout(() => controller.abort(), 10000);
367
350
 
368
- if (response.status === 401) {
369
- return {
370
- message: "Antigravity quota API authentication expired. Chat may still work.",
371
- quotas: {}
372
- };
351
+ let payload = projectId ? { project: projectId } : {};
352
+
353
+ try {
354
+ let res = await proxyAwareFetch(url, {
355
+ method: "POST",
356
+ headers: {
357
+ "Authorization": `Bearer ${accessToken}`,
358
+ "User-Agent": ANTIGRAVITY_CONFIG.userAgent,
359
+ "Content-Type": "application/json",
360
+ "X-Client-Name": "antigravity",
361
+ "X-Client-Version": "1.107.0",
362
+ "x-request-source": "local",
363
+ },
364
+ body: JSON.stringify(payload),
365
+ signal: controller.signal,
366
+ }, proxyOptions);
367
+
368
+ // 403 Forbidden check: if payload has project, retry without project ID on the SAME endpoint
369
+ if (res.status === 403 && payload.project) {
370
+ console.warn(`[Antigravity Quota] 403 Forbidden with project ID on ${url}, retrying without project ID...`);
371
+ res = await proxyAwareFetch(url, {
372
+ method: "POST",
373
+ headers: {
374
+ "Authorization": `Bearer ${accessToken}`,
375
+ "User-Agent": ANTIGRAVITY_CONFIG.userAgent,
376
+ "Content-Type": "application/json",
377
+ "X-Client-Name": "antigravity",
378
+ "X-Client-Version": "1.107.0",
379
+ "x-request-source": "local",
380
+ },
381
+ body: JSON.stringify({}),
382
+ signal: controller.signal,
383
+ }, proxyOptions);
384
+ }
385
+
386
+ if (res.status === 403) {
387
+ return {
388
+ plan: subscriptionTier,
389
+ message: "Antigravity quota API access forbidden.",
390
+ isForbidden: true,
391
+ quotas: {}
392
+ };
393
+ }
394
+
395
+ if (res.status === 401) {
396
+ return {
397
+ plan: subscriptionTier,
398
+ message: "Antigravity quota API authentication expired.",
399
+ isExpired: true,
400
+ quotas: {}
401
+ };
402
+ }
403
+
404
+ if (res.ok) {
405
+ response = res;
406
+ responseData = await res.json();
407
+ break; // Succeeded! Break the endpoints loop
408
+ } else {
409
+ const errText = await res.text();
410
+ fetchError = new Error(`HTTP ${res.status}: ${errText}`);
411
+ }
412
+ } catch (err) {
413
+ fetchError = err;
414
+ } finally {
415
+ clearTimeout(timeoutId);
416
+ }
373
417
  }
374
418
 
375
- if (!response.ok) {
376
- throw new Error(`Antigravity API error: ${response.status}`);
419
+ if (!response || !responseData) {
420
+ throw fetchError || new Error("Failed to fetch antigravity quota from all endpoints");
377
421
  }
378
422
 
379
- const data = await response.json();
380
423
  const quotas = {};
381
-
382
- // Parse model quotas (inspired by vscode-antigravity-cockpit)
383
- if (data.models) {
384
- // Filter only recommended/important models (must match PROVIDER_MODELS ag ids)
385
- const importantModels = [
386
- 'gemini-3.5-flash-low',
387
- 'gemini-3-flash-agent',
388
- 'gemini-3.5-flash-extra-low',
389
- 'gemini-3.1-pro-low',
390
- 'gemini-pro-agent',
391
- 'claude-sonnet-4-6',
392
- 'claude-opus-4-6-thinking',
393
- 'gpt-oss-120b-medium',
394
- ];
395
-
396
- for (const [modelKey, info] of Object.entries(data.models)) {
397
- // Skip models without quota info
424
+ if (responseData.models) {
425
+ // Like Antigravity-Manager, accept any model whose key starts with gemini, claude, gpt, image, or imagen
426
+ for (const [modelKey, info] of Object.entries(responseData.models)) {
398
427
  if (!info.quotaInfo) {
399
428
  continue;
400
429
  }
401
430
 
402
- // Skip internal models and non-important models
403
- if (info.isInternal || !importantModels.includes(modelKey)) {
431
+ const matchesTarget =
432
+ modelKey === "claude-opus-4-6-thinking" ||
433
+ modelKey === "claude-sonnet-4-6" ||
434
+ modelKey.startsWith("gemini-3.1-pro-") ||
435
+ modelKey === "gemini-3.1-pro" ||
436
+ modelKey.startsWith("gemini-3.5-") ||
437
+ modelKey === "gemini-3.5"||
438
+ modelKey === "gemini-3-flash-agent";
439
+
440
+ if (!matchesTarget) {
404
441
  continue;
405
442
  }
406
443
 
407
- const remainingFraction = info.quotaInfo.remainingFraction || 0;
444
+ const remainingFraction = info.quotaInfo.remainingFraction != null ? info.quotaInfo.remainingFraction : 0;
408
445
  const remainingPercentage = remainingFraction * 100;
409
-
410
- // Convert percentage to used/total for UI compatibility
411
- const total = 1000; // Normalized base
446
+ const total = 1000;
412
447
  const remaining = Math.round(total * remainingFraction);
413
448
  const used = total - remaining;
414
449
 
415
- // Use modelKey as key (matches PROVIDER_MODELS id)
416
450
  quotas[modelKey] = {
417
451
  used,
418
452
  total,
@@ -425,12 +459,12 @@ async function getAntigravityUsage(accessToken, providerSpecificData, proxyOptio
425
459
  }
426
460
 
427
461
  return {
428
- plan: subscriptionInfo?.currentTier?.name || "Unknown",
462
+ plan: subscriptionTier,
429
463
  quotas,
430
464
  subscriptionInfo,
431
465
  };
432
466
  } catch (error) {
433
- console.error("[Antigravity Usage] Error:", error.message, error.cause);
467
+ console.error("[Antigravity Usage] Error:", error.message);
434
468
  return { message: `Antigravity error: ${error.message}` };
435
469
  }
436
470
  }
@@ -447,33 +481,97 @@ async function getAntigravityProjectId(accessToken) {
447
481
  }
448
482
  }
449
483
 
484
+ /**
485
+ * Check whether a tier string contains a recognizable keyword (ultra/pro/plus/free).
486
+ * Used to detect free accounts where currentTier.name is a generic label like "Antigravity".
487
+ */
488
+ function isTierNormalizeable(value) {
489
+ if (!value) return false;
490
+ const lower = String(value).toLowerCase();
491
+ return lower.includes("ultra") || lower.includes("pro") || lower.includes("plus") || lower.includes("free") || lower.includes("restricted");
492
+ }
493
+
450
494
  /**
451
495
  * Get Antigravity subscription info
452
496
  */
453
497
  async function getAntigravitySubscriptionInfo(accessToken, proxyOptions = null) {
454
- const controller = new AbortController();
455
- const timeoutId = setTimeout(() => controller.abort(), 10000); // 10s timeout
456
- try {
457
- const response = await proxyAwareFetch(ANTIGRAVITY_CONFIG.loadProjectApiUrl, {
458
- method: "POST",
459
- headers: {
460
- "Authorization": `Bearer ${accessToken}`,
461
- "User-Agent": ANTIGRAVITY_CONFIG.userAgent,
462
- "Content-Type": "application/json",
463
- "x-request-source": "local", // MITM bypass
464
- },
465
- body: JSON.stringify({ metadata: CLIENT_METADATA, mode: 1 }),
466
- signal: controller.signal,
467
- }, proxyOptions);
498
+ const urls = [
499
+ "https://daily-cloudcode-pa.sandbox.googleapis.com/v1internal:loadCodeAssist",
500
+ "https://daily-cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",
501
+ "https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist"
502
+ ];
468
503
 
469
- if (!response.ok) return null;
470
- return await response.json();
471
- } catch (error) {
472
- console.error("[Antigravity Subscription] Error:", error.message);
473
- return null;
474
- } finally {
475
- clearTimeout(timeoutId);
504
+ for (const url of urls) {
505
+ const controller = new AbortController();
506
+ const timeoutId = setTimeout(() => controller.abort(), 10000);
507
+ try {
508
+ const response = await proxyAwareFetch(url, {
509
+ method: "POST",
510
+ headers: {
511
+ "Authorization": `Bearer ${accessToken}`,
512
+ "User-Agent": ANTIGRAVITY_CONFIG.userAgent,
513
+ "Content-Type": "application/json",
514
+ "x-request-source": "local",
515
+ },
516
+ body: JSON.stringify({ metadata: CLIENT_METADATA, mode: 1 }),
517
+ signal: controller.signal,
518
+ }, proxyOptions);
519
+
520
+ if (response.ok) {
521
+ const data = await response.json();
522
+ const paidTier = data.paidTier;
523
+ const currentTier = data.currentTier;
524
+ const allowedTiers = data.allowedTiers;
525
+ const ineligibleTiers = data.ineligibleTiers;
526
+
527
+ let subscriptionTier = (paidTier?.name || paidTier?.id) || null;
528
+ const isIneligible = Array.isArray(ineligibleTiers) && ineligibleTiers.length > 0;
529
+
530
+ if (!subscriptionTier) {
531
+ if (!isIneligible) {
532
+ subscriptionTier = (currentTier?.name || currentTier?.id) || null;
533
+ } else {
534
+ if (Array.isArray(allowedTiers)) {
535
+ const defaultTier = allowedTiers.find(t => t.isDefault === true);
536
+ if (defaultTier) {
537
+ const nameOrId = defaultTier.name || defaultTier.id;
538
+ if (nameOrId) {
539
+ subscriptionTier = `${nameOrId} (Restricted)`;
540
+ }
541
+ }
542
+ }
543
+ }
544
+ }
545
+
546
+ // If subscriptionTier resolved to a value that doesn't map to a known tier
547
+ // (e.g. free accounts return currentTier.name="Antigravity" which is unrecognized),
548
+ // fall back to currentTier.id (free accounts have id="free-tier") or force "Free".
549
+ // This mirrors Antigravity-Manager's catch-all: anything not "ultra"/"pro" → FREE.
550
+ if (subscriptionTier && !isTierNormalizeable(subscriptionTier)) {
551
+ const idFallback = currentTier?.id;
552
+ if (idFallback && isTierNormalizeable(idFallback)) {
553
+ subscriptionTier = idFallback; // e.g. "free-tier" → will normalize to "Free"
554
+ } else if (!paidTier) {
555
+ // No paid tier and name didn't normalize → treat as Free (catch-all like Antigravity-Manager)
556
+ subscriptionTier = "Free";
557
+ }
558
+ }
559
+
560
+ // If still no tier resolved but we have currentTier info → Free
561
+ if (!subscriptionTier && currentTier && !isIneligible) {
562
+ subscriptionTier = "Free";
563
+ }
564
+
565
+ data.subscriptionTier = subscriptionTier;
566
+ return data;
567
+ }
568
+ } catch (error) {
569
+ console.error(`[Antigravity Subscription] Error fetching from ${url}:`, error.message);
570
+ } finally {
571
+ clearTimeout(timeoutId);
572
+ }
476
573
  }
574
+ return null;
477
575
  }
478
576
 
479
577
  /**
package/app/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n9router",
3
- "version": "0.4.34",
3
+ "version": "0.4.35",
4
4
  "description": "Self-hosted AI routing gateway — local proxy for Claude, Gemini, OpenAI and 40+ providers",
5
5
  "keywords": [
6
6
  "ai",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n9router",
3
- "version": "0.4.34",
3
+ "version": "0.4.35",
4
4
  "description": "Self-hosted AI routing gateway — local proxy for Claude, Gemini, OpenAI and 40+ providers",
5
5
  "keywords": [
6
6
  "ai",