@jheavenknows/bluerouter 4.0.85 → 4.0.87

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 (432) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +2 -2
  3. package/app/.next-cli-build/build-manifest.json +2 -2
  4. package/app/.next-cli-build/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  5. package/app/.next-cli-build/server/app/(dashboard)/dashboard/api-keys/page_client-reference-manifest.js +1 -1
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovider/page.js +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovider/page_client-reference-manifest.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-logs/page_client-reference-manifest.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  35. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  36. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  37. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  38. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  39. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  40. package/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  41. package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  42. package/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  43. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  44. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  45. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  46. package/app/.next-cli-build/server/app/_not-found.rsc +3 -3
  47. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
  48. package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  49. package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +3 -3
  50. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  51. package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  52. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  53. package/app/.next-cli-build/server/app/api/auth/ldap/test/route.js.nft.json +1 -1
  54. package/app/.next-cli-build/server/app/api/auth/ldap/users/route.js.nft.json +1 -1
  55. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  56. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  57. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  58. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  59. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  60. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  61. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  62. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  63. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/autostart/route.js.nft.json +1 -1
  64. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/prompt-log-db/route.js.nft.json +1 -1
  65. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/root-ca/route.js.nft.json +1 -1
  66. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  67. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  68. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  69. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  70. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  71. package/app/.next-cli-build/server/app/api/dashboard/analytics/route.js.nft.json +1 -1
  72. package/app/.next-cli-build/server/app/api/dashboard/combos/route.js.nft.json +1 -1
  73. package/app/.next-cli-build/server/app/api/dashboard/endpoint/route.js.nft.json +1 -1
  74. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/[id]/route.js.nft.json +1 -1
  75. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/options/route.js.nft.json +1 -1
  76. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/route.js.nft.json +1 -1
  77. package/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js.nft.json +1 -1
  78. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  79. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  80. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  81. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  82. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  83. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  84. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  85. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  86. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  87. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  88. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  89. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  90. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  91. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  92. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  93. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  94. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  95. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  96. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  97. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  98. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  99. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  100. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  101. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  102. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/api-key-models/route.js.nft.json +1 -1
  103. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/import-models/route.js.nft.json +1 -1
  104. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/route.js.nft.json +1 -1
  105. package/app/.next-cli-build/server/app/api/personal-cloud-providers/permissions/route.js +1 -1
  106. package/app/.next-cli-build/server/app/api/personal-cloud-providers/permissions/route.js.nft.json +1 -1
  107. package/app/.next-cli-build/server/app/api/personal-cloud-providers/route.js.nft.json +1 -1
  108. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  109. package/app/.next-cli-build/server/app/api/provider-health/route.js.nft.json +1 -1
  110. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  111. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  112. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  113. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  114. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  115. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  116. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  117. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  118. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  119. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  120. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  121. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  122. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  123. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  124. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  125. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  126. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  127. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  128. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  129. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  130. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  131. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  132. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  133. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  134. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  135. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  136. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  137. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  138. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  139. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  140. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  141. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  142. package/app/.next-cli-build/server/app/api/tunnel/tailscale-login/route.js.nft.json +1 -1
  143. package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/route.js.nft.json +1 -1
  144. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  145. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  146. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  147. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  148. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  149. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  150. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  151. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  152. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  153. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  154. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  155. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  156. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  157. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
  158. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  159. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  160. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  161. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  162. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  163. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  164. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  165. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  166. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  167. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  168. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  169. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  170. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  171. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  172. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  173. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  174. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  175. package/app/.next-cli-build/server/app/callback.html +1 -1
  176. package/app/.next-cli-build/server/app/callback.rsc +3 -3
  177. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  178. package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  179. package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
  180. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  181. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  182. package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  183. package/app/.next-cli-build/server/app/dashboard/analytics.html +1 -1
  184. package/app/.next-cli-build/server/app/dashboard/analytics.rsc +4 -4
  185. package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics/__PAGE__.segment.rsc +1 -1
  186. package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics.segment.rsc +1 -1
  187. package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  188. package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  189. package/app/.next-cli-build/server/app/dashboard/analytics.segments/_full.segment.rsc +4 -4
  190. package/app/.next-cli-build/server/app/dashboard/analytics.segments/_head.segment.rsc +1 -1
  191. package/app/.next-cli-build/server/app/dashboard/analytics.segments/_index.segment.rsc +3 -3
  192. package/app/.next-cli-build/server/app/dashboard/analytics.segments/_tree.segment.rsc +1 -1
  193. package/app/.next-cli-build/server/app/dashboard/api-keys.html +1 -1
  194. package/app/.next-cli-build/server/app/dashboard/api-keys.rsc +5 -5
  195. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard/api-keys/__PAGE__.segment.rsc +2 -2
  196. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard/api-keys.segment.rsc +1 -1
  197. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  198. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  199. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_full.segment.rsc +5 -5
  200. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_head.segment.rsc +1 -1
  201. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_index.segment.rsc +3 -3
  202. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_tree.segment.rsc +1 -1
  203. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  204. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +5 -5
  205. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  206. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  207. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  208. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  209. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
  210. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  211. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
  212. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  213. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  214. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
  215. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  216. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  217. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  218. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  219. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
  220. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  221. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
  222. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  223. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  224. package/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
  225. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  226. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  227. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  228. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  229. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
  230. package/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  231. package/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
  232. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  233. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  234. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +5 -5
  235. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  236. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  237. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  238. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  239. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
  240. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  241. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
  242. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  243. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  244. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +5 -5
  245. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  246. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  247. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  248. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  249. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  250. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
  251. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  252. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
  253. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  254. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  255. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
  256. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  257. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  258. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  259. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  260. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
  261. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  262. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
  263. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  264. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  265. package/app/.next-cli-build/server/app/dashboard/profile.rsc +4 -4
  266. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +1 -1
  267. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  268. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  269. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  270. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +4 -4
  271. package/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  272. package/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
  273. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  274. package/app/.next-cli-build/server/app/dashboard/prompt-logs.html +1 -1
  275. package/app/.next-cli-build/server/app/dashboard/prompt-logs.rsc +4 -4
  276. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs/__PAGE__.segment.rsc +1 -1
  277. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs.segment.rsc +1 -1
  278. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  279. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  280. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_full.segment.rsc +4 -4
  281. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_head.segment.rsc +1 -1
  282. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_index.segment.rsc +3 -3
  283. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_tree.segment.rsc +1 -1
  284. package/app/.next-cli-build/server/app/dashboard/provider-health.html +1 -1
  285. package/app/.next-cli-build/server/app/dashboard/provider-health.rsc +4 -4
  286. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health/__PAGE__.segment.rsc +1 -1
  287. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health.segment.rsc +1 -1
  288. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  289. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  290. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_full.segment.rsc +4 -4
  291. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_head.segment.rsc +1 -1
  292. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_index.segment.rsc +3 -3
  293. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_tree.segment.rsc +1 -1
  294. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  295. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +5 -5
  296. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  297. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  298. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  299. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  300. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  301. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
  302. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  303. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
  304. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  305. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  306. package/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
  307. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  308. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  309. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  310. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  311. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
  312. package/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  313. package/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
  314. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  315. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  316. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +5 -5
  317. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  318. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  319. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  320. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  321. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
  322. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  323. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
  324. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  325. package/app/.next-cli-build/server/app/dashboard/quota.html +1 -1
  326. package/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
  327. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  328. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  329. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  330. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  331. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
  332. package/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  333. package/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
  334. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  335. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  336. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  337. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
  338. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  339. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  340. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
  341. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  342. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  343. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  344. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  345. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  346. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  347. package/app/.next-cli-build/server/app/dashboard/skills.rsc +5 -5
  348. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  349. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  350. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  351. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  352. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +5 -5
  353. package/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  354. package/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +3 -3
  355. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
  356. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  357. package/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
  358. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  359. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  360. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  361. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  362. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
  363. package/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  364. package/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
  365. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  366. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  367. package/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
  368. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  369. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  370. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  371. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  372. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
  373. package/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  374. package/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
  375. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  376. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  377. package/app/.next-cli-build/server/app/dashboard.rsc +5 -5
  378. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  379. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  380. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  381. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
  382. package/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  383. package/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +3 -3
  384. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  385. package/app/.next-cli-build/server/app/index.html +1 -1
  386. package/app/.next-cli-build/server/app/index.rsc +3 -3
  387. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  388. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  389. package/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  390. package/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
  391. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  392. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  393. package/app/.next-cli-build/server/app/landing.html +1 -1
  394. package/app/.next-cli-build/server/app/landing.rsc +3 -3
  395. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +3 -3
  396. package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  397. package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +3 -3
  398. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  399. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  400. package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  401. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  402. package/app/.next-cli-build/server/app/login.html +1 -1
  403. package/app/.next-cli-build/server/app/login.rsc +4 -4
  404. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  405. package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  406. package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +3 -3
  407. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  408. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  409. package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  410. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  411. package/app/.next-cli-build/server/app-paths-manifest.json +2 -2
  412. package/app/.next-cli-build/server/chunks/2338.js +1 -1
  413. package/app/.next-cli-build/server/chunks/3110.js +1 -1
  414. package/app/.next-cli-build/server/chunks/4746.js +1 -1
  415. package/app/.next-cli-build/server/chunks/6811.js +1 -1
  416. package/app/.next-cli-build/server/chunks/7130.js +1 -1
  417. package/app/.next-cli-build/server/chunks/7793.js +1 -1
  418. package/app/.next-cli-build/server/chunks/9489.js +1 -1
  419. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  420. package/app/.next-cli-build/server/pages/404.html +1 -1
  421. package/app/.next-cli-build/server/pages/500.html +1 -1
  422. package/app/.next-cli-build/static/chunks/{620-33cc7196b41f3384.js → 620-6c8be26501234336.js} +1 -1
  423. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/personalcloudprovider/page-5a51944ae36978ad.js +1 -0
  424. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-shm +0 -0
  425. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-wal +0 -0
  426. package/app/package.json +1 -1
  427. package/package.json +1 -1
  428. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/personalcloudprovider/page-ee0f36d3ca6734c8.js +0 -1
  429. /package/app/.next-cli-build/static/{w2lwXkcrHh8pWtOGfITTK → aRxdbu2fTrGmiD_K2thM9}/_buildManifest.js +0 -0
  430. /package/app/.next-cli-build/static/{w2lwXkcrHh8pWtOGfITTK → aRxdbu2fTrGmiD_K2thM9}/_ssgManifest.js +0 -0
  431. /package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/{upgrade-4.0.80-to-4.0.81-4.0.81-20260624-130417 → upgrade-4.0.84-to-4.0.85-4.0.85-20260624-135950}/data.sqlite +0 -0
  432. /package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/{upgrade-4.0.81-to-4.0.82-4.0.82-20260624-131811 → upgrade-4.0.85-to-4.0.86-4.0.86-20260624-140621}/data.sqlite +0 -0
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3538],{43503:(e,t,s)=>{"use strict";s.d(t,{default:()=>o});var r=s(95155),a=s(12115),n=s(35497),l=s(57250);function d(e,t){return t.find(t=>t.id===e)?.name||e}function i(e){return String(e||"").trim().toLowerCase()}function c(e){return Array.isArray(e?.availableModels)?e.availableModels:[]}function o(){let[e,t]=(0,a.useState)(!0),[s,o]=(0,a.useState)(!1),[m,x]=(0,a.useState)(""),[h,u]=(0,a.useState)(""),[p,f]=(0,a.useState)(""),[b,j]=(0,a.useState)(!1),[g,v]=(0,a.useState)([]),[y,N]=(0,a.useState)([]),[k,w]=(0,a.useState)(null),[A,C]=(0,a.useState)(null),[I,S]=(0,a.useState)(""),[O,E]=(0,a.useState)(null),[$,M]=(0,a.useState)([]),[P,K]=(0,a.useState)(!1),[z,q]=(0,a.useState)(""),[U,T]=(0,a.useState)([]),[D,R]=(0,a.useState)(!1),[_,B]=(0,a.useState)(!1),[F,L]=(0,a.useState)({}),[J,Z]=(0,a.useState)(""),[H,G]=(0,a.useState)({}),V=(0,a.useCallback)(async()=>{t(!0),x("");try{let e=await fetch("/api/personal-cloud-providers",{cache:"no-store"}),t=await e.json().catch(()=>({}));if(!e.ok)throw Error(t.error||"Kh\xf4ng tải được personal cloud providers");f(t.userId||""),j(!0===t.isAdmin),v(t.providers||[]),N(t.connections||[]),Z(e=>e||t.userId||"")}catch(e){x(e.message||"Kh\xf4ng tải được personal cloud providers")}finally{t(!1)}},[]),W=(0,a.useCallback)(async()=>{if(b){B(!0);try{let e=await fetch("/api/personal-cloud-providers/permissions",{cache:"no-store"}),t=await e.json().catch(()=>({}));if(!e.ok)throw Error(t.error||"Kh\xf4ng tải được quyền OAuth");L(t.permissions||{})}catch(e){x(e.message||"Kh\xf4ng tải được quyền OAuth")}finally{B(!1)}}},[b]);(0,a.useEffect)(()=>{V()},[V]),(0,a.useEffect)(()=>{b&&W()},[b,W]),(0,a.useEffect)(()=>{let e=F[i(J)]||{},t={};for(let s of g)t[s.id]=!0===e[s.id];G(t)},[J,F,g]);let X=(0,a.useMemo)(()=>{let e=i(p);return $.filter(t=>i(t.ownerUser||t.createdByUser||p)===e)},[$,p]),Q=(0,a.useMemo)(()=>Object.entries(F).map(([e,t])=>{let s=g.filter(e=>t?.[e.id]===!0);return{userId:e,providerState:t||{},enabledProviders:s}}).filter(e=>e.enabledProviders.length>0).sort((e,t)=>e.userId.localeCompare(t.userId)),[F,g]),Y=async()=>{w(null),u("OAuth account đ\xe3 được th\xeam. Model sẽ được import tự động nếu provider hỗ trợ."),await V()},ee=async(e,t)=>{x(""),u("");try{let s=await fetch(`/api/personal-cloud-providers/${encodeURIComponent(e)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),r=await s.json().catch(()=>({}));if(!s.ok)throw Error(r.error||"Kh\xf4ng cập nhật được connection");await V()}catch(e){x(e.message||"Kh\xf4ng cập nhật được connection")}},et=async e=>{x(""),u(""),S(e.id);try{let t=await fetch(`/api/personal-cloud-providers/${encodeURIComponent(e.id)}/import-models`,{method:"POST"}),s=await t.json().catch(()=>({}));if(!t.ok)throw Error(s.error||"Kh\xf4ng import được model");N(t=>t.map(t=>t.id===e.id?{...t,availableModels:s.models||[],modelImport:s.modelImport||t.modelImport}:t));let r=s.modelImport?.source==="provider"?"provider":"catalog fallback";u(`Đ\xe3 cập nhật ${s.models?.length||0} model từ ${r}.`)}catch(e){x(e.message||"Kh\xf4ng import được model")}finally{S("")}},es=async()=>{K(!0);try{let e=await fetch("/api/keys?pageSize=100&status=active",{cache:"no-store"}),t=await e.json().catch(()=>({}));if(!e.ok)throw Error(t.error||"Kh\xf4ng tải được API keys");M(t.keys||[]);let s=i(p||t.userId),r=(t.keys||[]).find(e=>i(e.ownerUser||e.createdByUser||t.userId)===s);q(e=>e||r?.id||"")}catch(e){x(e.message||"Kh\xf4ng tải được API keys")}finally{K(!1)}},er=async e=>{let t;x(""),u(""),E(e),T((t=c(e).filter(e=>"llm"===(e.type||"llm")).slice(0,3).map(e=>e.routeModel).filter(Boolean)).length>0?t:c(e).slice(0,3).map(e=>e.routeModel).filter(Boolean)),q(""),await es()},ea=async()=>{if(!O)return;if(!z)return void x("Chọn API key cần th\xeam model.");let e=Array.from(new Set((Array.isArray(U)?U:[]).map(e=>String(e||"").trim()).filter(Boolean)));if(0===e.length)return void x("Chọn \xedt nhất một model.");R(!0),x(""),u("");try{let t=await fetch(`/api/personal-cloud-providers/${encodeURIComponent(O.id)}/api-key-models`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKeyId:z,models:e})}),s=await t.json().catch(()=>({}));if(!t.ok)throw Error(s.error||"Kh\xf4ng th\xeam được model v\xe0o API key");E(null),u(`Đ\xe3 th\xeam ${s.addedModels?.length||e.length} model v\xe0o API key ${s.key?.name||""}.`)}catch(e){x(e.message||"Kh\xf4ng th\xeam được model v\xe0o API key")}finally{R(!1)}},en=async()=>{if(A){x(""),u("");try{let e=await fetch(`/api/personal-cloud-providers/${encodeURIComponent(A.id)}`,{method:"DELETE"}),t=await e.json().catch(()=>({}));if(!e.ok)throw Error(t.error||"Kh\xf4ng x\xf3a được connection");C(null),await V()}catch(e){x(e.message||"Kh\xf4ng x\xf3a được connection")}}},el=async()=>{let e=i(J);if(!e)return void x("Nhập username/email cần cấp quyền.");o(!0),x(""),u("");try{let t=await fetch("/api/personal-cloud-providers/permissions",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({userId:e,providers:H})}),s=await t.json().catch(()=>({}));if(!t.ok)throw Error(s.error||"Kh\xf4ng lưu được quyền OAuth");L(s.permissions||{});let r=s.user?.id||e;r!==e&&Z(r),u(`Đ\xe3 lưu quyền OAuth cho ${r}.`),await V()}catch(e){x(e.message||"Kh\xf4ng lưu được quyền OAuth")}finally{o(!1)}},ed=async e=>{let t=i(e);if(t&&window.confirm(`Thu hồi to\xe0n bộ quyền OAuth provider của ${t}?`)){o(!0),x(""),u("");try{let e=await fetch(`/api/personal-cloud-providers/permissions?userId=${encodeURIComponent(t)}`,{method:"DELETE"}),s=await e.json().catch(()=>({}));if(!e.ok)throw Error(s.error||"Kh\xf4ng thu hồi được quyền OAuth");L(s.permissions||{}),i(J)===t&&Z(""),u(`Đ\xe3 thu hồi quyền OAuth của ${t}.`),await V()}catch(e){x(e.message||"Kh\xf4ng thu hồi được quyền OAuth")}finally{o(!1)}}},ei=k?function(e={}){return{id:e.id,name:e.name||e.id,icon:e.icon||"cloud",color:e.color||"#64748b",website:e.website||"",notice:e.notice||null,deprecationNotice:e.deprecationNotice||"",serviceKinds:e.serviceKinds||["llm"]}}(k):null,ec=b?g:g.filter(e=>e.enabled),eo=c(O),em=O?.modelImport||{};return(0,r.jsxs)("div",{className:"space-y-6",children:[(0,r.jsx)("div",{children:(0,r.jsxs)("div",{className:"flex flex-col gap-3 md:flex-row md:items-start md:justify-between",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("h1",{className:"text-2xl font-semibold text-text-main",children:"Personal Cloud Providers"}),(0,r.jsx)("p",{className:"mt-1 text-sm text-text-muted",children:"Kết nối OAuth c\xe1 nh\xe2n cho Claude Code, OpenAI Codex v\xe0 Antigravity. Account c\xe1 nh\xe2n chỉ owner nh\xecn thấy v\xe0 chỉ API key của owner được d\xf9ng."})]}),(0,r.jsxs)("div",{className:"rounded-2xl border border-border bg-surface px-4 py-3 text-sm",children:[(0,r.jsx)("div",{className:"text-xs uppercase tracking-wide text-text-muted",children:"Current user"}),(0,r.jsx)("div",{className:"mt-1 break-all font-mono text-text-main",children:p||"—"})]})]})}),m?(0,r.jsx)("div",{className:"rounded-2xl border border-red-500/30 bg-red-500/10 px-4 py-3 text-sm text-red-700 dark:text-red-300",children:m}):null,h?(0,r.jsx)("div",{className:"rounded-2xl border border-green-500/30 bg-green-500/10 px-4 py-3 text-sm text-green-700 dark:text-green-300",children:h}):null,(0,r.jsx)("div",{className:"grid gap-4 lg:grid-cols-3",children:0===ec.length?(0,r.jsx)("div",{className:"rounded-2xl border border-dashed border-border p-8 text-center text-sm text-text-muted lg:col-span-3",children:"Admin chưa cấp quyền personal OAuth provider n\xe0o cho user n\xe0y."}):ec.map(e=>(0,r.jsxs)(n.Zp,{className:"space-y-4",children:[(0,r.jsxs)("div",{className:"flex items-start gap-3",children:[(0,r.jsx)("span",{className:"inline-flex size-10 shrink-0 items-center justify-center rounded-xl",style:{backgroundColor:`${e.color||"#64748b"}22`},children:(0,r.jsx)(l.A,{src:`/providers/${e.id}.png`,alt:e.name,size:34,className:"max-h-[34px] max-w-[34px] rounded-lg object-contain",fallbackText:e.id.slice(0,2).toUpperCase(),fallbackColor:e.color||"#64748b"})}),(0,r.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("h2",{className:"font-semibold text-text-main",children:e.name}),e.enabled?(0,r.jsx)(n.Ex,{variant:"success",size:"sm",children:"Enabled"}):(0,r.jsx)(n.Ex,{variant:"warning",size:"sm",children:"Locked"})]}),(0,r.jsx)("p",{className:"mt-1 text-xs text-text-muted",children:e.enabled?"Được admin cấp quyền, c\xf3 thể add OAuth account c\xe1 nh\xe2n.":"Admin chưa cấp quyền cho user n\xe0y."})]})]}),e.deprecationNotice?(0,r.jsx)("p",{className:"rounded-xl border border-amber-500/30 bg-amber-500/10 p-3 text-xs text-amber-700 dark:text-amber-300",children:e.deprecationNotice}):null,(0,r.jsxs)(n.$n,{fullWidth:!0,disabled:!e.enabled,onClick:()=>{e.enabled&&w(e)},icon:"add_link",children:["Add ",e.name," account"]})]},e.id))}),(0,r.jsxs)(n.Zp,{className:"space-y-4",children:[(0,r.jsxs)("div",{className:"flex flex-col gap-2 md:flex-row md:items-center md:justify-between",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("h2",{className:"text-lg font-semibold text-text-main",children:"My personal accounts"}),(0,r.jsx)("p",{className:"text-sm text-text-muted",children:"OAuth xong sẽ tự import model nếu provider hỗ trợ. Nếu kh\xf4ng gọi được endpoint model, hệ thống d\xf9ng catalog fallback để user vẫn chọn được model."})]}),(0,r.jsx)(n.$n,{variant:"outline",size:"sm",onClick:V,loading:e,icon:"refresh",children:"Refresh"})]}),e?(0,r.jsx)("div",{className:"rounded-2xl border border-dashed border-border p-8 text-center text-sm text-text-muted",children:"Đang tải..."}):0===y.length?(0,r.jsx)("div",{className:"rounded-2xl border border-dashed border-border p-8 text-center text-sm text-text-muted",children:"Chưa c\xf3 personal OAuth account n\xe0o."}):(0,r.jsx)("div",{className:"overflow-x-auto rounded-2xl border border-border",children:(0,r.jsxs)("table",{className:"min-w-full divide-y divide-border text-sm",children:[(0,r.jsx)("thead",{className:"bg-surface/80 text-left text-xs uppercase tracking-wide text-text-muted",children:(0,r.jsxs)("tr",{children:[(0,r.jsx)("th",{className:"px-4 py-3 font-medium",children:"Connection"}),(0,r.jsx)("th",{className:"px-4 py-3 font-medium",children:"Provider"}),(0,r.jsx)("th",{className:"px-4 py-3 font-medium",children:"Account"}),(0,r.jsx)("th",{className:"px-4 py-3 font-medium",children:"Models"}),(0,r.jsx)("th",{className:"px-4 py-3 font-medium",children:"Created"}),(0,r.jsx)("th",{className:"px-4 py-3 font-medium",children:"Active"}),(0,r.jsx)("th",{className:"px-4 py-3 text-right font-medium",children:"Actions"})]})}),(0,r.jsx)("tbody",{className:"divide-y divide-border bg-background",children:y.map(e=>{let t=c(e),s=e.modelImport||{};return(0,r.jsxs)("tr",{className:"align-top hover:bg-surface/50",children:[(0,r.jsxs)("td",{className:"px-4 py-4",children:[(0,r.jsx)("div",{className:"font-medium text-text-main",children:e.name||e.id}),(0,r.jsx)("div",{className:"mt-1 font-mono text-xs text-text-muted",children:e.id})]}),(0,r.jsx)("td",{className:"px-4 py-4",children:(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)(l.A,{src:`/providers/${e.provider}.png`,alt:e.provider,size:24,className:"max-h-[24px] max-w-[24px] rounded object-contain",fallbackText:e.provider.slice(0,2).toUpperCase()}),(0,r.jsx)("span",{children:d(e.provider,g)})]})}),(0,r.jsxs)("td",{className:"px-4 py-4",children:[(0,r.jsx)("div",{className:"break-all text-text-main",children:e.email||e.displayName||"—"}),(0,r.jsxs)("div",{className:"mt-1 break-all text-xs text-text-muted",children:["Owner: ",e.ownerUser||p||"—"]})]}),(0,r.jsxs)("td",{className:"px-4 py-4",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[function(e={}){return"provider"===(e.source||"catalog")?(0,r.jsx)(n.Ex,{variant:"success",size:"sm",children:"Imported"}):(0,r.jsx)(n.Ex,{variant:"warning",size:"sm",children:"Catalog"})}(s),(0,r.jsxs)("span",{className:"text-xs text-text-muted",children:[t.length," model(s)"]})]}),s.warning?(0,r.jsx)("div",{className:"mt-1 max-w-[320px] truncate text-xs text-amber-600 dark:text-amber-300",title:s.warning,children:s.warning}):null,t.length>0?(0,r.jsxs)("div",{className:"mt-2 flex max-w-[360px] flex-wrap gap-1",children:[t.slice(0,4).map(e=>(0,r.jsx)("span",{className:"rounded-full border border-border bg-surface px-2 py-0.5 font-mono text-[11px] text-text-muted",children:e.routeModel},e.routeModel)),t.length>4?(0,r.jsxs)("span",{className:"rounded-full border border-border bg-surface px-2 py-0.5 text-[11px] text-text-muted",children:["+",t.length-4]}):null]}):null]}),(0,r.jsx)("td",{className:"px-4 py-4 text-xs text-text-muted",children:function(e){if(!e)return"—";try{return new Intl.DateTimeFormat("vi-VN",{dateStyle:"short",timeStyle:"short"}).format(new Date(e))}catch{return e}}(e.createdAt)}),(0,r.jsx)("td",{className:"px-4 py-4",children:(0,r.jsx)(n.lM,{checked:!1!==e.isActive,onChange:t=>ee(e.id,{isActive:t})})}),(0,r.jsx)("td",{className:"px-4 py-4",children:(0,r.jsxs)("div",{className:"flex flex-wrap justify-end gap-2",children:[(0,r.jsx)(n.$n,{variant:"outline",size:"sm",loading:I===e.id,onClick:()=>et(e),children:"Import models"}),(0,r.jsx)(n.$n,{variant:"secondary",size:"sm",disabled:0===t.length,onClick:()=>er(e),children:"Add to API key"}),(0,r.jsx)(n.$n,{variant:"outline",size:"sm",onClick:()=>{let t;return t=window.prompt("T\xean connection mới",e.name||""),void(t?.trim()&&ee(e.id,{name:t.trim()}))},children:"Rename"}),(0,r.jsx)(n.$n,{variant:"danger",size:"sm",onClick:()=>C(e),children:"Delete"})]})})]},e.id)})})]})})]}),b?(0,r.jsxs)(n.Zp,{className:"space-y-4",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("h2",{className:"text-lg font-semibold text-text-main",children:"Admin: OAuth provider access"}),(0,r.jsx)("p",{className:"text-sm text-text-muted",children:"Default l\xe0 kh\xf4ng c\xf3 quyền. Nhập username/email rồi bật provider được ph\xe9p add personal account."})]}),(0,r.jsxs)("div",{className:"grid gap-3 md:grid-cols-[minmax(0,1fr)_auto] md:items-end",children:[(0,r.jsx)(n.pd,{label:"User ID / Email",value:J,onChange:e=>Z(e.target.value),placeholder:"anh-tct hoặc anh-tct@fujinet.net"}),(0,r.jsx)(n.$n,{onClick:el,loading:s,icon:"save",children:"Save permissions"})]}),(0,r.jsx)("div",{className:"grid gap-3 md:grid-cols-3",children:g.map(e=>(0,r.jsx)("div",{className:"rounded-2xl border border-border bg-surface p-4",children:(0,r.jsx)(n.lM,{checked:!0===H[e.id],onChange:t=>G(s=>({...s,[e.id]:t})),label:e.name,description:H[e.id]?"User được ph\xe9p add account":"User chưa được cấp quyền"})},e.id))}),(0,r.jsxs)("div",{className:"border-t border-border pt-4",children:[(0,r.jsxs)("div",{className:"mb-3 flex flex-col gap-2 md:flex-row md:items-center md:justify-between",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("h3",{className:"font-semibold text-text-main",children:"Granted OAuth Access"}),(0,r.jsx)("p",{className:"text-xs text-text-muted",children:"Danh s\xe1ch user hiện đang được cấp quyền add personal OAuth account."})]}),(0,r.jsx)(n.$n,{variant:"outline",size:"sm",onClick:W,loading:_,icon:"refresh",children:"Refresh list"})]}),_?(0,r.jsx)("div",{className:"rounded-2xl border border-dashed border-border p-6 text-center text-sm text-text-muted",children:"Đang tải quyền..."}):0===Q.length?(0,r.jsx)("div",{className:"rounded-2xl border border-dashed border-border p-6 text-center text-sm text-text-muted",children:"Chưa c\xf3 user n\xe0o được cấp quyền OAuth provider."}):(0,r.jsx)("div",{className:"overflow-x-auto rounded-2xl border border-border",children:(0,r.jsxs)("table",{className:"min-w-full divide-y divide-border text-sm",children:[(0,r.jsx)("thead",{className:"bg-surface/80 text-left text-xs uppercase tracking-wide text-text-muted",children:(0,r.jsxs)("tr",{children:[(0,r.jsx)("th",{className:"px-4 py-3 font-medium",children:"User"}),g.map(e=>(0,r.jsx)("th",{className:"px-4 py-3 font-medium",children:e.name},e.id)),(0,r.jsx)("th",{className:"px-4 py-3 text-right font-medium",children:"Actions"})]})}),(0,r.jsx)("tbody",{className:"divide-y divide-border bg-background",children:Q.map(e=>(0,r.jsxs)("tr",{className:"hover:bg-surface/50",children:[(0,r.jsxs)("td",{className:"px-4 py-4",children:[(0,r.jsx)("div",{className:"break-all font-mono text-text-main",children:e.userId}),i(J)===e.userId?(0,r.jsx)("div",{className:"mt-1 text-xs text-brand-600 dark:text-brand-300",children:"Đang edit ở form ph\xeda tr\xean"}):null]}),g.map(t=>(0,r.jsx)("td",{className:"px-4 py-4",children:!0===e.providerState[t.id]?(0,r.jsx)(n.Ex,{variant:"success",size:"sm",children:"ON"}):(0,r.jsx)(n.Ex,{variant:"default",size:"sm",children:"OFF"})},t.id)),(0,r.jsx)("td",{className:"px-4 py-4",children:(0,r.jsxs)("div",{className:"flex flex-wrap justify-end gap-2",children:[(0,r.jsx)(n.$n,{variant:"outline",size:"sm",onClick:()=>(e=>{let t=i(e);Z(t);let s=F[t]||{},r={};for(let e of g)r[e.id]=!0===s[e.id];G(r)})(e.userId),children:"Edit"}),(0,r.jsx)(n.$n,{variant:"danger",size:"sm",loading:s,onClick:()=>ed(e.userId),children:"Revoke"})]})})]},e.userId))})]})})]})]}):null,O?(0,r.jsx)(n.aF,{isOpen:!!O,onClose:()=>E(null),title:"Add models to API key",size:"full",footer:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.$n,{variant:"ghost",onClick:()=>E(null),disabled:D,children:"Cancel"}),(0,r.jsx)(n.$n,{onClick:ea,loading:D,disabled:!z||0===U.length,children:"Add selected models"})]}),children:(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsxs)("div",{className:"rounded-2xl border border-border bg-surface p-4 text-sm",children:[(0,r.jsx)("div",{className:"font-semibold text-text-main",children:O.name||O.id}),(0,r.jsxs)("div",{className:"mt-1 text-text-muted",children:[d(O.provider,g)," \xb7 ",eo.length," model(s) \xb7 ","provider"===em.source?"imported from provider":"catalog fallback"]}),em.warning?(0,r.jsx)("div",{className:"mt-2 text-xs text-amber-600 dark:text-amber-300",children:em.warning}):null]}),(0,r.jsxs)("label",{className:"block text-sm",children:[(0,r.jsx)("span",{className:"mb-1 block font-medium text-text-main",children:"API key"}),(0,r.jsxs)("select",{value:z,onChange:e=>q(e.target.value),className:"h-10 w-full rounded-xl border border-border bg-background px-3 text-sm text-text-main outline-none focus:border-brand-500",disabled:P,children:[(0,r.jsx)("option",{value:"",children:P?"Đang tải API keys...":"Chọn API key"}),X.map(e=>(0,r.jsxs)("option",{value:e.id,children:[e.name," \xb7 ",e.ownerUser||p]},e.id))]})]}),0!==X.length||P?null:(0,r.jsx)("div",{className:"rounded-xl border border-amber-500/30 bg-amber-500/10 p-3 text-sm text-amber-700 dark:text-amber-300",children:"User n\xe0y chưa c\xf3 API key active để th\xeam model."}),(0,r.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("h3",{className:"font-semibold text-text-main",children:"Models"}),(0,r.jsx)("p",{className:"text-xs text-text-muted",children:"Model được lưu v\xe0o allowedModels của API key. Request sẽ route qua personal OAuth account của owner."})]}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)(n.$n,{variant:"outline",size:"sm",onClick:()=>T(eo.map(e=>e.routeModel).filter(Boolean)),children:"Select all"}),(0,r.jsx)(n.$n,{variant:"ghost",size:"sm",onClick:()=>T([]),children:"Clear"})]})]}),(0,r.jsx)("div",{className:"grid gap-2 md:grid-cols-2",children:eo.map(e=>(0,r.jsxs)("label",{className:"flex cursor-pointer items-start gap-3 rounded-xl border border-border bg-background p-3 hover:bg-surface",children:[(0,r.jsx)("input",{type:"checkbox",className:"mt-1",checked:U.includes(e.routeModel),onChange:()=>{var t;return t=e.routeModel,void T(e=>e.includes(t)?e.filter(e=>e!==t):[...e,t])}}),(0,r.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,r.jsx)("span",{className:"block font-medium text-text-main",children:e.name||e.id}),(0,r.jsx)("span",{className:"mt-1 block break-all font-mono text-xs text-text-muted",children:e.routeModel}),e.type&&"llm"!==e.type?(0,r.jsx)("span",{className:"mt-2 inline-flex rounded-full bg-surface px-2 py-0.5 text-[11px] text-text-muted",children:e.type}):null]})]},e.routeModel))})]})}):null,ei?(0,r.jsx)(n.LF,{isOpen:!!k,provider:k.id,providerInfo:ei,connectionScope:"personal",onSuccess:Y,onClose:()=>w(null)}):null,A?(0,r.jsx)(n.uo,{isOpen:!!A,onClose:()=>C(null),onConfirm:en,title:"Delete personal account",message:`X\xf3a connection ${A.name||A.id}?`,confirmText:"Delete",cancelText:"Cancel",variant:"danger"}):null]})}},47584:(e,t,s)=>{Promise.resolve().then(s.bind(s,43503))}},e=>{e.O(0,[2574,3862,1051,620,5497,8441,3794,7358],()=>e(e.s=47584)),_N_E=e.O()}]);
package/app/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bluerouter-app",
3
- "version": "4.0.85",
3
+ "version": "4.0.87",
4
4
  "description": "Router web dashboard",
5
5
  "private": false,
6
6
  "scripts": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jheavenknows/bluerouter",
3
- "version": "4.0.85",
3
+ "version": "4.0.87",
4
4
  "description": "Bluerouter CLI - Start and manage Bluerouter server",
5
5
  "bin": {
6
6
  "bluerouter": "./cli.js"
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3538],{43503:(e,t,s)=>{"use strict";s.d(t,{default:()=>o});var r=s(95155),a=s(12115),n=s(35497),l=s(57250);function d(e,t){return t.find(t=>t.id===e)?.name||e}function i(e){return String(e||"").trim().toLowerCase()}function c(e){return Array.isArray(e?.availableModels)?e.availableModels:[]}function o(){let[e,t]=(0,a.useState)(!0),[s,o]=(0,a.useState)(!1),[m,x]=(0,a.useState)(""),[h,u]=(0,a.useState)(""),[p,f]=(0,a.useState)(""),[g,b]=(0,a.useState)(!1),[j,v]=(0,a.useState)([]),[y,N]=(0,a.useState)([]),[k,w]=(0,a.useState)(null),[A,C]=(0,a.useState)(null),[I,S]=(0,a.useState)(""),[O,$]=(0,a.useState)(null),[E,M]=(0,a.useState)([]),[P,K]=(0,a.useState)(!1),[z,U]=(0,a.useState)(""),[q,T]=(0,a.useState)([]),[D,_]=(0,a.useState)(!1),[R,B]=(0,a.useState)(!1),[F,L]=(0,a.useState)({}),[J,Z]=(0,a.useState)(""),[H,V]=(0,a.useState)({}),W=(0,a.useCallback)(async()=>{t(!0),x("");try{let e=await fetch("/api/personal-cloud-providers",{cache:"no-store"}),t=await e.json().catch(()=>({}));if(!e.ok)throw Error(t.error||"Kh\xf4ng tải được personal cloud providers");f(t.userId||""),b(!0===t.isAdmin),v(t.providers||[]),N(t.connections||[]),Z(e=>e||t.userId||"")}catch(e){x(e.message||"Kh\xf4ng tải được personal cloud providers")}finally{t(!1)}},[]),X=(0,a.useCallback)(async()=>{if(g){B(!0);try{let e=await fetch("/api/personal-cloud-providers/permissions",{cache:"no-store"}),t=await e.json().catch(()=>({}));if(!e.ok)throw Error(t.error||"Kh\xf4ng tải được quyền OAuth");L(t.permissions||{})}catch(e){x(e.message||"Kh\xf4ng tải được quyền OAuth")}finally{B(!1)}}},[g]);(0,a.useEffect)(()=>{W()},[W]),(0,a.useEffect)(()=>{g&&X()},[g,X]),(0,a.useEffect)(()=>{let e=F[i(J)]||{},t={};for(let s of j)t[s.id]=!0===e[s.id];V(t)},[J,F,j]);let G=(0,a.useMemo)(()=>{let e=i(p);return E.filter(t=>i(t.ownerUser||t.createdByUser||p)===e)},[E,p]),Q=async()=>{w(null),u("OAuth account đ\xe3 được th\xeam. Model sẽ được import tự động nếu provider hỗ trợ."),await W()},Y=async(e,t)=>{x(""),u("");try{let s=await fetch(`/api/personal-cloud-providers/${encodeURIComponent(e)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),r=await s.json().catch(()=>({}));if(!s.ok)throw Error(r.error||"Kh\xf4ng cập nhật được connection");await W()}catch(e){x(e.message||"Kh\xf4ng cập nhật được connection")}},ee=async e=>{x(""),u(""),S(e.id);try{let t=await fetch(`/api/personal-cloud-providers/${encodeURIComponent(e.id)}/import-models`,{method:"POST"}),s=await t.json().catch(()=>({}));if(!t.ok)throw Error(s.error||"Kh\xf4ng import được model");N(t=>t.map(t=>t.id===e.id?{...t,availableModels:s.models||[],modelImport:s.modelImport||t.modelImport}:t));let r=s.modelImport?.source==="provider"?"provider":"catalog fallback";u(`Đ\xe3 cập nhật ${s.models?.length||0} model từ ${r}.`)}catch(e){x(e.message||"Kh\xf4ng import được model")}finally{S("")}},et=async()=>{K(!0);try{let e=await fetch("/api/keys?pageSize=100&status=active",{cache:"no-store"}),t=await e.json().catch(()=>({}));if(!e.ok)throw Error(t.error||"Kh\xf4ng tải được API keys");M(t.keys||[]);let s=i(p||t.userId),r=(t.keys||[]).find(e=>i(e.ownerUser||e.createdByUser||t.userId)===s);U(e=>e||r?.id||"")}catch(e){x(e.message||"Kh\xf4ng tải được API keys")}finally{K(!1)}},es=async e=>{let t;x(""),u(""),$(e),T((t=c(e).filter(e=>"llm"===(e.type||"llm")).slice(0,3).map(e=>e.routeModel).filter(Boolean)).length>0?t:c(e).slice(0,3).map(e=>e.routeModel).filter(Boolean)),U(""),await et()},er=async()=>{if(!O)return;if(!z)return void x("Chọn API key cần th\xeam model.");let e=Array.from(new Set((Array.isArray(q)?q:[]).map(e=>String(e||"").trim()).filter(Boolean)));if(0===e.length)return void x("Chọn \xedt nhất một model.");_(!0),x(""),u("");try{let t=await fetch(`/api/personal-cloud-providers/${encodeURIComponent(O.id)}/api-key-models`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKeyId:z,models:e})}),s=await t.json().catch(()=>({}));if(!t.ok)throw Error(s.error||"Kh\xf4ng th\xeam được model v\xe0o API key");$(null),u(`Đ\xe3 th\xeam ${s.addedModels?.length||e.length} model v\xe0o API key ${s.key?.name||""}.`)}catch(e){x(e.message||"Kh\xf4ng th\xeam được model v\xe0o API key")}finally{_(!1)}},ea=async()=>{if(A){x(""),u("");try{let e=await fetch(`/api/personal-cloud-providers/${encodeURIComponent(A.id)}`,{method:"DELETE"}),t=await e.json().catch(()=>({}));if(!e.ok)throw Error(t.error||"Kh\xf4ng x\xf3a được connection");C(null),await W()}catch(e){x(e.message||"Kh\xf4ng x\xf3a được connection")}}},en=async()=>{let e=i(J);if(!e)return void x("Nhập username/email cần cấp quyền.");o(!0),x(""),u("");try{let t=await fetch("/api/personal-cloud-providers/permissions",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({userId:e,providers:H})}),s=await t.json().catch(()=>({}));if(!t.ok)throw Error(s.error||"Kh\xf4ng lưu được quyền OAuth");L(s.permissions||{});let r=s.user?.id||e;r!==e&&Z(r),u(`Đ\xe3 lưu quyền OAuth cho ${r}.`),await W()}catch(e){x(e.message||"Kh\xf4ng lưu được quyền OAuth")}finally{o(!1)}},el=k?function(e={}){return{id:e.id,name:e.name||e.id,icon:e.icon||"cloud",color:e.color||"#64748b",website:e.website||"",notice:e.notice||null,deprecationNotice:e.deprecationNotice||"",serviceKinds:e.serviceKinds||["llm"]}}(k):null,ed=g?j:j.filter(e=>e.enabled),ei=c(O),ec=O?.modelImport||{};return(0,r.jsxs)("div",{className:"space-y-6",children:[(0,r.jsx)("div",{children:(0,r.jsxs)("div",{className:"flex flex-col gap-3 md:flex-row md:items-start md:justify-between",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("h1",{className:"text-2xl font-semibold text-text-main",children:"Personal Cloud Providers"}),(0,r.jsx)("p",{className:"mt-1 text-sm text-text-muted",children:"Kết nối OAuth c\xe1 nh\xe2n cho Claude Code, OpenAI Codex v\xe0 Antigravity. Account c\xe1 nh\xe2n chỉ owner nh\xecn thấy v\xe0 chỉ API key của owner được d\xf9ng."})]}),(0,r.jsxs)("div",{className:"rounded-2xl border border-border bg-surface px-4 py-3 text-sm",children:[(0,r.jsx)("div",{className:"text-xs uppercase tracking-wide text-text-muted",children:"Current user"}),(0,r.jsx)("div",{className:"mt-1 break-all font-mono text-text-main",children:p||"—"})]})]})}),m?(0,r.jsx)("div",{className:"rounded-2xl border border-red-500/30 bg-red-500/10 px-4 py-3 text-sm text-red-700 dark:text-red-300",children:m}):null,h?(0,r.jsx)("div",{className:"rounded-2xl border border-green-500/30 bg-green-500/10 px-4 py-3 text-sm text-green-700 dark:text-green-300",children:h}):null,(0,r.jsx)("div",{className:"grid gap-4 lg:grid-cols-3",children:0===ed.length?(0,r.jsx)("div",{className:"rounded-2xl border border-dashed border-border p-8 text-center text-sm text-text-muted lg:col-span-3",children:"Admin chưa cấp quyền personal OAuth provider n\xe0o cho user n\xe0y."}):ed.map(e=>(0,r.jsxs)(n.Zp,{className:"space-y-4",children:[(0,r.jsxs)("div",{className:"flex items-start gap-3",children:[(0,r.jsx)("span",{className:"inline-flex size-10 shrink-0 items-center justify-center rounded-xl",style:{backgroundColor:`${e.color||"#64748b"}22`},children:(0,r.jsx)(l.A,{src:`/providers/${e.id}.png`,alt:e.name,size:34,className:"max-h-[34px] max-w-[34px] rounded-lg object-contain",fallbackText:e.id.slice(0,2).toUpperCase(),fallbackColor:e.color||"#64748b"})}),(0,r.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("h2",{className:"font-semibold text-text-main",children:e.name}),e.enabled?(0,r.jsx)(n.Ex,{variant:"success",size:"sm",children:"Enabled"}):(0,r.jsx)(n.Ex,{variant:"warning",size:"sm",children:"Locked"})]}),(0,r.jsx)("p",{className:"mt-1 text-xs text-text-muted",children:e.enabled?"Được admin cấp quyền, c\xf3 thể add OAuth account c\xe1 nh\xe2n.":"Admin chưa cấp quyền cho user n\xe0y."})]})]}),e.deprecationNotice?(0,r.jsx)("p",{className:"rounded-xl border border-amber-500/30 bg-amber-500/10 p-3 text-xs text-amber-700 dark:text-amber-300",children:e.deprecationNotice}):null,(0,r.jsxs)(n.$n,{fullWidth:!0,disabled:!e.enabled,onClick:()=>{e.enabled&&w(e)},icon:"add_link",children:["Add ",e.name," account"]})]},e.id))}),(0,r.jsxs)(n.Zp,{className:"space-y-4",children:[(0,r.jsxs)("div",{className:"flex flex-col gap-2 md:flex-row md:items-center md:justify-between",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("h2",{className:"text-lg font-semibold text-text-main",children:"My personal accounts"}),(0,r.jsx)("p",{className:"text-sm text-text-muted",children:"OAuth xong sẽ tự import model nếu provider hỗ trợ. Nếu kh\xf4ng gọi được endpoint model, hệ thống d\xf9ng catalog fallback để user vẫn chọn được model."})]}),(0,r.jsx)(n.$n,{variant:"outline",size:"sm",onClick:W,loading:e,icon:"refresh",children:"Refresh"})]}),e?(0,r.jsx)("div",{className:"rounded-2xl border border-dashed border-border p-8 text-center text-sm text-text-muted",children:"Đang tải..."}):0===y.length?(0,r.jsx)("div",{className:"rounded-2xl border border-dashed border-border p-8 text-center text-sm text-text-muted",children:"Chưa c\xf3 personal OAuth account n\xe0o."}):(0,r.jsx)("div",{className:"overflow-x-auto rounded-2xl border border-border",children:(0,r.jsxs)("table",{className:"min-w-full divide-y divide-border text-sm",children:[(0,r.jsx)("thead",{className:"bg-surface/80 text-left text-xs uppercase tracking-wide text-text-muted",children:(0,r.jsxs)("tr",{children:[(0,r.jsx)("th",{className:"px-4 py-3 font-medium",children:"Connection"}),(0,r.jsx)("th",{className:"px-4 py-3 font-medium",children:"Provider"}),(0,r.jsx)("th",{className:"px-4 py-3 font-medium",children:"Account"}),(0,r.jsx)("th",{className:"px-4 py-3 font-medium",children:"Models"}),(0,r.jsx)("th",{className:"px-4 py-3 font-medium",children:"Created"}),(0,r.jsx)("th",{className:"px-4 py-3 font-medium",children:"Active"}),(0,r.jsx)("th",{className:"px-4 py-3 text-right font-medium",children:"Actions"})]})}),(0,r.jsx)("tbody",{className:"divide-y divide-border bg-background",children:y.map(e=>{let t=c(e),s=e.modelImport||{};return(0,r.jsxs)("tr",{className:"align-top hover:bg-surface/50",children:[(0,r.jsxs)("td",{className:"px-4 py-4",children:[(0,r.jsx)("div",{className:"font-medium text-text-main",children:e.name||e.id}),(0,r.jsx)("div",{className:"mt-1 font-mono text-xs text-text-muted",children:e.id})]}),(0,r.jsx)("td",{className:"px-4 py-4",children:(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)(l.A,{src:`/providers/${e.provider}.png`,alt:e.provider,size:24,className:"max-h-[24px] max-w-[24px] rounded object-contain",fallbackText:e.provider.slice(0,2).toUpperCase()}),(0,r.jsx)("span",{children:d(e.provider,j)})]})}),(0,r.jsxs)("td",{className:"px-4 py-4",children:[(0,r.jsx)("div",{className:"break-all text-text-main",children:e.email||e.displayName||"—"}),(0,r.jsxs)("div",{className:"mt-1 break-all text-xs text-text-muted",children:["Owner: ",e.ownerUser||p||"—"]})]}),(0,r.jsxs)("td",{className:"px-4 py-4",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[function(e={}){return"provider"===(e.source||"catalog")?(0,r.jsx)(n.Ex,{variant:"success",size:"sm",children:"Imported"}):(0,r.jsx)(n.Ex,{variant:"warning",size:"sm",children:"Catalog"})}(s),(0,r.jsxs)("span",{className:"text-xs text-text-muted",children:[t.length," model(s)"]})]}),s.warning?(0,r.jsx)("div",{className:"mt-1 max-w-[320px] truncate text-xs text-amber-600 dark:text-amber-300",title:s.warning,children:s.warning}):null,t.length>0?(0,r.jsxs)("div",{className:"mt-2 flex max-w-[360px] flex-wrap gap-1",children:[t.slice(0,4).map(e=>(0,r.jsx)("span",{className:"rounded-full border border-border bg-surface px-2 py-0.5 font-mono text-[11px] text-text-muted",children:e.routeModel},e.routeModel)),t.length>4?(0,r.jsxs)("span",{className:"rounded-full border border-border bg-surface px-2 py-0.5 text-[11px] text-text-muted",children:["+",t.length-4]}):null]}):null]}),(0,r.jsx)("td",{className:"px-4 py-4 text-xs text-text-muted",children:function(e){if(!e)return"—";try{return new Intl.DateTimeFormat("vi-VN",{dateStyle:"short",timeStyle:"short"}).format(new Date(e))}catch{return e}}(e.createdAt)}),(0,r.jsx)("td",{className:"px-4 py-4",children:(0,r.jsx)(n.lM,{checked:!1!==e.isActive,onChange:t=>Y(e.id,{isActive:t})})}),(0,r.jsx)("td",{className:"px-4 py-4",children:(0,r.jsxs)("div",{className:"flex flex-wrap justify-end gap-2",children:[(0,r.jsx)(n.$n,{variant:"outline",size:"sm",loading:I===e.id,onClick:()=>ee(e),children:"Import models"}),(0,r.jsx)(n.$n,{variant:"secondary",size:"sm",disabled:0===t.length,onClick:()=>es(e),children:"Add to API key"}),(0,r.jsx)(n.$n,{variant:"outline",size:"sm",onClick:()=>{let t;return t=window.prompt("T\xean connection mới",e.name||""),void(t?.trim()&&Y(e.id,{name:t.trim()}))},children:"Rename"}),(0,r.jsx)(n.$n,{variant:"danger",size:"sm",onClick:()=>C(e),children:"Delete"})]})})]},e.id)})})]})})]}),g?(0,r.jsxs)(n.Zp,{className:"space-y-4",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("h2",{className:"text-lg font-semibold text-text-main",children:"Admin: OAuth provider access"}),(0,r.jsx)("p",{className:"text-sm text-text-muted",children:"Default l\xe0 kh\xf4ng c\xf3 quyền. Nhập username/email rồi bật provider được ph\xe9p add personal account."})]}),(0,r.jsxs)("div",{className:"grid gap-3 md:grid-cols-[minmax(0,1fr)_auto] md:items-end",children:[(0,r.jsx)(n.pd,{label:"User ID / Email",value:J,onChange:e=>Z(e.target.value),placeholder:"anh-tct hoặc anh-tct@fujinet.net"}),(0,r.jsx)(n.$n,{onClick:en,loading:s,icon:"save",children:"Save permissions"})]}),(0,r.jsx)("div",{className:"grid gap-3 md:grid-cols-3",children:j.map(e=>(0,r.jsx)("div",{className:"rounded-2xl border border-border bg-surface p-4",children:(0,r.jsx)(n.lM,{checked:!0===H[e.id],onChange:t=>V(s=>({...s,[e.id]:t})),label:e.name,description:H[e.id]?"User được ph\xe9p add account":"User chưa được cấp quyền"})},e.id))}),R?(0,r.jsx)("p",{className:"text-xs text-text-muted",children:"Đang tải quyền..."}):null]}):null,O?(0,r.jsx)(n.aF,{isOpen:!!O,onClose:()=>$(null),title:"Add models to API key",size:"full",footer:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.$n,{variant:"ghost",onClick:()=>$(null),disabled:D,children:"Cancel"}),(0,r.jsx)(n.$n,{onClick:er,loading:D,disabled:!z||0===q.length,children:"Add selected models"})]}),children:(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsxs)("div",{className:"rounded-2xl border border-border bg-surface p-4 text-sm",children:[(0,r.jsx)("div",{className:"font-semibold text-text-main",children:O.name||O.id}),(0,r.jsxs)("div",{className:"mt-1 text-text-muted",children:[d(O.provider,j)," \xb7 ",ei.length," model(s) \xb7 ","provider"===ec.source?"imported from provider":"catalog fallback"]}),ec.warning?(0,r.jsx)("div",{className:"mt-2 text-xs text-amber-600 dark:text-amber-300",children:ec.warning}):null]}),(0,r.jsxs)("label",{className:"block text-sm",children:[(0,r.jsx)("span",{className:"mb-1 block font-medium text-text-main",children:"API key"}),(0,r.jsxs)("select",{value:z,onChange:e=>U(e.target.value),className:"h-10 w-full rounded-xl border border-border bg-background px-3 text-sm text-text-main outline-none focus:border-brand-500",disabled:P,children:[(0,r.jsx)("option",{value:"",children:P?"Đang tải API keys...":"Chọn API key"}),G.map(e=>(0,r.jsxs)("option",{value:e.id,children:[e.name," \xb7 ",e.ownerUser||p]},e.id))]})]}),0!==G.length||P?null:(0,r.jsx)("div",{className:"rounded-xl border border-amber-500/30 bg-amber-500/10 p-3 text-sm text-amber-700 dark:text-amber-300",children:"User n\xe0y chưa c\xf3 API key active để th\xeam model."}),(0,r.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("h3",{className:"font-semibold text-text-main",children:"Models"}),(0,r.jsx)("p",{className:"text-xs text-text-muted",children:"Model được lưu v\xe0o allowedModels của API key. Request sẽ route qua personal OAuth account của owner."})]}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)(n.$n,{variant:"outline",size:"sm",onClick:()=>T(ei.map(e=>e.routeModel).filter(Boolean)),children:"Select all"}),(0,r.jsx)(n.$n,{variant:"ghost",size:"sm",onClick:()=>T([]),children:"Clear"})]})]}),(0,r.jsx)("div",{className:"grid gap-2 md:grid-cols-2",children:ei.map(e=>(0,r.jsxs)("label",{className:"flex cursor-pointer items-start gap-3 rounded-xl border border-border bg-background p-3 hover:bg-surface",children:[(0,r.jsx)("input",{type:"checkbox",className:"mt-1",checked:q.includes(e.routeModel),onChange:()=>{var t;return t=e.routeModel,void T(e=>e.includes(t)?e.filter(e=>e!==t):[...e,t])}}),(0,r.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,r.jsx)("span",{className:"block font-medium text-text-main",children:e.name||e.id}),(0,r.jsx)("span",{className:"mt-1 block break-all font-mono text-xs text-text-muted",children:e.routeModel}),e.type&&"llm"!==e.type?(0,r.jsx)("span",{className:"mt-2 inline-flex rounded-full bg-surface px-2 py-0.5 text-[11px] text-text-muted",children:e.type}):null]})]},e.routeModel))})]})}):null,el?(0,r.jsx)(n.LF,{isOpen:!!k,provider:k.id,providerInfo:el,connectionScope:"personal",onSuccess:Q,onClose:()=>w(null)}):null,A?(0,r.jsx)(n.uo,{isOpen:!!A,onClose:()=>C(null),onConfirm:ea,title:"Delete personal account",message:`X\xf3a connection ${A.name||A.id}?`,confirmText:"Delete",cancelText:"Cancel",variant:"danger"}):null]})}},47584:(e,t,s)=>{Promise.resolve().then(s.bind(s,43503))}},e=>{e.O(0,[2574,3862,1051,620,5497,8441,3794,7358],()=>e(e.s=47584)),_N_E=e.O()}]);