@amir83nasr/10router 0.1.0 → 0.1.3

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 (590) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +4 -4
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/next-server.js.nft.json +1 -1
  5. package/.next/prerender-manifest.json +4 -4
  6. package/.next/required-server-files.json +5 -5
  7. package/.next/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
  8. package/.next/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  9. package/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +2 -2
  11. package/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  12. package/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  13. package/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
  14. package/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  15. package/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  16. package/.next/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  17. package/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  18. package/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  19. package/.next/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
  20. package/.next/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  21. package/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  22. package/.next/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
  23. package/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  24. package/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  25. package/.next/server/app/(dashboard)/dashboard/media-providers/systemone/[id]/page.js +2 -2
  26. package/.next/server/app/(dashboard)/dashboard/media-providers/systemone/[id]/page.js.nft.json +1 -1
  27. package/.next/server/app/(dashboard)/dashboard/media-providers/systemone/[id]/page_client-reference-manifest.js +1 -1
  28. package/.next/server/app/(dashboard)/dashboard/media-providers/systemone/page.js +1 -1
  29. package/.next/server/app/(dashboard)/dashboard/media-providers/systemone/page.js.nft.json +1 -1
  30. package/.next/server/app/(dashboard)/dashboard/media-providers/systemone/page_client-reference-manifest.js +1 -1
  31. package/.next/server/app/(dashboard)/dashboard/page.js +1 -1
  32. package/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  33. package/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  34. package/.next/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  35. package/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  36. package/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  37. package/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  38. package/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  39. package/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  40. package/.next/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  41. package/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  42. package/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  43. package/.next/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  44. package/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  45. package/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  46. package/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js +2 -2
  47. package/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  48. package/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  49. package/.next/server/app/(dashboard)/dashboard/pxpipe/page.js +1 -1
  50. package/.next/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  51. package/.next/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  52. package/.next/server/app/(dashboard)/dashboard/quota/page.js +1 -1
  53. package/.next/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  54. package/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  55. package/.next/server/app/(dashboard)/dashboard/token-saver/page.js +1 -1
  56. package/.next/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  57. package/.next/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  58. package/.next/server/app/(dashboard)/dashboard/usage/page.js +1 -1
  59. package/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  60. package/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  61. package/.next/server/app/_global-error/page.js +2 -2
  62. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  63. package/.next/server/app/_global-error.html +1 -1
  64. package/.next/server/app/_global-error.rsc +1 -1
  65. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  66. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  67. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  68. package/.next/server/app/_not-found/page.js +1 -1
  69. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  70. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  71. package/.next/server/app/_not-found.html +1 -1
  72. package/.next/server/app/_not-found.rsc +7 -7
  73. package/.next/server/app/_not-found.segments/_full.segment.rsc +7 -7
  74. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +7 -7
  75. package/.next/server/app/_not-found.segments/_tree.segment.rsc +3 -3
  76. package/.next/server/app/api/auth/login/route.js +1 -1
  77. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  78. package/.next/server/app/api/auth/logout/route.js +1 -1
  79. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/auth/oidc/callback/route.js +1 -1
  81. package/.next/server/app/api/auth/oidc/callback/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/auth/oidc/start/route.js +1 -1
  83. package/.next/server/app/api/auth/oidc/start/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/auth/oidc/test/route.js +1 -1
  85. package/.next/server/app/api/auth/oidc/test/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/auth/reset-password/route.js +1 -1
  87. package/.next/server/app/api/auth/reset-password/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/auth/saml/acs/route.js +1 -1
  89. package/.next/server/app/api/auth/saml/acs/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/auth/saml/metadata/route.js +2 -2
  91. package/.next/server/app/api/auth/saml/metadata/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/auth/saml/start/route.js +2 -2
  93. package/.next/server/app/api/auth/saml/start/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/auth/saml/test/route.js +2 -2
  95. package/.next/server/app/api/auth/saml/test/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/auth/status/route.js +1 -1
  97. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/changelog/route.js +1 -1
  99. package/.next/server/app/api/changelog/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/cli-tools/all-statuses/route.js +1 -1
  101. package/.next/server/app/api/cli-tools/all-statuses/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/cli-tools/claude-settings/route.js +1 -1
  103. package/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/cli-tools/codex-settings/route.js +2 -2
  105. package/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
  106. package/.next/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
  107. package/.next/server/app/api/cli-tools/cowork-mcp-registry/route_client-reference-manifest.js +1 -1
  108. package/.next/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
  109. package/.next/server/app/api/cli-tools/cowork-mcp-tools/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  111. package/.next/server/app/api/cli-tools/cowork-settings/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/api/cli-tools/dsh-settings/route.js +1 -1
  113. package/.next/server/app/api/cli-tools/dsh-settings/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/cli-tools/opencode-settings/route.js +1 -1
  115. package/.next/server/app/api/cli-tools/opencode-settings/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/api/combos/[id]/route.js +1 -1
  117. package/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
  118. package/.next/server/app/api/combos/route.js +1 -1
  119. package/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/headroom/extras/route.js +1 -1
  121. package/.next/server/app/api/headroom/extras/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/headroom/proxy/[...path]/route.js +1 -1
  123. package/.next/server/app/api/headroom/proxy/[...path]/route_client-reference-manifest.js +1 -1
  124. package/.next/server/app/api/headroom/restart/route.js +1 -1
  125. package/.next/server/app/api/headroom/restart/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/headroom/start/route.js +1 -1
  127. package/.next/server/app/api/headroom/start/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/headroom/status/route.js +1 -1
  129. package/.next/server/app/api/headroom/status/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/headroom/stop/route.js +1 -1
  131. package/.next/server/app/api/headroom/stop/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/health/route.js +1 -1
  133. package/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/init/route.js +1 -1
  135. package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/keys/[id]/route.js +1 -1
  137. package/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/keys/route.js +1 -1
  139. package/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/locale/route.js +1 -1
  141. package/.next/server/app/api/locale/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/mcp/[plugin]/message/route.js +2 -2
  143. package/.next/server/app/api/mcp/[plugin]/message/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/mcp/[plugin]/sse/route.js +2 -2
  145. package/.next/server/app/api/mcp/[plugin]/sse/route_client-reference-manifest.js +1 -1
  146. package/.next/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  147. package/.next/server/app/api/media-providers/tts/deepgram/voices/route_client-reference-manifest.js +1 -1
  148. package/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  149. package/.next/server/app/api/media-providers/tts/elevenlabs/voices/route_client-reference-manifest.js +1 -1
  150. package/.next/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  151. package/.next/server/app/api/media-providers/tts/inworld/voices/route_client-reference-manifest.js +1 -1
  152. package/.next/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  153. package/.next/server/app/api/media-providers/tts/minimax/voices/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/media-providers/tts/voices/route.js +1 -1
  155. package/.next/server/app/api/media-providers/tts/voices/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/api/models/alias/route.js +1 -1
  157. package/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/models/availability/route.js +1 -1
  159. package/.next/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
  160. package/.next/server/app/api/models/catalog-sync/route.js +1 -1
  161. package/.next/server/app/api/models/catalog-sync/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/models/custom/route.js +1 -1
  163. package/.next/server/app/api/models/custom/route_client-reference-manifest.js +1 -1
  164. package/.next/server/app/api/models/disabled/route.js +1 -1
  165. package/.next/server/app/api/models/disabled/route_client-reference-manifest.js +1 -1
  166. package/.next/server/app/api/models/route.js +1 -1
  167. package/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/api/models/test/route.js +1 -1
  169. package/.next/server/app/api/models/test/route_client-reference-manifest.js +1 -1
  170. package/.next/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  171. package/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
  172. package/.next/server/app/api/oauth/codex/bulk-import/route.js +1 -1
  173. package/.next/server/app/api/oauth/codex/bulk-import/route_client-reference-manifest.js +1 -1
  174. package/.next/server/app/api/oauth/codex/import-token/route.js +1 -1
  175. package/.next/server/app/api/oauth/codex/import-token/route_client-reference-manifest.js +1 -1
  176. package/.next/server/app/api/oauth/cursor/auto-import/route.js +2 -2
  177. package/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
  178. package/.next/server/app/api/oauth/cursor/import/route.js +1 -1
  179. package/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
  180. package/.next/server/app/api/oauth/gitlab/pat/route.js +1 -1
  181. package/.next/server/app/api/oauth/gitlab/pat/route_client-reference-manifest.js +1 -1
  182. package/.next/server/app/api/oauth/grok-cli/bulk-import/route.js +1 -1
  183. package/.next/server/app/api/oauth/grok-cli/bulk-import/route_client-reference-manifest.js +1 -1
  184. package/.next/server/app/api/oauth/iflow/cookie/route.js +1 -1
  185. package/.next/server/app/api/oauth/iflow/cookie/route_client-reference-manifest.js +1 -1
  186. package/.next/server/app/api/oauth/xiaomi-mimo/api-key/route.js +1 -1
  187. package/.next/server/app/api/oauth/xiaomi-mimo/api-key/route_client-reference-manifest.js +1 -1
  188. package/.next/server/app/api/oauth/xiaomi-mimo/auto-import/route.js +2 -2
  189. package/.next/server/app/api/oauth/xiaomi-mimo/auto-import/route_client-reference-manifest.js +1 -1
  190. package/.next/server/app/api/pricing/route.js +1 -1
  191. package/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  192. package/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
  193. package/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
  194. package/.next/server/app/api/provider-nodes/route.js +1 -1
  195. package/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
  196. package/.next/server/app/api/provider-nodes/validate/route.js +1 -1
  197. package/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
  198. package/.next/server/app/api/providers/[id]/models/route.js +1 -1
  199. package/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
  200. package/.next/server/app/api/providers/[id]/route.js +1 -1
  201. package/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
  202. package/.next/server/app/api/providers/[id]/test/route.js +1 -1
  203. package/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
  204. package/.next/server/app/api/providers/[id]/test-models/route.js +1 -1
  205. package/.next/server/app/api/providers/[id]/test-models/route_client-reference-manifest.js +1 -1
  206. package/.next/server/app/api/providers/client/route.js +1 -1
  207. package/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
  208. package/.next/server/app/api/providers/kilo/free-models/route.js +1 -1
  209. package/.next/server/app/api/providers/kilo/free-models/route_client-reference-manifest.js +1 -1
  210. package/.next/server/app/api/providers/route.js +1 -1
  211. package/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
  212. package/.next/server/app/api/providers/suggested-models/route.js +1 -1
  213. package/.next/server/app/api/providers/suggested-models/route_client-reference-manifest.js +1 -1
  214. package/.next/server/app/api/providers/test-batch/route.js +1 -1
  215. package/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
  216. package/.next/server/app/api/providers/validate/route.js +1 -1
  217. package/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
  218. package/.next/server/app/api/proxy-pools/[id]/route.js +1 -1
  219. package/.next/server/app/api/proxy-pools/[id]/route_client-reference-manifest.js +1 -1
  220. package/.next/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  221. package/.next/server/app/api/proxy-pools/[id]/test/route_client-reference-manifest.js +1 -1
  222. package/.next/server/app/api/proxy-pools/cloudflare-deploy/route.js +1 -1
  223. package/.next/server/app/api/proxy-pools/cloudflare-deploy/route_client-reference-manifest.js +1 -1
  224. package/.next/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
  225. package/.next/server/app/api/proxy-pools/deno-deploy/route_client-reference-manifest.js +1 -1
  226. package/.next/server/app/api/proxy-pools/route.js +1 -1
  227. package/.next/server/app/api/proxy-pools/route_client-reference-manifest.js +1 -1
  228. package/.next/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
  229. package/.next/server/app/api/proxy-pools/vercel-deploy/route_client-reference-manifest.js +1 -1
  230. package/.next/server/app/api/pxpipe/health/route.js +2 -2
  231. package/.next/server/app/api/pxpipe/health/route_client-reference-manifest.js +1 -1
  232. package/.next/server/app/api/pxpipe/install/route.js +1 -1
  233. package/.next/server/app/api/pxpipe/install/route_client-reference-manifest.js +1 -1
  234. package/.next/server/app/api/pxpipe/logs/route.js +1 -1
  235. package/.next/server/app/api/pxpipe/logs/route_client-reference-manifest.js +1 -1
  236. package/.next/server/app/api/pxpipe/restart/route.js +2 -2
  237. package/.next/server/app/api/pxpipe/restart/route_client-reference-manifest.js +1 -1
  238. package/.next/server/app/api/pxpipe/start/route.js +1 -1
  239. package/.next/server/app/api/pxpipe/start/route_client-reference-manifest.js +1 -1
  240. package/.next/server/app/api/pxpipe/stats/route.js +2 -2
  241. package/.next/server/app/api/pxpipe/stats/route_client-reference-manifest.js +1 -1
  242. package/.next/server/app/api/pxpipe/status/route.js +1 -1
  243. package/.next/server/app/api/pxpipe/status/route_client-reference-manifest.js +1 -1
  244. package/.next/server/app/api/pxpipe/stop/route.js +2 -2
  245. package/.next/server/app/api/pxpipe/stop/route_client-reference-manifest.js +1 -1
  246. package/.next/server/app/api/settings/database/route.js +1 -1
  247. package/.next/server/app/api/settings/database/route_client-reference-manifest.js +1 -1
  248. package/.next/server/app/api/settings/proxy-test/route.js +1 -1
  249. package/.next/server/app/api/settings/proxy-test/route_client-reference-manifest.js +1 -1
  250. package/.next/server/app/api/settings/require-login/route.js +1 -1
  251. package/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
  252. package/.next/server/app/api/settings/route.js +1 -1
  253. package/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  254. package/.next/server/app/api/shutdown/route.js +1 -1
  255. package/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  256. package/.next/server/app/api/tags/route.js +1 -1
  257. package/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
  258. package/.next/server/app/api/translator/console-logs/route.js +1 -1
  259. package/.next/server/app/api/translator/console-logs/route_client-reference-manifest.js +1 -1
  260. package/.next/server/app/api/translator/console-logs/stream/route.js +1 -1
  261. package/.next/server/app/api/translator/console-logs/stream/route_client-reference-manifest.js +1 -1
  262. package/.next/server/app/api/translator/load/route.js +1 -1
  263. package/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
  264. package/.next/server/app/api/translator/save/route.js +1 -1
  265. package/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
  266. package/.next/server/app/api/translator/send/route.js +1 -1
  267. package/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
  268. package/.next/server/app/api/translator/translate/route.js +1 -1
  269. package/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
  270. package/.next/server/app/api/tunnel/disable/route.js +1 -1
  271. package/.next/server/app/api/tunnel/disable/route_client-reference-manifest.js +1 -1
  272. package/.next/server/app/api/tunnel/enable/route.js +1 -1
  273. package/.next/server/app/api/tunnel/enable/route_client-reference-manifest.js +1 -1
  274. package/.next/server/app/api/tunnel/status/route.js +1 -1
  275. package/.next/server/app/api/tunnel/status/route_client-reference-manifest.js +1 -1
  276. package/.next/server/app/api/tunnel/tailscale-check/route.js +1 -1
  277. package/.next/server/app/api/tunnel/tailscale-check/route_client-reference-manifest.js +1 -1
  278. package/.next/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  279. package/.next/server/app/api/tunnel/tailscale-disable/route_client-reference-manifest.js +1 -1
  280. package/.next/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  281. package/.next/server/app/api/tunnel/tailscale-enable/route_client-reference-manifest.js +1 -1
  282. package/.next/server/app/api/tunnel/tailscale-install/route.js +2 -2
  283. package/.next/server/app/api/tunnel/tailscale-install/route_client-reference-manifest.js +1 -1
  284. package/.next/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
  285. package/.next/server/app/api/usage/[connectionId]/codex-reset-credits/route_client-reference-manifest.js +1 -1
  286. package/.next/server/app/api/usage/[connectionId]/route.js +1 -1
  287. package/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
  288. package/.next/server/app/api/usage/chart/route.js +1 -1
  289. package/.next/server/app/api/usage/chart/route_client-reference-manifest.js +1 -1
  290. package/.next/server/app/api/usage/history/route.js +1 -1
  291. package/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
  292. package/.next/server/app/api/usage/logs/route.js +1 -1
  293. package/.next/server/app/api/usage/logs/route_client-reference-manifest.js +1 -1
  294. package/.next/server/app/api/usage/providers/route.js +1 -1
  295. package/.next/server/app/api/usage/providers/route_client-reference-manifest.js +1 -1
  296. package/.next/server/app/api/usage/request-details/route.js +1 -1
  297. package/.next/server/app/api/usage/request-details/route_client-reference-manifest.js +1 -1
  298. package/.next/server/app/api/usage/request-logs/route.js +1 -1
  299. package/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
  300. package/.next/server/app/api/usage/stats/route.js +1 -1
  301. package/.next/server/app/api/usage/stats/route_client-reference-manifest.js +1 -1
  302. package/.next/server/app/api/usage/stream/route.js +2 -2
  303. package/.next/server/app/api/usage/stream/route_client-reference-manifest.js +1 -1
  304. package/.next/server/app/api/v1/api/chat/route.js +1 -1
  305. package/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
  306. package/.next/server/app/api/v1/audio/speech/route.js +1 -1
  307. package/.next/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
  308. package/.next/server/app/api/v1/audio/transcriptions/route.js +1 -1
  309. package/.next/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
  310. package/.next/server/app/api/v1/audio/voices/route.js +1 -1
  311. package/.next/server/app/api/v1/audio/voices/route_client-reference-manifest.js +1 -1
  312. package/.next/server/app/api/v1/chat/completions/route.js +1 -1
  313. package/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
  314. package/.next/server/app/api/v1/embeddings/route.js +1 -1
  315. package/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
  316. package/.next/server/app/api/v1/images/generations/route.js +2 -2
  317. package/.next/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
  318. package/.next/server/app/api/v1/messages/count_tokens/route.js +1 -1
  319. package/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
  320. package/.next/server/app/api/v1/messages/route.js +1 -1
  321. package/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
  322. package/.next/server/app/api/v1/models/[...model]/route.js +1 -1
  323. package/.next/server/app/api/v1/models/[...model]/route_client-reference-manifest.js +1 -1
  324. package/.next/server/app/api/v1/models/info/route.js +1 -1
  325. package/.next/server/app/api/v1/models/info/route_client-reference-manifest.js +1 -1
  326. package/.next/server/app/api/v1/models/route.js +1 -1
  327. package/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
  328. package/.next/server/app/api/v1/responses/compact/route.js +1 -1
  329. package/.next/server/app/api/v1/responses/compact/route_client-reference-manifest.js +1 -1
  330. package/.next/server/app/api/v1/responses/route.js +1 -1
  331. package/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
  332. package/.next/server/app/api/v1/route.js +1 -1
  333. package/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
  334. package/.next/server/app/api/v1/search/route.js +1 -1
  335. package/.next/server/app/api/v1/search/route_client-reference-manifest.js +1 -1
  336. package/.next/server/app/api/v1/systemone/route.js +1 -1
  337. package/.next/server/app/api/v1/systemone/route_client-reference-manifest.js +1 -1
  338. package/.next/server/app/api/v1/videos/[id]/route.js +1 -1
  339. package/.next/server/app/api/v1/videos/[id]/route_client-reference-manifest.js +1 -1
  340. package/.next/server/app/api/v1/videos/edits/route.js +1 -1
  341. package/.next/server/app/api/v1/videos/edits/route_client-reference-manifest.js +1 -1
  342. package/.next/server/app/api/v1/videos/extensions/route.js +1 -1
  343. package/.next/server/app/api/v1/videos/extensions/route_client-reference-manifest.js +1 -1
  344. package/.next/server/app/api/v1/videos/generations/route.js +1 -1
  345. package/.next/server/app/api/v1/videos/generations/route_client-reference-manifest.js +1 -1
  346. package/.next/server/app/api/v1/web/fetch/route.js +1 -1
  347. package/.next/server/app/api/v1/web/fetch/route_client-reference-manifest.js +1 -1
  348. package/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
  349. package/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
  350. package/.next/server/app/api/v1beta/models/route.js +1 -1
  351. package/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
  352. package/.next/server/app/api/version/route.js +1 -1
  353. package/.next/server/app/api/version/route_client-reference-manifest.js +1 -1
  354. package/.next/server/app/api/version/shutdown/route.js +1 -1
  355. package/.next/server/app/api/version/shutdown/route_client-reference-manifest.js +1 -1
  356. package/.next/server/app/api/version/update/route.js +1 -1
  357. package/.next/server/app/api/version/update/route_client-reference-manifest.js +1 -1
  358. package/.next/server/app/callback/page.js +1 -1
  359. package/.next/server/app/callback/page.js.nft.json +1 -1
  360. package/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  361. package/.next/server/app/callback.html +1 -1
  362. package/.next/server/app/callback.rsc +8 -8
  363. package/.next/server/app/callback.segments/_full.segment.rsc +8 -8
  364. package/.next/server/app/callback.segments/_tree.segment.rsc +3 -3
  365. package/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +8 -8
  366. package/.next/server/app/dashboard/basic-chat.html +1 -1
  367. package/.next/server/app/dashboard/basic-chat.rsc +9 -9
  368. package/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +9 -9
  369. package/.next/server/app/dashboard/basic-chat.segments/_full.segment.rsc +9 -9
  370. package/.next/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +3 -3
  371. package/.next/server/app/dashboard/cli-tools.html +1 -1
  372. package/.next/server/app/dashboard/cli-tools.rsc +10 -10
  373. package/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +9 -9
  374. package/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +10 -10
  375. package/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +3 -3
  376. package/.next/server/app/dashboard/combos.html +1 -1
  377. package/.next/server/app/dashboard/combos.rsc +9 -9
  378. package/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +9 -9
  379. package/.next/server/app/dashboard/combos.segments/_full.segment.rsc +9 -9
  380. package/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +3 -3
  381. package/.next/server/app/dashboard/endpoint.html +1 -1
  382. package/.next/server/app/dashboard/endpoint.rsc +10 -10
  383. package/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +9 -9
  384. package/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +10 -10
  385. package/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +3 -3
  386. package/.next/server/app/dashboard/media-providers/systemone.html +1 -1
  387. package/.next/server/app/dashboard/media-providers/systemone.rsc +9 -9
  388. package/.next/server/app/dashboard/media-providers/systemone.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/systemone/__PAGE__.segment.rsc +9 -9
  389. package/.next/server/app/dashboard/media-providers/systemone.segments/_full.segment.rsc +9 -9
  390. package/.next/server/app/dashboard/media-providers/systemone.segments/_tree.segment.rsc +3 -3
  391. package/.next/server/app/dashboard/profile.html +1 -1
  392. package/.next/server/app/dashboard/profile.rsc +9 -9
  393. package/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +9 -9
  394. package/.next/server/app/dashboard/profile.segments/_full.segment.rsc +9 -9
  395. package/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +3 -3
  396. package/.next/server/app/dashboard/providers/new.html +1 -1
  397. package/.next/server/app/dashboard/providers/new.rsc +9 -9
  398. package/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +9 -9
  399. package/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +9 -9
  400. package/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +3 -3
  401. package/.next/server/app/dashboard/providers.html +1 -1
  402. package/.next/server/app/dashboard/providers.rsc +9 -9
  403. package/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +9 -9
  404. package/.next/server/app/dashboard/providers.segments/_full.segment.rsc +9 -9
  405. package/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +3 -3
  406. package/.next/server/app/dashboard/proxy-pools.html +1 -1
  407. package/.next/server/app/dashboard/proxy-pools.rsc +9 -9
  408. package/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +9 -9
  409. package/.next/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +9 -9
  410. package/.next/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +3 -3
  411. package/.next/server/app/dashboard/pxpipe.html +1 -1
  412. package/.next/server/app/dashboard/pxpipe.rsc +9 -9
  413. package/.next/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +9 -9
  414. package/.next/server/app/dashboard/pxpipe.segments/_full.segment.rsc +9 -9
  415. package/.next/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +3 -3
  416. package/.next/server/app/dashboard/quota.html +2 -2
  417. package/.next/server/app/dashboard/quota.rsc +10 -10
  418. package/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +10 -10
  419. package/.next/server/app/dashboard/quota.segments/_full.segment.rsc +10 -10
  420. package/.next/server/app/dashboard/quota.segments/_tree.segment.rsc +3 -3
  421. package/.next/server/app/dashboard/settings/pricing/page.js +1 -1
  422. package/.next/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  423. package/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  424. package/.next/server/app/dashboard/settings/pricing.html +1 -1
  425. package/.next/server/app/dashboard/settings/pricing.rsc +8 -8
  426. package/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +8 -8
  427. package/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +3 -3
  428. package/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +8 -8
  429. package/.next/server/app/dashboard/token-saver.html +1 -1
  430. package/.next/server/app/dashboard/token-saver.rsc +9 -9
  431. package/.next/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +9 -9
  432. package/.next/server/app/dashboard/token-saver.segments/_full.segment.rsc +9 -9
  433. package/.next/server/app/dashboard/token-saver.segments/_tree.segment.rsc +3 -3
  434. package/.next/server/app/dashboard/usage.html +2 -2
  435. package/.next/server/app/dashboard/usage.rsc +9 -9
  436. package/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +9 -9
  437. package/.next/server/app/dashboard/usage.segments/_full.segment.rsc +9 -9
  438. package/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +3 -3
  439. package/.next/server/app/dashboard.html +1 -1
  440. package/.next/server/app/dashboard.rsc +10 -10
  441. package/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +9 -9
  442. package/.next/server/app/dashboard.segments/_full.segment.rsc +10 -10
  443. package/.next/server/app/dashboard.segments/_tree.segment.rsc +3 -3
  444. package/.next/server/app/index.html +1 -1
  445. package/.next/server/app/index.rsc +7 -7
  446. package/.next/server/app/index.segments/__PAGE__.segment.rsc +7 -7
  447. package/.next/server/app/index.segments/_full.segment.rsc +7 -7
  448. package/.next/server/app/index.segments/_tree.segment.rsc +3 -3
  449. package/.next/server/app/landing/page.js +1 -1
  450. package/.next/server/app/landing/page.js.nft.json +1 -1
  451. package/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  452. package/.next/server/app/landing.html +1 -1
  453. package/.next/server/app/landing.rsc +8 -8
  454. package/.next/server/app/landing.segments/_full.segment.rsc +8 -8
  455. package/.next/server/app/landing.segments/_tree.segment.rsc +3 -3
  456. package/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +8 -8
  457. package/.next/server/app/login/page.js +1 -1
  458. package/.next/server/app/login/page.js.nft.json +1 -1
  459. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  460. package/.next/server/app/login.html +1 -1
  461. package/.next/server/app/login.rsc +8 -8
  462. package/.next/server/app/login.segments/_full.segment.rsc +8 -8
  463. package/.next/server/app/login.segments/_tree.segment.rsc +3 -3
  464. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +8 -8
  465. package/.next/server/app/manifest.webmanifest/route.js +1 -1
  466. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  467. package/.next/server/app/page.js +1 -1
  468. package/.next/server/app/page.js.nft.json +1 -1
  469. package/.next/server/app/page_client-reference-manifest.js +1 -1
  470. package/.next/server/app-paths-manifest.json +4 -4
  471. package/.next/server/chunks/1011.js +1 -1
  472. package/.next/server/chunks/1194.js +1 -1
  473. package/.next/server/chunks/1289.js +1 -0
  474. package/.next/server/chunks/1633.js +1 -1
  475. package/.next/server/chunks/1985.js +1 -1
  476. package/.next/server/chunks/2282.js +2 -2
  477. package/.next/server/chunks/2339.js +1 -1
  478. package/.next/server/chunks/2801.js +1 -0
  479. package/.next/server/chunks/3425.js +1 -1
  480. package/.next/server/chunks/4129.js +1 -1
  481. package/.next/server/chunks/5351.js +67 -0
  482. package/.next/server/chunks/537.js +1 -1
  483. package/.next/server/chunks/6056.js +1 -1
  484. package/.next/server/chunks/{3336.js → 7348.js} +1 -1
  485. package/.next/server/chunks/7459.js +9 -9
  486. package/.next/server/chunks/7816.js +1 -1
  487. package/.next/server/chunks/7963.js +5 -5
  488. package/.next/server/chunks/8569.js +1 -1
  489. package/.next/server/chunks/9429.js +1 -1
  490. package/.next/server/middleware-build-manifest.js +1 -1
  491. package/.next/server/middleware.js +3 -3
  492. package/.next/server/next-font-manifest.js +1 -1
  493. package/.next/server/next-font-manifest.json +1 -1
  494. package/.next/server/pages/404.html +1 -1
  495. package/.next/server/pages/500.html +1 -1
  496. package/.next/server/server-reference-manifest.js +1 -1
  497. package/.next/server/server-reference-manifest.json +1 -1
  498. package/.next/static/chunks/1278-1326946dbcc0adb5.js +1 -0
  499. package/.next/static/chunks/{159-17737a7c99ff1a65.js → 159-c129d43e789e7018.js} +1 -1
  500. package/.next/static/chunks/1699-13ee6864a8a31a96.js +67 -0
  501. package/.next/static/chunks/208-521a3242b62d6c07.js +1 -0
  502. package/.next/static/chunks/{9590-0d0b3dd0530b2b7b.js → 2836-38406d658ad8caa9.js} +1 -1
  503. package/.next/static/chunks/{7287-b8e377303d1c5ae8.js → 7287-8eca6570ca087e2e.js} +2 -2
  504. package/.next/static/chunks/app/(dashboard)/dashboard/basic-chat/page-ce1364b2b9589785.js +1 -0
  505. package/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/{page-2ff675120416e925.js → page-93cc9fc8f8ab938b.js} +2 -2
  506. package/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-1c54f83c69f02add.js +1 -0
  507. package/.next/static/chunks/app/(dashboard)/dashboard/combos/{page-55bc39e30923938a.js → page-853f4e08f4982dbe.js} +1 -1
  508. package/.next/static/chunks/app/(dashboard)/dashboard/console-log/page-0737ab5a4827fa77.js +1 -0
  509. package/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-13abc5b934c960d3.js +1 -0
  510. package/.next/static/chunks/app/(dashboard)/dashboard/media-providers/systemone/[id]/page-fb90d8451f40b8b3.js +10 -0
  511. package/.next/static/chunks/app/(dashboard)/dashboard/media-providers/systemone/page-49b3b4867d06cbe0.js +1 -0
  512. package/.next/static/chunks/app/(dashboard)/dashboard/page-85118ef708c624e6.js +1 -0
  513. package/.next/static/chunks/app/(dashboard)/dashboard/profile/{page-53158d30b5643b05.js → page-65b2c7989dbe2663.js} +1 -1
  514. package/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/{page-fd2615fea8932fd5.js → page-36659d3f8756c897.js} +2 -2
  515. package/.next/static/chunks/app/(dashboard)/dashboard/providers/new/page-1f54dc9be2c50aba.js +1 -0
  516. package/.next/static/chunks/app/(dashboard)/dashboard/providers/{page-7cc2c66e63fce4ab.js → page-b9dafab69096fa76.js} +1 -1
  517. package/.next/static/chunks/app/(dashboard)/dashboard/proxy-pools/{page-5e1fb41bd7b555a6.js → page-247f59d088891437.js} +2 -2
  518. package/.next/static/chunks/app/(dashboard)/dashboard/pxpipe/{page-1ec35dafa18e5d24.js → page-696cb5c2703ca1ec.js} +1 -1
  519. package/.next/static/chunks/app/(dashboard)/dashboard/quota/{page-11d5ca23d18d596e.js → page-5d2e8d9a126c2769.js} +1 -1
  520. package/.next/static/chunks/app/(dashboard)/dashboard/token-saver/page-bcc37fc2b4089f2f.js +1 -0
  521. package/.next/static/chunks/app/(dashboard)/dashboard/usage/page-cf503287fe99e910.js +1 -0
  522. package/.next/static/chunks/app/(dashboard)/{layout-e1e5bead272b5c82.js → layout-667f17706a5e1896.js} +1 -1
  523. package/.next/static/chunks/app/_not-found/{page-d66f1e17185e98d1.js → page-fe54ae510d932bb2.js} +1 -1
  524. package/.next/static/chunks/app/callback/{page-f4019bfc06b9a21c.js → page-f714c2306a1e9004.js} +1 -1
  525. package/.next/static/chunks/app/dashboard/settings/pricing/page-86197107690a0580.js +1 -0
  526. package/.next/static/chunks/app/landing/page-7a83d1be493ddc8c.js +1 -0
  527. package/.next/static/chunks/app/layout-06e49e3bcc852dbd.js +1 -0
  528. package/.next/static/chunks/app/login/page-7a4c84e8310a0487.js +1 -0
  529. package/.next/static/chunks/main-app-2ecba5da1d59188c.js +1 -0
  530. package/.next/static/chunks/next/dist/client/components/builtin/global-error-f9ac464a7c99aea5.js +1 -0
  531. package/.next/static/css/{e9178fa7e53ec623.css → 5843ba28152e85f8.css} +1 -1
  532. package/.next/static/css/7698ede81d1862e2.css +1 -0
  533. package/bin/10router.mjs +73 -70
  534. package/bin/update-check.mjs +93 -0
  535. package/custom-server.js +6 -36
  536. package/next.config.mjs +1 -1
  537. package/open-sse/executors/opencode-go.js +2 -0
  538. package/open-sse/executors/opencode-zen.js +12 -4
  539. package/open-sse/executors/opencode.js +31 -8
  540. package/open-sse/handlers/systemoneCore.js +4 -2
  541. package/open-sse/providers/registry/opencode-zen.js +2 -2
  542. package/open-sse/providers/registry/opencode.js +3 -3
  543. package/open-sse/translator/request/openai-to-claude.js +4 -1
  544. package/package.json +5 -22
  545. package/src/app/(dashboard)/dashboard/console-log/ConsoleLogClient.tsx +20 -6
  546. package/src/app/api/providers/[id]/test/testUtils.js +1 -1
  547. package/src/app/api/proxy-pools/[id]/test/route.js +1 -2
  548. package/src/lib/consoleLogBuffer.js +2 -1
  549. package/src/shared/components/AddCustomEmbeddingModal.tsx +0 -14
  550. package/src/shared/components/ChangelogModal.tsx +0 -6
  551. package/src/shared/components/CursorAuthModal.tsx +0 -7
  552. package/src/shared/components/EditConnectionModal.tsx +0 -22
  553. package/src/shared/components/GitLabAuthModal.tsx +0 -8
  554. package/src/shared/components/Header.tsx +0 -6
  555. package/src/shared/components/HeaderMenu.tsx +0 -5
  556. package/src/shared/components/IFlowCookieModal.tsx +0 -7
  557. package/src/shared/components/ModelSelectModal.tsx +0 -19
  558. package/src/shared/components/NoAuthProxyCard.tsx +0 -5
  559. package/src/shared/components/OAuthModal.tsx +0 -11
  560. package/src/shared/components/ProviderIcon.tsx +0 -11
  561. package/src/shared/components/XiaomiMimoAuthModal.tsx +0 -7
  562. package/src/shared/utils/cn.ts +3 -4
  563. package/src/sse/utils/logger.ts +62 -13
  564. package/.next/server/chunks/1157.js +0 -1
  565. package/.next/server/chunks/257.js +0 -67
  566. package/.next/server/chunks/3533.js +0 -1
  567. package/.next/static/chunks/1278-d7d5375869132de1.js +0 -1
  568. package/.next/static/chunks/208-fcb6c54f9db5664f.js +0 -1
  569. package/.next/static/chunks/3153-fde052e626cc6d40.js +0 -67
  570. package/.next/static/chunks/6817-449f7a2452845c74.js +0 -1
  571. package/.next/static/chunks/app/(dashboard)/dashboard/basic-chat/page-c074ab1b76a6c8ba.js +0 -1
  572. package/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-654e770c4dca90e8.js +0 -1
  573. package/.next/static/chunks/app/(dashboard)/dashboard/console-log/page-aac9a9397d3f7f17.js +0 -1
  574. package/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-d60651b77028b014.js +0 -1
  575. package/.next/static/chunks/app/(dashboard)/dashboard/media-providers/systemone/[id]/page-3d78f5834ef97b82.js +0 -10
  576. package/.next/static/chunks/app/(dashboard)/dashboard/media-providers/systemone/page-e41bf53886195393.js +0 -1
  577. package/.next/static/chunks/app/(dashboard)/dashboard/page-670583d9f9c104af.js +0 -1
  578. package/.next/static/chunks/app/(dashboard)/dashboard/providers/new/page-7c9e30c4985582a6.js +0 -1
  579. package/.next/static/chunks/app/(dashboard)/dashboard/token-saver/page-388b616d8c2aa3fc.js +0 -1
  580. package/.next/static/chunks/app/(dashboard)/dashboard/usage/page-466f7a8f7319ad85.js +0 -1
  581. package/.next/static/chunks/app/dashboard/settings/pricing/page-b9ee16bd322c018e.js +0 -1
  582. package/.next/static/chunks/app/landing/page-a088604744d51552.js +0 -1
  583. package/.next/static/chunks/app/layout-56cb8d3773a70c00.js +0 -1
  584. package/.next/static/chunks/app/login/page-dd11fb741ed7fda4.js +0 -1
  585. package/.next/static/chunks/main-app-17abdf14ff64ab69.js +0 -1
  586. package/.next/static/chunks/next/dist/client/components/builtin/global-error-21486667022bd4cf.js +0 -1
  587. package/.next/static/css/8fbebca0759ae504.css +0 -1
  588. package/scripts/dev-local.mjs +0 -67
  589. /package/.next/static/{AiSMDHTT8m1mHG-uAmkFq → 3VUtJ57WoimjS256-MQ04}/_buildManifest.js +0 -0
  590. /package/.next/static/{AiSMDHTT8m1mHG-uAmkFq → 3VUtJ57WoimjS256-MQ04}/_ssgManifest.js +0 -0
package/bin/10router.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  // ── 10ROUTER CLI ────────────────────────────────────────────────────
3
- // Local lifecycle: start/stop/status/logs/open/doctor. No Docker.
4
- // Stdlib only (+ already-installed `open` for the `open` command).
3
+ // Local lifecycle: start/stop/status/logs/open. No Docker.
4
+ // Stdlib + already-installed `chalk` (colors, NO_COLOR-aware) and `open`.
5
5
 
6
6
  import { spawn, spawnSync } from "node:child_process";
7
7
  import fs from "node:fs";
@@ -9,6 +9,9 @@ import os from "node:os";
9
9
  import path from "node:path";
10
10
  import { fileURLToPath } from "node:url";
11
11
 
12
+ import { checkUpdate } from "./update-check.mjs";
13
+ import chalk from "chalk";
14
+
12
15
  const ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
13
16
  const DEV_PORT = "20127";
14
17
  const PROD_PORT = "20128";
@@ -64,14 +67,17 @@ async function health(port) {
64
67
  }
65
68
  }
66
69
 
70
+ // ── UPDATE CHECK (npm mode only, fail-open, cached) ───────────────
71
+ // Logic lives in ./update-check.mjs (side-effect-free, testable).
72
+
67
73
  // ── COMMANDS ────────────────────────────────────────────────────────
68
74
  async function cmdStart(opts) {
69
- // npm-installed package has a prebuilt .next — default to prod there.
70
- const mode = opts.dev && IS_REPO ? "dev" : opts.prod || !IS_REPO ? "prod" : "dev";
75
+ // npm-installed package has a prebuilt .next — always prod there.
76
+ const mode = IS_REPO ? "dev" : "prod";
71
77
  const port = opts.port || (mode === "prod" ? PROD_PORT : DEV_PORT);
72
78
  const st = readState();
73
79
  if (st && isAlive(st.pid)) {
74
- console.log(`already running (pid ${st.pid}, ${st.mode} :${st.port})`);
80
+ console.log(chalk.yellow(`already running (pid ${st.pid}, ${st.mode} :${st.port})`));
75
81
  return;
76
82
  }
77
83
  if (st) fs.rmSync(PID_FILE, { force: true }); // stale pidfile
@@ -80,7 +86,7 @@ async function cmdStart(opts) {
80
86
  let cmd, args;
81
87
  if (mode === "prod") {
82
88
  if (!fs.existsSync(path.join(ROOT, ".next"))) {
83
- console.error("no .next build found — run `pnpm build` first");
89
+ console.error(chalk.red("no .next build found — run `pnpm build` first"));
84
90
  process.exitCode = 1;
85
91
  return;
86
92
  }
@@ -93,7 +99,7 @@ async function cmdStart(opts) {
93
99
  }
94
100
 
95
101
  if (opts.foreground) {
96
- console.log(`[${mode}] ${baseUrl(port)} (foreground, Ctrl+C to stop)`);
102
+ console.log(chalk.green(`[${mode}] ${baseUrl(port)} (foreground, Ctrl+C to stop)`));
97
103
  const child = spawn(cmd, args, { cwd: ROOT, stdio: "inherit", env });
98
104
  const stop = () => child.kill();
99
105
  process.once("SIGINT", stop);
@@ -116,8 +122,8 @@ async function cmdStart(opts) {
116
122
  PID_FILE,
117
123
  JSON.stringify({ pid: child.pid, port: String(port), mode, startedAt: Date.now() }),
118
124
  );
119
- console.log(`started ${mode} (pid ${child.pid}) → ${baseUrl(port)}`);
120
- console.log(`logs: ${LOG_FILE}`);
125
+ console.log(chalk.green(`started ${mode} (pid ${child.pid}) → ${baseUrl(port)}`));
126
+ console.log(chalk.dim(`logs: ${LOG_FILE}`));
121
127
  }
122
128
 
123
129
  function killTree(pid) {
@@ -139,17 +145,17 @@ function killTree(pid) {
139
145
  function cmdStop() {
140
146
  const st = readState();
141
147
  if (!st) {
142
- console.log("not running (no pidfile)");
148
+ console.log(chalk.yellow("not running (no pidfile)"));
143
149
  return;
144
150
  }
145
151
  if (!isAlive(st.pid)) {
146
152
  fs.rmSync(PID_FILE, { force: true });
147
- console.log("stale pidfile removed — was not running");
153
+ console.log(chalk.yellow("stale pidfile removed — was not running"));
148
154
  return;
149
155
  }
150
156
  killTree(st.pid);
151
157
  fs.rmSync(PID_FILE, { force: true });
152
- console.log(`stopped (was pid ${st.pid}, ${st.mode} :${st.port})`);
158
+ console.log(chalk.green(`stopped (was pid ${st.pid}, ${st.mode} :${st.port})`));
153
159
  }
154
160
 
155
161
  async function cmdStatus() {
@@ -158,17 +164,19 @@ async function cmdStatus() {
158
164
  if (st && !alive) fs.rmSync(PID_FILE, { force: true }); // clean stale
159
165
  const port = st?.port || process.env.PORT;
160
166
  const ok = port ? await health(port) : false;
161
- console.log(`running: ${alive ? `yes (pid ${st.pid}, ${st.mode})` : "no"}`);
167
+ console.log(
168
+ `running: ${alive ? chalk.green(`yes (pid ${st.pid}, ${st.mode})`) : chalk.red("no")}`,
169
+ );
162
170
  console.log(
163
171
  port
164
- ? `health: ${ok ? `ok ${baseUrl(port)}/api/health` : `down :${port}`}`
165
- : "health: — (nothing started, PORT unset)",
172
+ ? `health: ${ok ? chalk.green(`ok ${baseUrl(port)}/api/health`) : chalk.red(`down :${port}`)}`
173
+ : `health: ${chalk.dim("— (nothing started, PORT unset)")}`,
166
174
  );
167
- console.log(`data: ${DATA_DIR}`);
175
+ console.log(`data: ${chalk.dim(DATA_DIR)}`);
168
176
  if (!alive) process.exitCode = 1;
169
177
  }
170
178
 
171
- function cmdLogs(opts) {
179
+ function cmdLogs() {
172
180
  let text;
173
181
  try {
174
182
  text = fs.readFileSync(LOG_FILE, "utf8");
@@ -177,9 +185,7 @@ function cmdLogs(opts) {
177
185
  return;
178
186
  }
179
187
  const lines = text.trimEnd().split("\n");
180
- const n = opts.n || 50;
181
- process.stdout.write(lines.slice(-n).join("\n") + "\n");
182
- if (!opts.follow) return;
188
+ process.stdout.write(lines.slice(-50).join("\n") + "\n");
183
189
  // follow: poll for appended bytes (cross-platform, no `tail` dep)
184
190
  let pos = fs.statSync(LOG_FILE).size;
185
191
  const timer = setInterval(() => {
@@ -208,68 +214,63 @@ async function cmdOpen(opts) {
208
214
  console.log(url);
209
215
  }
210
216
 
211
- function cmdDoctor() {
212
- const fails = [];
213
- const check = (name, ok, hint = "") => {
214
- console.log(`${ok ? "ok " : "FAIL"} ${name}${ok ? "" : ` — ${hint}`}`);
215
- if (!ok) fails.push(name);
216
- };
217
- const major = Number(process.versions.node.split(".")[0]);
218
- check(`node ${process.version}`, major >= 20, "need node >= 20");
219
- if (IS_REPO) {
220
- const pnpm = spawnSync("pnpm", ["--version"], { encoding: "utf8" });
221
- check(`pnpm ${pnpm.stdout?.trim() || "?"}`, pnpm.status === 0, "need pnpm for dev mode");
222
- }
223
- try {
224
- fs.mkdirSync(DATA_DIR, { recursive: true });
225
- fs.accessSync(DATA_DIR, fs.constants.W_OK);
226
- check(`DATA_DIR ${DATA_DIR}`, true);
227
- } catch {
228
- check(`DATA_DIR ${DATA_DIR}`, false, "not writable");
229
- }
230
- check(
231
- ".next build (for start --prod)",
232
- fs.existsSync(path.join(ROOT, ".next")),
233
- "run pnpm build",
234
- );
235
- if (fails.length) process.exitCode = 1;
236
- }
237
-
238
217
  function help() {
239
- console.log(`10router — local gateway lifecycle (DATA_DIR=${DATA_DIR})
218
+ const H = chalk.green;
219
+ const C = chalk.blue;
220
+ console.log(`${H.bold("10router")} ${chalk.dim(`— local gateway lifecycle (DATA_DIR=${DATA_DIR})`)}
240
221
 
241
- usage: 10router <command> [options]
222
+ ${H("Usage:")} 10router [OPTIONS] <COMMAND>
242
223
 
243
- start [--prod|--dev] [--port N] [--foreground] start gateway
244
- (repo default: dev :${DEV_PORT}; npm install: prod :${PROD_PORT})
245
- stop stop background gateway
246
- status pid alive? health? paths?
247
- logs [-n N] [-f] tail log (default last 50 lines)
248
- open [--port N] open dashboard in browser
249
- doctor node/pnpm/DATA_DIR/build checks
250
- help | --help this text
251
- --version package version
224
+ ${H("Commands:")}
225
+ ${C("start")} Start gateway
226
+ ${C("stop")} Stop background gateway
227
+ ${C("status")} Show pid, health and paths
228
+ ${C("logs")} Tail log (follows)
229
+ ${C("open")} Open dashboard in browser
252
230
 
253
- env: DATA_DIR (default ~/.10router), PORT. prod default :${PROD_PORT}.`);
231
+ ${H("Options:")}
232
+ ${C("-p, --port <N>")} Gateway port (default :${PROD_PORT})
233
+ ${C(" --foreground")} Run in foreground (Ctrl+C to stop)
234
+ ${C("-h, --help")} Show this help
235
+ ${C("-V, --version")} Show package version`);
254
236
  }
255
237
 
256
238
  // ── ARGS ────────────────────────────────────────────────────────────
257
- const [cmd, ...rest] = process.argv.slice(2);
239
+ const _all = process.argv.slice(2);
240
+ // Strip --update-preview [ver] before command dispatch (dev preview only).
241
+ const _pv = _all.indexOf("--update-preview");
242
+ const _args =
243
+ _pv >= 0 && _all[_pv + 1] && /^[v\d]/.test(_all[_pv + 1])
244
+ ? [..._all.slice(0, _pv), ..._all.slice(_pv + 2)]
245
+ : _pv >= 0
246
+ ? [..._all.slice(0, _pv), ..._all.slice(_pv + 1)]
247
+ : _all;
248
+ const [cmd, ...rest] = _args;
258
249
  const flag = (s, l) => rest.includes(s) || (l && rest.includes(l));
259
250
  const val = (s, l) => {
260
251
  const i = rest.findIndex((a) => a === s || a === l);
261
252
  return i >= 0 ? rest[i + 1] : undefined;
262
253
  };
263
254
  const opts = {
264
- prod: flag("--prod"),
265
- dev: flag("--dev"),
266
255
  foreground: flag("--foreground") || flag("--fg"),
267
- follow: flag("-f", "--follow"),
268
256
  port: val("--port", "-p"),
269
- n: Number(val("-n", "--lines")) || undefined,
270
257
  };
271
258
 
272
259
  const run = async () => {
260
+ // Update notice: stderr only (stdout stays pipeable), fail-open, npm-only.
261
+ // Dev preview: `--update-preview [ver] <cmd>` shows the prod notice in-repo.
262
+ const previewIdx = _all.indexOf("--update-preview");
263
+ const previewArg = previewIdx >= 0 ? _all[previewIdx + 1] : null;
264
+ const previewLatest =
265
+ previewIdx >= 0 ? (previewArg && /^[v\d]/.test(previewArg) ? previewArg : "9.9.9") : null;
266
+ const notice = await checkUpdate({
267
+ root: ROOT,
268
+ dataDir: DATA_DIR,
269
+ isRepo: IS_REPO,
270
+ argv: rest,
271
+ previewLatest,
272
+ });
273
+ if (notice) console.error(chalk.yellow.bold(notice));
273
274
  switch (cmd) {
274
275
  case "start":
275
276
  return cmdStart(opts);
@@ -278,20 +279,22 @@ const run = async () => {
278
279
  case "status":
279
280
  return cmdStatus();
280
281
  case "logs":
281
- return cmdLogs(opts);
282
+ return cmdLogs();
282
283
  case "open":
283
284
  return cmdOpen(opts);
284
- case "doctor":
285
- return cmdDoctor();
286
- case "--version":
287
- case "version": {
285
+ case "-h":
286
+ case "--help":
287
+ case "help":
288
+ return help();
289
+ case "-V":
290
+ case "--version": {
288
291
  const pkg = JSON.parse(fs.readFileSync(path.join(ROOT, "package.json"), "utf8"));
289
292
  console.log(pkg.version);
290
293
  return;
291
294
  }
292
295
  default:
293
296
  help();
294
- if (cmd && cmd !== "help" && cmd !== "--help") process.exitCode = 1;
297
+ if (cmd) process.exitCode = 1;
295
298
  }
296
299
  };
297
300
 
@@ -0,0 +1,93 @@
1
+ #!/usr/bin/env node
2
+ // ── UPDATE CHECK ────────────────────────────────────────────────────
3
+ // Fail-open latest-version notice for npm-installed CLI. Stdlib only,
4
+ // side-effect-free (no top-level run) so tests can import it.
5
+
6
+ import fs from "node:fs";
7
+ import path from "node:path";
8
+
9
+ export const UPDATE_TTL = 24 * 3600 * 1000;
10
+
11
+ export function cmpVer(a, b) {
12
+ const pa = String(a).replace(/^v/, "").split("-")[0].split(".").map(Number);
13
+ const pb = String(b).replace(/^v/, "").split("-")[0].split(".").map(Number);
14
+ for (let i = 0; i < Math.max(pa.length, pb.length); i++) {
15
+ const d = (pa[i] || 0) - (pb[i] || 0);
16
+ if (d) return d < 0 ? -1 : 1;
17
+ }
18
+ // numeric tie: prerelease < release (1.0.0-alpha < 1.0.0)
19
+ const preA = String(a).includes("-") ? 0 : 1;
20
+ const preB = String(b).includes("-") ? 0 : 1;
21
+ return preA === preB ? 0 : preA < preB ? -1 : 1;
22
+ }
23
+
24
+ export async function fetchLatest(pkgName, fetchFn = fetch) {
25
+ try {
26
+ const r = await fetchFn(`https://registry.npmjs.org/${pkgName.replace("/", "%2F")}/latest`, {
27
+ signal: AbortSignal.timeout(3000),
28
+ });
29
+ if (!r.ok) return null;
30
+ return (await r.json())?.version || null;
31
+ } catch {
32
+ return null; // offline → silent
33
+ }
34
+ }
35
+
36
+ // Returns the notice string, or null when silent. Never throws.
37
+ export async function checkUpdate({
38
+ root,
39
+ dataDir,
40
+ isRepo,
41
+ argv = [],
42
+ env = process.env,
43
+ fetchFn = fetch,
44
+ now = Date.now(),
45
+ previewLatest = null,
46
+ } = {}) {
47
+ try {
48
+ // previewLatest: dev-only escape hatch (`--update-preview X.Y.Z`) to see
49
+ // the prod notice without network. Still gated by the same opt-outs.
50
+ if (argv.includes("--no-update-check")) return null;
51
+ if (env.NO_UPDATE_CHECK === "1" || env.CI) return null;
52
+ if (!previewLatest && isRepo) return null;
53
+ let pkg;
54
+ try {
55
+ pkg = JSON.parse(fs.readFileSync(path.join(root, "package.json"), "utf8"));
56
+ } catch {
57
+ return null;
58
+ }
59
+ if (!pkg?.name || !pkg?.version) return null;
60
+ const cacheFile = path.join(dataDir, "update-check.json");
61
+ let cached = null;
62
+ try {
63
+ cached = JSON.parse(fs.readFileSync(cacheFile, "utf8"));
64
+ } catch {
65
+ /* no cache */
66
+ }
67
+ let latest = previewLatest;
68
+ if (!latest) {
69
+ latest = cached?.latest && now - (cached.checkedAt || 0) < UPDATE_TTL ? cached.latest : null;
70
+ }
71
+ if (!latest) {
72
+ latest = await fetchLatest(pkg.name, fetchFn);
73
+ if (latest) {
74
+ try {
75
+ fs.mkdirSync(dataDir, { recursive: true });
76
+ fs.writeFileSync(cacheFile, JSON.stringify({ latest, checkedAt: now }));
77
+ } catch {
78
+ /* cache best-effort */
79
+ }
80
+ } else latest = cached?.latest || null; // stale cache beats silence
81
+ }
82
+ if (!latest || cmpVer(pkg.version, latest) >= 0) return null;
83
+ const ua = env.npm_config_user_agent || "";
84
+ const install = ua.startsWith("pnpm")
85
+ ? `pnpm add -g ${pkg.name}@latest`
86
+ : `npm install -g ${pkg.name}@latest`;
87
+ // stop first: upgrade replaces running code — stop is idempotent when idle.
88
+ // ponytail: single stop+install line; split per-status messaging when needed.
89
+ return `\nUpdate available: ${pkg.version} → ${latest}\n 10router stop; ${install}\n`;
90
+ } catch {
91
+ return null; // fail-open: update notice never breaks the CLI
92
+ }
93
+ }
package/custom-server.js CHANGED
@@ -2,7 +2,6 @@ const http = require("http");
2
2
  const path = require("path");
3
3
  const fs = require("fs");
4
4
  const crypto = require("crypto");
5
- const { pathToFileURL } = require("url");
6
5
 
7
6
  const origCreate = http.createServer.bind(http);
8
7
 
@@ -13,38 +12,12 @@ const origCreate = http.createServer.bind(http);
13
12
  const PEER_TOKEN = crypto.randomBytes(24).toString("hex");
14
13
  process.env.TENROUTER_PEER_TOKEN = PEER_TOKEN;
15
14
 
16
- let backgroundRefreshStarted = false;
17
-
18
- function startBackgroundTokenRefreshFromCustomServer() {
19
- if (backgroundRefreshStarted) return;
20
- backgroundRefreshStarted = true;
21
- // Prefer source path (repo / standalone that still has src). Fail-open if missing
22
- // — initializeApp also starts the same scheduler when the Next app boots.
23
- const modPath = path.join(__dirname, "src", "sse", "services", "backgroundTokenRefresh.js");
24
- import(pathToFileURL(modPath).href)
25
- .then((m) => {
26
- try {
27
- m.startBackgroundTokenRefresh();
28
- } catch (e) {
29
- console.error("[BackgroundTokenRefresh] start failed:", e && e.message ? e.message : e);
30
- }
31
- const stop = () => {
32
- try {
33
- m.stopBackgroundTokenRefresh();
34
- } catch {
35
- /* ignore */
36
- }
37
- };
38
- process.once("SIGINT", stop);
39
- process.once("SIGTERM", stop);
40
- })
41
- .catch((e) => {
42
- // Expected in published CLI standalone (src/ not on disk). App bootstrap covers it.
43
- if (process.env.DEBUG_BACKGROUND_TOKEN_REFRESH) {
44
- console.error("[BackgroundTokenRefresh] import failed:", e && e.message ? e.message : e);
45
- }
46
- });
47
- }
15
+ // NOTE: background token refresh is started by the app itself
16
+ // (src/shared/services/bootstrap.ts → initializeApp). This entry used to
17
+ // dynamic-import src/sse/services/backgroundTokenRefresh.js, but that path
18
+ // never resolves at runtime (only the .ts source exists on disk) — the import
19
+ // always failed and the bootstrap scheduler covered it. Removed so the server
20
+ // entry has no src/ coupling.
48
21
 
49
22
  // Wrap Next standalone HTTP server: derive client IP from the TCP socket
50
23
  // (unspoofable) and strip client-supplied forwarding headers so downstream
@@ -74,9 +47,6 @@ http.createServer = (...args) => {
74
47
  return handler(req, res);
75
48
  };
76
49
  const server = origCreate(...rest, wrapped);
77
- server.once("listening", () => {
78
- startBackgroundTokenRefreshFromCustomServer();
79
- });
80
50
  const origEmit = server.emit;
81
51
  // JBR 25 sends h2c upgrades that the HTTP/1.1 server would otherwise close.
82
52
  server.emit = function (event, ...eventArgs) {
package/next.config.mjs CHANGED
@@ -10,7 +10,7 @@ const proxyClientMaxBodySize = process.env.TENROUTER_PROXY_CLIENT_MAX_BODY_SIZE
10
10
 
11
11
  /** @type {import('next').NextConfig} */
12
12
  const nextConfig = {
13
- distDir: process.env.NEXT_DIST_DIR || ".next",
13
+ distDir: ".next",
14
14
  output: "standalone",
15
15
  // `open` must stay external. It derives its own directory from `import.meta.url`, and
16
16
  // webpack replaces that with the absolute path of the BUILD machine as a string literal.
@@ -174,11 +174,13 @@ export class OpenCodeGoExecutor extends DefaultExecutor {
174
174
  const prepared = credentials?.[SESSION_FIELD];
175
175
  if (prepared) {
176
176
  headers[SESSION_HEADER] = prepared;
177
+ headers["x-opencode-session-id"] = prepared;
177
178
  return headers;
178
179
  }
179
180
 
180
181
  const fallback = this.prepareRequestCredentials({ credentials });
181
182
  headers[SESSION_HEADER] = fallback[SESSION_FIELD];
183
+ headers["x-opencode-session-id"] = fallback[SESSION_FIELD];
182
184
  return headers;
183
185
  }
184
186
 
@@ -15,7 +15,7 @@ const MAX_SESSION_LENGTH = 256;
15
15
 
16
16
  const RESPONSES_BASE_URL = "https://opencode.ai/zen/v1/responses";
17
17
  const MAX_TOOL_NAME_LEN = 128;
18
- const OPENCODE_UA = "opencode/1.18.31";
18
+ const OPENCODE_UA = "opencode/1.18.35";
19
19
  export const OPENCODE_SESSION_RE = /^ses_[0-9a-f]{12}[0-9A-Za-z]{14}$/;
20
20
  const BASE62_CHARS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
21
21
  // Free-tier fingerprint (mirrors opencode executor, PR #4132): upstream 403s
@@ -69,9 +69,15 @@ export function translateSessionId(sessionId, clientTool = "") {
69
69
  .createHash("sha256")
70
70
  .update(`opencode\0${clientTool || "generic"}\0${sessionId || ""}`)
71
71
  .digest();
72
- const timeHex = digest.subarray(0, 6).toString("hex");
72
+ const current = BigInt(Date.now()) * 0x1000n + 1n;
73
+ const value = ~current;
74
+ const timeHex = Array.from({ length: 6 }, (_, index) =>
75
+ Number((value >> BigInt(40 - 8 * index)) & 0xffn)
76
+ .toString(16)
77
+ .padStart(2, "0"),
78
+ ).join("");
73
79
  let randomPart = "";
74
- for (let i = 6; i < 20; i++) {
80
+ for (let i = 0; i < 14; i++) {
75
81
  randomPart += BASE62_CHARS[digest[i] % 62];
76
82
  }
77
83
  return `ses_${timeHex}${randomPart}`;
@@ -291,15 +297,17 @@ export class OpenCodeZenExecutor extends DefaultExecutor {
291
297
  const downstreamUa = lower["user-agent"] || "";
292
298
  // Free-tier gate: spoof the official client UA.
293
299
  headers["User-Agent"] = hasValidOpencodeVersion(downstreamUa) ? downstreamUa : OPENCODE_UA;
294
- headers["x-opencode-client"] = lower["x-opencode-client"] || "desktop";
300
+ headers["x-opencode-client"] = lower["x-opencode-client"] || "cli";
295
301
  const prepared = credentials?.[SESSION_FIELD];
296
302
  if (prepared) {
297
303
  headers[SESSION_HEADER] = prepared;
304
+ headers["x-opencode-session-id"] = prepared;
298
305
  return headers;
299
306
  }
300
307
 
301
308
  const fallback = this.prepareRequestCredentials({ credentials });
302
309
  headers[SESSION_HEADER] = fallback[SESSION_FIELD];
310
+ headers["x-opencode-session-id"] = fallback[SESSION_FIELD];
303
311
  return headers;
304
312
  }
305
313
 
@@ -26,7 +26,7 @@ import {
26
26
  // `noauth` virtual connection (Authorization: Bearer public for everyone).
27
27
  const FREE_USAGE_BREAKER_KEY = "opencode-free";
28
28
 
29
- const OPENCODE_UA = "opencode/1.18.31";
29
+ const OPENCODE_UA = "opencode/1.18.35";
30
30
  const MAX_SESSION_LENGTH = 256;
31
31
  const MAX_TOOL_NAME_LEN = 128;
32
32
  const SESSION_HEADER = "x-opencode-session";
@@ -156,16 +156,33 @@ export function translateSessionId(sessionId, clientTool = "") {
156
156
  if (typeof sessionId === "string" && OPENCODE_SESSION_RE.test(sessionId.trim())) {
157
157
  return sessionId.trim();
158
158
  }
159
+ const key = `translated:${clientTool || "generic"}:${sessionId || ""}`;
160
+ const existing = stableOpencodeSessions.get(key);
161
+ if (existing) {
162
+ existing.lastUsed = Date.now();
163
+ return existing.sessionId;
164
+ }
159
165
  const digest = crypto
160
166
  .createHash("sha256")
161
167
  .update(`opencode\0${clientTool || "generic"}\0${sessionId || ""}`)
162
168
  .digest();
163
- const timeHex = digest.subarray(0, 6).toString("hex");
169
+ const current = BigInt(Date.now()) * 0x1000n + 1n;
170
+ const value = ~current;
171
+ const timeHex = Array.from({ length: 6 }, (_, index) =>
172
+ Number((value >> BigInt(40 - 8 * index)) & 0xffn)
173
+ .toString(16)
174
+ .padStart(2, "0"),
175
+ ).join("");
164
176
  let randomPart = "";
165
- for (let i = 6; i < 20; i++) {
177
+ for (let i = 0; i < 14; i++) {
166
178
  randomPart += BASE62_CHARS[digest[i] % 62];
167
179
  }
168
- return `ses_${timeHex}${randomPart}`;
180
+ const sid = `ses_${timeHex}${randomPart}`;
181
+ if (stableOpencodeSessions.size >= MAX_STABLE_SESSIONS) {
182
+ stableOpencodeSessions.delete(stableOpencodeSessions.keys().next().value);
183
+ }
184
+ stableOpencodeSessions.set(key, { sessionId: sid, lastUsed: Date.now() });
185
+ return sid;
169
186
  }
170
187
 
171
188
  function normalizeSession(value) {
@@ -267,14 +284,19 @@ function lastUserText(body) {
267
284
  // session plus the last user message so retries share the id.
268
285
  export function deriveRequestId(sessionId, body) {
269
286
  const text = lastUserText(body);
270
- if (!text) return generateRequestId();
287
+ const current = BigInt(Date.now()) * 0x1000n + 1n;
288
+ const timeHex = Array.from({ length: 6 }, (_, index) =>
289
+ Number((current >> BigInt(40 - 8 * index)) & 0xffn)
290
+ .toString(16)
291
+ .padStart(2, "0"),
292
+ ).join("");
293
+ if (!text) return `msg_${timeHex}${unstableRandom()}`;
271
294
  const digest = crypto
272
295
  .createHash("sha256")
273
296
  .update(`opencode-req\0${sessionId || ""}\0${text}`)
274
297
  .digest();
275
- const timeHex = digest.subarray(0, 6).toString("hex");
276
298
  let randomPart = "";
277
- for (let i = 6; i < 20; i++) {
299
+ for (let i = 0; i < 14; i++) {
278
300
  randomPart += BASE62_CHARS[digest[i] % 62];
279
301
  }
280
302
  const id = `msg_${timeHex}${randomPart}`;
@@ -606,8 +628,9 @@ export class OpenCodeExecutor extends BaseExecutor {
606
628
  "Content-Type": "application/json",
607
629
  Authorization: "Bearer public",
608
630
  "User-Agent": isOpencodeDownstream ? downstreamUa : OPENCODE_UA,
609
- "x-opencode-client": lower["x-opencode-client"] || "desktop",
631
+ "x-opencode-client": lower["x-opencode-client"] || "cli",
610
632
  "x-opencode-session": session,
633
+ "x-opencode-session-id": session,
611
634
  "x-opencode-request": requestId,
612
635
  "x-opencode-project": lower["x-opencode-project"] || "global",
613
636
  Accept: stream ? "text/event-stream" : "*/*",
@@ -30,12 +30,14 @@ export async function handleSystemoneCore({ body, modelInfo, credentials, log, o
30
30
 
31
31
  // noAuth free lanes carry accessToken "public" from the credential stub.
32
32
  const token = credentials?.apiKey || credentials?.accessToken;
33
+ // Zen lanes expect the official client session header on every request.
34
+ const session = generateSessionId();
33
35
  const headers = {
34
36
  "Content-Type": "application/json",
35
37
  ...(token ? { Authorization: `Bearer ${token}` } : {}),
36
38
  ...(cfg.headers || {}),
37
- // Zen lanes expect the official client session header on every request.
38
- "x-opencode-session": generateSessionId(),
39
+ "x-opencode-session": session,
40
+ "x-opencode-session-id": session,
39
41
  };
40
42
  const requestBody = { ...body, model };
41
43
 
@@ -284,8 +284,8 @@ export default {
284
284
  systemoneConfig: {
285
285
  baseUrl: "https://opencode.ai/zen/v1/systemone",
286
286
  headers: {
287
- "x-opencode-client": "desktop",
288
- "User-Agent": "opencode/1.18.31",
287
+ "x-opencode-client": "cli",
288
+ "User-Agent": "opencode/1.18.35",
289
289
  },
290
290
  },
291
291
  modelsFetcher: { url: "https://opencode.ai/zen/v1/models", type: "opencode-free" },
@@ -15,7 +15,7 @@ export default {
15
15
  transport: {
16
16
  baseUrl: "https://opencode.ai",
17
17
  headers: {
18
- "x-opencode-client": "desktop",
18
+ "x-opencode-client": "cli",
19
19
  },
20
20
  forceStream: true,
21
21
  noAuth: true,
@@ -45,8 +45,8 @@ export default {
45
45
  systemoneConfig: {
46
46
  baseUrl: "https://opencode.ai/zen/v1/systemone",
47
47
  headers: {
48
- "x-opencode-client": "desktop",
49
- "User-Agent": "opencode/1.18.31",
48
+ "x-opencode-client": "cli",
49
+ "User-Agent": "opencode/1.18.35",
50
50
  },
51
51
  },
52
52
  modelsFetcher: { url: "https://opencode.ai/zen/v1/models", type: "opencode-free" },
@@ -224,6 +224,9 @@ function getContentBlocksFromMessage(msg, toolNameMap = new Map()) {
224
224
  type: CLAUDE_BLOCK.TOOL_RESULT,
225
225
  tool_use_id: msg.tool_call_id,
226
226
  content: msg.content,
227
+ // Zed's strict parser requires is_error on every tool_result (Anthropic
228
+ // treats it as optional, default false) — always emit the boolean.
229
+ is_error: msg.is_error === true,
227
230
  });
228
231
  } else if (msg.role === ROLE.USER) {
229
232
  if (typeof msg.content === "string") {
@@ -239,7 +242,7 @@ function getContentBlocksFromMessage(msg, toolNameMap = new Map()) {
239
242
  type: CLAUDE_BLOCK.TOOL_RESULT,
240
243
  tool_use_id: part.tool_use_id,
241
244
  content: part.content,
242
- ...(part.is_error && { is_error: part.is_error }),
245
+ is_error: part.is_error === true,
243
246
  });
244
247
  } else if (part.type === OPENAI_BLOCK.IMAGE_URL) {
245
248
  const url = part.image_url.url;