@rsalmn/extremerouter 0.8.0 → 0.8.2

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 (966) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +5 -3
  3. package/app/.next-cli-build/build-manifest.json +2 -2
  4. package/app/.next-cli-build/prerender-manifest.json +3 -3
  5. package/app/.next-cli-build/routes-manifest.json +12 -0
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/alerts/page.js +2 -2
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/alerts/page.js.nft.json +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/alerts/page_client-reference-manifest.js +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +3 -3
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +4 -2
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/health/page.js +2 -2
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/health/page.js.nft.json +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +2 -2
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -2
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +3 -3
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/overview/page.js +2 -2
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/overview/page.js.nft.json +1 -1
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/overview/page_client-reference-manifest.js +1 -1
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +2 -2
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page.js +2 -2
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page.js.nft.json +1 -1
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  55. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  56. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  57. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +4 -4
  58. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  59. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  60. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  61. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  62. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  63. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  64. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  65. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  66. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +2 -2
  67. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  68. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  69. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +2 -2
  70. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  71. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  72. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +2 -2
  73. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  74. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  75. package/app/.next-cli-build/server/app/(dashboard)/dashboard/swarm/page.js +2 -2
  76. package/app/.next-cli-build/server/app/(dashboard)/dashboard/swarm/page.js.nft.json +1 -1
  77. package/app/.next-cli-build/server/app/(dashboard)/dashboard/swarm/page_client-reference-manifest.js +1 -1
  78. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +2 -2
  79. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  80. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  81. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +2 -2
  82. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  83. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  84. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  85. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  86. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  87. package/app/.next-cli-build/server/app/_global-error/page.js +3 -3
  88. package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  89. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  90. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  91. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  92. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  93. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  94. package/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  95. package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  96. package/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  97. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  98. package/app/.next-cli-build/server/app/_not-found/page.js +2 -2
  99. package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  100. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  101. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  102. package/app/.next-cli-build/server/app/_not-found.rsc +19 -18
  103. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +19 -18
  104. package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  105. package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +8 -7
  106. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  107. package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  108. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  109. package/app/.next-cli-build/server/app/api/alerts/test/route.js +2 -2
  110. package/app/.next-cli-build/server/app/api/alerts/test/route.js.nft.json +1 -1
  111. package/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
  112. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  113. package/app/.next-cli-build/server/app/api/auth/logout/route.js +1 -1
  114. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  115. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
  116. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  117. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
  118. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  119. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
  120. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  121. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js +1 -1
  122. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js.nft.json +1 -1
  123. package/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
  124. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  125. package/app/.next-cli-build/server/app/api/breaker/route.js +1 -0
  126. package/app/.next-cli-build/server/app/api/breaker/route.js.nft.json +1 -0
  127. package/app/.next-cli-build/server/app/api/breaker/route_client-reference-manifest.js +1 -0
  128. package/app/.next-cli-build/server/app/api/cache/route.js +1 -1
  129. package/app/.next-cli-build/server/app/api/cache/route.js.nft.json +1 -1
  130. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +4 -4
  131. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  132. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  133. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  134. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  135. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  136. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -2
  137. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  138. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +1 -1
  139. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  140. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  141. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  142. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +2 -2
  143. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  144. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
  145. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  146. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
  147. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  148. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +2 -2
  149. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  150. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +2 -2
  151. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  152. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
  153. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  154. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +3 -3
  155. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  156. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  157. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  158. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  159. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  160. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  161. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  162. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +1 -1
  163. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  164. package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  165. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  166. package/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  167. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  168. package/app/.next-cli-build/server/app/api/combos/validate-roles/route.js +1 -1
  169. package/app/.next-cli-build/server/app/api/combos/validate-roles/route.js.nft.json +1 -1
  170. package/app/.next-cli-build/server/app/api/dashboard/stream/route.js +2 -2
  171. package/app/.next-cli-build/server/app/api/dashboard/stream/route.js.nft.json +1 -1
  172. package/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -1
  173. package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  174. package/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -1
  175. package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  176. package/app/.next-cli-build/server/app/api/headroom/stop/route.js +2 -2
  177. package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  178. package/app/.next-cli-build/server/app/api/health/providers/route.js +1 -1
  179. package/app/.next-cli-build/server/app/api/health/providers/route.js.nft.json +1 -1
  180. package/app/.next-cli-build/server/app/api/health/route.js +1 -1
  181. package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  182. package/app/.next-cli-build/server/app/api/health/stream/route.js +2 -2
  183. package/app/.next-cli-build/server/app/api/health/stream/route.js.nft.json +1 -1
  184. package/app/.next-cli-build/server/app/api/init/route.js +1 -1
  185. package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  186. package/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
  187. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  188. package/app/.next-cli-build/server/app/api/keys/route.js +1 -1
  189. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  190. package/app/.next-cli-build/server/app/api/locale/route.js +1 -1
  191. package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  192. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js +2 -2
  193. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  194. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js +2 -2
  195. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  196. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  197. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  198. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  199. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  200. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  201. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  202. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  203. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  204. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
  205. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  206. package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  207. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  208. package/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
  209. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  210. package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  211. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  212. package/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
  213. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  214. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  215. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  216. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  217. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  218. package/app/.next-cli-build/server/app/api/oauth/1min/import/route.js +1 -1
  219. package/app/.next-cli-build/server/app/api/oauth/1min/import/route.js.nft.json +1 -1
  220. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  221. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  222. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js +1 -1
  223. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
  224. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  225. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  226. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js +2 -2
  227. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  228. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  229. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  230. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
  231. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  232. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
  233. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  234. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js +1 -1
  235. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
  236. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  237. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  238. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  239. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  240. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js +1 -1
  241. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
  242. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  243. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  244. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  245. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  246. package/app/.next-cli-build/server/app/api/oauth/qwen/import/route.js +1 -0
  247. package/app/.next-cli-build/server/app/api/oauth/qwen/import/route.js.nft.json +1 -0
  248. package/app/.next-cli-build/server/app/api/oauth/qwen/import/route_client-reference-manifest.js +1 -0
  249. package/app/.next-cli-build/server/app/api/oauth/wp-studio/import/route.js +1 -1
  250. package/app/.next-cli-build/server/app/api/oauth/wp-studio/import/route.js.nft.json +1 -1
  251. package/app/.next-cli-build/server/app/api/oauth/zed/auto-import/route.js +2 -2
  252. package/app/.next-cli-build/server/app/api/oauth/zed/auto-import/route.js.nft.json +1 -1
  253. package/app/.next-cli-build/server/app/api/oauth/zed/import/route.js +1 -1
  254. package/app/.next-cli-build/server/app/api/oauth/zed/import/route.js.nft.json +1 -1
  255. package/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
  256. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  257. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
  258. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  259. package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  260. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  261. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
  262. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  263. package/app/.next-cli-build/server/app/api/providers/[id]/agnes-profile/route.js +1 -1
  264. package/app/.next-cli-build/server/app/api/providers/[id]/agnes-profile/route.js.nft.json +1 -1
  265. package/app/.next-cli-build/server/app/api/providers/[id]/freebuff-profile/route.js +1 -1
  266. package/app/.next-cli-build/server/app/api/providers/[id]/freebuff-profile/route.js.nft.json +1 -1
  267. package/app/.next-cli-build/server/app/api/providers/[id]/health-timeline/route.js +1 -1
  268. package/app/.next-cli-build/server/app/api/providers/[id]/health-timeline/route.js.nft.json +1 -1
  269. package/app/.next-cli-build/server/app/api/providers/[id]/inxora-profile/route.js +1 -1
  270. package/app/.next-cli-build/server/app/api/providers/[id]/inxora-profile/route.js.nft.json +1 -1
  271. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  272. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  273. package/app/.next-cli-build/server/app/api/providers/[id]/onemin-api-profile/route.js +1 -1
  274. package/app/.next-cli-build/server/app/api/providers/[id]/onemin-api-profile/route.js.nft.json +1 -1
  275. package/app/.next-cli-build/server/app/api/providers/[id]/onemin-profile/route.js +1 -1
  276. package/app/.next-cli-build/server/app/api/providers/[id]/onemin-profile/route.js.nft.json +1 -1
  277. package/app/.next-cli-build/server/app/api/providers/[id]/qwencloud-profile/route.js +1 -1
  278. package/app/.next-cli-build/server/app/api/providers/[id]/qwencloud-profile/route.js.nft.json +1 -1
  279. package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  280. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  281. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  282. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  283. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  284. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  285. package/app/.next-cli-build/server/app/api/providers/[id]/v0-profile/route.js +1 -1
  286. package/app/.next-cli-build/server/app/api/providers/[id]/v0-profile/route.js.nft.json +1 -1
  287. package/app/.next-cli-build/server/app/api/providers/[id]/vault-pool/route.js +1 -1
  288. package/app/.next-cli-build/server/app/api/providers/[id]/vault-pool/route.js.nft.json +1 -1
  289. package/app/.next-cli-build/server/app/api/providers/[id]/zenmux-plans/route.js +1 -1
  290. package/app/.next-cli-build/server/app/api/providers/[id]/zenmux-plans/route.js.nft.json +1 -1
  291. package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  292. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  293. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js +1 -1
  294. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  295. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  296. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  297. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js +1 -1
  298. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  299. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  300. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  301. package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  302. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  303. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
  304. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  305. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  306. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  307. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +2 -2
  308. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  309. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
  310. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  311. package/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
  312. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  313. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
  314. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  315. package/app/.next-cli-build/server/app/api/pxpipe/install/route.js +1 -1
  316. package/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
  317. package/app/.next-cli-build/server/app/api/pxpipe/status/route.js +2 -2
  318. package/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
  319. package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  320. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  321. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -1
  322. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  323. package/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
  324. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  325. package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  326. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  327. package/app/.next-cli-build/server/app/api/shutdown/route.js +1 -1
  328. package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  329. package/app/.next-cli-build/server/app/api/swarm/active/route.js +1 -1
  330. package/app/.next-cli-build/server/app/api/swarm/active/route.js.nft.json +1 -1
  331. package/app/.next-cli-build/server/app/api/swarm/stream/route.js +2 -2
  332. package/app/.next-cli-build/server/app/api/swarm/stream/route.js.nft.json +1 -1
  333. package/app/.next-cli-build/server/app/api/tags/route.js +1 -1
  334. package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  335. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  336. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  337. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
  338. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  339. package/app/.next-cli-build/server/app/api/translator/load/route.js +1 -1
  340. package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  341. package/app/.next-cli-build/server/app/api/translator/save/route.js +1 -1
  342. package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  343. package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  344. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  345. package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  346. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  347. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
  348. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  349. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
  350. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  351. package/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
  352. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  353. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -1
  354. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  355. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  356. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  357. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  358. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  359. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +2 -2
  360. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  361. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
  362. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
  363. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  364. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  365. package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
  366. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  367. package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
  368. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  369. package/app/.next-cli-build/server/app/api/usage/leaderboard/route.js +1 -1
  370. package/app/.next-cli-build/server/app/api/usage/leaderboard/route.js.nft.json +1 -1
  371. package/app/.next-cli-build/server/app/api/usage/logs/route.js +1 -1
  372. package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
  373. package/app/.next-cli-build/server/app/api/usage/meta/route.js +1 -1
  374. package/app/.next-cli-build/server/app/api/usage/meta/route.js.nft.json +1 -1
  375. package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  376. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  377. package/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
  378. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  379. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
  380. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  381. package/app/.next-cli-build/server/app/api/usage/retry-stats/route.js +1 -1
  382. package/app/.next-cli-build/server/app/api/usage/retry-stats/route.js.nft.json +1 -1
  383. package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
  384. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  385. package/app/.next-cli-build/server/app/api/usage/stream/route.js +4 -4
  386. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  387. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  388. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  389. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  390. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  391. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  392. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  393. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
  394. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  395. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  396. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  397. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  398. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  399. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
  400. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  401. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -1
  402. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  403. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  404. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  405. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
  406. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  407. package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  408. package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  409. package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  410. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  411. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  412. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  413. package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  414. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  415. package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  416. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  417. package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  418. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  419. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  420. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  421. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  422. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  423. package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  424. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  425. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  426. package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  427. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  428. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  429. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  430. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  431. package/app/.next-cli-build/server/app/callback/page.js +2 -2
  432. package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  433. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  434. package/app/.next-cli-build/server/app/callback.html +1 -1
  435. package/app/.next-cli-build/server/app/callback.rsc +23 -22
  436. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +23 -22
  437. package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  438. package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +8 -7
  439. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
  440. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  441. package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  442. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +2 -2
  443. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  444. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  445. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  446. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +23 -22
  447. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +23 -22
  448. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  449. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +8 -7
  450. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  451. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  452. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  453. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  454. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  455. package/app/.next-cli-build/server/app/favicon.ico/route.js +1 -1
  456. package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
  457. package/app/.next-cli-build/server/app/index.html +1 -1
  458. package/app/.next-cli-build/server/app/index.rsc +18 -17
  459. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  460. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +18 -17
  461. package/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  462. package/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +8 -7
  463. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
  464. package/app/.next-cli-build/server/app/landing/page.js +2 -2
  465. package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  466. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  467. package/app/.next-cli-build/server/app/landing.html +1 -1
  468. package/app/.next-cli-build/server/app/landing.rsc +23 -22
  469. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +23 -22
  470. package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  471. package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +8 -7
  472. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
  473. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  474. package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  475. package/app/.next-cli-build/server/app/login/page.js +2 -2
  476. package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  477. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  478. package/app/.next-cli-build/server/app/login.html +1 -1
  479. package/app/.next-cli-build/server/app/login.rsc +23 -22
  480. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +23 -22
  481. package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  482. package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +8 -7
  483. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
  484. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  485. package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  486. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js +2 -2
  487. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  488. package/app/.next-cli-build/server/app/page.js +2 -2
  489. package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  490. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  491. package/app/.next-cli-build/server/app-paths-manifest.json +5 -3
  492. package/app/.next-cli-build/server/chunks/1051.js +1 -1
  493. package/app/.next-cli-build/server/chunks/{2342.js → 1194.js} +6 -6
  494. package/app/.next-cli-build/server/chunks/1350.js +1 -1
  495. package/app/.next-cli-build/server/chunks/1719.js +1 -1
  496. package/app/.next-cli-build/server/chunks/212.js +1 -1
  497. package/app/.next-cli-build/server/chunks/2231.js +1 -1
  498. package/app/.next-cli-build/server/chunks/2701.js +1 -1
  499. package/app/.next-cli-build/server/chunks/2926.js +1 -1
  500. package/app/.next-cli-build/server/chunks/3593.js +1 -1
  501. package/app/.next-cli-build/server/chunks/412.js +1 -1
  502. package/app/.next-cli-build/server/chunks/422.js +9 -0
  503. package/app/.next-cli-build/server/chunks/4502.js +16 -0
  504. package/app/.next-cli-build/server/chunks/4632.js +1 -1
  505. package/app/.next-cli-build/server/chunks/4739.js +1 -1
  506. package/app/.next-cli-build/server/chunks/4780.js +1 -1
  507. package/app/.next-cli-build/server/chunks/507.js +1 -1
  508. package/app/.next-cli-build/server/chunks/5258.js +1 -1
  509. package/app/.next-cli-build/server/chunks/{318.js → 5330.js} +5 -5
  510. package/app/.next-cli-build/server/chunks/541.js +1 -0
  511. package/app/.next-cli-build/server/chunks/5612.js +1 -1
  512. package/app/.next-cli-build/server/chunks/5615.js +1 -1
  513. package/app/.next-cli-build/server/chunks/5628.js +1 -1
  514. package/app/.next-cli-build/server/chunks/5699.js +1 -1
  515. package/app/.next-cli-build/server/chunks/5781.js +2 -2
  516. package/app/.next-cli-build/server/chunks/5961.js +1 -1
  517. package/app/.next-cli-build/server/chunks/6070.js +1 -1
  518. package/app/.next-cli-build/server/chunks/615.js +1 -1
  519. package/app/.next-cli-build/server/chunks/6316.js +2 -2
  520. package/app/.next-cli-build/server/chunks/6686.js +1 -0
  521. package/app/.next-cli-build/server/chunks/698.js +1 -1
  522. package/app/.next-cli-build/server/chunks/7187.js +1 -0
  523. package/app/.next-cli-build/server/chunks/7872.js +1 -1
  524. package/app/.next-cli-build/server/chunks/7965.js +1 -1
  525. package/app/.next-cli-build/server/chunks/8238.js +1 -1
  526. package/app/.next-cli-build/server/chunks/8271.js +1 -1
  527. package/app/.next-cli-build/server/chunks/8520.js +1 -1
  528. package/app/.next-cli-build/server/chunks/874.js +9 -0
  529. package/app/.next-cli-build/server/chunks/8895.js +4 -4
  530. package/app/.next-cli-build/server/chunks/9140.js +1 -0
  531. package/app/.next-cli-build/server/chunks/9422.js +3 -3
  532. package/app/.next-cli-build/server/chunks/9630.js +1 -1
  533. package/app/.next-cli-build/server/chunks/9703.js +5 -5
  534. package/app/.next-cli-build/server/chunks/9903.js +1 -1
  535. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  536. package/app/.next-cli-build/server/middleware.js +4 -4
  537. package/app/.next-cli-build/server/pages/404.html +1 -1
  538. package/app/.next-cli-build/server/pages/500.html +1 -1
  539. package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  540. package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  541. package/app/.next-cli-build/static/S-pbWChrUiCkwFyfx4Su3/_buildManifest.js +1 -0
  542. package/app/.next-cli-build/static/chunks/1321-aa0d45362a7ebc08.js +1 -0
  543. package/app/.next-cli-build/static/chunks/5497-b321fb89cc6d6e14.js +7 -0
  544. package/app/.next-cli-build/static/chunks/8105-204edc780a329497.js +1 -0
  545. package/app/.next-cli-build/static/chunks/{682-03720d6613bcbd0f.js → 9622-fcd7c93a94eaa38f.js} +6 -6
  546. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/page-cd77e53dbcd46b6c.js +1 -0
  547. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/page-8b043b8296199edb.js +1 -0
  548. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-dbf52954681b093c.js +3 -0
  549. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/health/page-ec1dc4e44702257d.js +1 -0
  550. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/page-a67cd1c5f77da355.js +1 -0
  551. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/playground/page-dc8e49b1fe778d9c.js +1 -0
  552. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-2e82495d63f499e9.js +10 -0
  553. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-9a44fa1600f3ff42.js +1 -0
  554. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/token-saver/{page-2592739cbb862828.js → page-2f3b8761d7b32ec0.js} +1 -1
  555. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/{page-5433f8ac60dd59f0.js → page-bd421513fd2dc28a.js} +1 -1
  556. package/app/.next-cli-build/static/chunks/app/(dashboard)/{layout-df0ed16971ba7386.js → layout-9144cc5f6a208199.js} +1 -1
  557. package/app/.next-cli-build/static/chunks/app/_global-error/page-ab464cb25617d9dd.js +1 -0
  558. package/app/.next-cli-build/static/chunks/app/api/alerts/test/route-ab464cb25617d9dd.js +1 -0
  559. package/app/.next-cli-build/static/chunks/app/api/auth/login/route-ab464cb25617d9dd.js +1 -0
  560. package/app/.next-cli-build/static/chunks/app/api/auth/logout/route-ab464cb25617d9dd.js +1 -0
  561. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-ab464cb25617d9dd.js +1 -0
  562. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-ab464cb25617d9dd.js +1 -0
  563. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-ab464cb25617d9dd.js +1 -0
  564. package/app/.next-cli-build/static/chunks/app/api/auth/reset-password/route-ab464cb25617d9dd.js +1 -0
  565. package/app/.next-cli-build/static/chunks/app/api/auth/status/route-ab464cb25617d9dd.js +1 -0
  566. package/app/.next-cli-build/static/chunks/app/api/breaker/route-ab464cb25617d9dd.js +1 -0
  567. package/app/.next-cli-build/static/chunks/app/api/cache/route-ab464cb25617d9dd.js +1 -0
  568. package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-ab464cb25617d9dd.js +1 -0
  569. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-ab464cb25617d9dd.js +1 -0
  570. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-ab464cb25617d9dd.js +1 -0
  571. package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-ab464cb25617d9dd.js +1 -0
  572. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-ab464cb25617d9dd.js +1 -0
  573. package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-ab464cb25617d9dd.js +1 -0
  574. package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-ab464cb25617d9dd.js +1 -0
  575. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-ab464cb25617d9dd.js +1 -0
  576. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-ab464cb25617d9dd.js +1 -0
  577. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-ab464cb25617d9dd.js +1 -0
  578. package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-ab464cb25617d9dd.js +1 -0
  579. package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-ab464cb25617d9dd.js +1 -0
  580. package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-ab464cb25617d9dd.js +1 -0
  581. package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-ab464cb25617d9dd.js +1 -0
  582. package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-ab464cb25617d9dd.js +1 -0
  583. package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-ab464cb25617d9dd.js +1 -0
  584. package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-ab464cb25617d9dd.js +1 -0
  585. package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-ab464cb25617d9dd.js +1 -0
  586. package/app/.next-cli-build/static/chunks/app/api/combos/route-ab464cb25617d9dd.js +1 -0
  587. package/app/.next-cli-build/static/chunks/app/api/combos/validate-roles/route-ab464cb25617d9dd.js +1 -0
  588. package/app/.next-cli-build/static/chunks/app/api/dashboard/stream/route-ab464cb25617d9dd.js +1 -0
  589. package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-ab464cb25617d9dd.js +1 -0
  590. package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-ab464cb25617d9dd.js +1 -0
  591. package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-ab464cb25617d9dd.js +1 -0
  592. package/app/.next-cli-build/static/chunks/app/api/health/providers/route-ab464cb25617d9dd.js +1 -0
  593. package/app/.next-cli-build/static/chunks/app/api/health/route-ab464cb25617d9dd.js +1 -0
  594. package/app/.next-cli-build/static/chunks/app/api/health/stream/route-ab464cb25617d9dd.js +1 -0
  595. package/app/.next-cli-build/static/chunks/app/api/init/route-ab464cb25617d9dd.js +1 -0
  596. package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-ab464cb25617d9dd.js +1 -0
  597. package/app/.next-cli-build/static/chunks/app/api/keys/route-ab464cb25617d9dd.js +1 -0
  598. package/app/.next-cli-build/static/chunks/app/api/locale/route-ab464cb25617d9dd.js +1 -0
  599. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-ab464cb25617d9dd.js +1 -0
  600. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-ab464cb25617d9dd.js +1 -0
  601. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-ab464cb25617d9dd.js +1 -0
  602. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-ab464cb25617d9dd.js +1 -0
  603. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-ab464cb25617d9dd.js +1 -0
  604. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-ab464cb25617d9dd.js +1 -0
  605. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-ab464cb25617d9dd.js +1 -0
  606. package/app/.next-cli-build/static/chunks/app/api/models/alias/route-ab464cb25617d9dd.js +1 -0
  607. package/app/.next-cli-build/static/chunks/app/api/models/availability/route-ab464cb25617d9dd.js +1 -0
  608. package/app/.next-cli-build/static/chunks/app/api/models/custom/route-ab464cb25617d9dd.js +1 -0
  609. package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-ab464cb25617d9dd.js +1 -0
  610. package/app/.next-cli-build/static/chunks/app/api/models/route-ab464cb25617d9dd.js +1 -0
  611. package/app/.next-cli-build/static/chunks/app/api/models/test/route-ab464cb25617d9dd.js +1 -0
  612. package/app/.next-cli-build/static/chunks/app/api/oauth/1min/import/route-ab464cb25617d9dd.js +1 -0
  613. package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-ab464cb25617d9dd.js +1 -0
  614. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-ab464cb25617d9dd.js +1 -0
  615. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-ab464cb25617d9dd.js +1 -0
  616. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-ab464cb25617d9dd.js +1 -0
  617. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-ab464cb25617d9dd.js +1 -0
  618. package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-ab464cb25617d9dd.js +1 -0
  619. package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-ab464cb25617d9dd.js +1 -0
  620. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-ab464cb25617d9dd.js +1 -0
  621. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-ab464cb25617d9dd.js +1 -0
  622. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-ab464cb25617d9dd.js +1 -0
  623. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-ab464cb25617d9dd.js +1 -0
  624. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-ab464cb25617d9dd.js +1 -0
  625. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-ab464cb25617d9dd.js +1 -0
  626. package/app/.next-cli-build/static/chunks/app/api/oauth/qwen/import/route-ab464cb25617d9dd.js +1 -0
  627. package/app/.next-cli-build/static/chunks/app/api/oauth/wp-studio/import/route-ab464cb25617d9dd.js +1 -0
  628. package/app/.next-cli-build/static/chunks/app/api/oauth/zed/auto-import/route-ab464cb25617d9dd.js +1 -0
  629. package/app/.next-cli-build/static/chunks/app/api/oauth/zed/import/route-ab464cb25617d9dd.js +1 -0
  630. package/app/.next-cli-build/static/chunks/app/api/pricing/route-ab464cb25617d9dd.js +1 -0
  631. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-ab464cb25617d9dd.js +1 -0
  632. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-ab464cb25617d9dd.js +1 -0
  633. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-ab464cb25617d9dd.js +1 -0
  634. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/agnes-profile/route-ab464cb25617d9dd.js +1 -0
  635. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/freebuff-profile/route-ab464cb25617d9dd.js +1 -0
  636. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/health-timeline/route-ab464cb25617d9dd.js +1 -0
  637. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/inxora-profile/route-ab464cb25617d9dd.js +1 -0
  638. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-ab464cb25617d9dd.js +1 -0
  639. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/onemin-api-profile/route-ab464cb25617d9dd.js +1 -0
  640. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/onemin-profile/route-ab464cb25617d9dd.js +1 -0
  641. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/qwencloud-profile/route-ab464cb25617d9dd.js +1 -0
  642. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-ab464cb25617d9dd.js +1 -0
  643. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-ab464cb25617d9dd.js +1 -0
  644. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-ab464cb25617d9dd.js +1 -0
  645. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/v0-profile/route-ab464cb25617d9dd.js +1 -0
  646. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/vault-pool/route-ab464cb25617d9dd.js +1 -0
  647. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/zenmux-plans/route-ab464cb25617d9dd.js +1 -0
  648. package/app/.next-cli-build/static/chunks/app/api/providers/client/route-ab464cb25617d9dd.js +1 -0
  649. package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-ab464cb25617d9dd.js +1 -0
  650. package/app/.next-cli-build/static/chunks/app/api/providers/route-ab464cb25617d9dd.js +1 -0
  651. package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-ab464cb25617d9dd.js +1 -0
  652. package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-ab464cb25617d9dd.js +1 -0
  653. package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-ab464cb25617d9dd.js +1 -0
  654. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-ab464cb25617d9dd.js +1 -0
  655. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-ab464cb25617d9dd.js +1 -0
  656. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-ab464cb25617d9dd.js +1 -0
  657. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-ab464cb25617d9dd.js +1 -0
  658. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-ab464cb25617d9dd.js +1 -0
  659. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-ab464cb25617d9dd.js +1 -0
  660. package/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-ab464cb25617d9dd.js +1 -0
  661. package/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-ab464cb25617d9dd.js +1 -0
  662. package/app/.next-cli-build/static/chunks/app/api/settings/database/route-ab464cb25617d9dd.js +1 -0
  663. package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-ab464cb25617d9dd.js +1 -0
  664. package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-ab464cb25617d9dd.js +1 -0
  665. package/app/.next-cli-build/static/chunks/app/api/settings/route-ab464cb25617d9dd.js +1 -0
  666. package/app/.next-cli-build/static/chunks/app/api/shutdown/route-ab464cb25617d9dd.js +1 -0
  667. package/app/.next-cli-build/static/chunks/app/api/swarm/active/route-ab464cb25617d9dd.js +1 -0
  668. package/app/.next-cli-build/static/chunks/app/api/swarm/stream/route-ab464cb25617d9dd.js +1 -0
  669. package/app/.next-cli-build/static/chunks/app/api/tags/route-ab464cb25617d9dd.js +1 -0
  670. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-ab464cb25617d9dd.js +1 -0
  671. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-ab464cb25617d9dd.js +1 -0
  672. package/app/.next-cli-build/static/chunks/app/api/translator/load/route-ab464cb25617d9dd.js +1 -0
  673. package/app/.next-cli-build/static/chunks/app/api/translator/save/route-ab464cb25617d9dd.js +1 -0
  674. package/app/.next-cli-build/static/chunks/app/api/translator/send/route-ab464cb25617d9dd.js +1 -0
  675. package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-ab464cb25617d9dd.js +1 -0
  676. package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-ab464cb25617d9dd.js +1 -0
  677. package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-ab464cb25617d9dd.js +1 -0
  678. package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-ab464cb25617d9dd.js +1 -0
  679. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-ab464cb25617d9dd.js +1 -0
  680. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-ab464cb25617d9dd.js +1 -0
  681. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-ab464cb25617d9dd.js +1 -0
  682. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-ab464cb25617d9dd.js +1 -0
  683. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-ab464cb25617d9dd.js +1 -0
  684. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-ab464cb25617d9dd.js +1 -0
  685. package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-ab464cb25617d9dd.js +1 -0
  686. package/app/.next-cli-build/static/chunks/app/api/usage/history/route-ab464cb25617d9dd.js +1 -0
  687. package/app/.next-cli-build/static/chunks/app/api/usage/leaderboard/route-ab464cb25617d9dd.js +1 -0
  688. package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-ab464cb25617d9dd.js +1 -0
  689. package/app/.next-cli-build/static/chunks/app/api/usage/meta/route-ab464cb25617d9dd.js +1 -0
  690. package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-ab464cb25617d9dd.js +1 -0
  691. package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-ab464cb25617d9dd.js +1 -0
  692. package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-ab464cb25617d9dd.js +1 -0
  693. package/app/.next-cli-build/static/chunks/app/api/usage/retry-stats/route-ab464cb25617d9dd.js +1 -0
  694. package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-ab464cb25617d9dd.js +1 -0
  695. package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-ab464cb25617d9dd.js +1 -0
  696. package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-ab464cb25617d9dd.js +1 -0
  697. package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-ab464cb25617d9dd.js +1 -0
  698. package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-ab464cb25617d9dd.js +1 -0
  699. package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-ab464cb25617d9dd.js +1 -0
  700. package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-ab464cb25617d9dd.js +1 -0
  701. package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-ab464cb25617d9dd.js +1 -0
  702. package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-ab464cb25617d9dd.js +1 -0
  703. package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-ab464cb25617d9dd.js +1 -0
  704. package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-ab464cb25617d9dd.js +1 -0
  705. package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-ab464cb25617d9dd.js +1 -0
  706. package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-ab464cb25617d9dd.js +1 -0
  707. package/app/.next-cli-build/static/chunks/app/api/v1/models/route-ab464cb25617d9dd.js +1 -0
  708. package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-ab464cb25617d9dd.js +1 -0
  709. package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-ab464cb25617d9dd.js +1 -0
  710. package/app/.next-cli-build/static/chunks/app/api/v1/route-ab464cb25617d9dd.js +1 -0
  711. package/app/.next-cli-build/static/chunks/app/api/v1/search/route-ab464cb25617d9dd.js +1 -0
  712. package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-ab464cb25617d9dd.js +1 -0
  713. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-ab464cb25617d9dd.js +1 -0
  714. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-ab464cb25617d9dd.js +1 -0
  715. package/app/.next-cli-build/static/chunks/app/api/version/route-ab464cb25617d9dd.js +1 -0
  716. package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-ab464cb25617d9dd.js +1 -0
  717. package/app/.next-cli-build/static/chunks/app/api/version/update/route-ab464cb25617d9dd.js +1 -0
  718. package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-ab464cb25617d9dd.js +1 -0
  719. package/app/.next-cli-build/static/chunks/app/page-ab464cb25617d9dd.js +1 -0
  720. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-ab464cb25617d9dd.js +1 -0
  721. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-ab464cb25617d9dd.js +1 -0
  722. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-ab464cb25617d9dd.js +1 -0
  723. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-ab464cb25617d9dd.js +1 -0
  724. package/app/.next-cli-build/static/css/68d66160ca549ddc.css +1 -0
  725. package/app/cli/.build-home/AppData/Roaming/extremerouter/db/backups/schema-3-to-4-0.8.0-20260802-152036/data.sqlite +0 -0
  726. package/app/cli/.build-home/AppData/Roaming/extremerouter/db/backups/upgrade-0.8.0-to-0.8.1-0.8.1-20260802-152517/data.sqlite +0 -0
  727. package/app/cli/.build-home/AppData/Roaming/extremerouter/db/data.sqlite-shm +0 -0
  728. package/app/cli/.build-home/AppData/Roaming/extremerouter/db/data.sqlite-wal +0 -0
  729. package/app/node_modules/@emnapi/runtime/dist/emnapi.cjs.js +1381 -0
  730. package/app/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.js +1 -0
  731. package/app/node_modules/@emnapi/runtime/index.js +5 -0
  732. package/app/node_modules/@emnapi/runtime/package.json +48 -0
  733. package/app/node_modules/{next/node_modules/postcss → postcss}/lib/container.js +106 -51
  734. package/app/node_modules/{next/node_modules/postcss → postcss}/lib/css-syntax-error.js +47 -14
  735. package/app/node_modules/postcss/lib/fromJSON.js +107 -0
  736. package/app/node_modules/{next/node_modules/postcss → postcss}/lib/input.js +67 -33
  737. package/app/node_modules/{next/node_modules/postcss → postcss}/lib/lazy-result.js +127 -51
  738. package/app/node_modules/{next/node_modules/postcss → postcss}/lib/list.js +1 -0
  739. package/app/node_modules/{next/node_modules/postcss → postcss}/lib/map-generator.js +26 -9
  740. package/app/node_modules/{next/node_modules/postcss → postcss}/lib/no-work-result.js +57 -55
  741. package/app/node_modules/postcss/lib/node.js +494 -0
  742. package/app/node_modules/{next/node_modules/postcss → postcss}/lib/parser.js +46 -38
  743. package/app/node_modules/{next/node_modules/postcss → postcss}/lib/previous-map.js +34 -12
  744. package/app/node_modules/{next/node_modules/postcss → postcss}/lib/processor.js +7 -7
  745. package/app/node_modules/{next/node_modules/postcss → postcss}/lib/result.js +5 -5
  746. package/app/node_modules/{next/node_modules/postcss → postcss}/lib/root.js +16 -1
  747. package/app/node_modules/{next/node_modules/postcss → postcss}/lib/stringifier.js +140 -32
  748. package/app/node_modules/{next/node_modules/postcss → postcss}/lib/tokenize.js +6 -2
  749. package/app/node_modules/{next/node_modules/postcss → postcss}/lib/warning.js +10 -0
  750. package/app/node_modules/{next/node_modules/postcss → postcss}/package.json +48 -48
  751. package/app/package.json +92 -87
  752. package/app/public/providers/1min-api.svg +15 -0
  753. package/app/public/providers/1min.svg +15 -0
  754. package/app/public/providers/cline.svg +17 -0
  755. package/app/public/providers/clinepass.svg +20 -0
  756. package/app/public/providers/codestral.svg +16 -0
  757. package/app/public/providers/databricks.svg +21 -0
  758. package/app/public/providers/deepinfra.svg +18 -0
  759. package/app/public/providers/grok-web.svg +14 -0
  760. package/app/public/providers/marathon.svg +18 -0
  761. package/app/public/providers/qwen2api.svg +16 -0
  762. package/app/public/providers/unimodel.svg +26 -0
  763. package/app/public/providers/venice.svg +15 -0
  764. package/app/public/providers/vercel-ai-gateway.svg +13 -0
  765. package/app/src/lib/db/migrate.js +286 -286
  766. package/package.json +1 -1
  767. package/app/.next-cli-build/server/chunks/1239.js +0 -1
  768. package/app/.next-cli-build/server/chunks/3992.js +0 -1
  769. package/app/.next-cli-build/server/chunks/4040.js +0 -9
  770. package/app/.next-cli-build/server/chunks/4356.js +0 -9
  771. package/app/.next-cli-build/server/chunks/5983.js +0 -9
  772. package/app/.next-cli-build/static/chunks/1321-207059925975e2dc.js +0 -1
  773. package/app/.next-cli-build/static/chunks/5497-c5ee857b78a8cf8a.js +0 -7
  774. package/app/.next-cli-build/static/chunks/8105-705e80a4c161374b.js +0 -1
  775. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/page-d722ccf5e0fec340.js +0 -1
  776. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/page-afc62a0533448ca0.js +0 -1
  777. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-a91bcaf7425e68a3.js +0 -1
  778. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/health/page-d077213deca8c217.js +0 -1
  779. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/page-99540bfed3193080.js +0 -1
  780. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/playground/page-0a50de81e7b688fc.js +0 -1
  781. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-53ab489f01e3da19.js +0 -10
  782. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-bc16a0312f0a7915.js +0 -1
  783. package/app/.next-cli-build/static/chunks/app/_global-error/page-abffaa46b4637bee.js +0 -1
  784. package/app/.next-cli-build/static/chunks/app/api/alerts/test/route-abffaa46b4637bee.js +0 -1
  785. package/app/.next-cli-build/static/chunks/app/api/auth/login/route-abffaa46b4637bee.js +0 -1
  786. package/app/.next-cli-build/static/chunks/app/api/auth/logout/route-abffaa46b4637bee.js +0 -1
  787. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-abffaa46b4637bee.js +0 -1
  788. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-abffaa46b4637bee.js +0 -1
  789. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-abffaa46b4637bee.js +0 -1
  790. package/app/.next-cli-build/static/chunks/app/api/auth/reset-password/route-abffaa46b4637bee.js +0 -1
  791. package/app/.next-cli-build/static/chunks/app/api/auth/status/route-abffaa46b4637bee.js +0 -1
  792. package/app/.next-cli-build/static/chunks/app/api/cache/route-abffaa46b4637bee.js +0 -1
  793. package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-abffaa46b4637bee.js +0 -1
  794. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-abffaa46b4637bee.js +0 -1
  795. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-abffaa46b4637bee.js +0 -1
  796. package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-abffaa46b4637bee.js +0 -1
  797. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-abffaa46b4637bee.js +0 -1
  798. package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-abffaa46b4637bee.js +0 -1
  799. package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-abffaa46b4637bee.js +0 -1
  800. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-abffaa46b4637bee.js +0 -1
  801. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-abffaa46b4637bee.js +0 -1
  802. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-abffaa46b4637bee.js +0 -1
  803. package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-abffaa46b4637bee.js +0 -1
  804. package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-abffaa46b4637bee.js +0 -1
  805. package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-abffaa46b4637bee.js +0 -1
  806. package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-abffaa46b4637bee.js +0 -1
  807. package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-abffaa46b4637bee.js +0 -1
  808. package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-abffaa46b4637bee.js +0 -1
  809. package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-abffaa46b4637bee.js +0 -1
  810. package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-abffaa46b4637bee.js +0 -1
  811. package/app/.next-cli-build/static/chunks/app/api/combos/route-abffaa46b4637bee.js +0 -1
  812. package/app/.next-cli-build/static/chunks/app/api/combos/validate-roles/route-abffaa46b4637bee.js +0 -1
  813. package/app/.next-cli-build/static/chunks/app/api/dashboard/stream/route-abffaa46b4637bee.js +0 -1
  814. package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-abffaa46b4637bee.js +0 -1
  815. package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-abffaa46b4637bee.js +0 -1
  816. package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-abffaa46b4637bee.js +0 -1
  817. package/app/.next-cli-build/static/chunks/app/api/health/providers/route-abffaa46b4637bee.js +0 -1
  818. package/app/.next-cli-build/static/chunks/app/api/health/route-abffaa46b4637bee.js +0 -1
  819. package/app/.next-cli-build/static/chunks/app/api/health/stream/route-abffaa46b4637bee.js +0 -1
  820. package/app/.next-cli-build/static/chunks/app/api/init/route-abffaa46b4637bee.js +0 -1
  821. package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-abffaa46b4637bee.js +0 -1
  822. package/app/.next-cli-build/static/chunks/app/api/keys/route-abffaa46b4637bee.js +0 -1
  823. package/app/.next-cli-build/static/chunks/app/api/locale/route-abffaa46b4637bee.js +0 -1
  824. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-abffaa46b4637bee.js +0 -1
  825. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-abffaa46b4637bee.js +0 -1
  826. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-abffaa46b4637bee.js +0 -1
  827. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-abffaa46b4637bee.js +0 -1
  828. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-abffaa46b4637bee.js +0 -1
  829. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-abffaa46b4637bee.js +0 -1
  830. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-abffaa46b4637bee.js +0 -1
  831. package/app/.next-cli-build/static/chunks/app/api/models/alias/route-abffaa46b4637bee.js +0 -1
  832. package/app/.next-cli-build/static/chunks/app/api/models/availability/route-abffaa46b4637bee.js +0 -1
  833. package/app/.next-cli-build/static/chunks/app/api/models/custom/route-abffaa46b4637bee.js +0 -1
  834. package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-abffaa46b4637bee.js +0 -1
  835. package/app/.next-cli-build/static/chunks/app/api/models/route-abffaa46b4637bee.js +0 -1
  836. package/app/.next-cli-build/static/chunks/app/api/models/test/route-abffaa46b4637bee.js +0 -1
  837. package/app/.next-cli-build/static/chunks/app/api/oauth/1min/import/route-abffaa46b4637bee.js +0 -1
  838. package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-abffaa46b4637bee.js +0 -1
  839. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-abffaa46b4637bee.js +0 -1
  840. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-abffaa46b4637bee.js +0 -1
  841. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-abffaa46b4637bee.js +0 -1
  842. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-abffaa46b4637bee.js +0 -1
  843. package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-abffaa46b4637bee.js +0 -1
  844. package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-abffaa46b4637bee.js +0 -1
  845. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-abffaa46b4637bee.js +0 -1
  846. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-abffaa46b4637bee.js +0 -1
  847. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-abffaa46b4637bee.js +0 -1
  848. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-abffaa46b4637bee.js +0 -1
  849. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-abffaa46b4637bee.js +0 -1
  850. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-abffaa46b4637bee.js +0 -1
  851. package/app/.next-cli-build/static/chunks/app/api/oauth/wp-studio/import/route-abffaa46b4637bee.js +0 -1
  852. package/app/.next-cli-build/static/chunks/app/api/oauth/zed/auto-import/route-abffaa46b4637bee.js +0 -1
  853. package/app/.next-cli-build/static/chunks/app/api/oauth/zed/import/route-abffaa46b4637bee.js +0 -1
  854. package/app/.next-cli-build/static/chunks/app/api/pricing/route-abffaa46b4637bee.js +0 -1
  855. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-abffaa46b4637bee.js +0 -1
  856. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-abffaa46b4637bee.js +0 -1
  857. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-abffaa46b4637bee.js +0 -1
  858. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/agnes-profile/route-abffaa46b4637bee.js +0 -1
  859. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/freebuff-profile/route-abffaa46b4637bee.js +0 -1
  860. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/health-timeline/route-abffaa46b4637bee.js +0 -1
  861. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/inxora-profile/route-abffaa46b4637bee.js +0 -1
  862. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-abffaa46b4637bee.js +0 -1
  863. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/onemin-api-profile/route-abffaa46b4637bee.js +0 -1
  864. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/onemin-profile/route-abffaa46b4637bee.js +0 -1
  865. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/qwencloud-profile/route-abffaa46b4637bee.js +0 -1
  866. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-abffaa46b4637bee.js +0 -1
  867. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-abffaa46b4637bee.js +0 -1
  868. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-abffaa46b4637bee.js +0 -1
  869. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/v0-profile/route-abffaa46b4637bee.js +0 -1
  870. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/vault-pool/route-abffaa46b4637bee.js +0 -1
  871. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/zenmux-plans/route-abffaa46b4637bee.js +0 -1
  872. package/app/.next-cli-build/static/chunks/app/api/providers/client/route-abffaa46b4637bee.js +0 -1
  873. package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-abffaa46b4637bee.js +0 -1
  874. package/app/.next-cli-build/static/chunks/app/api/providers/route-abffaa46b4637bee.js +0 -1
  875. package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-abffaa46b4637bee.js +0 -1
  876. package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-abffaa46b4637bee.js +0 -1
  877. package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-abffaa46b4637bee.js +0 -1
  878. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-abffaa46b4637bee.js +0 -1
  879. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-abffaa46b4637bee.js +0 -1
  880. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-abffaa46b4637bee.js +0 -1
  881. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-abffaa46b4637bee.js +0 -1
  882. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-abffaa46b4637bee.js +0 -1
  883. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-abffaa46b4637bee.js +0 -1
  884. package/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-abffaa46b4637bee.js +0 -1
  885. package/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-abffaa46b4637bee.js +0 -1
  886. package/app/.next-cli-build/static/chunks/app/api/settings/database/route-abffaa46b4637bee.js +0 -1
  887. package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-abffaa46b4637bee.js +0 -1
  888. package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-abffaa46b4637bee.js +0 -1
  889. package/app/.next-cli-build/static/chunks/app/api/settings/route-abffaa46b4637bee.js +0 -1
  890. package/app/.next-cli-build/static/chunks/app/api/shutdown/route-abffaa46b4637bee.js +0 -1
  891. package/app/.next-cli-build/static/chunks/app/api/swarm/active/route-abffaa46b4637bee.js +0 -1
  892. package/app/.next-cli-build/static/chunks/app/api/swarm/stream/route-abffaa46b4637bee.js +0 -1
  893. package/app/.next-cli-build/static/chunks/app/api/tags/route-abffaa46b4637bee.js +0 -1
  894. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-abffaa46b4637bee.js +0 -1
  895. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-abffaa46b4637bee.js +0 -1
  896. package/app/.next-cli-build/static/chunks/app/api/translator/load/route-abffaa46b4637bee.js +0 -1
  897. package/app/.next-cli-build/static/chunks/app/api/translator/save/route-abffaa46b4637bee.js +0 -1
  898. package/app/.next-cli-build/static/chunks/app/api/translator/send/route-abffaa46b4637bee.js +0 -1
  899. package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-abffaa46b4637bee.js +0 -1
  900. package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-abffaa46b4637bee.js +0 -1
  901. package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-abffaa46b4637bee.js +0 -1
  902. package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-abffaa46b4637bee.js +0 -1
  903. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-abffaa46b4637bee.js +0 -1
  904. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-abffaa46b4637bee.js +0 -1
  905. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-abffaa46b4637bee.js +0 -1
  906. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-abffaa46b4637bee.js +0 -1
  907. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-abffaa46b4637bee.js +0 -1
  908. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-abffaa46b4637bee.js +0 -1
  909. package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-abffaa46b4637bee.js +0 -1
  910. package/app/.next-cli-build/static/chunks/app/api/usage/history/route-abffaa46b4637bee.js +0 -1
  911. package/app/.next-cli-build/static/chunks/app/api/usage/leaderboard/route-abffaa46b4637bee.js +0 -1
  912. package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-abffaa46b4637bee.js +0 -1
  913. package/app/.next-cli-build/static/chunks/app/api/usage/meta/route-abffaa46b4637bee.js +0 -1
  914. package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-abffaa46b4637bee.js +0 -1
  915. package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-abffaa46b4637bee.js +0 -1
  916. package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-abffaa46b4637bee.js +0 -1
  917. package/app/.next-cli-build/static/chunks/app/api/usage/retry-stats/route-abffaa46b4637bee.js +0 -1
  918. package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-abffaa46b4637bee.js +0 -1
  919. package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-abffaa46b4637bee.js +0 -1
  920. package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-abffaa46b4637bee.js +0 -1
  921. package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-abffaa46b4637bee.js +0 -1
  922. package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-abffaa46b4637bee.js +0 -1
  923. package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-abffaa46b4637bee.js +0 -1
  924. package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-abffaa46b4637bee.js +0 -1
  925. package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-abffaa46b4637bee.js +0 -1
  926. package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-abffaa46b4637bee.js +0 -1
  927. package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-abffaa46b4637bee.js +0 -1
  928. package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-abffaa46b4637bee.js +0 -1
  929. package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-abffaa46b4637bee.js +0 -1
  930. package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-abffaa46b4637bee.js +0 -1
  931. package/app/.next-cli-build/static/chunks/app/api/v1/models/route-abffaa46b4637bee.js +0 -1
  932. package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-abffaa46b4637bee.js +0 -1
  933. package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-abffaa46b4637bee.js +0 -1
  934. package/app/.next-cli-build/static/chunks/app/api/v1/route-abffaa46b4637bee.js +0 -1
  935. package/app/.next-cli-build/static/chunks/app/api/v1/search/route-abffaa46b4637bee.js +0 -1
  936. package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-abffaa46b4637bee.js +0 -1
  937. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-abffaa46b4637bee.js +0 -1
  938. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-abffaa46b4637bee.js +0 -1
  939. package/app/.next-cli-build/static/chunks/app/api/version/route-abffaa46b4637bee.js +0 -1
  940. package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-abffaa46b4637bee.js +0 -1
  941. package/app/.next-cli-build/static/chunks/app/api/version/update/route-abffaa46b4637bee.js +0 -1
  942. package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-abffaa46b4637bee.js +0 -1
  943. package/app/.next-cli-build/static/chunks/app/page-abffaa46b4637bee.js +0 -1
  944. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-abffaa46b4637bee.js +0 -1
  945. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-abffaa46b4637bee.js +0 -1
  946. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-abffaa46b4637bee.js +0 -1
  947. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-abffaa46b4637bee.js +0 -1
  948. package/app/.next-cli-build/static/css/d7d86034708483b4.css +0 -1
  949. package/app/.next-cli-build/static/lE_TtdkNAUztAcvs6X_vC/_buildManifest.js +0 -1
  950. package/app/cli/.build-home/AppData/Roaming/extremerouter/db/backups/upgrade-0.7.6-to-0.7.7-0.7.7-20260726-222051/data.sqlite +0 -0
  951. package/app/cli/.build-home/AppData/Roaming/extremerouter/db/backups/upgrade-0.7.6-to-0.7.7-0.7.7-20260726-222052/data.sqlite +0 -0
  952. package/app/cli/.build-home/AppData/Roaming/extremerouter/db/backups/upgrade-0.7.7-to-0.7.8-0.7.8-20260727-004850/data.sqlite +0 -0
  953. package/app/node_modules/next/node_modules/postcss/lib/fromJSON.js +0 -54
  954. package/app/node_modules/next/node_modules/postcss/lib/node.js +0 -381
  955. package/app/.next-cli-build/static/{lE_TtdkNAUztAcvs6X_vC → S-pbWChrUiCkwFyfx4Su3}/_ssgManifest.js +0 -0
  956. package/app/node_modules/{next/node_modules/postcss → postcss}/lib/at-rule.js +0 -0
  957. package/app/node_modules/{next/node_modules/postcss → postcss}/lib/comment.js +0 -0
  958. package/app/node_modules/{next/node_modules/postcss → postcss}/lib/declaration.js +4 -4
  959. package/app/node_modules/{next/node_modules/postcss → postcss}/lib/document.js +0 -0
  960. package/app/node_modules/{next/node_modules/postcss → postcss}/lib/parse.js +1 -1
  961. package/app/node_modules/{next/node_modules/postcss → postcss}/lib/postcss.js +12 -12
  962. package/app/node_modules/{next/node_modules/postcss → postcss}/lib/rule.js +6 -6
  963. /package/app/node_modules/{next/node_modules/postcss → postcss}/lib/stringify.js +0 -0
  964. /package/app/node_modules/{next/node_modules/postcss → postcss}/lib/symbols.js +0 -0
  965. /package/app/node_modules/{next/node_modules/postcss → postcss}/lib/terminal-highlight.js +0 -0
  966. /package/app/node_modules/{next/node_modules/postcss → postcss}/lib/warn-once.js +0 -0
@@ -1,286 +1,286 @@
1
- import fs from "node:fs";
2
- import path from "node:path";
3
- import { LEGACY_FILES, DB_DIR, DATA_FILE } from "./paths.js";
4
- import { TABLES, buildCreateTableSql } from "./schema.js";
5
- import { MIGRATIONS, latestVersion } from "./migrations/index.js";
6
- import { getMetaSync, setMetaSync } from "./helpers/metaStore.js";
7
- import { makeBackupDir, backupFile, pruneOldBackups } from "./backup.js";
8
- import { getAppVersion } from "./version.js";
9
- import { stringifyJson } from "./helpers/jsonCol.js";
10
-
11
- // Marker file: prevents re-importing legacy JSON when user wipes data.sqlite.
12
- const MIGRATED_MARKER = path.join(DB_DIR, ".migrated-from-json");
13
-
14
- // Track per-adapter so reusing same adapter skips re-run, but new adapter (after reset) re-runs.
15
- const _migratedAdapters = new WeakSet();
16
-
17
- // Thrown when row-count assertion fails. Outer transaction rolls back,
18
- // legacy db.json kept intact, marker not written → next boot retries.
19
- export class MigrationAborted extends Error {
20
- constructor(message, droppedRows) {
21
- super(message);
22
- this.name = "MigrationAborted";
23
- this.droppedRows = droppedRows;
24
- }
25
- }
26
-
27
- // Insert rows one-by-one, collect failures, then assert COUNT(*) matches input length.
28
- function importWithAssertion(adapter, tableName, rows, insertFn, rowMeta) {
29
- const dropped = [];
30
- for (const row of rows) {
31
- try { insertFn(row); }
32
- catch (err) { dropped.push({ ...rowMeta(row), reason: err.message }); }
33
- }
34
- const inserted = adapter.get(`SELECT COUNT(*) as c FROM ${tableName}`)?.c ?? 0;
35
- if (inserted !== rows.length) {
36
- console.warn(`[DB][migrate] ${tableName} row-count mismatch: expected ${rows.length}, got ${inserted}. Dropped:`, dropped);
37
- throw new MigrationAborted(`${tableName} row-count mismatch: expected ${rows.length}, got ${inserted}`, dropped);
38
- }
39
- }
40
-
41
- function readJsonSafe(file) {
42
- if (!fs.existsSync(file)) return null;
43
- try { return JSON.parse(fs.readFileSync(file, "utf-8")); } catch { return null; }
44
- }
45
-
46
- function isFreshDb(adapter) {
47
- // Table _meta may not exist yet on truly fresh DB
48
- try {
49
- const row = adapter.get(`SELECT COUNT(*) as c FROM _meta`);
50
- return !row || row.c === 0;
51
- } catch {
52
- return true;
53
- }
54
- }
55
-
56
- // ─── Versioned migrations runner (skip-version safe) ─────────────────────
57
- function runVersionedMigrations(adapter) {
58
- // Bootstrap _meta first so we can read schemaVersion
59
- adapter.exec(buildCreateTableSql("_meta", TABLES._meta));
60
-
61
- const current = parseInt(getMetaSync(adapter, "schemaVersion", "0"), 10) || 0;
62
- const target = latestVersion();
63
- if (current >= target) return { applied: 0, from: current, to: current };
64
-
65
- const pending = MIGRATIONS.filter((m) => m.version > current);
66
- let lastApplied = current;
67
- for (const m of pending) {
68
- adapter.transaction(() => {
69
- m.up(adapter);
70
- setMetaSync(adapter, "schemaVersion", m.version);
71
- });
72
- lastApplied = m.version;
73
- console.log(`[DB][migrate] applied #${m.version} ${m.name}`);
74
- }
75
- return { applied: pending.length, from: current, to: lastApplied };
76
- }
77
-
78
- // ─── Auto-sync (additive only): add missing tables/columns/indexes ───────
79
- function syncSchemaFromTables(adapter) {
80
- for (const [tableName, def] of Object.entries(TABLES)) {
81
- // Create table if absent
82
- adapter.exec(buildCreateTableSql(tableName, def));
83
-
84
- // Diff columns
85
- const existing = adapter.all(`PRAGMA table_info(${tableName})`);
86
- const existingNames = new Set(existing.map((r) => r.name));
87
- for (const [colName, colDef] of Object.entries(def.columns)) {
88
- if (!existingNames.has(colName)) {
89
- // SQLite ADD COLUMN restrictions: no PRIMARY KEY / UNIQUE w/o NULL ok.
90
- // We strip PRIMARY KEY / UNIQUE since those are only valid at create time.
91
- const safeDef = colDef
92
- .replace(/PRIMARY KEY( AUTOINCREMENT)?/i, "")
93
- .replace(/UNIQUE/i, "")
94
- .trim();
95
- try {
96
- adapter.exec(`ALTER TABLE ${tableName} ADD COLUMN ${colName} ${safeDef}`);
97
- console.log(`[DB][sync] +column ${tableName}.${colName}`);
98
- } catch (e) {
99
- console.warn(`[DB][sync] add column ${tableName}.${colName} failed: ${e.message}`);
100
- }
101
- }
102
- }
103
-
104
- // Indexes (idempotent)
105
- for (const idx of def.indexes || []) {
106
- try { adapter.exec(idx); } catch {}
107
- }
108
- }
109
- }
110
-
111
- // ─── Legacy JSON import (one-time) ───────────────────────────────────────
112
- function importLegacyMain(adapter, data) {
113
- if (!data || typeof data !== "object") return;
114
-
115
- if (data.settings) {
116
- adapter.run(`INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data`, [stringifyJson(data.settings)]);
117
- }
118
-
119
- importWithAssertion(adapter, "providerConnections", data.providerConnections || [], (c) => {
120
- const { id, provider, authType, name, email, priority, isActive, createdAt, updatedAt, ...rest } = c;
121
- adapter.run(
122
- `INSERT OR REPLACE INTO providerConnections(id, provider, authType, name, email, priority, isActive, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
123
- [id, provider, authType || "oauth", name || null, email || null, priority || null, isActive === false ? 0 : 1, stringifyJson(rest), createdAt || new Date().toISOString(), updatedAt || new Date().toISOString()]
124
- );
125
- }, (c) => ({ id: c.id ?? null, provider: c.provider ?? null, name: c.name ?? null }));
126
-
127
- importWithAssertion(adapter, "providerNodes", data.providerNodes || [], (n) => {
128
- const { id, type, name, createdAt, updatedAt, ...rest } = n;
129
- adapter.run(
130
- `INSERT OR REPLACE INTO providerNodes(id, type, name, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)`,
131
- [id, type || null, name || null, stringifyJson(rest), createdAt || new Date().toISOString(), updatedAt || new Date().toISOString()]
132
- );
133
- }, (n) => ({ id: n.id ?? null, type: n.type ?? null, name: n.name ?? null }));
134
-
135
- importWithAssertion(adapter, "proxyPools", data.proxyPools || [], (p) => {
136
- const { id, isActive, testStatus, createdAt, updatedAt, ...rest } = p;
137
- adapter.run(
138
- `INSERT OR REPLACE INTO proxyPools(id, isActive, testStatus, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)`,
139
- [id, isActive === false ? 0 : 1, testStatus || "unknown", stringifyJson(rest), createdAt || new Date().toISOString(), updatedAt || new Date().toISOString()]
140
- );
141
- }, (p) => ({ id: p.id ?? null }));
142
-
143
- importWithAssertion(adapter, "apiKeys", data.apiKeys || [], (k) => {
144
- adapter.run(
145
- `INSERT OR REPLACE INTO apiKeys(id, key, name, machineId, isActive, createdAt) VALUES(?, ?, ?, ?, ?, ?)`,
146
- [k.id, k.key, k.name || null, k.machineId || null, k.isActive === false ? 0 : 1, k.createdAt || new Date().toISOString()]
147
- );
148
- }, (k) => ({ id: k.id ?? null, name: k.name ?? null }));
149
-
150
- importWithAssertion(adapter, "combos", data.combos || [], (c) => {
151
- adapter.run(
152
- `INSERT OR REPLACE INTO combos(id, name, kind, models, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)`,
153
- [c.id, c.name, c.kind || null, stringifyJson(c.models || []), c.createdAt || new Date().toISOString(), c.updatedAt || new Date().toISOString()]
154
- );
155
- }, (c) => ({ id: c.id ?? null, name: c.name ?? null }));
156
-
157
- for (const [alias, model] of Object.entries(data.modelAliases || {})) {
158
- adapter.run(`INSERT OR REPLACE INTO kv(scope, key, value) VALUES('modelAliases', ?, ?)`, [alias, stringifyJson(model)]);
159
- }
160
- for (const m of data.customModels || []) {
161
- const k = `${m.providerAlias}|${m.id}|${m.type || "llm"}`;
162
- adapter.run(`INSERT OR REPLACE INTO kv(scope, key, value) VALUES('customModels', ?, ?)`, [k, stringifyJson(m)]);
163
- }
164
- for (const [tool, mappings] of Object.entries(data.mitmAlias || {})) {
165
- adapter.run(`INSERT OR REPLACE INTO kv(scope, key, value) VALUES('mitmAlias', ?, ?)`, [tool, stringifyJson(mappings || {})]);
166
- }
167
- for (const [provider, models] of Object.entries(data.pricing || {})) {
168
- adapter.run(`INSERT OR REPLACE INTO kv(scope, key, value) VALUES('pricing', ?, ?)`, [provider, stringifyJson(models || {})]);
169
- }
170
- }
171
-
172
- function importLegacyUsage(adapter, data) {
173
- if (!data || typeof data !== "object") return;
174
- for (const e of data.history || []) {
175
- const t = e.tokens || {};
176
- adapter.run(
177
- `INSERT INTO usageHistory(timestamp, provider, model, connectionId, apiKey, endpoint, promptTokens, completionTokens, cost, status, tokens, meta) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
178
- [
179
- e.timestamp || new Date().toISOString(),
180
- e.provider || null, e.model || null, e.connectionId || null, e.apiKey || null, e.endpoint || null,
181
- t.prompt_tokens || t.input_tokens || 0,
182
- t.completion_tokens || t.output_tokens || 0,
183
- e.cost || 0,
184
- e.status || "ok",
185
- stringifyJson(t),
186
- stringifyJson({}),
187
- ]
188
- );
189
- }
190
- for (const [dateKey, day] of Object.entries(data.dailySummary || {})) {
191
- adapter.run(`INSERT OR REPLACE INTO usageDaily(dateKey, data) VALUES(?, ?)`, [dateKey, stringifyJson(day)]);
192
- }
193
- if (typeof data.totalRequestsLifetime === "number") {
194
- setMetaSync(adapter, "totalRequestsLifetime", data.totalRequestsLifetime);
195
- }
196
- }
197
-
198
- function importLegacyDisabled(adapter, data) {
199
- if (!data || typeof data.disabled !== "object") return;
200
- for (const [provider, ids] of Object.entries(data.disabled)) {
201
- adapter.run(`INSERT OR REPLACE INTO kv(scope, key, value) VALUES('disabledModels', ?, ?)`, [provider, stringifyJson(ids || [])]);
202
- }
203
- }
204
-
205
- function importLegacyDetails(adapter, data) {
206
- if (!data || !Array.isArray(data.records)) return;
207
- for (const r of data.records) {
208
- adapter.run(
209
- `INSERT OR REPLACE INTO requestDetails(id, timestamp, provider, model, connectionId, status, data) VALUES(?, ?, ?, ?, ?, ?, ?)`,
210
- [r.id, r.timestamp || new Date().toISOString(), r.provider || null, r.model || null, r.connectionId || null, r.status || null, stringifyJson(r)]
211
- );
212
- }
213
- }
214
-
215
- // ─── Main entry ──────────────────────────────────────────────────────────
216
- export async function runMigrationOnce(adapter) {
217
- if (_migratedAdapters.has(adapter)) return;
218
- _migratedAdapters.add(adapter);
219
-
220
- // Capture freshness BEFORE migrations stamp _meta (otherwise we'd misclassify
221
- // a brand-new DB as non-fresh once schemaVersion is written).
222
- const fresh = isFreshDb(adapter);
223
-
224
- // 1. Always run versioned migrations chain (skip-version safe)
225
- const migInfo = runVersionedMigrations(adapter);
226
-
227
- // 2. Additive sync (auto add missing columns/indexes declared in TABLES)
228
- syncSchemaFromTables(adapter);
229
-
230
- // 3. One-time legacy JSON import (only if DB was fresh on entry)
231
- const alreadyImported = fs.existsSync(MIGRATED_MARKER);
232
- const legacyMain = readJsonSafe(LEGACY_FILES.main);
233
- const legacyUsage = readJsonSafe(LEGACY_FILES.usage);
234
- const legacyDisabled = readJsonSafe(LEGACY_FILES.disabled);
235
- const legacyDetails = readJsonSafe(LEGACY_FILES.details);
236
- const hasLegacy = !!(legacyMain || legacyUsage || legacyDisabled || legacyDetails);
237
-
238
- if (fresh && hasLegacy && !alreadyImported) {
239
- const t0 = Date.now();
240
- const backupDir = makeBackupDir("migrate-from-json");
241
- for (const f of Object.values(LEGACY_FILES)) backupFile(f, backupDir);
242
-
243
- try {
244
- adapter.transaction(() => {
245
- importLegacyMain(adapter, legacyMain);
246
- importLegacyUsage(adapter, legacyUsage);
247
- importLegacyDisabled(adapter, legacyDisabled);
248
- importLegacyDetails(adapter, legacyDetails);
249
- setMetaSync(adapter, "appVersion", getAppVersion());
250
- setMetaSync(adapter, "migratedAt", new Date().toISOString());
251
- });
252
- } catch (err) {
253
- if (err instanceof MigrationAborted) {
254
- console.error(`[DB][migrate] aborted: ${err.message} | legacy JSON kept | backup: ${backupDir}`);
255
- return;
256
- }
257
- throw err;
258
- }
259
-
260
- try { fs.writeFileSync(MIGRATED_MARKER, new Date().toISOString()); } catch {}
261
- pruneOldBackups();
262
- console.log(`[DB][migrate] JSON → SQLite in ${Date.now() - t0}ms | legacy JSON kept at DATA_DIR | backup: ${backupDir}`);
263
- return;
264
- }
265
-
266
- if (fresh) {
267
- setMetaSync(adapter, "appVersion", getAppVersion());
268
- return;
269
- }
270
-
271
- // 4. App version bump → backup data.sqlite (safety net before user-side upgrade)
272
- const oldVer = getMetaSync(adapter, "appVersion", null);
273
- const newVer = getAppVersion();
274
- if (oldVer && oldVer !== newVer) {
275
- const backupDir = makeBackupDir(`upgrade-${oldVer}-to-${newVer}`);
276
- try { backupFile(DATA_FILE, backupDir); } catch {}
277
- setMetaSync(adapter, "appVersion", newVer);
278
- pruneOldBackups();
279
- console.log(`[DB][migrate] App ${oldVer} → ${newVer} | schema ${migInfo.from} → ${migInfo.to} | backup: ${backupDir}`);
280
- } else if (migInfo.applied > 0) {
281
- // Schema upgrade without app version bump — still backup
282
- const backupDir = makeBackupDir(`schema-${migInfo.from}-to-${migInfo.to}`);
283
- try { backupFile(DATA_FILE, backupDir); } catch {}
284
- pruneOldBackups();
285
- }
286
- }
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { LEGACY_FILES, DB_DIR, DATA_FILE } from "./paths.js";
4
+ import { TABLES, buildCreateTableSql } from "./schema.js";
5
+ import { MIGRATIONS, latestVersion } from "./migrations/index.js";
6
+ import { getMetaSync, setMetaSync } from "./helpers/metaStore.js";
7
+ import { makeBackupDir, backupFile, pruneOldBackups } from "./backup.js";
8
+ import { getAppVersion } from "./version.js";
9
+ import { stringifyJson } from "./helpers/jsonCol.js";
10
+
11
+ // Marker file: prevents re-importing legacy JSON when user wipes data.sqlite.
12
+ const MIGRATED_MARKER = path.join(DB_DIR, ".migrated-from-json");
13
+
14
+ // Track per-adapter so reusing same adapter skips re-run, but new adapter (after reset) re-runs.
15
+ const _migratedAdapters = new WeakSet();
16
+
17
+ // Thrown when row-count assertion fails. Outer transaction rolls back,
18
+ // legacy db.json kept intact, marker not written → next boot retries.
19
+ export class MigrationAborted extends Error {
20
+ constructor(message, droppedRows) {
21
+ super(message);
22
+ this.name = "MigrationAborted";
23
+ this.droppedRows = droppedRows;
24
+ }
25
+ }
26
+
27
+ // Insert rows one-by-one, collect failures, then assert COUNT(*) matches input length.
28
+ function importWithAssertion(adapter, tableName, rows, insertFn, rowMeta) {
29
+ const dropped = [];
30
+ for (const row of rows) {
31
+ try { insertFn(row); }
32
+ catch (err) { dropped.push({ ...rowMeta(row), reason: err.message }); }
33
+ }
34
+ const inserted = adapter.get(`SELECT COUNT(*) as c FROM ${tableName}`)?.c ?? 0;
35
+ if (inserted !== rows.length) {
36
+ console.warn(`[DB][migrate] ${tableName} row-count mismatch: expected ${rows.length}, got ${inserted}. Dropped:`, dropped);
37
+ throw new MigrationAborted(`${tableName} row-count mismatch: expected ${rows.length}, got ${inserted}`, dropped);
38
+ }
39
+ }
40
+
41
+ function readJsonSafe(file) {
42
+ if (!fs.existsSync(file)) return null;
43
+ try { return JSON.parse(fs.readFileSync(file, "utf-8")); } catch { return null; }
44
+ }
45
+
46
+ function isFreshDb(adapter) {
47
+ // Table _meta may not exist yet on truly fresh DB
48
+ try {
49
+ const row = adapter.get(`SELECT COUNT(*) as c FROM _meta`);
50
+ return !row || row.c === 0;
51
+ } catch {
52
+ return true;
53
+ }
54
+ }
55
+
56
+ // ─── Versioned migrations runner (skip-version safe) ─────────────────────
57
+ function runVersionedMigrations(adapter) {
58
+ // Bootstrap _meta first so we can read schemaVersion
59
+ adapter.exec(buildCreateTableSql("_meta", TABLES._meta));
60
+
61
+ const current = parseInt(getMetaSync(adapter, "schemaVersion", "0"), 10) || 0;
62
+ const target = latestVersion();
63
+ if (current >= target) return { applied: 0, from: current, to: current };
64
+
65
+ const pending = MIGRATIONS.filter((m) => m.version > current);
66
+ let lastApplied = current;
67
+ for (const m of pending) {
68
+ adapter.transaction(() => {
69
+ m.up(adapter);
70
+ setMetaSync(adapter, "schemaVersion", m.version);
71
+ });
72
+ lastApplied = m.version;
73
+ console.log(`[DB][migrate] applied #${m.version} ${m.name}`);
74
+ }
75
+ return { applied: pending.length, from: current, to: lastApplied };
76
+ }
77
+
78
+ // ─── Auto-sync (additive only): add missing tables/columns/indexes ───────
79
+ function syncSchemaFromTables(adapter) {
80
+ for (const [tableName, def] of Object.entries(TABLES)) {
81
+ // Create table if absent
82
+ adapter.exec(buildCreateTableSql(tableName, def));
83
+
84
+ // Diff columns
85
+ const existing = adapter.all(`PRAGMA table_info(${tableName})`);
86
+ const existingNames = new Set(existing.map((r) => r.name));
87
+ for (const [colName, colDef] of Object.entries(def.columns)) {
88
+ if (!existingNames.has(colName)) {
89
+ // SQLite ADD COLUMN restrictions: no PRIMARY KEY / UNIQUE w/o NULL ok.
90
+ // We strip PRIMARY KEY / UNIQUE since those are only valid at create time.
91
+ const safeDef = colDef
92
+ .replace(/PRIMARY KEY( AUTOINCREMENT)?/i, "")
93
+ .replace(/UNIQUE/i, "")
94
+ .trim();
95
+ try {
96
+ adapter.exec(`ALTER TABLE ${tableName} ADD COLUMN ${colName} ${safeDef}`);
97
+ console.log(`[DB][sync] +column ${tableName}.${colName}`);
98
+ } catch (e) {
99
+ console.warn(`[DB][sync] add column ${tableName}.${colName} failed: ${e.message}`);
100
+ }
101
+ }
102
+ }
103
+
104
+ // Indexes (idempotent)
105
+ for (const idx of def.indexes || []) {
106
+ try { adapter.exec(idx); } catch {}
107
+ }
108
+ }
109
+ }
110
+
111
+ // ─── Legacy JSON import (one-time) ───────────────────────────────────────
112
+ function importLegacyMain(adapter, data) {
113
+ if (!data || typeof data !== "object") return;
114
+
115
+ if (data.settings) {
116
+ adapter.run(`INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data`, [stringifyJson(data.settings)]);
117
+ }
118
+
119
+ importWithAssertion(adapter, "providerConnections", data.providerConnections || [], (c) => {
120
+ const { id, provider, authType, name, email, priority, isActive, createdAt, updatedAt, ...rest } = c;
121
+ adapter.run(
122
+ `INSERT OR REPLACE INTO providerConnections(id, provider, authType, name, email, priority, isActive, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
123
+ [id, provider, authType || "oauth", name || null, email || null, priority || null, isActive === false ? 0 : 1, stringifyJson(rest), createdAt || new Date().toISOString(), updatedAt || new Date().toISOString()]
124
+ );
125
+ }, (c) => ({ id: c.id ?? null, provider: c.provider ?? null, name: c.name ?? null }));
126
+
127
+ importWithAssertion(adapter, "providerNodes", data.providerNodes || [], (n) => {
128
+ const { id, type, name, createdAt, updatedAt, ...rest } = n;
129
+ adapter.run(
130
+ `INSERT OR REPLACE INTO providerNodes(id, type, name, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)`,
131
+ [id, type || null, name || null, stringifyJson(rest), createdAt || new Date().toISOString(), updatedAt || new Date().toISOString()]
132
+ );
133
+ }, (n) => ({ id: n.id ?? null, type: n.type ?? null, name: n.name ?? null }));
134
+
135
+ importWithAssertion(adapter, "proxyPools", data.proxyPools || [], (p) => {
136
+ const { id, isActive, testStatus, createdAt, updatedAt, ...rest } = p;
137
+ adapter.run(
138
+ `INSERT OR REPLACE INTO proxyPools(id, isActive, testStatus, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)`,
139
+ [id, isActive === false ? 0 : 1, testStatus || "unknown", stringifyJson(rest), createdAt || new Date().toISOString(), updatedAt || new Date().toISOString()]
140
+ );
141
+ }, (p) => ({ id: p.id ?? null }));
142
+
143
+ importWithAssertion(adapter, "apiKeys", data.apiKeys || [], (k) => {
144
+ adapter.run(
145
+ `INSERT OR REPLACE INTO apiKeys(id, key, name, machineId, isActive, createdAt) VALUES(?, ?, ?, ?, ?, ?)`,
146
+ [k.id, k.key, k.name || null, k.machineId || null, k.isActive === false ? 0 : 1, k.createdAt || new Date().toISOString()]
147
+ );
148
+ }, (k) => ({ id: k.id ?? null, name: k.name ?? null }));
149
+
150
+ importWithAssertion(adapter, "combos", data.combos || [], (c) => {
151
+ adapter.run(
152
+ `INSERT OR REPLACE INTO combos(id, name, kind, models, strategyConfig, revision, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?, ?, ?)`,
153
+ [c.id, c.name, c.kind || null, stringifyJson(c.models || []), stringifyJson(c.strategyConfig || {}), Number(c.revision) || 1, c.createdAt || new Date().toISOString(), c.updatedAt || new Date().toISOString()]
154
+ );
155
+ }, (c) => ({ id: c.id ?? null, name: c.name ?? null }));
156
+
157
+ for (const [alias, model] of Object.entries(data.modelAliases || {})) {
158
+ adapter.run(`INSERT OR REPLACE INTO kv(scope, key, value) VALUES('modelAliases', ?, ?)`, [alias, stringifyJson(model)]);
159
+ }
160
+ for (const m of data.customModels || []) {
161
+ const k = `${m.providerAlias}|${m.id}|${m.type || "llm"}`;
162
+ adapter.run(`INSERT OR REPLACE INTO kv(scope, key, value) VALUES('customModels', ?, ?)`, [k, stringifyJson(m)]);
163
+ }
164
+ for (const [tool, mappings] of Object.entries(data.mitmAlias || {})) {
165
+ adapter.run(`INSERT OR REPLACE INTO kv(scope, key, value) VALUES('mitmAlias', ?, ?)`, [tool, stringifyJson(mappings || {})]);
166
+ }
167
+ for (const [provider, models] of Object.entries(data.pricing || {})) {
168
+ adapter.run(`INSERT OR REPLACE INTO kv(scope, key, value) VALUES('pricing', ?, ?)`, [provider, stringifyJson(models || {})]);
169
+ }
170
+ }
171
+
172
+ function importLegacyUsage(adapter, data) {
173
+ if (!data || typeof data !== "object") return;
174
+ for (const e of data.history || []) {
175
+ const t = e.tokens || {};
176
+ adapter.run(
177
+ `INSERT INTO usageHistory(timestamp, provider, model, connectionId, apiKey, endpoint, promptTokens, completionTokens, cost, status, tokens, meta) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
178
+ [
179
+ e.timestamp || new Date().toISOString(),
180
+ e.provider || null, e.model || null, e.connectionId || null, e.apiKey || null, e.endpoint || null,
181
+ t.prompt_tokens || t.input_tokens || 0,
182
+ t.completion_tokens || t.output_tokens || 0,
183
+ e.cost || 0,
184
+ e.status || "ok",
185
+ stringifyJson(t),
186
+ stringifyJson({}),
187
+ ]
188
+ );
189
+ }
190
+ for (const [dateKey, day] of Object.entries(data.dailySummary || {})) {
191
+ adapter.run(`INSERT OR REPLACE INTO usageDaily(dateKey, data) VALUES(?, ?)`, [dateKey, stringifyJson(day)]);
192
+ }
193
+ if (typeof data.totalRequestsLifetime === "number") {
194
+ setMetaSync(adapter, "totalRequestsLifetime", data.totalRequestsLifetime);
195
+ }
196
+ }
197
+
198
+ function importLegacyDisabled(adapter, data) {
199
+ if (!data || typeof data.disabled !== "object") return;
200
+ for (const [provider, ids] of Object.entries(data.disabled)) {
201
+ adapter.run(`INSERT OR REPLACE INTO kv(scope, key, value) VALUES('disabledModels', ?, ?)`, [provider, stringifyJson(ids || [])]);
202
+ }
203
+ }
204
+
205
+ function importLegacyDetails(adapter, data) {
206
+ if (!data || !Array.isArray(data.records)) return;
207
+ for (const r of data.records) {
208
+ adapter.run(
209
+ `INSERT OR REPLACE INTO requestDetails(id, timestamp, provider, model, connectionId, status, data) VALUES(?, ?, ?, ?, ?, ?, ?)`,
210
+ [r.id, r.timestamp || new Date().toISOString(), r.provider || null, r.model || null, r.connectionId || null, r.status || null, stringifyJson(r)]
211
+ );
212
+ }
213
+ }
214
+
215
+ // ─── Main entry ──────────────────────────────────────────────────────────
216
+ export async function runMigrationOnce(adapter) {
217
+ if (_migratedAdapters.has(adapter)) return;
218
+ _migratedAdapters.add(adapter);
219
+
220
+ // Capture freshness BEFORE migrations stamp _meta (otherwise we'd misclassify
221
+ // a brand-new DB as non-fresh once schemaVersion is written).
222
+ const fresh = isFreshDb(adapter);
223
+
224
+ // 1. Always run versioned migrations chain (skip-version safe)
225
+ const migInfo = runVersionedMigrations(adapter);
226
+
227
+ // 2. Additive sync (auto add missing columns/indexes declared in TABLES)
228
+ syncSchemaFromTables(adapter);
229
+
230
+ // 3. One-time legacy JSON import (only if DB was fresh on entry)
231
+ const alreadyImported = fs.existsSync(MIGRATED_MARKER);
232
+ const legacyMain = readJsonSafe(LEGACY_FILES.main);
233
+ const legacyUsage = readJsonSafe(LEGACY_FILES.usage);
234
+ const legacyDisabled = readJsonSafe(LEGACY_FILES.disabled);
235
+ const legacyDetails = readJsonSafe(LEGACY_FILES.details);
236
+ const hasLegacy = !!(legacyMain || legacyUsage || legacyDisabled || legacyDetails);
237
+
238
+ if (fresh && hasLegacy && !alreadyImported) {
239
+ const t0 = Date.now();
240
+ const backupDir = makeBackupDir("migrate-from-json");
241
+ for (const f of Object.values(LEGACY_FILES)) backupFile(f, backupDir);
242
+
243
+ try {
244
+ adapter.transaction(() => {
245
+ importLegacyMain(adapter, legacyMain);
246
+ importLegacyUsage(adapter, legacyUsage);
247
+ importLegacyDisabled(adapter, legacyDisabled);
248
+ importLegacyDetails(adapter, legacyDetails);
249
+ setMetaSync(adapter, "appVersion", getAppVersion());
250
+ setMetaSync(adapter, "migratedAt", new Date().toISOString());
251
+ });
252
+ } catch (err) {
253
+ if (err instanceof MigrationAborted) {
254
+ console.error(`[DB][migrate] aborted: ${err.message} | legacy JSON kept | backup: ${backupDir}`);
255
+ return;
256
+ }
257
+ throw err;
258
+ }
259
+
260
+ try { fs.writeFileSync(MIGRATED_MARKER, new Date().toISOString()); } catch {}
261
+ pruneOldBackups();
262
+ console.log(`[DB][migrate] JSON → SQLite in ${Date.now() - t0}ms | legacy JSON kept at DATA_DIR | backup: ${backupDir}`);
263
+ return;
264
+ }
265
+
266
+ if (fresh) {
267
+ setMetaSync(adapter, "appVersion", getAppVersion());
268
+ return;
269
+ }
270
+
271
+ // 4. App version bump → backup data.sqlite (safety net before user-side upgrade)
272
+ const oldVer = getMetaSync(adapter, "appVersion", null);
273
+ const newVer = getAppVersion();
274
+ if (oldVer && oldVer !== newVer) {
275
+ const backupDir = makeBackupDir(`upgrade-${oldVer}-to-${newVer}`);
276
+ try { backupFile(DATA_FILE, backupDir); } catch {}
277
+ setMetaSync(adapter, "appVersion", newVer);
278
+ pruneOldBackups();
279
+ console.log(`[DB][migrate] App ${oldVer} → ${newVer} | schema ${migInfo.from} → ${migInfo.to} | backup: ${backupDir}`);
280
+ } else if (migInfo.applied > 0) {
281
+ // Schema upgrade without app version bump — still backup
282
+ const backupDir = makeBackupDir(`schema-${migInfo.from}-to-${migInfo.to}`);
283
+ try { backupFile(DATA_FILE, backupDir); } catch {}
284
+ pruneOldBackups();
285
+ }
286
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsalmn/extremerouter",
3
- "version": "0.8.0",
3
+ "version": "0.8.2",
4
4
  "description": "ExtremeRouter CLI - AI Gateway control plane",
5
5
  "bin": {
6
6
  "extremerouter": "./cli.js"