@jheavenknows/bluerouter 5.3.48 → 5.3.49

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 (1051) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +10 -7
  3. package/app/.next-cli-build/build-manifest.json +2 -2
  4. package/app/.next-cli-build/prerender-manifest.json +59 -31
  5. package/app/.next-cli-build/routes-manifest.json +18 -0
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/ai-power-index/page.js +1 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/ai-power-index/page_client-reference-manifest.js +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/analytics/page.js +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/api-keys/page.js +2 -2
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/api-keys/page_client-reference-manifest.js +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/audit-proxy/page.js +5 -0
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/audit-proxy/page.js.nft.json +1 -0
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/audit-proxy/page_client-reference-manifest.js +1 -0
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +2 -2
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/model-profiles/page.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/model-profiles/page_client-reference-manifest.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cluster/page.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cluster/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/local-ai-report/page.js +2 -2
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/local-ai-report/page_client-reference-manifest.js +1 -1
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +2 -2
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +1 -1
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +1 -1
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +1 -1
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +1 -1
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovider/page.js +1 -1
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovider/page_client-reference-manifest.js +1 -1
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovidermonitor/page.js +1 -1
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovidermonitor/page_client-reference-manifest.js +1 -1
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalquota/page.js +1 -1
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalquota/page_client-reference-manifest.js +1 -1
  55. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  56. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  57. package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-logs/page.js +1 -1
  58. package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-logs/page_client-reference-manifest.js +1 -1
  59. package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page.js +1 -1
  60. package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page_client-reference-manifest.js +1 -1
  61. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +1 -1
  62. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  63. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  64. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  65. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  66. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  67. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +1 -1
  68. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  69. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +1 -1
  70. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  71. package/app/.next-cli-build/server/app/(dashboard)/dashboard/resource-monitor/page.js +1 -1
  72. package/app/.next-cli-build/server/app/(dashboard)/dashboard/resource-monitor/page_client-reference-manifest.js +1 -1
  73. package/app/.next-cli-build/server/app/(dashboard)/dashboard/routing-topology/page.js +1 -1
  74. package/app/.next-cli-build/server/app/(dashboard)/dashboard/routing-topology/page_client-reference-manifest.js +1 -1
  75. package/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/pricing/page.js +1 -1
  76. package/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  77. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +1 -1
  78. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  79. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +1 -1
  80. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  81. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +1 -1
  82. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  83. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +1 -1
  84. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  85. package/app/.next-cli-build/server/app/_global-error/page.js +1 -1
  86. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  87. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  88. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  89. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  90. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  91. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  92. package/app/.next-cli-build/server/app/_not-found/page.js +1 -1
  93. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  94. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  95. package/app/.next-cli-build/server/app/_not-found.rsc +6 -6
  96. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +6 -6
  97. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +6 -6
  98. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  99. package/app/.next-cli-build/server/app/api/audit-proxy/ca/route.js +18 -0
  100. package/app/.next-cli-build/server/app/api/audit-proxy/ca/route.js.nft.json +1 -0
  101. package/app/.next-cli-build/server/app/api/audit-proxy/ca/route_client-reference-manifest.js +1 -0
  102. package/app/.next-cli-build/server/app/api/audit-proxy/route.js +38 -0
  103. package/app/.next-cli-build/server/app/api/audit-proxy/route.js.nft.json +1 -0
  104. package/app/.next-cli-build/server/app/api/audit-proxy/route_client-reference-manifest.js +1 -0
  105. package/app/.next-cli-build/server/app/api/auth/ldap/test/route.js +1 -1
  106. package/app/.next-cli-build/server/app/api/auth/ldap/test/route.js.nft.json +1 -1
  107. package/app/.next-cli-build/server/app/api/auth/ldap/users/route.js +1 -1
  108. package/app/.next-cli-build/server/app/api/auth/ldap/users/route.js.nft.json +1 -1
  109. package/app/.next-cli-build/server/app/api/auth/login/route.js +2 -2
  110. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  111. package/app/.next-cli-build/server/app/api/auth/logout/route.js +1 -1
  112. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  113. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
  114. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  115. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
  116. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  117. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
  118. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  119. package/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
  120. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  121. package/app/.next-cli-build/server/app/api/auth/view-mode/route.js +1 -1
  122. package/app/.next-cli-build/server/app/api/auth/view-mode/route.js.nft.json +1 -1
  123. package/app/.next-cli-build/server/app/api/branding/[asset]/route.js +1 -1
  124. package/app/.next-cli-build/server/app/api/branding/[asset]/route.js.nft.json +1 -1
  125. package/app/.next-cli-build/server/app/api/branding/route.js +1 -1
  126. package/app/.next-cli-build/server/app/api/branding/route.js.nft.json +1 -1
  127. package/app/.next-cli-build/server/app/api/branding/upload/route.js +1 -1
  128. package/app/.next-cli-build/server/app/api/branding/upload/route.js.nft.json +1 -1
  129. package/app/.next-cli-build/server/app/api/cli-model-profiles/cloud-models/route.js +1 -1
  130. package/app/.next-cli-build/server/app/api/cli-model-profiles/cloud-models/route.js.nft.json +1 -1
  131. package/app/.next-cli-build/server/app/api/cli-model-profiles/route.js +1 -1
  132. package/app/.next-cli-build/server/app/api/cli-model-profiles/route.js.nft.json +1 -1
  133. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +2 -2
  134. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  135. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  136. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  137. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/autostart/route.js +1 -1
  138. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/autostart/route.js.nft.json +1 -1
  139. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/prompt-log-db/route.js +2 -2
  140. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/prompt-log-db/route.js.nft.json +1 -1
  141. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/root-ca/route.js +1 -1
  142. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/root-ca/route.js.nft.json +1 -1
  143. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  144. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  145. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -2
  146. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +1 -1
  147. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  148. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +1 -1
  149. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  150. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
  151. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
  152. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +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 +2 -2
  155. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
  156. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +2 -2
  157. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  158. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +1 -1
  159. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  160. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +1 -1
  161. package/app/.next-cli-build/server/app/api/cli-tools/qwen-settings/route.js +1 -1
  162. package/app/.next-cli-build/server/app/api/cluster/config/route.js +1 -1
  163. package/app/.next-cli-build/server/app/api/cluster/config/route.js.nft.json +1 -1
  164. package/app/.next-cli-build/server/app/api/cluster/heartbeat/route.js +1 -1
  165. package/app/.next-cli-build/server/app/api/cluster/heartbeat/route.js.nft.json +1 -1
  166. package/app/.next-cli-build/server/app/api/cluster/peers/[id]/command/route.js +1 -1
  167. package/app/.next-cli-build/server/app/api/cluster/peers/[id]/command/route.js.nft.json +1 -1
  168. package/app/.next-cli-build/server/app/api/cluster/peers/[id]/route.js +1 -1
  169. package/app/.next-cli-build/server/app/api/cluster/peers/[id]/route.js.nft.json +1 -1
  170. package/app/.next-cli-build/server/app/api/cluster/peers/route.js +1 -1
  171. package/app/.next-cli-build/server/app/api/cluster/peers/route.js.nft.json +1 -1
  172. package/app/.next-cli-build/server/app/api/cluster/snapshot/route.js +2 -2
  173. package/app/.next-cli-build/server/app/api/cluster/snapshot/route.js.nft.json +1 -1
  174. package/app/.next-cli-build/server/app/api/cluster/sync/route.js +1 -1
  175. package/app/.next-cli-build/server/app/api/cluster/sync/route.js.nft.json +1 -1
  176. package/app/.next-cli-build/server/app/api/cluster/test/route.js +1 -1
  177. package/app/.next-cli-build/server/app/api/cluster/test/route.js.nft.json +1 -1
  178. package/app/.next-cli-build/server/app/api/combos/[id]/route.js +2 -2
  179. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  180. package/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  181. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  182. package/app/.next-cli-build/server/app/api/dashboard/ai-power-index/route.js +1 -1
  183. package/app/.next-cli-build/server/app/api/dashboard/ai-power-index/route.js.nft.json +1 -1
  184. package/app/.next-cli-build/server/app/api/dashboard/analytics/ai-models/route.js +1 -1
  185. package/app/.next-cli-build/server/app/api/dashboard/analytics/ai-models/route.js.nft.json +1 -1
  186. package/app/.next-cli-build/server/app/api/dashboard/analytics/analyze/route.js +1 -1
  187. package/app/.next-cli-build/server/app/api/dashboard/analytics/analyze/route.js.nft.json +1 -1
  188. package/app/.next-cli-build/server/app/api/dashboard/analytics/route.js +1 -1
  189. package/app/.next-cli-build/server/app/api/dashboard/analytics/route.js.nft.json +1 -1
  190. package/app/.next-cli-build/server/app/api/dashboard/combos/route.js +1 -1
  191. package/app/.next-cli-build/server/app/api/dashboard/combos/route.js.nft.json +1 -1
  192. package/app/.next-cli-build/server/app/api/dashboard/endpoint/route.js +1 -1
  193. package/app/.next-cli-build/server/app/api/dashboard/endpoint/route.js.nft.json +1 -1
  194. package/app/.next-cli-build/server/app/api/dashboard/local-ai-report/route.js +2 -2
  195. package/app/.next-cli-build/server/app/api/dashboard/local-ai-report/route.js.nft.json +1 -1
  196. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/[id]/route.js +1 -1
  197. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/[id]/route.js.nft.json +1 -1
  198. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/options/route.js +1 -1
  199. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/options/route.js.nft.json +1 -1
  200. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/route.js +1 -1
  201. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/route.js.nft.json +1 -1
  202. package/app/.next-cli-build/server/app/api/dashboard/routing-topology/config/route.js +1 -1
  203. package/app/.next-cli-build/server/app/api/dashboard/routing-topology/config/route.js.nft.json +1 -1
  204. package/app/.next-cli-build/server/app/api/dashboard/routing-topology/live/route.js +1 -1
  205. package/app/.next-cli-build/server/app/api/dashboard/routing-topology/live/route.js.nft.json +1 -1
  206. package/app/.next-cli-build/server/app/api/dashboard/routing-topology/route.js +1 -1
  207. package/app/.next-cli-build/server/app/api/dashboard/routing-topology/route.js.nft.json +1 -1
  208. package/app/.next-cli-build/server/app/api/dashboard/token-saver/route.js +1 -1
  209. package/app/.next-cli-build/server/app/api/dashboard/token-saver/route.js.nft.json +1 -1
  210. package/app/.next-cli-build/server/app/api/health/route.js +1 -1
  211. package/app/.next-cli-build/server/app/api/init/route.js +1 -1
  212. package/app/.next-cli-build/server/app/api/keys/[id]/caveman-test/route.js +1 -1
  213. package/app/.next-cli-build/server/app/api/keys/[id]/caveman-test/route.js.nft.json +1 -1
  214. package/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js +1 -1
  215. package/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js.nft.json +1 -1
  216. package/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
  217. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  218. package/app/.next-cli-build/server/app/api/keys/route.js +2 -2
  219. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  220. package/app/.next-cli-build/server/app/api/locale/route.js +1 -1
  221. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js +1 -1
  222. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  223. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js +2 -2
  224. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  225. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  226. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  227. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  228. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  229. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  230. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  231. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  232. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  233. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
  234. package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  235. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  236. package/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
  237. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  238. package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  239. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  240. package/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
  241. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  242. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  243. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  244. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  245. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  246. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  247. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  248. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  249. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  250. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js +2 -2
  251. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  252. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  253. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  254. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
  255. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  256. package/app/.next-cli-build/server/app/api/oauth/grok-cli/device-code/route.js +1 -1
  257. package/app/.next-cli-build/server/app/api/oauth/grok-cli/device-code/route.js.nft.json +1 -1
  258. package/app/.next-cli-build/server/app/api/oauth/grok-cli/poll/route.js +1 -1
  259. package/app/.next-cli-build/server/app/api/oauth/grok-cli/poll/route.js.nft.json +1 -1
  260. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
  261. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  262. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  263. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  264. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  265. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  266. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  267. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  268. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/api-key-models/route.js +1 -1
  269. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/api-key-models/route.js.nft.json +1 -1
  270. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/import-models/route.js +1 -1
  271. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/import-models/route.js.nft.json +1 -1
  272. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/models/[...routeModel]/route.js +1 -1
  273. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/models/[...routeModel]/route.js.nft.json +1 -1
  274. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/move/route.js +1 -1
  275. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/move/route.js.nft.json +1 -1
  276. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/route.js +1 -1
  277. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/route.js.nft.json +1 -1
  278. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/usage/route.js +1 -1
  279. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/usage/route.js.nft.json +1 -1
  280. package/app/.next-cli-build/server/app/api/personal-cloud-providers/client/route.js +1 -1
  281. package/app/.next-cli-build/server/app/api/personal-cloud-providers/client/route.js.nft.json +1 -1
  282. package/app/.next-cli-build/server/app/api/personal-cloud-providers/monitor/route.js +1 -1
  283. package/app/.next-cli-build/server/app/api/personal-cloud-providers/monitor/route.js.nft.json +1 -1
  284. package/app/.next-cli-build/server/app/api/personal-cloud-providers/permissions/route.js +1 -1
  285. package/app/.next-cli-build/server/app/api/personal-cloud-providers/permissions/route.js.nft.json +1 -1
  286. package/app/.next-cli-build/server/app/api/personal-cloud-providers/route.js +1 -1
  287. package/app/.next-cli-build/server/app/api/personal-cloud-providers/route.js.nft.json +1 -1
  288. package/app/.next-cli-build/server/app/api/personal-cloud-providers/routing/route.js +1 -1
  289. package/app/.next-cli-build/server/app/api/personal-cloud-providers/routing/route.js.nft.json +1 -1
  290. package/app/.next-cli-build/server/app/api/personal-cloud-providers/shares/route.js +1 -1
  291. package/app/.next-cli-build/server/app/api/personal-cloud-providers/shares/route.js.nft.json +1 -1
  292. package/app/.next-cli-build/server/app/api/personal-cloud-providers/visibility/route.js +1 -1
  293. package/app/.next-cli-build/server/app/api/personal-cloud-providers/visibility/route.js.nft.json +1 -1
  294. package/app/.next-cli-build/server/app/api/pricing/catalog/route.js +2 -2
  295. package/app/.next-cli-build/server/app/api/pricing/catalog/route.js.nft.json +1 -1
  296. package/app/.next-cli-build/server/app/api/pricing/recalculate/route.js +1 -1
  297. package/app/.next-cli-build/server/app/api/pricing/recalculate/route.js.nft.json +1 -1
  298. package/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
  299. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  300. package/app/.next-cli-build/server/app/api/provider-health/route.js +1 -1
  301. package/app/.next-cli-build/server/app/api/provider-health/route.js.nft.json +1 -1
  302. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
  303. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  304. package/app/.next-cli-build/server/app/api/provider-nodes/openai-compatible/manage/route.js +1 -1
  305. package/app/.next-cli-build/server/app/api/provider-nodes/openai-compatible/manage/route.js.nft.json +1 -1
  306. package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  307. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  308. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
  309. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  310. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  311. package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  312. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  313. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  314. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  315. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  316. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  317. package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  318. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  319. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js +1 -1
  320. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  321. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  322. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js +1 -1
  323. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  324. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  325. package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  326. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  327. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
  328. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  329. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  330. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  331. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +2 -2
  332. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  333. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
  334. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  335. package/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
  336. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  337. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
  338. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  339. package/app/.next-cli-build/server/app/api/resource-monitor/[id]/route.js +1 -1
  340. package/app/.next-cli-build/server/app/api/resource-monitor/[id]/route.js.nft.json +1 -1
  341. package/app/.next-cli-build/server/app/api/resource-monitor/ai-models/route.js +1 -1
  342. package/app/.next-cli-build/server/app/api/resource-monitor/ai-models/route.js.nft.json +1 -1
  343. package/app/.next-cli-build/server/app/api/resource-monitor/analyze/route.js +2 -2
  344. package/app/.next-cli-build/server/app/api/resource-monitor/analyze/route.js.nft.json +1 -1
  345. package/app/.next-cli-build/server/app/api/resource-monitor/history/route.js +2 -2
  346. package/app/.next-cli-build/server/app/api/resource-monitor/history/route.js.nft.json +1 -1
  347. package/app/.next-cli-build/server/app/api/resource-monitor/route.js +2 -2
  348. package/app/.next-cli-build/server/app/api/resource-monitor/route.js.nft.json +1 -1
  349. package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  350. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  351. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -1
  352. package/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
  353. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  354. package/app/.next-cli-build/server/app/api/settings/route.js +2 -2
  355. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  356. package/app/.next-cli-build/server/app/api/shutdown/route.js +1 -1
  357. package/app/.next-cli-build/server/app/api/tags/route.js +1 -1
  358. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  359. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
  360. package/app/.next-cli-build/server/app/api/translator/load/route.js +1 -1
  361. package/app/.next-cli-build/server/app/api/translator/save/route.js +1 -1
  362. package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  363. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  364. package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  365. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  366. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
  367. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  368. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
  369. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  370. package/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
  371. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  372. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -1
  373. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  374. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  375. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  376. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  377. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  378. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +2 -2
  379. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  380. package/app/.next-cli-build/server/app/api/tunnel/tailscale-login/route.js +1 -1
  381. package/app/.next-cli-build/server/app/api/tunnel/tailscale-login/route.js.nft.json +1 -1
  382. package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/route.js +1 -1
  383. package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/route.js.nft.json +1 -1
  384. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  385. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  386. package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
  387. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  388. package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
  389. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  390. package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  391. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  392. package/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
  393. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  394. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
  395. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  396. package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
  397. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  398. package/app/.next-cli-build/server/app/api/usage/stream/route.js +2 -2
  399. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  400. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  401. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  402. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  403. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  404. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  405. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  406. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
  407. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  408. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  409. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  410. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  411. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
  412. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  413. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -1
  414. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  415. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  416. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
  417. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  418. package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  419. package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  420. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  421. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  422. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  423. package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  424. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  425. package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  426. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  427. package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  428. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  429. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  430. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  431. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  432. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  433. package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  434. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  435. package/app/.next-cli-build/server/app/api/version/restart/route.js +1 -1
  436. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  437. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  438. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  439. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  440. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  441. package/app/.next-cli-build/server/app/callback/page.js +1 -1
  442. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  443. package/app/.next-cli-build/server/app/callback.html +1 -1
  444. package/app/.next-cli-build/server/app/callback.rsc +6 -6
  445. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +6 -6
  446. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
  447. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +6 -6
  448. package/app/.next-cli-build/server/app/dashboard/ai-power-index.html +1 -1
  449. package/app/.next-cli-build/server/app/dashboard/ai-power-index.rsc +7 -7
  450. package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/!KGRhc2hib2FyZCk/dashboard/ai-power-index/__PAGE__.segment.rsc +7 -7
  451. package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/_full.segment.rsc +7 -7
  452. package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/_tree.segment.rsc +2 -2
  453. package/app/.next-cli-build/server/app/dashboard/api-keys.html +1 -1
  454. package/app/.next-cli-build/server/app/dashboard/api-keys.rsc +10 -10
  455. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard/api-keys/__PAGE__.segment.rsc +10 -10
  456. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_full.segment.rsc +10 -10
  457. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_tree.segment.rsc +2 -2
  458. package/app/.next-cli-build/server/app/dashboard/audit-proxy.html +1 -0
  459. package/app/.next-cli-build/server/app/dashboard/audit-proxy.meta +36 -0
  460. package/app/.next-cli-build/server/app/dashboard/audit-proxy.rsc +25 -0
  461. package/app/.next-cli-build/server/app/dashboard/audit-proxy.segments/!KGRhc2hib2FyZCk/dashboard/audit-proxy/__PAGE__.segment.rsc +32 -0
  462. package/app/.next-cli-build/server/app/dashboard/audit-proxy.segments/_full.segment.rsc +25 -0
  463. package/app/.next-cli-build/server/app/dashboard/audit-proxy.segments/_tree.segment.rsc +4 -0
  464. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  465. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +8 -8
  466. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +8 -8
  467. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +8 -8
  468. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
  469. package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.html +1 -1
  470. package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.rsc +8 -8
  471. package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/model-profiles/__PAGE__.segment.rsc +8 -8
  472. package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.segments/_full.segment.rsc +8 -8
  473. package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.segments/_tree.segment.rsc +2 -2
  474. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  475. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +8 -8
  476. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +8 -8
  477. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +8 -8
  478. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  479. package/app/.next-cli-build/server/app/dashboard/cluster.html +1 -1
  480. package/app/.next-cli-build/server/app/dashboard/cluster.rsc +7 -7
  481. package/app/.next-cli-build/server/app/dashboard/cluster.segments/!KGRhc2hib2FyZCk/dashboard/cluster/__PAGE__.segment.rsc +7 -7
  482. package/app/.next-cli-build/server/app/dashboard/cluster.segments/_full.segment.rsc +7 -7
  483. package/app/.next-cli-build/server/app/dashboard/cluster.segments/_tree.segment.rsc +2 -2
  484. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  485. package/app/.next-cli-build/server/app/dashboard/combos.rsc +8 -8
  486. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +8 -8
  487. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +8 -8
  488. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  489. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  490. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +8 -8
  491. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +8 -8
  492. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +8 -8
  493. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  494. package/app/.next-cli-build/server/app/dashboard/local-ai-report.html +1 -1
  495. package/app/.next-cli-build/server/app/dashboard/local-ai-report.rsc +7 -7
  496. package/app/.next-cli-build/server/app/dashboard/local-ai-report.segments/!KGRhc2hib2FyZCk/dashboard/local-ai-report/__PAGE__.segment.rsc +7 -7
  497. package/app/.next-cli-build/server/app/dashboard/local-ai-report.segments/_full.segment.rsc +7 -7
  498. package/app/.next-cli-build/server/app/dashboard/local-ai-report.segments/_tree.segment.rsc +2 -2
  499. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  500. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +8 -8
  501. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +8 -8
  502. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +8 -8
  503. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
  504. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  505. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +8 -8
  506. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +8 -8
  507. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +8 -8
  508. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  509. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  510. package/app/.next-cli-build/server/app/dashboard/profile.rsc +8 -8
  511. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +8 -8
  512. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +8 -8
  513. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  514. package/app/.next-cli-build/server/app/dashboard/prompt-logs.html +1 -1
  515. package/app/.next-cli-build/server/app/dashboard/prompt-logs.rsc +7 -7
  516. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs/__PAGE__.segment.rsc +7 -7
  517. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_full.segment.rsc +7 -7
  518. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_tree.segment.rsc +2 -2
  519. package/app/.next-cli-build/server/app/dashboard/provider-health.html +1 -1
  520. package/app/.next-cli-build/server/app/dashboard/provider-health.rsc +7 -7
  521. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health/__PAGE__.segment.rsc +7 -7
  522. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_full.segment.rsc +7 -7
  523. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_tree.segment.rsc +2 -2
  524. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  525. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +8 -8
  526. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +8 -8
  527. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +8 -8
  528. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  529. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  530. package/app/.next-cli-build/server/app/dashboard/providers.rsc +8 -8
  531. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +8 -8
  532. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +8 -8
  533. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  534. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  535. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +8 -8
  536. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +8 -8
  537. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +8 -8
  538. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  539. package/app/.next-cli-build/server/app/dashboard/quota.html +1 -1
  540. package/app/.next-cli-build/server/app/dashboard/quota.rsc +9 -9
  541. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +9 -9
  542. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +9 -9
  543. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  544. package/app/.next-cli-build/server/app/dashboard/resource-monitor.html +1 -1
  545. package/app/.next-cli-build/server/app/dashboard/resource-monitor.rsc +7 -7
  546. package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/!KGRhc2hib2FyZCk/dashboard/resource-monitor/__PAGE__.segment.rsc +7 -7
  547. package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/_full.segment.rsc +7 -7
  548. package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/_tree.segment.rsc +2 -2
  549. package/app/.next-cli-build/server/app/dashboard/routing-topology.html +1 -1
  550. package/app/.next-cli-build/server/app/dashboard/routing-topology.rsc +7 -7
  551. package/app/.next-cli-build/server/app/dashboard/routing-topology.segments/!KGRhc2hib2FyZCk/dashboard/routing-topology/__PAGE__.segment.rsc +7 -7
  552. package/app/.next-cli-build/server/app/dashboard/routing-topology.segments/_full.segment.rsc +7 -7
  553. package/app/.next-cli-build/server/app/dashboard/routing-topology.segments/_tree.segment.rsc +2 -2
  554. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  555. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +7 -7
  556. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing/__PAGE__.segment.rsc +7 -7
  557. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +7 -7
  558. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  559. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  560. package/app/.next-cli-build/server/app/dashboard/skills.rsc +8 -8
  561. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +8 -8
  562. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +8 -8
  563. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
  564. package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  565. package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +7 -7
  566. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +7 -7
  567. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +7 -7
  568. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +2 -2
  569. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  570. package/app/.next-cli-build/server/app/dashboard/translator.rsc +8 -8
  571. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +8 -8
  572. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +8 -8
  573. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  574. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  575. package/app/.next-cli-build/server/app/dashboard/usage.rsc +8 -8
  576. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +8 -8
  577. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +8 -8
  578. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  579. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  580. package/app/.next-cli-build/server/app/dashboard.rsc +8 -8
  581. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +8 -8
  582. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +8 -8
  583. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  584. package/app/.next-cli-build/server/app/favicon.ico/route.js +1 -1
  585. package/app/.next-cli-build/server/app/index.html +1 -1
  586. package/app/.next-cli-build/server/app/index.rsc +6 -6
  587. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +6 -6
  588. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +6 -6
  589. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
  590. package/app/.next-cli-build/server/app/landing/page.js +1 -1
  591. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  592. package/app/.next-cli-build/server/app/landing.html +1 -1
  593. package/app/.next-cli-build/server/app/landing.rsc +6 -6
  594. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +6 -6
  595. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
  596. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +6 -6
  597. package/app/.next-cli-build/server/app/login/page.js +1 -1
  598. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  599. package/app/.next-cli-build/server/app/login.html +1 -1
  600. package/app/.next-cli-build/server/app/login.rsc +7 -7
  601. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +7 -7
  602. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
  603. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +7 -7
  604. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js +2 -2
  605. package/app/.next-cli-build/server/app/page.js +1 -1
  606. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  607. package/app/.next-cli-build/server/app-paths-manifest.json +10 -7
  608. package/app/.next-cli-build/server/chunks/2566.js +2 -2
  609. package/app/.next-cli-build/server/chunks/4746.js +1 -1
  610. package/app/.next-cli-build/server/chunks/5210.js +3 -3
  611. package/app/.next-cli-build/server/chunks/6108.js +1 -1
  612. package/app/.next-cli-build/server/chunks/6328.js +1 -1
  613. package/app/.next-cli-build/server/chunks/6811.js +1 -1
  614. package/app/.next-cli-build/server/chunks/6992.js +1 -1
  615. package/app/.next-cli-build/server/chunks/7639.js +1 -1
  616. package/app/.next-cli-build/server/chunks/8352.js +2 -2
  617. package/app/.next-cli-build/server/chunks/8946.js +2 -2
  618. package/app/.next-cli-build/server/functions-config-manifest.json +2 -0
  619. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  620. package/app/.next-cli-build/server/middleware.js +1 -1
  621. package/app/.next-cli-build/server/pages/404.html +1 -1
  622. package/app/.next-cli-build/server/pages/500.html +1 -1
  623. package/app/.next-cli-build/server/prefetch-hints.json +24 -0
  624. package/app/.next-cli-build/static/L_h01kCNsdvHq-NfbF9cq/_buildManifest.js +1 -0
  625. package/app/.next-cli-build/static/chunks/{5263-f47fd0ac870aa682.js → 5263-4d0783ef24c50911.js} +1 -1
  626. package/app/.next-cli-build/static/chunks/7050-a706e6827db952b3.js +1 -0
  627. package/app/.next-cli-build/static/chunks/8500-01a63dafd809e317.js +1 -0
  628. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/api-keys/{page-653c30e1cfc826ad.js → page-a979b53a0e095564.js} +1 -1
  629. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/audit-proxy/page-3f3d666087630a55.js +5 -0
  630. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/basic-chat/{page-756885e39ef00c20.js → page-65c05edc9521c8fc.js} +1 -1
  631. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/{page-1b504e40c85200fe.js → page-0193441bced46de6.js} +1 -1
  632. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/model-profiles/{page-08c194e770f52b58.js → page-7844bf2031454b1c.js} +1 -1
  633. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/{page-5ee83aae55928333.js → page-fd337e41209f4b90.js} +1 -1
  634. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/{page-4639baaf9071ffff.js → page-7f613428dc68ec6e.js} +1 -1
  635. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/console-log/{page-c06fac9001a0ff2b.js → page-cc31ec395c8b0116.js} +1 -1
  636. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/endpoint/{page-7e360930d0ecbe91.js → page-fb3cdf0c2e7742b6.js} +1 -1
  637. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/{page-5016b3d6e5295239.js → page-12700e16781ed896.js} +1 -1
  638. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/{page-82071dc65929d1a2.js → page-f1b6603d564d76e3.js} +1 -1
  639. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/{page-db01b84cc209b4f9.js → page-50c464dc6ec10d2f.js} +1 -1
  640. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/web/{page-700b671f2e833c31.js → page-82923ad2695bf65f.js} +1 -1
  641. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/page-054e65328f040baf.js +1 -0
  642. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/{page-7e360930d0ecbe91.js → page-fb3cdf0c2e7742b6.js} +1 -1
  643. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/personalcloudprovider/{layout-83fbe505bfd1d46f.js → layout-b6944f78d9c0e80c.js} +1 -1
  644. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/personalcloudprovider/{page-2e31214e45dd5dd7.js → page-89759854090658c5.js} +1 -1
  645. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/personalcloudprovidermonitor/{page-8e723a2203914aed.js → page-ae4159241f66d5fa.js} +1 -1
  646. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/{page-007560f58f9ba8fd.js → page-6c370ee99bad6882.js} +1 -1
  647. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/{page-8619c99c9e76cc49.js → page-951afd9955093a68.js} +1 -1
  648. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/new/{page-c4bf38103d1317a3.js → page-b264785b8e695d7a.js} +1 -1
  649. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/{page-97e8bd5381f6b48c.js → page-983bcf0c76f9029e.js} +1 -1
  650. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/proxy-pools/{page-44cf1f0d3d57fab2.js → page-fafe439299f350bf.js} +1 -1
  651. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/{page-23ecefa1f8d06ab3.js → page-a05ac739ed8f8677.js} +1 -1
  652. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/skills/{page-a96f92cdf7ccaa92.js → page-59d8a02c13292a77.js} +1 -1
  653. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/translator/{page-dc2a0d576213c24f.js → page-9eaf4a3d688f4243.js} +1 -1
  654. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/{page-e814d95a2e7f4fe2.js → page-b4ab0d22383a8303.js} +1 -1
  655. package/app/.next-cli-build/static/chunks/app/(dashboard)/{layout-bb6fdba0137a6272.js → layout-43b9cc22f69b564c.js} +1 -1
  656. package/app/.next-cli-build/static/chunks/app/_global-error/page-f5efd20f46cedab1.js +1 -0
  657. package/app/.next-cli-build/static/chunks/app/api/audit-proxy/ca/route-f5efd20f46cedab1.js +1 -0
  658. package/app/.next-cli-build/static/chunks/app/api/audit-proxy/route-f5efd20f46cedab1.js +1 -0
  659. package/app/.next-cli-build/static/chunks/app/api/auth/ldap/test/route-f5efd20f46cedab1.js +1 -0
  660. package/app/.next-cli-build/static/chunks/app/api/auth/ldap/users/route-f5efd20f46cedab1.js +1 -0
  661. package/app/.next-cli-build/static/chunks/app/api/auth/login/route-f5efd20f46cedab1.js +1 -0
  662. package/app/.next-cli-build/static/chunks/app/api/auth/logout/route-f5efd20f46cedab1.js +1 -0
  663. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-f5efd20f46cedab1.js +1 -0
  664. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-f5efd20f46cedab1.js +1 -0
  665. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-f5efd20f46cedab1.js +1 -0
  666. package/app/.next-cli-build/static/chunks/app/api/auth/status/route-f5efd20f46cedab1.js +1 -0
  667. package/app/.next-cli-build/static/chunks/app/api/auth/view-mode/route-f5efd20f46cedab1.js +1 -0
  668. package/app/.next-cli-build/static/chunks/app/api/branding/[asset]/route-f5efd20f46cedab1.js +1 -0
  669. package/app/.next-cli-build/static/chunks/app/api/branding/route-f5efd20f46cedab1.js +1 -0
  670. package/app/.next-cli-build/static/chunks/app/api/branding/upload/route-f5efd20f46cedab1.js +1 -0
  671. package/app/.next-cli-build/static/chunks/app/api/cli-model-profiles/cloud-models/route-f5efd20f46cedab1.js +1 -0
  672. package/app/.next-cli-build/static/chunks/app/api/cli-model-profiles/route-f5efd20f46cedab1.js +1 -0
  673. package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-f5efd20f46cedab1.js +1 -0
  674. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-f5efd20f46cedab1.js +1 -0
  675. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/autostart/route-f5efd20f46cedab1.js +1 -0
  676. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/prompt-log-db/route-f5efd20f46cedab1.js +1 -0
  677. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/root-ca/route-f5efd20f46cedab1.js +1 -0
  678. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-f5efd20f46cedab1.js +1 -0
  679. package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-f5efd20f46cedab1.js +1 -0
  680. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-f5efd20f46cedab1.js +1 -0
  681. package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-f5efd20f46cedab1.js +1 -0
  682. package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-f5efd20f46cedab1.js +1 -0
  683. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-f5efd20f46cedab1.js +1 -0
  684. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-f5efd20f46cedab1.js +1 -0
  685. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-f5efd20f46cedab1.js +1 -0
  686. package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-f5efd20f46cedab1.js +1 -0
  687. package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-f5efd20f46cedab1.js +1 -0
  688. package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-f5efd20f46cedab1.js +1 -0
  689. package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-f5efd20f46cedab1.js +1 -0
  690. package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-f5efd20f46cedab1.js +1 -0
  691. package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-f5efd20f46cedab1.js +1 -0
  692. package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-f5efd20f46cedab1.js +1 -0
  693. package/app/.next-cli-build/static/chunks/app/api/cli-tools/qwen-settings/route-f5efd20f46cedab1.js +1 -0
  694. package/app/.next-cli-build/static/chunks/app/api/cluster/config/route-f5efd20f46cedab1.js +1 -0
  695. package/app/.next-cli-build/static/chunks/app/api/cluster/heartbeat/route-f5efd20f46cedab1.js +1 -0
  696. package/app/.next-cli-build/static/chunks/app/api/cluster/peers/[id]/command/route-f5efd20f46cedab1.js +1 -0
  697. package/app/.next-cli-build/static/chunks/app/api/cluster/peers/[id]/route-f5efd20f46cedab1.js +1 -0
  698. package/app/.next-cli-build/static/chunks/app/api/cluster/peers/route-f5efd20f46cedab1.js +1 -0
  699. package/app/.next-cli-build/static/chunks/app/api/cluster/snapshot/route-f5efd20f46cedab1.js +1 -0
  700. package/app/.next-cli-build/static/chunks/app/api/cluster/sync/route-f5efd20f46cedab1.js +1 -0
  701. package/app/.next-cli-build/static/chunks/app/api/cluster/test/route-f5efd20f46cedab1.js +1 -0
  702. package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-f5efd20f46cedab1.js +1 -0
  703. package/app/.next-cli-build/static/chunks/app/api/combos/route-f5efd20f46cedab1.js +1 -0
  704. package/app/.next-cli-build/static/chunks/app/api/dashboard/ai-power-index/route-f5efd20f46cedab1.js +1 -0
  705. package/app/.next-cli-build/static/chunks/app/api/dashboard/analytics/ai-models/route-f5efd20f46cedab1.js +1 -0
  706. package/app/.next-cli-build/static/chunks/app/api/dashboard/analytics/analyze/route-f5efd20f46cedab1.js +1 -0
  707. package/app/.next-cli-build/static/chunks/app/api/dashboard/analytics/route-f5efd20f46cedab1.js +1 -0
  708. package/app/.next-cli-build/static/chunks/app/api/dashboard/combos/route-f5efd20f46cedab1.js +1 -0
  709. package/app/.next-cli-build/static/chunks/app/api/dashboard/endpoint/route-f5efd20f46cedab1.js +1 -0
  710. package/app/.next-cli-build/static/chunks/app/api/dashboard/local-ai-report/route-f5efd20f46cedab1.js +1 -0
  711. package/app/.next-cli-build/static/chunks/app/api/dashboard/prompt-logs/[id]/route-f5efd20f46cedab1.js +1 -0
  712. package/app/.next-cli-build/static/chunks/app/api/dashboard/prompt-logs/options/route-f5efd20f46cedab1.js +1 -0
  713. package/app/.next-cli-build/static/chunks/app/api/dashboard/prompt-logs/route-f5efd20f46cedab1.js +1 -0
  714. package/app/.next-cli-build/static/chunks/app/api/dashboard/routing-topology/config/route-f5efd20f46cedab1.js +1 -0
  715. package/app/.next-cli-build/static/chunks/app/api/dashboard/routing-topology/live/route-f5efd20f46cedab1.js +1 -0
  716. package/app/.next-cli-build/static/chunks/app/api/dashboard/routing-topology/route-f5efd20f46cedab1.js +1 -0
  717. package/app/.next-cli-build/static/chunks/app/api/dashboard/token-saver/route-f5efd20f46cedab1.js +1 -0
  718. package/app/.next-cli-build/static/chunks/app/api/health/route-f5efd20f46cedab1.js +1 -0
  719. package/app/.next-cli-build/static/chunks/app/api/init/route-f5efd20f46cedab1.js +1 -0
  720. package/app/.next-cli-build/static/chunks/app/api/keys/[id]/caveman-test/route-f5efd20f46cedab1.js +1 -0
  721. package/app/.next-cli-build/static/chunks/app/api/keys/[id]/rotate/route-f5efd20f46cedab1.js +1 -0
  722. package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-f5efd20f46cedab1.js +1 -0
  723. package/app/.next-cli-build/static/chunks/app/api/keys/route-f5efd20f46cedab1.js +1 -0
  724. package/app/.next-cli-build/static/chunks/app/api/locale/route-f5efd20f46cedab1.js +1 -0
  725. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-f5efd20f46cedab1.js +1 -0
  726. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-f5efd20f46cedab1.js +1 -0
  727. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-f5efd20f46cedab1.js +1 -0
  728. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-f5efd20f46cedab1.js +1 -0
  729. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-f5efd20f46cedab1.js +1 -0
  730. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-f5efd20f46cedab1.js +1 -0
  731. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-f5efd20f46cedab1.js +1 -0
  732. package/app/.next-cli-build/static/chunks/app/api/models/alias/route-f5efd20f46cedab1.js +1 -0
  733. package/app/.next-cli-build/static/chunks/app/api/models/availability/route-f5efd20f46cedab1.js +1 -0
  734. package/app/.next-cli-build/static/chunks/app/api/models/custom/route-f5efd20f46cedab1.js +1 -0
  735. package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-f5efd20f46cedab1.js +1 -0
  736. package/app/.next-cli-build/static/chunks/app/api/models/route-f5efd20f46cedab1.js +1 -0
  737. package/app/.next-cli-build/static/chunks/app/api/models/test/route-f5efd20f46cedab1.js +1 -0
  738. package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-f5efd20f46cedab1.js +1 -0
  739. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-f5efd20f46cedab1.js +1 -0
  740. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-f5efd20f46cedab1.js +1 -0
  741. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-f5efd20f46cedab1.js +1 -0
  742. package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-f5efd20f46cedab1.js +1 -0
  743. package/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/device-code/route-f5efd20f46cedab1.js +1 -0
  744. package/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/poll/route-f5efd20f46cedab1.js +1 -0
  745. package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-f5efd20f46cedab1.js +1 -0
  746. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-f5efd20f46cedab1.js +1 -0
  747. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-f5efd20f46cedab1.js +1 -0
  748. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-f5efd20f46cedab1.js +1 -0
  749. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-f5efd20f46cedab1.js +1 -0
  750. package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/api-key-models/route-f5efd20f46cedab1.js +1 -0
  751. package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/import-models/route-f5efd20f46cedab1.js +1 -0
  752. package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/models/[...routeModel]/route-f5efd20f46cedab1.js +1 -0
  753. package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/move/route-f5efd20f46cedab1.js +1 -0
  754. package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/route-f5efd20f46cedab1.js +1 -0
  755. package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/usage/route-f5efd20f46cedab1.js +1 -0
  756. package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/client/route-f5efd20f46cedab1.js +1 -0
  757. package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/monitor/route-f5efd20f46cedab1.js +1 -0
  758. package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/permissions/route-f5efd20f46cedab1.js +1 -0
  759. package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/route-f5efd20f46cedab1.js +1 -0
  760. package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/routing/route-f5efd20f46cedab1.js +1 -0
  761. package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/shares/route-f5efd20f46cedab1.js +1 -0
  762. package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/visibility/route-f5efd20f46cedab1.js +1 -0
  763. package/app/.next-cli-build/static/chunks/app/api/pricing/catalog/route-f5efd20f46cedab1.js +1 -0
  764. package/app/.next-cli-build/static/chunks/app/api/pricing/recalculate/route-f5efd20f46cedab1.js +1 -0
  765. package/app/.next-cli-build/static/chunks/app/api/pricing/route-f5efd20f46cedab1.js +1 -0
  766. package/app/.next-cli-build/static/chunks/app/api/provider-health/route-f5efd20f46cedab1.js +1 -0
  767. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-f5efd20f46cedab1.js +1 -0
  768. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/openai-compatible/manage/route-f5efd20f46cedab1.js +1 -0
  769. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-f5efd20f46cedab1.js +1 -0
  770. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-f5efd20f46cedab1.js +1 -0
  771. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-f5efd20f46cedab1.js +1 -0
  772. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-f5efd20f46cedab1.js +1 -0
  773. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-f5efd20f46cedab1.js +1 -0
  774. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-f5efd20f46cedab1.js +1 -0
  775. package/app/.next-cli-build/static/chunks/app/api/providers/client/route-f5efd20f46cedab1.js +1 -0
  776. package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-f5efd20f46cedab1.js +1 -0
  777. package/app/.next-cli-build/static/chunks/app/api/providers/route-f5efd20f46cedab1.js +1 -0
  778. package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-f5efd20f46cedab1.js +1 -0
  779. package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-f5efd20f46cedab1.js +1 -0
  780. package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-f5efd20f46cedab1.js +1 -0
  781. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-f5efd20f46cedab1.js +1 -0
  782. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-f5efd20f46cedab1.js +1 -0
  783. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-f5efd20f46cedab1.js +1 -0
  784. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-f5efd20f46cedab1.js +1 -0
  785. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-f5efd20f46cedab1.js +1 -0
  786. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-f5efd20f46cedab1.js +1 -0
  787. package/app/.next-cli-build/static/chunks/app/api/resource-monitor/[id]/route-f5efd20f46cedab1.js +1 -0
  788. package/app/.next-cli-build/static/chunks/app/api/resource-monitor/ai-models/route-f5efd20f46cedab1.js +1 -0
  789. package/app/.next-cli-build/static/chunks/app/api/resource-monitor/analyze/route-f5efd20f46cedab1.js +1 -0
  790. package/app/.next-cli-build/static/chunks/app/api/resource-monitor/history/route-f5efd20f46cedab1.js +1 -0
  791. package/app/.next-cli-build/static/chunks/app/api/resource-monitor/route-f5efd20f46cedab1.js +1 -0
  792. package/app/.next-cli-build/static/chunks/app/api/settings/database/route-f5efd20f46cedab1.js +1 -0
  793. package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-f5efd20f46cedab1.js +1 -0
  794. package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-f5efd20f46cedab1.js +1 -0
  795. package/app/.next-cli-build/static/chunks/app/api/settings/route-f5efd20f46cedab1.js +1 -0
  796. package/app/.next-cli-build/static/chunks/app/api/shutdown/route-f5efd20f46cedab1.js +1 -0
  797. package/app/.next-cli-build/static/chunks/app/api/tags/route-f5efd20f46cedab1.js +1 -0
  798. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-f5efd20f46cedab1.js +1 -0
  799. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-f5efd20f46cedab1.js +1 -0
  800. package/app/.next-cli-build/static/chunks/app/api/translator/load/route-f5efd20f46cedab1.js +1 -0
  801. package/app/.next-cli-build/static/chunks/app/api/translator/save/route-f5efd20f46cedab1.js +1 -0
  802. package/app/.next-cli-build/static/chunks/app/api/translator/send/route-f5efd20f46cedab1.js +1 -0
  803. package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-f5efd20f46cedab1.js +1 -0
  804. package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-f5efd20f46cedab1.js +1 -0
  805. package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-f5efd20f46cedab1.js +1 -0
  806. package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-f5efd20f46cedab1.js +1 -0
  807. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-f5efd20f46cedab1.js +1 -0
  808. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-f5efd20f46cedab1.js +1 -0
  809. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-f5efd20f46cedab1.js +1 -0
  810. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-f5efd20f46cedab1.js +1 -0
  811. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-login/route-f5efd20f46cedab1.js +1 -0
  812. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-start-daemon/route-f5efd20f46cedab1.js +1 -0
  813. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-f5efd20f46cedab1.js +1 -0
  814. package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-f5efd20f46cedab1.js +1 -0
  815. package/app/.next-cli-build/static/chunks/app/api/usage/history/route-f5efd20f46cedab1.js +1 -0
  816. package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-f5efd20f46cedab1.js +1 -0
  817. package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-f5efd20f46cedab1.js +1 -0
  818. package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-f5efd20f46cedab1.js +1 -0
  819. package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-f5efd20f46cedab1.js +1 -0
  820. package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-f5efd20f46cedab1.js +1 -0
  821. package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-f5efd20f46cedab1.js +1 -0
  822. package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-f5efd20f46cedab1.js +1 -0
  823. package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-f5efd20f46cedab1.js +1 -0
  824. package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-f5efd20f46cedab1.js +1 -0
  825. package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-f5efd20f46cedab1.js +1 -0
  826. package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-f5efd20f46cedab1.js +1 -0
  827. package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-f5efd20f46cedab1.js +1 -0
  828. package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-f5efd20f46cedab1.js +1 -0
  829. package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-f5efd20f46cedab1.js +1 -0
  830. package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-f5efd20f46cedab1.js +1 -0
  831. package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-f5efd20f46cedab1.js +1 -0
  832. package/app/.next-cli-build/static/chunks/app/api/v1/models/route-f5efd20f46cedab1.js +1 -0
  833. package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-f5efd20f46cedab1.js +1 -0
  834. package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-f5efd20f46cedab1.js +1 -0
  835. package/app/.next-cli-build/static/chunks/app/api/v1/route-f5efd20f46cedab1.js +1 -0
  836. package/app/.next-cli-build/static/chunks/app/api/v1/search/route-f5efd20f46cedab1.js +1 -0
  837. package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-f5efd20f46cedab1.js +1 -0
  838. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-f5efd20f46cedab1.js +1 -0
  839. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-f5efd20f46cedab1.js +1 -0
  840. package/app/.next-cli-build/static/chunks/app/api/version/restart/route-f5efd20f46cedab1.js +1 -0
  841. package/app/.next-cli-build/static/chunks/app/api/version/route-f5efd20f46cedab1.js +1 -0
  842. package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-f5efd20f46cedab1.js +1 -0
  843. package/app/.next-cli-build/static/chunks/app/api/version/update/route-f5efd20f46cedab1.js +1 -0
  844. package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-f5efd20f46cedab1.js +1 -0
  845. package/app/.next-cli-build/static/chunks/app/page-f5efd20f46cedab1.js +1 -0
  846. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-f5efd20f46cedab1.js +1 -0
  847. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-f5efd20f46cedab1.js +1 -0
  848. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-f5efd20f46cedab1.js +1 -0
  849. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-f5efd20f46cedab1.js +1 -0
  850. package/app/.next-cli-build/static/css/150584b47405f066.css +1 -0
  851. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/{upgrade-5.3.41-to-5.3.43-5.3.43-20260822-131146 → upgrade-5.3.46-to-5.3.47-5.3.47-20260822-172255}/data.sqlite +0 -0
  852. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite +0 -0
  853. package/app/package.json +1 -1
  854. package/package.json +1 -1
  855. package/app/.next-cli-build/static/MPowTRWuD2XApM5Ao4-yp/_buildManifest.js +0 -1
  856. package/app/.next-cli-build/static/chunks/1997-ec155690a9441b82.js +0 -1
  857. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/page-df910327664404cc.js +0 -1
  858. package/app/.next-cli-build/static/chunks/app/_global-error/page-1ae9897b4a00731e.js +0 -1
  859. package/app/.next-cli-build/static/chunks/app/api/auth/ldap/test/route-1ae9897b4a00731e.js +0 -1
  860. package/app/.next-cli-build/static/chunks/app/api/auth/ldap/users/route-1ae9897b4a00731e.js +0 -1
  861. package/app/.next-cli-build/static/chunks/app/api/auth/login/route-1ae9897b4a00731e.js +0 -1
  862. package/app/.next-cli-build/static/chunks/app/api/auth/logout/route-1ae9897b4a00731e.js +0 -1
  863. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-1ae9897b4a00731e.js +0 -1
  864. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-1ae9897b4a00731e.js +0 -1
  865. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-1ae9897b4a00731e.js +0 -1
  866. package/app/.next-cli-build/static/chunks/app/api/auth/status/route-1ae9897b4a00731e.js +0 -1
  867. package/app/.next-cli-build/static/chunks/app/api/auth/view-mode/route-1ae9897b4a00731e.js +0 -1
  868. package/app/.next-cli-build/static/chunks/app/api/branding/[asset]/route-1ae9897b4a00731e.js +0 -1
  869. package/app/.next-cli-build/static/chunks/app/api/branding/route-1ae9897b4a00731e.js +0 -1
  870. package/app/.next-cli-build/static/chunks/app/api/branding/upload/route-1ae9897b4a00731e.js +0 -1
  871. package/app/.next-cli-build/static/chunks/app/api/cli-model-profiles/cloud-models/route-1ae9897b4a00731e.js +0 -1
  872. package/app/.next-cli-build/static/chunks/app/api/cli-model-profiles/route-1ae9897b4a00731e.js +0 -1
  873. package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-1ae9897b4a00731e.js +0 -1
  874. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-1ae9897b4a00731e.js +0 -1
  875. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/autostart/route-1ae9897b4a00731e.js +0 -1
  876. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/prompt-log-db/route-1ae9897b4a00731e.js +0 -1
  877. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/root-ca/route-1ae9897b4a00731e.js +0 -1
  878. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-1ae9897b4a00731e.js +0 -1
  879. package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-1ae9897b4a00731e.js +0 -1
  880. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-1ae9897b4a00731e.js +0 -1
  881. package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-1ae9897b4a00731e.js +0 -1
  882. package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-1ae9897b4a00731e.js +0 -1
  883. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-1ae9897b4a00731e.js +0 -1
  884. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-1ae9897b4a00731e.js +0 -1
  885. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-1ae9897b4a00731e.js +0 -1
  886. package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-1ae9897b4a00731e.js +0 -1
  887. package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-1ae9897b4a00731e.js +0 -1
  888. package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-1ae9897b4a00731e.js +0 -1
  889. package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-1ae9897b4a00731e.js +0 -1
  890. package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-1ae9897b4a00731e.js +0 -1
  891. package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-1ae9897b4a00731e.js +0 -1
  892. package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-1ae9897b4a00731e.js +0 -1
  893. package/app/.next-cli-build/static/chunks/app/api/cli-tools/qwen-settings/route-1ae9897b4a00731e.js +0 -1
  894. package/app/.next-cli-build/static/chunks/app/api/cluster/config/route-1ae9897b4a00731e.js +0 -1
  895. package/app/.next-cli-build/static/chunks/app/api/cluster/heartbeat/route-1ae9897b4a00731e.js +0 -1
  896. package/app/.next-cli-build/static/chunks/app/api/cluster/peers/[id]/command/route-1ae9897b4a00731e.js +0 -1
  897. package/app/.next-cli-build/static/chunks/app/api/cluster/peers/[id]/route-1ae9897b4a00731e.js +0 -1
  898. package/app/.next-cli-build/static/chunks/app/api/cluster/peers/route-1ae9897b4a00731e.js +0 -1
  899. package/app/.next-cli-build/static/chunks/app/api/cluster/snapshot/route-1ae9897b4a00731e.js +0 -1
  900. package/app/.next-cli-build/static/chunks/app/api/cluster/sync/route-1ae9897b4a00731e.js +0 -1
  901. package/app/.next-cli-build/static/chunks/app/api/cluster/test/route-1ae9897b4a00731e.js +0 -1
  902. package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-1ae9897b4a00731e.js +0 -1
  903. package/app/.next-cli-build/static/chunks/app/api/combos/route-1ae9897b4a00731e.js +0 -1
  904. package/app/.next-cli-build/static/chunks/app/api/dashboard/ai-power-index/route-1ae9897b4a00731e.js +0 -1
  905. package/app/.next-cli-build/static/chunks/app/api/dashboard/analytics/ai-models/route-1ae9897b4a00731e.js +0 -1
  906. package/app/.next-cli-build/static/chunks/app/api/dashboard/analytics/analyze/route-1ae9897b4a00731e.js +0 -1
  907. package/app/.next-cli-build/static/chunks/app/api/dashboard/analytics/route-1ae9897b4a00731e.js +0 -1
  908. package/app/.next-cli-build/static/chunks/app/api/dashboard/combos/route-1ae9897b4a00731e.js +0 -1
  909. package/app/.next-cli-build/static/chunks/app/api/dashboard/endpoint/route-1ae9897b4a00731e.js +0 -1
  910. package/app/.next-cli-build/static/chunks/app/api/dashboard/local-ai-report/route-1ae9897b4a00731e.js +0 -1
  911. package/app/.next-cli-build/static/chunks/app/api/dashboard/prompt-logs/[id]/route-1ae9897b4a00731e.js +0 -1
  912. package/app/.next-cli-build/static/chunks/app/api/dashboard/prompt-logs/options/route-1ae9897b4a00731e.js +0 -1
  913. package/app/.next-cli-build/static/chunks/app/api/dashboard/prompt-logs/route-1ae9897b4a00731e.js +0 -1
  914. package/app/.next-cli-build/static/chunks/app/api/dashboard/routing-topology/config/route-1ae9897b4a00731e.js +0 -1
  915. package/app/.next-cli-build/static/chunks/app/api/dashboard/routing-topology/live/route-1ae9897b4a00731e.js +0 -1
  916. package/app/.next-cli-build/static/chunks/app/api/dashboard/routing-topology/route-1ae9897b4a00731e.js +0 -1
  917. package/app/.next-cli-build/static/chunks/app/api/dashboard/token-saver/route-1ae9897b4a00731e.js +0 -1
  918. package/app/.next-cli-build/static/chunks/app/api/health/route-1ae9897b4a00731e.js +0 -1
  919. package/app/.next-cli-build/static/chunks/app/api/init/route-1ae9897b4a00731e.js +0 -1
  920. package/app/.next-cli-build/static/chunks/app/api/keys/[id]/caveman-test/route-1ae9897b4a00731e.js +0 -1
  921. package/app/.next-cli-build/static/chunks/app/api/keys/[id]/rotate/route-1ae9897b4a00731e.js +0 -1
  922. package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-1ae9897b4a00731e.js +0 -1
  923. package/app/.next-cli-build/static/chunks/app/api/keys/route-1ae9897b4a00731e.js +0 -1
  924. package/app/.next-cli-build/static/chunks/app/api/locale/route-1ae9897b4a00731e.js +0 -1
  925. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-1ae9897b4a00731e.js +0 -1
  926. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-1ae9897b4a00731e.js +0 -1
  927. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-1ae9897b4a00731e.js +0 -1
  928. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-1ae9897b4a00731e.js +0 -1
  929. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-1ae9897b4a00731e.js +0 -1
  930. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-1ae9897b4a00731e.js +0 -1
  931. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-1ae9897b4a00731e.js +0 -1
  932. package/app/.next-cli-build/static/chunks/app/api/models/alias/route-1ae9897b4a00731e.js +0 -1
  933. package/app/.next-cli-build/static/chunks/app/api/models/availability/route-1ae9897b4a00731e.js +0 -1
  934. package/app/.next-cli-build/static/chunks/app/api/models/custom/route-1ae9897b4a00731e.js +0 -1
  935. package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-1ae9897b4a00731e.js +0 -1
  936. package/app/.next-cli-build/static/chunks/app/api/models/route-1ae9897b4a00731e.js +0 -1
  937. package/app/.next-cli-build/static/chunks/app/api/models/test/route-1ae9897b4a00731e.js +0 -1
  938. package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-1ae9897b4a00731e.js +0 -1
  939. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-1ae9897b4a00731e.js +0 -1
  940. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-1ae9897b4a00731e.js +0 -1
  941. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-1ae9897b4a00731e.js +0 -1
  942. package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-1ae9897b4a00731e.js +0 -1
  943. package/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/device-code/route-1ae9897b4a00731e.js +0 -1
  944. package/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/poll/route-1ae9897b4a00731e.js +0 -1
  945. package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-1ae9897b4a00731e.js +0 -1
  946. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-1ae9897b4a00731e.js +0 -1
  947. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-1ae9897b4a00731e.js +0 -1
  948. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-1ae9897b4a00731e.js +0 -1
  949. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-1ae9897b4a00731e.js +0 -1
  950. package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/api-key-models/route-1ae9897b4a00731e.js +0 -1
  951. package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/import-models/route-1ae9897b4a00731e.js +0 -1
  952. package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/models/[...routeModel]/route-1ae9897b4a00731e.js +0 -1
  953. package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/move/route-1ae9897b4a00731e.js +0 -1
  954. package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/route-1ae9897b4a00731e.js +0 -1
  955. package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/usage/route-1ae9897b4a00731e.js +0 -1
  956. package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/client/route-1ae9897b4a00731e.js +0 -1
  957. package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/monitor/route-1ae9897b4a00731e.js +0 -1
  958. package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/permissions/route-1ae9897b4a00731e.js +0 -1
  959. package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/route-1ae9897b4a00731e.js +0 -1
  960. package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/routing/route-1ae9897b4a00731e.js +0 -1
  961. package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/shares/route-1ae9897b4a00731e.js +0 -1
  962. package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/visibility/route-1ae9897b4a00731e.js +0 -1
  963. package/app/.next-cli-build/static/chunks/app/api/pricing/catalog/route-1ae9897b4a00731e.js +0 -1
  964. package/app/.next-cli-build/static/chunks/app/api/pricing/recalculate/route-1ae9897b4a00731e.js +0 -1
  965. package/app/.next-cli-build/static/chunks/app/api/pricing/route-1ae9897b4a00731e.js +0 -1
  966. package/app/.next-cli-build/static/chunks/app/api/provider-health/route-1ae9897b4a00731e.js +0 -1
  967. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-1ae9897b4a00731e.js +0 -1
  968. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/openai-compatible/manage/route-1ae9897b4a00731e.js +0 -1
  969. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-1ae9897b4a00731e.js +0 -1
  970. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-1ae9897b4a00731e.js +0 -1
  971. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-1ae9897b4a00731e.js +0 -1
  972. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-1ae9897b4a00731e.js +0 -1
  973. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-1ae9897b4a00731e.js +0 -1
  974. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-1ae9897b4a00731e.js +0 -1
  975. package/app/.next-cli-build/static/chunks/app/api/providers/client/route-1ae9897b4a00731e.js +0 -1
  976. package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-1ae9897b4a00731e.js +0 -1
  977. package/app/.next-cli-build/static/chunks/app/api/providers/route-1ae9897b4a00731e.js +0 -1
  978. package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-1ae9897b4a00731e.js +0 -1
  979. package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-1ae9897b4a00731e.js +0 -1
  980. package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-1ae9897b4a00731e.js +0 -1
  981. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-1ae9897b4a00731e.js +0 -1
  982. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-1ae9897b4a00731e.js +0 -1
  983. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-1ae9897b4a00731e.js +0 -1
  984. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-1ae9897b4a00731e.js +0 -1
  985. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-1ae9897b4a00731e.js +0 -1
  986. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-1ae9897b4a00731e.js +0 -1
  987. package/app/.next-cli-build/static/chunks/app/api/resource-monitor/[id]/route-1ae9897b4a00731e.js +0 -1
  988. package/app/.next-cli-build/static/chunks/app/api/resource-monitor/ai-models/route-1ae9897b4a00731e.js +0 -1
  989. package/app/.next-cli-build/static/chunks/app/api/resource-monitor/analyze/route-1ae9897b4a00731e.js +0 -1
  990. package/app/.next-cli-build/static/chunks/app/api/resource-monitor/history/route-1ae9897b4a00731e.js +0 -1
  991. package/app/.next-cli-build/static/chunks/app/api/resource-monitor/route-1ae9897b4a00731e.js +0 -1
  992. package/app/.next-cli-build/static/chunks/app/api/settings/database/route-1ae9897b4a00731e.js +0 -1
  993. package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-1ae9897b4a00731e.js +0 -1
  994. package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-1ae9897b4a00731e.js +0 -1
  995. package/app/.next-cli-build/static/chunks/app/api/settings/route-1ae9897b4a00731e.js +0 -1
  996. package/app/.next-cli-build/static/chunks/app/api/shutdown/route-1ae9897b4a00731e.js +0 -1
  997. package/app/.next-cli-build/static/chunks/app/api/tags/route-1ae9897b4a00731e.js +0 -1
  998. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-1ae9897b4a00731e.js +0 -1
  999. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-1ae9897b4a00731e.js +0 -1
  1000. package/app/.next-cli-build/static/chunks/app/api/translator/load/route-1ae9897b4a00731e.js +0 -1
  1001. package/app/.next-cli-build/static/chunks/app/api/translator/save/route-1ae9897b4a00731e.js +0 -1
  1002. package/app/.next-cli-build/static/chunks/app/api/translator/send/route-1ae9897b4a00731e.js +0 -1
  1003. package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-1ae9897b4a00731e.js +0 -1
  1004. package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-1ae9897b4a00731e.js +0 -1
  1005. package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-1ae9897b4a00731e.js +0 -1
  1006. package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-1ae9897b4a00731e.js +0 -1
  1007. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-1ae9897b4a00731e.js +0 -1
  1008. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-1ae9897b4a00731e.js +0 -1
  1009. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-1ae9897b4a00731e.js +0 -1
  1010. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-1ae9897b4a00731e.js +0 -1
  1011. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-login/route-1ae9897b4a00731e.js +0 -1
  1012. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-start-daemon/route-1ae9897b4a00731e.js +0 -1
  1013. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-1ae9897b4a00731e.js +0 -1
  1014. package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-1ae9897b4a00731e.js +0 -1
  1015. package/app/.next-cli-build/static/chunks/app/api/usage/history/route-1ae9897b4a00731e.js +0 -1
  1016. package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-1ae9897b4a00731e.js +0 -1
  1017. package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-1ae9897b4a00731e.js +0 -1
  1018. package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-1ae9897b4a00731e.js +0 -1
  1019. package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-1ae9897b4a00731e.js +0 -1
  1020. package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-1ae9897b4a00731e.js +0 -1
  1021. package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-1ae9897b4a00731e.js +0 -1
  1022. package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-1ae9897b4a00731e.js +0 -1
  1023. package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-1ae9897b4a00731e.js +0 -1
  1024. package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-1ae9897b4a00731e.js +0 -1
  1025. package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-1ae9897b4a00731e.js +0 -1
  1026. package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-1ae9897b4a00731e.js +0 -1
  1027. package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-1ae9897b4a00731e.js +0 -1
  1028. package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-1ae9897b4a00731e.js +0 -1
  1029. package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-1ae9897b4a00731e.js +0 -1
  1030. package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-1ae9897b4a00731e.js +0 -1
  1031. package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-1ae9897b4a00731e.js +0 -1
  1032. package/app/.next-cli-build/static/chunks/app/api/v1/models/route-1ae9897b4a00731e.js +0 -1
  1033. package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-1ae9897b4a00731e.js +0 -1
  1034. package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-1ae9897b4a00731e.js +0 -1
  1035. package/app/.next-cli-build/static/chunks/app/api/v1/route-1ae9897b4a00731e.js +0 -1
  1036. package/app/.next-cli-build/static/chunks/app/api/v1/search/route-1ae9897b4a00731e.js +0 -1
  1037. package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-1ae9897b4a00731e.js +0 -1
  1038. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-1ae9897b4a00731e.js +0 -1
  1039. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-1ae9897b4a00731e.js +0 -1
  1040. package/app/.next-cli-build/static/chunks/app/api/version/restart/route-1ae9897b4a00731e.js +0 -1
  1041. package/app/.next-cli-build/static/chunks/app/api/version/route-1ae9897b4a00731e.js +0 -1
  1042. package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-1ae9897b4a00731e.js +0 -1
  1043. package/app/.next-cli-build/static/chunks/app/api/version/update/route-1ae9897b4a00731e.js +0 -1
  1044. package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-1ae9897b4a00731e.js +0 -1
  1045. package/app/.next-cli-build/static/chunks/app/page-1ae9897b4a00731e.js +0 -1
  1046. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-1ae9897b4a00731e.js +0 -1
  1047. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-1ae9897b4a00731e.js +0 -1
  1048. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-1ae9897b4a00731e.js +0 -1
  1049. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-1ae9897b4a00731e.js +0 -1
  1050. package/app/.next-cli-build/static/css/b5abfe9c2085ba8e.css +0 -1
  1051. /package/app/.next-cli-build/static/{MPowTRWuD2XApM5Ao4-yp → L_h01kCNsdvHq-NfbF9cq}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- (()=>{var a={};a.id=3649,a.ids=[3649],a.modules={1932:a=>{"use strict";a.exports=require("url")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},4573:a=>{"use strict";a.exports=require("node:buffer")},8128:a=>{"use strict";a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},17419:(a,b,c)=>{Promise.resolve().then(c.bind(c,35447))},18513:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>cc});var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w=c(48249),x=c(67484),y=c.n(x),z=c(74429);let A="u">typeof window&&void 0!==window.document&&void 0!==window.document.createElement;function B(a){let b=Object.prototype.toString.call(a);return"[object Window]"===b||"[object global]"===b}function C(a){return"nodeType"in a}function D(a){var b,c;return a?B(a)?a:C(a)&&null!=(b=null==(c=a.ownerDocument)?void 0:c.defaultView)?b:window:window}function E(a){let{Document:b}=D(a);return a instanceof b}function F(a){return!B(a)&&a instanceof D(a).HTMLElement}function G(a){return a instanceof D(a).SVGElement}function H(a){return a?B(a)?a.document:C(a)?E(a)?a:F(a)||G(a)?a.ownerDocument:document:document:document}let I=A?x.useLayoutEffect:x.useEffect;function J(a){let b=(0,x.useRef)(a);return I(()=>{b.current=a}),(0,x.useCallback)(function(){for(var a=arguments.length,c=Array(a),d=0;d<a;d++)c[d]=arguments[d];return null==b.current?void 0:b.current(...c)},[])}function K(a,b){void 0===b&&(b=[a]);let c=(0,x.useRef)(a);return I(()=>{c.current!==a&&(c.current=a)},b),c}function L(a,b){let c=(0,x.useRef)();return(0,x.useMemo)(()=>{let b=a(c.current);return c.current=b,b},[...b])}function M(a){let b=J(a),c=(0,x.useRef)(null),d=(0,x.useCallback)(a=>{a!==c.current&&(null==b||b(a,c.current)),c.current=a},[]);return[c,d]}function N(a){let b=(0,x.useRef)();return(0,x.useEffect)(()=>{b.current=a},[a]),b.current}let O={};function P(a,b){return(0,x.useMemo)(()=>{if(b)return b;let c=null==O[a]?0:O[a]+1;return O[a]=c,a+"-"+c},[a,b])}function Q(a){return function(b){for(var c=arguments.length,d=Array(c>1?c-1:0),e=1;e<c;e++)d[e-1]=arguments[e];return d.reduce((b,c)=>{for(let[d,e]of Object.entries(c)){let c=b[d];null!=c&&(b[d]=c+a*e)}return b},{...b})}}let R=Q(1),S=Q(-1);function T(a){if(!a)return!1;let{KeyboardEvent:b}=D(a.target);return b&&a instanceof b}function U(a){if(function(a){if(!a)return!1;let{TouchEvent:b}=D(a.target);return b&&a instanceof b}(a)){if(a.touches&&a.touches.length){let{clientX:b,clientY:c}=a.touches[0];return{x:b,y:c}}else if(a.changedTouches&&a.changedTouches.length){let{clientX:b,clientY:c}=a.changedTouches[0];return{x:b,y:c}}}return"clientX"in a&&"clientY"in a?{x:a.clientX,y:a.clientY}:null}let V=Object.freeze({Translate:{toString(a){if(!a)return;let{x:b,y:c}=a;return"translate3d("+(b?Math.round(b):0)+"px, "+(c?Math.round(c):0)+"px, 0)"}},Scale:{toString(a){if(!a)return;let{scaleX:b,scaleY:c}=a;return"scaleX("+b+") scaleY("+c+")"}},Transform:{toString(a){if(a)return[V.Translate.toString(a),V.Scale.toString(a)].join(" ")}},Transition:{toString(a){let{property:b,duration:c,easing:d}=a;return b+" "+c+"ms "+d}}}),W="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]",X={display:"none"};function Y(a){let{id:b,value:c}=a;return y().createElement("div",{id:b,style:X},c)}function Z(a){let{id:b,announcement:c,ariaLiveType:d="assertive"}=a;return y().createElement("div",{id:b,style:{position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"},role:"status","aria-live":d,"aria-atomic":!0},c)}let $=(0,x.createContext)(null),_={draggable:"\n To pick up a draggable item, press the space bar.\n While dragging, use the arrow keys to move the item.\n Press space again to drop the item in its new position, or press escape to cancel.\n "},aa={onDragStart(a){let{active:b}=a;return"Picked up draggable item "+b.id+"."},onDragOver(a){let{active:b,over:c}=a;return c?"Draggable item "+b.id+" was moved over droppable area "+c.id+".":"Draggable item "+b.id+" is no longer over a droppable area."},onDragEnd(a){let{active:b,over:c}=a;return c?"Draggable item "+b.id+" was dropped over droppable area "+c.id:"Draggable item "+b.id+" was dropped."},onDragCancel(a){let{active:b}=a;return"Dragging was cancelled. Draggable item "+b.id+" was dropped."}};function ab(a){var b;let c,{announcements:d=aa,container:e,hiddenTextDescribedById:f,screenReaderInstructions:g=_}=a,{announce:h,announcement:i}=function(){let[a,b]=(0,x.useState)("");return{announce:(0,x.useCallback)(a=>{null!=a&&b(a)},[]),announcement:a}}(),j=P("DndLiveRegion"),[k,l]=(0,x.useState)(!1);if((0,x.useEffect)(()=>{l(!0)},[]),b=(0,x.useMemo)(()=>({onDragStart(a){let{active:b}=a;h(d.onDragStart({active:b}))},onDragMove(a){let{active:b,over:c}=a;d.onDragMove&&h(d.onDragMove({active:b,over:c}))},onDragOver(a){let{active:b,over:c}=a;h(d.onDragOver({active:b,over:c}))},onDragEnd(a){let{active:b,over:c}=a;h(d.onDragEnd({active:b,over:c}))},onDragCancel(a){let{active:b,over:c}=a;h(d.onDragCancel({active:b,over:c}))}}),[h,d]),c=(0,x.useContext)($),(0,x.useEffect)(()=>{if(!c)throw Error("useDndMonitor must be used within a children of <DndContext>");return c(b)},[b,c]),!k)return null;let m=y().createElement(y().Fragment,null,y().createElement(Y,{id:f,value:g.draggable}),y().createElement(Z,{id:j,announcement:i}));return e?(0,z.createPortal)(m,e):m}function ac(){}function ad(a,b){return(0,x.useMemo)(()=>({sensor:a,options:null!=b?b:{}}),[a,b])}(d=m||(m={})).DragStart="dragStart",d.DragMove="dragMove",d.DragEnd="dragEnd",d.DragCancel="dragCancel",d.DragOver="dragOver",d.RegisterDroppable="registerDroppable",d.SetDroppableDisabled="setDroppableDisabled",d.UnregisterDroppable="unregisterDroppable";let ae=Object.freeze({x:0,y:0});function af(a,b){return Math.sqrt(Math.pow(a.x-b.x,2)+Math.pow(a.y-b.y,2))}function ag(a,b){let{data:{value:c}}=a,{data:{value:d}}=b;return c-d}function ah(a,b){let{data:{value:c}}=a,{data:{value:d}}=b;return d-c}function ai(a){let{left:b,top:c,height:d,width:e}=a;return[{x:b,y:c},{x:b+e,y:c},{x:b,y:c+d},{x:b+e,y:c+d}]}function aj(a,b){if(!a||0===a.length)return null;let[c]=a;return b?c[b]:c}function ak(a,b,c){return void 0===b&&(b=a.left),void 0===c&&(c=a.top),{x:b+.5*a.width,y:c+.5*a.height}}let al=a=>{let{collisionRect:b,droppableRects:c,droppableContainers:d}=a,e=ak(b,b.left,b.top),f=[];for(let a of d){let{id:b}=a,d=c.get(b);if(d){let c=af(ak(d),e);f.push({id:b,data:{droppableContainer:a,value:c}})}}return f.sort(ag)},am=a=>{let{collisionRect:b,droppableRects:c,droppableContainers:d}=a,e=[];for(let a of d){let{id:d}=a,f=c.get(d);if(f){let c=function(a,b){let c=Math.max(b.top,a.top),d=Math.max(b.left,a.left),e=Math.min(b.left+b.width,a.left+a.width),f=Math.min(b.top+b.height,a.top+a.height);if(d<e&&c<f){let g=b.width*b.height,h=a.width*a.height,i=(e-d)*(f-c);return Number((i/(g+h-i)).toFixed(4))}return 0}(f,b);c>0&&e.push({id:d,data:{droppableContainer:a,value:c}})}}return e.sort(ah)};function an(a,b){return a&&b?{x:a.left-b.left,y:a.top-b.top}:ae}let ao=function(a){for(var b=arguments.length,c=Array(b>1?b-1:0),d=1;d<b;d++)c[d-1]=arguments[d];return c.reduce((a,b)=>({...a,top:a.top+ +b.y,bottom:a.bottom+ +b.y,left:a.left+ +b.x,right:a.right+ +b.x}),{...a})},ap={ignoreTransform:!1};function aq(a,b){void 0===b&&(b=ap);let c=a.getBoundingClientRect();if(b.ignoreTransform){let{transform:b,transformOrigin:d}=D(a).getComputedStyle(a);b&&(c=function(a,b,c){let d=function(a){if(a.startsWith("matrix3d(")){let b=a.slice(9,-1).split(/, /);return{x:+b[12],y:+b[13],scaleX:+b[0],scaleY:+b[5]}}if(a.startsWith("matrix(")){let b=a.slice(7,-1).split(/, /);return{x:+b[4],y:+b[5],scaleX:+b[0],scaleY:+b[3]}}return null}(b);if(!d)return a;let{scaleX:e,scaleY:f,x:g,y:h}=d,i=a.left-g-(1-e)*parseFloat(c),j=a.top-h-(1-f)*parseFloat(c.slice(c.indexOf(" ")+1)),k=e?a.width/e:a.width,l=f?a.height/f:a.height;return{width:k,height:l,top:j,right:i+k,bottom:j+l,left:i}}(c,b,d))}let{top:d,left:e,width:f,height:g,bottom:h,right:i}=c;return{top:d,left:e,width:f,height:g,bottom:h,right:i}}function ar(a){return aq(a,{ignoreTransform:!0})}function as(a,b){let c=[];return a?function d(e){var f,g;let h;if(null!=b&&c.length>=b||!e)return c;if(E(e)&&null!=e.scrollingElement&&!c.includes(e.scrollingElement))return c.push(e.scrollingElement),c;if(!F(e)||G(e)||c.includes(e))return c;let i=D(a).getComputedStyle(e);return(e!==a&&(void 0===(f=i)&&(f=D(e).getComputedStyle(e)),h=/(auto|scroll|overlay)/,["overflow","overflowX","overflowY"].some(a=>{let b=f[a];return"string"==typeof b&&h.test(b)}))&&c.push(e),void 0===(g=i)&&(g=D(e).getComputedStyle(e)),"fixed"===g.position)?c:d(e.parentNode)}(a):c}function at(a){let[b]=as(a,1);return null!=b?b:null}function au(a){return A&&a?B(a)?a:C(a)?E(a)||a===H(a).scrollingElement?window:F(a)?a:null:null:null}function av(a){return B(a)?a.scrollX:a.scrollLeft}function aw(a){return B(a)?a.scrollY:a.scrollTop}function ax(a){return{x:av(a),y:aw(a)}}function ay(a){return!!A&&!!a&&a===document.scrollingElement}function az(a){let b={x:0,y:0},c=ay(a)?{height:window.innerHeight,width:window.innerWidth}:{height:a.clientHeight,width:a.clientWidth},d={x:a.scrollWidth-c.width,y:a.scrollHeight-c.height},e=a.scrollTop<=b.y,f=a.scrollLeft<=b.x;return{isTop:e,isLeft:f,isBottom:a.scrollTop>=d.y,isRight:a.scrollLeft>=d.x,maxScroll:d,minScroll:b}}(e=n||(n={}))[e.Forward=1]="Forward",e[e.Backward=-1]="Backward";let aA={x:.2,y:.2};function aB(a){return a.reduce((a,b)=>R(a,ax(b)),ae)}let aC=[["x",["left","right"],function(a){return a.reduce((a,b)=>a+av(b),0)}],["y",["top","bottom"],function(a){return a.reduce((a,b)=>a+aw(b),0)}]];class aD{constructor(a,b){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const c=as(b),d=aB(c);for(const[b,e,f]of(this.rect={...a},this.width=a.width,this.height=a.height,aC))for(const a of e)Object.defineProperty(this,a,{get:()=>{let e=f(c),g=d[b]-e;return this.rect[a]+g},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class aE{constructor(a){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(a=>{var b;return null==(b=this.target)?void 0:b.removeEventListener(...a)})},this.target=a}add(a,b,c){var d;null==(d=this.target)||d.addEventListener(a,b,c),this.listeners.push([a,b,c])}}function aF(a,b){let c=Math.abs(a.x),d=Math.abs(a.y);return"number"==typeof b?Math.sqrt(c**2+d**2)>b:"x"in b&&"y"in b?c>b.x&&d>b.y:"x"in b?c>b.x:"y"in b&&d>b.y}function aG(a){a.preventDefault()}function aH(a){a.stopPropagation()}(f=o||(o={})).Click="click",f.DragStart="dragstart",f.Keydown="keydown",f.ContextMenu="contextmenu",f.Resize="resize",f.SelectionChange="selectionchange",f.VisibilityChange="visibilitychange",(g=p||(p={})).Space="Space",g.Down="ArrowDown",g.Right="ArrowRight",g.Left="ArrowLeft",g.Up="ArrowUp",g.Esc="Escape",g.Enter="Enter",g.Tab="Tab";let aI={start:[p.Space,p.Enter],cancel:[p.Esc],end:[p.Space,p.Enter,p.Tab]},aJ=(a,b)=>{let{currentCoordinates:c}=b;switch(a.code){case p.Right:return{...c,x:c.x+25};case p.Left:return{...c,x:c.x-25};case p.Down:return{...c,y:c.y+25};case p.Up:return{...c,y:c.y-25}}};class aK{constructor(a){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=a;const{event:{target:b}}=a;this.props=a,this.listeners=new aE(H(b)),this.windowListeners=new aE(D(b)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(o.Resize,this.handleCancel),this.windowListeners.add(o.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(o.Keydown,this.handleKeyDown))}handleStart(){let{activeNode:a,onStart:b}=this.props,c=a.node.current;c&&function(a,b){if(void 0===b&&(b=aq),!a)return;let{top:c,left:d,bottom:e,right:f}=b(a);at(a)&&(e<=0||f<=0||c>=window.innerHeight||d>=window.innerWidth)&&a.scrollIntoView({block:"center",inline:"center"})}(c),b(ae)}handleKeyDown(a){if(T(a)){let{active:b,context:c,options:d}=this.props,{keyboardCodes:e=aI,coordinateGetter:f=aJ,scrollBehavior:g="smooth"}=d,{code:h}=a;if(e.end.includes(h))return void this.handleEnd(a);if(e.cancel.includes(h))return void this.handleCancel(a);let{collisionRect:i}=c.current,j=i?{x:i.left,y:i.top}:ae;this.referenceCoordinates||(this.referenceCoordinates=j);let k=f(a,{active:b,context:c.current,currentCoordinates:j});if(k){let b=S(k,j),d={x:0,y:0},{scrollableAncestors:e}=c.current;for(let c of e){let e=a.code,{isTop:f,isRight:h,isLeft:i,isBottom:j,maxScroll:l,minScroll:m}=az(c),n=function(a){if(a===document.scrollingElement){let{innerWidth:a,innerHeight:b}=window;return{top:0,left:0,right:a,bottom:b,width:a,height:b}}let{top:b,left:c,right:d,bottom:e}=a.getBoundingClientRect();return{top:b,left:c,right:d,bottom:e,width:a.clientWidth,height:a.clientHeight}}(c),o={x:Math.min(e===p.Right?n.right-n.width/2:n.right,Math.max(e===p.Right?n.left:n.left+n.width/2,k.x)),y:Math.min(e===p.Down?n.bottom-n.height/2:n.bottom,Math.max(e===p.Down?n.top:n.top+n.height/2,k.y))},q=e===p.Right&&!h||e===p.Left&&!i,r=e===p.Down&&!j||e===p.Up&&!f;if(q&&o.x!==k.x){let a=c.scrollLeft+b.x,f=e===p.Right&&a<=l.x||e===p.Left&&a>=m.x;if(f&&!b.y)return void c.scrollTo({left:a,behavior:g});f?d.x=c.scrollLeft-a:d.x=e===p.Right?c.scrollLeft-l.x:c.scrollLeft-m.x,d.x&&c.scrollBy({left:-d.x,behavior:g});break}if(r&&o.y!==k.y){let a=c.scrollTop+b.y,f=e===p.Down&&a<=l.y||e===p.Up&&a>=m.y;if(f&&!b.x)return void c.scrollTo({top:a,behavior:g});f?d.y=c.scrollTop-a:d.y=e===p.Down?c.scrollTop-l.y:c.scrollTop-m.y,d.y&&c.scrollBy({top:-d.y,behavior:g});break}}this.handleMove(a,R(S(k,this.referenceCoordinates),d))}}}handleMove(a,b){let{onMove:c}=this.props;a.preventDefault(),c(b)}handleEnd(a){let{onEnd:b}=this.props;a.preventDefault(),this.detach(),b()}handleCancel(a){let{onCancel:b}=this.props;a.preventDefault(),this.detach(),b()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}function aL(a){return!!(a&&"distance"in a)}function aM(a){return!!(a&&"delay"in a)}aK.activators=[{eventName:"onKeyDown",handler:(a,b,c)=>{let{keyboardCodes:d=aI,onActivation:e}=b,{active:f}=c,{code:g}=a.nativeEvent;if(d.start.includes(g)){let b=f.activatorNode.current;return(!b||a.target===b)&&(a.preventDefault(),null==e||e({event:a.nativeEvent}),!0)}return!1}}];class aN{constructor(a,b,c){var d;void 0===c&&(c=function(a){let{EventTarget:b}=D(a);return a instanceof b?a:H(a)}(a.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=a,this.events=b;const{event:e}=a,{target:f}=e;this.props=a,this.events=b,this.document=H(f),this.documentListeners=new aE(this.document),this.listeners=new aE(c),this.windowListeners=new aE(D(f)),this.initialCoordinates=null!=(d=U(e))?d:ae,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){let{events:a,props:{options:{activationConstraint:b,bypassActivationConstraint:c}}}=this;if(this.listeners.add(a.move.name,this.handleMove,{passive:!1}),this.listeners.add(a.end.name,this.handleEnd),a.cancel&&this.listeners.add(a.cancel.name,this.handleCancel),this.windowListeners.add(o.Resize,this.handleCancel),this.windowListeners.add(o.DragStart,aG),this.windowListeners.add(o.VisibilityChange,this.handleCancel),this.windowListeners.add(o.ContextMenu,aG),this.documentListeners.add(o.Keydown,this.handleKeydown),b){if(null!=c&&c({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(aM(b)){this.timeoutId=setTimeout(this.handleStart,b.delay),this.handlePending(b);return}if(aL(b))return void this.handlePending(b)}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),null!==this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(a,b){let{active:c,onPending:d}=this.props;d(c,a,this.initialCoordinates,b)}handleStart(){let{initialCoordinates:a}=this,{onStart:b}=this.props;a&&(this.activated=!0,this.documentListeners.add(o.Click,aH,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(o.SelectionChange,this.removeTextSelection),b(a))}handleMove(a){var b;let{activated:c,initialCoordinates:d,props:e}=this,{onMove:f,options:{activationConstraint:g}}=e;if(!d)return;let h=null!=(b=U(a))?b:ae,i=S(d,h);if(!c&&g){if(aL(g)){if(null!=g.tolerance&&aF(i,g.tolerance))return this.handleCancel();if(aF(i,g.distance))return this.handleStart()}return aM(g)&&aF(i,g.tolerance)?this.handleCancel():void this.handlePending(g,i)}a.cancelable&&a.preventDefault(),f(h)}handleEnd(){let{onAbort:a,onEnd:b}=this.props;this.detach(),this.activated||a(this.props.active),b()}handleCancel(){let{onAbort:a,onCancel:b}=this.props;this.detach(),this.activated||a(this.props.active),b()}handleKeydown(a){a.code===p.Esc&&this.handleCancel()}removeTextSelection(){var a;null==(a=this.document.getSelection())||a.removeAllRanges()}}let aO={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class aP extends aN{constructor(a){const{event:b}=a;super(a,aO,H(b.target))}}aP.activators=[{eventName:"onPointerDown",handler:(a,b)=>{let{nativeEvent:c}=a,{onActivation:d}=b;return!!c.isPrimary&&0===c.button&&(null==d||d({event:c}),!0)}}];let aQ={move:{name:"mousemove"},end:{name:"mouseup"}};(h=q||(q={}))[h.RightClick=2]="RightClick";class aR extends aN{constructor(a){super(a,aQ,H(a.event.target))}}aR.activators=[{eventName:"onMouseDown",handler:(a,b)=>{let{nativeEvent:c}=a,{onActivation:d}=b;return c.button!==q.RightClick&&(null==d||d({event:c}),!0)}}];let aS={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class aT extends aN{constructor(a){super(a,aS)}static setup(){return window.addEventListener(aS.move.name,a,{capture:!1,passive:!1}),function(){window.removeEventListener(aS.move.name,a)};function a(){}}}aT.activators=[{eventName:"onTouchStart",handler:(a,b)=>{let{nativeEvent:c}=a,{onActivation:d}=b,{touches:e}=c;return!(e.length>1)&&(null==d||d({event:c}),!0)}}],(i=r||(r={}))[i.Pointer=0]="Pointer",i[i.DraggableRect=1]="DraggableRect",(j=s||(s={}))[j.TreeOrder=0]="TreeOrder",j[j.ReversedTreeOrder=1]="ReversedTreeOrder";let aU={x:{[n.Backward]:!1,[n.Forward]:!1},y:{[n.Backward]:!1,[n.Forward]:!1}};(k=t||(t={}))[k.Always=0]="Always",k[k.BeforeDragging=1]="BeforeDragging",k[k.WhileDragging=2]="WhileDragging",(u||(u={})).Optimized="optimized";let aV=new Map;function aW(a,b){return L(c=>a?c||("function"==typeof b?b(a):a):null,[b,a])}function aX(a){let{callback:b,disabled:c}=a,d=J(b),e=(0,x.useMemo)(()=>{if(c||"u"<typeof window||void 0===window.ResizeObserver)return;let{ResizeObserver:a}=window;return new a(d)},[c]);return(0,x.useEffect)(()=>()=>null==e?void 0:e.disconnect(),[e]),e}function aY(a){return new aD(aq(a),a)}function aZ(a,b,c){void 0===b&&(b=aY);let[d,e]=(0,x.useState)(null);function f(){e(d=>{if(!a)return null;if(!1===a.isConnected){var e;return null!=(e=null!=d?d:c)?e:null}let f=b(a);return JSON.stringify(d)===JSON.stringify(f)?d:f})}let g=function(a){let{callback:b,disabled:c}=a,d=J(b),e=(0,x.useMemo)(()=>{if(c||"u"<typeof window||void 0===window.MutationObserver)return;let{MutationObserver:a}=window;return new a(d)},[d,c]);return(0,x.useEffect)(()=>()=>null==e?void 0:e.disconnect(),[e]),e}({callback(b){if(a)for(let c of b){let{type:b,target:d}=c;if("childList"===b&&d instanceof HTMLElement&&d.contains(a)){f();break}}}}),h=aX({callback:f});return I(()=>{f(),a?(null==h||h.observe(a),null==g||g.observe(document.body,{childList:!0,subtree:!0})):(null==h||h.disconnect(),null==g||g.disconnect())},[a]),d}let a$=[];function a_(a,b){void 0===b&&(b=[]);let c=(0,x.useRef)(null);return(0,x.useEffect)(()=>{c.current=null},b),(0,x.useEffect)(()=>{let b=a!==ae;b&&!c.current&&(c.current=a),!b&&c.current&&(c.current=null)},[a]),c.current?S(a,c.current):ae}function a0(a){return(0,x.useMemo)(()=>{let b,c;return a?(b=a.innerWidth,{top:0,left:0,right:b,bottom:c=a.innerHeight,width:b,height:c}):null},[a])}let a1=[],a2=[{sensor:aP,options:{}},{sensor:aK,options:{}}],a3={current:{}},a4={draggable:{measure:ar},droppable:{measure:ar,strategy:t.WhileDragging,frequency:u.Optimized},dragOverlay:{measure:aq}};class a5 extends Map{get(a){var b;return null!=a&&null!=(b=super.get(a))?b:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(a=>{let{disabled:b}=a;return!b})}getNodeFor(a){var b,c;return null!=(b=null==(c=this.get(a))?void 0:c.node.current)?b:void 0}}let a6={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new a5,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:ac},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:a4,measureDroppableContainers:ac,windowRect:null,measuringScheduled:!1},a7={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:ac,draggableNodes:new Map,over:null,measureDroppableContainers:ac},a8=(0,x.createContext)(a7),a9=(0,x.createContext)(a6);function ba(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new a5}}}function bb(a,b){switch(b.type){case m.DragStart:return{...a,draggable:{...a.draggable,initialCoordinates:b.initialCoordinates,active:b.active}};case m.DragMove:if(null==a.draggable.active)return a;return{...a,draggable:{...a.draggable,translate:{x:b.coordinates.x-a.draggable.initialCoordinates.x,y:b.coordinates.y-a.draggable.initialCoordinates.y}}};case m.DragEnd:case m.DragCancel:return{...a,draggable:{...a.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case m.RegisterDroppable:{let{element:c}=b,{id:d}=c,e=new a5(a.droppable.containers);return e.set(d,c),{...a,droppable:{...a.droppable,containers:e}}}case m.SetDroppableDisabled:{let{id:c,key:d,disabled:e}=b,f=a.droppable.containers.get(c);if(!f||d!==f.key)return a;let g=new a5(a.droppable.containers);return g.set(c,{...f,disabled:e}),{...a,droppable:{...a.droppable,containers:g}}}case m.UnregisterDroppable:{let{id:c,key:d}=b,e=a.droppable.containers.get(c);if(!e||d!==e.key)return a;let f=new a5(a.droppable.containers);return f.delete(c),{...a,droppable:{...a.droppable,containers:f}}}default:return a}}function bc(a){let{disabled:b}=a,{active:c,activatorEvent:d,draggableNodes:e}=(0,x.useContext)(a8),f=N(d),g=N(null==c?void 0:c.id);return(0,x.useEffect)(()=>{if(!b&&!d&&f&&null!=g){if(!T(f)||document.activeElement===f.target)return;let a=e.get(g);if(!a)return;let{activatorNode:b,node:c}=a;(b.current||c.current)&&requestAnimationFrame(()=>{for(let a of[b.current,c.current]){if(!a)continue;let b=a.matches(W)?a:a.querySelector(W);if(b){b.focus();break}}})}},[d,b,e,g,f]),null}let bd=(0,x.createContext)({...ae,scaleX:1,scaleY:1});(l=v||(v={}))[l.Uninitialized=0]="Uninitialized",l[l.Initializing=1]="Initializing",l[l.Initialized=2]="Initialized";let be=(0,x.memo)(function(a){var b,c,d,e,f,g,h,i;let j,k,l,o,p,q,u,w,{id:B,accessibility:C,autoScroll:E=!0,children:G,sensors:H=a2,collisionDetection:J=am,measuring:O,modifiers:Q,...S}=a,[T,V]=(0,x.useReducer)(bb,void 0,ba),[W,X]=function(){let[a]=(0,x.useState)(()=>new Set),b=(0,x.useCallback)(b=>(a.add(b),()=>a.delete(b)),[a]);return[(0,x.useCallback)(b=>{let{type:c,event:d}=b;a.forEach(a=>{var b;return null==(b=a[c])?void 0:b.call(a,d)})},[a]),b]}(),[Y,Z]=(0,x.useState)(v.Uninitialized),_=Y===v.Initialized,{draggable:{active:aa,nodes:ac,translate:ad},droppable:{containers:af}}=T,ag=null!=aa?ac.get(aa):null,ah=(0,x.useRef)({initial:null,translated:null}),ai=(0,x.useMemo)(()=>{var a;return null!=aa?{id:aa,data:null!=(a=null==ag?void 0:ag.data)?a:a3,rect:ah}:null},[aa,ag]),ak=(0,x.useRef)(null),[al,ap]=(0,x.useState)(null),[ar,av]=(0,x.useState)(null),aw=K(S,Object.values(S)),aC=P("DndDescribedBy",B),aE=(0,x.useMemo)(()=>af.getEnabled(),[af]),aF=(0,x.useMemo)(()=>({draggable:{...a4.draggable,...null==O?void 0:O.draggable},droppable:{...a4.droppable,...null==O?void 0:O.droppable},dragOverlay:{...a4.dragOverlay,...null==O?void 0:O.dragOverlay}}),[null==O?void 0:O.draggable,null==O?void 0:O.droppable,null==O?void 0:O.dragOverlay]),{droppableRects:aG,measureDroppableContainers:aH,measuringScheduled:aI}=function(a,b){let{dragging:c,dependencies:d,config:e}=b,[f,g]=(0,x.useState)(null),{frequency:h,measure:i,strategy:j}=e,k=(0,x.useRef)(a),l=function(){switch(j){case t.Always:return!1;case t.BeforeDragging:return c;default:return!c}}(),m=K(l),n=(0,x.useCallback)(function(a){void 0===a&&(a=[]),m.current||g(b=>null===b?a:b.concat(a.filter(a=>!b.includes(a))))},[m]),o=(0,x.useRef)(null),p=L(b=>{if(l&&!c)return aV;if(!b||b===aV||k.current!==a||null!=f){let b=new Map;for(let c of a){if(!c)continue;if(f&&f.length>0&&!f.includes(c.id)&&c.rect.current){b.set(c.id,c.rect.current);continue}let a=c.node.current,d=a?new aD(i(a),a):null;c.rect.current=d,d&&b.set(c.id,d)}return b}return b},[a,f,c,l,i]);return(0,x.useEffect)(()=>{k.current=a},[a]),(0,x.useEffect)(()=>{l||n()},[c,l]),(0,x.useEffect)(()=>{f&&f.length>0&&g(null)},[JSON.stringify(f)]),(0,x.useEffect)(()=>{l||"number"!=typeof h||null!==o.current||(o.current=setTimeout(()=>{n(),o.current=null},h))},[h,l,n,...d]),{droppableRects:p,measureDroppableContainers:n,measuringScheduled:null!=f}}(aE,{dragging:_,dependencies:[ad.x,ad.y],config:aF.droppable}),aJ=L(a=>{var b;return null==aa?null:null!=(b=null!=p?p:a)?b:null},[p=(o=null!=aa?ac.get(aa):void 0)?o.node.current:null,aa]),aK=(0,x.useMemo)(()=>ar?U(ar):null,[ar]),aL=(j=(null==al?void 0:al.autoScrollEnabled)===!1,k="object"==typeof E?!1===E.enabled:!1===E,l=_&&!j&&!k,"object"==typeof E?{...E,enabled:l}:{enabled:l}),aM=aW(aJ,aF.draggable.measure);!function(a){let{activeNode:b,measure:c,initialRect:d,config:e=!0}=a,f=(0,x.useRef)(!1),{x:g,y:h}="boolean"==typeof e?{x:e,y:e}:e;I(()=>{if(!g&&!h||!b){f.current=!1;return}if(f.current||!d)return;let a=null==b?void 0:b.node.current;if(!a||!1===a.isConnected)return;let e=an(c(a),d);if(g||(e.x=0),h||(e.y=0),f.current=!0,Math.abs(e.x)>0||Math.abs(e.y)>0){let b=at(a);b&&b.scrollBy({top:e.y,left:e.x})}},[b,g,h,d,c])}({activeNode:null!=aa?ac.get(aa):null,config:aL.layoutShiftCompensation,initialRect:aM,measure:aF.draggable.measure});let aN=aZ(aJ,aF.draggable.measure,aM),aO=aZ(aJ?aJ.parentElement:null),aP=(0,x.useRef)({activatorEvent:null,active:null,activeNode:aJ,collisionRect:null,collisions:null,droppableRects:aG,draggableNodes:ac,draggingNode:null,draggingNodeRect:null,droppableContainers:af,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),aQ=af.getNodeFor(null==(b=aP.current.over)?void 0:b.id),aR=function(a){let{measure:b}=a,[c,d]=(0,x.useState)(null),e=aX({callback:(0,x.useCallback)(a=>{for(let{target:c}of a)if(F(c)){d(a=>{let d=b(c);return a?{...a,width:d.width,height:d.height}:d});break}},[b])}),[f,g]=M((0,x.useCallback)(a=>{let c=function(a){if(!a)return null;if(a.children.length>1)return a;let b=a.children[0];return F(b)?b:a}(a);null==e||e.disconnect(),c&&(null==e||e.observe(c)),d(c?b(c):null)},[b,e]));return(0,x.useMemo)(()=>({nodeRef:f,rect:c,setRef:g}),[c,f,g])}({measure:aF.dragOverlay.measure}),aS=null!=(c=aR.nodeRef.current)?c:aJ,aT=_?null!=(d=aR.rect)?d:aN:null,aY=!!(aR.nodeRef.current&&aR.rect),a5=(q=aW(f=aY?null:aN),an(f,q)),a6=a0(aS?D(aS):null),a7=(g=_?null!=aQ?aQ:aJ:null,u=(0,x.useRef)(g),w=L(a=>g?a&&a!==a$&&g&&u.current&&g.parentNode===u.current.parentNode?a:as(g):a$,[g]),(0,x.useEffect)(()=>{u.current=g},[g]),w),be=function(a,b){void 0===b&&(b=aq);let[c]=a,d=a0(c?D(c):null),[e,f]=(0,x.useState)(a1);function g(){f(()=>a.length?a.map(a=>ay(a)?d:new aD(b(a),a)):a1)}let h=aX({callback:g});return I(()=>{null==h||h.disconnect(),g(),a.forEach(a=>null==h?void 0:h.observe(a))},[a]),e}(a7),bf=function(a,b){let{transform:c,...d}=b;return null!=a&&a.length?a.reduce((a,b)=>b({transform:a,...d}),c):c}(Q,{transform:{x:ad.x-a5.x,y:ad.y-a5.y,scaleX:1,scaleY:1},activatorEvent:ar,active:ai,activeNodeRect:aN,containerNodeRect:aO,draggingNodeRect:aT,over:aP.current.over,overlayNodeRect:aR.rect,scrollableAncestors:a7,scrollableAncestorRects:be,windowRect:a6}),bg=aK?R(aK,ad):null,bh=function(a){let[b,c]=(0,x.useState)(null),d=(0,x.useRef)(a),e=(0,x.useCallback)(a=>{let b=au(a.target);b&&c(a=>a?(a.set(b,ax(b)),new Map(a)):null)},[]);return(0,x.useEffect)(()=>{let b=d.current;if(a!==b){f(b);let g=a.map(a=>{let b=au(a);return b?(b.addEventListener("scroll",e,{passive:!0}),[b,ax(b)]):null}).filter(a=>null!=a);c(g.length?new Map(g):null),d.current=a}return()=>{f(a),f(b)};function f(a){a.forEach(a=>{let b=au(a);null==b||b.removeEventListener("scroll",e)})}},[e,a]),(0,x.useMemo)(()=>a.length?b?Array.from(b.values()).reduce((a,b)=>R(a,b),ae):aB(a):ae,[a,b])}(a7),bi=a_(bh),bj=a_(bh,[aN]),bk=R(bf,bi),bl=aT?ao(aT,bf):null,bm=ai&&bl?J({active:ai,collisionRect:bl,droppableRects:aG,droppableContainers:aE,pointerCoordinates:bg}):null,bn=aj(bm,"id"),[bo,bp]=(0,x.useState)(null),bq=(h=aY?bf:R(bf,bj),i=null!=(e=null==bo?void 0:bo.rect)?e:null,{...h,scaleX:i&&aN?i.width/aN.width:1,scaleY:i&&aN?i.height/aN.height:1}),br=(0,x.useRef)(null),bs=(0,x.useCallback)((a,b)=>{let{sensor:c,options:d}=b;if(null==ak.current)return;let e=ac.get(ak.current);if(!e)return;let f=a.nativeEvent,g=new c({active:ak.current,activeNode:e,event:f,options:d,context:aP,onAbort(a){if(!ac.get(a))return;let{onDragAbort:b}=aw.current,c={id:a};null==b||b(c),W({type:"onDragAbort",event:c})},onPending(a,b,c,d){if(!ac.get(a))return;let{onDragPending:e}=aw.current,f={id:a,constraint:b,initialCoordinates:c,offset:d};null==e||e(f),W({type:"onDragPending",event:f})},onStart(a){let b=ak.current;if(null==b)return;let c=ac.get(b);if(!c)return;let{onDragStart:d}=aw.current,e={activatorEvent:f,active:{id:b,data:c.data,rect:ah}};(0,z.unstable_batchedUpdates)(()=>{null==d||d(e),Z(v.Initializing),V({type:m.DragStart,initialCoordinates:a,active:b}),W({type:"onDragStart",event:e}),ap(br.current),av(f)})},onMove(a){V({type:m.DragMove,coordinates:a})},onEnd:h(m.DragEnd),onCancel:h(m.DragCancel)});function h(a){return async function(){let{active:b,collisions:c,over:d,scrollAdjustedTranslate:e}=aP.current,g=null;if(b&&e){let{cancelDrop:h}=aw.current;g={activatorEvent:f,active:b,collisions:c,delta:e,over:d},a===m.DragEnd&&"function"==typeof h&&await Promise.resolve(h(g))&&(a=m.DragCancel)}ak.current=null,(0,z.unstable_batchedUpdates)(()=>{V({type:a}),Z(v.Uninitialized),bp(null),ap(null),av(null),br.current=null;let b=a===m.DragEnd?"onDragEnd":"onDragCancel";if(g){let a=aw.current[b];null==a||a(g),W({type:b,event:g})}})}}br.current=g},[ac]),bt=(0,x.useCallback)((a,b)=>(c,d)=>{let e=c.nativeEvent,f=ac.get(d);null!==ak.current||!f||e.dndKit||e.defaultPrevented||!0===a(c,b.options,{active:f})&&(e.dndKit={capturedBy:b.sensor},ak.current=d,bs(c,b))},[ac,bs]),bu=(0,x.useMemo)(()=>H.reduce((a,b)=>{let{sensor:c}=b;return[...a,...c.activators.map(a=>({eventName:a.eventName,handler:bt(a.handler,b)}))]},[]),[H,bt]);(0,x.useEffect)(()=>{if(!A)return;let a=H.map(a=>{let{sensor:b}=a;return null==b.setup?void 0:b.setup()});return()=>{for(let b of a)null==b||b()}},H.map(a=>{let{sensor:b}=a;return b})),I(()=>{aN&&Y===v.Initializing&&Z(v.Initialized)},[aN,Y]),(0,x.useEffect)(()=>{let{onDragMove:a}=aw.current,{active:b,activatorEvent:c,collisions:d,over:e}=aP.current;if(!b||!c)return;let f={active:b,activatorEvent:c,collisions:d,delta:{x:bk.x,y:bk.y},over:e};(0,z.unstable_batchedUpdates)(()=>{null==a||a(f),W({type:"onDragMove",event:f})})},[bk.x,bk.y]),(0,x.useEffect)(()=>{let{active:a,activatorEvent:b,collisions:c,droppableContainers:d,scrollAdjustedTranslate:e}=aP.current;if(!a||null==ak.current||!b||!e)return;let{onDragOver:f}=aw.current,g=d.get(bn),h=g&&g.rect.current?{id:g.id,rect:g.rect.current,data:g.data,disabled:g.disabled}:null,i={active:a,activatorEvent:b,collisions:c,delta:{x:e.x,y:e.y},over:h};(0,z.unstable_batchedUpdates)(()=>{bp(h),null==f||f(i),W({type:"onDragOver",event:i})})},[bn]),I(()=>{aP.current={activatorEvent:ar,active:ai,activeNode:aJ,collisionRect:bl,collisions:bm,droppableRects:aG,draggableNodes:ac,draggingNode:aS,draggingNodeRect:aT,droppableContainers:af,over:bo,scrollableAncestors:a7,scrollAdjustedTranslate:bk},ah.current={initial:aT,translated:bl}},[ai,aJ,bm,bl,ac,aS,aT,aG,af,bo,a7,bk]),function(a){let b,{acceleration:c,activator:d=r.Pointer,canScroll:e,draggingRect:f,enabled:g,interval:h=5,order:i=s.TreeOrder,pointerCoordinates:j,scrollableAncestors:k,scrollableAncestorRects:l,delta:m,threshold:o}=a,p=function(a){let{delta:b,disabled:c}=a,d=N(b);return L(a=>{if(c||!d||!a)return aU;let e={x:Math.sign(b.x-d.x),y:Math.sign(b.y-d.y)};return{x:{[n.Backward]:a.x[n.Backward]||-1===e.x,[n.Forward]:a.x[n.Forward]||1===e.x},y:{[n.Backward]:a.y[n.Backward]||-1===e.y,[n.Forward]:a.y[n.Forward]||1===e.y}}},[c,b,d])}({delta:m,disabled:!g}),[q,t]=(b=(0,x.useRef)(null),[(0,x.useCallback)((a,c)=>{b.current=setInterval(a,c)},[]),(0,x.useCallback)(()=>{null!==b.current&&(clearInterval(b.current),b.current=null)},[])]),u=(0,x.useRef)({x:0,y:0}),v=(0,x.useRef)({x:0,y:0}),w=(0,x.useMemo)(()=>{switch(d){case r.Pointer:return j?{top:j.y,bottom:j.y,left:j.x,right:j.x}:null;case r.DraggableRect:return f}},[d,f,j]),y=(0,x.useRef)(null),z=(0,x.useCallback)(()=>{let a=y.current;if(!a)return;let b=u.current.x*v.current.x,c=u.current.y*v.current.y;a.scrollBy(b,c)},[]),A=(0,x.useMemo)(()=>i===s.TreeOrder?[...k].reverse():k,[i,k]);(0,x.useEffect)(()=>{if(!g||!k.length||!w)return void t();for(let a of A){if((null==e?void 0:e(a))===!1)continue;let b=l[k.indexOf(a)];if(!b)continue;let{direction:d,speed:f}=function(a,b,c,d,e){let{top:f,left:g,right:h,bottom:i}=c;void 0===d&&(d=10),void 0===e&&(e=aA);let{isTop:j,isBottom:k,isLeft:l,isRight:m}=az(a),o={x:0,y:0},p={x:0,y:0},q={height:b.height*e.y,width:b.width*e.x};return!j&&f<=b.top+q.height?(o.y=n.Backward,p.y=d*Math.abs((b.top+q.height-f)/q.height)):!k&&i>=b.bottom-q.height&&(o.y=n.Forward,p.y=d*Math.abs((b.bottom-q.height-i)/q.height)),!m&&h>=b.right-q.width?(o.x=n.Forward,p.x=d*Math.abs((b.right-q.width-h)/q.width)):!l&&g<=b.left+q.width&&(o.x=n.Backward,p.x=d*Math.abs((b.left+q.width-g)/q.width)),{direction:o,speed:p}}(a,b,w,c,o);for(let a of["x","y"])p[a][d[a]]||(f[a]=0,d[a]=0);if(f.x>0||f.y>0){t(),y.current=a,q(z,h),u.current=f,v.current=d;return}}u.current={x:0,y:0},v.current={x:0,y:0},t()},[c,z,e,t,g,h,JSON.stringify(w),JSON.stringify(p),q,k,A,l,JSON.stringify(o)])}({...aL,delta:ad,draggingRect:bl,pointerCoordinates:bg,scrollableAncestors:a7,scrollableAncestorRects:be});let bv=(0,x.useMemo)(()=>({active:ai,activeNode:aJ,activeNodeRect:aN,activatorEvent:ar,collisions:bm,containerNodeRect:aO,dragOverlay:aR,draggableNodes:ac,droppableContainers:af,droppableRects:aG,over:bo,measureDroppableContainers:aH,scrollableAncestors:a7,scrollableAncestorRects:be,measuringConfiguration:aF,measuringScheduled:aI,windowRect:a6}),[ai,aJ,aN,ar,bm,aO,aR,ac,af,aG,bo,aH,a7,be,aF,aI,a6]),bw=(0,x.useMemo)(()=>({activatorEvent:ar,activators:bu,active:ai,activeNodeRect:aN,ariaDescribedById:{draggable:aC},dispatch:V,draggableNodes:ac,over:bo,measureDroppableContainers:aH}),[ar,bu,ai,aN,V,aC,ac,bo,aH]);return y().createElement($.Provider,{value:X},y().createElement(a8.Provider,{value:bw},y().createElement(a9.Provider,{value:bv},y().createElement(bd.Provider,{value:bq},G)),y().createElement(bc,{disabled:(null==C?void 0:C.restoreFocus)===!1})),y().createElement(ab,{...C,hiddenTextDescribedById:aC}))}),bf=(0,x.createContext)(null),bg="button",bh={timeout:25};function bi(a,b,c){let d=a.slice();return d.splice(c<0?d.length+c:c,0,d.splice(b,1)[0]),d}function bj(a){return null!==a&&a>=0}let bk=a=>{let{rects:b,activeIndex:c,overIndex:d,index:e}=a,f=bi(b,d,c),g=b[e],h=f[e];return h&&g?{x:h.left-g.left,y:h.top-g.top,scaleX:h.width/g.width,scaleY:h.height/g.height}:null},bl={scaleX:1,scaleY:1},bm=a=>{var b,c,d,e;let f,g,h,{activeIndex:i,activeNodeRect:j,index:k,rects:l,overIndex:m}=a,n=null!=(b=l[i])?b:j;if(!n)return null;if(k===i){let a=l[m];return a?{x:0,y:i<m?a.top+a.height-(n.top+n.height):a.top-n.top,...bl}:null}let o=(c=l,d=k,e=i,f=c[d],g=c[d-1],h=c[d+1],f?e<d?g?f.top-(g.top+g.height):h?h.top-(f.top+f.height):0:h?h.top-(f.top+f.height):g?f.top-(g.top+g.height):0:0);return k>i&&k<=m?{x:0,y:-n.height-o,...bl}:k<i&&k>=m?{x:0,y:n.height+o,...bl}:{x:0,y:0,...bl}},bn="Sortable",bo=y().createContext({activeIndex:-1,containerId:bn,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:bk,disabled:{draggable:!1,droppable:!1}});function bp(a){let{children:b,id:c,items:d,strategy:e=bk,disabled:f=!1}=a,{active:g,dragOverlay:h,droppableRects:i,over:j,measureDroppableContainers:k}=(0,x.useContext)(a9),l=P(bn,c),m=null!==h.rect,n=(0,x.useMemo)(()=>d.map(a=>"object"==typeof a&&"id"in a?a.id:a),[d]),o=null!=g,p=g?n.indexOf(g.id):-1,q=j?n.indexOf(j.id):-1,r=(0,x.useRef)(n),s=!function(a,b){if(a===b)return!0;if(a.length!==b.length)return!1;for(let c=0;c<a.length;c++)if(a[c]!==b[c])return!1;return!0}(n,r.current),t=-1!==q&&-1===p||s,u="boolean"==typeof f?{draggable:f,droppable:f}:f;I(()=>{s&&o&&k(n)},[s,n,o,k]),(0,x.useEffect)(()=>{r.current=n},[n]);let v=(0,x.useMemo)(()=>({activeIndex:p,containerId:l,disabled:u,disableTransforms:t,items:n,overIndex:q,useDragOverlay:m,sortedRects:n.reduce((a,b,c)=>{let d=i.get(b);return d&&(a[c]=d),a},Array(n.length)),strategy:e}),[p,l,u.draggable,u.droppable,t,n,q,i,m,e]);return y().createElement(bo.Provider,{value:v},b)}let bq=a=>{let{id:b,items:c,activeIndex:d,overIndex:e}=a;return bi(c,d,e).indexOf(b)},br=a=>{let{containerId:b,isSorting:c,wasDragging:d,index:e,items:f,newIndex:g,previousItems:h,previousContainerId:i,transition:j}=a;return!!j&&!!d&&(h===f||e!==g)&&(!!c||g!==e&&b===i)},bs={duration:200,easing:"ease"},bt="transform",bu=V.Transition.toString({property:bt,duration:0,easing:"linear"}),bv={roleDescription:"sortable"};function bw(a){if(!a)return!1;let b=a.data.current;return!!b&&"sortable"in b&&"object"==typeof b.sortable&&"containerId"in b.sortable&&"items"in b.sortable&&"index"in b.sortable}let bx=[p.Down,p.Right,p.Up,p.Left],by=(a,b)=>{let{context:{active:c,collisionRect:d,droppableRects:e,droppableContainers:f,over:g,scrollableAncestors:h}}=b;if(bx.includes(a.code)){if(a.preventDefault(),!c||!d)return;let b=[];f.getEnabled().forEach(c=>{if(!c||null!=c&&c.disabled)return;let f=e.get(c.id);if(f)switch(a.code){case p.Down:d.top<f.top&&b.push(c);break;case p.Up:d.top>f.top&&b.push(c);break;case p.Left:d.left>f.left&&b.push(c);break;case p.Right:d.left<f.left&&b.push(c)}});let k=(a=>{let{collisionRect:b,droppableRects:c,droppableContainers:d}=a,e=ai(b),f=[];for(let a of d){let{id:b}=a,d=c.get(b);if(d){let c=ai(d),g=Number((e.reduce((a,b,d)=>a+af(c[d],b),0)/4).toFixed(4));f.push({id:b,data:{droppableContainer:a,value:g}})}}return f.sort(ag)})({active:c,collisionRect:d,droppableRects:e,droppableContainers:b,pointerCoordinates:null}),l=aj(k,"id");if(l===(null==g?void 0:g.id)&&k.length>1&&(l=k[1].id),null!=l){let a=f.get(c.id),b=f.get(l),g=b?e.get(b.id):null,k=null==b?void 0:b.node.current;if(k&&g&&a&&b){var i,j;let c=as(k).some((a,b)=>h[b]!==a),e=bz(a,b),f=(i=a,j=b,!!bw(i)&&!!bw(j)&&!!bz(i,j)&&i.data.current.sortable.index<j.data.current.sortable.index),l=c||!e?{x:0,y:0}:{x:f?d.width-g.width:0,y:f?d.height-g.height:0},m={x:g.left,y:g.top};return l.x&&l.y?m:S(m,l)}}}};function bz(a,b){return!!bw(a)&&!!bw(b)&&a.data.current.sortable.containerId===b.data.current.sortable.containerId}let bA=a=>{let b,{containerNodeRect:c,draggingNodeRect:d,transform:e}=a;return d&&c?(b={...e},d.top+e.y<=c.top?b.y=c.top-d.top:d.bottom+e.y>=c.top+c.height&&(b.y=c.top+c.height-d.bottom),d.left+e.x<=c.left?b.x=c.left-d.left:d.right+e.x>=c.left+c.width&&(b.x=c.left+c.width-d.right),b):e},bB=a=>{let{transform:b}=a;return{...b,x:0}};var bC=c(50412),bD=c(50377),bE=c(91431),bF=c(96919);let bG=/^[a-zA-Z0-9_.\-]+$/,bH=[{value:"global",label:"To\xe0n cục / h\xe0nh vi hiện tại",description:"Giữ h\xe0nh vi hiện tại: mọi request d\xf9ng chung v\xf2ng xoay combo to\xe0n cục."},{value:"client_ip",label:"IP client",description:"Giữ c\xf9ng model khởi đầu cho c\xf9ng IP client cho đến khi hết TTL."},{value:"client_session",label:"IP client + phi\xean chat",description:"Ph\xf9 hợp nhất cho c\xf4ng cụ chat. Giữ c\xf9ng model cho c\xf9ng m\xe1y v\xe0 c\xf9ng phi\xean chat."}],bI=[{value:"fallback",label:"Ưu ti\xean fallback",description:"Thử model trong combo theo đ\xfang thứ tự hiển thị, lỗi th\xec fallback."},{value:"round-robin",label:"Round Robin",description:"Lu\xe2n phi\xean model đang bật được thử đầu ti\xean. C\xe1c t\xf9y chọn giữ d\xednh b\xean dưới vẫn được \xe1p dụng."},{value:"least-latency",label:"Độ trễ thấp nhất",description:"Ưu ti\xean target c\xf3 điểm health/độ trễ tốt nhất. Hữu \xedch cho LAN Ollama."},{value:"p2c",label:"P2C",description:"Power of Two Choices: lấy mẫu hai target khỏe rồi chọn target \xedt bận hơn."}],bJ=[{card:"border-sky-100 bg-sky-50/55 dark:border-sky-400/15 dark:bg-sky-950/10",panel:"border-sky-100/80 bg-white/80 dark:border-sky-400/15 dark:bg-zinc-950/60"},{card:"border-slate-200 bg-slate-50/80 dark:border-slate-500/15 dark:bg-slate-900/35",panel:"border-slate-200/80 bg-white/80 dark:border-slate-500/15 dark:bg-zinc-950/60"},{card:"border-emerald-100 bg-emerald-50/45 dark:border-emerald-400/15 dark:bg-emerald-950/10",panel:"border-emerald-100/80 bg-white/80 dark:border-emerald-400/15 dark:bg-zinc-950/60"},{card:"border-violet-100 bg-violet-50/45 dark:border-violet-400/15 dark:bg-violet-950/10",panel:"border-violet-100/80 bg-white/80 dark:border-violet-400/15 dark:bg-zinc-950/60"}],bK=Object.freeze({temperature:.3,top_p:.95,presence_penalty:0,max_tokens:4096,reasoning_budget:0,thinkingMode:"off",forceThinkingOffAboveChars:5e4}),bL=Object.freeze({temperature:.2,top_p:.95,presence_penalty:0,max_tokens:4096}),bM=[{value:"inherit",label:"Theo request gốc",description:"Giữ nguy\xean request gốc, kh\xf4ng inject thinking."},{value:"off",label:"Tắt thinking",description:"Gửi chat_template_kwargs.enable_thinking = false."},{value:"on",label:"Bật thinking",description:"Gửi chat_template_kwargs.enable_thinking = true."}],bN=[{value:"inherit",label:"Theo cấu h\xecnh hệ thống",description:"Sử dụng ch\xednh s\xe1ch lưu Prompt Logs chung của hệ thống."},{value:"enabled",label:"Lưu đầy đủ nội dung",description:"Cho ph\xe9p quản trị vi\xean xem lại to\xe0n bộ prompt v\xe0 phản hồi của c\xe1c request thuộc combo n\xe0y."},{value:"disabled",label:"Chỉ lưu thống k\xea",description:"Kh\xf4ng lưu nội dung hội thoại. Chỉ lưu metadata, model, provider, token, thời gian xử l\xfd v\xe0 c\xe1c thống k\xea vận h\xe0nh."}];function bO(a){return a&&"object"==typeof a&&!Array.isArray(a)}function bP(a,b){return Object.prototype.hasOwnProperty.call(a||{},b)}function bQ(a,{min:b,max:c,precision:d=3}={}){if(null==a||""===a)return;let e=Number(a);if(Number.isFinite(e))return Number(Math.min(c,Math.max(b,e)).toFixed(d))}function bR(a,{min:b,max:c}={}){let d=bQ(a,{min:b,max:c,precision:0});return void 0===d?void 0:Math.trunc(d)}function bS(a){let b=bV(a).toLowerCase();return"enabled"===b||"disabled"===b?b:"inherit"}function bT(a={}){let b=bO(a)?a:{},c={};if(bP(b,"temperature")){let a=bQ(b.temperature,{min:0,max:2});void 0!==a&&(c.temperature=a)}if(bP(b,"top_p")||bP(b,"topP")){let a=bQ(b.top_p??b.topP,{min:.01,max:1});void 0!==a&&(c.top_p=a)}let d=b.presence_penalty??b.presencePenalty??b["presence-penalty"];if(bP(b,"presence_penalty")||bP(b,"presencePenalty")||bP(b,"presence-penalty")){let a=bQ(d,{min:-2,max:2});void 0!==a&&(c.presence_penalty=a)}let e=b.max_tokens??b.maxTokens??b.max_token;if(bP(b,"max_tokens")||bP(b,"maxTokens")||bP(b,"max_token")){let a=bR(e,{min:1,max:262144});void 0!==a&&(c.max_tokens=a)}return c}function bU(a={}){let b=bO(a)?a:{},c={};if(bP(b,"temperature")){let a=bQ(b.temperature,{min:0,max:2});void 0!==a&&(c.temperature=a)}if(bP(b,"top_p")){let a=bQ(b.top_p,{min:.01,max:1});void 0!==a&&(c.top_p=a)}let d=b.presence_penalty??b.presencePenalty??b["presence-penalty"];if(bP(b,"presence_penalty")||bP(b,"presencePenalty")||bP(b,"presence-penalty")){let a=bQ(d,{min:-2,max:2});void 0!==a&&(c.presence_penalty=a)}let e=b.max_tokens??b.maxTokens??b.max_token;if(bP(b,"max_tokens")||bP(b,"maxTokens")||bP(b,"max_token")){let a=bR(e,{min:1,max:262144});void 0!==a&&(c.max_tokens=a)}let f=b.reasoning_budget??b.reasoningBudget??b["reasoning-budget"];if(bP(b,"reasoning_budget")||bP(b,"reasoningBudget")||bP(b,"reasoning-budget")){let a=bR(f,{min:0,max:262144});void 0!==a&&(c.reasoning_budget=a)}let g=b.forceThinkingOffAboveChars??b.forceThinkingOffChars??b.force_thinking_off_above_chars;if(bP(b,"forceThinkingOffAboveChars")||bP(b,"forceThinkingOffChars")||bP(b,"force_thinking_off_above_chars")){let a=bR(g,{min:0,max:1e6});void 0!==a&&(c.forceThinkingOffAboveChars=a)}let h=b.forceThinkingOffRequestOverrides??b.forceThinkingOffOverrides??b.autoOffRequestOverrides;if(bP(b,"forceThinkingOffRequestOverrides")||bP(b,"forceThinkingOffOverrides")||bP(b,"autoOffRequestOverrides")){let a=bT(h);Object.keys(a).length>0&&(c.forceThinkingOffRequestOverrides=a)}let i=function(a){if(!0===a)return"on";if(!1===a)return"off";let b=bV(a).toLowerCase();return["on","true","1","enable","enabled"].includes(b)?"on":["off","false","0","disable","disabled"].includes(b)?"off":void 0}(b.thinkingMode??b.thinking);return i&&(c.thinkingMode=i),c}function bV(a){return String(a||"").trim()}function bW(a={}){return Array.isArray(a.disabledModels)?[...new Set(a.disabledModels.map(a=>bV(a)).filter(Boolean))]:[]}function bX(a={}){let b=a.fallbackStrategy||"fallback";return{...a,fallbackStrategy:b,stickyScope:a.stickyScope||"global",stickyTtlMinutes:Number(a.stickyTtlMinutes||120),stickyFallbackToClientIp:!1!==a.stickyFallbackToClientIp,lanHealthEnabled:!1!==a.lanHealthEnabled,healthCheckPath:a.healthCheckPath||"/api/tags",healthCheckIntervalMs:Number(a.healthCheckIntervalMs||15e3),requiredTags:Array.isArray(a.requiredTags)?a.requiredTags:[],modelTagRules:a.modelTagRules||a.modelTags||a.tagRules||{},disabledModels:bW(a),requestOverrides:bU(a.requestOverrides||{}),contentLoggingMode:bS(a.contentLoggingMode)}}function bY(a={}){let b={...a};b.disabledModels=bW(a),"fallback"===(b.fallbackStrategy||"fallback")&&delete b.fallbackStrategy,b.disabledModels.length||delete b.disabledModels;let c=bS(b.contentLoggingMode);"inherit"===c?delete b.contentLoggingMode:b.contentLoggingMode=c,b.requiredTags?.length||delete b.requiredTags;let d=bU(b.requestOverrides||{});return Object.keys(d).length?b.requestOverrides=d:delete b.requestOverrides,b.modelTagRules&&0!==Object.keys(b.modelTagRules).length||delete b.modelTagRules,"/api/tags"===b.healthCheckPath&&delete b.healthCheckPath,15e3===Number(b.healthCheckIntervalMs)&&delete b.healthCheckIntervalMs,!0===b.lanHealthEnabled&&delete b.lanHealthEnabled,Object.keys(b).length?b:null}function bZ(a=[]){return Array.isArray(a)?a.join(", "):String(a||"")}function b$(a=""){return String(a||"").split(/[\n,;]+/).map(a=>a.trim()).filter(Boolean)}function b_(a={}){return a&&"object"==typeof a?Object.entries(a).map(([a,b])=>`${a}: ${Array.isArray(b)?b.join(", "):String(b||"")}`).join("\n"):""}function b0(a){return"string"==typeof a?a:a&&"object"==typeof a&&(a.value||a.model||a.id)||""}function b1(a={}){let b=bV(a.provider);return bV(a.providerSpecificData?.prefix)||bV(a.prefix)||bV((0,bF.wG)(b))||b}function b2(a={}){return bV(a.email)||bV(a.accountName)||bV(a.displayName)||bV(a.name)||bV(a.providerSpecificData?.nodeName)||bV(a.id)}function b3(a){return a&&"object"==typeof a?bV(a.connectionId||a.connection_id):""}function b4(a){let b=b0(a),c=b3(a);return b?c?`${b}@@${c}`:b:""}function b5(a){return"string"==typeof a?a:a&&"object"==typeof a?bV(a.label)||bV(a.displayName)||bV(a.name)||b0(a):""}function b6(a){if(!a||"object"!=typeof a)return b0(a);let b=b0(a);return b?Object.fromEntries(Object.entries({model:b,connectionId:b3(a)||void 0,label:b5(a)||void 0,provider:bV(a.provider)||void 0,accountName:bV(a.accountName||a.account_name)||void 0,weight:Number(a.weight||0)>0?Number(a.weight):void 0}).filter(([,a])=>void 0!==a&&""!==a)):""}function b7(a,b=!0){let c=b6(a),d=b4(c);return{value:d,enabled:b,target:c,label:b5(c)||d,subtitle:function(a){if(!a||"object"!=typeof a)return"";let b=b3(a),c=b0(a);return b?`T\xe0i khoản cố định • ${b}${c?` • ${c}`:""}`:""}(c)}}function b8(a={}){return bV(a.defaultModel)||bV(a.providerSpecificData?.defaultModel)||bV(a.model)||""}function b9(a,b,c,d=""){let e=bV(c);!e||b.has(e)||(b.add(e),a.push({value:e,label:bV(d)||e}))}function ca(a={},b={}){let c=[],d=new Set,e=bV(a.provider),f=[...new Set([b1(a),bV((0,bF.wG)(e)),e].filter(Boolean))];for(let a of(0,bE.KC)(e)||[])a?.type&&"llm"!==a.type||b9(c,d,a.id,a.name||a.id);for(let[a,e]of Object.entries(b||{})){let b=bV(e),g=f.find(a=>a&&b.startsWith(`${a}/`));if(!g)continue;let h=b.slice(g.length+1);b9(c,d,h,a||h)}return b9(c,d,b8(a),"Model mặc định"),c}function cb(a={},{disabledModels:b=[],requestOverrides:c,contentLoggingMode:d}={}){let e={...a},f=[...new Set((b||[]).map(a=>bV(a)).filter(Boolean))];if(f.length>0?e.disabledModels=f:delete e.disabledModels,void 0!==c){let a=bU(c||{});Object.keys(a).length?e.requestOverrides=a:delete e.requestOverrides}if(void 0!==d){let a=bS(d);"inherit"===a?delete e.contentLoggingMode:e.contentLoggingMode=a}return bY(e)}function cc(){let[a,b]=(0,x.useState)([]),[c,d]=(0,x.useState)(!0),[e,f]=(0,x.useState)(!1),[g,h]=(0,x.useState)(null),[i,j]=(0,x.useState)([]),[k,l]=(0,x.useState)(!1),[m,n]=(0,x.useState)(!1),[o,p]=(0,x.useState)({}),[q,r]=(0,x.useState)(""),[s,t]=(0,x.useState)(null),{copied:u,copy:v}=(0,bD.C)(),y=async()=>{try{let a=await fetch("/api/dashboard/combos",{cache:"no-store"}),c=await a.json();a.ok&&(b(c.combos||[]),p(c.comboStrategies||{}))}catch(a){console.log("Error fetching combo data:",a)}finally{d(!1)}},z=async()=>{if(!k&&!m){n(!0);try{let a=await fetch("/api/providers",{cache:"no-store"}),b=await a.json();a.ok&&(j(b.connections||[]),l(!0))}catch(a){console.log("Error loading provider accounts:",a)}finally{n(!1)}}},A=async()=>{f(!0),z()},B=async a=>{h(a),z()},C=async a=>{await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({comboStrategies:a})}),p(a)},D=async a=>{let{disabledModels:b=[],requestOverrides:c,contentLoggingMode:d,...e}=a;try{let a=await fetch("/api/combos",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(a.ok){let a=cb({},{disabledModels:b,requestOverrides:c,contentLoggingMode:d});a&&await C({...o,[e.name]:a}),await y(),r(e.name),f(!1)}else{let b=await a.json();alert(b.error||"Tạo combo thất bại")}}catch(a){console.log("Error creating combo:",a)}},E=async(a,b)=>{let{disabledModels:c=[],requestOverrides:d,contentLoggingMode:e,...f}=b,i=g?.name;try{let b=await fetch(`/api/combos/${a}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(f)});if(b.ok){let a={...o};i&&i!==f.name&&a[i]&&(a[f.name]=a[i],delete a[i]);let b=cb(a[f.name]||{},{disabledModels:c,requestOverrides:d,contentLoggingMode:e});b?a[f.name]=b:delete a[f.name],await C(a),await y(),r(f.name),h(null)}else{let a=await b.json();alert(a.error||"Cập nhật combo thất bại")}}catch(a){console.log("Error updating combo:",a)}},F=async c=>{let d=a.find(a=>a.id===c);t({title:"X\xf3a combo",message:"Bạn c\xf3 chắc muốn x\xf3a combo n\xe0y?",onConfirm:async()=>{t(null);try{if((await fetch(`/api/combos/${c}`,{method:"DELETE"})).ok){if(d?.name&&o[d.name]){let a={...o};delete a[d.name],await C(a)}b(a=>{let b=a.filter(a=>a.id!==c);return d?.name===q&&r(b[0]?.name||""),b})}}catch(a){console.log("Error deleting combo:",a)}}})},G=async(a,b)=>{try{let c={...o};if(b)c[a]=bX(c[a]);else{let b=function(a={}){return bY({...a,fallbackStrategy:"fallback"})}(c[a]||{});b?c[a]=b:delete c[a]}await C(c)}catch(a){console.log("Error updating combo strategy:",a)}},H=async(a,b)=>{try{let c={...o},d=bY({...bX(c[a]),...b});d?c[a]=d:delete c[a],await C(c)}catch(a){console.log("Error updating combo routing settings:",a)}},I=a.find(a=>a.name===q)||a[0]||null,J=I?Math.max(0,a.findIndex(a=>a.id===I.id)):0;return c?(0,w.jsx)("div",{className:"grid gap-4",children:[1,2,3].map(a=>(0,w.jsx)("div",{className:"h-36 animate-pulse rounded-2xl border border-border bg-surface"},a))}):(0,w.jsxs)("div",{className:"space-y-6",children:[(0,w.jsxs)("div",{className:"flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between",children:[(0,w.jsxs)("div",{children:[(0,w.jsx)("h1",{className:"text-2xl font-bold text-text-main",children:"Combo model"}),(0,w.jsx)("p",{className:"mt-1 text-sm text-text-muted",children:"Tạo combo model với fallback, round-robin, độ trễ thấp nhất, P2C v\xe0 routing theo trạng th\xe1i health của LAN Ollama."})]}),(0,w.jsxs)("button",{type:"button",onClick:A,className:"inline-flex items-center justify-center gap-2 rounded-xl bg-primary px-4 py-2 text-sm font-medium text-white hover:opacity-90",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"add"}),"Tạo combo"]})]}),0===a.length?(0,w.jsxs)("div",{className:"rounded-2xl border border-dashed border-border bg-surface p-12 text-center",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-4xl text-text-muted",children:"layers"}),(0,w.jsx)("h2",{className:"mt-3 text-lg font-semibold text-text-main",children:"Chưa c\xf3 combo n\xe0o"}),(0,w.jsx)("p",{className:"mt-1 text-sm text-text-muted",children:"Tạo combo model c\xf3 hỗ trợ fallback."}),(0,w.jsx)("button",{type:"button",onClick:A,className:"mt-4 rounded-xl bg-primary px-4 py-2 text-sm font-medium text-white hover:opacity-90",children:"Tạo combo"})]}):(0,w.jsxs)("div",{className:"space-y-4",children:[(0,w.jsx)("div",{className:"rounded-2xl border border-border bg-surface/80 p-4 shadow-sm dark:bg-zinc-950/70",children:(0,w.jsxs)("div",{className:"flex flex-col gap-3 lg:flex-row lg:items-end lg:justify-between",children:[(0,w.jsxs)("label",{className:"block min-w-0 flex-1",children:[(0,w.jsx)("span",{className:"mb-1 block text-xs font-semibold uppercase tracking-wide text-text-muted",children:"Combo đang xem"}),(0,w.jsx)("select",{value:I?.name||"",onChange:a=>r(a.target.value),className:"w-full rounded-xl border border-border bg-white px-4 py-2.5 text-sm font-semibold text-text-main outline-none transition focus:border-primary dark:bg-zinc-900",children:a.map(a=>(0,w.jsxs)("option",{value:a.name,children:[a.name," • ",(a.models||[]).length," model"]},a.id))})]}),(0,w.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-xs text-text-muted",children:[(0,w.jsxs)("span",{className:"rounded-full bg-background px-3 py-1 dark:bg-zinc-900",children:["Tổng ",a.length," combo"]}),I?(0,w.jsxs)("span",{className:"rounded-full bg-primary/10 px-3 py-1 font-medium text-primary",children:["Đang hiển thị: ",I.name]}):null]})]})}),I?(0,w.jsx)(cd,{combo:I,comboIndex:J,copied:u,onCopy:v,onEdit:()=>B(I),onDelete:()=>F(I.id),comboStrategy:o[I.name]||{},onToggleRoundRobin:a=>G(I.name,a),onUpdateComboStrategy:a=>H(I.name,a)},I.id):null]}),(0,w.jsx)(cj,{isOpen:e,comboStrategy:{},onClose:()=>f(!1),onSave:D,activeProviders:i,providersLoading:m}),(0,w.jsx)(cj,{isOpen:!!g,combo:g,comboStrategy:o[g?.name]||{},onClose:()=>h(null),onSave:a=>E(g.id,a),activeProviders:i,providersLoading:m}),(0,w.jsx)(bC.uo,{isOpen:!!s,onClose:()=>t(null),onConfirm:s?.onConfirm,title:s?.title||"X\xe1c nhận",message:s?.message,variant:"danger"})]})}function cd({combo:a,comboIndex:b=0,copied:c,onCopy:d,onEdit:e,onDelete:f,comboStrategy:g={},onToggleRoundRobin:h,onUpdateComboStrategy:i}){let j=bX(g||{}),k=j.fallbackStrategy||"fallback",l=bI.find(a=>a.value===k)||bI[0],m=j.stickyScope||"global",n=bH.find(a=>a.value===m)||bH[0],o=bW(g),p=bJ[b%bJ.length],[q,r]=(0,x.useState)(bZ(j.requiredTags)),[s,t]=(0,x.useState)(b_(j.modelTagRules));return(0,x.useEffect)(()=>{r(bZ(j.requiredTags)),t(b_(j.modelTagRules))},[a.name,JSON.stringify(j.requiredTags||[]),JSON.stringify(j.modelTagRules||{})]),(0,w.jsxs)("div",{className:`rounded-2xl border p-5 shadow-sm transition-colors ${p.card}`,children:[(0,w.jsxs)("div",{className:"flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between",children:[(0,w.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,w.jsxs)("div",{className:"flex items-center gap-2",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-primary",children:"layers"}),(0,w.jsx)("h3",{className:"truncate text-lg font-semibold text-text-main",children:a.name})]}),(0,w.jsxs)("p",{className:"mt-1 text-sm text-text-muted",children:[(a.models||[]).length," model đang bật",o.length>0?` • ${o.length} đ\xe3 tắt`:""]})]}),(0,w.jsxs)("div",{className:"flex items-center gap-1",children:[(0,w.jsx)(ce,{icon:c===`combo-${a.id}`?"check":"content_copy",title:"Copy t\xean combo",onClick:()=>d(a.name,`combo-${a.id}`)}),(0,w.jsx)(ce,{icon:"edit",title:"Chỉnh sửa",onClick:e}),(0,w.jsx)(ce,{icon:"delete",title:"X\xf3a",onClick:f,danger:!0})]})]}),(0,w.jsxs)("div",{className:"mt-4 flex flex-wrap gap-2",children:[0===(a.models||[]).length?(0,w.jsx)("span",{className:"rounded-lg bg-background px-2 py-1 text-xs text-text-muted",children:"Chưa c\xf3 model đang bật"}):(a.models||[]).slice(0,5).map((a,b)=>(0,w.jsx)("span",{className:"rounded-lg bg-background px-2 py-1 font-mono text-xs text-text-main",children:b5(a)},`${b4(a)}-${b}`)),(a.models||[]).length>5&&(0,w.jsxs)("span",{className:"rounded-lg bg-background px-2 py-1 text-xs text-text-muted",children:["+",a.models.length-5," model nữa"]}),o.length>0&&(0,w.jsxs)("span",{className:"rounded-lg bg-red-500/10 px-2 py-1 text-xs text-red-500",children:[o.length," đ\xe3 tắt"]}),(function(a={}){let b=bU(a),c=[];if(void 0!==b.temperature&&c.push(`temp ${b.temperature}`),void 0!==b.top_p&&c.push(`top_p ${b.top_p}`),void 0!==b.presence_penalty&&c.push(`presence ${b.presence_penalty}`),void 0!==b.max_tokens&&c.push(`max ${b.max_tokens}`),void 0!==b.reasoning_budget&&c.push(`reasoning ${b.reasoning_budget}`),b.forceThinkingOffAboveChars>0){let a=b.forceThinkingOffRequestOverrides||{},d=[];void 0!==a.temperature&&d.push(`temp ${a.temperature}`),void 0!==a.top_p&&d.push(`top_p ${a.top_p}`),void 0!==a.presence_penalty&&d.push(`presence ${a.presence_penalty}`),void 0!==a.max_tokens&&d.push(`max ${a.max_tokens}`),c.push(`auto off >${b.forceThinkingOffAboveChars} chars${d.length?` (${d.join(", ")})`:""}`)}return"off"===b.thinkingMode&&c.push("thinking off"),"on"===b.thinkingMode&&c.push("thinking on"),c})(j.requestOverrides).map(a=>(0,w.jsx)("span",{className:"rounded-lg bg-primary/10 px-2 py-1 text-xs font-medium text-primary",children:a},a)),"inherit"!==j.contentLoggingMode?(0,w.jsxs)("span",{className:`rounded-lg px-2 py-1 text-xs font-medium ${"disabled"===j.contentLoggingMode?"bg-amber-500/10 text-amber-600":"bg-emerald-500/10 text-emerald-600"}`,children:["prompt logs ",j.contentLoggingMode]}):null]}),(0,w.jsxs)("div",{className:`mt-5 rounded-xl border p-4 ${p.panel}`,children:[(0,w.jsxs)("div",{className:"flex flex-col gap-3 md:flex-row md:items-center md:justify-between",children:[(0,w.jsxs)("div",{children:[(0,w.jsx)("h4",{className:"font-semibold text-text-main",children:"Chiến lược routing"}),(0,w.jsx)("p",{className:"mt-1 text-sm text-text-muted",children:l.description})]}),(0,w.jsx)("select",{value:k,onChange:a=>i({fallbackStrategy:a.target.value}),className:"rounded-lg border border-border bg-surface px-3 py-2 text-sm text-text-main outline-none focus:border-primary",children:bI.map(a=>(0,w.jsx)("option",{value:a.value,children:a.label},a.value))})]}),(0,w.jsx)(ci,{value:j.requestOverrides||{},onChange:a=>i({requestOverrides:a}),compact:!0}),(0,w.jsx)(cg,{value:j.contentLoggingMode,onChange:a=>i({contentLoggingMode:a}),compact:!0}),("least-latency"===k||"p2c"===k)&&(0,w.jsxs)("div",{className:"mt-4 rounded-xl border border-primary/15 bg-surface p-3",children:[(0,w.jsxs)("label",{className:"flex items-start gap-2 text-sm text-text-muted",children:[(0,w.jsx)("input",{type:"checkbox",checked:!1!==j.lanHealthEnabled,onChange:a=>i({lanHealthEnabled:a.target.checked}),className:"mt-0.5 h-3.5 w-3.5 accent-primary"}),(0,w.jsxs)("span",{children:[(0,w.jsx)("span",{className:"font-medium text-text-main",children:"Routing theo trạng th\xe1i health LAN"}),(0,w.jsx)("span",{className:"mt-1 block text-xs",children:"D\xf9ng dữ liệu health v\xe0 circuit breaker khi xếp hạng target trong combo."})]})]}),(0,w.jsxs)("div",{className:"mt-3 grid gap-3 md:grid-cols-2",children:[(0,w.jsxs)("label",{className:"block",children:[(0,w.jsx)("span",{className:"mb-1 block text-xs font-medium text-text-muted",children:"Đường dẫn health"}),(0,w.jsx)("input",{value:j.healthCheckPath||"/api/tags",onChange:a=>i({healthCheckPath:a.target.value||"/api/tags"}),placeholder:"/api/tags",className:"w-full rounded-lg border border-border bg-background px-2 py-1.5 font-mono text-xs text-text-main outline-none focus:border-primary"})]}),(0,w.jsxs)("label",{className:"block",children:[(0,w.jsx)("span",{className:"mb-1 block text-xs font-medium text-text-muted",children:"Chu kỳ kiểm tra (ms)"}),(0,w.jsx)("input",{type:"number",min:"1000",value:j.healthCheckIntervalMs||15e3,onChange:a=>i({healthCheckIntervalMs:Number(a.target.value)||15e3}),className:"w-full rounded-lg border border-border bg-background px-2 py-1.5 text-xs text-text-main outline-none focus:border-primary"})]})]}),(0,w.jsxs)("div",{className:"mt-3 grid gap-3 md:grid-cols-2",children:[(0,w.jsxs)("label",{className:"block",children:[(0,w.jsx)("span",{className:"mb-1 block text-xs font-medium text-text-muted",children:"Tag endpoint bắt buộc"}),(0,w.jsx)("input",{value:q,onChange:a=>r(a.target.value),onBlur:()=>i({requiredTags:b$(q)}),onKeyDown:a=>"Enter"===a.key&&a.currentTarget.blur(),placeholder:"gpu, vram:8gb",className:"w-full rounded-lg border border-border bg-background px-2 py-1.5 font-mono text-xs text-text-main outline-none focus:border-primary"}),(0,w.jsx)("span",{className:"mt-1 block text-[11px] text-text-muted",children:"Mọi endpoint được route đều phải c\xf3 c\xe1c tag n\xe0y."})]}),(0,w.jsxs)("label",{className:"block",children:[(0,w.jsx)("span",{className:"mb-1 block text-xs font-medium text-text-muted",children:"Quy tắc tag theo model"}),(0,w.jsx)("textarea",{value:s,onChange:a=>t(a.target.value),onBlur:()=>i({modelTagRules:function(a=""){let b={};for(let c of String(a||"").split(/\n+/)){let a=c.trim();if(!a)continue;let d=a.indexOf(":");if(-1===d)continue;let e=a.slice(0,d).trim(),f=b$(a.slice(d+1));e&&f.length&&(b[e]=f)}return b}(s)}),placeholder:"qwen3:32b: gpu, vram:16gb\nqwen3:8b: model_support:qwen3:8b",rows:3,className:"w-full rounded-lg border border-border bg-background px-2 py-1.5 font-mono text-xs text-text-main outline-none focus:border-primary"})]})]})]}),"round-robin"===k&&(0,w.jsxs)("div",{className:"mt-4 rounded-xl border border-primary/15 bg-surface p-3",children:[(0,w.jsxs)("div",{className:"mb-3 flex items-center justify-between gap-3",children:[(0,w.jsxs)("div",{className:"flex items-center gap-2 text-sm font-semibold text-primary",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"sticky_note_2"}),"Round Robin giữ d\xednh"]}),(0,w.jsxs)("label",{className:"flex items-center gap-2 text-xs text-text-muted",children:[(0,w.jsx)("input",{type:"checkbox",checked:"round-robin"===k,onChange:a=>h(a.target.checked),className:"h-3.5 w-3.5 accent-primary"}),"Bật"]})]}),(0,w.jsxs)("div",{className:"grid gap-3 md:grid-cols-2",children:[(0,w.jsxs)("label",{className:"block",children:[(0,w.jsx)("span",{className:"mb-1 block text-xs font-medium text-text-muted",children:"Chế độ giữ d\xednh"}),(0,w.jsx)("select",{value:m,onChange:a=>i({stickyScope:a.target.value}),className:"w-full rounded-lg border border-border bg-background px-2 py-1.5 text-xs text-text-main outline-none focus:border-primary",children:bH.map(a=>(0,w.jsx)("option",{value:a.value,children:a.label},a.value))}),(0,w.jsx)("span",{className:"mt-1 block text-[11px] text-text-muted",children:n.description})]}),(0,w.jsxs)("label",{className:"block",children:[(0,w.jsx)("span",{className:"mb-1 block text-xs font-medium text-text-muted",children:"TTL giữ d\xednh (ph\xfat)"}),(0,w.jsx)("input",{type:"number",min:"1",value:j.stickyTtlMinutes||120,onChange:a=>i({stickyTtlMinutes:Number(a.target.value)||120}),className:"w-full rounded-lg border border-border bg-background px-2 py-1.5 text-xs text-text-main outline-none focus:border-primary"})]})]}),(0,w.jsxs)("label",{className:"mt-3 flex items-start gap-2 text-xs text-text-muted",children:[(0,w.jsx)("input",{type:"checkbox",checked:!1!==j.stickyFallbackToClientIp,onChange:a=>i({stickyFallbackToClientIp:a.target.checked}),className:"mt-0.5 h-3.5 w-3.5 accent-primary"}),"Nếu thiếu chat session id, fallback về IP client thay v\xec xoay to\xe0n cục."]})]})]})]})}function ce({icon:a,title:b,onClick:c,danger:d=!1}){return(0,w.jsx)("button",{type:"button",onClick:a=>{a.stopPropagation(),c?.()},className:`rounded-lg p-2 transition ${d?"text-red-500 hover:bg-red-500/10":"text-text-muted hover:bg-background hover:text-primary"}`,title:b,"aria-label":b,children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:a})})}function cf({id:a,index:b,model:c,subtitle:d="",enabled:e,isFirst:f,isLast:g,onEdit:h,onMoveUp:i,onMoveDown:j,onRemove:k,onToggleEnabled:l}){let{attributes:n,listeners:o,setNodeRef:p,transform:q,isDragging:r}=function(a){var b,c,d,e;let{animateLayoutChanges:f=br,attributes:g,disabled:h,data:i,getNewIndex:j=bq,id:k,strategy:l,resizeObserverConfig:n,transition:o=bs}=a,{items:p,containerId:q,activeIndex:r,disabled:s,disableTransforms:t,sortedRects:u,overIndex:v,useDragOverlay:w,strategy:y}=(0,x.useContext)(bo),z=(b=h,c=s,"boolean"==typeof b?{draggable:b,droppable:!1}:{draggable:null!=(d=null==b?void 0:b.draggable)?d:c.draggable,droppable:null!=(e=null==b?void 0:b.droppable)?e:c.droppable}),A=p.indexOf(k),B=(0,x.useMemo)(()=>({sortable:{containerId:q,index:A,items:p},...i}),[q,i,A,p]),C=(0,x.useMemo)(()=>p.slice(p.indexOf(k)),[p,k]),{rect:D,node:E,isOver:F,setNodeRef:G}=function(a){let{data:b,disabled:c=!1,id:d,resizeObserverConfig:e}=a,f=P("Droppable"),{active:g,dispatch:h,over:i,measureDroppableContainers:j}=(0,x.useContext)(a8),k=(0,x.useRef)({disabled:c}),l=(0,x.useRef)(!1),n=(0,x.useRef)(null),o=(0,x.useRef)(null),{disabled:p,updateMeasurementsFor:q,timeout:r}={...bh,...e},s=K(null!=q?q:d),t=aX({callback:(0,x.useCallback)(()=>{if(!l.current){l.current=!0;return}null!=o.current&&clearTimeout(o.current),o.current=setTimeout(()=>{j(Array.isArray(s.current)?s.current:[s.current]),o.current=null},r)},[r]),disabled:p||!g}),[u,v]=M((0,x.useCallback)((a,b)=>{t&&(b&&(t.unobserve(b),l.current=!1),a&&t.observe(a))},[t])),w=K(b);return(0,x.useEffect)(()=>{t&&u.current&&(t.disconnect(),l.current=!1,t.observe(u.current))},[u,t]),(0,x.useEffect)(()=>(h({type:m.RegisterDroppable,element:{id:d,key:f,disabled:c,node:u,rect:n,data:w}}),()=>h({type:m.UnregisterDroppable,key:f,id:d})),[d]),(0,x.useEffect)(()=>{c!==k.current.disabled&&(h({type:m.SetDroppableDisabled,id:d,key:f,disabled:c}),k.current.disabled=c)},[d,f,c,h]),{active:g,rect:n,isOver:(null==i?void 0:i.id)===d,node:u,over:i,setNodeRef:v}}({id:k,data:B,disabled:z.droppable,resizeObserverConfig:{updateMeasurementsFor:C,...n}}),{active:H,activatorEvent:J,activeNodeRect:L,attributes:N,setNodeRef:O,listeners:Q,isDragging:R,over:S,setActivatorNodeRef:U,transform:W}=function(a){let{id:b,data:c,disabled:d=!1,attributes:e}=a,f=P("Draggable"),{activators:g,activatorEvent:h,active:i,activeNodeRect:j,ariaDescribedById:k,draggableNodes:l,over:m}=(0,x.useContext)(a8),{role:n=bg,roleDescription:o="draggable",tabIndex:p=0}=null!=e?e:{},q=(null==i?void 0:i.id)===b,r=(0,x.useContext)(q?bd:bf),[s,t]=M(),[u,v]=M(),w=(0,x.useMemo)(()=>g.reduce((a,c)=>{let{eventName:d,handler:e}=c;return a[d]=a=>{e(a,b)},a},{}),[g,b]),y=K(c);return I(()=>(l.set(b,{id:b,key:f,node:s,activatorNode:u,data:y}),()=>{let a=l.get(b);a&&a.key===f&&l.delete(b)}),[l,b]),{active:i,activatorEvent:h,activeNodeRect:j,attributes:(0,x.useMemo)(()=>({role:n,tabIndex:p,"aria-disabled":d,"aria-pressed":!!q&&n===bg||void 0,"aria-roledescription":o,"aria-describedby":k.draggable}),[d,n,p,q,o,k.draggable]),isDragging:q,listeners:d?void 0:w,node:s,over:m,setNodeRef:t,setActivatorNodeRef:v,transform:r}}({id:k,data:B,attributes:{...bv,...g},disabled:z.draggable}),X=function(){for(var a=arguments.length,b=Array(a),c=0;c<a;c++)b[c]=arguments[c];return(0,x.useMemo)(()=>a=>{b.forEach(b=>b(a))},b)}(G,O),Y=!!H,Z=Y&&!t&&bj(r)&&bj(v),$=!w&&R,_=$&&Z?W:null,aa=Z?null!=_?_:(null!=l?l:y)({rects:u,activeNodeRect:L,activeIndex:r,overIndex:v,index:A}):null,ab=bj(r)&&bj(v)?j({id:k,items:p,activeIndex:r,overIndex:v}):A,ac=null==H?void 0:H.id,ad=(0,x.useRef)({activeId:ac,items:p,newIndex:ab,containerId:q}),ae=p!==ad.current.items,af=f({active:H,containerId:q,isDragging:R,isSorting:Y,id:k,index:A,items:p,newIndex:ad.current.newIndex,previousItems:ad.current.items,previousContainerId:ad.current.containerId,transition:o,wasDragging:null!=ad.current.activeId}),ag=function(a){let{disabled:b,index:c,node:d,rect:e}=a,[f,g]=(0,x.useState)(null),h=(0,x.useRef)(c);return I(()=>{if(!b&&c!==h.current&&d.current){let a=e.current;if(a){let b=aq(d.current,{ignoreTransform:!0}),c={x:a.left-b.left,y:a.top-b.top,scaleX:a.width/b.width,scaleY:a.height/b.height};(c.x||c.y)&&g(c)}}c!==h.current&&(h.current=c)},[b,c,d,e]),(0,x.useEffect)(()=>{f&&g(null)},[f]),f}({disabled:!af,index:A,node:E,rect:D});return(0,x.useEffect)(()=>{Y&&ad.current.newIndex!==ab&&(ad.current.newIndex=ab),q!==ad.current.containerId&&(ad.current.containerId=q),p!==ad.current.items&&(ad.current.items=p)},[Y,ab,q,p]),(0,x.useEffect)(()=>{if(ac===ad.current.activeId)return;if(ac&&!ad.current.activeId){ad.current.activeId=ac;return}let a=setTimeout(()=>{ad.current.activeId=ac},50);return()=>clearTimeout(a)},[ac]),{active:H,activeIndex:r,attributes:N,data:B,rect:D,index:A,newIndex:ab,items:p,isOver:F,isSorting:Y,isDragging:R,listeners:Q,node:E,overIndex:v,over:S,setNodeRef:X,setActivatorNodeRef:U,setDroppableNodeRef:G,setDraggableNodeRef:O,transform:null!=ag?ag:aa,transition:ag||ae&&ad.current.newIndex===A?bu:(!$||T(J))&&o&&(Y||af)?V.Transition.toString({...o,property:bt}):void 0}}({id:a}),s={transform:V.Transform.toString(q),opacity:r?.4:1,zIndex:r?999:void 0},[t,u]=(0,x.useState)(!1),[v,y]=(0,x.useState)(c),z=()=>{let a=v.trim();a&&a!==c?h(a):y(c),u(!1)};return(0,w.jsxs)("div",{ref:p,style:s,className:`flex items-center gap-3 rounded-xl border p-3 transition ${e?"border-border bg-background":"border-red-200 bg-red-50/70 opacity-75 dark:border-red-500/30 dark:bg-red-500/10"}`,children:[(0,w.jsx)("button",{type:"button",className:"cursor-grab text-text-muted active:cursor-grabbing",...n,...o,title:"K\xe9o để sắp xếp lại",children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"drag_indicator"})}),(0,w.jsx)("span",{className:`flex h-7 w-7 shrink-0 items-center justify-center rounded-full text-xs font-semibold ${e?"bg-primary/10 text-primary":"bg-red-100 text-red-600 dark:bg-red-500/20 dark:text-red-300"}`,children:b+1}),t?(0,w.jsx)("input",{autoFocus:!0,value:v,onChange:a=>y(a.target.value),onBlur:z,onKeyDown:a=>{"Enter"===a.key&&z(),"Escape"===a.key&&(y(c),u(!1))},className:"min-w-0 flex-1 rounded border border-primary/40 bg-background px-2 py-1 font-mono text-xs text-text-main outline-none"}):(0,w.jsxs)("button",{type:"button",onClick:()=>u(!0),className:"min-w-0 flex-1 text-left",title:"Bấm để sửa model",children:[(0,w.jsx)("span",{className:`block truncate font-mono text-xs ${e?"text-text-main":"text-text-muted line-through"}`,children:c}),d?(0,w.jsx)("span",{className:"mt-0.5 block truncate text-[11px] text-text-muted",children:d}):null]}),(0,w.jsx)("button",{type:"button",onClick:l,className:`rounded-lg p-1.5 transition ${e?"text-green-600 hover:bg-green-500/10":"text-red-500 hover:bg-red-500/10"}`,title:e?"Tắt model trong combo":"Bật model trong combo",children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:e?"toggle_on":"toggle_off"})}),(0,w.jsx)("button",{type:"button",onClick:i,disabled:f,className:"rounded-lg p-1.5 text-text-muted transition hover:bg-surface disabled:opacity-30",title:"Di chuyển l\xean",children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"arrow_upward"})}),(0,w.jsx)("button",{type:"button",onClick:j,disabled:g,className:"rounded-lg p-1.5 text-text-muted transition hover:bg-surface disabled:opacity-30",title:"Di chuyển xuống",children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"arrow_downward"})}),(0,w.jsx)("button",{type:"button",onClick:k,className:"rounded-lg p-1.5 text-red-500 transition hover:bg-red-500/10",title:"X\xf3a",children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"close"})})]})}function cg({value:a="inherit",onChange:b,compact:c=!1}){let d=bS(a),e=bN.find(a=>a.value===d)||bN[0];return(0,w.jsx)("div",{className:c?"mt-4 rounded-xl border border-amber-500/15 bg-surface p-3":"rounded-xl border border-amber-500/15 bg-amber-500/5 p-4",children:(0,w.jsxs)("div",{className:"grid gap-3 md:grid-cols-[minmax(0,1fr)_280px] md:items-center",children:[(0,w.jsxs)("div",{children:[(0,w.jsxs)("div",{className:"flex items-center gap-2 text-sm font-semibold text-text-main",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px] text-amber-500",children:"manage_search"}),"Prompt Logs cho combo n\xe0y"]}),(0,w.jsx)("p",{className:"mt-1 text-xs text-text-muted",children:e.description}),"disabled"===d?(0,w.jsx)("p",{className:"mt-1 text-[11px] font-medium text-amber-600",children:"Khi chạy request, Prompt Logs sẽ chỉ ghi metadata v\xe0 hiển thị [promptlogs disabled on this combo]."}):null]}),(0,w.jsx)("select",{value:d,onChange:a=>b?.(bS(a.target.value)),className:"w-full rounded-lg border border-border bg-surface px-3 py-2 text-sm text-text-main outline-none focus:border-primary",children:bN.map(a=>(0,w.jsx)("option",{value:a.value,children:a.label},a.value))})]})})}function ch({icon:a,label:b,children:c,active:d,muted:e=!1,className:f=""}){return(0,w.jsxs)("label",{className:`rounded-lg border p-3 transition ${d?"border-primary/30 bg-background shadow-sm":"border-border bg-background/60"} ${f}`,children:[(0,w.jsxs)("span",{className:"mb-2 flex items-center justify-between gap-2 text-xs font-medium text-text-main",children:[(0,w.jsxs)("span",{className:"flex min-w-0 items-center gap-1.5",children:[(0,w.jsx)("span",{className:`material-symbols-outlined text-[16px] ${d?"text-primary":"text-text-muted"}`,children:a}),(0,w.jsx)("span",{className:"truncate",children:b})]}),c?.toggle]}),c?.control,c?.hint?(0,w.jsx)("span",{className:"mt-1 block text-[11px] text-text-muted",children:c.hint}):null]})}function ci({value:a={},onChange:b,compact:c=!1}){let d=bU(a),e=void 0!==d.temperature,f=void 0!==d.top_p,g=void 0!==d.presence_penalty,h=void 0!==d.max_tokens,i=void 0!==d.reasoning_budget,j=void 0!==d.forceThinkingOffAboveChars,k=d.forceThinkingOffRequestOverrides||{},l=void 0!==k.temperature,m=void 0!==k.top_p,n=void 0!==k.presence_penalty,o=void 0!==k.max_tokens,p=l||m||n||o,q=d.thinkingMode||"inherit",r="inherit"!==q,s=e||f||g||h,t=r||i||j||p,u=a=>{b?.(bU({...d,...a}))},v=(a,c,e)=>{if(!c){let c={...d};delete c[a],"forceThinkingOffAboveChars"===a&&delete c.forceThinkingOffRequestOverrides,b?.(bU(c));return}u({[a]:e})},x=a=>{u({forceThinkingOffRequestOverrides:bT({...k,...a})})},y=(a,b,c)=>{let d={...k};if(!b){delete d[a],u({forceThinkingOffRequestOverrides:d});return}x({[a]:c})},z="w-full rounded-lg border border-border bg-surface px-2 py-1.5 text-sm text-text-main outline-none focus:border-primary disabled:opacity-50";return(0,w.jsxs)("div",{className:c?"mt-4 rounded-xl border border-sky-500/15 bg-surface p-3":"rounded-xl border border-sky-500/15 bg-sky-500/5 p-4",children:[(0,w.jsxs)("div",{className:"mb-3 flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between",children:[(0,w.jsxs)("div",{children:[(0,w.jsxs)("div",{className:"flex items-center gap-2 text-sm font-semibold text-text-main",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px] text-sky-500",children:"tune"}),"Tham số request Local endpoint"]}),(0,w.jsxs)("p",{className:"mt-1 text-xs text-text-muted",children:["Chỉ inject khi combo route 100% tới local endpoint: ",(0,w.jsx)("span",{className:"font-mono",children:"llama.cpp"}),", ",(0,w.jsx)("span",{className:"font-mono",children:"vLLM"})," hoặc ",(0,w.jsx)("span",{className:"font-mono",children:"Ollama"}),". Nếu combo mix local + cloud/provider kh\xe1c, BlueRouter bỏ qua block n\xe0y v\xe0 giữ nguy\xean request gốc."]})]}),!function(a={}){return Object.keys(bU(a)).length>0}(d)?(0,w.jsx)("span",{className:"inline-flex shrink-0 items-center rounded-full bg-background px-2 py-1 text-[11px] font-semibold text-text-muted",children:"Kh\xf4ng override"}):(0,w.jsx)("span",{className:"inline-flex shrink-0 items-center rounded-full bg-primary/10 px-2 py-1 text-[11px] font-semibold text-primary",children:"C\xf3 override"})]}),(0,w.jsxs)("div",{className:"grid gap-3 xl:grid-cols-2",children:[(0,w.jsxs)("div",{className:`rounded-xl border p-3 ${s?"border-primary/20 bg-primary/5":"border-border bg-background/40"}`,children:[(0,w.jsxs)("div",{className:"mb-3 flex items-center gap-2 text-xs font-semibold text-primary",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"graphic_eq"}),"Sampling ",(0,w.jsx)("span",{className:"font-normal text-text-muted",children:"(điều khiển lựa chọn token)"})]}),(0,w.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2 2xl:grid-cols-3",children:[(0,w.jsx)(ch,{icon:"thermostat",label:"Temperature",active:e,children:{toggle:(0,w.jsx)("input",{type:"checkbox",checked:e,onChange:a=>v("temperature",a.target.checked,bK.temperature),className:"h-3.5 w-3.5 accent-primary"}),control:(0,w.jsx)("input",{type:"number",min:"0",max:"2",step:"0.05",disabled:!e,value:e?d.temperature:bK.temperature,onChange:a=>u({temperature:a.target.value}),className:z}),hint:"0 = ổn định, 2 = s\xe1ng tạo."}}),(0,w.jsx)(ch,{icon:"filter_alt",label:"top_p",active:f,children:{toggle:(0,w.jsx)("input",{type:"checkbox",checked:f,onChange:a=>v("top_p",a.target.checked,bK.top_p),className:"h-3.5 w-3.5 accent-primary"}),control:(0,w.jsx)("input",{type:"number",min:"0.01",max:"1",step:"0.01",disabled:!f,value:f?d.top_p:bK.top_p,onChange:a=>u({top_p:a.target.value}),className:z}),hint:"0.01–1.0; 0.9–0.95 thường hợp coder/chat."}}),(0,w.jsx)(ch,{icon:"repeat",label:"presence_penalty",active:g,children:{toggle:(0,w.jsx)("input",{type:"checkbox",checked:g,onChange:a=>v("presence_penalty",a.target.checked,bK.presence_penalty),className:"h-3.5 w-3.5 accent-primary"}),control:(0,w.jsx)("input",{type:"number",min:"-2",max:"2",step:"0.05",disabled:!g,value:g?d.presence_penalty:bK.presence_penalty,onChange:a=>u({presence_penalty:a.target.value}),className:z}),hint:"-2–2; coder thường để 0, chỉ tăng nhẹ nếu hay lặp."}}),(0,w.jsx)(ch,{icon:"output",label:"max_tokens",active:h,className:"sm:col-span-2 2xl:col-span-1",children:{toggle:(0,w.jsx)("input",{type:"checkbox",checked:h,onChange:a=>v("max_tokens",a.target.checked,bK.max_tokens),className:"h-3.5 w-3.5 accent-primary"}),control:(0,w.jsx)("input",{type:"number",min:"1",max:"262144",step:"1",disabled:!h,value:h?d.max_tokens:bK.max_tokens,onChange:a=>u({max_tokens:a.target.value}),className:z}),hint:"Giới hạn output cho request."}})]})]}),(0,w.jsxs)("div",{className:`rounded-xl border p-3 ${t?"border-primary/20 bg-primary/5":"border-border bg-background/40"}`,children:[(0,w.jsxs)("div",{className:"mb-3 flex items-center gap-2 text-xs font-semibold text-primary",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"psychology"}),"Thinking ",(0,w.jsx)("span",{className:"font-normal text-text-muted",children:"(suy luận nội bộ)"})]}),(0,w.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2 2xl:grid-cols-3",children:[(0,w.jsxs)("label",{className:`rounded-lg border p-3 transition ${r?"border-primary/30 bg-background shadow-sm":"border-border bg-background/60"}`,children:[(0,w.jsxs)("span",{className:"mb-2 flex items-center gap-1.5 text-xs font-medium text-text-main",children:[(0,w.jsx)("span",{className:`material-symbols-outlined text-[16px] ${r?"text-primary":"text-text-muted"}`,children:"psychology_alt"}),"Thinking"]}),(0,w.jsx)("select",{value:q,onChange:a=>u({thinkingMode:"inherit"===a.target.value?void 0:a.target.value}),className:"w-full rounded-lg border border-border bg-surface px-2 py-1.5 text-sm text-text-main outline-none focus:border-primary",children:bM.map(a=>(0,w.jsx)("option",{value:a.value,children:a.label},a.value))}),(0,w.jsx)("span",{className:"mt-1 block text-[11px] text-text-muted",children:bM.find(a=>a.value===q)?.description||bM[0].description})]}),(0,w.jsx)(ch,{icon:"account_balance_wallet",label:"reasoning_budget",active:i,children:{toggle:(0,w.jsx)("input",{type:"checkbox",checked:i,onChange:a=>v("reasoning_budget",a.target.checked,bK.reasoning_budget),className:"h-3.5 w-3.5 accent-primary"}),control:(0,w.jsx)("input",{type:"number",min:"0",max:"262144",step:"1",disabled:!i,value:i?d.reasoning_budget:bK.reasoning_budget,onChange:a=>u({reasoning_budget:a.target.value}),className:z}),hint:"Chỉ d\xf9ng cho llama.cpp/vLLM local; runtime sẽ map đ\xfang field."}}),(0,w.jsx)(ch,{icon:"speed",label:"Auto tắt thinking nếu prompt chars >=",active:j||p,className:"sm:col-span-2 2xl:col-span-3",children:{toggle:(0,w.jsx)("input",{type:"checkbox",checked:j,onChange:a=>v("forceThinkingOffAboveChars",a.target.checked,bK.forceThinkingOffAboveChars),className:"h-3.5 w-3.5 accent-primary"}),control:(0,w.jsxs)("div",{className:"space-y-3",children:[(0,w.jsx)("input",{type:"number",min:"0",max:"1000000",step:"1000",disabled:!j,value:j?d.forceThinkingOffAboveChars:bK.forceThinkingOffAboveChars,onChange:a=>u({forceThinkingOffAboveChars:a.target.value}),className:z}),(0,w.jsxs)("div",{className:"rounded-lg border border-border bg-surface/70 p-2",children:[(0,w.jsxs)("div",{className:"mb-2 flex items-center gap-1.5 text-[11px] font-semibold text-text-main",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[15px] text-primary",children:"tune"}),"Override ri\xeang khi auto-off được k\xedch hoạt"]}),(0,w.jsxs)("div",{className:"grid gap-2 sm:grid-cols-2",children:[(0,w.jsxs)("label",{className:"space-y-1",children:[(0,w.jsxs)("span",{className:"flex items-center justify-between text-[11px] font-medium text-text-main",children:["temp",(0,w.jsx)("input",{type:"checkbox",checked:l,disabled:!j,onChange:a=>y("temperature",a.target.checked,bL.temperature),className:"h-3.5 w-3.5 accent-primary disabled:opacity-50"})]}),(0,w.jsx)("input",{type:"number",min:"0",max:"2",step:"0.05",disabled:!j||!l,value:l?k.temperature:bL.temperature,onChange:a=>x({temperature:a.target.value}),className:z})]}),(0,w.jsxs)("label",{className:"space-y-1",children:[(0,w.jsxs)("span",{className:"flex items-center justify-between text-[11px] font-medium text-text-main",children:["top_p",(0,w.jsx)("input",{type:"checkbox",checked:m,disabled:!j,onChange:a=>y("top_p",a.target.checked,bL.top_p),className:"h-3.5 w-3.5 accent-primary disabled:opacity-50"})]}),(0,w.jsx)("input",{type:"number",min:"0.01",max:"1",step:"0.01",disabled:!j||!m,value:m?k.top_p:bL.top_p,onChange:a=>x({top_p:a.target.value}),className:z})]}),(0,w.jsxs)("label",{className:"space-y-1",children:[(0,w.jsxs)("span",{className:"flex items-center justify-between text-[11px] font-medium text-text-main",children:["presence_penalty",(0,w.jsx)("input",{type:"checkbox",checked:n,disabled:!j,onChange:a=>y("presence_penalty",a.target.checked,bL.presence_penalty),className:"h-3.5 w-3.5 accent-primary disabled:opacity-50"})]}),(0,w.jsx)("input",{type:"number",min:"-2",max:"2",step:"0.05",disabled:!j||!n,value:n?k.presence_penalty:bL.presence_penalty,onChange:a=>x({presence_penalty:a.target.value}),className:z})]}),(0,w.jsxs)("label",{className:"space-y-1",children:[(0,w.jsxs)("span",{className:"flex items-center justify-between text-[11px] font-medium text-text-main",children:["max_tokens",(0,w.jsx)("input",{type:"checkbox",checked:o,disabled:!j,onChange:a=>y("max_tokens",a.target.checked,bL.max_tokens),className:"h-3.5 w-3.5 accent-primary disabled:opacity-50"})]}),(0,w.jsx)("input",{type:"number",min:"1",max:"262144",step:"1",disabled:!j||!o,value:o?k.max_tokens:bL.max_tokens,onChange:a=>x({max_tokens:a.target.value}),className:z})]})]})]})]}),hint:"Khi prompt vượt ngưỡng, thinking bị tắt trước; c\xe1c field ri\xeang b\xean tr\xean chỉ inject nếu được tick."}})]})]})]})]})}function cj({isOpen:a,combo:b,comboStrategy:c={},onClose:d,onSave:e,activeProviders:f,providersLoading:g=!1,kindFilter:h=null}){let[i,j]=(0,x.useState)(b?.name||""),[k,l]=(0,x.useState)([]),[m,n]=(0,x.useState)(!1),[o,p]=(0,x.useState)(!1),[q,r]=(0,x.useState)(""),[s,t]=(0,x.useState)({}),[u,v]=(0,x.useState)(""),[y,z]=(0,x.useState)(""),[A,B]=(0,x.useState)(()=>b?bU(c?.requestOverrides||{}):bU(bK)),[C,D]=(0,x.useState)(()=>bS(c?.contentLoggingMode)),E=function(){for(var a=arguments.length,b=Array(a),c=0;c<a;c++)b[c]=arguments[c];return(0,x.useMemo)(()=>[...b].filter(a=>null!=a),[...b])}(ad(aP,{activationConstraint:{distance:5}}),ad(aK,{coordinateGetter:by})),F=k.map((a,b)=>({uid:`item-${b}-${a.value}`,row:a})),G=k.map(a=>a.value),H=k.filter(a=>a.enabled).length,I=k.filter(a=>!a.enabled).length,J=(f||[]).filter(a=>a?.isActive!==!1),K=J.find(a=>a.id===u)||null,L=K?ca(K,s):[],M=L[0]?.value||(K?b8(K):""),N=a=>a.trim()?bG.test(a)?(r(""),!0):(r("Chỉ cho ph\xe9p chữ, số, dấu -, _ v\xe0 ."),!1):(r("Bắt buộc nhập t\xean"),!1),O=async()=>{if(!N(i))return;let{models:a,disabledModels:b}=function(a=[]){let b=[],c=new Set;for(let d of a){let a=bV(d?.value||b4(d?.target));!a||c.has(a)||(c.add(a),b.push({...d,value:a,enabled:d?.enabled!==!1,target:b6(d?.target||d?.value)}))}return{models:b.filter(a=>a.enabled).map(a=>a.target).filter(Boolean),disabledModels:b.filter(a=>!a.enabled).map(a=>a.value)}}(k);p(!0),await e({name:i.trim(),models:a,disabledModels:b,requestOverrides:bU(A),contentLoggingMode:C}),p(!1)};if(!a)return null;let P=!!b;return(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)("div",{className:"fixed inset-0 z-[100] flex items-center justify-center bg-black/45 p-3 backdrop-blur-[1px] sm:p-4",children:(0,w.jsxs)("div",{className:"flex max-h-[92vh] w-full max-w-7xl flex-col overflow-hidden rounded-2xl border border-border bg-white shadow-2xl dark:bg-zinc-950",children:[(0,w.jsxs)("div",{className:"flex items-start justify-between border-b border-border px-5 py-4 sm:px-6",children:[(0,w.jsxs)("div",{children:[(0,w.jsx)("h2",{className:"text-xl font-semibold text-text-main",children:P?"Chỉnh sửa combo":"Tạo combo"}),(0,w.jsx)("p",{className:"mt-1 text-sm text-text-muted",children:"Chọn model, tắt tạm thời khi cần v\xe0 sắp xếp thứ tự ưu ti\xean fallback đang bật."})]}),(0,w.jsx)("button",{type:"button",onClick:d,className:"rounded-lg p-1 text-text-muted transition hover:bg-surface hover:text-text-main",children:(0,w.jsx)("span",{className:"material-symbols-outlined",children:"close"})})]}),(0,w.jsxs)("div",{className:"min-h-0 flex-1 space-y-5 overflow-y-auto bg-white px-5 py-4 dark:bg-zinc-950 sm:px-6",children:[(0,w.jsxs)("label",{className:"block",children:[(0,w.jsx)("span",{className:"mb-2 block text-sm font-semibold text-text-main",children:"T\xean"}),(0,w.jsx)("input",{value:i,onChange:a=>{let b=a.target.value;j(b),b?N(b):r("")},placeholder:"premium-coding",className:`w-full rounded-xl border bg-white px-4 py-2.5 text-text-main outline-none transition focus:border-primary dark:bg-zinc-900 ${q?"border-red-400":"border-border"}`}),(0,w.jsx)("span",{className:`mt-1 block text-xs ${q?"text-red-500":"text-text-muted"}`,children:q||"Chỉ cho ph\xe9p chữ, số, dấu -, _ v\xe0 ."})]}),(0,w.jsx)(ci,{value:A,onChange:B,defaultEnabled:!P}),(0,w.jsx)(cg,{value:C,onChange:D}),(0,w.jsxs)("div",{children:[(0,w.jsxs)("div",{className:"mb-3 flex items-center justify-between gap-3",children:[(0,w.jsxs)("div",{children:[(0,w.jsx)("h3",{className:"text-sm font-semibold text-text-main",children:"Danh s\xe1ch model"}),(0,w.jsxs)("p",{className:"mt-1 text-xs text-text-muted",children:[H," đang bật",I>0?`, ${I} đ\xe3 tắt`:"",". Model đ\xe3 tắt vẫn nằm trong combo nhưng kh\xf4ng được route."]})]}),(0,w.jsxs)("button",{type:"button",onClick:()=>n(!0),className:"inline-flex items-center gap-1 rounded-lg border border-border px-3 py-1.5 text-xs font-medium text-primary hover:border-primary/50",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"add"}),"Th\xeam model"]})]}),(0,w.jsxs)("div",{className:"mb-4 rounded-xl border border-primary/15 bg-primary/5 p-3",children:[(0,w.jsxs)("div",{className:"mb-2 flex items-center gap-2 text-xs font-semibold uppercase tracking-wide text-primary",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"account_tree"}),"Th\xeam target theo provider account"]}),(0,w.jsx)("p",{className:"mb-3 text-xs text-text-muted",children:"Cố định bước combo n\xe0y v\xe0o một provider account cụ thể. Danh s\xe1ch account chỉ được load khi mở modal để trang combo nhẹ hơn."}),(0,w.jsxs)("div",{className:"grid gap-2 md:grid-cols-[minmax(0,1.5fr)_minmax(0,1fr)_auto]",children:[(0,w.jsxs)("select",{value:u,onChange:a=>{let b=a.target.value,c=J.find(a=>a.id===b),d=c?ca(c,s):[];v(b),z(d[0]?.value||b8(c||{})||"")},className:"min-w-0 rounded-lg border border-border bg-background px-3 py-2 text-xs text-text-main outline-none focus:border-primary",children:[(0,w.jsx)("option",{value:"",children:g?"Đang tải provider account...":"Chọn provider account"}),J.map(a=>{let b=b1(a),c=b2(a),d=c&&c!==b?`${b} / ${c}`:b;return(0,w.jsx)("option",{value:a.id,children:d},a.id)})]}),(0,w.jsxs)("select",{value:y,onChange:a=>z(a.target.value),disabled:!u||0===L.length,className:"min-w-0 rounded-lg border border-border bg-background px-3 py-2 font-mono text-xs text-text-main outline-none focus:border-primary disabled:cursor-not-allowed disabled:opacity-60",children:[(0,w.jsx)("option",{value:"",children:u?L.length>0?"Chọn model":"Kh\xf4ng t\xecm thấy model của provider":"Chọn account trước"}),L.map(a=>(0,w.jsx)("option",{value:a.value,children:a.label},`${a.value}-${a.label}`))]}),(0,w.jsxs)("button",{type:"button",onClick:()=>{if(!K)return;let a=function(a,b){let c=b1(a),d=function(a={}){let b=bV(a.provider),c=b1(a);return(0,bF.mq)(b)||(0,bF.gb)(b)?c||b:b||c}(a),e=b2(a),f=bV(b||b8(a));if(!c||!a?.id||!f)return null;let g=f.includes("/"),h=g?f:`${c}/${f}`,i=g&&f.startsWith(`${c}/`)?f.slice(c.length+1):f,j=e&&e!==d?`${d}/${e}/${i}`:`${d}/${i}`;return{model:h,connectionId:a.id,provider:d||c,accountName:e||void 0,label:j}}(K,y||M);if(!a)return void alert("H\xe3y chọn provider account v\xe0 model cho target cố định n\xe0y.");let b=b7(a,!0);l(a=>{let c=a.findIndex(a=>a.value===b.value);if(-1!==c){let d=[...a];return d[c]={...d[c],...b,enabled:!0},d}return[...a,b]}),z("")},disabled:!u||!y,className:"inline-flex items-center justify-center gap-1 rounded-lg bg-primary px-3 py-2 text-xs font-semibold text-white disabled:opacity-50",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"add_link"}),"Th\xeam account"]})]})]}),0===k.length?(0,w.jsxs)("div",{className:"rounded-xl border border-dashed border-border p-8 text-center text-text-muted",children:[(0,w.jsx)("span",{className:"material-symbols-outlined",children:"layers"}),(0,w.jsx)("p",{className:"mt-2 text-sm",children:"Chưa th\xeam model n\xe0o"})]}):(0,w.jsx)(be,{sensors:E,collisionDetection:al,modifiers:[bB,bA],onDragEnd:a=>{let{active:b,over:c}=a;if(c&&b.id!==c.id){let a=F.findIndex(a=>a.uid===b.id),d=F.findIndex(a=>a.uid===c.id);-1!==a&&-1!==d&&l(b=>bi(b,a,d))}},children:(0,w.jsx)(bp,{items:F.map(a=>a.uid),strategy:bm,children:(0,w.jsx)("div",{className:"space-y-3",children:F.map(({uid:a,row:b},c)=>(0,w.jsx)(cf,{id:a,index:c,model:b.label||b.value,subtitle:b.subtitle,enabled:b.enabled,isFirst:0===c,isLast:c===k.length-1,onEdit:a=>{let b=a.trim();if(!b)return;let d=[...k],e=d[c];if(e?.target&&"object"==typeof e.target){let a=b6({...e.target,model:b});d[c]=b7(a,!1!==e.enabled)}else d[c]=b7(b,e?.enabled!==!1);l(d)},onMoveUp:()=>{if(0===c)return;let a=[...k];[a[c-1],a[c]]=[a[c],a[c-1]],l(a)},onMoveDown:()=>{if(c===k.length-1)return;let a=[...k];[a[c],a[c+1]]=[a[c+1],a[c]],l(a)},onToggleEnabled:()=>{let a=[...k];a[c]={...a[c],enabled:!a[c].enabled},l(a)},onRemove:()=>l(k.filter((a,b)=>b!==c))},a))})})})]})]}),(0,w.jsxs)("div",{className:"flex justify-end gap-3 border-t border-border bg-white px-5 py-4 dark:bg-zinc-950 sm:px-6",children:[(0,w.jsx)("button",{type:"button",onClick:d,className:"rounded-xl border border-border px-4 py-2 text-sm font-medium text-text-main hover:bg-surface",children:"Hủy"}),(0,w.jsx)("button",{type:"button",onClick:O,disabled:o,className:"rounded-xl bg-primary px-4 py-2 text-sm font-medium text-white hover:opacity-90 disabled:opacity-50",children:o?"Đang lưu...":P?"Lưu":"Tạo"})]})]})}),(0,w.jsx)(bC.rq,{isOpen:m,onClose:()=>n(!1),onSelect:a=>{let b=a.value;l(a=>{let c=a.findIndex(a=>a.value===b);if(-1!==c){let b=[...a];return b[c]={...b[c],enabled:!0},b}return[...a,b7(b,!0)]})},onDeselect:a=>{l(b=>b.filter(b=>b.value!==a.value))},activeProviders:f,modelAliases:s,title:"Th\xeam model v\xe0o combo",kindFilter:h,addedModelValues:G,closeOnSelect:!1})]})}},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},19771:a=>{"use strict";a.exports=require("process")},21820:a=>{"use strict";a.exports=require("os")},27910:a=>{"use strict";a.exports=require("stream")},28354:a=>{"use strict";a.exports=require("util")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{"use strict";a.exports=require("path")},34631:a=>{"use strict";a.exports=require("tls")},35447:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"D:\\\\bluerouter\\\\src\\\\app\\\\(dashboard)\\\\dashboard\\\\combos\\\\page.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"D:\\bluerouter\\src\\app\\(dashboard)\\dashboard\\combos\\page.js","default")},38522:a=>{"use strict";a.exports=require("node:zlib")},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},41204:a=>{"use strict";a.exports=require("string_decoder")},46060:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external.js")},46293:a=>{"use strict";a.exports=require("sql.js")},51455:a=>{"use strict";a.exports=require("node:fs/promises")},53053:a=>{"use strict";a.exports=require("node:diagnostics_channel")},55511:a=>{"use strict";a.exports=require("crypto")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},64939:a=>{"use strict";a.exports=import("pg")},66136:a=>{"use strict";a.exports=require("timers")},73024:a=>{"use strict";a.exports=require("node:fs")},74075:a=>{"use strict";a.exports=require("zlib")},76760:a=>{"use strict";a.exports=require("node:path")},76796:(a,b,c)=>{"use strict";c.r(b),c.d(b,{__next_app__:()=>w,handler:()=>y,routeModule:()=>x});var d=c(21635),e=c(86315),f=c(1020),g=c(61287),h={};for(let a in g)0>["default","__next_app__","routeModule","handler"].indexOf(a)&&(h[a]=()=>g[a]);c.d(b,h);let i=(0,d.p)(()=>Promise.resolve().then(c.bind(c,32059))),j=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,95547,23))),k=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,55091,23))),l=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,45270,23))),m=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,28193,23))),n=(0,d.p)(()=>Promise.resolve().then(c.bind(c,30508))),o=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,95547,23))),p=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,55091,23))),q=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,45270,23))),r=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,28193,23))),s=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,95547,23))),t=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,95547,23))),u={children:["",{children:["(dashboard)",{children:["dashboard",{children:["combos",{children:["__PAGE__",{},{page:[(0,d.p)(()=>Promise.resolve().then(c.bind(c,35447))),"D:\\bluerouter\\src\\app\\(dashboard)\\dashboard\\combos\\page.js"]}]},{"global-error":[t,"next/dist/client/components/builtin/global-error.js"]},[]]},{"global-error":[s,"next/dist/client/components/builtin/global-error.js"]},[]]},{layout:[n,"D:\\bluerouter\\src\\app\\(dashboard)\\layout.js"],"global-error":[o,"next/dist/client/components/builtin/global-error.js"],"not-found":[p,"next/dist/client/components/builtin/not-found.js"],forbidden:[q,"next/dist/client/components/builtin/forbidden.js"],unauthorized:[r,"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[async a=>(await (0,d.p)(()=>Promise.resolve().then(c.bind(c,70440)))()).default(a)],apple:[],openGraph:[],twitter:[],manifest:"/manifest.webmanifest"}},[]]},{layout:[i,"D:\\bluerouter\\src\\app\\layout.js"],"global-error":[j,"next/dist/client/components/builtin/global-error.js"],"not-found":[k,"next/dist/client/components/builtin/not-found.js"],forbidden:[l,"next/dist/client/components/builtin/forbidden.js"],unauthorized:[m,"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[async a=>(await (0,d.p)(()=>Promise.resolve().then(c.bind(c,70440)))()).default(a)],apple:[],openGraph:[],twitter:[],manifest:"/manifest.webmanifest"}},[]]}.children,v=(0,e.H)({tree:u,page:"/(dashboard)/dashboard/combos/page",pathname:"/dashboard/combos",require:c,loadChunk:()=>Promise.resolve(),interopDefault:f.T}),w=v.__next_app__,x=v.routeModule,y=v.handler},77598:a=>{"use strict";a.exports=require("node:crypto")},79428:a=>{"use strict";a.exports=require("buffer")},79748:a=>{"use strict";a.exports=require("fs/promises")},80099:a=>{"use strict";a.exports=require("node:sqlite")},81787:a=>{"use strict";a.exports=require("bun:sqlite")},87550:a=>{"use strict";a.exports=require("better-sqlite3")},91645:a=>{"use strict";a.exports=require("net")},93443:(a,b,c)=>{Promise.resolve().then(c.bind(c,18513))},94735:a=>{"use strict";a.exports=require("events")}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,2430,8316,8946,402,5681,4404,6064,6328,8640],()=>b(b.s=76796));module.exports=c})();
1
+ (()=>{var a={};a.id=3649,a.ids=[3649],a.modules={1932:a=>{"use strict";a.exports=require("url")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},4573:a=>{"use strict";a.exports=require("node:buffer")},8128:a=>{"use strict";a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},17419:(a,b,c)=>{Promise.resolve().then(c.bind(c,35447))},18513:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>cc});var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w=c(48249),x=c(67484),y=c.n(x),z=c(74429);let A="u">typeof window&&void 0!==window.document&&void 0!==window.document.createElement;function B(a){let b=Object.prototype.toString.call(a);return"[object Window]"===b||"[object global]"===b}function C(a){return"nodeType"in a}function D(a){var b,c;return a?B(a)?a:C(a)&&null!=(b=null==(c=a.ownerDocument)?void 0:c.defaultView)?b:window:window}function E(a){let{Document:b}=D(a);return a instanceof b}function F(a){return!B(a)&&a instanceof D(a).HTMLElement}function G(a){return a instanceof D(a).SVGElement}function H(a){return a?B(a)?a.document:C(a)?E(a)?a:F(a)||G(a)?a.ownerDocument:document:document:document}let I=A?x.useLayoutEffect:x.useEffect;function J(a){let b=(0,x.useRef)(a);return I(()=>{b.current=a}),(0,x.useCallback)(function(){for(var a=arguments.length,c=Array(a),d=0;d<a;d++)c[d]=arguments[d];return null==b.current?void 0:b.current(...c)},[])}function K(a,b){void 0===b&&(b=[a]);let c=(0,x.useRef)(a);return I(()=>{c.current!==a&&(c.current=a)},b),c}function L(a,b){let c=(0,x.useRef)();return(0,x.useMemo)(()=>{let b=a(c.current);return c.current=b,b},[...b])}function M(a){let b=J(a),c=(0,x.useRef)(null),d=(0,x.useCallback)(a=>{a!==c.current&&(null==b||b(a,c.current)),c.current=a},[]);return[c,d]}function N(a){let b=(0,x.useRef)();return(0,x.useEffect)(()=>{b.current=a},[a]),b.current}let O={};function P(a,b){return(0,x.useMemo)(()=>{if(b)return b;let c=null==O[a]?0:O[a]+1;return O[a]=c,a+"-"+c},[a,b])}function Q(a){return function(b){for(var c=arguments.length,d=Array(c>1?c-1:0),e=1;e<c;e++)d[e-1]=arguments[e];return d.reduce((b,c)=>{for(let[d,e]of Object.entries(c)){let c=b[d];null!=c&&(b[d]=c+a*e)}return b},{...b})}}let R=Q(1),S=Q(-1);function T(a){if(!a)return!1;let{KeyboardEvent:b}=D(a.target);return b&&a instanceof b}function U(a){if(function(a){if(!a)return!1;let{TouchEvent:b}=D(a.target);return b&&a instanceof b}(a)){if(a.touches&&a.touches.length){let{clientX:b,clientY:c}=a.touches[0];return{x:b,y:c}}else if(a.changedTouches&&a.changedTouches.length){let{clientX:b,clientY:c}=a.changedTouches[0];return{x:b,y:c}}}return"clientX"in a&&"clientY"in a?{x:a.clientX,y:a.clientY}:null}let V=Object.freeze({Translate:{toString(a){if(!a)return;let{x:b,y:c}=a;return"translate3d("+(b?Math.round(b):0)+"px, "+(c?Math.round(c):0)+"px, 0)"}},Scale:{toString(a){if(!a)return;let{scaleX:b,scaleY:c}=a;return"scaleX("+b+") scaleY("+c+")"}},Transform:{toString(a){if(a)return[V.Translate.toString(a),V.Scale.toString(a)].join(" ")}},Transition:{toString(a){let{property:b,duration:c,easing:d}=a;return b+" "+c+"ms "+d}}}),W="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]",X={display:"none"};function Y(a){let{id:b,value:c}=a;return y().createElement("div",{id:b,style:X},c)}function Z(a){let{id:b,announcement:c,ariaLiveType:d="assertive"}=a;return y().createElement("div",{id:b,style:{position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"},role:"status","aria-live":d,"aria-atomic":!0},c)}let $=(0,x.createContext)(null),_={draggable:"\n To pick up a draggable item, press the space bar.\n While dragging, use the arrow keys to move the item.\n Press space again to drop the item in its new position, or press escape to cancel.\n "},aa={onDragStart(a){let{active:b}=a;return"Picked up draggable item "+b.id+"."},onDragOver(a){let{active:b,over:c}=a;return c?"Draggable item "+b.id+" was moved over droppable area "+c.id+".":"Draggable item "+b.id+" is no longer over a droppable area."},onDragEnd(a){let{active:b,over:c}=a;return c?"Draggable item "+b.id+" was dropped over droppable area "+c.id:"Draggable item "+b.id+" was dropped."},onDragCancel(a){let{active:b}=a;return"Dragging was cancelled. Draggable item "+b.id+" was dropped."}};function ab(a){var b;let c,{announcements:d=aa,container:e,hiddenTextDescribedById:f,screenReaderInstructions:g=_}=a,{announce:h,announcement:i}=function(){let[a,b]=(0,x.useState)("");return{announce:(0,x.useCallback)(a=>{null!=a&&b(a)},[]),announcement:a}}(),j=P("DndLiveRegion"),[k,l]=(0,x.useState)(!1);if((0,x.useEffect)(()=>{l(!0)},[]),b=(0,x.useMemo)(()=>({onDragStart(a){let{active:b}=a;h(d.onDragStart({active:b}))},onDragMove(a){let{active:b,over:c}=a;d.onDragMove&&h(d.onDragMove({active:b,over:c}))},onDragOver(a){let{active:b,over:c}=a;h(d.onDragOver({active:b,over:c}))},onDragEnd(a){let{active:b,over:c}=a;h(d.onDragEnd({active:b,over:c}))},onDragCancel(a){let{active:b,over:c}=a;h(d.onDragCancel({active:b,over:c}))}}),[h,d]),c=(0,x.useContext)($),(0,x.useEffect)(()=>{if(!c)throw Error("useDndMonitor must be used within a children of <DndContext>");return c(b)},[b,c]),!k)return null;let m=y().createElement(y().Fragment,null,y().createElement(Y,{id:f,value:g.draggable}),y().createElement(Z,{id:j,announcement:i}));return e?(0,z.createPortal)(m,e):m}function ac(){}function ad(a,b){return(0,x.useMemo)(()=>({sensor:a,options:null!=b?b:{}}),[a,b])}(d=m||(m={})).DragStart="dragStart",d.DragMove="dragMove",d.DragEnd="dragEnd",d.DragCancel="dragCancel",d.DragOver="dragOver",d.RegisterDroppable="registerDroppable",d.SetDroppableDisabled="setDroppableDisabled",d.UnregisterDroppable="unregisterDroppable";let ae=Object.freeze({x:0,y:0});function af(a,b){return Math.sqrt(Math.pow(a.x-b.x,2)+Math.pow(a.y-b.y,2))}function ag(a,b){let{data:{value:c}}=a,{data:{value:d}}=b;return c-d}function ah(a,b){let{data:{value:c}}=a,{data:{value:d}}=b;return d-c}function ai(a){let{left:b,top:c,height:d,width:e}=a;return[{x:b,y:c},{x:b+e,y:c},{x:b,y:c+d},{x:b+e,y:c+d}]}function aj(a,b){if(!a||0===a.length)return null;let[c]=a;return b?c[b]:c}function ak(a,b,c){return void 0===b&&(b=a.left),void 0===c&&(c=a.top),{x:b+.5*a.width,y:c+.5*a.height}}let al=a=>{let{collisionRect:b,droppableRects:c,droppableContainers:d}=a,e=ak(b,b.left,b.top),f=[];for(let a of d){let{id:b}=a,d=c.get(b);if(d){let c=af(ak(d),e);f.push({id:b,data:{droppableContainer:a,value:c}})}}return f.sort(ag)},am=a=>{let{collisionRect:b,droppableRects:c,droppableContainers:d}=a,e=[];for(let a of d){let{id:d}=a,f=c.get(d);if(f){let c=function(a,b){let c=Math.max(b.top,a.top),d=Math.max(b.left,a.left),e=Math.min(b.left+b.width,a.left+a.width),f=Math.min(b.top+b.height,a.top+a.height);if(d<e&&c<f){let g=b.width*b.height,h=a.width*a.height,i=(e-d)*(f-c);return Number((i/(g+h-i)).toFixed(4))}return 0}(f,b);c>0&&e.push({id:d,data:{droppableContainer:a,value:c}})}}return e.sort(ah)};function an(a,b){return a&&b?{x:a.left-b.left,y:a.top-b.top}:ae}let ao=function(a){for(var b=arguments.length,c=Array(b>1?b-1:0),d=1;d<b;d++)c[d-1]=arguments[d];return c.reduce((a,b)=>({...a,top:a.top+ +b.y,bottom:a.bottom+ +b.y,left:a.left+ +b.x,right:a.right+ +b.x}),{...a})},ap={ignoreTransform:!1};function aq(a,b){void 0===b&&(b=ap);let c=a.getBoundingClientRect();if(b.ignoreTransform){let{transform:b,transformOrigin:d}=D(a).getComputedStyle(a);b&&(c=function(a,b,c){let d=function(a){if(a.startsWith("matrix3d(")){let b=a.slice(9,-1).split(/, /);return{x:+b[12],y:+b[13],scaleX:+b[0],scaleY:+b[5]}}if(a.startsWith("matrix(")){let b=a.slice(7,-1).split(/, /);return{x:+b[4],y:+b[5],scaleX:+b[0],scaleY:+b[3]}}return null}(b);if(!d)return a;let{scaleX:e,scaleY:f,x:g,y:h}=d,i=a.left-g-(1-e)*parseFloat(c),j=a.top-h-(1-f)*parseFloat(c.slice(c.indexOf(" ")+1)),k=e?a.width/e:a.width,l=f?a.height/f:a.height;return{width:k,height:l,top:j,right:i+k,bottom:j+l,left:i}}(c,b,d))}let{top:d,left:e,width:f,height:g,bottom:h,right:i}=c;return{top:d,left:e,width:f,height:g,bottom:h,right:i}}function ar(a){return aq(a,{ignoreTransform:!0})}function as(a,b){let c=[];return a?function d(e){var f,g;let h;if(null!=b&&c.length>=b||!e)return c;if(E(e)&&null!=e.scrollingElement&&!c.includes(e.scrollingElement))return c.push(e.scrollingElement),c;if(!F(e)||G(e)||c.includes(e))return c;let i=D(a).getComputedStyle(e);return(e!==a&&(void 0===(f=i)&&(f=D(e).getComputedStyle(e)),h=/(auto|scroll|overlay)/,["overflow","overflowX","overflowY"].some(a=>{let b=f[a];return"string"==typeof b&&h.test(b)}))&&c.push(e),void 0===(g=i)&&(g=D(e).getComputedStyle(e)),"fixed"===g.position)?c:d(e.parentNode)}(a):c}function at(a){let[b]=as(a,1);return null!=b?b:null}function au(a){return A&&a?B(a)?a:C(a)?E(a)||a===H(a).scrollingElement?window:F(a)?a:null:null:null}function av(a){return B(a)?a.scrollX:a.scrollLeft}function aw(a){return B(a)?a.scrollY:a.scrollTop}function ax(a){return{x:av(a),y:aw(a)}}function ay(a){return!!A&&!!a&&a===document.scrollingElement}function az(a){let b={x:0,y:0},c=ay(a)?{height:window.innerHeight,width:window.innerWidth}:{height:a.clientHeight,width:a.clientWidth},d={x:a.scrollWidth-c.width,y:a.scrollHeight-c.height},e=a.scrollTop<=b.y,f=a.scrollLeft<=b.x;return{isTop:e,isLeft:f,isBottom:a.scrollTop>=d.y,isRight:a.scrollLeft>=d.x,maxScroll:d,minScroll:b}}(e=n||(n={}))[e.Forward=1]="Forward",e[e.Backward=-1]="Backward";let aA={x:.2,y:.2};function aB(a){return a.reduce((a,b)=>R(a,ax(b)),ae)}let aC=[["x",["left","right"],function(a){return a.reduce((a,b)=>a+av(b),0)}],["y",["top","bottom"],function(a){return a.reduce((a,b)=>a+aw(b),0)}]];class aD{constructor(a,b){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const c=as(b),d=aB(c);for(const[b,e,f]of(this.rect={...a},this.width=a.width,this.height=a.height,aC))for(const a of e)Object.defineProperty(this,a,{get:()=>{let e=f(c),g=d[b]-e;return this.rect[a]+g},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class aE{constructor(a){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(a=>{var b;return null==(b=this.target)?void 0:b.removeEventListener(...a)})},this.target=a}add(a,b,c){var d;null==(d=this.target)||d.addEventListener(a,b,c),this.listeners.push([a,b,c])}}function aF(a,b){let c=Math.abs(a.x),d=Math.abs(a.y);return"number"==typeof b?Math.sqrt(c**2+d**2)>b:"x"in b&&"y"in b?c>b.x&&d>b.y:"x"in b?c>b.x:"y"in b&&d>b.y}function aG(a){a.preventDefault()}function aH(a){a.stopPropagation()}(f=o||(o={})).Click="click",f.DragStart="dragstart",f.Keydown="keydown",f.ContextMenu="contextmenu",f.Resize="resize",f.SelectionChange="selectionchange",f.VisibilityChange="visibilitychange",(g=p||(p={})).Space="Space",g.Down="ArrowDown",g.Right="ArrowRight",g.Left="ArrowLeft",g.Up="ArrowUp",g.Esc="Escape",g.Enter="Enter",g.Tab="Tab";let aI={start:[p.Space,p.Enter],cancel:[p.Esc],end:[p.Space,p.Enter,p.Tab]},aJ=(a,b)=>{let{currentCoordinates:c}=b;switch(a.code){case p.Right:return{...c,x:c.x+25};case p.Left:return{...c,x:c.x-25};case p.Down:return{...c,y:c.y+25};case p.Up:return{...c,y:c.y-25}}};class aK{constructor(a){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=a;const{event:{target:b}}=a;this.props=a,this.listeners=new aE(H(b)),this.windowListeners=new aE(D(b)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(o.Resize,this.handleCancel),this.windowListeners.add(o.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(o.Keydown,this.handleKeyDown))}handleStart(){let{activeNode:a,onStart:b}=this.props,c=a.node.current;c&&function(a,b){if(void 0===b&&(b=aq),!a)return;let{top:c,left:d,bottom:e,right:f}=b(a);at(a)&&(e<=0||f<=0||c>=window.innerHeight||d>=window.innerWidth)&&a.scrollIntoView({block:"center",inline:"center"})}(c),b(ae)}handleKeyDown(a){if(T(a)){let{active:b,context:c,options:d}=this.props,{keyboardCodes:e=aI,coordinateGetter:f=aJ,scrollBehavior:g="smooth"}=d,{code:h}=a;if(e.end.includes(h))return void this.handleEnd(a);if(e.cancel.includes(h))return void this.handleCancel(a);let{collisionRect:i}=c.current,j=i?{x:i.left,y:i.top}:ae;this.referenceCoordinates||(this.referenceCoordinates=j);let k=f(a,{active:b,context:c.current,currentCoordinates:j});if(k){let b=S(k,j),d={x:0,y:0},{scrollableAncestors:e}=c.current;for(let c of e){let e=a.code,{isTop:f,isRight:h,isLeft:i,isBottom:j,maxScroll:l,minScroll:m}=az(c),n=function(a){if(a===document.scrollingElement){let{innerWidth:a,innerHeight:b}=window;return{top:0,left:0,right:a,bottom:b,width:a,height:b}}let{top:b,left:c,right:d,bottom:e}=a.getBoundingClientRect();return{top:b,left:c,right:d,bottom:e,width:a.clientWidth,height:a.clientHeight}}(c),o={x:Math.min(e===p.Right?n.right-n.width/2:n.right,Math.max(e===p.Right?n.left:n.left+n.width/2,k.x)),y:Math.min(e===p.Down?n.bottom-n.height/2:n.bottom,Math.max(e===p.Down?n.top:n.top+n.height/2,k.y))},q=e===p.Right&&!h||e===p.Left&&!i,r=e===p.Down&&!j||e===p.Up&&!f;if(q&&o.x!==k.x){let a=c.scrollLeft+b.x,f=e===p.Right&&a<=l.x||e===p.Left&&a>=m.x;if(f&&!b.y)return void c.scrollTo({left:a,behavior:g});f?d.x=c.scrollLeft-a:d.x=e===p.Right?c.scrollLeft-l.x:c.scrollLeft-m.x,d.x&&c.scrollBy({left:-d.x,behavior:g});break}if(r&&o.y!==k.y){let a=c.scrollTop+b.y,f=e===p.Down&&a<=l.y||e===p.Up&&a>=m.y;if(f&&!b.x)return void c.scrollTo({top:a,behavior:g});f?d.y=c.scrollTop-a:d.y=e===p.Down?c.scrollTop-l.y:c.scrollTop-m.y,d.y&&c.scrollBy({top:-d.y,behavior:g});break}}this.handleMove(a,R(S(k,this.referenceCoordinates),d))}}}handleMove(a,b){let{onMove:c}=this.props;a.preventDefault(),c(b)}handleEnd(a){let{onEnd:b}=this.props;a.preventDefault(),this.detach(),b()}handleCancel(a){let{onCancel:b}=this.props;a.preventDefault(),this.detach(),b()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}function aL(a){return!!(a&&"distance"in a)}function aM(a){return!!(a&&"delay"in a)}aK.activators=[{eventName:"onKeyDown",handler:(a,b,c)=>{let{keyboardCodes:d=aI,onActivation:e}=b,{active:f}=c,{code:g}=a.nativeEvent;if(d.start.includes(g)){let b=f.activatorNode.current;return(!b||a.target===b)&&(a.preventDefault(),null==e||e({event:a.nativeEvent}),!0)}return!1}}];class aN{constructor(a,b,c){var d;void 0===c&&(c=function(a){let{EventTarget:b}=D(a);return a instanceof b?a:H(a)}(a.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=a,this.events=b;const{event:e}=a,{target:f}=e;this.props=a,this.events=b,this.document=H(f),this.documentListeners=new aE(this.document),this.listeners=new aE(c),this.windowListeners=new aE(D(f)),this.initialCoordinates=null!=(d=U(e))?d:ae,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){let{events:a,props:{options:{activationConstraint:b,bypassActivationConstraint:c}}}=this;if(this.listeners.add(a.move.name,this.handleMove,{passive:!1}),this.listeners.add(a.end.name,this.handleEnd),a.cancel&&this.listeners.add(a.cancel.name,this.handleCancel),this.windowListeners.add(o.Resize,this.handleCancel),this.windowListeners.add(o.DragStart,aG),this.windowListeners.add(o.VisibilityChange,this.handleCancel),this.windowListeners.add(o.ContextMenu,aG),this.documentListeners.add(o.Keydown,this.handleKeydown),b){if(null!=c&&c({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(aM(b)){this.timeoutId=setTimeout(this.handleStart,b.delay),this.handlePending(b);return}if(aL(b))return void this.handlePending(b)}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),null!==this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(a,b){let{active:c,onPending:d}=this.props;d(c,a,this.initialCoordinates,b)}handleStart(){let{initialCoordinates:a}=this,{onStart:b}=this.props;a&&(this.activated=!0,this.documentListeners.add(o.Click,aH,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(o.SelectionChange,this.removeTextSelection),b(a))}handleMove(a){var b;let{activated:c,initialCoordinates:d,props:e}=this,{onMove:f,options:{activationConstraint:g}}=e;if(!d)return;let h=null!=(b=U(a))?b:ae,i=S(d,h);if(!c&&g){if(aL(g)){if(null!=g.tolerance&&aF(i,g.tolerance))return this.handleCancel();if(aF(i,g.distance))return this.handleStart()}return aM(g)&&aF(i,g.tolerance)?this.handleCancel():void this.handlePending(g,i)}a.cancelable&&a.preventDefault(),f(h)}handleEnd(){let{onAbort:a,onEnd:b}=this.props;this.detach(),this.activated||a(this.props.active),b()}handleCancel(){let{onAbort:a,onCancel:b}=this.props;this.detach(),this.activated||a(this.props.active),b()}handleKeydown(a){a.code===p.Esc&&this.handleCancel()}removeTextSelection(){var a;null==(a=this.document.getSelection())||a.removeAllRanges()}}let aO={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class aP extends aN{constructor(a){const{event:b}=a;super(a,aO,H(b.target))}}aP.activators=[{eventName:"onPointerDown",handler:(a,b)=>{let{nativeEvent:c}=a,{onActivation:d}=b;return!!c.isPrimary&&0===c.button&&(null==d||d({event:c}),!0)}}];let aQ={move:{name:"mousemove"},end:{name:"mouseup"}};(h=q||(q={}))[h.RightClick=2]="RightClick";class aR extends aN{constructor(a){super(a,aQ,H(a.event.target))}}aR.activators=[{eventName:"onMouseDown",handler:(a,b)=>{let{nativeEvent:c}=a,{onActivation:d}=b;return c.button!==q.RightClick&&(null==d||d({event:c}),!0)}}];let aS={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class aT extends aN{constructor(a){super(a,aS)}static setup(){return window.addEventListener(aS.move.name,a,{capture:!1,passive:!1}),function(){window.removeEventListener(aS.move.name,a)};function a(){}}}aT.activators=[{eventName:"onTouchStart",handler:(a,b)=>{let{nativeEvent:c}=a,{onActivation:d}=b,{touches:e}=c;return!(e.length>1)&&(null==d||d({event:c}),!0)}}],(i=r||(r={}))[i.Pointer=0]="Pointer",i[i.DraggableRect=1]="DraggableRect",(j=s||(s={}))[j.TreeOrder=0]="TreeOrder",j[j.ReversedTreeOrder=1]="ReversedTreeOrder";let aU={x:{[n.Backward]:!1,[n.Forward]:!1},y:{[n.Backward]:!1,[n.Forward]:!1}};(k=t||(t={}))[k.Always=0]="Always",k[k.BeforeDragging=1]="BeforeDragging",k[k.WhileDragging=2]="WhileDragging",(u||(u={})).Optimized="optimized";let aV=new Map;function aW(a,b){return L(c=>a?c||("function"==typeof b?b(a):a):null,[b,a])}function aX(a){let{callback:b,disabled:c}=a,d=J(b),e=(0,x.useMemo)(()=>{if(c||"u"<typeof window||void 0===window.ResizeObserver)return;let{ResizeObserver:a}=window;return new a(d)},[c]);return(0,x.useEffect)(()=>()=>null==e?void 0:e.disconnect(),[e]),e}function aY(a){return new aD(aq(a),a)}function aZ(a,b,c){void 0===b&&(b=aY);let[d,e]=(0,x.useState)(null);function f(){e(d=>{if(!a)return null;if(!1===a.isConnected){var e;return null!=(e=null!=d?d:c)?e:null}let f=b(a);return JSON.stringify(d)===JSON.stringify(f)?d:f})}let g=function(a){let{callback:b,disabled:c}=a,d=J(b),e=(0,x.useMemo)(()=>{if(c||"u"<typeof window||void 0===window.MutationObserver)return;let{MutationObserver:a}=window;return new a(d)},[d,c]);return(0,x.useEffect)(()=>()=>null==e?void 0:e.disconnect(),[e]),e}({callback(b){if(a)for(let c of b){let{type:b,target:d}=c;if("childList"===b&&d instanceof HTMLElement&&d.contains(a)){f();break}}}}),h=aX({callback:f});return I(()=>{f(),a?(null==h||h.observe(a),null==g||g.observe(document.body,{childList:!0,subtree:!0})):(null==h||h.disconnect(),null==g||g.disconnect())},[a]),d}let a$=[];function a_(a,b){void 0===b&&(b=[]);let c=(0,x.useRef)(null);return(0,x.useEffect)(()=>{c.current=null},b),(0,x.useEffect)(()=>{let b=a!==ae;b&&!c.current&&(c.current=a),!b&&c.current&&(c.current=null)},[a]),c.current?S(a,c.current):ae}function a0(a){return(0,x.useMemo)(()=>{let b,c;return a?(b=a.innerWidth,{top:0,left:0,right:b,bottom:c=a.innerHeight,width:b,height:c}):null},[a])}let a1=[],a2=[{sensor:aP,options:{}},{sensor:aK,options:{}}],a3={current:{}},a4={draggable:{measure:ar},droppable:{measure:ar,strategy:t.WhileDragging,frequency:u.Optimized},dragOverlay:{measure:aq}};class a5 extends Map{get(a){var b;return null!=a&&null!=(b=super.get(a))?b:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(a=>{let{disabled:b}=a;return!b})}getNodeFor(a){var b,c;return null!=(b=null==(c=this.get(a))?void 0:c.node.current)?b:void 0}}let a6={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new a5,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:ac},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:a4,measureDroppableContainers:ac,windowRect:null,measuringScheduled:!1},a7={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:ac,draggableNodes:new Map,over:null,measureDroppableContainers:ac},a8=(0,x.createContext)(a7),a9=(0,x.createContext)(a6);function ba(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new a5}}}function bb(a,b){switch(b.type){case m.DragStart:return{...a,draggable:{...a.draggable,initialCoordinates:b.initialCoordinates,active:b.active}};case m.DragMove:if(null==a.draggable.active)return a;return{...a,draggable:{...a.draggable,translate:{x:b.coordinates.x-a.draggable.initialCoordinates.x,y:b.coordinates.y-a.draggable.initialCoordinates.y}}};case m.DragEnd:case m.DragCancel:return{...a,draggable:{...a.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case m.RegisterDroppable:{let{element:c}=b,{id:d}=c,e=new a5(a.droppable.containers);return e.set(d,c),{...a,droppable:{...a.droppable,containers:e}}}case m.SetDroppableDisabled:{let{id:c,key:d,disabled:e}=b,f=a.droppable.containers.get(c);if(!f||d!==f.key)return a;let g=new a5(a.droppable.containers);return g.set(c,{...f,disabled:e}),{...a,droppable:{...a.droppable,containers:g}}}case m.UnregisterDroppable:{let{id:c,key:d}=b,e=a.droppable.containers.get(c);if(!e||d!==e.key)return a;let f=new a5(a.droppable.containers);return f.delete(c),{...a,droppable:{...a.droppable,containers:f}}}default:return a}}function bc(a){let{disabled:b}=a,{active:c,activatorEvent:d,draggableNodes:e}=(0,x.useContext)(a8),f=N(d),g=N(null==c?void 0:c.id);return(0,x.useEffect)(()=>{if(!b&&!d&&f&&null!=g){if(!T(f)||document.activeElement===f.target)return;let a=e.get(g);if(!a)return;let{activatorNode:b,node:c}=a;(b.current||c.current)&&requestAnimationFrame(()=>{for(let a of[b.current,c.current]){if(!a)continue;let b=a.matches(W)?a:a.querySelector(W);if(b){b.focus();break}}})}},[d,b,e,g,f]),null}let bd=(0,x.createContext)({...ae,scaleX:1,scaleY:1});(l=v||(v={}))[l.Uninitialized=0]="Uninitialized",l[l.Initializing=1]="Initializing",l[l.Initialized=2]="Initialized";let be=(0,x.memo)(function(a){var b,c,d,e,f,g,h,i;let j,k,l,o,p,q,u,w,{id:B,accessibility:C,autoScroll:E=!0,children:G,sensors:H=a2,collisionDetection:J=am,measuring:O,modifiers:Q,...S}=a,[T,V]=(0,x.useReducer)(bb,void 0,ba),[W,X]=function(){let[a]=(0,x.useState)(()=>new Set),b=(0,x.useCallback)(b=>(a.add(b),()=>a.delete(b)),[a]);return[(0,x.useCallback)(b=>{let{type:c,event:d}=b;a.forEach(a=>{var b;return null==(b=a[c])?void 0:b.call(a,d)})},[a]),b]}(),[Y,Z]=(0,x.useState)(v.Uninitialized),_=Y===v.Initialized,{draggable:{active:aa,nodes:ac,translate:ad},droppable:{containers:af}}=T,ag=null!=aa?ac.get(aa):null,ah=(0,x.useRef)({initial:null,translated:null}),ai=(0,x.useMemo)(()=>{var a;return null!=aa?{id:aa,data:null!=(a=null==ag?void 0:ag.data)?a:a3,rect:ah}:null},[aa,ag]),ak=(0,x.useRef)(null),[al,ap]=(0,x.useState)(null),[ar,av]=(0,x.useState)(null),aw=K(S,Object.values(S)),aC=P("DndDescribedBy",B),aE=(0,x.useMemo)(()=>af.getEnabled(),[af]),aF=(0,x.useMemo)(()=>({draggable:{...a4.draggable,...null==O?void 0:O.draggable},droppable:{...a4.droppable,...null==O?void 0:O.droppable},dragOverlay:{...a4.dragOverlay,...null==O?void 0:O.dragOverlay}}),[null==O?void 0:O.draggable,null==O?void 0:O.droppable,null==O?void 0:O.dragOverlay]),{droppableRects:aG,measureDroppableContainers:aH,measuringScheduled:aI}=function(a,b){let{dragging:c,dependencies:d,config:e}=b,[f,g]=(0,x.useState)(null),{frequency:h,measure:i,strategy:j}=e,k=(0,x.useRef)(a),l=function(){switch(j){case t.Always:return!1;case t.BeforeDragging:return c;default:return!c}}(),m=K(l),n=(0,x.useCallback)(function(a){void 0===a&&(a=[]),m.current||g(b=>null===b?a:b.concat(a.filter(a=>!b.includes(a))))},[m]),o=(0,x.useRef)(null),p=L(b=>{if(l&&!c)return aV;if(!b||b===aV||k.current!==a||null!=f){let b=new Map;for(let c of a){if(!c)continue;if(f&&f.length>0&&!f.includes(c.id)&&c.rect.current){b.set(c.id,c.rect.current);continue}let a=c.node.current,d=a?new aD(i(a),a):null;c.rect.current=d,d&&b.set(c.id,d)}return b}return b},[a,f,c,l,i]);return(0,x.useEffect)(()=>{k.current=a},[a]),(0,x.useEffect)(()=>{l||n()},[c,l]),(0,x.useEffect)(()=>{f&&f.length>0&&g(null)},[JSON.stringify(f)]),(0,x.useEffect)(()=>{l||"number"!=typeof h||null!==o.current||(o.current=setTimeout(()=>{n(),o.current=null},h))},[h,l,n,...d]),{droppableRects:p,measureDroppableContainers:n,measuringScheduled:null!=f}}(aE,{dragging:_,dependencies:[ad.x,ad.y],config:aF.droppable}),aJ=L(a=>{var b;return null==aa?null:null!=(b=null!=p?p:a)?b:null},[p=(o=null!=aa?ac.get(aa):void 0)?o.node.current:null,aa]),aK=(0,x.useMemo)(()=>ar?U(ar):null,[ar]),aL=(j=(null==al?void 0:al.autoScrollEnabled)===!1,k="object"==typeof E?!1===E.enabled:!1===E,l=_&&!j&&!k,"object"==typeof E?{...E,enabled:l}:{enabled:l}),aM=aW(aJ,aF.draggable.measure);!function(a){let{activeNode:b,measure:c,initialRect:d,config:e=!0}=a,f=(0,x.useRef)(!1),{x:g,y:h}="boolean"==typeof e?{x:e,y:e}:e;I(()=>{if(!g&&!h||!b){f.current=!1;return}if(f.current||!d)return;let a=null==b?void 0:b.node.current;if(!a||!1===a.isConnected)return;let e=an(c(a),d);if(g||(e.x=0),h||(e.y=0),f.current=!0,Math.abs(e.x)>0||Math.abs(e.y)>0){let b=at(a);b&&b.scrollBy({top:e.y,left:e.x})}},[b,g,h,d,c])}({activeNode:null!=aa?ac.get(aa):null,config:aL.layoutShiftCompensation,initialRect:aM,measure:aF.draggable.measure});let aN=aZ(aJ,aF.draggable.measure,aM),aO=aZ(aJ?aJ.parentElement:null),aP=(0,x.useRef)({activatorEvent:null,active:null,activeNode:aJ,collisionRect:null,collisions:null,droppableRects:aG,draggableNodes:ac,draggingNode:null,draggingNodeRect:null,droppableContainers:af,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),aQ=af.getNodeFor(null==(b=aP.current.over)?void 0:b.id),aR=function(a){let{measure:b}=a,[c,d]=(0,x.useState)(null),e=aX({callback:(0,x.useCallback)(a=>{for(let{target:c}of a)if(F(c)){d(a=>{let d=b(c);return a?{...a,width:d.width,height:d.height}:d});break}},[b])}),[f,g]=M((0,x.useCallback)(a=>{let c=function(a){if(!a)return null;if(a.children.length>1)return a;let b=a.children[0];return F(b)?b:a}(a);null==e||e.disconnect(),c&&(null==e||e.observe(c)),d(c?b(c):null)},[b,e]));return(0,x.useMemo)(()=>({nodeRef:f,rect:c,setRef:g}),[c,f,g])}({measure:aF.dragOverlay.measure}),aS=null!=(c=aR.nodeRef.current)?c:aJ,aT=_?null!=(d=aR.rect)?d:aN:null,aY=!!(aR.nodeRef.current&&aR.rect),a5=(q=aW(f=aY?null:aN),an(f,q)),a6=a0(aS?D(aS):null),a7=(g=_?null!=aQ?aQ:aJ:null,u=(0,x.useRef)(g),w=L(a=>g?a&&a!==a$&&g&&u.current&&g.parentNode===u.current.parentNode?a:as(g):a$,[g]),(0,x.useEffect)(()=>{u.current=g},[g]),w),be=function(a,b){void 0===b&&(b=aq);let[c]=a,d=a0(c?D(c):null),[e,f]=(0,x.useState)(a1);function g(){f(()=>a.length?a.map(a=>ay(a)?d:new aD(b(a),a)):a1)}let h=aX({callback:g});return I(()=>{null==h||h.disconnect(),g(),a.forEach(a=>null==h?void 0:h.observe(a))},[a]),e}(a7),bf=function(a,b){let{transform:c,...d}=b;return null!=a&&a.length?a.reduce((a,b)=>b({transform:a,...d}),c):c}(Q,{transform:{x:ad.x-a5.x,y:ad.y-a5.y,scaleX:1,scaleY:1},activatorEvent:ar,active:ai,activeNodeRect:aN,containerNodeRect:aO,draggingNodeRect:aT,over:aP.current.over,overlayNodeRect:aR.rect,scrollableAncestors:a7,scrollableAncestorRects:be,windowRect:a6}),bg=aK?R(aK,ad):null,bh=function(a){let[b,c]=(0,x.useState)(null),d=(0,x.useRef)(a),e=(0,x.useCallback)(a=>{let b=au(a.target);b&&c(a=>a?(a.set(b,ax(b)),new Map(a)):null)},[]);return(0,x.useEffect)(()=>{let b=d.current;if(a!==b){f(b);let g=a.map(a=>{let b=au(a);return b?(b.addEventListener("scroll",e,{passive:!0}),[b,ax(b)]):null}).filter(a=>null!=a);c(g.length?new Map(g):null),d.current=a}return()=>{f(a),f(b)};function f(a){a.forEach(a=>{let b=au(a);null==b||b.removeEventListener("scroll",e)})}},[e,a]),(0,x.useMemo)(()=>a.length?b?Array.from(b.values()).reduce((a,b)=>R(a,b),ae):aB(a):ae,[a,b])}(a7),bi=a_(bh),bj=a_(bh,[aN]),bk=R(bf,bi),bl=aT?ao(aT,bf):null,bm=ai&&bl?J({active:ai,collisionRect:bl,droppableRects:aG,droppableContainers:aE,pointerCoordinates:bg}):null,bn=aj(bm,"id"),[bo,bp]=(0,x.useState)(null),bq=(h=aY?bf:R(bf,bj),i=null!=(e=null==bo?void 0:bo.rect)?e:null,{...h,scaleX:i&&aN?i.width/aN.width:1,scaleY:i&&aN?i.height/aN.height:1}),br=(0,x.useRef)(null),bs=(0,x.useCallback)((a,b)=>{let{sensor:c,options:d}=b;if(null==ak.current)return;let e=ac.get(ak.current);if(!e)return;let f=a.nativeEvent,g=new c({active:ak.current,activeNode:e,event:f,options:d,context:aP,onAbort(a){if(!ac.get(a))return;let{onDragAbort:b}=aw.current,c={id:a};null==b||b(c),W({type:"onDragAbort",event:c})},onPending(a,b,c,d){if(!ac.get(a))return;let{onDragPending:e}=aw.current,f={id:a,constraint:b,initialCoordinates:c,offset:d};null==e||e(f),W({type:"onDragPending",event:f})},onStart(a){let b=ak.current;if(null==b)return;let c=ac.get(b);if(!c)return;let{onDragStart:d}=aw.current,e={activatorEvent:f,active:{id:b,data:c.data,rect:ah}};(0,z.unstable_batchedUpdates)(()=>{null==d||d(e),Z(v.Initializing),V({type:m.DragStart,initialCoordinates:a,active:b}),W({type:"onDragStart",event:e}),ap(br.current),av(f)})},onMove(a){V({type:m.DragMove,coordinates:a})},onEnd:h(m.DragEnd),onCancel:h(m.DragCancel)});function h(a){return async function(){let{active:b,collisions:c,over:d,scrollAdjustedTranslate:e}=aP.current,g=null;if(b&&e){let{cancelDrop:h}=aw.current;g={activatorEvent:f,active:b,collisions:c,delta:e,over:d},a===m.DragEnd&&"function"==typeof h&&await Promise.resolve(h(g))&&(a=m.DragCancel)}ak.current=null,(0,z.unstable_batchedUpdates)(()=>{V({type:a}),Z(v.Uninitialized),bp(null),ap(null),av(null),br.current=null;let b=a===m.DragEnd?"onDragEnd":"onDragCancel";if(g){let a=aw.current[b];null==a||a(g),W({type:b,event:g})}})}}br.current=g},[ac]),bt=(0,x.useCallback)((a,b)=>(c,d)=>{let e=c.nativeEvent,f=ac.get(d);null!==ak.current||!f||e.dndKit||e.defaultPrevented||!0===a(c,b.options,{active:f})&&(e.dndKit={capturedBy:b.sensor},ak.current=d,bs(c,b))},[ac,bs]),bu=(0,x.useMemo)(()=>H.reduce((a,b)=>{let{sensor:c}=b;return[...a,...c.activators.map(a=>({eventName:a.eventName,handler:bt(a.handler,b)}))]},[]),[H,bt]);(0,x.useEffect)(()=>{if(!A)return;let a=H.map(a=>{let{sensor:b}=a;return null==b.setup?void 0:b.setup()});return()=>{for(let b of a)null==b||b()}},H.map(a=>{let{sensor:b}=a;return b})),I(()=>{aN&&Y===v.Initializing&&Z(v.Initialized)},[aN,Y]),(0,x.useEffect)(()=>{let{onDragMove:a}=aw.current,{active:b,activatorEvent:c,collisions:d,over:e}=aP.current;if(!b||!c)return;let f={active:b,activatorEvent:c,collisions:d,delta:{x:bk.x,y:bk.y},over:e};(0,z.unstable_batchedUpdates)(()=>{null==a||a(f),W({type:"onDragMove",event:f})})},[bk.x,bk.y]),(0,x.useEffect)(()=>{let{active:a,activatorEvent:b,collisions:c,droppableContainers:d,scrollAdjustedTranslate:e}=aP.current;if(!a||null==ak.current||!b||!e)return;let{onDragOver:f}=aw.current,g=d.get(bn),h=g&&g.rect.current?{id:g.id,rect:g.rect.current,data:g.data,disabled:g.disabled}:null,i={active:a,activatorEvent:b,collisions:c,delta:{x:e.x,y:e.y},over:h};(0,z.unstable_batchedUpdates)(()=>{bp(h),null==f||f(i),W({type:"onDragOver",event:i})})},[bn]),I(()=>{aP.current={activatorEvent:ar,active:ai,activeNode:aJ,collisionRect:bl,collisions:bm,droppableRects:aG,draggableNodes:ac,draggingNode:aS,draggingNodeRect:aT,droppableContainers:af,over:bo,scrollableAncestors:a7,scrollAdjustedTranslate:bk},ah.current={initial:aT,translated:bl}},[ai,aJ,bm,bl,ac,aS,aT,aG,af,bo,a7,bk]),function(a){let b,{acceleration:c,activator:d=r.Pointer,canScroll:e,draggingRect:f,enabled:g,interval:h=5,order:i=s.TreeOrder,pointerCoordinates:j,scrollableAncestors:k,scrollableAncestorRects:l,delta:m,threshold:o}=a,p=function(a){let{delta:b,disabled:c}=a,d=N(b);return L(a=>{if(c||!d||!a)return aU;let e={x:Math.sign(b.x-d.x),y:Math.sign(b.y-d.y)};return{x:{[n.Backward]:a.x[n.Backward]||-1===e.x,[n.Forward]:a.x[n.Forward]||1===e.x},y:{[n.Backward]:a.y[n.Backward]||-1===e.y,[n.Forward]:a.y[n.Forward]||1===e.y}}},[c,b,d])}({delta:m,disabled:!g}),[q,t]=(b=(0,x.useRef)(null),[(0,x.useCallback)((a,c)=>{b.current=setInterval(a,c)},[]),(0,x.useCallback)(()=>{null!==b.current&&(clearInterval(b.current),b.current=null)},[])]),u=(0,x.useRef)({x:0,y:0}),v=(0,x.useRef)({x:0,y:0}),w=(0,x.useMemo)(()=>{switch(d){case r.Pointer:return j?{top:j.y,bottom:j.y,left:j.x,right:j.x}:null;case r.DraggableRect:return f}},[d,f,j]),y=(0,x.useRef)(null),z=(0,x.useCallback)(()=>{let a=y.current;if(!a)return;let b=u.current.x*v.current.x,c=u.current.y*v.current.y;a.scrollBy(b,c)},[]),A=(0,x.useMemo)(()=>i===s.TreeOrder?[...k].reverse():k,[i,k]);(0,x.useEffect)(()=>{if(!g||!k.length||!w)return void t();for(let a of A){if((null==e?void 0:e(a))===!1)continue;let b=l[k.indexOf(a)];if(!b)continue;let{direction:d,speed:f}=function(a,b,c,d,e){let{top:f,left:g,right:h,bottom:i}=c;void 0===d&&(d=10),void 0===e&&(e=aA);let{isTop:j,isBottom:k,isLeft:l,isRight:m}=az(a),o={x:0,y:0},p={x:0,y:0},q={height:b.height*e.y,width:b.width*e.x};return!j&&f<=b.top+q.height?(o.y=n.Backward,p.y=d*Math.abs((b.top+q.height-f)/q.height)):!k&&i>=b.bottom-q.height&&(o.y=n.Forward,p.y=d*Math.abs((b.bottom-q.height-i)/q.height)),!m&&h>=b.right-q.width?(o.x=n.Forward,p.x=d*Math.abs((b.right-q.width-h)/q.width)):!l&&g<=b.left+q.width&&(o.x=n.Backward,p.x=d*Math.abs((b.left+q.width-g)/q.width)),{direction:o,speed:p}}(a,b,w,c,o);for(let a of["x","y"])p[a][d[a]]||(f[a]=0,d[a]=0);if(f.x>0||f.y>0){t(),y.current=a,q(z,h),u.current=f,v.current=d;return}}u.current={x:0,y:0},v.current={x:0,y:0},t()},[c,z,e,t,g,h,JSON.stringify(w),JSON.stringify(p),q,k,A,l,JSON.stringify(o)])}({...aL,delta:ad,draggingRect:bl,pointerCoordinates:bg,scrollableAncestors:a7,scrollableAncestorRects:be});let bv=(0,x.useMemo)(()=>({active:ai,activeNode:aJ,activeNodeRect:aN,activatorEvent:ar,collisions:bm,containerNodeRect:aO,dragOverlay:aR,draggableNodes:ac,droppableContainers:af,droppableRects:aG,over:bo,measureDroppableContainers:aH,scrollableAncestors:a7,scrollableAncestorRects:be,measuringConfiguration:aF,measuringScheduled:aI,windowRect:a6}),[ai,aJ,aN,ar,bm,aO,aR,ac,af,aG,bo,aH,a7,be,aF,aI,a6]),bw=(0,x.useMemo)(()=>({activatorEvent:ar,activators:bu,active:ai,activeNodeRect:aN,ariaDescribedById:{draggable:aC},dispatch:V,draggableNodes:ac,over:bo,measureDroppableContainers:aH}),[ar,bu,ai,aN,V,aC,ac,bo,aH]);return y().createElement($.Provider,{value:X},y().createElement(a8.Provider,{value:bw},y().createElement(a9.Provider,{value:bv},y().createElement(bd.Provider,{value:bq},G)),y().createElement(bc,{disabled:(null==C?void 0:C.restoreFocus)===!1})),y().createElement(ab,{...C,hiddenTextDescribedById:aC}))}),bf=(0,x.createContext)(null),bg="button",bh={timeout:25};function bi(a,b,c){let d=a.slice();return d.splice(c<0?d.length+c:c,0,d.splice(b,1)[0]),d}function bj(a){return null!==a&&a>=0}let bk=a=>{let{rects:b,activeIndex:c,overIndex:d,index:e}=a,f=bi(b,d,c),g=b[e],h=f[e];return h&&g?{x:h.left-g.left,y:h.top-g.top,scaleX:h.width/g.width,scaleY:h.height/g.height}:null},bl={scaleX:1,scaleY:1},bm=a=>{var b,c,d,e;let f,g,h,{activeIndex:i,activeNodeRect:j,index:k,rects:l,overIndex:m}=a,n=null!=(b=l[i])?b:j;if(!n)return null;if(k===i){let a=l[m];return a?{x:0,y:i<m?a.top+a.height-(n.top+n.height):a.top-n.top,...bl}:null}let o=(c=l,d=k,e=i,f=c[d],g=c[d-1],h=c[d+1],f?e<d?g?f.top-(g.top+g.height):h?h.top-(f.top+f.height):0:h?h.top-(f.top+f.height):g?f.top-(g.top+g.height):0:0);return k>i&&k<=m?{x:0,y:-n.height-o,...bl}:k<i&&k>=m?{x:0,y:n.height+o,...bl}:{x:0,y:0,...bl}},bn="Sortable",bo=y().createContext({activeIndex:-1,containerId:bn,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:bk,disabled:{draggable:!1,droppable:!1}});function bp(a){let{children:b,id:c,items:d,strategy:e=bk,disabled:f=!1}=a,{active:g,dragOverlay:h,droppableRects:i,over:j,measureDroppableContainers:k}=(0,x.useContext)(a9),l=P(bn,c),m=null!==h.rect,n=(0,x.useMemo)(()=>d.map(a=>"object"==typeof a&&"id"in a?a.id:a),[d]),o=null!=g,p=g?n.indexOf(g.id):-1,q=j?n.indexOf(j.id):-1,r=(0,x.useRef)(n),s=!function(a,b){if(a===b)return!0;if(a.length!==b.length)return!1;for(let c=0;c<a.length;c++)if(a[c]!==b[c])return!1;return!0}(n,r.current),t=-1!==q&&-1===p||s,u="boolean"==typeof f?{draggable:f,droppable:f}:f;I(()=>{s&&o&&k(n)},[s,n,o,k]),(0,x.useEffect)(()=>{r.current=n},[n]);let v=(0,x.useMemo)(()=>({activeIndex:p,containerId:l,disabled:u,disableTransforms:t,items:n,overIndex:q,useDragOverlay:m,sortedRects:n.reduce((a,b,c)=>{let d=i.get(b);return d&&(a[c]=d),a},Array(n.length)),strategy:e}),[p,l,u.draggable,u.droppable,t,n,q,i,m,e]);return y().createElement(bo.Provider,{value:v},b)}let bq=a=>{let{id:b,items:c,activeIndex:d,overIndex:e}=a;return bi(c,d,e).indexOf(b)},br=a=>{let{containerId:b,isSorting:c,wasDragging:d,index:e,items:f,newIndex:g,previousItems:h,previousContainerId:i,transition:j}=a;return!!j&&!!d&&(h===f||e!==g)&&(!!c||g!==e&&b===i)},bs={duration:200,easing:"ease"},bt="transform",bu=V.Transition.toString({property:bt,duration:0,easing:"linear"}),bv={roleDescription:"sortable"};function bw(a){if(!a)return!1;let b=a.data.current;return!!b&&"sortable"in b&&"object"==typeof b.sortable&&"containerId"in b.sortable&&"items"in b.sortable&&"index"in b.sortable}let bx=[p.Down,p.Right,p.Up,p.Left],by=(a,b)=>{let{context:{active:c,collisionRect:d,droppableRects:e,droppableContainers:f,over:g,scrollableAncestors:h}}=b;if(bx.includes(a.code)){if(a.preventDefault(),!c||!d)return;let b=[];f.getEnabled().forEach(c=>{if(!c||null!=c&&c.disabled)return;let f=e.get(c.id);if(f)switch(a.code){case p.Down:d.top<f.top&&b.push(c);break;case p.Up:d.top>f.top&&b.push(c);break;case p.Left:d.left>f.left&&b.push(c);break;case p.Right:d.left<f.left&&b.push(c)}});let k=(a=>{let{collisionRect:b,droppableRects:c,droppableContainers:d}=a,e=ai(b),f=[];for(let a of d){let{id:b}=a,d=c.get(b);if(d){let c=ai(d),g=Number((e.reduce((a,b,d)=>a+af(c[d],b),0)/4).toFixed(4));f.push({id:b,data:{droppableContainer:a,value:g}})}}return f.sort(ag)})({active:c,collisionRect:d,droppableRects:e,droppableContainers:b,pointerCoordinates:null}),l=aj(k,"id");if(l===(null==g?void 0:g.id)&&k.length>1&&(l=k[1].id),null!=l){let a=f.get(c.id),b=f.get(l),g=b?e.get(b.id):null,k=null==b?void 0:b.node.current;if(k&&g&&a&&b){var i,j;let c=as(k).some((a,b)=>h[b]!==a),e=bz(a,b),f=(i=a,j=b,!!bw(i)&&!!bw(j)&&!!bz(i,j)&&i.data.current.sortable.index<j.data.current.sortable.index),l=c||!e?{x:0,y:0}:{x:f?d.width-g.width:0,y:f?d.height-g.height:0},m={x:g.left,y:g.top};return l.x&&l.y?m:S(m,l)}}}};function bz(a,b){return!!bw(a)&&!!bw(b)&&a.data.current.sortable.containerId===b.data.current.sortable.containerId}let bA=a=>{let b,{containerNodeRect:c,draggingNodeRect:d,transform:e}=a;return d&&c?(b={...e},d.top+e.y<=c.top?b.y=c.top-d.top:d.bottom+e.y>=c.top+c.height&&(b.y=c.top+c.height-d.bottom),d.left+e.x<=c.left?b.x=c.left-d.left:d.right+e.x>=c.left+c.width&&(b.x=c.left+c.width-d.right),b):e},bB=a=>{let{transform:b}=a;return{...b,x:0}};var bC=c(50412),bD=c(50377),bE=c(91431),bF=c(96919);let bG=/^[a-zA-Z0-9_.\-]+$/,bH=[{value:"global",label:"To\xe0n cục / h\xe0nh vi hiện tại",description:"Giữ h\xe0nh vi hiện tại: mọi request d\xf9ng chung v\xf2ng xoay combo to\xe0n cục."},{value:"client_ip",label:"IP client",description:"Giữ c\xf9ng model khởi đầu cho c\xf9ng IP client cho đến khi hết TTL."},{value:"client_session",label:"IP client + phi\xean chat",description:"Ph\xf9 hợp nhất cho c\xf4ng cụ chat. Giữ c\xf9ng model cho c\xf9ng m\xe1y v\xe0 c\xf9ng phi\xean chat."}],bI=[{value:"fallback",label:"Ưu ti\xean fallback",description:"Thử model trong combo theo đ\xfang thứ tự hiển thị, lỗi th\xec fallback."},{value:"round-robin",label:"Round Robin",description:"Lu\xe2n phi\xean model đang bật được thử đầu ti\xean. C\xe1c t\xf9y chọn giữ d\xednh b\xean dưới vẫn được \xe1p dụng."},{value:"least-latency",label:"Độ trễ thấp nhất",description:"Ưu ti\xean target c\xf3 điểm health/độ trễ tốt nhất. Hữu \xedch cho LAN Ollama."},{value:"p2c",label:"P2C",description:"Power of Two Choices: lấy mẫu hai target khỏe rồi chọn target \xedt bận hơn."}],bJ=[{card:"border-sky-100 bg-sky-50/55 dark:border-sky-400/15 dark:bg-sky-950/10",panel:"border-sky-100/80 bg-white/80 dark:border-sky-400/15 dark:bg-zinc-950/60"},{card:"border-slate-200 bg-slate-50/80 dark:border-slate-500/15 dark:bg-slate-900/35",panel:"border-slate-200/80 bg-white/80 dark:border-slate-500/15 dark:bg-zinc-950/60"},{card:"border-emerald-100 bg-emerald-50/45 dark:border-emerald-400/15 dark:bg-emerald-950/10",panel:"border-emerald-100/80 bg-white/80 dark:border-emerald-400/15 dark:bg-zinc-950/60"},{card:"border-violet-100 bg-violet-50/45 dark:border-violet-400/15 dark:bg-violet-950/10",panel:"border-violet-100/80 bg-white/80 dark:border-violet-400/15 dark:bg-zinc-950/60"}],bK=Object.freeze({temperature:.3,top_p:.95,presence_penalty:0,max_tokens:4096,reasoning_budget:0,thinkingMode:"off",forceThinkingOffAboveChars:5e4}),bL=Object.freeze({temperature:.2,top_p:.95,presence_penalty:0,max_tokens:4096}),bM=[{value:"inherit",label:"Theo request gốc",description:"Giữ nguy\xean request gốc, kh\xf4ng inject thinking."},{value:"off",label:"Tắt thinking",description:"Gửi chat_template_kwargs.enable_thinking = false."},{value:"on",label:"Bật thinking",description:"Gửi chat_template_kwargs.enable_thinking = true."}],bN=[{value:"inherit",label:"Theo cấu h\xecnh hệ thống",description:"Sử dụng ch\xednh s\xe1ch lưu Prompt Logs chung của hệ thống."},{value:"enabled",label:"Lưu đầy đủ nội dung",description:"Cho ph\xe9p quản trị vi\xean xem lại to\xe0n bộ prompt v\xe0 phản hồi của c\xe1c request thuộc combo n\xe0y."},{value:"disabled",label:"Chỉ lưu thống k\xea",description:"Kh\xf4ng lưu nội dung hội thoại. Chỉ lưu metadata, model, provider, token, thời gian xử l\xfd v\xe0 c\xe1c thống k\xea vận h\xe0nh."}];function bO(a){return a&&"object"==typeof a&&!Array.isArray(a)}function bP(a,b){return Object.prototype.hasOwnProperty.call(a||{},b)}function bQ(a,{min:b,max:c,precision:d=3}={}){if(null==a||""===a)return;let e=Number(a);if(Number.isFinite(e))return Number(Math.min(c,Math.max(b,e)).toFixed(d))}function bR(a,{min:b,max:c}={}){let d=bQ(a,{min:b,max:c,precision:0});return void 0===d?void 0:Math.trunc(d)}function bS(a){let b=bV(a).toLowerCase();return"enabled"===b||"disabled"===b?b:"inherit"}function bT(a={}){let b=bO(a)?a:{},c={};if(bP(b,"temperature")){let a=bQ(b.temperature,{min:0,max:2});void 0!==a&&(c.temperature=a)}if(bP(b,"top_p")||bP(b,"topP")){let a=bQ(b.top_p??b.topP,{min:.01,max:1});void 0!==a&&(c.top_p=a)}let d=b.presence_penalty??b.presencePenalty??b["presence-penalty"];if(bP(b,"presence_penalty")||bP(b,"presencePenalty")||bP(b,"presence-penalty")){let a=bQ(d,{min:-2,max:2});void 0!==a&&(c.presence_penalty=a)}let e=b.max_tokens??b.maxTokens??b.max_token;if(bP(b,"max_tokens")||bP(b,"maxTokens")||bP(b,"max_token")){let a=bR(e,{min:1,max:262144});void 0!==a&&(c.max_tokens=a)}return c}function bU(a={}){let b=bO(a)?a:{},c={};if(bP(b,"temperature")){let a=bQ(b.temperature,{min:0,max:2});void 0!==a&&(c.temperature=a)}if(bP(b,"top_p")){let a=bQ(b.top_p,{min:.01,max:1});void 0!==a&&(c.top_p=a)}let d=b.presence_penalty??b.presencePenalty??b["presence-penalty"];if(bP(b,"presence_penalty")||bP(b,"presencePenalty")||bP(b,"presence-penalty")){let a=bQ(d,{min:-2,max:2});void 0!==a&&(c.presence_penalty=a)}let e=b.max_tokens??b.maxTokens??b.max_token;if(bP(b,"max_tokens")||bP(b,"maxTokens")||bP(b,"max_token")){let a=bR(e,{min:1,max:262144});void 0!==a&&(c.max_tokens=a)}let f=b.reasoning_budget??b.reasoningBudget??b["reasoning-budget"];if(bP(b,"reasoning_budget")||bP(b,"reasoningBudget")||bP(b,"reasoning-budget")){let a=bR(f,{min:0,max:262144});void 0!==a&&(c.reasoning_budget=a)}let g=b.forceThinkingOffAboveChars??b.forceThinkingOffChars??b.force_thinking_off_above_chars;if(bP(b,"forceThinkingOffAboveChars")||bP(b,"forceThinkingOffChars")||bP(b,"force_thinking_off_above_chars")){let a=bR(g,{min:0,max:1e6});void 0!==a&&(c.forceThinkingOffAboveChars=a)}let h=b.forceThinkingOffRequestOverrides??b.forceThinkingOffOverrides??b.autoOffRequestOverrides;if(bP(b,"forceThinkingOffRequestOverrides")||bP(b,"forceThinkingOffOverrides")||bP(b,"autoOffRequestOverrides")){let a=bT(h);Object.keys(a).length>0&&(c.forceThinkingOffRequestOverrides=a)}let i=function(a){if(!0===a)return"on";if(!1===a)return"off";let b=bV(a).toLowerCase();return["on","true","1","enable","enabled"].includes(b)?"on":["off","false","0","disable","disabled"].includes(b)?"off":void 0}(b.thinkingMode??b.thinking);return i&&(c.thinkingMode=i),c}function bV(a){return String(a||"").trim()}function bW(a={}){return Array.isArray(a.disabledModels)?[...new Set(a.disabledModels.map(a=>bV(a)).filter(Boolean))]:[]}function bX(a={}){let b=a.fallbackStrategy||"fallback";return{...a,fallbackStrategy:b,stickyScope:a.stickyScope||"global",stickyTtlMinutes:Number(a.stickyTtlMinutes||120),stickyFallbackToClientIp:!1!==a.stickyFallbackToClientIp,lanHealthEnabled:!1!==a.lanHealthEnabled,healthCheckPath:a.healthCheckPath||"/api/tags",healthCheckIntervalMs:Number(a.healthCheckIntervalMs||15e3),requiredTags:Array.isArray(a.requiredTags)?a.requiredTags:[],modelTagRules:a.modelTagRules||a.modelTags||a.tagRules||{},disabledModels:bW(a),requestOverrides:bU(a.requestOverrides||{}),contentLoggingMode:bS(a.contentLoggingMode)}}function bY(a={}){let b={...a};b.disabledModels=bW(a),"fallback"===(b.fallbackStrategy||"fallback")&&delete b.fallbackStrategy,b.disabledModels.length||delete b.disabledModels;let c=bS(b.contentLoggingMode);"inherit"===c?delete b.contentLoggingMode:b.contentLoggingMode=c,b.requiredTags?.length||delete b.requiredTags;let d=bU(b.requestOverrides||{});return Object.keys(d).length?b.requestOverrides=d:delete b.requestOverrides,b.modelTagRules&&0!==Object.keys(b.modelTagRules).length||delete b.modelTagRules,"/api/tags"===b.healthCheckPath&&delete b.healthCheckPath,15e3===Number(b.healthCheckIntervalMs)&&delete b.healthCheckIntervalMs,!0===b.lanHealthEnabled&&delete b.lanHealthEnabled,Object.keys(b).length?b:null}function bZ(a=[]){return Array.isArray(a)?a.join(", "):String(a||"")}function b$(a=""){return String(a||"").split(/[\n,;]+/).map(a=>a.trim()).filter(Boolean)}function b_(a={}){return a&&"object"==typeof a?Object.entries(a).map(([a,b])=>`${a}: ${Array.isArray(b)?b.join(", "):String(b||"")}`).join("\n"):""}function b0(a){return"string"==typeof a?a:a&&"object"==typeof a&&(a.value||a.model||a.id)||""}function b1(a={}){let b=bV(a.provider);return bV(a.providerSpecificData?.prefix)||bV(a.prefix)||bV((0,bF.wG)(b))||b}function b2(a={}){return bV(a.email)||bV(a.accountName)||bV(a.displayName)||bV(a.name)||bV(a.providerSpecificData?.nodeName)||bV(a.id)}function b3(a){return a&&"object"==typeof a?bV(a.connectionId||a.connection_id):""}function b4(a){let b=b0(a),c=b3(a);return b?c?`${b}@@${c}`:b:""}function b5(a){return"string"==typeof a?a:a&&"object"==typeof a?bV(a.label)||bV(a.displayName)||bV(a.name)||b0(a):""}function b6(a){if(!a||"object"!=typeof a)return b0(a);let b=b0(a);return b?Object.fromEntries(Object.entries({model:b,connectionId:b3(a)||void 0,label:b5(a)||void 0,provider:bV(a.provider)||void 0,accountName:bV(a.accountName||a.account_name)||void 0,weight:Number(a.weight||0)>0?Number(a.weight):void 0}).filter(([,a])=>void 0!==a&&""!==a)):""}function b7(a,b=!0){let c=b6(a),d=b4(c);return{value:d,enabled:b,target:c,label:b5(c)||d,subtitle:function(a){if(!a||"object"!=typeof a)return"";let b=b3(a),c=b0(a);return b?`T\xe0i khoản cố định • ${b}${c?` • ${c}`:""}`:""}(c)}}function b8(a={}){return bV(a.defaultModel)||bV(a.providerSpecificData?.defaultModel)||bV(a.model)||""}function b9(a,b,c,d=""){let e=bV(c);!e||b.has(e)||(b.add(e),a.push({value:e,label:bV(d)||e}))}function ca(a={},b={}){let c=[],d=new Set,e=bV(a.provider),f=[...new Set([b1(a),bV((0,bF.wG)(e)),e].filter(Boolean))];for(let a of(0,bE.KC)(e)||[])a?.type&&"llm"!==a.type||b9(c,d,a.id,a.name||a.id);for(let[a,e]of Object.entries(b||{})){let b=bV(e),g=f.find(a=>a&&b.startsWith(`${a}/`));if(!g)continue;let h=b.slice(g.length+1);b9(c,d,h,a||h)}return b9(c,d,b8(a),"Model mặc định"),c}function cb(a={},{disabledModels:b=[],requestOverrides:c,contentLoggingMode:d}={}){let e={...a},f=[...new Set((b||[]).map(a=>bV(a)).filter(Boolean))];if(f.length>0?e.disabledModels=f:delete e.disabledModels,void 0!==c){let a=bU(c||{});Object.keys(a).length?e.requestOverrides=a:delete e.requestOverrides}if(void 0!==d){let a=bS(d);"inherit"===a?delete e.contentLoggingMode:e.contentLoggingMode=a}return bY(e)}function cc(){let[a,b]=(0,x.useState)([]),[c,d]=(0,x.useState)(!0),[e,f]=(0,x.useState)(!1),[g,h]=(0,x.useState)(null),[i,j]=(0,x.useState)([]),[k,l]=(0,x.useState)(!1),[m,n]=(0,x.useState)(!1),[o,p]=(0,x.useState)({}),[q,r]=(0,x.useState)(""),[s,t]=(0,x.useState)(null),{copied:u,copy:v}=(0,bD.C)(),y=async()=>{try{let a=await fetch("/api/dashboard/combos",{cache:"no-store"}),c=await a.json();a.ok&&(b(c.combos||[]),p(c.comboStrategies||{}))}catch(a){console.log("Error fetching combo data:",a)}finally{d(!1)}},z=async()=>{if(!k&&!m){n(!0);try{let a=await fetch("/api/providers",{cache:"no-store"}),b=await a.json();a.ok&&(j(b.connections||[]),l(!0))}catch(a){console.log("Error loading provider accounts:",a)}finally{n(!1)}}},A=async()=>{f(!0),z()},B=async a=>{h(a),z()},C=async a=>{await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({comboStrategies:a})}),p(a)},D=async a=>{let{disabledModels:b=[],requestOverrides:c,contentLoggingMode:d,...e}=a;try{let a=await fetch("/api/combos",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(a.ok){let a=cb({},{disabledModels:b,requestOverrides:c,contentLoggingMode:d});a&&await C({...o,[e.name]:a}),await y(),r(e.name),f(!1)}else{let b=await a.json();alert(b.error||"Tạo combo thất bại")}}catch(a){console.log("Error creating combo:",a)}},E=async(a,b)=>{let{disabledModels:c=[],requestOverrides:d,contentLoggingMode:e,...f}=b,i=g?.name;try{let b=await fetch(`/api/combos/${a}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(f)});if(b.ok){let a={...o};i&&i!==f.name&&a[i]&&(a[f.name]=a[i],delete a[i]);let b=cb(a[f.name]||{},{disabledModels:c,requestOverrides:d,contentLoggingMode:e});b?a[f.name]=b:delete a[f.name],await C(a),await y(),r(f.name),h(null)}else{let a=await b.json();alert(a.error||"Cập nhật combo thất bại")}}catch(a){console.log("Error updating combo:",a)}},F=async c=>{let d=a.find(a=>a.id===c);t({title:"X\xf3a combo",message:"Bạn c\xf3 chắc muốn x\xf3a combo n\xe0y?",onConfirm:async()=>{t(null);try{if((await fetch(`/api/combos/${c}`,{method:"DELETE"})).ok){if(d?.name&&o[d.name]){let a={...o};delete a[d.name],await C(a)}b(a=>{let b=a.filter(a=>a.id!==c);return d?.name===q&&r(b[0]?.name||""),b})}}catch(a){console.log("Error deleting combo:",a)}}})},G=async(a,b)=>{try{let c={...o};if(b)c[a]=bX(c[a]);else{let b=function(a={}){return bY({...a,fallbackStrategy:"fallback"})}(c[a]||{});b?c[a]=b:delete c[a]}await C(c)}catch(a){console.log("Error updating combo strategy:",a)}},H=async(a,b)=>{try{let c={...o},d=bY({...bX(c[a]),...b});d?c[a]=d:delete c[a],await C(c)}catch(a){console.log("Error updating combo routing settings:",a)}},I=a.find(a=>a.name===q)||a[0]||null,J=I?Math.max(0,a.findIndex(a=>a.id===I.id)):0;return c?(0,w.jsx)("div",{className:"grid gap-4",children:[1,2,3].map(a=>(0,w.jsx)("div",{className:"h-36 animate-pulse rounded-2xl border border-border bg-surface"},a))}):(0,w.jsxs)("div",{className:"space-y-6",children:[(0,w.jsxs)("div",{className:"flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between",children:[(0,w.jsxs)("div",{children:[(0,w.jsx)("h1",{className:"text-2xl font-bold text-text-main",children:"Combo model"}),(0,w.jsx)("p",{className:"mt-1 text-sm text-text-muted",children:"Tạo combo model với fallback, round-robin, độ trễ thấp nhất, P2C v\xe0 routing theo trạng th\xe1i health của LAN Ollama."})]}),(0,w.jsxs)("button",{type:"button",onClick:A,className:"inline-flex items-center justify-center gap-2 rounded-xl bg-primary px-4 py-2 text-sm font-medium text-white hover:opacity-90",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"add"}),"Tạo combo"]})]}),0===a.length?(0,w.jsxs)("div",{className:"rounded-2xl border border-dashed border-border bg-surface p-12 text-center",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-4xl text-text-muted",children:"layers"}),(0,w.jsx)("h2",{className:"mt-3 text-lg font-semibold text-text-main",children:"Chưa c\xf3 combo n\xe0o"}),(0,w.jsx)("p",{className:"mt-1 text-sm text-text-muted",children:"Tạo combo model c\xf3 hỗ trợ fallback."}),(0,w.jsx)("button",{type:"button",onClick:A,className:"mt-4 rounded-xl bg-primary px-4 py-2 text-sm font-medium text-white hover:opacity-90",children:"Tạo combo"})]}):(0,w.jsxs)("div",{className:"space-y-4",children:[(0,w.jsx)("div",{className:"rounded-2xl border border-border bg-surface/80 p-4 shadow-sm dark:bg-zinc-950/70",children:(0,w.jsxs)("div",{className:"flex flex-col gap-3 lg:flex-row lg:items-end lg:justify-between",children:[(0,w.jsxs)("label",{className:"block min-w-0 flex-1",children:[(0,w.jsx)("span",{className:"mb-1 block text-xs font-semibold uppercase tracking-wide text-text-muted",children:"Combo đang xem"}),(0,w.jsx)("select",{value:I?.name||"",onChange:a=>r(a.target.value),className:"w-full rounded-xl border border-border bg-white px-4 py-2.5 text-sm font-semibold text-text-main outline-none transition focus:border-primary dark:bg-zinc-900",children:a.map(a=>(0,w.jsxs)("option",{value:a.name,children:[a.name," • ",(a.models||[]).length," model"]},a.id))})]}),(0,w.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-xs text-text-muted",children:[(0,w.jsxs)("span",{className:"rounded-full bg-background px-3 py-1 dark:bg-zinc-900",children:["Tổng ",a.length," combo"]}),I?(0,w.jsxs)("span",{className:"rounded-full bg-primary/10 px-3 py-1 font-medium text-primary",children:["Đang hiển thị: ",I.name]}):null]})]})}),I?(0,w.jsx)(cd,{combo:I,comboIndex:J,copied:u,onCopy:v,onEdit:()=>B(I),onDelete:()=>F(I.id),comboStrategy:o[I.name]||{},onToggleRoundRobin:a=>G(I.name,a),onUpdateComboStrategy:a=>H(I.name,a)},I.id):null]}),(0,w.jsx)(cj,{isOpen:e,comboStrategy:{},onClose:()=>f(!1),onSave:D,activeProviders:i,providersLoading:m}),(0,w.jsx)(cj,{isOpen:!!g,combo:g,comboStrategy:o[g?.name]||{},onClose:()=>h(null),onSave:a=>E(g.id,a),activeProviders:i,providersLoading:m}),(0,w.jsx)(bC.uo,{isOpen:!!s,onClose:()=>t(null),onConfirm:s?.onConfirm,title:s?.title||"X\xe1c nhận",message:s?.message,variant:"danger"})]})}function cd({combo:a,comboIndex:b=0,copied:c,onCopy:d,onEdit:e,onDelete:f,comboStrategy:g={},onToggleRoundRobin:h,onUpdateComboStrategy:i}){let j=bX(g||{}),k=j.fallbackStrategy||"fallback",l=bI.find(a=>a.value===k)||bI[0],m=j.stickyScope||"global",n=bH.find(a=>a.value===m)||bH[0],o=bW(g),p=bJ[b%bJ.length],[q,r]=(0,x.useState)(bZ(j.requiredTags)),[s,t]=(0,x.useState)(b_(j.modelTagRules));return(0,x.useEffect)(()=>{r(bZ(j.requiredTags)),t(b_(j.modelTagRules))},[a.name,JSON.stringify(j.requiredTags||[]),JSON.stringify(j.modelTagRules||{})]),(0,w.jsxs)("div",{className:`rounded-2xl border p-5 shadow-sm transition-colors ${p.card}`,children:[(0,w.jsxs)("div",{className:"flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between",children:[(0,w.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,w.jsxs)("div",{className:"flex items-center gap-2",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-primary",children:"layers"}),(0,w.jsx)("h3",{className:"truncate text-lg font-semibold text-text-main",children:a.name})]}),(0,w.jsxs)("p",{className:"mt-1 text-sm text-text-muted",children:[(a.models||[]).length," model đang bật",o.length>0?` • ${o.length} đ\xe3 tắt`:""]})]}),(0,w.jsxs)("div",{className:"flex items-center gap-1",children:[(0,w.jsx)(ce,{icon:c===`combo-${a.id}`?"check":"content_copy",title:"Copy t\xean combo",onClick:()=>d(a.name,`combo-${a.id}`)}),(0,w.jsx)(ce,{icon:"edit",title:"Chỉnh sửa",onClick:e}),(0,w.jsx)(ce,{icon:"delete",title:"X\xf3a",onClick:f,danger:!0})]})]}),(0,w.jsxs)("div",{className:"mt-4 flex flex-wrap gap-2",children:[0===(a.models||[]).length?(0,w.jsx)("span",{className:"rounded-lg bg-background px-2 py-1 text-xs text-text-muted",children:"Chưa c\xf3 model đang bật"}):(a.models||[]).slice(0,5).map((a,b)=>(0,w.jsx)("span",{className:"rounded-lg bg-background px-2 py-1 font-mono text-xs text-text-main",children:b5(a)},`${b4(a)}-${b}`)),(a.models||[]).length>5&&(0,w.jsxs)("span",{className:"rounded-lg bg-background px-2 py-1 text-xs text-text-muted",children:["+",a.models.length-5," model nữa"]}),o.length>0&&(0,w.jsxs)("span",{className:"rounded-lg bg-red-500/10 px-2 py-1 text-xs text-red-500",children:[o.length," đ\xe3 tắt"]}),(function(a={}){let b=bU(a),c=[];if(void 0!==b.temperature&&c.push(`temp ${b.temperature}`),void 0!==b.top_p&&c.push(`top_p ${b.top_p}`),void 0!==b.presence_penalty&&c.push(`presence ${b.presence_penalty}`),void 0!==b.max_tokens&&c.push(`max ${b.max_tokens}`),void 0!==b.reasoning_budget&&c.push(`reasoning ${b.reasoning_budget}`),b.forceThinkingOffAboveChars>0){let a=b.forceThinkingOffRequestOverrides||{},d=[];void 0!==a.temperature&&d.push(`temp ${a.temperature}`),void 0!==a.top_p&&d.push(`top_p ${a.top_p}`),void 0!==a.presence_penalty&&d.push(`presence ${a.presence_penalty}`),void 0!==a.max_tokens&&d.push(`max ${a.max_tokens}`),c.push(`auto off >${b.forceThinkingOffAboveChars} chars${d.length?` (${d.join(", ")})`:""}`)}return"off"===b.thinkingMode&&c.push("thinking off"),"on"===b.thinkingMode&&c.push("thinking on"),c})(j.requestOverrides).map(a=>(0,w.jsx)("span",{className:"rounded-lg bg-primary/10 px-2 py-1 text-xs font-medium text-primary",children:a},a)),"inherit"!==j.contentLoggingMode?(0,w.jsxs)("span",{className:`rounded-lg px-2 py-1 text-xs font-medium ${"disabled"===j.contentLoggingMode?"bg-amber-500/10 text-amber-600":"bg-emerald-500/10 text-emerald-600"}`,children:["prompt logs ",j.contentLoggingMode]}):null]}),(0,w.jsxs)("div",{className:`mt-5 rounded-xl border p-4 ${p.panel}`,children:[(0,w.jsxs)("div",{className:"flex flex-col gap-3 md:flex-row md:items-center md:justify-between",children:[(0,w.jsxs)("div",{children:[(0,w.jsx)("h4",{className:"font-semibold text-text-main",children:"Chiến lược routing"}),(0,w.jsx)("p",{className:"mt-1 text-sm text-text-muted",children:l.description})]}),(0,w.jsx)("select",{value:k,onChange:a=>i({fallbackStrategy:a.target.value}),className:"rounded-lg border border-border bg-surface px-3 py-2 text-sm text-text-main outline-none focus:border-primary",children:bI.map(a=>(0,w.jsx)("option",{value:a.value,children:a.label},a.value))})]}),(0,w.jsx)(ci,{value:j.requestOverrides||{},onChange:a=>i({requestOverrides:a}),compact:!0}),(0,w.jsx)(cg,{value:j.contentLoggingMode,onChange:a=>i({contentLoggingMode:a}),compact:!0}),("least-latency"===k||"p2c"===k)&&(0,w.jsxs)("div",{className:"mt-4 rounded-xl border border-primary/15 bg-surface p-3",children:[(0,w.jsxs)("label",{className:"flex items-start gap-2 text-sm text-text-muted",children:[(0,w.jsx)("input",{type:"checkbox",checked:!1!==j.lanHealthEnabled,onChange:a=>i({lanHealthEnabled:a.target.checked}),className:"mt-0.5 h-3.5 w-3.5 accent-primary"}),(0,w.jsxs)("span",{children:[(0,w.jsx)("span",{className:"font-medium text-text-main",children:"Routing theo trạng th\xe1i health LAN"}),(0,w.jsx)("span",{className:"mt-1 block text-xs",children:"D\xf9ng dữ liệu health v\xe0 circuit breaker khi xếp hạng target trong combo."})]})]}),(0,w.jsxs)("div",{className:"mt-3 grid gap-3 md:grid-cols-2",children:[(0,w.jsxs)("label",{className:"block",children:[(0,w.jsx)("span",{className:"mb-1 block text-xs font-medium text-text-muted",children:"Đường dẫn health"}),(0,w.jsx)("input",{value:j.healthCheckPath||"/api/tags",onChange:a=>i({healthCheckPath:a.target.value||"/api/tags"}),placeholder:"/api/tags",className:"w-full rounded-lg border border-border bg-background px-2 py-1.5 font-mono text-xs text-text-main outline-none focus:border-primary"})]}),(0,w.jsxs)("label",{className:"block",children:[(0,w.jsx)("span",{className:"mb-1 block text-xs font-medium text-text-muted",children:"Chu kỳ kiểm tra (ms)"}),(0,w.jsx)("input",{type:"number",min:"1000",value:j.healthCheckIntervalMs||15e3,onChange:a=>i({healthCheckIntervalMs:Number(a.target.value)||15e3}),className:"w-full rounded-lg border border-border bg-background px-2 py-1.5 text-xs text-text-main outline-none focus:border-primary"})]})]}),(0,w.jsxs)("div",{className:"mt-3 grid gap-3 md:grid-cols-2",children:[(0,w.jsxs)("label",{className:"block",children:[(0,w.jsx)("span",{className:"mb-1 block text-xs font-medium text-text-muted",children:"Tag endpoint bắt buộc"}),(0,w.jsx)("input",{value:q,onChange:a=>r(a.target.value),onBlur:()=>i({requiredTags:b$(q)}),onKeyDown:a=>"Enter"===a.key&&a.currentTarget.blur(),placeholder:"gpu, vram:8gb",className:"w-full rounded-lg border border-border bg-background px-2 py-1.5 font-mono text-xs text-text-main outline-none focus:border-primary"}),(0,w.jsx)("span",{className:"mt-1 block text-[11px] text-text-muted",children:"Mọi endpoint được route đều phải c\xf3 c\xe1c tag n\xe0y."})]}),(0,w.jsxs)("label",{className:"block",children:[(0,w.jsx)("span",{className:"mb-1 block text-xs font-medium text-text-muted",children:"Quy tắc tag theo model"}),(0,w.jsx)("textarea",{value:s,onChange:a=>t(a.target.value),onBlur:()=>i({modelTagRules:function(a=""){let b={};for(let c of String(a||"").split(/\n+/)){let a=c.trim();if(!a)continue;let d=a.indexOf(":");if(-1===d)continue;let e=a.slice(0,d).trim(),f=b$(a.slice(d+1));e&&f.length&&(b[e]=f)}return b}(s)}),placeholder:"qwen3:32b: gpu, vram:16gb\nqwen3:8b: model_support:qwen3:8b",rows:3,className:"w-full rounded-lg border border-border bg-background px-2 py-1.5 font-mono text-xs text-text-main outline-none focus:border-primary"})]})]})]}),"round-robin"===k&&(0,w.jsxs)("div",{className:"mt-4 rounded-xl border border-primary/15 bg-surface p-3",children:[(0,w.jsxs)("div",{className:"mb-3 flex items-center justify-between gap-3",children:[(0,w.jsxs)("div",{className:"flex items-center gap-2 text-sm font-semibold text-primary",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"sticky_note_2"}),"Round Robin giữ d\xednh"]}),(0,w.jsxs)("label",{className:"flex items-center gap-2 text-xs text-text-muted",children:[(0,w.jsx)("input",{type:"checkbox",checked:"round-robin"===k,onChange:a=>h(a.target.checked),className:"h-3.5 w-3.5 accent-primary"}),"Bật"]})]}),(0,w.jsxs)("div",{className:"grid gap-3 md:grid-cols-2",children:[(0,w.jsxs)("label",{className:"block",children:[(0,w.jsx)("span",{className:"mb-1 block text-xs font-medium text-text-muted",children:"Chế độ giữ d\xednh"}),(0,w.jsx)("select",{value:m,onChange:a=>i({stickyScope:a.target.value}),className:"w-full rounded-lg border border-border bg-background px-2 py-1.5 text-xs text-text-main outline-none focus:border-primary",children:bH.map(a=>(0,w.jsx)("option",{value:a.value,children:a.label},a.value))}),(0,w.jsx)("span",{className:"mt-1 block text-[11px] text-text-muted",children:n.description})]}),(0,w.jsxs)("label",{className:"block",children:[(0,w.jsx)("span",{className:"mb-1 block text-xs font-medium text-text-muted",children:"TTL giữ d\xednh (ph\xfat)"}),(0,w.jsx)("input",{type:"number",min:"1",value:j.stickyTtlMinutes||120,onChange:a=>i({stickyTtlMinutes:Number(a.target.value)||120}),className:"w-full rounded-lg border border-border bg-background px-2 py-1.5 text-xs text-text-main outline-none focus:border-primary"})]})]}),(0,w.jsxs)("label",{className:"mt-3 flex items-start gap-2 text-xs text-text-muted",children:[(0,w.jsx)("input",{type:"checkbox",checked:!1!==j.stickyFallbackToClientIp,onChange:a=>i({stickyFallbackToClientIp:a.target.checked}),className:"mt-0.5 h-3.5 w-3.5 accent-primary"}),"Nếu thiếu chat session id, fallback về IP client thay v\xec xoay to\xe0n cục."]})]})]})]})}function ce({icon:a,title:b,onClick:c,danger:d=!1}){return(0,w.jsx)("button",{type:"button",onClick:a=>{a.stopPropagation(),c?.()},className:`rounded-lg p-2 transition ${d?"text-red-500 hover:bg-red-500/10":"text-text-muted hover:bg-background hover:text-primary"}`,title:b,"aria-label":b,children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:a})})}function cf({id:a,index:b,model:c,subtitle:d="",enabled:e,isFirst:f,isLast:g,onEdit:h,onMoveUp:i,onMoveDown:j,onRemove:k,onToggleEnabled:l}){let{attributes:n,listeners:o,setNodeRef:p,transform:q,isDragging:r}=function(a){var b,c,d,e;let{animateLayoutChanges:f=br,attributes:g,disabled:h,data:i,getNewIndex:j=bq,id:k,strategy:l,resizeObserverConfig:n,transition:o=bs}=a,{items:p,containerId:q,activeIndex:r,disabled:s,disableTransforms:t,sortedRects:u,overIndex:v,useDragOverlay:w,strategy:y}=(0,x.useContext)(bo),z=(b=h,c=s,"boolean"==typeof b?{draggable:b,droppable:!1}:{draggable:null!=(d=null==b?void 0:b.draggable)?d:c.draggable,droppable:null!=(e=null==b?void 0:b.droppable)?e:c.droppable}),A=p.indexOf(k),B=(0,x.useMemo)(()=>({sortable:{containerId:q,index:A,items:p},...i}),[q,i,A,p]),C=(0,x.useMemo)(()=>p.slice(p.indexOf(k)),[p,k]),{rect:D,node:E,isOver:F,setNodeRef:G}=function(a){let{data:b,disabled:c=!1,id:d,resizeObserverConfig:e}=a,f=P("Droppable"),{active:g,dispatch:h,over:i,measureDroppableContainers:j}=(0,x.useContext)(a8),k=(0,x.useRef)({disabled:c}),l=(0,x.useRef)(!1),n=(0,x.useRef)(null),o=(0,x.useRef)(null),{disabled:p,updateMeasurementsFor:q,timeout:r}={...bh,...e},s=K(null!=q?q:d),t=aX({callback:(0,x.useCallback)(()=>{if(!l.current){l.current=!0;return}null!=o.current&&clearTimeout(o.current),o.current=setTimeout(()=>{j(Array.isArray(s.current)?s.current:[s.current]),o.current=null},r)},[r]),disabled:p||!g}),[u,v]=M((0,x.useCallback)((a,b)=>{t&&(b&&(t.unobserve(b),l.current=!1),a&&t.observe(a))},[t])),w=K(b);return(0,x.useEffect)(()=>{t&&u.current&&(t.disconnect(),l.current=!1,t.observe(u.current))},[u,t]),(0,x.useEffect)(()=>(h({type:m.RegisterDroppable,element:{id:d,key:f,disabled:c,node:u,rect:n,data:w}}),()=>h({type:m.UnregisterDroppable,key:f,id:d})),[d]),(0,x.useEffect)(()=>{c!==k.current.disabled&&(h({type:m.SetDroppableDisabled,id:d,key:f,disabled:c}),k.current.disabled=c)},[d,f,c,h]),{active:g,rect:n,isOver:(null==i?void 0:i.id)===d,node:u,over:i,setNodeRef:v}}({id:k,data:B,disabled:z.droppable,resizeObserverConfig:{updateMeasurementsFor:C,...n}}),{active:H,activatorEvent:J,activeNodeRect:L,attributes:N,setNodeRef:O,listeners:Q,isDragging:R,over:S,setActivatorNodeRef:U,transform:W}=function(a){let{id:b,data:c,disabled:d=!1,attributes:e}=a,f=P("Draggable"),{activators:g,activatorEvent:h,active:i,activeNodeRect:j,ariaDescribedById:k,draggableNodes:l,over:m}=(0,x.useContext)(a8),{role:n=bg,roleDescription:o="draggable",tabIndex:p=0}=null!=e?e:{},q=(null==i?void 0:i.id)===b,r=(0,x.useContext)(q?bd:bf),[s,t]=M(),[u,v]=M(),w=(0,x.useMemo)(()=>g.reduce((a,c)=>{let{eventName:d,handler:e}=c;return a[d]=a=>{e(a,b)},a},{}),[g,b]),y=K(c);return I(()=>(l.set(b,{id:b,key:f,node:s,activatorNode:u,data:y}),()=>{let a=l.get(b);a&&a.key===f&&l.delete(b)}),[l,b]),{active:i,activatorEvent:h,activeNodeRect:j,attributes:(0,x.useMemo)(()=>({role:n,tabIndex:p,"aria-disabled":d,"aria-pressed":!!q&&n===bg||void 0,"aria-roledescription":o,"aria-describedby":k.draggable}),[d,n,p,q,o,k.draggable]),isDragging:q,listeners:d?void 0:w,node:s,over:m,setNodeRef:t,setActivatorNodeRef:v,transform:r}}({id:k,data:B,attributes:{...bv,...g},disabled:z.draggable}),X=function(){for(var a=arguments.length,b=Array(a),c=0;c<a;c++)b[c]=arguments[c];return(0,x.useMemo)(()=>a=>{b.forEach(b=>b(a))},b)}(G,O),Y=!!H,Z=Y&&!t&&bj(r)&&bj(v),$=!w&&R,_=$&&Z?W:null,aa=Z?null!=_?_:(null!=l?l:y)({rects:u,activeNodeRect:L,activeIndex:r,overIndex:v,index:A}):null,ab=bj(r)&&bj(v)?j({id:k,items:p,activeIndex:r,overIndex:v}):A,ac=null==H?void 0:H.id,ad=(0,x.useRef)({activeId:ac,items:p,newIndex:ab,containerId:q}),ae=p!==ad.current.items,af=f({active:H,containerId:q,isDragging:R,isSorting:Y,id:k,index:A,items:p,newIndex:ad.current.newIndex,previousItems:ad.current.items,previousContainerId:ad.current.containerId,transition:o,wasDragging:null!=ad.current.activeId}),ag=function(a){let{disabled:b,index:c,node:d,rect:e}=a,[f,g]=(0,x.useState)(null),h=(0,x.useRef)(c);return I(()=>{if(!b&&c!==h.current&&d.current){let a=e.current;if(a){let b=aq(d.current,{ignoreTransform:!0}),c={x:a.left-b.left,y:a.top-b.top,scaleX:a.width/b.width,scaleY:a.height/b.height};(c.x||c.y)&&g(c)}}c!==h.current&&(h.current=c)},[b,c,d,e]),(0,x.useEffect)(()=>{f&&g(null)},[f]),f}({disabled:!af,index:A,node:E,rect:D});return(0,x.useEffect)(()=>{Y&&ad.current.newIndex!==ab&&(ad.current.newIndex=ab),q!==ad.current.containerId&&(ad.current.containerId=q),p!==ad.current.items&&(ad.current.items=p)},[Y,ab,q,p]),(0,x.useEffect)(()=>{if(ac===ad.current.activeId)return;if(ac&&!ad.current.activeId){ad.current.activeId=ac;return}let a=setTimeout(()=>{ad.current.activeId=ac},50);return()=>clearTimeout(a)},[ac]),{active:H,activeIndex:r,attributes:N,data:B,rect:D,index:A,newIndex:ab,items:p,isOver:F,isSorting:Y,isDragging:R,listeners:Q,node:E,overIndex:v,over:S,setNodeRef:X,setActivatorNodeRef:U,setDroppableNodeRef:G,setDraggableNodeRef:O,transform:null!=ag?ag:aa,transition:ag||ae&&ad.current.newIndex===A?bu:(!$||T(J))&&o&&(Y||af)?V.Transition.toString({...o,property:bt}):void 0}}({id:a}),s={transform:V.Transform.toString(q),opacity:r?.4:1,zIndex:r?999:void 0},[t,u]=(0,x.useState)(!1),[v,y]=(0,x.useState)(c),z=()=>{let a=v.trim();a&&a!==c?h(a):y(c),u(!1)};return(0,w.jsxs)("div",{ref:p,style:s,className:`flex items-center gap-3 rounded-xl border p-3 transition ${e?"border-border bg-background":"border-red-200 bg-red-50/70 opacity-75 dark:border-red-500/30 dark:bg-red-500/10"}`,children:[(0,w.jsx)("button",{type:"button",className:"cursor-grab text-text-muted active:cursor-grabbing",...n,...o,title:"K\xe9o để sắp xếp lại",children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"drag_indicator"})}),(0,w.jsx)("span",{className:`flex h-7 w-7 shrink-0 items-center justify-center rounded-full text-xs font-semibold ${e?"bg-primary/10 text-primary":"bg-red-100 text-red-600 dark:bg-red-500/20 dark:text-red-300"}`,children:b+1}),t?(0,w.jsx)("input",{autoFocus:!0,value:v,onChange:a=>y(a.target.value),onBlur:z,onKeyDown:a=>{"Enter"===a.key&&z(),"Escape"===a.key&&(y(c),u(!1))},className:"min-w-0 flex-1 rounded border border-primary/40 bg-background px-2 py-1 font-mono text-xs text-text-main outline-none"}):(0,w.jsxs)("button",{type:"button",onClick:()=>u(!0),className:"min-w-0 flex-1 text-left",title:"Bấm để sửa model",children:[(0,w.jsx)("span",{className:`block truncate font-mono text-xs ${e?"text-text-main":"text-text-muted line-through"}`,children:c}),d?(0,w.jsx)("span",{className:"mt-0.5 block truncate text-[11px] text-text-muted",children:d}):null]}),(0,w.jsx)("button",{type:"button",onClick:l,className:`rounded-lg p-1.5 transition ${e?"text-green-600 hover:bg-green-500/10":"text-red-500 hover:bg-red-500/10"}`,title:e?"Tắt model trong combo":"Bật model trong combo",children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:e?"toggle_on":"toggle_off"})}),(0,w.jsx)("button",{type:"button",onClick:i,disabled:f,className:"rounded-lg p-1.5 text-text-muted transition hover:bg-surface disabled:opacity-30",title:"Di chuyển l\xean",children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"arrow_upward"})}),(0,w.jsx)("button",{type:"button",onClick:j,disabled:g,className:"rounded-lg p-1.5 text-text-muted transition hover:bg-surface disabled:opacity-30",title:"Di chuyển xuống",children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"arrow_downward"})}),(0,w.jsx)("button",{type:"button",onClick:k,className:"rounded-lg p-1.5 text-red-500 transition hover:bg-red-500/10",title:"X\xf3a",children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"close"})})]})}function cg({value:a="inherit",onChange:b,compact:c=!1}){let d=bS(a),e=bN.find(a=>a.value===d)||bN[0];return(0,w.jsx)("div",{className:c?"mt-4 rounded-xl border border-amber-500/15 bg-surface p-3":"rounded-xl border border-amber-500/15 bg-amber-500/5 p-4",children:(0,w.jsxs)("div",{className:"grid gap-3 md:grid-cols-[minmax(0,1fr)_280px] md:items-center",children:[(0,w.jsxs)("div",{children:[(0,w.jsxs)("div",{className:"flex items-center gap-2 text-sm font-semibold text-text-main",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px] text-amber-500",children:"manage_search"}),"Prompt Logs cho combo n\xe0y"]}),(0,w.jsx)("p",{className:"mt-1 text-xs text-text-muted",children:e.description}),"disabled"===d?(0,w.jsx)("p",{className:"mt-1 text-[11px] font-medium text-amber-600",children:"Khi chạy request, Prompt Logs sẽ chỉ ghi metadata v\xe0 hiển thị [promptlogs disabled on this combo]."}):null]}),(0,w.jsx)("select",{value:d,onChange:a=>b?.(bS(a.target.value)),className:"w-full rounded-lg border border-border bg-surface px-3 py-2 text-sm text-text-main outline-none focus:border-primary",children:bN.map(a=>(0,w.jsx)("option",{value:a.value,children:a.label},a.value))})]})})}function ch({icon:a,label:b,children:c,active:d,muted:e=!1,className:f=""}){return(0,w.jsxs)("label",{className:`rounded-lg border p-3 transition ${d?"border-primary/30 bg-background shadow-sm":"border-border bg-background/60"} ${f}`,children:[(0,w.jsxs)("span",{className:"mb-2 flex items-center justify-between gap-2 text-xs font-medium text-text-main",children:[(0,w.jsxs)("span",{className:"flex min-w-0 items-center gap-1.5",children:[(0,w.jsx)("span",{className:`material-symbols-outlined text-[16px] ${d?"text-primary":"text-text-muted"}`,children:a}),(0,w.jsx)("span",{className:"truncate",children:b})]}),c?.toggle]}),c?.control,c?.hint?(0,w.jsx)("span",{className:"mt-1 block text-[11px] text-text-muted",children:c.hint}):null]})}function ci({value:a={},onChange:b,compact:c=!1}){let d=bU(a),e=void 0!==d.temperature,f=void 0!==d.top_p,g=void 0!==d.presence_penalty,h=void 0!==d.max_tokens,i=void 0!==d.reasoning_budget,j=void 0!==d.forceThinkingOffAboveChars,k=d.forceThinkingOffRequestOverrides||{},l=void 0!==k.temperature,m=void 0!==k.top_p,n=void 0!==k.presence_penalty,o=void 0!==k.max_tokens,p=l||m||n||o,q=d.thinkingMode||"inherit",r="inherit"!==q,s=e||f||g||h,t=r||i||j||p,u=a=>{b?.(bU({...d,...a}))},v=(a,c,e)=>{if(!c){let c={...d};delete c[a],"forceThinkingOffAboveChars"===a&&delete c.forceThinkingOffRequestOverrides,b?.(bU(c));return}u({[a]:e})},x=a=>{u({forceThinkingOffRequestOverrides:bT({...k,...a})})},y=(a,b,c)=>{let d={...k};if(!b){delete d[a],u({forceThinkingOffRequestOverrides:d});return}x({[a]:c})},z="w-full rounded-lg border border-border bg-surface px-2 py-1.5 text-sm text-text-main outline-none focus:border-primary disabled:opacity-50";return(0,w.jsxs)("div",{className:c?"mt-4 rounded-xl border border-sky-500/15 bg-surface p-3":"rounded-xl border border-sky-500/15 bg-sky-500/5 p-4",children:[(0,w.jsxs)("div",{className:"mb-3 flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between",children:[(0,w.jsxs)("div",{children:[(0,w.jsxs)("div",{className:"flex items-center gap-2 text-sm font-semibold text-text-main",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px] text-sky-500",children:"tune"}),"Tham số request Local endpoint"]}),(0,w.jsxs)("p",{className:"mt-1 text-xs text-text-muted",children:["Chỉ inject khi combo route 100% tới local endpoint: ",(0,w.jsx)("span",{className:"font-mono",children:"llama.cpp"}),", ",(0,w.jsx)("span",{className:"font-mono",children:"vLLM"})," hoặc ",(0,w.jsx)("span",{className:"font-mono",children:"Ollama"}),". Nếu combo mix local + cloud/provider kh\xe1c, BlueRouter bỏ qua block n\xe0y v\xe0 giữ nguy\xean request gốc."]})]}),!function(a={}){return Object.keys(bU(a)).length>0}(d)?(0,w.jsx)("span",{className:"inline-flex shrink-0 items-center rounded-full bg-background px-2 py-1 text-[11px] font-semibold text-text-muted",children:"Kh\xf4ng override"}):(0,w.jsx)("span",{className:"inline-flex shrink-0 items-center rounded-full bg-primary/10 px-2 py-1 text-[11px] font-semibold text-primary",children:"C\xf3 override"})]}),(0,w.jsxs)("div",{className:"grid gap-3 xl:grid-cols-2",children:[(0,w.jsxs)("div",{className:`rounded-xl border p-3 ${s?"border-primary/20 bg-primary/5":"border-border bg-background/40"}`,children:[(0,w.jsxs)("div",{className:"mb-3 flex items-center gap-2 text-xs font-semibold text-primary",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"graphic_eq"}),"Sampling ",(0,w.jsx)("span",{className:"font-normal text-text-muted",children:"(điều khiển lựa chọn token)"})]}),(0,w.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2 2xl:grid-cols-3",children:[(0,w.jsx)(ch,{icon:"thermostat",label:"Temperature",active:e,children:{toggle:(0,w.jsx)("input",{type:"checkbox",checked:e,onChange:a=>v("temperature",a.target.checked,bK.temperature),className:"h-3.5 w-3.5 accent-primary"}),control:(0,w.jsx)("input",{type:"number",min:"0",max:"2",step:"0.05",disabled:!e,value:e?d.temperature:bK.temperature,onChange:a=>u({temperature:a.target.value}),className:z}),hint:"0 = ổn định, 2 = s\xe1ng tạo."}}),(0,w.jsx)(ch,{icon:"filter_alt",label:"top_p",active:f,children:{toggle:(0,w.jsx)("input",{type:"checkbox",checked:f,onChange:a=>v("top_p",a.target.checked,bK.top_p),className:"h-3.5 w-3.5 accent-primary"}),control:(0,w.jsx)("input",{type:"number",min:"0.01",max:"1",step:"0.01",disabled:!f,value:f?d.top_p:bK.top_p,onChange:a=>u({top_p:a.target.value}),className:z}),hint:"0.01–1.0; 0.9–0.95 thường hợp coder/chat."}}),(0,w.jsx)(ch,{icon:"repeat",label:"presence_penalty",active:g,children:{toggle:(0,w.jsx)("input",{type:"checkbox",checked:g,onChange:a=>v("presence_penalty",a.target.checked,bK.presence_penalty),className:"h-3.5 w-3.5 accent-primary"}),control:(0,w.jsx)("input",{type:"number",min:"-2",max:"2",step:"0.05",disabled:!g,value:g?d.presence_penalty:bK.presence_penalty,onChange:a=>u({presence_penalty:a.target.value}),className:z}),hint:"-2–2; coder thường để 0, chỉ tăng nhẹ nếu hay lặp."}}),(0,w.jsx)(ch,{icon:"output",label:"max_tokens",active:h,className:"sm:col-span-2 2xl:col-span-1",children:{toggle:(0,w.jsx)("input",{type:"checkbox",checked:h,onChange:a=>v("max_tokens",a.target.checked,bK.max_tokens),className:"h-3.5 w-3.5 accent-primary"}),control:(0,w.jsx)("input",{type:"number",min:"1",max:"262144",step:"1",disabled:!h,value:h?d.max_tokens:bK.max_tokens,onChange:a=>u({max_tokens:a.target.value}),className:z}),hint:"Giới hạn output cho request."}})]})]}),(0,w.jsxs)("div",{className:`rounded-xl border p-3 ${t?"border-primary/20 bg-primary/5":"border-border bg-background/40"}`,children:[(0,w.jsxs)("div",{className:"mb-3 flex items-center gap-2 text-xs font-semibold text-primary",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"psychology"}),"Thinking ",(0,w.jsx)("span",{className:"font-normal text-text-muted",children:"(suy luận nội bộ)"})]}),(0,w.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2 2xl:grid-cols-3",children:[(0,w.jsxs)("label",{className:`rounded-lg border p-3 transition ${r?"border-primary/30 bg-background shadow-sm":"border-border bg-background/60"}`,children:[(0,w.jsxs)("span",{className:"mb-2 flex items-center gap-1.5 text-xs font-medium text-text-main",children:[(0,w.jsx)("span",{className:`material-symbols-outlined text-[16px] ${r?"text-primary":"text-text-muted"}`,children:"psychology_alt"}),"Thinking"]}),(0,w.jsx)("select",{value:q,onChange:a=>u({thinkingMode:"inherit"===a.target.value?void 0:a.target.value}),className:"w-full rounded-lg border border-border bg-surface px-2 py-1.5 text-sm text-text-main outline-none focus:border-primary",children:bM.map(a=>(0,w.jsx)("option",{value:a.value,children:a.label},a.value))}),(0,w.jsx)("span",{className:"mt-1 block text-[11px] text-text-muted",children:bM.find(a=>a.value===q)?.description||bM[0].description})]}),(0,w.jsx)(ch,{icon:"account_balance_wallet",label:"reasoning_budget",active:i,children:{toggle:(0,w.jsx)("input",{type:"checkbox",checked:i,onChange:a=>v("reasoning_budget",a.target.checked,bK.reasoning_budget),className:"h-3.5 w-3.5 accent-primary"}),control:(0,w.jsx)("input",{type:"number",min:"0",max:"262144",step:"1",disabled:!i,value:i?d.reasoning_budget:bK.reasoning_budget,onChange:a=>u({reasoning_budget:a.target.value}),className:z}),hint:"Chỉ d\xf9ng cho llama.cpp/vLLM local; runtime sẽ map đ\xfang field."}}),(0,w.jsx)(ch,{icon:"speed",label:"Auto tắt thinking nếu prompt chars >=",active:j||p,className:"sm:col-span-2 2xl:col-span-3",children:{toggle:(0,w.jsx)("input",{type:"checkbox",checked:j,onChange:a=>v("forceThinkingOffAboveChars",a.target.checked,bK.forceThinkingOffAboveChars),className:"h-3.5 w-3.5 accent-primary"}),control:(0,w.jsxs)("div",{className:"space-y-3",children:[(0,w.jsx)("input",{type:"number",min:"0",max:"1000000",step:"1000",disabled:!j,value:j?d.forceThinkingOffAboveChars:bK.forceThinkingOffAboveChars,onChange:a=>u({forceThinkingOffAboveChars:a.target.value}),className:z}),(0,w.jsxs)("div",{className:"rounded-lg border border-border bg-surface/70 p-2",children:[(0,w.jsxs)("div",{className:"mb-2 flex items-center gap-1.5 text-[11px] font-semibold text-text-main",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[15px] text-primary",children:"tune"}),"Override ri\xeang khi auto-off được k\xedch hoạt"]}),(0,w.jsxs)("div",{className:"grid gap-2 sm:grid-cols-2",children:[(0,w.jsxs)("label",{className:"space-y-1",children:[(0,w.jsxs)("span",{className:"flex items-center justify-between text-[11px] font-medium text-text-main",children:["temp",(0,w.jsx)("input",{type:"checkbox",checked:l,disabled:!j,onChange:a=>y("temperature",a.target.checked,bL.temperature),className:"h-3.5 w-3.5 accent-primary disabled:opacity-50"})]}),(0,w.jsx)("input",{type:"number",min:"0",max:"2",step:"0.05",disabled:!j||!l,value:l?k.temperature:bL.temperature,onChange:a=>x({temperature:a.target.value}),className:z})]}),(0,w.jsxs)("label",{className:"space-y-1",children:[(0,w.jsxs)("span",{className:"flex items-center justify-between text-[11px] font-medium text-text-main",children:["top_p",(0,w.jsx)("input",{type:"checkbox",checked:m,disabled:!j,onChange:a=>y("top_p",a.target.checked,bL.top_p),className:"h-3.5 w-3.5 accent-primary disabled:opacity-50"})]}),(0,w.jsx)("input",{type:"number",min:"0.01",max:"1",step:"0.01",disabled:!j||!m,value:m?k.top_p:bL.top_p,onChange:a=>x({top_p:a.target.value}),className:z})]}),(0,w.jsxs)("label",{className:"space-y-1",children:[(0,w.jsxs)("span",{className:"flex items-center justify-between text-[11px] font-medium text-text-main",children:["presence_penalty",(0,w.jsx)("input",{type:"checkbox",checked:n,disabled:!j,onChange:a=>y("presence_penalty",a.target.checked,bL.presence_penalty),className:"h-3.5 w-3.5 accent-primary disabled:opacity-50"})]}),(0,w.jsx)("input",{type:"number",min:"-2",max:"2",step:"0.05",disabled:!j||!n,value:n?k.presence_penalty:bL.presence_penalty,onChange:a=>x({presence_penalty:a.target.value}),className:z})]}),(0,w.jsxs)("label",{className:"space-y-1",children:[(0,w.jsxs)("span",{className:"flex items-center justify-between text-[11px] font-medium text-text-main",children:["max_tokens",(0,w.jsx)("input",{type:"checkbox",checked:o,disabled:!j,onChange:a=>y("max_tokens",a.target.checked,bL.max_tokens),className:"h-3.5 w-3.5 accent-primary disabled:opacity-50"})]}),(0,w.jsx)("input",{type:"number",min:"1",max:"262144",step:"1",disabled:!j||!o,value:o?k.max_tokens:bL.max_tokens,onChange:a=>x({max_tokens:a.target.value}),className:z})]})]})]})]}),hint:"Khi prompt vượt ngưỡng, thinking bị tắt trước; c\xe1c field ri\xeang b\xean tr\xean chỉ inject nếu được tick."}})]})]})]})]})}function cj({isOpen:a,combo:b,comboStrategy:c={},onClose:d,onSave:e,activeProviders:f,providersLoading:g=!1,kindFilter:h=null}){let[i,j]=(0,x.useState)(b?.name||""),[k,l]=(0,x.useState)([]),[m,n]=(0,x.useState)(!1),[o,p]=(0,x.useState)(!1),[q,r]=(0,x.useState)(""),[s,t]=(0,x.useState)({}),[u,v]=(0,x.useState)(""),[y,z]=(0,x.useState)(""),[A,B]=(0,x.useState)(()=>b?bU(c?.requestOverrides||{}):bU(bK)),[C,D]=(0,x.useState)(()=>bS(c?.contentLoggingMode)),E=function(){for(var a=arguments.length,b=Array(a),c=0;c<a;c++)b[c]=arguments[c];return(0,x.useMemo)(()=>[...b].filter(a=>null!=a),[...b])}(ad(aP,{activationConstraint:{distance:5}}),ad(aK,{coordinateGetter:by})),F=k.map((a,b)=>({uid:`item-${b}-${a.value}`,row:a})),G=k.map(a=>a.value),H=k.filter(a=>a.enabled).length,I=k.filter(a=>!a.enabled).length,J=(f||[]).filter(a=>a?.isActive!==!1),K=J.find(a=>a.id===u)||null,L=K?ca(K,s):[],M=L[0]?.value||(K?b8(K):""),N=a=>a.trim()?bG.test(a)?(r(""),!0):(r("Chỉ cho ph\xe9p chữ, số, dấu -, _ v\xe0 ."),!1):(r("Bắt buộc nhập t\xean"),!1),O=async()=>{if(!N(i))return;let{models:a,disabledModels:b}=function(a=[]){let b=[],c=new Set;for(let d of a){let a=bV(d?.value||b4(d?.target));!a||c.has(a)||(c.add(a),b.push({...d,value:a,enabled:d?.enabled!==!1,target:b6(d?.target||d?.value)}))}return{models:b.filter(a=>a.enabled).map(a=>a.target).filter(Boolean),disabledModels:b.filter(a=>!a.enabled).map(a=>a.value)}}(k);p(!0),await e({name:i.trim(),models:a,disabledModels:b,requestOverrides:bU(A),contentLoggingMode:C}),p(!1)};if(!a)return null;let P=!!b;return(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)("div",{className:"fixed inset-0 z-[100] flex items-center justify-center bg-black/45 p-3 backdrop-blur-[1px] sm:p-4",children:(0,w.jsxs)("div",{className:"flex max-h-[92vh] w-full max-w-7xl flex-col overflow-hidden rounded-2xl border border-border bg-white shadow-2xl dark:bg-zinc-950",children:[(0,w.jsxs)("div",{className:"flex items-start justify-between border-b border-border px-5 py-4 sm:px-6",children:[(0,w.jsxs)("div",{children:[(0,w.jsx)("h2",{className:"text-xl font-semibold text-text-main",children:P?"Chỉnh sửa combo":"Tạo combo"}),(0,w.jsx)("p",{className:"mt-1 text-sm text-text-muted",children:"Chọn model, tắt tạm thời khi cần v\xe0 sắp xếp thứ tự ưu ti\xean fallback đang bật."})]}),(0,w.jsx)("button",{type:"button",onClick:d,className:"rounded-lg p-1 text-text-muted transition hover:bg-surface hover:text-text-main",children:(0,w.jsx)("span",{className:"material-symbols-outlined",children:"close"})})]}),(0,w.jsxs)("div",{className:"min-h-0 flex-1 space-y-5 overflow-y-auto bg-white px-5 py-4 dark:bg-zinc-950 sm:px-6",children:[(0,w.jsxs)("label",{className:"block",children:[(0,w.jsx)("span",{className:"mb-2 block text-sm font-semibold text-text-main",children:"T\xean"}),(0,w.jsx)("input",{value:i,onChange:a=>{let b=a.target.value;j(b),b?N(b):r("")},placeholder:"premium-coding",className:`w-full rounded-xl border bg-white px-4 py-2.5 text-text-main outline-none transition focus:border-primary dark:bg-zinc-900 ${q?"border-red-400":"border-border"}`}),(0,w.jsx)("span",{className:`mt-1 block text-xs ${q?"text-red-500":"text-text-muted"}`,children:q||"Chỉ cho ph\xe9p chữ, số, dấu -, _ v\xe0 ."})]}),(0,w.jsx)(ci,{value:A,onChange:B,defaultEnabled:!P}),(0,w.jsx)(cg,{value:C,onChange:D}),(0,w.jsxs)("div",{children:[(0,w.jsxs)("div",{className:"mb-3 flex items-center justify-between gap-3",children:[(0,w.jsxs)("div",{children:[(0,w.jsx)("h3",{className:"text-sm font-semibold text-text-main",children:"Danh s\xe1ch model"}),(0,w.jsxs)("p",{className:"mt-1 text-xs text-text-muted",children:[H," đang bật",I>0?`, ${I} đ\xe3 tắt`:"",". Model đ\xe3 tắt vẫn nằm trong combo nhưng kh\xf4ng được route."]})]}),(0,w.jsxs)("button",{type:"button",onClick:()=>n(!0),className:"inline-flex items-center gap-1 rounded-lg border border-border px-3 py-1.5 text-xs font-medium text-primary hover:border-primary/50",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"add"}),"Th\xeam model"]})]}),(0,w.jsxs)("div",{className:"mb-4 rounded-xl border border-primary/15 bg-primary/5 p-3",children:[(0,w.jsxs)("div",{className:"mb-2 flex items-center gap-2 text-xs font-semibold uppercase tracking-wide text-primary",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"account_tree"}),"Th\xeam target theo provider account"]}),(0,w.jsx)("p",{className:"mb-3 text-xs text-text-muted",children:"Cố định bước combo n\xe0y v\xe0o một provider account cụ thể. Danh s\xe1ch account chỉ được load khi mở modal để trang combo nhẹ hơn."}),(0,w.jsxs)("div",{className:"grid gap-2 md:grid-cols-[minmax(0,1.5fr)_minmax(0,1fr)_auto]",children:[(0,w.jsxs)("select",{value:u,onChange:a=>{let b=a.target.value,c=J.find(a=>a.id===b),d=c?ca(c,s):[];v(b),z(d[0]?.value||b8(c||{})||"")},className:"min-w-0 rounded-lg border border-border bg-background px-3 py-2 text-xs text-text-main outline-none focus:border-primary",children:[(0,w.jsx)("option",{value:"",children:g?"Đang tải provider account...":"Chọn provider account"}),J.map(a=>{let b=b1(a),c=b2(a),d=c&&c!==b?`${b} / ${c}`:b;return(0,w.jsx)("option",{value:a.id,children:d},a.id)})]}),(0,w.jsxs)("select",{value:y,onChange:a=>z(a.target.value),disabled:!u||0===L.length,className:"min-w-0 rounded-lg border border-border bg-background px-3 py-2 font-mono text-xs text-text-main outline-none focus:border-primary disabled:cursor-not-allowed disabled:opacity-60",children:[(0,w.jsx)("option",{value:"",children:u?L.length>0?"Chọn model":"Kh\xf4ng t\xecm thấy model của provider":"Chọn account trước"}),L.map(a=>(0,w.jsx)("option",{value:a.value,children:a.label},`${a.value}-${a.label}`))]}),(0,w.jsxs)("button",{type:"button",onClick:()=>{if(!K)return;let a=function(a,b){let c=b1(a),d=function(a={}){let b=bV(a.provider),c=b1(a);return(0,bF.mq)(b)||(0,bF.gb)(b)?c||b:b||c}(a),e=b2(a),f=bV(b||b8(a));if(!c||!a?.id||!f)return null;let g=f.includes("/"),h=g?f:`${c}/${f}`,i=g&&f.startsWith(`${c}/`)?f.slice(c.length+1):f,j=e&&e!==d?`${d}/${e}/${i}`:`${d}/${i}`;return{model:h,connectionId:a.id,provider:d||c,accountName:e||void 0,label:j}}(K,y||M);if(!a)return void alert("H\xe3y chọn provider account v\xe0 model cho target cố định n\xe0y.");let b=b7(a,!0);l(a=>{let c=a.findIndex(a=>a.value===b.value);if(-1!==c){let d=[...a];return d[c]={...d[c],...b,enabled:!0},d}return[...a,b]}),z("")},disabled:!u||!y,className:"inline-flex items-center justify-center gap-1 rounded-lg bg-primary px-3 py-2 text-xs font-semibold text-white disabled:opacity-50",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"add_link"}),"Th\xeam account"]})]})]}),0===k.length?(0,w.jsxs)("div",{className:"rounded-xl border border-dashed border-border p-8 text-center text-text-muted",children:[(0,w.jsx)("span",{className:"material-symbols-outlined",children:"layers"}),(0,w.jsx)("p",{className:"mt-2 text-sm",children:"Chưa th\xeam model n\xe0o"})]}):(0,w.jsx)(be,{sensors:E,collisionDetection:al,modifiers:[bB,bA],onDragEnd:a=>{let{active:b,over:c}=a;if(c&&b.id!==c.id){let a=F.findIndex(a=>a.uid===b.id),d=F.findIndex(a=>a.uid===c.id);-1!==a&&-1!==d&&l(b=>bi(b,a,d))}},children:(0,w.jsx)(bp,{items:F.map(a=>a.uid),strategy:bm,children:(0,w.jsx)("div",{className:"space-y-3",children:F.map(({uid:a,row:b},c)=>(0,w.jsx)(cf,{id:a,index:c,model:b.label||b.value,subtitle:b.subtitle,enabled:b.enabled,isFirst:0===c,isLast:c===k.length-1,onEdit:a=>{let b=a.trim();if(!b)return;let d=[...k],e=d[c];if(e?.target&&"object"==typeof e.target){let a=b6({...e.target,model:b});d[c]=b7(a,!1!==e.enabled)}else d[c]=b7(b,e?.enabled!==!1);l(d)},onMoveUp:()=>{if(0===c)return;let a=[...k];[a[c-1],a[c]]=[a[c],a[c-1]],l(a)},onMoveDown:()=>{if(c===k.length-1)return;let a=[...k];[a[c],a[c+1]]=[a[c+1],a[c]],l(a)},onToggleEnabled:()=>{let a=[...k];a[c]={...a[c],enabled:!a[c].enabled},l(a)},onRemove:()=>l(k.filter((a,b)=>b!==c))},a))})})})]})]}),(0,w.jsxs)("div",{className:"flex justify-end gap-3 border-t border-border bg-white px-5 py-4 dark:bg-zinc-950 sm:px-6",children:[(0,w.jsx)("button",{type:"button",onClick:d,className:"rounded-xl border border-border px-4 py-2 text-sm font-medium text-text-main hover:bg-surface",children:"Hủy"}),(0,w.jsx)("button",{type:"button",onClick:O,disabled:o,className:"rounded-xl bg-primary px-4 py-2 text-sm font-medium text-white hover:opacity-90 disabled:opacity-50",children:o?"Đang lưu...":P?"Lưu":"Tạo"})]})]})}),(0,w.jsx)(bC.rq,{isOpen:m,onClose:()=>n(!1),onSelect:a=>{let b=a.value;l(a=>{let c=a.findIndex(a=>a.value===b);if(-1!==c){let b=[...a];return b[c]={...b[c],enabled:!0},b}return[...a,b7(b,!0)]})},onDeselect:a=>{l(b=>b.filter(b=>b.value!==a.value))},activeProviders:f,modelAliases:s,title:"Th\xeam model v\xe0o combo",kindFilter:h,addedModelValues:G,closeOnSelect:!1})]})}},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},19771:a=>{"use strict";a.exports=require("process")},21820:a=>{"use strict";a.exports=require("os")},27910:a=>{"use strict";a.exports=require("stream")},28354:a=>{"use strict";a.exports=require("util")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{"use strict";a.exports=require("path")},34631:a=>{"use strict";a.exports=require("tls")},35447:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"D:\\\\bluerouter\\\\src\\\\app\\\\(dashboard)\\\\dashboard\\\\combos\\\\page.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"D:\\bluerouter\\src\\app\\(dashboard)\\dashboard\\combos\\page.js","default")},38522:a=>{"use strict";a.exports=require("node:zlib")},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},41204:a=>{"use strict";a.exports=require("string_decoder")},46060:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external.js")},46293:a=>{"use strict";a.exports=require("sql.js")},51455:a=>{"use strict";a.exports=require("node:fs/promises")},53053:a=>{"use strict";a.exports=require("node:diagnostics_channel")},55511:a=>{"use strict";a.exports=require("crypto")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},64939:a=>{"use strict";a.exports=import("pg")},66136:a=>{"use strict";a.exports=require("timers")},73024:a=>{"use strict";a.exports=require("node:fs")},74075:a=>{"use strict";a.exports=require("zlib")},76760:a=>{"use strict";a.exports=require("node:path")},77598:a=>{"use strict";a.exports=require("node:crypto")},79428:a=>{"use strict";a.exports=require("buffer")},79748:a=>{"use strict";a.exports=require("fs/promises")},80099:a=>{"use strict";a.exports=require("node:sqlite")},81787:a=>{"use strict";a.exports=require("bun:sqlite")},85555:(a,b,c)=>{"use strict";c.r(b),c.d(b,{__next_app__:()=>w,handler:()=>y,routeModule:()=>x});var d=c(21635),e=c(86315),f=c(1020),g=c(61287),h={};for(let a in g)0>["default","__next_app__","routeModule","handler"].indexOf(a)&&(h[a]=()=>g[a]);c.d(b,h);let i=(0,d.p)(()=>Promise.resolve().then(c.bind(c,32059))),j=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,95547,23))),k=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,55091,23))),l=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,45270,23))),m=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,28193,23))),n=(0,d.p)(()=>Promise.resolve().then(c.bind(c,30508))),o=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,95547,23))),p=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,55091,23))),q=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,45270,23))),r=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,28193,23))),s=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,95547,23))),t=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,95547,23))),u={children:["",{children:["(dashboard)",{children:["dashboard",{children:["combos",{children:["__PAGE__",{},{page:[(0,d.p)(()=>Promise.resolve().then(c.bind(c,35447))),"D:\\bluerouter\\src\\app\\(dashboard)\\dashboard\\combos\\page.js"]}]},{"global-error":[t,"next/dist/client/components/builtin/global-error.js"]},[]]},{"global-error":[s,"next/dist/client/components/builtin/global-error.js"]},[]]},{layout:[n,"D:\\bluerouter\\src\\app\\(dashboard)\\layout.js"],"global-error":[o,"next/dist/client/components/builtin/global-error.js"],"not-found":[p,"next/dist/client/components/builtin/not-found.js"],forbidden:[q,"next/dist/client/components/builtin/forbidden.js"],unauthorized:[r,"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[async a=>(await (0,d.p)(()=>Promise.resolve().then(c.bind(c,70440)))()).default(a)],apple:[],openGraph:[],twitter:[],manifest:"/manifest.webmanifest"}},[]]},{layout:[i,"D:\\bluerouter\\src\\app\\layout.js"],"global-error":[j,"next/dist/client/components/builtin/global-error.js"],"not-found":[k,"next/dist/client/components/builtin/not-found.js"],forbidden:[l,"next/dist/client/components/builtin/forbidden.js"],unauthorized:[m,"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[async a=>(await (0,d.p)(()=>Promise.resolve().then(c.bind(c,70440)))()).default(a)],apple:[],openGraph:[],twitter:[],manifest:"/manifest.webmanifest"}},[]]}.children,v=(0,e.H)({tree:u,page:"/(dashboard)/dashboard/combos/page",pathname:"/dashboard/combos",require:c,loadChunk:()=>Promise.resolve(),interopDefault:f.T}),w=v.__next_app__,x=v.routeModule,y=v.handler},87550:a=>{"use strict";a.exports=require("better-sqlite3")},91645:a=>{"use strict";a.exports=require("net")},93443:(a,b,c)=>{Promise.resolve().then(c.bind(c,18513))},94735:a=>{"use strict";a.exports=require("events")}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,2430,8316,8946,402,5681,4404,6064,6328,8640],()=>b(b.s=85555));module.exports=c})();