n9router 0.4.49 → 0.4.50

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 (979) hide show
  1. package/README.md +2 -0
  2. package/app/.next/BUILD_ID +1 -1
  3. package/app/.next/app-path-routes-manifest.json +19 -14
  4. package/app/.next/build-manifest.json +2 -2
  5. package/app/.next/prerender-manifest.json +3 -3
  6. package/app/.next/routes-manifest.json +32 -0
  7. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
  8. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +2 -2
  11. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
  14. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  17. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
  20. package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  23. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +2 -2
  26. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -2
  29. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  31. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +2 -2
  32. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  33. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  34. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
  35. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  36. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  37. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
  38. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  39. package/app/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  40. package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
  41. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  42. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  43. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  44. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  45. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  46. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +5 -5
  47. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  48. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  49. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  50. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  51. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  52. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  53. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  54. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  55. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js +3 -3
  56. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  57. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  58. package/app/.next/server/app/(dashboard)/dashboard/pxpipe/page.js +2 -2
  59. package/app/.next/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  60. package/app/.next/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  61. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js +2 -2
  62. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  63. package/app/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  64. package/app/.next/server/app/(dashboard)/dashboard/skills/page.js +2 -2
  65. package/app/.next/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  66. package/app/.next/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  67. package/app/.next/server/app/(dashboard)/dashboard/token-saver/page.js +2 -2
  68. package/app/.next/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  69. package/app/.next/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  70. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +2 -2
  71. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  72. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  73. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +3 -3
  74. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  75. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  76. package/app/.next/server/app/_global-error/page.js +2 -2
  77. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  78. package/app/.next/server/app/_global-error.html +1 -1
  79. package/app/.next/server/app/_global-error.rsc +1 -1
  80. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  81. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  82. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  83. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  84. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  85. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  86. package/app/.next/server/app/_not-found/page.js +2 -2
  87. package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
  88. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  89. package/app/.next/server/app/_not-found.html +1 -1
  90. package/app/.next/server/app/_not-found.rsc +4 -4
  91. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  92. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  93. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
  94. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  95. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  96. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  97. package/app/.next/server/app/api/antigravity-app/route.js +1 -1
  98. package/app/.next/server/app/api/antigravity-app-v2/route.js +1 -1
  99. package/app/.next/server/app/api/antigravity-ide/route.js +1 -1
  100. package/app/.next/server/app/api/antigravity-targets/route.js +1 -1
  101. package/app/.next/server/app/api/antigravity-tools/import/route.js +1 -1
  102. package/app/.next/server/app/api/antigravity-tools/import/route.js.nft.json +1 -1
  103. package/app/.next/server/app/api/antigravity-tools/import-refresh-tokens/route.js +1 -1
  104. package/app/.next/server/app/api/antigravity-tools/import-refresh-tokens/route.js.nft.json +1 -1
  105. package/app/.next/server/app/api/auth/login/route.js +1 -1
  106. package/app/.next/server/app/api/auth/logout/route.js +1 -1
  107. package/app/.next/server/app/api/auth/oidc/callback/route.js +1 -1
  108. package/app/.next/server/app/api/auth/oidc/start/route.js +1 -1
  109. package/app/.next/server/app/api/auth/oidc/test/route.js +1 -1
  110. package/app/.next/server/app/api/auth/reset-password/route.js +1 -1
  111. package/app/.next/server/app/api/auth/status/route.js +1 -1
  112. package/app/.next/server/app/api/cli-tools/all-statuses/route.js +12 -4
  113. package/app/.next/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  114. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  115. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  116. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  117. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  118. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
  119. package/app/.next/server/app/api/cli-tools/cline-settings/route.js +2 -2
  120. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +1 -1
  121. package/app/.next/server/app/api/cli-tools/copilot-settings/route.js +2 -2
  122. package/app/.next/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
  123. package/app/.next/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
  124. package/app/.next/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  125. package/app/.next/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  126. package/app/.next/server/app/api/cli-tools/cursor-byok/jobs/[jobId]/events/route.js +2 -2
  127. package/app/.next/server/app/api/cli-tools/cursor-byok/jobs/[jobId]/sudo/route.js +1 -1
  128. package/app/.next/server/app/api/cli-tools/cursor-byok/jobs/route.js +1 -1
  129. package/app/.next/server/app/api/cli-tools/cursor-byok/route.js +1 -1
  130. package/app/.next/server/app/api/cli-tools/deepseek-tui-settings/route.js +3 -3
  131. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +1 -1
  132. package/app/.next/server/app/api/cli-tools/grok-build-settings/route.js +10 -0
  133. package/app/.next/server/app/api/cli-tools/grok-build-settings/route.js.nft.json +1 -0
  134. package/app/.next/server/app/api/cli-tools/grok-build-settings/route_client-reference-manifest.js +1 -0
  135. package/app/.next/server/app/api/cli-tools/hermes-settings/route.js +2 -2
  136. package/app/.next/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  137. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  138. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  139. package/app/.next/server/app/api/cli-tools/opencode-settings/route.js +1 -1
  140. package/app/.next/server/app/api/combos/[id]/route.js +1 -1
  141. package/app/.next/server/app/api/combos/route.js +1 -1
  142. package/app/.next/server/app/api/donate/route.js +1 -1
  143. package/app/.next/server/app/api/headroom/extras/route.js +1 -1
  144. package/app/.next/server/app/api/headroom/proxy/[...path]/route.js +1 -1
  145. package/app/.next/server/app/api/headroom/restart/route.js +1 -1
  146. package/app/.next/server/app/api/headroom/start/route.js +1 -1
  147. package/app/.next/server/app/api/headroom/status/route.js +1 -1
  148. package/app/.next/server/app/api/headroom/stop/route.js +1 -1
  149. package/app/.next/server/app/api/health/route.js +1 -1
  150. package/app/.next/server/app/api/init/route.js +1 -1
  151. package/app/.next/server/app/api/internal/account-health/route.js +1 -1
  152. package/app/.next/server/app/api/internal/request-detail/route.js +1 -1
  153. package/app/.next/server/app/api/internal/usage/route.js +1 -1
  154. package/app/.next/server/app/api/keys/[id]/reset-usage/route.js +1 -1
  155. package/app/.next/server/app/api/keys/[id]/route.js +1 -1
  156. package/app/.next/server/app/api/keys/[id]/usage/route.js +1 -1
  157. package/app/.next/server/app/api/keys/route.js +1 -1
  158. package/app/.next/server/app/api/locale/route.js +1 -1
  159. package/app/.next/server/app/api/mcp/[plugin]/message/route.js +1 -1
  160. package/app/.next/server/app/api/mcp/[plugin]/sse/route.js +5 -5
  161. package/app/.next/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  162. package/app/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  163. package/app/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  164. package/app/.next/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  165. package/app/.next/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  166. package/app/.next/server/app/api/media-providers/tts/voices/route.js +1 -1
  167. package/app/.next/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  168. package/app/.next/server/app/api/models/alias/route.js +1 -1
  169. package/app/.next/server/app/api/models/availability/route.js +1 -1
  170. package/app/.next/server/app/api/models/custom/route.js +1 -1
  171. package/app/.next/server/app/api/models/disabled/route.js +1 -1
  172. package/app/.next/server/app/api/models/route.js +1 -1
  173. package/app/.next/server/app/api/models/route.js.nft.json +1 -1
  174. package/app/.next/server/app/api/models/test/route.js +1 -1
  175. package/app/.next/server/app/api/models/test/route.js.nft.json +1 -1
  176. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  177. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  178. package/app/.next/server/app/api/oauth/codex/bulk-import/route.js +1 -1
  179. package/app/.next/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
  180. package/app/.next/server/app/api/oauth/codex/import-token/route.js +1 -1
  181. package/app/.next/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  182. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js +2 -2
  183. package/app/.next/server/app/api/oauth/cursor/import/route.js +1 -1
  184. package/app/.next/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  185. package/app/.next/server/app/api/oauth/gitlab/pat/route.js +1 -1
  186. package/app/.next/server/app/api/oauth/iflow/cookie/route.js +1 -1
  187. package/app/.next/server/app/api/oauth/kiro/api-key/route.js +1 -1
  188. package/app/.next/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
  189. package/app/.next/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  190. package/app/.next/server/app/api/oauth/kiro/import/route.js +1 -1
  191. package/app/.next/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  192. package/app/.next/server/app/api/oauth/kiro/import-cli-proxy/route.js +1 -1
  193. package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  194. package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  195. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  196. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  197. package/app/.next/server/app/api/pricing/route.js +1 -1
  198. package/app/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
  199. package/app/.next/server/app/api/provider-nodes/route.js +1 -1
  200. package/app/.next/server/app/api/provider-nodes/route.js.nft.json +1 -1
  201. package/app/.next/server/app/api/provider-nodes/validate/route.js +1 -1
  202. package/app/.next/server/app/api/providers/[id]/models/route.js +1 -1
  203. package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  204. package/app/.next/server/app/api/providers/[id]/route.js +1 -1
  205. package/app/.next/server/app/api/providers/[id]/test/route.js +1 -1
  206. package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  207. package/app/.next/server/app/api/providers/[id]/test-models/route.js +1 -1
  208. package/app/.next/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  209. package/app/.next/server/app/api/providers/client/route.js +1 -1
  210. package/app/.next/server/app/api/providers/client/route.js.nft.json +1 -1
  211. package/app/.next/server/app/api/providers/kilo/free-models/route.js +1 -1
  212. package/app/.next/server/app/api/providers/route.js +1 -1
  213. package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
  214. package/app/.next/server/app/api/providers/suggested-models/route.js +1 -1
  215. package/app/.next/server/app/api/providers/test-batch/route.js +1 -1
  216. package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  217. package/app/.next/server/app/api/providers/validate/route.js +1 -1
  218. package/app/.next/server/app/api/providers/validate/route.js.nft.json +1 -1
  219. package/app/.next/server/app/api/proxy-pools/[id]/route.js +1 -1
  220. package/app/.next/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  221. package/app/.next/server/app/api/proxy-pools/cloudflare-deploy/route.js +2 -2
  222. package/app/.next/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
  223. package/app/.next/server/app/api/proxy-pools/route.js +1 -1
  224. package/app/.next/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
  225. package/app/.next/server/app/api/pxpipe/health/route.js +2 -2
  226. package/app/.next/server/app/api/pxpipe/install/route.js +2 -2
  227. package/app/.next/server/app/api/pxpipe/logs/route.js +2 -2
  228. package/app/.next/server/app/api/pxpipe/restart/route.js +2 -2
  229. package/app/.next/server/app/api/pxpipe/start/route.js +2 -2
  230. package/app/.next/server/app/api/pxpipe/stats/route.js +2 -2
  231. package/app/.next/server/app/api/pxpipe/status/route.js +2 -2
  232. package/app/.next/server/app/api/pxpipe/stop/route.js +2 -2
  233. package/app/.next/server/app/api/settings/database/route.js +1 -1
  234. package/app/.next/server/app/api/settings/database/selective/route.js +1 -1
  235. package/app/.next/server/app/api/settings/proxy-test/route.js +1 -1
  236. package/app/.next/server/app/api/settings/require-login/route.js +1 -1
  237. package/app/.next/server/app/api/settings/route.js +1 -1
  238. package/app/.next/server/app/api/settings/route.js.nft.json +1 -1
  239. package/app/.next/server/app/api/shutdown/route.js +1 -1
  240. package/app/.next/server/app/api/tags/route.js +1 -1
  241. package/app/.next/server/app/api/translator/console-logs/route.js +1 -1
  242. package/app/.next/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  243. package/app/.next/server/app/api/translator/console-logs/stream/route.js +2 -2
  244. package/app/.next/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  245. package/app/.next/server/app/api/translator/load/route.js +1 -1
  246. package/app/.next/server/app/api/translator/save/route.js +1 -1
  247. package/app/.next/server/app/api/translator/send/route.js +1 -1
  248. package/app/.next/server/app/api/translator/send/route.js.nft.json +1 -1
  249. package/app/.next/server/app/api/translator/translate/route.js +1 -1
  250. package/app/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
  251. package/app/.next/server/app/api/tunnel/disable/route.js +1 -1
  252. package/app/.next/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  253. package/app/.next/server/app/api/tunnel/enable/route.js +1 -1
  254. package/app/.next/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  255. package/app/.next/server/app/api/tunnel/status/route.js +1 -1
  256. package/app/.next/server/app/api/tunnel/status/route.js.nft.json +1 -1
  257. package/app/.next/server/app/api/tunnel/tailscale-check/route.js +1 -1
  258. package/app/.next/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  259. package/app/.next/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  260. package/app/.next/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  261. package/app/.next/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  262. package/app/.next/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  263. package/app/.next/server/app/api/tunnel/tailscale-install/route.js +2 -2
  264. package/app/.next/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  265. package/app/.next/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
  266. package/app/.next/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
  267. package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
  268. package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  269. package/app/.next/server/app/api/usage/chart/route.js +1 -1
  270. package/app/.next/server/app/api/usage/history/route.js +1 -1
  271. package/app/.next/server/app/api/usage/logs/route.js +1 -1
  272. package/app/.next/server/app/api/usage/providers/route.js +1 -1
  273. package/app/.next/server/app/api/usage/providers/route.js.nft.json +1 -1
  274. package/app/.next/server/app/api/usage/report/route.js +1 -1
  275. package/app/.next/server/app/api/usage/request-details/route.js +1 -1
  276. package/app/.next/server/app/api/usage/request-logs/route.js +1 -1
  277. package/app/.next/server/app/api/usage/stats/route.js +1 -1
  278. package/app/.next/server/app/api/usage/stream/route.js +2 -2
  279. package/app/.next/server/app/api/v1/api/chat/route.js +1 -1
  280. package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  281. package/app/.next/server/app/api/v1/audio/speech/route.js +1 -1
  282. package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  283. package/app/.next/server/app/api/v1/audio/transcriptions/route.js +1 -1
  284. package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  285. package/app/.next/server/app/api/v1/audio/voices/route.js +1 -1
  286. package/app/.next/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  287. package/app/.next/server/app/api/v1/chat/completions/route.js +1 -1
  288. package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  289. package/app/.next/server/app/api/v1/embeddings/route.js +1 -1
  290. package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  291. package/app/.next/server/app/api/v1/images/generations/route.js +1 -1
  292. package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  293. package/app/.next/server/app/api/v1/messages/count_tokens/route.js +1 -1
  294. package/app/.next/server/app/api/v1/messages/route.js +1 -1
  295. package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
  296. package/app/.next/server/app/api/v1/models/[kind]/route.js +1 -1
  297. package/app/.next/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  298. package/app/.next/server/app/api/v1/models/info/route.js +1 -1
  299. package/app/.next/server/app/api/v1/models/info/route.js.nft.json +1 -1
  300. package/app/.next/server/app/api/v1/models/route.js +1 -1
  301. package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
  302. package/app/.next/server/app/api/v1/responses/compact/route.js +1 -1
  303. package/app/.next/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  304. package/app/.next/server/app/api/v1/responses/route.js +1 -1
  305. package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
  306. package/app/.next/server/app/api/v1/route.js +1 -1
  307. package/app/.next/server/app/api/v1/route.js.nft.json +1 -1
  308. package/app/.next/server/app/api/v1/search/route.js +1 -1
  309. package/app/.next/server/app/api/v1/search/route.js.nft.json +1 -1
  310. package/app/.next/server/app/api/v1/videos/[id]/route.js +1 -0
  311. package/app/.next/server/app/api/v1/videos/[id]/route.js.nft.json +1 -0
  312. package/app/.next/server/app/api/v1/videos/[id]/route_client-reference-manifest.js +1 -0
  313. package/app/.next/server/app/api/v1/videos/edits/route.js +1 -0
  314. package/app/.next/server/app/api/v1/videos/edits/route.js.nft.json +1 -0
  315. package/app/.next/server/app/api/v1/videos/edits/route_client-reference-manifest.js +1 -0
  316. package/app/.next/server/app/api/v1/videos/extensions/route.js +1 -0
  317. package/app/.next/server/app/api/v1/videos/extensions/route.js.nft.json +1 -0
  318. package/app/.next/server/app/api/v1/videos/extensions/route_client-reference-manifest.js +1 -0
  319. package/app/.next/server/app/api/v1/videos/generations/route.js +1 -0
  320. package/app/.next/server/app/api/v1/videos/generations/route.js.nft.json +1 -0
  321. package/app/.next/server/app/api/v1/videos/generations/route_client-reference-manifest.js +1 -0
  322. package/app/.next/server/app/api/v1/web/fetch/route.js +1 -1
  323. package/app/.next/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  324. package/app/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
  325. package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  326. package/app/.next/server/app/api/v1beta/models/route.js +1 -1
  327. package/app/.next/server/app/api/v1beta/models/route.js.nft.json +1 -1
  328. package/app/.next/server/app/api/version/route.js +1 -1
  329. package/app/.next/server/app/api/version/shutdown/route.js +1 -1
  330. package/app/.next/server/app/api/version/shutdown/route.js.nft.json +1 -1
  331. package/app/.next/server/app/api/version/update/route.js +1 -1
  332. package/app/.next/server/app/api/version/update/route.js.nft.json +1 -1
  333. package/app/.next/server/app/callback/page.js +2 -2
  334. package/app/.next/server/app/callback/page.js.nft.json +1 -1
  335. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  336. package/app/.next/server/app/callback.html +1 -1
  337. package/app/.next/server/app/callback.rsc +4 -4
  338. package/app/.next/server/app/callback.segments/_full.segment.rsc +4 -4
  339. package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
  340. package/app/.next/server/app/callback.segments/_index.segment.rsc +4 -4
  341. package/app/.next/server/app/callback.segments/_tree.segment.rsc +2 -2
  342. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  343. package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
  344. package/app/.next/server/app/dashboard/basic-chat.html +1 -1
  345. package/app/.next/server/app/dashboard/basic-chat.rsc +6 -6
  346. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  347. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  348. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  349. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  350. package/app/.next/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
  351. package/app/.next/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  352. package/app/.next/server/app/dashboard/basic-chat.segments/_index.segment.rsc +4 -4
  353. package/app/.next/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
  354. package/app/.next/server/app/dashboard/cli-tools.html +1 -1
  355. package/app/.next/server/app/dashboard/cli-tools.rsc +6 -6
  356. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  357. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  358. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  359. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  360. package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
  361. package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  362. package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
  363. package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  364. package/app/.next/server/app/dashboard/combos.html +1 -1
  365. package/app/.next/server/app/dashboard/combos.rsc +6 -6
  366. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  367. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  368. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  369. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  370. package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
  371. package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  372. package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
  373. package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  374. package/app/.next/server/app/dashboard/endpoint.html +1 -1
  375. package/app/.next/server/app/dashboard/endpoint.rsc +6 -6
  376. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  377. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  378. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  379. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  380. package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
  381. package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  382. package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
  383. package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  384. package/app/.next/server/app/dashboard/media-providers/web.html +1 -1
  385. package/app/.next/server/app/dashboard/media-providers/web.rsc +6 -6
  386. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  387. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  388. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  389. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  390. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  391. package/app/.next/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +6 -6
  392. package/app/.next/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  393. package/app/.next/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +4 -4
  394. package/app/.next/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
  395. package/app/.next/server/app/dashboard/mitm.html +1 -1
  396. package/app/.next/server/app/dashboard/mitm.rsc +6 -6
  397. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  398. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  399. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  400. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  401. package/app/.next/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
  402. package/app/.next/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  403. package/app/.next/server/app/dashboard/mitm.segments/_index.segment.rsc +4 -4
  404. package/app/.next/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  405. package/app/.next/server/app/dashboard/profile.html +1 -1
  406. package/app/.next/server/app/dashboard/profile.rsc +6 -6
  407. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  408. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  409. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  410. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  411. package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
  412. package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  413. package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
  414. package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  415. package/app/.next/server/app/dashboard/providers/new.html +1 -1
  416. package/app/.next/server/app/dashboard/providers/new.rsc +6 -6
  417. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  418. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  419. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  420. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  421. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  422. package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
  423. package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  424. package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
  425. package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  426. package/app/.next/server/app/dashboard/providers.html +1 -1
  427. package/app/.next/server/app/dashboard/providers.rsc +6 -6
  428. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  429. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  430. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  431. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  432. package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
  433. package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  434. package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
  435. package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  436. package/app/.next/server/app/dashboard/proxy-pools.html +1 -1
  437. package/app/.next/server/app/dashboard/proxy-pools.rsc +6 -6
  438. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  439. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  440. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  441. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  442. package/app/.next/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
  443. package/app/.next/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  444. package/app/.next/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +4 -4
  445. package/app/.next/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  446. package/app/.next/server/app/dashboard/pxpipe.html +1 -1
  447. package/app/.next/server/app/dashboard/pxpipe.rsc +6 -6
  448. package/app/.next/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
  449. package/app/.next/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
  450. package/app/.next/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  451. package/app/.next/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  452. package/app/.next/server/app/dashboard/pxpipe.segments/_full.segment.rsc +6 -6
  453. package/app/.next/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
  454. package/app/.next/server/app/dashboard/pxpipe.segments/_index.segment.rsc +4 -4
  455. package/app/.next/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +2 -2
  456. package/app/.next/server/app/dashboard/quota.html +2 -2
  457. package/app/.next/server/app/dashboard/quota.rsc +7 -7
  458. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  459. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  460. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  461. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  462. package/app/.next/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
  463. package/app/.next/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  464. package/app/.next/server/app/dashboard/quota.segments/_index.segment.rsc +4 -4
  465. package/app/.next/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  466. package/app/.next/server/app/dashboard/settings/pricing/page.js +2 -2
  467. package/app/.next/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  468. package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  469. package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
  470. package/app/.next/server/app/dashboard/settings/pricing.rsc +4 -4
  471. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  472. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  473. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
  474. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  475. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  476. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  477. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  478. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  479. package/app/.next/server/app/dashboard/skills.html +1 -1
  480. package/app/.next/server/app/dashboard/skills.rsc +6 -6
  481. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  482. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  483. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  484. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  485. package/app/.next/server/app/dashboard/skills.segments/_full.segment.rsc +6 -6
  486. package/app/.next/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  487. package/app/.next/server/app/dashboard/skills.segments/_index.segment.rsc +4 -4
  488. package/app/.next/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
  489. package/app/.next/server/app/dashboard/token-saver.html +1 -1
  490. package/app/.next/server/app/dashboard/token-saver.rsc +6 -6
  491. package/app/.next/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
  492. package/app/.next/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  493. package/app/.next/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  494. package/app/.next/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  495. package/app/.next/server/app/dashboard/token-saver.segments/_full.segment.rsc +6 -6
  496. package/app/.next/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  497. package/app/.next/server/app/dashboard/token-saver.segments/_index.segment.rsc +4 -4
  498. package/app/.next/server/app/dashboard/token-saver.segments/_tree.segment.rsc +2 -2
  499. package/app/.next/server/app/dashboard/translator.html +1 -1
  500. package/app/.next/server/app/dashboard/translator.rsc +6 -6
  501. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  502. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  503. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  504. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  505. package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
  506. package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  507. package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
  508. package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  509. package/app/.next/server/app/dashboard/usage.html +1 -1
  510. package/app/.next/server/app/dashboard/usage.rsc +6 -6
  511. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  512. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  513. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  514. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  515. package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
  516. package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  517. package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
  518. package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  519. package/app/.next/server/app/dashboard.html +1 -1
  520. package/app/.next/server/app/dashboard.rsc +6 -6
  521. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  522. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  523. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  524. package/app/.next/server/app/dashboard.segments/_full.segment.rsc +6 -6
  525. package/app/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
  526. package/app/.next/server/app/dashboard.segments/_index.segment.rsc +4 -4
  527. package/app/.next/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  528. package/app/.next/server/app/favicon.ico/route.js +1 -1
  529. package/app/.next/server/app/index.html +1 -1
  530. package/app/.next/server/app/index.rsc +4 -4
  531. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  532. package/app/.next/server/app/index.segments/_full.segment.rsc +4 -4
  533. package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
  534. package/app/.next/server/app/index.segments/_index.segment.rsc +4 -4
  535. package/app/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  536. package/app/.next/server/app/landing/page.js +2 -2
  537. package/app/.next/server/app/landing/page.js.nft.json +1 -1
  538. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  539. package/app/.next/server/app/landing.html +1 -1
  540. package/app/.next/server/app/landing.rsc +4 -4
  541. package/app/.next/server/app/landing.segments/_full.segment.rsc +4 -4
  542. package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
  543. package/app/.next/server/app/landing.segments/_index.segment.rsc +4 -4
  544. package/app/.next/server/app/landing.segments/_tree.segment.rsc +2 -2
  545. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  546. package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
  547. package/app/.next/server/app/login/page.js +2 -2
  548. package/app/.next/server/app/login/page.js.nft.json +1 -1
  549. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  550. package/app/.next/server/app/login.html +1 -1
  551. package/app/.next/server/app/login.rsc +5 -5
  552. package/app/.next/server/app/login.segments/_full.segment.rsc +5 -5
  553. package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
  554. package/app/.next/server/app/login.segments/_index.segment.rsc +4 -4
  555. package/app/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  556. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  557. package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
  558. package/app/.next/server/app/manifest.webmanifest/route.js +2 -2
  559. package/app/.next/server/app/page.js +2 -2
  560. package/app/.next/server/app/page.js.nft.json +1 -1
  561. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  562. package/app/.next/server/app-paths-manifest.json +19 -14
  563. package/app/.next/server/chunks/1051.js +1 -1
  564. package/app/.next/server/chunks/1133.js +1 -0
  565. package/app/.next/server/chunks/1185.js +1 -0
  566. package/app/.next/server/chunks/1806.js +1 -0
  567. package/app/.next/server/chunks/2056.js +1 -0
  568. package/app/.next/server/chunks/2251.js +2 -2
  569. package/app/.next/server/chunks/{6675.js → 3000.js} +13 -3
  570. package/app/.next/server/chunks/318.js +1 -1
  571. package/app/.next/server/chunks/3481.js +71 -0
  572. package/app/.next/server/chunks/3588.js +7 -0
  573. package/app/.next/server/chunks/3943.js +1 -0
  574. package/app/.next/server/chunks/3962.js +1 -0
  575. package/app/.next/server/chunks/412.js +1 -1
  576. package/app/.next/server/chunks/4177.js +1 -1
  577. package/app/.next/server/chunks/4676.js +45 -0
  578. package/app/.next/server/chunks/5612.js +1 -1
  579. package/app/.next/server/chunks/5615.js +1 -1
  580. package/app/.next/server/chunks/6306.js +1 -1
  581. package/app/.next/server/chunks/7137.js +1 -0
  582. package/app/.next/server/chunks/7467.js +1 -0
  583. package/app/.next/server/chunks/75.js +1 -0
  584. package/app/.next/server/chunks/7994.js +1 -1
  585. package/app/.next/server/chunks/8056.js +1 -7
  586. package/app/.next/server/chunks/8145.js +1 -0
  587. package/app/.next/server/chunks/8271.js +1 -1
  588. package/app/.next/server/chunks/8833.js +4 -4
  589. package/app/.next/server/chunks/8895.js +6 -50
  590. package/app/.next/server/middleware-build-manifest.js +1 -1
  591. package/app/.next/server/pages/404.html +1 -1
  592. package/app/.next/server/pages/500.html +1 -1
  593. package/app/.next/server/server-reference-manifest.js +1 -1
  594. package/app/.next/server/server-reference-manifest.json +1 -1
  595. package/app/.next/static/chunks/1321-3154ab2bdf03d1b4.js +1 -0
  596. package/app/.next/static/chunks/{5396-a003e096a6013f2e.js → 4028-f3b4a4505d1949d8.js} +18 -8
  597. package/app/.next/static/chunks/5497-696d58587d263478.js +7 -0
  598. package/app/.next/static/chunks/8198-e290466e54954f7b.js +1 -0
  599. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/{page-199ad55a0a07b99e.js → page-dfb62517e7b61da1.js} +1 -1
  600. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/{page-891aa409aec4569e.js → page-7aab1b038b0bfe64.js} +1 -1
  601. package/app/.next/static/chunks/app/(dashboard)/dashboard/mitm/{page-5c73d27e6379f748.js → page-a571e53340e18f91.js} +1 -1
  602. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-1039653250f6f4eb.js +12 -0
  603. package/app/.next/static/chunks/app/(dashboard)/dashboard/quota/page-690703b251694b65.js +1 -0
  604. package/app/.next/static/chunks/app/_global-error/page-c1f9120475dadd61.js +1 -0
  605. package/app/.next/static/chunks/app/api/antigravity-app/route-c1f9120475dadd61.js +1 -0
  606. package/app/.next/static/chunks/app/api/antigravity-app-v2/route-c1f9120475dadd61.js +1 -0
  607. package/app/.next/static/chunks/app/api/antigravity-ide/route-c1f9120475dadd61.js +1 -0
  608. package/app/.next/static/chunks/app/api/antigravity-targets/route-c1f9120475dadd61.js +1 -0
  609. package/app/.next/static/chunks/app/api/antigravity-tools/import/route-c1f9120475dadd61.js +1 -0
  610. package/app/.next/static/chunks/app/api/antigravity-tools/import-refresh-tokens/route-c1f9120475dadd61.js +1 -0
  611. package/app/.next/static/chunks/app/api/auth/login/route-c1f9120475dadd61.js +1 -0
  612. package/app/.next/static/chunks/app/api/auth/logout/route-c1f9120475dadd61.js +1 -0
  613. package/app/.next/static/chunks/app/api/auth/oidc/callback/route-c1f9120475dadd61.js +1 -0
  614. package/app/.next/static/chunks/app/api/auth/oidc/start/route-c1f9120475dadd61.js +1 -0
  615. package/app/.next/static/chunks/app/api/auth/oidc/test/route-c1f9120475dadd61.js +1 -0
  616. package/app/.next/static/chunks/app/api/auth/reset-password/route-c1f9120475dadd61.js +1 -0
  617. package/app/.next/static/chunks/app/api/auth/status/route-c1f9120475dadd61.js +1 -0
  618. package/app/.next/static/chunks/app/api/cli-tools/all-statuses/route-c1f9120475dadd61.js +1 -0
  619. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-c1f9120475dadd61.js +1 -0
  620. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-c1f9120475dadd61.js +1 -0
  621. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-c1f9120475dadd61.js +1 -0
  622. package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-c1f9120475dadd61.js +1 -0
  623. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-c1f9120475dadd61.js +1 -0
  624. package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-c1f9120475dadd61.js +1 -0
  625. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-c1f9120475dadd61.js +1 -0
  626. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-c1f9120475dadd61.js +1 -0
  627. package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-c1f9120475dadd61.js +1 -0
  628. package/app/.next/static/chunks/app/api/cli-tools/cursor-byok/jobs/[jobId]/events/route-c1f9120475dadd61.js +1 -0
  629. package/app/.next/static/chunks/app/api/cli-tools/cursor-byok/jobs/[jobId]/sudo/route-c1f9120475dadd61.js +1 -0
  630. package/app/.next/static/chunks/app/api/cli-tools/cursor-byok/jobs/route-c1f9120475dadd61.js +1 -0
  631. package/app/.next/static/chunks/app/api/cli-tools/cursor-byok/route-c1f9120475dadd61.js +1 -0
  632. package/app/.next/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-c1f9120475dadd61.js +1 -0
  633. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-c1f9120475dadd61.js +1 -0
  634. package/app/.next/static/chunks/app/api/cli-tools/grok-build-settings/route-c1f9120475dadd61.js +1 -0
  635. package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-c1f9120475dadd61.js +1 -0
  636. package/app/.next/static/chunks/app/api/cli-tools/jcode-settings/route-c1f9120475dadd61.js +1 -0
  637. package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-c1f9120475dadd61.js +1 -0
  638. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-c1f9120475dadd61.js +1 -0
  639. package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-c1f9120475dadd61.js +1 -0
  640. package/app/.next/static/chunks/app/api/combos/[id]/route-c1f9120475dadd61.js +1 -0
  641. package/app/.next/static/chunks/app/api/combos/route-c1f9120475dadd61.js +1 -0
  642. package/app/.next/static/chunks/app/api/donate/route-c1f9120475dadd61.js +1 -0
  643. package/app/.next/static/chunks/app/api/headroom/extras/route-c1f9120475dadd61.js +1 -0
  644. package/app/.next/static/chunks/app/api/headroom/proxy/[...path]/route-c1f9120475dadd61.js +1 -0
  645. package/app/.next/static/chunks/app/api/headroom/restart/route-c1f9120475dadd61.js +1 -0
  646. package/app/.next/static/chunks/app/api/headroom/start/route-c1f9120475dadd61.js +1 -0
  647. package/app/.next/static/chunks/app/api/headroom/status/route-c1f9120475dadd61.js +1 -0
  648. package/app/.next/static/chunks/app/api/headroom/stop/route-c1f9120475dadd61.js +1 -0
  649. package/app/.next/static/chunks/app/api/health/route-c1f9120475dadd61.js +1 -0
  650. package/app/.next/static/chunks/app/api/init/route-c1f9120475dadd61.js +1 -0
  651. package/app/.next/static/chunks/app/api/internal/account-health/route-c1f9120475dadd61.js +1 -0
  652. package/app/.next/static/chunks/app/api/internal/request-detail/route-c1f9120475dadd61.js +1 -0
  653. package/app/.next/static/chunks/app/api/internal/usage/route-c1f9120475dadd61.js +1 -0
  654. package/app/.next/static/chunks/app/api/keys/[id]/reset-usage/route-c1f9120475dadd61.js +1 -0
  655. package/app/.next/static/chunks/app/api/keys/[id]/route-c1f9120475dadd61.js +1 -0
  656. package/app/.next/static/chunks/app/api/keys/[id]/usage/route-c1f9120475dadd61.js +1 -0
  657. package/app/.next/static/chunks/app/api/keys/route-c1f9120475dadd61.js +1 -0
  658. package/app/.next/static/chunks/app/api/locale/route-c1f9120475dadd61.js +1 -0
  659. package/app/.next/static/chunks/app/api/mcp/[plugin]/message/route-c1f9120475dadd61.js +1 -0
  660. package/app/.next/static/chunks/app/api/mcp/[plugin]/sse/route-c1f9120475dadd61.js +1 -0
  661. package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-c1f9120475dadd61.js +1 -0
  662. package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-c1f9120475dadd61.js +1 -0
  663. package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-c1f9120475dadd61.js +1 -0
  664. package/app/.next/static/chunks/app/api/media-providers/tts/minimax/voices/route-c1f9120475dadd61.js +1 -0
  665. package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-c1f9120475dadd61.js +1 -0
  666. package/app/.next/static/chunks/app/api/models/alias/route-c1f9120475dadd61.js +1 -0
  667. package/app/.next/static/chunks/app/api/models/availability/route-c1f9120475dadd61.js +1 -0
  668. package/app/.next/static/chunks/app/api/models/custom/route-c1f9120475dadd61.js +1 -0
  669. package/app/.next/static/chunks/app/api/models/disabled/route-c1f9120475dadd61.js +1 -0
  670. package/app/.next/static/chunks/app/api/models/route-c1f9120475dadd61.js +1 -0
  671. package/app/.next/static/chunks/app/api/models/test/route-c1f9120475dadd61.js +1 -0
  672. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-c1f9120475dadd61.js +1 -0
  673. package/app/.next/static/chunks/app/api/oauth/codex/bulk-import/route-c1f9120475dadd61.js +1 -0
  674. package/app/.next/static/chunks/app/api/oauth/codex/import-token/route-c1f9120475dadd61.js +1 -0
  675. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-c1f9120475dadd61.js +1 -0
  676. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-c1f9120475dadd61.js +1 -0
  677. package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-c1f9120475dadd61.js +1 -0
  678. package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-c1f9120475dadd61.js +1 -0
  679. package/app/.next/static/chunks/app/api/oauth/kiro/api-key/route-c1f9120475dadd61.js +1 -0
  680. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-c1f9120475dadd61.js +1 -0
  681. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-c1f9120475dadd61.js +1 -0
  682. package/app/.next/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-c1f9120475dadd61.js +1 -0
  683. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-c1f9120475dadd61.js +1 -0
  684. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-c1f9120475dadd61.js +1 -0
  685. package/app/.next/static/chunks/app/api/pricing/route-c1f9120475dadd61.js +1 -0
  686. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-c1f9120475dadd61.js +1 -0
  687. package/app/.next/static/chunks/app/api/provider-nodes/route-c1f9120475dadd61.js +1 -0
  688. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-c1f9120475dadd61.js +1 -0
  689. package/app/.next/static/chunks/app/api/providers/[id]/models/route-c1f9120475dadd61.js +1 -0
  690. package/app/.next/static/chunks/app/api/providers/[id]/route-c1f9120475dadd61.js +1 -0
  691. package/app/.next/static/chunks/app/api/providers/[id]/test/route-c1f9120475dadd61.js +1 -0
  692. package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-c1f9120475dadd61.js +1 -0
  693. package/app/.next/static/chunks/app/api/providers/client/route-c1f9120475dadd61.js +1 -0
  694. package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-c1f9120475dadd61.js +1 -0
  695. package/app/.next/static/chunks/app/api/providers/route-c1f9120475dadd61.js +1 -0
  696. package/app/.next/static/chunks/app/api/providers/suggested-models/route-c1f9120475dadd61.js +1 -0
  697. package/app/.next/static/chunks/app/api/providers/test-batch/route-c1f9120475dadd61.js +1 -0
  698. package/app/.next/static/chunks/app/api/providers/validate/route-c1f9120475dadd61.js +1 -0
  699. package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-c1f9120475dadd61.js +1 -0
  700. package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-c1f9120475dadd61.js +1 -0
  701. package/app/.next/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-c1f9120475dadd61.js +1 -0
  702. package/app/.next/static/chunks/app/api/proxy-pools/deno-deploy/route-c1f9120475dadd61.js +1 -0
  703. package/app/.next/static/chunks/app/api/proxy-pools/route-c1f9120475dadd61.js +1 -0
  704. package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-c1f9120475dadd61.js +1 -0
  705. package/app/.next/static/chunks/app/api/pxpipe/health/route-c1f9120475dadd61.js +1 -0
  706. package/app/.next/static/chunks/app/api/pxpipe/install/route-c1f9120475dadd61.js +1 -0
  707. package/app/.next/static/chunks/app/api/pxpipe/logs/route-c1f9120475dadd61.js +1 -0
  708. package/app/.next/static/chunks/app/api/pxpipe/restart/route-c1f9120475dadd61.js +1 -0
  709. package/app/.next/static/chunks/app/api/pxpipe/start/route-c1f9120475dadd61.js +1 -0
  710. package/app/.next/static/chunks/app/api/pxpipe/stats/route-c1f9120475dadd61.js +1 -0
  711. package/app/.next/static/chunks/app/api/pxpipe/status/route-c1f9120475dadd61.js +1 -0
  712. package/app/.next/static/chunks/app/api/pxpipe/stop/route-c1f9120475dadd61.js +1 -0
  713. package/app/.next/static/chunks/app/api/settings/database/route-c1f9120475dadd61.js +1 -0
  714. package/app/.next/static/chunks/app/api/settings/database/selective/route-c1f9120475dadd61.js +1 -0
  715. package/app/.next/static/chunks/app/api/settings/proxy-test/route-c1f9120475dadd61.js +1 -0
  716. package/app/.next/static/chunks/app/api/settings/require-login/route-c1f9120475dadd61.js +1 -0
  717. package/app/.next/static/chunks/app/api/settings/route-c1f9120475dadd61.js +1 -0
  718. package/app/.next/static/chunks/app/api/shutdown/route-c1f9120475dadd61.js +1 -0
  719. package/app/.next/static/chunks/app/api/tags/route-c1f9120475dadd61.js +1 -0
  720. package/app/.next/static/chunks/app/api/translator/console-logs/route-c1f9120475dadd61.js +1 -0
  721. package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-c1f9120475dadd61.js +1 -0
  722. package/app/.next/static/chunks/app/api/translator/load/route-c1f9120475dadd61.js +1 -0
  723. package/app/.next/static/chunks/app/api/translator/save/route-c1f9120475dadd61.js +1 -0
  724. package/app/.next/static/chunks/app/api/translator/send/route-c1f9120475dadd61.js +1 -0
  725. package/app/.next/static/chunks/app/api/translator/translate/route-c1f9120475dadd61.js +1 -0
  726. package/app/.next/static/chunks/app/api/tunnel/disable/route-c1f9120475dadd61.js +1 -0
  727. package/app/.next/static/chunks/app/api/tunnel/enable/route-c1f9120475dadd61.js +1 -0
  728. package/app/.next/static/chunks/app/api/tunnel/status/route-c1f9120475dadd61.js +1 -0
  729. package/app/.next/static/chunks/app/api/tunnel/tailscale-check/route-c1f9120475dadd61.js +1 -0
  730. package/app/.next/static/chunks/app/api/tunnel/tailscale-disable/route-c1f9120475dadd61.js +1 -0
  731. package/app/.next/static/chunks/app/api/tunnel/tailscale-enable/route-c1f9120475dadd61.js +1 -0
  732. package/app/.next/static/chunks/app/api/tunnel/tailscale-install/route-c1f9120475dadd61.js +1 -0
  733. package/app/.next/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-c1f9120475dadd61.js +1 -0
  734. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-c1f9120475dadd61.js +1 -0
  735. package/app/.next/static/chunks/app/api/usage/chart/route-c1f9120475dadd61.js +1 -0
  736. package/app/.next/static/chunks/app/api/usage/history/route-c1f9120475dadd61.js +1 -0
  737. package/app/.next/static/chunks/app/api/usage/logs/route-c1f9120475dadd61.js +1 -0
  738. package/app/.next/static/chunks/app/api/usage/providers/route-c1f9120475dadd61.js +1 -0
  739. package/app/.next/static/chunks/app/api/usage/report/route-c1f9120475dadd61.js +1 -0
  740. package/app/.next/static/chunks/app/api/usage/request-details/route-c1f9120475dadd61.js +1 -0
  741. package/app/.next/static/chunks/app/api/usage/request-logs/route-c1f9120475dadd61.js +1 -0
  742. package/app/.next/static/chunks/app/api/usage/stats/route-c1f9120475dadd61.js +1 -0
  743. package/app/.next/static/chunks/app/api/usage/stream/route-c1f9120475dadd61.js +1 -0
  744. package/app/.next/static/chunks/app/api/v1/api/chat/route-c1f9120475dadd61.js +1 -0
  745. package/app/.next/static/chunks/app/api/v1/audio/speech/route-c1f9120475dadd61.js +1 -0
  746. package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-c1f9120475dadd61.js +1 -0
  747. package/app/.next/static/chunks/app/api/v1/audio/voices/route-c1f9120475dadd61.js +1 -0
  748. package/app/.next/static/chunks/app/api/v1/chat/completions/route-c1f9120475dadd61.js +1 -0
  749. package/app/.next/static/chunks/app/api/v1/embeddings/route-c1f9120475dadd61.js +1 -0
  750. package/app/.next/static/chunks/app/api/v1/images/generations/route-c1f9120475dadd61.js +1 -0
  751. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-c1f9120475dadd61.js +1 -0
  752. package/app/.next/static/chunks/app/api/v1/messages/route-c1f9120475dadd61.js +1 -0
  753. package/app/.next/static/chunks/app/api/v1/models/[kind]/route-c1f9120475dadd61.js +1 -0
  754. package/app/.next/static/chunks/app/api/v1/models/info/route-c1f9120475dadd61.js +1 -0
  755. package/app/.next/static/chunks/app/api/v1/models/route-c1f9120475dadd61.js +1 -0
  756. package/app/.next/static/chunks/app/api/v1/responses/compact/route-c1f9120475dadd61.js +1 -0
  757. package/app/.next/static/chunks/app/api/v1/responses/route-c1f9120475dadd61.js +1 -0
  758. package/app/.next/static/chunks/app/api/v1/route-c1f9120475dadd61.js +1 -0
  759. package/app/.next/static/chunks/app/api/v1/search/route-c1f9120475dadd61.js +1 -0
  760. package/app/.next/static/chunks/app/api/v1/videos/[id]/route-c1f9120475dadd61.js +1 -0
  761. package/app/.next/static/chunks/app/api/v1/videos/edits/route-c1f9120475dadd61.js +1 -0
  762. package/app/.next/static/chunks/app/api/v1/videos/extensions/route-c1f9120475dadd61.js +1 -0
  763. package/app/.next/static/chunks/app/api/v1/videos/generations/route-c1f9120475dadd61.js +1 -0
  764. package/app/.next/static/chunks/app/api/v1/web/fetch/route-c1f9120475dadd61.js +1 -0
  765. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-c1f9120475dadd61.js +1 -0
  766. package/app/.next/static/chunks/app/api/v1beta/models/route-c1f9120475dadd61.js +1 -0
  767. package/app/.next/static/chunks/app/api/version/route-c1f9120475dadd61.js +1 -0
  768. package/app/.next/static/chunks/app/api/version/shutdown/route-c1f9120475dadd61.js +1 -0
  769. package/app/.next/static/chunks/app/api/version/update/route-c1f9120475dadd61.js +1 -0
  770. package/app/.next/static/chunks/app/manifest.webmanifest/route-c1f9120475dadd61.js +1 -0
  771. package/app/.next/static/chunks/app/page-c1f9120475dadd61.js +1 -0
  772. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-c1f9120475dadd61.js +1 -0
  773. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-c1f9120475dadd61.js +1 -0
  774. package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-c1f9120475dadd61.js +1 -0
  775. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-c1f9120475dadd61.js +1 -0
  776. package/app/.next/static/css/4aeebd461f2f3aec.css +1 -0
  777. package/app/.next/static/lo-GnJQxxRLdCvA2oang1/_buildManifest.js +1 -0
  778. package/app/open-sse/config/grokCli.js +10 -0
  779. package/app/open-sse/config/runtimeConfig.js +2 -0
  780. package/app/open-sse/executors/grok-cli.js +194 -39
  781. package/app/open-sse/handlers/chatCore.js +22 -23
  782. package/app/open-sse/handlers/videoCore.js +166 -0
  783. package/app/open-sse/providers/capabilities.js +24 -4
  784. package/app/open-sse/providers/registry/alicode-intl.js +1 -1
  785. package/app/open-sse/providers/registry/anthropic.js +1 -3
  786. package/app/open-sse/providers/registry/grok-cli.js +28 -18
  787. package/app/open-sse/providers/registry/kiro.js +12 -0
  788. package/app/open-sse/providers/registry/xai.js +5 -1
  789. package/app/open-sse/services/grokCliModels.js +127 -0
  790. package/app/open-sse/services/model.js +7 -1
  791. package/app/open-sse/services/usage/grok-cli.js +61 -7
  792. package/app/package.json +1 -1
  793. package/app/src/shared/constants/cliTools.js +27 -0
  794. package/app/src/shared/constants/providers.js +1 -1
  795. package/package.json +1 -1
  796. package/app/.next/server/chunks/1350.js +0 -1
  797. package/app/.next/server/chunks/1470.js +0 -1
  798. package/app/.next/server/chunks/1719.js +0 -1
  799. package/app/.next/server/chunks/3621.js +0 -1
  800. package/app/.next/server/chunks/6182.js +0 -71
  801. package/app/.next/server/chunks/7444.js +0 -1
  802. package/app/.next/server/chunks/7886.js +0 -1
  803. package/app/.next/server/chunks/8238.js +0 -1
  804. package/app/.next/server/chunks/8794.js +0 -1
  805. package/app/.next/static/4eHcO0iL_6PDYZfGNLlqJ/_buildManifest.js +0 -1
  806. package/app/.next/static/chunks/1321-221797845867fc50.js +0 -1
  807. package/app/.next/static/chunks/5497-fd6ad8ecc491258d.js +0 -7
  808. package/app/.next/static/chunks/8198-34a5f75f939a0642.js +0 -1
  809. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-64902d9374382b6c.js +0 -12
  810. package/app/.next/static/chunks/app/(dashboard)/dashboard/quota/page-d5dd8461c18931fc.js +0 -1
  811. package/app/.next/static/chunks/app/_global-error/page-9ed8f7909a84e383.js +0 -1
  812. package/app/.next/static/chunks/app/api/antigravity-app/route-9ed8f7909a84e383.js +0 -1
  813. package/app/.next/static/chunks/app/api/antigravity-app-v2/route-9ed8f7909a84e383.js +0 -1
  814. package/app/.next/static/chunks/app/api/antigravity-ide/route-9ed8f7909a84e383.js +0 -1
  815. package/app/.next/static/chunks/app/api/antigravity-targets/route-9ed8f7909a84e383.js +0 -1
  816. package/app/.next/static/chunks/app/api/antigravity-tools/import/route-9ed8f7909a84e383.js +0 -1
  817. package/app/.next/static/chunks/app/api/antigravity-tools/import-refresh-tokens/route-9ed8f7909a84e383.js +0 -1
  818. package/app/.next/static/chunks/app/api/auth/login/route-9ed8f7909a84e383.js +0 -1
  819. package/app/.next/static/chunks/app/api/auth/logout/route-9ed8f7909a84e383.js +0 -1
  820. package/app/.next/static/chunks/app/api/auth/oidc/callback/route-9ed8f7909a84e383.js +0 -1
  821. package/app/.next/static/chunks/app/api/auth/oidc/start/route-9ed8f7909a84e383.js +0 -1
  822. package/app/.next/static/chunks/app/api/auth/oidc/test/route-9ed8f7909a84e383.js +0 -1
  823. package/app/.next/static/chunks/app/api/auth/reset-password/route-9ed8f7909a84e383.js +0 -1
  824. package/app/.next/static/chunks/app/api/auth/status/route-9ed8f7909a84e383.js +0 -1
  825. package/app/.next/static/chunks/app/api/cli-tools/all-statuses/route-9ed8f7909a84e383.js +0 -1
  826. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-9ed8f7909a84e383.js +0 -1
  827. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-9ed8f7909a84e383.js +0 -1
  828. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-9ed8f7909a84e383.js +0 -1
  829. package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-9ed8f7909a84e383.js +0 -1
  830. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-9ed8f7909a84e383.js +0 -1
  831. package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-9ed8f7909a84e383.js +0 -1
  832. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-9ed8f7909a84e383.js +0 -1
  833. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-9ed8f7909a84e383.js +0 -1
  834. package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-9ed8f7909a84e383.js +0 -1
  835. package/app/.next/static/chunks/app/api/cli-tools/cursor-byok/jobs/[jobId]/events/route-9ed8f7909a84e383.js +0 -1
  836. package/app/.next/static/chunks/app/api/cli-tools/cursor-byok/jobs/[jobId]/sudo/route-9ed8f7909a84e383.js +0 -1
  837. package/app/.next/static/chunks/app/api/cli-tools/cursor-byok/jobs/route-9ed8f7909a84e383.js +0 -1
  838. package/app/.next/static/chunks/app/api/cli-tools/cursor-byok/route-9ed8f7909a84e383.js +0 -1
  839. package/app/.next/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-9ed8f7909a84e383.js +0 -1
  840. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-9ed8f7909a84e383.js +0 -1
  841. package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-9ed8f7909a84e383.js +0 -1
  842. package/app/.next/static/chunks/app/api/cli-tools/jcode-settings/route-9ed8f7909a84e383.js +0 -1
  843. package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-9ed8f7909a84e383.js +0 -1
  844. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-9ed8f7909a84e383.js +0 -1
  845. package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-9ed8f7909a84e383.js +0 -1
  846. package/app/.next/static/chunks/app/api/combos/[id]/route-9ed8f7909a84e383.js +0 -1
  847. package/app/.next/static/chunks/app/api/combos/route-9ed8f7909a84e383.js +0 -1
  848. package/app/.next/static/chunks/app/api/donate/route-9ed8f7909a84e383.js +0 -1
  849. package/app/.next/static/chunks/app/api/headroom/extras/route-9ed8f7909a84e383.js +0 -1
  850. package/app/.next/static/chunks/app/api/headroom/proxy/[...path]/route-9ed8f7909a84e383.js +0 -1
  851. package/app/.next/static/chunks/app/api/headroom/restart/route-9ed8f7909a84e383.js +0 -1
  852. package/app/.next/static/chunks/app/api/headroom/start/route-9ed8f7909a84e383.js +0 -1
  853. package/app/.next/static/chunks/app/api/headroom/status/route-9ed8f7909a84e383.js +0 -1
  854. package/app/.next/static/chunks/app/api/headroom/stop/route-9ed8f7909a84e383.js +0 -1
  855. package/app/.next/static/chunks/app/api/health/route-9ed8f7909a84e383.js +0 -1
  856. package/app/.next/static/chunks/app/api/init/route-9ed8f7909a84e383.js +0 -1
  857. package/app/.next/static/chunks/app/api/internal/account-health/route-9ed8f7909a84e383.js +0 -1
  858. package/app/.next/static/chunks/app/api/internal/request-detail/route-9ed8f7909a84e383.js +0 -1
  859. package/app/.next/static/chunks/app/api/internal/usage/route-9ed8f7909a84e383.js +0 -1
  860. package/app/.next/static/chunks/app/api/keys/[id]/reset-usage/route-9ed8f7909a84e383.js +0 -1
  861. package/app/.next/static/chunks/app/api/keys/[id]/route-9ed8f7909a84e383.js +0 -1
  862. package/app/.next/static/chunks/app/api/keys/[id]/usage/route-9ed8f7909a84e383.js +0 -1
  863. package/app/.next/static/chunks/app/api/keys/route-9ed8f7909a84e383.js +0 -1
  864. package/app/.next/static/chunks/app/api/locale/route-9ed8f7909a84e383.js +0 -1
  865. package/app/.next/static/chunks/app/api/mcp/[plugin]/message/route-9ed8f7909a84e383.js +0 -1
  866. package/app/.next/static/chunks/app/api/mcp/[plugin]/sse/route-9ed8f7909a84e383.js +0 -1
  867. package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-9ed8f7909a84e383.js +0 -1
  868. package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-9ed8f7909a84e383.js +0 -1
  869. package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-9ed8f7909a84e383.js +0 -1
  870. package/app/.next/static/chunks/app/api/media-providers/tts/minimax/voices/route-9ed8f7909a84e383.js +0 -1
  871. package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-9ed8f7909a84e383.js +0 -1
  872. package/app/.next/static/chunks/app/api/models/alias/route-9ed8f7909a84e383.js +0 -1
  873. package/app/.next/static/chunks/app/api/models/availability/route-9ed8f7909a84e383.js +0 -1
  874. package/app/.next/static/chunks/app/api/models/custom/route-9ed8f7909a84e383.js +0 -1
  875. package/app/.next/static/chunks/app/api/models/disabled/route-9ed8f7909a84e383.js +0 -1
  876. package/app/.next/static/chunks/app/api/models/route-9ed8f7909a84e383.js +0 -1
  877. package/app/.next/static/chunks/app/api/models/test/route-9ed8f7909a84e383.js +0 -1
  878. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-9ed8f7909a84e383.js +0 -1
  879. package/app/.next/static/chunks/app/api/oauth/codex/bulk-import/route-9ed8f7909a84e383.js +0 -1
  880. package/app/.next/static/chunks/app/api/oauth/codex/import-token/route-9ed8f7909a84e383.js +0 -1
  881. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-9ed8f7909a84e383.js +0 -1
  882. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-9ed8f7909a84e383.js +0 -1
  883. package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-9ed8f7909a84e383.js +0 -1
  884. package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-9ed8f7909a84e383.js +0 -1
  885. package/app/.next/static/chunks/app/api/oauth/kiro/api-key/route-9ed8f7909a84e383.js +0 -1
  886. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-9ed8f7909a84e383.js +0 -1
  887. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-9ed8f7909a84e383.js +0 -1
  888. package/app/.next/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-9ed8f7909a84e383.js +0 -1
  889. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-9ed8f7909a84e383.js +0 -1
  890. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-9ed8f7909a84e383.js +0 -1
  891. package/app/.next/static/chunks/app/api/pricing/route-9ed8f7909a84e383.js +0 -1
  892. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-9ed8f7909a84e383.js +0 -1
  893. package/app/.next/static/chunks/app/api/provider-nodes/route-9ed8f7909a84e383.js +0 -1
  894. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-9ed8f7909a84e383.js +0 -1
  895. package/app/.next/static/chunks/app/api/providers/[id]/models/route-9ed8f7909a84e383.js +0 -1
  896. package/app/.next/static/chunks/app/api/providers/[id]/route-9ed8f7909a84e383.js +0 -1
  897. package/app/.next/static/chunks/app/api/providers/[id]/test/route-9ed8f7909a84e383.js +0 -1
  898. package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-9ed8f7909a84e383.js +0 -1
  899. package/app/.next/static/chunks/app/api/providers/client/route-9ed8f7909a84e383.js +0 -1
  900. package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-9ed8f7909a84e383.js +0 -1
  901. package/app/.next/static/chunks/app/api/providers/route-9ed8f7909a84e383.js +0 -1
  902. package/app/.next/static/chunks/app/api/providers/suggested-models/route-9ed8f7909a84e383.js +0 -1
  903. package/app/.next/static/chunks/app/api/providers/test-batch/route-9ed8f7909a84e383.js +0 -1
  904. package/app/.next/static/chunks/app/api/providers/validate/route-9ed8f7909a84e383.js +0 -1
  905. package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-9ed8f7909a84e383.js +0 -1
  906. package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-9ed8f7909a84e383.js +0 -1
  907. package/app/.next/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-9ed8f7909a84e383.js +0 -1
  908. package/app/.next/static/chunks/app/api/proxy-pools/deno-deploy/route-9ed8f7909a84e383.js +0 -1
  909. package/app/.next/static/chunks/app/api/proxy-pools/route-9ed8f7909a84e383.js +0 -1
  910. package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-9ed8f7909a84e383.js +0 -1
  911. package/app/.next/static/chunks/app/api/pxpipe/health/route-9ed8f7909a84e383.js +0 -1
  912. package/app/.next/static/chunks/app/api/pxpipe/install/route-9ed8f7909a84e383.js +0 -1
  913. package/app/.next/static/chunks/app/api/pxpipe/logs/route-9ed8f7909a84e383.js +0 -1
  914. package/app/.next/static/chunks/app/api/pxpipe/restart/route-9ed8f7909a84e383.js +0 -1
  915. package/app/.next/static/chunks/app/api/pxpipe/start/route-9ed8f7909a84e383.js +0 -1
  916. package/app/.next/static/chunks/app/api/pxpipe/stats/route-9ed8f7909a84e383.js +0 -1
  917. package/app/.next/static/chunks/app/api/pxpipe/status/route-9ed8f7909a84e383.js +0 -1
  918. package/app/.next/static/chunks/app/api/pxpipe/stop/route-9ed8f7909a84e383.js +0 -1
  919. package/app/.next/static/chunks/app/api/settings/database/route-9ed8f7909a84e383.js +0 -1
  920. package/app/.next/static/chunks/app/api/settings/database/selective/route-9ed8f7909a84e383.js +0 -1
  921. package/app/.next/static/chunks/app/api/settings/proxy-test/route-9ed8f7909a84e383.js +0 -1
  922. package/app/.next/static/chunks/app/api/settings/require-login/route-9ed8f7909a84e383.js +0 -1
  923. package/app/.next/static/chunks/app/api/settings/route-9ed8f7909a84e383.js +0 -1
  924. package/app/.next/static/chunks/app/api/shutdown/route-9ed8f7909a84e383.js +0 -1
  925. package/app/.next/static/chunks/app/api/tags/route-9ed8f7909a84e383.js +0 -1
  926. package/app/.next/static/chunks/app/api/translator/console-logs/route-9ed8f7909a84e383.js +0 -1
  927. package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-9ed8f7909a84e383.js +0 -1
  928. package/app/.next/static/chunks/app/api/translator/load/route-9ed8f7909a84e383.js +0 -1
  929. package/app/.next/static/chunks/app/api/translator/save/route-9ed8f7909a84e383.js +0 -1
  930. package/app/.next/static/chunks/app/api/translator/send/route-9ed8f7909a84e383.js +0 -1
  931. package/app/.next/static/chunks/app/api/translator/translate/route-9ed8f7909a84e383.js +0 -1
  932. package/app/.next/static/chunks/app/api/tunnel/disable/route-9ed8f7909a84e383.js +0 -1
  933. package/app/.next/static/chunks/app/api/tunnel/enable/route-9ed8f7909a84e383.js +0 -1
  934. package/app/.next/static/chunks/app/api/tunnel/status/route-9ed8f7909a84e383.js +0 -1
  935. package/app/.next/static/chunks/app/api/tunnel/tailscale-check/route-9ed8f7909a84e383.js +0 -1
  936. package/app/.next/static/chunks/app/api/tunnel/tailscale-disable/route-9ed8f7909a84e383.js +0 -1
  937. package/app/.next/static/chunks/app/api/tunnel/tailscale-enable/route-9ed8f7909a84e383.js +0 -1
  938. package/app/.next/static/chunks/app/api/tunnel/tailscale-install/route-9ed8f7909a84e383.js +0 -1
  939. package/app/.next/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-9ed8f7909a84e383.js +0 -1
  940. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-9ed8f7909a84e383.js +0 -1
  941. package/app/.next/static/chunks/app/api/usage/chart/route-9ed8f7909a84e383.js +0 -1
  942. package/app/.next/static/chunks/app/api/usage/history/route-9ed8f7909a84e383.js +0 -1
  943. package/app/.next/static/chunks/app/api/usage/logs/route-9ed8f7909a84e383.js +0 -1
  944. package/app/.next/static/chunks/app/api/usage/providers/route-9ed8f7909a84e383.js +0 -1
  945. package/app/.next/static/chunks/app/api/usage/report/route-9ed8f7909a84e383.js +0 -1
  946. package/app/.next/static/chunks/app/api/usage/request-details/route-9ed8f7909a84e383.js +0 -1
  947. package/app/.next/static/chunks/app/api/usage/request-logs/route-9ed8f7909a84e383.js +0 -1
  948. package/app/.next/static/chunks/app/api/usage/stats/route-9ed8f7909a84e383.js +0 -1
  949. package/app/.next/static/chunks/app/api/usage/stream/route-9ed8f7909a84e383.js +0 -1
  950. package/app/.next/static/chunks/app/api/v1/api/chat/route-9ed8f7909a84e383.js +0 -1
  951. package/app/.next/static/chunks/app/api/v1/audio/speech/route-9ed8f7909a84e383.js +0 -1
  952. package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-9ed8f7909a84e383.js +0 -1
  953. package/app/.next/static/chunks/app/api/v1/audio/voices/route-9ed8f7909a84e383.js +0 -1
  954. package/app/.next/static/chunks/app/api/v1/chat/completions/route-9ed8f7909a84e383.js +0 -1
  955. package/app/.next/static/chunks/app/api/v1/embeddings/route-9ed8f7909a84e383.js +0 -1
  956. package/app/.next/static/chunks/app/api/v1/images/generations/route-9ed8f7909a84e383.js +0 -1
  957. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-9ed8f7909a84e383.js +0 -1
  958. package/app/.next/static/chunks/app/api/v1/messages/route-9ed8f7909a84e383.js +0 -1
  959. package/app/.next/static/chunks/app/api/v1/models/[kind]/route-9ed8f7909a84e383.js +0 -1
  960. package/app/.next/static/chunks/app/api/v1/models/info/route-9ed8f7909a84e383.js +0 -1
  961. package/app/.next/static/chunks/app/api/v1/models/route-9ed8f7909a84e383.js +0 -1
  962. package/app/.next/static/chunks/app/api/v1/responses/compact/route-9ed8f7909a84e383.js +0 -1
  963. package/app/.next/static/chunks/app/api/v1/responses/route-9ed8f7909a84e383.js +0 -1
  964. package/app/.next/static/chunks/app/api/v1/route-9ed8f7909a84e383.js +0 -1
  965. package/app/.next/static/chunks/app/api/v1/search/route-9ed8f7909a84e383.js +0 -1
  966. package/app/.next/static/chunks/app/api/v1/web/fetch/route-9ed8f7909a84e383.js +0 -1
  967. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-9ed8f7909a84e383.js +0 -1
  968. package/app/.next/static/chunks/app/api/v1beta/models/route-9ed8f7909a84e383.js +0 -1
  969. package/app/.next/static/chunks/app/api/version/route-9ed8f7909a84e383.js +0 -1
  970. package/app/.next/static/chunks/app/api/version/shutdown/route-9ed8f7909a84e383.js +0 -1
  971. package/app/.next/static/chunks/app/api/version/update/route-9ed8f7909a84e383.js +0 -1
  972. package/app/.next/static/chunks/app/manifest.webmanifest/route-9ed8f7909a84e383.js +0 -1
  973. package/app/.next/static/chunks/app/page-9ed8f7909a84e383.js +0 -1
  974. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-9ed8f7909a84e383.js +0 -1
  975. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-9ed8f7909a84e383.js +0 -1
  976. package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-9ed8f7909a84e383.js +0 -1
  977. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-9ed8f7909a84e383.js +0 -1
  978. package/app/.next/static/css/79e49d401b07510e.css +0 -1
  979. /package/app/.next/static/{4eHcO0iL_6PDYZfGNLlqJ → lo-GnJQxxRLdCvA2oang1}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ exports.id=7467,exports.ids=[615,1998,7467],exports.modules={3662:(a,b,c)=>{"use strict";c.d(b,{EQ:()=>f,LY:()=>d,O:()=>e,fh:()=>h,t2:()=>i,wf:()=>g});let d={400:{type:"invalid_request_error",code:"bad_request"},401:{type:"authentication_error",code:"invalid_api_key"},402:{type:"billing_error",code:"payment_required"},403:{type:"permission_error",code:"insufficient_quota"},404:{type:"invalid_request_error",code:"model_not_found"},406:{type:"invalid_request_error",code:"model_not_supported"},429:{type:"rate_limit_error",code:"rate_limit_exceeded"},500:{type:"server_error",code:"internal_server_error"},502:{type:"server_error",code:"bad_gateway"},503:{type:"server_error",code:"service_unavailable"},504:{type:"server_error",code:"gateway_timeout"}},e={400:"Bad request",401:"Invalid API key provided",402:"Payment required",403:"You exceeded your current quota",404:"Model not found",406:"Model not supported",429:"Rate limit exceeded",500:"Internal server error",502:"Bad gateway - upstream provider error",503:"Service temporarily unavailable",504:"Gateway timeout"},f={base:2e3,max:3e5,maxLevel:15},g=3e4,h=18e5,i=[{text:"no credentials",cooldownMs:12e4},{text:"request not allowed",cooldownMs:5e3},{text:"improperly formed request",cooldownMs:12e4},{text:"rate limit",backoff:!0},{text:"too many requests",backoff:!0},{text:"quota exceeded",backoff:!0},{text:"capacity",backoff:!0},{text:"overloaded",backoff:!0},{status:401,cooldownMs:12e4},{status:402,cooldownMs:12e4},{status:403,cooldownMs:12e4},{status:404,cooldownMs:12e4},{status:429,backoff:!0}]},7803:(a,b,c)=>{"use strict";c.r(b),c.d(b,{debug:()=>o,error:()=>r,errorLine:()=>l,fmtThink:()=>m,info:()=>p,line:()=>k,maskKey:()=>v,nextTag:()=>i,request:()=>s,response:()=>t,stream:()=>u,tagForSession:()=>j,warn:()=>q});let d={DEBUG:0,INFO:1,WARN:2,ERROR:3},e=d[process.env.LOG_LEVEL?.toUpperCase?.()]??d.INFO;function f(){return new Date().toLocaleTimeString("en-US",{hour12:!1})}let g=["\uD83D\uDFE2","\uD83D\uDD35","\uD83D\uDFE3","\uD83D\uDFE1","\uD83D\uDFE0","\uD83D\uDD34","⚪","\uD83D\uDFE4"],h=0;function i(){let a=g[h%g.length];return h++,a}function j(a){if(!a)return i();let b=0;for(let c=0;c<a.length;c++)b=31*b+a.charCodeAt(c)|0;return g[Math.abs(b)%g.length]}function k(a,b,c){e>d.INFO||console.log(`[${f()}] ${a} ${b} ${c}`)}function l(a,b,c){console.log(`[${f()}] ${a} ${b} ${c}`)}function m(a){return a&&a.mode?"none"===a.mode?"off":"auto"===a.mode?"auto":"budget"===a.mode?a.budget>=1e3?`${Math.round(a.budget/1e3)}k`:`${a.budget}`:"level"===a.mode?a.level:null:null}function n(a){if(!a)return"";if("string"==typeof a)return a;try{return JSON.stringify(a)}catch{return String(a)}}function o(a,b,c){if(e<=d.DEBUG){let d=c?` ${n(c)}`:"";console.log(`[${f()}] 🔍 [${a}] ${b}${d}`)}}function p(a,b,c){if(e<=d.INFO){let d=c?` ${n(c)}`:"";console.log(`[${f()}] ℹ️ [${a}] ${b}${d}`)}}function q(a,b,c){if(e<=d.WARN){let d=c?` ${n(c)}`:"";console.warn(`[${f()}] ⚠️ [${a}] ${b}${d}`)}}function r(a,b,c){if(e<=d.ERROR){let d=c?` ${n(c)}`:"";console.log(`[${f()}] ❌ [${a}] ${b}${d}`)}}function s(a,b,c){let d=c?` ${n(c)}`:"";console.log(`\x1b[36m[${f()}] 📥 ${a} ${b}${d}\x1b[0m`)}function t(a,b,c){let d=c?` ${n(c)}`:"";console.log(`[${f()}] ${a<400?"\uD83D\uDCE4":"\uD83D\uDCA5"} ${a} (${b}ms)${d}`)}function u(a,b){let c=b?` ${n(b)}`:"";console.log(`[${f()}] 🌊 [STREAM] ${a}${c}`)}function v(a){return!a||a.length<8?"***":`${a.slice(0,4)}...${a.slice(-4)}`}},11259:(a,b,c)=>{"use strict";c.d(b,{Pv:()=>k}),c(73024);var d=c(51455),e=c(76760),f=c(73136);async function g(a,b,c){for(let d=0;d<b;d++)try{return await a()}catch(a){if(d<b-1)await new Promise(a=>setTimeout(a,c));else throw a}}class h{#a;#b;#c=!1;#d=null;#e=null;#f=null;#g=null;#h(a){return this.#g=a,this.#f||=new Promise((a,b)=>{this.#e=[a,b]}),new Promise((a,b)=>{this.#f?.then(a).catch(b)})}async #i(a){this.#c=!0;try{await (0,d.writeFile)(this.#b,a,"utf-8"),await g(async()=>{await (0,d.rename)(this.#b,this.#a)},10,100),this.#d?.[0]()}catch(a){throw a instanceof Error&&this.#d?.[1](a),a}finally{if(this.#c=!1,this.#d=this.#e,this.#e=this.#f=null,null!==this.#g){let a=this.#g;this.#g=null,await this.write(a)}}}constructor(a){this.#a=a,this.#b=function(a){let b=a instanceof URL?(0,f.fileURLToPath)(a):a.toString();return(0,e.join)((0,e.dirname)(b),`.${(0,e.basename)(b)}.tmp`)}(a)}async write(a){return this.#c?this.#h(a):this.#i(a)}}class i{#a;#j;constructor(a){this.#a=a,this.#j=new h(a)}async read(){let a;try{a=await (0,d.readFile)(this.#a,"utf-8")}catch(a){if("ENOENT"===a.code)return null;throw a}return a}write(a){return this.#j.write(a)}}class j{#k;#l;#m;constructor(a,{parse:b,stringify:c}){this.#k=new i(a),this.#l=b,this.#m=c}async read(){let a=await this.#k.read();return null===a?null:this.#l(a)}write(a){return this.#k.write(this.#m(a))}}class k extends j{constructor(a){super(a,{parse:JSON.parse,stringify:a=>JSON.stringify(a,null,2)})}}},39326:(a,b,c)=>{"use strict";c.d(b,{B:()=>h,p:()=>g});var d=c(71998);function e(a){return null==a?"":String(a).trim()}let f=new Map;function g(a,b,c){if(!a||0===a.length)return null;if(1===a.length)return a[0];if("round-robin"===b){let b=f.get(c)||{index:-1};return b.index=(b.index+1)%a.length,f.set(c,b),a[b.index]}return"random"===b?a[Math.floor(Math.random()*a.length)]:a[0]}async function h(a={}){try{let b=e(a?.proxyPoolId),c="__none__"===b?"":b,f=function(a={}){let b=a?.connectionProxyEnabled===!0,c=e(a?.connectionProxyUrl);return{connectionProxyEnabled:b,connectionProxyUrl:c,connectionNoProxy:e(a?.connectionNoProxy)}}(a);if(c){let a=await (0,d.hr)(c),b=e(a?.proxyUrl),f=e(a?.noProxy);if(a&&!0===a.isActive&&b){if("vercel"===a.type||"cloudflare"===a.type||"deno"===a.type)return{source:a.type,proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:f,strictProxy:!0===a.strictProxy,vercelRelayUrl:b};return{source:"pool",proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!0,connectionProxyUrl:b,connectionNoProxy:f,strictProxy:!0===a.strictProxy}}}if(f.connectionProxyEnabled&&f.connectionProxyUrl)return{source:"legacy",proxyPoolId:c||null,proxyPool:null,...f};return{source:"none",proxyPoolId:c||null,proxyPool:null,...f}}catch(a){return console.error("[resolveConnectionProxyConfig] Failed to resolve proxy config:",a),{source:"error",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:"",strictProxy:!1}}}},40615:(a,b,c)=>{"use strict";c.d(b,{AI_PROVIDERS:()=>s,js:()=>w,DI:()=>n,fg:()=>k,Pd:()=>o,IS:()=>h,nJ:()=>i,zN:()=>j,JH:()=>m,jO:()=>y,wb:()=>x,br:()=>l,wG:()=>v,zt:()=>t,gb:()=>q,gC:()=>r,mq:()=>p,rs:()=>u});var d=c(52056);let e="⚠️ Risk Notice: This provider uses a subscription/OAuth session not officially licensed for proxy/router use. Account may be restricted or banned. Use at your own risk.";Object.fromEntries(d.A.filter(a=>a.display).map(a=>{let b;return[a.id,"RISK_NOTICE"===(b=a.display).deprecationNotice?{...b,deprecationNotice:e}:b]}));let f=["serviceKinds","ttsConfig","sttConfig","embeddingConfig","imageConfig","imageToTextConfig","videoConfig","musicConfig","searchViaChat","searchConfig","fetchConfig","modelsFetcher","mediaPriority","hiddenKinds"],g=a=>Object.fromEntries(d.A.filter(b=>b.category===a).map(a=>[a.id,function(a){let b={};for(let c of(a.media&&Object.assign(b,a.media),f))void 0!==a[c]&&(b[c]=a[c]);let c={...a.display||{}};return"RISK_NOTICE"===c.deprecationNotice&&(c.deprecationNotice=e),{...c,id:a.id,alias:a.uiAlias||a.alias,...a.hidden?{hidden:!0}:{},...b,...void 0!==a.priority?{priority:a.priority}:{},...a.hasFree?{hasFree:!0}:{},...a.thinkingConfig?{thinkingConfig:a.thinkingConfig}:{},...a.regions?{regions:a.regions,defaultRegion:a.defaultRegion}:{},...a.hasProviderSpecificData?{hasProviderSpecificData:!0}:{},...a.noAuth?{noAuth:!0}:{},...a.passthroughModels?{passthroughModels:!0}:{},...a.hasOAuth?{hasOAuth:!0}:{},...a.authModes?{authModes:a.authModes}:{},...a.authType?{authType:a.authType}:{},...a.authHint?{authHint:a.authHint}:{}}}(a)])),h=g("free"),i=g("freeTier"),j=g("oauth"),k=g("apikey"),l=g("webCookie"),m="openai-compatible-",n="anthropic-compatible-",o="custom-embedding-";function p(a){return"string"==typeof a&&a.startsWith(m)}function q(a){return"string"==typeof a&&a.startsWith(n)}function r(a){return"string"==typeof a&&a.startsWith(o)}let s={...h,...i,...j,...k,...l};function t(a){for(let b of Object.values(s))if(b.alias===a||b.id===a)return b;return null}function u(a){let b=t(a);return b?.id||a}function v(a){let b=s[a];return b?.alias||a}let w=Object.values(s).reduce((a,b)=>(a[b.alias]=b.id,a),{});Object.values(s).reduce((a,b)=>(a[b.id]=b.alias,a),{});let x=d.A.filter(a=>a.features?.usage).map(a=>a.id),y=d.A.filter(a=>a.features?.usageApikey).map(a=>a.id)},49120:(a,b,c)=>{"use strict";c.d(b,{n:()=>l});var d=c(73024),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h);let j="n9router";function k(){return"win32"===process.platform?g().join(process.env.APPDATA||g().join(i().homedir(),"AppData","Roaming"),j):g().join(i().homedir(),`.${j}`)}let l=function(){let a=process.env.DATA_DIR;if(!a)return k();if("win32"===process.platform&&/^\//.test(a))return console.warn(`[DATA_DIR] '${a}' is a Unix path on Windows → fallback to default`),k();try{return e().mkdirSync(a,{recursive:!0}),a}catch(b){if(b?.code==="EACCES"||b?.code==="EPERM")return console.warn(`[DATA_DIR] '${a}' not writable → fallback ~/.${j}`),k();throw b}}()},71998:(a,b,c)=>{"use strict";c.d(b,{Fh:()=>d.getProviderNodes,L9:()=>d.L9,Mc:()=>d.Mc,OM:()=>d.OM,P:()=>d.getProviderConnections,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Xx:()=>d.Xx,Yd:()=>d.Yd,ZO:()=>d.ZO,c:()=>d.c,createProviderConnection:()=>d.iE,fK:()=>d.fK,fv:()=>d.fv,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,mt:()=>d.getSettings,o5:()=>d.o5,op:()=>d.op,rj:()=>d.updateProviderConnection,uL:()=>d.uL,ui:()=>d.ui,uv:()=>d.uv});var d=c(89718)},78335:()=>{},82996:(a,b,c)=>{"use strict";c.d(b,{t:()=>d});class d{adapter;data;constructor(a,b){!function(a,b){if(void 0===a)throw Error("lowdb: missing adapter");if(void 0===b)throw Error("lowdb: missing default data")}(a,b),this.adapter=a,this.data=b}async read(){let a=await this.adapter.read();a&&(this.data=a)}async write(){this.data&&await this.adapter.write(this.data)}async update(a){a(this.data),await this.write()}}},96487:()=>{}};
@@ -0,0 +1 @@
1
+ exports.id=75,exports.ids=[75,615,5699],exports.modules={3662:(a,b,c)=>{"use strict";c.d(b,{EQ:()=>f,LY:()=>d,O:()=>e,fh:()=>h,t2:()=>i,wf:()=>g});let d={400:{type:"invalid_request_error",code:"bad_request"},401:{type:"authentication_error",code:"invalid_api_key"},402:{type:"billing_error",code:"payment_required"},403:{type:"permission_error",code:"insufficient_quota"},404:{type:"invalid_request_error",code:"model_not_found"},406:{type:"invalid_request_error",code:"model_not_supported"},429:{type:"rate_limit_error",code:"rate_limit_exceeded"},500:{type:"server_error",code:"internal_server_error"},502:{type:"server_error",code:"bad_gateway"},503:{type:"server_error",code:"service_unavailable"},504:{type:"server_error",code:"gateway_timeout"}},e={400:"Bad request",401:"Invalid API key provided",402:"Payment required",403:"You exceeded your current quota",404:"Model not found",406:"Model not supported",429:"Rate limit exceeded",500:"Internal server error",502:"Bad gateway - upstream provider error",503:"Service temporarily unavailable",504:"Gateway timeout"},f={base:2e3,max:3e5,maxLevel:15},g=3e4,h=18e5,i=[{text:"no credentials",cooldownMs:12e4},{text:"request not allowed",cooldownMs:5e3},{text:"improperly formed request",cooldownMs:12e4},{text:"rate limit",backoff:!0},{text:"too many requests",backoff:!0},{text:"quota exceeded",backoff:!0},{text:"capacity",backoff:!0},{text:"overloaded",backoff:!0},{status:401,cooldownMs:12e4},{status:402,cooldownMs:12e4},{status:403,cooldownMs:12e4},{status:404,cooldownMs:12e4},{status:429,backoff:!0}]},30869:(a,b,c)=>{"use strict";c.d(b,{UY:()=>h,eh:()=>f.eh,fg:()=>e.fg,h0:()=>g,oc:()=>i});var d=c(39006),e=c(40615),f=c(81329);d.rE;let g={npmPackageName:"n9router",installCmd:"npm i -g n9router",installCmdLatest:"npm i -g n9router@latest --prefer-online",shutdownCountdownSec:3,exitDelayMs:500,statusPort:20129,statusPollIntervalMs:1e3,statusLogTailLines:8,installRetries:3,installRetryDelayMs:5e3,lingerAfterDoneMs:3e4,waitForExitMinMs:5e3,waitForExitMaxMs:2e4,waitForExitCheckMs:500,appPort:20128},h={maxLines:200,pollIntervalMs:1e3},i={tickIntervalMs:6e4,pingLeadMs:5e3,refreshAheadMs:3e5,failureCooldownMs:9e5,providers:{claude:{settingsKey:"claudeAutoPing",quotaKey:"session (5h)",pingModel:"claude-haiku-4-5-20251001",pingText:"hi",pingMaxTokens:1},codex:{settingsKey:"codexAutoPing",quotaKey:"session",pingWhenResetAtSlides:!0,resetAtDriftMs:3e4,minPingIntervalMs:6e5,skipWhenBlockingQuotaExhausted:!0,pingModel:"gpt-5.5",pingText:"hi",pingInstructions:"Reply with OK.",pingReasoningEffort:"none"}}}},35024:(a,b,c)=>{"use strict";c.d(b,{Ak:()=>e,Yg:()=>h,sr:()=>d.sr,xq:()=>d.xq});var d=c(26070);function e(a){return(a?.providerSpecificData?.baseUrl?.trim()||"http://localhost:11434").replace(/\/$/,"")}let f=d.xq["xiaomi-tokenplan"]?.regions||{},g=d.xq["xiaomi-tokenplan"]?.defaultRegion;function h(a){return f[a?.providerSpecificData?.region]||f[g]}},38238:(a,b,c)=>{"use strict";c.d(b,{P:()=>h});var d=c(89718),e=c(30869),f=c(54603);async function g(){let a=null;try{let b=await (0,d.getApiKeys)();a=b.find(a=>!1!==a.isActive)?.key||null}catch{}let b={"Content-Type":"application/json"};return a&&(b.Authorization=`Bearer ${a}`),b["x-9r-cli-token"]=await (0,f.Xj)("9r-cli-auth"),b}async function h(a,b,c=`http://127.0.0.1:${process.env.PORT||e.h0.appPort}`){let d=await g(),f=Date.now();if("embedding"===b){let b=await fetch(`${c}/api/v1/embeddings`,{method:"POST",headers:d,body:JSON.stringify({model:a,input:"test"}),signal:AbortSignal.timeout(15e3)}),e=Date.now()-f,g=await b.text().catch(()=>""),h=null;try{h=g?JSON.parse(g):null}catch{}if(!b.ok){let a=h?.error?.message||h?.error||g;return{ok:!1,latencyMs:e,error:`HTTP ${b.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:b.status}}return Array.isArray(h?.data)&&h.data.length>0&&Array.isArray(h.data[0]?.embedding)?{ok:!0,latencyMs:e,error:null,status:b.status}:{ok:!1,latencyMs:e,status:b.status,error:"Provider returned no embedding data"}}if("image"===b){let b=await fetch(`${c}/api/v1/images/generations`,{method:"POST",headers:d,body:JSON.stringify({model:a,prompt:"test"}),signal:AbortSignal.timeout(15e3)}),e=Date.now()-f,g=await b.text().catch(()=>""),h=null;try{h=g?JSON.parse(g):null}catch{}if(!b.ok){let a=h?.error?.message||h?.msg||h?.message||h?.error||g;return{ok:!1,latencyMs:e,error:`HTTP ${b.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:b.status}}return Array.isArray(h?.data)&&h.data.length>0?{ok:!0,latencyMs:e,error:null,status:b.status}:{ok:!1,latencyMs:e,status:b.status,error:"Provider returned no image data for this model"}}if("stt"===b){let b,e,g,h,i=new FormData,j=(g=new DataView(e=new ArrayBuffer(44+(b=2*Math.max(1,Math.floor(4e3))))),(h=(a,b)=>{for(let c=0;c<b.length;c+=1)g.setUint8(a+c,b.charCodeAt(c))})(0,"RIFF"),g.setUint32(4,36+b,!0),h(8,"WAVE"),h(12,"fmt "),g.setUint32(16,16,!0),g.setUint16(20,1,!0),g.setUint16(22,1,!0),g.setUint32(24,16e3,!0),g.setUint32(28,32e3,!0),g.setUint16(32,2,!0),g.setUint16(34,16,!0),h(36,"data"),g.setUint32(40,b,!0),new Blob([e],{type:"audio/wav"}));i.append("file",j,"test.wav"),i.append("model",a);let k=await fetch(`${c}/api/v1/audio/transcriptions`,{method:"POST",headers:Object.fromEntries(Object.entries(d).filter(([a])=>"content-type"!==a.toLowerCase())),body:i,signal:AbortSignal.timeout(15e3)}),l=Date.now()-f,m=await k.text().catch(()=>""),n=null;try{n=m?JSON.parse(m):null}catch{}if(!k.ok){let a=n?.error?.message||n?.msg||n?.message||n?.error||m;return{ok:!1,latencyMs:l,error:`HTTP ${k.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:k.status}}return("string"==typeof n?.text?n.text:"").trim()?{ok:!0,latencyMs:l,error:null,status:k.status}:{ok:!1,latencyMs:l,status:k.status,error:"Provider returned no transcription text for this model"}}let i=await fetch(`${c}/api/v1/chat/completions`,{method:"POST",headers:d,body:JSON.stringify({model:a,max_tokens:16,stream:!1,messages:[{role:"user",content:"hi"}]}),signal:AbortSignal.timeout(15e3)}),j=Date.now()-f,k=await i.text().catch(()=>""),l=null;try{l=k?JSON.parse(k):null}catch{}if(!i.ok){let a=l?.error?.message||l?.msg||l?.message||l?.error||k;return{ok:!1,latencyMs:j,error:`HTTP ${i.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:i.status}}let m=l?.status,n=l?.msg||l?.message;if(null!=m&&"200"!==String(m)&&"0"!==String(m)&&n)return{ok:!1,latencyMs:j,status:i.status,error:`Provider status ${m}: ${String(n).slice(0,240)}`};if(l?.error){let a=l?.error?.message||l?.error||"Provider returned an error";return{ok:!1,latencyMs:j,status:i.status,error:String(a).slice(0,240)}}return Array.isArray(l?.choices)&&l.choices.length>0?{ok:!0,latencyMs:j,error:null,status:i.status}:{ok:!1,latencyMs:j,status:i.status,error:"Provider returned no completion choices for this model"}}},39006:a=>{"use strict";a.exports={rE:"0.4.50"}},40615:(a,b,c)=>{"use strict";c.d(b,{AI_PROVIDERS:()=>s,js:()=>w,DI:()=>n,fg:()=>k,Pd:()=>o,IS:()=>h,nJ:()=>i,zN:()=>j,JH:()=>m,jO:()=>y,wb:()=>x,br:()=>l,wG:()=>v,zt:()=>t,gb:()=>q,gC:()=>r,mq:()=>p,rs:()=>u});var d=c(52056);let e="⚠️ Risk Notice: This provider uses a subscription/OAuth session not officially licensed for proxy/router use. Account may be restricted or banned. Use at your own risk.";Object.fromEntries(d.A.filter(a=>a.display).map(a=>{let b;return[a.id,"RISK_NOTICE"===(b=a.display).deprecationNotice?{...b,deprecationNotice:e}:b]}));let f=["serviceKinds","ttsConfig","sttConfig","embeddingConfig","imageConfig","imageToTextConfig","videoConfig","musicConfig","searchViaChat","searchConfig","fetchConfig","modelsFetcher","mediaPriority","hiddenKinds"],g=a=>Object.fromEntries(d.A.filter(b=>b.category===a).map(a=>[a.id,function(a){let b={};for(let c of(a.media&&Object.assign(b,a.media),f))void 0!==a[c]&&(b[c]=a[c]);let c={...a.display||{}};return"RISK_NOTICE"===c.deprecationNotice&&(c.deprecationNotice=e),{...c,id:a.id,alias:a.uiAlias||a.alias,...a.hidden?{hidden:!0}:{},...b,...void 0!==a.priority?{priority:a.priority}:{},...a.hasFree?{hasFree:!0}:{},...a.thinkingConfig?{thinkingConfig:a.thinkingConfig}:{},...a.regions?{regions:a.regions,defaultRegion:a.defaultRegion}:{},...a.hasProviderSpecificData?{hasProviderSpecificData:!0}:{},...a.noAuth?{noAuth:!0}:{},...a.passthroughModels?{passthroughModels:!0}:{},...a.hasOAuth?{hasOAuth:!0}:{},...a.authModes?{authModes:a.authModes}:{},...a.authType?{authType:a.authType}:{},...a.authHint?{authHint:a.authHint}:{}}}(a)])),h=g("free"),i=g("freeTier"),j=g("oauth"),k=g("apikey"),l=g("webCookie"),m="openai-compatible-",n="anthropic-compatible-",o="custom-embedding-";function p(a){return"string"==typeof a&&a.startsWith(m)}function q(a){return"string"==typeof a&&a.startsWith(n)}function r(a){return"string"==typeof a&&a.startsWith(o)}let s={...h,...i,...j,...k,...l};function t(a){for(let b of Object.values(s))if(b.alias===a||b.id===a)return b;return null}function u(a){let b=t(a);return b?.id||a}function v(a){let b=s[a];return b?.alias||a}let w=Object.values(s).reduce((a,b)=>(a[b.alias]=b.id,a),{});Object.values(s).reduce((a,b)=>(a[b.id]=b.alias,a),{});let x=d.A.filter(a=>a.features?.usage).map(a=>a.id),y=d.A.filter(a=>a.features?.usageApikey).map(a=>a.id)},45699:(a,b,c)=>{"use strict";c.d(b,{Xg:()=>q,PROVIDER_MODELS:()=>f.vq,fZ:()=>j,cY:()=>s,ux:()=>m,OA:()=>n,kt:()=>o,KC:()=>r,SM:()=>i});var d=c(35024),e=c(52056),f=c(26070),g=c(99511);let h="-review";function i(a){return f.vq[a]||[]}function j(a){let b=f.vq[a];return b?.[0]?.id||null}let k=new Set(["kr","kiro"]);function l(a,b,c){if(!a)return;let d=a.find(a=>a.id===b);if(d)return d;if(!k.has(c))return;let e=(0,g.Kq)(b);if(e!==b)return a.find(a=>a.id===e)}function m(a,b){let c=f.vq[a];return c?(0,g.gr)(l(c,b,a)):null}function n(a,b){let c=f.vq[a];if(!c)return null;let d=l(c,b,a);return d?.kind||d?.type||null}function o(a,b){let c="string"==typeof b?b.match(/\([^()]+\)\s*$/):null,d=c?c[0]:"",e=d?b.slice(0,c.index).trim():b,g=l(f.vq[a],e,a);return g?.upstreamModelId?g.upstreamModelId+d:g?.id?g.id+d:"cx"===a&&"string"==typeof e&&e.endsWith(h)?e.slice(0,-h.length)+d:e+d}let p=Object.fromEntries(e.A.filter(a=>a.alias&&a.alias!==a.id).map(a=>[a.id,a.alias])),q=Object.fromEntries(Object.keys(d.xq).map(a=>[a,p[a]||a]));function r(a){let b=q[a]||a;return f.vq[b]||[]}function s(a,b){return(0,g.g5)(l(f.vq[a],b,a))}},49120:(a,b,c)=>{"use strict";c.d(b,{n:()=>l});var d=c(73024),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h);let j="n9router";function k(){return"win32"===process.platform?g().join(process.env.APPDATA||g().join(i().homedir(),"AppData","Roaming"),j):g().join(i().homedir(),`.${j}`)}let l=function(){let a=process.env.DATA_DIR;if(!a)return k();if("win32"===process.platform&&/^\//.test(a))return console.warn(`[DATA_DIR] '${a}' is a Unix path on Windows → fallback to default`),k();try{return e().mkdirSync(a,{recursive:!0}),a}catch(b){if(b?.code==="EACCES"||b?.code==="EPERM")return console.warn(`[DATA_DIR] '${a}' not writable → fallback ~/.${j}`),k();throw b}}()},54603:(a,b,c)=>{"use strict";c.d(b,{Xj:()=>q});var d=c(19713),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(77598),j=c.n(i),k=c(49120);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="9r-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)}},78335:()=>{},81329:(a,b,c)=>{"use strict";c.d(b,{CP:()=>f,Xg:()=>d.Xg,eh:()=>e,vq:()=>d.PROVIDER_MODELS});var d=c(45699);Object.entries(c(40615).AI_PROVIDERS).filter(([,a])=>a.passthroughModels).map(([a])=>a);let e=Object.entries(d.PROVIDER_MODELS).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name}))),f=(a,b=null)=>a?.kind||a?.type||b},96487:()=>{}};
@@ -1,3 +1,3 @@
1
- exports.id=7994,exports.ids=[7994],exports.modules={43:(a,b,c)=>{Promise.resolve().then(c.bind(c,51747))},51747:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/cuongquach/projects/vibe/n9router/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.js\" 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.")},"/Users/cuongquach/projects/vibe/n9router/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.js","default")},54603:(a,b,c)=>{"use strict";c.d(b,{Xj:()=>q});var d=c(19713),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(77598),j=c.n(i),k=c(49120);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="9r-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)}},60409:(a,b,c)=>{"use strict";c.d(b,{default:()=>z});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(50412),i=c(50377),j=c(95514),k=c(99070),l=c(95145);let m=[{field:"inputTokens5h",label:"Tokens / 5h",placeholder:"e.g. 500000"},{field:"inputTokens24h",label:"Tokens / 24h",placeholder:"e.g. 2000000"},{field:"cost5h",label:"Cost / 5h ($)",placeholder:"e.g. 1.00",isCost:!0},{field:"cost24h",label:"Cost / 24h ($)",placeholder:"e.g. 5.00",isCost:!0}],n=[{label:"15 minutes",ms:9e5},{label:"1 hour",ms:36e5},{label:"6 hours",ms:216e5},{label:"12 hours",ms:432e5},{label:"24 hours",ms:864e5},{label:"7 days",ms:6048e5},{label:"30 days",ms:2592e6}],o=[{label:"All recorded time",windowMs:null},{label:"Last 5 hours",windowMs:18e6},{label:"Last 24 hours",windowMs:864e5},{label:"Last 7 days",windowMs:6048e5},{label:"Last 30 days",windowMs:2592e6}];function p({label:a,value:b,limit:c,isCost:e}){if(!c)return null;let f=Math.min(100,b/c*100),g=f>=100?"bg-red-500":f>=80?"bg-amber-500":"bg-primary",h=e?`$${b.toFixed(4)} / $${c.toFixed(2)} (${f.toFixed(0)}%)`:`${b.toLocaleString()} / ${c.toLocaleString()} (${f.toFixed(0)}%)`;return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex justify-between text-xs",children:[(0,d.jsx)("span",{className:"text-text-muted",children:a}),(0,d.jsx)("span",{className:"text-text-muted",children:h})]}),(0,d.jsx)("div",{className:"h-1.5 rounded-full bg-black/5 dark:bg-white/5 overflow-hidden",children:(0,d.jsx)("div",{className:`h-full rounded-full ${g}`,style:{width:`${f}%`}})})]})}function q(a){let b=Math.floor(a/6e4),c=Math.floor(a/36e5),d=Math.floor(a/864e5);return d>0?`${d}d`:c>0?`${c}h`:`${b}m`}function r({apiKey:a,usageData:b,limitDraft:c,setLimitDraft:e,saving:f,onSave:g,onCancel:h,onResetUsage:i,resetHistory:j,resettingUsage:l}){let n=b?.usage||{},o=a.limits;return(0,d.jsxs)("div",{className:"mb-3 rounded-lg border border-black/8 dark:border-white/8 bg-bg-subtle p-4",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-text-muted uppercase tracking-wide",children:"Usage Limits"}),(0,d.jsx)("span",{className:"text-xs text-text-muted",children:"Leave blank = unlimited"})]}),b&&o&&(0,d.jsxs)("div",{className:"mb-4 space-y-2",children:[["5h","24h"].map(a=>{let b="5h"===a?n.inputTokens5h||0:n.inputTokens24h||0,c="5h"===a?n.cost5h||0:n.cost24h||0,e="5h"===a?o.inputTokens5h:o.inputTokens24h,f="5h"===a?o.cost5h:o.cost24h;return e||f?(0,d.jsxs)("div",{className:"space-y-1",children:[(0,d.jsx)(p,{label:`${a} tokens`,value:b,limit:e}),(0,d.jsx)(p,{label:`${a} cost`,value:c,limit:f,isCost:!0})]},a):null}),o.windows&&o.windows.map((a,c)=>{let e=`tokens_${a.durationMs}`,f=`cost_${a.durationMs}`,g=b.windowUsage?.[e]||0,h=b.windowUsage?.[f]||0;if(!(a.inputTokens||a.cost))return null;let i=a.label||q(a.durationMs);return(0,d.jsxs)("div",{className:"space-y-1",children:[(0,d.jsx)(p,{label:`${i} tokens`,value:g,limit:a.inputTokens}),(0,d.jsx)(p,{label:`${i} cost`,value:h,limit:a.cost,isCost:!0})]},`custom-${c}`)})]}),(0,d.jsx)("div",{className:"grid grid-cols-2 gap-3 mb-3",children:m.map(({field:a,label:b,placeholder:f,isCost:g})=>(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"block text-xs text-text-muted mb-1",children:b}),(0,d.jsx)("input",{type:"number",min:"0",step:g?"0.01":"1",value:c[a]??"",onChange:b=>e(c=>({...c,[a]:b.target.value})),placeholder:f,className:"w-full px-2 py-1.5 text-xs border border-black/10 dark:border-white/10 rounded-lg bg-bg text-text-main focus:outline-none focus:ring-1 focus:ring-primary/50"})]},a))}),(0,d.jsx)(s,{limitDraft:c,setLimitDraft:e}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(k.default,{size:"sm",onClick:g,disabled:f,children:f?"Saving…":"Save limits"}),(0,d.jsx)(k.default,{size:"sm",variant:"ghost",onClick:h,children:"Cancel"}),i&&(0,d.jsx)(t,{keyName:a.name,onResetUsage:i,resettingUsage:l})]}),j&&j.length>0&&(0,d.jsx)(u,{history:j})]})}function s({limitDraft:a,setLimitDraft:b}){let[c,f]=(0,e.useState)(!1),[g,h]=(0,e.useState)(n[1].ms),i=a.windows||[],j=(a,c,d)=>{b(b=>({...b,windows:b.windows.map((b,e)=>e===a?{...b,[c]:d}:b)}))},l=new Set(i.map(a=>a.durationMs)),m=n.filter(a=>!l.has(a.ms));return(0,d.jsxs)("div",{className:"mb-4 border-t border-black/5 dark:border-white/5 pt-3",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,d.jsx)("span",{className:"text-xs font-medium text-text-muted",children:"Custom Time Windows"}),!c&&m.length>0&&(0,d.jsxs)("button",{onClick:()=>f(!0),className:"text-xs text-primary hover:text-primary/80 flex items-center gap-1",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"add"}),"Add window"]})]}),i.length>0&&(0,d.jsx)("div",{className:"space-y-2 mb-3",children:i.map((a,c)=>(0,d.jsxs)("div",{className:"flex items-center gap-2 p-2 rounded bg-bg-secondary/50",children:[(0,d.jsx)("span",{className:"text-xs font-medium w-20 shrink-0",children:a.label||q(a.durationMs)}),(0,d.jsxs)("div",{className:"flex-1 grid grid-cols-2 gap-2",children:[(0,d.jsx)("input",{type:"number",min:"0",step:"1",value:a.inputTokens??"",onChange:a=>j(c,"inputTokens",a.target.value),placeholder:"Tokens",className:"w-full px-2 py-1 text-xs border border-black/10 dark:border-white/10 rounded bg-bg text-text-main focus:outline-none focus:ring-1 focus:ring-primary/50"}),(0,d.jsx)("input",{type:"number",min:"0",step:"0.01",value:a.cost??"",onChange:a=>j(c,"cost",a.target.value),placeholder:"Cost $",className:"w-full px-2 py-1 text-xs border border-black/10 dark:border-white/10 rounded bg-bg text-text-main focus:outline-none focus:ring-1 focus:ring-primary/50"})]}),(0,d.jsx)("button",{onClick:()=>{b(a=>({...a,windows:a.windows.filter((a,b)=>b!==c)}))},className:"p-1 text-red-500 hover:bg-red-500/10 rounded",title:"Remove window",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"delete"})})]},c))}),c&&m.length>0&&(0,d.jsxs)("div",{className:"flex items-center gap-2 p-2 rounded bg-bg-secondary/50",children:[(0,d.jsx)("select",{value:g,onChange:a=>h(Number(a.target.value)),className:"flex-1 px-2 py-1 text-xs border border-black/10 dark:border-white/10 rounded bg-bg text-text-main focus:outline-none focus:ring-1 focus:ring-primary/50",children:m.map(a=>(0,d.jsx)("option",{value:a.ms,children:a.label},a.ms))}),(0,d.jsx)(k.default,{size:"sm",onClick:()=>{let a=n.find(a=>a.ms===g);if(!a||i.some(a=>a.durationMs===g))return;let c={durationMs:g,label:a.label,inputTokens:"",cost:""};b(a=>({...a,windows:[...a.windows||[],c]})),f(!1)},children:"Add"}),(0,d.jsx)(k.default,{size:"sm",variant:"ghost",onClick:()=>f(!1),children:"Cancel"})]}),0===i.length&&!c&&(0,d.jsx)("p",{className:"text-xs text-text-muted italic",children:"No custom windows configured"})]})}function t({keyName:a,onResetUsage:b,resettingUsage:c}){let[f,g]=(0,e.useState)(!1),[h,i]=(0,e.useState)(o[0]),j=async()=>{await b(h.windowMs,h.label),g(!1)};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(k.default,{size:"sm",variant:"ghost",onClick:()=>g(!0),disabled:c,className:"ml-auto text-amber-600 dark:text-amber-400 hover:bg-amber-500/10 border-amber-500/30",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restart_alt"}),"Reset usage"]}),(0,d.jsx)(l.default,{isOpen:f,onClose:()=>!c&&g(!1),title:"Reset Usage",size:"sm",footer:(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(k.default,{variant:"ghost",onClick:()=>g(!1),disabled:c,children:"Cancel"}),(0,d.jsx)(k.default,{variant:"danger",onClick:j,loading:c,children:"Reset"})]}),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:["Clear usage counters for ",(0,d.jsx)("strong",{className:"text-text-main",children:a}),". This deletes the underlying request records for the selected window — limits will read zero until new requests come in."]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"block text-xs font-medium text-text-muted mb-1.5",children:"Time window to clear"}),(0,d.jsx)("div",{className:"flex flex-col gap-1",children:o.map(a=>(0,d.jsxs)("label",{className:`flex items-center gap-2.5 px-3 py-2 rounded-lg cursor-pointer border transition-colors ${h.label===a.label?"border-primary/40 bg-primary/5 text-text-main":"border-transparent hover:bg-black/5 dark:hover:bg-white/5 text-text-muted"}`,children:[(0,d.jsx)("input",{type:"radio",name:"reset-window",className:"accent-primary",checked:h.label===a.label,onChange:()=>i(a)}),(0,d.jsx)("span",{className:"text-sm",children:a.label})]},a.label))})]}),(0,d.jsxs)("div",{className:"flex items-start gap-2 px-3 py-2 rounded-lg bg-amber-500/8 border border-amber-500/20 text-amber-700 dark:text-amber-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[15px] mt-px shrink-0",children:"warning"}),(0,d.jsx)("p",{className:"text-xs",children:"This action cannot be undone. The deleted records will be logged in reset history."})]})]})})]})}function u({history:a}){let[b,c]=(0,e.useState)(!1),f=b?a:a.slice(0,3);return(0,d.jsxs)("div",{className:"mt-4 pt-3 border-t border-black/5 dark:border-white/5",children:[(0,d.jsxs)("button",{onClick:()=>c(a=>!a),className:"flex items-center gap-1 text-xs font-medium text-text-muted hover:text-text-main transition-colors mb-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"history"}),"Reset history (",a.length,")",(0,d.jsx)("span",{className:"material-symbols-outlined text-[12px] ml-auto",children:b?"expand_less":"expand_more"})]}),(0,d.jsxs)("div",{className:"space-y-1",children:[f.map(a=>(0,d.jsxs)("div",{className:"flex items-center justify-between text-xs py-1.5 px-2 rounded bg-black/3 dark:bg-white/3",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[12px] text-amber-500 shrink-0",children:"restart_alt"}),(0,d.jsx)("span",{className:"text-text-muted truncate",children:a.window_label})]}),(0,d.jsxs)("div",{className:"flex items-center gap-3 shrink-0 ml-2",children:[a.tokens_cleared>0&&(0,d.jsxs)("span",{className:"text-text-muted font-mono",children:[a.tokens_cleared>=1e3?`${(a.tokens_cleared/1e3).toFixed(0)}k`:a.tokens_cleared," tok"]}),a.cost_cleared>0&&(0,d.jsxs)("span",{className:"text-text-muted font-mono",children:["$",a.cost_cleared.toFixed(4)]}),(0,d.jsx)("span",{className:"text-text-muted/60",children:new Date(a.reset_at).toLocaleDateString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})})]})]},a.id)),!b&&a.length>3&&(0,d.jsxs)("button",{onClick:()=>c(!0),className:"text-xs text-primary hover:underline mt-1",children:["Show ",a.length-3," more…"]})]})]})}function v(a){return null==a?"—":a>=1e6?`${(a/1e6).toFixed(1)}M`:a>=1e3?`${(a/1e3).toFixed(0)}k`:String(Math.floor(a))}function w({limits:a,usageData:b}){if(!a)return null;let c=b?.usage||null,e=b?.windowUsage||{},f=[a.inputTokens5h&&{label:"5h tok",cur:c?.inputTokens5h,max:a.inputTokens5h},a.inputTokens24h&&{label:"24h tok",cur:c?.inputTokens24h,max:a.inputTokens24h},a.cost5h&&{label:"5h $",cur:c?.cost5h,max:a.cost5h,isCost:!0},a.cost24h&&{label:"24h $",cur:c?.cost24h,max:a.cost24h,isCost:!0}].filter(Boolean);if(a.windows&&Array.isArray(a.windows))for(let b of a.windows){if(!b.durationMs)continue;let a=`tokens_${b.durationMs}`,c=`cost_${b.durationMs}`,d=function(a){let b=Math.floor(a/6e4),c=Math.floor(a/36e5),d=Math.floor(a/864e5);return d>0?`${d}d`:c>0?`${c}h`:`${b}m`}(b.durationMs);b.inputTokens&&f.push({label:`${d} tok`,cur:e[a],max:b.inputTokens}),b.cost&&f.push({label:`${d} $`,cur:e[c],max:b.cost,isCost:!0})}return 0===f.length?null:(0,d.jsx)("div",{className:"flex items-center gap-1 mt-1 flex-wrap",children:f.map(({label:a,cur:b,max:c,isCost:e})=>{let f=null!=b?Math.min(100,b/c*100):null,g=e?`$${null!=b?b.toFixed(2):"—"}/$${c.toFixed(2)}`:`${null!=b?v(b):"—"}/${v(c)}`;return(0,d.jsxs)("span",{className:`text-[10px] px-1.5 py-px rounded font-mono whitespace-nowrap ${null==f?"bg-black/5 dark:bg-white/5 text-text-muted":f>=100?"bg-red-500/15 text-red-500":f>=80?"bg-amber-500/15 text-amber-500":"bg-emerald-500/10 text-emerald-600 dark:text-emerald-400"}`,children:[a," ",g]},a)})})}function x({apiKey:a,visibleKeys:b,toggleKeyVisibility:c,copied:f,copy:g,handleToggleKey:h,handleDeleteKey:i,handleRenameKey:k,editingLimits:l,keyUsage:m,limitDraft:n,setLimitDraft:o,savingLimits:p,handleOpenLimits:q,handleSaveLimits:s,setEditingLimits:t,resetHistory:u,resettingUsage:v,handleResetUsage:y}){var z;let A=b.has(a.id),B=!1===a.isActive,[C,D]=(0,e.useState)(!1),[E,F]=(0,e.useState)(""),G=(0,e.useRef)(null),H=()=>{let b=E.trim();b&&b!==a.name&&k(a.id,b),D(!1)},I=()=>D(!1);return(0,d.jsxs)("div",{className:"flex flex-col border-b border-black/5 dark:border-white/5 last:border-b-0",children:[(0,d.jsxs)("div",{className:`group flex items-center justify-between py-3 ${B?"opacity-60":""}`,children:[(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[C?(0,d.jsxs)("div",{className:"flex items-center gap-1",children:[(0,d.jsx)("input",{ref:G,value:E,onChange:a=>F(a.target.value),onKeyDown:a=>{"Enter"===a.key&&H(),"Escape"===a.key&&I()},className:"text-sm font-medium bg-transparent border-b border-primary outline-none w-40 py-0"}),(0,d.jsx)("button",{onClick:H,className:"p-1 text-primary hover:bg-primary/10 rounded",title:"Save",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"check"})}),(0,d.jsx)("button",{onClick:I,className:"p-1 text-text-muted hover:bg-black/5 dark:hover:bg-white/5 rounded",title:"Cancel",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]}):(0,d.jsxs)("div",{className:"flex items-center gap-1",children:[(0,d.jsx)("p",{className:"text-sm font-medium",children:a.name}),(0,d.jsx)("button",{onClick:()=>{F(a.name),D(!0)},className:"p-1 text-text-muted hover:text-primary opacity-0 group-hover:opacity-100 transition-all rounded hover:bg-black/5 dark:hover:bg-white/5",title:"Rename key",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[13px]",children:"edit"})})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2 mt-1",children:[(0,d.jsx)("code",{className:"text-xs text-text-muted font-mono",children:A?a.key:(z=a.key)?`****${z.slice(-4)}`:""}),(0,d.jsx)("button",{onClick:()=>c(a.id),className:"p-1 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary opacity-0 group-hover:opacity-100 transition-all",title:A?"Hide key":"Show key",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:A?"visibility_off":"visibility"})}),(0,d.jsx)("button",{onClick:()=>g(a.key,a.id),className:"p-1 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary opacity-0 group-hover:opacity-100 transition-all",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:f===a.id?"check":"content_copy"})})]}),(0,d.jsxs)("p",{className:"text-xs text-text-muted mt-1",children:["Created ",new Date(a.createdAt).toLocaleDateString()]}),B&&(0,d.jsx)("p",{className:"text-xs text-orange-500 mt-1",children:"Paused"}),(0,d.jsx)(w,{limits:a.limits,usageData:m[a.id]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(j.default,{size:"sm",checked:a.isActive??!0,onChange:b=>{a.isActive&&!b?confirm(`Pause API key "${a.name}"?
1
+ exports.id=7994,exports.ids=[7994],exports.modules={51747:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/cuongquach/projects/vibe/n9router/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.js\" 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.")},"/Users/cuongquach/projects/vibe/n9router/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.js","default")},54603:(a,b,c)=>{"use strict";c.d(b,{Xj:()=>q});var d=c(19713),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(77598),j=c.n(i),k=c(49120);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="9r-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)}},55281:(a,b,c)=>{Promise.resolve().then(c.bind(c,51747))},60409:(a,b,c)=>{"use strict";c.d(b,{default:()=>z});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(50412),i=c(50377),j=c(95514),k=c(99070),l=c(95145);let m=[{field:"inputTokens5h",label:"Tokens / 5h",placeholder:"e.g. 500000"},{field:"inputTokens24h",label:"Tokens / 24h",placeholder:"e.g. 2000000"},{field:"cost5h",label:"Cost / 5h ($)",placeholder:"e.g. 1.00",isCost:!0},{field:"cost24h",label:"Cost / 24h ($)",placeholder:"e.g. 5.00",isCost:!0}],n=[{label:"15 minutes",ms:9e5},{label:"1 hour",ms:36e5},{label:"6 hours",ms:216e5},{label:"12 hours",ms:432e5},{label:"24 hours",ms:864e5},{label:"7 days",ms:6048e5},{label:"30 days",ms:2592e6}],o=[{label:"All recorded time",windowMs:null},{label:"Last 5 hours",windowMs:18e6},{label:"Last 24 hours",windowMs:864e5},{label:"Last 7 days",windowMs:6048e5},{label:"Last 30 days",windowMs:2592e6}];function p({label:a,value:b,limit:c,isCost:e}){if(!c)return null;let f=Math.min(100,b/c*100),g=f>=100?"bg-red-500":f>=80?"bg-amber-500":"bg-primary",h=e?`$${b.toFixed(4)} / $${c.toFixed(2)} (${f.toFixed(0)}%)`:`${b.toLocaleString()} / ${c.toLocaleString()} (${f.toFixed(0)}%)`;return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex justify-between text-xs",children:[(0,d.jsx)("span",{className:"text-text-muted",children:a}),(0,d.jsx)("span",{className:"text-text-muted",children:h})]}),(0,d.jsx)("div",{className:"h-1.5 rounded-full bg-black/5 dark:bg-white/5 overflow-hidden",children:(0,d.jsx)("div",{className:`h-full rounded-full ${g}`,style:{width:`${f}%`}})})]})}function q(a){let b=Math.floor(a/6e4),c=Math.floor(a/36e5),d=Math.floor(a/864e5);return d>0?`${d}d`:c>0?`${c}h`:`${b}m`}function r({apiKey:a,usageData:b,limitDraft:c,setLimitDraft:e,saving:f,onSave:g,onCancel:h,onResetUsage:i,resetHistory:j,resettingUsage:l}){let n=b?.usage||{},o=a.limits;return(0,d.jsxs)("div",{className:"mb-3 rounded-lg border border-black/8 dark:border-white/8 bg-bg-subtle p-4",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-text-muted uppercase tracking-wide",children:"Usage Limits"}),(0,d.jsx)("span",{className:"text-xs text-text-muted",children:"Leave blank = unlimited"})]}),b&&o&&(0,d.jsxs)("div",{className:"mb-4 space-y-2",children:[["5h","24h"].map(a=>{let b="5h"===a?n.inputTokens5h||0:n.inputTokens24h||0,c="5h"===a?n.cost5h||0:n.cost24h||0,e="5h"===a?o.inputTokens5h:o.inputTokens24h,f="5h"===a?o.cost5h:o.cost24h;return e||f?(0,d.jsxs)("div",{className:"space-y-1",children:[(0,d.jsx)(p,{label:`${a} tokens`,value:b,limit:e}),(0,d.jsx)(p,{label:`${a} cost`,value:c,limit:f,isCost:!0})]},a):null}),o.windows&&o.windows.map((a,c)=>{let e=`tokens_${a.durationMs}`,f=`cost_${a.durationMs}`,g=b.windowUsage?.[e]||0,h=b.windowUsage?.[f]||0;if(!(a.inputTokens||a.cost))return null;let i=a.label||q(a.durationMs);return(0,d.jsxs)("div",{className:"space-y-1",children:[(0,d.jsx)(p,{label:`${i} tokens`,value:g,limit:a.inputTokens}),(0,d.jsx)(p,{label:`${i} cost`,value:h,limit:a.cost,isCost:!0})]},`custom-${c}`)})]}),(0,d.jsx)("div",{className:"grid grid-cols-2 gap-3 mb-3",children:m.map(({field:a,label:b,placeholder:f,isCost:g})=>(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"block text-xs text-text-muted mb-1",children:b}),(0,d.jsx)("input",{type:"number",min:"0",step:g?"0.01":"1",value:c[a]??"",onChange:b=>e(c=>({...c,[a]:b.target.value})),placeholder:f,className:"w-full px-2 py-1.5 text-xs border border-black/10 dark:border-white/10 rounded-lg bg-bg text-text-main focus:outline-none focus:ring-1 focus:ring-primary/50"})]},a))}),(0,d.jsx)(s,{limitDraft:c,setLimitDraft:e}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(k.default,{size:"sm",onClick:g,disabled:f,children:f?"Saving…":"Save limits"}),(0,d.jsx)(k.default,{size:"sm",variant:"ghost",onClick:h,children:"Cancel"}),i&&(0,d.jsx)(t,{keyName:a.name,onResetUsage:i,resettingUsage:l})]}),j&&j.length>0&&(0,d.jsx)(u,{history:j})]})}function s({limitDraft:a,setLimitDraft:b}){let[c,f]=(0,e.useState)(!1),[g,h]=(0,e.useState)(n[1].ms),i=a.windows||[],j=(a,c,d)=>{b(b=>({...b,windows:b.windows.map((b,e)=>e===a?{...b,[c]:d}:b)}))},l=new Set(i.map(a=>a.durationMs)),m=n.filter(a=>!l.has(a.ms));return(0,d.jsxs)("div",{className:"mb-4 border-t border-black/5 dark:border-white/5 pt-3",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,d.jsx)("span",{className:"text-xs font-medium text-text-muted",children:"Custom Time Windows"}),!c&&m.length>0&&(0,d.jsxs)("button",{onClick:()=>f(!0),className:"text-xs text-primary hover:text-primary/80 flex items-center gap-1",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"add"}),"Add window"]})]}),i.length>0&&(0,d.jsx)("div",{className:"space-y-2 mb-3",children:i.map((a,c)=>(0,d.jsxs)("div",{className:"flex items-center gap-2 p-2 rounded bg-bg-secondary/50",children:[(0,d.jsx)("span",{className:"text-xs font-medium w-20 shrink-0",children:a.label||q(a.durationMs)}),(0,d.jsxs)("div",{className:"flex-1 grid grid-cols-2 gap-2",children:[(0,d.jsx)("input",{type:"number",min:"0",step:"1",value:a.inputTokens??"",onChange:a=>j(c,"inputTokens",a.target.value),placeholder:"Tokens",className:"w-full px-2 py-1 text-xs border border-black/10 dark:border-white/10 rounded bg-bg text-text-main focus:outline-none focus:ring-1 focus:ring-primary/50"}),(0,d.jsx)("input",{type:"number",min:"0",step:"0.01",value:a.cost??"",onChange:a=>j(c,"cost",a.target.value),placeholder:"Cost $",className:"w-full px-2 py-1 text-xs border border-black/10 dark:border-white/10 rounded bg-bg text-text-main focus:outline-none focus:ring-1 focus:ring-primary/50"})]}),(0,d.jsx)("button",{onClick:()=>{b(a=>({...a,windows:a.windows.filter((a,b)=>b!==c)}))},className:"p-1 text-red-500 hover:bg-red-500/10 rounded",title:"Remove window",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"delete"})})]},c))}),c&&m.length>0&&(0,d.jsxs)("div",{className:"flex items-center gap-2 p-2 rounded bg-bg-secondary/50",children:[(0,d.jsx)("select",{value:g,onChange:a=>h(Number(a.target.value)),className:"flex-1 px-2 py-1 text-xs border border-black/10 dark:border-white/10 rounded bg-bg text-text-main focus:outline-none focus:ring-1 focus:ring-primary/50",children:m.map(a=>(0,d.jsx)("option",{value:a.ms,children:a.label},a.ms))}),(0,d.jsx)(k.default,{size:"sm",onClick:()=>{let a=n.find(a=>a.ms===g);if(!a||i.some(a=>a.durationMs===g))return;let c={durationMs:g,label:a.label,inputTokens:"",cost:""};b(a=>({...a,windows:[...a.windows||[],c]})),f(!1)},children:"Add"}),(0,d.jsx)(k.default,{size:"sm",variant:"ghost",onClick:()=>f(!1),children:"Cancel"})]}),0===i.length&&!c&&(0,d.jsx)("p",{className:"text-xs text-text-muted italic",children:"No custom windows configured"})]})}function t({keyName:a,onResetUsage:b,resettingUsage:c}){let[f,g]=(0,e.useState)(!1),[h,i]=(0,e.useState)(o[0]),j=async()=>{await b(h.windowMs,h.label),g(!1)};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(k.default,{size:"sm",variant:"ghost",onClick:()=>g(!0),disabled:c,className:"ml-auto text-amber-600 dark:text-amber-400 hover:bg-amber-500/10 border-amber-500/30",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restart_alt"}),"Reset usage"]}),(0,d.jsx)(l.default,{isOpen:f,onClose:()=>!c&&g(!1),title:"Reset Usage",size:"sm",footer:(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(k.default,{variant:"ghost",onClick:()=>g(!1),disabled:c,children:"Cancel"}),(0,d.jsx)(k.default,{variant:"danger",onClick:j,loading:c,children:"Reset"})]}),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:["Clear usage counters for ",(0,d.jsx)("strong",{className:"text-text-main",children:a}),". This deletes the underlying request records for the selected window — limits will read zero until new requests come in."]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"block text-xs font-medium text-text-muted mb-1.5",children:"Time window to clear"}),(0,d.jsx)("div",{className:"flex flex-col gap-1",children:o.map(a=>(0,d.jsxs)("label",{className:`flex items-center gap-2.5 px-3 py-2 rounded-lg cursor-pointer border transition-colors ${h.label===a.label?"border-primary/40 bg-primary/5 text-text-main":"border-transparent hover:bg-black/5 dark:hover:bg-white/5 text-text-muted"}`,children:[(0,d.jsx)("input",{type:"radio",name:"reset-window",className:"accent-primary",checked:h.label===a.label,onChange:()=>i(a)}),(0,d.jsx)("span",{className:"text-sm",children:a.label})]},a.label))})]}),(0,d.jsxs)("div",{className:"flex items-start gap-2 px-3 py-2 rounded-lg bg-amber-500/8 border border-amber-500/20 text-amber-700 dark:text-amber-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[15px] mt-px shrink-0",children:"warning"}),(0,d.jsx)("p",{className:"text-xs",children:"This action cannot be undone. The deleted records will be logged in reset history."})]})]})})]})}function u({history:a}){let[b,c]=(0,e.useState)(!1),f=b?a:a.slice(0,3);return(0,d.jsxs)("div",{className:"mt-4 pt-3 border-t border-black/5 dark:border-white/5",children:[(0,d.jsxs)("button",{onClick:()=>c(a=>!a),className:"flex items-center gap-1 text-xs font-medium text-text-muted hover:text-text-main transition-colors mb-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"history"}),"Reset history (",a.length,")",(0,d.jsx)("span",{className:"material-symbols-outlined text-[12px] ml-auto",children:b?"expand_less":"expand_more"})]}),(0,d.jsxs)("div",{className:"space-y-1",children:[f.map(a=>(0,d.jsxs)("div",{className:"flex items-center justify-between text-xs py-1.5 px-2 rounded bg-black/3 dark:bg-white/3",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[12px] text-amber-500 shrink-0",children:"restart_alt"}),(0,d.jsx)("span",{className:"text-text-muted truncate",children:a.window_label})]}),(0,d.jsxs)("div",{className:"flex items-center gap-3 shrink-0 ml-2",children:[a.tokens_cleared>0&&(0,d.jsxs)("span",{className:"text-text-muted font-mono",children:[a.tokens_cleared>=1e3?`${(a.tokens_cleared/1e3).toFixed(0)}k`:a.tokens_cleared," tok"]}),a.cost_cleared>0&&(0,d.jsxs)("span",{className:"text-text-muted font-mono",children:["$",a.cost_cleared.toFixed(4)]}),(0,d.jsx)("span",{className:"text-text-muted/60",children:new Date(a.reset_at).toLocaleDateString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})})]})]},a.id)),!b&&a.length>3&&(0,d.jsxs)("button",{onClick:()=>c(!0),className:"text-xs text-primary hover:underline mt-1",children:["Show ",a.length-3," more…"]})]})]})}function v(a){return null==a?"—":a>=1e6?`${(a/1e6).toFixed(1)}M`:a>=1e3?`${(a/1e3).toFixed(0)}k`:String(Math.floor(a))}function w({limits:a,usageData:b}){if(!a)return null;let c=b?.usage||null,e=b?.windowUsage||{},f=[a.inputTokens5h&&{label:"5h tok",cur:c?.inputTokens5h,max:a.inputTokens5h},a.inputTokens24h&&{label:"24h tok",cur:c?.inputTokens24h,max:a.inputTokens24h},a.cost5h&&{label:"5h $",cur:c?.cost5h,max:a.cost5h,isCost:!0},a.cost24h&&{label:"24h $",cur:c?.cost24h,max:a.cost24h,isCost:!0}].filter(Boolean);if(a.windows&&Array.isArray(a.windows))for(let b of a.windows){if(!b.durationMs)continue;let a=`tokens_${b.durationMs}`,c=`cost_${b.durationMs}`,d=function(a){let b=Math.floor(a/6e4),c=Math.floor(a/36e5),d=Math.floor(a/864e5);return d>0?`${d}d`:c>0?`${c}h`:`${b}m`}(b.durationMs);b.inputTokens&&f.push({label:`${d} tok`,cur:e[a],max:b.inputTokens}),b.cost&&f.push({label:`${d} $`,cur:e[c],max:b.cost,isCost:!0})}return 0===f.length?null:(0,d.jsx)("div",{className:"flex items-center gap-1 mt-1 flex-wrap",children:f.map(({label:a,cur:b,max:c,isCost:e})=>{let f=null!=b?Math.min(100,b/c*100):null,g=e?`$${null!=b?b.toFixed(2):"—"}/$${c.toFixed(2)}`:`${null!=b?v(b):"—"}/${v(c)}`;return(0,d.jsxs)("span",{className:`text-[10px] px-1.5 py-px rounded font-mono whitespace-nowrap ${null==f?"bg-black/5 dark:bg-white/5 text-text-muted":f>=100?"bg-red-500/15 text-red-500":f>=80?"bg-amber-500/15 text-amber-500":"bg-emerald-500/10 text-emerald-600 dark:text-emerald-400"}`,children:[a," ",g]},a)})})}function x({apiKey:a,visibleKeys:b,toggleKeyVisibility:c,copied:f,copy:g,handleToggleKey:h,handleDeleteKey:i,handleRenameKey:k,editingLimits:l,keyUsage:m,limitDraft:n,setLimitDraft:o,savingLimits:p,handleOpenLimits:q,handleSaveLimits:s,setEditingLimits:t,resetHistory:u,resettingUsage:v,handleResetUsage:y}){var z;let A=b.has(a.id),B=!1===a.isActive,[C,D]=(0,e.useState)(!1),[E,F]=(0,e.useState)(""),G=(0,e.useRef)(null),H=()=>{let b=E.trim();b&&b!==a.name&&k(a.id,b),D(!1)},I=()=>D(!1);return(0,d.jsxs)("div",{className:"flex flex-col border-b border-black/5 dark:border-white/5 last:border-b-0",children:[(0,d.jsxs)("div",{className:`group flex items-center justify-between py-3 ${B?"opacity-60":""}`,children:[(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[C?(0,d.jsxs)("div",{className:"flex items-center gap-1",children:[(0,d.jsx)("input",{ref:G,value:E,onChange:a=>F(a.target.value),onKeyDown:a=>{"Enter"===a.key&&H(),"Escape"===a.key&&I()},className:"text-sm font-medium bg-transparent border-b border-primary outline-none w-40 py-0"}),(0,d.jsx)("button",{onClick:H,className:"p-1 text-primary hover:bg-primary/10 rounded",title:"Save",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"check"})}),(0,d.jsx)("button",{onClick:I,className:"p-1 text-text-muted hover:bg-black/5 dark:hover:bg-white/5 rounded",title:"Cancel",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]}):(0,d.jsxs)("div",{className:"flex items-center gap-1",children:[(0,d.jsx)("p",{className:"text-sm font-medium",children:a.name}),(0,d.jsx)("button",{onClick:()=>{F(a.name),D(!0)},className:"p-1 text-text-muted hover:text-primary opacity-0 group-hover:opacity-100 transition-all rounded hover:bg-black/5 dark:hover:bg-white/5",title:"Rename key",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[13px]",children:"edit"})})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2 mt-1",children:[(0,d.jsx)("code",{className:"text-xs text-text-muted font-mono",children:A?a.key:(z=a.key)?`****${z.slice(-4)}`:""}),(0,d.jsx)("button",{onClick:()=>c(a.id),className:"p-1 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary opacity-0 group-hover:opacity-100 transition-all",title:A?"Hide key":"Show key",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:A?"visibility_off":"visibility"})}),(0,d.jsx)("button",{onClick:()=>g(a.key,a.id),className:"p-1 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary opacity-0 group-hover:opacity-100 transition-all",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:f===a.id?"check":"content_copy"})})]}),(0,d.jsxs)("p",{className:"text-xs text-text-muted mt-1",children:["Created ",new Date(a.createdAt).toLocaleDateString()]}),B&&(0,d.jsx)("p",{className:"text-xs text-orange-500 mt-1",children:"Paused"}),(0,d.jsx)(w,{limits:a.limits,usageData:m[a.id]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(j.default,{size:"sm",checked:a.isActive??!0,onChange:b=>{a.isActive&&!b?confirm(`Pause API key "${a.name}"?
2
2
 
3
3
  This key will stop working immediately but can be resumed later.`)&&h(a.id,b):h(a.id,b)},title:a.isActive?"Pause key":"Resume key"}),(0,d.jsx)("button",{onClick:()=>q(a),className:`p-2 rounded transition-all ${l===a.id?"bg-primary/10 text-primary":"hover:bg-black/5 dark:hover:bg-white/5 text-text-muted hover:text-primary opacity-0 group-hover:opacity-100"}`,title:"Configure usage limits",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"tune"})}),(0,d.jsx)("button",{onClick:()=>i(a.id),className:"p-2 hover:bg-red-500/10 rounded text-red-500 opacity-0 group-hover:opacity-100 transition-all",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"})})]})]}),l===a.id&&(0,d.jsx)(r,{apiKey:a,usageData:m[a.id],limitDraft:n,setLimitDraft:o,saving:p,onSave:()=>s(a.id),onCancel:()=>t(null),onResetUsage:(b,c)=>y(a.id,b,c),resetHistory:u?.[a.id],resettingUsage:v})]})}let y=[{icon:"public",title:"Access Anywhere",desc:"Use your API from any network"},{icon:"group",title:"Share Endpoint",desc:"Share URL with team members"},{icon:"code",title:"Use in Cursor/Cline",desc:"Connect AI tools remotely"},{icon:"lock",title:"Encrypted",desc:"End-to-end TLS via Cloudflare"}];function z({machineId:a}){let[b,c]=(0,e.useState)([]),[f,g]=(0,e.useState)(!0),[j,k]=(0,e.useState)(!1),[l,m]=(0,e.useState)(""),[n,o]=(0,e.useState)(null),[p,q]=(0,e.useState)(null),[r,s]=(0,e.useState)(!1),[t,u]=(0,e.useState)(!0),[v,w]=(0,e.useState)(!0),[E,F]=(0,e.useState)(!1),[G,H]=(0,e.useState)(!0),[I,J]=(0,e.useState)(!1),[K,L]=(0,e.useState)(!1),[M,N]=(0,e.useState)(""),[O,P]=(0,e.useState)(""),[Q,R]=(0,e.useState)(!1),[S,T]=(0,e.useState)(""),[U,V]=(0,e.useState)(null),[W,X]=(0,e.useState)(!1),[Y,Z]=(0,e.useState)(!1),[$,_]=(0,e.useState)(!1),[aa,ab]=(0,e.useState)(!1),[ac,ad]=(0,e.useState)(""),[ae,af]=(0,e.useState)(!1),[ag,ah]=(0,e.useState)(""),[ai,aj]=(0,e.useState)(null),[ak,al]=(0,e.useState)(""),[am,an]=(0,e.useState)(""),[ao,ap]=(0,e.useState)(null),[aq,ar]=(0,e.useState)(!1),[as,at]=(0,e.useState)([]),[au,av]=(0,e.useState)(""),[aw,ax]=(0,e.useState)(!1),[ay,az]=(0,e.useState)(!1),[aA,aB]=(0,e.useState)(!1),aC=(0,e.useRef)(null);(0,e.useRef)(0),(0,e.useRef)(0),(0,e.useRef)(!1),(0,e.useRef)(!1),(0,e.useRef)(!1),(0,e.useRef)(!1);let[aD,aE]=(0,e.useState)(!1),[aF,aG]=(0,e.useState)(!1),[aH,aI]=(0,e.useState)(new Set),[aJ,aK]=(0,e.useState)(!1),{copied:aL,copy:aM}=(0,i.C)(),aN=function(a){let[b,c]=(0,e.useState)(null),[d,f]=(0,e.useState)({}),[g,h]=(0,e.useState)({}),[i,j]=(0,e.useState)(!1),[k,l]=(0,e.useState)({}),[m,n]=(0,e.useState)(!1),o=async a=>{try{let b=await fetch(`/api/keys/${a}/usage`);if(b.ok){let c=await b.json();h(b=>({...b,[a]:c}))}}catch{}},p=async b=>{j(!0);try{let e=(a,b)=>{if(!a)return null;let c=b?parseFloat(a):Math.floor(parseFloat(a));return isNaN(c)||c<=0?null:c},f={inputTokens5h:e(d.inputTokens5h,!1),inputTokens24h:e(d.inputTokens24h,!1),cost5h:e(d.cost5h,!0),cost24h:e(d.cost24h,!0)};d.windows&&d.windows.length>0&&(f.windows=d.windows.map(a=>({durationMs:a.durationMs,label:a.label,inputTokens:e(a.inputTokens,!1),cost:e(a.cost,!0)})).filter(a=>a.inputTokens||a.cost));let g=await fetch(`/api/keys/${b}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({limits:f})});if(g.ok){let d=await g.json();a(a=>a.map(a=>a.id===b?d.key:a)),c(null),o(b)}}catch{}j(!1)},q=async a=>{try{let b=await fetch(`/api/keys/${a}/reset-usage`);if(b.ok){let c=await b.json();l(b=>({...b,[a]:c.history||[]}))}}catch{}},r=async(a,b,c)=>{n(!0);try{(await fetch(`/api/keys/${a}/reset-usage`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({windowMs:b,windowLabel:c})})).ok&&(await o(a),await q(a))}catch{}n(!1)};return{editingLimits:b,setEditingLimits:c,limitDraft:d,setLimitDraft:f,keyUsage:g,savingLimits:i,handleOpenLimits:a=>{if(b===a.id)return void c(null);let d=a.limits||{};f({inputTokens5h:d.inputTokens5h?String(d.inputTokens5h):"",inputTokens24h:d.inputTokens24h?String(d.inputTokens24h):"",cost5h:d.cost5h?String(d.cost5h):"",cost24h:d.cost24h?String(d.cost24h):"",windows:d.windows||[]}),c(a.id),o(a.id),q(a.id)},handleSaveLimits:p,fetchKeyUsage:o,resetHistory:k,resettingUsage:m,fetchResetHistory:q,handleResetUsage:r}}(c),aO=!t||!v,aP=t?"Change the default dashboard password before activating the tunnel.":'Enable "Require login" and set a custom password before activating the tunnel.';(0,e.useCallback)((a,b,c,d,e,f)=>{b.current?(c.current=0,d(!0),e.current||(e.current=!0,f(!0))):(c.current+=1,c.current>=5&&d(!1))},[]);let aQ=async a=>{try{(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({tunnelDashboardAccess:a})})).ok&&F(a)}catch(a){console.log("Error updating tunnelDashboardAccess:",a)}},aR=async a=>{try{(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({requireApiKey:a})})).ok&&s(a)}catch(a){console.log("Error updating requireApiKey:",a)}},aS=async()=>{try{let a=await fetch("/api/keys"),b=await a.json();a.ok&&c(b.keys||[])}catch(a){console.log("Error fetching data:",a)}finally{g(!1)}},aT=async(...a)=>{R(!0),T("Waiting for tunnel ready...");let b=a.filter(Boolean).map(a=>`${a}/api/health`),c=Date.now();for(;Date.now()-c<3e5;){if(await new Promise(a=>setTimeout(a,2e3)),await Promise.any(b.map(async a=>{if((await fetch(a,{mode:"cors",cache:"no-store"})).ok)return!0;throw Error("not ready")})).catch(()=>!1))return J(!0),R(!1),T(""),!0;if((Date.now()-c)%1e4<2e3)try{let a=await fetch("/api/tunnel/status");if(a.ok){let b=await a.json();if(!b.tunnel?.enabled)return V({type:"error",message:"Tunnel process stopped unexpectedly."}),R(!1),T(""),!1}}catch{}}return V({type:"error",message:"Tunnel created but not reachable. Please try again."}),R(!1),T(""),!1},aU=async()=>{X(!1),R(!0),V(null),T("Creating tunnel...");let a=!0;(async()=>{for(;a;){try{let b=await fetch("/api/tunnel/status");if(b.ok){let c=await b.json();c.download?.downloading?T(`Downloading cloudflared... ${c.download.progress}%`):a&&T("Creating tunnel...")}}catch{}await new Promise(a=>setTimeout(a,1e3))}})();try{let b=await fetch("/api/tunnel/enable",{method:"POST"});a=!1;let c=await b.json();if(!b.ok)return void V({type:"error",message:c.error||"Failed to enable tunnel"});let d=c.tunnelUrl;if(!d)return void V({type:"error",message:"No tunnel URL returned"});N(d),P(c.publicUrl||""),await aT(c.publicUrl,d)}catch(a){V({type:"error",message:a.message})}finally{a=!1,R(!1),T("")}},aV=async()=>{R(!0),V(null);try{let a=await fetch("/api/tunnel/disable",{method:"POST"}),b=await a.json();a.ok?(J(!1),N(""),Z(!1),V({type:"success",message:"Tunnel disabled"})):V({type:"error",message:b.error||"Failed to disable tunnel"})}catch(a){V({type:"error",message:a.message})}finally{R(!1)}},aW=async()=>{ap(null);try{let a=await fetch("/api/tunnel/tailscale-check");if(a.ok){let b=await a.json();return ap(b.installed),b}}catch{}return ap(!1),{installed:!1}},aX=async()=>{ar(!0),aj(null),at([]);try{let a=await fetch("/api/tunnel/tailscale-install",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sudoPassword:au})});av("");let b=a.body.getReader(),c=new TextDecoder,d="";for(;;){let{done:a,value:e}=await b.read();if(a)break;let f=(d+=c.decode(e,{stream:!0})).split("\n\n");for(let a of(d=f.pop()||"",f)){let b=a.split("\n"),c="progress",d=null;for(let a of b)if(a.startsWith("event: ")&&(c=a.slice(7).trim()),a.startsWith("data: "))try{d=JSON.parse(a.slice(6))}catch{}if(d)if("progress"===c)at(a=>[...a.slice(-50),d.message]);else if("done"===c){ap(!0),ar(!1),az(!1),a_();return}else"error"===c&&aj({type:"error",message:d.error||"Install failed"})}}}catch(a){aj({type:"error",message:a.message})}finally{ar(!1)}},aY=async a=>{ah("Waiting for Tailscale ready...");let b=`${a}/api/health`,c=Date.now();for(;Date.now()-c<3e5;){await new Promise(a=>setTimeout(a,2e3));try{let a=await fetch(b,{mode:"no-cors",cache:"no-store"});if(a.ok||"opaque"===a.type)return!0}catch{}}return!1},aZ=(a,b)=>{al(a),an(b)},a$=()=>{al(""),an("")},a_=async()=>{az(!1),ax(!0),af(!0),aj(null),ah("Connecting..."),a$();try{let a=await fetch("/api/tunnel/tailscale-enable",{method:"POST"}),b=await a.json();if(a.ok&&b.success){ad(b.tunnelUrl||"");let a=await aY(b.tunnelUrl);_(!0),aj(a?null:{type:"warning",message:"Connected but not reachable yet."});return}if(b.needsLogin&&b.authUrl){aZ(b.authUrl,"Open Login Page"),ah('Login required — click "Open Login Page" to continue');for(let a=0;a<40;a++){await new Promise(a=>setTimeout(a,3e3));try{let a=await fetch("/api/tunnel/tailscale-check");if(a.ok&&(await a.json()).loggedIn){a$(),ah("Starting funnel...");let a=await fetch("/api/tunnel/tailscale-enable",{method:"POST"}),b=await a.json();if(a.ok&&b.success){ad(b.tunnelUrl||"");let a=await aY(b.tunnelUrl);_(!0),aj(a?null:{type:"warning",message:"Connected but not reachable yet."})}else b.funnelNotEnabled&&b.enableUrl?await a0(b.enableUrl):aj({type:"error",message:b.error||"Failed to start funnel"});return}}catch{}}a$(),aj({type:"error",message:"Login timed out. Please try again."});return}if(b.funnelNotEnabled&&b.enableUrl)return void await a0(b.enableUrl);aj({type:"error",message:b.error||"Failed to connect"})}catch(a){aj({type:"error",message:a.message})}finally{af(!1),ax(!1),ah(""),a$()}},a0=async a=>{aZ(a,"Open Funnel Settings"),ah('Click "Open Funnel Settings" to enable Funnel...');for(let a=0;a<40;a++){await new Promise(a=>setTimeout(a,3e3));try{let a=await fetch("/api/tunnel/tailscale-enable",{method:"POST"}),b=await a.json();if(a.ok&&b.success){a$(),ad(b.tunnelUrl||"");let a=await aY(b.tunnelUrl);_(!0),aj(a?null:{type:"warning",message:"Connected but not reachable yet."});return}if(b.funnelNotEnabled)continue;if(b.error){a$(),aj({type:"error",message:b.error});return}}catch{}}a$(),aj({type:"error",message:"Timed out waiting for Funnel to be enabled."})},a1=async()=>{af(!0),aj(null);try{let a=await fetch("/api/tunnel/tailscale-disable",{method:"POST"}),b=await a.json();a.ok?(_(!1),ad(""),aB(!1),aj({type:"success",message:"Tailscale disabled"})):aj({type:"error",message:b.error||"Failed to disable Tailscale"})}catch(a){aj({type:"error",message:a.message})}finally{af(!1)}},a2=async()=>{aj(null),at([]);let a=await aW();a?.installed&&a?.hasCachedPassword?a_():az(!0)},a3=async()=>{if(l.trim())try{let a=await fetch("/api/keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:l})}),b=await a.json();a.ok&&(o(b.key),await aS(),m(""),k(!1))}catch(a){console.log("Error creating key:",a)}},a4=async a=>{q({title:"Delete API Key",message:"Delete this API key?",onConfirm:async()=>{q(null);try{(await fetch(`/api/keys/${a}`,{method:"DELETE"})).ok&&(c(b.filter(b=>b.id!==a)),aI(b=>{let c=new Set(b);return c.delete(a),c}))}catch(a){console.log("Error deleting key:",a)}}})},a5=async(a,b)=>{try{let d=await fetch(`/api/keys/${a}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:b})});if(d.ok){let b=await d.json();c(c=>c.map(c=>c.id===a?b.key:c))}}catch(a){console.log("Error renaming key:",a)}},a6=async(a,b)=>{try{(await fetch(`/api/keys/${a}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:b})})).ok&&c(c=>c.map(c=>c.id===a?{...c,isActive:b}:c))}catch(a){console.log("Error toggling key:",a)}},a7=a=>{aI(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})},[a8,a9]=(0,e.useState)("/v1");return f?(0,d.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,d.jsx)(h.Qv,{}),(0,d.jsx)(h.Qv,{})]}):(0,d.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,d.jsxs)(h.Zp,{children:[(0,d.jsxs)("h2",{className:"text-lg font-semibold mb-4 flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary",children:"api"}),"API Endpoint"]}),(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsx)(A,{label:"Local",url:a8,copyId:"local_url",copied:aL,onCopy:aM}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:`text-xs font-mono px-1.5 py-0.5 rounded shrink-0 min-w-[88px] text-center ${I?"bg-primary/10 text-primary":"bg-surface-2 text-text-muted"}`,children:"Tunnel"}),I&&!Q&&K?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(h.pd,{value:`${O||M}/v1`,readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,d.jsx)("button",{onClick:()=>aM(`${O||M}/v1`,"tunnel_url"),className:"p-2 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary transition-colors shrink-0",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"tunnel_url"===aL?"check":"content_copy"})}),(0,d.jsx)("button",{onClick:()=>Z(!0),className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:"Disable Tunnel",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):!I||Q||K?Q?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-border bg-input text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),S||"Creating tunnel..."]}),(0,d.jsx)("button",{onClick:()=>{R(!1),T("")},className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:"Stop",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):U?.type==="error"?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-red-300 dark:border-red-800 bg-red-500/5 text-sm text-red-600 dark:text-red-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:"error"}),U.message]}),(0,d.jsx)(h.$n,{size:"sm",icon:"cloud_upload",onClick:()=>X(!0),children:"Enable"})]}):G?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-border bg-input text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"Checking..."]}),(0,d.jsx)("button",{onClick:()=>H(!1),className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:"Stop",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):(0,d.jsx)(h.$n,{size:"sm",icon:"cloud_upload",onClick:()=>{aO?V({type:"error",message:`Security required: ${aP}`}):r?X(!0):V({type:"error",message:'Security required: Enable "Require API key" before activating the tunnel.'})},children:"Enable"}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-amber-300 dark:border-amber-800 bg-amber-500/5 text-sm text-amber-600 dark:text-amber-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),aD?"Tunnel reconnecting...":"Tunnel checking..."]}),(0,d.jsx)("button",{onClick:()=>Z(!0),className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:"Disable Tunnel",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:`text-xs font-mono px-1.5 py-0.5 rounded shrink-0 min-w-[88px] text-center ${$?"bg-primary/10 text-primary":"bg-surface-2 text-text-muted"}`,children:"Tailscale"}),$&&!ae&&aa?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(h.pd,{value:`${ac}/v1`,readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,d.jsx)("button",{onClick:()=>aM(`${ac}/v1`,"ts_url"),className:"p-2 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary transition-colors shrink-0",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"ts_url"===aL?"check":"content_copy"})}),(0,d.jsx)("button",{onClick:()=>aB(!0),className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:"Disable Tailscale",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):!$||ae||aa?ae||aw?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-border bg-input text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),ag||"Connecting..."]}),ak&&(0,d.jsx)(h.$n,{size:"sm",icon:"open_in_new",onClick:()=>window.open(ak,"tailscale_auth","width=600,height=700,noopener,noreferrer"),children:am||"Open"}),(0,d.jsx)("button",{onClick:()=>{af(!1),ax(!1),ah(""),a$()},className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:"Stop",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):ai?.type==="error"?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-red-300 dark:border-red-800 bg-red-500/5 text-sm text-red-600 dark:text-red-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:"error"}),ai.message]}),(0,d.jsx)(h.$n,{size:"sm",icon:"vpn_lock",onClick:a2,children:"Enable"})]}):(0,d.jsx)(h.$n,{size:"sm",icon:"vpn_lock",onClick:()=>{aO?aj({type:"error",message:`Security required: ${aP}`}):a2()},className:"bg-linear-to-r from-indigo-500 to-purple-500 hover:from-indigo-600 hover:to-purple-600 text-white!",children:"Enable"}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-amber-300 dark:border-amber-800 bg-amber-500/5 text-sm text-amber-600 dark:text-amber-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),aF?"Tailscale reconnecting...":"Tailscale checking..."]}),(0,d.jsx)("button",{onClick:()=>aB(!0),className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:"Disable Tailscale",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]})]})]}),aO&&!I&&!$&&(0,d.jsx)("div",{className:"mt-4",children:(0,d.jsx)(D,{message:aP,action:{label:"Open settings",href:"/dashboard/profile"}})}),(I||$)&&(0,d.jsxs)("div",{className:"mt-4 flex flex-col gap-2",children:[!r&&(0,d.jsx)(D,{message:"Require API key is disabled — your endpoint is publicly accessible without authentication.",action:{label:"Enable",href:"#require-api-key"}}),(!t||!v)&&(0,d.jsx)(D,{message:t?"Dashboard uses the default password — change it in Profile settings.":"Require login is disabled — anyone can access your dashboard via tunnel.",action:{label:t?"Change password":"Enable",href:"/dashboard/profile"}})]}),(I||$)&&(0,d.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex items-center gap-3",children:[(0,d.jsx)(h.lM,{checked:E,onChange:()=>aQ(!E)}),(0,d.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,d.jsx)("p",{className:"font-medium text-sm",children:"Allow dashboard access via tunnel"}),(0,d.jsx)(C,{text:"When enabled, the dashboard can be accessed through your tunnel or Tailscale URL (login still required). When disabled, dashboard access via tunnel/Tailscale is completely blocked."})]})]})]}),(0,d.jsxs)(h.Zp,{id:"require-api-key",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,d.jsxs)("h2",{className:"text-lg font-semibold flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary",children:"vpn_key"}),"API Keys"]}),(0,d.jsx)(h.$n,{icon:"add",onClick:()=>k(!0),children:"Create Key"})]}),(0,d.jsxs)("div",{className:"flex items-center justify-between pb-4 mb-4 border-b border-border",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"font-medium",children:"Require API key"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Requests without a valid key will be rejected"})]}),(0,d.jsx)(h.lM,{checked:r,onChange:()=>aR(!r)})]}),aJ&&!r&&(0,d.jsx)("div",{className:"mb-4 -mt-2",children:(0,d.jsx)(D,{message:"Endpoint is exposed without an API key."})}),0===b.length?(0,d.jsxs)("div",{className:"text-center py-12",children:[(0,d.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 rounded-full bg-primary/10 text-primary mb-4",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[32px]",children:"vpn_key"})}),(0,d.jsx)("p",{className:"text-text-main font-medium mb-1",children:"No API keys yet"}),(0,d.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Create your first API key to get started"}),(0,d.jsx)(h.$n,{icon:"add",onClick:()=>k(!0),children:"Create Key"})]}):(0,d.jsx)("div",{className:"flex flex-col",children:b.map(a=>(0,d.jsx)(x,{apiKey:a,visibleKeys:aH,toggleKeyVisibility:a7,copied:aL,copy:aM,handleToggleKey:a6,handleDeleteKey:a4,handleRenameKey:a5,...aN},a.id))})]}),(0,d.jsx)(h.aF,{isOpen:j,title:"Create API Key",onClose:()=>{k(!1),m("")},children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)(h.pd,{label:"Key Name",value:l,onChange:a=>m(a.target.value),placeholder:"Production Key"}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:a3,fullWidth:!0,disabled:!l.trim(),children:"Create"}),(0,d.jsx)(h.$n,{onClick:()=>{k(!1),m("")},variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}),(0,d.jsx)(h.aF,{isOpen:!!n,title:"API Key Created",onClose:()=>o(null),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{className:"bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 rounded-lg p-4",children:[(0,d.jsx)("p",{className:"text-sm text-yellow-800 dark:text-yellow-200 mb-2 font-medium",children:"Save this key now!"}),(0,d.jsx)("p",{className:"text-sm text-yellow-700 dark:text-yellow-300",children:"This is the only time you will see this key. Store it securely."})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.pd,{value:n||"",readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,d.jsx)(h.$n,{variant:"secondary",icon:"created_key"===aL?"check":"content_copy",onClick:()=>aM(n,"created_key"),children:"created_key"===aL?"Copied!":"Copy"})]}),(0,d.jsx)(h.$n,{onClick:()=>o(null),fullWidth:!0,children:"Done"})]})}),(0,d.jsx)(h.aF,{isOpen:W,title:"Enable Tunnel",onClose:()=>X(!1),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("div",{className:"bg-surface-2 border border-border-subtle rounded-lg p-4",children:(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary",children:"cloud_upload"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm text-text-main font-medium mb-1",children:"Cloudflare Tunnel"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Expose your local 9Router to the internet. No port forwarding, no static IP needed. Share endpoint URL with your team or use it in Cursor, Cline, and other AI tools from anywhere."})]})]})}),(0,d.jsx)("div",{className:"grid grid-cols-2 gap-3",children:y.map(a=>(0,d.jsxs)("div",{className:"flex flex-col items-center text-center p-3 rounded-lg bg-sidebar/50",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-xl text-primary mb-1",children:a.icon}),(0,d.jsx)("p",{className:"text-xs font-semibold",children:a.title}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:a.desc})]},a.title))}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:"Requires outbound port 7844 (TCP/UDP). Connection may take 10-30s."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:aU,fullWidth:!0,children:"Start Tunnel"}),(0,d.jsx)(h.$n,{onClick:()=>X(!1),variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}),(0,d.jsx)(h.aF,{isOpen:Y,title:"Disable Tunnel",onClose:()=>!Q&&Z(!1),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"The Cloudflare tunnel will be disconnected. Remote access via tunnel URL will stop working."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:aV,fullWidth:!0,disabled:Q,variant:"danger",children:Q?"Disabling...":"Disable"}),(0,d.jsx)(h.$n,{onClick:()=>Z(!1),variant:"ghost",fullWidth:!0,disabled:Q,children:"Cancel"})]})]})}),(0,d.jsx)(h.aF,{isOpen:ay,title:"Tailscale Funnel",onClose:()=>{aq||(az(!1),av(""),aj(null))},children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[null===ao&&(0,d.jsxs)("p",{className:"text-sm text-text-muted flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"Checking..."]}),!1===ao&&!aq&&(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Tailscale is not installed. Install it to enable Funnel."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:aX,fullWidth:!0,children:"Install Tailscale"}),(0,d.jsx)(h.$n,{onClick:()=>az(!1),variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),aq&&(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"Installing Tailscale..."]}),as.length>0&&(0,d.jsx)("div",{ref:aC,className:"bg-black/5 dark:bg-white/5 rounded p-2 max-h-40 overflow-y-auto font-mono text-xs text-text-muted",children:as.map((a,b)=>(0,d.jsx)("div",{children:a},b))})]}),!0===ao&&!aq&&(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-green-600 dark:text-green-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"check_circle"}),"Tailscale installed"]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:()=>a_(),fullWidth:!0,children:"Connect"}),(0,d.jsx)(h.$n,{onClick:()=>az(!1),variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),ai&&(0,d.jsx)(B,{status:ai})]})}),(0,d.jsx)(h.aF,{isOpen:aA,title:"Disable Tailscale",onClose:()=>!ae&&aB(!1),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Tailscale Funnel will be stopped. Remote access via Tailscale URL will stop working."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:a1,fullWidth:!0,disabled:ae,variant:"danger",children:ae?"Disabling...":"Disable"}),(0,d.jsx)(h.$n,{onClick:()=>aB(!1),variant:"ghost",fullWidth:!0,disabled:ae,children:"Cancel"})]})]})}),(0,d.jsx)(h.uo,{isOpen:!!p,onClose:()=>q(null),onConfirm:p?.onConfirm,title:p?.title||"Confirm",message:p?.message,variant:"danger"})]})}function A({label:a,url:b,copyId:c,copied:e,onCopy:f,badge:g,actions:i}){return(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:`text-xs font-mono px-1.5 py-0.5 rounded shrink-0 min-w-[88px] text-center ${"CF"===g||"TS"===g?"bg-primary/10 text-primary":"bg-surface-2 text-text-muted"}`,children:a}),(0,d.jsx)(h.pd,{value:b,readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,d.jsx)("button",{onClick:()=>f(b,c),className:"p-2 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary transition-colors shrink-0",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:e===c?"check":"content_copy"})}),i]})}function B({status:a,className:b=""}){return(0,d.jsx)("div",{className:`p-2 rounded text-sm ${b} ${"success"===a.type?"bg-green-500/10 text-green-600 dark:text-green-400":"warning"===a.type?"bg-yellow-500/10 text-yellow-600 dark:text-yellow-400":"info"===a.type?"bg-blue-500/10 text-blue-600 dark:text-blue-400":"bg-red-500/10 text-red-600 dark:text-red-400"}`,children:a.message.split(/(https?:\/\/[^\s]+)/g).map((a,b)=>/^https?:\/\//.test(a)?(0,d.jsx)("a",{href:a,target:"_blank",rel:"noreferrer",className:"underline font-medium",children:a},b):a)})}function C({text:a}){return(0,d.jsxs)("span",{className:"relative group inline-flex items-center",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] text-text-muted cursor-help",children:"help"}),(0,d.jsx)("span",{className:"pointer-events-none absolute left-5 top-1/2 -translate-y-1/2 z-50 w-64 rounded bg-gray-900 dark:bg-gray-800 text-white text-xs px-2.5 py-1.5 opacity-0 group-hover:opacity-100 transition-opacity shadow-lg",children:a})]})}function D({message:a,action:b}){return(0,d.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg bg-amber-500/10 border border-amber-500/20 text-amber-700 dark:text-amber-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px] shrink-0 mt-0.5",children:"warning"}),(0,d.jsx)("p",{className:"text-xs flex-1",children:a}),b&&(0,d.jsx)("a",{href:b.href,className:"text-xs font-medium underline shrink-0 hover:opacity-80",onClick:b.href.startsWith("#")?a=>{a.preventDefault(),document.getElementById(b.href.slice(1))?.scrollIntoView({behavior:"smooth"})}:void 0,children:b.label})]})}z.propTypes={machineId:g().string.isRequired}},76067:(a,b,c)=>{Promise.resolve().then(c.bind(c,60409))},87250:(a,b,c)=>{"use strict";c.d(b,{D:()=>e});var d=c(54603);async function e(){return await (0,d.Xj)()}}};