@yina-npm/openrouterx 0.4.6 → 0.4.7

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 (313) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/app-path-routes-manifest.json +3 -3
  3. package/app/.next/build-manifest.json +2 -2
  4. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  5. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  6. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  7. package/app/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  21. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  22. package/app/.next/server/app/_global-error.html +1 -1
  23. package/app/.next/server/app/_global-error.rsc +1 -1
  24. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  25. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  26. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  27. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  28. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  29. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  30. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  31. package/app/.next/server/app/_not-found.html +1 -1
  32. package/app/.next/server/app/_not-found.rsc +3 -3
  33. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  34. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  35. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
  36. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  37. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  38. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  39. package/app/.next/server/app/api/auth/login/route.js.nft.json +1 -1
  40. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  41. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  42. package/app/.next/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  43. package/app/.next/server/app/api/cloud/auth/route.js.nft.json +1 -1
  44. package/app/.next/server/app/api/cloud/credentials/update/route.js.nft.json +1 -1
  45. package/app/.next/server/app/api/cloud/model/resolve/route.js.nft.json +1 -1
  46. package/app/.next/server/app/api/cloud/models/alias/route.js.nft.json +1 -1
  47. package/app/.next/server/app/api/combos/[id]/route.js.nft.json +1 -1
  48. package/app/.next/server/app/api/combos/route.js.nft.json +1 -1
  49. package/app/.next/server/app/api/init/route.js.nft.json +1 -1
  50. package/app/.next/server/app/api/keys/[id]/route.js.nft.json +1 -1
  51. package/app/.next/server/app/api/keys/route.js.nft.json +1 -1
  52. package/app/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  53. package/app/.next/server/app/api/models/alias/route.js.nft.json +1 -1
  54. package/app/.next/server/app/api/models/availability/route.js.nft.json +1 -1
  55. package/app/.next/server/app/api/models/custom/route.js.nft.json +1 -1
  56. package/app/.next/server/app/api/models/route.js +1 -1
  57. package/app/.next/server/app/api/models/route.js.nft.json +1 -1
  58. package/app/.next/server/app/api/models/test/route.js.nft.json +1 -1
  59. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  60. package/app/.next/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  61. package/app/.next/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  62. package/app/.next/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  63. package/app/.next/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  64. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  65. package/app/.next/server/app/api/pricing/route.js.nft.json +1 -1
  66. package/app/.next/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  67. package/app/.next/server/app/api/provider-nodes/route.js.nft.json +1 -1
  68. package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  69. package/app/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
  70. package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  71. package/app/.next/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  72. package/app/.next/server/app/api/providers/client/route.js.nft.json +1 -1
  73. package/app/.next/server/app/api/providers/route.js +1 -1
  74. package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
  75. package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  76. package/app/.next/server/app/api/providers/validate/route.js.nft.json +1 -1
  77. package/app/.next/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  78. package/app/.next/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  79. package/app/.next/server/app/api/proxy-pools/route.js.nft.json +1 -1
  80. package/app/.next/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  81. package/app/.next/server/app/api/settings/database/route.js.nft.json +1 -1
  82. package/app/.next/server/app/api/settings/require-login/route.js.nft.json +1 -1
  83. package/app/.next/server/app/api/settings/route.js.nft.json +1 -1
  84. package/app/.next/server/app/api/translator/console-logs/route.js +1 -1
  85. package/app/.next/server/app/api/translator/console-logs/stream/route.js +1 -1
  86. package/app/.next/server/app/api/translator/send/route.js.nft.json +1 -1
  87. package/app/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
  88. package/app/.next/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  89. package/app/.next/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  90. package/app/.next/server/app/api/tunnel/status/route.js.nft.json +1 -1
  91. package/app/.next/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  92. package/app/.next/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  93. package/app/.next/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  94. package/app/.next/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  95. package/app/.next/server/app/api/tunnel/tailscale-login/route.js.nft.json +1 -1
  96. package/app/.next/server/app/api/tunnel/tailscale-start-daemon/route.js.nft.json +1 -1
  97. package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  98. package/app/.next/server/app/api/usage/chart/route.js.nft.json +1 -1
  99. package/app/.next/server/app/api/usage/history/route.js.nft.json +1 -1
  100. package/app/.next/server/app/api/usage/logs/route.js.nft.json +1 -1
  101. package/app/.next/server/app/api/usage/providers/route.js.nft.json +1 -1
  102. package/app/.next/server/app/api/usage/request-details/route.js.nft.json +1 -1
  103. package/app/.next/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  104. package/app/.next/server/app/api/usage/stats/route.js.nft.json +1 -1
  105. package/app/.next/server/app/api/usage/stream/route.js.nft.json +1 -1
  106. package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  107. package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  108. package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  109. package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  110. package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  111. package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
  112. package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
  113. package/app/.next/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  114. package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
  115. package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  116. package/app/.next/server/app/api/version/route.js +1 -1
  117. package/app/.next/server/app/api/version/update/route.js +1 -1
  118. package/app/.next/server/app/api/version/update/route.js.nft.json +1 -1
  119. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  120. package/app/.next/server/app/callback.html +1 -1
  121. package/app/.next/server/app/callback.rsc +3 -3
  122. package/app/.next/server/app/callback.segments/_full.segment.rsc +3 -3
  123. package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
  124. package/app/.next/server/app/callback.segments/_index.segment.rsc +3 -3
  125. package/app/.next/server/app/callback.segments/_tree.segment.rsc +1 -1
  126. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  127. package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
  128. package/app/.next/server/app/dashboard/basic-chat.html +1 -1
  129. package/app/.next/server/app/dashboard/basic-chat.rsc +5 -5
  130. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  131. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  132. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  133. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  134. package/app/.next/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
  135. package/app/.next/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  136. package/app/.next/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
  137. package/app/.next/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  138. package/app/.next/server/app/dashboard/cli-tools.html +1 -1
  139. package/app/.next/server/app/dashboard/cli-tools.rsc +5 -5
  140. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  141. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  142. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  143. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  144. package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
  145. package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  146. package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
  147. package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  148. package/app/.next/server/app/dashboard/combos.html +1 -1
  149. package/app/.next/server/app/dashboard/combos.rsc +5 -5
  150. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  151. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  152. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  153. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  154. package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
  155. package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  156. package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
  157. package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  158. package/app/.next/server/app/dashboard/endpoint.html +1 -1
  159. package/app/.next/server/app/dashboard/endpoint.rsc +5 -5
  160. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  161. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  162. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  163. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  164. package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
  165. package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  166. package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
  167. package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  168. package/app/.next/server/app/dashboard/mitm.html +1 -1
  169. package/app/.next/server/app/dashboard/mitm.rsc +5 -5
  170. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  171. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  172. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  173. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  174. package/app/.next/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
  175. package/app/.next/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  176. package/app/.next/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
  177. package/app/.next/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  178. package/app/.next/server/app/dashboard/profile.html +1 -1
  179. package/app/.next/server/app/dashboard/profile.rsc +5 -5
  180. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  181. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  182. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  183. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  184. package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
  185. package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  186. package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
  187. package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  188. package/app/.next/server/app/dashboard/providers/new.html +1 -1
  189. package/app/.next/server/app/dashboard/providers/new.rsc +5 -5
  190. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  191. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  192. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  193. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  194. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  195. package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
  196. package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  197. package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
  198. package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  199. package/app/.next/server/app/dashboard/providers.html +1 -1
  200. package/app/.next/server/app/dashboard/providers.rsc +5 -5
  201. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  202. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  203. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  204. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  205. package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
  206. package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  207. package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
  208. package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  209. package/app/.next/server/app/dashboard/proxy-pools.html +1 -1
  210. package/app/.next/server/app/dashboard/proxy-pools.rsc +5 -5
  211. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  212. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  213. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  214. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  215. package/app/.next/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
  216. package/app/.next/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  217. package/app/.next/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
  218. package/app/.next/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  219. package/app/.next/server/app/dashboard/quota.html +2 -2
  220. package/app/.next/server/app/dashboard/quota.rsc +6 -6
  221. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  222. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  223. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  224. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  225. package/app/.next/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
  226. package/app/.next/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  227. package/app/.next/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
  228. package/app/.next/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  229. package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  230. package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
  231. package/app/.next/server/app/dashboard/settings/pricing.rsc +3 -3
  232. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  233. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  234. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
  235. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  236. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  237. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  238. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  239. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  240. package/app/.next/server/app/dashboard/translator.html +1 -1
  241. package/app/.next/server/app/dashboard/translator.rsc +5 -5
  242. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  243. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  244. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  245. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  246. package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
  247. package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  248. package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
  249. package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  250. package/app/.next/server/app/dashboard/usage.html +1 -1
  251. package/app/.next/server/app/dashboard/usage.rsc +5 -5
  252. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  253. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  254. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  255. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  256. package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
  257. package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  258. package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
  259. package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  260. package/app/.next/server/app/dashboard.html +1 -1
  261. package/app/.next/server/app/dashboard.rsc +5 -5
  262. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  263. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  264. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  265. package/app/.next/server/app/dashboard.segments/_full.segment.rsc +5 -5
  266. package/app/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
  267. package/app/.next/server/app/dashboard.segments/_index.segment.rsc +3 -3
  268. package/app/.next/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  269. package/app/.next/server/app/index.html +1 -1
  270. package/app/.next/server/app/index.rsc +3 -3
  271. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  272. package/app/.next/server/app/index.segments/_full.segment.rsc +3 -3
  273. package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
  274. package/app/.next/server/app/index.segments/_index.segment.rsc +3 -3
  275. package/app/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  276. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  277. package/app/.next/server/app/landing.html +1 -1
  278. package/app/.next/server/app/landing.rsc +3 -3
  279. package/app/.next/server/app/landing.segments/_full.segment.rsc +3 -3
  280. package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
  281. package/app/.next/server/app/landing.segments/_index.segment.rsc +3 -3
  282. package/app/.next/server/app/landing.segments/_tree.segment.rsc +1 -1
  283. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  284. package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
  285. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  286. package/app/.next/server/app/login.html +1 -1
  287. package/app/.next/server/app/login.rsc +4 -4
  288. package/app/.next/server/app/login.segments/_full.segment.rsc +4 -4
  289. package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
  290. package/app/.next/server/app/login.segments/_index.segment.rsc +3 -3
  291. package/app/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  292. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  293. package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
  294. package/app/.next/server/app/page.js.nft.json +1 -1
  295. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  296. package/app/.next/server/app-paths-manifest.json +3 -3
  297. package/app/.next/server/chunks/318.js +1 -1
  298. package/app/.next/server/chunks/4122.js +1 -1
  299. package/app/.next/server/chunks/5599.js +1 -1
  300. package/app/.next/server/chunks/7595.js +1 -1
  301. package/app/.next/server/chunks/9501.js +1 -1
  302. package/app/.next/server/middleware-build-manifest.js +1 -1
  303. package/app/.next/server/pages/404.html +1 -1
  304. package/app/.next/server/pages/500.html +1 -1
  305. package/app/.next/static/chunks/{1321-b4c371298c1c015b.js → 1321-c5a3513d1c657677.js} +1 -1
  306. package/app/.next/static/chunks/{698-4a7e1c24d20242fc.js → 698-646ba5259113c1a0.js} +4 -4
  307. package/app/package.json +1 -1
  308. package/app/src/mitm/handlers/openrouter.js +23 -16
  309. package/app/src/mitm/manager.js +1 -57
  310. package/app/src/mitm/models.json +244 -0
  311. package/package.json +1 -1
  312. /package/app/.next/static/{8OXtyzXXo02arEnH4hahP → GWqgJg45jqUgh4iLz365f}/_buildManifest.js +0 -0
  313. /package/app/.next/static/{8OXtyzXXo02arEnH4hahP → GWqgJg45jqUgh4iLz365f}/_ssgManifest.js +0 -0
package/app/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "9router-app",
3
- "version": "0.4.6",
3
+ "version": "0.4.7",
4
4
  "description": "9Router web dashboard",
5
5
  "private": true,
6
6
  "scripts": {
@@ -1,3 +1,5 @@
1
+ const fs = require("node:fs");
2
+ const path = require("node:path");
1
3
  const { err } = require("../logger");
2
4
  const { fetchRouter, pipeSSE } = require("./base");
3
5
 
@@ -19,6 +21,21 @@ function isModelsRequest(reqUrl) {
19
21
  return reqUrl.includes("/models") || reqUrl.includes("/api/v1/models");
20
22
  }
21
23
 
24
+ function getLocalModelsPayload() {
25
+ const modelsPath = path.join(__dirname, "..", "models.json");
26
+ return fs.readFileSync(modelsPath, "utf8");
27
+ }
28
+
29
+ function sendJsonPayload(res, payload) {
30
+ if (res.writableEnded) return;
31
+ res.writeHead(200, {
32
+ "Content-Type": "application/json; charset=utf-8",
33
+ "Cache-Control": "public, max-age=300",
34
+ "Content-Length": Buffer.byteLength(payload),
35
+ });
36
+ res.end(payload);
37
+ }
38
+
22
39
  function buildInjectedModel(publicModelId) {
23
40
  const [provider = "openrouter"] = String(publicModelId || "").split("/");
24
41
  return {
@@ -70,24 +87,14 @@ function injectPublicModels(payload, aliasMappings = {}) {
70
87
  }
71
88
 
72
89
  async function handleModelsRequest(req, res, bodyBuffer, passthrough, aliasMappings) {
73
- if (typeof passthrough !== "function") {
90
+ try {
91
+ const payload = getLocalModelsPayload();
92
+ sendJsonPayload(res, payload);
93
+ } catch (error) {
94
+ err(`[openrouter] local models response failed: ${error.message}`);
74
95
  if (!res.headersSent) res.writeHead(500, { "Content-Type": "application/json" });
75
- res.end(JSON.stringify({ error: { message: "Passthrough unavailable for models request", type: "mitm_error" } }));
76
- return;
96
+ if (!res.writableEnded) res.end(JSON.stringify({ error: { message: error.message, type: "mitm_error" } }));
77
97
  }
78
-
79
- await passthrough(req, res, bodyBuffer, (rawBuffer) => {
80
- try {
81
- const upstream = JSON.parse(rawBuffer.toString() || "{}");
82
- const merged = injectPublicModels(upstream, aliasMappings);
83
- res.writeHead(200, { "Content-Type": "application/json" });
84
- res.end(JSON.stringify(merged));
85
- } catch (error) {
86
- err(`[openrouter] models response rewrite failed: ${error.message}`);
87
- if (!res.headersSent) res.writeHead(500, { "Content-Type": "application/json" });
88
- res.end(JSON.stringify({ error: { message: error.message, type: "mitm_error" } }));
89
- }
90
- });
91
98
  }
92
99
 
93
100
  /**
@@ -59,63 +59,7 @@ function resolveBundledServerPath() {
59
59
  return fromCwd;
60
60
  }
61
61
 
62
- function getMitmSourceFiles(dir) {
63
- const files = [];
64
- const stack = [dir];
65
-
66
- while (stack.length > 0) {
67
- const current = stack.pop();
68
- for (const entry of fs.readdirSync(current, { withFileTypes: true })) {
69
- const fullPath = path.join(current, entry.name);
70
- if (entry.isDirectory()) {
71
- stack.push(fullPath);
72
- } else if (entry.isFile()) {
73
- files.push(fullPath);
74
- }
75
- }
76
- }
77
-
78
- files.sort();
79
- return files;
80
- }
81
-
82
- function getMitmSourceSignature(dir) {
83
- return getMitmSourceFiles(dir)
84
- .map((file) => `${path.relative(dir, file)}:${fs.statSync(file).size}:${Math.floor(fs.statSync(file).mtimeMs)}`)
85
- .join("|");
86
- }
87
-
88
- function ensureRuntimeServer(bundledPath) {
89
- try {
90
- if (!bundledPath || !fs.existsSync(bundledPath)) return bundledPath;
91
- if (!bundledPath.includes(`${path.sep}node_modules${path.sep}`)) {
92
- return bundledPath;
93
- }
94
-
95
- const sourceDir = path.dirname(bundledPath);
96
- const runtimeDir = path.join(DATA_DIR, "runtime", "mitm");
97
- const runtimeServer = path.join(runtimeDir, "server.js");
98
- const signatureFile = path.join(runtimeDir, ".runtime-signature");
99
- const sourceSignature = getMitmSourceSignature(sourceDir);
100
-
101
- if (fs.existsSync(runtimeServer) && fs.existsSync(signatureFile)) {
102
- try {
103
- if (fs.readFileSync(signatureFile, "utf8") === sourceSignature) return runtimeServer;
104
- } catch { /* recopy */ }
105
- }
106
-
107
- fs.rmSync(runtimeDir, { recursive: true, force: true });
108
- fs.mkdirSync(runtimeDir, { recursive: true });
109
- fs.cpSync(sourceDir, runtimeDir, { recursive: true, force: true });
110
- fs.writeFileSync(signatureFile, sourceSignature);
111
- return runtimeServer;
112
- } catch (e) {
113
- try { log(`[MITM] runtime copy failed: ${e.message}`); } catch { /* ignore */ }
114
- return bundledPath;
115
- }
116
- }
117
-
118
- const SERVER_PATH = ensureRuntimeServer(resolveBundledServerPath());
62
+ const SERVER_PATH = resolveBundledServerPath();
119
63
  const ENCRYPT_ALGO = "aes-256-gcm";
120
64
  const ENCRYPT_SALT = "9router-mitm-pwd";
121
65
 
@@ -0,0 +1,244 @@
1
+ {
2
+ "data": [
3
+ {
4
+ "id": "openai/gpt-5.4",
5
+ "canonical_slug": "openai/gpt-5.4-20260305",
6
+ "hugging_face_id": "",
7
+ "name": "OpenAI: GPT-5.4",
8
+ "created": 1772734352,
9
+ "description": "GPT-5.4 is OpenAI’s latest frontier model, unifying the Codex and GPT lines into a single system. It features a 1M+ token context window (922K input, 128K output) with support for...",
10
+ "context_length": 1050000,
11
+ "architecture": {
12
+ "modality": "text+image+file->text",
13
+ "input_modalities": [
14
+ "text",
15
+ "image",
16
+ "file"
17
+ ],
18
+ "output_modalities": [
19
+ "text"
20
+ ],
21
+ "tokenizer": "GPT",
22
+ "instruct_type": null
23
+ },
24
+ "pricing": {
25
+ "prompt": "0.0000025",
26
+ "completion": "0.000015",
27
+ "web_search": "0.01",
28
+ "input_cache_read": "0.00000025"
29
+ },
30
+ "top_provider": {
31
+ "context_length": 1050000,
32
+ "max_completion_tokens": 128000,
33
+ "is_moderated": false
34
+ },
35
+ "per_request_limits": null,
36
+ "supported_parameters": [
37
+ "include_reasoning",
38
+ "max_completion_tokens",
39
+ "max_tokens",
40
+ "reasoning",
41
+ "response_format",
42
+ "seed",
43
+ "structured_outputs",
44
+ "tool_choice",
45
+ "tools"
46
+ ],
47
+ "default_parameters": {
48
+ "temperature": null,
49
+ "top_p": null,
50
+ "top_k": null,
51
+ "frequency_penalty": null,
52
+ "presence_penalty": null,
53
+ "repetition_penalty": null
54
+ },
55
+ "knowledge_cutoff": null,
56
+ "expiration_date": null,
57
+ "links": {
58
+ "details": "/api/v1/models/openai/gpt-5.4-20260305/endpoints"
59
+ }
60
+ },
61
+ {
62
+ "id": "openai/gpt-5.5",
63
+ "canonical_slug": "openai/gpt-5.5",
64
+ "hugging_face_id": "",
65
+ "name": "OpenAI: GPT-5.5",
66
+ "created": 1772734352,
67
+ "description": "GPT-5.5 is OpenAI’s latest frontier model, unifying the Codex and GPT lines into a single system. It features a 1M+ token context window (922K input, 128K output) with support for...",
68
+ "context_length": 1050000,
69
+ "architecture": {
70
+ "modality": "text+image+file->text",
71
+ "input_modalities": [
72
+ "text",
73
+ "image",
74
+ "file"
75
+ ],
76
+ "output_modalities": [
77
+ "text"
78
+ ],
79
+ "tokenizer": "GPT",
80
+ "instruct_type": null
81
+ },
82
+ "pricing": {
83
+ "prompt": "0.0000025",
84
+ "completion": "0.000015",
85
+ "web_search": "0.01",
86
+ "input_cache_read": "0.00000025"
87
+ },
88
+ "top_provider": {
89
+ "context_length": 1050000,
90
+ "max_completion_tokens": 128000,
91
+ "is_moderated": false
92
+ },
93
+ "per_request_limits": null,
94
+ "supported_parameters": [
95
+ "include_reasoning",
96
+ "max_completion_tokens",
97
+ "max_tokens",
98
+ "reasoning",
99
+ "response_format",
100
+ "seed",
101
+ "structured_outputs",
102
+ "tool_choice",
103
+ "tools"
104
+ ],
105
+ "default_parameters": {
106
+ "temperature": null,
107
+ "top_p": null,
108
+ "top_k": null,
109
+ "frequency_penalty": null,
110
+ "presence_penalty": null,
111
+ "repetition_penalty": null
112
+ },
113
+ "knowledge_cutoff": null,
114
+ "expiration_date": null,
115
+ "links": {
116
+ "details": "/api/v1/models/openai/gpt-5.5/endpoints"
117
+ }
118
+ },
119
+ {
120
+ "id": "anthropic/claude-sonnet-4.6",
121
+ "canonical_slug": "anthropic/claude-4.6-sonnet-20260217",
122
+ "hugging_face_id": "",
123
+ "name": "Anthropic: Claude Sonnet 4.6",
124
+ "created": 1771342990,
125
+ "description": "Sonnet 4.6 is Anthropic's most capable Sonnet-class model yet, with frontier performance across coding, agents, and professional work. It excels at iterative development, complex codebase navigation, end-to-end project management with...",
126
+ "context_length": 1000000,
127
+ "architecture": {
128
+ "modality": "text+image->text",
129
+ "input_modalities": [
130
+ "text",
131
+ "image"
132
+ ],
133
+ "output_modalities": [
134
+ "text"
135
+ ],
136
+ "tokenizer": "Claude",
137
+ "instruct_type": null
138
+ },
139
+ "pricing": {
140
+ "prompt": "0.000003",
141
+ "completion": "0.000015",
142
+ "web_search": "0.01",
143
+ "input_cache_read": "0.0000003",
144
+ "input_cache_write": "0.00000375"
145
+ },
146
+ "top_provider": {
147
+ "context_length": 1000000,
148
+ "max_completion_tokens": 128000,
149
+ "is_moderated": true
150
+ },
151
+ "per_request_limits": null,
152
+ "supported_parameters": [
153
+ "include_reasoning",
154
+ "max_completion_tokens",
155
+ "max_tokens",
156
+ "reasoning",
157
+ "response_format",
158
+ "stop",
159
+ "structured_outputs",
160
+ "temperature",
161
+ "tool_choice",
162
+ "tools",
163
+ "top_k",
164
+ "top_p",
165
+ "verbosity"
166
+ ],
167
+ "default_parameters": {
168
+ "temperature": null,
169
+ "top_p": null,
170
+ "top_k": null,
171
+ "frequency_penalty": null,
172
+ "presence_penalty": null,
173
+ "repetition_penalty": null
174
+ },
175
+ "knowledge_cutoff": null,
176
+ "expiration_date": null,
177
+ "links": {
178
+ "details": "/api/v1/models/anthropic/claude-4.6-sonnet-20260217/endpoints"
179
+ }
180
+ },
181
+ {
182
+ "id": "anthropic/claude-sonnet-4.7",
183
+ "canonical_slug": "anthropic/claude-4.7-sonnet",
184
+ "hugging_face_id": "",
185
+ "name": "Anthropic: Claude Sonnet 4.7",
186
+ "created": 1771342990,
187
+ "description": "Sonnet 4.7 is Anthropic's most capable Sonnet-class model yet, with frontier performance across coding, agents, and professional work. It excels at iterative development, complex codebase navigation, end-to-end project management with...",
188
+ "context_length": 1000000,
189
+ "architecture": {
190
+ "modality": "text+image->text",
191
+ "input_modalities": [
192
+ "text",
193
+ "image"
194
+ ],
195
+ "output_modalities": [
196
+ "text"
197
+ ],
198
+ "tokenizer": "Claude",
199
+ "instruct_type": null
200
+ },
201
+ "pricing": {
202
+ "prompt": "0.000003",
203
+ "completion": "0.000015",
204
+ "web_search": "0.01",
205
+ "input_cache_read": "0.0000003",
206
+ "input_cache_write": "0.00000375"
207
+ },
208
+ "top_provider": {
209
+ "context_length": 1000000,
210
+ "max_completion_tokens": 128000,
211
+ "is_moderated": true
212
+ },
213
+ "per_request_limits": null,
214
+ "supported_parameters": [
215
+ "include_reasoning",
216
+ "max_completion_tokens",
217
+ "max_tokens",
218
+ "reasoning",
219
+ "response_format",
220
+ "stop",
221
+ "structured_outputs",
222
+ "temperature",
223
+ "tool_choice",
224
+ "tools",
225
+ "top_k",
226
+ "top_p",
227
+ "verbosity"
228
+ ],
229
+ "default_parameters": {
230
+ "temperature": null,
231
+ "top_p": null,
232
+ "top_k": null,
233
+ "frequency_penalty": null,
234
+ "presence_penalty": null,
235
+ "repetition_penalty": null
236
+ },
237
+ "knowledge_cutoff": null,
238
+ "expiration_date": null,
239
+ "links": {
240
+ "details": "/api/v1/models/anthropic/claude-4.7-sonnet/endpoints"
241
+ }
242
+ }
243
+ ]
244
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yina-npm/openrouterx",
3
- "version": "0.4.6",
3
+ "version": "0.4.7",
4
4
  "description": "openrouterX CLI - Start and manage 9Router server",
5
5
  "bin": {
6
6
  "openrouterX": "./cli.js"