n9router 0.4.42 → 0.4.44

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 (1007) hide show
  1. package/README.md +1 -1
  2. package/app/.next/BUILD_ID +1 -1
  3. package/app/.next/app-path-routes-manifest.json +15 -14
  4. package/app/.next/build-manifest.json +3 -3
  5. package/app/.next/prerender-manifest.json +3 -3
  6. package/app/.next/required-server-files.json +1 -1
  7. package/app/.next/routes-manifest.json +6 -0
  8. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
  9. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +2 -2
  12. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
  15. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  18. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
  21. package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  24. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +2 -2
  27. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -2
  30. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  31. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  32. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +3 -3
  33. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  34. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  35. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
  36. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  37. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  38. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
  39. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  40. package/app/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  41. package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
  42. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  43. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  44. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  45. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  46. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  47. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +4 -4
  48. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  49. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  50. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  51. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  52. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  53. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  54. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  55. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  56. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js +2 -2
  57. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  58. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  59. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js +2 -2
  60. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  61. package/app/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  62. package/app/.next/server/app/(dashboard)/dashboard/skills/page.js +2 -2
  63. package/app/.next/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  64. package/app/.next/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  65. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +2 -2
  66. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  67. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  68. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +3 -3
  69. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  70. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  71. package/app/.next/server/app/_global-error/page.js +3 -3
  72. package/app/.next/server/app/_global-error/page.js.nft.json +1 -1
  73. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  74. package/app/.next/server/app/_global-error.html +1 -1
  75. package/app/.next/server/app/_global-error.rsc +1 -1
  76. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  77. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  78. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  79. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  80. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  81. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  82. package/app/.next/server/app/_not-found/page.js +2 -2
  83. package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
  84. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  85. package/app/.next/server/app/_not-found.html +1 -1
  86. package/app/.next/server/app/_not-found.rsc +6 -6
  87. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +6 -6
  88. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  89. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +5 -5
  90. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  91. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  92. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +4 -4
  93. package/app/.next/server/app/api/antigravity-app/route.js +1 -1
  94. package/app/.next/server/app/api/antigravity-app/route.js.nft.json +1 -1
  95. package/app/.next/server/app/api/antigravity-app-v2/route.js +1 -1
  96. package/app/.next/server/app/api/antigravity-app-v2/route.js.nft.json +1 -1
  97. package/app/.next/server/app/api/antigravity-ide/route.js +1 -1
  98. package/app/.next/server/app/api/antigravity-ide/route.js.nft.json +1 -1
  99. package/app/.next/server/app/api/antigravity-targets/route.js +1 -1
  100. package/app/.next/server/app/api/antigravity-targets/route.js.nft.json +1 -1
  101. package/app/.next/server/app/api/antigravity-tools/import/route.js +1 -1
  102. package/app/.next/server/app/api/antigravity-tools/import/route.js.nft.json +1 -1
  103. package/app/.next/server/app/api/antigravity-tools/import-refresh-tokens/route.js +1 -1
  104. package/app/.next/server/app/api/antigravity-tools/import-refresh-tokens/route.js.nft.json +1 -1
  105. package/app/.next/server/app/api/auth/login/route.js +1 -1
  106. package/app/.next/server/app/api/auth/login/route.js.nft.json +1 -1
  107. package/app/.next/server/app/api/auth/logout/route.js +1 -1
  108. package/app/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
  109. package/app/.next/server/app/api/auth/oidc/callback/route.js +1 -1
  110. package/app/.next/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  111. package/app/.next/server/app/api/auth/oidc/start/route.js +1 -1
  112. package/app/.next/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  113. package/app/.next/server/app/api/auth/oidc/test/route.js +1 -1
  114. package/app/.next/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  115. package/app/.next/server/app/api/auth/status/route.js +1 -1
  116. package/app/.next/server/app/api/auth/status/route.js.nft.json +1 -1
  117. package/app/.next/server/app/api/cli-tools/all-statuses/route.js +4 -4
  118. package/app/.next/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  119. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  120. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  121. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  122. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  123. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
  124. package/app/.next/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  125. package/app/.next/server/app/api/cli-tools/cline-settings/route.js +2 -2
  126. package/app/.next/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  127. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +1 -1
  128. package/app/.next/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  129. package/app/.next/server/app/api/cli-tools/copilot-settings/route.js +2 -2
  130. package/app/.next/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  131. package/app/.next/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
  132. package/app/.next/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  133. package/app/.next/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
  134. package/app/.next/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  135. package/app/.next/server/app/api/cli-tools/cowork-settings/route.js +2 -2
  136. package/app/.next/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  137. package/app/.next/server/app/api/cli-tools/deepseek-tui-settings/route.js +2 -2
  138. package/app/.next/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  139. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +1 -1
  140. package/app/.next/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  141. package/app/.next/server/app/api/cli-tools/hermes-settings/route.js +3 -3
  142. package/app/.next/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  143. package/app/.next/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  144. package/app/.next/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  145. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  146. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  147. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  148. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  149. package/app/.next/server/app/api/cli-tools/opencode-settings/route.js +1 -1
  150. package/app/.next/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  151. package/app/.next/server/app/api/combos/[id]/route.js +1 -1
  152. package/app/.next/server/app/api/combos/[id]/route.js.nft.json +1 -1
  153. package/app/.next/server/app/api/combos/route.js +1 -1
  154. package/app/.next/server/app/api/combos/route.js.nft.json +1 -1
  155. package/app/.next/server/app/api/donate/route.js +1 -1
  156. package/app/.next/server/app/api/donate/route.js.nft.json +1 -1
  157. package/app/.next/server/app/api/health/route.js +1 -1
  158. package/app/.next/server/app/api/health/route.js.nft.json +1 -1
  159. package/app/.next/server/app/api/init/route.js +1 -1
  160. package/app/.next/server/app/api/init/route.js.nft.json +1 -1
  161. package/app/.next/server/app/api/internal/account-health/route.js +1 -1
  162. package/app/.next/server/app/api/internal/account-health/route.js.nft.json +1 -1
  163. package/app/.next/server/app/api/internal/request-detail/route.js +1 -1
  164. package/app/.next/server/app/api/internal/request-detail/route.js.nft.json +1 -1
  165. package/app/.next/server/app/api/internal/usage/route.js +1 -1
  166. package/app/.next/server/app/api/internal/usage/route.js.nft.json +1 -1
  167. package/app/.next/server/app/api/keys/[id]/reset-usage/route.js +1 -1
  168. package/app/.next/server/app/api/keys/[id]/reset-usage/route.js.nft.json +1 -1
  169. package/app/.next/server/app/api/keys/[id]/route.js +1 -1
  170. package/app/.next/server/app/api/keys/[id]/route.js.nft.json +1 -1
  171. package/app/.next/server/app/api/keys/[id]/usage/route.js +1 -1
  172. package/app/.next/server/app/api/keys/[id]/usage/route.js.nft.json +1 -1
  173. package/app/.next/server/app/api/keys/route.js +1 -1
  174. package/app/.next/server/app/api/keys/route.js.nft.json +1 -1
  175. package/app/.next/server/app/api/locale/route.js +1 -1
  176. package/app/.next/server/app/api/locale/route.js.nft.json +1 -1
  177. package/app/.next/server/app/api/mcp/[plugin]/message/route.js +1 -1
  178. package/app/.next/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  179. package/app/.next/server/app/api/mcp/[plugin]/sse/route.js +1 -1
  180. package/app/.next/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  181. package/app/.next/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  182. package/app/.next/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  183. package/app/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  184. package/app/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  185. package/app/.next/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  186. package/app/.next/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  187. package/app/.next/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  188. package/app/.next/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  189. package/app/.next/server/app/api/media-providers/tts/voices/route.js +1 -1
  190. package/app/.next/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  191. package/app/.next/server/app/api/models/alias/route.js +1 -1
  192. package/app/.next/server/app/api/models/alias/route.js.nft.json +1 -1
  193. package/app/.next/server/app/api/models/availability/route.js +1 -1
  194. package/app/.next/server/app/api/models/availability/route.js.nft.json +1 -1
  195. package/app/.next/server/app/api/models/custom/route.js +1 -1
  196. package/app/.next/server/app/api/models/custom/route.js.nft.json +1 -1
  197. package/app/.next/server/app/api/models/disabled/route.js +1 -1
  198. package/app/.next/server/app/api/models/disabled/route.js.nft.json +1 -1
  199. package/app/.next/server/app/api/models/route.js +1 -1
  200. package/app/.next/server/app/api/models/route.js.nft.json +1 -1
  201. package/app/.next/server/app/api/models/test/route.js +1 -1
  202. package/app/.next/server/app/api/models/test/route.js.nft.json +1 -1
  203. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  204. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  205. package/app/.next/server/app/api/oauth/codex/import-token/route.js +1 -1
  206. package/app/.next/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  207. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js +2 -2
  208. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  209. package/app/.next/server/app/api/oauth/cursor/import/route.js +1 -1
  210. package/app/.next/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  211. package/app/.next/server/app/api/oauth/gitlab/pat/route.js +1 -1
  212. package/app/.next/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  213. package/app/.next/server/app/api/oauth/iflow/cookie/route.js +1 -1
  214. package/app/.next/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  215. package/app/.next/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  216. package/app/.next/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  217. package/app/.next/server/app/api/oauth/kiro/import/route.js +1 -1
  218. package/app/.next/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  219. package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  220. package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  221. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  222. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  223. package/app/.next/server/app/api/pricing/route.js +1 -1
  224. package/app/.next/server/app/api/pricing/route.js.nft.json +1 -1
  225. package/app/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
  226. package/app/.next/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  227. package/app/.next/server/app/api/provider-nodes/route.js +1 -1
  228. package/app/.next/server/app/api/provider-nodes/route.js.nft.json +1 -1
  229. package/app/.next/server/app/api/provider-nodes/validate/route.js +1 -1
  230. package/app/.next/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  231. package/app/.next/server/app/api/providers/[id]/models/route.js +1 -1
  232. package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  233. package/app/.next/server/app/api/providers/[id]/route.js +1 -1
  234. package/app/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
  235. package/app/.next/server/app/api/providers/[id]/test/route.js +1 -1
  236. package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  237. package/app/.next/server/app/api/providers/[id]/test-models/route.js +1 -1
  238. package/app/.next/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  239. package/app/.next/server/app/api/providers/client/route.js +1 -1
  240. package/app/.next/server/app/api/providers/client/route.js.nft.json +1 -1
  241. package/app/.next/server/app/api/providers/kilo/free-models/route.js +1 -1
  242. package/app/.next/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  243. package/app/.next/server/app/api/providers/route.js +1 -1
  244. package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
  245. package/app/.next/server/app/api/providers/suggested-models/route.js +1 -1
  246. package/app/.next/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  247. package/app/.next/server/app/api/providers/test-batch/route.js +1 -1
  248. package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  249. package/app/.next/server/app/api/providers/validate/route.js +1 -1
  250. package/app/.next/server/app/api/providers/validate/route.js.nft.json +1 -1
  251. package/app/.next/server/app/api/proxy-pools/[id]/route.js +1 -1
  252. package/app/.next/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  253. package/app/.next/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  254. package/app/.next/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  255. package/app/.next/server/app/api/proxy-pools/cloudflare-deploy/route.js +2 -2
  256. package/app/.next/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  257. package/app/.next/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
  258. package/app/.next/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  259. package/app/.next/server/app/api/proxy-pools/route.js +1 -1
  260. package/app/.next/server/app/api/proxy-pools/route.js.nft.json +1 -1
  261. package/app/.next/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
  262. package/app/.next/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  263. package/app/.next/server/app/api/settings/database/route.js +1 -1
  264. package/app/.next/server/app/api/settings/database/route.js.nft.json +1 -1
  265. package/app/.next/server/app/api/settings/database/selective/route.js +1 -0
  266. package/app/.next/server/app/api/settings/database/selective/route.js.nft.json +1 -0
  267. package/app/.next/server/app/api/settings/database/selective/route_client-reference-manifest.js +1 -0
  268. package/app/.next/server/app/api/settings/proxy-test/route.js +1 -1
  269. package/app/.next/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  270. package/app/.next/server/app/api/settings/require-login/route.js +1 -1
  271. package/app/.next/server/app/api/settings/require-login/route.js.nft.json +1 -1
  272. package/app/.next/server/app/api/settings/route.js +1 -1
  273. package/app/.next/server/app/api/settings/route.js.nft.json +1 -1
  274. package/app/.next/server/app/api/shutdown/route.js +1 -1
  275. package/app/.next/server/app/api/shutdown/route.js.nft.json +1 -1
  276. package/app/.next/server/app/api/tags/route.js +1 -1
  277. package/app/.next/server/app/api/tags/route.js.nft.json +1 -1
  278. package/app/.next/server/app/api/translator/console-logs/route.js +1 -1
  279. package/app/.next/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  280. package/app/.next/server/app/api/translator/console-logs/stream/route.js +2 -2
  281. package/app/.next/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  282. package/app/.next/server/app/api/translator/load/route.js +1 -1
  283. package/app/.next/server/app/api/translator/load/route.js.nft.json +1 -1
  284. package/app/.next/server/app/api/translator/save/route.js +1 -1
  285. package/app/.next/server/app/api/translator/save/route.js.nft.json +1 -1
  286. package/app/.next/server/app/api/translator/send/route.js +1 -1
  287. package/app/.next/server/app/api/translator/send/route.js.nft.json +1 -1
  288. package/app/.next/server/app/api/translator/translate/route.js +1 -1
  289. package/app/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
  290. package/app/.next/server/app/api/tunnel/disable/route.js +1 -1
  291. package/app/.next/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  292. package/app/.next/server/app/api/tunnel/enable/route.js +1 -1
  293. package/app/.next/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  294. package/app/.next/server/app/api/tunnel/status/route.js +1 -1
  295. package/app/.next/server/app/api/tunnel/status/route.js.nft.json +1 -1
  296. package/app/.next/server/app/api/tunnel/tailscale-check/route.js +1 -1
  297. package/app/.next/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  298. package/app/.next/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  299. package/app/.next/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  300. package/app/.next/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  301. package/app/.next/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  302. package/app/.next/server/app/api/tunnel/tailscale-install/route.js +2 -2
  303. package/app/.next/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  304. package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
  305. package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  306. package/app/.next/server/app/api/usage/chart/route.js +1 -1
  307. package/app/.next/server/app/api/usage/chart/route.js.nft.json +1 -1
  308. package/app/.next/server/app/api/usage/history/route.js +1 -1
  309. package/app/.next/server/app/api/usage/history/route.js.nft.json +1 -1
  310. package/app/.next/server/app/api/usage/logs/route.js +1 -1
  311. package/app/.next/server/app/api/usage/logs/route.js.nft.json +1 -1
  312. package/app/.next/server/app/api/usage/providers/route.js +1 -1
  313. package/app/.next/server/app/api/usage/providers/route.js.nft.json +1 -1
  314. package/app/.next/server/app/api/usage/report/route.js +1 -1
  315. package/app/.next/server/app/api/usage/report/route.js.nft.json +1 -1
  316. package/app/.next/server/app/api/usage/request-details/route.js +1 -1
  317. package/app/.next/server/app/api/usage/request-details/route.js.nft.json +1 -1
  318. package/app/.next/server/app/api/usage/request-logs/route.js +1 -1
  319. package/app/.next/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  320. package/app/.next/server/app/api/usage/stats/route.js +1 -1
  321. package/app/.next/server/app/api/usage/stats/route.js.nft.json +1 -1
  322. package/app/.next/server/app/api/usage/stream/route.js +2 -2
  323. package/app/.next/server/app/api/usage/stream/route.js.nft.json +1 -1
  324. package/app/.next/server/app/api/v1/api/chat/route.js +1 -1
  325. package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  326. package/app/.next/server/app/api/v1/audio/speech/route.js +1 -1
  327. package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  328. package/app/.next/server/app/api/v1/audio/transcriptions/route.js +1 -1
  329. package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  330. package/app/.next/server/app/api/v1/audio/voices/route.js +1 -1
  331. package/app/.next/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  332. package/app/.next/server/app/api/v1/chat/completions/route.js +1 -1
  333. package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  334. package/app/.next/server/app/api/v1/embeddings/route.js +1 -1
  335. package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  336. package/app/.next/server/app/api/v1/images/generations/route.js +2 -2
  337. package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  338. package/app/.next/server/app/api/v1/messages/count_tokens/route.js +1 -1
  339. package/app/.next/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  340. package/app/.next/server/app/api/v1/messages/route.js +1 -1
  341. package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
  342. package/app/.next/server/app/api/v1/models/[kind]/route.js +1 -1
  343. package/app/.next/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  344. package/app/.next/server/app/api/v1/models/info/route.js +1 -1
  345. package/app/.next/server/app/api/v1/models/info/route.js.nft.json +1 -1
  346. package/app/.next/server/app/api/v1/models/route.js +1 -1
  347. package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
  348. package/app/.next/server/app/api/v1/responses/compact/route.js +1 -1
  349. package/app/.next/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  350. package/app/.next/server/app/api/v1/responses/route.js +1 -1
  351. package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
  352. package/app/.next/server/app/api/v1/route.js +1 -1
  353. package/app/.next/server/app/api/v1/route.js.nft.json +1 -1
  354. package/app/.next/server/app/api/v1/search/route.js +1 -1
  355. package/app/.next/server/app/api/v1/search/route.js.nft.json +1 -1
  356. package/app/.next/server/app/api/v1/web/fetch/route.js +1 -1
  357. package/app/.next/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  358. package/app/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
  359. package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  360. package/app/.next/server/app/api/v1beta/models/route.js +1 -1
  361. package/app/.next/server/app/api/v1beta/models/route.js.nft.json +1 -1
  362. package/app/.next/server/app/api/version/route.js +1 -1
  363. package/app/.next/server/app/api/version/route.js.nft.json +1 -1
  364. package/app/.next/server/app/api/version/shutdown/route.js +1 -1
  365. package/app/.next/server/app/api/version/shutdown/route.js.nft.json +1 -1
  366. package/app/.next/server/app/api/version/update/route.js +1 -1
  367. package/app/.next/server/app/api/version/update/route.js.nft.json +1 -1
  368. package/app/.next/server/app/callback/page.js +2 -2
  369. package/app/.next/server/app/callback/page.js.nft.json +1 -1
  370. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  371. package/app/.next/server/app/callback.html +1 -1
  372. package/app/.next/server/app/callback.rsc +6 -6
  373. package/app/.next/server/app/callback.segments/_full.segment.rsc +6 -6
  374. package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
  375. package/app/.next/server/app/callback.segments/_index.segment.rsc +5 -5
  376. package/app/.next/server/app/callback.segments/_tree.segment.rsc +4 -4
  377. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  378. package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
  379. package/app/.next/server/app/dashboard/basic-chat.html +1 -1
  380. package/app/.next/server/app/dashboard/basic-chat.rsc +8 -8
  381. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  382. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  383. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  384. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  385. package/app/.next/server/app/dashboard/basic-chat.segments/_full.segment.rsc +8 -8
  386. package/app/.next/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  387. package/app/.next/server/app/dashboard/basic-chat.segments/_index.segment.rsc +5 -5
  388. package/app/.next/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +4 -4
  389. package/app/.next/server/app/dashboard/cli-tools.html +1 -1
  390. package/app/.next/server/app/dashboard/cli-tools.rsc +8 -8
  391. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  392. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  393. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  394. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  395. package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +8 -8
  396. package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  397. package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +5 -5
  398. package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +4 -4
  399. package/app/.next/server/app/dashboard/combos.html +1 -1
  400. package/app/.next/server/app/dashboard/combos.rsc +8 -8
  401. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  402. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  403. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  404. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  405. package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +8 -8
  406. package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  407. package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +5 -5
  408. package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +4 -4
  409. package/app/.next/server/app/dashboard/endpoint.html +1 -1
  410. package/app/.next/server/app/dashboard/endpoint.rsc +8 -8
  411. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  412. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  413. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  414. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  415. package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +8 -8
  416. package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  417. package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +5 -5
  418. package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +4 -4
  419. package/app/.next/server/app/dashboard/media-providers/web.html +1 -1
  420. package/app/.next/server/app/dashboard/media-providers/web.rsc +8 -8
  421. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  422. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  423. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  424. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  425. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  426. package/app/.next/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +8 -8
  427. package/app/.next/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  428. package/app/.next/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +5 -5
  429. package/app/.next/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +4 -4
  430. package/app/.next/server/app/dashboard/mitm.html +1 -1
  431. package/app/.next/server/app/dashboard/mitm.rsc +8 -8
  432. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  433. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  434. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  435. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  436. package/app/.next/server/app/dashboard/mitm.segments/_full.segment.rsc +8 -8
  437. package/app/.next/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  438. package/app/.next/server/app/dashboard/mitm.segments/_index.segment.rsc +5 -5
  439. package/app/.next/server/app/dashboard/mitm.segments/_tree.segment.rsc +4 -4
  440. package/app/.next/server/app/dashboard/profile.html +1 -1
  441. package/app/.next/server/app/dashboard/profile.rsc +8 -8
  442. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  443. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  444. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  445. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  446. package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +8 -8
  447. package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  448. package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +5 -5
  449. package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +4 -4
  450. package/app/.next/server/app/dashboard/providers/new.html +1 -1
  451. package/app/.next/server/app/dashboard/providers/new.rsc +8 -8
  452. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  453. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  454. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  455. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  456. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  457. package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +8 -8
  458. package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  459. package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +5 -5
  460. package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +4 -4
  461. package/app/.next/server/app/dashboard/providers.html +1 -1
  462. package/app/.next/server/app/dashboard/providers.rsc +8 -8
  463. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  464. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  465. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  466. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  467. package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +8 -8
  468. package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  469. package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +5 -5
  470. package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +4 -4
  471. package/app/.next/server/app/dashboard/proxy-pools.html +1 -1
  472. package/app/.next/server/app/dashboard/proxy-pools.rsc +8 -8
  473. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  474. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  475. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  476. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  477. package/app/.next/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +8 -8
  478. package/app/.next/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  479. package/app/.next/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +5 -5
  480. package/app/.next/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +4 -4
  481. package/app/.next/server/app/dashboard/quota.html +2 -2
  482. package/app/.next/server/app/dashboard/quota.rsc +9 -9
  483. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  484. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  485. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  486. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  487. package/app/.next/server/app/dashboard/quota.segments/_full.segment.rsc +9 -9
  488. package/app/.next/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  489. package/app/.next/server/app/dashboard/quota.segments/_index.segment.rsc +5 -5
  490. package/app/.next/server/app/dashboard/quota.segments/_tree.segment.rsc +4 -4
  491. package/app/.next/server/app/dashboard/settings/pricing/page.js +2 -2
  492. package/app/.next/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  493. package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  494. package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
  495. package/app/.next/server/app/dashboard/settings/pricing.rsc +6 -6
  496. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +6 -6
  497. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  498. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +5 -5
  499. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +4 -4
  500. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  501. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  502. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  503. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  504. package/app/.next/server/app/dashboard/skills.html +1 -1
  505. package/app/.next/server/app/dashboard/skills.rsc +8 -8
  506. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  507. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  508. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  509. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  510. package/app/.next/server/app/dashboard/skills.segments/_full.segment.rsc +8 -8
  511. package/app/.next/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  512. package/app/.next/server/app/dashboard/skills.segments/_index.segment.rsc +5 -5
  513. package/app/.next/server/app/dashboard/skills.segments/_tree.segment.rsc +4 -4
  514. package/app/.next/server/app/dashboard/translator.html +1 -1
  515. package/app/.next/server/app/dashboard/translator.rsc +8 -8
  516. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  517. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  518. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  519. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  520. package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +8 -8
  521. package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  522. package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +5 -5
  523. package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +4 -4
  524. package/app/.next/server/app/dashboard/usage.html +1 -1
  525. package/app/.next/server/app/dashboard/usage.rsc +8 -8
  526. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  527. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  528. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  529. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  530. package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +8 -8
  531. package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  532. package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +5 -5
  533. package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +4 -4
  534. package/app/.next/server/app/dashboard.html +1 -1
  535. package/app/.next/server/app/dashboard.rsc +8 -8
  536. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  537. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  538. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  539. package/app/.next/server/app/dashboard.segments/_full.segment.rsc +8 -8
  540. package/app/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
  541. package/app/.next/server/app/dashboard.segments/_index.segment.rsc +5 -5
  542. package/app/.next/server/app/dashboard.segments/_tree.segment.rsc +4 -4
  543. package/app/.next/server/app/favicon.ico/route.js +1 -1
  544. package/app/.next/server/app/favicon.ico/route.js.nft.json +1 -1
  545. package/app/.next/server/app/index.html +1 -1
  546. package/app/.next/server/app/index.rsc +6 -6
  547. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  548. package/app/.next/server/app/index.segments/_full.segment.rsc +6 -6
  549. package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
  550. package/app/.next/server/app/index.segments/_index.segment.rsc +5 -5
  551. package/app/.next/server/app/index.segments/_tree.segment.rsc +4 -4
  552. package/app/.next/server/app/landing/page.js +2 -2
  553. package/app/.next/server/app/landing/page.js.nft.json +1 -1
  554. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  555. package/app/.next/server/app/landing.html +1 -1
  556. package/app/.next/server/app/landing.rsc +6 -6
  557. package/app/.next/server/app/landing.segments/_full.segment.rsc +6 -6
  558. package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
  559. package/app/.next/server/app/landing.segments/_index.segment.rsc +5 -5
  560. package/app/.next/server/app/landing.segments/_tree.segment.rsc +4 -4
  561. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  562. package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
  563. package/app/.next/server/app/login/page.js +2 -2
  564. package/app/.next/server/app/login/page.js.nft.json +1 -1
  565. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  566. package/app/.next/server/app/login.html +1 -1
  567. package/app/.next/server/app/login.rsc +7 -7
  568. package/app/.next/server/app/login.segments/_full.segment.rsc +7 -7
  569. package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
  570. package/app/.next/server/app/login.segments/_index.segment.rsc +5 -5
  571. package/app/.next/server/app/login.segments/_tree.segment.rsc +4 -4
  572. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  573. package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
  574. package/app/.next/server/app/manifest.webmanifest/route.js +2 -2
  575. package/app/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  576. package/app/.next/server/app/page.js +2 -2
  577. package/app/.next/server/app/page.js.nft.json +1 -1
  578. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  579. package/app/.next/server/app-paths-manifest.json +15 -14
  580. package/app/.next/server/chunks/1051.js +1 -1
  581. package/app/.next/server/chunks/1476.js +1 -1
  582. package/app/.next/server/chunks/1498.js +1 -1
  583. package/app/.next/server/chunks/2569.js +1 -0
  584. package/app/.next/server/chunks/3110.js +10 -8
  585. package/app/.next/server/chunks/318.js +7 -7
  586. package/app/.next/server/chunks/3588.js +1 -1
  587. package/app/.next/server/chunks/365.js +1 -1
  588. package/app/.next/server/chunks/412.js +2 -2
  589. package/app/.next/server/chunks/4177.js +1 -1
  590. package/app/.next/server/chunks/4250.js +1 -1
  591. package/app/.next/server/chunks/4389.js +1 -1
  592. package/app/.next/server/chunks/4404.js +1 -1
  593. package/app/.next/server/chunks/5859.js +1 -0
  594. package/app/.next/server/chunks/5995.js +1 -1
  595. package/app/.next/server/chunks/6108.js +1 -1
  596. package/app/.next/server/chunks/6182.js +1 -1
  597. package/app/.next/server/chunks/6457.js +2 -2
  598. package/app/.next/server/chunks/6811.js +1 -1
  599. package/app/.next/server/chunks/7341.js +1 -1
  600. package/app/.next/server/chunks/7828.js +1 -1
  601. package/app/.next/server/chunks/7879.js +1 -1
  602. package/app/.next/server/chunks/7912.js +1 -0
  603. package/app/.next/server/chunks/7994.js +2 -2
  604. package/app/.next/server/chunks/8473.js +2 -2
  605. package/app/.next/server/chunks/8838.js +1 -0
  606. package/app/.next/server/chunks/8895.js +7 -5
  607. package/app/.next/server/chunks/9295.js +1 -0
  608. package/app/.next/server/chunks/9489.js +1 -1
  609. package/app/.next/server/chunks/9718.js +1 -1
  610. package/app/.next/server/chunks/9807.js +1 -1
  611. package/app/.next/server/middleware-build-manifest.js +1 -1
  612. package/app/.next/server/middleware.js +4 -4
  613. package/app/.next/server/next-font-manifest.js +1 -1
  614. package/app/.next/server/next-font-manifest.json +1 -1
  615. package/app/.next/server/pages/404.html +1 -1
  616. package/app/.next/server/pages/500.html +1 -1
  617. package/app/.next/server/server-reference-manifest.js +1 -1
  618. package/app/.next/server/server-reference-manifest.json +1 -1
  619. package/app/.next/static/chunks/1321-5ac5b0e0510e7bc1.js +1 -0
  620. package/app/.next/static/chunks/2589-89684df31938c4c7.js +3 -0
  621. package/app/.next/static/chunks/{4406-952369c1e296c5a3.js → 4406-9357c0d7c2c19d9b.js} +3 -3
  622. package/app/.next/static/chunks/5497-f16d2c74532d4ad3.js +7 -0
  623. package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/page-5d6cf330f43257e2.js +1 -0
  624. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-bc4b466a331dbb31.js +6 -0
  625. package/app/.next/static/chunks/app/(dashboard)/{layout-1244fdc593309aa9.js → layout-5d6111c3c8c1af01.js} +1 -1
  626. package/app/.next/static/chunks/app/_global-error/{page-9e73c1f718efb820.js → page-663014002ada02ea.js} +1 -1
  627. package/app/.next/static/chunks/app/api/antigravity-app/{route-9e73c1f718efb820.js → route-663014002ada02ea.js} +1 -1
  628. package/app/.next/static/chunks/app/api/antigravity-app-v2/{route-9e73c1f718efb820.js → route-663014002ada02ea.js} +1 -1
  629. package/app/.next/static/chunks/app/api/antigravity-ide/{route-9e73c1f718efb820.js → route-663014002ada02ea.js} +1 -1
  630. package/app/.next/static/chunks/app/api/antigravity-targets/route-663014002ada02ea.js +1 -0
  631. package/app/.next/static/chunks/app/api/antigravity-tools/import/route-663014002ada02ea.js +1 -0
  632. package/app/.next/static/chunks/app/api/antigravity-tools/import-refresh-tokens/route-663014002ada02ea.js +1 -0
  633. package/app/.next/static/chunks/app/api/auth/login/route-663014002ada02ea.js +1 -0
  634. package/app/.next/static/chunks/app/api/auth/logout/route-663014002ada02ea.js +1 -0
  635. package/app/.next/static/chunks/app/api/auth/oidc/callback/route-663014002ada02ea.js +1 -0
  636. package/app/.next/static/chunks/app/api/auth/oidc/start/route-663014002ada02ea.js +1 -0
  637. package/app/.next/static/chunks/app/api/auth/oidc/test/route-663014002ada02ea.js +1 -0
  638. package/app/.next/static/chunks/app/api/auth/status/route-663014002ada02ea.js +1 -0
  639. package/app/.next/static/chunks/app/api/cli-tools/all-statuses/route-663014002ada02ea.js +1 -0
  640. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-663014002ada02ea.js +1 -0
  641. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-663014002ada02ea.js +1 -0
  642. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-663014002ada02ea.js +1 -0
  643. package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-663014002ada02ea.js +1 -0
  644. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-663014002ada02ea.js +1 -0
  645. package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-663014002ada02ea.js +1 -0
  646. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-663014002ada02ea.js +1 -0
  647. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-663014002ada02ea.js +1 -0
  648. package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-663014002ada02ea.js +1 -0
  649. package/app/.next/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-663014002ada02ea.js +1 -0
  650. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-663014002ada02ea.js +1 -0
  651. package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-663014002ada02ea.js +1 -0
  652. package/app/.next/static/chunks/app/api/cli-tools/jcode-settings/route-663014002ada02ea.js +1 -0
  653. package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-663014002ada02ea.js +1 -0
  654. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-663014002ada02ea.js +1 -0
  655. package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-663014002ada02ea.js +1 -0
  656. package/app/.next/static/chunks/app/api/combos/[id]/route-663014002ada02ea.js +1 -0
  657. package/app/.next/static/chunks/app/api/combos/route-663014002ada02ea.js +1 -0
  658. package/app/.next/static/chunks/app/api/donate/route-663014002ada02ea.js +1 -0
  659. package/app/.next/static/chunks/app/api/health/route-663014002ada02ea.js +1 -0
  660. package/app/.next/static/chunks/app/api/init/route-663014002ada02ea.js +1 -0
  661. package/app/.next/static/chunks/app/api/internal/account-health/route-663014002ada02ea.js +1 -0
  662. package/app/.next/static/chunks/app/api/internal/request-detail/route-663014002ada02ea.js +1 -0
  663. package/app/.next/static/chunks/app/api/internal/usage/route-663014002ada02ea.js +1 -0
  664. package/app/.next/static/chunks/app/api/keys/[id]/reset-usage/route-663014002ada02ea.js +1 -0
  665. package/app/.next/static/chunks/app/api/keys/[id]/route-663014002ada02ea.js +1 -0
  666. package/app/.next/static/chunks/app/api/keys/[id]/usage/route-663014002ada02ea.js +1 -0
  667. package/app/.next/static/chunks/app/api/keys/route-663014002ada02ea.js +1 -0
  668. package/app/.next/static/chunks/app/api/locale/route-663014002ada02ea.js +1 -0
  669. package/app/.next/static/chunks/app/api/mcp/[plugin]/message/route-663014002ada02ea.js +1 -0
  670. package/app/.next/static/chunks/app/api/mcp/[plugin]/sse/route-663014002ada02ea.js +1 -0
  671. package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-663014002ada02ea.js +1 -0
  672. package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-663014002ada02ea.js +1 -0
  673. package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-663014002ada02ea.js +1 -0
  674. package/app/.next/static/chunks/app/api/media-providers/tts/minimax/voices/route-663014002ada02ea.js +1 -0
  675. package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-663014002ada02ea.js +1 -0
  676. package/app/.next/static/chunks/app/api/models/alias/route-663014002ada02ea.js +1 -0
  677. package/app/.next/static/chunks/app/api/models/availability/route-663014002ada02ea.js +1 -0
  678. package/app/.next/static/chunks/app/api/models/custom/route-663014002ada02ea.js +1 -0
  679. package/app/.next/static/chunks/app/api/models/disabled/route-663014002ada02ea.js +1 -0
  680. package/app/.next/static/chunks/app/api/models/route-663014002ada02ea.js +1 -0
  681. package/app/.next/static/chunks/app/api/models/test/route-663014002ada02ea.js +1 -0
  682. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-663014002ada02ea.js +1 -0
  683. package/app/.next/static/chunks/app/api/oauth/codex/import-token/route-663014002ada02ea.js +1 -0
  684. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-663014002ada02ea.js +1 -0
  685. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-663014002ada02ea.js +1 -0
  686. package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-663014002ada02ea.js +1 -0
  687. package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-663014002ada02ea.js +1 -0
  688. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-663014002ada02ea.js +1 -0
  689. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-663014002ada02ea.js +1 -0
  690. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-663014002ada02ea.js +1 -0
  691. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-663014002ada02ea.js +1 -0
  692. package/app/.next/static/chunks/app/api/pricing/route-663014002ada02ea.js +1 -0
  693. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-663014002ada02ea.js +1 -0
  694. package/app/.next/static/chunks/app/api/provider-nodes/route-663014002ada02ea.js +1 -0
  695. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-663014002ada02ea.js +1 -0
  696. package/app/.next/static/chunks/app/api/providers/[id]/models/route-663014002ada02ea.js +1 -0
  697. package/app/.next/static/chunks/app/api/providers/[id]/route-663014002ada02ea.js +1 -0
  698. package/app/.next/static/chunks/app/api/providers/[id]/test/route-663014002ada02ea.js +1 -0
  699. package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-663014002ada02ea.js +1 -0
  700. package/app/.next/static/chunks/app/api/providers/client/route-663014002ada02ea.js +1 -0
  701. package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-663014002ada02ea.js +1 -0
  702. package/app/.next/static/chunks/app/api/providers/route-663014002ada02ea.js +1 -0
  703. package/app/.next/static/chunks/app/api/providers/suggested-models/route-663014002ada02ea.js +1 -0
  704. package/app/.next/static/chunks/app/api/providers/test-batch/route-663014002ada02ea.js +1 -0
  705. package/app/.next/static/chunks/app/api/providers/validate/route-663014002ada02ea.js +1 -0
  706. package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-663014002ada02ea.js +1 -0
  707. package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-663014002ada02ea.js +1 -0
  708. package/app/.next/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-663014002ada02ea.js +1 -0
  709. package/app/.next/static/chunks/app/api/proxy-pools/deno-deploy/route-663014002ada02ea.js +1 -0
  710. package/app/.next/static/chunks/app/api/proxy-pools/route-663014002ada02ea.js +1 -0
  711. package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-663014002ada02ea.js +1 -0
  712. package/app/.next/static/chunks/app/api/settings/database/route-663014002ada02ea.js +1 -0
  713. package/app/.next/static/chunks/app/api/settings/database/selective/route-663014002ada02ea.js +1 -0
  714. package/app/.next/static/chunks/app/api/settings/proxy-test/route-663014002ada02ea.js +1 -0
  715. package/app/.next/static/chunks/app/api/settings/require-login/route-663014002ada02ea.js +1 -0
  716. package/app/.next/static/chunks/app/api/settings/route-663014002ada02ea.js +1 -0
  717. package/app/.next/static/chunks/app/api/shutdown/route-663014002ada02ea.js +1 -0
  718. package/app/.next/static/chunks/app/api/tags/route-663014002ada02ea.js +1 -0
  719. package/app/.next/static/chunks/app/api/translator/console-logs/route-663014002ada02ea.js +1 -0
  720. package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-663014002ada02ea.js +1 -0
  721. package/app/.next/static/chunks/app/api/translator/load/route-663014002ada02ea.js +1 -0
  722. package/app/.next/static/chunks/app/api/translator/save/route-663014002ada02ea.js +1 -0
  723. package/app/.next/static/chunks/app/api/translator/send/route-663014002ada02ea.js +1 -0
  724. package/app/.next/static/chunks/app/api/translator/translate/route-663014002ada02ea.js +1 -0
  725. package/app/.next/static/chunks/app/api/tunnel/disable/route-663014002ada02ea.js +1 -0
  726. package/app/.next/static/chunks/app/api/tunnel/enable/route-663014002ada02ea.js +1 -0
  727. package/app/.next/static/chunks/app/api/tunnel/status/route-663014002ada02ea.js +1 -0
  728. package/app/.next/static/chunks/app/api/tunnel/tailscale-check/route-663014002ada02ea.js +1 -0
  729. package/app/.next/static/chunks/app/api/tunnel/tailscale-disable/route-663014002ada02ea.js +1 -0
  730. package/app/.next/static/chunks/app/api/tunnel/tailscale-enable/route-663014002ada02ea.js +1 -0
  731. package/app/.next/static/chunks/app/api/tunnel/tailscale-install/route-663014002ada02ea.js +1 -0
  732. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-663014002ada02ea.js +1 -0
  733. package/app/.next/static/chunks/app/api/usage/chart/route-663014002ada02ea.js +1 -0
  734. package/app/.next/static/chunks/app/api/usage/history/route-663014002ada02ea.js +1 -0
  735. package/app/.next/static/chunks/app/api/usage/logs/route-663014002ada02ea.js +1 -0
  736. package/app/.next/static/chunks/app/api/usage/providers/route-663014002ada02ea.js +1 -0
  737. package/app/.next/static/chunks/app/api/usage/report/route-663014002ada02ea.js +1 -0
  738. package/app/.next/static/chunks/app/api/usage/request-details/route-663014002ada02ea.js +1 -0
  739. package/app/.next/static/chunks/app/api/usage/request-logs/route-663014002ada02ea.js +1 -0
  740. package/app/.next/static/chunks/app/api/usage/stats/route-663014002ada02ea.js +1 -0
  741. package/app/.next/static/chunks/app/api/usage/stream/route-663014002ada02ea.js +1 -0
  742. package/app/.next/static/chunks/app/api/v1/api/chat/route-663014002ada02ea.js +1 -0
  743. package/app/.next/static/chunks/app/api/v1/audio/speech/route-663014002ada02ea.js +1 -0
  744. package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-663014002ada02ea.js +1 -0
  745. package/app/.next/static/chunks/app/api/v1/audio/voices/route-663014002ada02ea.js +1 -0
  746. package/app/.next/static/chunks/app/api/v1/chat/completions/route-663014002ada02ea.js +1 -0
  747. package/app/.next/static/chunks/app/api/v1/embeddings/route-663014002ada02ea.js +1 -0
  748. package/app/.next/static/chunks/app/api/v1/images/generations/route-663014002ada02ea.js +1 -0
  749. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-663014002ada02ea.js +1 -0
  750. package/app/.next/static/chunks/app/api/v1/messages/route-663014002ada02ea.js +1 -0
  751. package/app/.next/static/chunks/app/api/v1/models/[kind]/route-663014002ada02ea.js +1 -0
  752. package/app/.next/static/chunks/app/api/v1/models/info/route-663014002ada02ea.js +1 -0
  753. package/app/.next/static/chunks/app/api/v1/models/route-663014002ada02ea.js +1 -0
  754. package/app/.next/static/chunks/app/api/v1/responses/compact/route-663014002ada02ea.js +1 -0
  755. package/app/.next/static/chunks/app/api/v1/responses/route-663014002ada02ea.js +1 -0
  756. package/app/.next/static/chunks/app/api/v1/route-663014002ada02ea.js +1 -0
  757. package/app/.next/static/chunks/app/api/v1/search/route-663014002ada02ea.js +1 -0
  758. package/app/.next/static/chunks/app/api/v1/web/fetch/route-663014002ada02ea.js +1 -0
  759. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-663014002ada02ea.js +1 -0
  760. package/app/.next/static/chunks/app/api/v1beta/models/route-663014002ada02ea.js +1 -0
  761. package/app/.next/static/chunks/app/api/version/route-663014002ada02ea.js +1 -0
  762. package/app/.next/static/chunks/app/api/version/shutdown/route-663014002ada02ea.js +1 -0
  763. package/app/.next/static/chunks/app/api/version/update/route-663014002ada02ea.js +1 -0
  764. package/app/.next/static/chunks/app/layout-c8d22221de81bd88.js +1 -0
  765. package/app/.next/static/chunks/app/manifest.webmanifest/route-663014002ada02ea.js +1 -0
  766. package/app/.next/static/chunks/app/page-663014002ada02ea.js +1 -0
  767. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-663014002ada02ea.js +1 -0
  768. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-663014002ada02ea.js +1 -0
  769. package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-663014002ada02ea.js +1 -0
  770. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-663014002ada02ea.js +1 -0
  771. package/app/.next/static/chunks/{webpack-c2bac8d80aa27536.js → webpack-3c02ff02ae0645c5.js} +1 -1
  772. package/app/.next/static/css/aadc31e0cf060839.css +1 -0
  773. package/app/.next/static/css/d73c8ccb42eb9a7d.css +1 -0
  774. package/app/.next/static/media/6c596dfcddeca1e9-s.p.woff2 +0 -0
  775. package/app/.next/static/zOWV4f8WCIf4AVjdpAv5I/_buildManifest.js +1 -0
  776. package/app/open-sse/config/providerModels.js +12 -1
  777. package/app/open-sse/config/providers.js +2 -2
  778. package/app/open-sse/config/runtimeConfig.js +2 -2
  779. package/app/open-sse/executors/base.js +6 -6
  780. package/app/open-sse/executors/codex.js +13 -0
  781. package/app/open-sse/executors/default.js +1 -4
  782. package/app/open-sse/executors/index.js +3 -0
  783. package/app/open-sse/executors/qoder.js +6 -6
  784. package/app/open-sse/executors/xiaomi-tokenplan.js +19 -0
  785. package/app/open-sse/handlers/chatCore/nonStreamingHandler.js +6 -2
  786. package/app/open-sse/handlers/chatCore/sseToJsonHandler.js +2 -1
  787. package/app/open-sse/handlers/chatCore/streamingHandler.js +6 -1
  788. package/app/open-sse/handlers/chatCore.js +11 -4
  789. package/app/open-sse/handlers/imageProviders/codex.js +2 -2
  790. package/app/open-sse/index.js +8 -0
  791. package/app/open-sse/rtk/cavemanPrompts.js +46 -3
  792. package/app/open-sse/services/model.js +2 -0
  793. package/app/open-sse/services/oauthCredentialManager.js +151 -0
  794. package/app/open-sse/services/tokenRefresh.js +68 -56
  795. package/app/open-sse/transformer/streamToJsonConverter.js +1 -1
  796. package/app/open-sse/translator/request/openai-to-claude.js +26 -6
  797. package/app/open-sse/translator/request/openai-to-kiro.js +245 -39
  798. package/app/open-sse/translator/response/openai-responses.js +1 -1
  799. package/app/open-sse/utils/claudeCloaking.js +21 -8
  800. package/app/open-sse/utils/reasoningContentInjector.js +4 -2
  801. package/app/open-sse/utils/responsesStreamHelpers.js +49 -0
  802. package/app/open-sse/utils/stream.js +61 -3
  803. package/app/open-sse/utils/streamHandler.js +26 -16
  804. package/app/package.json +1 -1
  805. package/app/public/i18n/literals/ar.json +2 -1
  806. package/app/public/i18n/literals/bn.json +2 -1
  807. package/app/public/i18n/literals/cs.json +2 -1
  808. package/app/public/i18n/literals/da.json +2 -1
  809. package/app/public/i18n/literals/de.json +2 -1
  810. package/app/public/i18n/literals/el.json +2 -1
  811. package/app/public/i18n/literals/es.json +2 -1
  812. package/app/public/i18n/literals/fi.json +2 -1
  813. package/app/public/i18n/literals/fr.json +2 -1
  814. package/app/public/i18n/literals/he.json +2 -1
  815. package/app/public/i18n/literals/hi.json +2 -1
  816. package/app/public/i18n/literals/hu.json +2 -1
  817. package/app/public/i18n/literals/id.json +2 -1
  818. package/app/public/i18n/literals/it.json +2 -1
  819. package/app/public/i18n/literals/ja.json +2 -1
  820. package/app/public/i18n/literals/ko.json +2 -1
  821. package/app/public/i18n/literals/nl.json +2 -1
  822. package/app/public/i18n/literals/no.json +2 -1
  823. package/app/public/i18n/literals/pl.json +2 -1
  824. package/app/public/i18n/literals/pt-BR.json +2 -1
  825. package/app/public/i18n/literals/pt-PT.json +2 -1
  826. package/app/public/i18n/literals/ro.json +2 -1
  827. package/app/public/i18n/literals/ru.json +2 -1
  828. package/app/public/i18n/literals/sv.json +2 -1
  829. package/app/public/i18n/literals/th.json +2 -1
  830. package/app/public/i18n/literals/tl.json +2 -1
  831. package/app/public/i18n/literals/tr.json +2 -1
  832. package/app/public/i18n/literals/uk.json +2 -1
  833. package/app/public/i18n/literals/ur.json +2 -1
  834. package/app/public/i18n/literals/vi.json +2 -1
  835. package/app/public/i18n/literals/zh-CN.json +5 -1
  836. package/app/public/i18n/literals/zh-TW.json +2 -1
  837. package/app/server.js +1 -1
  838. package/app/src/mitm/config.js +16 -2
  839. package/app/src/mitm/handlers/base.js +159 -1
  840. package/app/src/mitm/server.js +66 -41
  841. package/app/src/mitm/tokenPool.js +325 -75
  842. package/app/src/mitm/tokenSwapRetry.js +108 -0
  843. package/app/src/shared/constants/cliTools.js +15 -2
  844. package/app/src/shared/constants/locales.js +36 -0
  845. package/app/src/shared/constants/pricing.js +2 -0
  846. package/package.json +1 -1
  847. package/app/.next/server/chunks/1569.js +0 -1
  848. package/app/.next/server/chunks/5221.js +0 -1
  849. package/app/.next/server/chunks/6251.js +0 -1
  850. package/app/.next/server/chunks/8590.js +0 -1
  851. package/app/.next/server/chunks/9609.js +0 -1
  852. package/app/.next/static/_ov3ss73nyGZ3qfQCh00M/_buildManifest.js +0 -1
  853. package/app/.next/static/chunks/1321-73f571281e7cd042.js +0 -1
  854. package/app/.next/static/chunks/2589-d4f1afc5e9f94887.js +0 -3
  855. package/app/.next/static/chunks/5497-6693628388854075.js +0 -7
  856. package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/page-ff34887f020e7a37.js +0 -1
  857. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-90eac92387b41cd4.js +0 -6
  858. package/app/.next/static/chunks/app/api/antigravity-targets/route-9e73c1f718efb820.js +0 -1
  859. package/app/.next/static/chunks/app/api/antigravity-tools/import/route-9e73c1f718efb820.js +0 -1
  860. package/app/.next/static/chunks/app/api/antigravity-tools/import-refresh-tokens/route-9e73c1f718efb820.js +0 -1
  861. package/app/.next/static/chunks/app/api/auth/login/route-9e73c1f718efb820.js +0 -1
  862. package/app/.next/static/chunks/app/api/auth/logout/route-9e73c1f718efb820.js +0 -1
  863. package/app/.next/static/chunks/app/api/auth/oidc/callback/route-9e73c1f718efb820.js +0 -1
  864. package/app/.next/static/chunks/app/api/auth/oidc/start/route-9e73c1f718efb820.js +0 -1
  865. package/app/.next/static/chunks/app/api/auth/oidc/test/route-9e73c1f718efb820.js +0 -1
  866. package/app/.next/static/chunks/app/api/auth/status/route-9e73c1f718efb820.js +0 -1
  867. package/app/.next/static/chunks/app/api/cli-tools/all-statuses/route-9e73c1f718efb820.js +0 -1
  868. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-9e73c1f718efb820.js +0 -1
  869. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-9e73c1f718efb820.js +0 -1
  870. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-9e73c1f718efb820.js +0 -1
  871. package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-9e73c1f718efb820.js +0 -1
  872. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-9e73c1f718efb820.js +0 -1
  873. package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-9e73c1f718efb820.js +0 -1
  874. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-9e73c1f718efb820.js +0 -1
  875. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-9e73c1f718efb820.js +0 -1
  876. package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-9e73c1f718efb820.js +0 -1
  877. package/app/.next/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-9e73c1f718efb820.js +0 -1
  878. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-9e73c1f718efb820.js +0 -1
  879. package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-9e73c1f718efb820.js +0 -1
  880. package/app/.next/static/chunks/app/api/cli-tools/jcode-settings/route-9e73c1f718efb820.js +0 -1
  881. package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-9e73c1f718efb820.js +0 -1
  882. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-9e73c1f718efb820.js +0 -1
  883. package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-9e73c1f718efb820.js +0 -1
  884. package/app/.next/static/chunks/app/api/combos/[id]/route-9e73c1f718efb820.js +0 -1
  885. package/app/.next/static/chunks/app/api/combos/route-9e73c1f718efb820.js +0 -1
  886. package/app/.next/static/chunks/app/api/donate/route-9e73c1f718efb820.js +0 -1
  887. package/app/.next/static/chunks/app/api/health/route-9e73c1f718efb820.js +0 -1
  888. package/app/.next/static/chunks/app/api/init/route-9e73c1f718efb820.js +0 -1
  889. package/app/.next/static/chunks/app/api/internal/account-health/route-9e73c1f718efb820.js +0 -1
  890. package/app/.next/static/chunks/app/api/internal/request-detail/route-9e73c1f718efb820.js +0 -1
  891. package/app/.next/static/chunks/app/api/internal/usage/route-9e73c1f718efb820.js +0 -1
  892. package/app/.next/static/chunks/app/api/keys/[id]/reset-usage/route-9e73c1f718efb820.js +0 -1
  893. package/app/.next/static/chunks/app/api/keys/[id]/route-9e73c1f718efb820.js +0 -1
  894. package/app/.next/static/chunks/app/api/keys/[id]/usage/route-9e73c1f718efb820.js +0 -1
  895. package/app/.next/static/chunks/app/api/keys/route-9e73c1f718efb820.js +0 -1
  896. package/app/.next/static/chunks/app/api/locale/route-9e73c1f718efb820.js +0 -1
  897. package/app/.next/static/chunks/app/api/mcp/[plugin]/message/route-9e73c1f718efb820.js +0 -1
  898. package/app/.next/static/chunks/app/api/mcp/[plugin]/sse/route-9e73c1f718efb820.js +0 -1
  899. package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-9e73c1f718efb820.js +0 -1
  900. package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-9e73c1f718efb820.js +0 -1
  901. package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-9e73c1f718efb820.js +0 -1
  902. package/app/.next/static/chunks/app/api/media-providers/tts/minimax/voices/route-9e73c1f718efb820.js +0 -1
  903. package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-9e73c1f718efb820.js +0 -1
  904. package/app/.next/static/chunks/app/api/models/alias/route-9e73c1f718efb820.js +0 -1
  905. package/app/.next/static/chunks/app/api/models/availability/route-9e73c1f718efb820.js +0 -1
  906. package/app/.next/static/chunks/app/api/models/custom/route-9e73c1f718efb820.js +0 -1
  907. package/app/.next/static/chunks/app/api/models/disabled/route-9e73c1f718efb820.js +0 -1
  908. package/app/.next/static/chunks/app/api/models/route-9e73c1f718efb820.js +0 -1
  909. package/app/.next/static/chunks/app/api/models/test/route-9e73c1f718efb820.js +0 -1
  910. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-9e73c1f718efb820.js +0 -1
  911. package/app/.next/static/chunks/app/api/oauth/codex/import-token/route-9e73c1f718efb820.js +0 -1
  912. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-9e73c1f718efb820.js +0 -1
  913. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-9e73c1f718efb820.js +0 -1
  914. package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-9e73c1f718efb820.js +0 -1
  915. package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-9e73c1f718efb820.js +0 -1
  916. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-9e73c1f718efb820.js +0 -1
  917. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-9e73c1f718efb820.js +0 -1
  918. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-9e73c1f718efb820.js +0 -1
  919. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-9e73c1f718efb820.js +0 -1
  920. package/app/.next/static/chunks/app/api/pricing/route-9e73c1f718efb820.js +0 -1
  921. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-9e73c1f718efb820.js +0 -1
  922. package/app/.next/static/chunks/app/api/provider-nodes/route-9e73c1f718efb820.js +0 -1
  923. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-9e73c1f718efb820.js +0 -1
  924. package/app/.next/static/chunks/app/api/providers/[id]/models/route-9e73c1f718efb820.js +0 -1
  925. package/app/.next/static/chunks/app/api/providers/[id]/route-9e73c1f718efb820.js +0 -1
  926. package/app/.next/static/chunks/app/api/providers/[id]/test/route-9e73c1f718efb820.js +0 -1
  927. package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-9e73c1f718efb820.js +0 -1
  928. package/app/.next/static/chunks/app/api/providers/client/route-9e73c1f718efb820.js +0 -1
  929. package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-9e73c1f718efb820.js +0 -1
  930. package/app/.next/static/chunks/app/api/providers/route-9e73c1f718efb820.js +0 -1
  931. package/app/.next/static/chunks/app/api/providers/suggested-models/route-9e73c1f718efb820.js +0 -1
  932. package/app/.next/static/chunks/app/api/providers/test-batch/route-9e73c1f718efb820.js +0 -1
  933. package/app/.next/static/chunks/app/api/providers/validate/route-9e73c1f718efb820.js +0 -1
  934. package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-9e73c1f718efb820.js +0 -1
  935. package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-9e73c1f718efb820.js +0 -1
  936. package/app/.next/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-9e73c1f718efb820.js +0 -1
  937. package/app/.next/static/chunks/app/api/proxy-pools/deno-deploy/route-9e73c1f718efb820.js +0 -1
  938. package/app/.next/static/chunks/app/api/proxy-pools/route-9e73c1f718efb820.js +0 -1
  939. package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-9e73c1f718efb820.js +0 -1
  940. package/app/.next/static/chunks/app/api/settings/database/route-9e73c1f718efb820.js +0 -1
  941. package/app/.next/static/chunks/app/api/settings/proxy-test/route-9e73c1f718efb820.js +0 -1
  942. package/app/.next/static/chunks/app/api/settings/require-login/route-9e73c1f718efb820.js +0 -1
  943. package/app/.next/static/chunks/app/api/settings/route-9e73c1f718efb820.js +0 -1
  944. package/app/.next/static/chunks/app/api/shutdown/route-9e73c1f718efb820.js +0 -1
  945. package/app/.next/static/chunks/app/api/tags/route-9e73c1f718efb820.js +0 -1
  946. package/app/.next/static/chunks/app/api/translator/console-logs/route-9e73c1f718efb820.js +0 -1
  947. package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-9e73c1f718efb820.js +0 -1
  948. package/app/.next/static/chunks/app/api/translator/load/route-9e73c1f718efb820.js +0 -1
  949. package/app/.next/static/chunks/app/api/translator/save/route-9e73c1f718efb820.js +0 -1
  950. package/app/.next/static/chunks/app/api/translator/send/route-9e73c1f718efb820.js +0 -1
  951. package/app/.next/static/chunks/app/api/translator/translate/route-9e73c1f718efb820.js +0 -1
  952. package/app/.next/static/chunks/app/api/tunnel/disable/route-9e73c1f718efb820.js +0 -1
  953. package/app/.next/static/chunks/app/api/tunnel/enable/route-9e73c1f718efb820.js +0 -1
  954. package/app/.next/static/chunks/app/api/tunnel/status/route-9e73c1f718efb820.js +0 -1
  955. package/app/.next/static/chunks/app/api/tunnel/tailscale-check/route-9e73c1f718efb820.js +0 -1
  956. package/app/.next/static/chunks/app/api/tunnel/tailscale-disable/route-9e73c1f718efb820.js +0 -1
  957. package/app/.next/static/chunks/app/api/tunnel/tailscale-enable/route-9e73c1f718efb820.js +0 -1
  958. package/app/.next/static/chunks/app/api/tunnel/tailscale-install/route-9e73c1f718efb820.js +0 -1
  959. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-9e73c1f718efb820.js +0 -1
  960. package/app/.next/static/chunks/app/api/usage/chart/route-9e73c1f718efb820.js +0 -1
  961. package/app/.next/static/chunks/app/api/usage/history/route-9e73c1f718efb820.js +0 -1
  962. package/app/.next/static/chunks/app/api/usage/logs/route-9e73c1f718efb820.js +0 -1
  963. package/app/.next/static/chunks/app/api/usage/providers/route-9e73c1f718efb820.js +0 -1
  964. package/app/.next/static/chunks/app/api/usage/report/route-9e73c1f718efb820.js +0 -1
  965. package/app/.next/static/chunks/app/api/usage/request-details/route-9e73c1f718efb820.js +0 -1
  966. package/app/.next/static/chunks/app/api/usage/request-logs/route-9e73c1f718efb820.js +0 -1
  967. package/app/.next/static/chunks/app/api/usage/stats/route-9e73c1f718efb820.js +0 -1
  968. package/app/.next/static/chunks/app/api/usage/stream/route-9e73c1f718efb820.js +0 -1
  969. package/app/.next/static/chunks/app/api/v1/api/chat/route-9e73c1f718efb820.js +0 -1
  970. package/app/.next/static/chunks/app/api/v1/audio/speech/route-9e73c1f718efb820.js +0 -1
  971. package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-9e73c1f718efb820.js +0 -1
  972. package/app/.next/static/chunks/app/api/v1/audio/voices/route-9e73c1f718efb820.js +0 -1
  973. package/app/.next/static/chunks/app/api/v1/chat/completions/route-9e73c1f718efb820.js +0 -1
  974. package/app/.next/static/chunks/app/api/v1/embeddings/route-9e73c1f718efb820.js +0 -1
  975. package/app/.next/static/chunks/app/api/v1/images/generations/route-9e73c1f718efb820.js +0 -1
  976. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-9e73c1f718efb820.js +0 -1
  977. package/app/.next/static/chunks/app/api/v1/messages/route-9e73c1f718efb820.js +0 -1
  978. package/app/.next/static/chunks/app/api/v1/models/[kind]/route-9e73c1f718efb820.js +0 -1
  979. package/app/.next/static/chunks/app/api/v1/models/info/route-9e73c1f718efb820.js +0 -1
  980. package/app/.next/static/chunks/app/api/v1/models/route-9e73c1f718efb820.js +0 -1
  981. package/app/.next/static/chunks/app/api/v1/responses/compact/route-9e73c1f718efb820.js +0 -1
  982. package/app/.next/static/chunks/app/api/v1/responses/route-9e73c1f718efb820.js +0 -1
  983. package/app/.next/static/chunks/app/api/v1/route-9e73c1f718efb820.js +0 -1
  984. package/app/.next/static/chunks/app/api/v1/search/route-9e73c1f718efb820.js +0 -1
  985. package/app/.next/static/chunks/app/api/v1/web/fetch/route-9e73c1f718efb820.js +0 -1
  986. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-9e73c1f718efb820.js +0 -1
  987. package/app/.next/static/chunks/app/api/v1beta/models/route-9e73c1f718efb820.js +0 -1
  988. package/app/.next/static/chunks/app/api/version/route-9e73c1f718efb820.js +0 -1
  989. package/app/.next/static/chunks/app/api/version/shutdown/route-9e73c1f718efb820.js +0 -1
  990. package/app/.next/static/chunks/app/api/version/update/route-9e73c1f718efb820.js +0 -1
  991. package/app/.next/static/chunks/app/layout-35b23f7e08fe3978.js +0 -1
  992. package/app/.next/static/chunks/app/manifest.webmanifest/route-9e73c1f718efb820.js +0 -1
  993. package/app/.next/static/chunks/app/page-9e73c1f718efb820.js +0 -1
  994. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-9e73c1f718efb820.js +0 -1
  995. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-9e73c1f718efb820.js +0 -1
  996. package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-9e73c1f718efb820.js +0 -1
  997. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-9e73c1f718efb820.js +0 -1
  998. package/app/.next/static/css/0f03023a765dc337.css +0 -1
  999. package/app/.next/static/css/440b3581c215aef0.css +0 -1
  1000. package/app/.next/static/media/19cfc7226ec3afaa-s.woff2 +0 -0
  1001. package/app/.next/static/media/21350d82a1f187e9-s.woff2 +0 -0
  1002. package/app/.next/static/media/8e9860b6e62d6359-s.woff2 +0 -0
  1003. package/app/.next/static/media/ba9851c3c22cd980-s.woff2 +0 -0
  1004. package/app/.next/static/media/c5fe6dc8356a8c31-s.woff2 +0 -0
  1005. package/app/.next/static/media/df0a9ae256c0569c-s.woff2 +0 -0
  1006. package/app/.next/static/media/e4af272ccee01ff0-s.p.woff2 +0 -0
  1007. /package/app/.next/static/{_ov3ss73nyGZ3qfQCh00M → zOWV4f8WCIf4AVjdpAv5I}/_ssgManifest.js +0 -0
@@ -7,27 +7,39 @@
7
7
  const fs = require("fs");
8
8
  const path = require("path");
9
9
  const http = require("http");
10
+ const crypto = require("crypto");
11
+ const { machineIdSync } = require("node-machine-id");
10
12
  const { DATA_DIR } = require("./paths");
11
13
  const { log } = require("./logger");
12
14
  const { updateJsonFileSync } = require("../lib/dbFileSafety.js");
13
15
 
14
16
  const DB_FILE = path.join(DATA_DIR, "db.json");
17
+ const MACHINE_ID_FILE = path.join(DATA_DIR, "machine-id");
18
+ const AUTH_DIR = path.join(DATA_DIR, "auth");
19
+ const CLI_SECRET_FILE = path.join(AUTH_DIR, "cli-secret");
20
+ const CLI_TOKEN_HEADER = "x-9r-cli-token";
21
+ const CLI_TOKEN_SALT = "9r-cli-auth";
15
22
  const TOKEN_EXPIRY_BUFFER_MS = 5 * 60 * 1000; // refresh 5min before expiry
16
23
  const ROUTER_PORT = process.env.PORT || 20128;
17
24
  const DEFAULT_COOLDOWN_MS = 2 * 60 * 1000;
18
- const DEFAULT_AUTH_COOLDOWN_MS = 10 * 60 * 1000;
25
+ const DEFAULT_AUTH_COOLDOWN_MS = 2 * 60 * 1000;
19
26
  const DEFAULT_STRIKE_THRESHOLD = 3; // consecutive 429s before hard cooldown
20
27
  const CAPACITY_EXHAUSTED_COOLDOWN_MS = 60 * 1000;
21
28
  const SONNET_46_MODEL_KEY = "claude-sonnet-4-6";
29
+ const REFRESH_RESPONSE_BODY_LIMIT = 500;
22
30
  // Must match DEFAULT_AG_503_RETRY_COUNT in open-sse/config/runtimeConfig.js
23
- const DEFAULT_503_RETRY_COUNT = 3; // default 503 retries per account before switching
31
+ const DEFAULT_503_RETRY_COUNT = 3; // default 503 retries per account before switching
24
32
 
25
33
  // ── In-memory state ──────────────────────────────────────────
26
- const cooldownMap = {}; // { [connectionId]: expiresTimestamp } quota/general cooldown
27
- const authCooldownMap = {}; // { [connectionId]: expiresTimestamp } invalid_token/auth cooldown
28
- const modelCooldownMap = {}; // { [connectionId]: { [model]: expiresTimestamp } }
29
- const strikeMap = {}; // { [connectionId]: consecutiveHitCount }
30
- const modelStrikeMap = {}; // { [connectionId]: { [model]: consecutiveHitCount } }
34
+ const cooldownMap = {}; // { [connectionId]: expiresTimestamp } quota/general cooldown
35
+ const authCooldownMap = {}; // { [connectionId]: expiresTimestamp } invalid_token/auth cooldown
36
+ const modelCooldownMap = {}; // { [connectionId]: { [model]: expiresTimestamp } }
37
+ const strikeMap = {}; // { [connectionId]: consecutiveHitCount }
38
+ const modelStrikeMap = {}; // { [connectionId]: { [model]: consecutiveHitCount } }
39
+ const refreshRequestMap = new Map(); // { [connectionId:mode]: Promise<refreshResult> }
40
+ let cachedRawMachineId = null;
41
+ let cachedCliSecret = null;
42
+ let cachedCliToken = null;
31
43
  // ── Strike + cooldown management ─────────────────────────────
32
44
  // Upstream often returns false-positive 429s. Instead of locking
33
45
  // an account on the first hit, we count consecutive strikes.
@@ -38,7 +50,9 @@ function getStrikeThreshold() {
38
50
  if (!fs.existsSync(DB_FILE)) return DEFAULT_STRIKE_THRESHOLD;
39
51
  const db = JSON.parse(fs.readFileSync(DB_FILE, "utf-8"));
40
52
  return db.settings?.cooldownStrikeThreshold || DEFAULT_STRIKE_THRESHOLD;
41
- } catch { return DEFAULT_STRIKE_THRESHOLD; }
53
+ } catch {
54
+ return DEFAULT_STRIKE_THRESHOLD;
55
+ }
42
56
  }
43
57
 
44
58
  /**
@@ -55,11 +69,15 @@ function recordStrike(connId, durationMs) {
55
69
  const ms = durationMs || DEFAULT_COOLDOWN_MS;
56
70
  cooldownMap[connId] = Date.now() + ms;
57
71
  delete strikeMap[connId];
58
- log(`⏸ [token-pool] cooldown: ${connId.slice(0, 8)}… for ${Math.ceil(ms / 60000)}m (after ${count} strikes)`);
72
+ log(
73
+ `⏸ [token-pool] cooldown: ${connId.slice(0, 8)}… for ${Math.ceil(ms / 60000)}m (after ${count} strikes)`,
74
+ );
59
75
  return true;
60
76
  }
61
77
 
62
- log(`⚡ [token-pool] strike ${count}/${threshold}: ${connId.slice(0, 8)}… (not locked yet)`);
78
+ log(
79
+ `⚡ [token-pool] strike ${count}/${threshold}: ${connId.slice(0, 8)}… (not locked yet)`,
80
+ );
63
81
  return false;
64
82
  }
65
83
 
@@ -71,13 +89,17 @@ function setCooldown(connId, durationMs) {
71
89
  const ms = durationMs || DEFAULT_COOLDOWN_MS;
72
90
  cooldownMap[connId] = Date.now() + ms;
73
91
  delete strikeMap[connId];
74
- log(`⏸ [token-pool] cooldown: ${connId.slice(0, 8)}… for ${Math.ceil(ms / 60000)}m`);
92
+ log(
93
+ `⏸ [token-pool] cooldown: ${connId.slice(0, 8)}… for ${Math.ceil(ms / 60000)}m`,
94
+ );
75
95
  }
76
96
 
77
97
  function setAuthCooldown(connId, durationMs) {
78
98
  const ms = durationMs || DEFAULT_AUTH_COOLDOWN_MS;
79
99
  authCooldownMap[connId] = Date.now() + ms;
80
- log(`🔒 [token-pool] auth-cooldown: ${connId.slice(0, 8)}… for ${Math.ceil(ms / 60000)}m`);
100
+ log(
101
+ `🔒 [token-pool] auth-cooldown: ${connId.slice(0, 8)}… for ${Math.ceil(ms / 60000)}m`,
102
+ );
81
103
  }
82
104
 
83
105
  function getMapExpiry(map, connId) {
@@ -123,11 +145,15 @@ function recordModelStrike(connId, model, durationMs) {
123
145
  if (!modelCooldownMap[connId]) modelCooldownMap[connId] = {};
124
146
  modelCooldownMap[connId][key] = Date.now() + ms;
125
147
  delete modelStrikeMap[connId][key];
126
- log(`⏸ [token-pool] model-cooldown: ${connId.slice(0, 8)}… model="${key}" for ${Math.ceil(ms / 60000)}m (after ${count} strikes)`);
148
+ log(
149
+ `⏸ [token-pool] model-cooldown: ${connId.slice(0, 8)}… model="${key}" for ${Math.ceil(ms / 60000)}m (after ${count} strikes)`,
150
+ );
127
151
  return true;
128
152
  }
129
153
 
130
- log(`⚡ [token-pool] model-strike ${count}/${threshold}: ${connId.slice(0, 8)}… model="${key}" (not locked yet)`);
154
+ log(
155
+ `⚡ [token-pool] model-strike ${count}/${threshold}: ${connId.slice(0, 8)}… model="${key}" (not locked yet)`,
156
+ );
131
157
  return false;
132
158
  }
133
159
 
@@ -142,7 +168,9 @@ function setModelCooldown(connId, model, durationMs) {
142
168
  if (!modelCooldownMap[connId]) modelCooldownMap[connId] = {};
143
169
  modelCooldownMap[connId][key] = Date.now() + ms;
144
170
  if (modelStrikeMap[connId]?.[key]) delete modelStrikeMap[connId][key];
145
- log(`⏸ [token-pool] model-cooldown: ${connId.slice(0, 8)}… model="${key}" for ${Math.ceil(ms / 60000)}m`);
171
+ log(
172
+ `⏸ [token-pool] model-cooldown: ${connId.slice(0, 8)}… model="${key}" for ${Math.ceil(ms / 60000)}m`,
173
+ );
146
174
  }
147
175
 
148
176
  function isModelExhausted(connId, model) {
@@ -166,7 +194,9 @@ function isStoredModelQuotaExhausted(connection, model) {
166
194
  const modelStatus = status[model];
167
195
  if (!modelStatus || typeof modelStatus !== "object") return false;
168
196
 
169
- return modelStatus.exhausted === true || modelStatus.remainingPercentage === 0;
197
+ return (
198
+ modelStatus.exhausted === true || modelStatus.remainingPercentage === 0
199
+ );
170
200
  }
171
201
 
172
202
  function isAntigravitySonnetZeroAutoDisableEnabled(db) {
@@ -178,7 +208,9 @@ function autoDisableAccountIfSonnetQuotaZero(connection, failure = {}) {
178
208
 
179
209
  try {
180
210
  const now = new Date().toISOString();
181
- const statusLabel = failure.statusCode ? `status ${failure.statusCode}` : "request failure";
211
+ const statusLabel = failure.statusCode
212
+ ? `status ${failure.statusCode}`
213
+ : "request failure";
182
214
  const disabled = updateConnectionInDb(connection.id, (conn, db) => {
183
215
  if (!isAntigravitySonnetZeroAutoDisableEnabled(db)) return false;
184
216
  if (conn.isActive === false) return false;
@@ -193,7 +225,10 @@ function autoDisableAccountIfSonnetQuotaZero(connection, failure = {}) {
193
225
  });
194
226
  });
195
227
 
196
- if (disabled) log(`⏸ [token-pool] auto-disabled: ${connection.id.slice(0, 8)}… Claude Sonnet 4.6 quota is 0%`);
228
+ if (disabled)
229
+ log(
230
+ `⏸ [token-pool] auto-disabled: ${connection.id.slice(0, 8)}… Claude Sonnet 4.6 quota is 0%`,
231
+ );
197
232
  return disabled;
198
233
  } catch (e) {
199
234
  log(`⚠️ [token-pool] auto-disable check failed: ${e.message}`);
@@ -208,7 +243,9 @@ function getTokenSwapStrategy() {
208
243
  if (!fs.existsSync(DB_FILE)) return "round-robin";
209
244
  const db = JSON.parse(fs.readFileSync(DB_FILE, "utf-8"));
210
245
  return db.settings?.tokenSwapStrategy || "round-robin";
211
- } catch { return "round-robin"; }
246
+ } catch {
247
+ return "round-robin";
248
+ }
212
249
  }
213
250
 
214
251
  // ── Quota cooldown parser ────────────────────────────────────
@@ -221,9 +258,9 @@ function parseQuotaCooldown(errorBody) {
221
258
  const msg = json?.error?.message || json?.message || "";
222
259
  const reason = String(
223
260
  json?.error?.details?.[0]?.reason ||
224
- json?.error?.reason ||
225
- json?.reason ||
226
- ""
261
+ json?.error?.reason ||
262
+ json?.reason ||
263
+ "",
227
264
  ).toUpperCase();
228
265
  const match = msg.match(/reset after (\d+h)?(\d+m)?(\d+s)?/i);
229
266
  if (match) {
@@ -236,12 +273,18 @@ function parseQuotaCooldown(errorBody) {
236
273
 
237
274
  if (
238
275
  reason === "MODEL_CAPACITY_EXHAUSTED" ||
239
- /no capacity available for model|model capacity exhausted|capacity exhausted/i.test(msg)
276
+ /no capacity available for model|model capacity exhausted|capacity exhausted/i.test(
277
+ msg,
278
+ )
240
279
  ) {
241
280
  return CAPACITY_EXHAUSTED_COOLDOWN_MS;
242
281
  }
243
282
  } catch {
244
- if (/no capacity available for model|model capacity exhausted|capacity exhausted/i.test(raw)) {
283
+ if (
284
+ /no capacity available for model|model capacity exhausted|capacity exhausted/i.test(
285
+ raw,
286
+ )
287
+ ) {
245
288
  return CAPACITY_EXHAUSTED_COOLDOWN_MS;
246
289
  }
247
290
  }
@@ -270,7 +313,9 @@ function getAntigravity503RetryCount(connectionOverride) {
270
313
  if (!fs.existsSync(DB_FILE)) return DEFAULT_503_RETRY_COUNT;
271
314
  const db = JSON.parse(fs.readFileSync(DB_FILE, "utf-8"));
272
315
  return db.settings?.antigravity503RetryCount ?? DEFAULT_503_RETRY_COUNT;
273
- } catch { return DEFAULT_503_RETRY_COUNT; }
316
+ } catch {
317
+ return DEFAULT_503_RETRY_COUNT;
318
+ }
274
319
  }
275
320
 
276
321
  // ── Read connections from db.json (sync) ─────────────────────
@@ -283,16 +328,23 @@ function getActiveConnections(provider) {
283
328
  const now = Date.now();
284
329
 
285
330
  return connections
286
- .filter(c =>
287
- c.provider === provider &&
288
- c.isActive !== false &&
289
- c.accessToken &&
290
- !isInCooldown(c.id) &&
291
- // Skip expired tokens that have no refresh token
292
- !(c.expiresAt && new Date(c.expiresAt).getTime() < now && !c.refreshToken)
331
+ .filter(
332
+ (c) =>
333
+ c.provider === provider &&
334
+ c.isActive !== false &&
335
+ c.accessToken &&
336
+ !isInCooldown(c.id) &&
337
+ // Skip expired tokens that have no refresh token
338
+ !(
339
+ c.expiresAt &&
340
+ new Date(c.expiresAt).getTime() < now &&
341
+ !c.refreshToken
342
+ ),
293
343
  )
294
344
  .sort((a, b) => (a.priority || 999) - (b.priority || 999));
295
- } catch { return []; }
345
+ } catch {
346
+ return [];
347
+ }
296
348
  }
297
349
 
298
350
  function getTokenSwapAvailabilitySummary(provider, model) {
@@ -303,12 +355,14 @@ function getTokenSwapAvailabilitySummary(provider, model) {
303
355
  eligible: 0,
304
356
  skipped: 0,
305
357
  reasons: {},
306
- summaryText: "0/0 account(s) eligible"
358
+ summaryText: "0/0 account(s) eligible",
307
359
  };
308
360
  }
309
361
 
310
362
  const db = JSON.parse(fs.readFileSync(DB_FILE, "utf-8"));
311
- const connections = (db.providerConnections || []).filter(c => c.provider === provider);
363
+ const connections = (db.providerConnections || []).filter(
364
+ (c) => c.provider === provider,
365
+ );
312
366
  const now = Date.now();
313
367
  const strategy = getTokenSwapStrategy();
314
368
  const reasons = {
@@ -331,7 +385,11 @@ function getTokenSwapAvailabilitySummary(provider, model) {
331
385
  reasons.noToken += 1;
332
386
  continue;
333
387
  }
334
- if (connection.expiresAt && new Date(connection.expiresAt).getTime() < now && !connection.refreshToken) {
388
+ if (
389
+ connection.expiresAt &&
390
+ new Date(connection.expiresAt).getTime() < now &&
391
+ !connection.refreshToken
392
+ ) {
335
393
  reasons.expiredNoRefresh += 1;
336
394
  continue;
337
395
  }
@@ -351,7 +409,11 @@ function getTokenSwapAvailabilitySummary(provider, model) {
351
409
  continue;
352
410
  }
353
411
 
354
- if (strategy === "sticky" && model && isModelExhausted(connection.id, model)) {
412
+ if (
413
+ strategy === "sticky" &&
414
+ model &&
415
+ isModelExhausted(connection.id, model)
416
+ ) {
355
417
  reasons.modelCooldown += 1;
356
418
  continue;
357
419
  }
@@ -361,25 +423,36 @@ function getTokenSwapAvailabilitySummary(provider, model) {
361
423
 
362
424
  const skipped = connections.length - eligible;
363
425
  const reasonParts = [];
364
- if (reasons.quotaCooldown) reasonParts.push(`${reasons.quotaCooldown} quota cooldown`);
365
- if (reasons.authCooldown) reasonParts.push(`${reasons.authCooldown} auth cooldown`);
366
- if (reasons.modelCooldown) reasonParts.push(`${reasons.modelCooldown} model cooldown`);
426
+ if (reasons.quotaCooldown)
427
+ reasonParts.push(`${reasons.quotaCooldown} quota cooldown`);
428
+ if (reasons.authCooldown)
429
+ reasonParts.push(`${reasons.authCooldown} auth cooldown`);
430
+ if (reasons.modelCooldown)
431
+ reasonParts.push(`${reasons.modelCooldown} model cooldown`);
367
432
  if (reasons.inactive) reasonParts.push(`${reasons.inactive} inactive`);
368
433
  if (reasons.noToken) reasonParts.push(`${reasons.noToken} missing token`);
369
- if (reasons.expiredNoRefresh) reasonParts.push(`${reasons.expiredNoRefresh} expired-no-refresh`);
434
+ if (reasons.expiredNoRefresh)
435
+ reasonParts.push(`${reasons.expiredNoRefresh} expired-no-refresh`);
370
436
 
371
- const summaryText = skipped > 0
372
- ? `${eligible}/${connections.length} account(s) eligible, skipped ${skipped} (${reasonParts.join(", ")})`
373
- : `${eligible}/${connections.length} account(s) eligible`;
437
+ const summaryText =
438
+ skipped > 0
439
+ ? `${eligible}/${connections.length} account(s) eligible, skipped ${skipped} (${reasonParts.join(", ")})`
440
+ : `${eligible}/${connections.length} account(s) eligible`;
374
441
 
375
- return { total: connections.length, eligible, skipped, reasons, summaryText };
442
+ return {
443
+ total: connections.length,
444
+ eligible,
445
+ skipped,
446
+ reasons,
447
+ summaryText,
448
+ };
376
449
  } catch {
377
450
  return {
378
451
  total: 0,
379
452
  eligible: 0,
380
453
  skipped: 0,
381
454
  reasons: {},
382
- summaryText: "0/0 account(s) eligible"
455
+ summaryText: "0/0 account(s) eligible",
383
456
  };
384
457
  }
385
458
  }
@@ -389,7 +462,7 @@ function getConnectionById(connId) {
389
462
  if (!fs.existsSync(DB_FILE)) return null;
390
463
  const db = JSON.parse(fs.readFileSync(DB_FILE, "utf-8"));
391
464
  const connections = db.providerConnections || [];
392
- return connections.find(c => c.id === connId) || null;
465
+ return connections.find((c) => c.id === connId) || null;
393
466
  } catch {
394
467
  return null;
395
468
  }
@@ -435,7 +508,9 @@ function isTokenSwapEnabled() {
435
508
  if (!fs.existsSync(DB_FILE)) return false;
436
509
  const db = JSON.parse(fs.readFileSync(DB_FILE, "utf-8"));
437
510
  return !!db.settings?.tokenSwapEnabled;
438
- } catch { return false; }
511
+ } catch {
512
+ return false;
513
+ }
439
514
  }
440
515
 
441
516
  function getNextConnection(provider) {
@@ -445,12 +520,18 @@ function getNextConnection(provider) {
445
520
  const selected = connections[0];
446
521
  const strategy = getTokenSwapStrategy();
447
522
  if (connections.length === 1) {
448
- log(`🎯 [token-pool] selected: "${getConnectionLabel(selected)}" (only account)`);
523
+ log(
524
+ `🎯 [token-pool] selected: "${getConnectionLabel(selected)}" (only account)`,
525
+ );
449
526
  return selected;
450
527
  }
451
528
 
452
- const lastUsedTag = selected.lastUsedAt ? ` lastUsed=${selected.lastUsedAt}` : " lastUsed=never";
453
- log(`🎯 [token-pool] ${strategy}[next/${connections.length}]: "${getConnectionLabel(selected)}"${lastUsedTag}`);
529
+ const lastUsedTag = selected.lastUsedAt
530
+ ? ` lastUsed=${selected.lastUsedAt}`
531
+ : " lastUsed=never";
532
+ log(
533
+ `🎯 [token-pool] ${strategy}[next/${connections.length}]: "${getConnectionLabel(selected)}"${lastUsedTag}`,
534
+ );
454
535
  return selected;
455
536
  }
456
537
 
@@ -460,7 +541,7 @@ function getAllActiveConnections(provider, model) {
460
541
 
461
542
  const strategy = getTokenSwapStrategy();
462
543
  const hardAvailable = model
463
- ? connections.filter(c => !isStoredModelQuotaExhausted(c, model))
544
+ ? connections.filter((c) => !isStoredModelQuotaExhausted(c, model))
464
545
  : connections;
465
546
 
466
547
  if (model && hardAvailable.length === 0) {
@@ -471,7 +552,7 @@ function getAllActiveConnections(provider, model) {
471
552
  // Sticky strategy: filter out accounts exhausted for this specific model,
472
553
  // then sort most-recently-used first so the same account sticks across requests.
473
554
  const available = model
474
- ? hardAvailable.filter(c => !isModelExhausted(c.id, model))
555
+ ? hardAvailable.filter((c) => !isModelExhausted(c.id, model))
475
556
  : hardAvailable;
476
557
 
477
558
  // Runtime model cooldowns are temporary and may be false positives,
@@ -480,7 +561,8 @@ function getAllActiveConnections(provider, model) {
480
561
 
481
562
  // Most-recently-used first (sticky within session)
482
563
  return [...pool].sort((a, b) => {
483
- if (!a.lastUsedAt && !b.lastUsedAt) return (a.priority || 999) - (b.priority || 999);
564
+ if (!a.lastUsedAt && !b.lastUsedAt)
565
+ return (a.priority || 999) - (b.priority || 999);
484
566
  if (!a.lastUsedAt) return 1;
485
567
  if (!b.lastUsedAt) return -1;
486
568
  return new Date(b.lastUsedAt) - new Date(a.lastUsedAt);
@@ -491,7 +573,8 @@ function getAllActiveConnections(provider, model) {
491
573
  // update lastUsedAt, so the next selection naturally advances without
492
574
  // extra streak state or in-memory round-robin indexes.
493
575
  return [...hardAvailable].sort((a, b) => {
494
- if (!a.lastUsedAt && !b.lastUsedAt) return (a.priority || 999) - (b.priority || 999);
576
+ if (!a.lastUsedAt && !b.lastUsedAt)
577
+ return (a.priority || 999) - (b.priority || 999);
495
578
  if (!a.lastUsedAt) return -1;
496
579
  if (!b.lastUsedAt) return 1;
497
580
  return new Date(a.lastUsedAt) - new Date(b.lastUsedAt);
@@ -505,7 +588,7 @@ function getAllActiveConnections(provider, model) {
505
588
  function updateConnectionInDb(connId, patchFn) {
506
589
  const result = updateJsonFileSync(DB_FILE, (db) => {
507
590
  const connections = db.providerConnections || [];
508
- const index = connections.findIndex(c => c.id === connId);
591
+ const index = connections.findIndex((c) => c.id === connId);
509
592
  if (index === -1) return false;
510
593
  return patchFn(connections[index], db);
511
594
  });
@@ -526,84 +609,251 @@ function markAccountUsed(connId) {
526
609
  }
527
610
  }
528
611
 
612
+ function truncateRefreshBody(body) {
613
+ if (!body) return "";
614
+ return body.length > REFRESH_RESPONSE_BODY_LIMIT
615
+ ? `${body.slice(0, REFRESH_RESPONSE_BODY_LIMIT)}...`
616
+ : body;
617
+ }
618
+
619
+ function getRefreshPayloadError(payload) {
620
+ if (!payload) return null;
621
+ if (typeof payload.error === "string") return payload.error;
622
+ if (payload.error?.message) return payload.error.message;
623
+ if (typeof payload.error_description === "string")
624
+ return payload.error_description;
625
+ if (typeof payload.message === "string") return payload.message;
626
+ return null;
627
+ }
628
+
629
+ function loadRawMachineId() {
630
+ if (cachedRawMachineId) return cachedRawMachineId;
631
+ try {
632
+ cachedRawMachineId = fs.readFileSync(MACHINE_ID_FILE, "utf8").trim();
633
+ if (cachedRawMachineId) return cachedRawMachineId;
634
+ } catch {}
635
+
636
+ try {
637
+ cachedRawMachineId = machineIdSync();
638
+ } catch {
639
+ cachedRawMachineId = crypto.randomUUID();
640
+ }
641
+
642
+ try {
643
+ fs.mkdirSync(DATA_DIR, { recursive: true });
644
+ fs.writeFileSync(MACHINE_ID_FILE, cachedRawMachineId, { mode: 0o600 });
645
+ } catch {}
646
+
647
+ return cachedRawMachineId;
648
+ }
649
+
650
+ function loadCliSecret() {
651
+ if (cachedCliSecret) return cachedCliSecret;
652
+ try {
653
+ cachedCliSecret = fs.readFileSync(CLI_SECRET_FILE, "utf8").trim();
654
+ if (cachedCliSecret) return cachedCliSecret;
655
+ } catch {}
656
+
657
+ cachedCliSecret = crypto.randomBytes(32).toString("hex");
658
+ try {
659
+ fs.mkdirSync(AUTH_DIR, { recursive: true });
660
+ fs.writeFileSync(CLI_SECRET_FILE, cachedCliSecret, { mode: 0o600 });
661
+ } catch {}
662
+
663
+ return cachedCliSecret;
664
+ }
665
+
666
+ function getInternalCliToken() {
667
+ if (!cachedCliToken) {
668
+ const raw = loadRawMachineId();
669
+ const secret = loadCliSecret();
670
+ cachedCliToken = crypto
671
+ .createHash("sha256")
672
+ .update(raw + CLI_TOKEN_SALT + secret)
673
+ .digest("hex")
674
+ .substring(0, 16);
675
+ }
676
+ return cachedCliToken;
677
+ }
678
+
679
+ function buildConnectionTestHeaders(payload) {
680
+ const headers = { [CLI_TOKEN_HEADER]: getInternalCliToken() };
681
+ if (payload) {
682
+ headers["Content-Type"] = "application/json";
683
+ headers["Content-Length"] = Buffer.byteLength(payload);
684
+ }
685
+ return headers;
686
+ }
687
+
529
688
  // ── Token refresh trigger (refresh + reload persisted token) ─
530
689
  // Calls 9Router's existing POST /api/providers/:id/test which
531
690
  // checks expiry, refreshes token automatically, then returns the
532
691
  // latest persisted connection snapshot for the current request.
533
692
 
534
- async function runConnectionTest(connection, options = {}) {
693
+ async function runConnectionTestRequest(connection, options = {}) {
535
694
  return await new Promise((resolve) => {
536
695
  if (!connection?.id) {
537
- resolve({ connection, refreshed: false, valid: false });
696
+ resolve({
697
+ connection,
698
+ refreshed: false,
699
+ valid: false,
700
+ error: "Missing connection id",
701
+ errorType: "missing_connection_id",
702
+ });
538
703
  return;
539
704
  }
540
705
 
541
706
  let responseBody = "";
542
- const payload = options.forceRefresh ? JSON.stringify({ forceRefresh: true }) : "";
543
- const headers = payload
544
- ? { "Content-Type": "application/json", "Content-Length": Buffer.byteLength(payload) }
545
- : undefined;
707
+ const payload = options.forceRefresh
708
+ ? JSON.stringify({ forceRefresh: true })
709
+ : "";
710
+ const headers = buildConnectionTestHeaders(payload);
546
711
 
547
712
  try {
548
713
  const req = http.request(
549
- { hostname: "127.0.0.1", port: ROUTER_PORT, path: `/api/providers/${connection.id}/test`, method: "POST", headers },
714
+ {
715
+ hostname: "127.0.0.1",
716
+ port: ROUTER_PORT,
717
+ path: `/api/providers/${connection.id}/test`,
718
+ method: "POST",
719
+ headers,
720
+ },
550
721
  (res) => {
551
722
  res.on("data", (chunk) => {
552
723
  responseBody += chunk.toString();
553
724
  });
554
725
  res.on("end", () => {
555
726
  let payload = {};
727
+ let parseError = null;
556
728
  try {
557
729
  payload = JSON.parse(responseBody || "{}");
558
- } catch {
730
+ } catch (e) {
731
+ parseError = e;
559
732
  payload = {};
560
733
  }
561
734
 
562
735
  const refreshedConnection = getConnectionById(connection.id);
563
- const tokenChanged = !!(refreshedConnection?.accessToken && refreshedConnection.accessToken !== connection.accessToken);
736
+ const tokenChanged = !!(
737
+ refreshedConnection?.accessToken &&
738
+ refreshedConnection.accessToken !== connection.accessToken
739
+ );
740
+ const payloadError = getRefreshPayloadError(payload);
564
741
  resolve({
565
742
  connection: refreshedConnection || connection,
566
743
  refreshed: !!payload.refreshed || tokenChanged,
567
744
  valid: !!payload.valid,
745
+ statusCode: res.statusCode || 0,
746
+ error:
747
+ payloadError ||
748
+ (parseError
749
+ ? `Invalid JSON response: ${parseError.message}`
750
+ : null),
751
+ errorType: payloadError
752
+ ? "api_error"
753
+ : parseError
754
+ ? "parse_error"
755
+ : null,
756
+ responseBody:
757
+ payloadError || parseError
758
+ ? truncateRefreshBody(responseBody)
759
+ : undefined,
568
760
  });
569
761
  });
570
- }
762
+ },
763
+ );
764
+ req.on("error", (e) =>
765
+ resolve({
766
+ connection,
767
+ refreshed: false,
768
+ valid: false,
769
+ error: e.message,
770
+ errorType: "request_error",
771
+ }),
571
772
  );
572
- req.on("error", () => resolve({ connection, refreshed: false, valid: false }));
573
773
  if (payload) req.write(payload);
574
774
  req.end();
575
- } catch {
576
- resolve({ connection, refreshed: false, valid: false });
775
+ } catch (e) {
776
+ resolve({
777
+ connection,
778
+ refreshed: false,
779
+ valid: false,
780
+ error: e.message,
781
+ errorType: "request_exception",
782
+ });
577
783
  }
578
784
  });
579
785
  }
580
786
 
787
+ async function runConnectionTest(connection, options = {}) {
788
+ if (!connection?.id) {
789
+ return runConnectionTestRequest(connection, options);
790
+ }
791
+
792
+ const mode = options.forceRefresh ? "force" : "expiry";
793
+ const key = `${connection.id}:${mode}`;
794
+ const existing = refreshRequestMap.get(key);
795
+ if (existing) {
796
+ log(
797
+ `⏳ [token-pool] waiting for in-flight ${mode} refresh → ${getConnectionLabel(connection).slice(0, 20)}`,
798
+ );
799
+ return await existing;
800
+ }
801
+
802
+ const promise = runConnectionTestRequest(connection, options).finally(() => {
803
+ refreshRequestMap.delete(key);
804
+ });
805
+ refreshRequestMap.set(key, promise);
806
+ return await promise;
807
+ }
808
+
581
809
  async function triggerRefreshIfNeeded(connection) {
582
810
  if (!connection?.refreshToken) return connection;
583
811
 
584
812
  const hasExpiry = !!connection?.expiresAt;
585
813
  const expiresAt = hasExpiry ? new Date(connection.expiresAt).getTime() : 0;
586
- const isExpired = !hasExpiry || (Date.now() + TOKEN_EXPIRY_BUFFER_MS >= expiresAt);
814
+ const isExpired =
815
+ !hasExpiry || Date.now() + TOKEN_EXPIRY_BUFFER_MS >= expiresAt;
587
816
 
588
817
  if (!isExpired) return connection;
589
818
 
590
- log(`🔄 [token-pool] ${!hasExpiry ? "missing-expiry" : "near-expiry"} refresh → ${getConnectionLabel(connection).slice(0, 20)}`);
819
+ log(
820
+ `🔄 [token-pool] ${!hasExpiry ? "missing-expiry" : "near-expiry"} refresh → ${getConnectionLabel(connection).slice(0, 20)}`,
821
+ );
591
822
  const result = await runConnectionTest(connection);
592
823
  if (result.refreshed) {
593
- log(`♻️ [token-pool] refreshed token applied → ${getConnectionLabel(connection).slice(0, 20)}`);
824
+ log(
825
+ `♻️ [token-pool] refreshed token applied → ${getConnectionLabel(connection).slice(0, 20)}`,
826
+ );
594
827
  }
595
828
  return result.connection || connection;
596
829
  }
597
830
 
598
831
  async function forceRefreshConnection(connection) {
599
832
  if (!connection?.refreshToken) {
600
- return { connection, refreshed: false, valid: false };
833
+ return {
834
+ connection,
835
+ refreshed: false,
836
+ valid: false,
837
+ error: "No refresh token",
838
+ errorType: "missing_refresh_token",
839
+ };
601
840
  }
602
841
 
603
- log(`🔄 [token-pool] auth refresh → ${getConnectionLabel(connection).slice(0, 20)}`);
842
+ log(
843
+ `🔄 [token-pool] auth refresh → ${getConnectionLabel(connection).slice(0, 20)}`,
844
+ );
604
845
  const result = await runConnectionTest(connection, { forceRefresh: true });
605
846
  if (result.refreshed) {
606
- log(`♻️ [token-pool] refreshed token applied → ${getConnectionLabel(connection).slice(0, 20)}`);
847
+ log(
848
+ `♻️ [token-pool] refreshed token applied → ${getConnectionLabel(connection).slice(0, 20)}`,
849
+ );
850
+ } else {
851
+ const statusTag = result.statusCode ? ` status=${result.statusCode}` : "";
852
+ const errorTag = result.error ? ` error="${result.error}"` : "";
853
+ const typeTag = result.errorType ? ` type=${result.errorType}` : "";
854
+ log(
855
+ `⚠️ [token-pool] auth refresh failed → ${getConnectionLabel(connection).slice(0, 20)}${statusTag}${typeTag}${errorTag}`,
856
+ );
607
857
  }
608
858
  return result;
609
859
  }