@yina-npm/openrouterx 0.4.28 → 0.4.32

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 (791) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/app-path-routes-manifest.json +13 -2
  3. package/app/.next/build-manifest.json +3 -3
  4. package/app/.next/routes-manifest.json +70 -0
  5. package/app/.next/server/app/(dashboard)/dashboard/admin/keys/page.js +2 -2
  6. package/app/.next/server/app/(dashboard)/dashboard/admin/keys/page.js.nft.json +1 -1
  7. package/app/.next/server/app/(dashboard)/dashboard/admin/keys/page_client-reference-manifest.js +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/admin/users/page.js +2 -2
  9. package/app/.next/server/app/(dashboard)/dashboard/admin/users/page.js.nft.json +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/admin/users/page_client-reference-manifest.js +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
  12. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
  15. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  18. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
  21. package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  24. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/focus-ui/page.js +2 -2
  27. package/app/.next/server/app/(dashboard)/dashboard/focus-ui/page.js.nft.json +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/focus-ui/page_client-reference-manifest.js +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +13 -13
  30. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  31. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  32. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -2
  33. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  34. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  35. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +3 -3
  36. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  37. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  38. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
  39. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  40. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  41. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
  42. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  43. package/app/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  44. package/app/.next/server/app/(dashboard)/dashboard/network-analysis/page.js +2 -2
  45. package/app/.next/server/app/(dashboard)/dashboard/network-analysis/page.js.nft.json +1 -1
  46. package/app/.next/server/app/(dashboard)/dashboard/network-analysis/page_client-reference-manifest.js +1 -1
  47. package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
  48. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  49. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  50. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  51. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  52. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  53. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +4 -2
  54. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  55. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  56. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  57. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  58. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  59. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  60. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  61. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  62. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js +2 -2
  63. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  64. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  65. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js +2 -2
  66. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  67. package/app/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  68. package/app/.next/server/app/(dashboard)/dashboard/skills/page.js +2 -2
  69. package/app/.next/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  70. package/app/.next/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  71. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +2 -2
  72. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  73. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  74. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  75. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  76. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  77. package/app/.next/server/app/(dashboard)/dashboard/user/page.js +3 -3
  78. package/app/.next/server/app/(dashboard)/dashboard/user/page.js.nft.json +1 -1
  79. package/app/.next/server/app/(dashboard)/dashboard/user/page_client-reference-manifest.js +1 -1
  80. package/app/.next/server/app/_global-error/page.js +3 -3
  81. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  82. package/app/.next/server/app/_global-error.html +1 -1
  83. package/app/.next/server/app/_global-error.rsc +1 -1
  84. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  85. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  86. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  87. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  88. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  89. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  90. package/app/.next/server/app/_not-found/page.js +2 -2
  91. package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
  92. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  93. package/app/.next/server/app/_not-found.html +1 -1
  94. package/app/.next/server/app/_not-found.rsc +5 -6
  95. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +5 -6
  96. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  97. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +5 -6
  98. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  99. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  100. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +3 -4
  101. package/app/.next/server/app/api/auth/login/route.js +1 -1
  102. package/app/.next/server/app/api/auth/login/route.js.nft.json +1 -1
  103. package/app/.next/server/app/api/auth/logout/route.js +1 -1
  104. package/app/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
  105. package/app/.next/server/app/api/auth/me/route.js +1 -1
  106. package/app/.next/server/app/api/auth/me/route.js.nft.json +1 -1
  107. package/app/.next/server/app/api/auth/oidc/callback/route.js +1 -0
  108. package/app/.next/server/app/api/auth/oidc/callback/route.js.nft.json +1 -0
  109. package/app/.next/server/app/api/auth/oidc/callback/route_client-reference-manifest.js +1 -0
  110. package/app/.next/server/app/api/auth/oidc/start/route.js +1 -0
  111. package/app/.next/server/app/api/auth/oidc/start/route.js.nft.json +1 -0
  112. package/app/.next/server/app/api/auth/oidc/start/route_client-reference-manifest.js +1 -0
  113. package/app/.next/server/app/api/auth/oidc/test/route.js +1 -0
  114. package/app/.next/server/app/api/auth/oidc/test/route.js.nft.json +1 -0
  115. package/app/.next/server/app/api/auth/oidc/test/route_client-reference-manifest.js +1 -0
  116. package/app/.next/server/app/api/auth/status/route.js +1 -0
  117. package/app/.next/server/app/api/auth/status/route.js.nft.json +1 -0
  118. package/app/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -0
  119. package/app/.next/server/app/api/cli-tools/all-statuses/route.js +9 -0
  120. package/app/.next/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -0
  121. package/app/.next/server/app/api/cli-tools/all-statuses/route_client-reference-manifest.js +1 -0
  122. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  123. package/app/.next/server/app/api/cli-tools/antigravity-mitm/inject-auth/route.js +1 -1
  124. package/app/.next/server/app/api/cli-tools/antigravity-mitm/restart/route.js +1 -1
  125. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  126. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  127. package/app/.next/server/app/api/cli-tools/antigravity-mitm/test/route.js +1 -1
  128. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
  129. package/app/.next/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  130. package/app/.next/server/app/api/cli-tools/cline-settings/route.js +2 -0
  131. package/app/.next/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -0
  132. package/app/.next/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -0
  133. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +1 -32
  134. package/app/.next/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  135. package/app/.next/server/app/api/cli-tools/copilot-settings/route.js +1 -1
  136. package/app/.next/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
  137. package/app/.next/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -0
  138. package/app/.next/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -0
  139. package/app/.next/server/app/api/cli-tools/cowork-mcp-tools/route_client-reference-manifest.js +1 -0
  140. package/app/.next/server/app/api/cli-tools/cowork-settings/route.js +2 -2
  141. package/app/.next/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  142. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +1 -1
  143. package/app/.next/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  144. package/app/.next/server/app/api/cli-tools/hermes-settings/route.js +2 -2
  145. package/app/.next/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  146. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +2 -0
  147. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -0
  148. package/app/.next/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -0
  149. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  150. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  151. package/app/.next/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  152. package/app/.next/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  153. package/app/.next/server/app/api/cloud/auth/route.js +1 -1
  154. package/app/.next/server/app/api/cloud/credentials/update/route.js +1 -1
  155. package/app/.next/server/app/api/cloud/model/resolve/route.js +1 -1
  156. package/app/.next/server/app/api/cloud/models/alias/route.js +1 -1
  157. package/app/.next/server/app/api/combos/[id]/route.js +1 -1
  158. package/app/.next/server/app/api/combos/route.js +1 -1
  159. package/app/.next/server/app/api/health/route.js +1 -1
  160. package/app/.next/server/app/api/init/route.js +1 -1
  161. package/app/.next/server/app/api/init/route.js.nft.json +1 -1
  162. package/app/.next/server/app/api/keys/[id]/route.js +1 -1
  163. package/app/.next/server/app/api/keys/[id]/route.js.nft.json +1 -1
  164. package/app/.next/server/app/api/keys/route.js +1 -1
  165. package/app/.next/server/app/api/keys/route.js.nft.json +1 -1
  166. package/app/.next/server/app/api/locale/route.js +1 -1
  167. package/app/.next/server/app/api/mcp/[plugin]/message/route.js +7 -0
  168. package/app/.next/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -0
  169. package/app/.next/server/app/api/mcp/[plugin]/message/route_client-reference-manifest.js +1 -0
  170. package/app/.next/server/app/api/mcp/[plugin]/sse/route.js +10 -0
  171. package/app/.next/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -0
  172. package/app/.next/server/app/api/mcp/[plugin]/sse/route_client-reference-manifest.js +1 -0
  173. package/app/.next/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  174. package/app/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  175. package/app/.next/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  176. package/app/.next/server/app/api/media-providers/tts/voices/route.js +1 -1
  177. package/app/.next/server/app/api/models/alias/route.js +1 -1
  178. package/app/.next/server/app/api/models/availability/route.js +1 -1
  179. package/app/.next/server/app/api/models/custom/route.js +1 -1
  180. package/app/.next/server/app/api/models/disabled/route.js +1 -1
  181. package/app/.next/server/app/api/models/disabled/route.js.nft.json +1 -1
  182. package/app/.next/server/app/api/models/route.js +1 -1
  183. package/app/.next/server/app/api/models/route.js.nft.json +1 -1
  184. package/app/.next/server/app/api/models/test/route.js +1 -1
  185. package/app/.next/server/app/api/models/test/route.js.nft.json +1 -1
  186. package/app/.next/server/app/api/network-analysis/route.js +2 -2
  187. package/app/.next/server/app/api/network-analysis/route.js.nft.json +1 -1
  188. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +2 -2
  189. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  190. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js +2 -2
  191. package/app/.next/server/app/api/oauth/cursor/import/route.js +1 -1
  192. package/app/.next/server/app/api/oauth/gitlab/pat/route.js +1 -1
  193. package/app/.next/server/app/api/oauth/iflow/cookie/route.js +1 -1
  194. package/app/.next/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  195. package/app/.next/server/app/api/oauth/kiro/import/route.js +1 -1
  196. package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  197. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  198. package/app/.next/server/app/api/pricing/route.js +1 -1
  199. package/app/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
  200. package/app/.next/server/app/api/provider-nodes/route.js +1 -1
  201. package/app/.next/server/app/api/provider-nodes/route.js.nft.json +1 -1
  202. package/app/.next/server/app/api/provider-nodes/validate/route.js +1 -1
  203. package/app/.next/server/app/api/providers/[id]/models/route.js +1 -1
  204. package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  205. package/app/.next/server/app/api/providers/[id]/route.js +1 -1
  206. package/app/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
  207. package/app/.next/server/app/api/providers/[id]/test/route.js +1 -1
  208. package/app/.next/server/app/api/providers/[id]/test-models/route.js +1 -1
  209. package/app/.next/server/app/api/providers/client/route.js +1 -1
  210. package/app/.next/server/app/api/providers/client/route.js.nft.json +1 -1
  211. package/app/.next/server/app/api/providers/kilo/free-models/route.js +1 -1
  212. package/app/.next/server/app/api/providers/route.js +1 -1
  213. package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
  214. package/app/.next/server/app/api/providers/suggested-models/route.js +1 -1
  215. package/app/.next/server/app/api/providers/test-batch/route.js +1 -1
  216. package/app/.next/server/app/api/providers/validate/route.js +1 -1
  217. package/app/.next/server/app/api/proxy-pools/[id]/route.js +1 -1
  218. package/app/.next/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  219. package/app/.next/server/app/api/proxy-pools/route.js +1 -1
  220. package/app/.next/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
  221. package/app/.next/server/app/api/settings/database/route.js +1 -1
  222. package/app/.next/server/app/api/settings/proxy-test/route.js +1 -1
  223. package/app/.next/server/app/api/settings/require-login/route.js +1 -1
  224. package/app/.next/server/app/api/settings/route.js +1 -1
  225. package/app/.next/server/app/api/shutdown/route.js +1 -1
  226. package/app/.next/server/app/api/tags/route.js +1 -1
  227. package/app/.next/server/app/api/translator/console-logs/route.js +1 -1
  228. package/app/.next/server/app/api/translator/console-logs/stream/route.js +2 -2
  229. package/app/.next/server/app/api/translator/load/route.js +1 -1
  230. package/app/.next/server/app/api/translator/save/route.js +1 -1
  231. package/app/.next/server/app/api/translator/send/route.js +1 -1
  232. package/app/.next/server/app/api/translator/send/route.js.nft.json +1 -1
  233. package/app/.next/server/app/api/translator/translate/route.js +1 -1
  234. package/app/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
  235. package/app/.next/server/app/api/tunnel/disable/route.js +1 -1
  236. package/app/.next/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  237. package/app/.next/server/app/api/tunnel/enable/route.js +1 -1
  238. package/app/.next/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  239. package/app/.next/server/app/api/tunnel/status/route.js +1 -1
  240. package/app/.next/server/app/api/tunnel/status/route.js.nft.json +1 -1
  241. package/app/.next/server/app/api/tunnel/tailscale-check/route.js +1 -1
  242. package/app/.next/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  243. package/app/.next/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  244. package/app/.next/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  245. package/app/.next/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  246. package/app/.next/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  247. package/app/.next/server/app/api/tunnel/tailscale-install/route.js +2 -2
  248. package/app/.next/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  249. package/app/.next/server/app/api/tunnel/tailscale-login/route.js +1 -1
  250. package/app/.next/server/app/api/tunnel/tailscale-start-daemon/route.js +2 -2
  251. package/app/.next/server/app/api/tunnel/tailscale-start-daemon/route.js.nft.json +1 -1
  252. package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
  253. package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  254. package/app/.next/server/app/api/usage/api-keys/route.js +1 -1
  255. package/app/.next/server/app/api/usage/api-keys/route.js.nft.json +1 -1
  256. package/app/.next/server/app/api/usage/chart/route.js +1 -1
  257. package/app/.next/server/app/api/usage/chart/route.js.nft.json +1 -1
  258. package/app/.next/server/app/api/usage/history/route.js +1 -1
  259. package/app/.next/server/app/api/usage/history/route.js.nft.json +1 -1
  260. package/app/.next/server/app/api/usage/logs/route.js +1 -1
  261. package/app/.next/server/app/api/usage/logs/route.js.nft.json +1 -1
  262. package/app/.next/server/app/api/usage/providers/route.js +1 -1
  263. package/app/.next/server/app/api/usage/providers/route.js.nft.json +1 -1
  264. package/app/.next/server/app/api/usage/request-details/route.js +1 -1
  265. package/app/.next/server/app/api/usage/request-details/route.js.nft.json +1 -1
  266. package/app/.next/server/app/api/usage/request-logs/route.js +1 -1
  267. package/app/.next/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  268. package/app/.next/server/app/api/usage/stats/route.js +1 -1
  269. package/app/.next/server/app/api/usage/stats/route.js.nft.json +1 -1
  270. package/app/.next/server/app/api/usage/stream/route.js +2 -2
  271. package/app/.next/server/app/api/usage/stream/route.js.nft.json +1 -1
  272. package/app/.next/server/app/api/users/[id]/route.js +1 -1
  273. package/app/.next/server/app/api/users/[id]/route.js.nft.json +1 -1
  274. package/app/.next/server/app/api/users/route.js +1 -1
  275. package/app/.next/server/app/api/users/route.js.nft.json +1 -1
  276. package/app/.next/server/app/api/v1/api/chat/route.js +1 -1
  277. package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  278. package/app/.next/server/app/api/v1/audio/speech/route.js +1 -1
  279. package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  280. package/app/.next/server/app/api/v1/audio/transcriptions/route.js +1 -1
  281. package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  282. package/app/.next/server/app/api/v1/audio/voices/route.js +1 -1
  283. package/app/.next/server/app/api/v1/chat/completions/route.js +1 -1
  284. package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  285. package/app/.next/server/app/api/v1/embeddings/route.js +1 -1
  286. package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  287. package/app/.next/server/app/api/v1/images/generations/route.js +2 -2
  288. package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  289. package/app/.next/server/app/api/v1/messages/count_tokens/route.js +1 -1
  290. package/app/.next/server/app/api/v1/messages/route.js +1 -1
  291. package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
  292. package/app/.next/server/app/api/v1/models/[kind]/route.js +1 -1
  293. package/app/.next/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  294. package/app/.next/server/app/api/v1/models/info/route.js +1 -1
  295. package/app/.next/server/app/api/v1/models/route.js +1 -1
  296. package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
  297. package/app/.next/server/app/api/v1/responses/compact/route.js +1 -1
  298. package/app/.next/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  299. package/app/.next/server/app/api/v1/responses/route.js +1 -1
  300. package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
  301. package/app/.next/server/app/api/v1/route.js +1 -1
  302. package/app/.next/server/app/api/v1/route.js.nft.json +1 -1
  303. package/app/.next/server/app/api/v1/search/route.js +1 -1
  304. package/app/.next/server/app/api/v1/search/route.js.nft.json +1 -1
  305. package/app/.next/server/app/api/v1/web/fetch/route.js +1 -1
  306. package/app/.next/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  307. package/app/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
  308. package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  309. package/app/.next/server/app/api/v1beta/models/route.js +1 -1
  310. package/app/.next/server/app/api/version/route.js +1 -1
  311. package/app/.next/server/app/api/version/shutdown/route.js +1 -0
  312. package/app/.next/server/app/api/version/shutdown/route.js.nft.json +1 -0
  313. package/app/.next/server/app/api/version/shutdown/route_client-reference-manifest.js +1 -0
  314. package/app/.next/server/app/api/version/update/route.js +1 -1
  315. package/app/.next/server/app/callback/page.js +2 -2
  316. package/app/.next/server/app/callback/page.js.nft.json +1 -1
  317. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  318. package/app/.next/server/app/callback.html +1 -1
  319. package/app/.next/server/app/callback.rsc +6 -7
  320. package/app/.next/server/app/callback.segments/_full.segment.rsc +6 -7
  321. package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
  322. package/app/.next/server/app/callback.segments/_index.segment.rsc +5 -6
  323. package/app/.next/server/app/callback.segments/_tree.segment.rsc +3 -4
  324. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +2 -2
  325. package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
  326. package/app/.next/server/app/dashboard/settings/pricing/page.js +2 -2
  327. package/app/.next/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  328. package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  329. package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
  330. package/app/.next/server/app/dashboard/settings/pricing.rsc +5 -6
  331. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +5 -6
  332. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  333. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +5 -6
  334. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +3 -4
  335. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  336. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  337. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  338. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  339. package/app/.next/server/app/favicon.ico/route.js +1 -1
  340. package/app/.next/server/app/index.html +1 -1
  341. package/app/.next/server/app/index.rsc +5 -6
  342. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  343. package/app/.next/server/app/index.segments/_full.segment.rsc +5 -6
  344. package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
  345. package/app/.next/server/app/index.segments/_index.segment.rsc +5 -6
  346. package/app/.next/server/app/index.segments/_tree.segment.rsc +3 -4
  347. package/app/.next/server/app/landing/page.js +2 -2
  348. package/app/.next/server/app/landing/page.js.nft.json +1 -1
  349. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  350. package/app/.next/server/app/landing.html +1 -1
  351. package/app/.next/server/app/landing.rsc +5 -6
  352. package/app/.next/server/app/landing.segments/_full.segment.rsc +5 -6
  353. package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
  354. package/app/.next/server/app/landing.segments/_index.segment.rsc +5 -6
  355. package/app/.next/server/app/landing.segments/_tree.segment.rsc +3 -4
  356. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  357. package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
  358. package/app/.next/server/app/login/page.js +2 -2
  359. package/app/.next/server/app/login/page.js.nft.json +1 -1
  360. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  361. package/app/.next/server/app/login.html +1 -1
  362. package/app/.next/server/app/login.rsc +6 -7
  363. package/app/.next/server/app/login.segments/_full.segment.rsc +6 -7
  364. package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
  365. package/app/.next/server/app/login.segments/_index.segment.rsc +5 -6
  366. package/app/.next/server/app/login.segments/_tree.segment.rsc +3 -4
  367. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  368. package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
  369. package/app/.next/server/app/manifest.webmanifest/route.js +2 -2
  370. package/app/.next/server/app/page.js +2 -2
  371. package/app/.next/server/app/page.js.nft.json +1 -1
  372. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  373. package/app/.next/server/app-paths-manifest.json +13 -2
  374. package/app/.next/server/chunks/1263.js +2 -2
  375. package/app/.next/server/chunks/1350.js +7 -0
  376. package/app/.next/server/chunks/{2574.js → 2343.js} +1 -1
  377. package/app/.next/server/chunks/2506.js +4 -3
  378. package/app/.next/server/chunks/2560.js +1 -0
  379. package/app/.next/server/chunks/3110.js +1 -1
  380. package/app/.next/server/chunks/3593.js +9 -0
  381. package/app/.next/server/chunks/3855.js +1 -1
  382. package/app/.next/server/chunks/3913.js +2 -2
  383. package/app/.next/server/chunks/412.js +5 -5
  384. package/app/.next/server/chunks/4126.js +1 -0
  385. package/app/.next/server/chunks/4739.js +9 -0
  386. package/app/.next/server/chunks/4922.js +9 -0
  387. package/app/.next/server/chunks/4989.js +2 -2
  388. package/app/.next/server/chunks/5217.js +9 -0
  389. package/app/.next/server/chunks/5258.js +9 -0
  390. package/app/.next/server/chunks/{7937.js → 5330.js} +4 -4
  391. package/app/.next/server/chunks/5434.js +1 -1
  392. package/app/.next/server/chunks/5573.js +1 -1
  393. package/app/.next/server/chunks/5627.js +7 -7
  394. package/app/.next/server/chunks/5681.js +1 -1
  395. package/app/.next/server/chunks/5789.js +1 -0
  396. package/app/.next/server/chunks/{8838.js → 6001.js} +1 -1
  397. package/app/.next/server/chunks/6182.js +36 -2
  398. package/app/.next/server/chunks/63.js +3 -3
  399. package/app/.next/server/chunks/6393.js +1 -0
  400. package/app/.next/server/chunks/6936.js +1 -0
  401. package/app/.next/server/chunks/723.js +44 -0
  402. package/app/.next/server/chunks/7540.js +1 -0
  403. package/app/.next/server/chunks/7568.js +1 -0
  404. package/app/.next/server/chunks/7595.js +1 -1
  405. package/app/.next/server/chunks/8520.js +9 -0
  406. package/app/.next/server/chunks/8590.js +1 -1
  407. package/app/.next/server/chunks/8760.js +1 -1
  408. package/app/.next/server/chunks/8895.js +4 -4
  409. package/app/.next/server/chunks/8971.js +1 -0
  410. package/app/.next/server/chunks/906.js +1 -0
  411. package/app/.next/server/chunks/9460.js +1 -0
  412. package/app/.next/server/chunks/9489.js +1 -1
  413. package/app/.next/server/chunks/9528.js +32 -0
  414. package/app/.next/server/chunks/9546.js +1 -0
  415. package/app/.next/server/chunks/9609.js +1 -1
  416. package/app/.next/server/chunks/9641.js +1 -1
  417. package/app/.next/server/chunks/9718.js +1 -1
  418. package/app/.next/server/functions-config-manifest.json +2 -0
  419. package/app/.next/server/middleware-build-manifest.js +1 -1
  420. package/app/.next/server/middleware.js +2 -2
  421. package/app/.next/server/pages/404.html +1 -1
  422. package/app/.next/server/pages/500.html +1 -1
  423. package/app/.next/server/server-reference-manifest.js +1 -1
  424. package/app/.next/server/server-reference-manifest.json +1 -1
  425. package/app/.next/static/BuJLCErn-QhhM6_1rkOm9/_buildManifest.js +1 -0
  426. package/app/.next/static/chunks/1321-4d97c0c20625b433.js +1 -0
  427. package/app/.next/static/chunks/5497-83030cc3d92a3519.js +7 -0
  428. package/app/.next/static/chunks/5555-fe35208b285372b6.js +3 -0
  429. package/app/.next/static/chunks/5964-87a3fc549eda915f.js +44 -0
  430. package/app/.next/static/chunks/app/(dashboard)/dashboard/admin/keys/{page-e7d9455fb9021069.js → page-0b0deda6732f2c17.js} +1 -1
  431. package/app/.next/static/chunks/app/(dashboard)/dashboard/admin/users/page-78953d3b1df0d645.js +1 -0
  432. package/app/.next/static/chunks/app/(dashboard)/dashboard/basic-chat/page-c86af5c8f255b3b1.js +1 -0
  433. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-e6ab107aa0c88255.js +1 -0
  434. package/app/.next/static/chunks/app/(dashboard)/dashboard/focus-ui/page-0e1c6e92394e082a.js +1 -0
  435. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/{page-c77fedcd9ba7bcac.js → page-43a004ab7a9b604a.js} +12 -12
  436. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/page-d7972070450d7abc.js +1 -0
  437. package/app/.next/static/chunks/app/(dashboard)/dashboard/mitm/{page-4473f52ad379b661.js → page-320446d3e8bf8cdf.js} +1 -1
  438. package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/page-653d43b972894dc8.js +1 -0
  439. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-bafdc36ddde43d0d.js +3 -0
  440. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-d799365a8ef51d37.js +1 -0
  441. package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/page-1172e1764d69e954.js +1 -0
  442. package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-4319007c3ca0a634.js +1 -0
  443. package/app/.next/static/chunks/app/(dashboard)/{layout-7ea5a7abc543b04d.js → layout-f01d55c89fabcb07.js} +1 -1
  444. package/app/.next/static/chunks/app/_global-error/page-1172e1764d69e954.js +1 -0
  445. package/app/.next/static/chunks/app/api/auth/login/route-1172e1764d69e954.js +1 -0
  446. package/app/.next/static/chunks/app/api/auth/logout/route-1172e1764d69e954.js +1 -0
  447. package/app/.next/static/chunks/app/api/auth/me/route-1172e1764d69e954.js +1 -0
  448. package/app/.next/static/chunks/app/api/auth/oidc/callback/route-1172e1764d69e954.js +1 -0
  449. package/app/.next/static/chunks/app/api/auth/oidc/start/route-1172e1764d69e954.js +1 -0
  450. package/app/.next/static/chunks/app/api/auth/oidc/test/route-1172e1764d69e954.js +1 -0
  451. package/app/.next/static/chunks/app/api/auth/status/route-1172e1764d69e954.js +1 -0
  452. package/app/.next/static/chunks/app/api/cli-tools/all-statuses/route-1172e1764d69e954.js +1 -0
  453. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-1172e1764d69e954.js +1 -0
  454. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/inject-auth/route-1172e1764d69e954.js +1 -0
  455. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/restart/route-1172e1764d69e954.js +1 -0
  456. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-1172e1764d69e954.js +1 -0
  457. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/test/route-1172e1764d69e954.js +1 -0
  458. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-1172e1764d69e954.js +1 -0
  459. package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-1172e1764d69e954.js +1 -0
  460. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-1172e1764d69e954.js +1 -0
  461. package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-1172e1764d69e954.js +1 -0
  462. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-1172e1764d69e954.js +1 -0
  463. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-1172e1764d69e954.js +1 -0
  464. package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-1172e1764d69e954.js +1 -0
  465. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-1172e1764d69e954.js +1 -0
  466. package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-1172e1764d69e954.js +1 -0
  467. package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-1172e1764d69e954.js +1 -0
  468. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-1172e1764d69e954.js +1 -0
  469. package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-1172e1764d69e954.js +1 -0
  470. package/app/.next/static/chunks/app/api/cloud/auth/route-1172e1764d69e954.js +1 -0
  471. package/app/.next/static/chunks/app/api/cloud/credentials/update/route-1172e1764d69e954.js +1 -0
  472. package/app/.next/static/chunks/app/api/cloud/model/resolve/route-1172e1764d69e954.js +1 -0
  473. package/app/.next/static/chunks/app/api/cloud/models/alias/route-1172e1764d69e954.js +1 -0
  474. package/app/.next/static/chunks/app/api/combos/[id]/route-1172e1764d69e954.js +1 -0
  475. package/app/.next/static/chunks/app/api/combos/route-1172e1764d69e954.js +1 -0
  476. package/app/.next/static/chunks/app/api/health/route-1172e1764d69e954.js +1 -0
  477. package/app/.next/static/chunks/app/api/init/route-1172e1764d69e954.js +1 -0
  478. package/app/.next/static/chunks/app/api/keys/[id]/route-1172e1764d69e954.js +1 -0
  479. package/app/.next/static/chunks/app/api/keys/route-1172e1764d69e954.js +1 -0
  480. package/app/.next/static/chunks/app/api/locale/route-1172e1764d69e954.js +1 -0
  481. package/app/.next/static/chunks/app/api/mcp/[plugin]/message/route-1172e1764d69e954.js +1 -0
  482. package/app/.next/static/chunks/app/api/mcp/[plugin]/sse/route-1172e1764d69e954.js +1 -0
  483. package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-1172e1764d69e954.js +1 -0
  484. package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-1172e1764d69e954.js +1 -0
  485. package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-1172e1764d69e954.js +1 -0
  486. package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-1172e1764d69e954.js +1 -0
  487. package/app/.next/static/chunks/app/api/models/alias/route-1172e1764d69e954.js +1 -0
  488. package/app/.next/static/chunks/app/api/models/availability/route-1172e1764d69e954.js +1 -0
  489. package/app/.next/static/chunks/app/api/models/custom/route-1172e1764d69e954.js +1 -0
  490. package/app/.next/static/chunks/app/api/models/disabled/route-1172e1764d69e954.js +1 -0
  491. package/app/.next/static/chunks/app/api/models/route-1172e1764d69e954.js +1 -0
  492. package/app/.next/static/chunks/app/api/models/test/route-1172e1764d69e954.js +1 -0
  493. package/app/.next/static/chunks/app/api/network-analysis/route-1172e1764d69e954.js +1 -0
  494. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-1172e1764d69e954.js +1 -0
  495. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-1172e1764d69e954.js +1 -0
  496. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-1172e1764d69e954.js +1 -0
  497. package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-1172e1764d69e954.js +1 -0
  498. package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-1172e1764d69e954.js +1 -0
  499. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-1172e1764d69e954.js +1 -0
  500. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-1172e1764d69e954.js +1 -0
  501. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-1172e1764d69e954.js +1 -0
  502. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-1172e1764d69e954.js +1 -0
  503. package/app/.next/static/chunks/app/api/pricing/route-1172e1764d69e954.js +1 -0
  504. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-1172e1764d69e954.js +1 -0
  505. package/app/.next/static/chunks/app/api/provider-nodes/route-1172e1764d69e954.js +1 -0
  506. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-1172e1764d69e954.js +1 -0
  507. package/app/.next/static/chunks/app/api/providers/[id]/models/route-1172e1764d69e954.js +1 -0
  508. package/app/.next/static/chunks/app/api/providers/[id]/route-1172e1764d69e954.js +1 -0
  509. package/app/.next/static/chunks/app/api/providers/[id]/test/route-1172e1764d69e954.js +1 -0
  510. package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-1172e1764d69e954.js +1 -0
  511. package/app/.next/static/chunks/app/api/providers/client/route-1172e1764d69e954.js +1 -0
  512. package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-1172e1764d69e954.js +1 -0
  513. package/app/.next/static/chunks/app/api/providers/route-1172e1764d69e954.js +1 -0
  514. package/app/.next/static/chunks/app/api/providers/suggested-models/route-1172e1764d69e954.js +1 -0
  515. package/app/.next/static/chunks/app/api/providers/test-batch/route-1172e1764d69e954.js +1 -0
  516. package/app/.next/static/chunks/app/api/providers/validate/route-1172e1764d69e954.js +1 -0
  517. package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-1172e1764d69e954.js +1 -0
  518. package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-1172e1764d69e954.js +1 -0
  519. package/app/.next/static/chunks/app/api/proxy-pools/route-1172e1764d69e954.js +1 -0
  520. package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-1172e1764d69e954.js +1 -0
  521. package/app/.next/static/chunks/app/api/settings/database/route-1172e1764d69e954.js +1 -0
  522. package/app/.next/static/chunks/app/api/settings/proxy-test/route-1172e1764d69e954.js +1 -0
  523. package/app/.next/static/chunks/app/api/settings/require-login/route-1172e1764d69e954.js +1 -0
  524. package/app/.next/static/chunks/app/api/settings/route-1172e1764d69e954.js +1 -0
  525. package/app/.next/static/chunks/app/api/shutdown/route-1172e1764d69e954.js +1 -0
  526. package/app/.next/static/chunks/app/api/tags/route-1172e1764d69e954.js +1 -0
  527. package/app/.next/static/chunks/app/api/translator/console-logs/route-1172e1764d69e954.js +1 -0
  528. package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-1172e1764d69e954.js +1 -0
  529. package/app/.next/static/chunks/app/api/translator/load/route-1172e1764d69e954.js +1 -0
  530. package/app/.next/static/chunks/app/api/translator/save/route-1172e1764d69e954.js +1 -0
  531. package/app/.next/static/chunks/app/api/translator/send/route-1172e1764d69e954.js +1 -0
  532. package/app/.next/static/chunks/app/api/translator/translate/route-1172e1764d69e954.js +1 -0
  533. package/app/.next/static/chunks/app/api/tunnel/disable/route-1172e1764d69e954.js +1 -0
  534. package/app/.next/static/chunks/app/api/tunnel/enable/route-1172e1764d69e954.js +1 -0
  535. package/app/.next/static/chunks/app/api/tunnel/status/route-1172e1764d69e954.js +1 -0
  536. package/app/.next/static/chunks/app/api/tunnel/tailscale-check/route-1172e1764d69e954.js +1 -0
  537. package/app/.next/static/chunks/app/api/tunnel/tailscale-disable/route-1172e1764d69e954.js +1 -0
  538. package/app/.next/static/chunks/app/api/tunnel/tailscale-enable/route-1172e1764d69e954.js +1 -0
  539. package/app/.next/static/chunks/app/api/tunnel/tailscale-install/route-1172e1764d69e954.js +1 -0
  540. package/app/.next/static/chunks/app/api/tunnel/tailscale-login/route-1172e1764d69e954.js +1 -0
  541. package/app/.next/static/chunks/app/api/tunnel/tailscale-start-daemon/route-1172e1764d69e954.js +1 -0
  542. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-1172e1764d69e954.js +1 -0
  543. package/app/.next/static/chunks/app/api/usage/api-keys/route-1172e1764d69e954.js +1 -0
  544. package/app/.next/static/chunks/app/api/usage/chart/route-1172e1764d69e954.js +1 -0
  545. package/app/.next/static/chunks/app/api/usage/history/route-1172e1764d69e954.js +1 -0
  546. package/app/.next/static/chunks/app/api/usage/logs/route-1172e1764d69e954.js +1 -0
  547. package/app/.next/static/chunks/app/api/usage/providers/route-1172e1764d69e954.js +1 -0
  548. package/app/.next/static/chunks/app/api/usage/request-details/route-1172e1764d69e954.js +1 -0
  549. package/app/.next/static/chunks/app/api/usage/request-logs/route-1172e1764d69e954.js +1 -0
  550. package/app/.next/static/chunks/app/api/usage/stats/route-1172e1764d69e954.js +1 -0
  551. package/app/.next/static/chunks/app/api/usage/stream/route-1172e1764d69e954.js +1 -0
  552. package/app/.next/static/chunks/app/api/users/[id]/route-1172e1764d69e954.js +1 -0
  553. package/app/.next/static/chunks/app/api/users/route-1172e1764d69e954.js +1 -0
  554. package/app/.next/static/chunks/app/api/v1/api/chat/route-1172e1764d69e954.js +1 -0
  555. package/app/.next/static/chunks/app/api/v1/audio/speech/route-1172e1764d69e954.js +1 -0
  556. package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-1172e1764d69e954.js +1 -0
  557. package/app/.next/static/chunks/app/api/v1/audio/voices/route-1172e1764d69e954.js +1 -0
  558. package/app/.next/static/chunks/app/api/v1/chat/completions/route-1172e1764d69e954.js +1 -0
  559. package/app/.next/static/chunks/app/api/v1/embeddings/route-1172e1764d69e954.js +1 -0
  560. package/app/.next/static/chunks/app/api/v1/images/generations/route-1172e1764d69e954.js +1 -0
  561. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-1172e1764d69e954.js +1 -0
  562. package/app/.next/static/chunks/app/api/v1/messages/route-1172e1764d69e954.js +1 -0
  563. package/app/.next/static/chunks/app/api/v1/models/[kind]/route-1172e1764d69e954.js +1 -0
  564. package/app/.next/static/chunks/app/api/v1/models/info/route-1172e1764d69e954.js +1 -0
  565. package/app/.next/static/chunks/app/api/v1/models/route-1172e1764d69e954.js +1 -0
  566. package/app/.next/static/chunks/app/api/v1/responses/compact/route-1172e1764d69e954.js +1 -0
  567. package/app/.next/static/chunks/app/api/v1/responses/route-1172e1764d69e954.js +1 -0
  568. package/app/.next/static/chunks/app/api/v1/route-1172e1764d69e954.js +1 -0
  569. package/app/.next/static/chunks/app/api/v1/search/route-1172e1764d69e954.js +1 -0
  570. package/app/.next/static/chunks/app/api/v1/web/fetch/route-1172e1764d69e954.js +1 -0
  571. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-1172e1764d69e954.js +1 -0
  572. package/app/.next/static/chunks/app/api/v1beta/models/route-1172e1764d69e954.js +1 -0
  573. package/app/.next/static/chunks/app/api/version/route-1172e1764d69e954.js +1 -0
  574. package/app/.next/static/chunks/app/api/version/shutdown/route-1172e1764d69e954.js +1 -0
  575. package/app/.next/static/chunks/app/api/version/update/route-1172e1764d69e954.js +1 -0
  576. package/app/.next/static/chunks/app/callback/page-612232d68e5ef104.js +1 -0
  577. package/app/.next/static/chunks/app/layout-e2bc0634eb8e25c2.js +1 -0
  578. package/app/.next/static/chunks/app/login/page-618b0ac3d3cefbb3.js +1 -0
  579. package/app/.next/static/chunks/app/manifest.webmanifest/route-1172e1764d69e954.js +1 -0
  580. package/app/.next/static/chunks/app/page-1172e1764d69e954.js +1 -0
  581. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-1172e1764d69e954.js +1 -0
  582. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-1172e1764d69e954.js +1 -0
  583. package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-1172e1764d69e954.js +1 -0
  584. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-1172e1764d69e954.js +1 -0
  585. package/app/.next/static/chunks/{webpack-d1740476c6ab968a.js → webpack-786de0e184ffd859.js} +1 -1
  586. package/app/.next/static/css/{081a0afca5a9bd20.css → 2e1b7d528c228ec3.css} +1 -1
  587. package/app/.next/static/css/d0e6cedf3e986854.css +1 -0
  588. package/app/.next/static/media/material-symbols-outlined.1060ac06.woff2 +0 -0
  589. package/app/package.json +2 -1
  590. package/app/public/i18n/literals/ar.json +2 -1
  591. package/app/public/i18n/literals/bn.json +2 -1
  592. package/app/public/i18n/literals/cs.json +2 -1
  593. package/app/public/i18n/literals/da.json +2 -1
  594. package/app/public/i18n/literals/de.json +2 -1
  595. package/app/public/i18n/literals/el.json +2 -1
  596. package/app/public/i18n/literals/es.json +2 -1
  597. package/app/public/i18n/literals/fi.json +2 -1
  598. package/app/public/i18n/literals/fr.json +2 -1
  599. package/app/public/i18n/literals/he.json +2 -1
  600. package/app/public/i18n/literals/hi.json +2 -1
  601. package/app/public/i18n/literals/hu.json +2 -1
  602. package/app/public/i18n/literals/id.json +2 -1
  603. package/app/public/i18n/literals/it.json +2 -1
  604. package/app/public/i18n/literals/ja.json +2 -1
  605. package/app/public/i18n/literals/ko.json +2 -1
  606. package/app/public/i18n/literals/nl.json +2 -1
  607. package/app/public/i18n/literals/no.json +2 -1
  608. package/app/public/i18n/literals/pl.json +2 -1
  609. package/app/public/i18n/literals/pt-BR.json +2 -1
  610. package/app/public/i18n/literals/pt-PT.json +2 -1
  611. package/app/public/i18n/literals/ro.json +2 -1
  612. package/app/public/i18n/literals/ru.json +2 -1
  613. package/app/public/i18n/literals/sv.json +2 -1
  614. package/app/public/i18n/literals/th.json +2 -1
  615. package/app/public/i18n/literals/tl.json +2 -1
  616. package/app/public/i18n/literals/tr.json +2 -1
  617. package/app/public/i18n/literals/uk.json +2 -1
  618. package/app/public/i18n/literals/ur.json +2 -1
  619. package/app/public/i18n/literals/vi.json +2 -1
  620. package/app/public/i18n/literals/zh-CN.json +124 -2
  621. package/app/public/i18n/literals/zh-TW.json +2 -1
  622. package/app/src/lib/db/adapters/betterSqliteAdapter.js +55 -0
  623. package/app/src/lib/db/adapters/bunSqliteAdapter.js +63 -0
  624. package/app/src/lib/db/adapters/nodeSqliteAdapter.js +84 -0
  625. package/app/src/lib/db/adapters/sqljsAdapter.js +115 -0
  626. package/app/src/lib/db/migrate.js +248 -0
  627. package/app/src/lib/updater/updater.js +25 -0
  628. package/app/src/mitm/cert/install.js +53 -3
  629. package/app/src/mitm/dbReader.js +22 -0
  630. package/app/src/mitm/dns/dnsConfig.js +37 -8
  631. package/app/src/mitm/manager.js +3 -0
  632. package/app/src/mitm/paths.js +1 -0
  633. package/app/src/mitm/server.js +3 -7
  634. package/cli.js +148 -18
  635. package/package.json +1 -1
  636. package/app/.next/server/chunks/2417.js +0 -1
  637. package/app/.next/server/chunks/2549.js +0 -1
  638. package/app/.next/server/chunks/3605.js +0 -1
  639. package/app/.next/server/chunks/4122.js +0 -1
  640. package/app/.next/server/chunks/5296.js +0 -1
  641. package/app/.next/server/chunks/6184.js +0 -1
  642. package/app/.next/server/chunks/6774.js +0 -1
  643. package/app/.next/server/chunks/7861.js +0 -1
  644. package/app/.next/server/chunks/9547.js +0 -28
  645. package/app/.next/static/chunks/1321-38758d19993d62bf.js +0 -1
  646. package/app/.next/static/chunks/2336-cef968b5640a96f8.js +0 -28
  647. package/app/.next/static/chunks/5497-2ef9901a04eb9472.js +0 -7
  648. package/app/.next/static/chunks/5555-595382d9c4d118fe.js +0 -3
  649. package/app/.next/static/chunks/app/(dashboard)/dashboard/admin/users/page-adc5d5e8da3a0761.js +0 -1
  650. package/app/.next/static/chunks/app/(dashboard)/dashboard/basic-chat/page-a4b2b832a4892e6d.js +0 -1
  651. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-bd677c182bc2aae9.js +0 -1
  652. package/app/.next/static/chunks/app/(dashboard)/dashboard/focus-ui/page-74a4a20467839a51.js +0 -1
  653. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/page-7cf63e1a3a8adecd.js +0 -1
  654. package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/page-ceb9bffbc34711bc.js +0 -1
  655. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-aa4cac34e6e605a5.js +0 -1
  656. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-a0419a964a084f76.js +0 -1
  657. package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/page-e967880631a99483.js +0 -1
  658. package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-c41fbdb17b88c549.js +0 -1
  659. package/app/.next/static/chunks/app/_global-error/page-e967880631a99483.js +0 -1
  660. package/app/.next/static/chunks/app/api/auth/login/route-e967880631a99483.js +0 -1
  661. package/app/.next/static/chunks/app/api/auth/logout/route-e967880631a99483.js +0 -1
  662. package/app/.next/static/chunks/app/api/auth/me/route-e967880631a99483.js +0 -1
  663. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-e967880631a99483.js +0 -1
  664. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/inject-auth/route-e967880631a99483.js +0 -1
  665. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/restart/route-e967880631a99483.js +0 -1
  666. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-e967880631a99483.js +0 -1
  667. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/test/route-e967880631a99483.js +0 -1
  668. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-e967880631a99483.js +0 -1
  669. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-e967880631a99483.js +0 -1
  670. package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-e967880631a99483.js +0 -1
  671. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-e967880631a99483.js +0 -1
  672. package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-e967880631a99483.js +0 -1
  673. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-e967880631a99483.js +0 -1
  674. package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-e967880631a99483.js +0 -1
  675. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-e967880631a99483.js +0 -1
  676. package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-e967880631a99483.js +0 -1
  677. package/app/.next/static/chunks/app/api/cloud/auth/route-e967880631a99483.js +0 -1
  678. package/app/.next/static/chunks/app/api/cloud/credentials/update/route-e967880631a99483.js +0 -1
  679. package/app/.next/static/chunks/app/api/cloud/model/resolve/route-e967880631a99483.js +0 -1
  680. package/app/.next/static/chunks/app/api/cloud/models/alias/route-e967880631a99483.js +0 -1
  681. package/app/.next/static/chunks/app/api/combos/[id]/route-e967880631a99483.js +0 -1
  682. package/app/.next/static/chunks/app/api/combos/route-e967880631a99483.js +0 -1
  683. package/app/.next/static/chunks/app/api/health/route-e967880631a99483.js +0 -1
  684. package/app/.next/static/chunks/app/api/init/route-e967880631a99483.js +0 -1
  685. package/app/.next/static/chunks/app/api/keys/[id]/route-e967880631a99483.js +0 -1
  686. package/app/.next/static/chunks/app/api/keys/route-e967880631a99483.js +0 -1
  687. package/app/.next/static/chunks/app/api/locale/route-e967880631a99483.js +0 -1
  688. package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-e967880631a99483.js +0 -1
  689. package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-e967880631a99483.js +0 -1
  690. package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-e967880631a99483.js +0 -1
  691. package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-e967880631a99483.js +0 -1
  692. package/app/.next/static/chunks/app/api/models/alias/route-e967880631a99483.js +0 -1
  693. package/app/.next/static/chunks/app/api/models/availability/route-e967880631a99483.js +0 -1
  694. package/app/.next/static/chunks/app/api/models/custom/route-e967880631a99483.js +0 -1
  695. package/app/.next/static/chunks/app/api/models/disabled/route-e967880631a99483.js +0 -1
  696. package/app/.next/static/chunks/app/api/models/route-e967880631a99483.js +0 -1
  697. package/app/.next/static/chunks/app/api/models/test/route-e967880631a99483.js +0 -1
  698. package/app/.next/static/chunks/app/api/network-analysis/route-e967880631a99483.js +0 -1
  699. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-e967880631a99483.js +0 -1
  700. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-e967880631a99483.js +0 -1
  701. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-e967880631a99483.js +0 -1
  702. package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-e967880631a99483.js +0 -1
  703. package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-e967880631a99483.js +0 -1
  704. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-e967880631a99483.js +0 -1
  705. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-e967880631a99483.js +0 -1
  706. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-e967880631a99483.js +0 -1
  707. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-e967880631a99483.js +0 -1
  708. package/app/.next/static/chunks/app/api/pricing/route-e967880631a99483.js +0 -1
  709. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-e967880631a99483.js +0 -1
  710. package/app/.next/static/chunks/app/api/provider-nodes/route-e967880631a99483.js +0 -1
  711. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-e967880631a99483.js +0 -1
  712. package/app/.next/static/chunks/app/api/providers/[id]/models/route-e967880631a99483.js +0 -1
  713. package/app/.next/static/chunks/app/api/providers/[id]/route-e967880631a99483.js +0 -1
  714. package/app/.next/static/chunks/app/api/providers/[id]/test/route-e967880631a99483.js +0 -1
  715. package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-e967880631a99483.js +0 -1
  716. package/app/.next/static/chunks/app/api/providers/client/route-e967880631a99483.js +0 -1
  717. package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-e967880631a99483.js +0 -1
  718. package/app/.next/static/chunks/app/api/providers/route-e967880631a99483.js +0 -1
  719. package/app/.next/static/chunks/app/api/providers/suggested-models/route-e967880631a99483.js +0 -1
  720. package/app/.next/static/chunks/app/api/providers/test-batch/route-e967880631a99483.js +0 -1
  721. package/app/.next/static/chunks/app/api/providers/validate/route-e967880631a99483.js +0 -1
  722. package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-e967880631a99483.js +0 -1
  723. package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-e967880631a99483.js +0 -1
  724. package/app/.next/static/chunks/app/api/proxy-pools/route-e967880631a99483.js +0 -1
  725. package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-e967880631a99483.js +0 -1
  726. package/app/.next/static/chunks/app/api/settings/database/route-e967880631a99483.js +0 -1
  727. package/app/.next/static/chunks/app/api/settings/proxy-test/route-e967880631a99483.js +0 -1
  728. package/app/.next/static/chunks/app/api/settings/require-login/route-e967880631a99483.js +0 -1
  729. package/app/.next/static/chunks/app/api/settings/route-e967880631a99483.js +0 -1
  730. package/app/.next/static/chunks/app/api/shutdown/route-e967880631a99483.js +0 -1
  731. package/app/.next/static/chunks/app/api/tags/route-e967880631a99483.js +0 -1
  732. package/app/.next/static/chunks/app/api/translator/console-logs/route-e967880631a99483.js +0 -1
  733. package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-e967880631a99483.js +0 -1
  734. package/app/.next/static/chunks/app/api/translator/load/route-e967880631a99483.js +0 -1
  735. package/app/.next/static/chunks/app/api/translator/save/route-e967880631a99483.js +0 -1
  736. package/app/.next/static/chunks/app/api/translator/send/route-e967880631a99483.js +0 -1
  737. package/app/.next/static/chunks/app/api/translator/translate/route-e967880631a99483.js +0 -1
  738. package/app/.next/static/chunks/app/api/tunnel/disable/route-e967880631a99483.js +0 -1
  739. package/app/.next/static/chunks/app/api/tunnel/enable/route-e967880631a99483.js +0 -1
  740. package/app/.next/static/chunks/app/api/tunnel/status/route-e967880631a99483.js +0 -1
  741. package/app/.next/static/chunks/app/api/tunnel/tailscale-check/route-e967880631a99483.js +0 -1
  742. package/app/.next/static/chunks/app/api/tunnel/tailscale-disable/route-e967880631a99483.js +0 -1
  743. package/app/.next/static/chunks/app/api/tunnel/tailscale-enable/route-e967880631a99483.js +0 -1
  744. package/app/.next/static/chunks/app/api/tunnel/tailscale-install/route-e967880631a99483.js +0 -1
  745. package/app/.next/static/chunks/app/api/tunnel/tailscale-login/route-e967880631a99483.js +0 -1
  746. package/app/.next/static/chunks/app/api/tunnel/tailscale-start-daemon/route-e967880631a99483.js +0 -1
  747. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-e967880631a99483.js +0 -1
  748. package/app/.next/static/chunks/app/api/usage/api-keys/route-e967880631a99483.js +0 -1
  749. package/app/.next/static/chunks/app/api/usage/chart/route-e967880631a99483.js +0 -1
  750. package/app/.next/static/chunks/app/api/usage/history/route-e967880631a99483.js +0 -1
  751. package/app/.next/static/chunks/app/api/usage/logs/route-e967880631a99483.js +0 -1
  752. package/app/.next/static/chunks/app/api/usage/providers/route-e967880631a99483.js +0 -1
  753. package/app/.next/static/chunks/app/api/usage/request-details/route-e967880631a99483.js +0 -1
  754. package/app/.next/static/chunks/app/api/usage/request-logs/route-e967880631a99483.js +0 -1
  755. package/app/.next/static/chunks/app/api/usage/stats/route-e967880631a99483.js +0 -1
  756. package/app/.next/static/chunks/app/api/usage/stream/route-e967880631a99483.js +0 -1
  757. package/app/.next/static/chunks/app/api/users/[id]/route-e967880631a99483.js +0 -1
  758. package/app/.next/static/chunks/app/api/users/route-e967880631a99483.js +0 -1
  759. package/app/.next/static/chunks/app/api/v1/api/chat/route-e967880631a99483.js +0 -1
  760. package/app/.next/static/chunks/app/api/v1/audio/speech/route-e967880631a99483.js +0 -1
  761. package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-e967880631a99483.js +0 -1
  762. package/app/.next/static/chunks/app/api/v1/audio/voices/route-e967880631a99483.js +0 -1
  763. package/app/.next/static/chunks/app/api/v1/chat/completions/route-e967880631a99483.js +0 -1
  764. package/app/.next/static/chunks/app/api/v1/embeddings/route-e967880631a99483.js +0 -1
  765. package/app/.next/static/chunks/app/api/v1/images/generations/route-e967880631a99483.js +0 -1
  766. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-e967880631a99483.js +0 -1
  767. package/app/.next/static/chunks/app/api/v1/messages/route-e967880631a99483.js +0 -1
  768. package/app/.next/static/chunks/app/api/v1/models/[kind]/route-e967880631a99483.js +0 -1
  769. package/app/.next/static/chunks/app/api/v1/models/info/route-e967880631a99483.js +0 -1
  770. package/app/.next/static/chunks/app/api/v1/models/route-e967880631a99483.js +0 -1
  771. package/app/.next/static/chunks/app/api/v1/responses/compact/route-e967880631a99483.js +0 -1
  772. package/app/.next/static/chunks/app/api/v1/responses/route-e967880631a99483.js +0 -1
  773. package/app/.next/static/chunks/app/api/v1/route-e967880631a99483.js +0 -1
  774. package/app/.next/static/chunks/app/api/v1/search/route-e967880631a99483.js +0 -1
  775. package/app/.next/static/chunks/app/api/v1/web/fetch/route-e967880631a99483.js +0 -1
  776. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-e967880631a99483.js +0 -1
  777. package/app/.next/static/chunks/app/api/v1beta/models/route-e967880631a99483.js +0 -1
  778. package/app/.next/static/chunks/app/api/version/route-e967880631a99483.js +0 -1
  779. package/app/.next/static/chunks/app/api/version/update/route-e967880631a99483.js +0 -1
  780. package/app/.next/static/chunks/app/callback/page-ca2aafefd1c72edc.js +0 -1
  781. package/app/.next/static/chunks/app/layout-88b42fda4d7c38d2.js +0 -1
  782. package/app/.next/static/chunks/app/login/page-cfe122b0047956eb.js +0 -1
  783. package/app/.next/static/chunks/app/manifest.webmanifest/route-e967880631a99483.js +0 -1
  784. package/app/.next/static/chunks/app/page-e967880631a99483.js +0 -1
  785. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-e967880631a99483.js +0 -1
  786. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-e967880631a99483.js +0 -1
  787. package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-e967880631a99483.js +0 -1
  788. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-e967880631a99483.js +0 -1
  789. package/app/.next/static/css/90eec4fabec62f30.css +0 -1
  790. package/app/.next/static/uJKVggqia7KT98gdWEdVM/_buildManifest.js +0 -1
  791. /package/app/.next/static/{uJKVggqia7KT98gdWEdVM → BuJLCErn-QhhM6_1rkOm9}/_ssgManifest.js +0 -0
@@ -203,5 +203,6 @@
203
203
  "Open New Antigravity": "Open New Antigravity",
204
204
  "Open a new Antigravity window with MITM enabled": "Open a new Antigravity window with MITM enabled",
205
205
  "Opened new Antigravity": "Opened new Antigravity",
206
- "Open New": "Open New"
206
+ "Open New": "Open New",
207
+ "Focus UI": "Focus UI"
207
208
  }
@@ -203,5 +203,6 @@
203
203
  "Open New Antigravity": "Open New Antigravity",
204
204
  "Open a new Antigravity window with MITM enabled": "Open a new Antigravity window with MITM enabled",
205
205
  "Opened new Antigravity": "Opened new Antigravity",
206
- "Open New": "Open New"
206
+ "Open New": "Open New",
207
+ "Focus UI": "Focus UI"
207
208
  }
@@ -203,5 +203,6 @@
203
203
  "Open New Antigravity": "Открыть новый Antigravity",
204
204
  "Open a new Antigravity window with MITM enabled": "Открыть новое окно Antigravity с включенным MITM",
205
205
  "Opened new Antigravity": "Новый Antigravity открыт",
206
- "Open New": "Открыть новый"
206
+ "Open New": "Открыть новый",
207
+ "Focus UI": "Фокус UI"
207
208
  }
@@ -203,5 +203,6 @@
203
203
  "Open New Antigravity": "Open New Antigravity",
204
204
  "Open a new Antigravity window with MITM enabled": "Open a new Antigravity window with MITM enabled",
205
205
  "Opened new Antigravity": "Opened new Antigravity",
206
- "Open New": "Open New"
206
+ "Open New": "Open New",
207
+ "Focus UI": "Focus UI"
207
208
  }
@@ -203,5 +203,6 @@
203
203
  "Open New Antigravity": "Open New Antigravity",
204
204
  "Open a new Antigravity window with MITM enabled": "Open a new Antigravity window with MITM enabled",
205
205
  "Opened new Antigravity": "Opened new Antigravity",
206
- "Open New": "Open New"
206
+ "Open New": "Open New",
207
+ "Focus UI": "Focus UI"
207
208
  }
@@ -203,5 +203,6 @@
203
203
  "Open New Antigravity": "Open New Antigravity",
204
204
  "Open a new Antigravity window with MITM enabled": "Open a new Antigravity window with MITM enabled",
205
205
  "Opened new Antigravity": "Opened new Antigravity",
206
- "Open New": "Open New"
206
+ "Open New": "Open New",
207
+ "Focus UI": "Focus UI"
207
208
  }
@@ -203,5 +203,6 @@
203
203
  "Open New Antigravity": "Open New Antigravity",
204
204
  "Open a new Antigravity window with MITM enabled": "Open a new Antigravity window with MITM enabled",
205
205
  "Opened new Antigravity": "Opened new Antigravity",
206
- "Open New": "Open New"
206
+ "Open New": "Open New",
207
+ "Focus UI": "Focus UI"
207
208
  }
@@ -203,5 +203,6 @@
203
203
  "Open New Antigravity": "Open New Antigravity",
204
204
  "Open a new Antigravity window with MITM enabled": "Open a new Antigravity window with MITM enabled",
205
205
  "Opened new Antigravity": "Opened new Antigravity",
206
- "Open New": "Open New"
206
+ "Open New": "Open New",
207
+ "Focus UI": "Focus UI"
207
208
  }
@@ -203,5 +203,6 @@
203
203
  "Open New Antigravity": "Open New Antigravity",
204
204
  "Open a new Antigravity window with MITM enabled": "Open a new Antigravity window with MITM enabled",
205
205
  "Opened new Antigravity": "Opened new Antigravity",
206
- "Open New": "Open New"
206
+ "Open New": "Open New",
207
+ "Focus UI": "Focus UI"
207
208
  }
@@ -203,5 +203,6 @@
203
203
  "Open New Antigravity": "Open New Antigravity",
204
204
  "Open a new Antigravity window with MITM enabled": "Open a new Antigravity window with MITM enabled",
205
205
  "Opened new Antigravity": "Opened new Antigravity",
206
- "Open New": "Open New"
206
+ "Open New": "Open New",
207
+ "Focus UI": "Focus UI"
207
208
  }
@@ -117,6 +117,10 @@
117
117
  "Checking Factory Droid CLI...": "检查 Factory Droid CLI...",
118
118
  "Checking Open Claw CLI...": "正在检查 Open Claw CLI...",
119
119
  "Checking OpenCode CLI...": "检查 OpenCode CLI...",
120
+ "Checking Cline...": "正在检查 Cline...",
121
+ "Checking Kilo Code...": "正在检查 Kilo Code...",
122
+ "Checking Hermes Agent...": "正在检查 Hermes Agent...",
123
+ "Checking Claude Cowork...": "正在检查 Claude Cowork...",
120
124
  "Checking...": "检查中...",
121
125
  "Choose your authentication method:": "选择您的身份验证方法:",
122
126
  "Claude": "Claude",
@@ -152,6 +156,7 @@
152
156
  "Compress tool output to reduce token usage.": "压缩工具输出以减少 Token 使用量。",
153
157
  "Configure a new AI provider to use with your applications.": "配置新的 AI 提供程序以与您的应用程序一起使用。",
154
158
  "Configure CLI tools": "配置 CLI 工具",
159
+ "Configure local coding tools to use your openrouterX providers.": "配置本地编码工具以使用你的 openrouterX 提供商。",
155
160
  "Configure pricing rates for cost tracking and calculations": "配置定价以进行成本跟踪和计算",
156
161
  "Configured outbound proxy timed out": "配置的出站代理超时",
157
162
  "Confirm": "确认",
@@ -331,6 +336,7 @@
331
336
  "How Pricing Works": "定价如何运作",
332
337
  "How to get cookie:": "如何获取cookie:",
333
338
  "How to Install": "如何安装",
339
+ "Hide": "隐藏",
334
340
  "IDC Start URL": "IDC 起始 URL",
335
341
  "If provider lacks /models endpoint, enter a model ID to validate via chat/completions instead.": "如果提供商不支持 /models 端点,请输入模型 ID 通过 chat/completions 进行验证。",
336
342
  "iFlow AI": "iFlow AI",
@@ -354,6 +360,8 @@
354
360
  "Install OpenrouterX": "安装 OpenrouterX",
355
361
  "Install Tailscale": "安装 Tailscale",
356
362
  "Installation Guide": "安装指南",
363
+ "Install Cline VS Code extension or CLI from": "从以下位置安装 Cline VS Code 扩展或 CLI:",
364
+ "Install Kilo Code from": "从以下位置安装 Kilo Code:",
357
365
  "Installing Tailscale...": "正在安装 Tailscale...",
358
366
  "Interactive diagram visible on desktop": "桌面上可见的交互式图表",
359
367
  "Intercept CLI tool traffic and route through OpenrouterX": "拦截 CLI 工具流量并通过 OpenrouterX 路由",
@@ -511,9 +519,24 @@
511
519
  "OpenAI Response": "OpenAI 响应",
512
520
  "OpenCode - Manual Configuration": "OpenCode - 手动配置",
513
521
  "OpenCode CLI not installed": "未安装 OpenCode CLI",
522
+ "Claude CLI not detected locally": "未在本机检测到 Claude CLI",
523
+ "Codex CLI not detected locally": "未在本机检测到 Codex CLI",
524
+ "Codex CLI status unavailable": "无法获取 Codex CLI 状态",
525
+ "OpenCode CLI not detected locally": "未在本机检测到 OpenCode CLI",
526
+ "Factory Droid CLI not detected locally": "未在本机检测到 Factory Droid CLI",
527
+ "Open Claw CLI not detected locally": "未在本机检测到 Open Claw CLI",
528
+ "Hermes Agent not detected locally": "未在本机检测到 Hermes Agent",
529
+ "Cline not detected locally": "未在本机检测到 Cline",
530
+ "Kilo Code not detected locally": "未在本机检测到 Kilo Code",
531
+ "Claude Desktop (Cowork mode) not detected": "未检测到 Claude Desktop(Cowork 模式)",
532
+ "Manual configuration is still available if openrouterX is deployed on a remote server.": "如果 openrouterX 部署在远程服务器上,仍可使用手动配置。",
533
+ "Manual configuration is still available if OpenrouterX is deployed on a remote server.": "如果 OpenrouterX 部署在远程服务器上,仍可使用手动配置。",
534
+ "Click \"Apply\" to auto-configure.": "点击“应用”自动配置。",
535
+ "After installation, run": "安装后运行",
536
+ "to verify.": "进行验证。",
514
537
  "OpenRouter": "OpenRouter",
515
538
  "OpenRouter supports any model. Add models and create aliases for quick access.": "OpenRouter 支持任何模型。添加模型并创建别名以便快速访问。",
516
- "OpenrouterX Base URL": "OpenrouterX 基础 URL",
539
+ "OpenrouterX Base URL": "base URL",
517
540
  "OpenrouterX fell back after the configured proxy connection timed out. Because the app stores this as a targeted proxy allowlist, the failure affects selected upstream API calls rather than macOS global networking.": "配置的代理连接超时后,OpenrouterX 已回退。由于应用将其作为定向代理白名单保存,该故障影响的是选定的上游 API 调用,而不是 macOS 全局网络。",
518
541
  "Other": "其他",
519
542
  "Our engine analyzes the prompt and routes through your subscription, cheap, and free provider tiers with automatic fallback.": "我们的引擎分析提示词并通过您的订阅、低价和免费提供商层级路由,自动回退。",
@@ -826,5 +849,104 @@
826
849
  "Open New Antigravity": "新开 Antigravity",
827
850
  "Open a new Antigravity window with MITM enabled": "新开一个启用 MITM 的 Antigravity 窗口",
828
851
  "Opened new Antigravity": "已新开 Antigravity",
829
- "Open New": "新开"
852
+ "Open New": "新开",
853
+ "Focus UI": "关注UI",
854
+ "Amp CLI": "Amp CLI",
855
+ "Sourcegraph Amp coding assistant CLI": "Sourcegraph Amp 编程助手 CLI",
856
+ "Use openrouterX model aliases to keep Amp shorthand mappings stable across provider updates.": "使用 openrouterX 模型别名,让 Amp 快捷模型名在提供商更新后仍保持稳定。",
857
+ "Suggested shorthand examples: g25p → gemini/gemini-2.5-pro, g25f → gemini/gemini-2.5-flash, cs45 → cc/claude-sonnet-4-5-20250929.": "快捷名示例:g25p → gemini/gemini-2.5-pro,g25f → gemini/gemini-2.5-flash,cs45 → cc/claude-sonnet-4-5-20250929。",
858
+ "Install Amp": "安装 Amp",
859
+ "Install the Amp CLI using the package manager supported by your environment.": "使用当前环境支持的包管理器安装 Amp CLI。",
860
+ "Add Shorthands": "添加快捷名",
861
+ "Map Amp shorthand names such as g25p or cs45 to openrouterX aliases in your local config.": "在本地配置中把 g25p、cs45 等 Amp 快捷名映射到 openrouterX 别名。",
862
+ "Qwen Code": "Qwen Code",
863
+ "Alibaba Qwen Code CLI — supports OpenAI, Anthropic & Gemini providers via openrouterX": "阿里 Qwen Code CLI — 通过 openrouterX 支持 OpenAI、Anthropic 和 Gemini 提供商",
864
+ "Qwen Code supports multiple provider types (openai, anthropic, gemini) via modelProviders in settings.json. openrouterX works as an OpenAI-compatible endpoint.": "Qwen Code 可通过 settings.json 里的 modelProviders 支持多种提供商类型(openai、anthropic、gemini)。openrouterX 作为 OpenAI 兼容端点使用。",
865
+ "Any model available in openrouterX can be used — not just Qwen models. Select from Qwen, Claude, Gemini, GPT, and more.": "openrouterX 中可用的任何模型都可以使用,不限于 Qwen 模型。可选择 Qwen、Claude、Gemini、GPT 等。",
866
+ "Config path: Linux/macOS ~/.qwen/settings.json • Windows %USERPROFILE%\\.qwen\\settings.json": "配置路径:Linux/macOS ~/.qwen/settings.json • Windows %USERPROFILE%\\.qwen\\settings.json",
867
+ "Qwen OAuth free tier was discontinued on 2026-04-15. Use openrouterX with alicode/openrouter/anthropic/gemini providers instead.": "Qwen OAuth 免费额度已于 2026-04-15 停用。请改用 openrouterX 搭配 alicode/openrouter/anthropic/gemini 提供商。",
868
+ "Install Qwen Code": "安装 Qwen Code",
869
+ "Save Config": "保存配置",
870
+ "Copy the JSON below to your ~/.qwen/settings.json file.": "将下方 JSON 复制到 ~/.qwen/settings.json 文件。",
871
+ "Global Fast": "全局快速",
872
+ "My Fast": "我的快速",
873
+ "Enable Codex Fast Mode for this sub-user": "为此子用户启用 Codex 快速模式",
874
+ "Fast On": "快速开",
875
+ "Fast Off": "快速关",
876
+ "User Management": "用户管理",
877
+ "Manage sub-users and their permissions": "管理子用户及其权限",
878
+ "+ Add Sub-user": "+ 添加子用户",
879
+ "No sub-users yet. Create one to get started.": "还没有子用户。创建一个即可开始。",
880
+ "Create Sub-user": "创建子用户",
881
+ "Username": "用户名",
882
+ "Display Name": "显示名称",
883
+ "Password": "密码",
884
+ "Permissions": "权限",
885
+ "Allow Quota Tracker for this sub-user": "允许此子用户使用配额跟踪",
886
+ "Quota On": "配额开",
887
+ "Quota Off": "配额关",
888
+ "New Password (leave blank to keep)": "新密码(留空则保持不变)",
889
+ "Delete User": "删除用户",
890
+ "Allowed Providers & Accounts": "允许的提供商和账号",
891
+ "Connect providers first, then assign them to this sub-user.": "请先连接提供商,然后分配给此子用户。",
892
+ "Only selected providers and selected provider accounts will be visible and usable for this sub-user.": "只有选中的提供商和账号会对此子用户可见且可用。",
893
+ "No providers enabled": "未启用提供商",
894
+ "No accounts": "没有账号",
895
+ "API Key Management": "API 密钥管理",
896
+ "Key Management": "密钥管理",
897
+ "Assign Key:": "分配密钥:",
898
+ "assigned": "已分配",
899
+ "Assign API keys to sub-users. Only the assigned user can use that key.": "将 API 密钥分配给子用户。只有被分配的用户可以使用该密钥。",
900
+ "No API keys yet. Create one in the Endpoint page.": "还没有 API 密钥。请在 Endpoint 页面创建一个。",
901
+ "Unassigned (Admin)": "未分配(管理员)",
902
+ "Assign to User": "分配给用户",
903
+ "Reassign": "重新分配",
904
+ "Assign to user": "分配给用户",
905
+ "— Unassigned (Admin only) —": "— 未分配(仅管理员)—",
906
+ "OIDC Dashboard Login": "OIDC 控制面板登录",
907
+ "OIDC active": "OIDC 已启用",
908
+ "Password + OIDC active": "密码 + OIDC 已启用",
909
+ "Optional SSO via Authentik/Keycloak/Google": "可选:通过 Authentik/Keycloak/Google 单点登录",
910
+ "Use Authentik or any OIDC provider to sign in to the dashboard. You can enable password-only, OIDC-only, or both for the dashboard; model API access still uses API keys.": "使用 Authentik 或任何 OIDC 提供商登录控制面板。控制面板可设置为仅密码、仅 OIDC,或两者都允许;模型 API 访问仍使用 API Key。",
911
+ "Auth Mode": "认证模式",
912
+ "Password only": "仅密码",
913
+ "Keep the legacy password login.": "保留原有密码登录。",
914
+ "OIDC only": "仅 OIDC",
915
+ "Require OIDC for dashboard access.": "访问控制面板时必须使用 OIDC。",
916
+ "Both": "两者都允许",
917
+ "Allow either password or OIDC.": "允许使用密码或 OIDC 登录。",
918
+ "Issuer URL": "Issuer URL",
919
+ "Client ID": "客户端 ID",
920
+ "Client Secret": "客户端密钥",
921
+ "Leave blank to keep existing secret": "留空则保留现有密钥",
922
+ "This value is write-only after saving.": "保存后该值只可写入,不会再明文显示。",
923
+ "Scopes": "授权范围",
924
+ "Login Button Label": "登录按钮文字",
925
+ "Sign in with OIDC": "使用 OIDC 登录",
926
+ "Redirect URI": "重定向 URI",
927
+ "Save auth mode": "保存认证模式",
928
+ "Test connection": "测试连接",
929
+ "Issuer URL, client ID, and client secret are required to enable OIDC.": "启用 OIDC 需要填写 Issuer URL、客户端 ID 和客户端密钥。",
930
+ "OIDC login enabled": "OIDC 登录已启用",
931
+ "Password and OIDC login enabled": "密码和 OIDC 登录已启用",
932
+ "OIDC settings saved": "OIDC 设置已保存",
933
+ "Failed to save OIDC settings": "保存 OIDC 设置失败",
934
+ "Issuer URL and client ID are required to test the connection.": "测试连接需要填写 Issuer URL 和客户端 ID。",
935
+ "Failed to save OIDC settings before testing": "测试前保存 OIDC 设置失败",
936
+ "OIDC connection test failed": "OIDC 连接测试失败",
937
+ "OIDC login is currently active. Password login is disabled until you switch back.": "当前已启用 OIDC 登录。切回之前,密码登录将被禁用。",
938
+ "Password and OIDC login are both active.": "密码登录和 OIDC 登录当前都已启用。",
939
+ "Sign in to access the dashboard": "登录以访问控制面板",
940
+ "or": "或",
941
+ "Super Admin": "超级管理员",
942
+ "Sub User": "子用户",
943
+ "Select user": "选择用户",
944
+ "— Select a user —": "— 选择用户 —",
945
+ "Your password": "你的密码",
946
+ "Admin password": "管理员密码",
947
+ "Sign In": "登录",
948
+ "Invalid credentials": "账号或密码无效",
949
+ "An error occurred. Please try again.": "发生错误,请重试。",
950
+ "OIDC user": "OIDC 用户",
951
+ "Password user": "密码用户"
830
952
  }
@@ -256,5 +256,6 @@
256
256
  "Open New Antigravity": "新開 Antigravity",
257
257
  "Open a new Antigravity window with MITM enabled": "新開一個啟用 MITM 的 Antigravity 視窗",
258
258
  "Opened new Antigravity": "已新開 Antigravity",
259
- "Open New": "新開"
259
+ "Open New": "新開",
260
+ "Focus UI": "關注UI"
260
261
  }
@@ -0,0 +1,55 @@
1
+ import Database from "better-sqlite3";
2
+ import { PRAGMA_SQL } from "../schema.js";
3
+
4
+ // Periodic checkpoint to keep WAL file small (avoid huge -wal/-shm growth)
5
+ const CHECKPOINT_INTERVAL_MS = 60 * 1000;
6
+
7
+ export function createBetterSqliteAdapter(filePath) {
8
+ const db = new Database(filePath);
9
+ db.exec(PRAGMA_SQL);
10
+ // Schema is created/synced by migrate.js after adapter init
11
+
12
+ const stmtCache = new Map();
13
+
14
+ function prepare(sql) {
15
+ let stmt = stmtCache.get(sql);
16
+ if (!stmt) {
17
+ stmt = db.prepare(sql);
18
+ stmtCache.set(sql, stmt);
19
+ }
20
+ return stmt;
21
+ }
22
+
23
+ // Truncate WAL periodically so file stays small for backup/copy
24
+ const checkpointTimer = setInterval(() => {
25
+ try { db.pragma("wal_checkpoint(TRUNCATE)"); } catch {}
26
+ }, CHECKPOINT_INTERVAL_MS);
27
+ if (typeof checkpointTimer.unref === "function") checkpointTimer.unref();
28
+
29
+ function gracefulClose() {
30
+ try { db.pragma("wal_checkpoint(TRUNCATE)"); } catch {}
31
+ try { stmtCache.clear(); } catch {}
32
+ try { db.close(); } catch {}
33
+ }
34
+
35
+ // Ensure WAL is flushed and -wal/-shm files removed on shutdown
36
+ const onShutdown = () => gracefulClose();
37
+ process.once("beforeExit", onShutdown);
38
+ process.once("SIGINT", () => { onShutdown(); process.exit(0); });
39
+ process.once("SIGTERM", () => { onShutdown(); process.exit(0); });
40
+
41
+ return {
42
+ driver: "better-sqlite3",
43
+ run(sql, params = []) { return prepare(sql).run(params); },
44
+ get(sql, params = []) { return prepare(sql).get(params); },
45
+ all(sql, params = []) { return prepare(sql).all(params); },
46
+ exec(sql) { return db.exec(sql); },
47
+ transaction(fn) { return db.transaction(fn)(); },
48
+ checkpoint() { try { db.pragma("wal_checkpoint(TRUNCATE)"); } catch {} },
49
+ close() {
50
+ clearInterval(checkpointTimer);
51
+ gracefulClose();
52
+ },
53
+ raw: db,
54
+ };
55
+ }
@@ -0,0 +1,63 @@
1
+ // Bun runtime adapter — uses built-in bun:sqlite (native, fastest under Bun).
2
+ // Loaded only when process.versions.bun is present.
3
+ import { PRAGMA_SQL } from "../schema.js";
4
+
5
+ const CHECKPOINT_INTERVAL_MS = 60 * 1000;
6
+
7
+ export async function createBunSqliteAdapter(filePath) {
8
+ // Dynamic import — only resolves under Bun runtime
9
+ const { Database } = await import("bun:sqlite");
10
+ const db = new Database(filePath, { create: true });
11
+ db.exec(PRAGMA_SQL);
12
+
13
+ const stmtCache = new Map();
14
+ function prepare(sql) {
15
+ let stmt = stmtCache.get(sql);
16
+ if (!stmt) {
17
+ stmt = db.prepare(sql);
18
+ stmtCache.set(sql, stmt);
19
+ }
20
+ return stmt;
21
+ }
22
+
23
+ const checkpointTimer = setInterval(() => {
24
+ try { db.exec("PRAGMA wal_checkpoint(TRUNCATE)"); } catch {}
25
+ }, CHECKPOINT_INTERVAL_MS);
26
+ if (typeof checkpointTimer.unref === "function") checkpointTimer.unref();
27
+
28
+ function gracefulClose() {
29
+ try { db.exec("PRAGMA wal_checkpoint(TRUNCATE)"); } catch {}
30
+ try { stmtCache.clear(); } catch {}
31
+ try { db.close(); } catch {}
32
+ }
33
+ const onShutdown = () => gracefulClose();
34
+ process.once("beforeExit", onShutdown);
35
+ process.once("SIGINT", () => { onShutdown(); process.exit(0); });
36
+ process.once("SIGTERM", () => { onShutdown(); process.exit(0); });
37
+
38
+ return {
39
+ driver: "bun:sqlite",
40
+ run(sql, params = []) {
41
+ const r = prepare(sql).run(...params);
42
+ return { changes: Number(r.changes ?? 0), lastInsertRowid: Number(r.lastInsertRowid ?? 0) };
43
+ },
44
+ get(sql, params = []) {
45
+ return prepare(sql).get(...params);
46
+ },
47
+ all(sql, params = []) {
48
+ return prepare(sql).all(...params);
49
+ },
50
+ exec(sql) { return db.exec(sql); },
51
+ transaction(fn) {
52
+ // bun:sqlite has db.transaction() API (similar to better-sqlite3)
53
+ const tx = db.transaction(fn);
54
+ return tx();
55
+ },
56
+ checkpoint() { try { db.exec("PRAGMA wal_checkpoint(TRUNCATE)"); } catch {} },
57
+ close() {
58
+ clearInterval(checkpointTimer);
59
+ gracefulClose();
60
+ },
61
+ raw: db,
62
+ };
63
+ }
@@ -0,0 +1,84 @@
1
+ // Built-in node:sqlite adapter — available in Node >= 22.5.0.
2
+ // No native build, no npm install. API mirrors betterSqliteAdapter.
3
+ import { PRAGMA_SQL } from "../schema.js";
4
+
5
+ const CHECKPOINT_INTERVAL_MS = 60 * 1000;
6
+
7
+ export async function createNodeSqliteAdapter(filePath) {
8
+ // Suppress "ExperimentalWarning: SQLite is an experimental feature" from node:sqlite.
9
+ // Stable enough for production use as of Node 22.x (RC quality).
10
+ const origEmit = process.emit;
11
+ process.emit = function (name, data, ...rest) {
12
+ if (name === "warning" && data?.name === "ExperimentalWarning" && /SQLite/i.test(data.message || "")) {
13
+ return false;
14
+ }
15
+ return origEmit.call(process, name, data, ...rest);
16
+ };
17
+
18
+ // Dynamic import — fails on Node < 22.5 → driver.js falls back to sql.js
19
+ const sqlite = await import("node:sqlite");
20
+ const Database = sqlite.DatabaseSync;
21
+ const db = new Database(filePath);
22
+
23
+ db.exec(PRAGMA_SQL);
24
+
25
+ const stmtCache = new Map();
26
+ function prepare(sql) {
27
+ let stmt = stmtCache.get(sql);
28
+ if (!stmt) {
29
+ stmt = db.prepare(sql);
30
+ stmtCache.set(sql, stmt);
31
+ }
32
+ return stmt;
33
+ }
34
+
35
+ // Periodic WAL checkpoint to keep -wal/-shm small
36
+ const checkpointTimer = setInterval(() => {
37
+ try { db.exec("PRAGMA wal_checkpoint(TRUNCATE)"); } catch {}
38
+ }, CHECKPOINT_INTERVAL_MS);
39
+ if (typeof checkpointTimer.unref === "function") checkpointTimer.unref();
40
+
41
+ function gracefulClose() {
42
+ try { db.exec("PRAGMA wal_checkpoint(TRUNCATE)"); } catch {}
43
+ try { stmtCache.clear(); } catch {}
44
+ try { db.close(); } catch {}
45
+ }
46
+ const onShutdown = () => gracefulClose();
47
+ process.once("beforeExit", onShutdown);
48
+ process.once("SIGINT", () => { onShutdown(); process.exit(0); });
49
+ process.once("SIGTERM", () => { onShutdown(); process.exit(0); });
50
+
51
+ return {
52
+ driver: "node:sqlite",
53
+ run(sql, params = []) {
54
+ const r = prepare(sql).run(...params);
55
+ return { changes: Number(r.changes ?? 0), lastInsertRowid: Number(r.lastInsertRowid ?? 0) };
56
+ },
57
+ get(sql, params = []) {
58
+ return prepare(sql).get(...params);
59
+ },
60
+ all(sql, params = []) {
61
+ return prepare(sql).all(...params);
62
+ },
63
+ exec(sql) { return db.exec(sql); },
64
+ transaction(fn) {
65
+ // node:sqlite has no transaction wrapper. Use SAVEPOINT for nested support.
66
+ const sp = `sp_${Math.random().toString(36).slice(2)}`;
67
+ db.exec(`SAVEPOINT ${sp}`);
68
+ try {
69
+ const r = fn();
70
+ db.exec(`RELEASE ${sp}`);
71
+ return r;
72
+ } catch (e) {
73
+ try { db.exec(`ROLLBACK TO ${sp}`); db.exec(`RELEASE ${sp}`); } catch {}
74
+ throw e;
75
+ }
76
+ },
77
+ checkpoint() { try { db.exec("PRAGMA wal_checkpoint(TRUNCATE)"); } catch {} },
78
+ close() {
79
+ clearInterval(checkpointTimer);
80
+ gracefulClose();
81
+ },
82
+ raw: db,
83
+ };
84
+ }
@@ -0,0 +1,115 @@
1
+ import fs from "node:fs";
2
+ import initSqlJs from "sql.js";
3
+ import { PRAGMA_SQL } from "../schema.js";
4
+
5
+ let SQL = null;
6
+
7
+ async function loadSql() {
8
+ if (SQL) return SQL;
9
+ SQL = await initSqlJs();
10
+ return SQL;
11
+ }
12
+
13
+ export async function createSqlJsAdapter(filePath) {
14
+ const SQLLib = await loadSql();
15
+ const buf = fs.existsSync(filePath) ? fs.readFileSync(filePath) : null;
16
+ const db = new SQLLib.Database(buf);
17
+ db.exec(PRAGMA_SQL);
18
+ // Schema is created/synced by migrate.js after adapter init
19
+
20
+ let dirty = false;
21
+ let saveTimer = null;
22
+ const SAVE_DEBOUNCE_MS = 100;
23
+
24
+ function persist() {
25
+ const data = db.export();
26
+ fs.writeFileSync(filePath, Buffer.from(data));
27
+ dirty = false;
28
+ }
29
+
30
+ function scheduleSave() {
31
+ dirty = true;
32
+ if (saveTimer) clearTimeout(saveTimer);
33
+ saveTimer = setTimeout(() => {
34
+ saveTimer = null;
35
+ if (dirty) {
36
+ try { persist(); } catch (e) { console.error("[sqljs] save failed:", e); }
37
+ }
38
+ }, SAVE_DEBOUNCE_MS);
39
+ }
40
+
41
+ function paramsObj(params) {
42
+ if (!params || (Array.isArray(params) && params.length === 0)) return undefined;
43
+ return params;
44
+ }
45
+
46
+ function run(sql, params = []) {
47
+ const stmt = db.prepare(sql);
48
+ try {
49
+ stmt.bind(paramsObj(params));
50
+ stmt.step();
51
+ const changes = db.getRowsModified();
52
+ const lastInsertRowid = db.exec("SELECT last_insert_rowid() as id")[0]?.values?.[0]?.[0] ?? null;
53
+ scheduleSave();
54
+ return { changes, lastInsertRowid };
55
+ } finally {
56
+ stmt.free();
57
+ }
58
+ }
59
+
60
+ function get(sql, params = []) {
61
+ const stmt = db.prepare(sql);
62
+ try {
63
+ stmt.bind(paramsObj(params));
64
+ if (stmt.step()) return stmt.getAsObject();
65
+ return undefined;
66
+ } finally {
67
+ stmt.free();
68
+ }
69
+ }
70
+
71
+ function all(sql, params = []) {
72
+ const stmt = db.prepare(sql);
73
+ try {
74
+ stmt.bind(paramsObj(params));
75
+ const rows = [];
76
+ while (stmt.step()) rows.push(stmt.getAsObject());
77
+ return rows;
78
+ } finally {
79
+ stmt.free();
80
+ }
81
+ }
82
+
83
+ function exec(sql) {
84
+ db.exec(sql);
85
+ scheduleSave();
86
+ }
87
+
88
+ function transaction(fn) {
89
+ const sp = `sp_${Math.random().toString(36).slice(2)}`;
90
+ db.exec(`SAVEPOINT ${sp}`);
91
+ try {
92
+ const result = fn();
93
+ db.exec(`RELEASE ${sp}`);
94
+ scheduleSave();
95
+ return result;
96
+ } catch (e) {
97
+ try { db.exec(`ROLLBACK TO ${sp}`); db.exec(`RELEASE ${sp}`); } catch {}
98
+ throw e;
99
+ }
100
+ }
101
+
102
+ function close() {
103
+ if (saveTimer) clearTimeout(saveTimer);
104
+ if (dirty) persist();
105
+ db.close();
106
+ }
107
+
108
+ // Flush on shutdown
109
+ const flush = () => { if (dirty) try { persist(); } catch {} };
110
+ process.on("beforeExit", flush);
111
+ process.on("SIGINT", flush);
112
+ process.on("SIGTERM", flush);
113
+
114
+ return { driver: "sql.js", run, get, all, exec, transaction, close, raw: db };
115
+ }