tokenhop 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (566) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +8 -8
  3. package/app/.next-cli-build/build-manifest.json +3 -3
  4. package/app/.next-cli-build/prerender-manifest.json +3 -3
  5. package/app/.next-cli-build/react-loadable-manifest.json +29 -29
  6. package/app/.next-cli-build/required-server-files.json +1 -0
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/[...missing]/page.js +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/[...missing]/page.js.nft.json +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/[...missing]/page_client-reference-manifest.js +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +1 -1
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page.js +1 -1
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page.js.nft.json +1 -1
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page_client-reference-manifest.js +1 -1
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +1 -1
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +1 -1
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +1 -1
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  55. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  56. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  57. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  58. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  59. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  60. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  61. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +1 -1
  62. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  63. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  64. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js +1 -1
  65. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  66. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  67. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +1 -1
  68. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  69. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  70. package/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/page.js +1 -1
  71. package/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/page.js.nft.json +1 -1
  72. package/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  73. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +1 -1
  74. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  75. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  76. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +1 -1
  77. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  78. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  79. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +1 -1
  80. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  81. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  82. package/app/.next-cli-build/server/app/(dashboard)/dashboard/ui-kit/page.js +1 -1
  83. package/app/.next-cli-build/server/app/(dashboard)/dashboard/ui-kit/page.js.nft.json +1 -1
  84. package/app/.next-cli-build/server/app/(dashboard)/dashboard/ui-kit/page_client-reference-manifest.js +1 -1
  85. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +1 -1
  86. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  87. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  88. package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  89. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  90. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  91. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  92. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  93. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  94. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  95. package/app/.next-cli-build/server/app/_not-found/page.js +1 -1
  96. package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  97. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  98. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  99. package/app/.next-cli-build/server/app/_not-found.rsc +5 -5
  100. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +5 -5
  101. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -5
  102. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  103. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  104. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  105. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  106. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  107. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  108. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js.nft.json +1 -1
  109. package/app/.next-cli-build/server/app/api/auth/saml/acs/route.js.nft.json +1 -1
  110. package/app/.next-cli-build/server/app/api/auth/saml/metadata/route.js.nft.json +1 -1
  111. package/app/.next-cli-build/server/app/api/auth/saml/start/route.js.nft.json +1 -1
  112. package/app/.next-cli-build/server/app/api/auth/saml/test/route.js.nft.json +1 -1
  113. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  114. package/app/.next-cli-build/server/app/api/cli-tool-settings/[toolId]/route.js.nft.json +1 -1
  115. package/app/.next-cli-build/server/app/api/cli-tool-settings/route.js.nft.json +1 -1
  116. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +4 -4
  117. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  118. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  119. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  120. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  121. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -2
  122. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  123. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +1 -1
  124. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  125. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +2 -2
  126. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  127. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +2 -2
  128. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  129. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
  130. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  131. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
  132. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  133. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  134. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  135. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +2 -2
  136. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  137. package/app/.next-cli-build/server/app/api/cli-tools/devin-settings/route.js +1 -1
  138. package/app/.next-cli-build/server/app/api/cli-tools/devin-settings/route.js.nft.json +1 -1
  139. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
  140. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  141. package/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js +2 -2
  142. package/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js.nft.json +1 -1
  143. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +2 -2
  144. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  145. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +3 -3
  146. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  147. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  148. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  149. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  150. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  151. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  152. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  153. package/app/.next-cli-build/server/app/api/combos/[id]/headroom/route.js +1 -1
  154. package/app/.next-cli-build/server/app/api/combos/[id]/headroom/route.js.nft.json +1 -1
  155. package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  156. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  157. package/app/.next-cli-build/server/app/api/combos/[id]/test/route.js +1 -1
  158. package/app/.next-cli-build/server/app/api/combos/[id]/test/route.js.nft.json +1 -1
  159. package/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  160. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  161. package/app/.next-cli-build/server/app/api/gateway/status/route.js.nft.json +1 -1
  162. package/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
  163. package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
  164. package/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
  165. package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  166. package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  167. package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  168. package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  169. package/app/.next-cli-build/server/app/api/home/live-routes/route.js.nft.json +1 -1
  170. package/app/.next-cli-build/server/app/api/home/quota/route.js +1 -1
  171. package/app/.next-cli-build/server/app/api/home/quota/route.js.nft.json +1 -1
  172. package/app/.next-cli-build/server/app/api/home/summary/route.js.nft.json +1 -1
  173. package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  174. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  175. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  176. package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  177. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  178. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  179. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  180. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  181. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  182. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  183. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  184. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
  185. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  186. package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  187. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  188. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  189. package/app/.next-cli-build/server/app/api/models/catalog-sync/route.js +1 -1
  190. package/app/.next-cli-build/server/app/api/models/catalog-sync/route.js.nft.json +1 -1
  191. package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  192. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  193. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  194. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  195. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  196. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  197. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  198. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  199. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  200. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js +1 -1
  201. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
  202. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  203. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  204. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  205. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  206. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  207. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  208. package/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/route.js.nft.json +1 -1
  209. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  210. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js +1 -1
  211. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
  212. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  213. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  214. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  215. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
  216. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  217. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  218. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  219. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  220. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/api-key/route.js.nft.json +1 -1
  221. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/auto-import/route.js +1 -1
  222. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/auto-import/route.js.nft.json +1 -1
  223. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  224. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  225. package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  226. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  227. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  228. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  229. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  230. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  231. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  232. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  233. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  234. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  235. package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  236. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  237. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  238. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  239. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  240. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  241. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  242. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  243. package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  244. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  245. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  246. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  247. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  248. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  249. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  250. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  251. package/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
  252. package/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
  253. package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js.nft.json +1 -1
  254. package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
  255. package/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
  256. package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
  257. package/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
  258. package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
  259. package/app/.next-cli-build/server/app/api/settings/config/export/route.js.nft.json +1 -1
  260. package/app/.next-cli-build/server/app/api/settings/config/import/route.js +1 -1
  261. package/app/.next-cli-build/server/app/api/settings/config/import/route.js.nft.json +1 -1
  262. package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  263. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  264. package/app/.next-cli-build/server/app/api/settings/environment/route.js.nft.json +1 -1
  265. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  266. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  267. package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  268. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  269. package/app/.next-cli-build/server/app/api/shell/savings-milestone/route.js.nft.json +1 -1
  270. package/app/.next-cli-build/server/app/api/shell/summary/route.js +1 -1
  271. package/app/.next-cli-build/server/app/api/shell/summary/route.js.nft.json +1 -1
  272. package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  273. package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  274. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  275. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  276. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  277. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  278. package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  279. package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  280. package/app/.next-cli-build/server/app/api/translator/send/route.js +9 -1
  281. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  282. package/app/.next-cli-build/server/app/api/translator/translate/route.js +9 -1
  283. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  284. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  285. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  286. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  287. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  288. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  289. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  290. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +2 -2
  291. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  292. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +9 -1
  293. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
  294. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +9 -1
  295. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  296. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  297. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  298. package/app/.next-cli-build/server/app/api/usage/last-activity/route.js.nft.json +1 -1
  299. package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
  300. package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  301. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  302. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  303. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  304. package/app/.next-cli-build/server/app/api/usage/savings/route.js.nft.json +1 -1
  305. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  306. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  307. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  308. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  309. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  310. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  311. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  312. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  313. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
  314. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  315. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  316. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  317. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +9 -1
  318. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  319. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +2 -2
  320. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  321. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  322. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  323. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  324. package/app/.next-cli-build/server/app/api/v1/models/[...model]/route.js +1 -1
  325. package/app/.next-cli-build/server/app/api/v1/models/[...model]/route.js.nft.json +1 -1
  326. package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  327. package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  328. package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  329. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  330. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  331. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  332. package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  333. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  334. package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  335. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  336. package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  337. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  338. package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js +1 -1
  339. package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js.nft.json +1 -1
  340. package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js +1 -1
  341. package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js.nft.json +1 -1
  342. package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js +1 -1
  343. package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js.nft.json +1 -1
  344. package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js +1 -1
  345. package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
  346. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  347. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  348. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  349. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  350. package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  351. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  352. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  353. package/app/.next-cli-build/server/app/callback/page.js +1 -1
  354. package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  355. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  356. package/app/.next-cli-build/server/app/callback.html +1 -1
  357. package/app/.next-cli-build/server/app/callback.rsc +5 -5
  358. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +5 -5
  359. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
  360. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +5 -5
  361. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +2 -2
  362. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +11 -11
  363. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +11 -11
  364. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +11 -11
  365. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
  366. package/app/.next-cli-build/server/app/dashboard/combos.html +2 -2
  367. package/app/.next-cli-build/server/app/dashboard/combos.rsc +11 -11
  368. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +11 -11
  369. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +11 -11
  370. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  371. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  372. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +9 -9
  373. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +8 -8
  374. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +9 -9
  375. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  376. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +2 -2
  377. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +11 -11
  378. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +11 -11
  379. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +11 -11
  380. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
  381. package/app/.next-cli-build/server/app/dashboard/media-providers.html +1 -1
  382. package/app/.next-cli-build/server/app/dashboard/media-providers.rsc +10 -10
  383. package/app/.next-cli-build/server/app/dashboard/media-providers.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/__PAGE__.segment.rsc +10 -10
  384. package/app/.next-cli-build/server/app/dashboard/media-providers.segments/_full.segment.rsc +10 -10
  385. package/app/.next-cli-build/server/app/dashboard/media-providers.segments/_tree.segment.rsc +2 -2
  386. package/app/.next-cli-build/server/app/dashboard/mitm.html +2 -2
  387. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +11 -11
  388. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +11 -11
  389. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +11 -11
  390. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  391. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  392. package/app/.next-cli-build/server/app/dashboard/profile.rsc +10 -10
  393. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +10 -10
  394. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +10 -10
  395. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  396. package/app/.next-cli-build/server/app/dashboard/providers/new.html +2 -2
  397. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +11 -11
  398. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +11 -11
  399. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +11 -11
  400. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  401. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +2 -2
  402. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +10 -10
  403. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +10 -10
  404. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +10 -10
  405. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  406. package/app/.next-cli-build/server/app/dashboard/pxpipe.html +2 -2
  407. package/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +10 -10
  408. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +10 -10
  409. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +10 -10
  410. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +2 -2
  411. package/app/.next-cli-build/server/app/dashboard/quota.html +1 -1
  412. package/app/.next-cli-build/server/app/dashboard/quota.rsc +11 -11
  413. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +11 -11
  414. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +11 -11
  415. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  416. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +1 -1
  417. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  418. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  419. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  420. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +5 -5
  421. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +5 -5
  422. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  423. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +5 -5
  424. package/app/.next-cli-build/server/app/dashboard/settings.html +2 -2
  425. package/app/.next-cli-build/server/app/dashboard/settings.rsc +11 -11
  426. package/app/.next-cli-build/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard/settings/__PAGE__.segment.rsc +11 -11
  427. package/app/.next-cli-build/server/app/dashboard/settings.segments/_full.segment.rsc +11 -11
  428. package/app/.next-cli-build/server/app/dashboard/settings.segments/_tree.segment.rsc +2 -2
  429. package/app/.next-cli-build/server/app/dashboard/skills.html +2 -2
  430. package/app/.next-cli-build/server/app/dashboard/skills.rsc +8 -8
  431. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +8 -8
  432. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +8 -8
  433. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
  434. package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  435. package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +11 -11
  436. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +11 -11
  437. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +11 -11
  438. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +2 -2
  439. package/app/.next-cli-build/server/app/dashboard/translator.html +2 -2
  440. package/app/.next-cli-build/server/app/dashboard/translator.rsc +11 -11
  441. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +11 -11
  442. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +11 -11
  443. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  444. package/app/.next-cli-build/server/app/dashboard/ui-kit.html +1 -1
  445. package/app/.next-cli-build/server/app/dashboard/ui-kit.rsc +10 -10
  446. package/app/.next-cli-build/server/app/dashboard/ui-kit.segments/!KGRhc2hib2FyZCk/dashboard/ui-kit/__PAGE__.segment.rsc +10 -10
  447. package/app/.next-cli-build/server/app/dashboard/ui-kit.segments/_full.segment.rsc +10 -10
  448. package/app/.next-cli-build/server/app/dashboard/ui-kit.segments/_tree.segment.rsc +2 -2
  449. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  450. package/app/.next-cli-build/server/app/dashboard/usage.rsc +11 -11
  451. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +11 -11
  452. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +11 -11
  453. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  454. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  455. package/app/.next-cli-build/server/app/dashboard.rsc +11 -11
  456. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +11 -11
  457. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +11 -11
  458. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  459. package/app/.next-cli-build/server/app/index.html +1 -1
  460. package/app/.next-cli-build/server/app/index.rsc +5 -5
  461. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +5 -5
  462. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +5 -5
  463. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
  464. package/app/.next-cli-build/server/app/landing/page.js +1 -1
  465. package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  466. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  467. package/app/.next-cli-build/server/app/landing.html +1 -1
  468. package/app/.next-cli-build/server/app/landing.rsc +6 -6
  469. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +6 -6
  470. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
  471. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +6 -6
  472. package/app/.next-cli-build/server/app/login/page.js +1 -1
  473. package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  474. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  475. package/app/.next-cli-build/server/app/login.html +1 -1
  476. package/app/.next-cli-build/server/app/login.rsc +5 -5
  477. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +5 -5
  478. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
  479. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +5 -5
  480. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  481. package/app/.next-cli-build/server/app/page.js +1 -1
  482. package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  483. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  484. package/app/.next-cli-build/server/app/skills/[...slug]/route.js.nft.json +1 -1
  485. package/app/.next-cli-build/server/app-paths-manifest.json +8 -8
  486. package/app/.next-cli-build/server/chunks/{6734.js → 1004.js} +1 -1
  487. package/app/.next-cli-build/server/chunks/{4037.js → 1215.js} +1 -1
  488. package/app/.next-cli-build/server/chunks/1533.js +1 -1
  489. package/app/.next-cli-build/server/chunks/2217.js +1 -1
  490. package/app/.next-cli-build/server/chunks/2380.js +3 -3
  491. package/app/.next-cli-build/server/chunks/24.js +1 -1
  492. package/app/.next-cli-build/server/chunks/2460.js +1 -1
  493. package/app/.next-cli-build/server/chunks/257.js +10 -0
  494. package/app/.next-cli-build/server/chunks/2592.js +1 -1
  495. package/app/.next-cli-build/server/chunks/2705.js +9 -0
  496. package/app/.next-cli-build/server/chunks/318.js +2 -10
  497. package/app/.next-cli-build/server/chunks/3943.js +1 -1
  498. package/app/.next-cli-build/server/chunks/4123.js +1 -1
  499. package/app/.next-cli-build/server/chunks/4334.js +1 -1
  500. package/app/.next-cli-build/server/chunks/5230.js +1 -0
  501. package/app/.next-cli-build/server/chunks/5260.js +1 -1
  502. package/app/.next-cli-build/server/chunks/5559.js +9 -0
  503. package/app/.next-cli-build/server/chunks/5615.js +1 -1
  504. package/app/.next-cli-build/server/chunks/5649.js +1 -0
  505. package/app/.next-cli-build/server/chunks/5827.js +1 -1
  506. package/app/.next-cli-build/server/chunks/5869.js +9 -0
  507. package/app/.next-cli-build/server/chunks/5908.js +1 -0
  508. package/app/.next-cli-build/server/chunks/620.js +1 -1
  509. package/app/.next-cli-build/server/chunks/{1854.js → 6355.js} +1 -1
  510. package/app/.next-cli-build/server/chunks/6493.js +1 -0
  511. package/app/.next-cli-build/server/chunks/6496.js +1 -1
  512. package/app/.next-cli-build/server/chunks/7485.js +9 -0
  513. package/app/.next-cli-build/server/chunks/{3676.js → 7695.js} +1 -1
  514. package/app/.next-cli-build/server/chunks/7716.js +1 -1
  515. package/app/.next-cli-build/server/chunks/7819.js +1 -1
  516. package/app/.next-cli-build/server/chunks/8171.js +1 -1
  517. package/app/.next-cli-build/server/chunks/8261.js +1 -0
  518. package/app/.next-cli-build/server/chunks/878.js +1 -0
  519. package/app/.next-cli-build/server/chunks/8895.js +10 -10
  520. package/app/.next-cli-build/server/chunks/8954.js +1 -0
  521. package/app/.next-cli-build/server/chunks/9016.js +9 -0
  522. package/app/.next-cli-build/server/chunks/9343.js +1 -1
  523. package/app/.next-cli-build/server/chunks/9421.js +1 -1
  524. package/app/.next-cli-build/server/chunks/9489.js +1 -1
  525. package/app/.next-cli-build/server/chunks/9578.js +1 -1
  526. package/app/.next-cli-build/server/instrumentation.js.nft.json +1 -1
  527. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  528. package/app/.next-cli-build/server/middleware-react-loadable-manifest.js +1 -1
  529. package/app/.next-cli-build/server/middleware.js.nft.json +1 -1
  530. package/app/.next-cli-build/server/pages/404.html +1 -1
  531. package/app/.next-cli-build/server/pages/500.html +1 -1
  532. package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  533. package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  534. package/app/.next-cli-build/static/chunks/{198-0c7f5eadfd257db1.js → 198-7c5bbea89ef8bc14.js} +1 -1
  535. package/app/.next-cli-build/static/chunks/{3670-90f5cd325f460eb5.js → 3670-d6dc44bc181c9b8a.js} +1 -1
  536. package/app/.next-cli-build/static/chunks/{6174.f1da2912aec81c15.js → 6174.a18fedfa3d765b1e.js} +1 -1
  537. package/app/.next-cli-build/static/chunks/7899-a12f962af02edf7f.js +1 -0
  538. package/app/.next-cli-build/static/chunks/8105-71d1aea9708976db.js +1 -0
  539. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/console-log/{page-084fc21b1dbae00d.js → page-1df6ad7d9adfc2a7.js} +1 -1
  540. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/new/{page-de53f51d191eec46.js → page-25d06b77bd1a5edb.js} +1 -1
  541. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/translator/{page-243d3da0a2c6cbe9.js → page-5bb99ecaf48bde39.js} +1 -1
  542. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/ui-kit/{page-998f8c5a36dac961.js → page-1bc393f267badc04.js} +1 -1
  543. package/app/.next-cli-build/static/chunks/app/(dashboard)/{layout-96ebd2b46f1f8d39.js → layout-a94f45e334f1841b.js} +1 -1
  544. package/app/.next-cli-build/static/chunks/app/landing/{page-bcaea5febe1c68c0.js → page-98f05847e3372b16.js} +1 -1
  545. package/app/.next-cli-build/static/chunks/app/{layout-c266f1acedfb4651.js → layout-29d74e164758a126.js} +1 -1
  546. package/app/.next-cli-build/static/chunks/{webpack-8693ccf029e9af63.js → webpack-1e19a4b05298b49d.js} +1 -1
  547. package/app/.next-cli-build/static/css/{9f0b95a0d0bc5e51.css → ffa1d9c3cbb4e959.css} +1 -1
  548. package/app/package.json +4 -5
  549. package/app/server.js +1 -1
  550. package/package.json +1 -1
  551. package/app/.next-cli-build/server/chunks/1764.js +0 -1
  552. package/app/.next-cli-build/server/chunks/3306.js +0 -1
  553. package/app/.next-cli-build/server/chunks/3558.js +0 -1
  554. package/app/.next-cli-build/server/chunks/368.js +0 -1
  555. package/app/.next-cli-build/server/chunks/4199.js +0 -2
  556. package/app/.next-cli-build/server/chunks/4903.js +0 -1
  557. package/app/.next-cli-build/server/chunks/6000.js +0 -1
  558. package/app/.next-cli-build/server/chunks/6403.js +0 -1
  559. package/app/.next-cli-build/server/chunks/6565.js +0 -1
  560. package/app/.next-cli-build/server/chunks/7901.js +0 -1
  561. package/app/.next-cli-build/server/chunks/8372.js +0 -1
  562. package/app/.next-cli-build/server/chunks/9219.js +0 -1
  563. package/app/.next-cli-build/static/chunks/7899-83edd7bbf1a98c4a.js +0 -1
  564. package/app/.next-cli-build/static/chunks/8105-bdd81b911fed8537.js +0 -1
  565. /package/app/.next-cli-build/static/{J4xdfHpBUAMOCO5dsemSj → gdVYVwJMM6JES9Y1KPQyw}/_buildManifest.js +0 -0
  566. /package/app/.next-cli-build/static/{J4xdfHpBUAMOCO5dsemSj → gdVYVwJMM6JES9Y1KPQyw}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9089],{4650:(e,r,t)=>{"use strict";async function n(e){if("u">typeof navigator&&navigator?.clipboard?.writeText)try{await navigator.clipboard.writeText(String(e));return}catch{}if("u"<typeof document)throw Error("copyTextToClipboard: clipboard API unavailable");let r=document.createElement("textarea");r.value=String(e),r.style.position="fixed",r.style.opacity="0",document.body.appendChild(r),r.select();let t=!1;try{t=document.execCommand("copy")}finally{document.body.removeChild(r)}if(!t)throw Error("copyTextToClipboard: execCommand('copy') failed")}function a(e,{min:r,max:t}={}){if(""===e||null==e)return e;let n=Number(e);if(!Number.isFinite(n))return e;let s=n;return Number.isFinite(r)&&(s=Math.max(r,s)),Number.isFinite(t)&&(s=Math.min(t,s)),s}function s(e,{min:r,max:t,step:n=1,direction:i}={}){let l=""===e||null==e?NaN:Number(a(e,{min:r,max:t})),o=Number.isFinite(l)?l:Number.isFinite(r)?r:0,d=Math.max(String(n).split(".")[1]?.length??0,String(o).split(".")[1]?.length??0);return a(Number((o+i*n).toFixed(Math.min(d,10))),{min:r,max:t})}function i(e,r,{length:t,rtl:n=!1}={}){if(!Number.isInteger(t)||t<=0)return e;let a=(e%t+t)%t;switch(r){case"ArrowRight":return(a+(n?-1:1)+t)%t;case"ArrowLeft":return(a+(n?1:-1)+t)%t;case"ArrowDown":return(a+1)%t;case"ArrowUp":return(a-1+t)%t;case"Home":return 0;case"End":return t-1;default:return a}}function l(e){return["ArrowRight","ArrowLeft","ArrowDown","ArrowUp","Home","End"].includes(e)}t.d(r,{CD:()=>s,Ck:()=>o,Ec:()=>c,GO:()=>d,Gc:()=>m,JF:()=>l,N:()=>a,V7:()=>u,eM:()=>n,lZ:()=>i,qM:()=>p});let o={primary:"bg-lime text-on-lime border border-transparent shadow-[inset_0_0_0_1px_rgba(0,0,0,0.14)] hover:brightness-95",secondary:"bg-raised text-text border border-line hover:bg-line/60",ghost:"bg-transparent text-text border border-line hover:bg-raised",danger:"bg-err-bg text-err border border-transparent hover:bg-err/15",outline:"bg-transparent text-muted border border-line hover:bg-raised hover:text-text",success:"bg-ok-bg text-ok border border-transparent hover:bg-ok/15"},d={sm:"h-10 px-3 text-sm rounded-lg",md:"h-11 px-4 text-sm rounded-lg",lg:"h-11 px-6 text-sm rounded-lg"},c={sm:"h-9 text-xs",md:"h-9 text-sm",lg:"h-11 text-sm"};function u(e="primary",r="md"){let t=o[e];if(!t)throw Error(`buttonClasses: unknown variant "${e}"`);let n=d[r];if(!n)throw Error(`buttonClasses: unknown size "${r}"`);return`${t} ${n}`}function m(e,{hint:r,error:t}={}){return t?`${e}-error`:r?`${e}-hint`:void 0}function p(e){return null!=e&&!1!==e&&""!==e}},11910:(e,r,t)=>{"use strict";t.d(r,{default:()=>o});var n=t(95155),a=t(14051),s=t.n(a),i=t(31474),l=t(98582);function o({label:e,type:r="text",placeholder:t,value:a,onChange:s,error:d,hint:c,icon:u,disabled:m=!1,required:p=!1,className:h,inputClassName:b,id:x,ref:f,...g}){return(0,n.jsx)(l.default,{id:x,label:e,hint:c,error:d,required:p,className:h,children:({inputId:e,describedBy:l,invalid:o})=>(0,n.jsxs)("div",{className:"relative",children:[u&&(0,n.jsx)("div",{className:"absolute inset-y-0 start-0 flex items-center ps-3 pointer-events-none text-muted","aria-hidden":"true",children:(0,n.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:u})}),(0,n.jsx)("input",{...g,ref:f,id:e,type:r,placeholder:t,value:a,onChange:s,disabled:m,"aria-describedby":l,"aria-invalid":o||void 0,className:(0,i.cn)("w-full py-2.5 px-3 text-sm text-text bg-raised rounded-lg","border border-line placeholder:text-subtle","focus:outline-none focus:border-coral focus:shadow-focus","transition-colors duration-150 disabled:opacity-50 disabled:cursor-not-allowed","text-[16px] sm:text-sm",u&&"ps-10",o&&"border-err focus:border-err",b)})]})})}o.propTypes={label:s().node,type:s().string,placeholder:s().string,value:s().oneOfType([s().string,s().number]),onChange:s().func,error:s().node,hint:s().node,icon:s().string,disabled:s().bool,required:s().bool,className:s().string,inputClassName:s().string,id:s().string,"aria-label":s().string}},15615:(e,r,t)=>{"use strict";t.r(r),t.d(r,{default:()=>f});var n=t(95155),a=t(12115),s=t(73321),i=t(98500),l=t.n(i),o=t(84588),d=t(99380),c=t(11910),u=t(92542),m=t(98542),p=t(56006),h=t(27693);let b=Object.values(h.Q2).map(e=>({value:e.id,label:e.name})),x=Object.values(h.MA).map(e=>({value:e.id,label:e.name}));function f(){let e=(0,s.useRouter)(),[r,t]=(0,a.useState)(!1),[i,f]=(0,a.useState)({provider:"",authMethod:"api_key",apiKey:"",displayName:"",isActive:!0}),[g,v]=(0,a.useState)({}),y=(e,r)=>{f(t=>({...t,[e]:r})),g[e]&&v(r=>({...r,[e]:null}))},N=async r=>{let n;if(r.preventDefault(),n={},i.provider||(n.provider="Please select a provider"),"api_key"!==i.authMethod||i.apiKey||(n.apiKey="API key is required"),v(n),0===Object.keys(n).length){t(!0);try{let r=await fetch("/api/providers",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)});if(r.ok)e.push("/dashboard/providers");else{let e=await r.json();v({submit:e.error||"Failed to create provider"})}}catch(e){v({submit:"An error occurred. Please try again."})}finally{t(!1)}}},j=h.Q2[i.provider];return(0,n.jsxs)("div",{className:"max-w-2xl mx-auto",children:[(0,n.jsx)("div",{className:"mb-8",children:(0,n.jsxs)(l(),{href:"/dashboard/providers",className:"inline-flex items-center gap-1 text-sm text-muted hover:text-coral-ink transition-colors mb-4",children:[(0,n.jsx)("span",{className:"material-symbols-outlined text-lg",children:"arrow_back"}),"Back to providers"]})}),(0,n.jsx)(o.default,{children:(0,n.jsxs)("form",{onSubmit:N,className:"flex flex-col gap-6",children:[(0,n.jsx)(d.default,{label:"Provider",options:b,value:i.provider,onChange:e=>y("provider",e.target.value),placeholder:"Select a provider",error:g.provider,required:!0}),j&&(0,n.jsxs)(o.default.Section,{className:"flex items-center gap-3",children:[(0,n.jsx)("div",{className:"size-10 rounded-lg flex items-center justify-center bg-panel border border-line",children:(0,n.jsx)("span",{className:"material-symbols-outlined text-xl",style:{color:j.color},children:j.icon})}),(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{className:"font-medium",children:j.name}),(0,n.jsx)("p",{className:"text-sm text-muted",children:"Selected provider"})]})]}),(0,n.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,n.jsxs)("label",{className:"text-sm font-medium",children:["Authentication method ",(0,n.jsx)("span",{className:"text-err",children:"*"})]}),(0,n.jsx)("div",{className:"flex gap-3",children:x.map(e=>(0,n.jsxs)("button",{type:"button",onClick:()=>y("authMethod",e.value),className:`flex-1 flex items-center justify-center gap-2 p-4 rounded-lg border transition-all ${i.authMethod===e.value?"border-coral bg-coral-bg text-coral-ink":"border-line hover:border-coral/50"}`,children:[(0,n.jsx)("span",{className:"material-symbols-outlined",children:"api_key"===e.value?"key":"lock"}),(0,n.jsx)("span",{className:"font-medium",children:e.label})]},e.value))})]}),"api_key"===i.authMethod&&(0,n.jsx)(c.default,{label:"API key",type:"password",placeholder:"Enter your API key",value:i.apiKey,onChange:e=>y("apiKey",e.target.value),error:g.apiKey,hint:"Your API key will be encrypted and stored securely.",required:!0}),"oauth2"===i.authMethod&&(0,n.jsxs)(o.default.Section,{children:[(0,n.jsx)("p",{className:"text-sm text-muted mb-4",children:"Connect your account using OAuth2 authentication."}),(0,n.jsx)(u.default,{type:"button",variant:"secondary",icon:"link",children:"Connect with OAuth2"})]}),(0,n.jsx)(c.default,{label:"Display name",placeholder:"e.g., production API, dev environment",value:i.displayName,onChange:e=>y("displayName",e.target.value),hint:"Optional. A friendly name to identify this configuration."}),(0,n.jsx)(m.default,{checked:i.isActive,onChange:e=>y("isActive",e),label:"Active",description:"Enable this provider for use in your applications"}),g.submit&&(0,n.jsx)(p.default,{variant:"err",children:g.submit}),(0,n.jsxs)("div",{className:"flex gap-3 pt-4 border-t border-line",children:[(0,n.jsx)(l(),{href:"/dashboard/providers",className:"flex-1",children:(0,n.jsx)(u.default,{type:"button",variant:"ghost",fullWidth:!0,children:"Cancel"})}),(0,n.jsx)(u.default,{type:"submit",loading:r,fullWidth:!0,className:"flex-1",children:"Create provider"})]})]})})]})}},27693:(e,r,t)=>{"use strict";t.d(r,{MA:()=>a.MA,Q2:()=>a.Q2,UY:()=>n.UY,h0:()=>n.h0});var n=t(28745),a=t(88105);t(28777)},28745:(e,r,t)=>{"use strict";t.d(r,{vQ:()=>s,UY:()=>d,Nu:()=>i,B2:()=>o,h0:()=>l});var n=t(4553),a=t(41463);let s={name:`${n.Hc.name} Proxy`,description:"AI infrastructure management",version:"1.0.1",build:{channel:a.env.NEXT_PUBLIC_BUILD_CHANNEL||"",sha:a.env.NEXT_PUBLIC_BUILD_SHA||""}},i={changelogUrl:"https://raw.githubusercontent.com/tokenhop/tokenhop/refs/heads/master/CHANGELOG.md"},l={appPort:20128},o={storageKey:"theme",defaultTheme:"dark"},d={maxLines:200,pollIntervalMs:1e3}},28777:(e,r,t)=>{"use strict";t.d(r,{CP:()=>a,KC:()=>n.KC,Xg:()=>n.Xg,bs:()=>s});var n=t(2378);Object.entries(t(88105).Q2).filter(([,e])=>e.passthroughModels).map(([e])=>e),Object.entries(n.vq).flatMap(([e,r])=>r.map(r=>({provider:e,model:r.id,name:r.name})));let a=(e,r=null)=>e?.kind||e?.type||r,s={vision:{icon:"visibility",label:"Vision",desc:"Supports image input",color:"text-blue-500"},reasoning:{icon:"neurology",label:"Reasoning",desc:"Supports reasoning / thinking",color:"text-amber-500"}}},54642:e=>{var r;"u">typeof __nccwpck_require__&&(__nccwpck_require__.ab="//"),(r={}).endianness=function(){return"LE"},r.hostname=function(){return"u">typeof location?location.hostname:""},r.loadavg=function(){return[]},r.uptime=function(){return 0},r.freemem=function(){return Number.MAX_VALUE},r.totalmem=function(){return Number.MAX_VALUE},r.cpus=function(){return[]},r.type=function(){return"Browser"},r.release=function(){return"u">typeof navigator?navigator.appVersion:""},r.networkInterfaces=r.getNetworkInterfaces=function(){return{}},r.arch=function(){return"javascript"},r.platform=function(){return"browser"},r.tmpdir=r.tmpDir=function(){return"/tmp"},r.EOL="\n",r.homedir=function(){return"/"},e.exports=r},59100:(e,r,t)=>{Promise.resolve().then(t.bind(t,15615))},73321:(e,r,t)=>{"use strict";var n=t(74645);t.o(n,"notFound")&&t.d(r,{notFound:function(){return n.notFound}}),t.o(n,"useParams")&&t.d(r,{useParams:function(){return n.useParams}}),t.o(n,"usePathname")&&t.d(r,{usePathname:function(){return n.usePathname}}),t.o(n,"useRouter")&&t.d(r,{useRouter:function(){return n.useRouter}}),t.o(n,"useSearchParams")&&t.d(r,{useSearchParams:function(){return n.useSearchParams}})},84588:(e,r,t)=>{"use strict";t.d(r,{default:()=>o});var n=t(95155),a=t(14051),s=t.n(a),i=t(31474);let l={none:"",xs:"p-3",sm:"p-4",md:"p-6",lg:"p-8"};function o({children:e,title:r,subtitle:t,icon:a,action:s,as:d="h2",padding:c="md",hover:u=!1,elev:m=!1,className:p,role:h,...b}){if(void 0===l[c])throw Error(`Card: unknown padding "${c}"`);let x=h||(b["aria-label"]||b["aria-labelledby"]?"region":void 0);return(0,n.jsxs)("div",{role:x,className:(0,i.cn)("rounded-2xl border border-line bg-panel shadow-card",u&&"cursor-pointer transition-colors duration-150 hover:border-coral/40",l[c],p),...b,children:[(r||s)&&(0,n.jsx)(o.Header,{title:r,subtitle:t,icon:a,actions:s,as:d,className:"mb-4"}),e]})}o.propTypes={children:s().node,title:s().node,subtitle:s().node,icon:s().string,action:s().node,as:s().oneOf(["h2","h3","h4"]),padding:s().oneOf(Object.keys(l)),hover:s().bool,elev:s().bool,className:s().string,role:s().string},o.Header=function({title:e,subtitle:r,icon:t,actions:a,as:s="h2",className:l}){return(0,n.jsxs)("div",{className:(0,i.cn)("flex flex-wrap items-center justify-between gap-3",l),children:[(0,n.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[t&&(0,n.jsx)("span",{className:"flex size-10 shrink-0 items-center justify-center rounded-[10px] bg-coral-bg text-coral-ink",children:(0,n.jsx)("span",{className:"material-symbols-outlined text-[20px]","aria-hidden":"true",children:t})}),(0,n.jsxs)("div",{className:"min-w-0",children:[e&&(0,n.jsx)(s,{className:"font-display text-lg font-bold text-text",children:e}),r&&(0,n.jsx)("p",{className:"text-sm text-muted",children:r})]})]}),a&&(0,n.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:a})]})},o.Header.propTypes={title:s().node,subtitle:s().node,icon:s().string,actions:s().node,as:s().oneOf(["h2","h3","h4"]),className:s().string},o.Section=function({children:e,className:r,...t}){return(0,n.jsx)("div",{className:(0,i.cn)("rounded-xl border border-line bg-raised p-4",r),...t,children:e})},o.Row=function({children:e,className:r,...t}){return(0,n.jsx)("div",{className:(0,i.cn)("-mx-3 border-b border-line p-3 px-3 transition-colors last:border-b-0 hover:bg-raised",r),...t,children:e})},o.ListItem=function({children:e,actions:r,className:t,...a}){return(0,n.jsxs)("div",{className:(0,i.cn)("group -mx-3 flex items-center justify-between border-b border-line p-3 px-3 transition-colors last:border-b-0 hover:bg-raised",t),...a,children:[(0,n.jsx)("div",{className:"min-w-0 flex-1",children:e}),r&&(0,n.jsx)("div",{className:"flex items-center gap-1 opacity-0 transition-opacity group-focus-within:opacity-100 group-hover:opacity-100",children:r})]})}},92542:(e,r,t)=>{"use strict";t.d(r,{default:()=>c});var n=t(95155),a=t(98500),s=t.n(a),i=t(14051),l=t.n(i),o=t(31474),d=t(4650);function c({children:e,variant:r="primary",size:t="md",icon:a,iconRight:i,href:l,disabled:u=!1,loading:m=!1,fullWidth:p=!1,className:h,...b}){let x=(0,o.cn)("inline-flex items-center justify-center gap-2 font-semibold transition-all duration-150 ease-out cursor-pointer","active:scale-[0.97] focus-visible:outline-none focus-visible:shadow-focus","disabled:opacity-50 disabled:cursor-not-allowed disabled:active:scale-100","aria-disabled:opacity-50 aria-disabled:cursor-not-allowed aria-disabled:active:scale-100",(0,d.V7)(r,t),p&&"w-full",h),f=(0,n.jsxs)(n.Fragment,{children:[m?(0,n.jsx)("span",{className:"material-symbols-outlined animate-spin text-[18px]","aria-hidden":"true",children:"progress_activity"}):a?(0,n.jsx)("span",{className:"material-symbols-outlined text-[18px]","aria-hidden":"true",children:a}):null,e,i&&!m&&(0,n.jsx)("span",{className:"material-symbols-outlined text-[18px] rtl:-scale-x-100","aria-hidden":"true",children:i})]});if(l&&!(u||m)){let{type:e,...r}=b;return r.className=x,/^(https?:|mailto:|tel:|#)/.test(l)?(0,n.jsx)("a",{href:l,...r,children:f}):(0,n.jsx)(s(),{href:l,...r,children:f})}return(0,n.jsx)("button",{className:x,disabled:u||m,"aria-busy":m||void 0,...b,children:f})}c.propTypes={children:l().node,variant:l().oneOf(Object.keys(d.Ck)),size:l().oneOf(Object.keys(d.GO)),icon:l().string,iconRight:l().string,href:l().string,disabled:l().bool,loading:l().bool,fullWidth:l().bool,className:l().string}},98542:(e,r,t)=>{"use strict";t.d(r,{default:()=>d});var n=t(95155),a=t(14051),s=t.n(a),i=t(12115),l=t(31474);let o={sm:"h-[26px] w-11",md:"h-[26px] w-11",lg:"h-7 w-12"};function d({checked:e=!1,onChange:r,label:t,description:a,disabled:s=!1,size:c="md",className:u,id:m,...p}){let h=(0,i.useId)(),b=m||h,x=`${b}-label`,f=`${b}-description`;if(!o[c])throw Error(`Toggle: unknown size "${c}"`);return(0,n.jsxs)("div",{className:(0,l.cn)("flex items-center gap-3",s&&"opacity-50",u),children:[(0,n.jsx)("button",{...p,id:b,type:"button",role:"switch","aria-checked":e,"aria-labelledby":t?x:p["aria-labelledby"],"aria-describedby":a?f:p["aria-describedby"],"aria-label":t?void 0:p["aria-label"]||p.title,disabled:s,onClick:()=>r?.(!e),className:(0,l.cn)("relative inline-flex shrink-0 rounded-full border border-line transition-colors duration-200","focus-visible:outline-none focus-visible:shadow-focus disabled:cursor-not-allowed","motion-reduce:transition-none",e?"bg-toggle-on":"bg-line",o[c]),children:(0,n.jsx)("span",{"aria-hidden":"true",className:(0,l.cn)("pointer-events-none absolute top-0.5 size-5 rounded-full shadow-sm transition-transform duration-200 motion-reduce:transition-none",e?"bg-toggle-knob-on translate-x-5 rtl:-translate-x-5":"bg-muted translate-x-0.5 rtl:-translate-x-0.5","start-0")})}),(t||a)&&(0,n.jsxs)("div",{className:"flex flex-col",children:[t&&(0,n.jsx)("label",{id:x,htmlFor:b,className:"text-sm font-medium text-text cursor-pointer",children:t}),a&&(0,n.jsx)("span",{id:f,className:"text-xs text-muted",children:a})]})]})}d.propTypes={checked:s().bool,onChange:s().func,label:s().node,description:s().node,disabled:s().bool,size:s().oneOf(Object.keys(o)),className:s().string,id:s().string,title:s().string,"aria-label":s().string}},98582:(e,r,t)=>{"use strict";t.d(r,{default:()=>d});var n=t(95155),a=t(14051),s=t.n(a),i=t(12115),l=t(31474),o=t(4650);function d({id:e,label:r,hint:t,error:a,required:s=!1,className:c,children:u}){let m=(0,i.useId)(),p=e||`${m}-input`,h=`${p}-hint`,b=`${p}-error`,x=(0,o.Gc)(p,{hint:t,error:a});return(0,n.jsxs)("div",{className:(0,l.cn)("flex flex-col gap-1.5",c),children:[r&&(0,n.jsxs)("label",{htmlFor:p,className:"text-sm font-medium text-text",children:[r,s&&(0,n.jsx)("span",{className:"text-err ms-1","aria-hidden":"true",children:"*"})]}),u({inputId:p,describedBy:x,invalid:!!a}),a?(0,n.jsxs)("p",{id:b,className:"text-xs text-err flex items-center gap-1",children:[(0,n.jsx)("span",{className:"material-symbols-outlined text-[14px]","aria-hidden":"true",children:"error"}),a]}):t?(0,n.jsx)("p",{id:h,className:"text-xs text-muted",children:t}):null]})}d.propTypes={id:s().string,label:s().node,hint:s().node,error:s().node,required:s().bool,className:s().string,children:s().func.isRequired}},99380:(e,r,t)=>{"use strict";t.d(r,{default:()=>o});var n=t(95155),a=t(14051),s=t.n(a),i=t(31474),l=t(98582);function o({label:e,options:r=[],value:t,onChange:a,placeholder:s="Select an option",error:d,hint:c,disabled:u=!1,required:m=!1,className:p,selectClassName:h,id:b,...x}){return(0,n.jsx)(l.default,{id:b,label:e,hint:c,error:d,required:m,className:p,children:({inputId:e,describedBy:l,invalid:o})=>(0,n.jsxs)("div",{className:"relative",children:[(0,n.jsxs)("select",{...x,id:e,value:t,onChange:a,disabled:u,"aria-describedby":l,"aria-invalid":o||void 0,className:(0,i.cn)("w-full h-11 ps-3 pe-10 text-sm text-text bg-raised rounded-lg appearance-none","border border-line focus:outline-none focus:border-coral focus:shadow-focus","transition-colors duration-150 disabled:opacity-50 disabled:cursor-not-allowed","text-[16px] sm:text-sm",o&&"border-err focus:border-err",h),children:[null!==s&&(0,n.jsx)("option",{value:"",disabled:!0,children:s}),(function(e=[]){let r=[];for(let t of e){let e=t.group||null,n=r[r.length-1];n&&n.label===e?n.options.push(t):r.push({label:e,options:[t]})}return r})(r).map((e,r)=>null===e.label?e.options.map(e=>(0,n.jsx)("option",{value:e.value,children:e.label},e.value)):(0,n.jsx)("optgroup",{label:e.label,children:e.options.map(e=>(0,n.jsx)("option",{value:e.value,children:e.label},e.value))},`${e.label}-${r}`))]}),(0,n.jsx)("div",{className:"absolute inset-y-0 end-0 flex items-center pe-3 pointer-events-none text-muted","aria-hidden":"true",children:(0,n.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"expand_more"})})]})})}o.propTypes={label:s().node,options:s().arrayOf(s().shape({value:s().oneOfType([s().string,s().number]).isRequired,label:s().node.isRequired,group:s().string})),value:s().oneOfType([s().string,s().number]),onChange:s().func,placeholder:s().oneOfType([s().string,s().oneOf([null])]),error:s().node,hint:s().node,disabled:s().bool,required:s().bool,className:s().string,selectClassName:s().string,id:s().string}}},e=>{e.O(0,[1610,2903,8105,7505,8441,3794,7358],()=>e(e.s=59100)),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9089],{4650:(e,r,t)=>{"use strict";async function n(e){if("u">typeof navigator&&navigator?.clipboard?.writeText)try{await navigator.clipboard.writeText(String(e));return}catch{}if("u"<typeof document)throw Error("copyTextToClipboard: clipboard API unavailable");let r=document.createElement("textarea");r.value=String(e),r.style.position="fixed",r.style.opacity="0",document.body.appendChild(r),r.select();let t=!1;try{t=document.execCommand("copy")}finally{document.body.removeChild(r)}if(!t)throw Error("copyTextToClipboard: execCommand('copy') failed")}function a(e,{min:r,max:t}={}){if(""===e||null==e)return e;let n=Number(e);if(!Number.isFinite(n))return e;let s=n;return Number.isFinite(r)&&(s=Math.max(r,s)),Number.isFinite(t)&&(s=Math.min(t,s)),s}function s(e,{min:r,max:t,step:n=1,direction:i}={}){let l=""===e||null==e?NaN:Number(a(e,{min:r,max:t})),o=Number.isFinite(l)?l:Number.isFinite(r)?r:0,d=Math.max(String(n).split(".")[1]?.length??0,String(o).split(".")[1]?.length??0);return a(Number((o+i*n).toFixed(Math.min(d,10))),{min:r,max:t})}function i(e,r,{length:t,rtl:n=!1}={}){if(!Number.isInteger(t)||t<=0)return e;let a=(e%t+t)%t;switch(r){case"ArrowRight":return(a+(n?-1:1)+t)%t;case"ArrowLeft":return(a+(n?1:-1)+t)%t;case"ArrowDown":return(a+1)%t;case"ArrowUp":return(a-1+t)%t;case"Home":return 0;case"End":return t-1;default:return a}}function l(e){return["ArrowRight","ArrowLeft","ArrowDown","ArrowUp","Home","End"].includes(e)}t.d(r,{CD:()=>s,Ck:()=>o,Ec:()=>c,GO:()=>d,Gc:()=>m,JF:()=>l,N:()=>a,V7:()=>u,eM:()=>n,lZ:()=>i,qM:()=>p});let o={primary:"bg-lime text-on-lime border border-transparent shadow-[inset_0_0_0_1px_rgba(0,0,0,0.14)] hover:brightness-95",secondary:"bg-raised text-text border border-line hover:bg-line/60",ghost:"bg-transparent text-text border border-line hover:bg-raised",danger:"bg-err-bg text-err border border-transparent hover:bg-err/15",outline:"bg-transparent text-muted border border-line hover:bg-raised hover:text-text",success:"bg-ok-bg text-ok border border-transparent hover:bg-ok/15"},d={sm:"h-10 px-3 text-sm rounded-lg",md:"h-11 px-4 text-sm rounded-lg",lg:"h-11 px-6 text-sm rounded-lg"},c={sm:"h-9 text-xs",md:"h-9 text-sm",lg:"h-11 text-sm"};function u(e="primary",r="md"){let t=o[e];if(!t)throw Error(`buttonClasses: unknown variant "${e}"`);let n=d[r];if(!n)throw Error(`buttonClasses: unknown size "${r}"`);return`${t} ${n}`}function m(e,{hint:r,error:t}={}){return t?`${e}-error`:r?`${e}-hint`:void 0}function p(e){return null!=e&&!1!==e&&""!==e}},11910:(e,r,t)=>{"use strict";t.d(r,{default:()=>o});var n=t(95155),a=t(14051),s=t.n(a),i=t(31474),l=t(98582);function o({label:e,type:r="text",placeholder:t,value:a,onChange:s,error:d,hint:c,icon:u,disabled:m=!1,required:p=!1,className:h,inputClassName:b,id:x,ref:f,...g}){return(0,n.jsx)(l.default,{id:x,label:e,hint:c,error:d,required:p,className:h,children:({inputId:e,describedBy:l,invalid:o})=>(0,n.jsxs)("div",{className:"relative",children:[u&&(0,n.jsx)("div",{className:"absolute inset-y-0 start-0 flex items-center ps-3 pointer-events-none text-muted","aria-hidden":"true",children:(0,n.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:u})}),(0,n.jsx)("input",{...g,ref:f,id:e,type:r,placeholder:t,value:a,onChange:s,disabled:m,"aria-describedby":l,"aria-invalid":o||void 0,className:(0,i.cn)("w-full py-2.5 px-3 text-sm text-text bg-raised rounded-lg","border border-line placeholder:text-subtle","focus:outline-none focus:border-coral focus:shadow-focus","transition-colors duration-150 disabled:opacity-50 disabled:cursor-not-allowed","text-[16px] sm:text-sm",u&&"ps-10",o&&"border-err focus:border-err",b)})]})})}o.propTypes={label:s().node,type:s().string,placeholder:s().string,value:s().oneOfType([s().string,s().number]),onChange:s().func,error:s().node,hint:s().node,icon:s().string,disabled:s().bool,required:s().bool,className:s().string,inputClassName:s().string,id:s().string,"aria-label":s().string}},15615:(e,r,t)=>{"use strict";t.r(r),t.d(r,{default:()=>f});var n=t(95155),a=t(12115),s=t(73321),i=t(98500),l=t.n(i),o=t(84588),d=t(99380),c=t(11910),u=t(92542),m=t(98542),p=t(56006),h=t(27693);let b=Object.values(h.Q2).map(e=>({value:e.id,label:e.name})),x=Object.values(h.MA).map(e=>({value:e.id,label:e.name}));function f(){let e=(0,s.useRouter)(),[r,t]=(0,a.useState)(!1),[i,f]=(0,a.useState)({provider:"",authMethod:"api_key",apiKey:"",displayName:"",isActive:!0}),[g,v]=(0,a.useState)({}),y=(e,r)=>{f(t=>({...t,[e]:r})),g[e]&&v(r=>({...r,[e]:null}))},N=async r=>{let n;if(r.preventDefault(),n={},i.provider||(n.provider="Please select a provider"),"api_key"!==i.authMethod||i.apiKey||(n.apiKey="API key is required"),v(n),0===Object.keys(n).length){t(!0);try{let r=await fetch("/api/providers",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)});if(r.ok)e.push("/dashboard/providers");else{let e=await r.json();v({submit:e.error||"Failed to create provider"})}}catch(e){v({submit:"An error occurred. Please try again."})}finally{t(!1)}}},j=h.Q2[i.provider];return(0,n.jsxs)("div",{className:"max-w-2xl mx-auto",children:[(0,n.jsx)("div",{className:"mb-8",children:(0,n.jsxs)(l(),{href:"/dashboard/providers",className:"inline-flex items-center gap-1 text-sm text-muted hover:text-coral-ink transition-colors mb-4",children:[(0,n.jsx)("span",{className:"material-symbols-outlined text-lg",children:"arrow_back"}),"Back to providers"]})}),(0,n.jsx)(o.default,{children:(0,n.jsxs)("form",{onSubmit:N,className:"flex flex-col gap-6",children:[(0,n.jsx)(d.default,{label:"Provider",options:b,value:i.provider,onChange:e=>y("provider",e.target.value),placeholder:"Select a provider",error:g.provider,required:!0}),j&&(0,n.jsxs)(o.default.Section,{className:"flex items-center gap-3",children:[(0,n.jsx)("div",{className:"size-10 rounded-lg flex items-center justify-center bg-panel border border-line",children:(0,n.jsx)("span",{className:"material-symbols-outlined text-xl",style:{color:j.color},children:j.icon})}),(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{className:"font-medium",children:j.name}),(0,n.jsx)("p",{className:"text-sm text-muted",children:"Selected provider"})]})]}),(0,n.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,n.jsxs)("label",{className:"text-sm font-medium",children:["Authentication method ",(0,n.jsx)("span",{className:"text-err",children:"*"})]}),(0,n.jsx)("div",{className:"flex gap-3",children:x.map(e=>(0,n.jsxs)("button",{type:"button",onClick:()=>y("authMethod",e.value),className:`flex-1 flex items-center justify-center gap-2 p-4 rounded-lg border transition-all ${i.authMethod===e.value?"border-coral bg-coral-bg text-coral-ink":"border-line hover:border-coral/50"}`,children:[(0,n.jsx)("span",{className:"material-symbols-outlined",children:"api_key"===e.value?"key":"lock"}),(0,n.jsx)("span",{className:"font-medium",children:e.label})]},e.value))})]}),"api_key"===i.authMethod&&(0,n.jsx)(c.default,{label:"API key",type:"password",placeholder:"Enter your API key",value:i.apiKey,onChange:e=>y("apiKey",e.target.value),error:g.apiKey,hint:"Your API key will be encrypted and stored securely.",required:!0}),"oauth2"===i.authMethod&&(0,n.jsxs)(o.default.Section,{children:[(0,n.jsx)("p",{className:"text-sm text-muted mb-4",children:"Connect your account using OAuth2 authentication."}),(0,n.jsx)(u.default,{type:"button",variant:"secondary",icon:"link",children:"Connect with OAuth2"})]}),(0,n.jsx)(c.default,{label:"Display name",placeholder:"e.g., production API, dev environment",value:i.displayName,onChange:e=>y("displayName",e.target.value),hint:"Optional. A friendly name to identify this configuration."}),(0,n.jsx)(m.default,{checked:i.isActive,onChange:e=>y("isActive",e),label:"Active",description:"Enable this provider for use in your applications"}),g.submit&&(0,n.jsx)(p.default,{variant:"err",children:g.submit}),(0,n.jsxs)("div",{className:"flex gap-3 pt-4 border-t border-line",children:[(0,n.jsx)(l(),{href:"/dashboard/providers",className:"flex-1",children:(0,n.jsx)(u.default,{type:"button",variant:"ghost",fullWidth:!0,children:"Cancel"})}),(0,n.jsx)(u.default,{type:"submit",loading:r,fullWidth:!0,className:"flex-1",children:"Create provider"})]})]})})]})}},27693:(e,r,t)=>{"use strict";t.d(r,{MA:()=>a.MA,Q2:()=>a.Q2,UY:()=>n.UY,h0:()=>n.h0});var n=t(28745),a=t(88105);t(28777)},28745:(e,r,t)=>{"use strict";t.d(r,{vQ:()=>s,UY:()=>d,Nu:()=>i,B2:()=>o,h0:()=>l});var n=t(4553),a=t(41463);let s={name:`${n.Hc.name} Proxy`,description:"AI infrastructure management",version:"1.0.3",build:{channel:a.env.NEXT_PUBLIC_BUILD_CHANNEL||"",sha:a.env.NEXT_PUBLIC_BUILD_SHA||""}},i={changelogUrl:"https://raw.githubusercontent.com/tokenhop/tokenhop/refs/heads/master/CHANGELOG.md"},l={appPort:20128},o={storageKey:"theme",defaultTheme:"dark"},d={maxLines:200,pollIntervalMs:1e3}},28777:(e,r,t)=>{"use strict";t.d(r,{CP:()=>a,KC:()=>n.KC,Xg:()=>n.Xg,bs:()=>s});var n=t(2378);Object.entries(t(88105).Q2).filter(([,e])=>e.passthroughModels).map(([e])=>e),Object.entries(n.vq).flatMap(([e,r])=>r.map(r=>({provider:e,model:r.id,name:r.name})));let a=(e,r=null)=>e?.kind||e?.type||r,s={vision:{icon:"visibility",label:"Vision",desc:"Supports image input",color:"text-blue-500"},reasoning:{icon:"neurology",label:"Reasoning",desc:"Supports reasoning / thinking",color:"text-amber-500"}}},54642:e=>{var r;"u">typeof __nccwpck_require__&&(__nccwpck_require__.ab="//"),(r={}).endianness=function(){return"LE"},r.hostname=function(){return"u">typeof location?location.hostname:""},r.loadavg=function(){return[]},r.uptime=function(){return 0},r.freemem=function(){return Number.MAX_VALUE},r.totalmem=function(){return Number.MAX_VALUE},r.cpus=function(){return[]},r.type=function(){return"Browser"},r.release=function(){return"u">typeof navigator?navigator.appVersion:""},r.networkInterfaces=r.getNetworkInterfaces=function(){return{}},r.arch=function(){return"javascript"},r.platform=function(){return"browser"},r.tmpdir=r.tmpDir=function(){return"/tmp"},r.EOL="\n",r.homedir=function(){return"/"},e.exports=r},59100:(e,r,t)=>{Promise.resolve().then(t.bind(t,15615))},73321:(e,r,t)=>{"use strict";var n=t(74645);t.o(n,"notFound")&&t.d(r,{notFound:function(){return n.notFound}}),t.o(n,"useParams")&&t.d(r,{useParams:function(){return n.useParams}}),t.o(n,"usePathname")&&t.d(r,{usePathname:function(){return n.usePathname}}),t.o(n,"useRouter")&&t.d(r,{useRouter:function(){return n.useRouter}}),t.o(n,"useSearchParams")&&t.d(r,{useSearchParams:function(){return n.useSearchParams}})},84588:(e,r,t)=>{"use strict";t.d(r,{default:()=>o});var n=t(95155),a=t(14051),s=t.n(a),i=t(31474);let l={none:"",xs:"p-3",sm:"p-4",md:"p-6",lg:"p-8"};function o({children:e,title:r,subtitle:t,icon:a,action:s,as:d="h2",padding:c="md",hover:u=!1,elev:m=!1,className:p,role:h,...b}){if(void 0===l[c])throw Error(`Card: unknown padding "${c}"`);let x=h||(b["aria-label"]||b["aria-labelledby"]?"region":void 0);return(0,n.jsxs)("div",{role:x,className:(0,i.cn)("rounded-2xl border border-line bg-panel shadow-card",u&&"cursor-pointer transition-colors duration-150 hover:border-coral/40",l[c],p),...b,children:[(r||s)&&(0,n.jsx)(o.Header,{title:r,subtitle:t,icon:a,actions:s,as:d,className:"mb-4"}),e]})}o.propTypes={children:s().node,title:s().node,subtitle:s().node,icon:s().string,action:s().node,as:s().oneOf(["h2","h3","h4"]),padding:s().oneOf(Object.keys(l)),hover:s().bool,elev:s().bool,className:s().string,role:s().string},o.Header=function({title:e,subtitle:r,icon:t,actions:a,as:s="h2",className:l}){return(0,n.jsxs)("div",{className:(0,i.cn)("flex flex-wrap items-center justify-between gap-3",l),children:[(0,n.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[t&&(0,n.jsx)("span",{className:"flex size-10 shrink-0 items-center justify-center rounded-[10px] bg-coral-bg text-coral-ink",children:(0,n.jsx)("span",{className:"material-symbols-outlined text-[20px]","aria-hidden":"true",children:t})}),(0,n.jsxs)("div",{className:"min-w-0",children:[e&&(0,n.jsx)(s,{className:"font-display text-lg font-bold text-text",children:e}),r&&(0,n.jsx)("p",{className:"text-sm text-muted",children:r})]})]}),a&&(0,n.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:a})]})},o.Header.propTypes={title:s().node,subtitle:s().node,icon:s().string,actions:s().node,as:s().oneOf(["h2","h3","h4"]),className:s().string},o.Section=function({children:e,className:r,...t}){return(0,n.jsx)("div",{className:(0,i.cn)("rounded-xl border border-line bg-raised p-4",r),...t,children:e})},o.Row=function({children:e,className:r,...t}){return(0,n.jsx)("div",{className:(0,i.cn)("-mx-3 border-b border-line p-3 px-3 transition-colors last:border-b-0 hover:bg-raised",r),...t,children:e})},o.ListItem=function({children:e,actions:r,className:t,...a}){return(0,n.jsxs)("div",{className:(0,i.cn)("group -mx-3 flex items-center justify-between border-b border-line p-3 px-3 transition-colors last:border-b-0 hover:bg-raised",t),...a,children:[(0,n.jsx)("div",{className:"min-w-0 flex-1",children:e}),r&&(0,n.jsx)("div",{className:"flex items-center gap-1 opacity-0 transition-opacity group-focus-within:opacity-100 group-hover:opacity-100",children:r})]})}},92542:(e,r,t)=>{"use strict";t.d(r,{default:()=>c});var n=t(95155),a=t(98500),s=t.n(a),i=t(14051),l=t.n(i),o=t(31474),d=t(4650);function c({children:e,variant:r="primary",size:t="md",icon:a,iconRight:i,href:l,disabled:u=!1,loading:m=!1,fullWidth:p=!1,className:h,...b}){let x=(0,o.cn)("inline-flex items-center justify-center gap-2 font-semibold transition-all duration-150 ease-out cursor-pointer","active:scale-[0.97] focus-visible:outline-none focus-visible:shadow-focus","disabled:opacity-50 disabled:cursor-not-allowed disabled:active:scale-100","aria-disabled:opacity-50 aria-disabled:cursor-not-allowed aria-disabled:active:scale-100",(0,d.V7)(r,t),p&&"w-full",h),f=(0,n.jsxs)(n.Fragment,{children:[m?(0,n.jsx)("span",{className:"material-symbols-outlined animate-spin text-[18px]","aria-hidden":"true",children:"progress_activity"}):a?(0,n.jsx)("span",{className:"material-symbols-outlined text-[18px]","aria-hidden":"true",children:a}):null,e,i&&!m&&(0,n.jsx)("span",{className:"material-symbols-outlined text-[18px] rtl:-scale-x-100","aria-hidden":"true",children:i})]});if(l&&!(u||m)){let{type:e,...r}=b;return r.className=x,/^(https?:|mailto:|tel:|#)/.test(l)?(0,n.jsx)("a",{href:l,...r,children:f}):(0,n.jsx)(s(),{href:l,...r,children:f})}return(0,n.jsx)("button",{className:x,disabled:u||m,"aria-busy":m||void 0,...b,children:f})}c.propTypes={children:l().node,variant:l().oneOf(Object.keys(d.Ck)),size:l().oneOf(Object.keys(d.GO)),icon:l().string,iconRight:l().string,href:l().string,disabled:l().bool,loading:l().bool,fullWidth:l().bool,className:l().string}},98542:(e,r,t)=>{"use strict";t.d(r,{default:()=>d});var n=t(95155),a=t(14051),s=t.n(a),i=t(12115),l=t(31474);let o={sm:"h-[26px] w-11",md:"h-[26px] w-11",lg:"h-7 w-12"};function d({checked:e=!1,onChange:r,label:t,description:a,disabled:s=!1,size:c="md",className:u,id:m,...p}){let h=(0,i.useId)(),b=m||h,x=`${b}-label`,f=`${b}-description`;if(!o[c])throw Error(`Toggle: unknown size "${c}"`);return(0,n.jsxs)("div",{className:(0,l.cn)("flex items-center gap-3",s&&"opacity-50",u),children:[(0,n.jsx)("button",{...p,id:b,type:"button",role:"switch","aria-checked":e,"aria-labelledby":t?x:p["aria-labelledby"],"aria-describedby":a?f:p["aria-describedby"],"aria-label":t?void 0:p["aria-label"]||p.title,disabled:s,onClick:()=>r?.(!e),className:(0,l.cn)("relative inline-flex shrink-0 rounded-full border border-line transition-colors duration-200","focus-visible:outline-none focus-visible:shadow-focus disabled:cursor-not-allowed","motion-reduce:transition-none",e?"bg-toggle-on":"bg-line",o[c]),children:(0,n.jsx)("span",{"aria-hidden":"true",className:(0,l.cn)("pointer-events-none absolute top-0.5 size-5 rounded-full shadow-sm transition-transform duration-200 motion-reduce:transition-none",e?"bg-toggle-knob-on translate-x-5 rtl:-translate-x-5":"bg-muted translate-x-0.5 rtl:-translate-x-0.5","start-0")})}),(t||a)&&(0,n.jsxs)("div",{className:"flex flex-col",children:[t&&(0,n.jsx)("label",{id:x,htmlFor:b,className:"text-sm font-medium text-text cursor-pointer",children:t}),a&&(0,n.jsx)("span",{id:f,className:"text-xs text-muted",children:a})]})]})}d.propTypes={checked:s().bool,onChange:s().func,label:s().node,description:s().node,disabled:s().bool,size:s().oneOf(Object.keys(o)),className:s().string,id:s().string,title:s().string,"aria-label":s().string}},98582:(e,r,t)=>{"use strict";t.d(r,{default:()=>d});var n=t(95155),a=t(14051),s=t.n(a),i=t(12115),l=t(31474),o=t(4650);function d({id:e,label:r,hint:t,error:a,required:s=!1,className:c,children:u}){let m=(0,i.useId)(),p=e||`${m}-input`,h=`${p}-hint`,b=`${p}-error`,x=(0,o.Gc)(p,{hint:t,error:a});return(0,n.jsxs)("div",{className:(0,l.cn)("flex flex-col gap-1.5",c),children:[r&&(0,n.jsxs)("label",{htmlFor:p,className:"text-sm font-medium text-text",children:[r,s&&(0,n.jsx)("span",{className:"text-err ms-1","aria-hidden":"true",children:"*"})]}),u({inputId:p,describedBy:x,invalid:!!a}),a?(0,n.jsxs)("p",{id:b,className:"text-xs text-err flex items-center gap-1",children:[(0,n.jsx)("span",{className:"material-symbols-outlined text-[14px]","aria-hidden":"true",children:"error"}),a]}):t?(0,n.jsx)("p",{id:h,className:"text-xs text-muted",children:t}):null]})}d.propTypes={id:s().string,label:s().node,hint:s().node,error:s().node,required:s().bool,className:s().string,children:s().func.isRequired}},99380:(e,r,t)=>{"use strict";t.d(r,{default:()=>o});var n=t(95155),a=t(14051),s=t.n(a),i=t(31474),l=t(98582);function o({label:e,options:r=[],value:t,onChange:a,placeholder:s="Select an option",error:d,hint:c,disabled:u=!1,required:m=!1,className:p,selectClassName:h,id:b,...x}){return(0,n.jsx)(l.default,{id:b,label:e,hint:c,error:d,required:m,className:p,children:({inputId:e,describedBy:l,invalid:o})=>(0,n.jsxs)("div",{className:"relative",children:[(0,n.jsxs)("select",{...x,id:e,value:t,onChange:a,disabled:u,"aria-describedby":l,"aria-invalid":o||void 0,className:(0,i.cn)("w-full h-11 ps-3 pe-10 text-sm text-text bg-raised rounded-lg appearance-none","border border-line focus:outline-none focus:border-coral focus:shadow-focus","transition-colors duration-150 disabled:opacity-50 disabled:cursor-not-allowed","text-[16px] sm:text-sm",o&&"border-err focus:border-err",h),children:[null!==s&&(0,n.jsx)("option",{value:"",disabled:!0,children:s}),(function(e=[]){let r=[];for(let t of e){let e=t.group||null,n=r[r.length-1];n&&n.label===e?n.options.push(t):r.push({label:e,options:[t]})}return r})(r).map((e,r)=>null===e.label?e.options.map(e=>(0,n.jsx)("option",{value:e.value,children:e.label},e.value)):(0,n.jsx)("optgroup",{label:e.label,children:e.options.map(e=>(0,n.jsx)("option",{value:e.value,children:e.label},e.value))},`${e.label}-${r}`))]}),(0,n.jsx)("div",{className:"absolute inset-y-0 end-0 flex items-center pe-3 pointer-events-none text-muted","aria-hidden":"true",children:(0,n.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"expand_more"})})]})})}o.propTypes={label:s().node,options:s().arrayOf(s().shape({value:s().oneOfType([s().string,s().number]).isRequired,label:s().node.isRequired,group:s().string})),value:s().oneOfType([s().string,s().number]),onChange:s().func,placeholder:s().oneOfType([s().string,s().oneOf([null])]),error:s().node,hint:s().node,disabled:s().bool,required:s().bool,className:s().string,selectClassName:s().string,id:s().string}}},e=>{e.O(0,[1610,2903,8105,7505,8441,3794,7358],()=>e(e.s=59100)),_N_E=e.O()}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3528],{1620:(e,t,r)=>{"use strict";r.d(t,{D:()=>l});var n=r(12115),i=r(90085);function a(e){let t=window.matchMedia("(prefers-color-scheme: dark)");return t.addEventListener("change",e),()=>t.removeEventListener("change",e)}function o(){return window.matchMedia("(prefers-color-scheme: dark)").matches}function s(){return!1}function l(){let{theme:e,setTheme:t,toggleTheme:r,initTheme:l}=(0,i.A)(),d=(0,n.useSyncExternalStore)(a,o,s);(0,n.useEffect)(()=>{l()},[l]),(0,n.useEffect)(()=>{if("system"!==e)return;let t=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>l();return t.addEventListener("change",r),()=>t.removeEventListener("change",r)},[e,l]);let c="dark"===e||"system"===e&&d;return{theme:e,setTheme:t,toggleTheme:r,isDark:c}}},4553:(e,t,r)=>{"use strict";r.d(t,{DM:()=>o,Hc:()=>c,qt:()=>l,qx:()=>d});var n=r(35652);let{BRAND_IDS:i,DEFAULT_BRAND_ID:a,ACTIVE_BRAND_ID:o,isActiveBrand:s,BRAND:l,LEGACY:d,ACTIVE:c,UPSTREAM_CLIENT_IDS:u,envName:p,readEnv:m,warnLegacyOnce:g,header:f,legacyHeaderNames:h}=r.n(n)()},4650:(e,t,r)=>{"use strict";async function n(e){if("u">typeof navigator&&navigator?.clipboard?.writeText)try{await navigator.clipboard.writeText(String(e));return}catch{}if("u"<typeof document)throw Error("copyTextToClipboard: clipboard API unavailable");let t=document.createElement("textarea");t.value=String(e),t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();let r=!1;try{r=document.execCommand("copy")}finally{document.body.removeChild(t)}if(!r)throw Error("copyTextToClipboard: execCommand('copy') failed")}function i(e,{min:t,max:r}={}){if(""===e||null==e)return e;let n=Number(e);if(!Number.isFinite(n))return e;let a=n;return Number.isFinite(t)&&(a=Math.max(t,a)),Number.isFinite(r)&&(a=Math.min(r,a)),a}function a(e,{min:t,max:r,step:n=1,direction:o}={}){let s=""===e||null==e?NaN:Number(i(e,{min:t,max:r})),l=Number.isFinite(s)?s:Number.isFinite(t)?t:0,d=Math.max(String(n).split(".")[1]?.length??0,String(l).split(".")[1]?.length??0);return i(Number((l+o*n).toFixed(Math.min(d,10))),{min:t,max:r})}function o(e,t,{length:r,rtl:n=!1}={}){if(!Number.isInteger(r)||r<=0)return e;let i=(e%r+r)%r;switch(t){case"ArrowRight":return(i+(n?-1:1)+r)%r;case"ArrowLeft":return(i+(n?1:-1)+r)%r;case"ArrowDown":return(i+1)%r;case"ArrowUp":return(i-1+r)%r;case"Home":return 0;case"End":return r-1;default:return i}}function s(e){return["ArrowRight","ArrowLeft","ArrowDown","ArrowUp","Home","End"].includes(e)}r.d(t,{CD:()=>a,Ck:()=>l,Ec:()=>c,GO:()=>d,Gc:()=>p,JF:()=>s,N:()=>i,V7:()=>u,eM:()=>n,lZ:()=>o,qM:()=>m});let l={primary:"bg-lime text-on-lime border border-transparent shadow-[inset_0_0_0_1px_rgba(0,0,0,0.14)] hover:brightness-95",secondary:"bg-raised text-text border border-line hover:bg-line/60",ghost:"bg-transparent text-text border border-line hover:bg-raised",danger:"bg-err-bg text-err border border-transparent hover:bg-err/15",outline:"bg-transparent text-muted border border-line hover:bg-raised hover:text-text",success:"bg-ok-bg text-ok border border-transparent hover:bg-ok/15"},d={sm:"h-10 px-3 text-sm rounded-lg",md:"h-11 px-4 text-sm rounded-lg",lg:"h-11 px-6 text-sm rounded-lg"},c={sm:"h-9 text-xs",md:"h-9 text-sm",lg:"h-11 text-sm"};function u(e="primary",t="md"){let r=l[e];if(!r)throw Error(`buttonClasses: unknown variant "${e}"`);let n=d[t];if(!n)throw Error(`buttonClasses: unknown size "${t}"`);return`${r} ${n}`}function p(e,{hint:t,error:r}={}){return r?`${e}-error`:t?`${e}-hint`:void 0}function m(e){return null!=e&&!1!==e&&""!==e}},8247:(e,t,r)=>{"use strict";r.d(t,{HY:()=>l,Kw:()=>d});let n={"perplexity-agent":"perplexity","gitlab-duo":"gitlab","vercel-ai-gateway":"vercel","ollama-search":"ollama"};function i(e){return e.startsWith("openai-compatible")?"oai-cc":e.startsWith("anthropic-compatible")?"anthropic-m":""}let a=new Set;function o(e){return e&&"string"==typeof e?e.trim().toLowerCase():""}let s=new Set(["meta-code"]);function l(e){let t=function(e){let t=o(e);if(!t||a.has(t))return"";let r=n[t]||i(t)||t;return a.has(r)?"":r}(e);return t?`/providers/${t}.${s.has(t)?"svg":"webp"}`:null}function d(e){let t=o(e);t&&a.add(t);let r=n[t]||i(t);r&&a.add(r)}},11059:(e,t,r)=>{"use strict";r.d(t,{C:()=>a});var n=r(12115),i=r(4650);function a(e=2e3){let[t,r]=(0,n.useState)(null),[o,s]=(0,n.useState)(null),l=(0,n.useRef)(null),d=(0,n.useRef)(0);return(0,n.useEffect)(()=>()=>{l.current&&clearTimeout(l.current)},[]),{copied:t,error:o,message:null!=o?"Couldn't copy":null!=t?"Copied":"",copy:(0,n.useCallback)(async(t,n="default")=>{let a=++d.current;l.current&&(clearTimeout(l.current),l.current=null);try{if(await (0,i.eM)(t),a!==d.current)return!0;return r(n),s(null),l.current=setTimeout(()=>{r(null),s(null)},e),!0}catch{if(a!==d.current)return!1;return r(null),s(n),l.current=setTimeout(()=>{r(null),s(null)},e),!1}},[e])}}},19123:(e,t,r)=>{"use strict";r.d(t,{default:()=>s});var n=r(95155),i=r(14051),a=r.n(i),o=r(50770);function s({children:e,variant:t="neutral",size:r="md",dot:i=!1,className:a}){return(0,n.jsxs)("span",{className:`inline-flex items-center gap-1.5 rounded-full font-semibold whitespace-nowrap ${(0,o.S3)(t,r)}${a?` ${a}`:""}`,children:[i&&(0,n.jsx)("span",{"aria-hidden":"true",className:"size-2 rounded-full bg-current"}),e]})}s.propTypes={children:a().node,variant:a().oneOf(o.XY),size:a().oneOf(Object.keys(o.vO)),dot:a().bool,className:a().string}},25086:(e,t,r)=>{"use strict";r.d(t,{CardSkeleton:()=>u,PageLoading:()=>l,Skeleton:()=>d,SkeletonText:()=>c,Spinner:()=>s,default:()=>p});var n=r(95155),i=r(14051),a=r.n(i),o=r(31474);function s({size:e="md",className:t}){return(0,n.jsx)("span",{role:"status","aria-label":"Loading",className:(0,o.cn)("material-symbols-outlined animate-spin text-coral",{sm:"text-[16px]",md:"text-[24px]",lg:"text-[32px]",xl:"text-[48px]"}[e],t),children:"progress_activity"})}function l({message:e="Loading..."}){return(0,n.jsxs)("div",{className:"fixed inset-0 z-50 flex flex-col items-center justify-center bg-bg",children:[(0,n.jsx)(s,{size:"xl"}),(0,n.jsx)("p",{className:"mt-4 text-muted",children:e})]})}function d({className:e,...t}){return(0,n.jsx)("div",{"aria-hidden":"true",className:(0,o.cn)("animate-pulse rounded-[10px] bg-raised",e),...t})}function c({lines:e=3,className:t}){let r=Array.from({length:e},(e,t)=>t);return(0,n.jsx)("div",{className:(0,o.cn)("flex flex-col gap-2",t),"aria-hidden":"true",children:r.map(e=>(0,n.jsx)(d,{className:(0,o.cn)("h-3",e===r.length-1?"w-2/3":"w-full")},`line-${e}`))})}function u(){return(0,n.jsxs)("div",{className:"rounded-2xl border border-line bg-panel p-6 shadow-card",children:[(0,n.jsxs)("div",{className:"mb-4 flex items-center justify-between",children:[(0,n.jsx)(d,{className:"h-4 w-24"}),(0,n.jsx)(d,{className:"size-10 rounded-[10px]"})]}),(0,n.jsx)(d,{className:"mb-2 h-8 w-16"}),(0,n.jsx)(d,{className:"h-3 w-20"})]})}function p({type:e="spinner",...t}){switch(e){case"page":return(0,n.jsx)(l,{...t});case"skeleton":return(0,n.jsx)(d,{...t});case"card":return(0,n.jsx)(u,{...t});default:return(0,n.jsx)(s,{...t})}}d.propTypes={className:a().string},c.propTypes={lines:a().number,className:a().string}},28745:(e,t,r)=>{"use strict";r.d(t,{vQ:()=>a,UY:()=>d,Nu:()=>o,B2:()=>l,h0:()=>s});var n=r(4553),i=r(41463);let a={name:`${n.Hc.name} Proxy`,description:"AI infrastructure management",version:"1.0.1",build:{channel:i.env.NEXT_PUBLIC_BUILD_CHANNEL||"",sha:i.env.NEXT_PUBLIC_BUILD_SHA||""}},o={changelogUrl:"https://raw.githubusercontent.com/tokenhop/tokenhop/refs/heads/master/CHANGELOG.md"},s={appPort:20128},l={storageKey:"theme",defaultTheme:"dark"},d={maxLines:200,pollIntervalMs:1e3}},35652:(e,t,r)=>{"use strict";var n,i=r(41463);let a=Object.freeze(["9router","tokenhop"]),o="tokenhop";function s(e,t){if(a.includes(e))return e;let r=a.map(e=>`"${e}"`).join(", ");throw Error(`${t}: unknown brand ${JSON.stringify(e)}; allowed values: ${r}`)}let l=""==(n="tokenhop")?o:s(n,"NEXT_PUBLIC_BRAND"),d=Object.freeze({name:"tokenhop",slug:"tokenhop",envPrefix:"TOKENHOP_",headerPrefix:"x-tokenhop-",jcodeApiKeyEnv:"JCODE_TOKENHOP_API_KEY",defaultApiKey:"sk_tokenhop",dataDirName:"tokenhop",samlIssuerDefault:"urn:tokenhop:sp",mitmCaCommonName:"tokenhop MITM Root CA",mitmCaOrg:"tokenhop",mitmCertFile:"tokenhop-root-ca.crt",pidFile:"tokenhop.pid",autostartLabel:"dev.tokenhop.autostart",autostartDesktopFile:"tokenhop.desktop",autostartVbsFile:"tokenhop.vbs",clientConfigKey:"tokenhop",customModelIdPrefix:"custom:tokenhop-",storageKeyPrefix:"tokenhop.",eventPrefix:"tokenhop:",backupFilePrefix:"tokenhop-backup-",npmPackage:"tokenhop",appPackage:"tokenhop-app",repoSlug:"tokenhop/tokenhop",repoUrl:"https://github.com/tokenhop/tokenhop",imageName:"ghcr.io/tokenhop/tokenhop",websiteUrl:"https://tokenhop.ai",docsUrl:"https://tokenhop.dev",wordmark:"tokenhop",favicon:"/brand/favicon.svg",faviconIco:"/brand/favicon.ico",appIcon192:"/brand/icons/icon-192.svg",appIcon512:"/brand/icons/icon-512.svg",trayIconName:"icon-tokenhop",trayIconTemplate:!0}),c=Object.freeze({names:Object.freeze(["9Router","9router"]),slug:"9router",envPrefixes:Object.freeze(["NINEROUTER_","NINE_ROUTER_"]),headerPrefix:"x-9router-",jcodeApiKeyEnv:"JCODE_9ROUTER_API_KEY",defaultApiKey:"sk_9router",dataDirName:"9router",samlIssuerDefault:"urn:9router:sp",mitmCaCommonName:"9Router MITM Root CA",mitmCaOrg:"9Router",mitmCertFile:"9router-root-ca.crt",pidFile:"9router.pid",autostartLabel:"com.9router.autostart",autostartDesktopFile:"9router.desktop",autostartVbsFile:"9router.vbs",clientConfigKeys:Object.freeze(["9router","9Router"]),customModelIdPrefix:"custom:9Router-",storageKeyPrefix:"9router.",eventPrefix:"9router:",backupFilePrefix:"9router-backup-",npmPackage:"9router",appPackage:"9router-app",repoSlug:"yandy-r/9router",repoUrl:"https://github.com/yandy-r/9router",imageName:"ghcr.io/yandy-r/9router",wordmark:"router",favicon:"/favicon.svg",faviconIco:"/favicon.ico",appIcon192:"/icons/icon-192.svg",appIcon512:"/icons/icon-512.svg",trayIconName:"icon",trayIconTemplate:!1}),u=Object.freeze({kimiPlatform:"9router",clineUserAgentProduct:"9Router",clineClientType:"9router",devinMcpClientName:"9router",coworkMcpClientName:"9router",cursorMcpProvider:"9router",glmMcpClientName:"9router",xaiUserAgent:"grok-cli/9router",xiaomiKeyNamePrefix:"9router-xmd-",githubUserAgent:"9Router",proxyTestUserAgent:"9Router",denoRelayKind:"9router-relay"}),p=new Set(["repoSlug","repoUrl","imageName","websiteUrl","docsUrl"]),m={name:"names",envPrefix:"envPrefixes",clientConfigKey:"clientConfigKeys"},g="tokenhop"===l?d:Object.freeze(Object.fromEntries(Object.keys(d).map(e=>{let t;return[e,p.has(e)?d[e]:Array.isArray(t=c[m[e]||e])?t[0]:t]}))),f=new Set;function h(e,t,r){if("tokenhop"!==l)return!1;let n=`${e}\u0000${t}`;return!f.has(n)&&(f.add(n),console.warn(`[tokenhop] deprecated ${e} "${t}" → use "${r}" (legacy support ends in v2.0.0)`),!0)}let x=/^[A-Z0-9]+(_[A-Z0-9]+)*$/;function b(e){if("string"!=typeof e||!x.test(e))throw Error(`envName: invalid suffix ${JSON.stringify(e)}; expected e.g. "PEER_TOKEN"`);return d.envPrefix+e}let v=/^(?!x-)[a-z0-9]+(-[a-z0-9]+)*$/;function y(e){return g.headerPrefix+function(e,t){if("string"!=typeof e||!v.test(e))throw Error(`${t}: invalid header name ${JSON.stringify(e)}; expected a bare lowercase name like "connection-id"`);return e}(e,"header")}e.exports={BRAND_IDS:a,DEFAULT_BRAND_ID:o,ACTIVE_BRAND_ID:l,isActiveBrand:function(e){return s(e,"isActiveBrand")===l},BRAND:d,LEGACY:c,ACTIVE:g,UPSTREAM_CLIENT_IDS:u,envName:b,readEnv:function(e,t=i.env){let r=b(e);if(void 0!==t[r])return t[r];for(let n of c.envPrefixes){let i=n+e;if(void 0!==t[i])return h("env var",i,r),t[i]}},warnLegacyOnce:h,header:y,legacyHeaderNames:function(e){let t=y(e);return[c.headerPrefix+e].filter(e=>e!==t)}}},49864:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>O});var n=r(95155),i=r(12115),a=r(92542),o=r(84588),s=r(96975),l=r(19123),d=r(56006),c=r(14051),u=r.n(c),p=r(37206),m=r(1620);function g(e,t){return"function"!=typeof getComputedStyle?t:getComputedStyle(document.documentElement).getPropertyValue(e).trim()||t}let f="signal-dark",h="signal-light";function x(e){e.editor.defineTheme(f,{base:"vs-dark",inherit:!0,rules:[],colors:{"editor.background":g("--signal-panel","#15171D"),"editor.foreground":g("--signal-text","#F3F2EE"),"editor.lineHighlightBackground":g("--signal-raised","#1C1F27"),"editorLineNumber.foreground":g("--signal-subtle","#838898"),"editorLineNumber.activeForeground":g("--signal-text","#F3F2EE"),"editorCursor.foreground":g("--signal-coral","#FF6A48"),"editor.selectionBackground":`${g("--signal-coral","#FF6A48")}33`,"editor.inactiveSelectionBackground":`${g("--signal-coral","#FF6A48")}22`,"editorWidget.background":g("--signal-panel","#15171D"),"editorWidget.border":g("--signal-line","#2A2E39"),"editorHoverWidget.background":g("--signal-raised","#1C1F27"),"editorHoverWidget.border":g("--signal-line","#2A2E39"),"editorSuggestWidget.background":g("--signal-panel","#15171D"),"editorSuggestWidget.border":g("--signal-line","#2A2E39"),"editorGutter.background":g("--signal-panel","#15171D"),"editor.lineHighlightBorder":"#00000000"}}),e.editor.defineTheme(h,{base:"vs",inherit:!0,rules:[],colors:{"editor.background":g("--signal-panel","#FFFFFF"),"editor.foreground":g("--signal-text","#16171C"),"editor.lineHighlightBackground":g("--signal-raised","#F7F5EF"),"editorLineNumber.foreground":g("--signal-subtle","#6C7080"),"editorLineNumber.activeForeground":g("--signal-text","#16171C"),"editorCursor.foreground":g("--signal-coral","#CF4323"),"editor.selectionBackground":`${g("--signal-coral","#CF4323")}33`,"editor.inactiveSelectionBackground":`${g("--signal-coral","#CF4323")}22`,"editorWidget.background":g("--signal-panel","#FFFFFF"),"editorWidget.border":g("--signal-line","#E2DED3"),"editorHoverWidget.background":g("--signal-raised","#F7F5EF"),"editorHoverWidget.border":g("--signal-line","#E2DED3"),"editorSuggestWidget.background":g("--signal-panel","#FFFFFF"),"editorSuggestWidget.border":g("--signal-line","#E2DED3"),"editorGutter.background":g("--signal-panel","#FFFFFF"),"editor.lineHighlightBorder":"#00000000"}})}var b=r(25086),v=r(11059),y=r(58897);let k=(0,p.default)(()=>r.e(8202).then(r.bind(r,28202)),{loadableGenerated:{webpack:()=>[28202]},ssr:!1,loading:()=>(0,n.jsx)(b.Skeleton,{className:"h-[400px] w-full rounded-none border-0"})}),w={minimap:{enabled:!1},fontSize:12,lineNumbers:"on",scrollBeyondLastLine:!1,wordWrap:"on",automaticLayout:!0};function N({step:e,isExpanded:t,content:r,onToggle:i,onContentChange:s,onLoad:d,loadLoading:c,action:u}){let{isDark:p}=(0,m.D)(),{copy:g,copied:b,error:j}=(0,v.C)();return(0,n.jsx)(o.default,{padding:"none",children:(0,n.jsxs)("div",{className:"space-y-3 p-4",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,n.jsxs)("button",{type:"button",onClick:()=>i(e.id),"aria-expanded":t,"aria-controls":`translator-step-${e.id}-editor`,className:"flex min-w-0 flex-1 items-center gap-2 text-start focus-visible:outline-none focus-visible:shadow-focus",children:[(0,n.jsx)("span",{className:`material-symbols-outlined shrink-0 text-[20px] text-muted transition-transform ${t?"rotate-180":""}`,"aria-hidden":"true",children:"expand_more"}),(0,n.jsx)("span",{className:"w-4 shrink-0 font-mono text-xs text-subtle",children:e.id}),(0,n.jsx)("span",{className:"truncate text-sm font-semibold text-text",children:e.label}),(0,n.jsx)("span",{className:"hidden shrink-0 font-mono text-xs text-subtle sm:inline",children:e.file}),r&&(0,n.jsxs)(l.default,{variant:"neutral",size:"sm",className:"shrink-0",children:[r.length," chars"]})]}),!t&&(0,n.jsxs)("div",{className:"flex shrink-0 gap-1",children:[(0,n.jsx)(a.default,{size:"sm",variant:"ghost",icon:"folder_open","aria-label":`Load ${e.label}`,loading:c,onClick:d}),u]})]}),t&&(0,n.jsxs)("div",{id:`translator-step-${e.id}-editor`,children:[(0,n.jsx)("p",{className:"mb-2 text-xs text-muted",children:e.desc}),(0,n.jsx)("div",{className:"overflow-hidden rounded-xl border border-line",children:(0,n.jsx)(k,{height:"400px",defaultLanguage:"text"===e.lang?"plaintext":"json",language:"text"===e.lang?"plaintext":"json",value:r,onChange:t=>s(e.id,t||""),beforeMount:x,theme:p?f:h,options:w})}),(0,n.jsxs)("div",{className:"mt-3 flex flex-wrap gap-2",children:[(0,n.jsx)(a.default,{size:"sm",variant:"secondary",icon:"folder_open",loading:c,onClick:d,children:"Load"}),(0,n.jsx)(a.default,{size:"sm",variant:"secondary",icon:"data_object",onClick:()=>{let t=function(e){try{return JSON.stringify(JSON.parse(e),null,2)}catch{return null}}(r);null!==t&&s(e.id,t)},children:"Format"}),(0,n.jsx)(a.default,{size:"sm",variant:"secondary",icon:b===`translator-step-${e.id}`?"check":j===`translator-step-${e.id}`?"error":"content_copy",onClick:()=>{r&&g(r,`translator-step-${e.id}`)},children:b===`translator-step-${e.id}`?"Copied":j===`translator-step-${e.id}`?"Couldn't copy":"Copy"}),(0,n.jsx)(y.default,{copied:b,error:j,id:`translator-step-${e.id}`}),u]})]})]})})}N.propTypes={step:u().shape({id:u().number.isRequired,label:u().string.isRequired,file:u().string.isRequired,lang:u().string.isRequired,desc:u().string.isRequired}).isRequired,isExpanded:u().bool,content:u().string,onToggle:u().func.isRequired,onContentChange:u().func.isRequired,onLoad:u().func.isRequired,loadLoading:u().bool,action:u().node};let j=[{id:1,label:"Client request",file:"1_req_client.json",lang:"json",desc:"Raw request from client"},{id:2,label:"Source body",file:"2_req_source.json",lang:"json",desc:"After initial conversion"},{id:3,label:"OpenAI intermediate",file:"3_req_openai.json",lang:"json",desc:"source → openai"},{id:4,label:"Target request",file:"4_req_target.json",lang:"json",desc:"openai → target + URL + headers"},{id:5,label:"Provider response",file:"5_res_provider.txt",lang:"text",desc:"Raw SSE from provider"},{id:6,label:"OpenAI response",file:"6_res_openai.txt",lang:"text",desc:"target → openai (response)"},{id:7,label:"Client response",file:"7_res_client.txt",lang:"text",desc:"Final response to client"}],C={sourceFormat:"info",targetFormat:"brand",provider:"live",model:"neutral"};function O(){let[e,t]=(0,i.useState)({}),[r,c]=(0,i.useState)({1:!0}),[u,p]=(0,i.useState)({}),[m,g]=(0,i.useState)(""),[f,h]=(0,i.useState)(null),x=(e,t)=>p(r=>({...r,[e]:t})),b=(0,i.useRef)(0),v=(0,i.useRef)(null),y=(e,r)=>{if(t(t=>({...t,[e]:r})),1===e){b.current+=1;let e=b.current;clearTimeout(v.current),v.current=setTimeout(()=>{_(r,e)},400)}},k=e=>c(t=>({...t,[e]:!t[e]})),w=e=>c(Object.fromEntries(j.map(t=>[t.id,t.id===e]))),O=async e=>{let t=j.find(t=>t.id===e);g(""),x(`load-${e}`,!0);try{let r=await fetch(`/api/translator/load?file=${t.file}`),n=await r.json();n.success?y(e,n.content):g(n.error||"File not found")}catch(e){g(e.message)}x(`load-${e}`,!1)},_=async(e,t)=>{try{let r="string"==typeof e?JSON.parse(e):e,n=await fetch("/api/translator/translate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({step:1,body:r})}),i=await n.json();i.success&&(void 0===t||t===b.current)&&h(i.result)}catch{}},E=(e,t)=>fetch("/api/translator/save",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({file:e,content:t})}).catch(()=>{}),F=async()=>{g(""),x("toOpenAI",!0);try{let t=e[1],r=JSON.parse(t);E("1_req_client.json",t),E("2_req_source.json",JSON.stringify({timestamp:new Date().toISOString(),headers:{},body:r.body||r},null,2));let n=await fetch("/api/translator/translate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({step:2,body:r})}),i=await n.json();if(!i.success)return void g(i.error);let a=JSON.stringify(i.result.body,null,2);y(3,a),w(3)}catch(e){g(e.message)}x("toOpenAI",!1)},S=async()=>{g(""),x("toTarget",!0);try{let t=e[3],r=JSON.parse(t);E("3_req_openai.json",t);let n=await fetch("/api/translator/translate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({step:3,body:{...r,provider:f?.provider,model:f?.model}})}),i=await n.json();if(!i.success)return void g(i.error);let a={...i.result,provider:f?.provider,model:f?.model};y(4,JSON.stringify(a,null,2)),w(4)}catch(e){g(e.message)}x("toTarget",!1)},T=async()=>{g(""),x("send",!0);try{let t=e[4],r=JSON.parse(t);E("4_req_target.json",t);let n=r.provider||f?.provider,i=r.model||f?.model;if(!n||!i)return void g("Missing provider or model. Please run step 1 first to detect them.");let a=await fetch("/api/translator/send",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:n,model:i,body:r.body||r})});if(!a.ok){let e=await a.json().catch(()=>({error:a.statusText}));g(e.error||"Send failed");return}let o=a.body.getReader(),s=new TextDecoder,l="";for(;;){let{done:e,value:t}=await o.read();if(e)break;l+=s.decode(t,{stream:!0})}y(5,l),w(5),await fetch("/api/translator/save",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({file:"5_res_provider.txt",content:l})})}catch(e){g(e.message)}finally{x("send",!1)}};return(0,n.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,n.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{className:"text-xs font-semibold uppercase tracking-[0.08em] text-subtle",children:"Debug"}),(0,n.jsx)("h2",{className:"font-display text-[28px] font-bold tracking-[-0.02em] text-text",children:"Translator debug"}),(0,n.jsx)("p",{className:"mt-1 text-sm text-muted",children:"Replay request flow — matches log files"})]}),f&&(0,n.jsx)(o.default,{padding:"xs",className:"flex flex-wrap items-center gap-2",role:"status",children:["sourceFormat","targetFormat","provider","model"].map(e=>(0,n.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:["provider"===e&&f.provider&&(0,n.jsx)(s.default,{providerId:f.provider,size:"sm"}),(0,n.jsxs)(l.default,{variant:C[e],size:"sm",children:[(0,n.jsxs)("span",{className:"opacity-70",children:[e,":"]})," ",f[e]]})]},e))})]}),m&&(0,n.jsx)(d.default,{variant:"err",title:"Translator step failed",children:m}),j.map(t=>{var i;return(0,n.jsx)(N,{step:t,isExpanded:!!r[t.id],content:e[t.id]||"",onToggle:k,onContentChange:y,onLoad:()=>O(t.id),loadLoading:u[`load-${t.id}`],action:1===(i=t.id)?(0,n.jsx)(a.default,{size:"sm",icon:"arrow_forward",loading:u.toOpenAI,onClick:F,children:"To OpenAI"}):3===i?(0,n.jsx)(a.default,{size:"sm",icon:"arrow_forward",loading:u.toTarget,onClick:S,children:"To target"}):4===i?(0,n.jsx)(a.default,{size:"sm",icon:"send",loading:u.send,onClick:T,children:"Send"}):null},t.id)})]})}},50770:(e,t,r)=>{"use strict";r.d(t,{PK:()=>g,S3:()=>l,XY:()=>s,lN:()=>d,pN:()=>h,pi:()=>m,r4:()=>p,vE:()=>u,vO:()=>a});let n={connected:"ok",healthy:"ok",active:"ok",ok:"ok",success:"ok",cooldown:"warn",warning:"warn",low:"warn",warn:"warn",error:"err",empty:"err",err:"err",oauth:"info",info:"info","api-key":"brand",brand:"brand",live:"live",disabled:"neutral",off:"neutral",neutral:"neutral"},i={ok:"bg-ok-bg text-ok",warn:"bg-warn-bg text-warn",err:"bg-err-bg text-err",info:"bg-sky-bg text-sky-ink",brand:"bg-coral-bg text-coral-ink",live:"bg-lime-bg text-lime-ink",neutral:"bg-raised text-muted shadow-[inset_0_0_0_1px_var(--signal-line)]"},a={xs:"h-5 px-2 text-[11px]",sm:"h-5 px-2 text-[11px]",md:"h-6 px-2.5 text-xs",lg:"h-7 px-3 text-sm"},o={default:"neutral",primary:"brand",success:"ok",warning:"warn",error:"err"},s=[...new Set([...Object.keys(i),...Object.keys(o),...Object.keys(n)])];function l(e="neutral",t="md"){let r=a[t];if(!r)throw Error(`pillClasses: unknown size "${t}"`);return`${i[function(e){if(i[e])return e;let t=o[e]??n[e];if(!t)throw Error(`resolvePillVariant: unknown variant "${e}"`);return t}(e)]} ${r}`}let d={ok:"bg-ok",warn:"bg-warn",err:"bg-err",live:"bg-lime",info:"bg-sky",brand:"bg-coral",neutral:"bg-subtle"},c=new Set(["unlimited","credits"]);function u(e,t){if(void 0!==t&&!c.has(t))throw Error(`meterVariant: unknown kind "${t}"`);if("number"!=typeof e||!Number.isFinite(e))throw Error(`meterVariant: expected a finite number, got ${e}`);return"unlimited"===t?"live":"credits"===t?"info":e<=20?"err":e<=45?"warn":"ok"}function p(e){if("number"!=typeof e||!Number.isFinite(e))throw Error(`meterValue: expected a finite number, got ${e}`);return Math.min(100,Math.max(0,e))}let m="border-b border-line",g="whitespace-nowrap text-xs font-semibold text-muted",f={LOG:"signal-terminal-log",INFO:"signal-terminal-info",WARN:"signal-terminal-warn",ERROR:"signal-terminal-error",DEBUG:"signal-terminal-debug"};function h(e){let t=f[e];if(!t)throw Error(`terminalLevelClass: unknown level "${e}"`);return t}},55429:(e,t,r)=>{Promise.resolve().then(r.bind(r,49864))},56006:(e,t,r)=>{"use strict";r.d(t,{default:()=>s});var n=r(95155),i=r(14051),a=r.n(i);let o={info:{classes:"bg-sky-bg text-sky-ink",icon:"info"},warn:{classes:"bg-warn-bg text-warn",icon:"warning"},err:{classes:"bg-err-bg text-err",icon:"error"},ok:{classes:"bg-ok-bg text-ok",icon:"check_circle"}};function s({variant:e="info",title:t,children:r,icon:i,className:a}){let l=o[e];if(!l)throw Error(`Callout: unknown variant "${e}"`);return(0,n.jsxs)("div",{role:"err"===e?"alert":"status",className:`flex gap-3 rounded-xl p-4 text-sm ${l.classes}${a?` ${a}`:""}`,children:[(0,n.jsx)("span",{className:"material-symbols-outlined shrink-0 text-[20px]","aria-hidden":"true",children:i??l.icon}),(0,n.jsxs)("div",{className:"min-w-0 text-text",children:[t&&(0,n.jsx)("p",{className:"font-semibold",children:t}),r&&(0,n.jsx)("div",{className:"text-muted",children:r})]})]})}s.propTypes={variant:a().oneOf(Object.keys(o)),title:a().node,children:a().node,icon:a().string,className:a().string}},58897:(e,t,r)=>{"use strict";r.d(t,{default:()=>o});var n=r(95155),i=r(14051),a=r.n(i);function o({copied:e,error:t,id:r}){let i=e=>null!=e&&(void 0===r||e===r);return(0,n.jsx)("span",{"aria-live":"polite",className:"sr-only",children:i(t)?"Couldn't copy":i(e)?"Copied":""})}o.propTypes={copied:a().string,error:a().string,id:a().string}},84588:(e,t,r)=>{"use strict";r.d(t,{default:()=>l});var n=r(95155),i=r(14051),a=r.n(i),o=r(31474);let s={none:"",xs:"p-3",sm:"p-4",md:"p-6",lg:"p-8"};function l({children:e,title:t,subtitle:r,icon:i,action:a,as:d="h2",padding:c="md",hover:u=!1,elev:p=!1,className:m,role:g,...f}){if(void 0===s[c])throw Error(`Card: unknown padding "${c}"`);let h=g||(f["aria-label"]||f["aria-labelledby"]?"region":void 0);return(0,n.jsxs)("div",{role:h,className:(0,o.cn)("rounded-2xl border border-line bg-panel shadow-card",u&&"cursor-pointer transition-colors duration-150 hover:border-coral/40",s[c],m),...f,children:[(t||a)&&(0,n.jsx)(l.Header,{title:t,subtitle:r,icon:i,actions:a,as:d,className:"mb-4"}),e]})}l.propTypes={children:a().node,title:a().node,subtitle:a().node,icon:a().string,action:a().node,as:a().oneOf(["h2","h3","h4"]),padding:a().oneOf(Object.keys(s)),hover:a().bool,elev:a().bool,className:a().string,role:a().string},l.Header=function({title:e,subtitle:t,icon:r,actions:i,as:a="h2",className:s}){return(0,n.jsxs)("div",{className:(0,o.cn)("flex flex-wrap items-center justify-between gap-3",s),children:[(0,n.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[r&&(0,n.jsx)("span",{className:"flex size-10 shrink-0 items-center justify-center rounded-[10px] bg-coral-bg text-coral-ink",children:(0,n.jsx)("span",{className:"material-symbols-outlined text-[20px]","aria-hidden":"true",children:r})}),(0,n.jsxs)("div",{className:"min-w-0",children:[e&&(0,n.jsx)(a,{className:"font-display text-lg font-bold text-text",children:e}),t&&(0,n.jsx)("p",{className:"text-sm text-muted",children:t})]})]}),i&&(0,n.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:i})]})},l.Header.propTypes={title:a().node,subtitle:a().node,icon:a().string,actions:a().node,as:a().oneOf(["h2","h3","h4"]),className:a().string},l.Section=function({children:e,className:t,...r}){return(0,n.jsx)("div",{className:(0,o.cn)("rounded-xl border border-line bg-raised p-4",t),...r,children:e})},l.Row=function({children:e,className:t,...r}){return(0,n.jsx)("div",{className:(0,o.cn)("-mx-3 border-b border-line p-3 px-3 transition-colors last:border-b-0 hover:bg-raised",t),...r,children:e})},l.ListItem=function({children:e,actions:t,className:r,...i}){return(0,n.jsxs)("div",{className:(0,o.cn)("group -mx-3 flex items-center justify-between border-b border-line p-3 px-3 transition-colors last:border-b-0 hover:bg-raised",r),...i,children:[(0,n.jsx)("div",{className:"min-w-0 flex-1",children:e}),t&&(0,n.jsx)("div",{className:"flex items-center gap-1 opacity-0 transition-opacity group-focus-within:opacity-100 group-hover:opacity-100",children:t})]})}},90085:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});var n=r(1934),i=r(31692),a=r(28745);function o(e){let t=document.documentElement,r=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";"dark"===("system"===e?r:e)?t.classList.add("dark"):t.classList.remove("dark")}let s=(0,n.v)((0,i.Zr)((e,t)=>({theme:a.B2.defaultTheme,setTheme:t=>{e({theme:t}),o(t)},toggleTheme:()=>{let r="dark"===t().theme?"light":"dark";e({theme:r}),o(r)},initTheme:()=>{o(t().theme)}}),{name:a.B2.storageKey}))},92542:(e,t,r)=>{"use strict";r.d(t,{default:()=>c});var n=r(95155),i=r(98500),a=r.n(i),o=r(14051),s=r.n(o),l=r(31474),d=r(4650);function c({children:e,variant:t="primary",size:r="md",icon:i,iconRight:o,href:s,disabled:u=!1,loading:p=!1,fullWidth:m=!1,className:g,...f}){let h=(0,l.cn)("inline-flex items-center justify-center gap-2 font-semibold transition-all duration-150 ease-out cursor-pointer","active:scale-[0.97] focus-visible:outline-none focus-visible:shadow-focus","disabled:opacity-50 disabled:cursor-not-allowed disabled:active:scale-100","aria-disabled:opacity-50 aria-disabled:cursor-not-allowed aria-disabled:active:scale-100",(0,d.V7)(t,r),m&&"w-full",g),x=(0,n.jsxs)(n.Fragment,{children:[p?(0,n.jsx)("span",{className:"material-symbols-outlined animate-spin text-[18px]","aria-hidden":"true",children:"progress_activity"}):i?(0,n.jsx)("span",{className:"material-symbols-outlined text-[18px]","aria-hidden":"true",children:i}):null,e,o&&!p&&(0,n.jsx)("span",{className:"material-symbols-outlined text-[18px] rtl:-scale-x-100","aria-hidden":"true",children:o})]});if(s&&!(u||p)){let{type:e,...t}=f;return t.className=h,/^(https?:|mailto:|tel:|#)/.test(s)?(0,n.jsx)("a",{href:s,...t,children:x}):(0,n.jsx)(a(),{href:s,...t,children:x})}return(0,n.jsx)("button",{className:h,disabled:u||p,"aria-busy":p||void 0,...f,children:x})}c.propTypes={children:s().node,variant:s().oneOf(Object.keys(d.Ck)),size:s().oneOf(Object.keys(d.GO)),icon:s().string,iconRight:s().string,href:s().string,disabled:s().bool,loading:s().bool,fullWidth:s().bool,className:s().string}},96975:(e,t,r)=>{"use strict";r.d(t,{default:()=>u});var n=r(95155),i=r(14051),a=r.n(i),o=r(12115),s=r(7256),l=r(8247);let d={sm:{tile:"size-6 rounded-md",text:"text-[10px]"},md:{tile:"size-9 rounded-[10px]",text:"text-sm"},lg:{tile:"size-14 rounded-[14px]",text:"text-lg"}},c={ok:"bg-ok",warn:"bg-warn",err:"bg-err",info:"bg-sky",live:"bg-lime",neutral:"bg-line"};function u({providerId:e,size:t="md",status:r,brand:i,iconSrc:a,className:p}){let[m,g]=(0,o.useState)(null),f=d[t];if(!f)throw Error(`ProviderTile: unknown size "${t}"`);if(void 0!==r&&!c[r])throw Error(`ProviderTile: unknown status "${r}"`);let h=(0,s.rs)(e),x=i??(0,s.Do)(h),b=m===h?null:a??(0,l.HY)(h),v=b?{style:{backgroundColor:`color-mix(in srgb, ${x.color} 8%, #ffffff)`},className:""}:{style:{backgroundColor:x.color},className:`font-display font-bold text-white shadow-[inset_0_0_0_1px_rgba(255,255,255,0.14)] ${f.text}`};return(0,n.jsxs)("span",{"aria-hidden":"true",title:e,style:v.style,className:`relative inline-flex shrink-0 items-center justify-center ${f.tile} ${v.className}${p?` ${p}`:""}`,children:[b?(0,n.jsx)("img",{src:b,alt:"",loading:"lazy",decoding:"async",className:"size-full rounded-[inherit] object-contain",onError:()=>{(0,l.Kw)(h),g(h)}}):x.monogram,r&&(0,n.jsx)("span",{className:`absolute -end-0.5 -bottom-0.5 size-2.5 rounded-full shadow-[0_0_0_2px_var(--signal-panel)] ${c[r]}`})]})}u.propTypes={providerId:a().string.isRequired,size:a().oneOf(Object.keys(d)),status:a().oneOf(Object.keys(c)),brand:a().shape({color:a().string.isRequired,monogram:a().string.isRequired}),iconSrc:a().string,className:a().string}}},e=>{e.O(0,[1610,1372,2903,8441,3794,7358],()=>e(e.s=55429)),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3528],{1620:(e,t,r)=>{"use strict";r.d(t,{D:()=>l});var n=r(12115),i=r(90085);function a(e){let t=window.matchMedia("(prefers-color-scheme: dark)");return t.addEventListener("change",e),()=>t.removeEventListener("change",e)}function o(){return window.matchMedia("(prefers-color-scheme: dark)").matches}function s(){return!1}function l(){let{theme:e,setTheme:t,toggleTheme:r,initTheme:l}=(0,i.A)(),d=(0,n.useSyncExternalStore)(a,o,s);(0,n.useEffect)(()=>{l()},[l]),(0,n.useEffect)(()=>{if("system"!==e)return;let t=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>l();return t.addEventListener("change",r),()=>t.removeEventListener("change",r)},[e,l]);let c="dark"===e||"system"===e&&d;return{theme:e,setTheme:t,toggleTheme:r,isDark:c}}},4553:(e,t,r)=>{"use strict";r.d(t,{DM:()=>o,Hc:()=>c,qt:()=>l,qx:()=>d});var n=r(35652);let{BRAND_IDS:i,DEFAULT_BRAND_ID:a,ACTIVE_BRAND_ID:o,isActiveBrand:s,BRAND:l,LEGACY:d,ACTIVE:c,UPSTREAM_CLIENT_IDS:u,envName:p,readEnv:m,warnLegacyOnce:g,header:f,legacyHeaderNames:h}=r.n(n)()},4650:(e,t,r)=>{"use strict";async function n(e){if("u">typeof navigator&&navigator?.clipboard?.writeText)try{await navigator.clipboard.writeText(String(e));return}catch{}if("u"<typeof document)throw Error("copyTextToClipboard: clipboard API unavailable");let t=document.createElement("textarea");t.value=String(e),t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();let r=!1;try{r=document.execCommand("copy")}finally{document.body.removeChild(t)}if(!r)throw Error("copyTextToClipboard: execCommand('copy') failed")}function i(e,{min:t,max:r}={}){if(""===e||null==e)return e;let n=Number(e);if(!Number.isFinite(n))return e;let a=n;return Number.isFinite(t)&&(a=Math.max(t,a)),Number.isFinite(r)&&(a=Math.min(r,a)),a}function a(e,{min:t,max:r,step:n=1,direction:o}={}){let s=""===e||null==e?NaN:Number(i(e,{min:t,max:r})),l=Number.isFinite(s)?s:Number.isFinite(t)?t:0,d=Math.max(String(n).split(".")[1]?.length??0,String(l).split(".")[1]?.length??0);return i(Number((l+o*n).toFixed(Math.min(d,10))),{min:t,max:r})}function o(e,t,{length:r,rtl:n=!1}={}){if(!Number.isInteger(r)||r<=0)return e;let i=(e%r+r)%r;switch(t){case"ArrowRight":return(i+(n?-1:1)+r)%r;case"ArrowLeft":return(i+(n?1:-1)+r)%r;case"ArrowDown":return(i+1)%r;case"ArrowUp":return(i-1+r)%r;case"Home":return 0;case"End":return r-1;default:return i}}function s(e){return["ArrowRight","ArrowLeft","ArrowDown","ArrowUp","Home","End"].includes(e)}r.d(t,{CD:()=>a,Ck:()=>l,Ec:()=>c,GO:()=>d,Gc:()=>p,JF:()=>s,N:()=>i,V7:()=>u,eM:()=>n,lZ:()=>o,qM:()=>m});let l={primary:"bg-lime text-on-lime border border-transparent shadow-[inset_0_0_0_1px_rgba(0,0,0,0.14)] hover:brightness-95",secondary:"bg-raised text-text border border-line hover:bg-line/60",ghost:"bg-transparent text-text border border-line hover:bg-raised",danger:"bg-err-bg text-err border border-transparent hover:bg-err/15",outline:"bg-transparent text-muted border border-line hover:bg-raised hover:text-text",success:"bg-ok-bg text-ok border border-transparent hover:bg-ok/15"},d={sm:"h-10 px-3 text-sm rounded-lg",md:"h-11 px-4 text-sm rounded-lg",lg:"h-11 px-6 text-sm rounded-lg"},c={sm:"h-9 text-xs",md:"h-9 text-sm",lg:"h-11 text-sm"};function u(e="primary",t="md"){let r=l[e];if(!r)throw Error(`buttonClasses: unknown variant "${e}"`);let n=d[t];if(!n)throw Error(`buttonClasses: unknown size "${t}"`);return`${r} ${n}`}function p(e,{hint:t,error:r}={}){return r?`${e}-error`:t?`${e}-hint`:void 0}function m(e){return null!=e&&!1!==e&&""!==e}},8247:(e,t,r)=>{"use strict";r.d(t,{HY:()=>l,Kw:()=>d});let n={"perplexity-agent":"perplexity","gitlab-duo":"gitlab","vercel-ai-gateway":"vercel","ollama-search":"ollama"};function i(e){return e.startsWith("openai-compatible")?"oai-cc":e.startsWith("anthropic-compatible")?"anthropic-m":""}let a=new Set;function o(e){return e&&"string"==typeof e?e.trim().toLowerCase():""}let s=new Set(["meta-code"]);function l(e){let t=function(e){let t=o(e);if(!t||a.has(t))return"";let r=n[t]||i(t)||t;return a.has(r)?"":r}(e);return t?`/providers/${t}.${s.has(t)?"svg":"webp"}`:null}function d(e){let t=o(e);t&&a.add(t);let r=n[t]||i(t);r&&a.add(r)}},11059:(e,t,r)=>{"use strict";r.d(t,{C:()=>a});var n=r(12115),i=r(4650);function a(e=2e3){let[t,r]=(0,n.useState)(null),[o,s]=(0,n.useState)(null),l=(0,n.useRef)(null),d=(0,n.useRef)(0);return(0,n.useEffect)(()=>()=>{l.current&&clearTimeout(l.current)},[]),{copied:t,error:o,message:null!=o?"Couldn't copy":null!=t?"Copied":"",copy:(0,n.useCallback)(async(t,n="default")=>{let a=++d.current;l.current&&(clearTimeout(l.current),l.current=null);try{if(await (0,i.eM)(t),a!==d.current)return!0;return r(n),s(null),l.current=setTimeout(()=>{r(null),s(null)},e),!0}catch{if(a!==d.current)return!1;return r(null),s(n),l.current=setTimeout(()=>{r(null),s(null)},e),!1}},[e])}}},19123:(e,t,r)=>{"use strict";r.d(t,{default:()=>s});var n=r(95155),i=r(14051),a=r.n(i),o=r(50770);function s({children:e,variant:t="neutral",size:r="md",dot:i=!1,className:a}){return(0,n.jsxs)("span",{className:`inline-flex items-center gap-1.5 rounded-full font-semibold whitespace-nowrap ${(0,o.S3)(t,r)}${a?` ${a}`:""}`,children:[i&&(0,n.jsx)("span",{"aria-hidden":"true",className:"size-2 rounded-full bg-current"}),e]})}s.propTypes={children:a().node,variant:a().oneOf(o.XY),size:a().oneOf(Object.keys(o.vO)),dot:a().bool,className:a().string}},25086:(e,t,r)=>{"use strict";r.d(t,{CardSkeleton:()=>u,PageLoading:()=>l,Skeleton:()=>d,SkeletonText:()=>c,Spinner:()=>s,default:()=>p});var n=r(95155),i=r(14051),a=r.n(i),o=r(31474);function s({size:e="md",className:t}){return(0,n.jsx)("span",{role:"status","aria-label":"Loading",className:(0,o.cn)("material-symbols-outlined animate-spin text-coral",{sm:"text-[16px]",md:"text-[24px]",lg:"text-[32px]",xl:"text-[48px]"}[e],t),children:"progress_activity"})}function l({message:e="Loading..."}){return(0,n.jsxs)("div",{className:"fixed inset-0 z-50 flex flex-col items-center justify-center bg-bg",children:[(0,n.jsx)(s,{size:"xl"}),(0,n.jsx)("p",{className:"mt-4 text-muted",children:e})]})}function d({className:e,...t}){return(0,n.jsx)("div",{"aria-hidden":"true",className:(0,o.cn)("animate-pulse rounded-[10px] bg-raised",e),...t})}function c({lines:e=3,className:t}){let r=Array.from({length:e},(e,t)=>t);return(0,n.jsx)("div",{className:(0,o.cn)("flex flex-col gap-2",t),"aria-hidden":"true",children:r.map(e=>(0,n.jsx)(d,{className:(0,o.cn)("h-3",e===r.length-1?"w-2/3":"w-full")},`line-${e}`))})}function u(){return(0,n.jsxs)("div",{className:"rounded-2xl border border-line bg-panel p-6 shadow-card",children:[(0,n.jsxs)("div",{className:"mb-4 flex items-center justify-between",children:[(0,n.jsx)(d,{className:"h-4 w-24"}),(0,n.jsx)(d,{className:"size-10 rounded-[10px]"})]}),(0,n.jsx)(d,{className:"mb-2 h-8 w-16"}),(0,n.jsx)(d,{className:"h-3 w-20"})]})}function p({type:e="spinner",...t}){switch(e){case"page":return(0,n.jsx)(l,{...t});case"skeleton":return(0,n.jsx)(d,{...t});case"card":return(0,n.jsx)(u,{...t});default:return(0,n.jsx)(s,{...t})}}d.propTypes={className:a().string},c.propTypes={lines:a().number,className:a().string}},28745:(e,t,r)=>{"use strict";r.d(t,{vQ:()=>a,UY:()=>d,Nu:()=>o,B2:()=>l,h0:()=>s});var n=r(4553),i=r(41463);let a={name:`${n.Hc.name} Proxy`,description:"AI infrastructure management",version:"1.0.3",build:{channel:i.env.NEXT_PUBLIC_BUILD_CHANNEL||"",sha:i.env.NEXT_PUBLIC_BUILD_SHA||""}},o={changelogUrl:"https://raw.githubusercontent.com/tokenhop/tokenhop/refs/heads/master/CHANGELOG.md"},s={appPort:20128},l={storageKey:"theme",defaultTheme:"dark"},d={maxLines:200,pollIntervalMs:1e3}},35652:(e,t,r)=>{"use strict";var n,i=r(41463);let a=Object.freeze(["9router","tokenhop"]),o="tokenhop";function s(e,t){if(a.includes(e))return e;let r=a.map(e=>`"${e}"`).join(", ");throw Error(`${t}: unknown brand ${JSON.stringify(e)}; allowed values: ${r}`)}let l=""==(n="tokenhop")?o:s(n,"NEXT_PUBLIC_BRAND"),d=Object.freeze({name:"tokenhop",slug:"tokenhop",envPrefix:"TOKENHOP_",headerPrefix:"x-tokenhop-",jcodeApiKeyEnv:"JCODE_TOKENHOP_API_KEY",defaultApiKey:"sk_tokenhop",dataDirName:"tokenhop",samlIssuerDefault:"urn:tokenhop:sp",mitmCaCommonName:"tokenhop MITM Root CA",mitmCaOrg:"tokenhop",mitmCertFile:"tokenhop-root-ca.crt",pidFile:"tokenhop.pid",autostartLabel:"dev.tokenhop.autostart",autostartDesktopFile:"tokenhop.desktop",autostartVbsFile:"tokenhop.vbs",clientConfigKey:"tokenhop",customModelIdPrefix:"custom:tokenhop-",storageKeyPrefix:"tokenhop.",eventPrefix:"tokenhop:",backupFilePrefix:"tokenhop-backup-",npmPackage:"tokenhop",appPackage:"tokenhop-app",repoSlug:"tokenhop/tokenhop",repoUrl:"https://github.com/tokenhop/tokenhop",imageName:"ghcr.io/tokenhop/tokenhop",websiteUrl:"https://tokenhop.ai",docsUrl:"https://tokenhop.dev",wordmark:"tokenhop",favicon:"/brand/favicon.svg",faviconIco:"/brand/favicon.ico",appIcon192:"/brand/icons/icon-192.svg",appIcon512:"/brand/icons/icon-512.svg",trayIconName:"icon-tokenhop",trayIconTemplate:!0}),c=Object.freeze({names:Object.freeze(["9Router","9router"]),slug:"9router",envPrefixes:Object.freeze(["NINEROUTER_","NINE_ROUTER_"]),headerPrefix:"x-9router-",jcodeApiKeyEnv:"JCODE_9ROUTER_API_KEY",defaultApiKey:"sk_9router",dataDirName:"9router",samlIssuerDefault:"urn:9router:sp",mitmCaCommonName:"9Router MITM Root CA",mitmCaOrg:"9Router",mitmCertFile:"9router-root-ca.crt",pidFile:"9router.pid",autostartLabel:"com.9router.autostart",autostartDesktopFile:"9router.desktop",autostartVbsFile:"9router.vbs",clientConfigKeys:Object.freeze(["9router","9Router"]),customModelIdPrefix:"custom:9Router-",storageKeyPrefix:"9router.",eventPrefix:"9router:",backupFilePrefix:"9router-backup-",npmPackage:"9router",appPackage:"9router-app",repoSlug:"yandy-r/9router",repoUrl:"https://github.com/yandy-r/9router",imageName:"ghcr.io/yandy-r/9router",wordmark:"router",favicon:"/favicon.svg",faviconIco:"/favicon.ico",appIcon192:"/icons/icon-192.svg",appIcon512:"/icons/icon-512.svg",trayIconName:"icon",trayIconTemplate:!1}),u=Object.freeze({kimiPlatform:"9router",clineUserAgentProduct:"9Router",clineClientType:"9router",devinMcpClientName:"9router",coworkMcpClientName:"9router",cursorMcpProvider:"9router",glmMcpClientName:"9router",xaiUserAgent:"grok-cli/9router",xiaomiKeyNamePrefix:"9router-xmd-",githubUserAgent:"9Router",proxyTestUserAgent:"9Router",denoRelayKind:"9router-relay"}),p=new Set(["repoSlug","repoUrl","imageName","websiteUrl","docsUrl"]),m={name:"names",envPrefix:"envPrefixes",clientConfigKey:"clientConfigKeys"},g="tokenhop"===l?d:Object.freeze(Object.fromEntries(Object.keys(d).map(e=>{let t;return[e,p.has(e)?d[e]:Array.isArray(t=c[m[e]||e])?t[0]:t]}))),f=new Set;function h(e,t,r){if("tokenhop"!==l)return!1;let n=`${e}\u0000${t}`;return!f.has(n)&&(f.add(n),console.warn(`[tokenhop] deprecated ${e} "${t}" → use "${r}" (legacy support ends in v2.0.0)`),!0)}let x=/^[A-Z0-9]+(_[A-Z0-9]+)*$/;function b(e){if("string"!=typeof e||!x.test(e))throw Error(`envName: invalid suffix ${JSON.stringify(e)}; expected e.g. "PEER_TOKEN"`);return d.envPrefix+e}let v=/^(?!x-)[a-z0-9]+(-[a-z0-9]+)*$/;function y(e){return g.headerPrefix+function(e,t){if("string"!=typeof e||!v.test(e))throw Error(`${t}: invalid header name ${JSON.stringify(e)}; expected a bare lowercase name like "connection-id"`);return e}(e,"header")}e.exports={BRAND_IDS:a,DEFAULT_BRAND_ID:o,ACTIVE_BRAND_ID:l,isActiveBrand:function(e){return s(e,"isActiveBrand")===l},BRAND:d,LEGACY:c,ACTIVE:g,UPSTREAM_CLIENT_IDS:u,envName:b,readEnv:function(e,t=i.env){let r=b(e);if(void 0!==t[r])return t[r];for(let n of c.envPrefixes){let i=n+e;if(void 0!==t[i])return h("env var",i,r),t[i]}},warnLegacyOnce:h,header:y,legacyHeaderNames:function(e){let t=y(e);return[c.headerPrefix+e].filter(e=>e!==t)}}},49864:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>O});var n=r(95155),i=r(12115),a=r(92542),o=r(84588),s=r(96975),l=r(19123),d=r(56006),c=r(14051),u=r.n(c),p=r(37206),m=r(1620);function g(e,t){return"function"!=typeof getComputedStyle?t:getComputedStyle(document.documentElement).getPropertyValue(e).trim()||t}let f="signal-dark",h="signal-light";function x(e){e.editor.defineTheme(f,{base:"vs-dark",inherit:!0,rules:[],colors:{"editor.background":g("--signal-panel","#15171D"),"editor.foreground":g("--signal-text","#F3F2EE"),"editor.lineHighlightBackground":g("--signal-raised","#1C1F27"),"editorLineNumber.foreground":g("--signal-subtle","#838898"),"editorLineNumber.activeForeground":g("--signal-text","#F3F2EE"),"editorCursor.foreground":g("--signal-coral","#FF6A48"),"editor.selectionBackground":`${g("--signal-coral","#FF6A48")}33`,"editor.inactiveSelectionBackground":`${g("--signal-coral","#FF6A48")}22`,"editorWidget.background":g("--signal-panel","#15171D"),"editorWidget.border":g("--signal-line","#2A2E39"),"editorHoverWidget.background":g("--signal-raised","#1C1F27"),"editorHoverWidget.border":g("--signal-line","#2A2E39"),"editorSuggestWidget.background":g("--signal-panel","#15171D"),"editorSuggestWidget.border":g("--signal-line","#2A2E39"),"editorGutter.background":g("--signal-panel","#15171D"),"editor.lineHighlightBorder":"#00000000"}}),e.editor.defineTheme(h,{base:"vs",inherit:!0,rules:[],colors:{"editor.background":g("--signal-panel","#FFFFFF"),"editor.foreground":g("--signal-text","#16171C"),"editor.lineHighlightBackground":g("--signal-raised","#F7F5EF"),"editorLineNumber.foreground":g("--signal-subtle","#6C7080"),"editorLineNumber.activeForeground":g("--signal-text","#16171C"),"editorCursor.foreground":g("--signal-coral","#CF4323"),"editor.selectionBackground":`${g("--signal-coral","#CF4323")}33`,"editor.inactiveSelectionBackground":`${g("--signal-coral","#CF4323")}22`,"editorWidget.background":g("--signal-panel","#FFFFFF"),"editorWidget.border":g("--signal-line","#E2DED3"),"editorHoverWidget.background":g("--signal-raised","#F7F5EF"),"editorHoverWidget.border":g("--signal-line","#E2DED3"),"editorSuggestWidget.background":g("--signal-panel","#FFFFFF"),"editorSuggestWidget.border":g("--signal-line","#E2DED3"),"editorGutter.background":g("--signal-panel","#FFFFFF"),"editor.lineHighlightBorder":"#00000000"}})}var b=r(25086),v=r(11059),y=r(58897);let k=(0,p.default)(()=>r.e(8202).then(r.bind(r,28202)),{loadableGenerated:{webpack:()=>[28202]},ssr:!1,loading:()=>(0,n.jsx)(b.Skeleton,{className:"h-[400px] w-full rounded-none border-0"})}),w={minimap:{enabled:!1},fontSize:12,lineNumbers:"on",scrollBeyondLastLine:!1,wordWrap:"on",automaticLayout:!0};function N({step:e,isExpanded:t,content:r,onToggle:i,onContentChange:s,onLoad:d,loadLoading:c,action:u}){let{isDark:p}=(0,m.D)(),{copy:g,copied:b,error:j}=(0,v.C)();return(0,n.jsx)(o.default,{padding:"none",children:(0,n.jsxs)("div",{className:"space-y-3 p-4",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,n.jsxs)("button",{type:"button",onClick:()=>i(e.id),"aria-expanded":t,"aria-controls":`translator-step-${e.id}-editor`,className:"flex min-w-0 flex-1 items-center gap-2 text-start focus-visible:outline-none focus-visible:shadow-focus",children:[(0,n.jsx)("span",{className:`material-symbols-outlined shrink-0 text-[20px] text-muted transition-transform ${t?"rotate-180":""}`,"aria-hidden":"true",children:"expand_more"}),(0,n.jsx)("span",{className:"w-4 shrink-0 font-mono text-xs text-subtle",children:e.id}),(0,n.jsx)("span",{className:"truncate text-sm font-semibold text-text",children:e.label}),(0,n.jsx)("span",{className:"hidden shrink-0 font-mono text-xs text-subtle sm:inline",children:e.file}),r&&(0,n.jsxs)(l.default,{variant:"neutral",size:"sm",className:"shrink-0",children:[r.length," chars"]})]}),!t&&(0,n.jsxs)("div",{className:"flex shrink-0 gap-1",children:[(0,n.jsx)(a.default,{size:"sm",variant:"ghost",icon:"folder_open","aria-label":`Load ${e.label}`,loading:c,onClick:d}),u]})]}),t&&(0,n.jsxs)("div",{id:`translator-step-${e.id}-editor`,children:[(0,n.jsx)("p",{className:"mb-2 text-xs text-muted",children:e.desc}),(0,n.jsx)("div",{className:"overflow-hidden rounded-xl border border-line",children:(0,n.jsx)(k,{height:"400px",defaultLanguage:"text"===e.lang?"plaintext":"json",language:"text"===e.lang?"plaintext":"json",value:r,onChange:t=>s(e.id,t||""),beforeMount:x,theme:p?f:h,options:w})}),(0,n.jsxs)("div",{className:"mt-3 flex flex-wrap gap-2",children:[(0,n.jsx)(a.default,{size:"sm",variant:"secondary",icon:"folder_open",loading:c,onClick:d,children:"Load"}),(0,n.jsx)(a.default,{size:"sm",variant:"secondary",icon:"data_object",onClick:()=>{let t=function(e){try{return JSON.stringify(JSON.parse(e),null,2)}catch{return null}}(r);null!==t&&s(e.id,t)},children:"Format"}),(0,n.jsx)(a.default,{size:"sm",variant:"secondary",icon:b===`translator-step-${e.id}`?"check":j===`translator-step-${e.id}`?"error":"content_copy",onClick:()=>{r&&g(r,`translator-step-${e.id}`)},children:b===`translator-step-${e.id}`?"Copied":j===`translator-step-${e.id}`?"Couldn't copy":"Copy"}),(0,n.jsx)(y.default,{copied:b,error:j,id:`translator-step-${e.id}`}),u]})]})]})})}N.propTypes={step:u().shape({id:u().number.isRequired,label:u().string.isRequired,file:u().string.isRequired,lang:u().string.isRequired,desc:u().string.isRequired}).isRequired,isExpanded:u().bool,content:u().string,onToggle:u().func.isRequired,onContentChange:u().func.isRequired,onLoad:u().func.isRequired,loadLoading:u().bool,action:u().node};let j=[{id:1,label:"Client request",file:"1_req_client.json",lang:"json",desc:"Raw request from client"},{id:2,label:"Source body",file:"2_req_source.json",lang:"json",desc:"After initial conversion"},{id:3,label:"OpenAI intermediate",file:"3_req_openai.json",lang:"json",desc:"source → openai"},{id:4,label:"Target request",file:"4_req_target.json",lang:"json",desc:"openai → target + URL + headers"},{id:5,label:"Provider response",file:"5_res_provider.txt",lang:"text",desc:"Raw SSE from provider"},{id:6,label:"OpenAI response",file:"6_res_openai.txt",lang:"text",desc:"target → openai (response)"},{id:7,label:"Client response",file:"7_res_client.txt",lang:"text",desc:"Final response to client"}],C={sourceFormat:"info",targetFormat:"brand",provider:"live",model:"neutral"};function O(){let[e,t]=(0,i.useState)({}),[r,c]=(0,i.useState)({1:!0}),[u,p]=(0,i.useState)({}),[m,g]=(0,i.useState)(""),[f,h]=(0,i.useState)(null),x=(e,t)=>p(r=>({...r,[e]:t})),b=(0,i.useRef)(0),v=(0,i.useRef)(null),y=(e,r)=>{if(t(t=>({...t,[e]:r})),1===e){b.current+=1;let e=b.current;clearTimeout(v.current),v.current=setTimeout(()=>{_(r,e)},400)}},k=e=>c(t=>({...t,[e]:!t[e]})),w=e=>c(Object.fromEntries(j.map(t=>[t.id,t.id===e]))),O=async e=>{let t=j.find(t=>t.id===e);g(""),x(`load-${e}`,!0);try{let r=await fetch(`/api/translator/load?file=${t.file}`),n=await r.json();n.success?y(e,n.content):g(n.error||"File not found")}catch(e){g(e.message)}x(`load-${e}`,!1)},_=async(e,t)=>{try{let r="string"==typeof e?JSON.parse(e):e,n=await fetch("/api/translator/translate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({step:1,body:r})}),i=await n.json();i.success&&(void 0===t||t===b.current)&&h(i.result)}catch{}},E=(e,t)=>fetch("/api/translator/save",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({file:e,content:t})}).catch(()=>{}),F=async()=>{g(""),x("toOpenAI",!0);try{let t=e[1],r=JSON.parse(t);E("1_req_client.json",t),E("2_req_source.json",JSON.stringify({timestamp:new Date().toISOString(),headers:{},body:r.body||r},null,2));let n=await fetch("/api/translator/translate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({step:2,body:r})}),i=await n.json();if(!i.success)return void g(i.error);let a=JSON.stringify(i.result.body,null,2);y(3,a),w(3)}catch(e){g(e.message)}x("toOpenAI",!1)},S=async()=>{g(""),x("toTarget",!0);try{let t=e[3],r=JSON.parse(t);E("3_req_openai.json",t);let n=await fetch("/api/translator/translate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({step:3,body:{...r,provider:f?.provider,model:f?.model}})}),i=await n.json();if(!i.success)return void g(i.error);let a={...i.result,provider:f?.provider,model:f?.model};y(4,JSON.stringify(a,null,2)),w(4)}catch(e){g(e.message)}x("toTarget",!1)},T=async()=>{g(""),x("send",!0);try{let t=e[4],r=JSON.parse(t);E("4_req_target.json",t);let n=r.provider||f?.provider,i=r.model||f?.model;if(!n||!i)return void g("Missing provider or model. Please run step 1 first to detect them.");let a=await fetch("/api/translator/send",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:n,model:i,body:r.body||r})});if(!a.ok){let e=await a.json().catch(()=>({error:a.statusText}));g(e.error||"Send failed");return}let o=a.body.getReader(),s=new TextDecoder,l="";for(;;){let{done:e,value:t}=await o.read();if(e)break;l+=s.decode(t,{stream:!0})}y(5,l),w(5),await fetch("/api/translator/save",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({file:"5_res_provider.txt",content:l})})}catch(e){g(e.message)}finally{x("send",!1)}};return(0,n.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,n.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{className:"text-xs font-semibold uppercase tracking-[0.08em] text-subtle",children:"Debug"}),(0,n.jsx)("h2",{className:"font-display text-[28px] font-bold tracking-[-0.02em] text-text",children:"Translator debug"}),(0,n.jsx)("p",{className:"mt-1 text-sm text-muted",children:"Replay request flow — matches log files"})]}),f&&(0,n.jsx)(o.default,{padding:"xs",className:"flex flex-wrap items-center gap-2",role:"status",children:["sourceFormat","targetFormat","provider","model"].map(e=>(0,n.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:["provider"===e&&f.provider&&(0,n.jsx)(s.default,{providerId:f.provider,size:"sm"}),(0,n.jsxs)(l.default,{variant:C[e],size:"sm",children:[(0,n.jsxs)("span",{className:"opacity-70",children:[e,":"]})," ",f[e]]})]},e))})]}),m&&(0,n.jsx)(d.default,{variant:"err",title:"Translator step failed",children:m}),j.map(t=>{var i;return(0,n.jsx)(N,{step:t,isExpanded:!!r[t.id],content:e[t.id]||"",onToggle:k,onContentChange:y,onLoad:()=>O(t.id),loadLoading:u[`load-${t.id}`],action:1===(i=t.id)?(0,n.jsx)(a.default,{size:"sm",icon:"arrow_forward",loading:u.toOpenAI,onClick:F,children:"To OpenAI"}):3===i?(0,n.jsx)(a.default,{size:"sm",icon:"arrow_forward",loading:u.toTarget,onClick:S,children:"To target"}):4===i?(0,n.jsx)(a.default,{size:"sm",icon:"send",loading:u.send,onClick:T,children:"Send"}):null},t.id)})]})}},50770:(e,t,r)=>{"use strict";r.d(t,{PK:()=>g,S3:()=>l,XY:()=>s,lN:()=>d,pN:()=>h,pi:()=>m,r4:()=>p,vE:()=>u,vO:()=>a});let n={connected:"ok",healthy:"ok",active:"ok",ok:"ok",success:"ok",cooldown:"warn",warning:"warn",low:"warn",warn:"warn",error:"err",empty:"err",err:"err",oauth:"info",info:"info","api-key":"brand",brand:"brand",live:"live",disabled:"neutral",off:"neutral",neutral:"neutral"},i={ok:"bg-ok-bg text-ok",warn:"bg-warn-bg text-warn",err:"bg-err-bg text-err",info:"bg-sky-bg text-sky-ink",brand:"bg-coral-bg text-coral-ink",live:"bg-lime-bg text-lime-ink",neutral:"bg-raised text-muted shadow-[inset_0_0_0_1px_var(--signal-line)]"},a={xs:"h-5 px-2 text-[11px]",sm:"h-5 px-2 text-[11px]",md:"h-6 px-2.5 text-xs",lg:"h-7 px-3 text-sm"},o={default:"neutral",primary:"brand",success:"ok",warning:"warn",error:"err"},s=[...new Set([...Object.keys(i),...Object.keys(o),...Object.keys(n)])];function l(e="neutral",t="md"){let r=a[t];if(!r)throw Error(`pillClasses: unknown size "${t}"`);return`${i[function(e){if(i[e])return e;let t=o[e]??n[e];if(!t)throw Error(`resolvePillVariant: unknown variant "${e}"`);return t}(e)]} ${r}`}let d={ok:"bg-ok",warn:"bg-warn",err:"bg-err",live:"bg-lime",info:"bg-sky",brand:"bg-coral",neutral:"bg-subtle"},c=new Set(["unlimited","credits"]);function u(e,t){if(void 0!==t&&!c.has(t))throw Error(`meterVariant: unknown kind "${t}"`);if("number"!=typeof e||!Number.isFinite(e))throw Error(`meterVariant: expected a finite number, got ${e}`);return"unlimited"===t?"live":"credits"===t?"info":e<=20?"err":e<=45?"warn":"ok"}function p(e){if("number"!=typeof e||!Number.isFinite(e))throw Error(`meterValue: expected a finite number, got ${e}`);return Math.min(100,Math.max(0,e))}let m="border-b border-line",g="whitespace-nowrap text-xs font-semibold text-muted",f={LOG:"signal-terminal-log",INFO:"signal-terminal-info",WARN:"signal-terminal-warn",ERROR:"signal-terminal-error",DEBUG:"signal-terminal-debug"};function h(e){let t=f[e];if(!t)throw Error(`terminalLevelClass: unknown level "${e}"`);return t}},55429:(e,t,r)=>{Promise.resolve().then(r.bind(r,49864))},56006:(e,t,r)=>{"use strict";r.d(t,{default:()=>s});var n=r(95155),i=r(14051),a=r.n(i);let o={info:{classes:"bg-sky-bg text-sky-ink",icon:"info"},warn:{classes:"bg-warn-bg text-warn",icon:"warning"},err:{classes:"bg-err-bg text-err",icon:"error"},ok:{classes:"bg-ok-bg text-ok",icon:"check_circle"}};function s({variant:e="info",title:t,children:r,icon:i,className:a}){let l=o[e];if(!l)throw Error(`Callout: unknown variant "${e}"`);return(0,n.jsxs)("div",{role:"err"===e?"alert":"status",className:`flex gap-3 rounded-xl p-4 text-sm ${l.classes}${a?` ${a}`:""}`,children:[(0,n.jsx)("span",{className:"material-symbols-outlined shrink-0 text-[20px]","aria-hidden":"true",children:i??l.icon}),(0,n.jsxs)("div",{className:"min-w-0 text-text",children:[t&&(0,n.jsx)("p",{className:"font-semibold",children:t}),r&&(0,n.jsx)("div",{className:"text-muted",children:r})]})]})}s.propTypes={variant:a().oneOf(Object.keys(o)),title:a().node,children:a().node,icon:a().string,className:a().string}},58897:(e,t,r)=>{"use strict";r.d(t,{default:()=>o});var n=r(95155),i=r(14051),a=r.n(i);function o({copied:e,error:t,id:r}){let i=e=>null!=e&&(void 0===r||e===r);return(0,n.jsx)("span",{"aria-live":"polite",className:"sr-only",children:i(t)?"Couldn't copy":i(e)?"Copied":""})}o.propTypes={copied:a().string,error:a().string,id:a().string}},84588:(e,t,r)=>{"use strict";r.d(t,{default:()=>l});var n=r(95155),i=r(14051),a=r.n(i),o=r(31474);let s={none:"",xs:"p-3",sm:"p-4",md:"p-6",lg:"p-8"};function l({children:e,title:t,subtitle:r,icon:i,action:a,as:d="h2",padding:c="md",hover:u=!1,elev:p=!1,className:m,role:g,...f}){if(void 0===s[c])throw Error(`Card: unknown padding "${c}"`);let h=g||(f["aria-label"]||f["aria-labelledby"]?"region":void 0);return(0,n.jsxs)("div",{role:h,className:(0,o.cn)("rounded-2xl border border-line bg-panel shadow-card",u&&"cursor-pointer transition-colors duration-150 hover:border-coral/40",s[c],m),...f,children:[(t||a)&&(0,n.jsx)(l.Header,{title:t,subtitle:r,icon:i,actions:a,as:d,className:"mb-4"}),e]})}l.propTypes={children:a().node,title:a().node,subtitle:a().node,icon:a().string,action:a().node,as:a().oneOf(["h2","h3","h4"]),padding:a().oneOf(Object.keys(s)),hover:a().bool,elev:a().bool,className:a().string,role:a().string},l.Header=function({title:e,subtitle:t,icon:r,actions:i,as:a="h2",className:s}){return(0,n.jsxs)("div",{className:(0,o.cn)("flex flex-wrap items-center justify-between gap-3",s),children:[(0,n.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[r&&(0,n.jsx)("span",{className:"flex size-10 shrink-0 items-center justify-center rounded-[10px] bg-coral-bg text-coral-ink",children:(0,n.jsx)("span",{className:"material-symbols-outlined text-[20px]","aria-hidden":"true",children:r})}),(0,n.jsxs)("div",{className:"min-w-0",children:[e&&(0,n.jsx)(a,{className:"font-display text-lg font-bold text-text",children:e}),t&&(0,n.jsx)("p",{className:"text-sm text-muted",children:t})]})]}),i&&(0,n.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:i})]})},l.Header.propTypes={title:a().node,subtitle:a().node,icon:a().string,actions:a().node,as:a().oneOf(["h2","h3","h4"]),className:a().string},l.Section=function({children:e,className:t,...r}){return(0,n.jsx)("div",{className:(0,o.cn)("rounded-xl border border-line bg-raised p-4",t),...r,children:e})},l.Row=function({children:e,className:t,...r}){return(0,n.jsx)("div",{className:(0,o.cn)("-mx-3 border-b border-line p-3 px-3 transition-colors last:border-b-0 hover:bg-raised",t),...r,children:e})},l.ListItem=function({children:e,actions:t,className:r,...i}){return(0,n.jsxs)("div",{className:(0,o.cn)("group -mx-3 flex items-center justify-between border-b border-line p-3 px-3 transition-colors last:border-b-0 hover:bg-raised",r),...i,children:[(0,n.jsx)("div",{className:"min-w-0 flex-1",children:e}),t&&(0,n.jsx)("div",{className:"flex items-center gap-1 opacity-0 transition-opacity group-focus-within:opacity-100 group-hover:opacity-100",children:t})]})}},90085:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});var n=r(1934),i=r(31692),a=r(28745);function o(e){let t=document.documentElement,r=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";"dark"===("system"===e?r:e)?t.classList.add("dark"):t.classList.remove("dark")}let s=(0,n.v)((0,i.Zr)((e,t)=>({theme:a.B2.defaultTheme,setTheme:t=>{e({theme:t}),o(t)},toggleTheme:()=>{let r="dark"===t().theme?"light":"dark";e({theme:r}),o(r)},initTheme:()=>{o(t().theme)}}),{name:a.B2.storageKey}))},92542:(e,t,r)=>{"use strict";r.d(t,{default:()=>c});var n=r(95155),i=r(98500),a=r.n(i),o=r(14051),s=r.n(o),l=r(31474),d=r(4650);function c({children:e,variant:t="primary",size:r="md",icon:i,iconRight:o,href:s,disabled:u=!1,loading:p=!1,fullWidth:m=!1,className:g,...f}){let h=(0,l.cn)("inline-flex items-center justify-center gap-2 font-semibold transition-all duration-150 ease-out cursor-pointer","active:scale-[0.97] focus-visible:outline-none focus-visible:shadow-focus","disabled:opacity-50 disabled:cursor-not-allowed disabled:active:scale-100","aria-disabled:opacity-50 aria-disabled:cursor-not-allowed aria-disabled:active:scale-100",(0,d.V7)(t,r),m&&"w-full",g),x=(0,n.jsxs)(n.Fragment,{children:[p?(0,n.jsx)("span",{className:"material-symbols-outlined animate-spin text-[18px]","aria-hidden":"true",children:"progress_activity"}):i?(0,n.jsx)("span",{className:"material-symbols-outlined text-[18px]","aria-hidden":"true",children:i}):null,e,o&&!p&&(0,n.jsx)("span",{className:"material-symbols-outlined text-[18px] rtl:-scale-x-100","aria-hidden":"true",children:o})]});if(s&&!(u||p)){let{type:e,...t}=f;return t.className=h,/^(https?:|mailto:|tel:|#)/.test(s)?(0,n.jsx)("a",{href:s,...t,children:x}):(0,n.jsx)(a(),{href:s,...t,children:x})}return(0,n.jsx)("button",{className:h,disabled:u||p,"aria-busy":p||void 0,...f,children:x})}c.propTypes={children:s().node,variant:s().oneOf(Object.keys(d.Ck)),size:s().oneOf(Object.keys(d.GO)),icon:s().string,iconRight:s().string,href:s().string,disabled:s().bool,loading:s().bool,fullWidth:s().bool,className:s().string}},96975:(e,t,r)=>{"use strict";r.d(t,{default:()=>u});var n=r(95155),i=r(14051),a=r.n(i),o=r(12115),s=r(7256),l=r(8247);let d={sm:{tile:"size-6 rounded-md",text:"text-[10px]"},md:{tile:"size-9 rounded-[10px]",text:"text-sm"},lg:{tile:"size-14 rounded-[14px]",text:"text-lg"}},c={ok:"bg-ok",warn:"bg-warn",err:"bg-err",info:"bg-sky",live:"bg-lime",neutral:"bg-line"};function u({providerId:e,size:t="md",status:r,brand:i,iconSrc:a,className:p}){let[m,g]=(0,o.useState)(null),f=d[t];if(!f)throw Error(`ProviderTile: unknown size "${t}"`);if(void 0!==r&&!c[r])throw Error(`ProviderTile: unknown status "${r}"`);let h=(0,s.rs)(e),x=i??(0,s.Do)(h),b=m===h?null:a??(0,l.HY)(h),v=b?{style:{backgroundColor:`color-mix(in srgb, ${x.color} 8%, #ffffff)`},className:""}:{style:{backgroundColor:x.color},className:`font-display font-bold text-white shadow-[inset_0_0_0_1px_rgba(255,255,255,0.14)] ${f.text}`};return(0,n.jsxs)("span",{"aria-hidden":"true",title:e,style:v.style,className:`relative inline-flex shrink-0 items-center justify-center ${f.tile} ${v.className}${p?` ${p}`:""}`,children:[b?(0,n.jsx)("img",{src:b,alt:"",loading:"lazy",decoding:"async",className:"size-full rounded-[inherit] object-contain",onError:()=>{(0,l.Kw)(h),g(h)}}):x.monogram,r&&(0,n.jsx)("span",{className:`absolute -end-0.5 -bottom-0.5 size-2.5 rounded-full shadow-[0_0_0_2px_var(--signal-panel)] ${c[r]}`})]})}u.propTypes={providerId:a().string.isRequired,size:a().oneOf(Object.keys(d)),status:a().oneOf(Object.keys(c)),brand:a().shape({color:a().string.isRequired,monogram:a().string.isRequired}),iconSrc:a().string,className:a().string}}},e=>{e.O(0,[1610,1372,2903,8441,3794,7358],()=>e(e.s=55429)),_N_E=e.O()}]);