omniroute 3.7.2 → 3.7.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 (362) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/app-path-routes-manifest.json +15 -15
  3. package/app/.next/build-manifest.json +3 -3
  4. package/app/.next/prerender-manifest.json +3 -3
  5. package/app/.next/react-loadable-manifest.json +3 -3
  6. package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
  7. package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/audit/page_client-reference-manifest.js +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/batch/page_client-reference-manifest.js +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/cache/media/page.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/cache/media/page_client-reference-manifest.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/cache/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/logs/page.js +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/memory/page_client-reference-manifest.js +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  31. package/app/.next/server/app/(dashboard)/dashboard/search-tools/page_client-reference-manifest.js +1 -1
  32. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  33. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  34. package/app/.next/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  35. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  36. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  37. package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
  38. package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
  39. package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
  40. package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
  41. package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
  42. package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
  43. package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
  44. package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
  45. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  46. package/app/.next/server/app/_global-error.html +1 -1
  47. package/app/.next/server/app/_global-error.rsc +1 -1
  48. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  49. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  50. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  51. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  52. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  53. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  54. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  55. package/app/.next/server/app/api/acp/agents/route.js.nft.json +1 -1
  56. package/app/.next/server/app/api/auth/login/route.js.nft.json +1 -1
  57. package/app/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
  58. package/app/.next/server/app/api/batches/route.js.nft.json +1 -1
  59. package/app/.next/server/app/api/cache/entries/route.js.nft.json +1 -1
  60. package/app/.next/server/app/api/cache/reasoning/route.js.nft.json +1 -1
  61. package/app/.next/server/app/api/cache/route.js.nft.json +1 -1
  62. package/app/.next/server/app/api/cache/stats/route.js.nft.json +1 -1
  63. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  64. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  65. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  66. package/app/.next/server/app/api/cli-tools/backups/route.js +2 -2
  67. package/app/.next/server/app/api/cli-tools/backups/route.js.nft.json +1 -1
  68. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
  69. package/app/.next/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  70. package/app/.next/server/app/api/cli-tools/cline-settings/route.js +1 -1
  71. package/app/.next/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  72. package/app/.next/server/app/api/cli-tools/codex-profiles/route.js +1 -1
  73. package/app/.next/server/app/api/cli-tools/codex-profiles/route.js.nft.json +1 -1
  74. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +2 -2
  75. package/app/.next/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  76. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +1 -1
  77. package/app/.next/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  78. package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route.js.nft.json +1 -1
  79. package/app/.next/server/app/api/cli-tools/keys/route.js.nft.json +1 -1
  80. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +1 -1
  81. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  82. package/app/.next/server/app/api/cli-tools/openclaw/auto-order/route.js.nft.json +1 -1
  83. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +1 -1
  84. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  85. package/app/.next/server/app/api/cli-tools/qwen-settings/route.js +1 -1
  86. package/app/.next/server/app/api/cli-tools/qwen-settings/route.js.nft.json +1 -1
  87. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route.js +2 -2
  88. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route.js.nft.json +1 -1
  89. package/app/.next/server/app/api/cli-tools/status/route.js +1 -1
  90. package/app/.next/server/app/api/cli-tools/status/route.js.nft.json +1 -1
  91. package/app/.next/server/app/api/cloud/auth/route.js.nft.json +1 -1
  92. package/app/.next/server/app/api/cloud/credentials/update/route.js.nft.json +1 -1
  93. package/app/.next/server/app/api/cloud/model/resolve/route.js.nft.json +1 -1
  94. package/app/.next/server/app/api/cloud/models/alias/route.js.nft.json +1 -1
  95. package/app/.next/server/app/api/combos/[id]/route.js +1 -1
  96. package/app/.next/server/app/api/combos/[id]/route.js.nft.json +1 -1
  97. package/app/.next/server/app/api/combos/builder/options/route.js.nft.json +1 -1
  98. package/app/.next/server/app/api/combos/metrics/route.js.nft.json +1 -1
  99. package/app/.next/server/app/api/combos/reorder/route.js.nft.json +1 -1
  100. package/app/.next/server/app/api/combos/route.js +1 -1
  101. package/app/.next/server/app/api/combos/route.js.nft.json +1 -1
  102. package/app/.next/server/app/api/combos/test/route.js +1 -1
  103. package/app/.next/server/app/api/combos/test/route.js.nft.json +1 -1
  104. package/app/.next/server/app/api/compliance/audit-log/route.js.nft.json +1 -1
  105. package/app/.next/server/app/api/db-backups/export/route.js.nft.json +1 -1
  106. package/app/.next/server/app/api/db-backups/exportAll/route.js.nft.json +1 -1
  107. package/app/.next/server/app/api/db-backups/import/route.js.nft.json +1 -1
  108. package/app/.next/server/app/api/db-backups/route.js.nft.json +1 -1
  109. package/app/.next/server/app/api/evals/[suiteId]/route.js.nft.json +1 -1
  110. package/app/.next/server/app/api/evals/route.js.nft.json +1 -1
  111. package/app/.next/server/app/api/evals/scorecard/route.js.nft.json +1 -1
  112. package/app/.next/server/app/api/evals/suites/[suiteId]/route.js.nft.json +1 -1
  113. package/app/.next/server/app/api/evals/suites/route.js.nft.json +1 -1
  114. package/app/.next/server/app/api/fallback/chains/route.js.nft.json +1 -1
  115. package/app/.next/server/app/api/files/[id]/content/route.js.nft.json +1 -1
  116. package/app/.next/server/app/api/files/route.js.nft.json +1 -1
  117. package/app/.next/server/app/api/init/route.js.nft.json +1 -1
  118. package/app/.next/server/app/api/internal/codex-responses-ws/route.js.nft.json +1 -1
  119. package/app/.next/server/app/api/keys/[id]/reveal/route.js.nft.json +1 -1
  120. package/app/.next/server/app/api/keys/[id]/route.js.nft.json +1 -1
  121. package/app/.next/server/app/api/keys/route.js.nft.json +1 -1
  122. package/app/.next/server/app/api/logs/active/route.js.nft.json +1 -1
  123. package/app/.next/server/app/api/logs/console/route.js.nft.json +1 -1
  124. package/app/.next/server/app/api/logs/detail/route.js.nft.json +1 -1
  125. package/app/.next/server/app/api/logs/export/route.js.nft.json +1 -1
  126. package/app/.next/server/app/api/mcp/sse/route.js.nft.json +1 -1
  127. package/app/.next/server/app/api/mcp/status/route.js.nft.json +1 -1
  128. package/app/.next/server/app/api/mcp/stream/route.js.nft.json +1 -1
  129. package/app/.next/server/app/api/memory/[id]/route.js.nft.json +1 -1
  130. package/app/.next/server/app/api/memory/health/route.js.nft.json +1 -1
  131. package/app/.next/server/app/api/memory/route.js.nft.json +1 -1
  132. package/app/.next/server/app/api/model-combo-mappings/[id]/route.js.nft.json +1 -1
  133. package/app/.next/server/app/api/model-combo-mappings/route.js.nft.json +1 -1
  134. package/app/.next/server/app/api/models/alias/route.js.nft.json +1 -1
  135. package/app/.next/server/app/api/models/catalog/route.js.nft.json +1 -1
  136. package/app/.next/server/app/api/models/openrouter-catalog/route.js.nft.json +1 -1
  137. package/app/.next/server/app/api/models/route.js.nft.json +1 -1
  138. package/app/.next/server/app/api/models/test/route.js.nft.json +1 -1
  139. package/app/.next/server/app/api/monitoring/health/route.js +1 -1
  140. package/app/.next/server/app/api/monitoring/health/route.js.nft.json +1 -1
  141. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  142. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  143. package/app/.next/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  144. package/app/.next/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  145. package/app/.next/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  146. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  147. package/app/.next/server/app/api/openapi/try/route.js.nft.json +1 -1
  148. package/app/.next/server/app/api/policies/route.js.nft.json +1 -1
  149. package/app/.next/server/app/api/pricing/models/route.js.nft.json +1 -1
  150. package/app/.next/server/app/api/pricing/route.js.nft.json +1 -1
  151. package/app/.next/server/app/api/pricing/sync/route.js.nft.json +1 -1
  152. package/app/.next/server/app/api/provider-metrics/route.js.nft.json +1 -1
  153. package/app/.next/server/app/api/provider-models/route.js.nft.json +1 -1
  154. package/app/.next/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  155. package/app/.next/server/app/api/provider-nodes/route.js.nft.json +1 -1
  156. package/app/.next/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  157. package/app/.next/server/app/api/providers/[id]/codex-auth/apply-local/route.js.nft.json +1 -1
  158. package/app/.next/server/app/api/providers/[id]/codex-auth/export/route.js.nft.json +1 -1
  159. package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  160. package/app/.next/server/app/api/providers/[id]/refresh/route.js.nft.json +1 -1
  161. package/app/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
  162. package/app/.next/server/app/api/providers/[id]/sync-models/route.js.nft.json +1 -1
  163. package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  164. package/app/.next/server/app/api/providers/client/route.js.nft.json +1 -1
  165. package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
  166. package/app/.next/server/app/api/providers/test-batch/route.js +1 -1
  167. package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  168. package/app/.next/server/app/api/providers/validate/route.js.nft.json +1 -1
  169. package/app/.next/server/app/api/providers/zed/import/route.js.nft.json +1 -1
  170. package/app/.next/server/app/api/rate-limits/route.js.nft.json +1 -1
  171. package/app/.next/server/app/api/resilience/reset/route.js.nft.json +1 -1
  172. package/app/.next/server/app/api/resilience/route.js.nft.json +1 -1
  173. package/app/.next/server/app/api/restart/route.js.nft.json +1 -1
  174. package/app/.next/server/app/api/search/providers/route.js.nft.json +1 -1
  175. package/app/.next/server/app/api/search/stats/route.js.nft.json +1 -1
  176. package/app/.next/server/app/api/settings/auto-disable-accounts/route.js.nft.json +1 -1
  177. package/app/.next/server/app/api/settings/background-degradation/route.js.nft.json +1 -1
  178. package/app/.next/server/app/api/settings/cache-config/route.js.nft.json +1 -1
  179. package/app/.next/server/app/api/settings/cache-metrics/route.js.nft.json +1 -1
  180. package/app/.next/server/app/api/settings/combo-defaults/route.js.nft.json +1 -1
  181. package/app/.next/server/app/api/settings/export-json/route.js.nft.json +1 -1
  182. package/app/.next/server/app/api/settings/favicon/route.js.nft.json +1 -1
  183. package/app/.next/server/app/api/settings/import-json/route.js.nft.json +1 -1
  184. package/app/.next/server/app/api/settings/ip-filter/route.js.nft.json +1 -1
  185. package/app/.next/server/app/api/settings/lkgp-cache/route.js.nft.json +1 -1
  186. package/app/.next/server/app/api/settings/memory/route.js.nft.json +1 -1
  187. package/app/.next/server/app/api/settings/model-aliases/route.js.nft.json +1 -1
  188. package/app/.next/server/app/api/settings/models-dev/route.js.nft.json +1 -1
  189. package/app/.next/server/app/api/settings/payload-rules/route.js.nft.json +1 -1
  190. package/app/.next/server/app/api/settings/proxies/assignments/route.js.nft.json +1 -1
  191. package/app/.next/server/app/api/settings/proxies/bulk-assign/route.js.nft.json +1 -1
  192. package/app/.next/server/app/api/settings/proxies/health/route.js.nft.json +1 -1
  193. package/app/.next/server/app/api/settings/proxies/migrate/route.js.nft.json +1 -1
  194. package/app/.next/server/app/api/settings/proxies/route.js.nft.json +1 -1
  195. package/app/.next/server/app/api/settings/proxy/route.js.nft.json +1 -1
  196. package/app/.next/server/app/api/settings/proxy/test/route.js.nft.json +1 -1
  197. package/app/.next/server/app/api/settings/purge-logs/route.js.nft.json +1 -1
  198. package/app/.next/server/app/api/settings/require-login/route.js.nft.json +1 -1
  199. package/app/.next/server/app/api/settings/route.js.nft.json +1 -1
  200. package/app/.next/server/app/api/settings/system-prompt/route.js.nft.json +1 -1
  201. package/app/.next/server/app/api/settings/task-routing/route.js.nft.json +1 -1
  202. package/app/.next/server/app/api/settings/thinking-budget/route.js.nft.json +1 -1
  203. package/app/.next/server/app/api/shutdown/route.js.nft.json +1 -1
  204. package/app/.next/server/app/api/skills/[id]/route.js.nft.json +1 -1
  205. package/app/.next/server/app/api/skills/executions/route.js.nft.json +1 -1
  206. package/app/.next/server/app/api/skills/install/route.js.nft.json +1 -1
  207. package/app/.next/server/app/api/skills/marketplace/install/route.js.nft.json +1 -1
  208. package/app/.next/server/app/api/skills/marketplace/route.js.nft.json +1 -1
  209. package/app/.next/server/app/api/skills/route.js.nft.json +1 -1
  210. package/app/.next/server/app/api/skills/skillssh/install/route.js.nft.json +1 -1
  211. package/app/.next/server/app/api/skills/skillssh/route.js.nft.json +1 -1
  212. package/app/.next/server/app/api/storage/health/route.js.nft.json +1 -1
  213. package/app/.next/server/app/api/sync/bundle/route.js.nft.json +1 -1
  214. package/app/.next/server/app/api/sync/cloud/route.js.nft.json +1 -1
  215. package/app/.next/server/app/api/sync/initialize/route.js.nft.json +1 -1
  216. package/app/.next/server/app/api/sync/tokens/[id]/route.js.nft.json +1 -1
  217. package/app/.next/server/app/api/sync/tokens/route.js.nft.json +1 -1
  218. package/app/.next/server/app/api/synced-available-models/route.js.nft.json +1 -1
  219. package/app/.next/server/app/api/system/env/repair/route.js.nft.json +1 -1
  220. package/app/.next/server/app/api/system/version/route.js +1 -1
  221. package/app/.next/server/app/api/system/version/route.js.nft.json +1 -1
  222. package/app/.next/server/app/api/token-health/route.js.nft.json +1 -1
  223. package/app/.next/server/app/api/translator/save/route.js.nft.json +1 -1
  224. package/app/.next/server/app/api/translator/send/route.js.nft.json +1 -1
  225. package/app/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
  226. package/app/.next/server/app/api/tunnels/cloudflared/route.js.nft.json +1 -1
  227. package/app/.next/server/app/api/tunnels/tailscale/check/route.js.nft.json +1 -1
  228. package/app/.next/server/app/api/tunnels/tailscale/disable/route.js.nft.json +1 -1
  229. package/app/.next/server/app/api/tunnels/tailscale/enable/route.js.nft.json +1 -1
  230. package/app/.next/server/app/api/tunnels/tailscale/install/route.js.nft.json +1 -1
  231. package/app/.next/server/app/api/tunnels/tailscale/login/route.js.nft.json +1 -1
  232. package/app/.next/server/app/api/tunnels/tailscale/route.js.nft.json +1 -1
  233. package/app/.next/server/app/api/tunnels/tailscale/start-daemon/route.js.nft.json +1 -1
  234. package/app/.next/server/app/api/upstream-proxy/[providerId]/route.js.nft.json +1 -1
  235. package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  236. package/app/.next/server/app/api/usage/analytics/route.js.nft.json +1 -1
  237. package/app/.next/server/app/api/usage/budget/route.js.nft.json +1 -1
  238. package/app/.next/server/app/api/usage/call-logs/[id]/route.js.nft.json +1 -1
  239. package/app/.next/server/app/api/usage/call-logs/route.js.nft.json +1 -1
  240. package/app/.next/server/app/api/usage/combo-health/route.js +1 -1
  241. package/app/.next/server/app/api/usage/combo-health/route.js.nft.json +1 -1
  242. package/app/.next/server/app/api/usage/history/route.js.nft.json +1 -1
  243. package/app/.next/server/app/api/usage/logs/route.js.nft.json +1 -1
  244. package/app/.next/server/app/api/usage/provider-limits/route.js.nft.json +1 -1
  245. package/app/.next/server/app/api/usage/proxy-logs/route.js.nft.json +1 -1
  246. package/app/.next/server/app/api/usage/quota/route.js.nft.json +1 -1
  247. package/app/.next/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  248. package/app/.next/server/app/api/usage/utilization/route.js.nft.json +1 -1
  249. package/app/.next/server/app/api/v1/accounts/[id]/limits/route.js.nft.json +1 -1
  250. package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  251. package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  252. package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  253. package/app/.next/server/app/api/v1/batches/[id]/cancel/route.js.nft.json +1 -1
  254. package/app/.next/server/app/api/v1/batches/[id]/route.js.nft.json +1 -1
  255. package/app/.next/server/app/api/v1/batches/route.js.nft.json +1 -1
  256. package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  257. package/app/.next/server/app/api/v1/completions/route.js.nft.json +1 -1
  258. package/app/.next/server/app/api/v1/db/health/route.js.nft.json +1 -1
  259. package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  260. package/app/.next/server/app/api/v1/files/[id]/content/route.js.nft.json +1 -1
  261. package/app/.next/server/app/api/v1/files/[id]/route.js.nft.json +1 -1
  262. package/app/.next/server/app/api/v1/files/route.js.nft.json +1 -1
  263. package/app/.next/server/app/api/v1/images/edits/route.js.nft.json +1 -1
  264. package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  265. package/app/.next/server/app/api/v1/issues/report/route.js.nft.json +1 -1
  266. package/app/.next/server/app/api/v1/management/proxies/assignments/route.js.nft.json +1 -1
  267. package/app/.next/server/app/api/v1/management/proxies/bulk-assign/route.js.nft.json +1 -1
  268. package/app/.next/server/app/api/v1/management/proxies/health/route.js.nft.json +1 -1
  269. package/app/.next/server/app/api/v1/management/proxies/route.js.nft.json +1 -1
  270. package/app/.next/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  271. package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
  272. package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
  273. package/app/.next/server/app/api/v1/moderations/route.js.nft.json +1 -1
  274. package/app/.next/server/app/api/v1/music/generations/route.js.nft.json +1 -1
  275. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js.nft.json +1 -1
  276. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js.nft.json +1 -1
  277. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js.nft.json +1 -1
  278. package/app/.next/server/app/api/v1/providers/[provider]/limits/route.js.nft.json +1 -1
  279. package/app/.next/server/app/api/v1/quotas/check/route.js.nft.json +1 -1
  280. package/app/.next/server/app/api/v1/registered-keys/[id]/revoke/route.js.nft.json +1 -1
  281. package/app/.next/server/app/api/v1/registered-keys/[id]/route.js.nft.json +1 -1
  282. package/app/.next/server/app/api/v1/registered-keys/route.js.nft.json +1 -1
  283. package/app/.next/server/app/api/v1/rerank/route.js.nft.json +1 -1
  284. package/app/.next/server/app/api/v1/responses/[...path]/route.js.nft.json +1 -1
  285. package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
  286. package/app/.next/server/app/api/v1/route.js.nft.json +1 -1
  287. package/app/.next/server/app/api/v1/search/analytics/route.js.nft.json +1 -1
  288. package/app/.next/server/app/api/v1/search/route.js.nft.json +1 -1
  289. package/app/.next/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
  290. package/app/.next/server/app/api/v1/ws/route.js.nft.json +1 -1
  291. package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  292. package/app/.next/server/app/api/v1beta/models/route.js.nft.json +1 -1
  293. package/app/.next/server/app/api/version-manager/check-update/route.js +1 -1
  294. package/app/.next/server/app/api/version-manager/check-update/route.js.nft.json +1 -1
  295. package/app/.next/server/app/api/version-manager/install/route.js +1 -1
  296. package/app/.next/server/app/api/version-manager/install/route.js.nft.json +1 -1
  297. package/app/.next/server/app/api/version-manager/restart/route.js +1 -1
  298. package/app/.next/server/app/api/version-manager/restart/route.js.nft.json +1 -1
  299. package/app/.next/server/app/api/version-manager/start/route.js +1 -1
  300. package/app/.next/server/app/api/version-manager/start/route.js.nft.json +1 -1
  301. package/app/.next/server/app/api/version-manager/status/route.js +1 -1
  302. package/app/.next/server/app/api/version-manager/status/route.js.nft.json +1 -1
  303. package/app/.next/server/app/api/version-manager/stop/route.js +1 -1
  304. package/app/.next/server/app/api/version-manager/stop/route.js.nft.json +1 -1
  305. package/app/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
  306. package/app/.next/server/app/api/webhooks/[id]/test/route.js.nft.json +1 -1
  307. package/app/.next/server/app/api/webhooks/route.js.nft.json +1 -1
  308. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  309. package/app/.next/server/app/docs/page.js +1 -1
  310. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  311. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
  312. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  313. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  314. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  315. package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
  316. package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  317. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  318. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  319. package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
  320. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  321. package/app/.next/server/app-paths-manifest.json +15 -15
  322. package/app/.next/server/chunks/12767.js +1 -1
  323. package/app/.next/server/chunks/19849.js +1 -1
  324. package/app/.next/server/chunks/20236.js +1 -1
  325. package/app/.next/server/chunks/36040.js +4 -4
  326. package/app/.next/server/chunks/3832.js +1 -1
  327. package/app/.next/server/chunks/39548.js +1 -1
  328. package/app/.next/server/chunks/39859.js +1 -1
  329. package/app/.next/server/chunks/44088.js +1 -1
  330. package/app/.next/server/chunks/45415.js +1 -1
  331. package/app/.next/server/chunks/55672.js +1 -0
  332. package/app/.next/server/chunks/59092.js +2 -2
  333. package/app/.next/server/chunks/66094.js +1 -1
  334. package/app/.next/server/chunks/69105.js +1 -1
  335. package/app/.next/server/chunks/75225.js +1 -1
  336. package/app/.next/server/chunks/77044.js +1 -1
  337. package/app/.next/server/chunks/83648.js +1 -1
  338. package/app/.next/server/chunks/93831.js +4 -4
  339. package/app/.next/server/chunks/9679.js +3 -3
  340. package/app/.next/server/chunks/99168.js +2 -2
  341. package/app/.next/server/middleware-build-manifest.js +1 -1
  342. package/app/.next/server/middleware-react-loadable-manifest.js +1 -1
  343. package/app/.next/server/middleware.js +2 -2
  344. package/app/.next/server/pages/500.html +1 -1
  345. package/app/.next/server/server-reference-manifest.js +1 -1
  346. package/app/.next/server/server-reference-manifest.json +1 -1
  347. package/app/.next/static/chunks/{1999-fefe90c60eaa3b23.js → 1999-8cf58c233346f980.js} +1 -1
  348. package/app/.next/static/chunks/app/(dashboard)/dashboard/cache/media/page-ad8091c5b7536b7a.js +1 -0
  349. package/app/.next/static/chunks/app/(dashboard)/dashboard/logs/page-ccc65d29bbb19d51.js +1 -0
  350. package/app/.next/static/chunks/app/{layout-3e3b043f9b52bb80.js → layout-fbebdd84c4996160.js} +1 -1
  351. package/app/.next/static/chunks/{webpack-117eac5998a94c69.js → webpack-ea5983ad4b51e934.js} +1 -1
  352. package/app/.next/static/css/7caa8a6802c65def.css +1 -0
  353. package/app/docs/openapi.yaml +1 -1
  354. package/app/open-sse/mcp-server/server.js +15 -1
  355. package/app/package.json +1 -1
  356. package/package.json +1 -1
  357. package/app/.next/server/chunks/80812.js +0 -1
  358. package/app/.next/static/chunks/app/(dashboard)/dashboard/cache/media/page-f0289617f824bbf2.js +0 -1
  359. package/app/.next/static/chunks/app/(dashboard)/dashboard/logs/page-f24fde8a3f731108.js +0 -1
  360. package/app/.next/static/css/8d36e4e21725013b.css +0 -1
  361. /package/app/.next/static/{yvJ6rPtn4eb7sOBUCBGrF → qmeYzerLcoUXZ06JXgit3}/_buildManifest.js +0 -0
  362. /package/app/.next/static/{yvJ6rPtn4eb7sOBUCBGrF → qmeYzerLcoUXZ06JXgit3}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[387],{31308:(e,a,t)=>{Promise.resolve().then(t.bind(t,92333))},50910:(e,a,t)=>{"use strict";t.d(a,{c:()=>n});var i=t(55510);function r(e,a){return(...e)=>{try{return a(...e)}catch{throw Error(void 0)}}}let n=r(0,i.c3);r(0,i.kc)},92333:(e,a,t)=>{"use strict";t.d(a,{default:()=>v});var i=t(95155),r=t(12115),n=t(50910),s=t(98500),l=t.n(s);let o={openai:{id:"openai",baseUrl:"https://api.openai.com/v1/images/generations",authType:"apikey",authHeader:"bearer",format:"openai",models:[{id:"gpt-image-1",name:"GPT Image 1"},{id:"dall-e-3",name:"DALL-E 3"},{id:"dall-e-2",name:"DALL-E 2"}],supportedSizes:["1024x1024","1024x1792","1792x1024","256x256","512x512"]},codex:{id:"codex",alias:"cx",baseUrl:"https://chatgpt.com/backend-api/codex/responses",authType:"oauth",authHeader:"bearer",format:"codex-responses",models:[{id:"gpt-5.4",name:"GPT 5.4 (Codex Image)"},{id:"gpt-5.3-codex",name:"GPT 5.3 Codex (Image)"},{id:"gpt-5.1-codex-max",name:"GPT 5.1 Codex Max (Image)"}],supportedSizes:["512x512","1024x1024","1024x1536","1536x1024"]},"chatgpt-web":{id:"chatgpt-web",alias:"cgpt-web",baseUrl:"https://chatgpt.com/backend-api/f/conversation",authType:"apikey",authHeader:"cookie",format:"chatgpt-web",models:[{id:"gpt-5.3-instant",name:"GPT-5.3 Instant (ChatGPT Web Image)"}],supportedSizes:["1024x1024","1024x1536","1536x1024"]},xai:{id:"xai",baseUrl:"https://api.x.ai/v1/images/generations",authType:"apikey",authHeader:"bearer",format:"openai",models:[{id:"grok-2-image-1212",name:"Grok 2 Image"}],supportedSizes:["1024x1024"]},together:{id:"together",baseUrl:"https://api.together.xyz/v1/images/generations",authType:"apikey",authHeader:"bearer",format:"openai",models:[{id:"black-forest-labs/FLUX.1.1-pro",name:"FLUX 1.1 Pro",inputModalities:["text","image"],description:"Advanced contextual image editing and image-to-image generation"},{id:"black-forest-labs/FLUX.1-schnell-Free",name:"FLUX 1 Schnell (Free)"},{id:"stabilityai/stable-diffusion-xl-base-1.0",name:"SDXL Base 1.0"},{id:"black-forest-labs/FLUX.1-redux",name:"FLUX.1 Redux",inputModalities:["text","image"],description:"Generate prompt-guided variations from an input image"},{id:"black-forest-labs/FLUX.1-depth",name:"FLUX.1 Depth",inputModalities:["text","image"],description:"Depth-conditioned image generation from an input image"},{id:"black-forest-labs/FLUX.1-canny",name:"FLUX.1 Canny",inputModalities:["text","image"],description:"Canny edge guided image generation from an input image"},{id:"black-forest-labs/FLUX.1-dev-lora",name:"FLUX.1 Dev LoRA"}],supportedSizes:["1024x1024","512x512"]},fireworks:{id:"fireworks",baseUrl:"https://api.fireworks.ai/inference/v1/images/generations",authType:"apikey",authHeader:"bearer",format:"openai",models:[{id:"accounts/fireworks/models/flux-1-dev-fp8",name:"FLUX 1 Dev FP8"},{id:"accounts/fireworks/models/stable-diffusion-xl-1024-v1-0",name:"SDXL 1024 v1.0"}],supportedSizes:["1024x1024","512x512"]},antigravity:{id:"antigravity",baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",authType:"oauth",authHeader:"bearer",format:"gemini-image",models:[],supportedSizes:["1024x1024"]},nebius:{id:"nebius",baseUrl:"https://api.tokenfactory.nebius.com/v1/images/generations",fallbackUrl:"https://api.studio.nebius.com/v1/images/generations",authType:"apikey",authHeader:"bearer",format:"openai",models:[{id:"black-forest-labs/flux-schnell",name:"FLUX.1 Schnell"},{id:"black-forest-labs/flux-dev",name:"FLUX.1 Dev"}],supportedSizes:["1024x1024","512x512"]},hyperbolic:{id:"hyperbolic",baseUrl:"https://api.hyperbolic.xyz/v1/image/generation",authType:"apikey",authHeader:"bearer",format:"hyperbolic",models:[{id:"SDXL1.0-base",name:"SDXL 1.0 Base"},{id:"SD2",name:"Stable Diffusion 2"},{id:"FLUX.1-dev",name:"FLUX.1 Dev"}],supportedSizes:["1024x1024","512x512"]},nanobanana:{id:"nanobanana",baseUrl:"https://api.nanobananaapi.ai/api/v1/nanobanana/generate",proUrl:"https://api.nanobananaapi.ai/api/v1/nanobanana/generate-pro",statusUrl:"https://api.nanobananaapi.ai/api/v1/nanobanana/record-info",authType:"apikey",authHeader:"bearer",format:"nanobanana",models:[{id:"nanobanana-flash",name:"NanoBanana Flash (Gemini 2.5 Flash)"},{id:"nanobanana-pro",name:"NanoBanana Pro (Gemini 3 Pro)"}],supportedSizes:["1024x1024","1024x1280","1024x1536","1536x1024","1280x1024"]},sdwebui:{id:"sdwebui",baseUrl:"http://localhost:7860/sdapi/v1/txt2img",authType:"none",authHeader:"none",format:"sdwebui",models:[{id:"stable-diffusion-v1-5",name:"Stable Diffusion v1.5"},{id:"sdxl-base-1.0",name:"SDXL Base 1.0"}],supportedSizes:["512x512","768x768","1024x1024"]},comfyui:{id:"comfyui",baseUrl:"http://localhost:8188",authType:"none",authHeader:"none",format:"comfyui",models:[{id:"flux-dev",name:"FLUX Dev"},{id:"sdxl",name:"SDXL"}],supportedSizes:["512x512","768x768","1024x1024"]},openrouter:{id:"openrouter",baseUrl:"https://openrouter.ai/api/v1/images/generations",authType:"apikey",authHeader:"bearer",format:"openai",models:[{id:"openai/dall-e-3",name:"DALL-E 3 (via OpenRouter)"},{id:"openai/gpt-image-1",name:"GPT Image 1 (via OpenRouter)"},{id:"google/imagen-3.0-generate-002",name:"Imagen 3 (via OpenRouter)"},{id:"black-forest-labs/FLUX.1-schnell",name:"FLUX.1 Schnell (via OpenRouter)"}],supportedSizes:["1024x1024","1024x1792","1792x1024","256x256","512x512"]},pollinations:{id:"pollinations",alias:"pol",baseUrl:"https://gen.pollinations.ai/v1/images/generations",authType:"apikey",authHeader:"bearer",format:"openai",models:[{id:"flux",name:"Flux Schnell"},{id:"zimage",name:"Z-Image Turbo"},{id:"klein",name:"FLUX.2 Klein 4B"},{id:"gptimage",name:"GPT Image 1 Mini"},{id:"qwen-image",name:"Qwen Image Plus"},{id:"wan-image",name:"Wan 2.7 Image"},{id:"flux-kontext",name:"FLUX.1 Kontext",inputModalities:["text","image"],description:"Context-aware image editing with optional source image"},{id:"flux-kontext-max",name:"FLUX.1 Kontext Max",inputModalities:["text","image"],description:"Higher quality Kontext editing with optional source image"},{id:"gptimage-large",name:"GPT Image 1.5"}],supportedSizes:["1024x1024","512x512"]},"fal-ai":{id:"fal-ai",baseUrl:"https://fal.run",authType:"apikey",authHeader:"key",format:"fal-ai",models:[{id:"fal-ai/flux-pro/v1.1",name:"FLUX.1 Pro v1.1"},{id:"fal-ai/flux-pro/v1.1-ultra",name:"FLUX.1 Pro v1.1 Ultra"},{id:"fal-ai/flux/schnell",name:"FLUX.1 Schnell"},{id:"bria/text-to-image/3.2",name:"Bria 3.2"},{id:"fal-ai/bytedance/seedream/v3/text-to-image",name:"SeeDream V3"},{id:"fal-ai/bytedance/dreamina/v3.1/text-to-image",name:"Dreamina V3.1"},{id:"fal-ai/ideogram/v3",name:"Ideogram V3"},{id:"fal-ai/imagen4/preview",name:"Imagen 4 Preview"},{id:"fal-ai/imagen4/preview/fast",name:"Imagen 4 Preview Fast"},{id:"fal-ai/imagen4/preview/ultra",name:"Imagen 4 Preview Ultra"},{id:"fal-ai/recraft/v3/text-to-image",name:"Recraft V3 via Fal"},{id:"fal-ai/stable-diffusion-v35-medium",name:"Stable Diffusion v3.5 Medium"}],supportedSizes:["1024x1024","1024x1280","1280x1024"]},"stability-ai":{id:"stability-ai",baseUrl:"https://api.stability.ai",authType:"apikey",authHeader:"bearer",format:"stability-ai",models:[{id:"sd3",name:"sd3"},{id:"sd3-large",name:"sd3-large"},{id:"sd3-large-turbo",name:"sd3-large-turbo"},{id:"sd3-medium",name:"sd3-medium"},{id:"sd3.5-large",name:"sd3.5-large"},{id:"sd3.5-large-turbo",name:"sd3.5-large-turbo"},{id:"sd3.5-medium",name:"sd3.5-medium"},{id:"stable-image-ultra",name:"Stable Image Ultra"},{id:"stable-image-core",name:"Stable Image Core"},{id:"inpaint",name:"Inpaint",inputModalities:["text","image"]},{id:"outpaint",name:"Outpaint",inputModalities:["text","image"]},{id:"erase",name:"Erase",inputModalities:["image"]},{id:"search-and-replace",name:"Search and Replace",inputModalities:["text","image"]},{id:"search-and-recolor",name:"Search and Recolor",inputModalities:["text","image"]},{id:"remove-background",name:"Remove Background",inputModalities:["image"]},{id:"replace-background-and-relight",name:"Replace Background and Relight",inputModalities:["text","image"]},{id:"fast",name:"Fast Upscale",inputModalities:["image"]},{id:"conservative",name:"Conservative Upscale",inputModalities:["image"]},{id:"creative",name:"Creative Upscale",inputModalities:["text","image"]},{id:"sketch",name:"Sketch Control",inputModalities:["text","image"]},{id:"structure",name:"Structure Control",inputModalities:["text","image"]},{id:"style",name:"Style Control",inputModalities:["text","image"]},{id:"style-transfer",name:"Style Transfer",inputModalities:["text","image"]}],supportedSizes:["1024x1024","1024x1280","1280x1024"]},"black-forest-labs":{id:"black-forest-labs",baseUrl:"https://api.bfl.ai",authType:"apikey",authHeader:"x-key",format:"black-forest-labs",models:[{id:"flux-kontext-pro",name:"flux-kontext-pro",inputModalities:["text","image"]},{id:"flux-kontext-max",name:"flux-kontext-max",inputModalities:["text","image"]},{id:"flux-pro-1.0-fill",name:"flux-pro-1.0-fill",inputModalities:["text","image"]},{id:"flux-pro-1.0-expand",name:"flux-pro-1.0-expand",inputModalities:["text","image"]},{id:"flux-pro-1.1",name:"flux-pro-1.1"},{id:"flux-pro-1.1-ultra",name:"flux-pro-1.1-ultra"},{id:"flux-dev",name:"flux-dev"},{id:"flux-pro",name:"flux-pro"}],supportedSizes:["1024x1024","1024x1280","1280x1024"]},recraft:{id:"recraft",baseUrl:"https://external.api.recraft.ai",authType:"apikey",authHeader:"bearer",format:"recraft",models:[{id:"recraftv2",name:"recraftv2"},{id:"recraftv3",name:"recraftv3"}],supportedSizes:["1024x1024","1024x1280","1280x1024"]},topaz:{id:"topaz",baseUrl:"https://api.topazlabs.com",authType:"apikey",authHeader:"x-api-key",format:"topaz",models:[{id:"topaz-enhance",name:"topaz-enhance",inputModalities:["image"]}],supportedSizes:["1024x1024"]}},d=t(20909).Q2,m=Object.entries(o).map(([e,a])=>({id:e,name:d[e]?.name||e,models:a.models.map(a=>({id:`${e}/${a.id}`,name:a.name}))})),p={image:{icon:"image",endpoint:"/api/v1/images/generations",label:"Image Generation",placeholder:"A serene landscape with mountains at sunset...",color:"from-purple-500 to-pink-500",needsCredentials:Object.entries(o).filter(([,e])=>"none"!==e.authType).map(([e])=>e)},video:{icon:"videocam",endpoint:"/api/v1/videos/generations",label:"Video Generation",placeholder:"A timelapse of a flower blooming...",color:"from-blue-500 to-cyan-500",needsCredentials:[]},music:{icon:"music_note",endpoint:"/api/v1/music/generations",label:"Music Generation",placeholder:"Upbeat electronic music with synth pads...",color:"from-orange-500 to-yellow-500",needsCredentials:[]},speech:{icon:"record_voice_over",endpoint:"/api/v1/audio/speech",label:"Text to Speech",placeholder:"Hello! Welcome to OmniRoute, your intelligent AI gateway...",color:"from-green-500 to-teal-500",textLabel:"Text",needsCredentials:["openai","elevenlabs","deepgram"]},transcription:{icon:"mic",endpoint:"/api/v1/audio/transcriptions",label:"Transcription",placeholder:"Upload an audio file to transcribe...",color:"from-indigo-500 to-blue-500",needsCredentials:["deepgram","groq","openai"]}},c={image:m,video:[{id:"comfyui",name:"ComfyUI",models:[{id:"comfyui/animatediff",name:"AnimateDiff"},{id:"comfyui/svd",name:"Stable Video Diffusion"}]},{id:"sdwebui",name:"SD WebUI",models:[{id:"sdwebui/animatediff",name:"AnimateDiff (Local)"}]}],music:[{id:"comfyui",name:"ComfyUI",models:[{id:"comfyui/stable-audio",name:"Stable Audio Open"},{id:"comfyui/musicgen",name:"MusicGen"}]}],speech:[{id:"openai",name:"OpenAI",models:[{id:"openai/tts-1",name:"TTS-1"},{id:"openai/tts-1-hd",name:"TTS-1 HD"},{id:"openai/gpt-4o-mini-tts",name:"GPT-4o Mini TTS"}]},{id:"elevenlabs",name:"ElevenLabs",models:[{id:"elevenlabs/eleven_multilingual_v2",name:"Eleven Multilingual v2"},{id:"elevenlabs/eleven_turbo_v2_5",name:"Eleven Turbo v2.5"}]},{id:"deepgram",name:"Deepgram",models:[{id:"deepgram/aura-asteria-en",name:"Aura Asteria (EN)"},{id:"deepgram/aura-luna-en",name:"Aura Luna (EN)"},{id:"deepgram/aura-stella-en",name:"Aura Stella (EN)"}]},{id:"hyperbolic",name:"Hyperbolic",models:[{id:"hyperbolic/melo-tts",name:"Melo TTS"}]},{id:"nvidia",name:"NVIDIA NIM",models:[{id:"nvidia/fastpitch",name:"FastPitch"},{id:"nvidia/tacotron2",name:"Tacotron2"}]},{id:"inworld",name:"Inworld",models:[{id:"inworld/inworld-tts-1.5-max",name:"Inworld TTS Max"},{id:"inworld/inworld-tts-1.5-mini",name:"Inworld TTS Mini"}]},{id:"cartesia",name:"Cartesia",models:[{id:"cartesia/sonic-2",name:"Sonic 2"},{id:"cartesia/sonic-3",name:"Sonic 3"}]},{id:"playht",name:"PlayHT",models:[{id:"playht/PlayDialog",name:"PlayDialog"},{id:"playht/Play3.0-mini",name:"Play3.0 Mini"}]},{id:"huggingface",name:"HuggingFace",models:[{id:"huggingface/espnet/kan-bayashi_ljspeech_vits",name:"VITS LJSpeech"}]},{id:"qwen",name:"Qwen",models:[{id:"qwen/qwen3-tts",name:"Qwen3 TTS"}]}],transcription:[{id:"deepgram",name:"Deepgram ($200 free)",models:[{id:"deepgram/nova-3",name:"Nova 3 (Best)"},{id:"deepgram/nova-2",name:"Nova 2"},{id:"deepgram/enhanced",name:"Enhanced"},{id:"deepgram/base",name:"Base"}]},{id:"assemblyai",name:"AssemblyAI ($50 free)",models:[{id:"assemblyai/universal-3-pro",name:"Universal 3 Pro (Best)"},{id:"assemblyai/universal-2",name:"Universal 2"},{id:"assemblyai/nano",name:"Nano (Fast)"}]},{id:"groq",name:"Groq (Free — Whisper)",models:[{id:"groq/whisper-large-v3",name:"Whisper Large v3 (Free)"},{id:"groq/whisper-large-v3-turbo",name:"Whisper Turbo (Free)"}]},{id:"openai",name:"OpenAI",models:[{id:"openai/whisper-1",name:"Whisper 1"},{id:"openai/gpt-4o-transcription",name:"GPT-4o Transcription"}]},{id:"nvidia",name:"NVIDIA NIM",models:[{id:"nvidia/nvidia/parakeet-ctc-1.1b-asr",name:"Parakeet CTC 1.1B"}]},{id:"huggingface",name:"HuggingFace",models:[{id:"huggingface/openai/whisper-large-v3",name:"Whisper Large v3 (HF)"}]},{id:"qwen",name:"Qwen",models:[{id:"qwen/qwen3-asr",name:"Qwen3 ASR"}]}]},u={default:[{id:"alloy",label:"Alloy"},{id:"echo",label:"Echo"},{id:"fable",label:"Fable"},{id:"onyx",label:"Onyx"},{id:"nova",label:"Nova"},{id:"shimmer",label:"Shimmer"}],elevenlabs:[{id:"21m00Tcm4TlvDq8ikWAM",label:"Rachel (EN)"},{id:"AZnzlk1XvdvUeBnXmlld",label:"Domi (EN)"},{id:"EXAVITQu4vr4xnSDxMaL",label:"Bella (EN)"},{id:"ErXwobaYiN019PkySvjV",label:"Antoni (EN)"},{id:"MF3mGyEYCl7XYWbV9V6O",label:"Elli (EN)"},{id:"TxGEqnHWrfWFTfGW9XjX",label:"Josh (EN)"},{id:"VR6AewLTigWG4xSOukaG",label:"Arnold (EN)"},{id:"pNInz6obpgDQGcFmaJgB",label:"Adam (EN)"},{id:"yoZ06aMxZJJ28mfd3POQ",label:"Sam (EN)"}],cartesia:[{id:"a0e99841-438c-4a64-b679-ae501e7d6091",label:"Barbershop Man"},{id:"694f9389-aac1-45b6-b726-9d9369183238",label:"Friendly Reading Man"},{id:"b7d50908-b17c-442d-ad8d-810c63997ed9",label:"California Girl"}],deepgram:[{id:"aura-asteria-en",label:"Asteria (EN)"},{id:"aura-luna-en",label:"Luna (EN)"},{id:"aura-stella-en",label:"Stella (EN)"},{id:"aura-zeus-en",label:"Zeus (EN)"},{id:"aura-orion-en",label:"Orion (EN)"}],inworld:[{id:"Eva",label:"Eva (EN)"},{id:"Marcus",label:"Marcus (EN)"}]},x=["mp3","wav","opus","flac","pcm"];function g(e){return u[e]??u.default}function b(e,a){let t=e?.error?.message||e?.err_msg||e?.error||e?.message||e?.detail||("string"==typeof e?e:null)||`Request failed (${a})`,i="string"==typeof t&&(t.toLowerCase().includes("no credentials")||t.toLowerCase().includes("invalid api key")||t.toLowerCase().includes("unauthorized")||t.toLowerCase().includes("authentication")||t.toLowerCase().includes("api key")||401===a||403===a);return{message:String(t),isCredentials:i}}function f(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(0)} KB`:e<0x40000000?`${(e/1048576).toFixed(1)} MB`:`${(e/0x40000000).toFixed(2)} GB`}function h(e){return new Promise((a,t)=>{let i=new FileReader;i.onload=()=>{"string"==typeof i.result?a(i.result):t(Error("Failed to read file"))},i.onerror=()=>t(i.error||Error("Failed to read file")),i.readAsDataURL(e)})}function y({data:e}){let a=e?.data||[];return 0===a.length?(0,i.jsx)("p",{className:"text-sm text-text-muted italic",children:"No images returned. The provider might have accepted the request but returned empty data."}):(0,i.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:a.map((e,a)=>{let t=e.url||(e.b64_json?`data:image/png;base64,${e.b64_json}`:null);return t?(0,i.jsxs)("div",{className:"relative group rounded-lg overflow-hidden border border-black/10 dark:border-white/10",children:[(0,i.jsx)("img",{src:t,alt:e.revised_prompt||`Generated image ${a+1}`,className:"w-full"}),(0,i.jsxs)("a",{href:t,download:`image-${a+1}.png`,className:"absolute bottom-2 right-2 bg-black/60 text-white text-xs px-2 py-1 rounded opacity-0 group-hover:opacity-100 transition-opacity flex items-center gap-1",children:[(0,i.jsx)("span",{className:"material-symbols-outlined text-[13px]",children:"download"}),"Save"]}),e.revised_prompt&&(0,i.jsx)("p",{className:"text-[11px] text-text-muted px-2 py-1 bg-surface/80 truncate",title:e.revised_prompt,children:e.revised_prompt})]},a):null})})}function v(){let e=(0,n.c)("media"),[a,t]=(0,r.useState)("image"),[s,o]=(0,r.useState)(""),[d,m]=(0,r.useState)(""),[u,v]=(0,r.useState)(""),[w,k]=(0,r.useState)(!1),[N,j]=(0,r.useState)(null),[S,T]=(0,r.useState)(null),[U,F]=(0,r.useState)(!1),[L,z]=(0,r.useState)("alloy"),[P,M]=(0,r.useState)("mp3"),[I,C]=(0,r.useState)(null),[D,E]=(0,r.useState)(null),[A,X]=(0,r.useState)(null),[G,O]=(0,r.useState)(null),_=["sdwebui","comfyui"],[H,$]=(0,r.useState)(new Set(_));(0,r.useEffect)(()=>{fetch("/api/providers").then(e=>e.json()).then(e=>{let a=Array.isArray(e)?e:e?.connections??e?.providers??[],t=new Set;for(let e of a){let a=e?.provider;a&&_.includes(a)&&t.add(a)}t.size>0?$(t):$(new Set)}).catch(()=>{})},[]);let R=(c[a]??[]).filter(e=>!_.includes(e.id)||H.has(e.id)),B=R.find(e=>e.id===d)?.models??[],q=(0,r.useRef)(!1);if(!q.current){q.current=!0;let e=(c.image??[])[0];m(e?.id??""),v(e?.models[0]?.id??"")}let V=async()=>{k(!0),T(null),F(!1),j(null);try{let e=p[a],t=s.trim();if("speech"===a){if(!t){T("Please enter text to synthesize."),k(!1);return}let a=await fetch(e.endpoint,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:u,input:t,voice:L,response_format:P})});if(!a.ok){let e=await a.json().catch(()=>({})),{message:t,isCredentials:i}=b(e,a.status);throw F(i),Error(t)}let i=await a.blob(),r=URL.createObjectURL(i);j({type:"speech",data:{format:P},timestamp:Date.now(),audioUrl:r}),k(!1);return}if("transcription"===a){if(!I){T("Please select an audio file to transcribe."),k(!1);return}let a=new FormData;a.append("file",I),a.append("model",u);let t=await fetch(e.endpoint,{method:"POST",body:a});if(!t.ok){let e=await t.json().catch(()=>({})),{message:a,isCredentials:i}=b(e,t.status);throw F(i),Error(a)}let i=await t.json();if(i?.noSpeechDetected){T(`No speech detected in the audio file. If you uploaded music or a silent file, try an audio file with spoken words. Provider: "${d}".`),F(!1),k(!1);return}if(i&&"string"==typeof i.text&&""===i.text.trim()){T(`Transcription returned empty text. The audio may contain no recognizable speech, or the "${d}" API key may be invalid. Check Dashboard → Logs → Proxy for details.`),F(!1),k(!1);return}j({type:"transcription",data:i,timestamp:Date.now()}),k(!1);return}if("image"===a&&"topaz"===d&&!A){T("Topaz requires an input image."),k(!1);return}if(!s.trim()&&("image"!==a||"topaz"!==d)){T("Please enter a prompt."),k(!1);return}let i={model:u,prompt:t||("image"===a&&"topaz"===d?"Enhance this image":""),..."image"===a?{size:"1024x1024",n:1}:{}};if("image"===a&&A){let e=await h(A);i.image_url=e,i.imageUrls=[e]}if("image"===a&&G){let e=await h(G);i.mask=e,i.mask_url=e}let r=await fetch(e.endpoint,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)});if(!r.ok){let e=await r.json().catch(()=>({})),{message:a,isCredentials:t}=b(e,r.status);throw F(t),Error(a)}let n=await r.json();j({type:a,data:n,timestamp:Date.now()})}catch(e){T(e.message||"Generation failed")}k(!1)},W=p[a],J=g(d),Q="image"===a&&"topaz"===d,K=w||("transcription"===a?!I:"image"===a&&Q?!A:!s.trim());return(0,i.jsxs)("div",{className:"space-y-6",children:[(0,i.jsxs)("div",{children:[(0,i.jsx)("h1",{className:"text-2xl font-bold text-text-main",children:e("title")}),(0,i.jsx)("p",{className:"text-text-muted text-sm mt-1",children:e("subtitle")})]}),(0,i.jsx)("div",{className:"flex flex-wrap gap-2 p-1 bg-surface/50 rounded-xl border border-black/5 dark:border-white/5",children:Object.keys(p).map(e=>{let r=p[e],n=e===a;return(0,i.jsxs)("button",{onClick:()=>{let a;return t(e),o(""),j(null),T(null),F(!1),C(null),X(null),O(null),a=(c[e]??[])[0],void(m(a?.id??""),v(a?.models[0]?.id??""),"speech"===e&&z(g(a?.id??"")[0]?.id??"alloy"))},className:`flex-1 min-w-[110px] flex items-center justify-center gap-2 px-4 py-2.5 rounded-lg text-sm font-medium transition-all ${n?"bg-primary/10 text-primary shadow-sm border border-primary/20":"text-text-muted hover:text-text-main hover:bg-surface/80"}`,children:[(0,i.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:r.icon}),r.label]},e)})}),(0,i.jsxs)("div",{className:"bg-surface/30 rounded-xl border border-black/5 dark:border-white/5 p-6 space-y-4",children:[(0,i.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[(0,i.jsxs)("div",{children:[(0,i.jsx)("label",{className:"block text-sm font-medium text-text-main mb-2",children:"Provider"}),(0,i.jsx)("select",{value:d,onChange:e=>{var t;let i;return m(t=e.target.value),i=c[a]?.find(e=>e.id===t)?.models??[],void(v(i[0]?.id??""),"speech"===a&&z(g(t)[0]?.id??"alloy"))},className:"w-full px-3 py-2 rounded-lg bg-surface border border-black/10 dark:border-white/10 text-text-main text-sm focus:outline-none focus:ring-2 focus:ring-primary/30",children:R.map(e=>(0,i.jsx)("option",{value:e.id,children:e.name},e.id))})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)("label",{className:"block text-sm font-medium text-text-main mb-2",children:e("model")}),(0,i.jsx)("select",{value:u,onChange:e=>v(e.target.value),className:"w-full px-3 py-2 rounded-lg bg-surface border border-black/10 dark:border-white/10 text-text-main text-sm focus:outline-none focus:ring-2 focus:ring-primary/30",children:B.map(e=>(0,i.jsx)("option",{value:e.id,children:e.name},e.id))})]})]}),d&&!["sdwebui","comfyui","qwen"].includes(d)&&(0,i.jsxs)("p",{className:"text-xs text-text-muted flex items-center gap-1.5",children:[(0,i.jsx)("span",{className:"material-symbols-outlined text-[14px] text-amber-500",children:"info"}),"Requires ",(0,i.jsx)("strong",{className:"capitalize",children:d})," API key in"," ",(0,i.jsx)(l(),{href:"/dashboard/providers",className:"text-primary underline underline-offset-2 hover:text-primary/80",children:"Providers"})]}),"speech"===a&&(0,i.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,i.jsxs)("div",{children:[(0,i.jsx)("label",{className:"block text-sm font-medium text-text-main mb-2",children:"Voice"}),(0,i.jsx)("select",{value:L,onChange:e=>z(e.target.value),className:"w-full px-3 py-2 rounded-lg bg-surface border border-black/10 dark:border-white/10 text-text-main text-sm focus:outline-none focus:ring-2 focus:ring-primary/30",children:J.map(e=>(0,i.jsx)("option",{value:e.id,children:e.label},e.id))})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)("label",{className:"block text-sm font-medium text-text-main mb-2",children:"Format"}),(0,i.jsx)("select",{value:P,onChange:e=>M(e.target.value),className:"w-full px-3 py-2 rounded-lg bg-surface border border-black/10 dark:border-white/10 text-text-main text-sm focus:outline-none focus:ring-2 focus:ring-primary/30",children:x.map(e=>(0,i.jsx)("option",{value:e,children:e},e))})]})]}),"transcription"===a?(0,i.jsxs)("div",{children:[(0,i.jsx)("label",{className:"block text-sm font-medium text-text-main mb-2",children:"Audio / Video File"}),(0,i.jsx)("input",{type:"file",accept:"audio/*,video/*",onChange:e=>{let a=e.target.files?.[0]??null;if(E(null),a&&a.size>0x100000000){E(`File too large (${f(a.size)}). Maximum allowed: 4 GB.`),C(null),e.target.value="";return}C(a)},className:"w-full px-3 py-2 rounded-lg bg-surface border border-black/10 dark:border-white/10 text-text-main text-sm focus:outline-none focus:ring-2 focus:ring-primary/30 file:mr-3 file:py-1 file:px-3 file:rounded file:border-0 file:bg-primary/10 file:text-primary file:text-sm"}),D&&(0,i.jsxs)("p",{className:"text-xs text-red-400 mt-1 flex items-center gap-1",children:[(0,i.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"error"}),D]}),I&&!D&&(0,i.jsxs)("p",{className:"text-xs text-text-muted mt-1",children:[I.name," (",f(I.size),")"]}),(0,i.jsx)("p",{className:"text-[10px] text-text-muted/60 mt-1",children:"Supports audio and video files up to 4 GB"})]}):(0,i.jsxs)(i.Fragment,{children:["image"===a&&(0,i.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[(0,i.jsxs)("div",{children:[(0,i.jsx)("label",{className:"block text-sm font-medium text-text-main mb-2",children:"Source Image"}),(0,i.jsx)("input",{type:"file",accept:"image/*",onChange:e=>X(e.target.files?.[0]??null),className:"w-full px-3 py-2 rounded-lg bg-surface border border-black/10 dark:border-white/10 text-text-main text-sm focus:outline-none focus:ring-2 focus:ring-primary/30 file:mr-3 file:py-1 file:px-3 file:rounded file:border-0 file:bg-primary/10 file:text-primary file:text-sm"}),A&&(0,i.jsxs)("p",{className:"text-xs text-text-muted mt-1",children:[A.name," (",f(A.size),")"]}),(0,i.jsx)("p",{className:"text-[10px] text-text-muted/60 mt-1",children:"Optional for image-to-image, editing and upscale workflows."})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)("label",{className:"block text-sm font-medium text-text-main mb-2",children:"Mask Image"}),(0,i.jsx)("input",{type:"file",accept:"image/*",onChange:e=>O(e.target.files?.[0]??null),className:"w-full px-3 py-2 rounded-lg bg-surface border border-black/10 dark:border-white/10 text-text-main text-sm focus:outline-none focus:ring-2 focus:ring-primary/30 file:mr-3 file:py-1 file:px-3 file:rounded file:border-0 file:bg-primary/10 file:text-primary file:text-sm"}),G&&(0,i.jsxs)("p",{className:"text-xs text-text-muted mt-1",children:[G.name," (",f(G.size),")"]}),(0,i.jsx)("p",{className:"text-[10px] text-text-muted/60 mt-1",children:"Optional. Used by inpaint-style models that support masks."})]})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)("label",{className:"block text-sm font-medium text-text-main mb-2",children:"speech"===a?"Text":"image"===a&&"topaz"===d?"Prompt (optional)":e("prompt")}),(0,i.jsx)("textarea",{rows:3,value:s,onChange:e=>o(e.target.value),placeholder:"image"===a&&"topaz"===d?"Optional enhancement instructions...":W.placeholder,className:"w-full px-3 py-2 rounded-lg bg-surface border border-black/10 dark:border-white/10 text-text-main text-sm placeholder:text-text-muted/50 focus:outline-none focus:ring-2 focus:ring-primary/30 resize-none"})]})]}),(0,i.jsx)("button",{onClick:V,disabled:K,className:`w-full flex items-center justify-center gap-2 px-4 py-3 rounded-lg text-white font-medium transition-all bg-gradient-to-r ${W.color} ${K?"opacity-50 cursor-not-allowed":"hover:opacity-90 hover:shadow-lg"}`,children:w?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("span",{className:"material-symbols-outlined animate-spin text-[18px]",children:"progress_activity"}),"speech"===a?"Synthesizing...":"transcription"===a?"Transcribing...":e("generating")]}):(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"speech"===a?"volume_up":"transcription"===a?"mic":"auto_awesome"}),"speech"===a?"Synthesize Speech":"transcription"===a?"Transcribe Audio":`${e("generate")} ${W.label}`]})})]}),S&&(0,i.jsxs)("div",{className:`rounded-xl p-4 flex items-start gap-3 ${U?"bg-amber-500/10 border border-amber-500/20":"bg-red-500/10 border border-red-500/20"}`,children:[(0,i.jsx)("span",{className:`material-symbols-outlined text-[20px] mt-0.5 ${U?"text-amber-500":"text-red-500"}`,children:U?"key":"error"}),(0,i.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,i.jsx)("p",{className:`text-sm font-medium ${U?"text-amber-500":"text-red-500"}`,children:U?"API Key Required":e("error")}),(0,i.jsx)("p",{className:"text-sm text-text-muted mt-1 break-words",children:S}),U&&(0,i.jsxs)(l(),{href:"/dashboard/providers",className:"inline-flex items-center gap-1 mt-2 text-xs text-primary hover:underline",children:[(0,i.jsx)("span",{className:"material-symbols-outlined text-[13px]",children:"open_in_new"}),"Configure API keys in Providers →"]})]})]}),N&&(0,i.jsxs)("div",{className:"bg-surface/30 rounded-xl border border-black/5 dark:border-white/5 p-6",children:[(0,i.jsxs)("div",{className:"flex items-center gap-2 mb-4",children:[(0,i.jsx)("span",{className:`material-symbols-outlined text-[20px] bg-gradient-to-r ${W.color} bg-clip-text text-transparent`,children:W.icon}),(0,i.jsx)("h3",{className:"text-sm font-medium text-text-main",children:e("result")}),(0,i.jsx)("span",{className:"text-xs text-text-muted ml-auto",children:new Date(N.timestamp).toLocaleTimeString()})]}),"speech"===N.type&&N.audioUrl?(0,i.jsxs)("div",{className:"space-y-3",children:[(0,i.jsx)("audio",{controls:!0,src:N.audioUrl,className:"w-full rounded-lg",autoPlay:!0}),(0,i.jsxs)("a",{href:N.audioUrl,download:`speech.${N.data?.format||"mp3"}`,className:"inline-flex items-center gap-2 text-sm text-primary hover:underline",children:[(0,i.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"download"}),"Download ",N.data?.format?.toUpperCase()||"MP3"]})]}):"image"===N.type?(0,i.jsx)(y,{data:N.data}):"transcription"===N.type?(0,i.jsxs)("div",{className:"space-y-3",children:[(0,i.jsx)("div",{className:"bg-surface rounded-lg p-4 text-sm text-text-main leading-relaxed whitespace-pre-wrap",children:N.data?.text||(0,i.jsx)("span",{className:"text-text-muted italic",children:"No text returned"})}),N.data?.words&&(0,i.jsxs)("details",{className:"mt-2",children:[(0,i.jsxs)("summary",{className:"text-xs text-text-muted cursor-pointer hover:text-text-main",children:["Word-level timestamps (",N.data.words.length," words)"]}),(0,i.jsx)("pre",{className:"bg-surface rounded mt-2 p-3 text-xs text-text-muted overflow-auto max-h-48 custom-scrollbar",children:JSON.stringify(N.data.words,null,2)})]})]}):(0,i.jsx)("pre",{className:"bg-surface rounded-lg p-4 text-xs text-text-muted overflow-auto max-h-96 custom-scrollbar",children:JSON.stringify(N.data,null,2)})]}),(0,i.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-5 gap-4",children:Object.keys(p).map(e=>{let a=p[e],t=c[e]?.length??0;return(0,i.jsxs)("div",{className:"bg-surface/30 rounded-xl border border-black/5 dark:border-white/5 p-4",children:[(0,i.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,i.jsx)("div",{className:`flex items-center justify-center size-8 rounded-lg bg-gradient-to-r ${a.color}`,children:(0,i.jsx)("span",{className:"material-symbols-outlined text-white text-[16px]",children:a.icon})}),(0,i.jsx)("span",{className:"text-sm font-medium text-text-main",children:a.label})]}),(0,i.jsxs)("p",{className:"text-xs text-text-muted",children:[t," providers"]}),(0,i.jsxs)("code",{className:"block mt-2 text-xs text-primary/70 bg-primary/5 rounded px-2 py-1",children:["POST ",a.endpoint]})]},e)})})]})}}},e=>{e.O(0,[5510,8500,7173,909,8441,3794,7358],()=>e(e.s=31308)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8013],{27071:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>v});var a=r(95155),l=r(12115),s=r(73321),o=r(40993),d=r(50910),n=r(32661);let c={debug:"text-gray-400",trace:"text-gray-500",info:"text-cyan-400",warn:"text-yellow-400",error:"text-red-400",fatal:"text-fuchsia-400"},i={debug:"bg-gray-500/10 border-gray-500/20",trace:"bg-gray-500/10 border-gray-500/20",info:"bg-cyan-500/10 border-cyan-500/20",warn:"bg-yellow-500/10 border-yellow-500/20",error:"bg-red-500/10 border-red-500/20",fatal:"bg-fuchsia-500/10 border-fuchsia-500/20"};function x(){let e=(0,d.c)("loggers"),[t,r]=(0,l.useState)([]),[s,o]=(0,l.useState)(!0),[x,m]=(0,l.useState)(null),[u,b]=(0,l.useState)("all"),[p,h]=(0,l.useState)(""),[v,g]=(0,l.useState)(!0),[f,j]=(0,l.useState)(null),[y,N]=(0,l.useState)(null),w=(0,l.useRef)(null),k=(0,l.useCallback)(async()=>{try{let e=new URLSearchParams;"all"!==u&&e.set("level",u),e.set("limit","500");let t=await fetch(`/api/logs/console?${e.toString()}`);if(!t.ok)throw Error(`HTTP ${t.status}`);let a=await t.json();r(a),j(new Date),m(null)}catch(e){m(e.message||"Failed to fetch logs")}finally{o(!1)}},[u]);(0,l.useEffect)(()=>{k();let e=setInterval(k,5e3);return()=>clearInterval(e)},[k]),(0,l.useEffect)(()=>{v&&w.current&&(w.current.scrollTop=w.current.scrollHeight)},[t,v]);let S=async(e,t)=>{let r=JSON.stringify(e,null,2);await (0,n.l)(r)?(m(null),N(t),setTimeout(()=>N(null),2e3)):m("Failed to copy log entry")},L=p?t.filter(e=>JSON.stringify(e).toLowerCase().includes(p.toLowerCase())):t;return(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-3 p-4 rounded-xl bg-[var(--color-surface)] border border-[var(--color-border)]",children:[(0,a.jsxs)("select",{value:u,onChange:e=>b(e.target.value),"aria-label":"Filter by log level",className:"px-3 py-2 rounded-lg text-sm bg-[var(--color-bg)] border border-[var(--color-border)] text-[var(--color-text-main)] focus:outline-2 focus:outline-[var(--color-accent)]",children:[(0,a.jsx)("option",{value:"all",children:e("allLevels")}),(0,a.jsx)("option",{value:"debug",children:"Debug+"}),(0,a.jsx)("option",{value:"info",children:"Info+"}),(0,a.jsx)("option",{value:"warn",children:"Warn+"}),(0,a.jsx)("option",{value:"error",children:"Error+"})]}),(0,a.jsx)("input",{type:"text",placeholder:"Search logs...",value:p,onChange:e=>h(e.target.value),"aria-label":"Search log entries",className:"flex-1 min-w-[200px] px-3 py-2 rounded-lg text-sm bg-[var(--color-bg)] border border-[var(--color-border)] text-[var(--color-text-main)] placeholder:text-[var(--color-text-muted)] focus:outline-2 focus:outline-[var(--color-accent)]"}),(0,a.jsxs)("button",{onClick:()=>g(!v),title:v?"Disable auto-scroll":"Enable auto-scroll",className:`px-3 py-2 rounded-lg text-sm font-medium border transition-colors ${v?"bg-cyan-500/15 text-cyan-400 border-cyan-500/30":"bg-[var(--color-bg)] text-[var(--color-text-muted)] border-[var(--color-border)]"}`,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] align-middle mr-1",children:v?"vertical_align_bottom":"lock"}),"Auto-scroll"]}),(0,a.jsx)("button",{onClick:k,disabled:s,className:"px-3 py-2 rounded-lg text-sm font-medium bg-[var(--color-bg)] border border-[var(--color-border)] text-[var(--color-text-main)] hover:bg-[var(--color-bg-alt)] disabled:opacity-50 transition-colors",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] align-middle",children:"refresh"})}),(0,a.jsxs)("div",{className:"flex items-center gap-2 ml-auto text-xs text-[var(--color-text-muted)]",children:[(0,a.jsx)("span",{className:"inline-block w-2 h-2 rounded-full bg-green-500 animate-pulse"}),(0,a.jsxs)("span",{children:[L.length," entries"]}),(0,a.jsx)("span",{className:"text-[var(--color-text-muted)]/50",children:"•"}),(0,a.jsx)("span",{children:"Last 1h"}),f&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{className:"text-[var(--color-text-muted)]/50",children:"•"}),(0,a.jsxs)("span",{children:["Updated ",f.toLocaleTimeString()]})]})]})]}),x&&(0,a.jsxs)("div",{className:"p-4 rounded-lg bg-red-500/10 border border-red-500/30 text-red-400 text-sm",role:"alert",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] align-middle mr-2",children:"error"}),x,(0,a.jsx)("span",{className:"text-xs ml-2 opacity-70",children:"— Make sure the application is writing logs to file (APP_LOG_TO_FILE=true)"})]}),(0,a.jsxs)("div",{ref:w,className:"rounded-xl border border-[var(--color-border)] bg-[#0d1117] overflow-auto font-mono text-xs leading-relaxed",style:{maxHeight:"calc(100vh - 340px)",minHeight:"400px"},role:"log","aria-label":"Application console logs","aria-live":"polite",children:[(0,a.jsxs)("div",{className:"sticky top-0 z-10 px-4 py-2 bg-[#161b22] border-b border-[#30363d] flex items-center gap-2",children:[(0,a.jsx)("div",{className:"w-3 h-3 rounded-full bg-[#FF5F56]"}),(0,a.jsx)("div",{className:"w-3 h-3 rounded-full bg-[#FFBD2E]"}),(0,a.jsx)("div",{className:"w-3 h-3 rounded-full bg-[#27C93F]"}),(0,a.jsx)("span",{className:"ml-3 text-[#8b949e] text-[11px]",children:"OmniRoute — Application Console"})]}),(0,a.jsxs)("div",{className:"p-3 space-y-px",children:[0!==L.length||s?L.map((e,t)=>{let r=(e.level||"info").toLowerCase(),l=c[r]||c.info,s=i[r]||"",o=e.component||e.module||"",d=e.msg||e.message||"";return(0,a.jsxs)("div",{className:`group flex items-start gap-2 px-2 py-1 rounded hover:bg-white/5 transition-colors ${"error"===r||"fatal"===r?"bg-red-500/5":""}`,children:[(0,a.jsx)("span",{className:"text-[#484f58] whitespace-nowrap shrink-0 select-none",children:(e=>{try{return new Date(e).toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit",fractionalSecondDigits:3})}catch{return e}})(e.timestamp)}),(0,a.jsx)("span",{className:`inline-block px-1.5 py-0 rounded text-[10px] font-semibold uppercase border shrink-0 ${l} ${s}`,children:r.padEnd(5)}),o&&(0,a.jsxs)("span",{className:"text-purple-400/80 shrink-0",children:["[",o,"]"]}),(0,a.jsxs)("span",{className:"text-[#c9d1d9] flex-1 break-all",children:[d,e.correlationId&&(0,a.jsxs)("span",{className:"text-[#484f58] ml-2",children:["cid:",e.correlationId.slice(0,8)]})]}),(0,a.jsx)("button",{onClick:()=>S(e,t),title:"Copy log entry",className:"opacity-0 group-hover:opacity-100 transition-opacity shrink-0 text-[#8b949e] hover:text-white",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:y===t?"check":"content_copy"})})]},t)}):(0,a.jsxs)("div",{className:"text-[#8b949e] text-center py-12",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[40px] block mb-2 opacity-30",children:"terminal"}),(0,a.jsx)("p",{children:e("noLogEntries")}),(0,a.jsx)("p",{className:"text-[10px] mt-1 opacity-60",children:"Ensure APP_LOG_TO_FILE=true is set in your .env file"})]}),s&&0===L.length&&(0,a.jsxs)("div",{className:"text-[#8b949e] text-center py-12",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[24px] animate-spin block mb-2",children:"progress_activity"}),"Loading logs..."]})]})]})]})}function m(e){let t=Math.max(0,Math.floor(e/1e3)),r=Math.floor(t/60),a=t%60;if(r<=0)return`${a}s`;if(r<60)return`${r}m ${a}s`;let l=Math.floor(r/60);return`${l}h ${r%60}m`}function u(){let e=(0,d.c)("logs"),[t,r]=(0,l.useState)([]),[s,o]=(0,l.useState)(!0),[n,c]=(0,l.useState)(null);return((0,l.useEffect)(()=>{let e=!1,t=async()=>{try{let t=await fetch("/api/logs/active",{cache:"no-store"});if(!t.ok)return;let a=await t.json();e||r(Array.isArray(a.activeRequests)?a.activeRequests:[])}catch(t){e||console.error("Failed to load active requests:",t)}finally{e||o(!1)}};t();let a=setInterval(t,3e3);return()=>{e=!0,clearInterval(a)}},[]),s||0!==t.length)?(0,a.jsxs)("div",{className:"rounded-xl border border-border bg-card/70",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between gap-4 border-b border-border px-4 py-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"text-sm font-semibold uppercase tracking-wide text-text-main",children:e("runningRequests")}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:e("runningRequestsDesc")})]}),(0,a.jsxs)("div",{className:"inline-flex items-center gap-2 rounded-full border border-emerald-500/30 bg-emerald-500/10 px-3 py-1 text-xs font-medium text-emerald-300",children:[(0,a.jsx)("span",{className:"h-2 w-2 rounded-full bg-emerald-400 animate-pulse"}),s?e("loading"):e("activeCount",{count:t.length})]})]}),(0,a.jsx)("div",{className:"overflow-x-auto",children:(0,a.jsxs)("table",{className:"min-w-full text-sm",children:[(0,a.jsx)("thead",{className:"bg-sidebar/40 text-left text-xs uppercase tracking-wide text-text-muted",children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{className:"px-4 py-3 font-medium",children:e("model")}),(0,a.jsx)("th",{className:"px-4 py-3 font-medium",children:e("provider")}),(0,a.jsx)("th",{className:"px-4 py-3 font-medium",children:e("account")}),(0,a.jsx)("th",{className:"px-4 py-3 font-medium",children:e("elapsed")}),(0,a.jsx)("th",{className:"px-4 py-3 font-medium",children:e("count")}),(0,a.jsx)("th",{className:"px-4 py-3 font-medium",children:e("payloads")})]})}),(0,a.jsx)("tbody",{children:t.map(t=>(0,a.jsxs)("tr",{className:"border-t border-border/60",children:[(0,a.jsx)("td",{className:"px-4 py-3 font-medium text-text-main",children:t.model}),(0,a.jsx)("td",{className:"px-4 py-3 text-text-muted",children:t.provider}),(0,a.jsx)("td",{className:"px-4 py-3 text-text-muted",children:t.account}),(0,a.jsx)("td",{className:"px-4 py-3 text-text-main",children:m(t.runningTimeMs)}),(0,a.jsx)("td",{className:"px-4 py-3 text-text-main",children:t.count}),(0,a.jsx)("td",{className:"px-4 py-3",children:(0,a.jsx)("button",{type:"button",onClick:()=>c(t),className:"rounded-md border border-border px-3 py-1.5 text-xs font-medium text-text-main transition-colors hover:bg-sidebar/40",children:e("viewPayloads")})})]},`${t.account}:${t.provider}:${t.model}:${t.startedAt}`))})]})}),n&&(0,a.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60 px-4 py-6",children:(0,a.jsxs)("div",{className:"flex max-h-[85vh] w-full max-w-5xl flex-col overflow-hidden rounded-2xl border border-border bg-card shadow-2xl",children:[(0,a.jsxs)("div",{className:"flex items-start justify-between gap-4 border-b border-border px-5 py-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsxs)("h4",{className:"text-lg font-semibold text-text-main",children:[n.provider," / ",n.model]}),(0,a.jsx)("p",{className:"mt-1 text-sm text-text-muted",children:e("runningRequestDetailMeta",{account:n.account,elapsed:m(n.runningTimeMs)})})]}),(0,a.jsx)("button",{type:"button",onClick:()=>c(null),className:"rounded-full border border-border p-2 text-text-muted transition-colors hover:bg-sidebar/40 hover:text-text-main","aria-label":e("close"),children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"close"})})]}),(0,a.jsxs)("div",{className:"grid gap-4 overflow-y-auto px-5 py-5 md:grid-cols-2",children:[(0,a.jsxs)("section",{className:"rounded-xl border border-border bg-bg-subtle p-4",children:[(0,a.jsxs)("div",{className:"mb-3",children:[(0,a.jsx)("h5",{className:"text-sm font-semibold text-text-main",children:e("clientPayload")}),(0,a.jsx)("p",{className:"mt-1 text-xs text-text-muted",children:n.clientEndpoint||e("notAvailable")})]}),(0,a.jsx)("pre",{className:"overflow-x-auto rounded-lg border border-border/70 bg-bg p-3 text-xs text-text-muted",children:JSON.stringify(n.clientRequest||{},null,2)})]}),(0,a.jsxs)("section",{className:"rounded-xl border border-border bg-bg-subtle p-4",children:[(0,a.jsxs)("div",{className:"mb-3",children:[(0,a.jsx)("h5",{className:"text-sm font-semibold text-text-main",children:e("upstreamPayload")}),(0,a.jsx)("p",{className:"mt-1 break-all text-xs text-text-muted",children:n.providerUrl||e("upstreamNotSentYet")})]}),(0,a.jsx)("pre",{className:"overflow-x-auto rounded-lg border border-border/70 bg-bg p-3 text-xs text-text-muted",children:JSON.stringify(n.providerRequest||{},null,2)})]})]})]})})]}):null}function b(){let[e,t]=(0,l.useState)([]),[r,s]=(0,l.useState)(!0),[o,n]=(0,l.useState)(null),[c,i]=(0,l.useState)(""),[x,m]=(0,l.useState)(""),[u,b]=(0,l.useState)(0),[p,h]=(0,l.useState)(!1),[v,g]=(0,l.useState)(0),[f,j]=(0,l.useState)(null),y=(0,d.c)("logs"),N=(0,l.useCallback)(async()=>{s(!0),n(null);try{let e=new URLSearchParams;c&&e.set("action",c),x&&e.set("actor",x),e.set("limit",String(26)),e.set("offset",String(u));let r=await fetch(`/api/compliance/audit-log?${e.toString()}`);if(!r.ok)throw Error(y("failedFetchAuditLog"));let a=await r.json(),l=Number(r.headers.get("x-total-count")||"0");h(a.length>25),t(a.slice(0,25)),g(Number.isFinite(l)?l:0)}catch(e){n(e.message||y("failedFetchAuditLog"))}finally{s(!1)}},[c,x,u,y]);(0,l.useEffect)(()=>{N()},[N]);let w=()=>{0===u?N():b(0)},k=e=>{try{return new Date(e).toLocaleString()}catch{return e}};return(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"text-xl font-bold text-[var(--color-text-main)]",children:y("auditLog")}),(0,a.jsx)("p",{className:"text-sm text-[var(--color-text-muted)] mt-1",children:y("auditLogDesc")}),(0,a.jsx)("p",{className:"mt-2 text-xs text-[var(--color-text-muted)]",children:y("totalEntries",{count:v})})]}),(0,a.jsx)("button",{onClick:N,disabled:r,"aria-label":y("refreshAuditLogAria"),className:"px-4 py-2 rounded-lg text-sm font-medium bg-[var(--color-surface)] border border-[var(--color-border)] text-[var(--color-text-main)] hover:bg-[var(--color-bg-alt)] transition-colors disabled:opacity-50",children:r?y("loading"):y("refresh")})]}),(0,a.jsxs)("div",{className:"flex flex-wrap gap-3 p-4 rounded-xl bg-[var(--color-surface)] border border-[var(--color-border)]",role:"search","aria-label":y("filterEntriesAria"),children:[(0,a.jsx)("input",{type:"text",placeholder:y("filterByAction"),value:c,onChange:e=>i(e.target.value),onKeyDown:e=>"Enter"===e.key&&w(),"aria-label":y("filterByActionTypeAria"),className:"flex-1 min-w-[180px] px-3 py-2 rounded-lg text-sm bg-[var(--color-bg)] border border-[var(--color-border)] text-[var(--color-text-main)] placeholder:text-[var(--color-text-muted)] focus:outline-2 focus:outline-[var(--color-accent)]"}),(0,a.jsx)("input",{type:"text",placeholder:y("filterByActor"),value:x,onChange:e=>m(e.target.value),onKeyDown:e=>"Enter"===e.key&&w(),"aria-label":y("filterByActorAria"),className:"flex-1 min-w-[180px] px-3 py-2 rounded-lg text-sm bg-[var(--color-bg)] border border-[var(--color-border)] text-[var(--color-text-main)] placeholder:text-[var(--color-text-muted)] focus:outline-2 focus:outline-[var(--color-accent)]"}),(0,a.jsx)("button",{onClick:w,className:"px-4 py-2 rounded-lg text-sm font-medium bg-[var(--color-accent)] text-white hover:bg-[var(--color-accent-hover)] transition-colors focus:outline-2 focus:outline-offset-2 focus:outline-[var(--color-accent)]",children:y("search")})]}),o&&(0,a.jsx)("div",{className:"p-4 rounded-lg bg-red-500/10 border border-red-500/30 text-red-400 text-sm",role:"alert",children:o}),(0,a.jsx)("div",{className:"overflow-x-auto rounded-xl border border-[var(--color-border)]",children:(0,a.jsxs)("table",{className:"w-full text-sm",role:"table","aria-label":y("tableAria"),children:[(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{className:"bg-[var(--color-bg-alt)] border-b border-[var(--color-border)]",children:[(0,a.jsx)("th",{className:"text-left px-4 py-3 font-medium text-[var(--color-text-muted)]",children:y("timestamp")}),(0,a.jsx)("th",{className:"text-left px-4 py-3 font-medium text-[var(--color-text-muted)]",children:y("action")}),(0,a.jsx)("th",{className:"text-left px-4 py-3 font-medium text-[var(--color-text-muted)]",children:y("status")}),(0,a.jsx)("th",{className:"text-left px-4 py-3 font-medium text-[var(--color-text-muted)]",children:y("actor")}),(0,a.jsx)("th",{className:"text-left px-4 py-3 font-medium text-[var(--color-text-muted)]",children:y("target")}),(0,a.jsx)("th",{className:"text-left px-4 py-3 font-medium text-[var(--color-text-muted)]",children:y("resourceType")}),(0,a.jsx)("th",{className:"text-left px-4 py-3 font-medium text-[var(--color-text-muted)]",children:y("ipAddress")}),(0,a.jsx)("th",{className:"text-left px-4 py-3 font-medium text-[var(--color-text-muted)]",children:y("requestId")}),(0,a.jsx)("th",{className:"text-left px-4 py-3 font-medium text-[var(--color-text-muted)]",children:y("details")})]})}),(0,a.jsx)("tbody",{children:0!==e.length||r?e.map(e=>{var t,r;return(0,a.jsxs)("tr",{className:"border-b border-[var(--color-border)] hover:bg-[var(--color-bg-alt)] transition-colors",children:[(0,a.jsx)("td",{className:"px-4 py-3 whitespace-nowrap text-[var(--color-text-muted)] font-mono text-xs",children:k(e.timestamp)}),(0,a.jsx)("td",{className:"px-4 py-3",children:(0,a.jsx)("span",{className:`inline-block px-2 py-0.5 rounded-md text-xs font-medium border ${"provider.warning"===(t=e.action)?"bg-amber-500/15 text-amber-300 border-amber-500/20":t.includes("delete")||t.includes("remove")?"bg-red-500/15 text-red-400 border-red-500/20":t.includes("create")||t.includes("add")?"bg-green-500/15 text-green-400 border-green-500/20":t.includes("update")||t.includes("change")?"bg-blue-500/15 text-blue-400 border-blue-500/20":t.includes("login")||t.includes("auth")?"bg-purple-500/15 text-purple-400 border-purple-500/20":"bg-gray-500/15 text-gray-400 border-gray-500/20"}`,children:(0,a.jsxs)("span",{className:"inline-flex items-center gap-1",children:["provider.warning"===e.action&&(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"warning"}),e.action]})})}),(0,a.jsx)("td",{className:"px-4 py-3",children:(0,a.jsx)("span",{className:`inline-block px-2 py-0.5 rounded-md text-xs font-medium border ${!(r=e.status)?"bg-gray-500/15 text-gray-400 border-gray-500/20":"success"===r?"bg-green-500/15 text-green-400 border-green-500/20":"warning"===r||"blocked"===r?"bg-amber-500/15 text-amber-300 border-amber-500/20":"error"===r||"failed"===r?"bg-red-500/15 text-red-400 border-red-500/20":"bg-blue-500/15 text-blue-400 border-blue-500/20"}`,children:e.status||y("notAvailable")})}),(0,a.jsx)("td",{className:"px-4 py-3 text-[var(--color-text-main)]",children:e.actor}),(0,a.jsx)("td",{className:"px-4 py-3 text-[var(--color-text-muted)] max-w-[200px] truncate",children:e.target||y("notAvailable")}),(0,a.jsx)("td",{className:"px-4 py-3 text-[var(--color-text-muted)] whitespace-nowrap",children:e.resourceType||y("notAvailable")}),(0,a.jsx)("td",{className:"px-4 py-3 text-[var(--color-text-muted)] font-mono text-xs whitespace-nowrap",children:e.ip_address||y("notAvailable")}),(0,a.jsx)("td",{className:"px-4 py-3 text-[var(--color-text-muted)] font-mono text-xs whitespace-nowrap",children:e.requestId||y("notAvailable")}),(0,a.jsx)("td",{className:"px-4 py-3",children:(0,a.jsx)("button",{type:"button",onClick:()=>j(e),className:"rounded-md border border-[var(--color-border)] px-3 py-1.5 text-xs font-medium text-[var(--color-text-main)] transition-colors hover:bg-[var(--color-bg-alt)]",children:y("viewDetails")})})]},e.id)}):(0,a.jsx)("tr",{children:(0,a.jsx)("td",{colSpan:9,className:"px-4 py-8 text-center text-[var(--color-text-muted)]",children:y("noEntries")})})})]})}),(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("p",{className:"text-xs text-[var(--color-text-muted)]",children:y("showing",{count:e.length,offset:u})}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsxs)("button",{onClick:()=>b(Math.max(0,u-25)),disabled:0===u,className:"px-3 py-1.5 rounded-lg text-xs font-medium bg-[var(--color-surface)] border border-[var(--color-border)] text-[var(--color-text-main)] hover:bg-[var(--color-bg-alt)] disabled:opacity-30 transition-colors",children:["← ",y("previous")]}),(0,a.jsxs)("button",{onClick:()=>b(u+25),disabled:!p,className:"px-3 py-1.5 rounded-lg text-xs font-medium bg-[var(--color-surface)] border border-[var(--color-border)] text-[var(--color-text-main)] hover:bg-[var(--color-bg-alt)] disabled:opacity-30 transition-colors",children:[y("next")," →"]})]})]}),f&&(0,a.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60 px-4 py-6",children:(0,a.jsxs)("div",{className:"flex max-h-[85vh] w-full max-w-5xl flex-col overflow-hidden rounded-2xl border border-[var(--color-border)] bg-[var(--color-surface)] shadow-2xl",children:[(0,a.jsxs)("div",{className:"flex items-start justify-between gap-4 border-b border-[var(--color-border)] px-6 py-5",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"text-lg font-semibold text-[var(--color-text-main)]",children:f.action}),(0,a.jsx)("p",{className:"mt-1 text-sm text-[var(--color-text-muted)]",children:y("auditModalSubtitle",{actor:f.actor||y("notAvailable"),target:f.target||y("notAvailable")})})]}),(0,a.jsx)("button",{type:"button",onClick:()=>j(null),className:"rounded-full border border-[var(--color-border)] p-2 text-[var(--color-text-muted)] transition-colors hover:bg-[var(--color-bg-alt)] hover:text-[var(--color-text-main)]","aria-label":y("close"),children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"close"})})]}),(0,a.jsxs)("div",{className:"overflow-y-auto px-6 py-5",children:["provider.warning"===f.action&&(0,a.jsx)("div",{className:"mb-5 rounded-xl border border-amber-500/30 bg-amber-500/10 px-4 py-3 text-sm text-amber-100",children:(0,a.jsxs)("div",{className:"flex items-start gap-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"warning"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"font-medium",children:y("providerWarningTitle")}),(0,a.jsx)("p",{className:"mt-1 text-amber-200",children:y("providerWarningDesc")})]})]})}),(0,a.jsxs)("div",{className:"grid gap-4 md:grid-cols-2",children:[(0,a.jsxs)("div",{className:"rounded-xl border border-[var(--color-border)] bg-[var(--color-bg)] p-4",children:[(0,a.jsx)("h4",{className:"mb-3 text-sm font-semibold text-[var(--color-text-main)]",children:y("eventMetadata")}),(0,a.jsxs)("dl",{className:"space-y-2 text-sm",children:[(0,a.jsxs)("div",{className:"flex justify-between gap-3",children:[(0,a.jsx)("dt",{className:"text-[var(--color-text-muted)]",children:y("timestamp")}),(0,a.jsx)("dd",{className:"text-[var(--color-text-main)]",children:k(f.timestamp)})]}),(0,a.jsxs)("div",{className:"flex justify-between gap-3",children:[(0,a.jsx)("dt",{className:"text-[var(--color-text-muted)]",children:y("status")}),(0,a.jsx)("dd",{className:"text-[var(--color-text-main)]",children:f.status||y("notAvailable")})]}),(0,a.jsxs)("div",{className:"flex justify-between gap-3",children:[(0,a.jsx)("dt",{className:"text-[var(--color-text-muted)]",children:y("resourceType")}),(0,a.jsx)("dd",{className:"text-[var(--color-text-main)]",children:f.resourceType||y("notAvailable")})]}),(0,a.jsxs)("div",{className:"flex justify-between gap-3",children:[(0,a.jsx)("dt",{className:"text-[var(--color-text-muted)]",children:y("requestId")}),(0,a.jsx)("dd",{className:"font-mono text-[var(--color-text-main)]",children:f.requestId||y("notAvailable")})]}),(0,a.jsxs)("div",{className:"flex justify-between gap-3",children:[(0,a.jsx)("dt",{className:"text-[var(--color-text-muted)]",children:y("ipAddress")}),(0,a.jsx)("dd",{className:"font-mono text-[var(--color-text-main)]",children:f.ip_address||y("notAvailable")})]})]})]}),(0,a.jsxs)("div",{className:"rounded-xl border border-[var(--color-border)] bg-[var(--color-bg)] p-4",children:[(0,a.jsx)("h4",{className:"mb-3 text-sm font-semibold text-[var(--color-text-main)]",children:y("eventPayload")}),(0,a.jsx)("pre",{className:"overflow-x-auto rounded-lg border border-[var(--color-border)] bg-[var(--color-surface)] p-3 text-xs text-[var(--color-text-muted)]",children:JSON.stringify(f.metadata||f.details||{},null,2)})]})]})]})]})})]})}let p=[{label:"1h",hours:1},{label:"6h",hours:6},{label:"12h",hours:12},{label:"24h",hours:24}],h={"request-logs":"request-logs","proxy-logs":"proxy-logs","audit-logs":"call-logs",console:"call-logs"};function v(){let e=(0,s.useSearchParams)().get("tab"),[t,r]=(0,l.useState)(e&&h[e]?e:"request-logs"),[n,c]=(0,l.useState)(!1),[i,m]=(0,l.useState)(!1),v=(0,l.useRef)(null),g=(0,d.c)("logs");async function f(e){m(!0),c(!1);try{let r=h[t]||"call-logs",a=await fetch(`/api/logs/export?hours=${e}&type=${r}`);if(!a.ok)throw Error("Export failed");let l=await a.blob(),s=URL.createObjectURL(l),o=document.createElement("a");o.href=s,o.download=`omniroute-${r}-${e}h-${new Date().toISOString().slice(0,10)}.json`,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(s)}catch(e){console.error("Export failed:",e)}finally{m(!1)}}return(0,l.useEffect)(()=>{e&&h[e]&&e!==t&&r(e)},[t,e]),(0,l.useEffect)(()=>{function e(e){v.current&&!v.current.contains(e.target)&&c(!1)}return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]),(0,a.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between gap-4 flex-wrap",children:[(0,a.jsx)(o.Iz,{options:[{value:"request-logs",label:g("requestLogs")},{value:"proxy-logs",label:g("proxyLogs")},{value:"audit-logs",label:g("auditLog")},{value:"console",label:g("console")}],value:t,onChange:r}),(0,a.jsxs)("div",{className:"relative",ref:v,children:[(0,a.jsxs)("button",{id:"export-logs-btn",onClick:()=>c(!n),disabled:i,className:"flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-lg bg-[var(--card-bg,#1e1e2e)] border border-[var(--border,#333)] text-[var(--text-secondary,#aaa)] hover:text-[var(--text-primary,#fff)] hover:border-[var(--accent,#7c3aed)] transition-all duration-200 disabled:opacity-50 disabled:cursor-not-allowed",children:[(0,a.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",children:(0,a.jsx)("path",{d:"M8 2v8m0 0l-3-3m3 3l3-3M3 12h10",strokeLinecap:"round",strokeLinejoin:"round"})}),i?"Exporting...":"Export"]}),n&&(0,a.jsxs)("div",{className:"absolute right-0 top-full mt-1 z-50 min-w-[140px] rounded-lg bg-[var(--card-bg,#1e1e2e)] border border-[var(--border,#333)] shadow-xl overflow-hidden animate-in fade-in",children:[(0,a.jsx)("div",{className:"px-3 py-2 text-xs text-[var(--text-muted,#666)] border-b border-[var(--border,#333)] font-medium",children:"Time Range"}),p.map(e=>(0,a.jsxs)("button",{id:`export-${e.hours}h-btn`,onClick:()=>f(e.hours),className:"w-full px-3 py-2 text-sm text-left hover:bg-[var(--hover-bg,#2a2a3e)] text-[var(--text-secondary,#aaa)] hover:text-[var(--text-primary,#fff)] transition-colors flex items-center justify-between",children:[(0,a.jsxs)("span",{children:["Last ",e.label]}),(0,a.jsx)("span",{className:"text-xs text-[var(--text-muted,#666)]",children:24===e.hours?"default":""})]},e.hours))]})]})]}),"request-logs"===t&&(0,a.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,a.jsx)(u,{}),(0,a.jsx)(o.y7,{})]}),"proxy-logs"===t&&(0,a.jsx)(o.Lo,{}),"audit-logs"===t&&(0,a.jsx)(b,{}),"console"===t&&(0,a.jsx)(x,{})]})}},40993:(e,t,r)=>{"use strict";r.d(t,{Ex:()=>c.default,$n:()=>a.default,Zp:()=>o.default,Qv:()=>n.CardSkeleton,G9:()=>f.default,bQ:()=>w.default,pp:()=>y.default,Qn:()=>N.default,pd:()=>l.default,Mh:()=>g.default,uR:()=>u.default,aF:()=>d.default,rq:()=>m.default,LF:()=>x.default,KN:()=>h.default,Lo:()=>v.default,y7:()=>p.default,Iz:()=>j.default,l6:()=>s.default,lM:()=>i.default,cn:()=>b.default});var a=r(35806),l=r(34422),s=r(42994),o=r(81060),d=r(71361),n=r(92542);r(17705);var c=r(80927),i=r(19790);r(6261),r(55846),r(42912),r(87806),r(99023);var x=r(80178),m=r(85444),u=r(91961);r(25112);var b=r(45624),p=r(37415),h=r(48643),v=r(8287);r(1652);var g=r(92701);r(18150);var f=r(71689),j=r(33709);r(76332);var y=r(66200);r(61580);var N=r(51503);r(54128);var w=r(44638);r(21720),r(97050)},50910:(e,t,r)=>{"use strict";r.d(t,{c:()=>s});var a=r(55510);function l(e,t){return(...e)=>{try{return t(...e)}catch{throw Error(void 0)}}}let s=l(0,a.c3);l(0,a.kc)},53586:(e,t,r)=>{Promise.resolve().then(r.bind(r,27071))}},e=>{e.O(0,[5510,8500,7173,782,5831,909,5444,8643,1366,1999,8441,3794,7358],()=>e(e.s=53586)),_N_E=e.O()}]);