@yina-npm/openrouterx 0.4.33 → 0.4.38

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 (295) hide show
  1. package/README.md +54 -0
  2. package/app/.next/BUILD_ID +1 -1
  3. package/app/.next/app-path-routes-manifest.json +2 -2
  4. package/app/.next/build-manifest.json +2 -2
  5. package/app/.next/required-server-files.json +1 -1
  6. package/app/.next/routes-manifest.json +27 -1
  7. package/app/.next/server/app/(dashboard)/dashboard/admin/keys/page.js +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/admin/keys/page_client-reference-manifest.js +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/admin/users/page.js +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 +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +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/focus-ui/page.js +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/focus-ui/page_client-reference-manifest.js +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +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 +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  31. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
  32. package/app/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  33. package/app/.next/server/app/(dashboard)/dashboard/network-analysis/page.js +1 -1
  34. package/app/.next/server/app/(dashboard)/dashboard/network-analysis/page_client-reference-manifest.js +1 -1
  35. package/app/.next/server/app/(dashboard)/dashboard/page.js +1 -1
  36. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  37. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  38. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  39. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +1 -1
  40. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  41. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  42. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  43. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  44. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  45. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js +1 -1
  46. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  47. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js +1 -1
  48. package/app/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  49. package/app/.next/server/app/(dashboard)/dashboard/skills/page.js +1 -1
  50. package/app/.next/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  51. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +1 -1
  52. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  53. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +1 -1
  54. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  55. package/app/.next/server/app/(dashboard)/dashboard/user/page.js +1 -1
  56. package/app/.next/server/app/(dashboard)/dashboard/user/page_client-reference-manifest.js +1 -1
  57. package/app/.next/server/app/_global-error/page.js +1 -1
  58. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  59. package/app/.next/server/app/_global-error.html +1 -1
  60. package/app/.next/server/app/_global-error.rsc +1 -1
  61. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  62. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  63. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  64. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  65. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  66. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  67. package/app/.next/server/app/_not-found/page.js +1 -1
  68. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  69. package/app/.next/server/app/_not-found.html +1 -1
  70. package/app/.next/server/app/_not-found.rsc +3 -3
  71. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  72. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  73. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
  74. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  75. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  76. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  77. package/app/.next/server/app/api/auth/login/route.js +1 -1
  78. package/app/.next/server/app/api/auth/logout/route.js +1 -1
  79. package/app/.next/server/app/api/auth/me/route.js +1 -1
  80. package/app/.next/server/app/api/auth/oidc/callback/route.js +1 -1
  81. package/app/.next/server/app/api/auth/oidc/start/route.js +1 -1
  82. package/app/.next/server/app/api/auth/oidc/test/route.js +1 -1
  83. package/app/.next/server/app/api/auth/status/route.js +1 -1
  84. package/app/.next/server/app/api/cli-tools/all-statuses/route.js +1 -1
  85. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  86. package/app/.next/server/app/api/cli-tools/antigravity-mitm/inject-auth/route.js +1 -1
  87. package/app/.next/server/app/api/cli-tools/antigravity-mitm/inject-auth/route.js.nft.json +1 -1
  88. package/app/.next/server/app/api/cli-tools/antigravity-mitm/restart/route.js +1 -1
  89. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  90. package/app/.next/server/app/api/cli-tools/antigravity-mitm/test/route.js +1 -1
  91. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +1 -1
  92. package/app/.next/server/app/api/cli-tools/cline-settings/route.js +1 -1
  93. package/app/.next/server/app/api/cli-tools/codex-settings/activate-account/route.js +2 -2
  94. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +1 -1
  95. package/app/.next/server/app/api/cli-tools/copilot-settings/route.js +1 -1
  96. package/app/.next/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
  97. package/app/.next/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
  98. package/app/.next/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  99. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +1 -1
  100. package/app/.next/server/app/api/cli-tools/hermes-settings/route.js +1 -1
  101. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +1 -1
  102. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +1 -1
  103. package/app/.next/server/app/api/cli-tools/opencode-settings/route.js +1 -1
  104. package/app/.next/server/app/api/cloud/auth/route.js +1 -1
  105. package/app/.next/server/app/api/cloud/credentials/update/route.js +1 -1
  106. package/app/.next/server/app/api/cloud/model/resolve/route.js +1 -1
  107. package/app/.next/server/app/api/cloud/models/alias/route.js +1 -1
  108. package/app/.next/server/app/api/combos/[id]/route.js +1 -1
  109. package/app/.next/server/app/api/combos/route.js +1 -1
  110. package/app/.next/server/app/api/health/route.js +1 -1
  111. package/app/.next/server/app/api/init/route.js +1 -1
  112. package/app/.next/server/app/api/keys/[id]/route.js +1 -1
  113. package/app/.next/server/app/api/keys/route.js +1 -1
  114. package/app/.next/server/app/api/locale/route.js +1 -1
  115. package/app/.next/server/app/api/mcp/[plugin]/message/route.js +1 -1
  116. package/app/.next/server/app/api/mcp/[plugin]/sse/route.js +1 -1
  117. package/app/.next/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  118. package/app/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  119. package/app/.next/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  120. package/app/.next/server/app/api/media-providers/tts/voices/route.js +1 -1
  121. package/app/.next/server/app/api/models/alias/route.js +1 -1
  122. package/app/.next/server/app/api/models/availability/route.js +1 -1
  123. package/app/.next/server/app/api/models/custom/route.js +1 -1
  124. package/app/.next/server/app/api/models/disabled/route.js +1 -1
  125. package/app/.next/server/app/api/models/route.js +1 -1
  126. package/app/.next/server/app/api/models/test/route.js +1 -1
  127. package/app/.next/server/app/api/network-analysis/route.js +2 -2
  128. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +2 -2
  129. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js +1 -1
  130. package/app/.next/server/app/api/oauth/cursor/import/route.js +1 -1
  131. package/app/.next/server/app/api/oauth/gitlab/pat/route.js +1 -1
  132. package/app/.next/server/app/api/oauth/iflow/cookie/route.js +1 -1
  133. package/app/.next/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  134. package/app/.next/server/app/api/oauth/kiro/import/route.js +1 -1
  135. package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  136. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  137. package/app/.next/server/app/api/pricing/route.js +1 -1
  138. package/app/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
  139. package/app/.next/server/app/api/provider-nodes/route.js +1 -1
  140. package/app/.next/server/app/api/provider-nodes/validate/route.js +1 -1
  141. package/app/.next/server/app/api/providers/[id]/models/route.js +1 -1
  142. package/app/.next/server/app/api/providers/[id]/route.js +1 -1
  143. package/app/.next/server/app/api/providers/[id]/test/route.js +1 -1
  144. package/app/.next/server/app/api/providers/[id]/test-models/route.js +1 -1
  145. package/app/.next/server/app/api/providers/client/route.js +1 -1
  146. package/app/.next/server/app/api/providers/kilo/free-models/route.js +1 -1
  147. package/app/.next/server/app/api/providers/route.js +1 -1
  148. package/app/.next/server/app/api/providers/suggested-models/route.js +1 -1
  149. package/app/.next/server/app/api/providers/test-batch/route.js +1 -1
  150. package/app/.next/server/app/api/providers/validate/route.js +1 -1
  151. package/app/.next/server/app/api/proxy-pools/[id]/route.js +1 -1
  152. package/app/.next/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  153. package/app/.next/server/app/api/proxy-pools/route.js +1 -1
  154. package/app/.next/server/app/api/proxy-pools/vercel-deploy/route.js +1 -1
  155. package/app/.next/server/app/api/settings/database/route.js +1 -1
  156. package/app/.next/server/app/api/settings/proxy-test/route.js +1 -1
  157. package/app/.next/server/app/api/settings/require-login/route.js +1 -1
  158. package/app/.next/server/app/api/settings/route.js +1 -1
  159. package/app/.next/server/app/api/shutdown/route.js +1 -1
  160. package/app/.next/server/app/api/startup-notices/route.js +1 -1
  161. package/app/.next/server/app/api/tags/route.js +1 -1
  162. package/app/.next/server/app/api/translator/console-logs/route.js +1 -1
  163. package/app/.next/server/app/api/translator/console-logs/stream/route.js +1 -1
  164. package/app/.next/server/app/api/translator/load/route.js +1 -1
  165. package/app/.next/server/app/api/translator/save/route.js +1 -1
  166. package/app/.next/server/app/api/translator/send/route.js +1 -1
  167. package/app/.next/server/app/api/translator/translate/route.js +1 -1
  168. package/app/.next/server/app/api/tunnel/disable/route.js +1 -1
  169. package/app/.next/server/app/api/tunnel/enable/route.js +1 -1
  170. package/app/.next/server/app/api/tunnel/status/route.js +1 -1
  171. package/app/.next/server/app/api/tunnel/tailscale-check/route.js +1 -1
  172. package/app/.next/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  173. package/app/.next/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  174. package/app/.next/server/app/api/tunnel/tailscale-install/route.js +2 -2
  175. package/app/.next/server/app/api/tunnel/tailscale-login/route.js +1 -1
  176. package/app/.next/server/app/api/tunnel/tailscale-start-daemon/route.js +1 -1
  177. package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
  178. package/app/.next/server/app/api/usage/api-keys/route.js +1 -1
  179. package/app/.next/server/app/api/usage/chart/route.js +1 -1
  180. package/app/.next/server/app/api/usage/history/route.js +1 -1
  181. package/app/.next/server/app/api/usage/logs/route.js +1 -1
  182. package/app/.next/server/app/api/usage/providers/route.js +1 -1
  183. package/app/.next/server/app/api/usage/request-details/route.js +1 -1
  184. package/app/.next/server/app/api/usage/request-logs/route.js +1 -1
  185. package/app/.next/server/app/api/usage/stats/route.js +1 -1
  186. package/app/.next/server/app/api/usage/stream/route.js +1 -1
  187. package/app/.next/server/app/api/users/[id]/route.js +1 -1
  188. package/app/.next/server/app/api/users/route.js +1 -1
  189. package/app/.next/server/app/api/v1/api/chat/route.js +1 -1
  190. package/app/.next/server/app/api/v1/audio/speech/route.js +1 -1
  191. package/app/.next/server/app/api/v1/audio/transcriptions/route.js +1 -1
  192. package/app/.next/server/app/api/v1/audio/voices/route.js +1 -1
  193. package/app/.next/server/app/api/v1/chat/completions/route.js +1 -1
  194. package/app/.next/server/app/api/v1/embeddings/route.js +1 -1
  195. package/app/.next/server/app/api/v1/images/generations/route.js +1 -1
  196. package/app/.next/server/app/api/v1/messages/count_tokens/route.js +1 -1
  197. package/app/.next/server/app/api/v1/messages/route.js +1 -1
  198. package/app/.next/server/app/api/v1/models/[kind]/route.js +1 -1
  199. package/app/.next/server/app/api/v1/models/info/route.js +1 -1
  200. package/app/.next/server/app/api/v1/models/route.js +1 -1
  201. package/app/.next/server/app/api/v1/responses/compact/route.js +1 -1
  202. package/app/.next/server/app/api/v1/responses/route.js +1 -1
  203. package/app/.next/server/app/api/v1/route.js +1 -1
  204. package/app/.next/server/app/api/v1/search/route.js +1 -1
  205. package/app/.next/server/app/api/v1/web/fetch/route.js +1 -1
  206. package/app/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
  207. package/app/.next/server/app/api/v1beta/models/route.js +1 -1
  208. package/app/.next/server/app/api/version/route.js +1 -1
  209. package/app/.next/server/app/api/version/shutdown/route.js +1 -1
  210. package/app/.next/server/app/api/version/update/route.js +1 -1
  211. package/app/.next/server/app/callback/page.js +1 -1
  212. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  213. package/app/.next/server/app/callback.html +1 -1
  214. package/app/.next/server/app/callback.rsc +3 -3
  215. package/app/.next/server/app/callback.segments/_full.segment.rsc +3 -3
  216. package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
  217. package/app/.next/server/app/callback.segments/_index.segment.rsc +3 -3
  218. package/app/.next/server/app/callback.segments/_tree.segment.rsc +1 -1
  219. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  220. package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
  221. package/app/.next/server/app/dashboard/settings/pricing/page.js +1 -1
  222. package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  223. package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
  224. package/app/.next/server/app/dashboard/settings/pricing.rsc +3 -3
  225. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  226. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  227. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
  228. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  229. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  230. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  231. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  232. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  233. package/app/.next/server/app/favicon.ico/route.js +1 -1
  234. package/app/.next/server/app/index.html +1 -1
  235. package/app/.next/server/app/index.rsc +3 -3
  236. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  237. package/app/.next/server/app/index.segments/_full.segment.rsc +3 -3
  238. package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
  239. package/app/.next/server/app/index.segments/_index.segment.rsc +3 -3
  240. package/app/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  241. package/app/.next/server/app/landing/page.js +1 -1
  242. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  243. package/app/.next/server/app/landing.html +1 -1
  244. package/app/.next/server/app/landing.rsc +3 -3
  245. package/app/.next/server/app/landing.segments/_full.segment.rsc +3 -3
  246. package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
  247. package/app/.next/server/app/landing.segments/_index.segment.rsc +3 -3
  248. package/app/.next/server/app/landing.segments/_tree.segment.rsc +1 -1
  249. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  250. package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
  251. package/app/.next/server/app/login/page.js +1 -1
  252. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  253. package/app/.next/server/app/login.html +1 -1
  254. package/app/.next/server/app/login.rsc +4 -4
  255. package/app/.next/server/app/login.segments/_full.segment.rsc +4 -4
  256. package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
  257. package/app/.next/server/app/login.segments/_index.segment.rsc +3 -3
  258. package/app/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  259. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  260. package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
  261. package/app/.next/server/app/manifest.webmanifest/route.js +1 -1
  262. package/app/.next/server/app/page.js +1 -1
  263. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  264. package/app/.next/server/app-paths-manifest.json +2 -2
  265. package/app/.next/server/chunks/1350.js +1 -1
  266. package/app/.next/server/chunks/3110.js +1 -1
  267. package/app/.next/server/chunks/3493.js +1 -1
  268. package/app/.next/server/chunks/4922.js +1 -1
  269. package/app/.next/server/chunks/5627.js +6 -6
  270. package/app/.next/server/chunks/6182.js +3 -3
  271. package/app/.next/server/chunks/7595.js +1 -1
  272. package/app/.next/server/chunks/7774.js +2 -2
  273. package/app/.next/server/chunks/8866.js +1 -1
  274. package/app/.next/server/chunks/9718.js +1 -1
  275. package/app/.next/server/middleware-build-manifest.js +1 -1
  276. package/app/.next/server/middleware.js +1 -1
  277. package/app/.next/server/pages/404.html +1 -1
  278. package/app/.next/server/pages/500.html +1 -1
  279. package/app/.next/static/9qtW6KlzV_D2b828CZp1A/_buildManifest.js +1 -0
  280. package/app/.next/static/chunks/{1321-194580b028caec3a.js → 1321-634f2d25db77d618.js} +1 -1
  281. package/app/.next/static/chunks/5095-42d435b0583b2f98.js +2 -0
  282. package/app/.next/static/chunks/main-2237af167d2c1c35.js +5 -0
  283. package/app/package.json +1 -1
  284. package/app/src/mitm/config.js +1 -0
  285. package/app/src/mitm/dns/dnsConfig.js +20 -73
  286. package/app/src/mitm/handlers/base.js +19 -20
  287. package/app/src/mitm/manager.js +79 -45
  288. package/app/src/mitm/server.js +36 -36
  289. package/cli.js +0 -170
  290. package/hooks/postinstall.js +25 -26
  291. package/package.json +1 -1
  292. package/app/.next/static/XHWEINo8HqIhskxHTrvjk/_buildManifest.js +0 -1
  293. package/app/.next/static/chunks/5095-fea302b55a08f07b.js +0 -2
  294. package/app/.next/static/chunks/main-9b9267659a73e61e.js +0 -5
  295. /package/app/.next/static/{XHWEINo8HqIhskxHTrvjk → 9qtW6KlzV_D2b828CZp1A}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";exports.id=9718,exports.ids=[9718],exports.modules={89718:(a,b,c)=>{c.d(b,{$L:()=>ai,CG:()=>ae,Dj:()=>ab,Iq:()=>aq,JE:()=>am,K1:()=>ax,KJ:()=>aA,L:()=>aa,L9:()=>$,Mc:()=>O,OM:()=>T,Pc:()=>H,Q_:()=>L,Qf:()=>aj,Qu:()=>E,S8:()=>X,TK:()=>ao,Uv:()=>_,VT:()=>aC,XW:()=>ar,Xx:()=>av,Yd:()=>M,ZO:()=>K,bI:()=>at,c:()=>Z,ek:()=>as,fK:()=>R,fv:()=>V,getApiKeys:()=>af,getPricingForModel:()=>az,getProviderConnections:()=>C,getProviderNodes:()=>D,getSettings:()=>au,hG:()=>ap,ho:()=>G,hr:()=>J,i0:()=>F,iE:()=>P,jd:()=>ac,kg:()=>an,kl:()=>al,lo:()=>ak,o5:()=>U,oG:()=>ad,op:()=>N,r4:()=>ay,uL:()=>Y,ui:()=>I,updateProviderConnection:()=>Q,uv:()=>W,y7:()=>ah,yF:()=>aB,yg:()=>ag,zP:()=>aw});var d=c(82996),e=c(11259),f=c(94755),g=c(76760),h=c.n(g),i=c(73024),j=c.n(i),k=c(80974),l=c.n(k),m=c(49120);let n="http://localhost:20502",o=new Set(["http://localhost:20128","http://127.0.0.1:20128"]),p="u">typeof caches||"object"==typeof caches,q=p?null:h().join(process.cwd(),"src","mitm","models.json");j().existsSync(m.DATA_DIR)||j().mkdirSync(m.DATA_DIR,{recursive:!0});let r={cloudEnabled:!1,tunnelEnabled:!1,tunnelUrl:"",tunnelProvider:"cloudflare",tailscaleEnabled:!1,tailscaleUrl:"",stickyRoundRobinLimit:3,providerStrategies:{},providerThinking:{},userProviderThinking:{},comboStrategy:"fallback",comboStickyRoundRobinLimit:1,comboStrategies:{},requireLogin:!0,tunnelDashboardAccess:!0,observabilityEnabled:!0,observabilityMaxRecords:1e3,observabilityBatchSize:20,observabilityFlushIntervalMs:5e3,observabilityMaxJsonSize:1024,outboundProxyEnabled:!1,outboundProxyUrl:"",outboundNoProxy:"",outboundProxyTargets:[],mitmRouterBaseUrl:n,dnsToolEnabled:{},rtkEnabled:!0,cavemanEnabled:!1,cavemanLevel:"full"};function s(){return{providerConnections:[],providerNodes:[],proxyPools:[],modelAliases:{},customModels:[],mitmAlias:{},combos:[],apiKeys:[],users:[],settings:{...r},pricing:{}}}function t(a){let b=s(),c=a&&"object"==typeof a?a:{},d=!1;for(let[a,e]of Object.entries(b)){if(void 0===c[a]||null===c[a]){c[a]=e,d=!0;continue}if("settings"===a&&("object"!=typeof c.settings||Array.isArray(c.settings))){c.settings={...e},d=!0;continue}if("settings"===a&&"object"==typeof c.settings&&!Array.isArray(c.settings)){for(let[a,b]of Object.entries(e))void 0===c.settings[a]&&("outboundProxyEnabled"===a&&"string"==typeof c.settings.outboundProxyUrl&&c.settings.outboundProxyUrl.trim()?c.settings.outboundProxyEnabled=!0:c.settings[a]=b,d=!0);let a=String(c.settings.mitmRouterBaseUrl||"").trim().replace(/\/+$/,"");(!a||o.has(a))&&(c.settings.mitmRouterBaseUrl=n,d=!0)}if("apiKeys"===a&&Array.isArray(c.apiKeys))for(let a of c.apiKeys)(void 0===a.isActive||null===a.isActive)&&(a.isActive=!0,d=!0),void 0===a.userId&&(a.userId=null,d=!0)}return{data:c,changed:d}}p||j().existsSync(m.DB_FILE)||j().writeFileSync(m.DB_FILE,JSON.stringify(s(),null,2));let u=null,v={retries:{retries:15,minTimeout:50,maxTimeout:3e3},stale:1e4};class w{constructor(){this._queue=[],this._locked=!1}async acquire(){return this._locked?new Promise(a=>{this._queue.push(()=>a(()=>this._release()))}):(this._locked=!0,()=>this._release())}_release(){let a=this._queue.shift();a?a():this._locked=!1}}let x=new w;async function y(a,b){let c=await x.acquire(),d=null;try{d=await l().lock(m.DB_FILE,v),await b()}catch(a){throw"ELOCKED"===a.code&&console.warn("[DB] File is locked, retrying..."),a}finally{if(d)try{await d()}catch(a){}c()}}async function z(a){await y(a,()=>a.read())}async function A(a){await y(a,()=>a.write())}async function B(){u||(u=new d.t(new e.Pv(m.DB_FILE),s()));try{await z(u)}catch(a){if(a instanceof SyntaxError)console.warn("[DB] Corrupt JSON detected, resetting to defaults..."),u.data=s(),await A(u);else throw a}if(u.data){let{data:a,changed:b}=t(u.data);u.data=a,b&&await A(u)}else u.data=s(),await A(u);return u}async function C(a={}){let b=(await B()).data.providerConnections||[];return a.provider&&(b=b.filter(b=>b.provider===a.provider)),void 0!==a.isActive&&(b=b.filter(b=>b.isActive===a.isActive)),b.sort((a,b)=>(a.priority||999)-(b.priority||999)),b}async function D(a={}){let b=(await B()).data.providerNodes||[];return a.type&&(b=b.filter(b=>b.type===a.type)),b}async function E(a){return(await B()).data.providerNodes.find(b=>b.id===a)||null}async function F(a){let b=await B();b.data.providerNodes||(b.data.providerNodes=[]);let c=new Date().toISOString(),d={id:a.id||(0,f.A)(),type:a.type,name:a.name,prefix:a.prefix,apiType:a.apiType,baseUrl:a.baseUrl,defaultSize:a.defaultSize,createdAt:c,updatedAt:c};return b.data.providerNodes.push(d),await A(b),d}async function G(a,b){let c=await B();c.data.providerNodes||(c.data.providerNodes=[]);let d=c.data.providerNodes.findIndex(b=>b.id===a);return -1===d?null:(c.data.providerNodes[d]={...c.data.providerNodes[d],...b,updatedAt:new Date().toISOString()},await A(c),c.data.providerNodes[d])}async function H(a){let b=await B();b.data.providerNodes||(b.data.providerNodes=[]);let c=b.data.providerNodes.findIndex(b=>b.id===a);if(-1===c)return null;let[d]=b.data.providerNodes.splice(c,1);return await A(b),d}async function I(a={}){let b=(await B()).data.proxyPools||[];return void 0!==a.isActive&&(b=b.filter(b=>b.isActive===a.isActive)),a.testStatus&&(b=b.filter(b=>b.testStatus===a.testStatus)),b.sort((a,b)=>new Date(b.updatedAt||0)-new Date(a.updatedAt||0))}async function J(a){return((await B()).data.proxyPools||[]).find(b=>b.id===a)||null}async function K(a){let b=await B();b.data.proxyPools||(b.data.proxyPools=[]);let c=new Date().toISOString(),d={id:a.id||(0,f.A)(),name:a.name,proxyUrl:a.proxyUrl,noProxy:a.noProxy||"",type:a.type||"http",isActive:void 0===a.isActive||a.isActive,strictProxy:!0===a.strictProxy,testStatus:a.testStatus||"unknown",lastTestedAt:a.lastTestedAt||null,lastError:a.lastError||null,createdAt:c,updatedAt:c};return b.data.proxyPools.push(d),await A(b),d}async function L(a,b){let c=await B();c.data.proxyPools||(c.data.proxyPools=[]);let d=c.data.proxyPools.findIndex(b=>b.id===a);return -1===d?null:(c.data.proxyPools[d]={...c.data.proxyPools[d],...b,updatedAt:new Date().toISOString()},await A(c),c.data.proxyPools[d])}async function M(a){let b=await B();b.data.proxyPools||(b.data.proxyPools=[]);let c=b.data.proxyPools.findIndex(b=>b.id===a);if(-1===c)return null;let[d]=b.data.proxyPools.splice(c,1);return await A(b),d}async function N(a){let b=await B(),c=b.data.providerConnections.length;b.data.providerConnections=b.data.providerConnections.filter(b=>b.provider!==a);let d=c-b.data.providerConnections.length;return await A(b),d}async function O(a){return(await B()).data.providerConnections.find(b=>b.id===a)||null}async function P(a){let b=await B(),c=new Date().toISOString(),d=-1;if("oauth"===a.authType&&a.email?d=b.data.providerConnections.findIndex(b=>b.provider===a.provider&&"oauth"===b.authType&&b.email===a.email):"apikey"===a.authType&&a.name&&(d=b.data.providerConnections.findIndex(b=>b.provider===a.provider&&"apikey"===b.authType&&b.name===a.name)),-1!==d)return b.data.providerConnections[d]={...b.data.providerConnections[d],...a,updatedAt:c},await A(b),b.data.providerConnections[d];let e=a.name||null;if(!e&&"oauth"===a.authType)if(a.email)e=a.email;else{let c=b.data.providerConnections.filter(b=>b.provider===a.provider).length;e=`Account ${c+1}`}let g=a.priority;g||(g=b.data.providerConnections.filter(b=>b.provider===a.provider).reduce((a,b)=>Math.max(a,b.priority||0),0)+1);let h={id:(0,f.A)(),provider:a.provider,authType:a.authType||"oauth",name:e,priority:g,isActive:void 0===a.isActive||a.isActive,createdAt:c,updatedAt:c};for(let b of["displayName","email","globalPriority","defaultModel","accessToken","refreshToken","idToken","expiresAt","tokenType","scope","projectId","apiKey","testStatus","lastTested","lastError","lastErrorAt","rateLimitedUntil","expiresIn","errorCode","consecutiveUseCount"])void 0!==a[b]&&null!==a[b]&&(h[b]=a[b]);return a.providerSpecificData&&Object.keys(a.providerSpecificData).length>0&&(h.providerSpecificData=a.providerSpecificData),b.data.providerConnections.push(h),await A(b),await S(a.provider),h}async function Q(a,b){let c=await B(),d=c.data.providerConnections.findIndex(b=>b.id===a);if(-1===d)return null;let e=c.data.providerConnections[d].provider;return c.data.providerConnections[d]={...c.data.providerConnections[d],...b,updatedAt:new Date().toISOString()},await A(c),void 0!==b.priority&&await S(e),c.data.providerConnections[d]}async function R(a){let b=await B(),c=b.data.providerConnections.findIndex(b=>b.id===a);if(-1===c)return!1;let d=b.data.providerConnections[c].provider;return b.data.providerConnections.splice(c,1),await A(b),await S(d),!0}async function S(a){let b=await B();b.data.providerConnections&&(b.data.providerConnections.filter(b=>b.provider===a).sort((a,b)=>{let c=(a.priority||0)-(b.priority||0);return 0!==c?c:new Date(b.updatedAt||0)-new Date(a.updatedAt||0)}).forEach((a,b)=>{a.priority=b+1}),await A(b))}async function T(){return(await B()).data.modelAliases||{}}async function U(a,b){let c=await B();c.data.modelAliases[a]=b,await A(c)}async function V(a){let b=await B();delete b.data.modelAliases[a],await A(b)}async function W(){return(await B()).data.customModels||[]}async function X({providerAlias:a,id:b,type:c="llm",name:d}){let e=await B();return e.data.customModels||(e.data.customModels=[]),!e.data.customModels.some(d=>d.providerAlias===a&&d.id===b&&(d.type||"llm")===c)&&(e.data.customModels.push({providerAlias:a,id:b,type:c,name:d||b}),await A(e),!0)}async function Y({providerAlias:a,id:b,type:c="llm"}){let d=await B();d.data.customModels&&(d.data.customModels=d.data.customModels.filter(d=>d.providerAlias!==a||d.id!==b||(d.type||"llm")!==c),await A(d))}async function Z(a){let b=(await B()).data.mitmAlias||{};return a?b[a]||{}:b}async function $(a,b){let c=await B();c.data.mitmAlias||(c.data.mitmAlias={}),c.data.mitmAlias[a]=b||{},await A(c)}async function _(){return(await B()).data.combos||[]}async function aa(a){return((await B()).data.combos||[]).find(b=>b.id===a)||null}async function ab(a){return((await B()).data.combos||[]).find(b=>b.name===a)||null}async function ac(a){let b=await B();b.data.combos||(b.data.combos=[]);let c=new Date().toISOString(),d={id:(0,f.A)(),name:a.name,models:a.models||[],kind:a.kind||null,createdAt:c,updatedAt:c};return b.data.combos.push(d),await A(b),d}async function ad(a,b){let c=await B();c.data.combos||(c.data.combos=[]);let d=c.data.combos.findIndex(b=>b.id===a);return -1===d?null:(c.data.combos[d]={...c.data.combos[d],...b,updatedAt:new Date().toISOString()},await A(c),c.data.combos[d])}async function ae(a){let b=await B();if(!b.data.combos)return!1;let c=b.data.combos.findIndex(b=>b.id===a);return -1!==c&&(b.data.combos.splice(c,1),await A(b),!0)}async function af(a={}){let b=(await B()).data.apiKeys||[];return void 0!==a.userId&&(b=b.filter(b=>b.userId===a.userId)),a.includeUnassigned||a.forCurrentUser&&(b=b.filter(b=>b.userId===a.forCurrentUser)),b}async function ag(a){return(await B()).data.apiKeys.find(b=>b.id===a)||null}async function ah(a){return(await B()).data.apiKeys.find(b=>b.key===a)||null}async function ai(a,b){let c=await B(),d=c.data.apiKeys.find(b=>b.id===a);return d?(d.userId=b,d.assignedAt=new Date().toISOString(),await A(c),d):null}async function aj(a){let b=await B(),c=b.data.apiKeys.find(b=>b.id===a);return!!c&&(c.userId=null,c.assignedAt=null,await A(b),!0)}async function ak(){return((await B()).data.users||[]).map(a=>({...a,passwordHash:void 0}))}async function al(a){let b=((await B()).data.users||[]).find(b=>b.id===a);return b?{...b,passwordHash:void 0}:null}async function am(a){return((await B()).data.users||[]).find(b=>b.username===a)||null}async function an({username:a,passwordHash:b,role:c="sub_user",permissions:d=[],displayName:e="",allowedProviders:g,allowedProviderConnectionIds:h,showQuotaTracker:i=!0,providerThinking:j={}}){let k=await B();if(k.data.users||(k.data.users=[]),k.data.users.some(b=>b.username===a))throw Error("Username already exists");let l=new Date().toISOString(),m={id:(0,f.A)(),username:a,passwordHash:b,role:c,permissions:d,displayName:e||a,showQuotaTracker:i,providerThinking:j,createdAt:l,updatedAt:l};return void 0!==g&&(m.allowedProviders=g),void 0!==h&&(m.allowedProviderConnectionIds=h),k.data.users.push(m),await A(k),{...m,passwordHash:void 0}}async function ao(a,b){let c=await B();if(!c.data.users)return null;let d=c.data.users.findIndex(b=>b.id===a);if(-1===d)return null;let{passwordHash:e,...f}=b;return c.data.users[d]={...c.data.users[d],...f,updatedAt:new Date().toISOString()},e&&(c.data.users[d].passwordHash=e),await A(c),{...c.data.users[d],passwordHash:void 0}}async function ap(a){let b=await B();if(!b.data.users)return!1;let c=b.data.users.findIndex(b=>b.id===a);if(-1===c)return!1;for(let d of(b.data.users.splice(c,1),b.data.apiKeys||[]))d.userId===a&&(d.userId=null,d.assignedAt=null);return await A(b),!0}async function aq(a,b){if(!b)throw Error("machineId is required");let d=await B(),e=new Date().toISOString(),{generateApiKeyWithMachine:g}=await c.e(6844).then(c.bind(c,86844)),h=g(b),i={id:(0,f.A)(),name:a,key:h.key,machineId:b,isActive:!0,createdAt:e};return d.data.apiKeys.push(i),await A(d),i}async function ar(a,b){let c=await B(),d=c.data.apiKeys.findIndex(b=>b.id===a);return -1===d?null:(c.data.apiKeys[d]={...c.data.apiKeys[d],...b},await A(c),c.data.apiKeys[d])}async function as(a){let b=(await B()).data.apiKeys.find(b=>b.key===a);return b&&!1!==b.isActive}async function at(){let a=await B(),b=["displayName","email","globalPriority","defaultModel","accessToken","refreshToken","expiresAt","tokenType","scope","projectId","apiKey","testStatus","lastTested","lastError","lastErrorAt","rateLimitedUntil","expiresIn","consecutiveUseCount"],c=0;for(let d of a.data.providerConnections){for(let a of b)(null===d[a]||void 0===d[a])&&(delete d[a],c++);d.providerSpecificData&&0===Object.keys(d.providerSpecificData).length&&(delete d.providerSpecificData,c++)}return c>0&&await A(a),c}async function au(){return(await B()).data.settings||{cloudEnabled:!1}}async function av(a){let b=await B();return b.data.settings={...b.data.settings,...a},await A(b),b.data.settings}async function aw(){return(await B()).data||s()}async function ax(a){if(!a||"object"!=typeof a||Array.isArray(a))throw Error("Invalid database payload");let{data:b}=t({...s(),...a,settings:{...s().settings,...a.settings&&"object"==typeof a.settings&&!Array.isArray(a.settings)?a.settings:{}}}),c=await B();return c.data=b,await A(c),c.data}async function ay(){let a=(await B()).data.pricing||{},{PROVIDER_PRICING:b}=await c.e(7341).then(c.bind(c,57341)),d={};for(let[c,e]of Object.entries(b))if(d[c]={...e},a[c])for(let[b,e]of Object.entries(a[c]))d[c][b]=d[c][b]?{...d[c][b],...e}:e;for(let[b,c]of Object.entries(a))if(d[b])for(let[a,e]of Object.entries(c))d[b][a]||(d[b][a]=e);else d[b]={...c};return d}async function az(a,b){if(!b)return null;let d=(await B()).data.pricing||{};if(a&&d[a]?.[b])return d[a][b];if(!p&&q&&j().existsSync(q))try{let a=JSON.parse(j().readFileSync(q,"utf-8")),c=Array.isArray(a?.data)?a.data:[],d=new Set([b,b.includes("/")?b.split("/").pop():b].filter(Boolean)),e=c.find(a=>{let b=String(a?.id||""),c=String(a?.canonical_slug||"");return[...d].some(a=>b===a||c===a||b.endsWith(`/${a}`)||c.endsWith(`/${a}`))});if(e?.pricing){let a=Number(e.pricing.prompt),b=Number(e.pricing.completion),c=Number(e.pricing.input_cache_read),d=Number(e.pricing.internal_reasoning),f=Number(e.pricing.input_cache_write);if(!Number.isNaN(a)&&!Number.isNaN(b))return{input:1e6*a,output:1e6*b,cached:Number.isNaN(c)?1e6*a:1e6*c,reasoning:Number.isNaN(d)?1e6*b:1e6*d,cache_creation:Number.isNaN(f)?1e6*a:1e6*f}}}catch{}let{getPricingForModel:e}=await c.e(7341).then(c.bind(c,57341));return e(a,b)}async function aA(a){let b=await B();for(let[c,d]of(b.data.pricing||(b.data.pricing={}),Object.entries(a)))for(let[a,e]of(b.data.pricing[c]||(b.data.pricing[c]={}),Object.entries(d)))b.data.pricing[c][a]=e;return await A(b),b.data.pricing}async function aB(a,b){let c=await B();return c.data.pricing||(c.data.pricing={}),b?c.data.pricing[a]&&(delete c.data.pricing[a][b],0===Object.keys(c.data.pricing[a]).length&&delete c.data.pricing[a]):delete c.data.pricing[a],await A(c),c.data.pricing}async function aC(){let a=await B();return a.data.pricing={},await A(a),a.data.pricing}}};
1
+ "use strict";exports.id=9718,exports.ids=[9718],exports.modules={89718:(a,b,c)=>{c.d(b,{$L:()=>ag,CG:()=>ac,Dj:()=>_,Iq:()=>ao,JE:()=>ak,K1:()=>av,KJ:()=>ay,L:()=>$,L9:()=>Y,Mc:()=>M,OM:()=>R,Pc:()=>F,Q_:()=>J,Qf:()=>ah,Qu:()=>C,S8:()=>V,TK:()=>am,Uv:()=>Z,VT:()=>aA,XW:()=>ap,Xx:()=>at,Yd:()=>K,ZO:()=>I,bI:()=>ar,c:()=>X,ek:()=>aq,fK:()=>P,fv:()=>T,getApiKeys:()=>ad,getPricingForModel:()=>ax,getProviderConnections:()=>A,getProviderNodes:()=>B,getSettings:()=>as,hG:()=>an,ho:()=>E,hr:()=>H,i0:()=>D,iE:()=>N,jd:()=>aa,kg:()=>al,kl:()=>aj,lo:()=>ai,o5:()=>S,oG:()=>ab,op:()=>L,r4:()=>aw,uL:()=>W,ui:()=>G,updateProviderConnection:()=>O,uv:()=>U,y7:()=>af,yF:()=>az,yg:()=>ae,zP:()=>au});var d=c(82996),e=c(11259),f=c(94755),g=c(76760),h=c.n(g),i=c(73024),j=c.n(i),k=c(80974),l=c.n(k),m=c(49120);let n="u">typeof caches||"object"==typeof caches,o=n?null:h().join(process.cwd(),"src","mitm","models.json");j().existsSync(m.DATA_DIR)||j().mkdirSync(m.DATA_DIR,{recursive:!0});let p={cloudEnabled:!1,tunnelEnabled:!1,tunnelUrl:"",tunnelProvider:"cloudflare",tailscaleEnabled:!1,tailscaleUrl:"",stickyRoundRobinLimit:3,providerStrategies:{},providerThinking:{},userProviderThinking:{},comboStrategy:"fallback",comboStickyRoundRobinLimit:1,comboStrategies:{},requireLogin:!0,tunnelDashboardAccess:!0,observabilityEnabled:!0,observabilityMaxRecords:1e3,observabilityBatchSize:20,observabilityFlushIntervalMs:5e3,observabilityMaxJsonSize:1024,outboundProxyEnabled:!1,outboundProxyUrl:"",outboundNoProxy:"",outboundProxyTargets:[],mitmRouterBaseUrl:"http://localhost:20502",dnsToolEnabled:{},rtkEnabled:!0,cavemanEnabled:!1,cavemanLevel:"full"};function q(){return{providerConnections:[],providerNodes:[],proxyPools:[],modelAliases:{},customModels:[],mitmAlias:{},combos:[],apiKeys:[],users:[],settings:{...p},pricing:{}}}function r(a){let b=q(),c=a&&"object"==typeof a?a:{},d=!1;for(let[a,e]of Object.entries(b)){if(void 0===c[a]||null===c[a]){c[a]=e,d=!0;continue}if("settings"===a&&("object"!=typeof c.settings||Array.isArray(c.settings))){c.settings={...e},d=!0;continue}if("settings"===a&&"object"==typeof c.settings&&!Array.isArray(c.settings))for(let[a,b]of Object.entries(e))void 0===c.settings[a]&&("outboundProxyEnabled"===a&&"string"==typeof c.settings.outboundProxyUrl&&c.settings.outboundProxyUrl.trim()?c.settings.outboundProxyEnabled=!0:c.settings[a]=b,d=!0);if("apiKeys"===a&&Array.isArray(c.apiKeys))for(let a of c.apiKeys)(void 0===a.isActive||null===a.isActive)&&(a.isActive=!0,d=!0),void 0===a.userId&&(a.userId=null,d=!0)}return{data:c,changed:d}}n||j().existsSync(m.DB_FILE)||j().writeFileSync(m.DB_FILE,JSON.stringify(q(),null,2));let s=null,t={retries:{retries:15,minTimeout:50,maxTimeout:3e3},stale:1e4};class u{constructor(){this._queue=[],this._locked=!1}async acquire(){return this._locked?new Promise(a=>{this._queue.push(()=>a(()=>this._release()))}):(this._locked=!0,()=>this._release())}_release(){let a=this._queue.shift();a?a():this._locked=!1}}let v=new u;async function w(a,b){let c=await v.acquire(),d=null;try{d=await l().lock(m.DB_FILE,t),await b()}catch(a){throw"ELOCKED"===a.code&&console.warn("[DB] File is locked, retrying..."),a}finally{if(d)try{await d()}catch(a){}c()}}async function x(a){await w(a,()=>a.read())}async function y(a){await w(a,()=>a.write())}async function z(){s||(s=new d.t(new e.Pv(m.DB_FILE),q()));try{await x(s)}catch(a){if(a instanceof SyntaxError)console.warn("[DB] Corrupt JSON detected, resetting to defaults..."),s.data=q(),await y(s);else throw a}if(s.data){let{data:a,changed:b}=r(s.data);s.data=a,b&&await y(s)}else s.data=q(),await y(s);return s}async function A(a={}){let b=(await z()).data.providerConnections||[];return a.provider&&(b=b.filter(b=>b.provider===a.provider)),void 0!==a.isActive&&(b=b.filter(b=>b.isActive===a.isActive)),b.sort((a,b)=>(a.priority||999)-(b.priority||999)),b}async function B(a={}){let b=(await z()).data.providerNodes||[];return a.type&&(b=b.filter(b=>b.type===a.type)),b}async function C(a){return(await z()).data.providerNodes.find(b=>b.id===a)||null}async function D(a){let b=await z();b.data.providerNodes||(b.data.providerNodes=[]);let c=new Date().toISOString(),d={id:a.id||(0,f.A)(),type:a.type,name:a.name,prefix:a.prefix,apiType:a.apiType,baseUrl:a.baseUrl,defaultSize:a.defaultSize,createdAt:c,updatedAt:c};return b.data.providerNodes.push(d),await y(b),d}async function E(a,b){let c=await z();c.data.providerNodes||(c.data.providerNodes=[]);let d=c.data.providerNodes.findIndex(b=>b.id===a);return -1===d?null:(c.data.providerNodes[d]={...c.data.providerNodes[d],...b,updatedAt:new Date().toISOString()},await y(c),c.data.providerNodes[d])}async function F(a){let b=await z();b.data.providerNodes||(b.data.providerNodes=[]);let c=b.data.providerNodes.findIndex(b=>b.id===a);if(-1===c)return null;let[d]=b.data.providerNodes.splice(c,1);return await y(b),d}async function G(a={}){let b=(await z()).data.proxyPools||[];return void 0!==a.isActive&&(b=b.filter(b=>b.isActive===a.isActive)),a.testStatus&&(b=b.filter(b=>b.testStatus===a.testStatus)),b.sort((a,b)=>new Date(b.updatedAt||0)-new Date(a.updatedAt||0))}async function H(a){return((await z()).data.proxyPools||[]).find(b=>b.id===a)||null}async function I(a){let b=await z();b.data.proxyPools||(b.data.proxyPools=[]);let c=new Date().toISOString(),d={id:a.id||(0,f.A)(),name:a.name,proxyUrl:a.proxyUrl,noProxy:a.noProxy||"",type:a.type||"http",isActive:void 0===a.isActive||a.isActive,strictProxy:!0===a.strictProxy,testStatus:a.testStatus||"unknown",lastTestedAt:a.lastTestedAt||null,lastError:a.lastError||null,createdAt:c,updatedAt:c};return b.data.proxyPools.push(d),await y(b),d}async function J(a,b){let c=await z();c.data.proxyPools||(c.data.proxyPools=[]);let d=c.data.proxyPools.findIndex(b=>b.id===a);return -1===d?null:(c.data.proxyPools[d]={...c.data.proxyPools[d],...b,updatedAt:new Date().toISOString()},await y(c),c.data.proxyPools[d])}async function K(a){let b=await z();b.data.proxyPools||(b.data.proxyPools=[]);let c=b.data.proxyPools.findIndex(b=>b.id===a);if(-1===c)return null;let[d]=b.data.proxyPools.splice(c,1);return await y(b),d}async function L(a){let b=await z(),c=b.data.providerConnections.length;b.data.providerConnections=b.data.providerConnections.filter(b=>b.provider!==a);let d=c-b.data.providerConnections.length;return await y(b),d}async function M(a){return(await z()).data.providerConnections.find(b=>b.id===a)||null}async function N(a){let b=await z(),c=new Date().toISOString(),d=-1;if("oauth"===a.authType&&a.email?d=b.data.providerConnections.findIndex(b=>b.provider===a.provider&&"oauth"===b.authType&&b.email===a.email):"apikey"===a.authType&&a.name&&(d=b.data.providerConnections.findIndex(b=>b.provider===a.provider&&"apikey"===b.authType&&b.name===a.name)),-1!==d)return b.data.providerConnections[d]={...b.data.providerConnections[d],...a,updatedAt:c},await y(b),b.data.providerConnections[d];let e=a.name||null;if(!e&&"oauth"===a.authType)if(a.email)e=a.email;else{let c=b.data.providerConnections.filter(b=>b.provider===a.provider).length;e=`Account ${c+1}`}let g=a.priority;g||(g=b.data.providerConnections.filter(b=>b.provider===a.provider).reduce((a,b)=>Math.max(a,b.priority||0),0)+1);let h={id:(0,f.A)(),provider:a.provider,authType:a.authType||"oauth",name:e,priority:g,isActive:void 0===a.isActive||a.isActive,createdAt:c,updatedAt:c};for(let b of["displayName","email","globalPriority","defaultModel","accessToken","refreshToken","expiresAt","tokenType","scope","projectId","apiKey","testStatus","lastTested","lastError","lastErrorAt","rateLimitedUntil","expiresIn","errorCode","consecutiveUseCount"])void 0!==a[b]&&null!==a[b]&&(h[b]=a[b]);return a.providerSpecificData&&Object.keys(a.providerSpecificData).length>0&&(h.providerSpecificData=a.providerSpecificData),b.data.providerConnections.push(h),await y(b),await Q(a.provider),h}async function O(a,b){let c=await z(),d=c.data.providerConnections.findIndex(b=>b.id===a);if(-1===d)return null;let e=c.data.providerConnections[d].provider;return c.data.providerConnections[d]={...c.data.providerConnections[d],...b,updatedAt:new Date().toISOString()},await y(c),void 0!==b.priority&&await Q(e),c.data.providerConnections[d]}async function P(a){let b=await z(),c=b.data.providerConnections.findIndex(b=>b.id===a);if(-1===c)return!1;let d=b.data.providerConnections[c].provider;return b.data.providerConnections.splice(c,1),await y(b),await Q(d),!0}async function Q(a){let b=await z();b.data.providerConnections&&(b.data.providerConnections.filter(b=>b.provider===a).sort((a,b)=>{let c=(a.priority||0)-(b.priority||0);return 0!==c?c:new Date(b.updatedAt||0)-new Date(a.updatedAt||0)}).forEach((a,b)=>{a.priority=b+1}),await y(b))}async function R(){return(await z()).data.modelAliases||{}}async function S(a,b){let c=await z();c.data.modelAliases[a]=b,await y(c)}async function T(a){let b=await z();delete b.data.modelAliases[a],await y(b)}async function U(){return(await z()).data.customModels||[]}async function V({providerAlias:a,id:b,type:c="llm",name:d}){let e=await z();return e.data.customModels||(e.data.customModels=[]),!e.data.customModels.some(d=>d.providerAlias===a&&d.id===b&&(d.type||"llm")===c)&&(e.data.customModels.push({providerAlias:a,id:b,type:c,name:d||b}),await y(e),!0)}async function W({providerAlias:a,id:b,type:c="llm"}){let d=await z();d.data.customModels&&(d.data.customModels=d.data.customModels.filter(d=>d.providerAlias!==a||d.id!==b||(d.type||"llm")!==c),await y(d))}async function X(a){let b=(await z()).data.mitmAlias||{};return a?b[a]||{}:b}async function Y(a,b){let c=await z();c.data.mitmAlias||(c.data.mitmAlias={}),c.data.mitmAlias[a]=b||{},await y(c)}async function Z(){return(await z()).data.combos||[]}async function $(a){return((await z()).data.combos||[]).find(b=>b.id===a)||null}async function _(a){return((await z()).data.combos||[]).find(b=>b.name===a)||null}async function aa(a){let b=await z();b.data.combos||(b.data.combos=[]);let c=new Date().toISOString(),d={id:(0,f.A)(),name:a.name,models:a.models||[],kind:a.kind||null,createdAt:c,updatedAt:c};return b.data.combos.push(d),await y(b),d}async function ab(a,b){let c=await z();c.data.combos||(c.data.combos=[]);let d=c.data.combos.findIndex(b=>b.id===a);return -1===d?null:(c.data.combos[d]={...c.data.combos[d],...b,updatedAt:new Date().toISOString()},await y(c),c.data.combos[d])}async function ac(a){let b=await z();if(!b.data.combos)return!1;let c=b.data.combos.findIndex(b=>b.id===a);return -1!==c&&(b.data.combos.splice(c,1),await y(b),!0)}async function ad(a={}){let b=(await z()).data.apiKeys||[];return void 0!==a.userId&&(b=b.filter(b=>b.userId===a.userId)),a.includeUnassigned||a.forCurrentUser&&(b=b.filter(b=>b.userId===a.forCurrentUser)),b}async function ae(a){return(await z()).data.apiKeys.find(b=>b.id===a)||null}async function af(a){return(await z()).data.apiKeys.find(b=>b.key===a)||null}async function ag(a,b){let c=await z(),d=c.data.apiKeys.find(b=>b.id===a);return d?(d.userId=b,d.assignedAt=new Date().toISOString(),await y(c),d):null}async function ah(a){let b=await z(),c=b.data.apiKeys.find(b=>b.id===a);return!!c&&(c.userId=null,c.assignedAt=null,await y(b),!0)}async function ai(){return((await z()).data.users||[]).map(a=>({...a,passwordHash:void 0}))}async function aj(a){let b=((await z()).data.users||[]).find(b=>b.id===a);return b?{...b,passwordHash:void 0}:null}async function ak(a){return((await z()).data.users||[]).find(b=>b.username===a)||null}async function al({username:a,passwordHash:b,role:c="sub_user",permissions:d=[],displayName:e="",allowedProviders:g,allowedProviderConnectionIds:h,showQuotaTracker:i=!0,providerThinking:j={}}){let k=await z();if(k.data.users||(k.data.users=[]),k.data.users.some(b=>b.username===a))throw Error("Username already exists");let l=new Date().toISOString(),m={id:(0,f.A)(),username:a,passwordHash:b,role:c,permissions:d,displayName:e||a,showQuotaTracker:i,providerThinking:j,createdAt:l,updatedAt:l};return void 0!==g&&(m.allowedProviders=g),void 0!==h&&(m.allowedProviderConnectionIds=h),k.data.users.push(m),await y(k),{...m,passwordHash:void 0}}async function am(a,b){let c=await z();if(!c.data.users)return null;let d=c.data.users.findIndex(b=>b.id===a);if(-1===d)return null;let{passwordHash:e,...f}=b;return c.data.users[d]={...c.data.users[d],...f,updatedAt:new Date().toISOString()},e&&(c.data.users[d].passwordHash=e),await y(c),{...c.data.users[d],passwordHash:void 0}}async function an(a){let b=await z();if(!b.data.users)return!1;let c=b.data.users.findIndex(b=>b.id===a);if(-1===c)return!1;for(let d of(b.data.users.splice(c,1),b.data.apiKeys||[]))d.userId===a&&(d.userId=null,d.assignedAt=null);return await y(b),!0}async function ao(a,b){if(!b)throw Error("machineId is required");let d=await z(),e=new Date().toISOString(),{generateApiKeyWithMachine:g}=await c.e(6844).then(c.bind(c,86844)),h=g(b),i={id:(0,f.A)(),name:a,key:h.key,machineId:b,isActive:!0,createdAt:e};return d.data.apiKeys.push(i),await y(d),i}async function ap(a,b){let c=await z(),d=c.data.apiKeys.findIndex(b=>b.id===a);return -1===d?null:(c.data.apiKeys[d]={...c.data.apiKeys[d],...b},await y(c),c.data.apiKeys[d])}async function aq(a){let b=(await z()).data.apiKeys.find(b=>b.key===a);return b&&!1!==b.isActive}async function ar(){let a=await z(),b=["displayName","email","globalPriority","defaultModel","accessToken","refreshToken","expiresAt","tokenType","scope","projectId","apiKey","testStatus","lastTested","lastError","lastErrorAt","rateLimitedUntil","expiresIn","consecutiveUseCount"],c=0;for(let d of a.data.providerConnections){for(let a of b)(null===d[a]||void 0===d[a])&&(delete d[a],c++);d.providerSpecificData&&0===Object.keys(d.providerSpecificData).length&&(delete d.providerSpecificData,c++)}return c>0&&await y(a),c}async function as(){return(await z()).data.settings||{cloudEnabled:!1}}async function at(a){let b=await z();return b.data.settings={...b.data.settings,...a},await y(b),b.data.settings}async function au(){return(await z()).data||q()}async function av(a){if(!a||"object"!=typeof a||Array.isArray(a))throw Error("Invalid database payload");let{data:b}=r({...q(),...a,settings:{...q().settings,...a.settings&&"object"==typeof a.settings&&!Array.isArray(a.settings)?a.settings:{}}}),c=await z();return c.data=b,await y(c),c.data}async function aw(){let a=(await z()).data.pricing||{},{PROVIDER_PRICING:b}=await c.e(7341).then(c.bind(c,57341)),d={};for(let[c,e]of Object.entries(b))if(d[c]={...e},a[c])for(let[b,e]of Object.entries(a[c]))d[c][b]=d[c][b]?{...d[c][b],...e}:e;for(let[b,c]of Object.entries(a))if(d[b])for(let[a,e]of Object.entries(c))d[b][a]||(d[b][a]=e);else d[b]={...c};return d}async function ax(a,b){if(!b)return null;let d=(await z()).data.pricing||{};if(a&&d[a]?.[b])return d[a][b];if(!n&&o&&j().existsSync(o))try{let a=JSON.parse(j().readFileSync(o,"utf-8")),c=Array.isArray(a?.data)?a.data:[],d=new Set([b,b.includes("/")?b.split("/").pop():b].filter(Boolean)),e=c.find(a=>{let b=String(a?.id||""),c=String(a?.canonical_slug||"");return[...d].some(a=>b===a||c===a||b.endsWith(`/${a}`)||c.endsWith(`/${a}`))});if(e?.pricing){let a=Number(e.pricing.prompt),b=Number(e.pricing.completion),c=Number(e.pricing.input_cache_read),d=Number(e.pricing.internal_reasoning),f=Number(e.pricing.input_cache_write);if(!Number.isNaN(a)&&!Number.isNaN(b))return{input:1e6*a,output:1e6*b,cached:Number.isNaN(c)?1e6*a:1e6*c,reasoning:Number.isNaN(d)?1e6*b:1e6*d,cache_creation:Number.isNaN(f)?1e6*a:1e6*f}}}catch{}let{getPricingForModel:e}=await c.e(7341).then(c.bind(c,57341));return e(a,b)}async function ay(a){let b=await z();for(let[c,d]of(b.data.pricing||(b.data.pricing={}),Object.entries(a)))for(let[a,e]of(b.data.pricing[c]||(b.data.pricing[c]={}),Object.entries(d)))b.data.pricing[c][a]=e;return await y(b),b.data.pricing}async function az(a,b){let c=await z();return c.data.pricing||(c.data.pricing={}),b?c.data.pricing[a]&&(delete c.data.pricing[a][b],0===Object.keys(c.data.pricing[a]).length&&delete c.data.pricing[a]):delete c.data.pricing[a],await y(c),c.data.pricing}async function aA(){let a=await z();return a.data.pricing={},await y(a),a.data.pricing}}};
@@ -1 +1 @@
1
- globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/XHWEINo8HqIhskxHTrvjk/_buildManifest.js","static/XHWEINo8HqIhskxHTrvjk/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-b9b0d264958323b9.js","static/chunks/4bd1b696-e356ca5ba0218e27.js","static/chunks/3794-ba2500baa4c52d55.js","static/chunks/main-app-d5f2701c08554961.js"],rootMainFilesTree:{},pages:{"/_app":[]}};
1
+ globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/9qtW6KlzV_D2b828CZp1A/_buildManifest.js","static/9qtW6KlzV_D2b828CZp1A/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-b9b0d264958323b9.js","static/chunks/4bd1b696-e356ca5ba0218e27.js","static/chunks/3794-ba2500baa4c52d55.js","static/chunks/main-app-d5f2701c08554961.js"],rootMainFilesTree:{},pages:{"/_app":[]}};