@jheavenknows/bluerouter 5.5.26 → 5.5.27

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 (795) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +19 -19
  3. package/app/.next-cli-build/build-manifest.json +2 -2
  4. package/app/.next-cli-build/server/app/(dashboard)/dashboard/ai-power-index/page.js.nft.json +1 -1
  5. package/app/.next-cli-build/server/app/(dashboard)/dashboard/ai-power-index/page_client-reference-manifest.js +1 -1
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/analytics/page.js.nft.json +1 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/api-keys/page.js.nft.json +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/api-keys/page_client-reference-manifest.js +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/audit-proxy/page.js.nft.json +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/audit-proxy/page_client-reference-manifest.js +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.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/model-profiles/page.js.nft.json +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/model-profiles/page_client-reference-manifest.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cluster/page.js.nft.json +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cluster/page_client-reference-manifest.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.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/logs/console/page.js.nft.json +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/logs/console/page_client-reference-manifest.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/logs/page.js.nft.json +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personal/page.js.nft.json +1 -1
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personal/page_client-reference-manifest.js +1 -1
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudcombo/page.js.nft.json +1 -1
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudcombo/page_client-reference-manifest.js +1 -1
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovider/page.js.nft.json +1 -1
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovider/page_client-reference-manifest.js +1 -1
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovidermonitor/page.js.nft.json +1 -1
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovidermonitor/page_client-reference-manifest.js +1 -1
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalquota/page.js.nft.json +1 -1
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalquota/page_client-reference-manifest.js +1 -1
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  55. package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-logs/page.js.nft.json +1 -1
  56. package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-logs/page_client-reference-manifest.js +1 -1
  57. package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page.js.nft.json +1 -1
  58. package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page_client-reference-manifest.js +1 -1
  59. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  60. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  61. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/embedding/[id]/page.js.nft.json +1 -1
  62. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/embedding/[id]/page_client-reference-manifest.js +1 -1
  63. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/embedding/page.js.nft.json +1 -1
  64. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/embedding/page_client-reference-manifest.js +1 -1
  65. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/image/[id]/page.js.nft.json +1 -1
  66. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/image/[id]/page_client-reference-manifest.js +1 -1
  67. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/image/page.js.nft.json +1 -1
  68. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/image/page_client-reference-manifest.js +1 -1
  69. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/image-to-text/[id]/page.js.nft.json +1 -1
  70. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/image-to-text/[id]/page_client-reference-manifest.js +1 -1
  71. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/image-to-text/page.js.nft.json +1 -1
  72. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/image-to-text/page_client-reference-manifest.js +1 -1
  73. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  74. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  75. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  76. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  77. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/stt/[id]/page.js.nft.json +1 -1
  78. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/stt/[id]/page_client-reference-manifest.js +1 -1
  79. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/stt/page.js.nft.json +1 -1
  80. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/stt/page_client-reference-manifest.js +1 -1
  81. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/tts/[id]/page.js.nft.json +1 -1
  82. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/tts/[id]/page_client-reference-manifest.js +1 -1
  83. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/tts/page.js.nft.json +1 -1
  84. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/tts/page_client-reference-manifest.js +1 -1
  85. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/web/[kind]/[id]/page.js.nft.json +1 -1
  86. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/web/[kind]/[id]/page_client-reference-manifest.js +1 -1
  87. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/web/page.js.nft.json +1 -1
  88. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/web/page_client-reference-manifest.js +1 -1
  89. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  90. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  91. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  92. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  93. package/app/.next-cli-build/server/app/(dashboard)/dashboard/resource-monitor/page.js.nft.json +1 -1
  94. package/app/.next-cli-build/server/app/(dashboard)/dashboard/resource-monitor/page_client-reference-manifest.js +1 -1
  95. package/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/pricing/page.js.nft.json +1 -1
  96. package/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  97. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  98. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  99. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  100. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  101. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  102. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  103. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  104. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  105. package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  106. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  107. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  108. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  109. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  110. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  111. package/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  112. package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  113. package/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  114. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  115. package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  116. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  117. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  118. package/app/.next-cli-build/server/app/_not-found.rsc +5 -5
  119. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +5 -5
  120. package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  121. package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +5 -5
  122. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  123. package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  124. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  125. package/app/.next-cli-build/server/app/api/audit-proxy/ca/route.js.nft.json +1 -1
  126. package/app/.next-cli-build/server/app/api/audit-proxy/me/route.js.nft.json +1 -1
  127. package/app/.next-cli-build/server/app/api/audit-proxy/root-ca/route.js.nft.json +1 -1
  128. package/app/.next-cli-build/server/app/api/audit-proxy/route.js.nft.json +1 -1
  129. package/app/.next-cli-build/server/app/api/audit-proxy/users/route.js.nft.json +1 -1
  130. package/app/.next-cli-build/server/app/api/auth/ldap/test/route.js.nft.json +1 -1
  131. package/app/.next-cli-build/server/app/api/auth/ldap/users/route.js.nft.json +1 -1
  132. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  133. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  134. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  135. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  136. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  137. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  138. package/app/.next-cli-build/server/app/api/auth/view-mode/route.js.nft.json +1 -1
  139. package/app/.next-cli-build/server/app/api/branding/[asset]/route.js.nft.json +1 -1
  140. package/app/.next-cli-build/server/app/api/branding/route.js.nft.json +1 -1
  141. package/app/.next-cli-build/server/app/api/branding/upload/route.js.nft.json +1 -1
  142. package/app/.next-cli-build/server/app/api/cli-model-profiles/cloud-models/route.js +1 -1
  143. package/app/.next-cli-build/server/app/api/cli-model-profiles/cloud-models/route.js.nft.json +1 -1
  144. package/app/.next-cli-build/server/app/api/cli-model-profiles/model-catalog/route.js.nft.json +1 -1
  145. package/app/.next-cli-build/server/app/api/cli-model-profiles/route.js.nft.json +1 -1
  146. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  147. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  148. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  149. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  150. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  151. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  152. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  153. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  154. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  155. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  156. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  157. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  158. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  159. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  160. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  161. package/app/.next-cli-build/server/app/api/cli-tools/qwen-settings/route.js.nft.json +1 -1
  162. package/app/.next-cli-build/server/app/api/cluster/config/route.js.nft.json +1 -1
  163. package/app/.next-cli-build/server/app/api/cluster/heartbeat/route.js.nft.json +1 -1
  164. package/app/.next-cli-build/server/app/api/cluster/peers/[id]/command/route.js.nft.json +1 -1
  165. package/app/.next-cli-build/server/app/api/cluster/peers/[id]/route.js.nft.json +1 -1
  166. package/app/.next-cli-build/server/app/api/cluster/peers/route.js.nft.json +1 -1
  167. package/app/.next-cli-build/server/app/api/cluster/snapshot/route.js.nft.json +1 -1
  168. package/app/.next-cli-build/server/app/api/cluster/sync/route.js.nft.json +1 -1
  169. package/app/.next-cli-build/server/app/api/cluster/test/route.js.nft.json +1 -1
  170. package/app/.next-cli-build/server/app/api/codex-catalog/download/route.js.nft.json +1 -1
  171. package/app/.next-cli-build/server/app/api/codex-catalog/route.js.nft.json +1 -1
  172. package/app/.next-cli-build/server/app/api/codex-catalog/upload/route.js.nft.json +1 -1
  173. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  174. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  175. package/app/.next-cli-build/server/app/api/dashboard/ai-power-index/route.js.nft.json +1 -1
  176. package/app/.next-cli-build/server/app/api/dashboard/analytics/ai-models/route.js.nft.json +1 -1
  177. package/app/.next-cli-build/server/app/api/dashboard/analytics/analyze/route.js.nft.json +1 -1
  178. package/app/.next-cli-build/server/app/api/dashboard/analytics/route.js.nft.json +1 -1
  179. package/app/.next-cli-build/server/app/api/dashboard/combos/route.js.nft.json +1 -1
  180. package/app/.next-cli-build/server/app/api/dashboard/endpoint/route.js.nft.json +1 -1
  181. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/[id]/route.js.nft.json +1 -1
  182. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/options/route.js.nft.json +1 -1
  183. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/route.js.nft.json +1 -1
  184. package/app/.next-cli-build/server/app/api/dashboard/token-saver/route.js.nft.json +1 -1
  185. package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  186. package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  187. package/app/.next-cli-build/server/app/api/keys/[id]/caveman-test/route.js +1 -1
  188. package/app/.next-cli-build/server/app/api/keys/[id]/caveman-test/route.js.nft.json +1 -1
  189. package/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js.nft.json +1 -1
  190. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  191. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  192. package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  193. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  194. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  195. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  196. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  197. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  198. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  199. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  200. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  201. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  202. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  203. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  204. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  205. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  206. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  207. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  208. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  209. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  210. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  211. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  212. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  213. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  214. package/app/.next-cli-build/server/app/api/oauth/grok-cli/device-code/route.js +1 -1
  215. package/app/.next-cli-build/server/app/api/oauth/grok-cli/device-code/route.js.nft.json +1 -1
  216. package/app/.next-cli-build/server/app/api/oauth/grok-cli/poll/route.js +1 -1
  217. package/app/.next-cli-build/server/app/api/oauth/grok-cli/poll/route.js.nft.json +1 -1
  218. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  219. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  220. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  221. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  222. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  223. package/app/.next-cli-build/server/app/api/personal-cloud-combos/[id]/api-key-models/route.js.nft.json +1 -1
  224. package/app/.next-cli-build/server/app/api/personal-cloud-combos/[id]/route.js +1 -1
  225. package/app/.next-cli-build/server/app/api/personal-cloud-combos/[id]/route.js.nft.json +1 -1
  226. package/app/.next-cli-build/server/app/api/personal-cloud-combos/route.js +1 -1
  227. package/app/.next-cli-build/server/app/api/personal-cloud-combos/route.js.nft.json +1 -1
  228. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/api-key-models/route.js +1 -1
  229. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/api-key-models/route.js.nft.json +1 -1
  230. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/import-models/route.js +1 -1
  231. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/import-models/route.js.nft.json +1 -1
  232. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/models/[...routeModel]/route.js +1 -1
  233. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/models/[...routeModel]/route.js.nft.json +1 -1
  234. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/move/route.js +1 -1
  235. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/move/route.js.nft.json +1 -1
  236. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/route.js +1 -1
  237. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/route.js.nft.json +1 -1
  238. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/usage/route.js +1 -1
  239. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/usage/route.js.nft.json +1 -1
  240. package/app/.next-cli-build/server/app/api/personal-cloud-providers/client/route.js +1 -1
  241. package/app/.next-cli-build/server/app/api/personal-cloud-providers/client/route.js.nft.json +1 -1
  242. package/app/.next-cli-build/server/app/api/personal-cloud-providers/monitor/route.js +1 -1
  243. package/app/.next-cli-build/server/app/api/personal-cloud-providers/monitor/route.js.nft.json +1 -1
  244. package/app/.next-cli-build/server/app/api/personal-cloud-providers/permissions/route.js +1 -1
  245. package/app/.next-cli-build/server/app/api/personal-cloud-providers/permissions/route.js.nft.json +1 -1
  246. package/app/.next-cli-build/server/app/api/personal-cloud-providers/route.js +1 -1
  247. package/app/.next-cli-build/server/app/api/personal-cloud-providers/route.js.nft.json +1 -1
  248. package/app/.next-cli-build/server/app/api/personal-cloud-providers/routing/route.js +1 -1
  249. package/app/.next-cli-build/server/app/api/personal-cloud-providers/routing/route.js.nft.json +1 -1
  250. package/app/.next-cli-build/server/app/api/personal-cloud-providers/shares/route.js +1 -1
  251. package/app/.next-cli-build/server/app/api/personal-cloud-providers/shares/route.js.nft.json +1 -1
  252. package/app/.next-cli-build/server/app/api/personal-cloud-providers/visibility/route.js +1 -1
  253. package/app/.next-cli-build/server/app/api/personal-cloud-providers/visibility/route.js.nft.json +1 -1
  254. package/app/.next-cli-build/server/app/api/pricing/catalog/route.js.nft.json +1 -1
  255. package/app/.next-cli-build/server/app/api/pricing/recalculate/route.js.nft.json +1 -1
  256. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  257. package/app/.next-cli-build/server/app/api/provider-health/route.js.nft.json +1 -1
  258. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  259. package/app/.next-cli-build/server/app/api/provider-nodes/combo-references/route.js.nft.json +1 -1
  260. package/app/.next-cli-build/server/app/api/provider-nodes/custom-embedding/manage/route.js.nft.json +1 -1
  261. package/app/.next-cli-build/server/app/api/provider-nodes/openai-compatible/manage/route.js.nft.json +1 -1
  262. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  263. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  264. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  265. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  266. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  267. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  268. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  269. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  270. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  271. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  272. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  273. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  274. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  275. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  276. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  277. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  278. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  279. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  280. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  281. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  282. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  283. package/app/.next-cli-build/server/app/api/resource-monitor/[id]/route.js.nft.json +1 -1
  284. package/app/.next-cli-build/server/app/api/resource-monitor/ai-models/route.js.nft.json +1 -1
  285. package/app/.next-cli-build/server/app/api/resource-monitor/analyze/route.js.nft.json +1 -1
  286. package/app/.next-cli-build/server/app/api/resource-monitor/history/route.js.nft.json +1 -1
  287. package/app/.next-cli-build/server/app/api/resource-monitor/route.js.nft.json +1 -1
  288. package/app/.next-cli-build/server/app/api/settings/database/export/route.js.nft.json +1 -1
  289. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  290. package/app/.next-cli-build/server/app/api/settings/prompt-log-db/route.js.nft.json +1 -1
  291. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  292. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  293. package/app/.next-cli-build/server/app/api/settings/route.js +2 -2
  294. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  295. package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  296. package/app/.next-cli-build/server/app/api/statusline/route.js.nft.json +1 -1
  297. package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  298. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  299. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  300. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  301. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  302. package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  303. package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  304. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  305. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  306. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  307. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  308. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  309. package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
  310. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  311. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  312. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  313. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  314. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  315. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  316. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  317. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  318. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  319. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  320. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  321. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  322. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  323. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  324. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  325. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  326. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
  327. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  328. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  329. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  330. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  331. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  332. package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  333. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  334. package/app/.next-cli-build/server/app/api/v1/rate-limits/route.js +1 -1
  335. package/app/.next-cli-build/server/app/api/v1/rate-limits/route.js.nft.json +1 -1
  336. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  337. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  338. package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  339. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  340. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  341. package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  342. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  343. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  344. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  345. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  346. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  347. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  348. package/app/.next-cli-build/server/app/api/version/restart/route.js.nft.json +1 -1
  349. package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  350. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  351. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  352. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  353. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +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/_head.segment.rsc +1 -1
  360. package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +5 -5
  361. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  362. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  363. package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  364. package/app/.next-cli-build/server/app/dashboard/ai-power-index.html +1 -1
  365. package/app/.next-cli-build/server/app/dashboard/ai-power-index.rsc +6 -6
  366. package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/!KGRhc2hib2FyZCk/dashboard/ai-power-index/__PAGE__.segment.rsc +1 -1
  367. package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/!KGRhc2hib2FyZCk/dashboard/ai-power-index.segment.rsc +1 -1
  368. package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  369. package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  370. package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/_full.segment.rsc +6 -6
  371. package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/_head.segment.rsc +1 -1
  372. package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/_index.segment.rsc +5 -5
  373. package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/_tree.segment.rsc +1 -1
  374. package/app/.next-cli-build/server/app/dashboard/api-keys.html +1 -1
  375. package/app/.next-cli-build/server/app/dashboard/api-keys.rsc +9 -9
  376. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard/api-keys/__PAGE__.segment.rsc +4 -4
  377. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard/api-keys.segment.rsc +1 -1
  378. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  379. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  380. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_full.segment.rsc +9 -9
  381. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_head.segment.rsc +1 -1
  382. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_index.segment.rsc +5 -5
  383. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_tree.segment.rsc +1 -1
  384. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  385. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +7 -7
  386. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  387. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  388. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  389. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  390. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +7 -7
  391. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  392. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +5 -5
  393. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  394. package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.html +1 -1
  395. package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.rsc +8 -8
  396. package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/model-profiles/__PAGE__.segment.rsc +3 -3
  397. package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/model-profiles.segment.rsc +1 -1
  398. package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  399. package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  400. package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  401. package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.segments/_full.segment.rsc +8 -8
  402. package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.segments/_head.segment.rsc +1 -1
  403. package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.segments/_index.segment.rsc +5 -5
  404. package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.segments/_tree.segment.rsc +1 -1
  405. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  406. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +7 -7
  407. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  408. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  409. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  410. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  411. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +7 -7
  412. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  413. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +5 -5
  414. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  415. package/app/.next-cli-build/server/app/dashboard/cluster.html +1 -1
  416. package/app/.next-cli-build/server/app/dashboard/cluster.rsc +6 -6
  417. package/app/.next-cli-build/server/app/dashboard/cluster.segments/!KGRhc2hib2FyZCk/dashboard/cluster/__PAGE__.segment.rsc +1 -1
  418. package/app/.next-cli-build/server/app/dashboard/cluster.segments/!KGRhc2hib2FyZCk/dashboard/cluster.segment.rsc +1 -1
  419. package/app/.next-cli-build/server/app/dashboard/cluster.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  420. package/app/.next-cli-build/server/app/dashboard/cluster.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  421. package/app/.next-cli-build/server/app/dashboard/cluster.segments/_full.segment.rsc +6 -6
  422. package/app/.next-cli-build/server/app/dashboard/cluster.segments/_head.segment.rsc +1 -1
  423. package/app/.next-cli-build/server/app/dashboard/cluster.segments/_index.segment.rsc +5 -5
  424. package/app/.next-cli-build/server/app/dashboard/cluster.segments/_tree.segment.rsc +1 -1
  425. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  426. package/app/.next-cli-build/server/app/dashboard/combos.rsc +7 -7
  427. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  428. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  429. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  430. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  431. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +7 -7
  432. package/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  433. package/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +5 -5
  434. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  435. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  436. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +7 -7
  437. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  438. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  439. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  440. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  441. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +7 -7
  442. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  443. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +5 -5
  444. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  445. package/app/.next-cli-build/server/app/dashboard/logs.html +1 -1
  446. package/app/.next-cli-build/server/app/dashboard/logs.rsc +6 -6
  447. package/app/.next-cli-build/server/app/dashboard/logs.segments/!KGRhc2hib2FyZCk/dashboard/logs/__PAGE__.segment.rsc +1 -1
  448. package/app/.next-cli-build/server/app/dashboard/logs.segments/!KGRhc2hib2FyZCk/dashboard/logs.segment.rsc +1 -1
  449. package/app/.next-cli-build/server/app/dashboard/logs.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  450. package/app/.next-cli-build/server/app/dashboard/logs.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  451. package/app/.next-cli-build/server/app/dashboard/logs.segments/_full.segment.rsc +6 -6
  452. package/app/.next-cli-build/server/app/dashboard/logs.segments/_head.segment.rsc +1 -1
  453. package/app/.next-cli-build/server/app/dashboard/logs.segments/_index.segment.rsc +5 -5
  454. package/app/.next-cli-build/server/app/dashboard/logs.segments/_tree.segment.rsc +1 -1
  455. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  456. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +7 -7
  457. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  458. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  459. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  460. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  461. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  462. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +7 -7
  463. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  464. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +5 -5
  465. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  466. package/app/.next-cli-build/server/app/dashboard/personal.html +1 -1
  467. package/app/.next-cli-build/server/app/dashboard/personal.rsc +7 -7
  468. package/app/.next-cli-build/server/app/dashboard/personal.segments/!KGRhc2hib2FyZCk/dashboard/personal/__PAGE__.segment.rsc +2 -2
  469. package/app/.next-cli-build/server/app/dashboard/personal.segments/!KGRhc2hib2FyZCk/dashboard/personal.segment.rsc +1 -1
  470. package/app/.next-cli-build/server/app/dashboard/personal.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  471. package/app/.next-cli-build/server/app/dashboard/personal.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  472. package/app/.next-cli-build/server/app/dashboard/personal.segments/_full.segment.rsc +7 -7
  473. package/app/.next-cli-build/server/app/dashboard/personal.segments/_head.segment.rsc +1 -1
  474. package/app/.next-cli-build/server/app/dashboard/personal.segments/_index.segment.rsc +5 -5
  475. package/app/.next-cli-build/server/app/dashboard/personal.segments/_tree.segment.rsc +1 -1
  476. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  477. package/app/.next-cli-build/server/app/dashboard/profile.rsc +7 -7
  478. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  479. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  480. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  481. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  482. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +7 -7
  483. package/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  484. package/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +5 -5
  485. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  486. package/app/.next-cli-build/server/app/dashboard/prompt-logs.html +1 -1
  487. package/app/.next-cli-build/server/app/dashboard/prompt-logs.rsc +6 -6
  488. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs/__PAGE__.segment.rsc +1 -1
  489. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs.segment.rsc +1 -1
  490. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  491. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  492. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_full.segment.rsc +6 -6
  493. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_head.segment.rsc +1 -1
  494. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_index.segment.rsc +5 -5
  495. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_tree.segment.rsc +1 -1
  496. package/app/.next-cli-build/server/app/dashboard/provider-health.html +1 -1
  497. package/app/.next-cli-build/server/app/dashboard/provider-health.rsc +6 -6
  498. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health/__PAGE__.segment.rsc +1 -1
  499. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health.segment.rsc +1 -1
  500. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  501. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  502. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_full.segment.rsc +6 -6
  503. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_head.segment.rsc +1 -1
  504. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_index.segment.rsc +5 -5
  505. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_tree.segment.rsc +1 -1
  506. package/app/.next-cli-build/server/app/dashboard/providers/embedding.html +1 -1
  507. package/app/.next-cli-build/server/app/dashboard/providers/embedding.rsc +7 -7
  508. package/app/.next-cli-build/server/app/dashboard/providers/embedding.segments/!KGRhc2hib2FyZCk/dashboard/providers/embedding/__PAGE__.segment.rsc +2 -2
  509. package/app/.next-cli-build/server/app/dashboard/providers/embedding.segments/!KGRhc2hib2FyZCk/dashboard/providers/embedding.segment.rsc +1 -1
  510. package/app/.next-cli-build/server/app/dashboard/providers/embedding.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  511. package/app/.next-cli-build/server/app/dashboard/providers/embedding.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  512. package/app/.next-cli-build/server/app/dashboard/providers/embedding.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  513. package/app/.next-cli-build/server/app/dashboard/providers/embedding.segments/_full.segment.rsc +7 -7
  514. package/app/.next-cli-build/server/app/dashboard/providers/embedding.segments/_head.segment.rsc +1 -1
  515. package/app/.next-cli-build/server/app/dashboard/providers/embedding.segments/_index.segment.rsc +5 -5
  516. package/app/.next-cli-build/server/app/dashboard/providers/embedding.segments/_tree.segment.rsc +1 -1
  517. package/app/.next-cli-build/server/app/dashboard/providers/image-to-text.html +1 -1
  518. package/app/.next-cli-build/server/app/dashboard/providers/image-to-text.rsc +7 -7
  519. package/app/.next-cli-build/server/app/dashboard/providers/image-to-text.segments/!KGRhc2hib2FyZCk/dashboard/providers/image-to-text/__PAGE__.segment.rsc +2 -2
  520. package/app/.next-cli-build/server/app/dashboard/providers/image-to-text.segments/!KGRhc2hib2FyZCk/dashboard/providers/image-to-text.segment.rsc +1 -1
  521. package/app/.next-cli-build/server/app/dashboard/providers/image-to-text.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  522. package/app/.next-cli-build/server/app/dashboard/providers/image-to-text.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  523. package/app/.next-cli-build/server/app/dashboard/providers/image-to-text.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  524. package/app/.next-cli-build/server/app/dashboard/providers/image-to-text.segments/_full.segment.rsc +7 -7
  525. package/app/.next-cli-build/server/app/dashboard/providers/image-to-text.segments/_head.segment.rsc +1 -1
  526. package/app/.next-cli-build/server/app/dashboard/providers/image-to-text.segments/_index.segment.rsc +5 -5
  527. package/app/.next-cli-build/server/app/dashboard/providers/image-to-text.segments/_tree.segment.rsc +1 -1
  528. package/app/.next-cli-build/server/app/dashboard/providers/image.html +1 -1
  529. package/app/.next-cli-build/server/app/dashboard/providers/image.rsc +7 -7
  530. package/app/.next-cli-build/server/app/dashboard/providers/image.segments/!KGRhc2hib2FyZCk/dashboard/providers/image/__PAGE__.segment.rsc +2 -2
  531. package/app/.next-cli-build/server/app/dashboard/providers/image.segments/!KGRhc2hib2FyZCk/dashboard/providers/image.segment.rsc +1 -1
  532. package/app/.next-cli-build/server/app/dashboard/providers/image.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  533. package/app/.next-cli-build/server/app/dashboard/providers/image.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  534. package/app/.next-cli-build/server/app/dashboard/providers/image.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  535. package/app/.next-cli-build/server/app/dashboard/providers/image.segments/_full.segment.rsc +7 -7
  536. package/app/.next-cli-build/server/app/dashboard/providers/image.segments/_head.segment.rsc +1 -1
  537. package/app/.next-cli-build/server/app/dashboard/providers/image.segments/_index.segment.rsc +5 -5
  538. package/app/.next-cli-build/server/app/dashboard/providers/image.segments/_tree.segment.rsc +1 -1
  539. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  540. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +7 -7
  541. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  542. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  543. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  544. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  545. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  546. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +7 -7
  547. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  548. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +5 -5
  549. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  550. package/app/.next-cli-build/server/app/dashboard/providers/stt.html +1 -1
  551. package/app/.next-cli-build/server/app/dashboard/providers/stt.rsc +7 -7
  552. package/app/.next-cli-build/server/app/dashboard/providers/stt.segments/!KGRhc2hib2FyZCk/dashboard/providers/stt/__PAGE__.segment.rsc +2 -2
  553. package/app/.next-cli-build/server/app/dashboard/providers/stt.segments/!KGRhc2hib2FyZCk/dashboard/providers/stt.segment.rsc +1 -1
  554. package/app/.next-cli-build/server/app/dashboard/providers/stt.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  555. package/app/.next-cli-build/server/app/dashboard/providers/stt.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  556. package/app/.next-cli-build/server/app/dashboard/providers/stt.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  557. package/app/.next-cli-build/server/app/dashboard/providers/stt.segments/_full.segment.rsc +7 -7
  558. package/app/.next-cli-build/server/app/dashboard/providers/stt.segments/_head.segment.rsc +1 -1
  559. package/app/.next-cli-build/server/app/dashboard/providers/stt.segments/_index.segment.rsc +5 -5
  560. package/app/.next-cli-build/server/app/dashboard/providers/stt.segments/_tree.segment.rsc +1 -1
  561. package/app/.next-cli-build/server/app/dashboard/providers/tts.html +1 -1
  562. package/app/.next-cli-build/server/app/dashboard/providers/tts.rsc +7 -7
  563. package/app/.next-cli-build/server/app/dashboard/providers/tts.segments/!KGRhc2hib2FyZCk/dashboard/providers/tts/__PAGE__.segment.rsc +2 -2
  564. package/app/.next-cli-build/server/app/dashboard/providers/tts.segments/!KGRhc2hib2FyZCk/dashboard/providers/tts.segment.rsc +1 -1
  565. package/app/.next-cli-build/server/app/dashboard/providers/tts.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  566. package/app/.next-cli-build/server/app/dashboard/providers/tts.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  567. package/app/.next-cli-build/server/app/dashboard/providers/tts.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  568. package/app/.next-cli-build/server/app/dashboard/providers/tts.segments/_full.segment.rsc +7 -7
  569. package/app/.next-cli-build/server/app/dashboard/providers/tts.segments/_head.segment.rsc +1 -1
  570. package/app/.next-cli-build/server/app/dashboard/providers/tts.segments/_index.segment.rsc +5 -5
  571. package/app/.next-cli-build/server/app/dashboard/providers/tts.segments/_tree.segment.rsc +1 -1
  572. package/app/.next-cli-build/server/app/dashboard/providers/web.html +1 -1
  573. package/app/.next-cli-build/server/app/dashboard/providers/web.rsc +7 -7
  574. package/app/.next-cli-build/server/app/dashboard/providers/web.segments/!KGRhc2hib2FyZCk/dashboard/providers/web/__PAGE__.segment.rsc +2 -2
  575. package/app/.next-cli-build/server/app/dashboard/providers/web.segments/!KGRhc2hib2FyZCk/dashboard/providers/web.segment.rsc +1 -1
  576. package/app/.next-cli-build/server/app/dashboard/providers/web.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  577. package/app/.next-cli-build/server/app/dashboard/providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  578. package/app/.next-cli-build/server/app/dashboard/providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  579. package/app/.next-cli-build/server/app/dashboard/providers/web.segments/_full.segment.rsc +7 -7
  580. package/app/.next-cli-build/server/app/dashboard/providers/web.segments/_head.segment.rsc +1 -1
  581. package/app/.next-cli-build/server/app/dashboard/providers/web.segments/_index.segment.rsc +5 -5
  582. package/app/.next-cli-build/server/app/dashboard/providers/web.segments/_tree.segment.rsc +1 -1
  583. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  584. package/app/.next-cli-build/server/app/dashboard/providers.rsc +7 -7
  585. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  586. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  587. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  588. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  589. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +7 -7
  590. package/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  591. package/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +5 -5
  592. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  593. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  594. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +7 -7
  595. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  596. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  597. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  598. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  599. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +7 -7
  600. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  601. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +5 -5
  602. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  603. package/app/.next-cli-build/server/app/dashboard/quota.html +1 -1
  604. package/app/.next-cli-build/server/app/dashboard/quota.rsc +8 -8
  605. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  606. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  607. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  608. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  609. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +8 -8
  610. package/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  611. package/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +5 -5
  612. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  613. package/app/.next-cli-build/server/app/dashboard/resource-monitor.html +1 -1
  614. package/app/.next-cli-build/server/app/dashboard/resource-monitor.rsc +6 -6
  615. package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/!KGRhc2hib2FyZCk/dashboard/resource-monitor/__PAGE__.segment.rsc +1 -1
  616. package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/!KGRhc2hib2FyZCk/dashboard/resource-monitor.segment.rsc +1 -1
  617. package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  618. package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  619. package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/_full.segment.rsc +6 -6
  620. package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/_head.segment.rsc +1 -1
  621. package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/_index.segment.rsc +5 -5
  622. package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/_tree.segment.rsc +1 -1
  623. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  624. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +6 -6
  625. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  626. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing.segment.rsc +1 -1
  627. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings.segment.rsc +1 -1
  628. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  629. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  630. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +6 -6
  631. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  632. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +5 -5
  633. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  634. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  635. package/app/.next-cli-build/server/app/dashboard/skills.rsc +7 -7
  636. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  637. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  638. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  639. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  640. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +7 -7
  641. package/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  642. package/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +5 -5
  643. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
  644. package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  645. package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +6 -6
  646. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +1 -1
  647. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  648. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  649. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  650. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +6 -6
  651. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  652. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +5 -5
  653. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
  654. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  655. package/app/.next-cli-build/server/app/dashboard/translator.rsc +7 -7
  656. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  657. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  658. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  659. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  660. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +7 -7
  661. package/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  662. package/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +5 -5
  663. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  664. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  665. package/app/.next-cli-build/server/app/dashboard/usage.rsc +7 -7
  666. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  667. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  668. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  669. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  670. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +7 -7
  671. package/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  672. package/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +5 -5
  673. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  674. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  675. package/app/.next-cli-build/server/app/dashboard.rsc +7 -7
  676. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  677. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  678. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  679. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +7 -7
  680. package/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  681. package/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +5 -5
  682. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  683. package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
  684. package/app/.next-cli-build/server/app/index.html +1 -1
  685. package/app/.next-cli-build/server/app/index.rsc +5 -5
  686. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  687. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +5 -5
  688. package/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  689. package/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +5 -5
  690. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  691. package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  692. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  693. package/app/.next-cli-build/server/app/landing.html +1 -1
  694. package/app/.next-cli-build/server/app/landing.rsc +5 -5
  695. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +5 -5
  696. package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  697. package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +5 -5
  698. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  699. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  700. package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  701. package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  702. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  703. package/app/.next-cli-build/server/app/login.html +1 -1
  704. package/app/.next-cli-build/server/app/login.rsc +6 -6
  705. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +6 -6
  706. package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  707. package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +5 -5
  708. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  709. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  710. package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  711. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  712. package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  713. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  714. package/app/.next-cli-build/server/app-paths-manifest.json +19 -19
  715. package/app/.next-cli-build/server/chunks/2428.js +1 -1
  716. package/app/.next-cli-build/server/chunks/3104.js +1 -1
  717. package/app/.next-cli-build/server/chunks/318.js +2 -2
  718. package/app/.next-cli-build/server/chunks/3399.js +1 -1
  719. package/app/.next-cli-build/server/chunks/3738.js +1 -1
  720. package/app/.next-cli-build/server/chunks/395.js +1 -0
  721. package/app/.next-cli-build/server/chunks/402.js +1 -1
  722. package/app/.next-cli-build/server/chunks/4746.js +1 -1
  723. package/app/.next-cli-build/server/chunks/{2041.js → 4939.js} +1 -1
  724. package/app/.next-cli-build/server/chunks/5024.js +1 -1
  725. package/app/.next-cli-build/server/chunks/5210.js +2 -2
  726. package/app/.next-cli-build/server/chunks/541.js +1 -1
  727. package/app/.next-cli-build/server/chunks/6118.js +1 -1
  728. package/app/.next-cli-build/server/chunks/6811.js +1 -1
  729. package/app/.next-cli-build/server/chunks/689.js +1 -1
  730. package/app/.next-cli-build/server/chunks/6992.js +2 -2
  731. package/app/.next-cli-build/server/chunks/834.js +1 -0
  732. package/app/.next-cli-build/server/instrumentation.js +1 -1
  733. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  734. package/app/.next-cli-build/server/middleware.js +1 -1
  735. package/app/.next-cli-build/server/pages/404.html +1 -1
  736. package/app/.next-cli-build/server/pages/500.html +1 -1
  737. package/app/.next-cli-build/static/chunks/2218-110e3334f5c88330.js +1 -0
  738. package/app/.next-cli-build/static/chunks/{5263-827de68ed8132a29.js → 5263-52690aa1a24d31d5.js} +1 -1
  739. package/app/.next-cli-build/static/chunks/{7413-2cc83a72bcf459e1.js → 7413-d40f6736e1d7319d.js} +1 -1
  740. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/api-keys/{page-1bb88dd0ad65807c.js → page-4aada93a94ec82bd.js} +1 -1
  741. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/audit-proxy/{page-30cd3f3e9f363bef.js → page-14a0b5fdee993e34.js} +1 -1
  742. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/basic-chat/{page-70e158890ae4fc83.js → page-c2bb446a6d222c88.js} +1 -1
  743. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/{page-ce7ac6694fbbb678.js → page-4110bf83034e0909.js} +1 -1
  744. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/model-profiles/{page-f521e8417f2e2f31.js → page-bc086583b55ef5f2.js} +1 -1
  745. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/{page-0ecc380c93debdab.js → page-0cac844db4ad9c99.js} +1 -1
  746. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/{page-5ade313a9167c99b.js → page-aaa19d383574b8a9.js} +1 -1
  747. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/console-log/{page-0e22441e0507f163.js → page-51fa9780f88cfd15.js} +1 -1
  748. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/endpoint/{page-11e60a551b0228c1.js → page-143d8991f86918ac.js} +1 -1
  749. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/logs/console/{page-0a6293eb31eab332.js → page-8d39b923cd5d8dfd.js} +1 -1
  750. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/{page-a08c52db4e01d8e3.js → page-9f90e12fa5ca5baf.js} +1 -1
  751. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/{page-e870a4cb95e2a8bc.js → page-b37a236cb3ab960f.js} +1 -1
  752. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/{page-07644039f6bf80ee.js → page-af7a9d2e066296a1.js} +1 -1
  753. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/{providers/web/page-6c63098dc771e280.js → media-providers/web/page-c22a60b871a0390d.js} +1 -1
  754. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/{page-11e60a551b0228c1.js → page-143d8991f86918ac.js} +1 -1
  755. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/personal/{page-9ef9615e95c6d98c.js → page-7e49d60c5ff96cc6.js} +1 -1
  756. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/personalcloudprovider/{layout-478314699bce9b31.js → layout-83f4ca72c4f22484.js} +1 -1
  757. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/personalcloudprovider/{page-9a5af94bcad73254.js → page-2d525b336c1bc605.js} +1 -1
  758. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/personalcloudprovidermonitor/{page-33d2948585dccd8c.js → page-776d405190fe0585.js} +1 -1
  759. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/personalquota/{page-d5a701cfcbeb0aaa.js → page-a67ab9649831fe5a.js} +1 -1
  760. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/page-f48e666036732ab4.js +1 -0
  761. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/{page-3567ff1ce2261dcf.js → page-f1fc95b1ed079f4a.js} +1 -1
  762. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/embedding/[id]/{page-c927b95886c5f0d6.js → page-10b1e26c8e2646dd.js} +1 -1
  763. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/embedding/{page-e870a4cb95e2a8bc.js → page-b37a236cb3ab960f.js} +1 -1
  764. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/image/[id]/{page-c927b95886c5f0d6.js → page-10b1e26c8e2646dd.js} +1 -1
  765. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/image/{page-e870a4cb95e2a8bc.js → page-b37a236cb3ab960f.js} +1 -1
  766. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/image-to-text/[id]/{page-c927b95886c5f0d6.js → page-10b1e26c8e2646dd.js} +1 -1
  767. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/image-to-text/{page-e870a4cb95e2a8bc.js → page-b37a236cb3ab960f.js} +1 -1
  768. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/new/{page-82eca1407d4266c2.js → page-d15119f314c7cc77.js} +1 -1
  769. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/{page-267a7602579ef6f4.js → page-9962982834408a76.js} +1 -1
  770. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/stt/[id]/{page-c927b95886c5f0d6.js → page-10b1e26c8e2646dd.js} +1 -1
  771. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/stt/page-b37a236cb3ab960f.js +1 -0
  772. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/tts/[id]/page-10b1e26c8e2646dd.js +1 -0
  773. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/tts/page-b37a236cb3ab960f.js +1 -0
  774. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/web/[kind]/[id]/{page-7dedb965c7920eb8.js → page-0a39d5e23270296a.js} +1 -1
  775. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/{media-providers/web/page-6c63098dc771e280.js → providers/web/page-c22a60b871a0390d.js} +1 -1
  776. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/proxy-pools/{page-94f864cc2f20b76d.js → page-cec84b31c776f6df.js} +1 -1
  777. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/{page-a8165d10ab8301ef.js → page-a514ee8a88960ba6.js} +1 -1
  778. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/skills/{page-8ff70e1fe63630c5.js → page-87a04c48e7e3b9ed.js} +1 -1
  779. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/translator/{page-78d24f71ba0846fa.js → page-465c5ead9fad38c4.js} +1 -1
  780. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/{page-d08272fd14e6b4af.js → page-9f3e6003c3300b19.js} +1 -1
  781. package/app/.next-cli-build/static/chunks/app/(dashboard)/{layout-8b4790ae13ade152.js → layout-2eeace9c23b4b34b.js} +1 -1
  782. package/app/.next-cli-build/static/chunks/app/{layout-9b0fc956496699bb.js → layout-0d1d11056fa4e4d9.js} +1 -1
  783. package/app/.next-cli-build/static/chunks/app/login/{page-534a498e40d54531.js → page-2cae9c46669e7c3f.js} +1 -1
  784. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-shm +0 -0
  785. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-wal +0 -0
  786. package/app/package.json +1 -1
  787. package/package.json +1 -1
  788. package/app/.next-cli-build/static/chunks/8723-c429b062393b6348.js +0 -1
  789. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/page-57581f6add7284d5.js +0 -1
  790. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/stt/page-e870a4cb95e2a8bc.js +0 -1
  791. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/tts/[id]/page-c927b95886c5f0d6.js +0 -1
  792. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/tts/page-e870a4cb95e2a8bc.js +0 -1
  793. /package/app/.next-cli-build/static/{5AQ_UrmD1tq7tn1M3F6jS → 6zz_5XG4tw87B1tvSLnp8}/_buildManifest.js +0 -0
  794. /package/app/.next-cli-build/static/{5AQ_UrmD1tq7tn1M3F6jS → 6zz_5XG4tw87B1tvSLnp8}/_ssgManifest.js +0 -0
  795. /package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/{upgrade-5.5.19-to-5.5.21-5.5.21-20260918-100009 → upgrade-5.5.26-to-5.5.27-5.5.27-20260923-105231}/data.sqlite +0 -0
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3471],{6191:(e,a,t)=>{"use strict";t.r(a),t.d(a,{default:()=>j});var s=t(95155),r=t(12115),l=t(44656),o=t(35497);let n={enabled:!1,fileLoggingEnabled:!1,type:"mysql",host:"",port:"",database:"",username:"",password:"",ssl:!1,createDatabase:!1,logClientRequest:!0,logSourceRequest:!0,logTargetRequest:!0,logProviderResponse:!1,logErrors:!0,retentionDays:30,payloadRotationEnabled:!1,payloadRetentionDays:60,payloadRotationScheduleTime:"21:00",payloadRotationMaxRuntimeMinutes:60,payloadRotationIntervalHours:24,payloadRotationBatchSize:500,payloadRotationMaxBatches:20,usageEventsRotationEnabled:!1,usageEventsRetentionDays:365,usageEventsRotationScheduleTime:"02:00",usageEventsRotationMaxRuntimeMinutes:60,usageEventsRotationBatchSize:2e3,usageEventsRotationMaxBatches:50},d=[{value:60,label:"1 hour"},{value:120,label:"2 hours"},{value:180,label:"3 hours"},{value:240,label:"4 hours"},{value:360,label:"6 hours"},{value:480,label:"8 hours"},{value:720,label:"12 hours"},{value:0,label:"Until finished"}];function i({label:e,value:a,onChange:t,type:r="text",placeholder:l="",disabled:o=!1,min:n,max:d,step:c}){return(0,s.jsxs)("label",{className:"flex flex-col gap-1 text-xs",children:[(0,s.jsx)("span",{className:"text-text-muted",children:e}),(0,s.jsx)("input",{type:r,value:a||"",placeholder:l,disabled:o,min:n,max:d,step:c,onChange:e=>t(e.target.value),className:"w-full rounded border border-border bg-surface px-2 py-1.5 text-xs text-text-main focus:outline-none focus:ring-1 focus:ring-primary/50 disabled:opacity-50"})]})}function c({label:e,checked:a,onChange:t,disabled:r=!1}){return(0,s.jsxs)("label",{className:"flex items-center gap-2 text-xs text-text-main",children:[(0,s.jsx)("input",{type:"checkbox",checked:!!a,disabled:r,onChange:e=>t(e.target.checked)}),e]})}function p(){let[e,a]=(0,r.useState)(n),[t,l]=(0,r.useState)(!1),[p,u]=(0,r.useState)(null),[m,x]=(0,r.useState)(null),[h,g]=(0,r.useState)(null),[b,y]=(0,r.useState)(null),v=e=>a(a=>({...a,...e})),f=async()=>{l(!0),x(null);try{let e=await fetch("/api/settings/prompt-log-db"),t=await e.json();if(!e.ok)throw Error(t.error||"Failed to load config");a({...n,...t.config||{}})}catch(e){x(e.message||"Failed to load config")}finally{l(!1)}};(0,r.useEffect)(()=>{f()},[]);let j=async()=>{l(!0),x(null),u(null);try{let t=await fetch("/api/settings/prompt-log-db",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({config:e})}),s=await t.json();if(!t.ok)throw Error(s.error||"Failed to save config");a({...n,...s.config||{}}),u("Saved")}catch(e){x(e.message||"Failed to save config")}finally{l(!1)}},w=async(a,t={})=>{if(!t.confirm||window.confirm(t.confirmMessage||"Delete all prompt_logs rows and their payloads older than the retention cutoff? Both the rows in prompt_logs (previews, model/provider/token metadata) and the referenced payloads will be removed. This cannot be undone.")){l(!0),x(null),u(null),a.includes("payload-rotation")&&g(null),a.includes("usage-events-rotation")&&y(null);try{let s=await fetch("/api/settings/prompt-log-db",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:a,config:e,confirm:!0===t.confirm})}),r=await s.text(),l={};try{l=r?JSON.parse(r):{}}catch{let e=r.replace(/<[^>]+>/g," ").replace(/\s+/g," ").trim().slice(0,200),a=504===s.status?"Manual rotation exceeded the request timeout. Use automatic rotation for long-running cleanup.":`HTTP ${s.status}: ${e||s.statusText||"non-JSON response"}`;throw Error(a)}if(!s.ok)throw Error(l.error||`HTTP ${s.status}`);a.includes("payload-rotation")&&g(l),a.includes("usage-events-rotation")&&y(l),u(l.message||l.init?.message||"OK")}catch(e){x(e.message||"Action failed")}finally{l(!1)}}},N="postgres"===e.type||"mysql"===e.type;return(0,s.jsx)(o.Zp,{title:"Request Logging",subtitle:"Choose which request stages are logged, and where the prompt log database lives",icon:"receipt_long",children:(0,s.jsxs)("div",{className:"space-y-4",children:[(0,s.jsx)("div",{className:"flex flex-wrap items-center gap-2",children:(0,s.jsxs)(o.Ex,{variant:e.enabled?"success":"default",children:["Prompt logging: ",e.enabled?"Enabled":"Disabled"]})}),(0,s.jsx)("div",{className:"rounded-lg border border-yellow-500/30 bg-yellow-500/10 p-3 text-xs text-yellow-700 dark:text-yellow-300",children:'Prompt logs may contain source code, selected code, internal URLs, user prompts, and provider responses. Checked stages store the full raw request/response body; prompt/response text columns keep only short previews. Per-combo "hide content" still redacts the body.'}),(0,s.jsx)("div",{className:"grid gap-3 md:grid-cols-2",children:(0,s.jsxs)("label",{className:"flex flex-col gap-1 text-xs",children:[(0,s.jsx)("span",{className:"text-text-muted",children:"Database type"}),(0,s.jsxs)("select",{value:e.type,disabled:t,onChange:a=>{let t=a.target.value;v({type:t,port:"postgres"===t?e.port||"5432":"mysql"===t?e.port||"3306":e.port})},className:"w-full rounded border border-border bg-surface px-2 py-1.5 text-xs text-text-main focus:outline-none focus:ring-1 focus:ring-primary/50",children:[(0,s.jsx)("option",{value:"mysql",children:"MySQL / MariaDB"}),(0,s.jsx)("option",{value:"postgres",children:"PostgreSQL"})]})]})}),N&&(0,s.jsxs)("div",{className:"grid gap-3 md:grid-cols-2",children:[(0,s.jsx)(i,{label:"Host",value:e.host,placeholder:"127.0.0.1",onChange:e=>v({host:e}),disabled:t}),(0,s.jsx)(i,{label:"Port",value:e.port,placeholder:"postgres"===e.type?"5432":"3306",onChange:e=>v({port:e}),disabled:t}),(0,s.jsx)(i,{label:"Database",value:e.database,placeholder:"bluerouter_logs",onChange:e=>v({database:e}),disabled:t}),(0,s.jsx)(i,{label:"Username",value:e.username,placeholder:"bluerouter",onChange:e=>v({username:e}),disabled:t}),(0,s.jsx)(i,{label:"Password",type:"password",value:e.password,placeholder:"Leave as ******** to keep existing password",onChange:e=>v({password:e}),disabled:t}),(0,s.jsxs)("div",{className:"flex flex-col justify-end gap-2",children:[(0,s.jsx)(c,{label:"Use SSL",checked:e.ssl,onChange:e=>v({ssl:e}),disabled:t}),(0,s.jsx)(c,{label:"Create database if missing",checked:e.createDatabase,onChange:e=>v({createDatabase:e}),disabled:t})]})]}),(0,s.jsxs)("div",{className:"grid gap-2 rounded-lg border border-border bg-surface/40 p-3 md:grid-cols-2",children:[(0,s.jsx)(c,{label:"Enable prompt logging",checked:e.enabled,onChange:e=>v({enabled:e}),disabled:t}),(0,s.jsx)(c,{label:"Log client request",checked:e.logClientRequest,onChange:e=>v({logClientRequest:e}),disabled:t}),(0,s.jsx)(c,{label:"Log normalized/source request",checked:e.logSourceRequest,onChange:e=>v({logSourceRequest:e}),disabled:t}),(0,s.jsx)(c,{label:"Log target/provider request",checked:e.logTargetRequest,onChange:e=>v({logTargetRequest:e}),disabled:t}),(0,s.jsx)(c,{label:"Log provider response",checked:e.logProviderResponse,onChange:e=>v({logProviderResponse:e}),disabled:t}),(0,s.jsx)(c,{label:"Log errors",checked:e.logErrors,onChange:e=>v({logErrors:e}),disabled:t})]}),(0,s.jsxs)("div",{className:"rounded-lg border border-border bg-background p-3 text-xs text-text-muted",children:["Full request/response bodies are stored as gzip files under ",(0,s.jsx)("code",{children:"DATA_DIR/prompt-log-payloads/"}),", addressed by content hash; the database keeps only that hash, the size and the short previews. The client, source and target stages of one call share a single file, so enabling more stages costs little extra disk."]}),(0,s.jsxs)("div",{className:"space-y-3 rounded-xl border border-border bg-surface/40 p-4",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-sm font-semibold text-text-main",children:"Prompt log rotation"}),(0,s.jsxs)("div",{className:"mt-1 text-xs text-text-muted",children:["Deletes ",(0,s.jsx)("code",{children:"prompt_logs"})," rows AND their referenced payloads older than the retention cutoff. After a full run, only logs from the last N days remain — analytics/metadata for older rows are removed as well."]})]}),(0,s.jsx)(c,{label:"Enable automatic rotation",checked:e.payloadRotationEnabled,onChange:e=>v({payloadRotationEnabled:e}),disabled:t}),(0,s.jsxs)("div",{className:"grid gap-3 md:grid-cols-2 lg:grid-cols-4",children:[(0,s.jsx)(i,{label:"Keep logs for (days)",type:"number",min:1,max:3650,step:1,value:String(e.payloadRetentionDays||60),onChange:e=>v({payloadRetentionDays:Number(e)||60}),disabled:t}),(0,s.jsx)(i,{label:"Daily start time (Vietnam, UTC+7)",type:"time",step:60,value:String(e.payloadRotationScheduleTime||"21:00"),onChange:e=>v({payloadRotationScheduleTime:e||"21:00"}),disabled:t}),(0,s.jsxs)("label",{className:"flex flex-col gap-1 text-xs",children:[(0,s.jsx)("span",{className:"text-text-muted",children:"Maximum automatic run time"}),(0,s.jsx)("select",{value:String(Number(e.payloadRotationMaxRuntimeMinutes??60)),disabled:t,onChange:e=>v({payloadRotationMaxRuntimeMinutes:Number(e.target.value)}),className:"w-full rounded border border-border bg-surface px-2 py-1.5 text-xs text-text-main focus:outline-none focus:ring-1 focus:ring-primary/50 disabled:opacity-50",children:d.map(e=>(0,s.jsx)("option",{value:String(e.value),children:e.label},e.value))})]}),(0,s.jsx)(i,{label:"Prompt-log rows per transaction",type:"number",min:50,max:5e3,step:50,value:String(e.payloadRotationBatchSize||500),onChange:e=>v({payloadRotationBatchSize:Number(e)||500}),disabled:t})]}),(0,s.jsxs)("div",{className:"rounded-lg border border-blue-500/30 bg-blue-500/10 p-3 text-xs text-blue-700 dark:text-blue-300",children:["Automatic rotation runs once per day at the selected Vietnam time. It deletes expired ",(0,s.jsx)("code",{children:"prompt_logs"})," in small transactions and checks the run-time budget between cleanup passes. If the budget is reached, remaining rows continue at the next daily run. Choose ",(0,s.jsx)("strong",{children:"Until finished"})," to keep running until no expired rows remain. On MySQL, orphan ",(0,s.jsx)("code",{children:"prompt_log_payloads"})," rows (and their payload files on disk) are reaped as part of the cleanup."]}),(0,s.jsxs)("div",{className:"rounded-lg border border-amber-500/30 bg-amber-500/10 p-3 text-xs text-amber-700 dark:text-amber-300",children:["Deletion is permanent: previews, model/provider/token metadata, and analytics for older rows go away too. The full request/response bodies live as gzip files on disk (not in ",(0,s.jsx)("code",{children:"payload_json"}),"), so reaping them frees disk space immediately. The ",(0,s.jsx)("code",{children:"prompt_logs"}),"/",(0,s.jsx)("code",{children:"prompt_log_payloads"})," tables themselves still keep their allocated space inside InnoDB — ",(0,s.jsx)("code",{children:"OPTIMIZE TABLE"})," is needed to shrink the .ibd files (only during a maintenance window, with enough free disk)."]}),(0,s.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,s.jsx)(o.$n,{size:"sm",variant:"secondary",onClick:()=>w("preview-payload-rotation"),loading:t,children:"Preview expired logs"}),(0,s.jsx)(o.$n,{size:"sm",variant:"danger",onClick:()=>w("run-payload-rotation",{confirm:!0}),loading:t,children:"Delete expired logs now"})]}),h&&(0,s.jsxs)("div",{className:"grid gap-2 rounded-lg border border-border bg-background p-3 text-xs md:grid-cols-2 lg:grid-cols-4",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("span",{className:"text-text-muted",children:"Cutoff:"})," ",(0,s.jsx)("span",{className:"text-text-main",children:h.cutoff?new Date(h.cutoff).toLocaleString():"-"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("span",{className:"text-text-muted",children:void 0===h.promptLogRowsUpdated?"Prompt-log rows past retention:":"Prompt-log rows deleted:"})," ",(0,s.jsx)("span",{className:"text-text-main",children:Number(h.promptLogRowsUpdated??h.promptLogRows??0).toLocaleString()})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("span",{className:"text-text-muted",children:void 0===h.payloadRowsDeleted?"Payload rows to delete:":"Payload rows deleted:"})," ",(0,s.jsx)("span",{className:"text-text-main",children:Number(h.payloadRowsDeleted??h.payloadRowsPastRetention??0).toLocaleString()})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("span",{className:"text-text-muted",children:void 0===h.payloadBytesDeleted?"Estimated payload size:":"Payload size deleted:"})," ",(0,s.jsx)("span",{className:"text-text-main",children:function(e){let a=Number(e||0);if(!Number.isFinite(a)||a<=0)return"0 B";let t=["B","KB","MB","GB","TB"],s=Math.min(t.length-1,Math.floor(Math.log(a)/Math.log(1024))),r=a/1024**s;return`${r.toFixed(r>=10||0===s?1:2)} ${t[s]}`}(h.payloadBytesDeleted??h.payloadBytesPastRetention??h.referencedPayloadBytes)})]}),h.hasMore?(0,s.jsx)("div",{className:"md:col-span-2 lg:col-span-4 text-amber-600",children:"More expired rows remain. Automatic rotation will continue them at the next scheduled run."}):null]}),(0,s.jsx)("div",{className:"text-[11px] text-text-muted",children:"Save to apply the automatic schedule immediately. Preview uses the values currently shown. Manual deletion is a bounded maintenance pass; use automatic rotation for multi-hour cleanup."})]}),(0,s.jsxs)("div",{className:"space-y-3 rounded-xl border border-border bg-surface/40 p-4",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-sm font-semibold text-text-main",children:"Usage events rotation"}),(0,s.jsxs)("div",{className:"mt-1 text-xs text-text-muted",children:["Deletes ",(0,s.jsx)("code",{children:"usage_events"})," rows older than the retention cutoff. This is the only store behind ",(0,s.jsx)("code",{children:"/dashboard/usage"}),' (charts, request log, Details tab) and the Token Saver analytics — nothing is aggregated elsewhere, so deleted rows disappear from those pages too, and "all-time" totals shrink to match what remains.']})]}),(0,s.jsx)(c,{label:"Enable automatic rotation",checked:e.usageEventsRotationEnabled,onChange:e=>v({usageEventsRotationEnabled:e}),disabled:t}),(0,s.jsxs)("div",{className:"grid gap-3 md:grid-cols-2 lg:grid-cols-4",children:[(0,s.jsx)(i,{label:"Keep usage events for (days)",type:"number",min:1,max:3650,step:1,value:String(e.usageEventsRetentionDays||365),onChange:e=>v({usageEventsRetentionDays:Number(e)||365}),disabled:t}),(0,s.jsx)(i,{label:"Daily start time (Vietnam, UTC+7)",type:"time",step:60,value:String(e.usageEventsRotationScheduleTime||"02:00"),onChange:e=>v({usageEventsRotationScheduleTime:e||"02:00"}),disabled:t}),(0,s.jsxs)("label",{className:"flex flex-col gap-1 text-xs",children:[(0,s.jsx)("span",{className:"text-text-muted",children:"Maximum automatic run time"}),(0,s.jsx)("select",{value:String(Number(e.usageEventsRotationMaxRuntimeMinutes??60)),disabled:t,onChange:e=>v({usageEventsRotationMaxRuntimeMinutes:Number(e.target.value)}),className:"w-full rounded border border-border bg-surface px-2 py-1.5 text-xs text-text-main focus:outline-none focus:ring-1 focus:ring-primary/50 disabled:opacity-50",children:d.map(e=>(0,s.jsx)("option",{value:String(e.value),children:e.label},e.value))})]}),(0,s.jsx)(i,{label:"Usage-event rows per batch",type:"number",min:100,max:2e4,step:100,value:String(e.usageEventsRotationBatchSize||2e3),onChange:e=>v({usageEventsRotationBatchSize:Number(e)||2e3}),disabled:t})]}),(0,s.jsxs)("div",{className:"rounded-lg border border-blue-500/30 bg-blue-500/10 p-3 text-xs text-blue-700 dark:text-blue-300",children:["Automatic rotation runs once per day at the selected Vietnam time, deleting expired ",(0,s.jsx)("code",{children:"usage_events"})," in batches and checking the run-time budget between passes. Choose ",(0,s.jsx)("strong",{children:"Until finished"})," to keep running until no expired rows remain."]}),(0,s.jsxs)("div",{className:"rounded-lg border border-amber-500/30 bg-amber-500/10 p-3 text-xs text-amber-700 dark:text-amber-300",children:["Deletion is permanent and disabled by default. Unlike prompt-log payloads, ",(0,s.jsx)("code",{children:"usage_events"})," rows are not mirrored to disk anywhere — deleting them is the only way this data existed, so ",(0,s.jsx)("code",{children:"/dashboard/usage"})," and Token Saver analytics for those dates go away for good."]}),(0,s.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,s.jsx)(o.$n,{size:"sm",variant:"secondary",onClick:()=>w("preview-usage-events-rotation"),loading:t,children:"Preview expired usage events"}),(0,s.jsx)(o.$n,{size:"sm",variant:"danger",onClick:()=>w("run-usage-events-rotation",{confirm:!0,confirmMessage:"Delete all usage_events rows older than the retention cutoff? This removes their history from /dashboard/usage and Token Saver analytics permanently, with no copy kept anywhere. This cannot be undone."}),loading:t,children:"Delete expired usage events now"})]}),b&&(0,s.jsxs)("div",{className:"grid gap-2 rounded-lg border border-border bg-background p-3 text-xs md:grid-cols-2 lg:grid-cols-4",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("span",{className:"text-text-muted",children:"Cutoff:"})," ",(0,s.jsx)("span",{className:"text-text-main",children:b.cutoff?new Date(b.cutoff).toLocaleString():"-"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("span",{className:"text-text-muted",children:void 0===b.usageEventRowsDeleted?"Usage-event rows past retention:":"Usage-event rows deleted:"})," ",(0,s.jsx)("span",{className:"text-text-main",children:Number(b.usageEventRowsDeleted??b.usageEventRowsPastRetention??0).toLocaleString()})]}),b.hasMore?(0,s.jsx)("div",{className:"md:col-span-2 lg:col-span-4 text-amber-600",children:"More expired rows remain. Automatic rotation will continue them at the next scheduled run."}):null]}),(0,s.jsx)("div",{className:"text-[11px] text-text-muted",children:"Save to apply the automatic schedule immediately. Preview uses the values currently shown."})]}),N&&(0,s.jsxs)("div",{className:"rounded-lg border border-blue-500/30 bg-blue-500/10 p-3 text-xs text-blue-700 dark:text-blue-300",children:["Prompt logs now support MySQL/MariaDB and PostgreSQL only. MySQL/MariaDB requires ",(0,s.jsx)("code",{children:"mysql2"}),"; PostgreSQL requires ",(0,s.jsx)("code",{children:"pg"}),"."]}),p&&(0,s.jsx)("div",{className:"rounded-lg border border-green-500/30 bg-green-500/10 p-2 text-xs text-green-600",children:p}),m&&(0,s.jsx)("div",{className:"rounded-lg border border-red-500/30 bg-red-500/10 p-2 text-xs text-red-500",children:m}),(0,s.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,s.jsx)(o.$n,{size:"sm",variant:"secondary",onClick:f,loading:t,children:"Reload"}),(0,s.jsx)(o.$n,{size:"sm",variant:"secondary",onClick:()=>w("test"),loading:t,children:"Test connection"}),(0,s.jsx)(o.$n,{size:"sm",variant:"secondary",onClick:()=>w("init"),loading:t,children:"Initialize schema"}),(0,s.jsx)(o.$n,{size:"sm",onClick:j,loading:t,children:"Save"}),(0,s.jsx)(o.$n,{size:"sm",variant:"success",onClick:()=>w("save-and-init"),loading:t,children:"Save & initialize"})]})]})})}let u="(|(sAMAccountName={{username}})(userPrincipalName={{username}})(mail={{username}}))",m="image/svg+xml,image/png,image/webp,image/jpeg,image/gif",x=`${m},image/x-icon,image/vnd.microsoft.icon,.ico`;function h({status:e}){if(!e?.message)return null;let a="error"===e.type?"text-red-600 bg-red-50 border-red-200":"text-green-700 bg-green-50 border-green-200";return(0,s.jsx)("div",{className:`mt-3 rounded-xl border px-4 py-3 text-sm ${a}`,children:e.message})}function g({icon:e,title:a,desc:t,children:r}){return(0,s.jsxs)("section",{className:"rounded-2xl border border-border bg-surface p-6 shadow-sm",children:[(0,s.jsxs)("div",{className:"mb-5 flex items-start gap-3",children:[e&&(0,s.jsx)("span",{className:"material-symbols-outlined text-primary",children:e}),(0,s.jsxs)("div",{children:[(0,s.jsx)("h2",{className:"text-xl font-bold text-text-main",children:a}),t&&(0,s.jsx)("p",{className:"mt-1 text-sm text-text-muted",children:t})]})]}),r]})}function b({label:e,hint:a,children:t}){return(0,s.jsxs)("label",{className:"block",children:[(0,s.jsx)("span",{className:"mb-1 block text-sm font-semibold text-text-main",children:e}),t,a&&(0,s.jsx)("span",{className:"mt-1 block text-xs text-text-muted",children:a})]})}function y(e){return(0,s.jsx)("input",{...e,className:`w-full rounded-xl border border-border bg-background px-3 py-2 text-sm outline-none focus:border-primary ${e.className||""}`})}function v(e){return(0,s.jsx)("textarea",{...e,className:`w-full rounded-xl border border-border bg-background px-3 py-2 text-sm outline-none focus:border-primary ${e.className||""}`})}function f({title:e,desc:a,checked:t,onChange:r,disabled:l}){return(0,s.jsxs)("div",{className:"flex items-start justify-between gap-4 rounded-xl border border-border bg-background px-4 py-3",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-sm font-semibold text-text-main",children:e}),a&&(0,s.jsx)("div",{className:"mt-1 text-xs text-text-muted",children:a})]}),(0,s.jsx)("button",{type:"button",disabled:l,onClick:()=>r(!t),className:`relative mt-0.5 h-6 w-11 rounded-full transition disabled:opacity-50 ${t?"bg-primary":"bg-border"}`,children:(0,s.jsx)("span",{className:`absolute top-0.5 h-5 w-5 rounded-full bg-white transition ${t?"left-5":"left-0.5"}`})})]})}function j(){let[e,a]=(0,r.useState)({}),[t,o]=(0,r.useState)(!0),[n,d]=(0,r.useState)({current:"",new:"",confirm:""}),[i,c]=(0,r.useState)({type:"",message:""}),[j,w]=(0,r.useState)(!1),[N,C]=(0,r.useState)(!1),[D,S]=(0,r.useState)({type:"",message:""}),[k,A]=(0,r.useState)(""),[U,L]=(0,r.useState)(""),R=(0,r.useRef)(null),[P,M]=(0,r.useState)("admin"),[E,B]=(0,r.useState)({type:"",message:""}),[T,G]=(0,r.useState)({ldapEnabled:!1,ldapUrl:"",ldapBindDn:"",ldapBindPassword:"",ldapUserBaseDn:"",ldapUserSearchFilter:u,ldapUserNameAttribute:"sAMAccountName",ldapUserDisplayAttribute:"displayName",ldapUserEmailAttribute:"mail",ldapLoginAllowedGroupDn:"",ldapAdminGroupDn:"",ldapMonitorAdminGroupDn:"",ldapAiGatewaysMonitorsGroupDn:"",ldapNestedGroups:!0,ldapAllowedUsers:[],ldapTlsRejectUnauthorized:!0,ldapConnectTimeoutMs:8e3}),[I,O]=(0,r.useState)({type:"",message:""}),[F,$]=(0,r.useState)(!1),[_,q]=(0,r.useState)(!1),[z,V]=(0,r.useState)(""),[J,K]=(0,r.useState)([]),[H,Q]=(0,r.useState)(!1),[W,Z]=(0,r.useState)({authMode:"password",oidcIssuerUrl:"",oidcClientId:"",oidcScopes:"openid profile email",oidcLoginLabel:"Sign in with OIDC"}),[X,Y]=(0,r.useState)(""),[ee,ea]=(0,r.useState)({type:"",message:""}),[et,es]=(0,r.useState)(!1),[er,el]=(0,r.useState)(!1),[eo,en]=(0,r.useState)({type:"",message:""}),ed=(0,l.useBranding)(),[ei,ec]=(0,r.useState)(""),[ep,eu]=(0,r.useState)(""),[em,ex]=(0,r.useState)(""),[eh,eg]=(0,r.useState)({type:"",message:""}),[eb,ey]=(0,r.useState)(!1),[ev,ef]=(0,r.useState)(!1),[ej,ew]=(0,r.useState)(!1),[eN,eC]=(0,r.useState)(!1),eD=(0,r.useRef)(null),eS=(0,r.useRef)(null),ek=async()=>{o(!0);try{let e=await fetch("/api/settings",{cache:"no-store"}),t=await e.json();a(t),M(t.localLoginUsername||"admin"),G({ldapEnabled:!0===t.ldapEnabled,ldapUrl:t.ldapUrl||"",ldapBindDn:t.ldapBindDn||"",ldapBindPassword:"",ldapUserBaseDn:t.ldapUserBaseDn||t.ldapBaseDn||"",ldapUserSearchFilter:t.ldapUserSearchFilter||u,ldapUserNameAttribute:t.ldapUserNameAttribute||"sAMAccountName",ldapUserDisplayAttribute:t.ldapUserDisplayAttribute||"displayName",ldapUserEmailAttribute:t.ldapUserEmailAttribute||"mail",ldapLoginAllowedGroupDn:t.ldapLoginAllowedGroupDn||"",ldapAdminGroupDn:t.ldapAdminGroupDn||"",ldapMonitorAdminGroupDn:t.ldapMonitorAdminGroupDn||"",ldapAiGatewaysMonitorsGroupDn:t.ldapAiGatewaysMonitorsGroupDn||"",ldapNestedGroups:!1!==t.ldapNestedGroups,ldapAllowedUsers:Array.isArray(t.ldapAllowedUsers)?t.ldapAllowedUsers:[],ldapTlsRejectUnauthorized:!1!==t.ldapTlsRejectUnauthorized,ldapConnectTimeoutMs:t.ldapConnectTimeoutMs||8e3}),Z({authMode:t.authMode||"password",oidcIssuerUrl:t.oidcIssuerUrl||"",oidcClientId:t.oidcClientId||"",oidcScopes:t.oidcScopes||"openid profile email",oidcLoginLabel:t.oidcLoginLabel||"Sign in with OIDC"}),ec(t.siteTitle||""),eu(t.siteShortName||""),ex(t.siteDescription||""),("oidc"===t.authMode||"both"===t.authMode)&&el(!0)}catch(e){console.log("Failed to fetch settings:",e)}finally{o(!1)}};(0,r.useEffect)(()=>{ek()},[]);let eA=async e=>{let t=await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),s=await t.json().catch(()=>({}));if(!t.ok)throw Error(s.error||"Failed to save settings");return a(e=>({...e,...s})),s},eU=async t=>{en({type:"",message:""});let s=!1!==e.sidebarAdvancedToolsVisible;a(e=>({...e,sidebarAdvancedToolsVisible:t}));try{let e=await eA({sidebarAdvancedToolsVisible:t}),s=!1!==e.sidebarAdvancedToolsVisible;a(e=>({...e,sidebarAdvancedToolsVisible:s})),window.dispatchEvent(new CustomEvent("bluerouter:sidebar-advanced-tools",{detail:{visible:s}})),en({type:"success",message:s?"Advanced tools are visible in the sidebar.":"Advanced tools are hidden from the sidebar."})}catch(e){a(e=>({...e,sidebarAdvancedToolsVisible:s})),window.dispatchEvent(new CustomEvent("bluerouter:sidebar-advanced-tools",{detail:{visible:s}})),en({type:"error",message:e.message||"Failed to save sidebar setting."})}},eL=async e=>{e.preventDefault(),B({type:"",message:""});try{let e=await eA({localLoginUsername:P});M(e.localLoginUsername||P||"admin"),B({type:"success",message:"Local account name saved."})}catch(e){B({type:"error",message:e.message})}},eR=async e=>{if(e.preventDefault(),n.new!==n.confirm)return void c({type:"error",message:"Passwords do not match"});w(!0),c({type:"",message:""});try{await eA({currentPassword:n.current,newPassword:n.new}),c({type:"success",message:"Password updated successfully"}),d({current:"",new:"",confirm:""})}catch(e){c({type:"error",message:e.message||"Failed to update password"})}finally{w(!1)}},eP=async()=>{C(!0),S({type:"",message:""});try{if(k&&k!==U)throw Error("Backup password confirmation does not match.");if(k&&new TextEncoder().encode(k).length<8)throw Error("Backup password must be at least 8 characters.");let e=await fetch("/api/settings/database/export",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({password:k})});if(!e.ok){let a=await e.json().catch(()=>({}));throw Error(a.error||"Failed to export full-node backup")}let a=await e.json(),t=a?.backup?.encrypted===!0,s=JSON.stringify(a,null,2*!t),r=new Blob([s],{type:"application/json"}),l=URL.createObjectURL(r),o=document.createElement("a"),n=new Date().toISOString().replace(/[.:]/g,"-");o.href=l,o.download=t?`bluerouter-full-backup-${n}.brbackup.json`:`bluerouter-full-backup-${n}.json`,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(l),S({type:"success",message:t?"Encrypted full-node backup downloaded.":"Plaintext full-node backup downloaded."})}catch(e){S({type:"error",message:e.message||"Failed to export full-node backup."})}finally{C(!1)}},eM=async e=>{let a=e.target.files?.[0];if(a){C(!0),S({type:"",message:""});try{let e=await a.text(),t=JSON.parse(e),s=t?.backup?.encrypted===!0;if(s&&!k)throw Error("Enter the backup password before importing this encrypted backup.");let r=await fetch("/api/settings/database",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({payload:t,password:s?k:""})}),l=await r.json().catch(()=>({}));if(!r.ok)throw Error(l.error||"Failed to import backup");await ek();let o=l.resourceMonitorImported?`Restored ${l.resourceMonitorServerCount||0} Resource Monitor server(s) and ${l.resourceMonitorHistoryCount||0} history sample(s).`:"Legacy backup: current Resource Monitor data was kept.",n=l.brandingImported?`Restored ${l.brandingAssetCount||0} branding asset(s).`:"Current logo and favicon were kept.",d=l.auditProxyImported?`Audit Proxy restored; listener is ${l.listenerRunning?"running":"stopped"}.`:"legacy-database"===l.backupKind?`Legacy Audit Proxy policy: ${l.auditProxyReason||"not present"}.`:"Audit Proxy data was not restored.",i=l.rootCAImported?"Root CA certificate/private key restored.":l.rootCAPreserved?"Current Root CA was preserved.":"";S({type:"success",message:`Backup imported successfully. ${o} ${n} ${d} ${i}`})}catch(e){S({type:"error",message:e.message||"Invalid backup file."})}finally{R.current&&(R.current.value=""),C(!1)}}},eE=(e,a)=>G(t=>({...t,[e]:a})),eB=async e=>{e?.preventDefault?.(),$(!0),O({type:"",message:""});try{let e={...T,ldapBaseDn:T.ldapUserBaseDn,ldapAllowedUsers:T.ldapAllowedUsers};e.ldapBindPassword||delete e.ldapBindPassword;let a=await eA(e);G(e=>({...e,ldapBindPassword:"",ldapEnabled:!0===a.ldapEnabled,ldapUserBaseDn:a.ldapUserBaseDn||a.ldapBaseDn||e.ldapUserBaseDn,ldapLoginAllowedGroupDn:a.ldapLoginAllowedGroupDn||"",ldapAdminGroupDn:a.ldapAdminGroupDn||"",ldapMonitorAdminGroupDn:a.ldapMonitorAdminGroupDn||"",ldapAiGatewaysMonitorsGroupDn:a.ldapAiGatewaysMonitorsGroupDn||"",ldapNestedGroups:!1!==a.ldapNestedGroups,ldapAllowedUsers:Array.isArray(a.ldapAllowedUsers)?a.ldapAllowedUsers:e.ldapAllowedUsers})),O({type:"success",message:"LDAP settings saved."})}catch(e){O({type:"error",message:e.message||"Failed to save LDAP settings"})}finally{$(!1)}},eT=async()=>{q(!0),O({type:"",message:""});try{await eB();let e=await fetch("/api/auth/ldap/test",{method:"POST"}),a=await e.json().catch(()=>({}));e.ok&&a.ok?O({type:"success",message:a.message||"LDAP connection OK."}):O({type:"error",message:a.error||"LDAP test failed."})}catch(e){O({type:"error",message:e.message||"LDAP test failed."})}finally{q(!1)}},eG=async()=>{Q(!0),O({type:"",message:""});try{await eB();let e=await fetch(`/api/auth/ldap/users?q=${encodeURIComponent(z)}`,{cache:"no-store"}),a=await e.json().catch(()=>({}));e.ok?(K(a.users||[]),O({type:"success",message:`Loaded ${(a.users||[]).length} LDAP user(s).`})):O({type:"error",message:a.error||"Failed to load LDAP users."})}catch(e){O({type:"error",message:e.message||"Failed to load LDAP users."})}finally{Q(!1)}},eI=e=>{let a=String(e||"").trim();a&&G(e=>{let t=new Set(e.ldapAllowedUsers||[]);return t.has(a)?t.delete(a):t.add(a),{...e,ldapAllowedUsers:[...t]}})},eO=async(a=W.authMode||"password")=>{let t=W.oidcIssuerUrl.trim(),s=W.oidcClientId.trim(),r=W.oidcScopes.trim(),l=W.oidcLoginLabel.trim(),o=X.trim();if("password"!==a&&(!t||!s||!o)&&!e.oidcConfigured)return void ea({type:"error",message:"Issuer URL, client ID, and client secret are required to enable OIDC."});es(!0),ea({type:"",message:""});try{let e={authMode:a,oidcIssuerUrl:t,oidcClientId:s,oidcScopes:r||"openid profile email",oidcLoginLabel:l||"Sign in with OIDC"};o&&(e.oidcClientSecret=o);let n=await eA(e);Z({authMode:n.authMode||a,oidcIssuerUrl:n.oidcIssuerUrl||t,oidcClientId:n.oidcClientId||s,oidcScopes:n.oidcScopes||r||"openid profile email",oidcLoginLabel:n.oidcLoginLabel||l||"Sign in with OIDC"}),Y(""),ea({type:"success",message:"OIDC settings saved."})}catch(e){ea({type:"error",message:e.message||"Failed to save OIDC settings"})}finally{es(!1)}},eF=async(e,a)=>{if(!a)return;if(a.size>1048576)return void eg({type:"error",message:"File exceeds 1 MB limit."});let t="logo"===e?ef:ew;t(!0),eg({type:"",message:""});try{let t=new FormData;t.append("asset",e),t.append("file",a);let s=await fetch("/api/branding/upload",{method:"POST",body:t}),r=await s.json().catch(()=>({}));if(!s.ok)throw Error(r.error||"Upload failed");(0,l.notifyBrandingChanged)(),eg({type:"success",message:`${"logo"===e?"Logo":"Favicon"} uploaded.`})}catch(e){eg({type:"error",message:e.message||"Upload failed."})}finally{t(!1)}},e$=async e=>{let a=e.target.files?.[0];await eF("logo",a),eD.current&&(eD.current.value="")},e_=async e=>{let a=e.target.files?.[0];await eF("favicon",a),eS.current&&(eS.current.value="")},eq=async e=>{e.preventDefault(),ey(!0),eg({type:"",message:""});try{await eA({siteTitle:ei.trim(),siteShortName:ep.trim(),siteDescription:em.trim()}),(0,l.notifyBrandingChanged)(),eg({type:"success",message:"Branding text saved."})}catch(e){eg({type:"error",message:e.message||"Failed to save branding."})}finally{ey(!1)}},ez=async e=>{eg({type:"",message:""});try{let a=await fetch(`/api/branding?asset=${e}`,{method:"DELETE"}),t=await a.json().catch(()=>({}));if(!a.ok)throw Error(t.error||"Failed to remove asset");(0,l.notifyBrandingChanged)(),eg({type:"success",message:`${"logo"===e?"Logo":"Favicon"} removed.`})}catch(e){eg({type:"error",message:e.message||"Failed to remove asset."})}},eV=async()=>{eC(!0),eg({type:"",message:""});try{let e=await fetch("/api/branding",{method:"DELETE"});if(!e.ok){let a=await e.json().catch(()=>({}));throw Error(a.error||"Failed to reset branding")}await eA({siteTitle:"",siteShortName:"",siteDescription:""}),ec(""),eu(""),ex(""),(0,l.notifyBrandingChanged)(),eg({type:"success",message:"Branding reset to defaults."})}catch(e){eg({type:"error",message:e.message||"Failed to reset branding."})}finally{eC(!1)}};return t?(0,s.jsx)("div",{className:"p-8 text-text-muted",children:"Loading settings..."}):(0,s.jsxs)("div",{className:"mx-auto max-w-6xl space-y-6 p-6",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{className:"text-3xl font-bold text-text-main",children:"Settings"}),(0,s.jsx)("p",{className:"mt-1 text-text-muted",children:"Configure dashboard preferences, request logging, database backup, and authentication."})]}),(0,s.jsxs)(g,{icon:"view_sidebar",title:"Sidebar tools",desc:"Show or hide advanced dashboard tools to keep the sidebar clean.",children:[(0,s.jsx)(f,{title:"Show Advanced tools",desc:"When disabled, Media / Web, AI Traffic Gateway, CLI Tools, Proxy Pools, Skills, Console Log and Translator are hidden from the sidebar. Core admin pages remain visible.",checked:!1!==e.sidebarAdvancedToolsVisible,onChange:eU}),(0,s.jsx)(h,{status:eo})]}),(0,s.jsxs)(g,{icon:"palette",title:"Branding",desc:"Customize site title, logo and favicon shown in the dashboard, browser tab and login page. Max 1 MB per file.",children:[(0,s.jsxs)("div",{className:"grid gap-6 lg:grid-cols-2",children:[(0,s.jsxs)("div",{className:"space-y-4",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"mb-2 text-sm font-semibold text-text-main",children:"Logo"}),(0,s.jsxs)("div",{className:"flex items-center gap-4 rounded-xl border border-border bg-background p-4",children:[(0,s.jsx)("div",{className:"flex h-16 w-16 shrink-0 items-center justify-center overflow-hidden rounded-lg border border-border bg-surface",children:ed?.logoUrl?(0,s.jsx)("img",{src:ed.logoUrl,alt:"Current logo",className:"max-h-full max-w-full object-contain"}):(0,s.jsx)("span",{className:"material-symbols-outlined text-text-muted",children:"hub"})}),(0,s.jsxs)("div",{className:"flex-1 space-y-2",children:[(0,s.jsx)("div",{className:"text-xs text-text-muted",children:"Shown in the dashboard sidebar and login page. SVG, PNG, WebP, JPEG, GIF."}),(0,s.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,s.jsx)("button",{type:"button",disabled:ev,onClick:()=>eD.current?.click(),className:"rounded-xl bg-primary px-3 py-1.5 text-xs font-semibold text-white disabled:opacity-50",children:ev?"Uploading...":ed?.logoUrl?"Replace logo":"Upload logo"}),ed?.logoUrl?(0,s.jsx)("button",{type:"button",onClick:()=>ez("logo"),className:"rounded-xl border border-border px-3 py-1.5 text-xs font-semibold text-text-main hover:border-red-300 hover:text-red-600",children:"Remove"}):null]})]}),(0,s.jsx)("input",{ref:eD,type:"file",accept:m,className:"hidden",onChange:e$})]})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"mb-2 text-sm font-semibold text-text-main",children:"Favicon"}),(0,s.jsxs)("div",{className:"flex items-center gap-4 rounded-xl border border-border bg-background p-4",children:[(0,s.jsx)("div",{className:"flex h-16 w-16 shrink-0 items-center justify-center overflow-hidden rounded-lg border border-border bg-surface",children:ed?.faviconUrl?(0,s.jsx)("img",{src:ed.faviconUrl,alt:"Current favicon",className:"max-h-10 max-w-10 object-contain"}):(0,s.jsx)("span",{className:"material-symbols-outlined text-text-muted",children:"public"})}),(0,s.jsxs)("div",{className:"flex-1 space-y-2",children:[(0,s.jsx)("div",{className:"text-xs text-text-muted",children:"Shown in the browser tab. ICO, SVG, PNG, WebP, JPEG, GIF."}),(0,s.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,s.jsx)("button",{type:"button",disabled:ej,onClick:()=>eS.current?.click(),className:"rounded-xl bg-primary px-3 py-1.5 text-xs font-semibold text-white disabled:opacity-50",children:ej?"Uploading...":ed?.faviconUrl?"Replace favicon":"Upload favicon"}),ed?.faviconUrl?(0,s.jsx)("button",{type:"button",onClick:()=>ez("favicon"),className:"rounded-xl border border-border px-3 py-1.5 text-xs font-semibold text-text-main hover:border-red-300 hover:text-red-600",children:"Remove"}):null]})]}),(0,s.jsx)("input",{ref:eS,type:"file",accept:x,className:"hidden",onChange:e_})]})]})]}),(0,s.jsxs)("form",{onSubmit:eq,className:"space-y-3",children:[(0,s.jsx)(b,{label:"Site title",hint:"Shown in browser tab and login page. Leave blank for default.",children:(0,s.jsx)(y,{value:ei,onChange:e=>ec(e.target.value),placeholder:"AI Router Gateway"})}),(0,s.jsx)(b,{label:"Company short name",hint:"Shown in dashboard sidebar and login hero text. Defaults to site title/sidebar default or 'Fujinet' on login.",children:(0,s.jsx)(y,{value:ep,onChange:e=>eu(e.target.value),placeholder:"Fujinet"})}),(0,s.jsx)(b,{label:"Description",hint:"Used for browser metadata.",children:(0,s.jsx)(v,{rows:3,value:em,onChange:e=>ex(e.target.value),placeholder:"AI Infrastructure Management"})}),(0,s.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,s.jsx)("button",{type:"submit",disabled:eb,className:"rounded-xl bg-primary px-4 py-2 text-sm font-semibold text-white disabled:opacity-50",children:eb?"Saving...":"Save branding text"}),(0,s.jsx)("button",{type:"button",disabled:eN,onClick:eV,className:"rounded-xl border border-border px-4 py-2 text-sm font-semibold text-text-main hover:border-red-300 hover:text-red-600 disabled:opacity-50",children:eN?"Resetting...":"Reset to defaults"})]})]})]}),(0,s.jsx)(h,{status:eh})]}),(0,s.jsx)(g,{icon:"shield",title:"Dashboard Login",desc:"Local account remains available even when LDAP is enabled.",children:(0,s.jsxs)("div",{className:"grid gap-6 lg:grid-cols-2",children:[(0,s.jsxs)("form",{onSubmit:eL,className:"space-y-3",children:[(0,s.jsx)("h3",{className:"font-semibold text-text-main",children:"Local account"}),(0,s.jsx)(b,{label:"Local username",children:(0,s.jsx)(y,{value:P,onChange:e=>M(e.target.value)})}),(0,s.jsx)("button",{className:"rounded-xl bg-primary px-4 py-2 text-sm font-semibold text-white",children:"Save account"}),(0,s.jsx)(h,{status:E})]}),(0,s.jsxs)("form",{onSubmit:eR,className:"space-y-3",children:[(0,s.jsx)("h3",{className:"font-semibold text-text-main",children:"Local password"}),e.hasPassword&&(0,s.jsx)(b,{label:"Current password",children:(0,s.jsx)(y,{type:"password",value:n.current,onChange:e=>d({...n,current:e.target.value}),required:!0})}),(0,s.jsx)(b,{label:"New password",children:(0,s.jsx)(y,{type:"password",value:n.new,onChange:e=>d({...n,new:e.target.value}),required:!0})}),(0,s.jsx)(b,{label:"Confirm password",children:(0,s.jsx)(y,{type:"password",value:n.confirm,onChange:e=>d({...n,confirm:e.target.value}),required:!0})}),(0,s.jsx)("button",{disabled:j,className:"rounded-xl bg-primary px-4 py-2 text-sm font-semibold text-white disabled:opacity-50",children:e.hasPassword?"Update Password":"Set Password"}),(0,s.jsx)(h,{status:i})]})]})}),(0,s.jsx)("div",{id:"request-logging",className:"scroll-mt-6",children:(0,s.jsx)(p,{})}),(0,s.jsxs)(g,{icon:"database",title:"Full Node Backup",desc:"Export or restore the database, Audit Proxy node configuration, Root CA, Resource Monitor data, logo and favicon.",children:[(0,s.jsxs)("div",{className:"mb-4 grid gap-3 md:grid-cols-2",children:[(0,s.jsx)(b,{label:"Backup password (optional)",hint:"Leave blank for plaintext JSON. When set, the entire backup is encrypted with AES-256-GCM and scrypt. Minimum 8 characters.",children:(0,s.jsx)(y,{type:"password",autoComplete:"new-password",value:k,onChange:e=>A(e.target.value),placeholder:"Optional encryption password"})}),(0,s.jsx)(b,{label:"Confirm password (export only)",hint:"Used only to prevent exporting a backup with a mistyped password. Not required when importing.",children:(0,s.jsx)(y,{type:"password",autoComplete:"new-password",value:U,onChange:e=>L(e.target.value),placeholder:"Repeat password before download"})})]}),(0,s.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,s.jsx)("button",{onClick:eP,disabled:N,className:"rounded-xl bg-primary px-4 py-2 text-sm font-semibold text-white disabled:opacity-50",children:"Download Full Backup"}),(0,s.jsx)("button",{onClick:()=>R.current?.click(),disabled:N,className:"rounded-xl border border-border px-4 py-2 text-sm font-semibold text-text-main hover:border-primary/50 disabled:opacity-50",children:"Import Backup"}),(0,s.jsx)("input",{ref:R,type:"file",accept:"application/json,.brbackup",className:"hidden",onChange:eM})]}),(0,s.jsx)("div",{className:"mt-3 rounded-xl border border-amber-500/30 bg-amber-500/10 px-4 py-3 text-xs leading-5 text-amber-800 dark:text-amber-300",children:"Full backups include API credentials, Audit Proxy bcrypt password hashes and the Root CA private key. Anyone holding the Root CA key can issue certificates trusted by enrolled clients. Use a password whenever the file leaves the secured backup location."}),(0,s.jsx)("p",{className:"mt-3 text-xs text-text-muted",children:"Import validates the complete Root CA pair and Audit Proxy configuration before mutation, applies the restored runtime state immediately, and rolls back database/configuration/CA state if restore fails. Legacy v2 database backups remain supported."}),(0,s.jsx)(h,{status:D})]}),(0,s.jsx)(g,{icon:"corporate_fare",title:"LDAP / Active Directory Login",desc:"Search users from a User Base DN, restrict login by group DN, and grant admin by group DN. The old Selected LDAP users list is kept as a manual admin list.",children:(0,s.jsxs)("form",{onSubmit:eB,className:"space-y-5",children:[(0,s.jsx)("div",{className:"flex flex-wrap gap-3",children:(0,s.jsx)("button",{type:"button",onClick:()=>eE("ldapEnabled",!T.ldapEnabled),className:`rounded-xl px-3 py-2 text-sm font-semibold ${T.ldapEnabled?"bg-primary text-white":"border border-border text-text-muted"}`,children:T.ldapEnabled?"Enabled":"Disabled"})}),(0,s.jsxs)("div",{className:"grid gap-4 lg:grid-cols-2",children:[(0,s.jsx)(b,{label:"LDAP URL",children:(0,s.jsx)(y,{value:T.ldapUrl,onChange:e=>eE("ldapUrl",e.target.value),placeholder:"ldap://dc01.company.local:389"})}),(0,s.jsx)(b,{label:"LDAP User Base DN",hint:"OU/container/domain where user objects are searched. Do not use a group DN here.",children:(0,s.jsx)(y,{value:T.ldapUserBaseDn,onChange:e=>eE("ldapUserBaseDn",e.target.value),placeholder:"OU=Users,OU=xxx,DC=xx,DC=vn"})}),(0,s.jsx)(b,{label:"LDAP Bind DN",children:(0,s.jsx)(y,{value:T.ldapBindDn,onChange:e=>eE("ldapBindDn",e.target.value),placeholder:"CN=svc-bluerouter,OU=Service Accounts,DC=company,DC=local"})}),(0,s.jsx)(b,{label:"LDAP Bind Password",children:(0,s.jsx)(y,{type:"password",value:T.ldapBindPassword,onChange:e=>eE("ldapBindPassword",e.target.value),placeholder:e.ldapHasBindPassword?"Saved — leave blank to keep":"Service account password"})}),(0,s.jsx)(b,{label:"LDAP Login Allowed Group DN",hint:"Only members of this group can log in. Leave blank to allow any valid LDAP user.",children:(0,s.jsx)(y,{value:T.ldapLoginAllowedGroupDn,onChange:e=>eE("ldapLoginAllowedGroupDn",e.target.value),placeholder:"CN=Apikeys_Groups,OU=AppGroups,OU=xxx,DC=xx,DC=vn"})}),(0,s.jsx)(b,{label:"LDAP Admin Group DN",hint:"Members of this group get full admin dashboard access.",children:(0,s.jsx)(y,{value:T.ldapAdminGroupDn,onChange:e=>eE("ldapAdminGroupDn",e.target.value),placeholder:"CN=BlueRouter_Admins,OU=AppGroups,OU=xxx,DC=xx,DC=vn"})}),(0,s.jsx)(b,{label:"LDAP Monitor Admin Group DN",hint:"Members can use only Endpoint, API Keys, Usage, Analytics, Quota Tracker and Prompt Logs with admin-like permissions inside those tabs.",children:(0,s.jsx)(y,{value:T.ldapMonitorAdminGroupDn,onChange:e=>eE("ldapMonitorAdminGroupDn",e.target.value),placeholder:"CN=BlueRouter_Monitor_Admins,OU=AppGroups,OU=xxx,DC=xx,DC=vn"})}),(0,s.jsx)(b,{label:"LDAP AI Gateways Monitors Group DN",hint:"Members log in as regular users but the Analytics page aggregates statistics for every API key that has an owner, instead of only their own keys.",children:(0,s.jsx)(y,{value:T.ldapAiGatewaysMonitorsGroupDn,onChange:e=>eE("ldapAiGatewaysMonitorsGroupDn",e.target.value),placeholder:"CN=BlueRouter_AI_Gateways_Monitors,OU=AppGroups,OU=xxx,DC=xx,DC=vn"})})]}),(0,s.jsxs)("div",{className:"grid gap-4 lg:grid-cols-2",children:[(0,s.jsx)(b,{label:"User search filter",hint:"Use {{username}} placeholder.",children:(0,s.jsx)(y,{value:T.ldapUserSearchFilter,onChange:e=>eE("ldapUserSearchFilter",e.target.value)})}),(0,s.jsx)(b,{label:"Login group mode",hint:"Nested groups uses AD matching rule 1.2.840.113556.1.4.1941.",children:(0,s.jsx)(f,{title:"Nested group membership",desc:"Recommended for Active Directory nested groups.",checked:T.ldapNestedGroups,onChange:e=>eE("ldapNestedGroups",e)})}),(0,s.jsx)(b,{label:"Username attribute",children:(0,s.jsx)(y,{value:T.ldapUserNameAttribute,onChange:e=>eE("ldapUserNameAttribute",e.target.value)})}),(0,s.jsx)(b,{label:"Display attribute",children:(0,s.jsx)(y,{value:T.ldapUserDisplayAttribute,onChange:e=>eE("ldapUserDisplayAttribute",e.target.value)})}),(0,s.jsx)(b,{label:"Email attribute",children:(0,s.jsx)(y,{value:T.ldapUserEmailAttribute,onChange:e=>eE("ldapUserEmailAttribute",e.target.value)})}),(0,s.jsx)(b,{label:"Connect timeout ms",children:(0,s.jsx)(y,{type:"number",value:T.ldapConnectTimeoutMs,onChange:e=>eE("ldapConnectTimeoutMs",e.target.value)})})]}),(0,s.jsx)(f,{title:"Reject invalid TLS certificates",desc:"Disable only for test/self-signed LDAP TLS.",checked:T.ldapTlsRejectUnauthorized,onChange:e=>eE("ldapTlsRejectUnauthorized",e)}),(0,s.jsxs)("div",{className:"rounded-2xl border border-border bg-background p-4",children:[(0,s.jsxs)("div",{className:"mb-3",children:[(0,s.jsx)("h3",{className:"font-semibold text-text-main",children:"Manual admin users / LDAP owner list"}),(0,s.jsx)("p",{className:"mt-1 text-xs text-text-muted",children:"Users loaded here come from Login Allowed Group DN when set. Selected users are also treated as manual admins for backward compatibility."})]}),(0,s.jsxs)("div",{className:"mb-3 flex gap-2",children:[(0,s.jsx)(y,{value:z,onChange:e=>V(e.target.value),placeholder:"Search users..."}),(0,s.jsx)("button",{type:"button",onClick:eG,disabled:H,className:"rounded-xl border border-border px-4 py-2 text-sm font-semibold text-text-main disabled:opacity-50",children:H?"Loading...":"Load users"})]}),J.length>0&&(0,s.jsx)("div",{className:"max-h-72 overflow-auto rounded-xl border border-border",children:J.map(e=>{let a=T.ldapAllowedUsers.includes(e.username);return(0,s.jsxs)("button",{type:"button",onClick:()=>eI(e.username),className:`flex w-full items-center justify-between gap-3 border-b border-border px-3 py-2 text-left text-sm last:border-b-0 ${a?"bg-primary/10":"bg-background hover:bg-surface"}`,children:[(0,s.jsxs)("span",{children:[(0,s.jsx)("span",{className:"font-semibold text-text-main",children:e.displayName||e.username}),(0,s.jsxs)("span",{className:"ml-2 text-text-muted",children:[e.username,e.email?` \xb7 ${e.email}`:""]})]}),(0,s.jsx)("span",{className:"material-symbols-outlined text-primary",children:a?"check_circle":"radio_button_unchecked"})]},e.dn||e.username)})}),(0,s.jsxs)("div",{className:"mt-3",children:[(0,s.jsxs)("div",{className:"mb-2 text-sm font-semibold text-text-main",children:["Selected manual admin users (",T.ldapAllowedUsers.length,")"]}),0===T.ldapAllowedUsers.length?(0,s.jsx)("div",{className:"text-sm text-text-muted",children:"No users selected."}):(0,s.jsx)("div",{className:"flex flex-wrap gap-2",children:T.ldapAllowedUsers.map(e=>(0,s.jsxs)("button",{type:"button",onClick:()=>eI(e),className:"rounded-full border border-primary/30 bg-primary/10 px-3 py-1 text-xs text-primary",children:[e," \xd7"]},e))})]})]}),(0,s.jsxs)("div",{className:"flex flex-wrap gap-3",children:[(0,s.jsx)("button",{type:"button",onClick:eT,disabled:_,className:"rounded-xl border border-border px-4 py-2 text-sm font-semibold text-text-main disabled:opacity-50",children:_?"Testing...":"Save & test LDAP"}),(0,s.jsx)("button",{type:"submit",disabled:F,className:"rounded-xl bg-primary px-4 py-2 text-sm font-semibold text-white disabled:opacity-50",children:F?"Saving...":"Save LDAP settings"})]}),(0,s.jsx)(h,{status:I})]})}),(0,s.jsxs)(g,{icon:"lock_open",title:"OIDC Dashboard Login",desc:"oidc"===e.authMode?"OIDC active":"both"===e.authMode?"Password + OIDC active":"Optional SSO via Authentik/Keycloak/Google",children:[(0,s.jsx)("button",{type:"button",onClick:()=>el(e=>!e),className:"mb-4 rounded-xl border border-border px-4 py-2 text-sm font-semibold text-text-main",children:er?"Hide OIDC settings":"Show OIDC settings"}),er&&(0,s.jsxs)("div",{className:"space-y-4",children:[(0,s.jsx)("div",{className:"grid gap-3 md:grid-cols-3",children:[{value:"password",title:"Password/LDAP",desc:"Keep local and LDAP login."},{value:"oidc",title:"OIDC only",desc:"Disable local/LDAP login when configured."},{value:"both",title:"Both",desc:"Allow either OIDC or local/LDAP."}].map(e=>{let a=W.authMode===e.value;return(0,s.jsxs)("button",{type:"button",onClick:()=>Z(a=>({...a,authMode:e.value})),className:`rounded-xl border p-3 text-left ${a?"border-primary bg-primary/10":"border-border bg-background hover:border-primary/40"}`,children:[(0,s.jsx)("div",{className:"font-semibold text-text-main",children:e.title}),(0,s.jsx)("div",{className:"mt-1 text-xs text-text-muted",children:e.desc})]},e.value)})}),(0,s.jsxs)("div",{className:"grid gap-4 lg:grid-cols-2",children:[(0,s.jsx)(b,{label:"Issuer URL",children:(0,s.jsx)(y,{value:W.oidcIssuerUrl,onChange:e=>Z({...W,oidcIssuerUrl:e.target.value})})}),(0,s.jsx)(b,{label:"Client ID",children:(0,s.jsx)(y,{value:W.oidcClientId,onChange:e=>Z({...W,oidcClientId:e.target.value})})}),(0,s.jsx)(b,{label:"Client Secret",children:(0,s.jsx)(y,{type:"password",value:X,onChange:e=>Y(e.target.value),placeholder:e.oidcConfigured?"Saved — leave blank to keep":"Client secret"})}),(0,s.jsx)(b,{label:"Scopes",children:(0,s.jsx)(y,{value:W.oidcScopes,onChange:e=>Z({...W,oidcScopes:e.target.value})})}),(0,s.jsx)(b,{label:"Login label",children:(0,s.jsx)(y,{value:W.oidcLoginLabel,onChange:e=>Z({...W,oidcLoginLabel:e.target.value})})})]}),(0,s.jsx)("button",{type:"button",onClick:()=>eO(),disabled:et,className:"rounded-xl bg-primary px-4 py-2 text-sm font-semibold text-white disabled:opacity-50",children:et?"Saving...":"Save OIDC settings"}),(0,s.jsx)(h,{status:ee})]})]})]})}},7973:(e,a,t)=>{Promise.resolve().then(t.bind(t,6191))}},e=>{e.O(0,[6373,3862,8500,506,9959,7050,8723,5263,7033,5497,8441,3794,7358],()=>e(e.s=7973)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[166,1316,2006,6526,6620,8982],{32239:(e,s,t)=>{"use strict";t.d(s,{default:()=>f});var i=t(95155),n=t(73321),o=t(98500),a=t.n(o),r=t(12115),l=t(35497),c=t(57250),d=t(52679);let m=new Set(["image"]),x={image:"image-combo",tts:"tts-combo"};function h(e){let s=Object.entries(e).some(([e,s])=>e.startsWith("modelLock_")&&s&&new Date(s).getTime()>Date.now());return"unavailable"!==e.testStatus||s?e.testStatus:"active"}function p({provider:e,kind:s,connections:t,isCustom:n,onToggle:o}){var r;let m,x=d.Q2[e.id],u=!!x?.noAuth,f=t.filter(s=>s.provider===e.id),j=f.filter(e=>{let s=h(e);return"active"===s||"success"===s}).length,g=f.filter(e=>{let s=h(e);return"error"===s||"expired"===s||"unavailable"===s}).length,b=f.length,v=b>0&&f.every(e=>!1===e.isActive);return(0,i.jsx)(a(),{href:(r=e.id,(m=d.dV[s])?`${m}/${r}`:`/dashboard/media-providers/${s}/${r}`),className:"group",children:(0,i.jsx)(l.Zp,{padding:"xs",className:`h-full hover:bg-black/[0.01] dark:hover:bg-white/[0.01] transition-colors cursor-pointer ${v?"opacity-50":""}`,children:(0,i.jsxs)("div",{className:"flex min-w-0 items-center justify-between gap-3",children:[(0,i.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,i.jsx)("div",{className:"size-8 rounded-lg flex items-center justify-center shrink-0",style:{backgroundColor:`${e.color?.length>7?e.color:(e.color??"#888")+"15"}`},children:(0,i.jsx)(c.A,{src:`/providers/${e.id}.png`,alt:e.name,size:30,className:"object-contain rounded-lg max-w-[30px] max-h-[30px]",fallbackText:e.textIcon||e.id.slice(0,2).toUpperCase(),fallbackColor:e.color})}),(0,i.jsxs)("div",{className:"min-w-0",children:[(0,i.jsx)("h3",{className:"font-semibold text-sm",children:e.name}),(0,i.jsxs)("div",{className:"flex items-center gap-2 mt-0.5 flex-wrap",children:[n&&(0,i.jsx)(l.Ex,{variant:"default",size:"sm",children:"Custom"}),n&&("stt"===s||"tts"===s)||u?(0,i.jsx)(l.Ex,{variant:"success",size:"sm",children:"Ready"}):v?(0,i.jsx)(l.Ex,{variant:"default",size:"sm",children:"Disabled"}):0===b?(0,i.jsx)("span",{className:"text-xs text-text-muted",children:"No connections"}):(0,i.jsxs)(i.Fragment,{children:[j>0&&(0,i.jsxs)(l.Ex,{variant:"success",size:"sm",dot:!0,children:[j," Connected"]}),g>0&&(0,i.jsxs)(l.Ex,{variant:"error",size:"sm",dot:!0,children:[g," Error"]}),0===j&&0===g&&(0,i.jsxs)(l.Ex,{variant:"default",size:"sm",children:[b," Added"]})]})]})]})]}),b>0&&(0,i.jsx)("div",{className:"shrink-0 opacity-100 transition-opacity sm:opacity-0 sm:group-hover:opacity-100",onClick:s=>{s.preventDefault(),s.stopPropagation(),o&&o(e.id,v)},children:(0,i.jsx)(l.lM,{size:"sm",checked:!v,onChange:()=>{},title:v?"Enable provider":"Disable provider"})})]})})})}function u({combos:e}){return 0===e.length?null:(0,i.jsx)("div",{className:"flex flex-col gap-2",children:e.map(e=>(0,i.jsx)(a(),{href:`/dashboard/media-providers/combo/${e.id}`,children:(0,i.jsx)(l.Zp,{padding:"xs",className:"hover:bg-black/[0.02] dark:hover:bg-white/[0.02] transition-colors cursor-pointer",children:(0,i.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,i.jsx)("span",{className:"material-symbols-outlined text-primary text-[18px]",children:"layers"}),(0,i.jsx)("code",{className:"text-sm font-mono font-medium flex-1 truncate",children:e.name}),(0,i.jsxs)("div",{className:"flex flex-wrap items-center gap-1 sm:shrink-0",children:[e.models.slice(0,6).map((e,s)=>{let t="string"==typeof e?e.split("/")[0]:"",n=d.Q2[t];return(0,i.jsx)("div",{title:n?.name||e,className:"size-5 rounded flex items-center justify-center",style:{backgroundColor:`${n?.color??"#888"}15`},children:(0,i.jsx)(c.A,{src:`/providers/${t}.png`,alt:n?.name||t,size:18,className:"object-contain rounded max-w-[18px] max-h-[18px]",fallbackText:n?.textIcon||t.slice(0,2).toUpperCase(),fallbackColor:n?.color})},`${e}-${s}`)}),e.models.length>6&&(0,i.jsxs)("span",{className:"text-[10px] text-text-muted ml-1",children:["+",e.models.length-6]})]}),(0,i.jsx)("span",{className:"text-[11px] text-text-muted shrink-0",children:e.models.length}),(0,i.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[16px]",children:"chevron_right"})]})})},e.id))})}function f({forcedKind:e}){let s=(0,n.useParams)(),t=e||s.kind,o=(0,n.useRouter)(),[a,c]=(0,r.useState)([]),[h,j]=(0,r.useState)([]),[g,b]=(0,r.useState)([]),[v,y]=(0,r.useState)(!1),[C,N]=(0,r.useState)(!1),[k,w]=(0,r.useState)(!1);(0,r.useEffect)(()=>{("webSearch"===t||"webFetch"===t)&&o.replace("/dashboard/media-providers/web")},[t,o]);let S=d.rj.find(e=>e.id===t),$="embedding"===t,E="stt"===t,T="tts"===t,z=m.has(t);if((0,r.useEffect)(()=>{S&&(fetch("/api/providers",{cache:"no-store"}).then(e=>e.json()).then(e=>c(e.connections||[])).catch(()=>{}),($||E||T)&&fetch("/api/provider-nodes",{cache:"no-store"}).then(e=>e.json()).then(e=>j((e.nodes||[]).filter(e=>e.type===(E?"custom-stt":T?"custom-tts":"custom-embedding")))).catch(()=>{}),z&&fetch("/api/combos",{cache:"no-store"}).then(e=>e.json()).then(e=>b(e.combos||[])).catch(()=>{}))},[$,E,T,z,S]),!S)return(0,n.notFound)();let A=(0,d.o5)(t),O=g.filter(e=>e.kind===t),_=h.map(e=>({id:e.id,name:e.name||("custom-stt"===e.type?"Custom STT":"custom-tts"===e.type?"Custom TTS":"Custom Embedding"),color:"custom-stt"===e.type||"custom-tts"===e.type?"#0EA5E9":"#6366F1",textIcon:"custom-stt"===e.type?"CS":"custom-tts"===e.type?"CT":"CE"})),F=[...A,..._],P=async(e,s)=>{let t=a.filter(s=>s.provider===e);c(t=>t.map(t=>t.provider===e?{...t,isActive:s}:t)),await Promise.allSettled(t.map(e=>fetch(`/api/providers/${e.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:s})})))},D=async()=>{let e=x[t]||`${t}-combo`,s=e,i=1,n=new Set(g.map(e=>e.name));for(;n.has(s);)s=`${e}-${i++}`;let a=await fetch("/api/combos",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:s,models:[],kind:t})});if(a.ok){let e=await a.json();o.push(`/dashboard/media-providers/combo/${e.id}`)}else alert((await a.json()).error||"Failed to create combo")};return(0,i.jsxs)("div",{className:"flex flex-col gap-6",children:[($||E||T||z)&&(0,i.jsxs)("div",{className:"flex items-center justify-end gap-2",children:[z&&(0,i.jsx)(l.$n,{size:"sm",icon:"add",onClick:D,children:"Create Combo"}),$&&(0,i.jsx)(l.$n,{size:"sm",icon:"add",onClick:()=>y(!0),children:"Add Custom Embedding"}),E&&(0,i.jsx)(l.$n,{size:"sm",icon:"add",onClick:()=>N(!0),children:"Add Custom STT"}),T&&(0,i.jsx)(l.$n,{size:"sm",icon:"add",onClick:()=>w(!0),children:"Add Custom TTS"})]}),z&&O.length>0&&(0,i.jsx)(u,{combos:O}),0===F.length?(0,i.jsxs)("div",{className:"text-center py-12 border border-dashed border-border rounded-xl text-text-muted text-sm",children:["No providers support ",(0,i.jsx)("strong",{children:S.label})," yet."]}):(0,i.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4",children:[A.map(e=>(0,i.jsx)(p,{provider:e,kind:t,connections:a,onToggle:P},e.id)),_.map(e=>(0,i.jsx)(p,{provider:e,kind:t,connections:a,isCustom:!0,onToggle:P},e.id))]}),$&&(0,i.jsx)(l.Jz,{isOpen:v,onClose:()=>y(!1),onSaved:e=>{j(s=>[...s,e]),y(!1)}}),E&&(0,i.jsx)(l.F8,{isOpen:C,onClose:()=>N(!1),onCreated:e=>{j(s=>[...s,e]),N(!1)}}),T&&(0,i.jsx)(l.b1,{isOpen:k,onClose:()=>w(!1),onCreated:e=>{j(s=>[...s,e]),w(!1)}})]})}},78521:(e,s,t)=>{Promise.resolve().then(t.bind(t,32239))}},e=>{e.O(0,[6373,3862,8500,506,9959,7050,8723,5263,7033,5497,8441,3794,7358],()=>e(e.s=78521)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3444,4574,4588,5180,5324],{83211:(e,s,_)=>{Promise.resolve().then(_.bind(_,94588))}},e=>{e.O(0,[6373,3862,8500,506,9959,7050,8723,5263,7033,5497,2207,8441,3794,7358],()=>e(e.s=83211)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[166,1316,2006,6526,6620,8982],{32239:(e,s,t)=>{"use strict";t.d(s,{default:()=>f});var i=t(95155),n=t(73321),o=t(98500),a=t.n(o),r=t(12115),l=t(35497),c=t(57250),d=t(52679);let m=new Set(["image"]),x={image:"image-combo",tts:"tts-combo"};function h(e){let s=Object.entries(e).some(([e,s])=>e.startsWith("modelLock_")&&s&&new Date(s).getTime()>Date.now());return"unavailable"!==e.testStatus||s?e.testStatus:"active"}function p({provider:e,kind:s,connections:t,isCustom:n,onToggle:o}){var r;let m,x=d.Q2[e.id],u=!!x?.noAuth,f=t.filter(s=>s.provider===e.id),j=f.filter(e=>{let s=h(e);return"active"===s||"success"===s}).length,g=f.filter(e=>{let s=h(e);return"error"===s||"expired"===s||"unavailable"===s}).length,b=f.length,v=b>0&&f.every(e=>!1===e.isActive);return(0,i.jsx)(a(),{href:(r=e.id,(m=d.dV[s])?`${m}/${r}`:`/dashboard/media-providers/${s}/${r}`),className:"group",children:(0,i.jsx)(l.Zp,{padding:"xs",className:`h-full hover:bg-black/[0.01] dark:hover:bg-white/[0.01] transition-colors cursor-pointer ${v?"opacity-50":""}`,children:(0,i.jsxs)("div",{className:"flex min-w-0 items-center justify-between gap-3",children:[(0,i.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,i.jsx)("div",{className:"size-8 rounded-lg flex items-center justify-center shrink-0",style:{backgroundColor:`${e.color?.length>7?e.color:(e.color??"#888")+"15"}`},children:(0,i.jsx)(c.A,{src:`/providers/${e.id}.png`,alt:e.name,size:30,className:"object-contain rounded-lg max-w-[30px] max-h-[30px]",fallbackText:e.textIcon||e.id.slice(0,2).toUpperCase(),fallbackColor:e.color})}),(0,i.jsxs)("div",{className:"min-w-0",children:[(0,i.jsx)("h3",{className:"font-semibold text-sm",children:e.name}),(0,i.jsxs)("div",{className:"flex items-center gap-2 mt-0.5 flex-wrap",children:[n&&(0,i.jsx)(l.Ex,{variant:"default",size:"sm",children:"Custom"}),n&&("stt"===s||"tts"===s)||u?(0,i.jsx)(l.Ex,{variant:"success",size:"sm",children:"Ready"}):v?(0,i.jsx)(l.Ex,{variant:"default",size:"sm",children:"Disabled"}):0===b?(0,i.jsx)("span",{className:"text-xs text-text-muted",children:"No connections"}):(0,i.jsxs)(i.Fragment,{children:[j>0&&(0,i.jsxs)(l.Ex,{variant:"success",size:"sm",dot:!0,children:[j," Connected"]}),g>0&&(0,i.jsxs)(l.Ex,{variant:"error",size:"sm",dot:!0,children:[g," Error"]}),0===j&&0===g&&(0,i.jsxs)(l.Ex,{variant:"default",size:"sm",children:[b," Added"]})]})]})]})]}),b>0&&(0,i.jsx)("div",{className:"shrink-0 opacity-100 transition-opacity sm:opacity-0 sm:group-hover:opacity-100",onClick:s=>{s.preventDefault(),s.stopPropagation(),o&&o(e.id,v)},children:(0,i.jsx)(l.lM,{size:"sm",checked:!v,onChange:()=>{},title:v?"Enable provider":"Disable provider"})})]})})})}function u({combos:e}){return 0===e.length?null:(0,i.jsx)("div",{className:"flex flex-col gap-2",children:e.map(e=>(0,i.jsx)(a(),{href:`/dashboard/media-providers/combo/${e.id}`,children:(0,i.jsx)(l.Zp,{padding:"xs",className:"hover:bg-black/[0.02] dark:hover:bg-white/[0.02] transition-colors cursor-pointer",children:(0,i.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,i.jsx)("span",{className:"material-symbols-outlined text-primary text-[18px]",children:"layers"}),(0,i.jsx)("code",{className:"text-sm font-mono font-medium flex-1 truncate",children:e.name}),(0,i.jsxs)("div",{className:"flex flex-wrap items-center gap-1 sm:shrink-0",children:[e.models.slice(0,6).map((e,s)=>{let t="string"==typeof e?e.split("/")[0]:"",n=d.Q2[t];return(0,i.jsx)("div",{title:n?.name||e,className:"size-5 rounded flex items-center justify-center",style:{backgroundColor:`${n?.color??"#888"}15`},children:(0,i.jsx)(c.A,{src:`/providers/${t}.png`,alt:n?.name||t,size:18,className:"object-contain rounded max-w-[18px] max-h-[18px]",fallbackText:n?.textIcon||t.slice(0,2).toUpperCase(),fallbackColor:n?.color})},`${e}-${s}`)}),e.models.length>6&&(0,i.jsxs)("span",{className:"text-[10px] text-text-muted ml-1",children:["+",e.models.length-6]})]}),(0,i.jsx)("span",{className:"text-[11px] text-text-muted shrink-0",children:e.models.length}),(0,i.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[16px]",children:"chevron_right"})]})})},e.id))})}function f({forcedKind:e}){let s=(0,n.useParams)(),t=e||s.kind,o=(0,n.useRouter)(),[a,c]=(0,r.useState)([]),[h,j]=(0,r.useState)([]),[g,b]=(0,r.useState)([]),[v,y]=(0,r.useState)(!1),[C,N]=(0,r.useState)(!1),[k,w]=(0,r.useState)(!1);(0,r.useEffect)(()=>{("webSearch"===t||"webFetch"===t)&&o.replace("/dashboard/media-providers/web")},[t,o]);let S=d.rj.find(e=>e.id===t),$="embedding"===t,E="stt"===t,T="tts"===t,z=m.has(t);if((0,r.useEffect)(()=>{S&&(fetch("/api/providers",{cache:"no-store"}).then(e=>e.json()).then(e=>c(e.connections||[])).catch(()=>{}),($||E||T)&&fetch("/api/provider-nodes",{cache:"no-store"}).then(e=>e.json()).then(e=>j((e.nodes||[]).filter(e=>e.type===(E?"custom-stt":T?"custom-tts":"custom-embedding")))).catch(()=>{}),z&&fetch("/api/combos",{cache:"no-store"}).then(e=>e.json()).then(e=>b(e.combos||[])).catch(()=>{}))},[$,E,T,z,S]),!S)return(0,n.notFound)();let A=(0,d.o5)(t),O=g.filter(e=>e.kind===t),_=h.map(e=>({id:e.id,name:e.name||("custom-stt"===e.type?"Custom STT":"custom-tts"===e.type?"Custom TTS":"Custom Embedding"),color:"custom-stt"===e.type||"custom-tts"===e.type?"#0EA5E9":"#6366F1",textIcon:"custom-stt"===e.type?"CS":"custom-tts"===e.type?"CT":"CE"})),F=[...A,..._],P=async(e,s)=>{let t=a.filter(s=>s.provider===e);c(t=>t.map(t=>t.provider===e?{...t,isActive:s}:t)),await Promise.allSettled(t.map(e=>fetch(`/api/providers/${e.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:s})})))},D=async()=>{let e=x[t]||`${t}-combo`,s=e,i=1,n=new Set(g.map(e=>e.name));for(;n.has(s);)s=`${e}-${i++}`;let a=await fetch("/api/combos",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:s,models:[],kind:t})});if(a.ok){let e=await a.json();o.push(`/dashboard/media-providers/combo/${e.id}`)}else alert((await a.json()).error||"Failed to create combo")};return(0,i.jsxs)("div",{className:"flex flex-col gap-6",children:[($||E||T||z)&&(0,i.jsxs)("div",{className:"flex items-center justify-end gap-2",children:[z&&(0,i.jsx)(l.$n,{size:"sm",icon:"add",onClick:D,children:"Create Combo"}),$&&(0,i.jsx)(l.$n,{size:"sm",icon:"add",onClick:()=>y(!0),children:"Add Custom Embedding"}),E&&(0,i.jsx)(l.$n,{size:"sm",icon:"add",onClick:()=>N(!0),children:"Add Custom STT"}),T&&(0,i.jsx)(l.$n,{size:"sm",icon:"add",onClick:()=>w(!0),children:"Add Custom TTS"})]}),z&&O.length>0&&(0,i.jsx)(u,{combos:O}),0===F.length?(0,i.jsxs)("div",{className:"text-center py-12 border border-dashed border-border rounded-xl text-text-muted text-sm",children:["No providers support ",(0,i.jsx)("strong",{children:S.label})," yet."]}):(0,i.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4",children:[A.map(e=>(0,i.jsx)(p,{provider:e,kind:t,connections:a,onToggle:P},e.id)),_.map(e=>(0,i.jsx)(p,{provider:e,kind:t,connections:a,isCustom:!0,onToggle:P},e.id))]}),$&&(0,i.jsx)(l.Jz,{isOpen:v,onClose:()=>y(!1),onSaved:e=>{j(s=>[...s,e]),y(!1)}}),E&&(0,i.jsx)(l.F8,{isOpen:C,onClose:()=>N(!1),onCreated:e=>{j(s=>[...s,e]),N(!1)}}),T&&(0,i.jsx)(l.b1,{isOpen:k,onClose:()=>w(!1),onCreated:e=>{j(s=>[...s,e]),w(!1)}})]})}},78521:(e,s,t)=>{Promise.resolve().then(t.bind(t,32239))}},e=>{e.O(0,[6373,3862,8500,506,9959,7050,8723,5263,7033,5497,8441,3794,7358],()=>e(e.s=78521)),_N_E=e.O()}]);