@amir83nasr/10router 0.1.12 → 0.1.14

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 (695) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +2 -4
  3. package/.next/build-manifest.json +2 -2
  4. package/.next/prerender-manifest.json +22 -50
  5. package/.next/routes-manifest.json +0 -12
  6. package/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +2 -2
  7. package/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  8. package/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
  9. package/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  11. package/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  12. package/.next/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
  13. package/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  14. package/.next/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
  15. package/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  16. package/.next/server/app/(dashboard)/dashboard/media-providers/systemone/[id]/page.js +2 -2
  17. package/.next/server/app/(dashboard)/dashboard/media-providers/systemone/[id]/page_client-reference-manifest.js +1 -1
  18. package/.next/server/app/(dashboard)/dashboard/media-providers/systemone/page.js +1 -1
  19. package/.next/server/app/(dashboard)/dashboard/media-providers/systemone/page_client-reference-manifest.js +1 -1
  20. package/.next/server/app/(dashboard)/dashboard/page.js +1 -1
  21. package/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  22. package/.next/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  23. package/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  24. package/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  25. package/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  26. package/.next/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  27. package/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  28. package/.next/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  29. package/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  30. package/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js +2 -2
  31. package/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  32. package/.next/server/app/(dashboard)/dashboard/pxpipe/page.js +1 -1
  33. package/.next/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  34. package/.next/server/app/(dashboard)/dashboard/quota/page.js +1 -1
  35. package/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  36. package/.next/server/app/(dashboard)/dashboard/token-saver/page.js +1 -1
  37. package/.next/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  38. package/.next/server/app/(dashboard)/dashboard/usage/page.js +1 -1
  39. package/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  40. package/.next/server/app/_global-error/page.js +2 -2
  41. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  42. package/.next/server/app/_global-error.html +1 -1
  43. package/.next/server/app/_global-error.rsc +1 -1
  44. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  45. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  46. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  47. package/.next/server/app/_not-found/page.js +1 -1
  48. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  49. package/.next/server/app/_not-found.html +1 -1
  50. package/.next/server/app/_not-found.rsc +6 -6
  51. package/.next/server/app/_not-found.segments/_full.segment.rsc +6 -6
  52. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +6 -6
  53. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  54. package/.next/server/app/api/auth/login/route.js +1 -1
  55. package/.next/server/app/api/auth/logout/route.js +1 -1
  56. package/.next/server/app/api/auth/oidc/callback/route.js +1 -1
  57. package/.next/server/app/api/auth/oidc/start/route.js +1 -1
  58. package/.next/server/app/api/auth/oidc/test/route.js +1 -1
  59. package/.next/server/app/api/auth/reset-password/route.js +1 -1
  60. package/.next/server/app/api/auth/saml/acs/route.js +1 -1
  61. package/.next/server/app/api/auth/saml/metadata/route.js +2 -2
  62. package/.next/server/app/api/auth/saml/start/route.js +1 -1
  63. package/.next/server/app/api/auth/saml/test/route.js +1 -1
  64. package/.next/server/app/api/auth/status/route.js +1 -1
  65. package/.next/server/app/api/changelog/route.js +1 -1
  66. package/.next/server/app/api/cli-tools/all-statuses/route.js +1 -1
  67. package/.next/server/app/api/cli-tools/claude-settings/route.js +1 -1
  68. package/.next/server/app/api/cli-tools/codex-settings/route.js +1 -1
  69. package/.next/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
  70. package/.next/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
  71. package/.next/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  72. package/.next/server/app/api/cli-tools/dsh-settings/route.js +1 -1
  73. package/.next/server/app/api/cli-tools/opencode-settings/route.js +1 -1
  74. package/.next/server/app/api/combos/[id]/route.js +1 -1
  75. package/.next/server/app/api/combos/route.js +1 -1
  76. package/.next/server/app/api/headroom/extras/route.js +1 -1
  77. package/.next/server/app/api/headroom/proxy/[...path]/route.js +1 -1
  78. package/.next/server/app/api/headroom/restart/route.js +1 -1
  79. package/.next/server/app/api/headroom/start/route.js +1 -1
  80. package/.next/server/app/api/headroom/status/route.js +1 -1
  81. package/.next/server/app/api/headroom/stop/route.js +1 -1
  82. package/.next/server/app/api/health/route.js +1 -1
  83. package/.next/server/app/api/init/route.js +1 -1
  84. package/.next/server/app/api/keys/[id]/route.js +1 -1
  85. package/.next/server/app/api/keys/route.js +1 -1
  86. package/.next/server/app/api/locale/route.js +1 -1
  87. package/.next/server/app/api/mcp/[plugin]/message/route.js +1 -1
  88. package/.next/server/app/api/mcp/[plugin]/sse/route.js +2 -2
  89. package/.next/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  90. package/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  91. package/.next/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  92. package/.next/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  93. package/.next/server/app/api/media-providers/tts/voices/route.js +1 -1
  94. package/.next/server/app/api/models/alias/route.js +1 -1
  95. package/.next/server/app/api/models/availability/route.js +1 -1
  96. package/.next/server/app/api/models/catalog-sync/route.js +1 -1
  97. package/.next/server/app/api/models/custom/route.js +1 -1
  98. package/.next/server/app/api/models/disabled/route.js +1 -1
  99. package/.next/server/app/api/models/route.js +1 -1
  100. package/.next/server/app/api/models/test/route.js +1 -1
  101. package/.next/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  102. package/.next/server/app/api/oauth/codex/bulk-import/route.js +1 -1
  103. package/.next/server/app/api/oauth/codex/import-token/route.js +1 -1
  104. package/.next/server/app/api/oauth/cursor/auto-import/route.js +2 -2
  105. package/.next/server/app/api/oauth/cursor/import/route.js +1 -1
  106. package/.next/server/app/api/oauth/gitlab/pat/route.js +1 -1
  107. package/.next/server/app/api/oauth/grok-cli/bulk-import/route.js +1 -1
  108. package/.next/server/app/api/oauth/iflow/cookie/route.js +1 -1
  109. package/.next/server/app/api/oauth/xiaomi-mimo/api-key/route.js +1 -1
  110. package/.next/server/app/api/oauth/xiaomi-mimo/auto-import/route.js +2 -2
  111. package/.next/server/app/api/pricing/route.js +1 -1
  112. package/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
  113. package/.next/server/app/api/provider-nodes/route.js +1 -1
  114. package/.next/server/app/api/provider-nodes/validate/route.js +1 -1
  115. package/.next/server/app/api/providers/[id]/models/route.js +1 -1
  116. package/.next/server/app/api/providers/[id]/route.js +1 -1
  117. package/.next/server/app/api/providers/[id]/test/route.js +1 -1
  118. package/.next/server/app/api/providers/[id]/test-models/route.js +1 -1
  119. package/.next/server/app/api/providers/client/route.js +1 -1
  120. package/.next/server/app/api/providers/kilo/free-models/route.js +1 -1
  121. package/.next/server/app/api/providers/route.js +1 -1
  122. package/.next/server/app/api/providers/suggested-models/route.js +1 -1
  123. package/.next/server/app/api/providers/test-batch/route.js +1 -1
  124. package/.next/server/app/api/providers/validate/route.js +1 -1
  125. package/.next/server/app/api/proxy-pools/[id]/route.js +1 -1
  126. package/.next/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  127. package/.next/server/app/api/proxy-pools/cloudflare-deploy/route.js +2 -2
  128. package/.next/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
  129. package/.next/server/app/api/proxy-pools/route.js +1 -1
  130. package/.next/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
  131. package/.next/server/app/api/pxpipe/health/route.js +2 -2
  132. package/.next/server/app/api/pxpipe/install/route.js +1 -1
  133. package/.next/server/app/api/pxpipe/logs/route.js +1 -1
  134. package/.next/server/app/api/pxpipe/restart/route.js +1 -1
  135. package/.next/server/app/api/pxpipe/start/route.js +1 -1
  136. package/.next/server/app/api/pxpipe/stats/route.js +1 -1
  137. package/.next/server/app/api/pxpipe/status/route.js +1 -1
  138. package/.next/server/app/api/pxpipe/stop/route.js +1 -1
  139. package/.next/server/app/api/settings/database/route.js +1 -1
  140. package/.next/server/app/api/settings/proxy-test/route.js +1 -1
  141. package/.next/server/app/api/settings/require-login/route.js +1 -1
  142. package/.next/server/app/api/settings/route.js +1 -1
  143. package/.next/server/app/api/shutdown/route.js +1 -1
  144. package/.next/server/app/api/tags/route.js +1 -1
  145. package/.next/server/app/api/translator/console-logs/route.js +1 -1
  146. package/.next/server/app/api/translator/console-logs/stream/route.js +2 -2
  147. package/.next/server/app/api/translator/load/route.js +1 -1
  148. package/.next/server/app/api/translator/save/route.js +1 -1
  149. package/.next/server/app/api/translator/send/route.js +1 -1
  150. package/.next/server/app/api/translator/translate/route.js +1 -1
  151. package/.next/server/app/api/tunnel/disable/route.js +1 -1
  152. package/.next/server/app/api/tunnel/enable/route.js +1 -1
  153. package/.next/server/app/api/tunnel/status/route.js +1 -1
  154. package/.next/server/app/api/tunnel/tailscale-check/route.js +1 -1
  155. package/.next/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  156. package/.next/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  157. package/.next/server/app/api/tunnel/tailscale-install/route.js +3 -3
  158. package/.next/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
  159. package/.next/server/app/api/usage/[connectionId]/route.js +1 -1
  160. package/.next/server/app/api/usage/chart/route.js +1 -1
  161. package/.next/server/app/api/usage/health/route.js +1 -1
  162. package/.next/server/app/api/usage/history/route.js +1 -1
  163. package/.next/server/app/api/usage/logs/route.js +1 -1
  164. package/.next/server/app/api/usage/providers/route.js +1 -1
  165. package/.next/server/app/api/usage/request-details/route.js +1 -1
  166. package/.next/server/app/api/usage/request-logs/route.js +1 -1
  167. package/.next/server/app/api/usage/stats/route.js +1 -1
  168. package/.next/server/app/api/usage/stream/route.js +2 -2
  169. package/.next/server/app/api/v1/api/chat/route.js +1 -1
  170. package/.next/server/app/api/v1/audio/speech/route.js +1 -1
  171. package/.next/server/app/api/v1/audio/transcriptions/route.js +1 -1
  172. package/.next/server/app/api/v1/audio/voices/route.js +1 -1
  173. package/.next/server/app/api/v1/chat/completions/route.js +1 -1
  174. package/.next/server/app/api/v1/embeddings/route.js +1 -1
  175. package/.next/server/app/api/v1/images/generations/route.js +2 -2
  176. package/.next/server/app/api/v1/messages/count_tokens/route.js +1 -1
  177. package/.next/server/app/api/v1/messages/route.js +1 -1
  178. package/.next/server/app/api/v1/models/[...model]/route.js +1 -1
  179. package/.next/server/app/api/v1/models/info/route.js +1 -1
  180. package/.next/server/app/api/v1/models/route.js +1 -1
  181. package/.next/server/app/api/v1/responses/compact/route.js +1 -1
  182. package/.next/server/app/api/v1/responses/route.js +1 -1
  183. package/.next/server/app/api/v1/route.js +1 -1
  184. package/.next/server/app/api/v1/search/route.js +1 -1
  185. package/.next/server/app/api/v1/systemone/route.js +1 -1
  186. package/.next/server/app/api/v1/videos/[id]/route.js +1 -1
  187. package/.next/server/app/api/v1/videos/edits/route.js +1 -1
  188. package/.next/server/app/api/v1/videos/extensions/route.js +1 -1
  189. package/.next/server/app/api/v1/videos/generations/route.js +1 -1
  190. package/.next/server/app/api/v1/web/fetch/route.js +1 -1
  191. package/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
  192. package/.next/server/app/api/v1beta/models/route.js +1 -1
  193. package/.next/server/app/api/version/route.js +1 -1
  194. package/.next/server/app/api/version/shutdown/route.js +1 -1
  195. package/.next/server/app/api/version/update/route.js +1 -1
  196. package/.next/server/app/callback/page.js +1 -1
  197. package/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  198. package/.next/server/app/callback.html +1 -1
  199. package/.next/server/app/callback.rsc +7 -7
  200. package/.next/server/app/callback.segments/_full.segment.rsc +7 -7
  201. package/.next/server/app/callback.segments/_tree.segment.rsc +2 -2
  202. package/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +7 -7
  203. package/.next/server/app/dashboard/cli-tools.html +1 -1
  204. package/.next/server/app/dashboard/cli-tools.rsc +8 -8
  205. package/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +8 -8
  206. package/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +8 -8
  207. package/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  208. package/.next/server/app/dashboard/combos.html +1 -1
  209. package/.next/server/app/dashboard/combos.rsc +8 -8
  210. package/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +8 -8
  211. package/.next/server/app/dashboard/combos.segments/_full.segment.rsc +8 -8
  212. package/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  213. package/.next/server/app/dashboard/endpoint.html +1 -1
  214. package/.next/server/app/dashboard/endpoint.rsc +8 -8
  215. package/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +8 -8
  216. package/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +8 -8
  217. package/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  218. package/.next/server/app/dashboard/media-providers/systemone.html +1 -1
  219. package/.next/server/app/dashboard/media-providers/systemone.rsc +8 -8
  220. package/.next/server/app/dashboard/media-providers/systemone.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/systemone/__PAGE__.segment.rsc +8 -8
  221. package/.next/server/app/dashboard/media-providers/systemone.segments/_full.segment.rsc +8 -8
  222. package/.next/server/app/dashboard/media-providers/systemone.segments/_tree.segment.rsc +2 -2
  223. package/.next/server/app/dashboard/profile.html +1 -1
  224. package/.next/server/app/dashboard/profile.rsc +8 -8
  225. package/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +8 -8
  226. package/.next/server/app/dashboard/profile.segments/_full.segment.rsc +8 -8
  227. package/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  228. package/.next/server/app/dashboard/providers/new.html +1 -1
  229. package/.next/server/app/dashboard/providers/new.rsc +8 -8
  230. package/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +8 -8
  231. package/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +8 -8
  232. package/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  233. package/.next/server/app/dashboard/providers.html +1 -1
  234. package/.next/server/app/dashboard/providers.rsc +8 -8
  235. package/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +8 -8
  236. package/.next/server/app/dashboard/providers.segments/_full.segment.rsc +8 -8
  237. package/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  238. package/.next/server/app/dashboard/proxy-pools.html +1 -1
  239. package/.next/server/app/dashboard/proxy-pools.rsc +8 -8
  240. package/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +8 -8
  241. package/.next/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +8 -8
  242. package/.next/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  243. package/.next/server/app/dashboard/pxpipe.html +1 -1
  244. package/.next/server/app/dashboard/pxpipe.rsc +7 -7
  245. package/.next/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +7 -7
  246. package/.next/server/app/dashboard/pxpipe.segments/_full.segment.rsc +7 -7
  247. package/.next/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +2 -2
  248. package/.next/server/app/dashboard/quota.html +2 -2
  249. package/.next/server/app/dashboard/quota.rsc +9 -9
  250. package/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +9 -9
  251. package/.next/server/app/dashboard/quota.segments/_full.segment.rsc +9 -9
  252. package/.next/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  253. package/.next/server/app/dashboard/settings/pricing/page.js +1 -1
  254. package/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  255. package/.next/server/app/dashboard/settings/pricing.html +1 -1
  256. package/.next/server/app/dashboard/settings/pricing.rsc +7 -7
  257. package/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +7 -7
  258. package/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  259. package/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +7 -7
  260. package/.next/server/app/dashboard/token-saver.html +1 -1
  261. package/.next/server/app/dashboard/token-saver.rsc +8 -8
  262. package/.next/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +8 -8
  263. package/.next/server/app/dashboard/token-saver.segments/_full.segment.rsc +8 -8
  264. package/.next/server/app/dashboard/token-saver.segments/_tree.segment.rsc +2 -2
  265. package/.next/server/app/dashboard/usage.html +2 -2
  266. package/.next/server/app/dashboard/usage.rsc +8 -8
  267. package/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +8 -8
  268. package/.next/server/app/dashboard/usage.segments/_full.segment.rsc +8 -8
  269. package/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  270. package/.next/server/app/dashboard.html +1 -1
  271. package/.next/server/app/dashboard.rsc +8 -8
  272. package/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +8 -8
  273. package/.next/server/app/dashboard.segments/_full.segment.rsc +8 -8
  274. package/.next/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  275. package/.next/server/app/index.html +1 -1
  276. package/.next/server/app/index.rsc +6 -6
  277. package/.next/server/app/index.segments/__PAGE__.segment.rsc +6 -6
  278. package/.next/server/app/index.segments/_full.segment.rsc +6 -6
  279. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  280. package/.next/server/app/landing/page.js +1 -1
  281. package/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  282. package/.next/server/app/landing.html +1 -1
  283. package/.next/server/app/landing.rsc +7 -7
  284. package/.next/server/app/landing.segments/_full.segment.rsc +7 -7
  285. package/.next/server/app/landing.segments/_tree.segment.rsc +2 -2
  286. package/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +7 -7
  287. package/.next/server/app/login/page.js +1 -1
  288. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  289. package/.next/server/app/login.html +1 -1
  290. package/.next/server/app/login.rsc +6 -6
  291. package/.next/server/app/login.segments/_full.segment.rsc +6 -6
  292. package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  293. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +6 -6
  294. package/.next/server/app/manifest.webmanifest/route.js +1 -1
  295. package/.next/server/app/page.js +1 -1
  296. package/.next/server/app/page_client-reference-manifest.js +1 -1
  297. package/.next/server/app-paths-manifest.json +2 -4
  298. package/.next/server/chunks/1011.js +1 -1
  299. package/.next/server/chunks/1194.js +1 -1
  300. package/.next/server/chunks/1289.js +1 -1
  301. package/.next/server/chunks/1633.js +1 -1
  302. package/.next/server/chunks/1985.js +1 -1
  303. package/.next/server/chunks/2282.js +1 -1
  304. package/.next/server/chunks/2339.js +1 -1
  305. package/.next/server/chunks/2706.js +1 -1
  306. package/.next/server/chunks/2801.js +1 -1
  307. package/.next/server/chunks/3034.js +1 -1
  308. package/.next/server/chunks/3425.js +1 -1
  309. package/.next/server/chunks/6056.js +1 -1
  310. package/.next/server/chunks/7348.js +1 -1
  311. package/.next/server/chunks/9429.js +1 -1
  312. package/.next/server/middleware-build-manifest.js +1 -1
  313. package/.next/server/middleware.js +3 -3
  314. package/.next/server/pages/404.html +1 -1
  315. package/.next/server/pages/500.html +1 -1
  316. package/.next/server/prefetch-hints.json +0 -24
  317. package/.next/server/server-reference-manifest.js +1 -1
  318. package/.next/server/server-reference-manifest.json +1 -1
  319. package/.next/static/chunks/1278-1bef1ffb32ea7f41.js +1 -0
  320. package/.next/static/chunks/1660-25564899e7912146.js +1 -0
  321. package/.next/static/chunks/1699-49be310981e2759e.js +67 -0
  322. package/.next/static/chunks/{2836-4781ea7374870f4a.js → 2836-d97f0aa2718945d5.js} +1 -1
  323. package/.next/static/chunks/5148-7d67073becfaf162.js +1 -0
  324. package/.next/static/chunks/6428-5a5f71440049a4e6.js +1 -0
  325. package/.next/static/chunks/7128-78b41798c1177008.js +1 -0
  326. package/.next/static/chunks/7835-06b436358f3395f6.js +1 -0
  327. package/.next/static/chunks/9150-32b4247b1af5e206.js +1 -0
  328. package/.next/static/chunks/{9369-07e432041bb48a39.js → 9369-0d43b295968c2168.js} +1 -1
  329. package/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/{page-36ad70a4f906c64b.js → page-c913b130003c1672.js} +3 -3
  330. package/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/{page-aae6be7f75fcd819.js → page-3bab0c661f222ea3.js} +1 -1
  331. package/.next/static/chunks/app/(dashboard)/dashboard/combos/{page-18212c87b17b33cf.js → page-76cc2c386af12738.js} +1 -1
  332. package/.next/static/chunks/app/(dashboard)/dashboard/console-log/page-58a29f3cb409597a.js +1 -0
  333. package/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-d5f693c646ae044b.js +1 -0
  334. package/.next/static/chunks/app/(dashboard)/dashboard/media-providers/systemone/[id]/{page-610d962dd8bd1744.js → page-7340dad2b87640cf.js} +1 -1
  335. package/.next/static/chunks/app/(dashboard)/dashboard/media-providers/systemone/{page-9dbf4cd6901b6042.js → page-32e3e07a8f54ec11.js} +1 -1
  336. package/.next/static/chunks/app/(dashboard)/dashboard/page-a7f59da8c0db5cf1.js +1 -0
  337. package/.next/static/chunks/app/(dashboard)/dashboard/profile/{page-2ab30b6e1baf1efd.js → page-7123127fd841cfa5.js} +1 -1
  338. package/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/{page-b17607bc2ed06d50.js → page-fab6f4b4cccc1a6f.js} +1 -1
  339. package/.next/static/chunks/app/(dashboard)/dashboard/providers/new/{page-0e649a78a041306a.js → page-819e98f53bf2f4f7.js} +1 -1
  340. package/.next/static/chunks/app/(dashboard)/dashboard/providers/{page-b10c05192c664e8d.js → page-9054f870a5e0f5c6.js} +1 -1
  341. package/.next/static/chunks/app/(dashboard)/dashboard/proxy-pools/{page-b33051a3fc600082.js → page-3e4657b108582404.js} +2 -2
  342. package/.next/static/chunks/app/(dashboard)/dashboard/quota/{page-ee2a0fa91d9bea9c.js → page-61780f0a2b494680.js} +1 -1
  343. package/.next/static/chunks/app/(dashboard)/dashboard/token-saver/{page-bcc37fc2b4089f2f.js → page-4e366abb76514be7.js} +1 -1
  344. package/.next/static/chunks/app/(dashboard)/dashboard/usage/{page-2457f236bc58e590.js → page-2d71fa2936b16f45.js} +1 -1
  345. package/.next/static/chunks/app/(dashboard)/{layout-7ef1d599b3c4c6d2.js → layout-91f41c68685ed739.js} +1 -1
  346. package/.next/static/chunks/app/_global-error/page-9a2a13ac6b89ba91.js +1 -0
  347. package/.next/static/chunks/app/api/auth/login/route-9a2a13ac6b89ba91.js +1 -0
  348. package/.next/static/chunks/app/api/auth/logout/route-9a2a13ac6b89ba91.js +1 -0
  349. package/.next/static/chunks/app/api/auth/oidc/callback/route-9a2a13ac6b89ba91.js +1 -0
  350. package/.next/static/chunks/app/api/auth/oidc/start/route-9a2a13ac6b89ba91.js +1 -0
  351. package/.next/static/chunks/app/api/auth/oidc/test/route-9a2a13ac6b89ba91.js +1 -0
  352. package/.next/static/chunks/app/api/auth/reset-password/route-9a2a13ac6b89ba91.js +1 -0
  353. package/.next/static/chunks/app/api/auth/saml/acs/route-9a2a13ac6b89ba91.js +1 -0
  354. package/.next/static/chunks/app/api/auth/saml/metadata/route-9a2a13ac6b89ba91.js +1 -0
  355. package/.next/static/chunks/app/api/auth/saml/start/route-9a2a13ac6b89ba91.js +1 -0
  356. package/.next/static/chunks/app/api/auth/saml/test/route-9a2a13ac6b89ba91.js +1 -0
  357. package/.next/static/chunks/app/api/auth/status/route-9a2a13ac6b89ba91.js +1 -0
  358. package/.next/static/chunks/app/api/changelog/route-9a2a13ac6b89ba91.js +1 -0
  359. package/.next/static/chunks/app/api/cli-tools/all-statuses/route-9a2a13ac6b89ba91.js +1 -0
  360. package/.next/static/chunks/app/api/cli-tools/claude-settings/route-9a2a13ac6b89ba91.js +1 -0
  361. package/.next/static/chunks/app/api/cli-tools/codex-settings/route-9a2a13ac6b89ba91.js +1 -0
  362. package/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-9a2a13ac6b89ba91.js +1 -0
  363. package/.next/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-9a2a13ac6b89ba91.js +1 -0
  364. package/.next/static/chunks/app/api/cli-tools/cowork-settings/route-9a2a13ac6b89ba91.js +1 -0
  365. package/.next/static/chunks/app/api/cli-tools/dsh-settings/route-9a2a13ac6b89ba91.js +1 -0
  366. package/.next/static/chunks/app/api/cli-tools/opencode-settings/route-9a2a13ac6b89ba91.js +1 -0
  367. package/.next/static/chunks/app/api/combos/[id]/route-9a2a13ac6b89ba91.js +1 -0
  368. package/.next/static/chunks/app/api/combos/route-9a2a13ac6b89ba91.js +1 -0
  369. package/.next/static/chunks/app/api/headroom/extras/route-9a2a13ac6b89ba91.js +1 -0
  370. package/.next/static/chunks/app/api/headroom/proxy/[...path]/route-9a2a13ac6b89ba91.js +1 -0
  371. package/.next/static/chunks/app/api/headroom/restart/route-9a2a13ac6b89ba91.js +1 -0
  372. package/.next/static/chunks/app/api/headroom/start/route-9a2a13ac6b89ba91.js +1 -0
  373. package/.next/static/chunks/app/api/headroom/status/route-9a2a13ac6b89ba91.js +1 -0
  374. package/.next/static/chunks/app/api/headroom/stop/route-9a2a13ac6b89ba91.js +1 -0
  375. package/.next/static/chunks/app/api/health/route-9a2a13ac6b89ba91.js +1 -0
  376. package/.next/static/chunks/app/api/init/route-9a2a13ac6b89ba91.js +1 -0
  377. package/.next/static/chunks/app/api/keys/[id]/route-9a2a13ac6b89ba91.js +1 -0
  378. package/.next/static/chunks/app/api/keys/route-9a2a13ac6b89ba91.js +1 -0
  379. package/.next/static/chunks/app/api/locale/route-9a2a13ac6b89ba91.js +1 -0
  380. package/.next/static/chunks/app/api/mcp/[plugin]/message/route-9a2a13ac6b89ba91.js +1 -0
  381. package/.next/static/chunks/app/api/mcp/[plugin]/sse/route-9a2a13ac6b89ba91.js +1 -0
  382. package/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-9a2a13ac6b89ba91.js +1 -0
  383. package/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-9a2a13ac6b89ba91.js +1 -0
  384. package/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-9a2a13ac6b89ba91.js +1 -0
  385. package/.next/static/chunks/app/api/media-providers/tts/minimax/voices/route-9a2a13ac6b89ba91.js +1 -0
  386. package/.next/static/chunks/app/api/media-providers/tts/voices/route-9a2a13ac6b89ba91.js +1 -0
  387. package/.next/static/chunks/app/api/models/alias/route-9a2a13ac6b89ba91.js +1 -0
  388. package/.next/static/chunks/app/api/models/availability/route-9a2a13ac6b89ba91.js +1 -0
  389. package/.next/static/chunks/app/api/models/catalog-sync/route-9a2a13ac6b89ba91.js +1 -0
  390. package/.next/static/chunks/app/api/models/custom/route-9a2a13ac6b89ba91.js +1 -0
  391. package/.next/static/chunks/app/api/models/disabled/route-9a2a13ac6b89ba91.js +1 -0
  392. package/.next/static/chunks/app/api/models/route-9a2a13ac6b89ba91.js +1 -0
  393. package/.next/static/chunks/app/api/models/test/route-9a2a13ac6b89ba91.js +1 -0
  394. package/.next/static/chunks/app/api/oauth/[provider]/[action]/route-9a2a13ac6b89ba91.js +1 -0
  395. package/.next/static/chunks/app/api/oauth/codex/bulk-import/route-9a2a13ac6b89ba91.js +1 -0
  396. package/.next/static/chunks/app/api/oauth/codex/import-token/route-9a2a13ac6b89ba91.js +1 -0
  397. package/.next/static/chunks/app/api/oauth/cursor/auto-import/route-9a2a13ac6b89ba91.js +1 -0
  398. package/.next/static/chunks/app/api/oauth/cursor/import/route-9a2a13ac6b89ba91.js +1 -0
  399. package/.next/static/chunks/app/api/oauth/gitlab/pat/route-9a2a13ac6b89ba91.js +1 -0
  400. package/.next/static/chunks/app/api/oauth/grok-cli/bulk-import/route-9a2a13ac6b89ba91.js +1 -0
  401. package/.next/static/chunks/app/api/oauth/iflow/cookie/route-9a2a13ac6b89ba91.js +1 -0
  402. package/.next/static/chunks/app/api/oauth/xiaomi-mimo/api-key/route-9a2a13ac6b89ba91.js +1 -0
  403. package/.next/static/chunks/app/api/oauth/xiaomi-mimo/auto-import/route-9a2a13ac6b89ba91.js +1 -0
  404. package/.next/static/chunks/app/api/pricing/route-9a2a13ac6b89ba91.js +1 -0
  405. package/.next/static/chunks/app/api/provider-nodes/[id]/route-9a2a13ac6b89ba91.js +1 -0
  406. package/.next/static/chunks/app/api/provider-nodes/route-9a2a13ac6b89ba91.js +1 -0
  407. package/.next/static/chunks/app/api/provider-nodes/validate/route-9a2a13ac6b89ba91.js +1 -0
  408. package/.next/static/chunks/app/api/providers/[id]/models/route-9a2a13ac6b89ba91.js +1 -0
  409. package/.next/static/chunks/app/api/providers/[id]/route-9a2a13ac6b89ba91.js +1 -0
  410. package/.next/static/chunks/app/api/providers/[id]/test/route-9a2a13ac6b89ba91.js +1 -0
  411. package/.next/static/chunks/app/api/providers/[id]/test-models/route-9a2a13ac6b89ba91.js +1 -0
  412. package/.next/static/chunks/app/api/providers/client/route-9a2a13ac6b89ba91.js +1 -0
  413. package/.next/static/chunks/app/api/providers/kilo/free-models/route-9a2a13ac6b89ba91.js +1 -0
  414. package/.next/static/chunks/app/api/providers/route-9a2a13ac6b89ba91.js +1 -0
  415. package/.next/static/chunks/app/api/providers/suggested-models/route-9a2a13ac6b89ba91.js +1 -0
  416. package/.next/static/chunks/app/api/providers/test-batch/route-9a2a13ac6b89ba91.js +1 -0
  417. package/.next/static/chunks/app/api/providers/validate/route-9a2a13ac6b89ba91.js +1 -0
  418. package/.next/static/chunks/app/api/proxy-pools/[id]/route-9a2a13ac6b89ba91.js +1 -0
  419. package/.next/static/chunks/app/api/proxy-pools/[id]/test/route-9a2a13ac6b89ba91.js +1 -0
  420. package/.next/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-9a2a13ac6b89ba91.js +1 -0
  421. package/.next/static/chunks/app/api/proxy-pools/deno-deploy/route-9a2a13ac6b89ba91.js +1 -0
  422. package/.next/static/chunks/app/api/proxy-pools/route-9a2a13ac6b89ba91.js +1 -0
  423. package/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-9a2a13ac6b89ba91.js +1 -0
  424. package/.next/static/chunks/app/api/pxpipe/health/route-9a2a13ac6b89ba91.js +1 -0
  425. package/.next/static/chunks/app/api/pxpipe/install/route-9a2a13ac6b89ba91.js +1 -0
  426. package/.next/static/chunks/app/api/pxpipe/logs/route-9a2a13ac6b89ba91.js +1 -0
  427. package/.next/static/chunks/app/api/pxpipe/restart/route-9a2a13ac6b89ba91.js +1 -0
  428. package/.next/static/chunks/app/api/pxpipe/start/route-9a2a13ac6b89ba91.js +1 -0
  429. package/.next/static/chunks/app/api/pxpipe/stats/route-9a2a13ac6b89ba91.js +1 -0
  430. package/.next/static/chunks/app/api/pxpipe/status/route-9a2a13ac6b89ba91.js +1 -0
  431. package/.next/static/chunks/app/api/pxpipe/stop/route-9a2a13ac6b89ba91.js +1 -0
  432. package/.next/static/chunks/app/api/settings/database/route-9a2a13ac6b89ba91.js +1 -0
  433. package/.next/static/chunks/app/api/settings/proxy-test/route-9a2a13ac6b89ba91.js +1 -0
  434. package/.next/static/chunks/app/api/settings/require-login/route-9a2a13ac6b89ba91.js +1 -0
  435. package/.next/static/chunks/app/api/settings/route-9a2a13ac6b89ba91.js +1 -0
  436. package/.next/static/chunks/app/api/shutdown/route-9a2a13ac6b89ba91.js +1 -0
  437. package/.next/static/chunks/app/api/tags/route-9a2a13ac6b89ba91.js +1 -0
  438. package/.next/static/chunks/app/api/translator/console-logs/route-9a2a13ac6b89ba91.js +1 -0
  439. package/.next/static/chunks/app/api/translator/console-logs/stream/route-9a2a13ac6b89ba91.js +1 -0
  440. package/.next/static/chunks/app/api/translator/load/route-9a2a13ac6b89ba91.js +1 -0
  441. package/.next/static/chunks/app/api/translator/save/route-9a2a13ac6b89ba91.js +1 -0
  442. package/.next/static/chunks/app/api/translator/send/route-9a2a13ac6b89ba91.js +1 -0
  443. package/.next/static/chunks/app/api/translator/translate/route-9a2a13ac6b89ba91.js +1 -0
  444. package/.next/static/chunks/app/api/tunnel/disable/route-9a2a13ac6b89ba91.js +1 -0
  445. package/.next/static/chunks/app/api/tunnel/enable/route-9a2a13ac6b89ba91.js +1 -0
  446. package/.next/static/chunks/app/api/tunnel/status/route-9a2a13ac6b89ba91.js +1 -0
  447. package/.next/static/chunks/app/api/tunnel/tailscale-check/route-9a2a13ac6b89ba91.js +1 -0
  448. package/.next/static/chunks/app/api/tunnel/tailscale-disable/route-9a2a13ac6b89ba91.js +1 -0
  449. package/.next/static/chunks/app/api/tunnel/tailscale-enable/route-9a2a13ac6b89ba91.js +1 -0
  450. package/.next/static/chunks/app/api/tunnel/tailscale-install/route-9a2a13ac6b89ba91.js +1 -0
  451. package/.next/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-9a2a13ac6b89ba91.js +1 -0
  452. package/.next/static/chunks/app/api/usage/[connectionId]/route-9a2a13ac6b89ba91.js +1 -0
  453. package/.next/static/chunks/app/api/usage/chart/route-9a2a13ac6b89ba91.js +1 -0
  454. package/.next/static/chunks/app/api/usage/health/route-9a2a13ac6b89ba91.js +1 -0
  455. package/.next/static/chunks/app/api/usage/history/route-9a2a13ac6b89ba91.js +1 -0
  456. package/.next/static/chunks/app/api/usage/logs/route-9a2a13ac6b89ba91.js +1 -0
  457. package/.next/static/chunks/app/api/usage/providers/route-9a2a13ac6b89ba91.js +1 -0
  458. package/.next/static/chunks/app/api/usage/request-details/route-9a2a13ac6b89ba91.js +1 -0
  459. package/.next/static/chunks/app/api/usage/request-logs/route-9a2a13ac6b89ba91.js +1 -0
  460. package/.next/static/chunks/app/api/usage/stats/route-9a2a13ac6b89ba91.js +1 -0
  461. package/.next/static/chunks/app/api/usage/stream/route-9a2a13ac6b89ba91.js +1 -0
  462. package/.next/static/chunks/app/api/v1/api/chat/route-9a2a13ac6b89ba91.js +1 -0
  463. package/.next/static/chunks/app/api/v1/audio/speech/route-9a2a13ac6b89ba91.js +1 -0
  464. package/.next/static/chunks/app/api/v1/audio/transcriptions/route-9a2a13ac6b89ba91.js +1 -0
  465. package/.next/static/chunks/app/api/v1/audio/voices/route-9a2a13ac6b89ba91.js +1 -0
  466. package/.next/static/chunks/app/api/v1/chat/completions/route-9a2a13ac6b89ba91.js +1 -0
  467. package/.next/static/chunks/app/api/v1/embeddings/route-9a2a13ac6b89ba91.js +1 -0
  468. package/.next/static/chunks/app/api/v1/images/generations/route-9a2a13ac6b89ba91.js +1 -0
  469. package/.next/static/chunks/app/api/v1/messages/count_tokens/route-9a2a13ac6b89ba91.js +1 -0
  470. package/.next/static/chunks/app/api/v1/messages/route-9a2a13ac6b89ba91.js +1 -0
  471. package/.next/static/chunks/app/api/v1/models/[...model]/route-9a2a13ac6b89ba91.js +1 -0
  472. package/.next/static/chunks/app/api/v1/models/info/route-9a2a13ac6b89ba91.js +1 -0
  473. package/.next/static/chunks/app/api/v1/models/route-9a2a13ac6b89ba91.js +1 -0
  474. package/.next/static/chunks/app/api/v1/responses/compact/route-9a2a13ac6b89ba91.js +1 -0
  475. package/.next/static/chunks/app/api/v1/responses/route-9a2a13ac6b89ba91.js +1 -0
  476. package/.next/static/chunks/app/api/v1/route-9a2a13ac6b89ba91.js +1 -0
  477. package/.next/static/chunks/app/api/v1/search/route-9a2a13ac6b89ba91.js +1 -0
  478. package/.next/static/chunks/app/api/v1/systemone/route-9a2a13ac6b89ba91.js +1 -0
  479. package/.next/static/chunks/app/api/v1/videos/[id]/route-9a2a13ac6b89ba91.js +1 -0
  480. package/.next/static/chunks/app/api/v1/videos/edits/route-9a2a13ac6b89ba91.js +1 -0
  481. package/.next/static/chunks/app/api/v1/videos/extensions/route-9a2a13ac6b89ba91.js +1 -0
  482. package/.next/static/chunks/app/api/v1/videos/generations/route-9a2a13ac6b89ba91.js +1 -0
  483. package/.next/static/chunks/app/api/v1/web/fetch/route-9a2a13ac6b89ba91.js +1 -0
  484. package/.next/static/chunks/app/api/v1beta/models/[...path]/route-9a2a13ac6b89ba91.js +1 -0
  485. package/.next/static/chunks/app/api/v1beta/models/route-9a2a13ac6b89ba91.js +1 -0
  486. package/.next/static/chunks/app/api/version/route-9a2a13ac6b89ba91.js +1 -0
  487. package/.next/static/chunks/app/api/version/shutdown/route-9a2a13ac6b89ba91.js +1 -0
  488. package/.next/static/chunks/app/api/version/update/route-9a2a13ac6b89ba91.js +1 -0
  489. package/.next/static/chunks/app/callback/page-8b6862b2e58a129e.js +1 -0
  490. package/.next/static/chunks/app/dashboard/settings/pricing/page-c1dfa7608ff710d1.js +1 -0
  491. package/.next/static/chunks/app/landing/page-a76ba2642bd02bf5.js +1 -0
  492. package/.next/static/chunks/app/layout-cc98f6c7473b86a3.js +1 -0
  493. package/.next/static/chunks/app/manifest.webmanifest/route-9a2a13ac6b89ba91.js +1 -0
  494. package/.next/static/chunks/app/page-9a2a13ac6b89ba91.js +1 -0
  495. package/.next/static/chunks/next/dist/client/components/builtin/app-error-9a2a13ac6b89ba91.js +1 -0
  496. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-9a2a13ac6b89ba91.js +1 -0
  497. package/.next/static/chunks/next/dist/client/components/builtin/not-found-9a2a13ac6b89ba91.js +1 -0
  498. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-9a2a13ac6b89ba91.js +1 -0
  499. package/.next/static/css/efaf98e3b295f727.css +1 -0
  500. package/.next/static/wBARQPScPhD6SLn7WQvI9/_buildManifest.js +1 -0
  501. package/CHANGELOG.md +11 -0
  502. package/package.json +1 -2
  503. package/src/app/(dashboard)/dashboard/cli-tools/components/cards/ClaudeToolCard.tsx +10 -0
  504. package/src/app/api/cli-tools/claude-settings/route.js +10 -0
  505. package/src/app/globals.css +16 -37
  506. package/src/components/app-sidebar.tsx +0 -1
  507. package/src/shared/components/Header.tsx +0 -8
  508. package/src/shared/components/layouts/DashboardLayout.tsx +2 -8
  509. package/src/shared/constants/cliTools.js +5 -0
  510. package/.next/server/app/(dashboard)/dashboard/basic-chat/page.js +0 -1
  511. package/.next/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +0 -1
  512. package/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +0 -1
  513. package/.next/server/app/api/dashboard/chat/completions/route.js +0 -1
  514. package/.next/server/app/api/dashboard/chat/completions/route.js.nft.json +0 -1
  515. package/.next/server/app/api/dashboard/chat/completions/route_client-reference-manifest.js +0 -1
  516. package/.next/server/app/dashboard/basic-chat.html +0 -1
  517. package/.next/server/app/dashboard/basic-chat.meta +0 -36
  518. package/.next/server/app/dashboard/basic-chat.rsc +0 -26
  519. package/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +0 -31
  520. package/.next/server/app/dashboard/basic-chat.segments/_full.segment.rsc +0 -26
  521. package/.next/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +0 -6
  522. package/.next/static/C423Aljus-j0GJlKCHgC1/_buildManifest.js +0 -1
  523. package/.next/static/chunks/1278-3b5ed69340ddb23f.js +0 -1
  524. package/.next/static/chunks/1471-69a7c30abf98c656.js +0 -1
  525. package/.next/static/chunks/159-89c77cec422bd76f.js +0 -1
  526. package/.next/static/chunks/2392-b07fcae4714087ef.js +0 -65
  527. package/.next/static/chunks/2441-96064c4ee1216099.js +0 -1
  528. package/.next/static/chunks/5113-5c4f5181388aab72.js +0 -1
  529. package/.next/static/chunks/5778-9d97ce04f2ac118c.js +0 -1
  530. package/.next/static/chunks/6920-e2b533c1eafa9521.js +0 -1
  531. package/.next/static/chunks/7835-c1ef8f5cdaaad483.js +0 -1
  532. package/.next/static/chunks/9320-ae7eb68edeb92e89.js +0 -3
  533. package/.next/static/chunks/app/(dashboard)/dashboard/basic-chat/page-34f4d77aa3df67a8.js +0 -1
  534. package/.next/static/chunks/app/(dashboard)/dashboard/console-log/page-52b5a6dc2c2d2d93.js +0 -1
  535. package/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-9287a3cbd098b9c4.js +0 -1
  536. package/.next/static/chunks/app/(dashboard)/dashboard/page-1d6e969653676c7d.js +0 -1
  537. package/.next/static/chunks/app/_global-error/page-a826a2eb5dc30149.js +0 -1
  538. package/.next/static/chunks/app/api/auth/login/route-a826a2eb5dc30149.js +0 -1
  539. package/.next/static/chunks/app/api/auth/logout/route-a826a2eb5dc30149.js +0 -1
  540. package/.next/static/chunks/app/api/auth/oidc/callback/route-a826a2eb5dc30149.js +0 -1
  541. package/.next/static/chunks/app/api/auth/oidc/start/route-a826a2eb5dc30149.js +0 -1
  542. package/.next/static/chunks/app/api/auth/oidc/test/route-a826a2eb5dc30149.js +0 -1
  543. package/.next/static/chunks/app/api/auth/reset-password/route-a826a2eb5dc30149.js +0 -1
  544. package/.next/static/chunks/app/api/auth/saml/acs/route-a826a2eb5dc30149.js +0 -1
  545. package/.next/static/chunks/app/api/auth/saml/metadata/route-a826a2eb5dc30149.js +0 -1
  546. package/.next/static/chunks/app/api/auth/saml/start/route-a826a2eb5dc30149.js +0 -1
  547. package/.next/static/chunks/app/api/auth/saml/test/route-a826a2eb5dc30149.js +0 -1
  548. package/.next/static/chunks/app/api/auth/status/route-a826a2eb5dc30149.js +0 -1
  549. package/.next/static/chunks/app/api/changelog/route-a826a2eb5dc30149.js +0 -1
  550. package/.next/static/chunks/app/api/cli-tools/all-statuses/route-a826a2eb5dc30149.js +0 -1
  551. package/.next/static/chunks/app/api/cli-tools/claude-settings/route-a826a2eb5dc30149.js +0 -1
  552. package/.next/static/chunks/app/api/cli-tools/codex-settings/route-a826a2eb5dc30149.js +0 -1
  553. package/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-a826a2eb5dc30149.js +0 -1
  554. package/.next/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-a826a2eb5dc30149.js +0 -1
  555. package/.next/static/chunks/app/api/cli-tools/cowork-settings/route-a826a2eb5dc30149.js +0 -1
  556. package/.next/static/chunks/app/api/cli-tools/dsh-settings/route-a826a2eb5dc30149.js +0 -1
  557. package/.next/static/chunks/app/api/cli-tools/opencode-settings/route-a826a2eb5dc30149.js +0 -1
  558. package/.next/static/chunks/app/api/combos/[id]/route-a826a2eb5dc30149.js +0 -1
  559. package/.next/static/chunks/app/api/combos/route-a826a2eb5dc30149.js +0 -1
  560. package/.next/static/chunks/app/api/dashboard/chat/completions/route-a826a2eb5dc30149.js +0 -1
  561. package/.next/static/chunks/app/api/headroom/extras/route-a826a2eb5dc30149.js +0 -1
  562. package/.next/static/chunks/app/api/headroom/proxy/[...path]/route-a826a2eb5dc30149.js +0 -1
  563. package/.next/static/chunks/app/api/headroom/restart/route-a826a2eb5dc30149.js +0 -1
  564. package/.next/static/chunks/app/api/headroom/start/route-a826a2eb5dc30149.js +0 -1
  565. package/.next/static/chunks/app/api/headroom/status/route-a826a2eb5dc30149.js +0 -1
  566. package/.next/static/chunks/app/api/headroom/stop/route-a826a2eb5dc30149.js +0 -1
  567. package/.next/static/chunks/app/api/health/route-a826a2eb5dc30149.js +0 -1
  568. package/.next/static/chunks/app/api/init/route-a826a2eb5dc30149.js +0 -1
  569. package/.next/static/chunks/app/api/keys/[id]/route-a826a2eb5dc30149.js +0 -1
  570. package/.next/static/chunks/app/api/keys/route-a826a2eb5dc30149.js +0 -1
  571. package/.next/static/chunks/app/api/locale/route-a826a2eb5dc30149.js +0 -1
  572. package/.next/static/chunks/app/api/mcp/[plugin]/message/route-a826a2eb5dc30149.js +0 -1
  573. package/.next/static/chunks/app/api/mcp/[plugin]/sse/route-a826a2eb5dc30149.js +0 -1
  574. package/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-a826a2eb5dc30149.js +0 -1
  575. package/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-a826a2eb5dc30149.js +0 -1
  576. package/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-a826a2eb5dc30149.js +0 -1
  577. package/.next/static/chunks/app/api/media-providers/tts/minimax/voices/route-a826a2eb5dc30149.js +0 -1
  578. package/.next/static/chunks/app/api/media-providers/tts/voices/route-a826a2eb5dc30149.js +0 -1
  579. package/.next/static/chunks/app/api/models/alias/route-a826a2eb5dc30149.js +0 -1
  580. package/.next/static/chunks/app/api/models/availability/route-a826a2eb5dc30149.js +0 -1
  581. package/.next/static/chunks/app/api/models/catalog-sync/route-a826a2eb5dc30149.js +0 -1
  582. package/.next/static/chunks/app/api/models/custom/route-a826a2eb5dc30149.js +0 -1
  583. package/.next/static/chunks/app/api/models/disabled/route-a826a2eb5dc30149.js +0 -1
  584. package/.next/static/chunks/app/api/models/route-a826a2eb5dc30149.js +0 -1
  585. package/.next/static/chunks/app/api/models/test/route-a826a2eb5dc30149.js +0 -1
  586. package/.next/static/chunks/app/api/oauth/[provider]/[action]/route-a826a2eb5dc30149.js +0 -1
  587. package/.next/static/chunks/app/api/oauth/codex/bulk-import/route-a826a2eb5dc30149.js +0 -1
  588. package/.next/static/chunks/app/api/oauth/codex/import-token/route-a826a2eb5dc30149.js +0 -1
  589. package/.next/static/chunks/app/api/oauth/cursor/auto-import/route-a826a2eb5dc30149.js +0 -1
  590. package/.next/static/chunks/app/api/oauth/cursor/import/route-a826a2eb5dc30149.js +0 -1
  591. package/.next/static/chunks/app/api/oauth/gitlab/pat/route-a826a2eb5dc30149.js +0 -1
  592. package/.next/static/chunks/app/api/oauth/grok-cli/bulk-import/route-a826a2eb5dc30149.js +0 -1
  593. package/.next/static/chunks/app/api/oauth/iflow/cookie/route-a826a2eb5dc30149.js +0 -1
  594. package/.next/static/chunks/app/api/oauth/xiaomi-mimo/api-key/route-a826a2eb5dc30149.js +0 -1
  595. package/.next/static/chunks/app/api/oauth/xiaomi-mimo/auto-import/route-a826a2eb5dc30149.js +0 -1
  596. package/.next/static/chunks/app/api/pricing/route-a826a2eb5dc30149.js +0 -1
  597. package/.next/static/chunks/app/api/provider-nodes/[id]/route-a826a2eb5dc30149.js +0 -1
  598. package/.next/static/chunks/app/api/provider-nodes/route-a826a2eb5dc30149.js +0 -1
  599. package/.next/static/chunks/app/api/provider-nodes/validate/route-a826a2eb5dc30149.js +0 -1
  600. package/.next/static/chunks/app/api/providers/[id]/models/route-a826a2eb5dc30149.js +0 -1
  601. package/.next/static/chunks/app/api/providers/[id]/route-a826a2eb5dc30149.js +0 -1
  602. package/.next/static/chunks/app/api/providers/[id]/test/route-a826a2eb5dc30149.js +0 -1
  603. package/.next/static/chunks/app/api/providers/[id]/test-models/route-a826a2eb5dc30149.js +0 -1
  604. package/.next/static/chunks/app/api/providers/client/route-a826a2eb5dc30149.js +0 -1
  605. package/.next/static/chunks/app/api/providers/kilo/free-models/route-a826a2eb5dc30149.js +0 -1
  606. package/.next/static/chunks/app/api/providers/route-a826a2eb5dc30149.js +0 -1
  607. package/.next/static/chunks/app/api/providers/suggested-models/route-a826a2eb5dc30149.js +0 -1
  608. package/.next/static/chunks/app/api/providers/test-batch/route-a826a2eb5dc30149.js +0 -1
  609. package/.next/static/chunks/app/api/providers/validate/route-a826a2eb5dc30149.js +0 -1
  610. package/.next/static/chunks/app/api/proxy-pools/[id]/route-a826a2eb5dc30149.js +0 -1
  611. package/.next/static/chunks/app/api/proxy-pools/[id]/test/route-a826a2eb5dc30149.js +0 -1
  612. package/.next/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-a826a2eb5dc30149.js +0 -1
  613. package/.next/static/chunks/app/api/proxy-pools/deno-deploy/route-a826a2eb5dc30149.js +0 -1
  614. package/.next/static/chunks/app/api/proxy-pools/route-a826a2eb5dc30149.js +0 -1
  615. package/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-a826a2eb5dc30149.js +0 -1
  616. package/.next/static/chunks/app/api/pxpipe/health/route-a826a2eb5dc30149.js +0 -1
  617. package/.next/static/chunks/app/api/pxpipe/install/route-a826a2eb5dc30149.js +0 -1
  618. package/.next/static/chunks/app/api/pxpipe/logs/route-a826a2eb5dc30149.js +0 -1
  619. package/.next/static/chunks/app/api/pxpipe/restart/route-a826a2eb5dc30149.js +0 -1
  620. package/.next/static/chunks/app/api/pxpipe/start/route-a826a2eb5dc30149.js +0 -1
  621. package/.next/static/chunks/app/api/pxpipe/stats/route-a826a2eb5dc30149.js +0 -1
  622. package/.next/static/chunks/app/api/pxpipe/status/route-a826a2eb5dc30149.js +0 -1
  623. package/.next/static/chunks/app/api/pxpipe/stop/route-a826a2eb5dc30149.js +0 -1
  624. package/.next/static/chunks/app/api/settings/database/route-a826a2eb5dc30149.js +0 -1
  625. package/.next/static/chunks/app/api/settings/proxy-test/route-a826a2eb5dc30149.js +0 -1
  626. package/.next/static/chunks/app/api/settings/require-login/route-a826a2eb5dc30149.js +0 -1
  627. package/.next/static/chunks/app/api/settings/route-a826a2eb5dc30149.js +0 -1
  628. package/.next/static/chunks/app/api/shutdown/route-a826a2eb5dc30149.js +0 -1
  629. package/.next/static/chunks/app/api/tags/route-a826a2eb5dc30149.js +0 -1
  630. package/.next/static/chunks/app/api/translator/console-logs/route-a826a2eb5dc30149.js +0 -1
  631. package/.next/static/chunks/app/api/translator/console-logs/stream/route-a826a2eb5dc30149.js +0 -1
  632. package/.next/static/chunks/app/api/translator/load/route-a826a2eb5dc30149.js +0 -1
  633. package/.next/static/chunks/app/api/translator/save/route-a826a2eb5dc30149.js +0 -1
  634. package/.next/static/chunks/app/api/translator/send/route-a826a2eb5dc30149.js +0 -1
  635. package/.next/static/chunks/app/api/translator/translate/route-a826a2eb5dc30149.js +0 -1
  636. package/.next/static/chunks/app/api/tunnel/disable/route-a826a2eb5dc30149.js +0 -1
  637. package/.next/static/chunks/app/api/tunnel/enable/route-a826a2eb5dc30149.js +0 -1
  638. package/.next/static/chunks/app/api/tunnel/status/route-a826a2eb5dc30149.js +0 -1
  639. package/.next/static/chunks/app/api/tunnel/tailscale-check/route-a826a2eb5dc30149.js +0 -1
  640. package/.next/static/chunks/app/api/tunnel/tailscale-disable/route-a826a2eb5dc30149.js +0 -1
  641. package/.next/static/chunks/app/api/tunnel/tailscale-enable/route-a826a2eb5dc30149.js +0 -1
  642. package/.next/static/chunks/app/api/tunnel/tailscale-install/route-a826a2eb5dc30149.js +0 -1
  643. package/.next/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-a826a2eb5dc30149.js +0 -1
  644. package/.next/static/chunks/app/api/usage/[connectionId]/route-a826a2eb5dc30149.js +0 -1
  645. package/.next/static/chunks/app/api/usage/chart/route-a826a2eb5dc30149.js +0 -1
  646. package/.next/static/chunks/app/api/usage/health/route-a826a2eb5dc30149.js +0 -1
  647. package/.next/static/chunks/app/api/usage/history/route-a826a2eb5dc30149.js +0 -1
  648. package/.next/static/chunks/app/api/usage/logs/route-a826a2eb5dc30149.js +0 -1
  649. package/.next/static/chunks/app/api/usage/providers/route-a826a2eb5dc30149.js +0 -1
  650. package/.next/static/chunks/app/api/usage/request-details/route-a826a2eb5dc30149.js +0 -1
  651. package/.next/static/chunks/app/api/usage/request-logs/route-a826a2eb5dc30149.js +0 -1
  652. package/.next/static/chunks/app/api/usage/stats/route-a826a2eb5dc30149.js +0 -1
  653. package/.next/static/chunks/app/api/usage/stream/route-a826a2eb5dc30149.js +0 -1
  654. package/.next/static/chunks/app/api/v1/api/chat/route-a826a2eb5dc30149.js +0 -1
  655. package/.next/static/chunks/app/api/v1/audio/speech/route-a826a2eb5dc30149.js +0 -1
  656. package/.next/static/chunks/app/api/v1/audio/transcriptions/route-a826a2eb5dc30149.js +0 -1
  657. package/.next/static/chunks/app/api/v1/audio/voices/route-a826a2eb5dc30149.js +0 -1
  658. package/.next/static/chunks/app/api/v1/chat/completions/route-a826a2eb5dc30149.js +0 -1
  659. package/.next/static/chunks/app/api/v1/embeddings/route-a826a2eb5dc30149.js +0 -1
  660. package/.next/static/chunks/app/api/v1/images/generations/route-a826a2eb5dc30149.js +0 -1
  661. package/.next/static/chunks/app/api/v1/messages/count_tokens/route-a826a2eb5dc30149.js +0 -1
  662. package/.next/static/chunks/app/api/v1/messages/route-a826a2eb5dc30149.js +0 -1
  663. package/.next/static/chunks/app/api/v1/models/[...model]/route-a826a2eb5dc30149.js +0 -1
  664. package/.next/static/chunks/app/api/v1/models/info/route-a826a2eb5dc30149.js +0 -1
  665. package/.next/static/chunks/app/api/v1/models/route-a826a2eb5dc30149.js +0 -1
  666. package/.next/static/chunks/app/api/v1/responses/compact/route-a826a2eb5dc30149.js +0 -1
  667. package/.next/static/chunks/app/api/v1/responses/route-a826a2eb5dc30149.js +0 -1
  668. package/.next/static/chunks/app/api/v1/route-a826a2eb5dc30149.js +0 -1
  669. package/.next/static/chunks/app/api/v1/search/route-a826a2eb5dc30149.js +0 -1
  670. package/.next/static/chunks/app/api/v1/systemone/route-a826a2eb5dc30149.js +0 -1
  671. package/.next/static/chunks/app/api/v1/videos/[id]/route-a826a2eb5dc30149.js +0 -1
  672. package/.next/static/chunks/app/api/v1/videos/edits/route-a826a2eb5dc30149.js +0 -1
  673. package/.next/static/chunks/app/api/v1/videos/extensions/route-a826a2eb5dc30149.js +0 -1
  674. package/.next/static/chunks/app/api/v1/videos/generations/route-a826a2eb5dc30149.js +0 -1
  675. package/.next/static/chunks/app/api/v1/web/fetch/route-a826a2eb5dc30149.js +0 -1
  676. package/.next/static/chunks/app/api/v1beta/models/[...path]/route-a826a2eb5dc30149.js +0 -1
  677. package/.next/static/chunks/app/api/v1beta/models/route-a826a2eb5dc30149.js +0 -1
  678. package/.next/static/chunks/app/api/version/route-a826a2eb5dc30149.js +0 -1
  679. package/.next/static/chunks/app/api/version/shutdown/route-a826a2eb5dc30149.js +0 -1
  680. package/.next/static/chunks/app/api/version/update/route-a826a2eb5dc30149.js +0 -1
  681. package/.next/static/chunks/app/callback/page-f714c2306a1e9004.js +0 -1
  682. package/.next/static/chunks/app/dashboard/settings/pricing/page-86197107690a0580.js +0 -1
  683. package/.next/static/chunks/app/landing/page-7a83d1be493ddc8c.js +0 -1
  684. package/.next/static/chunks/app/layout-f34e075b1872747e.js +0 -1
  685. package/.next/static/chunks/app/manifest.webmanifest/route-a826a2eb5dc30149.js +0 -1
  686. package/.next/static/chunks/app/page-a826a2eb5dc30149.js +0 -1
  687. package/.next/static/chunks/next/dist/client/components/builtin/app-error-a826a2eb5dc30149.js +0 -1
  688. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-a826a2eb5dc30149.js +0 -1
  689. package/.next/static/chunks/next/dist/client/components/builtin/not-found-a826a2eb5dc30149.js +0 -1
  690. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-a826a2eb5dc30149.js +0 -1
  691. package/.next/static/css/a2628e64fa8ac12e.css +0 -1
  692. package/src/app/(dashboard)/dashboard/basic-chat/BasicChatPageClient.tsx +0 -1178
  693. package/src/app/(dashboard)/dashboard/basic-chat/page.tsx +0 -5
  694. package/src/app/api/dashboard/chat/completions/route.ts +0 -45
  695. /package/.next/static/{C423Aljus-j0GJlKCHgC1 → wBARQPScPhD6SLn7WQvI9}/_ssgManifest.js +0 -0
package/.next/BUILD_ID CHANGED
@@ -1 +1 @@
1
- C423Aljus-j0GJlKCHgC1
1
+ wBARQPScPhD6SLn7WQvI9
@@ -100,7 +100,6 @@
100
100
  "/api/version/update/route": "/api/version/update",
101
101
  "/manifest.webmanifest/route": "/manifest.webmanifest",
102
102
  "/api/combos/route": "/api/combos",
103
- "/api/dashboard/chat/completions/route": "/api/dashboard/chat/completions",
104
103
  "/api/headroom/extras/route": "/api/headroom/extras",
105
104
  "/api/headroom/proxy/[...path]/route": "/api/headroom/proxy/[...path]",
106
105
  "/api/headroom/restart/route": "/api/headroom/restart",
@@ -113,8 +112,8 @@
113
112
  "/api/models/alias/route": "/api/models/alias",
114
113
  "/api/models/custom/route": "/api/models/custom",
115
114
  "/api/models/disabled/route": "/api/models/disabled",
116
- "/api/provider-nodes/route": "/api/provider-nodes",
117
115
  "/api/oauth/[provider]/[action]/route": "/api/oauth/[provider]/[action]",
116
+ "/api/provider-nodes/route": "/api/provider-nodes",
118
117
  "/api/providers/[id]/route": "/api/providers/[id]",
119
118
  "/api/providers/client/route": "/api/providers/client",
120
119
  "/api/providers/suggested-models/route": "/api/providers/suggested-models",
@@ -150,7 +149,6 @@
150
149
  "/landing/page": "/landing",
151
150
  "/login/page": "/login",
152
151
  "/page": "/",
153
- "/(dashboard)/dashboard/basic-chat/page": "/dashboard/basic-chat",
154
152
  "/(dashboard)/dashboard/cli-tools/[toolId]/page": "/dashboard/cli-tools/[toolId]",
155
153
  "/(dashboard)/dashboard/cli-tools/page": "/dashboard/cli-tools",
156
154
  "/(dashboard)/dashboard/combos/page": "/dashboard/combos",
@@ -164,8 +162,8 @@
164
162
  "/(dashboard)/dashboard/token-saver/page": "/dashboard/token-saver",
165
163
  "/(dashboard)/dashboard/usage/page": "/dashboard/usage",
166
164
  "/(dashboard)/dashboard/console-log/page": "/dashboard/console-log",
167
- "/(dashboard)/dashboard/profile/page": "/dashboard/profile",
168
165
  "/(dashboard)/dashboard/providers/page": "/dashboard/providers",
166
+ "/(dashboard)/dashboard/profile/page": "/dashboard/profile",
169
167
  "/(dashboard)/dashboard/providers/[id]/page": "/dashboard/providers/[id]",
170
168
  "/(dashboard)/dashboard/proxy-pools/page": "/dashboard/proxy-pools"
171
169
  }
@@ -4,8 +4,8 @@
4
4
  ],
5
5
  "devFiles": [],
6
6
  "lowPriorityFiles": [
7
- "static/C423Aljus-j0GJlKCHgC1/_buildManifest.js",
8
- "static/C423Aljus-j0GJlKCHgC1/_ssgManifest.js"
7
+ "static/wBARQPScPhD6SLn7WQvI9/_buildManifest.js",
8
+ "static/wBARQPScPhD6SLn7WQvI9/_ssgManifest.js"
9
9
  ],
10
10
  "rootMainFiles": [
11
11
  "static/chunks/webpack-cb89101193742e2b.js",
@@ -5,7 +5,7 @@
5
5
  "routeType": "page",
6
6
  "response": "complete",
7
7
  "compute": "static",
8
- "htmlSize": 8466,
8
+ "htmlSize": 8422,
9
9
  "experimentalBypassFor": [
10
10
  {
11
11
  "type": "header",
@@ -62,7 +62,7 @@
62
62
  "routeType": "page",
63
63
  "response": "complete",
64
64
  "compute": "static",
65
- "htmlSize": 12650,
65
+ "htmlSize": 12529,
66
66
  "experimentalBypassFor": [
67
67
  {
68
68
  "type": "header",
@@ -90,7 +90,7 @@
90
90
  "routeType": "page",
91
91
  "response": "complete",
92
92
  "compute": "static",
93
- "htmlSize": 12946,
93
+ "htmlSize": 12825,
94
94
  "experimentalBypassFor": [
95
95
  {
96
96
  "type": "header",
@@ -118,7 +118,7 @@
118
118
  "routeType": "page",
119
119
  "response": "complete",
120
120
  "compute": "static",
121
- "htmlSize": 42799,
121
+ "htmlSize": 41045,
122
122
  "experimentalBypassFor": [
123
123
  {
124
124
  "type": "header",
@@ -142,39 +142,11 @@
142
142
  "x-next-revalidate-tag-token"
143
143
  ]
144
144
  },
145
- "/dashboard/basic-chat": {
146
- "routeType": "page",
147
- "response": "complete",
148
- "compute": "static",
149
- "htmlSize": 45648,
150
- "experimentalBypassFor": [
151
- {
152
- "type": "header",
153
- "key": "next-action"
154
- },
155
- {
156
- "type": "header",
157
- "key": "content-type",
158
- "value": "multipart/form-data;.*"
159
- }
160
- ],
161
- "initialRevalidateSeconds": false,
162
- "srcRoute": "/dashboard/basic-chat",
163
- "dataRoute": "/dashboard/basic-chat.rsc",
164
- "allowHeader": [
165
- "host",
166
- "x-matched-path",
167
- "x-prerender-revalidate",
168
- "x-prerender-revalidate-if-generated",
169
- "x-next-revalidated-tags",
170
- "x-next-revalidate-tag-token"
171
- ]
172
- },
173
145
  "/dashboard/cli-tools": {
174
146
  "routeType": "page",
175
147
  "response": "complete",
176
148
  "compute": "static",
177
- "htmlSize": 48820,
149
+ "htmlSize": 47066,
178
150
  "experimentalBypassFor": [
179
151
  {
180
152
  "type": "header",
@@ -202,7 +174,7 @@
202
174
  "routeType": "page",
203
175
  "response": "complete",
204
176
  "compute": "static",
205
- "htmlSize": 43693,
177
+ "htmlSize": 41939,
206
178
  "experimentalBypassFor": [
207
179
  {
208
180
  "type": "header",
@@ -230,7 +202,7 @@
230
202
  "routeType": "page",
231
203
  "response": "complete",
232
204
  "compute": "static",
233
- "htmlSize": 43314,
205
+ "htmlSize": 41560,
234
206
  "experimentalBypassFor": [
235
207
  {
236
208
  "type": "header",
@@ -258,7 +230,7 @@
258
230
  "routeType": "page",
259
231
  "response": "complete",
260
232
  "compute": "static",
261
- "htmlSize": 48901,
233
+ "htmlSize": 47147,
262
234
  "experimentalBypassFor": [
263
235
  {
264
236
  "type": "header",
@@ -286,7 +258,7 @@
286
258
  "routeType": "page",
287
259
  "response": "complete",
288
260
  "compute": "static",
289
- "htmlSize": 61853,
261
+ "htmlSize": 60099,
290
262
  "experimentalBypassFor": [
291
263
  {
292
264
  "type": "header",
@@ -314,7 +286,7 @@
314
286
  "routeType": "page",
315
287
  "response": "complete",
316
288
  "compute": "static",
317
- "htmlSize": 49703,
289
+ "htmlSize": 47949,
318
290
  "experimentalBypassFor": [
319
291
  {
320
292
  "type": "header",
@@ -342,7 +314,7 @@
342
314
  "routeType": "page",
343
315
  "response": "complete",
344
316
  "compute": "static",
345
- "htmlSize": 52536,
317
+ "htmlSize": 50834,
346
318
  "experimentalBypassFor": [
347
319
  {
348
320
  "type": "header",
@@ -370,7 +342,7 @@
370
342
  "routeType": "page",
371
343
  "response": "complete",
372
344
  "compute": "static",
373
- "htmlSize": 43570,
345
+ "htmlSize": 41816,
374
346
  "experimentalBypassFor": [
375
347
  {
376
348
  "type": "header",
@@ -398,7 +370,7 @@
398
370
  "routeType": "page",
399
371
  "response": "complete",
400
372
  "compute": "static",
401
- "htmlSize": 51073,
373
+ "htmlSize": 49369,
402
374
  "experimentalBypassFor": [
403
375
  {
404
376
  "type": "header",
@@ -426,7 +398,7 @@
426
398
  "routeType": "page",
427
399
  "response": "complete",
428
400
  "compute": "static",
429
- "htmlSize": 53793,
401
+ "htmlSize": 51989,
430
402
  "experimentalBypassFor": [
431
403
  {
432
404
  "type": "header",
@@ -454,7 +426,7 @@
454
426
  "routeType": "page",
455
427
  "response": "complete",
456
428
  "compute": "static",
457
- "htmlSize": 18089,
429
+ "htmlSize": 17838,
458
430
  "experimentalBypassFor": [
459
431
  {
460
432
  "type": "header",
@@ -482,7 +454,7 @@
482
454
  "routeType": "page",
483
455
  "response": "complete",
484
456
  "compute": "static",
485
- "htmlSize": 51235,
457
+ "htmlSize": 49531,
486
458
  "experimentalBypassFor": [
487
459
  {
488
460
  "type": "header",
@@ -510,7 +482,7 @@
510
482
  "routeType": "page",
511
483
  "response": "complete",
512
484
  "compute": "static",
513
- "htmlSize": 58860,
485
+ "htmlSize": 57106,
514
486
  "experimentalBypassFor": [
515
487
  {
516
488
  "type": "header",
@@ -538,7 +510,7 @@
538
510
  "routeType": "page",
539
511
  "response": "complete",
540
512
  "compute": "static",
541
- "htmlSize": 41281,
513
+ "htmlSize": 41290,
542
514
  "experimentalBypassFor": [
543
515
  {
544
516
  "type": "header",
@@ -566,7 +538,7 @@
566
538
  "routeType": "page",
567
539
  "response": "complete",
568
540
  "compute": "static",
569
- "htmlSize": 12440,
541
+ "htmlSize": 12319,
570
542
  "experimentalBypassFor": [
571
543
  {
572
544
  "type": "header",
@@ -626,8 +598,8 @@
626
598
  "dynamicRoutes": {},
627
599
  "notFoundRoutes": [],
628
600
  "preview": {
629
- "previewModeId": "d8c211b3572580e4d91f02e663dd4d30",
630
- "previewModeSigningKey": "44cac61b08c2caf07426149980e84a872932ec697679ab90f0bbcb0e6df0dfcc",
631
- "previewModeEncryptionKey": "f13dc4a105cca2e71d7304484e71e0d86e73905bfe23ad52115029335a27c928"
601
+ "previewModeId": "d5f4a836ca91f06b0f63a06628b29e2d",
602
+ "previewModeSigningKey": "f7f244611c035129d22c6d8849c9d5587e3af178542a59edcef96744fff251ff",
603
+ "previewModeEncryptionKey": "3478d8a6af87b7e82f8cf5f32635cab86b98ec0e765ce0dd3dd4cf2572a974a9"
632
604
  }
633
605
  }
@@ -378,12 +378,6 @@
378
378
  "routeKeys": {},
379
379
  "namedRegex": "^/api/combos(?:/)?$"
380
380
  },
381
- {
382
- "page": "/api/dashboard/chat/completions",
383
- "regex": "^/api/dashboard/chat/completions(?:/)?$",
384
- "routeKeys": {},
385
- "namedRegex": "^/api/dashboard/chat/completions(?:/)?$"
386
- },
387
381
  {
388
382
  "page": "/api/headroom/extras",
389
383
  "regex": "^/api/headroom/extras(?:/)?$",
@@ -1014,12 +1008,6 @@
1014
1008
  "routeKeys": {},
1015
1009
  "namedRegex": "^/dashboard(?:/)?$"
1016
1010
  },
1017
- {
1018
- "page": "/dashboard/basic-chat",
1019
- "regex": "^/dashboard/basic\\-chat(?:/)?$",
1020
- "routeKeys": {},
1021
- "namedRegex": "^/dashboard/basic\\-chat(?:/)?$"
1022
- },
1023
1011
  {
1024
1012
  "page": "/dashboard/cli-tools",
1025
1013
  "regex": "^/dashboard/cli\\-tools(?:/)?$",
@@ -1,4 +1,4 @@
1
- (()=>{var a={};a.id=3554,a.ids=[3554],a.modules={518:(a,b,c)=>{"use strict";c.r(b),c.d(b,{__next_app__:()=>x,handler:()=>z,routeModule:()=>y});var d=c(26720),e=c(29966),f=c(36243),g=c(70310),h={};for(let a in g)0>["default","__next_app__","routeModule","handler"].indexOf(a)&&(h[a]=()=>g[a]);c.d(b,h);let i=(0,d.p)(()=>Promise.resolve().then(c.bind(c,79452))),j=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,67694,23))),k=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,2808,23))),l=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,8329,23))),m=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,41580,23))),n=(0,d.p)(()=>Promise.resolve().then(c.bind(c,11089))),o=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,67694,23))),p=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,2808,23))),q=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,8329,23))),r=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,41580,23))),s=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,67694,23))),t=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,67694,23))),u=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,67694,23))),v={children:["",{children:["(dashboard)",{children:["dashboard",{children:["cli-tools",{children:["[toolId]",{children:["__PAGE__",{},{page:[(0,d.p)(()=>Promise.resolve().then(c.bind(c,43848))),"/home/runner/work/10Router/10Router/src/app/(dashboard)/dashboard/cli-tools/[toolId]/page.tsx"]}]},{"global-error":[u,"next/dist/client/components/builtin/global-error.js"]},[]]},{"global-error":[t,"next/dist/client/components/builtin/global-error.js"]},[]]},{"global-error":[s,"next/dist/client/components/builtin/global-error.js"]},[]]},{layout:[n,"/home/runner/work/10Router/10Router/src/app/(dashboard)/layout.tsx"],"global-error":[o,"next/dist/client/components/builtin/global-error.js"],"not-found":[p,"next/dist/client/components/builtin/not-found.js"],forbidden:[q,"next/dist/client/components/builtin/forbidden.js"],unauthorized:[r,"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[],apple:[],openGraph:[],twitter:[],manifest:"/manifest.webmanifest"}},[]]},{layout:[i,"/home/runner/work/10Router/10Router/src/app/layout.tsx"],"global-error":[j,"next/dist/client/components/builtin/global-error.js"],"not-found":[k,"next/dist/client/components/builtin/not-found.js"],forbidden:[l,"next/dist/client/components/builtin/forbidden.js"],unauthorized:[m,"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[],apple:[],openGraph:[],twitter:[],manifest:"/manifest.webmanifest"}},[]]}.children,w=(0,e.H)({tree:v,page:"/(dashboard)/dashboard/cli-tools/[toolId]/page",pathname:"/dashboard/cli-tools/[toolId]",require:c,loadChunk:()=>Promise.resolve(),interopDefault:f.T}),x=w.__next_app__,y=w.routeModule,z=w.handler},643:a=>{"use strict";a.exports=require("node:perf_hooks")},1437:(a,b,c)=>{"use strict";var d=c(47633);c.o(d,"notFound")&&c.d(b,{notFound:function(){return d.notFound}}),c.o(d,"redirect")&&c.d(b,{redirect:function(){return d.redirect}})},1708:a=>{"use strict";a.exports=require("node:process")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},4573:a=>{"use strict";a.exports=require("node:buffer")},7066:a=>{"use strict";a.exports=require("node:tty")},8128:a=>{"use strict";a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},11543:(a,b,c)=>{"use strict";function d(){throw Object.defineProperty(Error("`unauthorized()` is experimental and only allowed to be used when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E411",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unauthorized",{enumerable:!0,get:function(){return d}}),c(41081).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},14985:a=>{"use strict";a.exports=require("dns")},16162:(a,b,c)=>{Promise.resolve().then(c.bind(c,28840))},16698:a=>{"use strict";a.exports=require("node:async_hooks")},18142:(a,b,c)=>{"use strict";c.d(b,{YW:()=>d.Page,pV:()=>d.CardGrid,wn:()=>d.Section,zY:()=>d.PageHeader}),c(73865),c(55204);var d=c(19509)},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},20482:(a,b,c)=>{"use strict";c.d(b,{CK:()=>i.default,G9:()=>l.default,Iz:()=>r.default,KX:()=>s.PanelSkeleton,LF:()=>f.default,LH:()=>m.default,Mu:()=>s.StatCardSkeleton,Nf:()=>j.default,Qv:()=>e.CardSkeleton,YW:()=>u.YW,gw:()=>q.default,jK:()=>k.default,nh:()=>t.default,pV:()=>u.pV,rq:()=>g.default,uR:()=>h.default,uo:()=>d.ConfirmModal,vE:()=>n.default,vj:()=>o.default,wI:()=>p.default,wn:()=>u.wn,zY:()=>u.zY}),c(28907);var d=c(87121),e=c(53546);c(62648),c(77562),c(79517),c(66453);var f=c(71e3),g=c(16582),h=c(94725),i=c(98279),j=c(22354),k=c(23165);c(49451),c(82466),c(70047),c(91429),c(92249);var l=c(85405),m=c(91236),n=c(89630),o=c(87556),p=c(46009);c(54928);var q=c(5409),r=c(12710);c(92393),c(51);var s=c(11442),t=c(9656),u=c(18142)},21704:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"ReadonlyURLSearchParams",{enumerable:!0,get:function(){return d}});class c extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams"),Object.defineProperty(this,"__NEXT_ERROR_CODE",{value:"E1174",enumerable:!1,configurable:!0})}}class d extends URLSearchParams{append(){throw new c}delete(){throw new c}set(){throw new c}sort(){throw new c}}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},21820:a=>{"use strict";a.exports=require("os")},27910:a=>{"use strict";a.exports=require("stream")},28354:a=>{"use strict";a.exports=require("util")},28840:(a,b,c)=>{"use strict";c.d(b,{default:()=>aa});var d=c(86240),e=c(28907),f=c(70433),g=c(4459),h=c.n(g),i=c(20482),j=c(63265),k=c(92968),l=c(54204),m=c(95137),n=c(4271),o=c(83777),p=c(31952),q=c(36447),r=c(63998),s=c(62871),t=c(99902),u=c(81501);function v({storageKey:a,changeEvent:b,itemField:c,normalize:d=a=>a,defaultName:e=a=>a}){let f=()=>[],g=a=>{};return{read:f,subscribe:a=>()=>{},upsert:(a,b)=>{let h=d(a);if(!h)return null;let i=f(),j=i.find(a=>d(a[c])===h);if(j&&!b)return j.name;let k=(b||e(h)).trim();return k?(g([...i.filter(a=>a.name!==k&&d(a[c])!==h),{name:k,[c]:h}].sort((a,b)=>a.name.localeCompare(b.name))),k):null},remove:a=>g(f().filter(b=>b.name!==a))}}let w=a=>(a||"").replace(/\/+$/,""),x=v({storageKey:"10router.cliToolEndpointPresets",changeEvent:"10router:endpoint-presets-changed",itemField:"baseUrl",normalize:w,defaultName:a=>{try{return new URL(a).host}catch{return a}}}),y=v({storageKey:"10router.cliToolApiKeyPresets",changeEvent:"10router:api-key-presets-changed",itemField:"key"});x.read,x.subscribe;let z=x.upsert,A=x.remove;y.read,y.subscribe;let B=y.upsert,C=y.remove;function D(a,{tunnelPublicUrl:b,tailscaleUrl:c,cloudUrl:d}={}){let e=w(a);return!e||[`http://127.0.0.1:${t._$}`,b,c,d].filter(Boolean).flatMap(a=>[w(a),`${w(a)}/v1`]).includes(e)?null:z(e)}let E="__custom__",F="__save__";function G({value:a,onChange:b,requiresExternalUrl:c=!1,tunnelEnabled:g=!1,tunnelPublicUrl:h="",tailscaleEnabled:i=!1,tailscaleUrl:j="",cloudEnabled:k=!1,cloudUrl:l="",withV1:m=!0,currentUrl:n=""}){let[q,r]=(0,f.useState)([]),[s,v]=(0,f.useState)(!1),[w,x]=(0,f.useState)(""),[y,B]=(0,f.useState)("");(0,f.useRef)(!1);let C=(0,f.useRef)(""),D=(0,f.useMemo)(()=>(({requiresExternalUrl:a,tunnelEnabled:b,tunnelPublicUrl:c,tailscaleEnabled:d,tailscaleUrl:e,cloudEnabled:f,cloudUrl:g,savedPresets:h,withV1:i})=>{let j=[],k=a=>{let b;return i?(b=(a||"").replace(/\/+$/,""))?/\/v1$/.test(b)?b:`${b}/v1`:"":(a||"").replace(/\/+$/,"")};if(!a){let a=k(`http://127.0.0.1:${t._$}`);j.push({value:"local",label:a,url:a})}if(b&&c){let a=k(c);j.push({value:"tunnel",label:a,url:a})}if(d&&e){let a=k(e);j.push({value:"tailscale",label:a,url:a})}if(f&&g){let a=k(g);j.push({value:"cloud",label:a,url:a})}return h.forEach(a=>{j.push({value:`saved:${a.name}`,label:a.baseUrl,url:a.baseUrl,saved:!0})}),j.push({value:E,label:"Custom URL...",url:""}),j})({requiresExternalUrl:c,tunnelEnabled:g,tunnelPublicUrl:h,tailscaleEnabled:i,tailscaleUrl:j,cloudEnabled:k,cloudUrl:l,savedPresets:q,withV1:m}),[c,g,h,i,j,k,l,q,m]),H=w.startsWith("saved:"),I=w===E,J=I&&(y||"").trim().length>0;return(0,d.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsxs)(o.l6,{value:w,onValueChange:c=>{if(c===F){let b=(a||"").trim();if(!b)return;let c=b;try{c=new URL(b).host}catch{}let d=window.prompt("Save endpoint as:",c),e=d?.trim()?z(b,d.trim()):null;e&&x(`saved:${e}`);return}if(x(c),c===E){B(""),b("");return}let d=D.find(a=>a.value===c);d&&b(d.url)},children:[(0,d.jsx)(o.bq,{className:"flex-1 min-w-0 text-xs",children:(0,d.jsx)(o.yv,{placeholder:"Select endpoint"})}),(0,d.jsxs)(o.gC,{children:[D.map(a=>(0,d.jsx)(o.eb,{value:a.value,title:a.label,children:a.label},a.value)),J&&(0,d.jsx)(o.eb,{value:F,children:"+ Save current as..."})]})]}),H&&(0,d.jsxs)(p.m_,{children:[(0,d.jsx)(p.k$,{asChild:!0,children:(0,d.jsx)("button",{type:"button",onClick:()=>{if(!w.startsWith("saved:"))return;A(w.slice(6)),B("");let a=D.find(a=>a.value!==E&&a.value!==w);a?(x(a.value),b(a.url)):(x(E),b(""))},className:"p-1 text-muted-foreground hover:text-red-500 rounded transition-colors shrink-0",children:(0,d.jsx)(e.default,{name:"delete",className:"text-[14px]"})})}),(0,d.jsx)(p.ZI,{children:"Delete saved endpoint"})]})]}),I&&(0,d.jsx)(u.p,{type:"text",value:y,onChange:a=>{let c=a.target.value;C.current=c,B(c),b(c)},placeholder:m?"https://example.com/v1":"https://example.com",className:"h-9 text-xs"})]})}let H="__custom__",I="__save_key__";function J({value:a,onChange:b,apiKeys:c=[],cloudEnabled:g=!1,className:h=""}){let[i,j]=(0,f.useState)([]),[k,l]=(0,f.useState)(!1),[m,n]=(0,f.useState)(""),q=(0,f.useMemo)(()=>[...c.map(a=>({value:a.key,label:a.key})),...i.map(a=>({value:`saved:${a.name}`,label:a.key,url:a.key,saved:!0})),{value:H,label:"Custom...",url:""}],[c,i]),r=a?q.find(b=>b.value===a||b.url===a):null,s=r?r.value:k||a?H:q[0]?.value??H,t=k?m:a||"",v="string"==typeof s&&s.startsWith("saved:"),w=s===H,x=w&&(a||"").trim().length>0&&!c.some(b=>b.key===a);return 0!==c.length||0!==i.length||k||a?(0,d.jsxs)("div",{className:`flex flex-col gap-1.5 ${h}`,children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsxs)(o.l6,{value:s,onValueChange:c=>{if(c===I)return void B((a||"").trim());if(c===H){l(!0),n(""),b("");return}l(!1),n("");let d=q.find(a=>a.value===c);d&&b(d.url??d.value)},children:[(0,d.jsx)(o.bq,{className:"flex-1 min-w-0 text-xs",children:(0,d.jsx)(o.yv,{placeholder:"Select key"})}),(0,d.jsxs)(o.gC,{children:[q.map(a=>(0,d.jsx)(o.eb,{value:a.value,title:a.label,children:a.label},a.value)),x&&(0,d.jsx)(o.eb,{value:I,children:"+ Save current as..."})]})]}),v&&(0,d.jsxs)(p.m_,{children:[(0,d.jsx)(p.k$,{asChild:!0,children:(0,d.jsx)("button",{type:"button",onClick:()=>{if(!v)return;C(s.slice(6)),l(!1),n("");let a=q.find(a=>a.value!==H&&a.value!==s);b(a?a.url??a.value:"")},className:"p-1 text-muted-foreground hover:text-red-500 rounded transition-colors shrink-0",children:(0,d.jsx)(e.default,{name:"delete",className:"text-[14px]"})})}),(0,d.jsx)(p.ZI,{children:"Delete saved key"})]})]}),w&&(0,d.jsx)(u.p,{type:"text",value:t,onChange:a=>{let c=a.target.value;l(!0),n(c),b(c)},placeholder:"sk-...",className:"h-9 text-xs"})]}):(0,d.jsx)("span",{className:`min-w-0 rounded bg-card/40 px-2 py-2 text-xs text-muted-foreground sm:py-1.5 ${h}`,children:g?"No API keys - Create one in Keys page":"sk_10router (default)"})}let K=a=>(a||"").replace(/\/+$/,"");function L(a,b={}){if(!a)return!1;let c=K(a),{tunnelPublicUrl:d,tailscaleUrl:e,cloudUrl:f}=b;return!!(/localhost|127\.0\.0\.1|0\.0\.0\.0/.test(c)||d&&c.startsWith(K(d))||e&&c.startsWith(K(e))||f&&c.startsWith(K(f)))}let M=/\[1m\]$/i,N=process.env.NEXT_PUBLIC_CLOUD_URL,O=[{label:"Default",value:""},{label:"200K",value:"198000"},{label:"300K",value:"298000"},{label:"500K",value:"498000"},{label:"700K",value:"698000"}];function P({tool:a,isExpanded:b,onToggle:c,activeProviders:g,modelMappings:h,onModelMappingChange:k,baseUrl:l,hasActiveProviders:m,apiKeys:t,cloudEnabled:u,initialStatus:v,tunnelEnabled:w,tunnelPublicUrl:x,tailscaleEnabled:y,tailscaleUrl:z}){let A,B,C,[E,F]=(0,f.useState)(v||null),[H,I]=(0,f.useState)(!1),[K,Q]=(0,f.useState)(!1),[R,S]=(0,f.useState)(!1),[T,U]=(0,f.useState)(null),[V,W]=(0,f.useState)(!1),[X,Y]=(0,f.useState)(!1),[Z,$]=(0,f.useState)(null),[_,aa]=(0,f.useState)(""),[ab,ac]=(0,f.useState)({}),[ad,ae]=(0,f.useState)(!1),[af,ag]=(0,f.useState)(""),[ah,ai]=(0,f.useState)(!1),[aj,ak]=(0,f.useState)(!1),[al,am]=(0,f.useState)(""),[an,ao]=(0,f.useState)(!1);(0,f.useRef)(!1);let ap=E?.settings?.env?.ANTHROPIC_BASE_URL||"",aq=(()=>{if(!E?.installed)return null;let a=E.settings?.env?.ANTHROPIC_BASE_URL;return a?L(a,{tunnelPublicUrl:x,tailscaleUrl:z,cloudUrl:u?N:null})?"configured":"other":"not_configured"})(),ar=async a=>{let b=!0===a;ai(b),await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({ccFilterNaming:b})}).catch(()=>{})},as=()=>{let a=af||l;return a.endsWith("/v1")?a:`${a}/v1`},at=async()=>{Q(!0),U(null);try{let b={ANTHROPIC_BASE_URL:as()},c=_?.trim()||(t?.length>0?t[0].key:null)||(u?null:"sk_10router");c&&(b.ANTHROPIC_AUTH_TOKEN=c),a.defaultModels.forEach(a=>{let c=h[a.alias];c&&a.envKey&&(b[a.envKey]=c)}),al&&(b.CLAUDE_CODE_AUTO_COMPACT_WINDOW=al);let d=await fetch("/api/cli-tools/claude-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({env:b,exaMcpEnabled:aj,autoCompactWindow:al})}),e=await d.json();d.ok?(D(as(),{tunnelPublicUrl:x,tailscaleUrl:z}),U({type:"success",text:"Settings applied successfully!"}),F(a=>({...a,hasBackup:!0,settings:{...a?.settings,env:b},exaMcpEnabled:aj}))):U({type:"error",text:e.error||"Failed to apply settings"})}catch(a){U({type:"error",text:a.message})}finally{Q(!1)}},au=async()=>{S(!0),U(null);try{let b=await fetch("/api/cli-tools/claude-settings",{method:"DELETE"}),c=await b.json();b.ok?(U({type:"success",text:"Settings reset successfully!"}),a.defaultModels.forEach(a=>k(a.alias,a.defaultValue||"")),aa(""),ak(!1),am(""),ao(!1)):U({type:"error",text:c.error||"Failed to reset settings"})}catch(a){U({type:"error",text:a.message})}finally{S(!1)}};return(0,d.jsx)(n.Zp,{size:"sm",className:"overflow-hidden",children:(0,d.jsxs)(n.Wu,{children:[(0,d.jsx)("div",{className:"flex items-start justify-between gap-3 hover:cursor-pointer sm:items-center",onClick:c,children:(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,d.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,d.jsx)(s.default,{src:"/providers/claude.png",alt:a.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:a=>{a.target.style.display="none"},loading:"lazy",decoding:"async"})}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[(0,d.jsx)("h3",{className:"font-medium text-sm",children:a.name}),"configured"===aq&&(0,d.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-green-500/10 text-green-600 dark:text-green-400 rounded-full",children:"Connected"}),"not_configured"===aq&&(0,d.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-yellow-500/10 text-yellow-600 dark:text-yellow-400 rounded-full",children:"Not configured"}),"other"===aq&&(0,d.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-blue-500/10 text-blue-600 dark:text-blue-400 rounded-full",children:"Other"})]}),(0,d.jsx)("p",{className:"text-xs text-muted-foreground truncate",children:a.description})]})]})}),b&&(0,d.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[H&&(0,d.jsxs)("div",{className:"flex items-center gap-2 text-muted-foreground",children:[(0,d.jsx)(e.default,{name:"progress_activity",className:"animate-spin"}),(0,d.jsx)("span",{children:"Checking Claude CLI..."})]}),!H&&E&&!E.installed&&(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{className:"flex flex-col gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)(e.default,{name:"warning",className:"text-yellow-500"}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:E.container?"10Router runs in a container":"Claude CLI not detected locally"}),(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:E.container?"The CLI lives on your host, not inside the container. Copy the manual config below into your host's ~/.claude/settings.json.":"Manual configuration is still available if 10router is deployed on a remote server."})]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2 pl-9",children:[(0,d.jsxs)(j.$,{variant:"secondary",size:"sm",onClick:()=>ae(!0),className:"!bg-yellow-500/20 !border-yellow-500/40 !text-yellow-700 dark:!text-yellow-300 hover:!bg-yellow-500/30",children:[(0,d.jsx)(e.default,{name:"content_copy",className:"text-[18px] mr-1"}),"Manual Config"]}),(0,d.jsxs)(j.$,{variant:"outline",size:"sm",onClick:()=>W(!V),children:[(0,d.jsx)(e.default,{name:V?"expand_less":"help",className:"text-[18px] mr-1"}),V?"Hide":"How to Install"]})]})]}),V&&(0,d.jsxs)("div",{className:"p-4 bg-card border border-border rounded-lg",children:[(0,d.jsx)("h4",{className:"font-medium mb-3",children:"Installation Guide"}),(0,d.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-muted-foreground mb-1",children:"macOS / Linux / Windows:"}),(0,d.jsx)("code",{className:"block px-3 py-2 bg-black/5 dark:bg-white/5 rounded font-mono text-xs",children:"npm install -g @anthropic-ai/claude-code"})]}),(0,d.jsxs)("p",{className:"text-muted-foreground",children:["After installation, run"," ",(0,d.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"claude"})," to verify."]})]})]})]}),!H&&E?.installed&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_1fr] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-foreground sm:text-right sm:text-sm",children:"Select Endpoint"}),(0,d.jsx)(G,{value:af||((A=af||l).endsWith("/v1")?A:`${A}/v1`),onChange:ag,requiresExternalUrl:a.requiresExternalUrl,tunnelEnabled:w,tunnelPublicUrl:x,tailscaleEnabled:y,tailscaleUrl:z,currentUrl:ap})]}),E?.settings?.env?.ANTHROPIC_BASE_URL&&(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_1fr_auto] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-foreground sm:text-right sm:text-sm",children:"Current"}),(0,d.jsx)("span",{className:"min-w-0 truncate rounded bg-card/40 px-2 py-2 text-xs text-muted-foreground sm:py-1.5",children:E.settings.env.ANTHROPIC_BASE_URL})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_1fr_auto] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-foreground sm:text-right sm:text-sm",children:"API Key"}),(0,d.jsx)(J,{value:_,onChange:aa,apiKeys:t,cloudEnabled:u})]}),a.defaultModels.map(a=>(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_1fr_auto] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-foreground sm:text-right sm:text-sm",children:a.name}),(0,d.jsxs)("div",{className:"relative w-full min-w-0",children:[(0,d.jsx)("input",{type:"text",value:h[a.alias]||"",onChange:b=>k(a.alias,b.target.value),placeholder:"provider/model-id",className:"w-full min-w-0 pl-2 pr-7 py-2 bg-card rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50 sm:py-1.5"}),h[a.alias]&&(0,d.jsxs)(p.m_,{children:[(0,d.jsx)(p.k$,{asChild:!0,children:(0,d.jsx)("button",{onClick:()=>k(a.alias,""),className:"absolute right-1 top-1/2 -translate-y-1/2 p-0.5 text-muted-foreground hover:text-red-500 rounded transition-colors",children:(0,d.jsx)(e.default,{name:"close",className:"text-[14px]"})})}),(0,d.jsx)(p.ZI,{children:"Clear"})]})]}),(0,d.jsx)("button",{onClick:()=>{$(a.alias),Y(!0)},className:"w-full sm:w-auto rounded border px-2 py-2 text-xs transition-colors sm:py-1.5 whitespace-nowrap sm:shrink-0 bg-card border-border text-foreground hover:border-primary cursor-pointer",children:"Select Model"})]},a.alias)),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_1fr_auto] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-foreground sm:text-right sm:text-sm",children:"Auto-compact"}),(0,d.jsxs)(o.l6,{value:al||"__default__",onValueChange:a=>am("__default__"===a?"":a),children:[(0,d.jsx)(o.bq,{className:"w-full text-xs",children:(0,d.jsx)(o.yv,{})}),(0,d.jsx)(o.gC,{children:O.map(a=>(0,d.jsx)(o.eb,{value:a.value||"__default__",children:a.label},a.label))})]})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_1fr_auto] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-foreground sm:text-right sm:text-sm",children:"1M context"}),(0,d.jsxs)("label",{className:"flex items-center gap-1.5 cursor-pointer select-none",children:[(0,d.jsx)(r.S,{checked:an,onCheckedChange:b=>{var c;ao(c=!0===b),a.defaultModels.forEach(a=>{let b=h[a.alias];b&&k(a.alias,((a,b)=>{let{model:c}=function(a){if("string"!=typeof a)return{model:a,contextMarker:null};let b=a.trim(),c=b.match(M);return c?{model:b.slice(0,-c[0].length),contextMarker:c[0].slice(1,-1).toLowerCase()}:{model:a,contextMarker:null}}(a);return b?`${c}[1m]`:c})(b,c))})}}),(0,d.jsx)("span",{className:"text-xs text-muted-foreground",children:"Append [1m] to the model name"}),(0,d.jsxs)(p.m_,{children:[(0,d.jsx)(p.k$,{asChild:!0,children:(0,d.jsx)("span",{className:"relative inline-flex",children:(0,d.jsx)(e.default,{name:"info",className:"text-muted-foreground text-[14px] cursor-help"})})}),(0,d.jsx)(p.ZI,{side:"top",children:"Claude Code otherwise assumes a 200K window, which clamps the auto-compact window above. Applied to every mapped model — only enable it for models that really accept 1M."})]})]})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_1fr_auto] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-foreground sm:text-right sm:text-sm",children:"Filter naming"}),(0,d.jsxs)("label",{className:"flex items-center gap-1.5 cursor-pointer select-none",children:[(0,d.jsx)(r.S,{checked:ah,onCheckedChange:ar}),(0,d.jsx)("span",{className:"text-xs text-muted-foreground",children:"Filter naming requests"}),(0,d.jsxs)(p.m_,{children:[(0,d.jsx)(p.k$,{asChild:!0,children:(0,d.jsx)("span",{className:"relative inline-flex",children:(0,d.jsx)(e.default,{name:"info",className:"text-muted-foreground text-[14px] cursor-help"})})}),(0,d.jsx)(p.ZI,{side:"top",children:"Intercepts Claude Code's topic-naming requests and returns a fake response locally, saving API tokens."})]})]})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_1fr_auto] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-foreground sm:text-right sm:text-sm",children:"Web Search"}),(0,d.jsxs)("label",{className:"flex items-center gap-1.5 cursor-pointer select-none",children:[(0,d.jsx)(r.S,{checked:aj,onCheckedChange:a=>ak(!0===a)}),(0,d.jsx)("span",{className:"text-xs text-muted-foreground",children:"Exa MCP"}),(0,d.jsxs)(p.m_,{children:[(0,d.jsx)(p.k$,{asChild:!0,children:(0,d.jsx)("span",{className:"relative inline-flex",children:(0,d.jsx)(e.default,{name:"info",className:"text-muted-foreground text-[14px] cursor-help"})})}),(0,d.jsx)(p.ZI,{side:"top",children:"Injects Exa MCP into ~/.claude.json so non-Claude models gain web search. Restart Claude Code after Apply."})]})]})]})]}),T&&(0,d.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===T.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,d.jsx)(e.default,{name:"success"===T.type?"check_circle":"error",className:"text-[14px]"}),(0,d.jsx)("span",{children:T.text})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:flex sm:items-center",children:[(0,d.jsxs)(j.$,{size:"sm",onClick:at,disabled:K,children:[K&&(0,d.jsx)(q.A,{className:"size-4 animate-spin"}),(0,d.jsx)(e.default,{name:"save",className:"text-[14px] mr-1"}),"Apply"]}),(0,d.jsxs)(j.$,{variant:"outline",size:"sm",onClick:au,disabled:!E?.has10Router||R,children:[R&&(0,d.jsx)(q.A,{className:"size-4 animate-spin"}),(0,d.jsx)(e.default,{name:"restore",className:"text-[14px] mr-1"}),"Reset"]}),(0,d.jsxs)(j.$,{variant:"ghost",size:"sm",onClick:()=>ae(!0),children:[(0,d.jsx)(e.default,{name:"content_copy",className:"text-[14px] mr-1"}),"Manual Config"]})]})]})]}),X&&(0,d.jsx)(i.rq,{isOpen:X,onClose:()=>Y(!1),onSelect:a=>{Z&&k(Z,a.value)},selectedModel:Z?h[Z]:null,activeProviders:g,modelAliases:ab,title:`Select model for ${Z}`}),(0,d.jsx)(i.uR,{isOpen:ad,onClose:()=>ae(!1),title:"Claude CLI - Manual Configuration",configs:(B=_&&_.trim()?_:u?"<API_KEY_FROM_DASHBOARD>":"sk_10router",C={ANTHROPIC_BASE_URL:as(),ANTHROPIC_AUTH_TOKEN:B},a.defaultModels.forEach(a=>{let b=h[a.alias];b&&a.envKey&&(C[a.envKey]=b)}),al&&(C.CLAUDE_CODE_AUTO_COMPACT_WINDOW=al),[{filename:"~/.claude/settings.json",content:JSON.stringify({hasCompletedOnboarding:!0,env:C},null,2)}])})]})})}function Q({tool:a,isExpanded:b,onToggle:c,baseUrl:g,apiKeys:h,activeProviders:k,cloudEnabled:l,initialStatus:m,tunnelEnabled:o,tunnelPublicUrl:r,tailscaleEnabled:t,tailscaleUrl:u}){let v,w,x,[y,z]=(0,f.useState)(m||null),[A,B]=(0,f.useState)(!1),[C,E]=(0,f.useState)(!1),[F,H]=(0,f.useState)(!1),[I,K]=(0,f.useState)(null),[M,N]=(0,f.useState)(!1),[O,P]=(0,f.useState)(""),[R,S]=(0,f.useState)([]),[T,U]=(0,f.useState)(""),[V,W]=(0,f.useState)(!1),[X,Y]=(0,f.useState)(!1),[Z,$]=(0,f.useState)({}),[_,aa]=(0,f.useState)(!1),[ab,ac]=(0,f.useState)(""),ad=(v=y?.config?.match(/base_url\s*=\s*"([^"]+)"/))?v[1]:"",ae=y?.installed?y.config?L(ad,{tunnelPublicUrl:r,tailscaleUrl:u})?"configured":"other":"not_configured":null,af=()=>{let a=ab||`${g}/v1`;return a.endsWith("/v1")?a:`${a}/v1`},ag=async()=>{B(!0);try{let a=await fetch("/api/cli-tools/codex-settings"),b=await a.json();z(b)}catch(a){z({installed:!1,error:a.message})}finally{B(!1)}},ah=async()=>{E(!0),K(null);try{let a=O&&O.trim()||l?O:"sk_10router",b=await fetch("/api/cli-tools/codex-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:af(),apiKey:a,models:R,subagentModel:T})}),c=await b.json();b.ok?(D(af(),{tunnelPublicUrl:r,tailscaleUrl:u}),K({type:"success",text:"Applied — models appear in codex /model. Account default kept; use codex --profile 10router-<model> for 10Router routing."}),ag()):K({type:"error",text:c.error||"Failed to apply settings"})}catch(a){K({type:"error",text:a.message})}finally{E(!1)}},ai=async()=>{H(!0),K(null);try{let a=await fetch("/api/cli-tools/codex-settings",{method:"DELETE"}),b=await a.json();a.ok?(K({type:"success",text:"Settings reset successfully!"}),S([]),U(""),ag()):K({type:"error",text:b.error||"Failed to reset settings"})}catch(a){K({type:"error",text:a.message})}finally{H(!1)}};return(0,d.jsx)(n.Zp,{size:"sm",className:"overflow-hidden",children:(0,d.jsxs)(n.Wu,{children:[(0,d.jsx)("div",{className:"flex items-start justify-between gap-3 hover:cursor-pointer sm:items-center",onClick:c,children:(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,d.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,d.jsx)(s.default,{src:"/providers/codex.png",alt:a.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:a=>{a.target.style.display="none"},loading:"lazy",decoding:"async"})}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[(0,d.jsx)("h3",{className:"font-medium text-sm",children:a.name}),"configured"===ae&&(0,d.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-green-500/10 text-green-600 dark:text-green-400 rounded-full",children:"Connected"}),"not_configured"===ae&&(0,d.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-yellow-500/10 text-yellow-600 dark:text-yellow-400 rounded-full",children:"Not configured"}),"other"===ae&&(0,d.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-blue-500/10 text-blue-600 dark:text-blue-400 rounded-full",children:"Other"})]}),(0,d.jsx)("p",{className:"text-xs text-muted-foreground truncate",children:a.description})]})]})}),b&&(0,d.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[A&&(0,d.jsxs)("div",{className:"flex items-center gap-2 text-muted-foreground",children:[(0,d.jsx)(e.default,{name:"progress_activity",className:"animate-spin"}),(0,d.jsx)("span",{children:"Checking Codex CLI..."})]}),!A&&y&&!y.installed&&(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{className:"flex flex-col gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)(e.default,{name:"warning",className:"text-yellow-500"}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:y.container?"10Router runs in a container":"Codex CLI not detected locally"}),(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:y.container?"The CLI lives on your host, not inside the container. Copy the manual config below into your host's ~/.codex/config.toml.":"Manual configuration is still available if 10router is deployed on a remote server."})]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2 pl-9",children:[(0,d.jsxs)(j.$,{variant:"secondary",size:"sm",onClick:()=>aa(!0),className:"!bg-yellow-500/20 !border-yellow-500/40 !text-yellow-700 dark:!text-yellow-300 hover:!bg-yellow-500/30",children:[(0,d.jsx)(e.default,{name:"content_copy",className:"text-[18px] mr-1"}),"Manual Config"]}),(0,d.jsxs)(j.$,{variant:"outline",size:"sm",onClick:()=>N(!M),children:[(0,d.jsx)(e.default,{name:M?"expand_less":"help",className:"text-[18px] mr-1"}),M?"Hide":"How to Install"]})]})]}),M&&(0,d.jsxs)("div",{className:"p-4 bg-card border border-border rounded-lg",children:[(0,d.jsx)("h4",{className:"font-medium mb-3",children:"Installation Guide"}),(0,d.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-muted-foreground mb-1",children:"macOS / Linux / Windows:"}),(0,d.jsx)("code",{className:"block px-3 py-2 bg-black/5 dark:bg-white/5 rounded font-mono text-xs",children:"npm install -g @openai/codex"})]}),(0,d.jsxs)("p",{className:"text-muted-foreground",children:["After installation, run"," ",(0,d.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"codex"})," to verify."]}),(0,d.jsx)("div",{className:"pt-2 border-t border-border",children:(0,d.jsxs)("p",{className:"text-muted-foreground text-xs",children:["Codex reads custom providers from"," ",(0,d.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"~/.codex/config.toml"}),'. Click "Apply" to auto-configure.']})})]})]})]}),!A&&y?.installed&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[y?.rootHijacked&&(0,d.jsxs)("div",{className:"flex items-start gap-2 px-2 py-1.5 rounded text-xs bg-yellow-500/10 text-yellow-600 dark:text-yellow-400",children:[(0,d.jsx)(e.default,{name:"warning",className:"text-[14px] shrink-0 mt-0.5"}),(0,d.jsx)("span",{children:"Old settings overrode your default Codex model. Apply to restore your ChatGPT account default — added models become profiles."})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_1fr] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-foreground sm:text-right sm:text-sm",children:"Select Endpoint"}),(0,d.jsx)(G,{value:ab||ab||`${g}/v1`,onChange:ac,requiresExternalUrl:a.requiresExternalUrl,tunnelEnabled:o,tunnelPublicUrl:r,tailscaleEnabled:t,tailscaleUrl:u,currentUrl:ad})]}),y?.config&&(ad?(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_1fr_auto] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-foreground sm:text-right sm:text-sm",children:"Current"}),(0,d.jsx)("span",{className:"min-w-0 truncate rounded bg-card/40 px-2 py-2 text-xs text-muted-foreground sm:py-1.5",children:ad})]}):null),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_1fr_auto] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-foreground sm:text-right sm:text-sm",children:"API Key"}),(0,d.jsx)(J,{value:O,onChange:P,apiKeys:h,cloudEnabled:l})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_1fr] sm:items-start sm:gap-2",children:[(0,d.jsx)("span",{className:"pt-1 text-xs font-semibold text-foreground sm:text-right sm:text-sm",children:"Models"}),(0,d.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col gap-2",children:[(0,d.jsx)("div",{className:"flex min-h-7 flex-wrap gap-1.5 rounded border border-border bg-card px-2 py-1.5",children:0===R.length?(0,d.jsx)("span",{className:"text-xs text-muted-foreground",children:"No models added"}):R.map(a=>(0,d.jsxs)("span",{className:"inline-flex items-center gap-1 rounded border border-transparent bg-black/5 px-2 py-0.5 text-xs text-muted-foreground hover:border-border dark:bg-white/5",children:[a,(0,d.jsxs)(p.m_,{children:[(0,d.jsx)(p.k$,{asChild:!0,children:(0,d.jsx)("button",{onClick:()=>S(R.filter(b=>b!==a)),className:"ml-0.5 hover:text-red-500",children:(0,d.jsx)(e.default,{name:"close",className:"text-[12px]"})})}),(0,d.jsx)(p.ZI,{children:"Remove"})]})]},a))}),(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,d.jsx)("button",{onClick:()=>W(!0),className:"cursor-pointer rounded border border-border bg-card px-2 py-1 text-xs text-foreground transition-colors hover:border-primary",children:"Add Model"}),(0,d.jsxs)("span",{className:"text-xs text-muted-foreground",children:["Launch:"," ",(0,d.jsx)("code",{className:"rounded bg-black/5 px-1 dark:bg-white/5",children:"codex --profile 10router-<model>"})]})]})]})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_1fr_auto] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-foreground sm:text-right sm:text-sm",children:"Subagent Model"}),(0,d.jsxs)("div",{className:"relative w-full min-w-0",children:[(0,d.jsx)("input",{type:"text",value:T,onChange:a=>U(a.target.value),placeholder:R[0]||"provider/model-id (defaults to main model)",className:"w-full min-w-0 pl-2 pr-7 py-2 bg-card rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50 sm:py-1.5"}),T&&(0,d.jsxs)(p.m_,{children:[(0,d.jsx)(p.k$,{asChild:!0,children:(0,d.jsx)("button",{onClick:()=>U(""),className:"absolute right-1 top-1/2 -translate-y-1/2 p-0.5 text-muted-foreground hover:text-red-500 rounded transition-colors",children:(0,d.jsx)(e.default,{name:"close",className:"text-[14px]"})})}),(0,d.jsx)(p.ZI,{children:"Clear (will use main model)"})]})]}),(0,d.jsx)("button",{onClick:()=>Y(!0),className:"w-full sm:w-auto rounded border px-2 py-2 text-xs transition-colors sm:py-1.5 whitespace-nowrap sm:shrink-0 bg-card border-border text-foreground hover:border-primary cursor-pointer",children:"Select Model"})]})]}),I&&(0,d.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===I.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,d.jsx)(e.default,{name:"success"===I.type?"check_circle":"error",className:"text-[14px]"}),(0,d.jsx)("span",{children:I.text})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:flex sm:items-center",children:[(0,d.jsxs)(j.$,{size:"sm",onClick:ah,disabled:!O&&l&&h.length>0||0===R.length||C,children:[C&&(0,d.jsx)(q.A,{className:"size-4 animate-spin"}),(0,d.jsx)(e.default,{name:"save",className:"text-[14px] mr-1"}),"Apply"]}),(0,d.jsxs)(j.$,{variant:"outline",size:"sm",onClick:ai,disabled:F,children:[F&&(0,d.jsx)(q.A,{className:"size-4 animate-spin"}),(0,d.jsx)(e.default,{name:"restore",className:"text-[14px] mr-1"}),"Reset"]}),(0,d.jsxs)(j.$,{variant:"ghost",size:"sm",onClick:()=>aa(!0),children:[(0,d.jsx)(e.default,{name:"content_copy",className:"text-[14px] mr-1"}),"Manual Config"]})]})]})]}),V&&(0,d.jsx)(i.rq,{isOpen:V,onClose:()=>W(!1),onSelect:a=>{R.includes(a.value)||S([...R,a.value])},onDeselect:a=>{S(R.filter(b=>b!==a.value))},selectedModel:null,addedModelValues:R,closeOnSelect:!1,title:"Add Models for Codex",activeProviders:k,modelAliases:Z}),X&&(0,d.jsx)(i.rq,{isOpen:X,onClose:()=>Y(!1),onSelect:a=>{U(a.value),Y(!1)},selectedModel:T,activeProviders:k,modelAliases:Z,title:"Select Subagent Model for Codex"}),(0,d.jsx)(i.uR,{isOpen:_,onClose:()=>aa(!1),title:"Codex CLI - Manual Configuration",configs:(w=O&&O.trim()?O:l?"<API_KEY_FROM_DASHBOARD>":"sk_10router",x=[{filename:"~/.codex/config.toml",content:`# 10Router Configuration for Codex CLI
1
+ (()=>{var a={};a.id=3554,a.ids=[3554],a.modules={643:a=>{"use strict";a.exports=require("node:perf_hooks")},1437:(a,b,c)=>{"use strict";var d=c(47633);c.o(d,"notFound")&&c.d(b,{notFound:function(){return d.notFound}}),c.o(d,"redirect")&&c.d(b,{redirect:function(){return d.redirect}})},1568:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>i});var d=c(25966),e=c(1437),f=c(41270),g=c(92592),h=c(78685);async function i({params:a}){let{toolId:b}=await a;f.d[b]||(0,e.notFound)();let c=await (0,g.D)();return(0,d.jsx)(h.default,{toolId:b,machineId:c})}},1708:a=>{"use strict";a.exports=require("node:process")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},4573:a=>{"use strict";a.exports=require("node:buffer")},7066:a=>{"use strict";a.exports=require("node:tty")},8128:a=>{"use strict";a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},11543:(a,b,c)=>{"use strict";function d(){throw Object.defineProperty(Error("`unauthorized()` is experimental and only allowed to be used when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E411",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unauthorized",{enumerable:!0,get:function(){return d}}),c(41081).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},14985:a=>{"use strict";a.exports=require("dns")},16162:(a,b,c)=>{Promise.resolve().then(c.bind(c,28840))},16698:a=>{"use strict";a.exports=require("node:async_hooks")},18142:(a,b,c)=>{"use strict";c.d(b,{YW:()=>d.Page,pV:()=>d.CardGrid,wn:()=>d.Section,zY:()=>d.PageHeader}),c(73865),c(55204);var d=c(19509)},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},20482:(a,b,c)=>{"use strict";c.d(b,{CK:()=>i.default,G9:()=>l.default,Iz:()=>r.default,KX:()=>s.PanelSkeleton,LF:()=>f.default,LH:()=>m.default,Mu:()=>s.StatCardSkeleton,Nf:()=>j.default,Qv:()=>e.CardSkeleton,YW:()=>u.YW,gw:()=>q.default,jK:()=>k.default,nh:()=>t.default,pV:()=>u.pV,rq:()=>g.default,uR:()=>h.default,uo:()=>d.ConfirmModal,vE:()=>n.default,vj:()=>o.default,wI:()=>p.default,wn:()=>u.wn,zY:()=>u.zY}),c(28907);var d=c(87121),e=c(53546);c(62648),c(77562),c(79517),c(66453);var f=c(71e3),g=c(16582),h=c(94725),i=c(98279),j=c(22354),k=c(23165);c(49451),c(82466),c(70047),c(32328),c(92249);var l=c(85405),m=c(91236),n=c(89630),o=c(87556),p=c(46009);c(54928);var q=c(5409),r=c(12710);c(92393),c(51);var s=c(11442),t=c(9656),u=c(18142)},21704:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"ReadonlyURLSearchParams",{enumerable:!0,get:function(){return d}});class c extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams"),Object.defineProperty(this,"__NEXT_ERROR_CODE",{value:"E1174",enumerable:!1,configurable:!0})}}class d extends URLSearchParams{append(){throw new c}delete(){throw new c}set(){throw new c}sort(){throw new c}}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},21820:a=>{"use strict";a.exports=require("os")},27910:a=>{"use strict";a.exports=require("stream")},28354:a=>{"use strict";a.exports=require("util")},28840:(a,b,c)=>{"use strict";c.d(b,{default:()=>aa});var d=c(86240),e=c(28907),f=c(70433),g=c(4459),h=c.n(g),i=c(20482),j=c(63265),k=c(92968),l=c(54204),m=c(95137),n=c(4271),o=c(83777),p=c(31952),q=c(36447),r=c(63998),s=c(62871),t=c(99902),u=c(81501);function v({storageKey:a,changeEvent:b,itemField:c,normalize:d=a=>a,defaultName:e=a=>a}){let f=()=>[],g=a=>{};return{read:f,subscribe:a=>()=>{},upsert:(a,b)=>{let h=d(a);if(!h)return null;let i=f(),j=i.find(a=>d(a[c])===h);if(j&&!b)return j.name;let k=(b||e(h)).trim();return k?(g([...i.filter(a=>a.name!==k&&d(a[c])!==h),{name:k,[c]:h}].sort((a,b)=>a.name.localeCompare(b.name))),k):null},remove:a=>g(f().filter(b=>b.name!==a))}}let w=a=>(a||"").replace(/\/+$/,""),x=v({storageKey:"10router.cliToolEndpointPresets",changeEvent:"10router:endpoint-presets-changed",itemField:"baseUrl",normalize:w,defaultName:a=>{try{return new URL(a).host}catch{return a}}}),y=v({storageKey:"10router.cliToolApiKeyPresets",changeEvent:"10router:api-key-presets-changed",itemField:"key"});x.read,x.subscribe;let z=x.upsert,A=x.remove;y.read,y.subscribe;let B=y.upsert,C=y.remove;function D(a,{tunnelPublicUrl:b,tailscaleUrl:c,cloudUrl:d}={}){let e=w(a);return!e||[`http://127.0.0.1:${t._$}`,b,c,d].filter(Boolean).flatMap(a=>[w(a),`${w(a)}/v1`]).includes(e)?null:z(e)}let E="__custom__",F="__save__";function G({value:a,onChange:b,requiresExternalUrl:c=!1,tunnelEnabled:g=!1,tunnelPublicUrl:h="",tailscaleEnabled:i=!1,tailscaleUrl:j="",cloudEnabled:k=!1,cloudUrl:l="",withV1:m=!0,currentUrl:n=""}){let[q,r]=(0,f.useState)([]),[s,v]=(0,f.useState)(!1),[w,x]=(0,f.useState)(""),[y,B]=(0,f.useState)("");(0,f.useRef)(!1);let C=(0,f.useRef)(""),D=(0,f.useMemo)(()=>(({requiresExternalUrl:a,tunnelEnabled:b,tunnelPublicUrl:c,tailscaleEnabled:d,tailscaleUrl:e,cloudEnabled:f,cloudUrl:g,savedPresets:h,withV1:i})=>{let j=[],k=a=>{let b;return i?(b=(a||"").replace(/\/+$/,""))?/\/v1$/.test(b)?b:`${b}/v1`:"":(a||"").replace(/\/+$/,"")};if(!a){let a=k(`http://127.0.0.1:${t._$}`);j.push({value:"local",label:a,url:a})}if(b&&c){let a=k(c);j.push({value:"tunnel",label:a,url:a})}if(d&&e){let a=k(e);j.push({value:"tailscale",label:a,url:a})}if(f&&g){let a=k(g);j.push({value:"cloud",label:a,url:a})}return h.forEach(a=>{j.push({value:`saved:${a.name}`,label:a.baseUrl,url:a.baseUrl,saved:!0})}),j.push({value:E,label:"Custom URL...",url:""}),j})({requiresExternalUrl:c,tunnelEnabled:g,tunnelPublicUrl:h,tailscaleEnabled:i,tailscaleUrl:j,cloudEnabled:k,cloudUrl:l,savedPresets:q,withV1:m}),[c,g,h,i,j,k,l,q,m]),H=w.startsWith("saved:"),I=w===E,J=I&&(y||"").trim().length>0;return(0,d.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsxs)(o.l6,{value:w,onValueChange:c=>{if(c===F){let b=(a||"").trim();if(!b)return;let c=b;try{c=new URL(b).host}catch{}let d=window.prompt("Save endpoint as:",c),e=d?.trim()?z(b,d.trim()):null;e&&x(`saved:${e}`);return}if(x(c),c===E){B(""),b("");return}let d=D.find(a=>a.value===c);d&&b(d.url)},children:[(0,d.jsx)(o.bq,{className:"flex-1 min-w-0 text-xs",children:(0,d.jsx)(o.yv,{placeholder:"Select endpoint"})}),(0,d.jsxs)(o.gC,{children:[D.map(a=>(0,d.jsx)(o.eb,{value:a.value,title:a.label,children:a.label},a.value)),J&&(0,d.jsx)(o.eb,{value:F,children:"+ Save current as..."})]})]}),H&&(0,d.jsxs)(p.m_,{children:[(0,d.jsx)(p.k$,{asChild:!0,children:(0,d.jsx)("button",{type:"button",onClick:()=>{if(!w.startsWith("saved:"))return;A(w.slice(6)),B("");let a=D.find(a=>a.value!==E&&a.value!==w);a?(x(a.value),b(a.url)):(x(E),b(""))},className:"p-1 text-muted-foreground hover:text-red-500 rounded transition-colors shrink-0",children:(0,d.jsx)(e.default,{name:"delete",className:"text-[14px]"})})}),(0,d.jsx)(p.ZI,{children:"Delete saved endpoint"})]})]}),I&&(0,d.jsx)(u.p,{type:"text",value:y,onChange:a=>{let c=a.target.value;C.current=c,B(c),b(c)},placeholder:m?"https://example.com/v1":"https://example.com",className:"h-9 text-xs"})]})}let H="__custom__",I="__save_key__";function J({value:a,onChange:b,apiKeys:c=[],cloudEnabled:g=!1,className:h=""}){let[i,j]=(0,f.useState)([]),[k,l]=(0,f.useState)(!1),[m,n]=(0,f.useState)(""),q=(0,f.useMemo)(()=>[...c.map(a=>({value:a.key,label:a.key})),...i.map(a=>({value:`saved:${a.name}`,label:a.key,url:a.key,saved:!0})),{value:H,label:"Custom...",url:""}],[c,i]),r=a?q.find(b=>b.value===a||b.url===a):null,s=r?r.value:k||a?H:q[0]?.value??H,t=k?m:a||"",v="string"==typeof s&&s.startsWith("saved:"),w=s===H,x=w&&(a||"").trim().length>0&&!c.some(b=>b.key===a);return 0!==c.length||0!==i.length||k||a?(0,d.jsxs)("div",{className:`flex flex-col gap-1.5 ${h}`,children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsxs)(o.l6,{value:s,onValueChange:c=>{if(c===I)return void B((a||"").trim());if(c===H){l(!0),n(""),b("");return}l(!1),n("");let d=q.find(a=>a.value===c);d&&b(d.url??d.value)},children:[(0,d.jsx)(o.bq,{className:"flex-1 min-w-0 text-xs",children:(0,d.jsx)(o.yv,{placeholder:"Select key"})}),(0,d.jsxs)(o.gC,{children:[q.map(a=>(0,d.jsx)(o.eb,{value:a.value,title:a.label,children:a.label},a.value)),x&&(0,d.jsx)(o.eb,{value:I,children:"+ Save current as..."})]})]}),v&&(0,d.jsxs)(p.m_,{children:[(0,d.jsx)(p.k$,{asChild:!0,children:(0,d.jsx)("button",{type:"button",onClick:()=>{if(!v)return;C(s.slice(6)),l(!1),n("");let a=q.find(a=>a.value!==H&&a.value!==s);b(a?a.url??a.value:"")},className:"p-1 text-muted-foreground hover:text-red-500 rounded transition-colors shrink-0",children:(0,d.jsx)(e.default,{name:"delete",className:"text-[14px]"})})}),(0,d.jsx)(p.ZI,{children:"Delete saved key"})]})]}),w&&(0,d.jsx)(u.p,{type:"text",value:t,onChange:a=>{let c=a.target.value;l(!0),n(c),b(c)},placeholder:"sk-...",className:"h-9 text-xs"})]}):(0,d.jsx)("span",{className:`min-w-0 rounded bg-card/40 px-2 py-2 text-xs text-muted-foreground sm:py-1.5 ${h}`,children:g?"No API keys - Create one in Keys page":"sk_10router (default)"})}let K=a=>(a||"").replace(/\/+$/,"");function L(a,b={}){if(!a)return!1;let c=K(a),{tunnelPublicUrl:d,tailscaleUrl:e,cloudUrl:f}=b;return!!(/localhost|127\.0\.0\.1|0\.0\.0\.0/.test(c)||d&&c.startsWith(K(d))||e&&c.startsWith(K(e))||f&&c.startsWith(K(f)))}let M=/\[1m\]$/i,N=process.env.NEXT_PUBLIC_CLOUD_URL,O=[{label:"Default",value:""},{label:"200K",value:"198000"},{label:"300K",value:"298000"},{label:"500K",value:"498000"},{label:"700K",value:"698000"}];function P({tool:a,isExpanded:b,onToggle:c,activeProviders:g,modelMappings:h,onModelMappingChange:k,baseUrl:l,hasActiveProviders:m,apiKeys:t,cloudEnabled:u,initialStatus:v,tunnelEnabled:w,tunnelPublicUrl:x,tailscaleEnabled:y,tailscaleUrl:z}){let A,B,C,[E,F]=(0,f.useState)(v||null),[H,I]=(0,f.useState)(!1),[K,Q]=(0,f.useState)(!1),[R,S]=(0,f.useState)(!1),[T,U]=(0,f.useState)(null),[V,W]=(0,f.useState)(!1),[X,Y]=(0,f.useState)(!1),[Z,$]=(0,f.useState)(null),[_,aa]=(0,f.useState)(""),[ab,ac]=(0,f.useState)({}),[ad,ae]=(0,f.useState)(!1),[af,ag]=(0,f.useState)(""),[ah,ai]=(0,f.useState)(!1),[aj,ak]=(0,f.useState)(!1),[al,am]=(0,f.useState)(""),[an,ao]=(0,f.useState)(!1);(0,f.useRef)(!1);let ap=E?.settings?.env?.ANTHROPIC_BASE_URL||"",aq=(()=>{if(!E?.installed)return null;let a=E.settings?.env?.ANTHROPIC_BASE_URL;return a?L(a,{tunnelPublicUrl:x,tailscaleUrl:z,cloudUrl:u?N:null})?"configured":"other":"not_configured"})(),ar=async a=>{let b=!0===a;ai(b),await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({ccFilterNaming:b})}).catch(()=>{})},as=()=>{let a=af||l;return a.endsWith("/v1")?a:`${a}/v1`},at=async()=>{Q(!0),U(null);try{let b={ANTHROPIC_BASE_URL:as()},c=_?.trim()||(t?.length>0?t[0].key:null)||(u?null:"sk_10router");c&&(b.ANTHROPIC_AUTH_TOKEN=c),a.defaultModels.forEach(a=>{let c=h[a.alias];c&&a.envKey&&(b[a.envKey]=c)}),al&&(b.CLAUDE_CODE_AUTO_COMPACT_WINDOW=al),a.envVars?.todoTools&&(b[a.envVars.todoTools]="1");let d=await fetch("/api/cli-tools/claude-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({env:b,exaMcpEnabled:aj,autoCompactWindow:al})}),e=await d.json();d.ok?(D(as(),{tunnelPublicUrl:x,tailscaleUrl:z}),U({type:"success",text:"Settings applied successfully!"}),F(a=>({...a,hasBackup:!0,settings:{...a?.settings,env:b},exaMcpEnabled:aj}))):U({type:"error",text:e.error||"Failed to apply settings"})}catch(a){U({type:"error",text:a.message})}finally{Q(!1)}},au=async()=>{S(!0),U(null);try{let b=await fetch("/api/cli-tools/claude-settings",{method:"DELETE"}),c=await b.json();b.ok?(U({type:"success",text:"Settings reset successfully!"}),a.defaultModels.forEach(a=>k(a.alias,a.defaultValue||"")),aa(""),ak(!1),am(""),ao(!1)):U({type:"error",text:c.error||"Failed to reset settings"})}catch(a){U({type:"error",text:a.message})}finally{S(!1)}};return(0,d.jsx)(n.Zp,{size:"sm",className:"overflow-hidden",children:(0,d.jsxs)(n.Wu,{children:[(0,d.jsx)("div",{className:"flex items-start justify-between gap-3 hover:cursor-pointer sm:items-center",onClick:c,children:(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,d.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,d.jsx)(s.default,{src:"/providers/claude.png",alt:a.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:a=>{a.target.style.display="none"},loading:"lazy",decoding:"async"})}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[(0,d.jsx)("h3",{className:"font-medium text-sm",children:a.name}),"configured"===aq&&(0,d.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-green-500/10 text-green-600 dark:text-green-400 rounded-full",children:"Connected"}),"not_configured"===aq&&(0,d.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-yellow-500/10 text-yellow-600 dark:text-yellow-400 rounded-full",children:"Not configured"}),"other"===aq&&(0,d.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-blue-500/10 text-blue-600 dark:text-blue-400 rounded-full",children:"Other"})]}),(0,d.jsx)("p",{className:"text-xs text-muted-foreground truncate",children:a.description})]})]})}),b&&(0,d.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[H&&(0,d.jsxs)("div",{className:"flex items-center gap-2 text-muted-foreground",children:[(0,d.jsx)(e.default,{name:"progress_activity",className:"animate-spin"}),(0,d.jsx)("span",{children:"Checking Claude CLI..."})]}),!H&&E&&!E.installed&&(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{className:"flex flex-col gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)(e.default,{name:"warning",className:"text-yellow-500"}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:E.container?"10Router runs in a container":"Claude CLI not detected locally"}),(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:E.container?"The CLI lives on your host, not inside the container. Copy the manual config below into your host's ~/.claude/settings.json.":"Manual configuration is still available if 10router is deployed on a remote server."})]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2 pl-9",children:[(0,d.jsxs)(j.$,{variant:"secondary",size:"sm",onClick:()=>ae(!0),className:"!bg-yellow-500/20 !border-yellow-500/40 !text-yellow-700 dark:!text-yellow-300 hover:!bg-yellow-500/30",children:[(0,d.jsx)(e.default,{name:"content_copy",className:"text-[18px] mr-1"}),"Manual Config"]}),(0,d.jsxs)(j.$,{variant:"outline",size:"sm",onClick:()=>W(!V),children:[(0,d.jsx)(e.default,{name:V?"expand_less":"help",className:"text-[18px] mr-1"}),V?"Hide":"How to Install"]})]})]}),V&&(0,d.jsxs)("div",{className:"p-4 bg-card border border-border rounded-lg",children:[(0,d.jsx)("h4",{className:"font-medium mb-3",children:"Installation Guide"}),(0,d.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-muted-foreground mb-1",children:"macOS / Linux / Windows:"}),(0,d.jsx)("code",{className:"block px-3 py-2 bg-black/5 dark:bg-white/5 rounded font-mono text-xs",children:"npm install -g @anthropic-ai/claude-code"})]}),(0,d.jsxs)("p",{className:"text-muted-foreground",children:["After installation, run"," ",(0,d.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"claude"})," to verify."]})]})]})]}),!H&&E?.installed&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_1fr] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-foreground sm:text-right sm:text-sm",children:"Select Endpoint"}),(0,d.jsx)(G,{value:af||((A=af||l).endsWith("/v1")?A:`${A}/v1`),onChange:ag,requiresExternalUrl:a.requiresExternalUrl,tunnelEnabled:w,tunnelPublicUrl:x,tailscaleEnabled:y,tailscaleUrl:z,currentUrl:ap})]}),E?.settings?.env?.ANTHROPIC_BASE_URL&&(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_1fr_auto] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-foreground sm:text-right sm:text-sm",children:"Current"}),(0,d.jsx)("span",{className:"min-w-0 truncate rounded bg-card/40 px-2 py-2 text-xs text-muted-foreground sm:py-1.5",children:E.settings.env.ANTHROPIC_BASE_URL})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_1fr_auto] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-foreground sm:text-right sm:text-sm",children:"API Key"}),(0,d.jsx)(J,{value:_,onChange:aa,apiKeys:t,cloudEnabled:u})]}),a.defaultModels.map(a=>(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_1fr_auto] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-foreground sm:text-right sm:text-sm",children:a.name}),(0,d.jsxs)("div",{className:"relative w-full min-w-0",children:[(0,d.jsx)("input",{type:"text",value:h[a.alias]||"",onChange:b=>k(a.alias,b.target.value),placeholder:"provider/model-id",className:"w-full min-w-0 pl-2 pr-7 py-2 bg-card rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50 sm:py-1.5"}),h[a.alias]&&(0,d.jsxs)(p.m_,{children:[(0,d.jsx)(p.k$,{asChild:!0,children:(0,d.jsx)("button",{onClick:()=>k(a.alias,""),className:"absolute right-1 top-1/2 -translate-y-1/2 p-0.5 text-muted-foreground hover:text-red-500 rounded transition-colors",children:(0,d.jsx)(e.default,{name:"close",className:"text-[14px]"})})}),(0,d.jsx)(p.ZI,{children:"Clear"})]})]}),(0,d.jsx)("button",{onClick:()=>{$(a.alias),Y(!0)},className:"w-full sm:w-auto rounded border px-2 py-2 text-xs transition-colors sm:py-1.5 whitespace-nowrap sm:shrink-0 bg-card border-border text-foreground hover:border-primary cursor-pointer",children:"Select Model"})]},a.alias)),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_1fr_auto] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-foreground sm:text-right sm:text-sm",children:"Auto-compact"}),(0,d.jsxs)(o.l6,{value:al||"__default__",onValueChange:a=>am("__default__"===a?"":a),children:[(0,d.jsx)(o.bq,{className:"w-full text-xs",children:(0,d.jsx)(o.yv,{})}),(0,d.jsx)(o.gC,{children:O.map(a=>(0,d.jsx)(o.eb,{value:a.value||"__default__",children:a.label},a.label))})]})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_1fr_auto] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-foreground sm:text-right sm:text-sm",children:"1M context"}),(0,d.jsxs)("label",{className:"flex items-center gap-1.5 cursor-pointer select-none",children:[(0,d.jsx)(r.S,{checked:an,onCheckedChange:b=>{var c;ao(c=!0===b),a.defaultModels.forEach(a=>{let b=h[a.alias];b&&k(a.alias,((a,b)=>{let{model:c}=function(a){if("string"!=typeof a)return{model:a,contextMarker:null};let b=a.trim(),c=b.match(M);return c?{model:b.slice(0,-c[0].length),contextMarker:c[0].slice(1,-1).toLowerCase()}:{model:a,contextMarker:null}}(a);return b?`${c}[1m]`:c})(b,c))})}}),(0,d.jsx)("span",{className:"text-xs text-muted-foreground",children:"Append [1m] to the model name"}),(0,d.jsxs)(p.m_,{children:[(0,d.jsx)(p.k$,{asChild:!0,children:(0,d.jsx)("span",{className:"relative inline-flex",children:(0,d.jsx)(e.default,{name:"info",className:"text-muted-foreground text-[14px] cursor-help"})})}),(0,d.jsx)(p.ZI,{side:"top",children:"Claude Code otherwise assumes a 200K window, which clamps the auto-compact window above. Applied to every mapped model — only enable it for models that really accept 1M."})]})]})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_1fr_auto] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-foreground sm:text-right sm:text-sm",children:"Filter naming"}),(0,d.jsxs)("label",{className:"flex items-center gap-1.5 cursor-pointer select-none",children:[(0,d.jsx)(r.S,{checked:ah,onCheckedChange:ar}),(0,d.jsx)("span",{className:"text-xs text-muted-foreground",children:"Filter naming requests"}),(0,d.jsxs)(p.m_,{children:[(0,d.jsx)(p.k$,{asChild:!0,children:(0,d.jsx)("span",{className:"relative inline-flex",children:(0,d.jsx)(e.default,{name:"info",className:"text-muted-foreground text-[14px] cursor-help"})})}),(0,d.jsx)(p.ZI,{side:"top",children:"Intercepts Claude Code's topic-naming requests and returns a fake response locally, saving API tokens."})]})]})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_1fr_auto] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-foreground sm:text-right sm:text-sm",children:"Web Search"}),(0,d.jsxs)("label",{className:"flex items-center gap-1.5 cursor-pointer select-none",children:[(0,d.jsx)(r.S,{checked:aj,onCheckedChange:a=>ak(!0===a)}),(0,d.jsx)("span",{className:"text-xs text-muted-foreground",children:"Exa MCP"}),(0,d.jsxs)(p.m_,{children:[(0,d.jsx)(p.k$,{asChild:!0,children:(0,d.jsx)("span",{className:"relative inline-flex",children:(0,d.jsx)(e.default,{name:"info",className:"text-muted-foreground text-[14px] cursor-help"})})}),(0,d.jsx)(p.ZI,{side:"top",children:"Injects Exa MCP into ~/.claude.json so non-Claude models gain web search. Restart Claude Code after Apply."})]})]})]})]}),T&&(0,d.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===T.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,d.jsx)(e.default,{name:"success"===T.type?"check_circle":"error",className:"text-[14px]"}),(0,d.jsx)("span",{children:T.text})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:flex sm:items-center",children:[(0,d.jsxs)(j.$,{size:"sm",onClick:at,disabled:K,children:[K&&(0,d.jsx)(q.A,{className:"size-4 animate-spin"}),(0,d.jsx)(e.default,{name:"save",className:"text-[14px] mr-1"}),"Apply"]}),(0,d.jsxs)(j.$,{variant:"outline",size:"sm",onClick:au,disabled:!E?.has10Router||R,children:[R&&(0,d.jsx)(q.A,{className:"size-4 animate-spin"}),(0,d.jsx)(e.default,{name:"restore",className:"text-[14px] mr-1"}),"Reset"]}),(0,d.jsxs)(j.$,{variant:"ghost",size:"sm",onClick:()=>ae(!0),children:[(0,d.jsx)(e.default,{name:"content_copy",className:"text-[14px] mr-1"}),"Manual Config"]})]})]})]}),X&&(0,d.jsx)(i.rq,{isOpen:X,onClose:()=>Y(!1),onSelect:a=>{Z&&k(Z,a.value)},selectedModel:Z?h[Z]:null,activeProviders:g,modelAliases:ab,title:`Select model for ${Z}`}),(0,d.jsx)(i.uR,{isOpen:ad,onClose:()=>ae(!1),title:"Claude CLI - Manual Configuration",configs:(B=_&&_.trim()?_:u?"<API_KEY_FROM_DASHBOARD>":"sk_10router",C={ANTHROPIC_BASE_URL:as(),ANTHROPIC_AUTH_TOKEN:B},a.defaultModels.forEach(a=>{let b=h[a.alias];b&&a.envKey&&(C[a.envKey]=b)}),al&&(C.CLAUDE_CODE_AUTO_COMPACT_WINDOW=al),a.envVars?.todoTools&&(C[a.envVars.todoTools]="1"),[{filename:"~/.claude/settings.json",content:JSON.stringify({hasCompletedOnboarding:!0,env:C},null,2)}])})]})})}function Q({tool:a,isExpanded:b,onToggle:c,baseUrl:g,apiKeys:h,activeProviders:k,cloudEnabled:l,initialStatus:m,tunnelEnabled:o,tunnelPublicUrl:r,tailscaleEnabled:t,tailscaleUrl:u}){let v,w,x,[y,z]=(0,f.useState)(m||null),[A,B]=(0,f.useState)(!1),[C,E]=(0,f.useState)(!1),[F,H]=(0,f.useState)(!1),[I,K]=(0,f.useState)(null),[M,N]=(0,f.useState)(!1),[O,P]=(0,f.useState)(""),[R,S]=(0,f.useState)([]),[T,U]=(0,f.useState)(""),[V,W]=(0,f.useState)(!1),[X,Y]=(0,f.useState)(!1),[Z,$]=(0,f.useState)({}),[_,aa]=(0,f.useState)(!1),[ab,ac]=(0,f.useState)(""),ad=(v=y?.config?.match(/base_url\s*=\s*"([^"]+)"/))?v[1]:"",ae=y?.installed?y.config?L(ad,{tunnelPublicUrl:r,tailscaleUrl:u})?"configured":"other":"not_configured":null,af=()=>{let a=ab||`${g}/v1`;return a.endsWith("/v1")?a:`${a}/v1`},ag=async()=>{B(!0);try{let a=await fetch("/api/cli-tools/codex-settings"),b=await a.json();z(b)}catch(a){z({installed:!1,error:a.message})}finally{B(!1)}},ah=async()=>{E(!0),K(null);try{let a=O&&O.trim()||l?O:"sk_10router",b=await fetch("/api/cli-tools/codex-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:af(),apiKey:a,models:R,subagentModel:T})}),c=await b.json();b.ok?(D(af(),{tunnelPublicUrl:r,tailscaleUrl:u}),K({type:"success",text:"Applied — models appear in codex /model. Account default kept; use codex --profile 10router-<model> for 10Router routing."}),ag()):K({type:"error",text:c.error||"Failed to apply settings"})}catch(a){K({type:"error",text:a.message})}finally{E(!1)}},ai=async()=>{H(!0),K(null);try{let a=await fetch("/api/cli-tools/codex-settings",{method:"DELETE"}),b=await a.json();a.ok?(K({type:"success",text:"Settings reset successfully!"}),S([]),U(""),ag()):K({type:"error",text:b.error||"Failed to reset settings"})}catch(a){K({type:"error",text:a.message})}finally{H(!1)}};return(0,d.jsx)(n.Zp,{size:"sm",className:"overflow-hidden",children:(0,d.jsxs)(n.Wu,{children:[(0,d.jsx)("div",{className:"flex items-start justify-between gap-3 hover:cursor-pointer sm:items-center",onClick:c,children:(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,d.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,d.jsx)(s.default,{src:"/providers/codex.png",alt:a.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:a=>{a.target.style.display="none"},loading:"lazy",decoding:"async"})}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[(0,d.jsx)("h3",{className:"font-medium text-sm",children:a.name}),"configured"===ae&&(0,d.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-green-500/10 text-green-600 dark:text-green-400 rounded-full",children:"Connected"}),"not_configured"===ae&&(0,d.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-yellow-500/10 text-yellow-600 dark:text-yellow-400 rounded-full",children:"Not configured"}),"other"===ae&&(0,d.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-blue-500/10 text-blue-600 dark:text-blue-400 rounded-full",children:"Other"})]}),(0,d.jsx)("p",{className:"text-xs text-muted-foreground truncate",children:a.description})]})]})}),b&&(0,d.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[A&&(0,d.jsxs)("div",{className:"flex items-center gap-2 text-muted-foreground",children:[(0,d.jsx)(e.default,{name:"progress_activity",className:"animate-spin"}),(0,d.jsx)("span",{children:"Checking Codex CLI..."})]}),!A&&y&&!y.installed&&(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{className:"flex flex-col gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)(e.default,{name:"warning",className:"text-yellow-500"}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:y.container?"10Router runs in a container":"Codex CLI not detected locally"}),(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:y.container?"The CLI lives on your host, not inside the container. Copy the manual config below into your host's ~/.codex/config.toml.":"Manual configuration is still available if 10router is deployed on a remote server."})]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2 pl-9",children:[(0,d.jsxs)(j.$,{variant:"secondary",size:"sm",onClick:()=>aa(!0),className:"!bg-yellow-500/20 !border-yellow-500/40 !text-yellow-700 dark:!text-yellow-300 hover:!bg-yellow-500/30",children:[(0,d.jsx)(e.default,{name:"content_copy",className:"text-[18px] mr-1"}),"Manual Config"]}),(0,d.jsxs)(j.$,{variant:"outline",size:"sm",onClick:()=>N(!M),children:[(0,d.jsx)(e.default,{name:M?"expand_less":"help",className:"text-[18px] mr-1"}),M?"Hide":"How to Install"]})]})]}),M&&(0,d.jsxs)("div",{className:"p-4 bg-card border border-border rounded-lg",children:[(0,d.jsx)("h4",{className:"font-medium mb-3",children:"Installation Guide"}),(0,d.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-muted-foreground mb-1",children:"macOS / Linux / Windows:"}),(0,d.jsx)("code",{className:"block px-3 py-2 bg-black/5 dark:bg-white/5 rounded font-mono text-xs",children:"npm install -g @openai/codex"})]}),(0,d.jsxs)("p",{className:"text-muted-foreground",children:["After installation, run"," ",(0,d.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"codex"})," to verify."]}),(0,d.jsx)("div",{className:"pt-2 border-t border-border",children:(0,d.jsxs)("p",{className:"text-muted-foreground text-xs",children:["Codex reads custom providers from"," ",(0,d.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"~/.codex/config.toml"}),'. Click "Apply" to auto-configure.']})})]})]})]}),!A&&y?.installed&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[y?.rootHijacked&&(0,d.jsxs)("div",{className:"flex items-start gap-2 px-2 py-1.5 rounded text-xs bg-yellow-500/10 text-yellow-600 dark:text-yellow-400",children:[(0,d.jsx)(e.default,{name:"warning",className:"text-[14px] shrink-0 mt-0.5"}),(0,d.jsx)("span",{children:"Old settings overrode your default Codex model. Apply to restore your ChatGPT account default — added models become profiles."})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_1fr] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-foreground sm:text-right sm:text-sm",children:"Select Endpoint"}),(0,d.jsx)(G,{value:ab||ab||`${g}/v1`,onChange:ac,requiresExternalUrl:a.requiresExternalUrl,tunnelEnabled:o,tunnelPublicUrl:r,tailscaleEnabled:t,tailscaleUrl:u,currentUrl:ad})]}),y?.config&&(ad?(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_1fr_auto] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-foreground sm:text-right sm:text-sm",children:"Current"}),(0,d.jsx)("span",{className:"min-w-0 truncate rounded bg-card/40 px-2 py-2 text-xs text-muted-foreground sm:py-1.5",children:ad})]}):null),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_1fr_auto] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-foreground sm:text-right sm:text-sm",children:"API Key"}),(0,d.jsx)(J,{value:O,onChange:P,apiKeys:h,cloudEnabled:l})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_1fr] sm:items-start sm:gap-2",children:[(0,d.jsx)("span",{className:"pt-1 text-xs font-semibold text-foreground sm:text-right sm:text-sm",children:"Models"}),(0,d.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col gap-2",children:[(0,d.jsx)("div",{className:"flex min-h-7 flex-wrap gap-1.5 rounded border border-border bg-card px-2 py-1.5",children:0===R.length?(0,d.jsx)("span",{className:"text-xs text-muted-foreground",children:"No models added"}):R.map(a=>(0,d.jsxs)("span",{className:"inline-flex items-center gap-1 rounded border border-transparent bg-black/5 px-2 py-0.5 text-xs text-muted-foreground hover:border-border dark:bg-white/5",children:[a,(0,d.jsxs)(p.m_,{children:[(0,d.jsx)(p.k$,{asChild:!0,children:(0,d.jsx)("button",{onClick:()=>S(R.filter(b=>b!==a)),className:"ml-0.5 hover:text-red-500",children:(0,d.jsx)(e.default,{name:"close",className:"text-[12px]"})})}),(0,d.jsx)(p.ZI,{children:"Remove"})]})]},a))}),(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,d.jsx)("button",{onClick:()=>W(!0),className:"cursor-pointer rounded border border-border bg-card px-2 py-1 text-xs text-foreground transition-colors hover:border-primary",children:"Add Model"}),(0,d.jsxs)("span",{className:"text-xs text-muted-foreground",children:["Launch:"," ",(0,d.jsx)("code",{className:"rounded bg-black/5 px-1 dark:bg-white/5",children:"codex --profile 10router-<model>"})]})]})]})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_1fr_auto] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-foreground sm:text-right sm:text-sm",children:"Subagent Model"}),(0,d.jsxs)("div",{className:"relative w-full min-w-0",children:[(0,d.jsx)("input",{type:"text",value:T,onChange:a=>U(a.target.value),placeholder:R[0]||"provider/model-id (defaults to main model)",className:"w-full min-w-0 pl-2 pr-7 py-2 bg-card rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50 sm:py-1.5"}),T&&(0,d.jsxs)(p.m_,{children:[(0,d.jsx)(p.k$,{asChild:!0,children:(0,d.jsx)("button",{onClick:()=>U(""),className:"absolute right-1 top-1/2 -translate-y-1/2 p-0.5 text-muted-foreground hover:text-red-500 rounded transition-colors",children:(0,d.jsx)(e.default,{name:"close",className:"text-[14px]"})})}),(0,d.jsx)(p.ZI,{children:"Clear (will use main model)"})]})]}),(0,d.jsx)("button",{onClick:()=>Y(!0),className:"w-full sm:w-auto rounded border px-2 py-2 text-xs transition-colors sm:py-1.5 whitespace-nowrap sm:shrink-0 bg-card border-border text-foreground hover:border-primary cursor-pointer",children:"Select Model"})]})]}),I&&(0,d.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===I.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,d.jsx)(e.default,{name:"success"===I.type?"check_circle":"error",className:"text-[14px]"}),(0,d.jsx)("span",{children:I.text})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:flex sm:items-center",children:[(0,d.jsxs)(j.$,{size:"sm",onClick:ah,disabled:!O&&l&&h.length>0||0===R.length||C,children:[C&&(0,d.jsx)(q.A,{className:"size-4 animate-spin"}),(0,d.jsx)(e.default,{name:"save",className:"text-[14px] mr-1"}),"Apply"]}),(0,d.jsxs)(j.$,{variant:"outline",size:"sm",onClick:ai,disabled:F,children:[F&&(0,d.jsx)(q.A,{className:"size-4 animate-spin"}),(0,d.jsx)(e.default,{name:"restore",className:"text-[14px] mr-1"}),"Reset"]}),(0,d.jsxs)(j.$,{variant:"ghost",size:"sm",onClick:()=>aa(!0),children:[(0,d.jsx)(e.default,{name:"content_copy",className:"text-[14px] mr-1"}),"Manual Config"]})]})]})]}),V&&(0,d.jsx)(i.rq,{isOpen:V,onClose:()=>W(!1),onSelect:a=>{R.includes(a.value)||S([...R,a.value])},onDeselect:a=>{S(R.filter(b=>b!==a.value))},selectedModel:null,addedModelValues:R,closeOnSelect:!1,title:"Add Models for Codex",activeProviders:k,modelAliases:Z}),X&&(0,d.jsx)(i.rq,{isOpen:X,onClose:()=>Y(!1),onSelect:a=>{U(a.value),Y(!1)},selectedModel:T,activeProviders:k,modelAliases:Z,title:"Select Subagent Model for Codex"}),(0,d.jsx)(i.uR,{isOpen:_,onClose:()=>aa(!1),title:"Codex CLI - Manual Configuration",configs:(w=O&&O.trim()?O:l?"<API_KEY_FROM_DASHBOARD>":"sk_10router",x=[{filename:"~/.codex/config.toml",content:`# 10Router Configuration for Codex CLI
2
2
  # Default model/provider stay on your ChatGPT account — only the provider
3
3
  # definition below is added. Selected models are merged into
4
4
  # model_catalog_json (~/.codex/10router-model-catalog.json) so they show in
@@ -37,4 +37,4 @@ ${x}
37
37
  config:
38
38
  provider: 10router
39
39
  model: ${S||Q[0]||"provider/model-id"}
40
- `},{filename:"~/.dsh/.credentials.yaml (add ref)",content:`refs: { TEN_ROUTER_API_KEY: ${w} }`}])})]})})}c(77736);let _=process.env.NEXT_PUBLIC_CLOUD_URL;function aa({toolId:a,machineId:b}){let c=l.d[a],[g,n]=(0,f.useState)([]),[o,p]=(0,f.useState)(!0),[q,r]=(0,f.useState)({}),[s,t]=(0,f.useState)(!1),[u,v]=(0,f.useState)(!1),[w,x]=(0,f.useState)(""),[y,z]=(0,f.useState)(!1),[A,B]=(0,f.useState)(""),[C,D]=(0,f.useState)([]),E=()=>g.filter(a=>!1!==a.isActive),F=(0,f.useCallback)((a,b,c)=>{r(d=>d[a]?.[b]===c?d:{...d,[a]:{...d[a],[b]:c}})},[]);return c?(0,d.jsxs)(i.YW,{children:[(0,d.jsxs)("div",{children:[(0,d.jsx)(j.$,{variant:"outline",size:"sm",asChild:!0,className:"mb-4 self-start",children:(0,d.jsxs)(h(),{href:"/dashboard/cli-tools",children:[(0,d.jsx)(e.default,{name:"arrow_back",className:"text-lg"}),"CLI Tools"]})}),(0,d.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:gap-4",children:[(0,d.jsx)("div",{className:"size-12 rounded-lg flex items-center justify-center shrink-0",style:{backgroundColor:`${c.color}15`},children:(0,d.jsx)(k.A,{src:c.image,alt:c.name,size:48,className:"object-contain rounded-lg max-w-[48px] max-h-[48px]",fallbackText:c.name.slice(0,2).toUpperCase(),fallbackColor:c.color})}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("h1",{className:"text-2xl font-semibold tracking-tight sm:text-3xl",children:c.name}),(0,d.jsx)("p",{className:"text-sm text-muted-foreground mt-1",children:c.description})]})]})]}),o?(0,d.jsx)(i.KX,{}):(()=>{let b,e,f,g=(b=E(),e=[],f=new Set,b.forEach(a=>{let b=m.Xg[a.provider]||a.provider,c=(0,m.KC)(a.provider);if(c.forEach(c=>{let d=`${b}/${c.id}`;f.has(d)||(f.add(d),e.push({value:d,label:`${b}/${c.id}`,provider:a.provider,alias:b,connectionName:a.name,modelId:c.id}))}),0===c.length){let c=a.providerSpecificData?.prefix||b,d=[];a.defaultModel&&d.push({id:a.defaultModel,name:a.defaultModel}),(a.providerSpecificData?.customModels||[]).forEach(a=>{a?.id&&!d.some(b=>b.id===a.id)&&d.push({id:a.id,name:a.name||a.id})}),0===d.length&&"active"===a.testStatus&&d.push({id:"model-id",name:`${c}/model-id`}),d.forEach(b=>{let d=`${c}/${b.id}`;f.has(d)||(f.add(d),e.push({value:d,label:`${c}/${b.id}`,provider:a.provider,alias:c,connectionName:a.name,modelId:b.id}))})}}),e).length>0,h={tool:c,isExpanded:!0,onToggle:()=>{},baseUrl:u&&w?w:s&&_?_:"http://localhost:20128",apiKeys:C,tunnelEnabled:u,tunnelPublicUrl:w,tailscaleEnabled:y,tailscaleUrl:A};switch(a){case"claude":return(0,d.jsx)(P,{...h,activeProviders:E(),modelMappings:q[a]||{},onModelMappingChange:(b,c)=>F(a,b,c),hasActiveProviders:g,cloudEnabled:s});case"codex":return(0,d.jsx)(Q,{...h,activeProviders:E(),cloudEnabled:s});case"opencode":return(0,d.jsx)(U,{...h,activeProviders:E(),cloudEnabled:s});case"cowork":return(0,d.jsx)(X,{...h,activeProviders:E(),hasActiveProviders:g,cloudEnabled:s,cloudUrl:_,tunnelEnabled:u,tunnelPublicUrl:w,tailscaleEnabled:y,tailscaleUrl:A});case"dsh":return(0,d.jsx)($,{...h,activeProviders:E(),cloudEnabled:s});default:return(0,d.jsx)(T,{toolId:a,...h,activeProviders:E(),cloudEnabled:s,tunnelEnabled:u})}})()]}):(0,d.jsxs)(i.YW,{children:[(0,d.jsx)(j.$,{variant:"outline",size:"sm",asChild:!0,className:"self-start",children:(0,d.jsxs)(h(),{href:"/dashboard/cli-tools",children:[(0,d.jsx)(e.default,{name:"arrow_back",className:"text-lg"}),"CLI Tools"]})}),(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:"Tool not found or disabled."})]})}},29021:a=>{"use strict";a.exports=require("fs")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},32467:a=>{"use strict";a.exports=require("node:http2")},33873:a=>{"use strict";a.exports=require("path")},34589:a=>{"use strict";a.exports=require("node:assert")},37067:a=>{"use strict";a.exports=require("node:http")},37540:a=>{"use strict";a.exports=require("node:console")},38522:a=>{"use strict";a.exports=require("node:zlib")},40610:a=>{"use strict";a.exports=require("node:dns")},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},41692:a=>{"use strict";a.exports=require("node:tls")},41792:a=>{"use strict";a.exports=require("node:querystring")},43848:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>i});var d=c(25966),e=c(1437);let f={claude:{id:"claude",name:"Claude Code",image:"/providers/claude.png",color:"#D97757",description:"Anthropic Claude Code CLI",configType:"env",envVars:{baseUrl:"ANTHROPIC_BASE_URL",model:"ANTHROPIC_MODEL",opusModel:"ANTHROPIC_DEFAULT_OPUS_MODEL",sonnetModel:"ANTHROPIC_DEFAULT_SONNET_MODEL",fableModel:"ANTHROPIC_DEFAULT_FABLE_MODEL",haikuModel:"ANTHROPIC_DEFAULT_HAIKU_MODEL"},modelAliases:["default","sonnet","opus","fable","haiku","opusplan"],settingsFile:"~/.claude/settings.json",defaultModels:[{id:"fable",name:"Claude Fable",alias:"fable",envKey:"ANTHROPIC_DEFAULT_FABLE_MODEL",defaultValue:"cc/claude-fable-5"},{id:"opus",name:"Claude Opus",alias:"opus",envKey:"ANTHROPIC_DEFAULT_OPUS_MODEL",defaultValue:"cc/claude-opus-5"},{id:"sonnet",name:"Claude Sonnet",alias:"sonnet",envKey:"ANTHROPIC_DEFAULT_SONNET_MODEL",defaultValue:"cc/claude-sonnet-5"},{id:"haiku",name:"Claude Haiku",alias:"haiku",envKey:"ANTHROPIC_DEFAULT_HAIKU_MODEL",defaultValue:"cc/claude-haiku-4-5-20251001"}]},codex:{id:"codex",name:"OpenAI Codex CLI / App",image:"/providers/codex.png",color:"#10A37F",description:"OpenAI Codex CLI",configType:"custom"},opencode:{id:"opencode",name:"OpenCode",image:"/providers/opencode.png",color:"#E87040",description:"OpenCode AI Terminal Assistant",configType:"custom"},cowork:{id:"cowork",name:"Claude Cowork",image:"/providers/claude.png",color:"#D97757",description:"Claude Desktop Cowork (third-party inference)",configType:"custom"},dsh:{id:"dsh",name:"DSH - DeepSeek Harness",image:"/providers/deepseek.png",color:"#4D6BFE",description:"DeepSeek Harness (dsh web) provider",configType:"custom"},cursor:{id:"cursor",name:"Cursor",image:"/providers/cursor.png",color:"#000000",description:"Cursor AI Code Editor",configType:"guide",requiresExternalUrl:!0,notes:[{type:"warning",text:"Requires Cursor Pro account to use this feature."},{type:"cloudCheck",text:"Cursor routes requests through its own server, so local endpoint is not supported. Please enable Tunnel or Cloud Endpoint in Settings."}],guideSteps:[{step:1,title:"Open Settings",desc:"Go to Settings → Models"},{step:2,title:"Enable OpenAI API",desc:'Enable "OpenAI API key" option'},{step:3,title:"Base URL",value:"{{baseUrl}}",copyable:!0},{step:4,title:"API Key",type:"apiKeySelector"},{step:5,title:"Add Custom Model",desc:'Click "View All Model" → "Add Custom Model"'},{step:6,title:"Select Model",type:"modelSelector"}]}};var g=c(92592),h=c(78685);async function i({params:a}){let{toolId:b}=await a;f[b]||(0,e.notFound)();let c=await (0,g.D)();return(0,d.jsx)(h.default,{toolId:b,machineId:c})}},46060:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external.js")},46293:a=>{"use strict";a.exports=require("sql.js")},47633:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={ReadonlyURLSearchParams:function(){return f.ReadonlyURLSearchParams},RedirectType:function(){return m},forbidden:function(){return i.forbidden},notFound:function(){return h.notFound},permanentRedirect:function(){return g.permanentRedirect},redirect:function(){return g.redirect},unauthorized:function(){return j.unauthorized},unstable_isUnrecognizedActionError:function(){return l},unstable_rethrow:function(){return k.unstable_rethrow}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(21704),g=c(96186),h=c(78688),i=c(53713),j=c(11543),k=c(71332);function l(){throw Object.defineProperty(Error("`unstable_isUnrecognizedActionError` can only be used on the client."),"__NEXT_ERROR_CODE",{value:"E776",enumerable:!1,configurable:!0})}let m={push:"push",replace:"replace"};("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},48161:a=>{"use strict";a.exports=require("node:os")},49836:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={actionAsyncStorage:function(){return f.actionAsyncStorage},workAsyncStorage:function(){return g.workAsyncStorage},workUnitAsyncStorage:function(){return h.workUnitAsyncStorage}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(19121),g=c(29294),h=c(63033);("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},51455:a=>{"use strict";a.exports=require("node:fs/promises")},53053:a=>{"use strict";a.exports=require("node:diagnostics_channel")},53713:(a,b,c)=>{"use strict";function d(){throw Object.defineProperty(Error("`forbidden()` is experimental and only allowed to be enabled when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E488",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"forbidden",{enumerable:!0,get:function(){return d}}),c(41081).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},55511:a=>{"use strict";a.exports=require("crypto")},55591:a=>{"use strict";a.exports=require("https")},57075:a=>{"use strict";a.exports=require("node:stream")},57975:a=>{"use strict";a.exports=require("node:util")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},71332:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unstable_rethrow",{enumerable:!0,get:function(){return function a(b){if((0,g.isNextRouterError)(b)||(0,f.isBailoutToCSRError)(b)||(0,i.isDynamicServerError)(b)||(0,h.isDynamicPostpone)(b)||(0,e.isPostpone)(b)||(0,d.isHangingPromiseRejectionError)(b)||(0,h.isPrerenderInterruptedError)(b))throw b;b instanceof Error&&"cause"in b&&a(b.cause)}}});let d=c(75523),e=c(49472),f=c(98389),g=c(65385),h=c(21206),i=c(92540);("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},71553:a=>{"use strict";a.exports=require("node:dns/promises")},71622:a=>{"use strict";a.exports=import("open")},73024:a=>{"use strict";a.exports=require("node:fs")},73136:a=>{"use strict";a.exports=require("node:url")},73429:a=>{"use strict";a.exports=require("node:util/types")},73496:a=>{"use strict";a.exports=require("http2")},74075:a=>{"use strict";a.exports=require("zlib")},75919:a=>{"use strict";a.exports=require("node:worker_threads")},75994:(a,b,c)=>{Promise.resolve().then(c.bind(c,78685))},76760:a=>{"use strict";a.exports=require("node:path")},77030:a=>{"use strict";a.exports=require("node:net")},77598:a=>{"use strict";a.exports=require("node:crypto")},77736:(a,b,c)=>{"use strict";c.d(b,{A:()=>i});var d=c(86240),e=c(29184),f=c(51),g=c(92968);let h={ok:"bg-green-500",warn:"bg-amber-500",info:"bg-blue-500",muted:"bg-muted-foreground/50"};function i({toolId:a,tool:b,status:c}){let j=b?.configType==="guide"?{label:"Guide",tone:"info"}:c?c.container&&null==c.installed?{label:"Manual setup",tone:"info"}:c.installed?c.has10Router?{label:"Connected",tone:"ok"}:{label:"Not configured",tone:"warn"}:{label:"Not installed",tone:"muted"}:{label:"Unknown",tone:"muted"};return(0,d.jsx)(f.default,{href:`/dashboard/cli-tools/${a}`,title:b.name,iconBg:b.color?`${b.color}15`:void 0,icon:(0,d.jsx)(g.A,{src:b.image,alt:b.name,size:30,className:"max-h-[30px] max-w-[30px] rounded-lg object-contain",fallbackText:b.name.slice(0,2).toUpperCase(),fallbackColor:b.color}),children:(0,d.jsxs)(e.E,{variant:"default",children:[(0,d.jsx)("span",{className:`size-1.5 rounded-full ${h[j.tone]}`}),j.label]})})}},78474:a=>{"use strict";a.exports=require("node:events")},78685:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(35062).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/10Router/10Router/src/app/(dashboard)/dashboard/cli-tools/[toolId]/ToolDetailClient.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/10Router/10Router/src/app/(dashboard)/dashboard/cli-tools/[toolId]/ToolDetailClient.tsx","default")},78688:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"notFound",{enumerable:!0,get:function(){return f}});let d=c(41081),e=`${d.HTTP_ERROR_FALLBACK_ERROR_CODE};404`;function f(){let a=Object.defineProperty(Error(e),"__NEXT_ERROR_CODE",{value:"E1041",enumerable:!1,configurable:!0});throw a.digest=e,a}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},79551:a=>{"use strict";a.exports=require("url")},79646:a=>{"use strict";a.exports=require("child_process")},79868:a=>{"use strict";a.exports=require("node:sqlite")},81630:a=>{"use strict";a.exports=require("http")},81787:a=>{"use strict";a.exports=require("bun:sqlite")},87997:a=>{"use strict";a.exports=require("node:timers")},91645:a=>{"use strict";a.exports=require("net")},92592:(a,b,c)=>{"use strict";c.d(b,{D:()=>e});var d=c(94621);async function e(){return await (0,d.Xj)()}},94621:(a,b,c)=>{"use strict";c.d(b,{Xj:()=>q});var d=c(78356),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(77598),j=c.n(i),k=c(51336);let l=h().join(k.n,"machine-id"),m=h().join(k.n,"auth"),n=h().join(m,"cli-secret"),o=null,p=null;async function q(a=null){let b=a||process.env.MACHINE_ID_SALT||"endpoint-proxy-salt",c=function(){if(o)return o;try{if(o=f().readFileSync(l,"utf8").trim())return o}catch{}try{o=(0,d.machineIdSync)()}catch{o=j().randomUUID()}try{f().mkdirSync(k.n,{recursive:!0}),f().writeFileSync(l,o,{mode:384})}catch{}return o}(),e="10r-cli-auth"===b?function(){if(p)return p;try{if(p=f().readFileSync(n,"utf8").trim())return p}catch{}p=j().randomBytes(32).toString("hex");try{f().mkdirSync(m,{recursive:!0}),f().writeFileSync(n,p,{mode:384})}catch{}return p}():"";return j().createHash("sha256").update(c+b+e).digest("hex").substring(0,16)}},94735:a=>{"use strict";a.exports=require("events")},96186:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={getRedirectError:function(){return i},getRedirectStatusCodeFromError:function(){return n},getRedirectTypeFromError:function(){return m},getURLFromRedirectError:function(){return l},permanentRedirect:function(){return k},redirect:function(){return j}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(28191),g=c(13489),h=c(49836);function i(a,b,c=f.RedirectStatusCode.TemporaryRedirect){let d=Object.defineProperty(Error(g.REDIRECT_ERROR_CODE),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return d.digest=`${g.REDIRECT_ERROR_CODE};${b};${a};${c};`,d}function j(a,b){throw i(a,b??=h.actionAsyncStorage?.getStore()?.isAction?"push":"replace",f.RedirectStatusCode.TemporaryRedirect)}function k(a,b="replace"){throw i(a,b,f.RedirectStatusCode.PermanentRedirect)}function l(a){return(0,g.isRedirectError)(a)?a.digest.split(";").slice(2,-2).join(";"):null}function m(a){if(!(0,g.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return a.digest.split(";",2)[1]}function n(a){if(!(0,g.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return Number(a.digest.split(";").at(-2))}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)}};var b=require("../../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[1316,1238,7963,8569,7257,6009,9817,7535,7816,7156,2339,6461,4301,1289,9018,2801],()=>b(b.s=518));module.exports=c})();
40
+ `},{filename:"~/.dsh/.credentials.yaml (add ref)",content:`refs: { TEN_ROUTER_API_KEY: ${w} }`}])})]})})}c(77736);let _=process.env.NEXT_PUBLIC_CLOUD_URL;function aa({toolId:a,machineId:b}){let c=l.d[a],[g,n]=(0,f.useState)([]),[o,p]=(0,f.useState)(!0),[q,r]=(0,f.useState)({}),[s,t]=(0,f.useState)(!1),[u,v]=(0,f.useState)(!1),[w,x]=(0,f.useState)(""),[y,z]=(0,f.useState)(!1),[A,B]=(0,f.useState)(""),[C,D]=(0,f.useState)([]),E=()=>g.filter(a=>!1!==a.isActive),F=(0,f.useCallback)((a,b,c)=>{r(d=>d[a]?.[b]===c?d:{...d,[a]:{...d[a],[b]:c}})},[]);return c?(0,d.jsxs)(i.YW,{children:[(0,d.jsxs)("div",{children:[(0,d.jsx)(j.$,{variant:"outline",size:"sm",asChild:!0,className:"mb-4 self-start",children:(0,d.jsxs)(h(),{href:"/dashboard/cli-tools",children:[(0,d.jsx)(e.default,{name:"arrow_back",className:"text-lg"}),"CLI Tools"]})}),(0,d.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:gap-4",children:[(0,d.jsx)("div",{className:"size-12 rounded-lg flex items-center justify-center shrink-0",style:{backgroundColor:`${c.color}15`},children:(0,d.jsx)(k.A,{src:c.image,alt:c.name,size:48,className:"object-contain rounded-lg max-w-[48px] max-h-[48px]",fallbackText:c.name.slice(0,2).toUpperCase(),fallbackColor:c.color})}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("h1",{className:"text-2xl font-semibold tracking-tight sm:text-3xl",children:c.name}),(0,d.jsx)("p",{className:"text-sm text-muted-foreground mt-1",children:c.description})]})]})]}),o?(0,d.jsx)(i.KX,{}):(()=>{let b,e,f,g=(b=E(),e=[],f=new Set,b.forEach(a=>{let b=m.Xg[a.provider]||a.provider,c=(0,m.KC)(a.provider);if(c.forEach(c=>{let d=`${b}/${c.id}`;f.has(d)||(f.add(d),e.push({value:d,label:`${b}/${c.id}`,provider:a.provider,alias:b,connectionName:a.name,modelId:c.id}))}),0===c.length){let c=a.providerSpecificData?.prefix||b,d=[];a.defaultModel&&d.push({id:a.defaultModel,name:a.defaultModel}),(a.providerSpecificData?.customModels||[]).forEach(a=>{a?.id&&!d.some(b=>b.id===a.id)&&d.push({id:a.id,name:a.name||a.id})}),0===d.length&&"active"===a.testStatus&&d.push({id:"model-id",name:`${c}/model-id`}),d.forEach(b=>{let d=`${c}/${b.id}`;f.has(d)||(f.add(d),e.push({value:d,label:`${c}/${b.id}`,provider:a.provider,alias:c,connectionName:a.name,modelId:b.id}))})}}),e).length>0,h={tool:c,isExpanded:!0,onToggle:()=>{},baseUrl:u&&w?w:s&&_?_:"http://localhost:20128",apiKeys:C,tunnelEnabled:u,tunnelPublicUrl:w,tailscaleEnabled:y,tailscaleUrl:A};switch(a){case"claude":return(0,d.jsx)(P,{...h,activeProviders:E(),modelMappings:q[a]||{},onModelMappingChange:(b,c)=>F(a,b,c),hasActiveProviders:g,cloudEnabled:s});case"codex":return(0,d.jsx)(Q,{...h,activeProviders:E(),cloudEnabled:s});case"opencode":return(0,d.jsx)(U,{...h,activeProviders:E(),cloudEnabled:s});case"cowork":return(0,d.jsx)(X,{...h,activeProviders:E(),hasActiveProviders:g,cloudEnabled:s,cloudUrl:_,tunnelEnabled:u,tunnelPublicUrl:w,tailscaleEnabled:y,tailscaleUrl:A});case"dsh":return(0,d.jsx)($,{...h,activeProviders:E(),cloudEnabled:s});default:return(0,d.jsx)(T,{toolId:a,...h,activeProviders:E(),cloudEnabled:s,tunnelEnabled:u})}})()]}):(0,d.jsxs)(i.YW,{children:[(0,d.jsx)(j.$,{variant:"outline",size:"sm",asChild:!0,className:"self-start",children:(0,d.jsxs)(h(),{href:"/dashboard/cli-tools",children:[(0,d.jsx)(e.default,{name:"arrow_back",className:"text-lg"}),"CLI Tools"]})}),(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:"Tool not found or disabled."})]})}},29021:a=>{"use strict";a.exports=require("fs")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},32467:a=>{"use strict";a.exports=require("node:http2")},33873:a=>{"use strict";a.exports=require("path")},34589:a=>{"use strict";a.exports=require("node:assert")},37067:a=>{"use strict";a.exports=require("node:http")},37540:a=>{"use strict";a.exports=require("node:console")},38522:a=>{"use strict";a.exports=require("node:zlib")},40610:a=>{"use strict";a.exports=require("node:dns")},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},41270:(a,b,c)=>{"use strict";c.d(b,{d:()=>d});let d={claude:{id:"claude",name:"Claude Code",image:"/providers/claude.png",color:"#D97757",description:"Anthropic Claude Code CLI",configType:"env",envVars:{baseUrl:"ANTHROPIC_BASE_URL",model:"ANTHROPIC_MODEL",opusModel:"ANTHROPIC_DEFAULT_OPUS_MODEL",sonnetModel:"ANTHROPIC_DEFAULT_SONNET_MODEL",fableModel:"ANTHROPIC_DEFAULT_FABLE_MODEL",haikuModel:"ANTHROPIC_DEFAULT_HAIKU_MODEL",todoTools:"CLAUDE_CODE_ENABLE_TODO_TOOLS"},modelAliases:["default","sonnet","opus","fable","haiku","opusplan"],settingsFile:"~/.claude/settings.json",defaultModels:[{id:"fable",name:"Claude Fable",alias:"fable",envKey:"ANTHROPIC_DEFAULT_FABLE_MODEL",defaultValue:"cc/claude-fable-5"},{id:"opus",name:"Claude Opus",alias:"opus",envKey:"ANTHROPIC_DEFAULT_OPUS_MODEL",defaultValue:"cc/claude-opus-5"},{id:"sonnet",name:"Claude Sonnet",alias:"sonnet",envKey:"ANTHROPIC_DEFAULT_SONNET_MODEL",defaultValue:"cc/claude-sonnet-5"},{id:"haiku",name:"Claude Haiku",alias:"haiku",envKey:"ANTHROPIC_DEFAULT_HAIKU_MODEL",defaultValue:"cc/claude-haiku-4-5-20251001"}]},codex:{id:"codex",name:"OpenAI Codex CLI / App",image:"/providers/codex.png",color:"#10A37F",description:"OpenAI Codex CLI",configType:"custom"},opencode:{id:"opencode",name:"OpenCode",image:"/providers/opencode.png",color:"#E87040",description:"OpenCode AI Terminal Assistant",configType:"custom"},cowork:{id:"cowork",name:"Claude Cowork",image:"/providers/claude.png",color:"#D97757",description:"Claude Desktop Cowork (third-party inference)",configType:"custom"},dsh:{id:"dsh",name:"DSH - DeepSeek Harness",image:"/providers/deepseek.png",color:"#4D6BFE",description:"DeepSeek Harness (dsh web) provider",configType:"custom"},cursor:{id:"cursor",name:"Cursor",image:"/providers/cursor.png",color:"#000000",description:"Cursor AI Code Editor",configType:"guide",requiresExternalUrl:!0,notes:[{type:"warning",text:"Requires Cursor Pro account to use this feature."},{type:"cloudCheck",text:"Cursor routes requests through its own server, so local endpoint is not supported. Please enable Tunnel or Cloud Endpoint in Settings."}],guideSteps:[{step:1,title:"Open Settings",desc:"Go to Settings → Models"},{step:2,title:"Enable OpenAI API",desc:'Enable "OpenAI API key" option'},{step:3,title:"Base URL",value:"{{baseUrl}}",copyable:!0},{step:4,title:"API Key",type:"apiKeySelector"},{step:5,title:"Add Custom Model",desc:'Click "View All Model" → "Add Custom Model"'},{step:6,title:"Select Model",type:"modelSelector"}]}}},41692:a=>{"use strict";a.exports=require("node:tls")},41792:a=>{"use strict";a.exports=require("node:querystring")},46060:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external.js")},46293:a=>{"use strict";a.exports=require("sql.js")},47633:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={ReadonlyURLSearchParams:function(){return f.ReadonlyURLSearchParams},RedirectType:function(){return m},forbidden:function(){return i.forbidden},notFound:function(){return h.notFound},permanentRedirect:function(){return g.permanentRedirect},redirect:function(){return g.redirect},unauthorized:function(){return j.unauthorized},unstable_isUnrecognizedActionError:function(){return l},unstable_rethrow:function(){return k.unstable_rethrow}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(21704),g=c(96186),h=c(78688),i=c(53713),j=c(11543),k=c(71332);function l(){throw Object.defineProperty(Error("`unstable_isUnrecognizedActionError` can only be used on the client."),"__NEXT_ERROR_CODE",{value:"E776",enumerable:!1,configurable:!0})}let m={push:"push",replace:"replace"};("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},48161:a=>{"use strict";a.exports=require("node:os")},49836:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={actionAsyncStorage:function(){return f.actionAsyncStorage},workAsyncStorage:function(){return g.workAsyncStorage},workUnitAsyncStorage:function(){return h.workUnitAsyncStorage}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(19121),g=c(29294),h=c(63033);("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},51455:a=>{"use strict";a.exports=require("node:fs/promises")},53053:a=>{"use strict";a.exports=require("node:diagnostics_channel")},53713:(a,b,c)=>{"use strict";function d(){throw Object.defineProperty(Error("`forbidden()` is experimental and only allowed to be enabled when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E488",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"forbidden",{enumerable:!0,get:function(){return d}}),c(41081).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},55511:a=>{"use strict";a.exports=require("crypto")},55591:a=>{"use strict";a.exports=require("https")},57075:a=>{"use strict";a.exports=require("node:stream")},57975:a=>{"use strict";a.exports=require("node:util")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},71332:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unstable_rethrow",{enumerable:!0,get:function(){return function a(b){if((0,g.isNextRouterError)(b)||(0,f.isBailoutToCSRError)(b)||(0,i.isDynamicServerError)(b)||(0,h.isDynamicPostpone)(b)||(0,e.isPostpone)(b)||(0,d.isHangingPromiseRejectionError)(b)||(0,h.isPrerenderInterruptedError)(b))throw b;b instanceof Error&&"cause"in b&&a(b.cause)}}});let d=c(75523),e=c(49472),f=c(98389),g=c(65385),h=c(21206),i=c(92540);("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},71553:a=>{"use strict";a.exports=require("node:dns/promises")},71622:a=>{"use strict";a.exports=import("open")},73024:a=>{"use strict";a.exports=require("node:fs")},73136:a=>{"use strict";a.exports=require("node:url")},73429:a=>{"use strict";a.exports=require("node:util/types")},73496:a=>{"use strict";a.exports=require("http2")},74075:a=>{"use strict";a.exports=require("zlib")},75919:a=>{"use strict";a.exports=require("node:worker_threads")},75994:(a,b,c)=>{Promise.resolve().then(c.bind(c,78685))},76760:a=>{"use strict";a.exports=require("node:path")},77030:a=>{"use strict";a.exports=require("node:net")},77598:a=>{"use strict";a.exports=require("node:crypto")},77736:(a,b,c)=>{"use strict";c.d(b,{A:()=>i});var d=c(86240),e=c(29184),f=c(51),g=c(92968);let h={ok:"bg-green-500",warn:"bg-amber-500",info:"bg-blue-500",muted:"bg-muted-foreground/50"};function i({toolId:a,tool:b,status:c}){let j=b?.configType==="guide"?{label:"Guide",tone:"info"}:c?c.container&&null==c.installed?{label:"Manual setup",tone:"info"}:c.installed?c.has10Router?{label:"Connected",tone:"ok"}:{label:"Not configured",tone:"warn"}:{label:"Not installed",tone:"muted"}:{label:"Unknown",tone:"muted"};return(0,d.jsx)(f.default,{href:`/dashboard/cli-tools/${a}`,title:b.name,iconBg:b.color?`${b.color}15`:void 0,icon:(0,d.jsx)(g.A,{src:b.image,alt:b.name,size:30,className:"max-h-[30px] max-w-[30px] rounded-lg object-contain",fallbackText:b.name.slice(0,2).toUpperCase(),fallbackColor:b.color}),children:(0,d.jsxs)(e.E,{variant:"default",children:[(0,d.jsx)("span",{className:`size-1.5 rounded-full ${h[j.tone]}`}),j.label]})})}},78474:a=>{"use strict";a.exports=require("node:events")},78685:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(35062).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/10Router/10Router/src/app/(dashboard)/dashboard/cli-tools/[toolId]/ToolDetailClient.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/10Router/10Router/src/app/(dashboard)/dashboard/cli-tools/[toolId]/ToolDetailClient.tsx","default")},78688:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"notFound",{enumerable:!0,get:function(){return f}});let d=c(41081),e=`${d.HTTP_ERROR_FALLBACK_ERROR_CODE};404`;function f(){let a=Object.defineProperty(Error(e),"__NEXT_ERROR_CODE",{value:"E1041",enumerable:!1,configurable:!0});throw a.digest=e,a}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},79551:a=>{"use strict";a.exports=require("url")},79646:a=>{"use strict";a.exports=require("child_process")},79868:a=>{"use strict";a.exports=require("node:sqlite")},81630:a=>{"use strict";a.exports=require("http")},81787:a=>{"use strict";a.exports=require("bun:sqlite")},87997:a=>{"use strict";a.exports=require("node:timers")},90808:(a,b,c)=>{"use strict";c.r(b),c.d(b,{__next_app__:()=>x,handler:()=>z,routeModule:()=>y});var d=c(26720),e=c(29966),f=c(36243),g=c(70310),h={};for(let a in g)0>["default","__next_app__","routeModule","handler"].indexOf(a)&&(h[a]=()=>g[a]);c.d(b,h);let i=(0,d.p)(()=>Promise.resolve().then(c.bind(c,79452))),j=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,67694,23))),k=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,2808,23))),l=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,8329,23))),m=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,41580,23))),n=(0,d.p)(()=>Promise.resolve().then(c.bind(c,11089))),o=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,67694,23))),p=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,2808,23))),q=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,8329,23))),r=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,41580,23))),s=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,67694,23))),t=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,67694,23))),u=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,67694,23))),v={children:["",{children:["(dashboard)",{children:["dashboard",{children:["cli-tools",{children:["[toolId]",{children:["__PAGE__",{},{page:[(0,d.p)(()=>Promise.resolve().then(c.bind(c,1568))),"/home/runner/work/10Router/10Router/src/app/(dashboard)/dashboard/cli-tools/[toolId]/page.tsx"]}]},{"global-error":[u,"next/dist/client/components/builtin/global-error.js"]},[]]},{"global-error":[t,"next/dist/client/components/builtin/global-error.js"]},[]]},{"global-error":[s,"next/dist/client/components/builtin/global-error.js"]},[]]},{layout:[n,"/home/runner/work/10Router/10Router/src/app/(dashboard)/layout.tsx"],"global-error":[o,"next/dist/client/components/builtin/global-error.js"],"not-found":[p,"next/dist/client/components/builtin/not-found.js"],forbidden:[q,"next/dist/client/components/builtin/forbidden.js"],unauthorized:[r,"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[],apple:[],openGraph:[],twitter:[],manifest:"/manifest.webmanifest"}},[]]},{layout:[i,"/home/runner/work/10Router/10Router/src/app/layout.tsx"],"global-error":[j,"next/dist/client/components/builtin/global-error.js"],"not-found":[k,"next/dist/client/components/builtin/not-found.js"],forbidden:[l,"next/dist/client/components/builtin/forbidden.js"],unauthorized:[m,"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[],apple:[],openGraph:[],twitter:[],manifest:"/manifest.webmanifest"}},[]]}.children,w=(0,e.H)({tree:v,page:"/(dashboard)/dashboard/cli-tools/[toolId]/page",pathname:"/dashboard/cli-tools/[toolId]",require:c,loadChunk:()=>Promise.resolve(),interopDefault:f.T}),x=w.__next_app__,y=w.routeModule,z=w.handler},91645:a=>{"use strict";a.exports=require("net")},92592:(a,b,c)=>{"use strict";c.d(b,{D:()=>e});var d=c(94621);async function e(){return await (0,d.Xj)()}},94621:(a,b,c)=>{"use strict";c.d(b,{Xj:()=>q});var d=c(78356),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(77598),j=c.n(i),k=c(51336);let l=h().join(k.n,"machine-id"),m=h().join(k.n,"auth"),n=h().join(m,"cli-secret"),o=null,p=null;async function q(a=null){let b=a||process.env.MACHINE_ID_SALT||"endpoint-proxy-salt",c=function(){if(o)return o;try{if(o=f().readFileSync(l,"utf8").trim())return o}catch{}try{o=(0,d.machineIdSync)()}catch{o=j().randomUUID()}try{f().mkdirSync(k.n,{recursive:!0}),f().writeFileSync(l,o,{mode:384})}catch{}return o}(),e="10r-cli-auth"===b?function(){if(p)return p;try{if(p=f().readFileSync(n,"utf8").trim())return p}catch{}p=j().randomBytes(32).toString("hex");try{f().mkdirSync(m,{recursive:!0}),f().writeFileSync(n,p,{mode:384})}catch{}return p}():"";return j().createHash("sha256").update(c+b+e).digest("hex").substring(0,16)}},94735:a=>{"use strict";a.exports=require("events")},96186:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={getRedirectError:function(){return i},getRedirectStatusCodeFromError:function(){return n},getRedirectTypeFromError:function(){return m},getURLFromRedirectError:function(){return l},permanentRedirect:function(){return k},redirect:function(){return j}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(28191),g=c(13489),h=c(49836);function i(a,b,c=f.RedirectStatusCode.TemporaryRedirect){let d=Object.defineProperty(Error(g.REDIRECT_ERROR_CODE),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return d.digest=`${g.REDIRECT_ERROR_CODE};${b};${a};${c};`,d}function j(a,b){throw i(a,b??=h.actionAsyncStorage?.getStore()?.isAction?"push":"replace",f.RedirectStatusCode.TemporaryRedirect)}function k(a,b="replace"){throw i(a,b,f.RedirectStatusCode.PermanentRedirect)}function l(a){return(0,g.isRedirectError)(a)?a.digest.split(";").slice(2,-2).join(";"):null}function m(a){if(!(0,g.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return a.digest.split(";",2)[1]}function n(a){if(!(0,g.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return Number(a.digest.split(";").at(-2))}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)}};var b=require("../../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[1316,1238,7963,8569,7257,6009,9817,7535,7816,7156,2339,6461,4301,1289,9018,2801],()=>b(b.s=90808));module.exports=c})();