9router 0.4.19 → 0.4.25

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 (823) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/app-path-routes-manifest.json +8 -6
  3. package/app/.next/build-manifest.json +2 -2
  4. package/app/.next/prerender-manifest.json +3 -3
  5. package/app/.next/routes-manifest.json +12 -0
  6. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
  7. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
  10. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  13. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
  16. package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  19. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +12 -12
  22. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -2
  25. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +3 -3
  28. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
  31. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  32. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  33. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
  34. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  35. package/app/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  36. package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
  37. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  38. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  39. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  40. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  41. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  42. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  43. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  44. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  45. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  46. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  47. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  48. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  49. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  50. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  51. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js +3 -3
  52. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  53. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  54. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js +2 -2
  55. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  56. package/app/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  57. package/app/.next/server/app/(dashboard)/dashboard/skills/page.js +2 -2
  58. package/app/.next/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  59. package/app/.next/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  60. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +2 -2
  61. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  62. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  63. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  64. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  65. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  66. package/app/.next/server/app/_global-error/page.js +3 -3
  67. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  68. package/app/.next/server/app/_global-error.html +1 -1
  69. package/app/.next/server/app/_global-error.rsc +1 -1
  70. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  71. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  72. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  73. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  74. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  75. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  76. package/app/.next/server/app/_not-found/page.js +2 -2
  77. package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
  78. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  79. package/app/.next/server/app/_not-found.html +1 -1
  80. package/app/.next/server/app/_not-found.rsc +18 -17
  81. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +18 -17
  82. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  83. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +7 -6
  84. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  85. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  86. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  87. package/app/.next/server/app/api/auth/login/route.js +1 -1
  88. package/app/.next/server/app/api/auth/login/route.js.nft.json +1 -1
  89. package/app/.next/server/app/api/auth/logout/route.js +1 -1
  90. package/app/.next/server/app/api/cli-tools/all-statuses/route.js +9 -0
  91. package/app/.next/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -0
  92. package/app/.next/server/app/api/cli-tools/all-statuses/route_client-reference-manifest.js +1 -0
  93. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  94. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  95. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  96. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  97. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
  98. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +1 -32
  99. package/app/.next/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  100. package/app/.next/server/app/api/cli-tools/copilot-settings/route.js +1 -1
  101. package/app/.next/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
  102. package/app/.next/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -0
  103. package/app/.next/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -0
  104. package/app/.next/server/app/api/cli-tools/cowork-mcp-tools/route_client-reference-manifest.js +1 -0
  105. package/app/.next/server/app/api/cli-tools/cowork-settings/route.js +2 -2
  106. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +2 -2
  107. package/app/.next/server/app/api/cli-tools/hermes-settings/route.js +2 -2
  108. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  109. package/app/.next/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  110. package/app/.next/server/app/api/cloud/auth/route.js +1 -1
  111. package/app/.next/server/app/api/cloud/auth/route.js.nft.json +1 -1
  112. package/app/.next/server/app/api/cloud/credentials/update/route.js +1 -1
  113. package/app/.next/server/app/api/cloud/credentials/update/route.js.nft.json +1 -1
  114. package/app/.next/server/app/api/cloud/model/resolve/route.js +1 -1
  115. package/app/.next/server/app/api/cloud/model/resolve/route.js.nft.json +1 -1
  116. package/app/.next/server/app/api/cloud/models/alias/route.js +1 -1
  117. package/app/.next/server/app/api/cloud/models/alias/route.js.nft.json +1 -1
  118. package/app/.next/server/app/api/combos/[id]/route.js +1 -1
  119. package/app/.next/server/app/api/combos/[id]/route.js.nft.json +1 -1
  120. package/app/.next/server/app/api/combos/route.js +1 -1
  121. package/app/.next/server/app/api/combos/route.js.nft.json +1 -1
  122. package/app/.next/server/app/api/health/route.js +1 -1
  123. package/app/.next/server/app/api/init/route.js +1 -1
  124. package/app/.next/server/app/api/init/route.js.nft.json +1 -1
  125. package/app/.next/server/app/api/keys/[id]/route.js +1 -1
  126. package/app/.next/server/app/api/keys/[id]/route.js.nft.json +1 -1
  127. package/app/.next/server/app/api/keys/route.js +1 -1
  128. package/app/.next/server/app/api/keys/route.js.nft.json +1 -1
  129. package/app/.next/server/app/api/locale/route.js +1 -1
  130. package/app/.next/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  131. package/app/.next/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  132. package/app/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  133. package/app/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  134. package/app/.next/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  135. package/app/.next/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  136. package/app/.next/server/app/api/media-providers/tts/voices/route.js +1 -1
  137. package/app/.next/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  138. package/app/.next/server/app/api/models/alias/route.js +1 -1
  139. package/app/.next/server/app/api/models/alias/route.js.nft.json +1 -1
  140. package/app/.next/server/app/api/models/availability/route.js +1 -1
  141. package/app/.next/server/app/api/models/availability/route.js.nft.json +1 -1
  142. package/app/.next/server/app/api/models/custom/route.js +1 -1
  143. package/app/.next/server/app/api/models/custom/route.js.nft.json +1 -1
  144. package/app/.next/server/app/api/models/disabled/route.js +1 -1
  145. package/app/.next/server/app/api/models/disabled/route.js.nft.json +1 -1
  146. package/app/.next/server/app/api/models/route.js +1 -1
  147. package/app/.next/server/app/api/models/route.js.nft.json +1 -1
  148. package/app/.next/server/app/api/models/test/route.js +1 -1
  149. package/app/.next/server/app/api/models/test/route.js.nft.json +1 -1
  150. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +2 -2
  151. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  152. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js +2 -2
  153. package/app/.next/server/app/api/oauth/cursor/import/route.js +1 -1
  154. package/app/.next/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  155. package/app/.next/server/app/api/oauth/gitlab/pat/route.js +1 -1
  156. package/app/.next/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  157. package/app/.next/server/app/api/oauth/iflow/cookie/route.js +1 -1
  158. package/app/.next/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  159. package/app/.next/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  160. package/app/.next/server/app/api/oauth/kiro/import/route.js +1 -1
  161. package/app/.next/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  162. package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  163. package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  164. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  165. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  166. package/app/.next/server/app/api/pricing/route.js +1 -1
  167. package/app/.next/server/app/api/pricing/route.js.nft.json +1 -1
  168. package/app/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
  169. package/app/.next/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  170. package/app/.next/server/app/api/provider-nodes/route.js +1 -1
  171. package/app/.next/server/app/api/provider-nodes/route.js.nft.json +1 -1
  172. package/app/.next/server/app/api/provider-nodes/validate/route.js +1 -1
  173. package/app/.next/server/app/api/providers/[id]/models/route.js +1 -1
  174. package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  175. package/app/.next/server/app/api/providers/[id]/route.js +1 -1
  176. package/app/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
  177. package/app/.next/server/app/api/providers/[id]/test/route.js +1 -1
  178. package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  179. package/app/.next/server/app/api/providers/[id]/test-models/route.js +1 -1
  180. package/app/.next/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  181. package/app/.next/server/app/api/providers/client/route.js +1 -1
  182. package/app/.next/server/app/api/providers/client/route.js.nft.json +1 -1
  183. package/app/.next/server/app/api/providers/kilo/free-models/route.js +1 -1
  184. package/app/.next/server/app/api/providers/route.js +1 -1
  185. package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
  186. package/app/.next/server/app/api/providers/suggested-models/route.js +1 -1
  187. package/app/.next/server/app/api/providers/test-batch/route.js +1 -1
  188. package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  189. package/app/.next/server/app/api/providers/validate/route.js +1 -1
  190. package/app/.next/server/app/api/providers/validate/route.js.nft.json +1 -1
  191. package/app/.next/server/app/api/proxy-pools/[id]/route.js +1 -1
  192. package/app/.next/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  193. package/app/.next/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  194. package/app/.next/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  195. package/app/.next/server/app/api/proxy-pools/route.js +1 -1
  196. package/app/.next/server/app/api/proxy-pools/route.js.nft.json +1 -1
  197. package/app/.next/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
  198. package/app/.next/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  199. package/app/.next/server/app/api/settings/database/route.js +1 -1
  200. package/app/.next/server/app/api/settings/database/route.js.nft.json +1 -1
  201. package/app/.next/server/app/api/settings/proxy-test/route.js +1 -1
  202. package/app/.next/server/app/api/settings/require-login/route.js +1 -1
  203. package/app/.next/server/app/api/settings/require-login/route.js.nft.json +1 -1
  204. package/app/.next/server/app/api/settings/route.js +1 -1
  205. package/app/.next/server/app/api/settings/route.js.nft.json +1 -1
  206. package/app/.next/server/app/api/shutdown/route.js +1 -1
  207. package/app/.next/server/app/api/tags/route.js +1 -1
  208. package/app/.next/server/app/api/translator/console-logs/route.js +1 -1
  209. package/app/.next/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  210. package/app/.next/server/app/api/translator/console-logs/stream/route.js +2 -2
  211. package/app/.next/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  212. package/app/.next/server/app/api/translator/load/route.js +1 -1
  213. package/app/.next/server/app/api/translator/load/route.js.nft.json +1 -1
  214. package/app/.next/server/app/api/translator/save/route.js +1 -1
  215. package/app/.next/server/app/api/translator/save/route.js.nft.json +1 -1
  216. package/app/.next/server/app/api/translator/send/route.js +1 -1
  217. package/app/.next/server/app/api/translator/send/route.js.nft.json +1 -1
  218. package/app/.next/server/app/api/translator/translate/route.js +1 -1
  219. package/app/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
  220. package/app/.next/server/app/api/tunnel/disable/route.js +1 -1
  221. package/app/.next/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  222. package/app/.next/server/app/api/tunnel/enable/route.js +1 -1
  223. package/app/.next/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  224. package/app/.next/server/app/api/tunnel/status/route.js +1 -1
  225. package/app/.next/server/app/api/tunnel/status/route.js.nft.json +1 -1
  226. package/app/.next/server/app/api/tunnel/tailscale-check/route.js +15 -1
  227. package/app/.next/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  228. package/app/.next/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  229. package/app/.next/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  230. package/app/.next/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  231. package/app/.next/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  232. package/app/.next/server/app/api/tunnel/tailscale-install/route.js +3 -3
  233. package/app/.next/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  234. package/app/.next/server/app/api/tunnel/tailscale-login/route.js +15 -1
  235. package/app/.next/server/app/api/tunnel/tailscale-login/route.js.nft.json +1 -1
  236. package/app/.next/server/app/api/tunnel/tailscale-start-daemon/route.js +2 -2
  237. package/app/.next/server/app/api/tunnel/tailscale-start-daemon/route.js.nft.json +1 -1
  238. package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
  239. package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  240. package/app/.next/server/app/api/usage/chart/route.js +1 -1
  241. package/app/.next/server/app/api/usage/chart/route.js.nft.json +1 -1
  242. package/app/.next/server/app/api/usage/history/route.js +1 -1
  243. package/app/.next/server/app/api/usage/history/route.js.nft.json +1 -1
  244. package/app/.next/server/app/api/usage/providers/route.js +1 -1
  245. package/app/.next/server/app/api/usage/providers/route.js.nft.json +1 -1
  246. package/app/.next/server/app/api/usage/request-details/route.js +1 -1
  247. package/app/.next/server/app/api/usage/request-details/route.js.nft.json +1 -1
  248. package/app/.next/server/app/api/usage/request-logs/route.js +1 -1
  249. package/app/.next/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  250. package/app/.next/server/app/api/usage/stats/route.js +1 -1
  251. package/app/.next/server/app/api/usage/stats/route.js.nft.json +1 -1
  252. package/app/.next/server/app/api/usage/stream/route.js +2 -2
  253. package/app/.next/server/app/api/usage/stream/route.js.nft.json +1 -1
  254. package/app/.next/server/app/api/v1/api/chat/route.js +1 -1
  255. package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  256. package/app/.next/server/app/api/v1/audio/speech/route.js +1 -1
  257. package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  258. package/app/.next/server/app/api/v1/audio/transcriptions/route.js +1 -1
  259. package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  260. package/app/.next/server/app/api/v1/audio/voices/route.js +1 -1
  261. package/app/.next/server/app/api/v1/chat/completions/route.js +1 -1
  262. package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  263. package/app/.next/server/app/api/v1/embeddings/route.js +1 -1
  264. package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  265. package/app/.next/server/app/api/v1/images/generations/route.js +2 -2
  266. package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  267. package/app/.next/server/app/api/v1/messages/count_tokens/route.js +1 -1
  268. package/app/.next/server/app/api/v1/messages/route.js +1 -1
  269. package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
  270. package/app/.next/server/app/api/v1/models/[kind]/route.js +1 -1
  271. package/app/.next/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  272. package/app/.next/server/app/api/v1/models/info/route.js +1 -1
  273. package/app/.next/server/app/api/v1/models/info/route.js.nft.json +1 -1
  274. package/app/.next/server/app/api/v1/models/route.js +1 -1
  275. package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
  276. package/app/.next/server/app/api/v1/responses/compact/route.js +1 -1
  277. package/app/.next/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  278. package/app/.next/server/app/api/v1/responses/route.js +1 -1
  279. package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
  280. package/app/.next/server/app/api/v1/route.js +1 -1
  281. package/app/.next/server/app/api/v1/route.js.nft.json +1 -1
  282. package/app/.next/server/app/api/v1/search/route.js +1 -1
  283. package/app/.next/server/app/api/v1/search/route.js.nft.json +1 -1
  284. package/app/.next/server/app/api/v1/web/fetch/route.js +1 -1
  285. package/app/.next/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  286. package/app/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
  287. package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  288. package/app/.next/server/app/api/v1beta/models/route.js +1 -1
  289. package/app/.next/server/app/api/v1beta/models/route.js.nft.json +1 -1
  290. package/app/.next/server/app/api/version/route.js +1 -1
  291. package/app/.next/server/app/api/version/update/route.js +1 -1
  292. package/app/.next/server/app/api/version/update/route.js.nft.json +1 -1
  293. package/app/.next/server/app/callback/page.js +2 -2
  294. package/app/.next/server/app/callback/page.js.nft.json +1 -1
  295. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  296. package/app/.next/server/app/callback.html +1 -1
  297. package/app/.next/server/app/callback.rsc +22 -21
  298. package/app/.next/server/app/callback.segments/_full.segment.rsc +22 -21
  299. package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
  300. package/app/.next/server/app/callback.segments/_index.segment.rsc +7 -6
  301. package/app/.next/server/app/callback.segments/_tree.segment.rsc +2 -2
  302. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  303. package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
  304. package/app/.next/server/app/dashboard/basic-chat.html +1 -1
  305. package/app/.next/server/app/dashboard/basic-chat.rsc +20 -19
  306. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  307. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  308. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  309. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  310. package/app/.next/server/app/dashboard/basic-chat.segments/_full.segment.rsc +20 -19
  311. package/app/.next/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  312. package/app/.next/server/app/dashboard/basic-chat.segments/_index.segment.rsc +7 -6
  313. package/app/.next/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
  314. package/app/.next/server/app/dashboard/cli-tools.html +1 -1
  315. package/app/.next/server/app/dashboard/cli-tools.rsc +21 -20
  316. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  317. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  318. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  319. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  320. package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +21 -20
  321. package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  322. package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +7 -6
  323. package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  324. package/app/.next/server/app/dashboard/combos.html +1 -1
  325. package/app/.next/server/app/dashboard/combos.rsc +23 -22
  326. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  327. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  328. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  329. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  330. package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +23 -22
  331. package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  332. package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +7 -6
  333. package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  334. package/app/.next/server/app/dashboard/endpoint.html +1 -1
  335. package/app/.next/server/app/dashboard/endpoint.rsc +21 -20
  336. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  337. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  338. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  339. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  340. package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +21 -20
  341. package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  342. package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +7 -6
  343. package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  344. package/app/.next/server/app/dashboard/media-providers/web.html +1 -1
  345. package/app/.next/server/app/dashboard/media-providers/web.rsc +25 -22
  346. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  347. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  348. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  349. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  350. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  351. package/app/.next/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +25 -22
  352. package/app/.next/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  353. package/app/.next/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +7 -6
  354. package/app/.next/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
  355. package/app/.next/server/app/dashboard/mitm.html +1 -1
  356. package/app/.next/server/app/dashboard/mitm.rsc +20 -19
  357. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  358. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  359. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  360. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  361. package/app/.next/server/app/dashboard/mitm.segments/_full.segment.rsc +20 -19
  362. package/app/.next/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  363. package/app/.next/server/app/dashboard/mitm.segments/_index.segment.rsc +7 -6
  364. package/app/.next/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  365. package/app/.next/server/app/dashboard/profile.html +1 -1
  366. package/app/.next/server/app/dashboard/profile.rsc +24 -22
  367. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  368. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  369. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  370. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  371. package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +24 -22
  372. package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  373. package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +7 -6
  374. package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  375. package/app/.next/server/app/dashboard/providers/new.html +1 -1
  376. package/app/.next/server/app/dashboard/providers/new.rsc +25 -22
  377. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  378. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  379. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  380. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  381. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  382. package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +25 -22
  383. package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  384. package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +7 -6
  385. package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  386. package/app/.next/server/app/dashboard/providers.html +1 -1
  387. package/app/.next/server/app/dashboard/providers.rsc +24 -22
  388. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  389. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  390. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  391. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  392. package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +24 -22
  393. package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  394. package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +7 -6
  395. package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  396. package/app/.next/server/app/dashboard/proxy-pools.html +1 -1
  397. package/app/.next/server/app/dashboard/proxy-pools.rsc +24 -22
  398. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  399. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  400. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  401. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  402. package/app/.next/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +24 -22
  403. package/app/.next/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  404. package/app/.next/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +7 -6
  405. package/app/.next/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  406. package/app/.next/server/app/dashboard/quota.html +2 -2
  407. package/app/.next/server/app/dashboard/quota.rsc +21 -20
  408. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  409. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  410. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  411. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  412. package/app/.next/server/app/dashboard/quota.segments/_full.segment.rsc +21 -20
  413. package/app/.next/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  414. package/app/.next/server/app/dashboard/quota.segments/_index.segment.rsc +7 -6
  415. package/app/.next/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  416. package/app/.next/server/app/dashboard/settings/pricing/page.js +2 -2
  417. package/app/.next/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  418. package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  419. package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
  420. package/app/.next/server/app/dashboard/settings/pricing.rsc +22 -21
  421. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +22 -21
  422. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  423. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +7 -6
  424. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  425. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  426. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  427. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  428. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  429. package/app/.next/server/app/dashboard/skills.html +1 -1
  430. package/app/.next/server/app/dashboard/skills.rsc +23 -22
  431. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  432. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  433. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  434. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  435. package/app/.next/server/app/dashboard/skills.segments/_full.segment.rsc +23 -22
  436. package/app/.next/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  437. package/app/.next/server/app/dashboard/skills.segments/_index.segment.rsc +7 -6
  438. package/app/.next/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
  439. package/app/.next/server/app/dashboard/translator.html +1 -1
  440. package/app/.next/server/app/dashboard/translator.rsc +24 -22
  441. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  442. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  443. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  444. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  445. package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +24 -22
  446. package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  447. package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +7 -6
  448. package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  449. package/app/.next/server/app/dashboard/usage.html +1 -1
  450. package/app/.next/server/app/dashboard/usage.rsc +23 -22
  451. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  452. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  453. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  454. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  455. package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +23 -22
  456. package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  457. package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +7 -6
  458. package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  459. package/app/.next/server/app/dashboard.html +1 -1
  460. package/app/.next/server/app/dashboard.rsc +21 -20
  461. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  462. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  463. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  464. package/app/.next/server/app/dashboard.segments/_full.segment.rsc +21 -20
  465. package/app/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
  466. package/app/.next/server/app/dashboard.segments/_index.segment.rsc +7 -6
  467. package/app/.next/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  468. package/app/.next/server/app/favicon.ico/route.js +1 -1
  469. package/app/.next/server/app/index.html +1 -1
  470. package/app/.next/server/app/index.rsc +17 -16
  471. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  472. package/app/.next/server/app/index.segments/_full.segment.rsc +17 -16
  473. package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
  474. package/app/.next/server/app/index.segments/_index.segment.rsc +7 -6
  475. package/app/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  476. package/app/.next/server/app/landing/page.js +2 -2
  477. package/app/.next/server/app/landing/page.js.nft.json +1 -1
  478. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  479. package/app/.next/server/app/landing.html +1 -1
  480. package/app/.next/server/app/landing.rsc +22 -21
  481. package/app/.next/server/app/landing.segments/_full.segment.rsc +22 -21
  482. package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
  483. package/app/.next/server/app/landing.segments/_index.segment.rsc +7 -6
  484. package/app/.next/server/app/landing.segments/_tree.segment.rsc +2 -2
  485. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +2 -2
  486. package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
  487. package/app/.next/server/app/login/page.js +2 -2
  488. package/app/.next/server/app/login/page.js.nft.json +1 -1
  489. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  490. package/app/.next/server/app/login.html +1 -1
  491. package/app/.next/server/app/login.rsc +22 -21
  492. package/app/.next/server/app/login.segments/_full.segment.rsc +22 -21
  493. package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
  494. package/app/.next/server/app/login.segments/_index.segment.rsc +7 -6
  495. package/app/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  496. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  497. package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
  498. package/app/.next/server/app/manifest.webmanifest/route.js +2 -2
  499. package/app/.next/server/app/page.js +2 -2
  500. package/app/.next/server/app/page.js.nft.json +1 -1
  501. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  502. package/app/.next/server/app-paths-manifest.json +8 -6
  503. package/app/.next/server/chunks/1249.js +1 -1
  504. package/app/.next/server/chunks/1301.js +1 -1
  505. package/app/.next/server/chunks/1574.js +2 -2
  506. package/app/.next/server/chunks/1578.js +1 -1
  507. package/app/.next/server/chunks/2049.js +1 -1
  508. package/app/.next/server/chunks/21.js +1 -1
  509. package/app/.next/server/chunks/2212.js +32 -0
  510. package/app/.next/server/chunks/3630.js +9 -0
  511. package/app/.next/server/chunks/3774.js +3 -3
  512. package/app/.next/server/chunks/4116.js +1 -0
  513. package/app/.next/server/chunks/450.js +2 -2
  514. package/app/.next/server/chunks/4839.js +1 -0
  515. package/app/.next/server/chunks/4892.js +13 -0
  516. package/app/.next/server/chunks/5159.js +1 -0
  517. package/app/.next/server/chunks/5221.js +1 -1
  518. package/app/.next/server/chunks/5445.js +1 -0
  519. package/app/.next/server/chunks/586.js +1 -1
  520. package/app/.next/server/chunks/593.js +9 -0
  521. package/app/.next/server/chunks/6263.js +14 -0
  522. package/app/.next/server/chunks/6283.js +1 -0
  523. package/app/.next/server/chunks/6379.js +1 -1
  524. package/app/.next/server/chunks/6502.js +9 -0
  525. package/app/.next/server/chunks/6890.js +3 -3
  526. package/app/.next/server/chunks/7061.js +9 -0
  527. package/app/.next/server/chunks/7171.js +9 -0
  528. package/app/.next/server/chunks/7301.js +1 -0
  529. package/app/.next/server/chunks/7810.js +1 -0
  530. package/app/.next/server/chunks/8035.js +1 -1
  531. package/app/.next/server/chunks/8202.js +7 -16
  532. package/app/.next/server/chunks/8367.js +29 -0
  533. package/app/.next/server/chunks/8647.js +1 -0
  534. package/app/.next/server/chunks/9060.js +9 -0
  535. package/app/.next/server/chunks/9737.js +1 -0
  536. package/app/.next/server/middleware-build-manifest.js +1 -1
  537. package/app/.next/server/middleware.js +12 -4
  538. package/app/.next/server/pages/404.html +1 -1
  539. package/app/.next/server/pages/500.html +1 -1
  540. package/app/.next/server/server-reference-manifest.js +1 -1
  541. package/app/.next/server/server-reference-manifest.json +1 -1
  542. package/app/.next/static/chunks/1939-5f1c000b260c0698.js +23 -0
  543. package/app/.next/static/chunks/4156-773921135dfe2c75.js +7 -0
  544. package/app/.next/static/chunks/505-cb7fd622c7ae02af.js +1 -0
  545. package/app/.next/static/chunks/8035-c87b74c7e1a7cf78.js +3 -0
  546. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-8ff504b85ad321a1.js +1 -0
  547. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/{page-82f41d609dfb2f59.js → page-015ed627bb40b0d1.js} +12 -12
  548. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/page-7a43c4f097f69c0b.js +1 -0
  549. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/{page-29ce6662637d64e4.js → page-7890b74e481f9d92.js} +1 -1
  550. package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/page-d632fe470928df04.js +1 -0
  551. package/app/.next/static/chunks/app/(dashboard)/{layout-14ad56e827498f3d.js → layout-dca35f311527549c.js} +1 -1
  552. package/app/.next/static/chunks/app/_global-error/page-20fa0affdf8859be.js +1 -0
  553. package/app/.next/static/chunks/app/api/auth/login/route-20fa0affdf8859be.js +1 -0
  554. package/app/.next/static/chunks/app/api/auth/logout/route-20fa0affdf8859be.js +1 -0
  555. package/app/.next/static/chunks/app/api/cli-tools/all-statuses/route-20fa0affdf8859be.js +1 -0
  556. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-20fa0affdf8859be.js +1 -0
  557. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-20fa0affdf8859be.js +1 -0
  558. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-20fa0affdf8859be.js +1 -0
  559. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-20fa0affdf8859be.js +1 -0
  560. package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-20fa0affdf8859be.js +1 -0
  561. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-20fa0affdf8859be.js +1 -0
  562. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-20fa0affdf8859be.js +1 -0
  563. package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-20fa0affdf8859be.js +1 -0
  564. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-20fa0affdf8859be.js +1 -0
  565. package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-20fa0affdf8859be.js +1 -0
  566. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-20fa0affdf8859be.js +1 -0
  567. package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-20fa0affdf8859be.js +1 -0
  568. package/app/.next/static/chunks/app/api/cloud/auth/route-20fa0affdf8859be.js +1 -0
  569. package/app/.next/static/chunks/app/api/cloud/credentials/update/route-20fa0affdf8859be.js +1 -0
  570. package/app/.next/static/chunks/app/api/cloud/model/resolve/route-20fa0affdf8859be.js +1 -0
  571. package/app/.next/static/chunks/app/api/cloud/models/alias/route-20fa0affdf8859be.js +1 -0
  572. package/app/.next/static/chunks/app/api/combos/[id]/route-20fa0affdf8859be.js +1 -0
  573. package/app/.next/static/chunks/app/api/combos/route-20fa0affdf8859be.js +1 -0
  574. package/app/.next/static/chunks/app/api/health/route-20fa0affdf8859be.js +1 -0
  575. package/app/.next/static/chunks/app/api/init/route-20fa0affdf8859be.js +1 -0
  576. package/app/.next/static/chunks/app/api/keys/[id]/route-20fa0affdf8859be.js +1 -0
  577. package/app/.next/static/chunks/app/api/keys/route-20fa0affdf8859be.js +1 -0
  578. package/app/.next/static/chunks/app/api/locale/route-20fa0affdf8859be.js +1 -0
  579. package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-20fa0affdf8859be.js +1 -0
  580. package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-20fa0affdf8859be.js +1 -0
  581. package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-20fa0affdf8859be.js +1 -0
  582. package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-20fa0affdf8859be.js +1 -0
  583. package/app/.next/static/chunks/app/api/models/alias/route-20fa0affdf8859be.js +1 -0
  584. package/app/.next/static/chunks/app/api/models/availability/route-20fa0affdf8859be.js +1 -0
  585. package/app/.next/static/chunks/app/api/models/custom/route-20fa0affdf8859be.js +1 -0
  586. package/app/.next/static/chunks/app/api/models/disabled/route-20fa0affdf8859be.js +1 -0
  587. package/app/.next/static/chunks/app/api/models/route-20fa0affdf8859be.js +1 -0
  588. package/app/.next/static/chunks/app/api/models/test/route-20fa0affdf8859be.js +1 -0
  589. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-20fa0affdf8859be.js +1 -0
  590. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-20fa0affdf8859be.js +1 -0
  591. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-20fa0affdf8859be.js +1 -0
  592. package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-20fa0affdf8859be.js +1 -0
  593. package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-20fa0affdf8859be.js +1 -0
  594. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-20fa0affdf8859be.js +1 -0
  595. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-20fa0affdf8859be.js +1 -0
  596. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-20fa0affdf8859be.js +1 -0
  597. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-20fa0affdf8859be.js +1 -0
  598. package/app/.next/static/chunks/app/api/pricing/route-20fa0affdf8859be.js +1 -0
  599. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-20fa0affdf8859be.js +1 -0
  600. package/app/.next/static/chunks/app/api/provider-nodes/route-20fa0affdf8859be.js +1 -0
  601. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-20fa0affdf8859be.js +1 -0
  602. package/app/.next/static/chunks/app/api/providers/[id]/models/route-20fa0affdf8859be.js +1 -0
  603. package/app/.next/static/chunks/app/api/providers/[id]/route-20fa0affdf8859be.js +1 -0
  604. package/app/.next/static/chunks/app/api/providers/[id]/test/route-20fa0affdf8859be.js +1 -0
  605. package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-20fa0affdf8859be.js +1 -0
  606. package/app/.next/static/chunks/app/api/providers/client/route-20fa0affdf8859be.js +1 -0
  607. package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-20fa0affdf8859be.js +1 -0
  608. package/app/.next/static/chunks/app/api/providers/route-20fa0affdf8859be.js +1 -0
  609. package/app/.next/static/chunks/app/api/providers/suggested-models/route-20fa0affdf8859be.js +1 -0
  610. package/app/.next/static/chunks/app/api/providers/test-batch/route-20fa0affdf8859be.js +1 -0
  611. package/app/.next/static/chunks/app/api/providers/validate/route-20fa0affdf8859be.js +1 -0
  612. package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-20fa0affdf8859be.js +1 -0
  613. package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-20fa0affdf8859be.js +1 -0
  614. package/app/.next/static/chunks/app/api/proxy-pools/route-20fa0affdf8859be.js +1 -0
  615. package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-20fa0affdf8859be.js +1 -0
  616. package/app/.next/static/chunks/app/api/settings/database/route-20fa0affdf8859be.js +1 -0
  617. package/app/.next/static/chunks/app/api/settings/proxy-test/route-20fa0affdf8859be.js +1 -0
  618. package/app/.next/static/chunks/app/api/settings/require-login/route-20fa0affdf8859be.js +1 -0
  619. package/app/.next/static/chunks/app/api/settings/route-20fa0affdf8859be.js +1 -0
  620. package/app/.next/static/chunks/app/api/shutdown/route-20fa0affdf8859be.js +1 -0
  621. package/app/.next/static/chunks/app/api/tags/route-20fa0affdf8859be.js +1 -0
  622. package/app/.next/static/chunks/app/api/translator/console-logs/route-20fa0affdf8859be.js +1 -0
  623. package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-20fa0affdf8859be.js +1 -0
  624. package/app/.next/static/chunks/app/api/translator/load/route-20fa0affdf8859be.js +1 -0
  625. package/app/.next/static/chunks/app/api/translator/save/route-20fa0affdf8859be.js +1 -0
  626. package/app/.next/static/chunks/app/api/translator/send/route-20fa0affdf8859be.js +1 -0
  627. package/app/.next/static/chunks/app/api/translator/translate/route-20fa0affdf8859be.js +1 -0
  628. package/app/.next/static/chunks/app/api/tunnel/disable/route-20fa0affdf8859be.js +1 -0
  629. package/app/.next/static/chunks/app/api/tunnel/enable/route-20fa0affdf8859be.js +1 -0
  630. package/app/.next/static/chunks/app/api/tunnel/status/route-20fa0affdf8859be.js +1 -0
  631. package/app/.next/static/chunks/app/api/tunnel/tailscale-check/route-20fa0affdf8859be.js +1 -0
  632. package/app/.next/static/chunks/app/api/tunnel/tailscale-disable/route-20fa0affdf8859be.js +1 -0
  633. package/app/.next/static/chunks/app/api/tunnel/tailscale-enable/route-20fa0affdf8859be.js +1 -0
  634. package/app/.next/static/chunks/app/api/tunnel/tailscale-install/route-20fa0affdf8859be.js +1 -0
  635. package/app/.next/static/chunks/app/api/tunnel/tailscale-login/route-20fa0affdf8859be.js +1 -0
  636. package/app/.next/static/chunks/app/api/tunnel/tailscale-start-daemon/route-20fa0affdf8859be.js +1 -0
  637. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-20fa0affdf8859be.js +1 -0
  638. package/app/.next/static/chunks/app/api/usage/chart/route-20fa0affdf8859be.js +1 -0
  639. package/app/.next/static/chunks/app/api/usage/history/route-20fa0affdf8859be.js +1 -0
  640. package/app/.next/static/chunks/app/api/usage/providers/route-20fa0affdf8859be.js +1 -0
  641. package/app/.next/static/chunks/app/api/usage/request-details/route-20fa0affdf8859be.js +1 -0
  642. package/app/.next/static/chunks/app/api/usage/request-logs/route-20fa0affdf8859be.js +1 -0
  643. package/app/.next/static/chunks/app/api/usage/stats/route-20fa0affdf8859be.js +1 -0
  644. package/app/.next/static/chunks/app/api/usage/stream/route-20fa0affdf8859be.js +1 -0
  645. package/app/.next/static/chunks/app/api/v1/api/chat/route-20fa0affdf8859be.js +1 -0
  646. package/app/.next/static/chunks/app/api/v1/audio/speech/route-20fa0affdf8859be.js +1 -0
  647. package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-20fa0affdf8859be.js +1 -0
  648. package/app/.next/static/chunks/app/api/v1/audio/voices/route-20fa0affdf8859be.js +1 -0
  649. package/app/.next/static/chunks/app/api/v1/chat/completions/route-20fa0affdf8859be.js +1 -0
  650. package/app/.next/static/chunks/app/api/v1/embeddings/route-20fa0affdf8859be.js +1 -0
  651. package/app/.next/static/chunks/app/api/v1/images/generations/route-20fa0affdf8859be.js +1 -0
  652. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-20fa0affdf8859be.js +1 -0
  653. package/app/.next/static/chunks/app/api/v1/messages/route-20fa0affdf8859be.js +1 -0
  654. package/app/.next/static/chunks/app/api/v1/models/[kind]/route-20fa0affdf8859be.js +1 -0
  655. package/app/.next/static/chunks/app/api/v1/models/info/route-20fa0affdf8859be.js +1 -0
  656. package/app/.next/static/chunks/app/api/v1/models/route-20fa0affdf8859be.js +1 -0
  657. package/app/.next/static/chunks/app/api/v1/responses/compact/route-20fa0affdf8859be.js +1 -0
  658. package/app/.next/static/chunks/app/api/v1/responses/route-20fa0affdf8859be.js +1 -0
  659. package/app/.next/static/chunks/app/api/v1/route-20fa0affdf8859be.js +1 -0
  660. package/app/.next/static/chunks/app/api/v1/search/route-20fa0affdf8859be.js +1 -0
  661. package/app/.next/static/chunks/app/api/v1/web/fetch/route-20fa0affdf8859be.js +1 -0
  662. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-20fa0affdf8859be.js +1 -0
  663. package/app/.next/static/chunks/app/api/v1beta/models/route-20fa0affdf8859be.js +1 -0
  664. package/app/.next/static/chunks/app/api/version/route-20fa0affdf8859be.js +1 -0
  665. package/app/.next/static/chunks/app/api/version/update/route-20fa0affdf8859be.js +1 -0
  666. package/app/.next/static/chunks/app/landing/{page-297a1c9230927b6f.js → page-34e119eac6b7e1a4.js} +1 -1
  667. package/app/.next/static/chunks/app/manifest.webmanifest/route-20fa0affdf8859be.js +1 -0
  668. package/app/.next/static/chunks/app/page-20fa0affdf8859be.js +1 -0
  669. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-20fa0affdf8859be.js +1 -0
  670. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-20fa0affdf8859be.js +1 -0
  671. package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-20fa0affdf8859be.js +1 -0
  672. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-20fa0affdf8859be.js +1 -0
  673. package/app/.next/static/css/5d8cd780e73c8876.css +1 -0
  674. package/app/.next/static/kiS7vH5c59DJK3b2ti1jN/_buildManifest.js +1 -0
  675. package/app/package.json +3 -4
  676. package/app/public/providers/commandcode.png +0 -0
  677. package/app/src/lib/db/adapters/betterSqliteAdapter.js +55 -0
  678. package/app/src/lib/db/adapters/sqljsAdapter.js +114 -0
  679. package/app/src/lib/db/migrate.js +248 -0
  680. package/app/src/mitm/server.js +43 -41
  681. package/cli.js +3 -3
  682. package/package.json +1 -1
  683. package/app/.next/server/chunks/126.js +0 -2
  684. package/app/.next/server/chunks/2141.js +0 -1
  685. package/app/.next/server/chunks/2503.js +0 -15
  686. package/app/.next/server/chunks/253.js +0 -1
  687. package/app/.next/server/chunks/2566.js +0 -1
  688. package/app/.next/server/chunks/3656.js +0 -1
  689. package/app/.next/server/chunks/514.js +0 -15
  690. package/app/.next/server/chunks/6782.js +0 -1
  691. package/app/.next/server/chunks/7770.js +0 -1
  692. package/app/.next/server/chunks/8193.js +0 -1
  693. package/app/.next/server/chunks/8515.js +0 -1
  694. package/app/.next/server/chunks/8525.js +0 -1
  695. package/app/.next/server/chunks/8710.js +0 -1
  696. package/app/.next/static/9OjWTX0ytTCDd5CT8o5t1/_buildManifest.js +0 -1
  697. package/app/.next/static/chunks/1939-b2a5b6699b8bf3d5.js +0 -23
  698. package/app/.next/static/chunks/4156-cc8090a3b79e0545.js +0 -7
  699. package/app/.next/static/chunks/505-3794c7277120b05a.js +0 -1
  700. package/app/.next/static/chunks/8035-1f56df5774b5cc34.js +0 -3
  701. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-a6fe1644188a6348.js +0 -1
  702. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/page-5cb5ae93c4288788.js +0 -1
  703. package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/page-1c3e2ce342940999.js +0 -1
  704. package/app/.next/static/chunks/app/_global-error/page-23420dc99d53d479.js +0 -1
  705. package/app/.next/static/chunks/app/api/auth/login/route-23420dc99d53d479.js +0 -1
  706. package/app/.next/static/chunks/app/api/auth/logout/route-23420dc99d53d479.js +0 -1
  707. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-23420dc99d53d479.js +0 -1
  708. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-23420dc99d53d479.js +0 -1
  709. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-23420dc99d53d479.js +0 -1
  710. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-23420dc99d53d479.js +0 -1
  711. package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-23420dc99d53d479.js +0 -1
  712. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-23420dc99d53d479.js +0 -1
  713. package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-23420dc99d53d479.js +0 -1
  714. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-23420dc99d53d479.js +0 -1
  715. package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-23420dc99d53d479.js +0 -1
  716. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-23420dc99d53d479.js +0 -1
  717. package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-23420dc99d53d479.js +0 -1
  718. package/app/.next/static/chunks/app/api/cloud/auth/route-23420dc99d53d479.js +0 -1
  719. package/app/.next/static/chunks/app/api/cloud/credentials/update/route-23420dc99d53d479.js +0 -1
  720. package/app/.next/static/chunks/app/api/cloud/model/resolve/route-23420dc99d53d479.js +0 -1
  721. package/app/.next/static/chunks/app/api/cloud/models/alias/route-23420dc99d53d479.js +0 -1
  722. package/app/.next/static/chunks/app/api/combos/[id]/route-23420dc99d53d479.js +0 -1
  723. package/app/.next/static/chunks/app/api/combos/route-23420dc99d53d479.js +0 -1
  724. package/app/.next/static/chunks/app/api/health/route-23420dc99d53d479.js +0 -1
  725. package/app/.next/static/chunks/app/api/init/route-23420dc99d53d479.js +0 -1
  726. package/app/.next/static/chunks/app/api/keys/[id]/route-23420dc99d53d479.js +0 -1
  727. package/app/.next/static/chunks/app/api/keys/route-23420dc99d53d479.js +0 -1
  728. package/app/.next/static/chunks/app/api/locale/route-23420dc99d53d479.js +0 -1
  729. package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-23420dc99d53d479.js +0 -1
  730. package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-23420dc99d53d479.js +0 -1
  731. package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-23420dc99d53d479.js +0 -1
  732. package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-23420dc99d53d479.js +0 -1
  733. package/app/.next/static/chunks/app/api/models/alias/route-23420dc99d53d479.js +0 -1
  734. package/app/.next/static/chunks/app/api/models/availability/route-23420dc99d53d479.js +0 -1
  735. package/app/.next/static/chunks/app/api/models/custom/route-23420dc99d53d479.js +0 -1
  736. package/app/.next/static/chunks/app/api/models/disabled/route-23420dc99d53d479.js +0 -1
  737. package/app/.next/static/chunks/app/api/models/route-23420dc99d53d479.js +0 -1
  738. package/app/.next/static/chunks/app/api/models/test/route-23420dc99d53d479.js +0 -1
  739. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-23420dc99d53d479.js +0 -1
  740. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-23420dc99d53d479.js +0 -1
  741. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-23420dc99d53d479.js +0 -1
  742. package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-23420dc99d53d479.js +0 -1
  743. package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-23420dc99d53d479.js +0 -1
  744. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-23420dc99d53d479.js +0 -1
  745. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-23420dc99d53d479.js +0 -1
  746. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-23420dc99d53d479.js +0 -1
  747. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-23420dc99d53d479.js +0 -1
  748. package/app/.next/static/chunks/app/api/pricing/route-23420dc99d53d479.js +0 -1
  749. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-23420dc99d53d479.js +0 -1
  750. package/app/.next/static/chunks/app/api/provider-nodes/route-23420dc99d53d479.js +0 -1
  751. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-23420dc99d53d479.js +0 -1
  752. package/app/.next/static/chunks/app/api/providers/[id]/models/route-23420dc99d53d479.js +0 -1
  753. package/app/.next/static/chunks/app/api/providers/[id]/route-23420dc99d53d479.js +0 -1
  754. package/app/.next/static/chunks/app/api/providers/[id]/test/route-23420dc99d53d479.js +0 -1
  755. package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-23420dc99d53d479.js +0 -1
  756. package/app/.next/static/chunks/app/api/providers/client/route-23420dc99d53d479.js +0 -1
  757. package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-23420dc99d53d479.js +0 -1
  758. package/app/.next/static/chunks/app/api/providers/route-23420dc99d53d479.js +0 -1
  759. package/app/.next/static/chunks/app/api/providers/suggested-models/route-23420dc99d53d479.js +0 -1
  760. package/app/.next/static/chunks/app/api/providers/test-batch/route-23420dc99d53d479.js +0 -1
  761. package/app/.next/static/chunks/app/api/providers/validate/route-23420dc99d53d479.js +0 -1
  762. package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-23420dc99d53d479.js +0 -1
  763. package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-23420dc99d53d479.js +0 -1
  764. package/app/.next/static/chunks/app/api/proxy-pools/route-23420dc99d53d479.js +0 -1
  765. package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-23420dc99d53d479.js +0 -1
  766. package/app/.next/static/chunks/app/api/settings/database/route-23420dc99d53d479.js +0 -1
  767. package/app/.next/static/chunks/app/api/settings/proxy-test/route-23420dc99d53d479.js +0 -1
  768. package/app/.next/static/chunks/app/api/settings/require-login/route-23420dc99d53d479.js +0 -1
  769. package/app/.next/static/chunks/app/api/settings/route-23420dc99d53d479.js +0 -1
  770. package/app/.next/static/chunks/app/api/shutdown/route-23420dc99d53d479.js +0 -1
  771. package/app/.next/static/chunks/app/api/tags/route-23420dc99d53d479.js +0 -1
  772. package/app/.next/static/chunks/app/api/translator/console-logs/route-23420dc99d53d479.js +0 -1
  773. package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-23420dc99d53d479.js +0 -1
  774. package/app/.next/static/chunks/app/api/translator/load/route-23420dc99d53d479.js +0 -1
  775. package/app/.next/static/chunks/app/api/translator/save/route-23420dc99d53d479.js +0 -1
  776. package/app/.next/static/chunks/app/api/translator/send/route-23420dc99d53d479.js +0 -1
  777. package/app/.next/static/chunks/app/api/translator/translate/route-23420dc99d53d479.js +0 -1
  778. package/app/.next/static/chunks/app/api/tunnel/disable/route-23420dc99d53d479.js +0 -1
  779. package/app/.next/static/chunks/app/api/tunnel/enable/route-23420dc99d53d479.js +0 -1
  780. package/app/.next/static/chunks/app/api/tunnel/status/route-23420dc99d53d479.js +0 -1
  781. package/app/.next/static/chunks/app/api/tunnel/tailscale-check/route-23420dc99d53d479.js +0 -1
  782. package/app/.next/static/chunks/app/api/tunnel/tailscale-disable/route-23420dc99d53d479.js +0 -1
  783. package/app/.next/static/chunks/app/api/tunnel/tailscale-enable/route-23420dc99d53d479.js +0 -1
  784. package/app/.next/static/chunks/app/api/tunnel/tailscale-install/route-23420dc99d53d479.js +0 -1
  785. package/app/.next/static/chunks/app/api/tunnel/tailscale-login/route-23420dc99d53d479.js +0 -1
  786. package/app/.next/static/chunks/app/api/tunnel/tailscale-start-daemon/route-23420dc99d53d479.js +0 -1
  787. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-23420dc99d53d479.js +0 -1
  788. package/app/.next/static/chunks/app/api/usage/chart/route-23420dc99d53d479.js +0 -1
  789. package/app/.next/static/chunks/app/api/usage/history/route-23420dc99d53d479.js +0 -1
  790. package/app/.next/static/chunks/app/api/usage/providers/route-23420dc99d53d479.js +0 -1
  791. package/app/.next/static/chunks/app/api/usage/request-details/route-23420dc99d53d479.js +0 -1
  792. package/app/.next/static/chunks/app/api/usage/request-logs/route-23420dc99d53d479.js +0 -1
  793. package/app/.next/static/chunks/app/api/usage/stats/route-23420dc99d53d479.js +0 -1
  794. package/app/.next/static/chunks/app/api/usage/stream/route-23420dc99d53d479.js +0 -1
  795. package/app/.next/static/chunks/app/api/v1/api/chat/route-23420dc99d53d479.js +0 -1
  796. package/app/.next/static/chunks/app/api/v1/audio/speech/route-23420dc99d53d479.js +0 -1
  797. package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-23420dc99d53d479.js +0 -1
  798. package/app/.next/static/chunks/app/api/v1/audio/voices/route-23420dc99d53d479.js +0 -1
  799. package/app/.next/static/chunks/app/api/v1/chat/completions/route-23420dc99d53d479.js +0 -1
  800. package/app/.next/static/chunks/app/api/v1/embeddings/route-23420dc99d53d479.js +0 -1
  801. package/app/.next/static/chunks/app/api/v1/images/generations/route-23420dc99d53d479.js +0 -1
  802. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-23420dc99d53d479.js +0 -1
  803. package/app/.next/static/chunks/app/api/v1/messages/route-23420dc99d53d479.js +0 -1
  804. package/app/.next/static/chunks/app/api/v1/models/[kind]/route-23420dc99d53d479.js +0 -1
  805. package/app/.next/static/chunks/app/api/v1/models/info/route-23420dc99d53d479.js +0 -1
  806. package/app/.next/static/chunks/app/api/v1/models/route-23420dc99d53d479.js +0 -1
  807. package/app/.next/static/chunks/app/api/v1/responses/compact/route-23420dc99d53d479.js +0 -1
  808. package/app/.next/static/chunks/app/api/v1/responses/route-23420dc99d53d479.js +0 -1
  809. package/app/.next/static/chunks/app/api/v1/route-23420dc99d53d479.js +0 -1
  810. package/app/.next/static/chunks/app/api/v1/search/route-23420dc99d53d479.js +0 -1
  811. package/app/.next/static/chunks/app/api/v1/web/fetch/route-23420dc99d53d479.js +0 -1
  812. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-23420dc99d53d479.js +0 -1
  813. package/app/.next/static/chunks/app/api/v1beta/models/route-23420dc99d53d479.js +0 -1
  814. package/app/.next/static/chunks/app/api/version/route-23420dc99d53d479.js +0 -1
  815. package/app/.next/static/chunks/app/api/version/update/route-23420dc99d53d479.js +0 -1
  816. package/app/.next/static/chunks/app/manifest.webmanifest/route-23420dc99d53d479.js +0 -1
  817. package/app/.next/static/chunks/app/page-23420dc99d53d479.js +0 -1
  818. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-23420dc99d53d479.js +0 -1
  819. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-23420dc99d53d479.js +0 -1
  820. package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-23420dc99d53d479.js +0 -1
  821. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-23420dc99d53d479.js +0 -1
  822. package/app/.next/static/css/085ed641ab718f9b.css +0 -1
  823. /package/app/.next/static/{9OjWTX0ytTCDd5CT8o5t1 → kiS7vH5c59DJK3b2ti1jN}/_ssgManifest.js +0 -0
@@ -0,0 +1,114 @@
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
+ db.exec("BEGIN");
90
+ try {
91
+ const result = fn();
92
+ db.exec("COMMIT");
93
+ scheduleSave();
94
+ return result;
95
+ } catch (e) {
96
+ db.exec("ROLLBACK");
97
+ throw e;
98
+ }
99
+ }
100
+
101
+ function close() {
102
+ if (saveTimer) clearTimeout(saveTimer);
103
+ if (dirty) persist();
104
+ db.close();
105
+ }
106
+
107
+ // Flush on shutdown
108
+ const flush = () => { if (dirty) try { persist(); } catch {} };
109
+ process.on("beforeExit", flush);
110
+ process.on("SIGINT", flush);
111
+ process.on("SIGTERM", flush);
112
+
113
+ return { driver: "sql.js", run, get, all, exec, transaction, close, raw: db };
114
+ }
@@ -0,0 +1,248 @@
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
+ function readJsonSafe(file) {
18
+ if (!fs.existsSync(file)) return null;
19
+ try { return JSON.parse(fs.readFileSync(file, "utf-8")); } catch { return null; }
20
+ }
21
+
22
+ function isFreshDb(adapter) {
23
+ // Table _meta may not exist yet on truly fresh DB
24
+ try {
25
+ const row = adapter.get(`SELECT COUNT(*) as c FROM _meta`);
26
+ return !row || row.c === 0;
27
+ } catch {
28
+ return true;
29
+ }
30
+ }
31
+
32
+ // ─── Versioned migrations runner (skip-version safe) ─────────────────────
33
+ function runVersionedMigrations(adapter) {
34
+ // Bootstrap _meta first so we can read schemaVersion
35
+ adapter.exec(buildCreateTableSql("_meta", TABLES._meta));
36
+
37
+ const current = parseInt(getMetaSync(adapter, "schemaVersion", "0"), 10) || 0;
38
+ const target = latestVersion();
39
+ if (current >= target) return { applied: 0, from: current, to: current };
40
+
41
+ const pending = MIGRATIONS.filter((m) => m.version > current);
42
+ let lastApplied = current;
43
+ for (const m of pending) {
44
+ adapter.transaction(() => {
45
+ m.up(adapter);
46
+ setMetaSync(adapter, "schemaVersion", m.version);
47
+ });
48
+ lastApplied = m.version;
49
+ console.log(`[DB][migrate] applied #${m.version} ${m.name}`);
50
+ }
51
+ return { applied: pending.length, from: current, to: lastApplied };
52
+ }
53
+
54
+ // ─── Auto-sync (additive only): add missing tables/columns/indexes ───────
55
+ function syncSchemaFromTables(adapter) {
56
+ for (const [tableName, def] of Object.entries(TABLES)) {
57
+ // Create table if absent
58
+ adapter.exec(buildCreateTableSql(tableName, def));
59
+
60
+ // Diff columns
61
+ const existing = adapter.all(`PRAGMA table_info(${tableName})`);
62
+ const existingNames = new Set(existing.map((r) => r.name));
63
+ for (const [colName, colDef] of Object.entries(def.columns)) {
64
+ if (!existingNames.has(colName)) {
65
+ // SQLite ADD COLUMN restrictions: no PRIMARY KEY / UNIQUE w/o NULL ok.
66
+ // We strip PRIMARY KEY / UNIQUE since those are only valid at create time.
67
+ const safeDef = colDef
68
+ .replace(/PRIMARY KEY( AUTOINCREMENT)?/i, "")
69
+ .replace(/UNIQUE/i, "")
70
+ .trim();
71
+ try {
72
+ adapter.exec(`ALTER TABLE ${tableName} ADD COLUMN ${colName} ${safeDef}`);
73
+ console.log(`[DB][sync] +column ${tableName}.${colName}`);
74
+ } catch (e) {
75
+ console.warn(`[DB][sync] add column ${tableName}.${colName} failed: ${e.message}`);
76
+ }
77
+ }
78
+ }
79
+
80
+ // Indexes (idempotent)
81
+ for (const idx of def.indexes || []) {
82
+ try { adapter.exec(idx); } catch {}
83
+ }
84
+ }
85
+ }
86
+
87
+ // ─── Legacy JSON import (one-time) ───────────────────────────────────────
88
+ function importLegacyMain(adapter, data) {
89
+ if (!data || typeof data !== "object") return;
90
+
91
+ if (data.settings) {
92
+ adapter.run(`INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data`, [stringifyJson(data.settings)]);
93
+ }
94
+ for (const c of data.providerConnections || []) {
95
+ const { id, provider, authType, name, email, priority, isActive, createdAt, updatedAt, ...rest } = c;
96
+ adapter.run(
97
+ `INSERT OR REPLACE INTO providerConnections(id, provider, authType, name, email, priority, isActive, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
98
+ [id, provider, authType || "oauth", name || null, email || null, priority || null, isActive === false ? 0 : 1, stringifyJson(rest), createdAt || new Date().toISOString(), updatedAt || new Date().toISOString()]
99
+ );
100
+ }
101
+ for (const n of data.providerNodes || []) {
102
+ const { id, type, name, createdAt, updatedAt, ...rest } = n;
103
+ adapter.run(
104
+ `INSERT OR REPLACE INTO providerNodes(id, type, name, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)`,
105
+ [id, type || null, name || null, stringifyJson(rest), createdAt || new Date().toISOString(), updatedAt || new Date().toISOString()]
106
+ );
107
+ }
108
+ for (const p of data.proxyPools || []) {
109
+ const { id, isActive, testStatus, createdAt, updatedAt, ...rest } = p;
110
+ adapter.run(
111
+ `INSERT OR REPLACE INTO proxyPools(id, isActive, testStatus, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)`,
112
+ [id, isActive === false ? 0 : 1, testStatus || "unknown", stringifyJson(rest), createdAt || new Date().toISOString(), updatedAt || new Date().toISOString()]
113
+ );
114
+ }
115
+ for (const k of data.apiKeys || []) {
116
+ adapter.run(
117
+ `INSERT OR REPLACE INTO apiKeys(id, key, name, machineId, isActive, createdAt) VALUES(?, ?, ?, ?, ?, ?)`,
118
+ [k.id, k.key, k.name || null, k.machineId || null, k.isActive === false ? 0 : 1, k.createdAt || new Date().toISOString()]
119
+ );
120
+ }
121
+ for (const c of data.combos || []) {
122
+ adapter.run(
123
+ `INSERT OR REPLACE INTO combos(id, name, kind, models, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)`,
124
+ [c.id, c.name, c.kind || null, stringifyJson(c.models || []), c.createdAt || new Date().toISOString(), c.updatedAt || new Date().toISOString()]
125
+ );
126
+ }
127
+ for (const [alias, model] of Object.entries(data.modelAliases || {})) {
128
+ adapter.run(`INSERT OR REPLACE INTO kv(scope, key, value) VALUES('modelAliases', ?, ?)`, [alias, stringifyJson(model)]);
129
+ }
130
+ for (const m of data.customModels || []) {
131
+ const k = `${m.providerAlias}|${m.id}|${m.type || "llm"}`;
132
+ adapter.run(`INSERT OR REPLACE INTO kv(scope, key, value) VALUES('customModels', ?, ?)`, [k, stringifyJson(m)]);
133
+ }
134
+ for (const [tool, mappings] of Object.entries(data.mitmAlias || {})) {
135
+ adapter.run(`INSERT OR REPLACE INTO kv(scope, key, value) VALUES('mitmAlias', ?, ?)`, [tool, stringifyJson(mappings || {})]);
136
+ }
137
+ for (const [provider, models] of Object.entries(data.pricing || {})) {
138
+ adapter.run(`INSERT OR REPLACE INTO kv(scope, key, value) VALUES('pricing', ?, ?)`, [provider, stringifyJson(models || {})]);
139
+ }
140
+ }
141
+
142
+ function importLegacyUsage(adapter, data) {
143
+ if (!data || typeof data !== "object") return;
144
+ for (const e of data.history || []) {
145
+ const t = e.tokens || {};
146
+ adapter.run(
147
+ `INSERT INTO usageHistory(timestamp, provider, model, connectionId, apiKey, endpoint, promptTokens, completionTokens, cost, status, tokens, meta) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
148
+ [
149
+ e.timestamp || new Date().toISOString(),
150
+ e.provider || null, e.model || null, e.connectionId || null, e.apiKey || null, e.endpoint || null,
151
+ t.prompt_tokens || t.input_tokens || 0,
152
+ t.completion_tokens || t.output_tokens || 0,
153
+ e.cost || 0,
154
+ e.status || "ok",
155
+ stringifyJson(t),
156
+ stringifyJson({}),
157
+ ]
158
+ );
159
+ }
160
+ for (const [dateKey, day] of Object.entries(data.dailySummary || {})) {
161
+ adapter.run(`INSERT OR REPLACE INTO usageDaily(dateKey, data) VALUES(?, ?)`, [dateKey, stringifyJson(day)]);
162
+ }
163
+ if (typeof data.totalRequestsLifetime === "number") {
164
+ setMetaSync(adapter, "totalRequestsLifetime", data.totalRequestsLifetime);
165
+ }
166
+ }
167
+
168
+ function importLegacyDisabled(adapter, data) {
169
+ if (!data || typeof data.disabled !== "object") return;
170
+ for (const [provider, ids] of Object.entries(data.disabled)) {
171
+ adapter.run(`INSERT OR REPLACE INTO kv(scope, key, value) VALUES('disabledModels', ?, ?)`, [provider, stringifyJson(ids || [])]);
172
+ }
173
+ }
174
+
175
+ function importLegacyDetails(adapter, data) {
176
+ if (!data || !Array.isArray(data.records)) return;
177
+ for (const r of data.records) {
178
+ adapter.run(
179
+ `INSERT OR REPLACE INTO requestDetails(id, timestamp, provider, model, connectionId, status, data) VALUES(?, ?, ?, ?, ?, ?, ?)`,
180
+ [r.id, r.timestamp || new Date().toISOString(), r.provider || null, r.model || null, r.connectionId || null, r.status || null, stringifyJson(r)]
181
+ );
182
+ }
183
+ }
184
+
185
+ // ─── Main entry ──────────────────────────────────────────────────────────
186
+ export async function runMigrationOnce(adapter) {
187
+ if (_migratedAdapters.has(adapter)) return;
188
+ _migratedAdapters.add(adapter);
189
+
190
+ // Capture freshness BEFORE migrations stamp _meta (otherwise we'd misclassify
191
+ // a brand-new DB as non-fresh once schemaVersion is written).
192
+ const fresh = isFreshDb(adapter);
193
+
194
+ // 1. Always run versioned migrations chain (skip-version safe)
195
+ const migInfo = runVersionedMigrations(adapter);
196
+
197
+ // 2. Additive sync (auto add missing columns/indexes declared in TABLES)
198
+ syncSchemaFromTables(adapter);
199
+
200
+ // 3. One-time legacy JSON import (only if DB was fresh on entry)
201
+ const alreadyImported = fs.existsSync(MIGRATED_MARKER);
202
+ const legacyMain = readJsonSafe(LEGACY_FILES.main);
203
+ const legacyUsage = readJsonSafe(LEGACY_FILES.usage);
204
+ const legacyDisabled = readJsonSafe(LEGACY_FILES.disabled);
205
+ const legacyDetails = readJsonSafe(LEGACY_FILES.details);
206
+ const hasLegacy = !!(legacyMain || legacyUsage || legacyDisabled || legacyDetails);
207
+
208
+ if (fresh && hasLegacy && !alreadyImported) {
209
+ const t0 = Date.now();
210
+ const backupDir = makeBackupDir("migrate-from-json");
211
+ for (const f of Object.values(LEGACY_FILES)) backupFile(f, backupDir);
212
+
213
+ adapter.transaction(() => {
214
+ importLegacyMain(adapter, legacyMain);
215
+ importLegacyUsage(adapter, legacyUsage);
216
+ importLegacyDisabled(adapter, legacyDisabled);
217
+ importLegacyDetails(adapter, legacyDetails);
218
+ setMetaSync(adapter, "appVersion", getAppVersion());
219
+ setMetaSync(adapter, "migratedAt", new Date().toISOString());
220
+ });
221
+
222
+ try { fs.writeFileSync(MIGRATED_MARKER, new Date().toISOString()); } catch {}
223
+ pruneOldBackups();
224
+ console.log(`[DB][migrate] JSON → SQLite in ${Date.now() - t0}ms | legacy JSON kept at DATA_DIR | backup: ${backupDir}`);
225
+ return;
226
+ }
227
+
228
+ if (fresh) {
229
+ setMetaSync(adapter, "appVersion", getAppVersion());
230
+ return;
231
+ }
232
+
233
+ // 4. App version bump → backup data.sqlite (safety net before user-side upgrade)
234
+ const oldVer = getMetaSync(adapter, "appVersion", null);
235
+ const newVer = getAppVersion();
236
+ if (oldVer && oldVer !== newVer) {
237
+ const backupDir = makeBackupDir(`upgrade-${oldVer}-to-${newVer}`);
238
+ try { backupFile(DATA_FILE, backupDir); } catch {}
239
+ setMetaSync(adapter, "appVersion", newVer);
240
+ pruneOldBackups();
241
+ console.log(`[DB][migrate] App ${oldVer} → ${newVer} | schema ${migInfo.from} → ${migInfo.to} | backup: ${backupDir}`);
242
+ } else if (migInfo.applied > 0) {
243
+ // Schema upgrade without app version bump — still backup
244
+ const backupDir = makeBackupDir(`schema-${migInfo.from}-to-${migInfo.to}`);
245
+ try { backupFile(DATA_FILE, backupDir); } catch {}
246
+ pruneOldBackups();
247
+ }
248
+ }