@johpaz/hive-agents 0.0.35 → 0.0.37

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 (441) hide show
  1. package/README.md +64 -39
  2. package/dist/hive.js +3231 -3189
  3. package/dist/tool-worker.js +218406 -0
  4. package/dist/ui/assets/{AgentCreateForm-B4eK7efF.js → AgentCreateForm-tJZv9FZC.js} +1 -1
  5. package/dist/ui/assets/{AgentDetailPage-BD2uoJWk.js → AgentDetailPage-Du-mRcAX.js} +1 -1
  6. package/dist/ui/assets/AgentNewPage-DIFYd_Ys.js +1 -0
  7. package/dist/ui/assets/{AgentsPage-4JUZXvkA.js → AgentsPage-YvSgWRiw.js} +6 -6
  8. package/dist/ui/assets/CanvasPage-DtMwGvxf.js +33 -0
  9. package/dist/ui/assets/{ChannelsPage-BUn7-nhV.js → ChannelsPage-BdBXWHjj.js} +1 -1
  10. package/dist/ui/assets/DashboardPage-ghl1ZguH.js +6 -0
  11. package/dist/ui/assets/{LoginPage-C8j_urUD.js → LoginPage-CAmSI9Vy.js} +1 -1
  12. package/dist/ui/assets/LogsPage-DAPBHkwK.js +1 -0
  13. package/dist/ui/assets/MeetingPage-WjjGOqqU.js +1 -0
  14. package/dist/ui/assets/{NotFound-Drh-sJPN.js → NotFound-BMeQSGcG.js} +1 -1
  15. package/dist/ui/assets/ProvidersPage-Ct6HsAi1.js +1 -0
  16. package/dist/ui/assets/{RecoverPage-DNb1Pr8h.js → RecoverPage-DpW3l-yv.js} +1 -1
  17. package/dist/ui/assets/SettingsPage-DBJ7_E6C.js +9 -0
  18. package/dist/ui/assets/SetupPage-DKmLVUaj.js +1 -0
  19. package/dist/ui/assets/{WebChatPage-R-YOwA4F.js → WebChatPage-CVRcKept.js} +2 -2
  20. package/dist/ui/assets/accordion-C5d5Rm5z.js +1 -0
  21. package/dist/ui/assets/{alert-U8FsgWi7.js → alert-C-NE-P3s.js} +1 -1
  22. package/dist/ui/assets/{alert-dialog-CRdMkkmk.js → alert-dialog-C5mzbHdP.js} +1 -1
  23. package/dist/ui/assets/{badge-Cli1jnH5.js → badge-ChpACfWO.js} +1 -1
  24. package/dist/ui/assets/chevron-up-BYhk0K2J.js +1 -0
  25. package/dist/ui/assets/{dialog-DQ3s-LuO.js → dialog-QnZ0ad8O.js} +1 -1
  26. package/dist/ui/assets/dropdown-menu-BK-CO3Od.js +1 -0
  27. package/dist/ui/assets/{es-DcMjrpbA.js → es-NQNoaWDx.js} +1 -1
  28. package/dist/ui/assets/index-B2fCYtTS.css +2 -0
  29. package/dist/ui/assets/index-DMCjjdqf.js +116 -0
  30. package/dist/ui/assets/{label-0BvGVXvZ.js → label-D2H1IR_J.js} +1 -1
  31. package/dist/ui/assets/progress-BherYzY6.js +1 -0
  32. package/dist/ui/assets/scroll-area-DkeyX32e.js +1 -0
  33. package/dist/ui/assets/{slider-D47dOrRa.js → slider-CsiUDxc3.js} +1 -1
  34. package/dist/ui/assets/switch-BDwN8RYV.js +1 -0
  35. package/dist/ui/assets/{table-DhowbNxQ.js → table-CSc8ubon.js} +1 -1
  36. package/dist/ui/assets/terminal-DN38Q456.js +1 -0
  37. package/dist/ui/assets/useProviders-C6_QHsEi.js +1 -0
  38. package/dist/ui/assets/{vendor-radix-JY4ncZrD.js → vendor-radix-cw1bQaVC.js} +4 -4
  39. package/dist/ui/assets/{vendor-react-CscwQerf.js → vendor-react-D4s9E-zj.js} +1 -1
  40. package/dist/ui/dist/assets/AgentCreateForm-tJZv9FZC.js +1 -0
  41. package/dist/ui/dist/assets/AgentDetailPage-Du-mRcAX.js +1 -0
  42. package/dist/ui/dist/assets/AgentNewPage-DIFYd_Ys.js +1 -0
  43. package/dist/ui/dist/assets/AgentsPage-YvSgWRiw.js +10 -0
  44. package/dist/ui/dist/assets/CanvasPage-DtMwGvxf.js +33 -0
  45. package/dist/ui/dist/assets/ChannelsPage-BdBXWHjj.js +8 -0
  46. package/dist/ui/dist/assets/DashboardPage-ghl1ZguH.js +6 -0
  47. package/dist/ui/dist/assets/LoginPage-CAmSI9Vy.js +1 -0
  48. package/dist/ui/dist/assets/LogsPage-DAPBHkwK.js +1 -0
  49. package/dist/ui/dist/assets/MeetingPage-WjjGOqqU.js +1 -0
  50. package/dist/ui/dist/assets/NotFound-BMeQSGcG.js +1 -0
  51. package/dist/ui/dist/assets/ProvidersPage-Ct6HsAi1.js +1 -0
  52. package/dist/ui/dist/assets/RecoverPage-DpW3l-yv.js +1 -0
  53. package/dist/ui/dist/assets/SettingsPage-DBJ7_E6C.js +9 -0
  54. package/dist/ui/dist/assets/SetupPage-DKmLVUaj.js +1 -0
  55. package/dist/ui/dist/assets/WebChatPage-CVRcKept.js +16 -0
  56. package/dist/ui/dist/assets/accordion-C5d5Rm5z.js +1 -0
  57. package/dist/ui/dist/assets/activity-c3pNngT_.js +1 -0
  58. package/dist/ui/dist/assets/alert-C-NE-P3s.js +1 -0
  59. package/dist/ui/dist/assets/alert-dialog-C5mzbHdP.js +1 -0
  60. package/dist/ui/dist/assets/arrow-left-CBcbX5EZ.js +1 -0
  61. package/dist/ui/dist/assets/badge-ChpACfWO.js +1 -0
  62. package/dist/ui/dist/assets/calendar-B-KZ9RQO.js +1 -0
  63. package/dist/ui/dist/assets/card-CNf6BS2e.js +1 -0
  64. package/dist/ui/dist/assets/chevron-left-D4U-5A27.js +1 -0
  65. package/dist/ui/dist/assets/chevron-right-CR4Skrf3.js +1 -0
  66. package/dist/ui/dist/assets/chevron-up-BYhk0K2J.js +1 -0
  67. package/dist/ui/dist/assets/circle-alert-CyHDwUj8.js +1 -0
  68. package/dist/ui/dist/assets/circle-check-Bb54Ebmu.js +1 -0
  69. package/dist/ui/dist/assets/cpu-Cdgc_B1K.js +1 -0
  70. package/dist/ui/dist/assets/dialog-QnZ0ad8O.js +1 -0
  71. package/dist/ui/dist/assets/download-C3ifGMjJ.js +1 -0
  72. package/dist/ui/dist/assets/dropdown-menu-BK-CO3Od.js +1 -0
  73. package/dist/ui/dist/assets/es-NQNoaWDx.js +1 -0
  74. package/dist/ui/dist/assets/external-link-BvxYeTP1.js +1 -0
  75. package/dist/ui/dist/assets/eye-DqNTU_GD.js +1 -0
  76. package/dist/ui/dist/assets/file-text-BT_9S9SM.js +1 -0
  77. package/dist/ui/dist/assets/folder-open-BhH8y9ac.js +1 -0
  78. package/dist/ui/dist/assets/format-GVHeOyWI.js +1 -0
  79. package/dist/ui/dist/assets/gateway-url-COCbW0IR.js +1 -0
  80. package/dist/ui/dist/assets/gauge-D_TMa4i9.js +1 -0
  81. package/dist/ui/dist/assets/globe-DeCQTCDJ.js +1 -0
  82. package/dist/ui/dist/assets/hexagon-DsGOUl-H.js +1 -0
  83. package/dist/ui/dist/assets/history-BSG-Ypqf.js +1 -0
  84. package/dist/ui/dist/assets/index-B2fCYtTS.css +2 -0
  85. package/dist/ui/dist/assets/index-DMCjjdqf.js +116 -0
  86. package/dist/ui/dist/assets/info-NwLoa2Mj.js +1 -0
  87. package/dist/ui/dist/assets/key-3EP0dhkT.js +1 -0
  88. package/dist/ui/dist/assets/label-D2H1IR_J.js +1 -0
  89. package/dist/ui/dist/assets/loader-circle-CZNax6kS.js +1 -0
  90. package/dist/ui/dist/assets/lock-Ei1_J-Nq.js +1 -0
  91. package/dist/ui/dist/assets/pause-BUqah9Bi.js +1 -0
  92. package/dist/ui/dist/assets/play-NcZ4swwL.js +1 -0
  93. package/dist/ui/dist/assets/plus-CX1xyhp5.js +1 -0
  94. package/dist/ui/dist/assets/progress-BherYzY6.js +1 -0
  95. package/dist/ui/dist/assets/refresh-cw-DaYdjQFk.js +1 -0
  96. package/dist/ui/dist/assets/rolldown-runtime-S-ySWqyJ.js +1 -0
  97. package/dist/ui/dist/assets/save-CUdYyHNy.js +1 -0
  98. package/dist/ui/dist/assets/scroll-area-DkeyX32e.js +1 -0
  99. package/dist/ui/dist/assets/send-B0H5SEIE.js +1 -0
  100. package/dist/ui/dist/assets/settings-Ds4SqD8s.js +1 -0
  101. package/dist/ui/dist/assets/slider-CsiUDxc3.js +14 -0
  102. package/dist/ui/dist/assets/sparkles-yUEb-7oH.js +1 -0
  103. package/dist/ui/dist/assets/square-BD81nFtN.js +1 -0
  104. package/dist/ui/dist/assets/switch-BDwN8RYV.js +1 -0
  105. package/dist/ui/dist/assets/table-CSc8ubon.js +1 -0
  106. package/dist/ui/dist/assets/terminal-DN38Q456.js +1 -0
  107. package/dist/ui/dist/assets/textarea-CXgXWKrT.js +1 -0
  108. package/dist/ui/dist/assets/trash-2-CNjMkoq6.js +1 -0
  109. package/dist/ui/dist/assets/triangle-alert-C9Y8Ub4X.js +1 -0
  110. package/dist/ui/dist/assets/useProviders-C6_QHsEi.js +1 -0
  111. package/dist/ui/dist/assets/utils-3pnRFmFe.js +1 -0
  112. package/dist/ui/dist/assets/vendor-charts-Bu2lyBKP.js +65 -0
  113. package/dist/ui/dist/assets/vendor-query-DsWPbQdG.js +1 -0
  114. package/dist/ui/dist/assets/vendor-radix-cw1bQaVC.js +63 -0
  115. package/dist/ui/dist/assets/vendor-react-D4s9E-zj.js +1 -0
  116. package/dist/ui/dist/assets/vendor-router-C9pIYwbJ.js +3 -0
  117. package/dist/ui/dist/assets/volume-2-CeSXNDv4.js +1 -0
  118. package/dist/ui/dist/assets/zap-hlXjpSeA.js +1 -0
  119. package/dist/ui/dist/favicon.ico +0 -0
  120. package/dist/ui/dist/index.html +40 -0
  121. package/dist/ui/dist/placeholder.svg +1 -0
  122. package/dist/ui/index.html +6 -6
  123. package/package.json +138 -13
  124. package/packages/cli/src/adapters/binary.ts +461 -0
  125. package/packages/cli/src/adapters/bun-global.ts +378 -0
  126. package/packages/cli/src/adapters/config.ts +314 -0
  127. package/packages/cli/src/adapters/docker.ts +308 -0
  128. package/packages/cli/src/adapters/factory.ts +168 -0
  129. package/packages/cli/src/adapters/index.ts +80 -0
  130. package/packages/cli/src/adapters/types.ts +218 -0
  131. package/packages/cli/src/commands/agent-run.ts +168 -0
  132. package/packages/cli/src/commands/agents.ts +398 -0
  133. package/packages/cli/src/commands/chat.ts +142 -0
  134. package/packages/cli/src/commands/config.ts +49 -0
  135. package/packages/cli/src/commands/cron.ts +487 -0
  136. package/packages/cli/src/commands/dev.ts +58 -0
  137. package/packages/cli/src/commands/doctor.ts +320 -0
  138. package/packages/cli/src/commands/gateway.ts +719 -0
  139. package/packages/cli/src/commands/logs.ts +57 -0
  140. package/packages/cli/src/commands/mcp.ts +175 -0
  141. package/packages/cli/src/commands/message.ts +77 -0
  142. package/packages/cli/src/commands/migrate.ts +90 -0
  143. package/packages/cli/src/commands/onboard.ts +1656 -0
  144. package/packages/cli/src/commands/security.ts +144 -0
  145. package/packages/cli/src/commands/service.ts +50 -0
  146. package/packages/cli/src/commands/sessions.ts +116 -0
  147. package/packages/cli/src/commands/skills.ts +215 -0
  148. package/packages/cli/src/commands/update.ts +203 -0
  149. package/packages/cli/src/index.ts +210 -0
  150. package/packages/cli/src/ui-bundle.generated.ts +3 -0
  151. package/packages/cli/src/utils/token.ts +6 -0
  152. package/packages/core/src/agent/agent-loop.ts +691 -0
  153. package/packages/core/src/agent/compaction.ts +240 -0
  154. package/packages/core/src/agent/context-compiler.ts +467 -0
  155. package/packages/core/src/agent/context-guard.ts +91 -0
  156. package/packages/core/src/agent/conversation-store.ts +244 -0
  157. package/packages/core/src/agent/curator.ts +158 -0
  158. package/packages/core/src/agent/hooks.ts +166 -0
  159. package/packages/core/src/agent/llm-client.ts +167 -0
  160. package/packages/core/src/agent/llm-providers/anthropic.ts +212 -0
  161. package/packages/core/src/agent/llm-providers/deepseek.ts +8 -0
  162. package/packages/core/src/agent/llm-providers/gemini.ts +215 -0
  163. package/packages/core/src/agent/llm-providers/groq.ts +5 -0
  164. package/packages/core/src/agent/llm-providers/interface.ts +195 -0
  165. package/packages/core/src/agent/llm-providers/kimi.ts +8 -0
  166. package/packages/core/src/agent/llm-providers/local-llama.ts +37 -0
  167. package/packages/core/src/agent/llm-providers/mistral.ts +5 -0
  168. package/packages/core/src/agent/llm-providers/nvidia.ts +5 -0
  169. package/packages/core/src/agent/llm-providers/ollama.ts +175 -0
  170. package/packages/core/src/agent/llm-providers/openai-compat-base.ts +379 -0
  171. package/packages/core/src/agent/llm-providers/openai.ts +5 -0
  172. package/packages/core/src/agent/llm-providers/openrouter.ts +5 -0
  173. package/packages/core/src/agent/llm-providers/qwen.ts +5 -0
  174. package/packages/core/src/agent/native-tools.ts +31 -0
  175. package/packages/core/src/agent/playbook-selector.ts +147 -0
  176. package/packages/core/src/agent/prompt-builder.ts +169 -0
  177. package/packages/core/src/agent/providers/index.ts +204 -0
  178. package/packages/core/src/agent/providers.ts +1 -0
  179. package/packages/core/src/agent/reflector.ts +200 -0
  180. package/packages/core/src/agent/service.ts +267 -0
  181. package/packages/core/src/agent/skill-selector.ts +479 -0
  182. package/packages/core/src/agent/stuck-loop.ts +133 -0
  183. package/packages/core/src/agent/tool-selector.ts +569 -0
  184. package/packages/core/src/agent/tracer.ts +100 -0
  185. package/packages/core/src/auth/auth.ts +108 -0
  186. package/packages/core/src/auth/index.ts +1 -0
  187. package/packages/core/src/canvas/a2ui-tools.ts +255 -0
  188. package/packages/core/src/canvas/canvas-manager.ts +390 -0
  189. package/packages/core/src/canvas/canvas-tools.ts +448 -0
  190. package/packages/core/src/canvas/emitter.ts +149 -0
  191. package/packages/core/src/canvas/index.ts +3 -0
  192. package/packages/core/src/channels/base.ts +154 -0
  193. package/packages/core/src/channels/discord.ts +273 -0
  194. package/packages/core/src/channels/index.ts +7 -0
  195. package/packages/core/src/channels/manager.ts +450 -0
  196. package/packages/core/src/channels/slack.ts +323 -0
  197. package/packages/core/src/channels/telegram.ts +612 -0
  198. package/packages/core/src/channels/webchat.ts +139 -0
  199. package/packages/core/src/channels/whatsapp.ts +548 -0
  200. package/packages/core/src/config/index.ts +12 -0
  201. package/packages/core/src/config/loader.ts +569 -0
  202. package/packages/core/src/events/agent-bus.ts +460 -0
  203. package/packages/core/src/events/event-bus.ts +169 -0
  204. package/packages/core/src/gateway/channel-notify.ts +64 -0
  205. package/packages/core/src/gateway/helpers/cors.ts +32 -0
  206. package/packages/core/src/gateway/helpers/index.ts +4 -0
  207. package/packages/core/src/gateway/helpers/narration.ts +57 -0
  208. package/packages/core/src/gateway/helpers/path.ts +13 -0
  209. package/packages/core/src/gateway/helpers/redact.ts +61 -0
  210. package/packages/core/src/gateway/index.ts +5 -0
  211. package/packages/core/src/gateway/initializer.ts +363 -0
  212. package/packages/core/src/gateway/lane-queue.ts +169 -0
  213. package/packages/core/src/gateway/llm-local/client.ts +94 -0
  214. package/packages/core/src/gateway/llm-local/detector.ts +321 -0
  215. package/packages/core/src/gateway/llm-local/downloader.ts +216 -0
  216. package/packages/core/src/gateway/llm-local/index.ts +34 -0
  217. package/packages/core/src/gateway/llm-local/manager.ts +186 -0
  218. package/packages/core/src/gateway/llm-local/models.ts +149 -0
  219. package/packages/core/src/gateway/llm-local/server.ts +179 -0
  220. package/packages/core/src/gateway/resolver.ts +108 -0
  221. package/packages/core/src/gateway/router.ts +124 -0
  222. package/packages/core/src/gateway/routes/agents.ts +210 -0
  223. package/packages/core/src/gateway/routes/auth.ts +244 -0
  224. package/packages/core/src/gateway/routes/channels.ts +484 -0
  225. package/packages/core/src/gateway/routes/chat.ts +241 -0
  226. package/packages/core/src/gateway/routes/config.ts +12 -0
  227. package/packages/core/src/gateway/routes/cron-api.ts +544 -0
  228. package/packages/core/src/gateway/routes/ethics.ts +46 -0
  229. package/packages/core/src/gateway/routes/llm-local.ts +271 -0
  230. package/packages/core/src/gateway/routes/mcp.ts +319 -0
  231. package/packages/core/src/gateway/routes/meeting.ts +232 -0
  232. package/packages/core/src/gateway/routes/models.ts +163 -0
  233. package/packages/core/src/gateway/routes/multimodal.ts +93 -0
  234. package/packages/core/src/gateway/routes/providers.ts +220 -0
  235. package/packages/core/src/gateway/routes/setup.ts +441 -0
  236. package/packages/core/src/gateway/routes/skills.ts +115 -0
  237. package/packages/core/src/gateway/routes/system.ts +469 -0
  238. package/packages/core/src/gateway/routes/tasks.ts +44 -0
  239. package/packages/core/src/gateway/routes/tools.ts +59 -0
  240. package/packages/core/src/gateway/routes/tts-local.ts +388 -0
  241. package/packages/core/src/gateway/routes/users.ts +122 -0
  242. package/packages/core/src/gateway/routes/voice.ts +189 -0
  243. package/packages/core/src/gateway/routes/workspace.ts +281 -0
  244. package/packages/core/src/gateway/server.ts +2744 -0
  245. package/packages/core/src/gateway/session.ts +95 -0
  246. package/packages/core/src/gateway/slash-commands.ts +207 -0
  247. package/packages/core/src/gateway/tts/README.md +94 -0
  248. package/packages/core/src/gateway/tts/package.json +25 -0
  249. package/packages/core/src/gateway/tts/src/client.ts +59 -0
  250. package/packages/core/src/gateway/tts/src/detect.ts +42 -0
  251. package/packages/core/src/gateway/tts/src/index.ts +15 -0
  252. package/packages/core/src/gateway/tts/src/install.ts +129 -0
  253. package/packages/core/src/gateway/tts/src/models.ts +50 -0
  254. package/packages/core/src/gateway/tts/src/server.ts +252 -0
  255. package/packages/core/src/gateway/tts/voices/.gitkeep +0 -0
  256. package/packages/core/src/heartbeat/index.ts +157 -0
  257. package/packages/core/src/index.ts +56 -0
  258. package/packages/core/src/mcp/hot-reload.ts +148 -0
  259. package/packages/core/src/mcp/singleton.ts +21 -0
  260. package/packages/core/src/mcp/tool-sync.ts +176 -0
  261. package/packages/core/src/multimodal/index.ts +2 -0
  262. package/packages/core/src/multimodal/types.ts +28 -0
  263. package/packages/core/src/multimodal/vision-service.ts +283 -0
  264. package/packages/core/src/plugins/api.ts +128 -0
  265. package/packages/core/src/plugins/index.ts +2 -0
  266. package/packages/core/src/plugins/loader.ts +365 -0
  267. package/packages/core/src/resilience/circuit-breaker.ts +225 -0
  268. package/packages/core/src/scheduler/CronScheduler.ts +699 -0
  269. package/packages/core/src/scheduler/dag/AgentExecutor.ts +53 -0
  270. package/packages/core/src/scheduler/dag/DAGScheduler.ts +250 -0
  271. package/packages/core/src/scheduler/dag/EventBridge.ts +122 -0
  272. package/packages/core/src/scheduler/dag/TaskGraph.ts +192 -0
  273. package/packages/core/src/scheduler/dag/TaskNode.ts +97 -0
  274. package/packages/core/src/scheduler/dag/TaskResult.ts +22 -0
  275. package/packages/core/src/scheduler/dag/errors.ts +37 -0
  276. package/packages/core/src/scheduler/dag/index.ts +26 -0
  277. package/packages/core/src/scheduler/dag/presets/ResearchPreset.ts +97 -0
  278. package/packages/core/src/scheduler/dag/strategies/ParallelStrategy.ts +21 -0
  279. package/packages/core/src/scheduler/dag/strategies/PriorityStrategy.ts +46 -0
  280. package/packages/core/src/scheduler/index.ts +22 -0
  281. package/packages/core/src/scheduler/integration.ts +237 -0
  282. package/packages/core/src/scheduler/types.ts +164 -0
  283. package/packages/core/src/security/google-chat.ts +269 -0
  284. package/packages/core/src/security/index.ts +192 -0
  285. package/packages/core/src/security/pairing.ts +250 -0
  286. package/packages/core/src/security/rate-limit.ts +270 -0
  287. package/packages/core/src/security/signal.ts +321 -0
  288. package/packages/core/src/state/store.ts +312 -0
  289. package/packages/core/src/storage/crypto.ts +197 -0
  290. package/packages/core/src/storage/migrate.ts +147 -0
  291. package/packages/core/src/storage/onboarding.ts +1506 -0
  292. package/packages/core/src/storage/schema.ts +666 -0
  293. package/packages/core/src/storage/seed.ts +628 -0
  294. package/packages/core/src/storage/sqlite.ts +407 -0
  295. package/packages/core/src/storage/usage.ts +374 -0
  296. package/packages/core/src/tool-runtime/index.ts +502 -0
  297. package/packages/core/src/tool-runtime/tool-worker.ts +125 -0
  298. package/packages/core/src/tools/agents/get-available-models.ts +118 -0
  299. package/packages/core/src/tools/agents/index.ts +610 -0
  300. package/packages/core/src/tools/canvas/index.ts +420 -0
  301. package/packages/core/src/tools/cli/index.ts +142 -0
  302. package/packages/core/src/tools/core/index.ts +478 -0
  303. package/packages/core/src/tools/cron/index.ts +635 -0
  304. package/packages/core/src/tools/filesystem/fs-delete.ts +78 -0
  305. package/packages/core/src/tools/filesystem/fs-edit.ts +106 -0
  306. package/packages/core/src/tools/filesystem/fs-exists.ts +63 -0
  307. package/packages/core/src/tools/filesystem/fs-glob.ts +108 -0
  308. package/packages/core/src/tools/filesystem/fs-list.ts +129 -0
  309. package/packages/core/src/tools/filesystem/fs-read.ts +72 -0
  310. package/packages/core/src/tools/filesystem/fs-write.ts +67 -0
  311. package/packages/core/src/tools/filesystem/index.ts +34 -0
  312. package/packages/core/src/tools/filesystem/workspace-guard.ts +62 -0
  313. package/packages/core/src/tools/index.ts +197 -0
  314. package/packages/core/src/tools/meeting/index.ts +363 -0
  315. package/packages/core/src/tools/office/index.ts +47 -0
  316. package/packages/core/src/tools/office/office-escribir-docx.ts +192 -0
  317. package/packages/core/src/tools/office/office-escribir-pdf.ts +172 -0
  318. package/packages/core/src/tools/office/office-escribir-pptx.ts +174 -0
  319. package/packages/core/src/tools/office/office-escribir-xlsx.ts +116 -0
  320. package/packages/core/src/tools/office/office-leer-docx.ts +93 -0
  321. package/packages/core/src/tools/office/office-leer-pdf.ts +114 -0
  322. package/packages/core/src/tools/office/office-leer-pptx.ts +136 -0
  323. package/packages/core/src/tools/office/office-leer-xlsx.ts +124 -0
  324. package/packages/core/src/tools/types.ts +39 -0
  325. package/packages/core/src/tools/voice/index.ts +104 -0
  326. package/packages/core/src/tools/web/browser-click.ts +78 -0
  327. package/packages/core/src/tools/web/browser-extract.ts +139 -0
  328. package/packages/core/src/tools/web/browser-navigate.ts +106 -0
  329. package/packages/core/src/tools/web/browser-screenshot.ts +87 -0
  330. package/packages/core/src/tools/web/browser-script.ts +88 -0
  331. package/packages/core/src/tools/web/browser-service.ts +554 -0
  332. package/packages/core/src/tools/web/browser-type.ts +101 -0
  333. package/packages/core/src/tools/web/browser-wait.ts +136 -0
  334. package/packages/core/src/tools/web/index.ts +41 -0
  335. package/packages/core/src/tools/web/web-fetch.ts +78 -0
  336. package/packages/core/src/tools/web/web-search.ts +123 -0
  337. package/packages/core/src/utils/benchmark.ts +80 -0
  338. package/packages/core/src/utils/crypto.ts +73 -0
  339. package/packages/core/src/utils/date.ts +42 -0
  340. package/packages/core/src/utils/index.ts +5 -0
  341. package/packages/core/src/utils/logger.ts +389 -0
  342. package/packages/core/src/utils/retry.ts +70 -0
  343. package/packages/core/src/utils/toon.ts +253 -0
  344. package/packages/core/src/voice/index.ts +643 -0
  345. package/packages/mcp/src/config.ts +13 -0
  346. package/packages/mcp/src/index.ts +1 -0
  347. package/packages/mcp/src/logger.ts +47 -0
  348. package/packages/mcp/src/manager.ts +439 -0
  349. package/packages/mcp/src/transports/index.ts +67 -0
  350. package/packages/mcp/src/transports/sse.ts +238 -0
  351. package/packages/mcp/src/transports/websocket.ts +159 -0
  352. package/packages/skills/src/bundled/agents/agent_spawner/SKILL.md +167 -0
  353. package/packages/skills/src/bundled/agents/code_delegator/SKILL.md +156 -0
  354. package/packages/skills/src/bundled/agents/memory_manager/SKILL.md +143 -0
  355. package/packages/skills/src/bundled/agents/research_and_remember/SKILL.md +139 -0
  356. package/packages/skills/src/bundled/agents/task_orchestrator/SKILL.md +198 -0
  357. package/packages/skills/src/bundled/canvas/a2ui_dashboard/SKILL.md +176 -0
  358. package/packages/skills/src/bundled/canvas/a2ui_form/SKILL.md +202 -0
  359. package/packages/skills/src/bundled/canvas/a2ui_interactive/SKILL.md +206 -0
  360. package/packages/skills/src/bundled/canvas/canvas_dashboard/SKILL.md +146 -0
  361. package/packages/skills/src/bundled/canvas/canvas_interact/SKILL.md +148 -0
  362. package/packages/skills/src/bundled/canvas/canvas_report/SKILL.md +146 -0
  363. package/packages/skills/src/bundled/cli/cli_pipeline/SKILL.md +136 -0
  364. package/packages/skills/src/bundled/cli/cli_safe_exec/SKILL.md +125 -0
  365. package/packages/skills/src/bundled/cron_manager/SKILL.md +188 -0
  366. package/packages/skills/src/bundled/cron_reminder/SKILL.md +112 -0
  367. package/packages/skills/src/bundled/filesystem/file_manager/SKILL.md +118 -0
  368. package/packages/skills/src/bundled/filesystem/file_read_and_summarize/SKILL.md +108 -0
  369. package/packages/skills/src/bundled/filesystem/file_writer/SKILL.md +135 -0
  370. package/packages/skills/src/bundled/meeting/meeting_transcription/SKILL.md +213 -0
  371. package/packages/skills/src/bundled/office/office_document_manager/SKILL.md +262 -0
  372. package/packages/skills/src/bundled/search_knowledge/busqueda_fts5/SKILL.md +74 -0
  373. package/packages/skills/src/bundled/voice/voice_assistant/SKILL.md +174 -0
  374. package/packages/skills/src/bundled/voice/voice_input/SKILL.md +146 -0
  375. package/packages/skills/src/bundled/voice/voice_output/SKILL.md +151 -0
  376. package/packages/skills/src/bundled/web/browser_automate/SKILL.md +120 -0
  377. package/packages/skills/src/bundled/web/browser_scrape/SKILL.md +109 -0
  378. package/packages/skills/src/bundled/web/web_monitor/SKILL.md +127 -0
  379. package/packages/skills/src/bundled/web/web_research/SKILL.md +119 -0
  380. package/packages/skills/src/bundled-data.generated.ts +1964 -0
  381. package/packages/skills/src/index.ts +1 -0
  382. package/packages/skills/src/loader.ts +388 -0
  383. package/dist/ui/assets/AgentNewPage-GB-tVN50.js +0 -1
  384. package/dist/ui/assets/BridgePage-DDcDILKu.js +0 -1
  385. package/dist/ui/assets/CanvasPage-oOk2sGOD.js +0 -33
  386. package/dist/ui/assets/DashboardPage-DV_2qWYJ.js +0 -6
  387. package/dist/ui/assets/LogsPage-DayYjh01.js +0 -1
  388. package/dist/ui/assets/MeetingPage-C01uPuqj.js +0 -1
  389. package/dist/ui/assets/ProjectsPage-B8_am_Ib.js +0 -1
  390. package/dist/ui/assets/ProvidersPage-DBzi66e4.js +0 -1
  391. package/dist/ui/assets/SettingsPage-CFA_Tknl.js +0 -9
  392. package/dist/ui/assets/SetupPage-BrUWbhvT.js +0 -1
  393. package/dist/ui/assets/accordion-DdAEfIXR.js +0 -1
  394. package/dist/ui/assets/chevron-down-DIosfU_U.js +0 -1
  395. package/dist/ui/assets/chevron-up-CI-W21Fy.js +0 -1
  396. package/dist/ui/assets/circle-S0-ouLz-.js +0 -1
  397. package/dist/ui/assets/circle-minus-CE0iJrl8.js +0 -1
  398. package/dist/ui/assets/circle-x-jUJ5zZvQ.js +0 -1
  399. package/dist/ui/assets/dropdown-menu-C2CXM1VE.js +0 -1
  400. package/dist/ui/assets/index-BN0875JH.css +0 -2
  401. package/dist/ui/assets/index-CH6sBa3Q.js +0 -116
  402. package/dist/ui/assets/pencil-5VdSj-h5.js +0 -1
  403. package/dist/ui/assets/progress-JN30I5fF.js +0 -1
  404. package/dist/ui/assets/scroll-area-BQQPitM8.js +0 -1
  405. package/dist/ui/assets/search-ChPgnVKj.js +0 -1
  406. package/dist/ui/assets/switch-C7W2-KEx.js +0 -1
  407. package/dist/ui/assets/terminal-C-R5Fckz.js +0 -1
  408. package/dist/ui/assets/useProviders-TBnWn-Hq.js +0 -1
  409. /package/dist/ui/assets/{card-DFKnZ6ky.js → card-CNf6BS2e.js} +0 -0
  410. /package/dist/ui/assets/{circle-alert-KuAm2FWh.js → circle-alert-CyHDwUj8.js} +0 -0
  411. /package/dist/ui/assets/{circle-check-6Ard1-2z.js → circle-check-Bb54Ebmu.js} +0 -0
  412. /package/dist/ui/assets/{cpu-KDy6-FAI.js → cpu-Cdgc_B1K.js} +0 -0
  413. /package/dist/ui/assets/{download-Cjbk4Rek.js → download-C3ifGMjJ.js} +0 -0
  414. /package/dist/ui/assets/{external-link-HtrFM63g.js → external-link-BvxYeTP1.js} +0 -0
  415. /package/dist/ui/assets/{eye-D1dB40_o.js → eye-DqNTU_GD.js} +0 -0
  416. /package/dist/ui/assets/{file-text-CE58EfH0.js → file-text-BT_9S9SM.js} +0 -0
  417. /package/dist/ui/assets/{folder-open-DIPKeiI_.js → folder-open-BhH8y9ac.js} +0 -0
  418. /package/dist/ui/assets/{format-BwdV8bB5.js → format-GVHeOyWI.js} +0 -0
  419. /package/dist/ui/assets/{gateway-url-D5uj6Nxg.js → gateway-url-COCbW0IR.js} +0 -0
  420. /package/dist/ui/assets/{gauge-DmQmJHEg.js → gauge-D_TMa4i9.js} +0 -0
  421. /package/dist/ui/assets/{globe-_hUGxQF4.js → globe-DeCQTCDJ.js} +0 -0
  422. /package/dist/ui/assets/{hexagon-BaNGQlQj.js → hexagon-DsGOUl-H.js} +0 -0
  423. /package/dist/ui/assets/{history-BfZVGlZa.js → history-BSG-Ypqf.js} +0 -0
  424. /package/dist/ui/assets/{info-CBZ5-AlC.js → info-NwLoa2Mj.js} +0 -0
  425. /package/dist/ui/assets/{key-Bv5DdTPh.js → key-3EP0dhkT.js} +0 -0
  426. /package/dist/ui/assets/{loader-circle-C4hhXLgp.js → loader-circle-CZNax6kS.js} +0 -0
  427. /package/dist/ui/assets/{lock-CkZYexqw.js → lock-Ei1_J-Nq.js} +0 -0
  428. /package/dist/ui/assets/{pause-Bpy1_s7y.js → pause-BUqah9Bi.js} +0 -0
  429. /package/dist/ui/assets/{play-Cj4osqJZ.js → play-NcZ4swwL.js} +0 -0
  430. /package/dist/ui/assets/{plus-BQhgZN3A.js → plus-CX1xyhp5.js} +0 -0
  431. /package/dist/ui/assets/{refresh-cw-BfREHVQM.js → refresh-cw-DaYdjQFk.js} +0 -0
  432. /package/dist/ui/assets/{save-FFTD4dMp.js → save-CUdYyHNy.js} +0 -0
  433. /package/dist/ui/assets/{settings-BdHKUL92.js → settings-Ds4SqD8s.js} +0 -0
  434. /package/dist/ui/assets/{sparkles-r4uJbJAl.js → sparkles-yUEb-7oH.js} +0 -0
  435. /package/dist/ui/assets/{square-G7Hyufqm.js → square-BD81nFtN.js} +0 -0
  436. /package/dist/ui/assets/{textarea-5kyuD04X.js → textarea-CXgXWKrT.js} +0 -0
  437. /package/dist/ui/assets/{trash-2-DXVBRWfh.js → trash-2-CNjMkoq6.js} +0 -0
  438. /package/dist/ui/assets/{triangle-alert-Bu5seg9O.js → triangle-alert-C9Y8Ub4X.js} +0 -0
  439. /package/dist/ui/assets/{vendor-router-CCECILJ0.js → vendor-router-C9pIYwbJ.js} +0 -0
  440. /package/dist/ui/assets/{volume-2-s9DuS696.js → volume-2-CeSXNDv4.js} +0 -0
  441. /package/dist/ui/assets/{zap-BPHZzXKV.js → zap-hlXjpSeA.js} +0 -0
@@ -1,6 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-S-ySWqyJ.js";import{_ as t,a as n,f as r,l as i,m as a,o,p as s,r as c,s as l,t as u,u as d}from"./vendor-charts-Bu2lyBKP.js";import{i as f,n as p,o as m,t as h}from"./vendor-query-DsWPbQdG.js";import{r as g}from"./utils-3pnRFmFe.js";import{t as _}from"./activity-c3pNngT_.js";import{t as v}from"./circle-check-6Ard1-2z.js";import{t as y}from"./download-Cjbk4Rek.js";import{t as b}from"./external-link-HtrFM63g.js";import{t as ee}from"./gauge-DmQmJHEg.js";import{t as x}from"./info-CBZ5-AlC.js";import{t as S}from"./loader-circle-C4hhXLgp.js";import{t as C}from"./triangle-alert-Bu5seg9O.js";import{t as te}from"./zap-BPHZzXKV.js";import{G as ne,J as re,K as ie,M as ae,W as w,Y as T,h as E,p as D,t as O,x as k}from"./index-CH6sBa3Q.js";import{t as A}from"./badge-Cli1jnH5.js";import{a as j,n as M,o as N,r as P,t as F}from"./card-DFKnZ6ky.js";import{t as oe}from"./progress-JN30I5fF.js";import{a as I,c as L,i as R,n as z,o as B,r as V,s as H,t as U}from"./alert-dialog-CRdMkkmk.js";var W=g(`ArrowUpRight`,[[`path`,{d:`M7 7h10v10`,key:`1tivn9`}],[`path`,{d:`M7 17 17 7`,key:`1vkiza`}]]),G=g(`CircleArrowUp`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m16 12-4-4-4 4`,key:`177agl`}],[`path`,{d:`M12 16V8`,key:`1sbj14`}]]),K=g(`DollarSign`,[[`line`,{x1:`12`,x2:`12`,y1:`2`,y2:`22`,key:`7eqyqh`}],[`path`,{d:`M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6`,key:`1b0p4s`}]]),se=g(`HardDrive`,[[`line`,{x1:`22`,x2:`2`,y1:`12`,y2:`12`,key:`1y58io`}],[`path`,{d:`M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`,key:`oot6mr`}],[`line`,{x1:`6`,x2:`6.01`,y1:`16`,y2:`16`,key:`sgf278`}],[`line`,{x1:`10`,x2:`10.01`,y1:`16`,y2:`16`,key:`1l4acy`}]]),ce=g(`Hash`,[[`line`,{x1:`4`,x2:`20`,y1:`9`,y2:`9`,key:`4lhtct`}],[`line`,{x1:`4`,x2:`20`,y1:`15`,y2:`15`,key:`vyu0kd`}],[`line`,{x1:`10`,x2:`8`,y1:`3`,y2:`21`,key:`1ggp8o`}],[`line`,{x1:`16`,x2:`14`,y1:`3`,y2:`21`,key:`weycgp`}]]),le=g(`MemoryStick`,[[`path`,{d:`M6 19v-3`,key:`1nvgqn`}],[`path`,{d:`M10 19v-3`,key:`iu8nkm`}],[`path`,{d:`M14 19v-3`,key:`kcehxu`}],[`path`,{d:`M18 19v-3`,key:`1vh91z`}],[`path`,{d:`M8 11V9`,key:`63erz4`}],[`path`,{d:`M16 11V9`,key:`fru6f3`}],[`path`,{d:`M12 11V9`,key:`ha00sb`}],[`path`,{d:`M2 15h20`,key:`16ne18`}],[`path`,{d:`M2 7a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v1.1a2 2 0 0 0 0 3.837V17a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-5.1a2 2 0 0 0 0-3.837Z`,key:`lhddv3`}]]),ue=g(`TrendingUp`,[[`polyline`,{points:`22 7 13.5 15.5 8.5 10.5 2 17`,key:`126l90`}],[`polyline`,{points:`16 7 22 7 22 13`,key:`kwv8wd`}]]),q=e(t(),1);function de(){let{agents:e,isLoading:t,error:n,fetchAgents:r,createAgent:i,updateAgent:a,deleteAgent:o}=O(),[s,c]=(0,q.useState)(`all`);return(0,q.useEffect)(()=>{r()},[r]),{agents:(0,q.useMemo)(()=>Array.isArray(e)?s===`all`?e:e.filter(e=>e.status===s):[],[e,s]),allAgents:e||[],filter:s,setFilter:c,createAgent:i,updateAgent:a,deleteAgent:o,isLoading:t,error:n,refreshAgents:r}}var J=m();function fe(e){return e<50?`#22c55e`:e<80?`#eab308`:`#ef4444`}function pe(){let[e,t]=(0,q.useState)(()=>{let e=new Date;return Array.from({length:12},(t,n)=>({time:new Date(e.getTime()-(11-n)*5e3).toLocaleTimeString(`es`,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`}),msgs:0,rss:0}))}),[r,i]=(0,q.useState)([]),{data:a}=p({queryKey:[`system-stats`],queryFn:()=>D(`/api/system-stats`),refetchInterval:5e3}),c=(0,q.useRef)(a);(0,q.useEffect)(()=>{c.current=a},[a]),(0,q.useEffect)(()=>{let e=setInterval(()=>{let e=c.current;if(!e)return;let n=new Date().toLocaleTimeString(`es`,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`});t(t=>[...t,{time:n,msgs:e.recentMessages,rss:e.memory.rss}].slice(-20))},5e3);return()=>clearInterval(e)},[]);let d=a?.memory.rss??0,f=a?.memory.heapUsed??0,m=a?.memory.external??0,h=a?.recentMessages??0;return(0,J.jsxs)(`div`,{className:`flex flex-col gap-4 mb-4`,children:[(0,J.jsxs)(F,{className:`overflow-hidden border-primary/10`,children:[(0,J.jsx)(j,{className:`pb-2 bg-gradient-to-r from-primary/5 to-transparent`,children:(0,J.jsx)(`div`,{className:`flex items-center justify-between`,children:(0,J.jsxs)(N,{className:`text-base flex items-center gap-2`,children:[(0,J.jsx)(ee,{className:`h-4 w-4 text-primary`}),`Monitor del Proceso Hive`]})})}),(0,J.jsxs)(M,{className:`grid gap-4 sm:grid-cols-2 lg:grid-cols-4 pt-4`,children:[(0,J.jsx)(Y,{icon:ne,label:`Actividad reciente`,value:`${h}`,subValue:`mensajes últimos 5 min`,color:h>0?`#22c55e`:`hsl(var(--muted-foreground))`,progress:Math.min(100,h*10)}),(0,J.jsx)(Y,{icon:se,label:`Memoria Hive (RSS)`,value:`${d} MB`,subValue:`Heap JS: ${f} MB usados`,color:fe(Math.min(100,Math.round(d/1024*100))),progress:Math.min(100,Math.round(d/1024*100))}),(0,J.jsx)(Y,{icon:le,label:`Heap JS`,value:`${f} MB`,subValue:`External: ${m} MB`,color:`#3b82f6`,progress:Math.min(100,Math.round(f/512*100))}),(0,J.jsx)(Y,{icon:w,label:`Sesiones WS activas`,value:`${a?.connections??0}`,subValue:`conexiones WebSocket`,color:`#a855f7`,progress:Math.min(100,(a?.connections??0)*10)})]})]}),(0,J.jsxs)(F,{className:`border-primary/10`,children:[(0,J.jsx)(j,{className:`pb-2`,children:(0,J.jsxs)(N,{className:`text-sm flex items-center gap-2`,children:[(0,J.jsx)(_,{className:`h-4 w-4 text-primary`}),`Historial — `,(0,J.jsx)(`span`,{className:`text-green-400`,children:`Mensajes`}),` · `,(0,J.jsx)(`span`,{className:`text-purple-400`,children:`RSS MB`})]})}),(0,J.jsx)(M,{className:`h-[160px]`,children:(0,J.jsx)(s,{width:`100%`,height:`100%`,children:(0,J.jsxs)(u,{data:e,children:[(0,J.jsxs)(`defs`,{children:[(0,J.jsxs)(`linearGradient`,{id:`gMsgs`,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,J.jsx)(`stop`,{offset:`5%`,stopColor:`#22c55e`,stopOpacity:.3}),(0,J.jsx)(`stop`,{offset:`95%`,stopColor:`#22c55e`,stopOpacity:0})]}),(0,J.jsxs)(`linearGradient`,{id:`gHeap`,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,J.jsx)(`stop`,{offset:`5%`,stopColor:`#8b5cf6`,stopOpacity:.3}),(0,J.jsx)(`stop`,{offset:`95%`,stopColor:`#8b5cf6`,stopOpacity:0})]})]}),(0,J.jsx)(o,{dataKey:`time`,axisLine:!1,tickLine:!1,tick:{fill:`hsl(var(--muted-foreground))`,fontSize:9},interval:`preserveStartEnd`}),(0,J.jsx)(n,{axisLine:!1,tickLine:!1,tick:{fill:`hsl(var(--muted-foreground))`,fontSize:9}}),(0,J.jsx)(l,{type:`monotone`,dataKey:`msgs`,stroke:`#22c55e`,strokeWidth:2,fillOpacity:1,fill:`url(#gMsgs)`,name:`Mensajes`}),(0,J.jsx)(l,{type:`monotone`,dataKey:`rss`,stroke:`#8b5cf6`,strokeWidth:2,fillOpacity:1,fill:`url(#gHeap)`,name:`RSS MB`})]})})})]})]})}function Y({icon:e,label:t,value:n,subValue:r,color:i,progress:a}){return(0,J.jsxs)(`div`,{className:`rounded-lg border bg-card/50 p-3 space-y-2`,children:[(0,J.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,J.jsx)(`span`,{style:{color:i},children:(0,J.jsx)(e,{className:`h-4 w-4`})}),(0,J.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground`,children:t})]}),(0,J.jsx)(`span`,{className:`text-lg font-bold font-mono`,style:{color:i},children:n})]}),(0,J.jsxs)(`div`,{className:`space-y-1`,children:[(0,J.jsx)(`div`,{className:`h-1.5 w-full rounded-full bg-muted overflow-hidden`,children:(0,J.jsx)(`div`,{className:`h-full rounded-full transition-all duration-500`,style:{width:`${Math.min(a,100)}%`,backgroundColor:i}})}),(0,J.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:r})]})]})}var X={anthropic:`#d97706`,openai:`#10b981`,google:`#3b82f6`,gemini:`#3b82f6`,deepseek:`#8b5cf6`,kimi:`#ec4899`,ollama:`#14b8a6`,openrouter:`#f59e0b`,mistral:`#6366f1`};function Z(e){return e>=1e6?(e/1e6).toFixed(2)+`M`:e>=1e3?(e/1e3).toFixed(1)+`K`:e.toString()}function Q(e){return e>=1?`$`+e.toFixed(2):e>=.01?`$`+e.toFixed(3):e>0?`$`+e.toFixed(5):`$0.00`}function $(e){return e>=10?e.toFixed(1)+`%`:e>=1?e.toFixed(2)+`%`:e>0?e.toFixed(3)+`%`:`0%`}function me(){let[e,t]=(0,q.useState)(24),{data:i,isLoading:l}=p({queryKey:[`usage-stats`,e],queryFn:async()=>await D(`/api/usage-stats?hours=${e}`),refetchInterval:6e4});if(l&&!i)return(0,J.jsxs)(F,{className:`border-primary/10`,children:[(0,J.jsx)(j,{children:(0,J.jsxs)(N,{className:`flex items-center gap-2`,children:[(0,J.jsx)(K,{className:`h-5 w-5 text-primary`}),`Uso y Costos de API`]})}),(0,J.jsx)(M,{children:(0,J.jsx)(`div`,{className:`h-40 flex items-center justify-center text-muted-foreground animate-pulse`,children:`Cargando estadísticas de uso...`})})]});let u=i&&(i.totalTokens>0||i.totalCostUsd>0),f=i?Object.entries(i.byProvider).map(([e,t])=>({name:e.charAt(0).toUpperCase()+e.slice(1),value:t.tokens,cost:t.costUsd,color:X[e.toLowerCase()]||`#6b7280`})):[],m=i?Object.entries(i.byModel).slice(0,8).map(([e,t])=>({name:e.length>20?e.slice(0,18)+`...`:e,tokens:t.tokens,cost:t.costUsd,fullName:e})):[];return(0,J.jsxs)(F,{className:`border-primary/10`,children:[(0,J.jsx)(j,{className:`pb-2`,children:(0,J.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,J.jsxs)(`div`,{children:[(0,J.jsxs)(N,{className:`text-base flex items-center gap-2`,children:[(0,J.jsx)(K,{className:`h-5 w-5 text-primary`}),`Uso y Costos de API`]}),(0,J.jsx)(P,{children:`Tokens consumidos y costos por provider/modelo`})]}),(0,J.jsx)(`div`,{className:`flex gap-1`,children:[6,24,168].map(n=>(0,J.jsx)(`button`,{onClick:()=>t(n),className:`px-2 py-1 text-xs rounded-md transition-colors ${e===n?`bg-primary text-primary-foreground`:`bg-muted hover:bg-muted/80`}`,children:n===6?`6h`:n===24?`24h`:`7d`},n))})]})}),(0,J.jsxs)(M,{className:`space-y-4`,children:[(0,J.jsxs)(`div`,{className:`rounded-lg border p-3 ${i?.toonSavedTokens?`border-emerald-500/30 bg-emerald-500/5`:`bg-card/50`}`,children:[(0,J.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-muted-foreground`,children:[(0,J.jsx)(te,{className:`h-3 w-3 ${i?.toonSavedTokens?`text-emerald-400`:``}`}),(0,J.jsx)(`span`,{className:`font-medium`,children:`TOON Optimización de Tokens`})]}),i?.toonSavingsPercent&&i.toonSavingsPercent>0?(0,J.jsxs)(`span`,{className:`text-xs font-bold text-emerald-400`,children:[$(i.toonSavingsPercent),` reducción`]}):null]}),(0,J.jsxs)(`div`,{className:`mt-3 grid grid-cols-2 md:grid-cols-4 gap-3`,children:[(0,J.jsxs)(`div`,{className:`bg-emerald-500/5 rounded-md p-2`,children:[(0,J.jsx)(`div`,{className:`text-xs text-muted-foreground mb-1`,children:`Tokens Ahorrados`}),(0,J.jsx)(`div`,{className:`text-lg font-bold ${i?.toonSavedTokens?`text-emerald-400`:`text-muted-foreground`}`,children:i?Z(i.toonSavedTokens):`—`})]}),(0,J.jsxs)(`div`,{className:`bg-emerald-500/5 rounded-md p-2`,children:[(0,J.jsx)(`div`,{className:`text-xs text-muted-foreground mb-1`,children:`Costo Ahorrado`}),(0,J.jsx)(`div`,{className:`text-lg font-bold text-emerald-400`,children:i?Q(i.toonSavedCost):`—`})]}),(0,J.jsxs)(`div`,{className:`bg-emerald-500/5 rounded-md p-2`,children:[(0,J.jsx)(`div`,{className:`text-xs text-muted-foreground mb-1`,children:`Bytes Ahorrados`}),(0,J.jsx)(`div`,{className:`text-lg font-bold text-emerald-400`,children:i&&i.toonSavedBytes>0?Z(i.toonSavedBytes):`—`})]}),(0,J.jsxs)(`div`,{className:`bg-emerald-500/5 rounded-md p-2`,children:[(0,J.jsx)(`div`,{className:`text-xs text-muted-foreground mb-1`,children:`Reducción Bytes`}),(0,J.jsx)(`div`,{className:`text-lg font-bold text-emerald-400`,children:i?.toonSavedBytesPercent&&i.toonSavedBytesPercent>0?$(i.toonSavedBytesPercent):`—`})]})]}),i&&(i.toonJsonTokens>0||i.toonToonTokens>0)&&(0,J.jsx)(`div`,{className:`mt-3 pt-3 border-t border-emerald-500/20`,children:(0,J.jsxs)(`div`,{className:`flex items-center justify-between text-xs`,children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,J.jsxs)(`span`,{className:`text-muted-foreground`,children:[(0,J.jsx)(`span`,{className:`text-muted-foreground`,children:`JSON:`}),` `,(0,J.jsx)(`span`,{className:`font-medium`,children:i.toonJsonTokens>0?Z(i.toonJsonTokens):`—`}),` `,(0,J.jsx)(`span`,{className:`text-muted-foreground`,children:`tokens`})]}),(0,J.jsx)(`span`,{className:`text-muted-foreground`,children:`→`}),(0,J.jsxs)(`span`,{className:`text-muted-foreground`,children:[(0,J.jsx)(`span`,{className:`text-emerald-400`,children:`TOON:`}),` `,(0,J.jsx)(`span`,{className:`font-medium text-emerald-400`,children:i.toonToonTokens>0?Z(i.toonToonTokens):`—`}),` `,(0,J.jsx)(`span`,{className:`text-muted-foreground`,children:`tokens`})]})]}),i?.toonSavingsPercent&&i.toonSavingsPercent>0?(0,J.jsxs)(`span`,{className:`text-xs font-bold text-emerald-400`,children:[$(i.toonSavingsPercent),` menos tokens`]}):null]})}),i&&!i.toonSavedTokens&&(0,J.jsx)(`div`,{className:`mt-2 text-xs text-muted-foreground italic`,children:`Sin optimizaciones TOON registradas aún`})]}),u?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2 lg:grid-cols-4`,children:[(0,J.jsxs)(`div`,{className:`rounded-lg border bg-card/50 p-3`,children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-muted-foreground mb-1`,children:[(0,J.jsx)(K,{className:`h-3 w-3`}),`Costo Total`]}),(0,J.jsx)(`div`,{className:`text-2xl font-bold text-green-500`,children:Q(i.totalCostUsd)})]}),(0,J.jsxs)(`div`,{className:`rounded-lg border bg-card/50 p-3`,children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-muted-foreground mb-1`,children:[(0,J.jsx)(ce,{className:`h-3 w-3`}),`Total Tokens`]}),(0,J.jsx)(`div`,{className:`text-2xl font-bold`,children:Z(i.totalTokens)})]}),(0,J.jsxs)(`div`,{className:`rounded-lg border bg-card/50 p-3`,children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-muted-foreground mb-1`,children:[(0,J.jsx)(ue,{className:`h-3 w-3`}),`Input / Output`]}),(0,J.jsxs)(`div`,{className:`text-lg font-semibold`,children:[(0,J.jsx)(`span`,{className:`text-blue-500`,children:Z(i.totalInputTokens)}),(0,J.jsx)(`span`,{className:`text-muted-foreground`,children:` / `}),(0,J.jsx)(`span`,{className:`text-purple-500`,children:Z(i.totalOutputTokens)})]})]}),(0,J.jsxs)(`div`,{className:`rounded-lg border bg-card/50 p-3`,children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-muted-foreground mb-1`,children:[(0,J.jsx)(w,{className:`h-3 w-3`}),`Providers`]}),(0,J.jsx)(`div`,{className:`text-2xl font-bold`,children:Object.keys(i.byProvider).length})]})]}),(0,J.jsxs)(`div`,{className:`grid gap-4 lg:grid-cols-2`,children:[(0,J.jsxs)(`div`,{children:[(0,J.jsxs)(`h4`,{className:`text-sm font-medium mb-2 flex items-center gap-2`,children:[(0,J.jsx)(w,{className:`h-4 w-4 text-muted-foreground`}),`Por Provider`]}),(0,J.jsx)(`div`,{className:`h-[180px]`,children:(0,J.jsx)(s,{width:`100%`,height:`100%`,children:(0,J.jsxs)(c,{data:f,layout:`vertical`,children:[(0,J.jsx)(o,{type:`number`,hide:!0}),(0,J.jsx)(n,{type:`category`,dataKey:`name`,axisLine:!1,tickLine:!1,tick:{fill:`hsl(var(--muted-foreground))`,fontSize:11},width:70}),(0,J.jsx)(a,{contentStyle:{backgroundColor:`hsl(var(--card))`,border:`1px solid hsl(var(--border))`,borderRadius:`8px`},formatter:(e,t)=>[t===`cost`?Q(e):Z(e),t===`cost`?`Costo`:`Tokens`]}),(0,J.jsx)(d,{dataKey:`value`,radius:[0,4,4,0],barSize:16,children:f.map(e=>(0,J.jsx)(r,{fill:e.color},e.name))})]})})})]}),(0,J.jsxs)(`div`,{children:[(0,J.jsxs)(`h4`,{className:`text-sm font-medium mb-2 flex items-center gap-2`,children:[(0,J.jsx)(T,{className:`h-4 w-4 text-muted-foreground`}),`Por Modelo (Top 8)`]}),(0,J.jsx)(`div`,{className:`h-[180px]`,children:(0,J.jsx)(s,{width:`100%`,height:`100%`,children:(0,J.jsxs)(c,{data:m,children:[(0,J.jsx)(o,{dataKey:`name`,axisLine:!1,tickLine:!1,tick:{fill:`hsl(var(--muted-foreground))`,fontSize:10},angle:-45,textAnchor:`end`,height:60}),(0,J.jsx)(n,{axisLine:!1,tickLine:!1,tick:{fill:`hsl(var(--muted-foreground))`,fontSize:10}}),(0,J.jsx)(a,{contentStyle:{backgroundColor:`hsl(var(--card))`,border:`1px solid hsl(var(--border))`,borderRadius:`8px`},formatter:e=>Q(e),labelFormatter:e=>m.find(t=>t.name===e)?.fullName||e}),(0,J.jsx)(d,{dataKey:`cost`,radius:[4,4,0,0],children:m.map(e=>(0,J.jsx)(r,{fill:X[e.fullName.split(`-`)[0]?.toLowerCase()]||`#6b7280`},e.fullName))})]})})})]})]}),f.length>0&&(0,J.jsxs)(`div`,{children:[(0,J.jsx)(`h4`,{className:`text-sm font-medium mb-2`,children:`Detalle por Provider`}),(0,J.jsx)(`div`,{className:`rounded-lg border overflow-hidden`,children:(0,J.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,J.jsx)(`thead`,{className:`bg-muted/50`,children:(0,J.jsxs)(`tr`,{children:[(0,J.jsx)(`th`,{className:`text-left p-2 font-medium`,children:`Provider`}),(0,J.jsx)(`th`,{className:`text-right p-2 font-medium`,children:`Input`}),(0,J.jsx)(`th`,{className:`text-right p-2 font-medium`,children:`Output`}),(0,J.jsx)(`th`,{className:`text-right p-2 font-medium`,children:`Total`}),(0,J.jsx)(`th`,{className:`text-right p-2 font-medium`,children:`Costo`})]})}),(0,J.jsx)(`tbody`,{children:Object.entries(i.byProvider).map(([e,t])=>(0,J.jsxs)(`tr`,{className:`border-t`,children:[(0,J.jsx)(`td`,{className:`p-2 font-medium`,children:e}),(0,J.jsx)(`td`,{className:`p-2 text-right text-blue-500`,children:Z(t.inputTokens)}),(0,J.jsx)(`td`,{className:`p-2 text-right text-purple-500`,children:Z(t.outputTokens)}),(0,J.jsx)(`td`,{className:`p-2 text-right`,children:Z(t.tokens)}),(0,J.jsx)(`td`,{className:`p-2 text-right font-medium text-green-500`,children:Q(t.costUsd)})]},e))})]})})]})]}):(0,J.jsx)(`div`,{className:`h-32 flex items-center justify-center text-muted-foreground`,children:(0,J.jsxs)(`div`,{className:`text-center`,children:[(0,J.jsx)(_,{className:`h-8 w-8 mx-auto mb-2 opacity-50`}),(0,J.jsx)(`p`,{children:`No hay datos de uso aún`}),(0,J.jsx)(`p`,{className:`text-xs`,children:`Los tokens se registrarán automáticamente`})]})})]})]})}function he(){let[e,t]=(0,q.useState)(!1),[n,r]=(0,q.useState)(0),[i,a]=(0,q.useState)([]),o=f(),{data:s,isLoading:c}=p({queryKey:[`version-check`],queryFn:()=>D(`/api/version`),refetchInterval:3e5,retry:2}),l=h({mutationFn:()=>D(`/api/update`,{method:`POST`,showLoader:`Actualizando Hive...`}),onSuccess:e=>{r(100),e.success?(a(e.instructions||[]),E.fire({title:`¡Actualización Completada!`,text:e.message||`Hive ha sido actualizado exitosamente.`,icon:`success`,confirmButtonText:`Continuar`})):(e.instructions&&a(e.instructions),E.fire({title:`Información de Actualización`,html:`
2
- <div class="text-left space-y-2">
3
- ${e.error?`<p class="mb-2">${e.error}</p>`:``}
4
- ${e.output?`<pre class="bg-muted p-2 rounded text-xs overflow-auto max-h-40">${e.output}</pre>`:``}
5
- </div>
6
- `,icon:e.instructions?`info`:`error`,confirmButtonText:`Entendido`})),setTimeout(()=>{o.invalidateQueries({queryKey:[`version-check`]})},2e3)},onError:e=>{r(0),console.error(`[UpdateChecker] Error:`,e)}}),u=()=>{t(!0)},d=()=>{t(!1),r(10),l.mutate();let e=setInterval(()=>{r(t=>t>=90?(clearInterval(e),t):t+10)},500)},m=e=>{switch(e){case`docker`:return`Docker`;case`binary`:return`Binario`;case`npm`:return`npm`;case`bun`:return`Bun`;default:return`Desconocida`}},g=()=>{if(!s)return null;switch(s.status){case`up-to-date`:return(0,J.jsxs)(A,{variant:`outline`,className:`flex items-center gap-1 bg-green-500/10 text-green-400 border-green-500/20`,children:[(0,J.jsx)(v,{className:`h-3 w-3`}),`Actualizado`]});case`update-available`:return(0,J.jsxs)(A,{className:`flex items-center gap-1 bg-blue-500 text-white border-blue-400 hover:bg-blue-600`,children:[(0,J.jsx)(G,{className:`h-3 w-3`}),`v`,s.latest,` disponible`]});case`checking`:return(0,J.jsxs)(A,{variant:`outline`,className:`flex items-center gap-1`,children:[(0,J.jsx)(S,{className:`h-3 w-3 animate-spin`}),`Verificando...`]});case`error`:return(0,J.jsxs)(A,{variant:`destructive`,className:`flex items-center gap-1`,children:[(0,J.jsx)(C,{className:`h-3 w-3`}),`Error`]})}},_=s?.status===`update-available`;return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(`div`,{className:`flex flex-col items-end gap-1`,children:[(0,J.jsx)(`span`,{className:`hive-label mb-1`,children:`Versión`}),(0,J.jsxs)(`div`,{className:`flex items-center gap-2`,children:[g(),s&&(0,J.jsxs)(`span`,{className:`text-xs text-white/40 font-mono`,children:[`v`,s.current,` · `,m(s.installationType)]})]})]}),_&&(0,J.jsx)(ae,{size:`sm`,onClick:u,disabled:l.isPending,className:`bg-blue-600 hover:bg-blue-700 text-white shadow-lg shadow-blue-500/20`,children:l.isPending?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(S,{className:`h-4 w-4 mr-2 animate-spin`}),`Actualizando...`]}):(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(y,{className:`h-4 w-4 mr-2`}),`Actualizar a v`,s.latest]})}),(0,J.jsx)(U,{open:e,onOpenChange:t,children:(0,J.jsxs)(R,{children:[(0,J.jsxs)(H,{children:[(0,J.jsxs)(L,{className:`flex items-center gap-2`,children:[(0,J.jsx)(y,{className:`h-5 w-5 text-blue-500`}),`Actualizar Hive`]}),(0,J.jsxs)(I,{className:`space-y-3`,children:[(0,J.jsxs)(`p`,{children:[`Se ha detectado una nueva versión disponible (`,(0,J.jsxs)(`strong`,{children:[`v`,s?.latest]}),`). Tu versión actual es `,(0,J.jsxs)(`strong`,{children:[`v`,s?.current]}),`.`]}),(0,J.jsx)(`div`,{className:`bg-muted p-3 rounded-lg space-y-2`,children:(0,J.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,J.jsx)(x,{className:`h-4 w-4 text-blue-500 mt-0.5`}),(0,J.jsxs)(`div`,{className:`text-sm`,children:[(0,J.jsxs)(`p`,{className:`font-semibold mb-1`,children:[`Tipo de instalación: `,m(s?.installationType)]}),s?.installationType===`docker`&&(0,J.jsx)(`p`,{className:`text-muted-foreground`,children:`Para Docker, deberás ejecutar manualmente los comandos en tu terminal.`}),s?.installationType===`binary`&&(0,J.jsx)(`p`,{className:`text-muted-foreground`,children:`Para el binario, serás redirigido a GitHub Releases para descargar la nueva versión.`}),(s?.installationType===`npm`||s?.installationType===`bun`)&&(0,J.jsx)(`p`,{className:`text-muted-foreground`,children:`La actualización se realizará automáticamente. Deberás reiniciar el gateway después.`})]})]})}),l.isPending&&(0,J.jsxs)(`div`,{className:`space-y-2`,children:[(0,J.jsxs)(`div`,{className:`flex items-center justify-between text-sm`,children:[(0,J.jsx)(`span`,{children:`Progreso de actualización...`}),(0,J.jsxs)(`span`,{className:`text-muted-foreground`,children:[n,`%`]})]}),(0,J.jsx)(oe,{value:n,className:`h-2`})]})]})]}),(0,J.jsxs)(B,{children:[(0,J.jsx)(V,{disabled:l.isPending,children:`Cancelar`}),(0,J.jsx)(z,{onClick:d,disabled:l.isPending,className:`bg-blue-600 hover:bg-blue-700`,children:l.isPending?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(S,{className:`h-4 w-4 mr-2 animate-spin`}),`Actualizando...`]}):(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(y,{className:`h-4 w-4 mr-2`}),`Confirmar actualización`]})})]})]})}),i.length>0&&(0,J.jsx)(U,{open:!0,onOpenChange:()=>a([]),children:(0,J.jsxs)(R,{children:[(0,J.jsxs)(H,{children:[(0,J.jsx)(L,{children:`Instrucciones de Actualización`}),(0,J.jsxs)(I,{className:`space-y-3`,children:[(0,J.jsx)(`p`,{children:`Sigue estos pasos para completar la actualización:`}),(0,J.jsx)(`ol`,{className:`list-decimal list-inside space-y-2 bg-muted p-4 rounded-lg`,children:i.map((e,t)=>(0,J.jsx)(`li`,{className:`text-sm`,children:e},t))}),(0,J.jsxs)(`div`,{className:`flex items-start gap-2 text-xs text-muted-foreground`,children:[(0,J.jsx)(b,{className:`h-4 w-4 mt-0.5`}),(0,J.jsx)(`p`,{children:`Después de completar los pasos, recarga esta página para ver la nueva versión.`})]})]})]}),(0,J.jsx)(B,{children:(0,J.jsx)(z,{children:`Entendido`})})]})})]})}function ge({icon:e,...t}){return(0,J.jsx)(e,{...t})}function _e(){let{status:e}=k(),{allAgents:t}=de(),{data:f}=p({queryKey:[`system-stats`],queryFn:()=>D(`/api/system-stats`),refetchInterval:5e3}),{data:m=[]}=p({queryKey:[`activity-stats`],queryFn:()=>D(`/api/activity-stats?hours=12`),refetchInterval:6e4}),h=(0,q.useMemo)(()=>t||[],[t]),g=[{label:`Agentes Activos`,value:h.length,icon:T,color:`text-blue-500`,trend:`${h.filter(e=>e.status===`active`||e.status===`thinking`).length} en uso`},{label:`Sesiones Canvas`,value:f?.connections??0,icon:ie,color:`text-orange-500`,trend:`Live`},{label:`Procesos Bridge`,value:h.filter(e=>e.status===`thinking`).length,icon:re,color:`text-purple-500`,trend:`Estable`},{label:`Mensajes / 1h`,value:m.at(-1)?.count??0,icon:_,color:`text-green-500`,trend:`Última hora`}],v=(0,q.useMemo)(()=>{let e=h.filter(e=>e.status===`idle`||e.status===`hibernated`).length,t=h.filter(e=>e.status===`active`).length,n=h.filter(e=>e.status===`thinking`).length,r=h.filter(e=>e.status===`error`).length;return[{name:`Idle`,value:e||0,color:`hsl(var(--muted))`},{name:`Active`,value:t||0,color:`hsl(var(--primary))`},{name:`Thinking`,value:n||0,color:`hsl(var(--accent))`},...r>0?[{name:`Error`,value:r,color:`#ef4444`}]:[]].filter(e=>e.value>0||e.name===`Idle`)},[h]),y=m.reduce((e,t)=>e+t.count,0);return f?.memory?.percentage&&Math.max(0,Math.round(100-f.memory.percentage*.3-(f.cpu||0)*.2)),(0,J.jsxs)(`div`,{className:`hive-page-container`,children:[(0,J.jsxs)(`div`,{className:`hive-page-header`,children:[(0,J.jsxs)(`div`,{className:`relative z-10`,children:[(0,J.jsxs)(`div`,{className:`hive-page-header__eyebrow`,children:[(0,J.jsx)(`div`,{className:`hive-page-header__dot`}),(0,J.jsx)(`span`,{className:`hive-page-header__label`,children:`SISTEMA OPERATIVO HIVE`})]}),(0,J.jsxs)(`h2`,{className:`hive-title-page`,children:[`Centro de `,(0,J.jsx)(`span`,{className:`hive-title-page__accent`,children:`Control`})]}),(0,J.jsx)(`p`,{className:`hive-subtitle`,children:`Monitoreo en tiempo real del enjambre y estado de los nodos cognitivos.`})]}),(0,J.jsxs)(`div`,{className:`flex items-center gap-6 relative z-10`,children:[(0,J.jsxs)(`div`,{className:`flex flex-col items-end`,children:[(0,J.jsx)(`span`,{className:`hive-label mb-1`,children:`Estado Hive`}),(0,J.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,J.jsx)(`div`,{className:e===`connected`?`hive-status-dot--active`:`hive-status-dot--disabled`}),(0,J.jsx)(`span`,{className:e===`connected`?`hive-status-label--active`:`hive-status-label--disabled`,children:e===`connected`?`EN LÍNEA`:`DESCONECTADO`})]})]}),(0,J.jsx)(`div`,{className:`h-10 w-px bg-white/10 hidden sm:block`}),(0,J.jsx)(he,{})]})]}),(0,J.jsx)(`div`,{className:`grid gap-6 sm:grid-cols-2 lg:grid-cols-4 mb-8`,children:g.map(e=>(0,J.jsxs)(`div`,{className:`hive-card hive-card--active group`,children:[(0,J.jsxs)(`div`,{className:`hive-card-body`,children:[(0,J.jsxs)(`div`,{className:`flex flex-row items-center justify-between mb-4`,children:[(0,J.jsx)(`span`,{className:`hive-title-section`,children:e.label}),(0,J.jsx)(`div`,{className:`p-2 rounded-lg bg-white/5 border border-white/5`,children:(0,J.jsx)(ge,{icon:e.icon,className:`h-4 w-4 ${e.color}`})})]}),(0,J.jsxs)(`div`,{className:`flex items-end justify-between`,children:[(0,J.jsxs)(`div`,{children:[(0,J.jsx)(`div`,{className:`text-3xl font-black text-white group-hover:text-blue-400 transition-colors`,children:e.value}),(0,J.jsxs)(`p`,{className:`text-[10px] font-bold text-white/30 uppercase tracking-widest mt-1 flex items-center gap-1`,children:[(0,J.jsx)(W,{className:`h-2.5 w-2.5 text-green-500`}),e.trend]})]}),(0,J.jsx)(`div`,{className:`h-8 w-8 rounded-full border border-white/5 bg-white/5 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity`,children:(0,J.jsx)(W,{className:`h-4 w-4 text-blue-400`})})]})]}),(0,J.jsx)(`div`,{className:`hive-strip--bottom`})]},e.label))}),(0,J.jsx)(pe,{}),(0,J.jsx)(me,{}),(0,J.jsxs)(`div`,{className:`grid gap-6 lg:grid-cols-3 mb-8`,children:[(0,J.jsx)(`div`,{className:`lg:col-span-2 hive-card`,children:(0,J.jsxs)(`div`,{className:`hive-card-body !pb-0`,children:[(0,J.jsxs)(`div`,{className:`flex items-center justify-between mb-6`,children:[(0,J.jsxs)(`div`,{children:[(0,J.jsx)(`h3`,{className:`hive-title-section`,children:`Actividad del Enjambre`}),(0,J.jsxs)(`p`,{className:`text-[10px] text-white/40 uppercase tracking-widest font-bold`,children:[`Últimas 12 horas · `,y,` mensajes`]})]}),(0,J.jsx)(_,{className:`h-5 w-5 text-blue-500 animate-pulse shadow-blue-glow`})]}),(0,J.jsx)(`div`,{className:`h-[280px] w-full`,children:m.length>0?(0,J.jsx)(s,{width:`100%`,height:`100%`,children:(0,J.jsxs)(u,{data:m,children:[(0,J.jsx)(`defs`,{children:(0,J.jsxs)(`linearGradient`,{id:`colorCount`,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,J.jsx)(`stop`,{offset:`5%`,stopColor:`#3b82f6`,stopOpacity:.2}),(0,J.jsx)(`stop`,{offset:`95%`,stopColor:`#3b82f6`,stopOpacity:0})]})}),(0,J.jsx)(i,{strokeDasharray:`3 3`,vertical:!1,stroke:`rgba(255,255,255,0.05)`}),(0,J.jsx)(o,{dataKey:`time`,axisLine:!1,tickLine:!1,tick:{fill:`rgba(255,255,255,0.3)`,fontSize:10,fontWeight:`bold`}}),(0,J.jsx)(n,{axisLine:!1,tickLine:!1,tick:{fill:`rgba(255,255,255,0.3)`,fontSize:10,fontWeight:`bold`},allowDecimals:!1}),(0,J.jsx)(a,{contentStyle:{backgroundColor:`#09090b`,borderRadius:`12px`,border:`1px solid rgba(255,255,255,0.1)`,color:`#fff`},itemStyle:{color:`#3b82f6`},formatter:e=>[e,`Mensajes`]}),(0,J.jsx)(l,{type:`monotone`,dataKey:`count`,stroke:`#3b82f6`,strokeWidth:4,fillOpacity:1,fill:`url(#colorCount)`})]})}):(0,J.jsx)(`div`,{className:`h-full flex items-center justify-center text-white/30 text-sm`,children:`Cargando actividad...`})})]})}),(0,J.jsx)(`div`,{className:`hive-card`,children:(0,J.jsxs)(`div`,{className:`hive-card-body`,children:[(0,J.jsx)(`h3`,{className:`hive-title-section mb-6`,children:`Distribución de Agentes`}),(0,J.jsx)(`div`,{className:`h-[210px]`,children:v.length>0?(0,J.jsx)(s,{width:`100%`,height:`100%`,children:(0,J.jsxs)(c,{data:v,layout:`vertical`,children:[(0,J.jsx)(o,{type:`number`,hide:!0,allowDecimals:!1}),(0,J.jsx)(n,{dataKey:`name`,type:`category`,axisLine:!1,tickLine:!1,tick:{fill:`rgba(255,255,255,0.5)`,fontSize:10,fontWeight:`bold`},width:70}),(0,J.jsx)(a,{cursor:{fill:`rgba(255,255,255,0.02)`}}),(0,J.jsx)(d,{dataKey:`value`,radius:[0,8,8,0],barSize:16,children:v.map(e=>(0,J.jsx)(r,{fill:e.color},e.name))})]})}):(0,J.jsx)(`div`,{className:`h-full flex items-center justify-center text-white/30 text-sm`,children:`Sin agentes configurados`})}),(0,J.jsxs)(`div`,{className:`mt-4 pt-4 border-t border-white/5 grid grid-cols-2 gap-4`,children:[(0,J.jsxs)(`div`,{className:`hive-stat`,children:[(0,J.jsx)(`span`,{className:`hive-stat__label`,children:`Salud Monitor`}),(0,J.jsx)(`span`,{className:`hive-stat__value hive-stat__value--active`,children:`Óptima`})]}),(0,J.jsxs)(`div`,{className:`hive-stat`,children:[(0,J.jsx)(`span`,{className:`hive-stat__label`,children:`Uptime`}),(0,J.jsx)(`span`,{className:`hive-stat__value hive-stat__value--active`,children:f?.uptime??`—`})]})]})]})})]})]})}export{_e as DashboardPage};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-S-ySWqyJ.js";import{_ as t}from"./vendor-charts-Bu2lyBKP.js";import{o as n}from"./vendor-query-DsWPbQdG.js";import{t as r}from"./utils-3pnRFmFe.js";import{t as i}from"./activity-c3pNngT_.js";import{t as a}from"./pause-Bpy1_s7y.js";import{t as o}from"./play-Cj4osqJZ.js";import{t as s}from"./refresh-cw-BfREHVQM.js";import{t as c}from"./search-ChPgnVKj.js";import{t as l}from"./trash-2-DXVBRWfh.js";import{M as u,j as d,x as f}from"./index-CH6sBa3Q.js";import{t as p}from"./badge-Cli1jnH5.js";import{n as m,t as h}from"./card-DFKnZ6ky.js";import{t as g}from"./scroll-area-BQQPitM8.js";var _=e(t(),1),v=n();function y(){let[e,t]=(0,_.useState)([]),[n,y]=(0,_.useState)(!1),[b,x]=(0,_.useState)(``),[S,C]=(0,_.useState)([`info`,`warn`,`error`]),[w,T]=(0,_.useState)(!1),[E,D]=(0,_.useState)(!0),O=(0,_.useRef)(null),{url:k,status:A,subscribe:j,send:M}=f();(0,_.useEffect)(()=>{if(A!==`connected`)return;M({type:`logs_subscribe`});let e=j(`log`,e=>{w||e.logEntry&&t(t=>[...t,e.logEntry].slice(-2e3))});return()=>{M({type:`logs_unsubscribe`}),e()}},[A,j,M,w]),(0,_.useEffect)(()=>{if(E&&O.current){let e=O.current.querySelector(`[data-radix-scroll-area-viewport]`);e&&(e.scrollTop=e.scrollHeight)}},[e,E]);let N=e=>{C(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},P=(0,_.useMemo)(()=>e.filter(e=>{let t=S.includes(e.level),n=e.message.toLowerCase().includes(b.toLowerCase())||e.meta&&JSON.stringify(e.meta).toLowerCase().includes(b.toLowerCase());return t&&n}),[e,S,b]),F=e=>{switch(e){case`error`:return`bg-red-500/10 text-red-500 border-red-500/20`;case`warn`:return`bg-yellow-500/10 text-yellow-500 border-yellow-500/20`;case`debug`:return`bg-slate-500/10 text-slate-500 border-slate-500/20`;default:return`bg-blue-500/10 text-blue-500 border-blue-500/20`}};return(0,v.jsxs)(`div`,{className:`flex flex-col h-[calc(100vh-8rem)] space-y-4 mt-10`,children:[(0,v.jsxs)(`div`,{className:`flex flex-col md:flex-row md:items-center justify-between gap-4`,children:[(0,v.jsxs)(`div`,{children:[(0,v.jsx)(`h2`,{className:`text-2xl font-bold tracking-tight`,children:`Logs del Sistema`}),(0,v.jsx)(`p`,{className:`text-muted-foreground`,children:`Monitoreo en tiempo real de la actividad del enjambre.`})]}),(0,v.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,v.jsxs)(u,{variant:`outline`,size:`sm`,onClick:()=>T(!w),className:w?`text-yellow-500 border-yellow-500/50 hover:bg-yellow-500/10`:``,children:[w?(0,v.jsx)(o,{className:`h-4 w-4 mr-2`}):(0,v.jsx)(a,{className:`h-4 w-4 mr-2`}),w?`Renaudar`:`Pausar`]}),(0,v.jsxs)(u,{variant:`outline`,size:`sm`,onClick:()=>t([]),children:[(0,v.jsx)(l,{className:`h-4 w-4 mr-2`}),`Limpiar`]}),(0,v.jsxs)(u,{variant:`outline`,size:`sm`,onClick:()=>{},disabled:!0,className:`opacity-50`,children:[(0,v.jsx)(s,{className:`h-4 w-4 mr-2`}),`Sincronizado via WS`]})]})]}),(0,v.jsx)(h,{className:`bg-muted/30`,children:(0,v.jsxs)(m,{className:`p-3 flex flex-wrap items-center gap-4`,children:[(0,v.jsxs)(`div`,{className:`relative flex-1 min-w-[200px]`,children:[(0,v.jsx)(c,{className:`absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground`}),(0,v.jsx)(d,{placeholder:`Buscar en logs...`,className:`pl-9 h-9 bg-background`,value:b,onChange:e=>x(e.target.value)})]}),(0,v.jsx)(`div`,{className:`flex items-center gap-1.5 p-1 bg-background rounded-md border text-xs`,children:[`debug`,`info`,`warn`,`error`].map(e=>(0,v.jsx)(`button`,{onClick:()=>N(e),className:r(`px-2 py-1 rounded capitalize transition-colors`,S.includes(e)?F(e).split(` `)[1]+` `+F(e).split(` `)[0]:`text-muted-foreground hover:bg-muted`),children:e},e))}),(0,v.jsxs)(`label`,{className:`flex items-center gap-2 text-xs cursor-pointer select-none`,children:[(0,v.jsx)(`input`,{type:`checkbox`,className:`sr-only`,checked:E,onChange:()=>D(!E)}),(0,v.jsx)(`div`,{className:r(`w-8 h-4 rounded-full relative transition-colors`,E?`bg-primary`:`bg-muted border shadow-inner`),children:(0,v.jsx)(`div`,{className:r(`absolute top-0.5 w-3 h-3 rounded-full bg-white transition-all shadow-sm`,E?`left-[17px]`:`left-0.5`)})}),`Auto-scroll`]}),(0,v.jsxs)(`div`,{className:`ml-auto flex items-center gap-2 text-[10px] text-muted-foreground`,children:[(0,v.jsx)(`div`,{className:r(`w-2 h-2 rounded-full`,A===`connected`?`bg-green-500 animate-pulse`:`bg-red-500`)}),A===`connected`?`STREAMING`:`OFFLINE`,(0,v.jsx)(`span`,{className:`mx-1 opacity-30`,children:`|`}),P.length,` de `,e.length,` entradas`]})]})}),(0,v.jsx)(h,{className:`flex-1 overflow-hidden border-2`,children:(0,v.jsx)(m,{className:`p-0 h-full bg-black/95`,children:(0,v.jsx)(g,{className:`h-full w-full`,ref:O,children:(0,v.jsxs)(`div`,{className:`p-4 font-mono text-[11px] leading-relaxed`,children:[P.length===0?(0,v.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-20 text-muted-foreground opacity-50`,children:[(0,v.jsx)(i,{className:`h-10 w-10 mb-4 stroke-[1]`}),(0,v.jsx)(`p`,{children:n?`Analizando registros...`:`No se encontraron logs con los filtros activos.`})]}):(0,v.jsx)(`div`,{className:`space-y-0.5`,children:P.map(e=>(0,v.jsxs)(`div`,{className:`group flex items-start gap-3 py-0.5 hover:bg-white/5 rounded px-1 transition-colors`,children:[(0,v.jsx)(`span`,{className:`text-slate-600 shrink-0 select-none hidden md:inline`,children:e.timestamp.includes(`T`)?e.timestamp.split(`T`)[1].split(`.`)[0]:e.timestamp}),(0,v.jsx)(p,{variant:`outline`,className:r(`px-1 py-0 h-4 text-[9px] uppercase font-bold shrink-0 border`,F(e.level)),children:e.level}),(0,v.jsxs)(`div`,{className:`flex-1 break-all text-slate-300`,children:[(0,v.jsxs)(`span`,{className:`text-slate-500 mr-2`,children:[`[`,e.source,`]`]}),e.message,e.meta&&(0,v.jsx)(`span`,{className:`text-slate-500 ml-2 italic opacity-60`,children:JSON.stringify(e.meta)})]})]},`${e.timestamp}-${e.source}-${e.message.slice(0,30)}`))}),(0,v.jsx)(`div`,{className:`h-4`}),` `]})})})})]})}export{y as LogsPage};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-S-ySWqyJ.js";import{_ as t}from"./vendor-charts-Bu2lyBKP.js";import{o as n}from"./vendor-query-DsWPbQdG.js";import{r}from"./utils-3pnRFmFe.js";import{t as i}from"./chevron-down-DIosfU_U.js";import{t as a}from"./chevron-up-CI-W21Fy.js";import{t as ee}from"./file-text-CE58EfH0.js";import{t as o}from"./history-BfZVGlZa.js";import{n as s,t as c}from"./square-G7Hyufqm.js";import{n as l,r as u,t as d}from"./gateway-url-D5uj6Nxg.js";import{M as f,j as p,q as m}from"./index-CH6sBa3Q.js";import{t as h}from"./badge-Cli1jnH5.js";var g=r(`MicOff`,[[`line`,{x1:`2`,x2:`22`,y1:`2`,y2:`22`,key:`a6p6uj`}],[`path`,{d:`M18.89 13.23A7.12 7.12 0 0 0 19 12v-2`,key:`80xlxr`}],[`path`,{d:`M5 10v2a7 7 0 0 0 12 5`,key:`p2k8kg`}],[`path`,{d:`M15 9.34V5a3 3 0 0 0-5.68-1.33`,key:`1gzdoj`}],[`path`,{d:`M9 9v3a3 3 0 0 0 5.12 2.12`,key:`r2i35w`}],[`line`,{x1:`12`,x2:`12`,y1:`19`,y2:`22`,key:`x3vr5v`}]]),_=r(`MonitorSpeaker`,[[`path`,{d:`M5.5 20H8`,key:`1k40s5`}],[`path`,{d:`M17 9h.01`,key:`1j24nn`}],[`rect`,{width:`10`,height:`16`,x:`12`,y:`4`,rx:`2`,key:`ixliua`}],[`path`,{d:`M8 6H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h4`,key:`1mp6e1`}],[`circle`,{cx:`17`,cy:`15`,r:`1`,key:`tqvash`}]]),v=r(`Radio`,[[`path`,{d:`M4.9 19.1C1 15.2 1 8.8 4.9 4.9`,key:`1vaf9d`}],[`path`,{d:`M7.8 16.2c-2.3-2.3-2.3-6.1 0-8.5`,key:`u1ii0m`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}],[`path`,{d:`M16.2 7.8c2.3 2.3 2.3 6.1 0 8.5`,key:`1j5fej`}],[`path`,{d:`M19.1 4.9C23 8.8 23 15.1 19.1 19`,key:`10b0cb`}]]),y=e(t(),1),b=u((e,t)=>({sessions:[],activeSessionId:null,segments:[],isRecording:!1,isConnecting:!1,error:null,wsConnection:null,startSession:async(n,r=`whisper-large-v3-turbo`)=>{e({error:null,isConnecting:!0});try{let i=await(await fetch(`${d()}/api/meetings`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({title:n,stt_model:r})})).json();return!i.ok||!i.session?(e({error:i.error??`Error al crear sesión`,isConnecting:!1}),null):(e({activeSessionId:i.session.id,segments:[],sessions:[i.session,...t().sessions],isConnecting:!1}),i.session.id)}catch(t){return e({error:t.message,isConnecting:!1}),null}},stopSession:async()=>{let{activeSessionId:n,wsConnection:r}=t();if(n){if(r&&r.readyState===WebSocket.OPEN)r.send(JSON.stringify({type:`meeting_stop`}));else try{await fetch(`${d()}/api/meetings/${n}/stop`,{method:`POST`})}catch{}r?.close(),e({isRecording:!1,wsConnection:null})}},fetchSessions:async()=>{try{let t=await(await fetch(`${d()}/api/meetings`)).json();t.ok&&t.sessions&&e({sessions:t.sessions})}catch{}},fetchSession:async t=>{try{let n=await(await fetch(`${d()}/api/meetings/${t}`)).json();n.ok&&n.session&&e({activeSessionId:t,segments:n.segments??[]})}catch{}},addSegmentLocal:t=>e(e=>({segments:[...e.segments,t]})),setWsConnection:t=>e({wsConnection:t}),setRecording:t=>e({isRecording:t}),setConnecting:t=>e({isConnecting:t}),setError:t=>e({error:t}),clearActiveSession:()=>e({activeSessionId:null,segments:[],isRecording:!1,wsConnection:null})}));function x(e){return`${l()}/meeting-stream?meetingSessionId=${encodeURIComponent(e)}`}var S=n();function te(e){let t=Math.floor(Date.now()/1e3-e);return`${Math.floor(t/60).toString().padStart(2,`0`)}:${(t%60).toString().padStart(2,`0`)}`}async function ne(){if(!navigator.mediaDevices?.getDisplayMedia)return!1;try{let e=await navigator.mediaDevices.getDisplayMedia({video:!0,audio:!0,systemAudio:`include`}),t=e.getAudioTracks().length>0;return e.getTracks().forEach(e=>e.stop()),t}catch{return!1}}function re({segment:e}){return(0,S.jsxs)(`div`,{className:`flex gap-3 py-2 px-3 rounded-lg hover:bg-white/[0.03] transition-colors`,children:[e.speaker&&(0,S.jsxs)(`span`,{className:`shrink-0 text-xs font-semibold text-amber-400 mt-0.5 leading-5`,children:[`[`,e.speaker,`]`]}),(0,S.jsx)(`span`,{className:`text-sm text-zinc-300 leading-relaxed`,children:e.text})]})}function ie(){return(0,S.jsxs)(`span`,{className:`relative flex h-3 w-3`,children:[(0,S.jsx)(`span`,{className:`animate-ping absolute inline-flex h-full w-full rounded-full bg-red-400 opacity-75`}),(0,S.jsx)(`span`,{className:`relative inline-flex rounded-full h-3 w-3 bg-red-500`})]})}function ae(){let{sessions:e,activeSessionId:t,segments:n,isRecording:r,isConnecting:l,error:u,wsConnection:ae,startSession:C,stopSession:w,fetchSessions:T,addSegmentLocal:E,setWsConnection:D,setRecording:O,setError:k,clearActiveSession:oe}=b(),[A,j]=(0,y.useState)(``),[M,N]=(0,y.useState)(`00:00`),[P,F]=(0,y.useState)(!0),[I,L]=(0,y.useState)(!1),[R,z]=(0,y.useState)(!1),[B,V]=(0,y.useState)(`microphone`),[H,U]=(0,y.useState)(null),W=(0,y.useRef)(null),G=(0,y.useRef)([]),K=(0,y.useRef)(null),q=(0,y.useRef)(null),J=(0,y.useRef)(null),Y=(0,y.useRef)(null),X=(0,y.useRef)(null),Z=(0,y.useRef)(!1),Q=e.find(e=>e.id===t);(0,y.useEffect)(()=>{if(!r||!Q)return;let e=setInterval(()=>N(te(Q.started_at)),1e3);return()=>clearInterval(e)},[r,Q]),(0,y.useEffect)(()=>{X.current?.scrollIntoView({behavior:`smooth`})},[n]),(0,y.useEffect)(()=>{T()},[]),(0,y.useEffect)(()=>{ne().then(e=>{U(e)})},[]);let $=(0,y.useCallback)(async()=>{if(!A.trim()){k(`Ingresa el título de la reunión`);return}if(k(null),z(!1),!navigator.mediaDevices?.getUserMedia){k(`Tu navegador no puede acceder al micrófono. Asegúrate de usar HTTPS o localhost.`);return}let e=`audio/webm`,t,n=`microphone`;try{let e=await navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0}});K.current=e;let r;if(H)try{r=await navigator.mediaDevices.getDisplayMedia({video:!0,audio:!0,systemAudio:`include`}),q.current=r,n=r.getAudioTracks().length>0?`system`:`microphone`}catch{n=`microphone`}if(n===`system`&&r){let n=new AudioContext;J.current=n;let i=n.createMediaStreamDestination();Y.current=i,n.createMediaStreamSource(e).connect(i),n.createMediaStreamSource(r).connect(i),t=new MediaStream([...i.stream.getAudioTracks()]),V(`dual`)}else t=e,V(`microphone`)}catch(e){let t=e.name;k(t===`NotAllowedError`||t===`PermissionDeniedError`?`Permiso de micrófono denegado. Ve a la configuración del navegador (🔒 en la barra de URL) y permite el micrófono.`:t===`NotFoundError`?`No se encontró ningún micrófono en este dispositivo.`:`No se pudo acceder al micrófono: ${e.message}`);return}K.current=t;let r=await C(A.trim());if(!r){t.getTracks().forEach(e=>e.stop()),q.current?.getTracks().forEach(e=>e.stop());return}let i=new WebSocket(x(r));D(i);let a=()=>{if(!Z.current||i.readyState!==WebSocket.OPEN)return;G.current=[];let n=new MediaRecorder(t,{mimeType:e});W.current=n,n.ondataavailable=e=>{e.data.size>0&&G.current.push(e.data)},n.onstop=()=>{if(G.current.length===0){Z.current&&i.readyState===WebSocket.OPEN&&a();return}let t=new Blob(G.current,{type:e}),n=new FileReader;n.readAsDataURL(t),n.onloadend=()=>{let t=n.result.split(`,`)[1];i.readyState===WebSocket.OPEN&&i.send(JSON.stringify({type:`audio_chunk`,audio:t,mime_type:e})),Z.current&&i.readyState===WebSocket.OPEN&&a()}},n.start(),setTimeout(()=>{n.state===`recording`&&n.stop()},5e3)};i.onopen=()=>{Z.current=!0,O(!0),a()},i.onmessage=e=>{try{let t=JSON.parse(e.data);t.type===`transcript_segment`&&E({seq:t.seq,speaker:t.speaker||null,text:t.text}),t.type===`meeting_stopped`&&(Z.current=!1,O(!1)),t.type===`error`&&k(t.error)}catch{}},i.onerror=()=>k(`Error en la conexión WebSocket`),i.onclose=()=>{Z.current=!1,O(!1),K.current?.getTracks().forEach(e=>e.stop()),q.current?.getTracks().forEach(e=>e.stop()),J.current?.close()}},[A,C,D,O,k,E,H]),se=(0,y.useCallback)(async()=>{Z.current=!1,W.current?.stop(),K.current?.getTracks().forEach(e=>e.stop()),q.current?.getTracks().forEach(e=>e.stop()),J.current?.close(),await w(),N(`00:00`)},[w]),ce=(0,y.useCallback)(async()=>{if(t){L(!0),k(null);try{(await fetch(`${d()}/api/chat`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({message:`Genera el reporte de la reunión ${t}`})})).ok?z(!0):k(`Error al enviar el mensaje al agente`)}catch(e){k(e.message)}finally{L(!1)}}},[t,k]),le=!r&&t,ue=!r&&!Q?.status.startsWith(`stop`)&&!t;return(0,S.jsxs)(`div`,{className:`flex h-full flex-col bg-[#111319] text-white`,children:[(0,S.jsx)(`div`,{className:`shrink-0 px-5 py-4 border-b border-white/[0.06] bg-[#191b22]/80 backdrop-blur-sm`,children:(0,S.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,S.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,S.jsx)(`div`,{className:`flex items-center justify-center w-9 h-9 rounded-xl bg-amber-500/10 border border-amber-500/20`,children:(0,S.jsx)(v,{className:`h-4 w-4 text-amber-400`})}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`h1`,{className:`text-sm font-semibold text-white leading-tight`,children:`Transcripción de Reuniones`}),(0,S.jsx)(`p`,{className:`text-[11px] text-zinc-500 leading-tight`,children:`Captura · Transcribe · Informa en tiempo real`})]})]}),r&&(0,S.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-1.5 rounded-full bg-red-500/10 border border-red-500/20`,children:[(0,S.jsx)(ie,{}),(0,S.jsx)(`span`,{className:`text-xs font-semibold text-red-400 tabular-nums`,children:M})]})]})}),(0,S.jsxs)(`div`,{className:`flex flex-col lg:flex-row flex-1 overflow-hidden min-h-0`,children:[(0,S.jsxs)(`div`,{className:`flex flex-col flex-1 min-h-0 overflow-hidden`,children:[(0,S.jsxs)(`div`,{className:`shrink-0 px-5 py-4 border-b border-white/[0.06] space-y-3`,children:[ue?(0,S.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-2`,children:[(0,S.jsx)(p,{placeholder:`Nombre de la reunión...`,value:A,onChange:e=>j(e.target.value),onKeyDown:e=>e.key===`Enter`&&$(),className:`flex-1 bg-white/[0.04] border-white/[0.08] text-white placeholder:text-zinc-600 focus-visible:ring-amber-500/40 focus-visible:border-amber-500/40 rounded-xl h-10`,disabled:l}),(0,S.jsxs)(f,{onClick:$,disabled:l||!A.trim(),className:`shrink-0 bg-amber-500 hover:bg-amber-400 active:bg-amber-600 text-black font-semibold rounded-xl h-10 px-5 shadow-lg shadow-amber-900/30 transition-all`,children:[(0,S.jsx)(s,{className:`h-4 w-4 mr-1.5`}),l?`Iniciando...`:`Iniciar`]})]}):(0,S.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3`,children:[(0,S.jsxs)(`div`,{className:`flex items-center gap-2.5 min-w-0`,children:[(0,S.jsx)(h,{variant:`outline`,className:r?`border-red-500/40 text-red-400 bg-red-500/10 rounded-full px-2.5`:`border-zinc-600/40 text-zinc-400 bg-white/[0.04] rounded-full px-2.5`,children:r?`● REC`:`Detenida`}),B!==`microphone`&&r&&(0,S.jsx)(h,{variant:`outline`,className:`border-blue-500/40 text-blue-400 bg-blue-500/10 rounded-full px-2.5`,children:B===`dual`?(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(_,{className:`h-3 w-3 mr-1`}),`Mic+Altavozz`]}):B===`system`?(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(_,{className:`h-3 w-3 mr-1`}),`Altavozz`]}):null}),(0,S.jsx)(`span`,{className:`text-sm font-medium text-zinc-200 truncate max-w-[180px]`,children:Q?.title}),r&&(0,S.jsxs)(`span`,{className:`hidden sm:flex items-center gap-1 text-xs text-zinc-500`,children:[(0,S.jsx)(m,{className:`h-3 w-3`}),M]})]}),(0,S.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0`,children:[r&&(0,S.jsxs)(f,{variant:`outline`,size:`sm`,onClick:se,className:`border-red-500/30 text-red-400 hover:bg-red-500/10 hover:border-red-500/50 rounded-xl h-8`,children:[(0,S.jsx)(c,{className:`h-3 w-3 mr-1.5 fill-current`}),`Detener`]}),le&&(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(f,{size:`sm`,onClick:ce,disabled:I||R,className:`bg-amber-500 hover:bg-amber-400 text-black font-semibold rounded-xl h-8 px-3 shadow-md shadow-amber-900/30 disabled:opacity-60`,children:[(0,S.jsx)(ee,{className:`h-3.5 w-3.5 mr-1.5`}),I?`Generando...`:R?`Enviado ✓`:`Generar Reporte`]}),(0,S.jsx)(f,{variant:`ghost`,size:`sm`,onClick:oe,className:`text-zinc-500 hover:text-zinc-300 hover:bg-white/[0.05] rounded-xl h-8`,children:`Nueva reunión`})]})]})]}),u&&(0,S.jsxs)(`div`,{className:`flex items-start gap-2.5 px-3.5 py-2.5 rounded-xl bg-red-500/[0.08] border border-red-500/20 text-xs text-red-400`,children:[(0,S.jsx)(`span`,{className:`shrink-0 mt-px`,children:`⚠`}),(0,S.jsx)(`span`,{children:u})]}),R&&(0,S.jsxs)(`div`,{className:`flex items-center gap-2.5 px-3.5 py-2.5 rounded-xl bg-emerald-500/[0.08] border border-emerald-500/20 text-xs text-emerald-400`,children:[(0,S.jsx)(`span`,{children:`✓`}),(0,S.jsx)(`span`,{children:`El agente está generando el reporte. Verifica el chat para el informe completo.`})]})]}),(0,S.jsx)(`div`,{className:`flex-1 overflow-y-auto px-4 py-4 min-h-0`,children:n.length===0?(0,S.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-4 text-zinc-600`,children:[(0,S.jsx)(`div`,{className:`flex items-center justify-center w-16 h-16 rounded-2xl bg-white/[0.03] border border-white/[0.06]`,children:(0,S.jsx)(g,{className:`h-7 w-7`})}),(0,S.jsx)(`p`,{className:`text-sm text-center max-w-[220px] leading-relaxed`,children:r?`Escuchando… las transcripciones aparecerán aquí`:`Inicia una sesión para ver la transcripción en tiempo real`})]}):(0,S.jsxs)(`div`,{className:`space-y-0.5`,children:[n.map(e=>(0,S.jsx)(re,{segment:e},e.seq)),(0,S.jsx)(`div`,{ref:X})]})}),n.length>0&&(0,S.jsxs)(`div`,{className:`shrink-0 border-t border-white/[0.06] px-5 py-2 flex items-center justify-between`,children:[(0,S.jsxs)(`span`,{className:`text-[11px] text-zinc-600`,children:[n.length,` segmento`,n.length===1?``:`s`,` transcritos`]}),r&&(0,S.jsxs)(`span`,{className:`flex items-center gap-1.5 text-[11px] text-zinc-500`,children:[(0,S.jsx)(m,{className:`h-3 w-3`}),M]})]})]}),(0,S.jsxs)(`div`,{className:`shrink-0 flex flex-col lg:w-64 xl:w-72 border-t lg:border-t-0 lg:border-l border-white/[0.06] bg-[#191b22]/40 max-h-60 lg:max-h-none`,children:[(0,S.jsxs)(`button`,{onClick:()=>F(!P),className:`flex items-center justify-between px-4 py-3 text-[11px] font-semibold text-zinc-500 uppercase tracking-wider hover:text-zinc-300 border-b border-white/[0.06] transition-colors`,children:[(0,S.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,S.jsx)(o,{className:`h-3.5 w-3.5`}),`Historial (`,e.length,`)`]}),P?(0,S.jsx)(a,{className:`h-3 w-3`}):(0,S.jsx)(i,{className:`h-3 w-3`})]}),P&&(0,S.jsx)(`div`,{className:`flex-1 overflow-y-auto`,children:e.length===0?(0,S.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-8 gap-2 text-zinc-600`,children:[(0,S.jsx)(o,{className:`h-6 w-6 opacity-40`}),(0,S.jsx)(`p`,{className:`text-xs`,children:`Sin reuniones aún`})]}):(0,S.jsx)(`div`,{className:`py-1`,children:e.map(e=>(0,S.jsxs)(`button`,{onClick:()=>b.getState().fetchSession(e.id),className:`w-full text-left px-4 py-3 hover:bg-white/[0.04] transition-colors border-b border-white/[0.04] ${e.id===t?`bg-amber-500/[0.06]`:``}`,children:[(0,S.jsx)(`p`,{className:`text-xs font-medium text-zinc-200 truncate leading-snug`,children:e.title}),(0,S.jsxs)(`div`,{className:`flex items-center gap-1.5 mt-1`,children:[(0,S.jsx)(h,{variant:`outline`,className:`text-[10px] px-1.5 py-0 rounded-full border-0 ${e.status===`active`?`bg-emerald-500/15 text-emerald-400`:e.status===`report_ready`?`bg-blue-500/15 text-blue-400`:`bg-white/[0.05] text-zinc-500`}`,children:e.status===`active`?`activa`:e.status===`report_ready`?`con reporte`:`detenida`}),e.segment_count!==void 0&&e.segment_count>0&&(0,S.jsxs)(`span`,{className:`text-[10px] text-zinc-600`,children:[e.segment_count,` seg`]})]})]},e.id))})})]})]})]})}function C(){return(0,S.jsx)(`div`,{className:`h-full overflow-hidden`,children:(0,S.jsx)(ae,{})})}export{C as MeetingPage};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-S-ySWqyJ.js";import{_ as t}from"./vendor-charts-Bu2lyBKP.js";import{o as n}from"./vendor-query-DsWPbQdG.js";import{t as r}from"./chevron-down-DIosfU_U.js";import{t as i}from"./chevron-right-CR4Skrf3.js";import{t as a}from"./circle-check-6Ard1-2z.js";import{t as o}from"./circle-minus-CE0iJrl8.js";import{t as s}from"./circle-x-jUJ5zZvQ.js";import{t as c}from"./circle-S0-ouLz-.js";import{t as l}from"./folder-open-DIPKeiI_.js";import{t as u}from"./loader-circle-C4hhXLgp.js";import{t as d}from"./refresh-cw-BfREHVQM.js";import{r as f}from"./gateway-url-D5uj6Nxg.js";import{p}from"./index-CH6sBa3Q.js";import{t as m}from"./badge-Cli1jnH5.js";import{t as h}from"./progress-JN30I5fF.js";var g=e(t(),1),_=f((e,t)=>({projects:[],isLoading:!1,fetchProjects:async t=>{e({isLoading:!0});try{let n=await p(t?`/api/projects?status=${t}`:`/api/projects`,{showLoader:!1,showError:!0}),r=[];Array.isArray(n)?r=n:`projects`in n?r=n.projects:`project`in n?r=n.project?[n.project]:[]:n&&typeof n==`object`&&`id`in n&&(r=[n]),e({projects:r})}catch(t){console.error(`[ProjectsStore] Error en fetchProjects:`,t),e({projects:[]})}finally{e({isLoading:!1})}},fetchActiveProjects:async()=>{e({isLoading:!0});try{let t=await p(`/api/projects/active`,{showLoader:!1,showError:!0}),n=[];Array.isArray(t)?n=t:`projects`in t?n=t.projects:`project`in t?n=t.project?[t.project]:[]:t&&typeof t==`object`&&`id`in t&&(n=[t]),e({projects:n})}catch(t){console.error(`[ProjectsStore] Error en fetchActiveProjects:`,t),e({projects:[]})}finally{e({isLoading:!1})}},updateTaskLocal:(t,n)=>{e(e=>({projects:e.projects.map(e=>({...e,tasks:e.tasks.map(e=>e.id===t?{...e,...n}:e)}))}))},updateProjectLocal:(t,n)=>{e(e=>({projects:e.projects.map(e=>e.id===t?{...e,...n}:e)}))}})),v=n();function y({icon:e,...t}){return(0,v.jsx)(e,{...t})}var b={code:`Código`,research:`Investigación`,content:`Contenido`,data:`Datos`,general:`General`},x={code:`bg-blue-500/10 text-blue-400 border-blue-500/20`,research:`bg-purple-500/10 text-purple-400 border-purple-500/20`,content:`bg-green-500/10 text-green-400 border-green-500/20`,data:`bg-orange-500/10 text-orange-400 border-orange-500/20`,general:`bg-gray-500/10 text-gray-400 border-gray-500/20`},S={active:`bg-green-500/10 text-green-400 border-green-500/20`,pending:`bg-yellow-500/10 text-yellow-400 border-yellow-500/20`,paused:`bg-gray-500/10 text-gray-400 border-gray-500/20`,done:`bg-blue-500/10 text-blue-400 border-blue-500/20`,failed:`bg-red-500/10 text-red-400 border-red-500/20`},C={active:`Activo`,pending:`Pendiente`,paused:`Pausado`,done:`Completado`,failed:`Fallido`,in_progress:`En progreso`,completed:`Completada`,blocked:`Bloqueada`};function w({status:e}){switch(e){case`completed`:return(0,v.jsx)(y,{icon:a,className:`h-3.5 w-3.5 text-green-400`});case`in_progress`:return(0,v.jsx)(y,{icon:u,className:`h-3.5 w-3.5 text-yellow-400 animate-spin`});case`failed`:return(0,v.jsx)(y,{icon:s,className:`h-3.5 w-3.5 text-red-400`});case`blocked`:return(0,v.jsx)(y,{icon:o,className:`h-3.5 w-3.5 text-orange-400`});default:return(0,v.jsx)(y,{icon:c,className:`h-3.5 w-3.5 text-muted-foreground`})}}function T({task:e}){return(0,v.jsxs)(`div`,{className:`flex items-center gap-3 py-1.5 px-3 rounded-md hover:bg-white/5 transition-colors group`,children:[(0,v.jsx)(w,{status:e.status}),(0,v.jsx)(`span`,{className:`text-sm flex-1 text-white/40 group-hover:text-white/80 transition-colors`,children:e.name}),e.description&&(0,v.jsx)(`span`,{className:`text-xs text-white/20 hidden sm:block max-w-[200px] truncate`,children:e.description}),(0,v.jsxs)(`div`,{className:`flex items-center gap-2 ml-auto`,children:[e.status===`in_progress`&&(0,v.jsx)(`div`,{className:`w-16`,children:(0,v.jsx)(h,{value:e.progress,className:`h-1`})}),(0,v.jsxs)(`span`,{className:`text-[11px] text-white/30 w-8 text-right`,children:[e.progress,`%`]})]})]})}function E({project:e}){let[t,n]=(0,g.useState)(e.status===`active`||e.status===`pending`);return(0,v.jsxs)(`div`,{className:`hive-card group overflow-hidden mt-10`,children:[(0,v.jsxs)(`button`,{className:`w-full flex items-center gap-3 p-4 hover:bg-white/5 transition-colors text-left`,onClick:()=>n(!t),children:[(0,v.jsx)(y,{icon:t?r:i,className:`h-4 w-4 text-white/30 shrink-0`}),(0,v.jsx)(y,{icon:l,className:`h-4 w-4 text-blue-400 shrink-0`}),(0,v.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,v.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,v.jsx)(`span`,{className:`font-medium text-sm text-white`,children:e.name}),(0,v.jsx)(m,{variant:`outline`,className:`text-[10px] px-1.5 py-0 ${x[e.type]??x.general}`,children:b[e.type]??e.type}),(0,v.jsx)(m,{variant:`outline`,className:`text-[10px] px-1.5 py-0 ${S[e.status]??``}`,children:C[e.status]??e.status})]}),e.description&&(0,v.jsx)(`p`,{className:`hive-subtitle !mt-0.5 truncate`,children:e.description})]}),(0,v.jsxs)(`div`,{className:`flex items-center gap-3 shrink-0`,children:[(0,v.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,v.jsx)(`div`,{className:`w-20`,children:(0,v.jsx)(h,{value:e.progress,className:`h-1.5`})}),(0,v.jsxs)(`span`,{className:`text-xs text-white/30 w-8 text-right`,children:[e.progress,`%`]})]}),(e.tasks??[]).length>0&&(0,v.jsxs)(`span`,{className:`text-xs text-white/30`,children:[(e.tasks??[]).filter(e=>e.status===`completed`).length,`/`,(e.tasks??[]).length]})]})]}),t&&(e.tasks??[]).length>0&&(0,v.jsx)(`div`,{className:`border-t border-white/5 px-2 py-2`,children:(e.tasks??[]).map(e=>(0,v.jsx)(T,{task:e},e.id))}),t&&(e.tasks??[]).length===0&&(0,v.jsx)(`div`,{className:`border-t border-white/5 px-4 py-3 text-xs text-white/20`,children:`Sin tareas registradas`})]})}function D(){let{projects:e,isLoading:t,fetchProjects:n,fetchActiveProjects:r}=_(),[i,a]=(0,g.useState)(`active`),o=()=>{i===`active`?r():i===`done`?n(`done`):n()};return(0,g.useEffect)(()=>{o()},[i]),(0,v.jsx)(`div`,{className:`hive-page`,children:(0,v.jsxs)(`div`,{className:`hive-page-container`,children:[(0,v.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,v.jsxs)(`div`,{children:[(0,v.jsxs)(`div`,{className:`flex items-center gap-3 mb-2`,children:[(0,v.jsx)(`div`,{className:`hive-page-header__dot`}),(0,v.jsx)(`span`,{className:`hive-page-header__label`,children:`GESTIÓN`})]}),(0,v.jsxs)(`h1`,{className:`hive-title-page`,children:[`Proyectos`,(0,v.jsx)(`span`,{className:`hive-title-page__accent`,children:`.`})]}),(0,v.jsx)(`p`,{className:`hive-subtitle`,children:`Seguimiento de tareas y proyectos activos del agente`})]}),(0,v.jsxs)(`button`,{className:`hive-btn hive-btn--primary`,onClick:o,disabled:t,children:[(0,v.jsx)(y,{icon:d,className:`h-3.5 w-3.5 mr-1.5 ${t?`animate-spin`:``}`}),`Actualizar`]})]}),(0,v.jsx)(`div`,{className:`flex gap-1 mt-6 bg-white/[0.02] rounded-xl p-1 border border-white/5`,children:[{key:`active`,label:`Activos`},{key:`all`,label:`Todos`},{key:`done`,label:`Completados`}].map(e=>(0,v.jsx)(`button`,{onClick:()=>a(e.key),className:`px-6 py-2 rounded-xl text-[10px] font-black tracking-widest uppercase transition-all duration-300 ${i===e.key?`bg-blue-600 text-white shadow-btn-primary`:`text-white/20 hover:text-white/40 hover:bg-white/5`}`,children:e.label},e.key))}),(0,v.jsx)(`div`,{className:`mt-6 space-y-3`,children:t?(0,v.jsxs)(`div`,{className:`hive-empty-state`,children:[(0,v.jsx)(y,{icon:u,className:`h-5 w-5 animate-spin mr-2`}),`Cargando proyectos...`]}):e.length===0?(0,v.jsxs)(`div`,{className:`hive-empty-state`,children:[(0,v.jsx)(y,{icon:l,className:`h-10 w-10 opacity-30 mb-3`}),(0,v.jsxs)(`p`,{className:`text-sm text-white/30`,children:[`No hay proyectos `,i===`active`?`activos`:``]}),(0,v.jsx)(`p`,{className:`text-xs text-white/15 mt-1`,children:`El agente creará proyectos automáticamente cuando reciba tareas complejas`})]}):e.filter(Boolean).map(e=>(0,v.jsx)(E,{project:e},e.id))})]})})}export{D as ProjectsPage};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-S-ySWqyJ.js";import{_ as t}from"./vendor-charts-Bu2lyBKP.js";import{o as n}from"./vendor-query-DsWPbQdG.js";import{r}from"./utils-3pnRFmFe.js";import{a as i,c as a,l as o,n as s,r as c,s as l,t as u}from"./switch-C7W2-KEx.js";import{t as d}from"./chevron-down-DIosfU_U.js";import{t as f}from"./chevron-right-CR4Skrf3.js";import{t as p}from"./circle-check-6Ard1-2z.js";import{t as m}from"./cpu-KDy6-FAI.js";import{t as h}from"./download-Cjbk4Rek.js";import{n as g,t as _}from"./eye-D1dB40_o.js";import{t as v}from"./globe-_hUGxQF4.js";import{t as y}from"./key-Bv5DdTPh.js";import{t as b}from"./loader-circle-C4hhXLgp.js";import{a as x,c as S,d as C,f as w,i as T,l as E,n as D,o as O,p as k,r as A,s as ee,t as te,u as j}from"./table-DhowbNxQ.js";import{t as ne}from"./lock-CkZYexqw.js";import{n as M,t as N}from"./square-G7Hyufqm.js";import{t as re}from"./pencil-5VdSj-h5.js";import{t as ie}from"./play-Cj4osqJZ.js";import{t as P}from"./plus-BQhgZN3A.js";import{t as F}from"./refresh-cw-BfREHVQM.js";import{t as I}from"./search-ChPgnVKj.js";import{t as L}from"./settings-BdHKUL92.js";import{t as ae}from"./terminal-C-R5Fckz.js";import{t as oe}from"./trash-2-DXVBRWfh.js";import{G as se,M as R,R as ce,W as le,a as ue,c as z,d as de,h as B,i as fe,j as V,p as pe,r as H,s as me}from"./index-CH6sBa3Q.js";import{t as U}from"./label-0BvGVXvZ.js";import{c as he,i as W,o as ge,r as _e,s as G,t as ve}from"./dialog-DQ3s-LuO.js";import{t as K}from"./badge-Cli1jnH5.js";import{a as q,n as J,o as Y,r as X,t as Z}from"./card-DFKnZ6ky.js";import"./useProviders-TBnWn-Hq.js";import{t as ye}from"./scroll-area-BQQPitM8.js";var be=r(`Binary`,[[`rect`,{x:`14`,y:`14`,width:`4`,height:`6`,rx:`2`,key:`p02svl`}],[`rect`,{x:`6`,y:`4`,width:`4`,height:`6`,rx:`2`,key:`xm4xkj`}],[`path`,{d:`M6 20h4`,key:`1i6q5t`}],[`path`,{d:`M14 10h4`,key:`ru81e7`}],[`path`,{d:`M6 14h2v6`,key:`16z9wg`}],[`path`,{d:`M14 4h2v6`,key:`1idq9u`}]]),xe=r(`KeyRound`,[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]),Se=r(`Package`,[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`path`,{d:`m3.3 7 7.703 4.734a2 2 0 0 0 1.994 0L20.7 7`,key:`yx3hmr`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]),Q=e(t(),1),$=n();function Ce({provider:e,onSave:t,onCancel:n}){let[r,i]=(0,Q.useState)(!1),[a,o]=(0,Q.useState)(``),[s,c]=(0,Q.useState)(e?.baseUrl||e?.base_url||``),[l,u]=(0,Q.useState)(e?.config?.headers?JSON.stringify(e.config.headers,null,2):``),[d,f]=(0,Q.useState)(e?.num_ctx?String(e.num_ctx):``),m=s||e?.baseUrl||e?.base_url||``,h=e?.id===`ollama`||m.includes(`localhost`)||m.includes(`127.0.0.1`),v=!!e?.has_api_key,y=!!e?.has_headers;return(0,$.jsxs)(`div`,{className:`space-y-3`,children:[(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,$.jsx)(U,{className:`hive-label`,children:`API Key`}),v&&(0,$.jsxs)(`span`,{className:`flex items-center gap-1 text-[10px] font-bold text-emerald-400`,children:[(0,$.jsx)(p,{className:`h-3 w-3`}),`Configurada`]})]}),(0,$.jsxs)(`div`,{className:`relative`,children:[(0,$.jsx)(V,{type:r?`text`:`password`,value:a,onChange:e=>o(e.target.value),placeholder:v?`•••••••••••••••• (dejar vacío para conservar)`:`sk-...`,className:`hive-input !h-8 text-xs pr-8`}),(0,$.jsx)(R,{variant:`ghost`,size:`icon`,className:`absolute right-0 top-0 h-8 w-8 text-white/40 hover:text-white`,onClick:()=>i(!r),children:r?(0,$.jsx)(g,{className:`h-3 w-3`}):(0,$.jsx)(_,{className:`h-3 w-3`})})]})]}),(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(U,{className:`hive-label`,children:`Base URL (opcional)`}),(0,$.jsx)(V,{value:s,onChange:e=>c(e.target.value),placeholder:`https://api.example.com`,className:`hive-input !h-8 text-xs`})]}),h&&(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,$.jsx)(U,{className:`hive-label`,children:`Context Window (num_ctx)`}),(0,$.jsx)(`span`,{className:`text-[10px] text-white/30`,children:`tokens — por defecto 32 768`})]}),(0,$.jsx)(V,{type:`number`,value:d,onChange:e=>f(e.target.value),placeholder:`8192`,min:512,step:512,className:`hive-input !h-8 text-xs font-mono`}),(0,$.jsx)(`p`,{className:`text-[10px] text-amber-400/60`,children:`Aumenta si ves errores de contexto. Tu modelo soporta hasta 262 144 tokens.`})]}),(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,$.jsx)(U,{className:`hive-label`,children:`Custom Headers (JSON)`}),y&&(0,$.jsxs)(`span`,{className:`flex items-center gap-1 text-[10px] font-bold text-emerald-400`,children:[(0,$.jsx)(p,{className:`h-3 w-3`}),`Configurados`]})]}),(0,$.jsx)(`textarea`,{value:l,onChange:e=>u(e.target.value),placeholder:y?`{ ... } (dejar vacío para conservar)`:`{ "x-custom-header": "value" }`,rows:3,className:`w-full bg-white/5 border border-white/10 rounded-md p-2 text-xs text-white/70 focus:outline-none focus:border-blue-500/50 transition-all font-mono`})]}),(0,$.jsxs)(`div`,{className:`flex gap-2 pt-2`,children:[(0,$.jsx)(`button`,{className:`hive-btn hive-btn--form-cancel flex-1`,onClick:n,children:`Cancelar`}),(0,$.jsx)(`button`,{className:`hive-btn hive-btn--form-submit flex-1`,onClick:()=>{let e;if(l.trim())try{e=JSON.parse(l.trim())}catch{B.fire(`Error`,`JSON de Headers inválido`,`error`);return}t&&t({apiKey:a,baseUrl:s||void 0,headers:e,numCtx:d.trim()?Number(d.trim()):null})},children:`Guardar`})]}),(0,$.jsx)(`p`,{className:`text-[10px] text-white/20 pt-2`,children:`La API key se guarda cifrada en la base de datos.`})]})}var we=L,Te=d,Ee=f,De=m,Oe=P,ke=xe,Ae=v,je=F,Me=re,Ne=oe,Pe=o,Fe=ce;function Ie({provider:e,updateProvider:t,onManageModels:n}){let[r,i]=(0,Q.useState)(!1),[a,o]=(0,Q.useState)(!1),[s,c]=(0,Q.useState)(``),[l,d]=(0,Q.useState)(!1),[f,p]=(0,Q.useState)(!1),[m,h]=(0,Q.useState)(null),[g,_]=(0,Q.useState)(``),[v,y]=(0,Q.useState)(``),[b,x]=(0,Q.useState)(null),{models:S,toggleModel:C,createModel:w,syncModels:T,deleteModel:E,updateModel:D}=me(),{toggleProvider:O}=z(),k=(0,Q.useMemo)(()=>{let t=S.filter(t=>(t.providerId||t.provider_id)===e.id);return t.length>0?t:e.models||[]},[S,e.id,e.models]),A=k.filter(e=>e.enabled||e.active),ee=n=>{t(e.id,n),i(!1)},te=async t=>{try{await O(e.id,t)}catch(e){console.error(`Failed to toggle provider:`,e)}},j=async(e,t)=>{try{await C(e.id,t)}catch(e){console.error(`Failed to toggle model:`,e)}},ne=async()=>{p(!0);try{await T(e.id),o(!0)}catch(e){console.error(`Failed to sync models:`,e)}finally{p(!1)}},M=e=>{h(e.id),_(e.name),y(e.id)},N=()=>{h(null),_(``),y(``)},re=async e=>{let t=g.trim()||e.name,n=v.trim()||e.id;if(t===e.name&&n===e.id){N();return}try{await D(e.id,{name:t,id:n}),N()}catch(e){console.error(`Failed to update model:`,e)}},ie=async e=>{x(e.id);try{await E(e.id)}catch(e){console.error(`Failed to delete model:`,e)}finally{x(null)}},P=async()=>{let t=s.trim();if(t){d(!0);try{await w(e.id,t),c(``)}catch(e){console.error(`Failed to add model:`,e)}finally{d(!1)}}},F=!!e.active,I=e.base_url||e.baseUrl,L=e.id===`ollama`||I?.includes(`localhost`)||I?.includes(`127.0.0.1`);return(0,$.jsxs)(`div`,{className:`hive-card group overflow-hidden flex flex-col gap-0 transition-all duration-500 ${F?`hive-card--active`:`opacity-70 grayscale-[0.5] hover:grayscale-0 hover:opacity-100`}`,children:[(0,$.jsx)(`div`,{className:`hive-card-body pb-3`,children:(0,$.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-3 min-w-0`,children:[(0,$.jsx)(`div`,{className:`shrink-0 h-10 w-10 sm:h-11 sm:w-11 rounded-xl flex items-center justify-center border transition-all duration-500 ${F?`bg-blue-500/10 border-blue-500/30 text-blue-400 shadow-[0_0_16px_rgba(59,130,246,0.15)]`:`bg-white/5 border-white/10 text-white/30`}`,children:(0,$.jsx)(De,{className:`h-5 w-5`})}),(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2 mb-0.5`,children:[(0,$.jsx)(`h3`,{className:`font-black text-white tracking-tight text-base sm:text-lg uppercase leading-none truncate`,children:e.name}),F&&(0,$.jsx)(`div`,{className:`hive-status-dot--active h-1.5 w-1.5 shrink-0`})]}),(0,$.jsx)(`p`,{className:`text-[11px] text-white/35 font-medium leading-none truncate`,children:e.id})]})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0`,children:[(0,$.jsx)(`span`,{className:`hidden sm:block text-[10px] font-black tracking-widest ${F?`text-blue-400`:`text-white/30`}`,children:F?`ON`:`OFF`}),(0,$.jsx)(u,{checked:F,onCheckedChange:te,className:`data-[state=checked]:bg-blue-500`})]})]})}),(0,$.jsxs)(`div`,{className:`px-5 pb-3 space-y-2 border-b border-white/5`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,$.jsx)(ke,{className:`h-3.5 w-3.5 shrink-0 ${e.has_api_key?`text-emerald-400`:L?`text-amber-400`:`text-white/20`}`}),(0,$.jsx)(`span`,{className:`text-[11px] font-mono truncate`,children:e.masked_api_key?(0,$.jsx)(`span`,{className:`text-white/50`,children:e.masked_api_key}):e.has_api_key?(0,$.jsx)(`span`,{className:`text-white/50`,children:`••••••••••••••••`}):L?(0,$.jsx)(`span`,{className:`text-amber-400/70`,children:`Local — sin API key`}):(0,$.jsx)(`span`,{className:`text-white/25`,children:`Sin API key`})})]}),I&&(0,$.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,$.jsx)(Ae,{className:`h-3.5 w-3.5 shrink-0 text-white/20`}),(0,$.jsx)(`span`,{className:`text-[11px] text-white/40 truncate font-mono`,children:I})]}),L&&(0,$.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,$.jsx)(De,{className:`h-3.5 w-3.5 shrink-0 text-white/20`}),(0,$.jsxs)(`span`,{className:`text-[11px] text-white/40 font-mono`,children:[`ctx: `,(0,$.jsx)(`span`,{className:e.num_ctx?`text-amber-400/70`:`text-white/25`,children:e.num_ctx?`${e.num_ctx.toLocaleString()} tokens`:`32 768 (default)`})]})]})]}),(0,$.jsxs)(`div`,{className:`px-5 py-3 flex-1`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2 mb-2`,children:[(0,$.jsxs)(`button`,{type:`button`,className:`flex items-center gap-2 flex-1 text-left text-[10px] font-black uppercase tracking-widest text-white/40 hover:text-white transition-colors`,onClick:()=>o(!a),children:[a?(0,$.jsx)(Te,{className:`h-3 w-3`}):(0,$.jsx)(Ee,{className:`h-3 w-3`}),`MODELOS`,(0,$.jsxs)(`span`,{className:`hive-tag scale-90 origin-left`,children:[A.length,`/`,k.length]})]}),L&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`span`,{className:`text-[9px] font-semibold text-amber-400/70 bg-amber-400/10 border border-amber-400/20 rounded px-1.5 py-0.5 leading-none whitespace-nowrap`,children:`Actualiza modelos locales`}),(0,$.jsx)(`button`,{type:`button`,onClick:ne,disabled:f,title:`Sincronizar modelos instalados en Ollama`,className:`h-6 w-6 flex items-center justify-center rounded-md text-white/30 hover:text-amber-400 hover:bg-amber-400/10 disabled:opacity-40 transition-colors`,children:(0,$.jsx)(je,{className:`h-3 w-3 ${f?`animate-spin`:``}`})})]})]}),!a&&k.length>0&&(0,$.jsxs)(`div`,{className:`flex flex-wrap gap-1 mt-1`,children:[k.slice(0,3).map(e=>(0,$.jsx)(`span`,{className:`hive-tag text-[10px] ${e.enabled||e.active?``:`opacity-40`}`,children:e.name.split(`/`).pop()||e.name},e.id)),k.length>3&&(0,$.jsxs)(`span`,{className:`hive-tag text-[10px] text-white/30`,children:[`+`,k.length-3]})]}),a&&(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsxs)(`div`,{className:`hive-scroll max-h-44 overflow-y-auto flex flex-col gap-0.5 pr-1`,children:[k.length===0&&(0,$.jsx)(`p`,{className:`text-[11px] text-white/25 py-2 text-center`,children:`Sin modelos configurados`}),k.map(e=>{let t=e.enabled||!!e.active,n=m===e.id;return(0,$.jsx)(`div`,{className:`rounded-lg transition-colors ${t&&!n||n?`bg-white/5`:`bg-transparent opacity-40`}`,children:n?(0,$.jsxs)(`div`,{className:`flex flex-col gap-1 px-2.5 py-1.5`,children:[(0,$.jsx)(`input`,{type:`text`,value:g,onChange:e=>_(e.target.value),placeholder:`Display name`,className:`w-full bg-white/5 border border-white/10 rounded-md px-2 h-7 text-[11px] text-white/70 placeholder-white/20 focus:outline-none focus:border-blue-500/50 transition-all`}),(0,$.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,$.jsx)(`input`,{type:`text`,value:v,onChange:e=>y(e.target.value),placeholder:`API model ID`,className:`flex-1 min-w-0 bg-white/5 border border-white/10 rounded-md px-2 h-7 text-[11px] text-white/70 placeholder-white/20 focus:outline-none focus:border-blue-500/50 transition-all font-mono`}),(0,$.jsx)(`button`,{type:`button`,onClick:()=>re(e),className:`shrink-0 h-7 w-7 flex items-center justify-center rounded-md bg-emerald-500/10 border border-emerald-500/20 text-emerald-400 hover:bg-emerald-500/20 transition-colors`,children:(0,$.jsx)(Pe,{className:`h-3 w-3`})}),(0,$.jsx)(`button`,{type:`button`,onClick:N,className:`shrink-0 h-7 w-7 flex items-center justify-center rounded-md bg-white/5 border border-white/10 text-white/40 hover:text-white hover:bg-white/10 transition-colors`,children:(0,$.jsx)(Fe,{className:`h-3 w-3`})})]})]}):(0,$.jsxs)(`div`,{className:`flex items-center justify-between px-2.5 py-1.5`,children:[(0,$.jsx)(`span`,{className:`text-[11px] font-medium text-white truncate flex-1 mr-2`,children:e.name}),(0,$.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0`,children:[(0,$.jsx)(`button`,{type:`button`,onClick:()=>M(e),title:`Editar modelo`,className:`h-5 w-5 flex items-center justify-center rounded text-white/25 hover:text-blue-400 hover:bg-blue-400/10 transition-colors`,children:(0,$.jsx)(Me,{className:`h-3 w-3`})}),(0,$.jsx)(`button`,{type:`button`,onClick:()=>ie(e),disabled:b===e.id,title:`Eliminar modelo`,className:`h-5 w-5 flex items-center justify-center rounded text-white/25 hover:text-red-400 hover:bg-red-400/10 disabled:opacity-40 disabled:cursor-not-allowed transition-colors`,children:(0,$.jsx)(Ne,{className:`h-3 w-3`})}),(0,$.jsx)(u,{checked:t,onCheckedChange:t=>j(e,t),className:`scale-[0.7] origin-right data-[state=checked]:bg-blue-400 ml-0.5`})]})]})},e.id)})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5 pt-1.5 border-t border-white/5`,children:[(0,$.jsx)(`input`,{type:`text`,value:s,onChange:e=>c(e.target.value),onKeyDown:e=>e.key===`Enter`&&P(),placeholder:`nombre-del-modelo`,className:`flex-1 min-w-0 bg-white/5 border border-white/10 rounded-md px-2 h-7 text-[11px] text-white/70 placeholder-white/20 focus:outline-none focus:border-blue-500/50 transition-all font-mono`}),(0,$.jsxs)(`button`,{type:`button`,onClick:P,disabled:l||!s.trim(),className:`shrink-0 h-7 px-2.5 flex items-center gap-1 rounded-md bg-blue-500/10 border border-blue-500/20 text-blue-400 text-[10px] font-black uppercase tracking-wider hover:bg-blue-500/20 disabled:opacity-40 disabled:cursor-not-allowed transition-colors`,children:[(0,$.jsx)(Oe,{className:`h-3 w-3`}),(0,$.jsx)(`span`,{className:`hidden xs:inline`,children:`ADD`})]})]})]})]}),(0,$.jsxs)(`div`,{className:`px-4 py-3 border-t border-white/5 flex items-center justify-between gap-2 overflow-hidden`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-3 min-w-0 overflow-hidden`,children:[(0,$.jsxs)(`div`,{className:`hive-stat shrink-0`,children:[(0,$.jsx)(`span`,{className:`hive-stat__label`,children:`Uptime`}),(0,$.jsx)(`span`,{className:`hive-stat__value`,children:`99.9%`})]}),(0,$.jsxs)(`div`,{className:`hive-stat shrink-0`,children:[(0,$.jsx)(`span`,{className:`hive-stat__label`,children:`Estado`}),(0,$.jsx)(`span`,{className:`hive-stat__value ${F?`text-emerald-400`:`text-white/30`}`,children:F?`Activo`:`Inactivo`})]})]}),(0,$.jsxs)(ve,{open:r,onOpenChange:i,children:[(0,$.jsx)(he,{asChild:!0,children:(0,$.jsxs)(`button`,{className:`hive-btn hive-btn--ghost h-8 px-2.5 text-[10px] font-black uppercase tracking-widest text-blue-400 shrink-0 flex items-center gap-1.5`,children:[(0,$.jsx)(we,{className:`h-3 w-3`}),(0,$.jsx)(`span`,{children:`CONFIG`})]})}),(0,$.jsxs)(_e,{className:`rounded-xl border border-white/10 p-0 overflow-hidden w-[calc(100vw-2rem)] max-w-md bg-[#09090b]`,children:[(0,$.jsxs)(`div`,{className:`p-5 border-b border-white/5 bg-white/5 relative overflow-hidden`,children:[(0,$.jsx)(`div`,{className:`absolute -top-10 -right-10 h-32 w-32 bg-blue-600/10 rounded-full blur-[80px] pointer-events-none`}),(0,$.jsx)(G,{className:`text-lg font-black text-white uppercase tracking-tighter`,children:e.name}),(0,$.jsx)(W,{className:`text-xs text-white/40 font-medium mt-0.5`,children:`Autenticación y punto de enlace.`})]}),(0,$.jsx)(`div`,{className:`p-5`,children:(0,$.jsx)(Ce,{provider:e,onSave:ee,onCancel:()=>i(!1)})})]})]})]}),(0,$.jsx)(`div`,{className:`hive-strip--bottom ${F?``:`opacity-20`}`})]})}function Le(){let{providers:e,updateProvider:t}=z(),n=e.filter(e=>e.active).length;return(0,$.jsxs)(`div`,{className:`space-y-4`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,$.jsx)(`h3`,{className:`hive-title-section`,children:`Providers de IA`}),(0,$.jsxs)(`span`,{className:`hive-tag hive-tag--provider`,children:[n,` activos / `,e.length,` total`]})]}),(0,$.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 xl:grid-cols-3 gap-4 sm:gap-5`,children:[e.map(e=>(0,$.jsx)(Ie,{provider:e,updateProvider:t},e.id)),e.length===0&&(0,$.jsx)(`div`,{className:`hive-empty-state col-span-full`,children:`No hay providers disponibles.`})]})]})}function Re({onSave:e,onCancel:t}){let[n,r]=(0,Q.useState)(!1),[i,a]=(0,Q.useState)(``),[o,s]=(0,Q.useState)(``),[c,l]=(0,Q.useState)(``),[u,d]=(0,Q.useState)(``),[f,p]=(0,Q.useState)(``),[m,h]=(0,Q.useState)(``),v=o.toLowerCase()===`ollama`||u.includes(`localhost`)||u.includes(`127.0.0.1`);return(0,$.jsxs)(`div`,{className:`space-y-3`,children:[(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(U,{className:`hive-label`,children:`Nombre del Provider`}),(0,$.jsx)(V,{value:i,onChange:e=>a(e.target.value),placeholder:`Mi Provider Personalizado`,className:`hive-input !h-8 text-xs`}),(0,$.jsx)(`p`,{className:`text-[10px] text-white/30`,children:`Se usará como identificador interno`})]}),(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(U,{className:`hive-label`,children:`Tipo de Provider`}),(0,$.jsx)(V,{value:o,onChange:e=>s(e.target.value),placeholder:`openai, anthropic, ollama...`,className:`hive-input !h-8 text-xs`}),(0,$.jsx)(`p`,{className:`text-[10px] text-white/30`,children:`Ej: openai, anthropic, ollama, custom...`})]}),(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`div`,{className:`flex items-center justify-between`,children:(0,$.jsx)(U,{className:`hive-label`,children:`API Key`})}),(0,$.jsxs)(`div`,{className:`relative`,children:[(0,$.jsx)(V,{type:n?`text`:`password`,value:c,onChange:e=>l(e.target.value),placeholder:v?`Opcional para providers locales`:`sk-...`,className:`hive-input !h-8 text-xs pr-8`}),(0,$.jsx)(`button`,{type:`button`,onClick:()=>r(!n),className:`absolute right-0 top-0 h-8 w-8 flex items-center justify-center text-white/40 hover:text-white`,children:n?(0,$.jsx)(g,{className:`h-3 w-3`}):(0,$.jsx)(_,{className:`h-3 w-3`})})]})]}),(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(U,{className:`hive-label`,children:`Base URL (opcional)`}),(0,$.jsx)(V,{value:u,onChange:e=>d(e.target.value),placeholder:`https://api.example.com o http://localhost:11434`,className:`hive-input !h-8 text-xs`})]}),v&&(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,$.jsx)(U,{className:`hive-label`,children:`Context Window (num_ctx)`}),(0,$.jsx)(`span`,{className:`text-[10px] text-white/30`,children:`tokens — por defecto 32 768`})]}),(0,$.jsx)(V,{type:`number`,value:m,onChange:e=>h(e.target.value),placeholder:`32768`,min:512,step:512,className:`hive-input !h-8 text-xs font-mono`}),(0,$.jsx)(`p`,{className:`text-[10px] text-amber-400/60`,children:`Aumenta si ves errores de contexto.`})]}),(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`div`,{className:`flex items-center justify-between`,children:(0,$.jsx)(U,{className:`hive-label`,children:`Custom Headers (JSON)`})}),(0,$.jsx)(`textarea`,{value:f,onChange:e=>p(e.target.value),placeholder:`{ "x-custom-header": "value" }`,rows:3,className:`w-full bg-white/5 border border-white/10 rounded-md p-2 text-xs text-white/70 focus:outline-none focus:border-blue-500/50 transition-all font-mono`})]}),(0,$.jsxs)(`div`,{className:`flex gap-2 pt-2`,children:[(0,$.jsx)(`button`,{className:`hive-btn hive-btn--form-cancel flex-1`,onClick:t,children:`Cancelar`}),(0,$.jsx)(`button`,{className:`hive-btn hive-btn--form-submit flex-1`,onClick:()=>{if(!i.trim()){B.fire(`Error`,`El nombre del provider es requerido`,`error`);return}if(!o){B.fire(`Error`,`Selecciona un tipo de provider`,`error`);return}if(!c.trim()&&!v){B.fire(`Error`,`La API Key es requerida para este provider`,`error`);return}let t;if(f.trim())try{t=JSON.parse(f.trim())}catch{B.fire(`Error`,`JSON de Headers inválido`,`error`);return}e({id:i.trim().toLowerCase().replace(/\s+/g,`-`),name:i.trim(),type:o,apiKey:c.trim()||``,baseUrl:u.trim()||void 0,headers:t,numCtx:m.trim()?Number(m.trim()):null})},children:`Crear Provider`})]}),(0,$.jsx)(`p`,{className:`text-[10px] text-white/20 pt-2`,children:`La API key se guarda cifrada en la base de datos.`})]})}var ze={chat:`Chat`,vision:`Vision`,json_mode:`JSON`,function_calling:`Functions`,streaming:`Stream`,embeddings:`Embed`,image_generation:`Imagen`,code:`Codigo`,reasoning:`Razonamiento`,transcription:`STT`,translation:`Traduccion`,tts:`TTS`,speech:`Voz`,high_quality:`HQ`,ocr:`OCR`};function Be({capabilities:e}){let t=[];if(typeof e==`string`)try{t=JSON.parse(e)}catch{t=[]}else Array.isArray(e)&&(t=e);return t.length===0?null:(0,$.jsx)($.Fragment,{children:t.map(e=>(0,$.jsx)(K,{variant:`outline`,className:`text-[10px] py-0 h-4`,children:ze[e]??e},e))})}function Ve({model:e}){let{toggleModel:t}=me();return(0,$.jsx)(Z,{className:e.active?``:`opacity-70 bg-muted/30`,children:(0,$.jsxs)(J,{className:`flex items-center gap-4 p-3`,children:[(0,$.jsxs)(`div`,{className:`flex-1 space-y-1`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`p`,{className:`text-sm font-semibold`,children:e.name}),(0,$.jsx)(K,{variant:`secondary`,className:`text-[10px]`,children:e.providerId||e.provider_id})]}),e.contextWindow&&(0,$.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[(e.contextWindow/1e3).toFixed(0),`K tokens contexto`]}),(0,$.jsx)(`div`,{className:`flex flex-wrap items-center gap-1 pt-1`,children:(0,$.jsx)(Be,{capabilities:e.capabilities})})]}),(0,$.jsxs)(`div`,{className:`flex flex-col items-end gap-2`,children:[(0,$.jsx)(u,{checked:!!e.active,onCheckedChange:n=>t(e.id,n)}),(0,$.jsx)(K,{variant:e.active?`default`:`secondary`,className:`text-[10px]`,children:e.active?`Activo`:`Inactivo`})]})]})})}function He(e){if(!e)return[];if(typeof e==`string`)try{return JSON.parse(e)}catch{return[]}return Array.isArray(e)?e:[]}function Ue(){let{availableModels:e,activeProviders:t}=z(),n=H(e=>e.fetchAll),[r,o]=(0,Q.useState)(``),[u,d]=(0,Q.useState)(`all`);(0,Q.useEffect)(()=>{n(!0)},[n]);let f=(0,Q.useMemo)(()=>e.filter(e=>{let t=He(e.capabilities),n=t.includes(`vision`)||t.includes(`image_generation`)||t.includes(`ocr`),i=e.name.toLowerCase().includes(r.toLowerCase())||e.id.toLowerCase().includes(r.toLowerCase()),a=u===`all`||e.providerId===u||e.provider_id===u;return n&&i&&a}),[e,r,u]);return(0,$.jsxs)(`div`,{className:`space-y-4`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,$.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,$.jsx)(`h3`,{className:`text-sm font-semibold`,children:`Modelos de Imagen / Vision`})}),(0,$.jsx)(K,{variant:`secondary`,children:f.length})]}),(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Estos modelos pueden procesar imagenes y documentos visuales. Si el agente usa uno de estos modelos, las imagenes se envian directamente. Si no, se usa OCR para extraer el texto.`}),(0,$.jsxs)(`div`,{className:`flex gap-2`,children:[(0,$.jsxs)(`div`,{className:`relative flex-1`,children:[(0,$.jsx)(I,{className:`absolute left-2 top-2 h-4 w-4 text-muted-foreground`}),(0,$.jsx)(V,{placeholder:`Buscar modelo...`,className:`h-8 pl-8 text-sm`,value:r,onChange:e=>o(e.target.value)})]}),(0,$.jsxs)(s,{value:u,onValueChange:d,children:[(0,$.jsx)(l,{className:`h-8 w-40 text-sm`,children:(0,$.jsx)(a,{placeholder:`Provider`})}),(0,$.jsxs)(c,{children:[(0,$.jsx)(i,{value:`all`,children:`Todos`}),t.map(e=>(0,$.jsx)(i,{value:e.id,children:e.name},e.id))]})]})]}),(0,$.jsx)(ye,{className:`h-[calc(100vh-26rem)]`,children:(0,$.jsxs)(`div`,{className:`space-y-2`,children:[f.map(e=>(0,$.jsx)(Ve,{model:e},e.id)),f.length===0&&(0,$.jsxs)(`div`,{className:`hive-empty-state`,children:[(0,$.jsx)(_,{className:`h-8 w-8 mx-auto mb-2 text-muted-foreground`}),(0,$.jsx)(`p`,{children:`No hay modelos con capacidad de vision.`}),(0,$.jsx)(`p`,{className:`text-xs mt-1`,children:`Habilita modelos con capability "vision" en la tab Providers.`})]})]})})]})}function We({open:e,onOpenChange:t}){let{availableTTSModels:n,fetchAvailableTTSModels:r,downloadTTSModel:i,isDownloadingModel:a,downloadLogs:s,fetchDownloadLogs:c}=ue(),[l,u]=(0,Q.useState)(!1);(0,Q.useEffect)(()=>{e&&d()},[e]);let d=async()=>{u(!0),await r(),u(!1)},f=async e=>{await i(e)},p=e=>{switch(e){case`high`:return`bg-green-500/20 text-green-400 border-green-500/30`;case`medium`:return`bg-yellow-500/20 text-yellow-400 border-yellow-500/30`;case`low`:return`bg-zinc-500/20 text-zinc-400 border-zinc-500/30`}};return(0,$.jsx)(ve,{open:e,onOpenChange:t,children:(0,$.jsxs)(_e,{className:`max-w-3xl max-h-[80vh] overflow-hidden flex flex-col`,children:[(0,$.jsxs)(ge,{children:[(0,$.jsx)(G,{className:`flex items-center gap-2`,children:`📦 Gestionar Modelos TTS`}),(0,$.jsx)(W,{children:`Descarga modelos de voz adicionales para Piper TTS. Cada modelo incluye el archivo de voz (.onnx) y su configuración (.json).`})]}),(0,$.jsxs)(`div`,{className:`flex-1 overflow-auto mt-4`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between mb-4`,children:[(0,$.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,$.jsxs)(K,{variant:`outline`,children:[n.filter(e=>e.installed).length,` / `,n.length,` instalados`]})}),(0,$.jsxs)(R,{size:`sm`,variant:`ghost`,onClick:d,disabled:l||a,className:`gap-2`,children:[(0,$.jsx)(F,{className:`h-4 w-4 ${l?`animate-spin`:``}`}),`Actualizar`]})]}),l&&!n.length?(0,$.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,$.jsx)(b,{className:`h-6 w-6 animate-spin text-muted-foreground`})}):n.length===0?(0,$.jsx)(`div`,{className:`text-center py-8 text-muted-foreground`,children:`No hay modelos disponibles`}):(0,$.jsxs)(te,{children:[(0,$.jsx)(x,{children:(0,$.jsxs)(O,{children:[(0,$.jsx)(T,{children:`Modelo`}),(0,$.jsx)(T,{children:`Idioma`}),(0,$.jsx)(T,{children:`Calidad`}),(0,$.jsx)(T,{children:`Tamaño`}),(0,$.jsx)(T,{children:`Estado`}),(0,$.jsx)(T,{className:`text-right`,children:`Acciones`})]})}),(0,$.jsx)(D,{children:n.map(e=>(0,$.jsxs)(O,{children:[(0,$.jsx)(A,{className:`font-medium`,children:e.name}),(0,$.jsx)(A,{children:e.language}),(0,$.jsx)(A,{children:(0,$.jsx)(K,{className:p(e.quality),children:e.quality})}),(0,$.jsx)(A,{className:`text-muted-foreground`,children:e.size}),(0,$.jsx)(A,{children:e.installed?(0,$.jsxs)(K,{className:`bg-green-500/20 text-green-400 border-green-500/30 gap-1`,children:[(0,$.jsx)(o,{className:`h-3 w-3`}),`Instalado`]}):a&&s.some(t=>t.includes(e.name))?(0,$.jsxs)(K,{className:`bg-blue-500/20 text-blue-400 border-blue-500/30 gap-1`,children:[(0,$.jsx)(b,{className:`h-3 w-3 animate-spin`}),`Descargando`]}):(0,$.jsx)(K,{variant:`secondary`,className:`bg-zinc-700/50 text-zinc-400`,children:`No instalado`})}),(0,$.jsx)(A,{className:`text-right`,children:e.installed?(0,$.jsxs)(R,{size:`sm`,variant:`ghost`,disabled:!0,className:`gap-2 opacity-50`,children:[(0,$.jsx)(o,{className:`h-4 w-4`}),`Instalado`]}):(0,$.jsxs)(R,{size:`sm`,onClick:()=>f(e.id),disabled:a,className:`gap-2`,children:[(0,$.jsx)(h,{className:`h-4 w-4`}),`Descargar`]})})]},e.id))})]}),s.length>0&&(0,$.jsxs)(`div`,{className:`mt-4`,children:[(0,$.jsx)(`div`,{className:`text-sm font-medium mb-2`,children:`Progreso de descarga:`}),(0,$.jsx)(`div`,{className:`bg-black/40 rounded-md border border-zinc-700/50 p-3 h-32 overflow-y-auto font-mono text-xs text-zinc-300`,children:s.map((e,t)=>(0,$.jsx)(`div`,{className:e.startsWith(`[error]`)?`text-red-400`:e.startsWith(`✓`)?`text-green-400`:``,children:e},t))})]})]})]})})}function Ge(){let{localTTS:e,fetchLocalTTSStatus:t,installLocalTTS:n,startLocalTTS:r,stopLocalTTS:i}=ue(),[a,o]=(0,Q.useState)(!1),[s,c]=(0,Q.useState)(!1),[l,u]=(0,Q.useState)([]),[d,f]=(0,Q.useState)(``),[p,m]=(0,Q.useState)(!1),g=(0,Q.useRef)(null),_=(0,Q.useRef)(null);(0,Q.useEffect)(()=>{t()},[t]),(0,Q.useEffect)(()=>(e.installing?g.current=setInterval(()=>{t(),s&&v()},3e3):g.current&&clearInterval(g.current),()=>{g.current&&clearInterval(g.current)}),[e.installing,s,t]),(0,Q.useEffect)(()=>{_.current&&(_.current.scrollTop=_.current.scrollHeight)},[l]);let v=async()=>{try{let e=await pe(`/api/tts-local/logs`);u(e.logs),f(e.ttsRoot)}catch{}},y=async()=>{o(!0),c(!0);try{await n(),await v()}finally{o(!1)}},b=async()=>{o(!0);try{await r()}finally{o(!1)}},x=async()=>{o(!0);try{await i()}finally{o(!1)}},S=async()=>{c(e=>!e),s||await v()},{installed:T,running:E,piperExists:D,voiceExists:O,port:k}=e,A=e.installing;return(0,$.jsxs)(Z,{className:`relative overflow-hidden col-span-full ${E?`border-blue-500/30 bg-blue-500/[0.02]`:``}`,children:[(0,$.jsx)(q,{children:(0,$.jsxs)(`div`,{className:`flex items-start justify-between flex-wrap gap-3`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,$.jsx)(`span`,{className:`text-3xl`,children:`🎙️`}),(0,$.jsxs)(`div`,{children:[(0,$.jsxs)(Y,{className:`text-lg flex items-center gap-2`,children:[`Piper TTS`,(0,$.jsx)(K,{variant:`outline`,className:`text-[10px] px-1.5 py-0 font-normal border-zinc-600 text-zinc-400`,children:`Local · Offline`})]}),(0,$.jsx)(X,{className:`text-xs`,children:`TTS sin internet — binario nativo, sin Python, sin Docker. Fallback cuando no hay providers online.`})]})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[A?(0,$.jsxs)(K,{className:`bg-yellow-500/20 text-yellow-400 border-yellow-500/30 gap-1`,children:[(0,$.jsx)(F,{className:`h-3 w-3 animate-spin`}),`Instalando…`]}):T?(0,$.jsx)(K,{className:`bg-green-500/20 text-green-400 border-green-500/30`,children:`Instalado`}):(0,$.jsx)(K,{variant:`secondary`,className:`bg-zinc-700/50 text-zinc-400`,children:`No instalado`}),T&&(E?(0,$.jsxs)(K,{className:`bg-blue-500/20 text-blue-400 border-blue-500/30 gap-1`,children:[(0,$.jsx)(C,{className:`h-3 w-3`}),`Servidor :`,k]}):(0,$.jsxs)(K,{variant:`secondary`,className:`bg-zinc-700/50 text-zinc-400 gap-1`,children:[(0,$.jsx)(w,{className:`h-3 w-3`}),`Detenido`]}))]})]})}),(0,$.jsxs)(J,{className:`space-y-4`,children:[!T&&!A&&(0,$.jsxs)(`div`,{className:`grid grid-cols-2 gap-2 text-xs text-muted-foreground`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5 ${D?`text-green-400`:``}`,children:[(0,$.jsx)(`span`,{children:D?`✓`:`○`}),` Binario Piper (~8 MB)`]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5 ${O?`text-green-400`:``}`,children:[(0,$.jsx)(`span`,{children:O?`✓`:`○`}),` Voz española (~60 MB)`]})]}),T&&(0,$.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Voz: `,(0,$.jsx)(`code`,{className:`text-zinc-300`,children:e.voices?.[0]||`N/A`}),` · Puerto:`,` `,(0,$.jsx)(`code`,{className:`text-zinc-300`,children:k}),` · Configurable con`,` `,(0,$.jsx)(`code`,{className:`text-zinc-300`,children:`TTS_PORT`}),` / `,(0,$.jsx)(`code`,{className:`text-zinc-300`,children:`TTS_VOICE`})]}),(0,$.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[!T&&!A&&(0,$.jsxs)(R,{size:`sm`,onClick:y,disabled:a,className:`gap-2`,children:[(0,$.jsx)(h,{className:`h-3.5 w-3.5`}),`Instalar Piper (~68 MB)`]}),A&&(0,$.jsxs)(R,{size:`sm`,disabled:!0,className:`gap-2 opacity-70`,children:[(0,$.jsx)(F,{className:`h-3.5 w-3.5 animate-spin`}),`Descargando…`]}),T&&!E&&(0,$.jsxs)(R,{size:`sm`,onClick:b,disabled:a,className:`gap-2 bg-blue-600 hover:bg-blue-500 text-white`,children:[(0,$.jsx)(ie,{className:`h-3.5 w-3.5`}),`Iniciar servidor`]}),E&&(0,$.jsxs)(R,{size:`sm`,variant:`outline`,onClick:x,disabled:a,className:`gap-2 border-red-500/40 text-red-400 hover:bg-red-500/10`,children:[(0,$.jsx)(N,{className:`h-3.5 w-3.5`}),`Detener servidor`]}),T&&(0,$.jsxs)(R,{size:`sm`,variant:`outline`,onClick:()=>m(!0),disabled:a,className:`gap-2`,children:[(0,$.jsx)(Se,{className:`h-3.5 w-3.5`}),`Gestionar modelos`,e.voices&&e.voices.length>0&&(0,$.jsx)(K,{variant:`secondary`,className:`ml-1 text-[10px] px-1`,children:e.voices.length})]}),(0,$.jsx)(R,{size:`sm`,variant:`ghost`,onClick:()=>t(),title:`Actualizar estado`,className:`text-zinc-400`,children:(0,$.jsx)(F,{className:`h-3.5 w-3.5`})}),(0,$.jsxs)(R,{size:`sm`,variant:`ghost`,onClick:S,className:`gap-1.5 text-zinc-400 text-xs`,children:[(0,$.jsx)(ae,{className:`h-3.5 w-3.5`}),s?`Ocultar log`:`Ver log`]})]}),A&&(0,$.jsx)(`p`,{className:`text-xs text-yellow-400/80`,children:`Descargando binario y modelo de voz… puede tardar 1-3 min. El estado se actualiza automáticamente.`}),s&&(0,$.jsxs)(`div`,{className:`space-y-1`,children:[d&&(0,$.jsxs)(`p`,{className:`text-[10px] text-zinc-500 font-mono`,children:[`ruta: `,d]}),(0,$.jsx)(`div`,{ref:_,className:`bg-black/40 rounded-md border border-zinc-700/50 p-3 h-40 overflow-y-auto font-mono text-[11px] text-zinc-300 leading-relaxed`,children:l.length===0?(0,$.jsx)(`span`,{className:`text-zinc-600`,children:`Sin registros aún. Inicia la instalación para ver el progreso.`}):l.map((e,t)=>(0,$.jsx)(`div`,{className:e.startsWith(`[stderr]`)||e.startsWith(`[error]`)?`text-red-400`:``,children:e},t))})]}),(0,$.jsx)(We,{open:p,onOpenChange:m})]})]})}var Ke={groq:{name:`Groq`,description:`STT (Speech-to-Text) - Transcripcion de audio ultra-rapida`,logo:`🔴`,consoleUrl:`https://console.groq.com/keys`},elevenlabs:{name:`ElevenLabs`,description:`TTS (Text-to-Speech) - Voces neuronales de alta calidad`,logo:`🎙️`,consoleUrl:`https://elevenlabs.io/app/settings/api-keys`},openai:{name:`OpenAI`,description:`STT/TTS - Whisper y TTS-1`,logo:`🟢`,consoleUrl:`https://platform.openai.com/api-keys`},gemini:{name:`Google Gemini`,description:`TTS - Voces de Gemini`,logo:`🔵`,consoleUrl:`https://aistudio.google.com/app/apikey`},qwen:{name:`Qwen (Alibaba)`,description:`TTS - Voces de Qwen`,logo:`🟣`,consoleUrl:`https://dashscope.console.aliyun.com/apiKey`},piper:{name:`Piper TTS (Local)`,description:`TTS offline — sin internet, sin API key.`,logo:`🖥️`,consoleUrl:`/settings/voz`,noApiKey:!0}};function qe(e){if(!e)return[];if(typeof e==`string`)try{return JSON.parse(e)}catch{return[]}return Array.isArray(e)?e:[]}function Je(){let{availableModels:e,activeProviders:t}=z(),{voiceProviders:n,configuredVoiceProviders:r,fetchVoiceProviders:u,fetchConfiguredVoiceProviders:d,saveVoiceProviderKey:f}=de(),p=H(e=>e.fetchAll),[m,h]=(0,Q.useState)(null),[g,_]=(0,Q.useState)(``),[v,b]=(0,Q.useState)(!1),[x,S]=(0,Q.useState)(!1),[C,w]=(0,Q.useState)(``),[T,E]=(0,Q.useState)(`all`);(0,Q.useEffect)(()=>{u(),d(),p(!0)},[u,d,p]);let D=async e=>{if(g.trim()){b(!0);try{await f(e,g.trim()),await d(),h(null),_(``)}catch(e){console.error(`Failed to save API key:`,e)}finally{b(!1)}}},O=n.length>0?n:Object.keys(Ke),A=(0,Q.useMemo)(()=>e.filter(e=>{let t=e.model_type===`stt`||e.model_type===`tts`,n=qe(e.capabilities),r=n.includes(`transcription`)||n.includes(`tts`)||n.includes(`speech`),i=e.name.toLowerCase().includes(C.toLowerCase())||e.id.toLowerCase().includes(C.toLowerCase()),a=T===`all`||e.providerId===T||e.provider_id===T;return(t||r)&&i&&a}),[e,C,T]);return(0,$.jsxs)(`div`,{className:`space-y-6`,children:[(0,$.jsxs)(`div`,{className:`space-y-4`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,$.jsx)(`h3`,{className:`text-sm font-semibold`,children:`Modelos de Voz (STT / TTS)`}),(0,$.jsx)(K,{variant:`secondary`,children:A.length})]}),(0,$.jsxs)(`div`,{className:`flex gap-2`,children:[(0,$.jsxs)(`div`,{className:`relative flex-1`,children:[(0,$.jsx)(I,{className:`absolute left-2 top-2 h-4 w-4 text-muted-foreground`}),(0,$.jsx)(V,{placeholder:`Buscar modelo...`,className:`h-8 pl-8 text-sm`,value:C,onChange:e=>w(e.target.value)})]}),(0,$.jsxs)(s,{value:T,onValueChange:E,children:[(0,$.jsx)(l,{className:`h-8 w-40 text-sm`,children:(0,$.jsx)(a,{placeholder:`Provider`})}),(0,$.jsxs)(c,{children:[(0,$.jsx)(i,{value:`all`,children:`Todos`}),t.map(e=>(0,$.jsx)(i,{value:e.id,children:e.name},e.id))]})]})]}),(0,$.jsx)(ye,{className:`h-60`,children:(0,$.jsxs)(`div`,{className:`space-y-2`,children:[A.map(e=>(0,$.jsx)(Ve,{model:e},e.id)),A.length===0&&(0,$.jsxs)(`div`,{className:`hive-empty-state`,children:[(0,$.jsx)(M,{className:`h-8 w-8 mx-auto mb-2 text-muted-foreground`}),(0,$.jsx)(`p`,{children:`No hay modelos de voz disponibles.`})]})]})})]}),(0,$.jsxs)(`div`,{className:`space-y-4`,children:[(0,$.jsx)(`h3`,{className:`text-sm font-semibold`,children:`API Keys de Voz`}),(0,$.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-2`,children:[(0,$.jsx)(Ge,{}),O.map(e=>{let t=Ke[e]||{name:e,description:``,logo:`🔌`,consoleUrl:`#`},n=r[e]===!0,i=m===e;return(0,$.jsxs)(Z,{className:`relative overflow-hidden ${n?`border-green-500/30 bg-green-500/[0.02]`:``}`,children:[(0,$.jsx)(q,{children:(0,$.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,$.jsx)(`span`,{className:`text-3xl`,children:t.logo}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(Y,{className:`text-lg`,children:t.name}),(0,$.jsx)(X,{className:`text-xs`,children:t.description})]})]}),t.noApiKey?(0,$.jsx)(K,{variant:`outline`,className:`bg-zinc-700/40 text-zinc-300 border-zinc-600`,children:`Sin API key`}):n?(0,$.jsxs)(K,{variant:`default`,className:`bg-green-500/20 text-green-400 border-green-500/30`,children:[(0,$.jsx)(o,{className:`h-3 w-3 mr-1`}),`Configurado`]}):(0,$.jsx)(K,{variant:`secondary`,className:`bg-yellow-500/20 text-yellow-400 border-yellow-500/30`,children:`Sin configurar`})]})}),(0,$.jsx)(J,{className:`space-y-4`,children:t.noApiKey?(0,$.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:t.description}):i?(0,$.jsxs)(`div`,{className:`space-y-3`,children:[(0,$.jsxs)(`div`,{children:[(0,$.jsx)(U,{htmlFor:`api-key-${e}`,children:`API Key`}),(0,$.jsxs)(`div`,{className:`flex gap-2 mt-1`,children:[(0,$.jsx)(V,{id:`api-key-${e}`,type:x?`text`:`password`,placeholder:`sk-...`,value:g,onChange:e=>_(e.target.value),className:`flex-1 font-mono text-sm`,autoFocus:!0}),(0,$.jsx)(R,{variant:`outline`,size:`icon`,onClick:()=>S(!x),title:x?`Ocultar`:`Mostrar`,children:x?(0,$.jsx)(ne,{className:`h-4 w-4`}):(0,$.jsx)(k,{className:`h-4 w-4`})})]})]}),(0,$.jsxs)(`div`,{className:`flex gap-2`,children:[(0,$.jsx)(R,{size:`sm`,onClick:()=>D(e),disabled:v||!g.trim(),className:`flex-1`,children:v?`Guardando...`:`Guardar`}),(0,$.jsx)(R,{size:`sm`,variant:`outline`,onClick:()=>{h(null),_(``)},children:`Cancelar`})]})]}):(0,$.jsxs)(`div`,{className:`space-y-3`,children:[n?(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,$.jsx)(y,{className:`h-4 w-4`}),(0,$.jsx)(`span`,{children:`API key guardada de forma segura (encriptada)`})]}):(0,$.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`Necesitas una API key de `,t.name,` para usar esta funcionalidad.`]}),(0,$.jsxs)(`div`,{className:`flex gap-2`,children:[n?(0,$.jsxs)(R,{size:`sm`,variant:`outline`,onClick:()=>{h(e),_(``)},className:`flex-1`,children:[(0,$.jsx)(y,{className:`h-3 w-3 mr-2`}),`Actualizar API Key`]}):(0,$.jsxs)(R,{size:`sm`,onClick:()=>{h(e),_(``)},className:`flex-1`,children:[(0,$.jsx)(y,{className:`h-3 w-3 mr-2`}),`Configurar API Key`]}),(0,$.jsx)(R,{size:`sm`,variant:`outline`,onClick:()=>window.open(t.consoleUrl,`_blank`),children:`Obtener Key`})]})]})})]},e)})]})]}),(0,$.jsxs)(Z,{children:[(0,$.jsxs)(q,{children:[(0,$.jsx)(Y,{className:`text-lg`,children:`Como funciona?`}),(0,$.jsx)(X,{children:`Configura las API keys de los providers de voz para habilitar STT y TTS en tus canales.`})]}),(0,$.jsxs)(J,{className:`space-y-4 text-sm text-muted-foreground`,children:[(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`strong`,{className:`text-foreground`,children:`STT (Speech-to-Text):`}),` Convierte el audio entrante en texto. Groq Whisper es recomendado por su velocidad.`]}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`strong`,{className:`text-foreground`,children:`TTS (Text-to-Speech):`}),` Convierte las respuestas de texto en audio. ElevenLabs ofrece las voces mas naturales.`]}),(0,$.jsx)(`div`,{className:`pt-2 border-t`,children:(0,$.jsx)(`p`,{className:`text-xs`,children:`Las API keys se guardan encriptadas en la base de datos local de Hive.`})})]})]})]})}function Ye(){let{localLLM:e,localLLMLogs:t,fetchLocalLLMStatus:n,installLocalLLM:r,startLocalLLM:i,stopLocalLLM:a,downloadLLMModel:o,fetchLocalLLMLogs:s}=fe(),[c,l]=(0,Q.useState)(!1),[u,d]=(0,Q.useState)(!1),[f,p]=(0,Q.useState)(``),g=(0,Q.useRef)(null),_=(0,Q.useRef)(null);(0,Q.useEffect)(()=>{n()},[n]),(0,Q.useEffect)(()=>(e.installing||e.downloadingModelId?g.current=setInterval(()=>{n()},3e3):g.current&&clearInterval(g.current),()=>{g.current&&clearInterval(g.current)}),[e.installing,e.downloadingModelId,n]),(0,Q.useEffect)(()=>{_.current&&(_.current.scrollTop=_.current.scrollHeight)},[t]),(0,Q.useEffect)(()=>{if(!u)return;let e=new EventSource(`/api/llm-local/logs?mode=TEXT`);return e.onmessage=e=>{try{let t=JSON.parse(e.data);t.llmRoot&&p(t.llmRoot),(t.logs||t.serverLogs)&&H.setState(e=>({localLLMLogs:[...t.logs||[],...t.serverLogs||[]]}))}catch(e){console.error(`Error parsing SSE log data`,e)}},()=>{e.close()}},[u]);let v=async()=>{l(!0),d(!0);try{await r()}finally{l(!1)}},y=async e=>{l(!0);try{await o(e)}finally{l(!1)}},b=async(e=`TEXT`)=>{l(!0);try{await i(e)}finally{l(!1)}},x=async e=>{l(!0);try{await a(e)}finally{l(!1)}},S=()=>{d(e=>!e)},{installed:C,binaryExists:w,anyModelExists:T,installing:E,downloadingModelId:D,gpu:O,models:k}=e;return(0,$.jsxs)(Z,{className:`relative overflow-hidden col-span-full ${C?`border-amber-500/30 bg-amber-500/[0.02]`:``}`,children:[(0,$.jsx)(q,{children:(0,$.jsxs)(`div`,{className:`flex items-start justify-between flex-wrap gap-3`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,$.jsx)(`span`,{className:`text-3xl`,children:`🤖`}),(0,$.jsxs)(`div`,{children:[(0,$.jsxs)(Y,{className:`text-lg flex items-center gap-2`,children:[`Local LLM (llama-server)`,(0,$.jsx)(K,{variant:`outline`,className:`text-[10px] px-1.5 py-0 font-normal border-zinc-600 text-zinc-400`,children:`Local · Private`})]}),(0,$.jsxs)(X,{className:`text-xs`,children:[`Inferencia local sin internet usando llama-server. Soporta aceleración por GPU (`,O.backend,`).`]})]})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[e.activeServers.map(e=>(0,$.jsxs)(K,{className:`bg-green-500/20 text-green-400 border-green-500/30 gap-1.5`,children:[(0,$.jsxs)(`span`,{className:`relative flex h-2 w-2`,children:[(0,$.jsx)(`span`,{className:`animate-ping absolute inline-flex h-full w-full rounded-full bg-green-400 opacity-75`}),(0,$.jsx)(`span`,{className:`relative inline-flex rounded-full h-2 w-2 bg-green-500`})]}),e.mode,` (`,e.port,`)`]},e.mode)),!e.running&&w&&(0,$.jsx)(K,{variant:`outline`,className:`border-zinc-700 text-zinc-500`,children:`Apagado`}),E?(0,$.jsxs)(K,{className:`bg-yellow-500/20 text-yellow-400 border-yellow-500/30 gap-1`,children:[(0,$.jsx)(F,{className:`h-3 w-3 animate-spin`}),`Configurando…`]}):w?(0,$.jsx)(K,{className:`bg-amber-500/10 text-amber-500 border-amber-500/30`,children:`Binario Listo`}):(0,$.jsx)(K,{variant:`secondary`,className:`bg-zinc-700/50 text-zinc-400`,children:`No configurado`}),O&&(0,$.jsxs)(K,{variant:`outline`,className:`gap-1 border-zinc-700 text-zinc-400`,children:[(0,$.jsx)(m,{className:`h-3 w-3`}),O.deviceName||O.backend]})]})]})}),(0,$.jsxs)(J,{className:`space-y-4`,children:[(0,$.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-4`,children:[(0,$.jsxs)(`div`,{className:`space-y-3`,children:[(0,$.jsxs)(`h4`,{className:`text-sm font-medium flex items-center gap-2`,children:[(0,$.jsx)(be,{className:`h-4 w-4 text-amber-400`}),`Infraestructura`]}),(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between text-xs border border-zinc-800 p-2 rounded bg-zinc-900/50`,children:[(0,$.jsx)(`span`,{className:`text-zinc-400`,children:`Motor llama-server`}),w?(0,$.jsx)(`span`,{className:`text-green-400 font-medium`,children:`✓ Instalado`}):(0,$.jsx)(R,{variant:`link`,size:`sm`,onClick:v,disabled:c||E,className:`h-auto p-0 text-amber-400`,children:`Instalar ahora`})]}),e.activeServers.length>0&&(0,$.jsxs)(`div`,{className:`space-y-1.5 mt-2`,children:[(0,$.jsx)(`p`,{className:`text-[10px] text-zinc-500 uppercase font-bold tracking-wider`,children:`Servidores Activos`}),e.activeServers.map(e=>(0,$.jsxs)(`div`,{className:`flex items-center justify-between text-[11px] bg-zinc-800/30 p-1.5 rounded border border-zinc-700/50`,children:[(0,$.jsx)(`span`,{className:`text-zinc-300 font-medium`,children:e.mode}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsxs)(`span`,{className:`text-zinc-500`,children:[`Puerto `,e.port]}),(0,$.jsx)(R,{variant:`ghost`,size:`icon`,className:`h-5 w-5 text-red-400 hover:text-red-300 hover:bg-red-400/10`,onClick:()=>x(e.mode),disabled:c,children:(0,$.jsx)(N,{className:`h-3 w-3 fill-current`})})]})]},e.mode))]})]})]}),(0,$.jsxs)(`div`,{className:`space-y-3`,children:[(0,$.jsxs)(`h4`,{className:`text-sm font-medium flex items-center gap-2`,children:[(0,$.jsx)(Se,{className:`h-4 w-4 text-amber-400`}),`Modelos Disponibles`]}),(0,$.jsx)(`div`,{className:`space-y-2`,children:k.map(e=>(0,$.jsxs)(`div`,{className:`flex items-center justify-between text-xs border border-zinc-800 p-2 rounded bg-zinc-900/50`,children:[(0,$.jsxs)(`div`,{className:`flex flex-col`,children:[(0,$.jsx)(`span`,{className:`text-zinc-200`,children:e.name}),(0,$.jsx)(`span`,{className:`text-[10px] text-zinc-500`,children:e.size})]}),e.downloaded?(0,$.jsx)(`span`,{className:`text-green-400 font-medium`,children:`✓ Descargado`}):D===e.id?(0,$.jsxs)(`span`,{className:`text-yellow-400 flex items-center gap-1`,children:[(0,$.jsx)(F,{className:`h-3 w-3 animate-spin`}),`Descargando…`]}):(0,$.jsx)(R,{variant:`outline`,size:`sm`,onClick:()=>y(e.id),disabled:c||!!D,className:`h-7 text-[10px] px-2 border-zinc-700`,children:`Descargar`})]},e.id))})]})]}),(0,$.jsxs)(`div`,{className:`flex flex-wrap gap-2 pt-2 border-t border-zinc-800`,children:[!w&&!E&&(0,$.jsxs)(R,{size:`sm`,onClick:v,disabled:c,className:`gap-2 bg-amber-600 hover:bg-amber-500`,children:[(0,$.jsx)(h,{className:`h-3.5 w-3.5`}),`Configurar Local LLM`]}),w&&!E&&(0,$.jsxs)(`div`,{className:`flex flex-wrap gap-2 w-full`,children:[(0,$.jsx)(`div`,{className:`flex gap-1 bg-zinc-900/80 p-1 rounded-lg border border-zinc-800`,children:[`TEXT`,`IMAGE`,`AUDIO`].map(t=>{let n=e.activeServers.some(e=>e.mode===t);return(0,$.jsxs)(R,{size:`sm`,variant:n?`default`:`ghost`,onClick:()=>n?x(t):b(t),disabled:c||!n&&!T,className:`gap-1.5 text-[10px] h-7 px-2.5 ${n?`bg-green-600 hover:bg-green-500 text-white`:`text-zinc-400 hover:text-zinc-200`}`,children:[n?(0,$.jsx)(N,{className:`h-3 w-3 fill-current`}):(0,$.jsx)(ie,{className:`h-3 w-3 fill-current`}),t]},t)})}),e.running&&(0,$.jsxs)(R,{size:`sm`,variant:`outline`,onClick:()=>x(),disabled:c,className:`gap-2 border-red-500/30 text-red-400 hover:bg-red-500/10 h-9`,children:[(0,$.jsx)(N,{className:`h-3.5 w-3.5 fill-current`}),`Apagar Todo`]})]}),(0,$.jsx)(R,{size:`sm`,variant:`ghost`,onClick:()=>n(),title:`Actualizar estado`,className:`text-zinc-400`,children:(0,$.jsx)(F,{className:`h-3.5 w-3.5`})}),(0,$.jsxs)(R,{size:`sm`,variant:`ghost`,onClick:S,className:`gap-1.5 text-zinc-400 text-xs ml-auto`,children:[(0,$.jsx)(ae,{className:`h-3.5 w-3.5`}),u?`Ocultar log`:`Ver log`]})]}),u&&(0,$.jsxs)(`div`,{className:`space-y-1`,children:[f&&(0,$.jsxs)(`p`,{className:`text-[10px] text-zinc-500 font-mono text-right`,children:[`ruta: `,f]}),(0,$.jsx)(`div`,{ref:_,className:`bg-black/40 rounded-md border border-zinc-700/50 p-3 h-48 overflow-y-auto font-mono text-[11px] text-zinc-300 leading-relaxed`,children:t.length===0?(0,$.jsx)(`span`,{className:`text-zinc-600`,children:`Sin registros aún. Inicia la configuración para ver el progreso.`}):t.map((e,t)=>(0,$.jsx)(`div`,{className:e.includes(`[error]`)?`text-red-400`:e.includes(`✓`)?`text-green-400`:``,children:e},t))})]})]})]})}function Xe(e){if(!e)return[];if(typeof e==`string`)try{return JSON.parse(e)}catch{return[]}return Array.isArray(e)?e:[]}function Ze(){let{availableModels:e,activeProviders:t}=z(),n=H(e=>e.fetchAll),[r,o]=(0,Q.useState)(``),[u,d]=(0,Q.useState)(`all`);(0,Q.useEffect)(()=>{n(!0)},[]);let f=(0,Q.useMemo)(()=>e.filter(e=>{let t=Xe(e.capabilities),n=(t.includes(`chat`)||!t.includes(`vision`))&&e.model_type!==`stt`&&e.model_type!==`tts`,i=e.name.toLowerCase().includes(r.toLowerCase())||e.id.toLowerCase().includes(r.toLowerCase()),a=u===`all`||e.providerId===u||e.provider_id===u;return n&&i&&a}),[e,r,u]);return(0,$.jsxs)(`div`,{className:`space-y-6`,children:[(0,$.jsx)(Ye,{}),(0,$.jsxs)(`div`,{className:`space-y-4`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,$.jsx)(`h3`,{className:`text-sm font-semibold`,children:`Modelos de Texto`}),(0,$.jsx)(K,{variant:`secondary`,children:f.length})]}),(0,$.jsxs)(`div`,{className:`flex gap-2`,children:[(0,$.jsxs)(`div`,{className:`relative flex-1`,children:[(0,$.jsx)(I,{className:`absolute left-2 top-2 h-4 w-4 text-muted-foreground`}),(0,$.jsx)(V,{placeholder:`Buscar modelo...`,className:`h-8 pl-8 text-sm`,value:r,onChange:e=>o(e.target.value)})]}),(0,$.jsxs)(s,{value:u,onValueChange:d,children:[(0,$.jsx)(l,{className:`h-8 w-40 text-sm`,children:(0,$.jsx)(a,{placeholder:`Provider`})}),(0,$.jsxs)(c,{children:[(0,$.jsx)(i,{value:`all`,children:`Todos`}),t.map(e=>(0,$.jsx)(i,{value:e.id,children:e.name},e.id))]})]})]}),(0,$.jsx)(ye,{className:`h-[calc(100vh-22rem)]`,children:(0,$.jsxs)(`div`,{className:`space-y-2`,children:[f.map(e=>(0,$.jsx)(Ve,{model:e},e.id)),f.length===0&&(0,$.jsx)(`div`,{className:`hive-empty-state`,children:`No hay modelos de texto disponibles.`})]})})]})]})}var Qe=P,$e=se,et=_,tt=M,nt=le;function rt(){let{providers:e,createProvider:t}=z(),[n,r]=(0,Q.useState)(!1),[i,a]=(0,Q.useState)(`text`);return(0,$.jsxs)(`div`,{className:`space-y-4 mt-6 sm:mt-10`,children:[(0,$.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-3`,children:[(0,$.jsxs)(`div`,{children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-3 mb-2`,children:[(0,$.jsx)(`div`,{className:`hive-page-header__dot`}),(0,$.jsx)(`span`,{className:`hive-page-header__label`,children:`INFRAESTRUCTURA`})]}),(0,$.jsxs)(`h2`,{className:`hive-title-page`,children:[`Providers de IA`,(0,$.jsx)(`span`,{className:`hive-title-page__accent`,children:`.`})]})]}),(0,$.jsxs)(ve,{open:n,onOpenChange:e=>{r(e)},children:[(0,$.jsx)(he,{asChild:!0,children:(0,$.jsxs)(`button`,{className:`hive-btn hive-btn--primary`,children:[(0,$.jsx)(Qe,{className:`mr-1 h-4 w-4`}),`Añadir Provider`]})}),(0,$.jsxs)(_e,{className:`max-w-md`,children:[(0,$.jsxs)(ge,{className:`p-6 border-b border-white/5 bg-white/5 relative overflow-hidden`,children:[(0,$.jsx)(`div`,{className:`hive-glow-blob hive-glow-blob--blue -top-10 -right-10 h-32 w-32 opacity-20`}),(0,$.jsx)(G,{className:`text-xl font-black text-white uppercase tracking-tighter`,children:`Añadir Provider`}),(0,$.jsx)(W,{className:`text-xs text-white/40 font-medium mt-1`,children:`Crea un nuevo provider de IA para tu infraestructura.`})]}),(0,$.jsx)(`div`,{className:`p-6`,children:(0,$.jsx)(Re,{onSave:async e=>{try{await t({id:e.id,name:e.name,base_url:e.baseUrl,api_key:e.apiKey,headers:e.headers,num_ctx:e.numCtx}),r(!1)}catch(e){console.error(`Error creating provider:`,e)}},onCancel:()=>r(!1)})})]})]})]}),(0,$.jsxs)(ee,{value:i,onValueChange:a,className:`w-full`,children:[(0,$.jsxs)(E,{className:`w-full grid grid-cols-4 h-10`,children:[(0,$.jsxs)(j,{value:`text`,className:`gap-1.5 text-xs`,children:[(0,$.jsx)($e,{className:`h-3.5 w-3.5`}),`Texto`]}),(0,$.jsxs)(j,{value:`vision`,className:`gap-1.5 text-xs`,children:[(0,$.jsx)(et,{className:`h-3.5 w-3.5`}),`Imagen`]}),(0,$.jsxs)(j,{value:`voice`,className:`gap-1.5 text-xs`,children:[(0,$.jsx)(tt,{className:`h-3.5 w-3.5`}),`Voz`]}),(0,$.jsxs)(j,{value:`providers`,className:`gap-1.5 text-xs`,children:[(0,$.jsx)(nt,{className:`h-3.5 w-3.5`}),`Providers`]})]}),(0,$.jsx)(S,{value:`text`,className:`mt-4`,children:(0,$.jsx)(Ze,{})}),(0,$.jsx)(S,{value:`vision`,className:`mt-4`,children:(0,$.jsx)(Ue,{})}),(0,$.jsx)(S,{value:`voice`,className:`mt-4`,children:(0,$.jsx)(Je,{})}),(0,$.jsx)(S,{value:`providers`,className:`mt-4`,children:(0,$.jsx)(Le,{})})]})]})}export{rt as ProvidersPage};
@@ -1,9 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-S-ySWqyJ.js";import{_ as t}from"./vendor-charts-Bu2lyBKP.js";import{o as n}from"./vendor-query-DsWPbQdG.js";import{n as r,r as i}from"./utils-3pnRFmFe.js";import{t as a}from"./activity-c3pNngT_.js";import{n as o,t as s}from"./send-B0H5SEIE.js";import{t as c}from"./calendar-B-KZ9RQO.js";import{a as l,c as u,l as d,n as f,r as p,s as m,t as h}from"./switch-C7W2-KEx.js";import{t as g}from"./chevron-down-DIosfU_U.js";import{t as _}from"./chevron-up-CI-W21Fy.js";import{t as v}from"./circle-alert-KuAm2FWh.js";import{t as y}from"./circle-check-6Ard1-2z.js";import{t as b}from"./cpu-KDy6-FAI.js";import{n as x,t as S}from"./eye-D1dB40_o.js";import{t as C}from"./globe-_hUGxQF4.js";import{t as w}from"./hexagon-BaNGQlQj.js";import{t as T}from"./history-BfZVGlZa.js";import{t as E}from"./info-CBZ5-AlC.js";import{t as D}from"./key-Bv5DdTPh.js";import{t as O}from"./loader-circle-C4hhXLgp.js";import{t as k}from"./lock-CkZYexqw.js";import{t as A}from"./pause-Bpy1_s7y.js";import{t as j}from"./pencil-5VdSj-h5.js";import{t as M}from"./play-Cj4osqJZ.js";import{t as N}from"./plus-BQhgZN3A.js";import{t as P}from"./refresh-cw-BfREHVQM.js";import{t as F}from"./search-ChPgnVKj.js";import{n as I,t as L}from"./textarea-5kyuD04X.js";import{t as R}from"./sparkles-r4uJbJAl.js";import{t as z}from"./terminal-C-R5Fckz.js";import{t as ee}from"./trash-2-DXVBRWfh.js";import{t as B}from"./triangle-alert-Bu5seg9O.js";import{t as V}from"./zap-BPHZzXKV.js";import{l as te}from"./vendor-router-CCECILJ0.js";import{r as H}from"./gateway-url-D5uj6Nxg.js";import{B as ne,G as re,H as U,M as W,R as ie,U as ae,V as oe,W as se,Y as ce,f as le,g as G,h as K,j as q,l as ue,m as J,n as de,o as fe,p as Y,q as X,u as pe,z as me}from"./index-CH6sBa3Q.js";import{t as Z}from"./label-0BvGVXvZ.js";import{a as he,c as ge,i as _e,o as ve,r as ye,s as be,t as xe}from"./dialog-DQ3s-LuO.js";import{t as Se}from"./badge-Cli1jnH5.js";import{a as Ce,n as we,o as Te,r as Ee,t as De}from"./card-DFKnZ6ky.js";import"./useProviders-TBnWn-Hq.js";import{t as Oe}from"./scroll-area-BQQPitM8.js";var ke=i(`Briefcase`,[[`path`,{d:`M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16`,key:`jecpp`}],[`rect`,{width:`20`,height:`14`,x:`2`,y:`6`,rx:`2`,key:`i6l2r4`}]]),Ae=i(`ChartColumn`,[[`path`,{d:`M3 3v16a2 2 0 0 0 2 2h16`,key:`c24i48`}],[`path`,{d:`M18 17V9`,key:`2bz60n`}],[`path`,{d:`M13 17V5`,key:`1frdt8`}],[`path`,{d:`M8 17v-3`,key:`17ska0`}]]),je=i(`CodeXml`,[[`path`,{d:`m18 16 4-4-4-4`,key:`1inbqp`}],[`path`,{d:`m6 8-4 4 4 4`,key:`15zrgr`}],[`path`,{d:`m14.5 4-5 16`,key:`e7oirm`}]]),Me=i(`Code`,[[`polyline`,{points:`16 18 22 12 16 6`,key:`z7tu5w`}],[`polyline`,{points:`8 6 2 12 8 18`,key:`1eg1df`}]]),Ne=i(`Copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),Pe=i(`Earth`,[[`path`,{d:`M21.54 15H17a2 2 0 0 0-2 2v4.54`,key:`1djwo0`}],[`path`,{d:`M7 3.34V5a3 3 0 0 0 3 3a2 2 0 0 1 2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.1.9-2 2-2h3.17`,key:`1tzkfa`}],[`path`,{d:`M11 21.95V18a2 2 0 0 0-2-2a2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05`,key:`14pb5j`}],[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),Fe=i(`Hammer`,[[`path`,{d:`m15 12-8.373 8.373a1 1 0 1 1-3-3L12 9`,key:`eefl8a`}],[`path`,{d:`m18 15 4-4`,key:`16gjal`}],[`path`,{d:`m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172V7l-2.26-2.26a6 6 0 0 0-4.202-1.756L9 2.96l.92.82A6.18 6.18 0 0 1 12 8.4V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5`,key:`b7pghm`}]]),Ie=i(`Languages`,[[`path`,{d:`m5 8 6 6`,key:`1wu5hv`}],[`path`,{d:`m4 14 6-6 2-3`,key:`1k1g8d`}],[`path`,{d:`M2 5h12`,key:`or177f`}],[`path`,{d:`M7 2h1`,key:`1t2jsx`}],[`path`,{d:`m22 22-5-10-5 10`,key:`don7ne`}],[`path`,{d:`M14 18h6`,key:`1m8k6r`}]]),Le=i(`MessageCircle`,[[`path`,{d:`M7.9 20A9 9 0 1 0 4 16.1L2 22Z`,key:`vv11sd`}]]),Re=i(`Power`,[[`path`,{d:`M12 2v10`,key:`mnfbl`}],[`path`,{d:`M18.4 6.6a9 9 0 1 1-12.77.04`,key:`obofu9`}]]),ze=i(`Settings2`,[[`path`,{d:`M20 7h-9`,key:`3s1dr2`}],[`path`,{d:`M14 17H5`,key:`gfn3mx`}],[`circle`,{cx:`17`,cy:`17`,r:`3`,key:`18b49y`}],[`circle`,{cx:`7`,cy:`7`,r:`3`,key:`dfmy0x`}]]),Be=i(`ShieldCheck`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),Ve=i(`ShieldOff`,[[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M5 5a1 1 0 0 0-1 1v7c0 5 3.5 7.5 7.67 8.94a1 1 0 0 0 .67.01c2.35-.82 4.48-1.97 5.9-3.71`,key:`1jlk70`}],[`path`,{d:`M9.309 3.652A12.252 12.252 0 0 0 11.24 2.28a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1v7a9.784 9.784 0 0 1-.08 1.264`,key:`18rp1v`}]]),Q=e(t(),1),He=H((e,t)=>({isLoading:!1,error:null,configs:[],conflicts:[],templates:[],setLoading:t=>e({isLoading:t}),setError:t=>e({error:t}),fetchEthics:async()=>{e({isLoading:!0,error:null});try{let t=(await Y(`/api/ethics`)).ethics||[],n=t.find(e=>e.active)||t[0];return e({configs:t,isLoading:!1}),n?.content||``}catch(t){throw e({isLoading:!1,error:t instanceof Error?t.message:`Failed to fetch ethics`}),t}},saveEthics:async n=>{e({isLoading:!0,error:null});try{let r=t(),i=r.configs.find(e=>e.active)||r.configs[0],a;return a=i?await Y(`/api/ethics/${i.id}`,{method:`PUT`,body:{content:n}}):await Y(`/api/ethics`,{method:`POST`,body:{name:`Default`,content:n,active:!0}}),e({isLoading:!1}),a.message||`Guardado correctamente`}catch(t){throw e({isLoading:!1,error:t instanceof Error?t.message:`Failed to save ethics`}),t}},fetchConfigs:async()=>{e({isLoading:!0,error:null});try{e({configs:await Y(`/api/workspace/ethics/configs`),isLoading:!1})}catch(t){e({isLoading:!1,error:t instanceof Error?t.message:`Failed to fetch configs`})}},fetchConflicts:async()=>{e({isLoading:!0,error:null});try{e({conflicts:await Y(`/api/workspace/ethics/conflicts`),isLoading:!1})}catch(t){e({isLoading:!1,error:t instanceof Error?t.message:`Failed to fetch conflicts`})}},fetchTemplates:async()=>{e({isLoading:!0,error:null});try{e({templates:await Y(`/api/workspace/ethics/templates`),isLoading:!1})}catch(t){e({isLoading:!1,error:t instanceof Error?t.message:`Failed to fetch templates`})}},updateConfig:(t,n)=>{e(e=>({configs:e.configs.map(e=>e.id===t?{...e,...n,updatedAt:new Date().toISOString(),version:e.version+1}:e)}))},addConfig:t=>{let n={...t,id:r(),version:1,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()};e(e=>({configs:[...e.configs,n]}))},removeConfig:t=>{e(e=>({configs:e.configs.filter(e=>e.id!==t)}))}})),$=n();function Ue(){let{configs:e,fetchEthics:t,isLoading:n}=He(),[r,i]=(0,Q.useState)(null),[a,o]=(0,Q.useState)(!1),[s,c]=(0,Q.useState)({name:``,description:``,content:``}),[l,u]=(0,Q.useState)(!1),d=(0,Q.useRef)(null),f=()=>{let e=d.current;e&&(e.style.height=`auto`,e.style.height=`${e.scrollHeight}px`)};(0,Q.useEffect)(()=>{a&&setTimeout(f,0)},[a,s.content]),(0,Q.useEffect)(()=>{t().catch(console.error)},[t]),(0,Q.useEffect)(()=>{if(e.length===0)return;let t=e,n=t.find(e=>e.active)||t[0];r||(i(n.id),c({name:n.name,description:n.description||``,content:n.content}))},[e,r]);let p=e.find(e=>e.id===r),m=e=>{i(e.id),c({name:e.name,description:e.description||``,content:e.content}),o(!0)},h=async n=>{G.show(`Activando registro de ética...`);let r=e;try{let e=await Promise.all(r.map(e=>Y(`/api/ethics/${e.id}`,{method:`PUT`,body:{active:+(e.id===n)}}).catch(()=>({}))));await t();let i=e.find((e,t)=>r[t].id===n);J.fire({icon:`success`,title:i?.message||`Registro de ética activado`})}catch(e){J.fire({icon:`error`,title:e instanceof Error?e.message:`Error al activar registro`})}finally{G.hide()}};return n&&e.length===0?(0,$.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-20 border border-white/5 bg-zinc-950/30 rounded-2xl`,children:[(0,$.jsx)(O,{className:`h-8 w-8 animate-spin text-amber-500 mb-4 opacity-50`}),(0,$.jsx)(`span`,{className:`hive-label`,children:`Cargando lineamientos operativos...`})]}):(0,$.jsxs)(`div`,{className:`space-y-8 animate-fade-in`,children:[(0,$.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-4`,children:[(0,$.jsxs)(`div`,{children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2 mb-2`,children:[(0,$.jsx)(`h3`,{className:`hive-title-section !text-lg`,children:`Protocolos Éticos`}),(0,$.jsxs)(`span`,{className:`hive-tag hive-tag--provider`,children:[e.length,` REGISTROS`]})]}),(0,$.jsx)(`p`,{className:`hive-subtitle !mt-0 !text-xs`,children:`Define la capa moral y los límites operacionales de tus agentes inteligentes.`})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-[10px] uppercase tracking-widest font-black text-white/20 bg-white/5 px-4 py-2 rounded-xl border border-white/5`,children:[(0,$.jsx)(I,{className:`h-3.5 w-3.5`}),(0,$.jsx)(`span`,{children:`Configuración del Núcleo`})]})]}),e.length===0?(0,$.jsx)(`div`,{className:`hive-card border-dashed border-white/10 bg-white/[0.02]`,children:(0,$.jsxs)(`div`,{className:`hive-card-body flex flex-col items-center justify-center py-16 px-4`,children:[(0,$.jsx)(`div`,{className:`h-16 w-16 rounded-2xl bg-white/5 flex items-center justify-center mb-6`,children:(0,$.jsx)(B,{className:`h-8 w-8 text-white/20`})}),(0,$.jsxs)(`div`,{className:`text-center`,children:[(0,$.jsx)(`p`,{className:`hive-title-section text-center mb-2`,children:`Sin Protocolos Base`}),(0,$.jsx)(`p`,{className:`text-xs text-white/40 mb-8 max-w-[300px] mx-auto leading-relaxed`,children:`No se han detectado lineamientos éticos en el sistema. Selecciona una de las plantillas inferiores para comenzar.`})]})]})}):(0,$.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6`,children:e.map(e=>{let t=!!e.active,n=r===e.id;return(0,$.jsxs)(`div`,{onClick:()=>m(e),className:`hive-card group transition-all duration-500 cursor-pointer ${n?`hive-card--active`:`opacity-60 grayscale-[0.8] hover:opacity-100 hover:grayscale-0`}`,children:[(0,$.jsxs)(`div`,{className:`hive-card-body relative overflow-hidden`,children:[(0,$.jsxs)(`div`,{className:`flex items-start justify-between mb-6`,children:[(0,$.jsx)(`div`,{className:`hive-icon-wrap--internal ${n?`hive-icon-wrap--internal-active`:`hive-icon-wrap--internal-disabled`}`,children:(0,$.jsx)(ae,{className:`h-6 w-6`})}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[t&&(0,$.jsx)(`span`,{className:`hive-status-label--active`,children:`ACTIVO`}),(0,$.jsx)(`div`,{className:t?`hive-status-dot--active`:`hive-status-dot--disabled`})]})]}),(0,$.jsxs)(`div`,{className:`space-y-4`,children:[(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`h3`,{className:`text-lg font-black text-white uppercase tracking-tighter mb-1 line-clamp-1 group-hover:text-blue-400 transition-colors text-ellipsis`,children:e.name}),(0,$.jsx)(`p`,{className:`text-xs text-white/40 font-medium leading-relaxed line-clamp-1 h-4`,children:e.description||`Sin descripción adicional`})]}),(0,$.jsxs)(`div`,{className:`pt-4 border-t border-white/5 flex items-center gap-4`,children:[(0,$.jsxs)(`div`,{className:`hive-stat`,children:[(0,$.jsx)(`span`,{className:`hive-stat__label`,children:`CONFIG`}),(0,$.jsx)(`span`,{className:`hive-stat__value`,children:e.is_default?`DEFAULT`:`CUSTOM`})]}),(0,$.jsxs)(`div`,{className:`hive-stat`,children:[(0,$.jsx)(`span`,{className:`hive-stat__label`,children:`PRECEDENCIA`}),(0,$.jsx)(`span`,{className:`hive-stat__value`,children:t?`ALTA`:`NORMAL`})]})]})]}),n&&(0,$.jsx)(`div`,{className:`hive-glow-blob--card hive-glow-blob--blue -bottom-10 -right-10 h-24 w-24 opacity-20`})]}),(0,$.jsx)(`div`,{className:`hive-strip--bottom ${t?``:`opacity-20`}`})]},e.id)})}),(0,$.jsx)(xe,{open:a,onOpenChange:o,children:(0,$.jsx)(ye,{className:`max-w-4xl border-white/10 !bg-[#09090b] p-0 overflow-hidden shadow-2xl`,children:p&&(0,$.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between p-6 border-b border-white/5 bg-white/5 relative overflow-hidden`,children:[(0,$.jsx)(`div`,{className:`hive-glow-blob hive-glow-blob--blue -top-10 -right-10 h-32 w-32 opacity-20`}),(0,$.jsxs)(`div`,{className:`flex items-center gap-4 relative z-10`,children:[(0,$.jsx)(`div`,{className:`hive-icon-wrap--internal hive-icon-wrap--internal-active`,children:(0,$.jsx)(I,{className:`h-6 w-6`})}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(be,{className:`hive-title-page !text-2xl uppercase tracking-tighter`,children:p.name}),(0,$.jsx)(_e,{className:`hive-subtitle !mt-0`,children:`Sintonización de la capa moral y operativa del agente.`})]})]}),(0,$.jsx)(`div`,{className:`flex items-center gap-3 relative z-10`,children:!p.active&&(0,$.jsx)(`button`,{className:`hive-btn hive-btn--ghost px-6 text-[10px]`,onClick:()=>h(p.id),children:`ESTABLECER COMO ACTIVO`})})]}),(0,$.jsx)(`div`,{className:`p-6 space-y-4 border-b border-white/5`,children:(0,$.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-4`,children:[(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(Z,{className:`hive-label uppercase !text-[10px]`,children:`Nombre del Protocolo`}),(0,$.jsx)(q,{value:s.name,onChange:e=>c(t=>({...t,name:e.target.value})),className:`bg-white/5 border-white/5 focus-visible:ring-blue-500/30 text-white font-bold`})]}),(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(Z,{className:`hive-label uppercase !text-[10px]`,children:`Descripción / Meta`}),(0,$.jsx)(q,{value:s.description,onChange:e=>c(t=>({...t,description:e.target.value})),className:`bg-white/5 border-white/5 focus-visible:ring-blue-500/30 text-white/60 text-xs italic`})]})]})}),(0,$.jsxs)(`div`,{className:`p-0 bg-[#09090b]`,children:[(0,$.jsx)(`div`,{className:`px-6 pt-4`,children:(0,$.jsx)(Z,{className:`hive-label uppercase !text-[10px]`,children:`Lineamientos de Capa (Markdown)`})}),(0,$.jsx)(L,{ref:d,placeholder:`Define los lineamientos éticos del agente...`,value:s.content,onChange:e=>{c(t=>({...t,content:e.target.value})),f()},className:`hive-textarea w-full !bg-zinc-950/50 border-none focus-visible:ring-0 text-amber-50/90 font-mono text-xs leading-relaxed min-h-[400px] p-8 resize-none placeholder:text-white/10 overflow-hidden`})]}),(0,$.jsxs)(`div`,{className:`p-6 bg-white/[0.02] border-t border-white/5 flex items-center justify-between`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-6`,children:[(0,$.jsxs)(`div`,{className:`hive-stat`,children:[(0,$.jsx)(`span`,{className:`hive-stat__label`,children:`IDENTIFICADOR`}),(0,$.jsx)(`span`,{className:`hive-stat__value`,children:p.id})]}),(0,$.jsxs)(`div`,{className:`hive-stat`,children:[(0,$.jsx)(`span`,{className:`hive-stat__label`,children:`ESTADO DE CAPA`}),(0,$.jsx)(`span`,{className:`hive-stat__value hive-stat__value--active`,children:p.active?`SISTEMA ACTIVO`:`PENDIENTE`})]})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,$.jsx)(`button`,{className:`hive-btn hive-btn--ghost px-6 text-[10px]`,onClick:()=>o(!1),children:`CANCELAR`}),(0,$.jsx)(`button`,{onClick:async()=>{if(p){u(!0),G.show(`Guardando lineamientos éticos...`);try{let e=await Y(`/api/ethics/${p.id}`,{method:`PUT`,body:s});await t(),J.fire({icon:`success`,title:e.message||`Contenido ético guardado`})}catch(e){J.fire({icon:`error`,title:e instanceof Error?e.message:`Error al guardar`})}finally{u(!1),G.hide(),o(!1)}}},disabled:l,className:`hive-btn hive-btn--primary px-8 text-[10px]`,children:l?`SINCRONIZANDO...`:`GUARDAR LINEAMIENTOS`})]})]})]})})})]})}var We={filesystem:`Sistema de archivos`,web:`Web`,codebridge:`Code Bridge`,cron:`Cron`,projects:`Proyectos`,cli:`CLI`,agents:`Agentes`,canvas:`Canvas`,voice:`Voz`};function Ge(){let{tools:e,isLoading:t,fetchTools:n,toggleTool:r,updateTool:i}=pe(),[a,o]=(0,Q.useState)(`all`),[s,c]=(0,Q.useState)(null),[l,u]=(0,Q.useState)(null),[d,f]=(0,Q.useState)(!1);(0,Q.useEffect)(()=>{n()},[n]);let p=async(e,t)=>{if(!l){u(e);try{await r(e,t),n(),J.fire({icon:`success`,title:`Herramienta ${t?`activada`:`desactivada`}`})}catch{J.fire({icon:`error`,title:`Error al actualizar estado de la herramienta`})}finally{u(null)}}},m=async()=>{if(s){f(!0),G.show(`Guardando herramienta...`);try{await i(s.id,{name:s.name,description:s.description}),J.fire({icon:`success`,title:`Herramienta actualizada`}),n(),c(null)}catch{J.fire({icon:`error`,title:`Error al guardar cambios`})}finally{f(!1),G.hide()}}};if(t&&e.length===0)return(0,$.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-20 border border-white/5 bg-zinc-950/30 rounded-2xl`,children:[(0,$.jsx)(O,{className:`h-8 w-8 animate-spin text-violet-500 mb-4 opacity-50`}),(0,$.jsx)(`span`,{className:`text-xs uppercase font-bold tracking-[0.2em] text-zinc-500`,children:`Cargando herramientas...`})]});let g=e.filter(e=>a===`all`?!0:e.category===a);return(0,$.jsxs)(`div`,{className:`space-y-8 animate-fade-in`,children:[(0,$.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-4`,children:[(0,$.jsxs)(`div`,{children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2 mb-2`,children:[(0,$.jsx)(`h3`,{className:`hive-title-section !text-lg !text-white/80`,children:`Herramientas`}),(0,$.jsxs)(`span`,{className:`hive-tag bg-white/5 text-white/40 border-white/10`,children:[g.length,` DISPONIBLES`]})]}),(0,$.jsx)(`p`,{className:`hive-subtitle !mt-0 !text-xs`,children:`Gestiona las capacidades externas y el arsenal tecnológico de tu agente.`})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-[10px] uppercase tracking-widest font-black text-white/20 bg-white/5 px-4 py-2 rounded-xl border border-white/5`,children:[(0,$.jsx)(me,{className:`h-3.5 w-3.5`}),(0,$.jsx)(`span`,{children:`Arsenal Operativo`})]})]}),(0,$.jsx)(`div`,{className:`flex items-center gap-1.5 p-1 bg-white/5 rounded-2xl w-fit border border-white/5`,children:[`all`,`filesystem`,`web`,`cron`,`codebridge`,`cli`,`agents`,`canvas`,`a2ui`,`voice`].map(e=>(0,$.jsx)(`button`,{onClick:()=>o(e),className:`px-6 py-2 rounded-xl text-[10px] font-black tracking-widest uppercase transition-all duration-300 ${a===e?`bg-blue-600 text-white shadow-btn-primary`:`text-white/20 hover:text-white/40 hover:bg-white/5`}`,children:e===`all`?`TODAS`:We[e]||e},e))}),g.length===0?(0,$.jsxs)(`div`,{className:`py-16 flex flex-col items-center justify-center border border-dashed border-white/10 rounded-2xl bg-zinc-950/20 group hover:border-violet-500/20 transition-colors`,children:[(0,$.jsx)(`div`,{className:`p-4 rounded-full bg-zinc-900 mb-4 group-hover:scale-110 transition-transform`,children:(0,$.jsx)(B,{className:`h-8 w-8 text-zinc-700 group-hover:text-violet-500/50 transition-colors`})}),(0,$.jsx)(`p`,{className:`text-xs text-zinc-500 font-medium`,children:`Sin herramientas en esta categoría.`})]}):(0,$.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6`,children:g.map(e=>{let t=e.active,n=e.core;return(0,$.jsxs)(`div`,{onClick:()=>c({...e}),className:`hive-card group cursor-pointer transition-all duration-500 ${t?`hive-card--active`:`hive-card--disabled`}`,children:[(0,$.jsxs)(`div`,{className:`hive-card-body relative overflow-hidden`,children:[(0,$.jsxs)(`div`,{className:`flex items-start justify-between mb-6`,children:[(0,$.jsxs)(`div`,{className:`hive-icon-wrap--internal ${t?`hive-icon-wrap--internal-active`:`hive-icon-wrap--internal-disabled`}`,children:[e.category===`filesystem`&&(0,$.jsx)(Pe,{className:`h-6 w-6`}),e.category===`web`&&(0,$.jsx)(Pe,{className:`h-6 w-6`}),e.category===`cron`&&(0,$.jsx)(F,{className:`h-6 w-6`}),e.category===`cli`&&(0,$.jsx)(z,{className:`h-6 w-6`}),e.category===`codebridge`&&(0,$.jsx)(z,{className:`h-6 w-6`}),e.category===`agents`&&(0,$.jsx)(ze,{className:`h-6 w-6`}),e.category===`projects`&&(0,$.jsx)(z,{className:`h-6 w-6`}),e.category===`canvas`&&(0,$.jsx)(z,{className:`h-6 w-6`}),e.category===`voice`&&(0,$.jsx)(ze,{className:`h-6 w-6`})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[n&&(0,$.jsx)(`span`,{className:`hive-status-label--active`,children:`NATIVO`}),(0,$.jsx)(h,{checked:t,onCheckedChange:()=>p(e.id,!t),onClick:e=>e.stopPropagation(),className:`data-[state=checked]:bg-blue-500 scale-75 origin-right`})]})]}),(0,$.jsxs)(`div`,{className:`space-y-4`,children:[(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`h3`,{className:`text-lg font-black text-white uppercase tracking-tighter mb-1 line-clamp-1 group-hover:text-blue-400 transition-colors`,children:e.name}),(0,$.jsx)(`p`,{className:`hive-subtitle !mt-0 !text-[11px] h-8 line-clamp-2`,children:e.description||`Sin descripción disponible`})]}),(0,$.jsxs)(`div`,{className:`pt-4 border-t border-white/5 flex items-center gap-4`,children:[(0,$.jsxs)(`div`,{className:`hive-stat`,children:[(0,$.jsx)(`span`,{className:`hive-stat__label`,children:`TIPO`}),(0,$.jsx)(`span`,{className:`hive-stat__value truncate max-w-[80px]`,children:e.category})]}),(0,$.jsxs)(`div`,{className:`hive-stat`,children:[(0,$.jsx)(`span`,{className:`hive-stat__label`,children:`ESTADO`}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`div`,{className:t?`hive-status-dot--active`:`hive-status-dot--disabled`}),(0,$.jsx)(`span`,{className:t?`hive-status-label--active`:`hive-status-label--disabled`,children:t?`ACTIVE`:`STANDBY`})]})]})]})]}),t&&(0,$.jsx)(`div`,{className:`hive-glow-blob--card hive-glow-blob--blue -bottom-10 -right-10 h-24 w-24 opacity-20`})]}),(0,$.jsx)(`div`,{className:`hive-strip--bottom ${t?``:`opacity-20`}`})]},e.id)})}),(0,$.jsx)(xe,{open:!!s,onOpenChange:e=>!e&&c(null),children:(0,$.jsxs)(ye,{className:`sm:max-w-sm bg-zinc-950 border-white/10`,children:[(0,$.jsxs)(ve,{children:[(0,$.jsxs)(be,{className:`flex items-center gap-2 text-sm`,children:[(0,$.jsx)(`div`,{className:`p-1.5 rounded-lg bg-violet-500/10 text-violet-400`,children:(0,$.jsx)(ze,{className:`h-3.5 w-3.5`})}),`Editar herramienta`]}),(0,$.jsx)(_e,{className:`text-[10px] text-zinc-500 font-medium`,children:`Modifica los parámetros y la descripción de la herramienta seleccionada.`})]}),(0,$.jsxs)(`div`,{className:`space-y-3 py-2`,children:[(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(Z,{className:`text-[10px] text-zinc-500 uppercase tracking-widest font-bold`,children:`Nombre`}),(0,$.jsx)(q,{value:s?.name||``,onChange:e=>c({...s,name:e.target.value}),className:`h-9 text-sm bg-white/5 border-white/10 focus:border-violet-500/50`})]}),(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(Z,{className:`text-[10px] text-zinc-500 uppercase tracking-widest font-bold`,children:`Descripción`}),(0,$.jsx)(L,{value:s?.description||``,onChange:e=>c({...s,description:e.target.value}),className:`text-sm min-h-[80px] resize-none bg-white/5 border-white/10 focus:border-violet-500/50 font-mono`})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2 pt-1 border-t border-white/5`,children:[(0,$.jsx)(`span`,{className:`font-mono text-[10px] bg-zinc-900 border border-white/5 text-zinc-500 px-2 py-0.5 rounded truncate max-w-[180px]`,children:s?.id}),(0,$.jsx)(Se,{variant:`outline`,className:`text-[9px] border-zinc-800 text-zinc-500 uppercase`,children:s?.category})]})]}),(0,$.jsxs)(he,{className:`gap-2 sm:gap-0`,children:[(0,$.jsx)(W,{variant:`outline`,size:`sm`,onClick:()=>c(null),className:`hive-btn--form-cancel h-10`,children:`Cancelar`}),(0,$.jsxs)(W,{size:`sm`,onClick:m,disabled:d,className:`hive-btn--form-submit h-10`,children:[d&&(0,$.jsx)(O,{className:`h-3.5 w-3.5 animate-spin`}),`Guardar Cambios`]})]})]})})]})}function Ke({server:e,onClick:t,isConnected:n,isLoading:r}){let i=n||e.status===`connected`,a=e.transport===`stdio`;return(0,$.jsxs)(De,{onClick:t,className:`group relative overflow-hidden transition-all hover:border-cyan-500/50 hover:shadow-lg hover:shadow-cyan-500/5 cursor-pointer border-white/5 bg-zinc-950/50 backdrop-blur-sm ${i?`border-cyan-500/20 bg-cyan-500/[0.02]`:`opacity-80 grayscale-[0.2]`} ${r?`pointer-events-none opacity-50`:``}`,children:[(0,$.jsx)(`div`,{className:`absolute top-0 left-0 w-1 h-full transition-colors ${i?`bg-cyan-500`:`bg-zinc-800`}`}),(0,$.jsxs)(Ce,{className:`pb-2`,children:[(0,$.jsxs)(`div`,{className:`flex items-start justify-between mb-2`,children:[(0,$.jsx)(`div`,{className:`p-2 rounded-lg transition-colors ${i?`bg-cyan-500/10 text-cyan-400`:`bg-zinc-800 text-zinc-500`}`,children:a?(0,$.jsx)(b,{className:`h-5 w-5`}):(0,$.jsx)(C,{className:`h-5 w-5`})}),(0,$.jsx)(`div`,{className:`flex items-center gap-2`,children:i?(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5 px-2 py-0.5 rounded-full bg-cyan-500/10 border border-cyan-500/20`,children:[(0,$.jsx)(`div`,{className:`h-1.5 w-1.5 rounded-full bg-cyan-500 animate-pulse`}),(0,$.jsx)(`span`,{className:`text-[10px] font-bold text-cyan-500 uppercase tracking-wider`,children:`LIVE`})]}):(0,$.jsx)(Se,{variant:`outline`,className:`text-[10px] border-zinc-800 text-zinc-500 uppercase tracking-tighter`,children:`OFFLINE`})})]}),(0,$.jsx)(Te,{className:`text-sm font-bold truncate group-hover:text-cyan-400 transition-colors`,children:e.name}),(0,$.jsx)(Ee,{className:`text-[10px] font-mono opacity-50 truncate mt-0.5`,children:e.url||`stdio: ${e.transport}`})]}),(0,$.jsxs)(we,{className:`pt-0 pb-4`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-3 mt-2`,children:[(0,$.jsxs)(`div`,{className:`flex flex-col`,children:[(0,$.jsx)(`span`,{className:`text-[9px] text-zinc-500 uppercase font-bold tracking-widest`,children:`Transport`}),(0,$.jsx)(`span`,{className:`text-xs font-semibold text-zinc-300`,children:e.transport})]}),(0,$.jsx)(`div`,{className:`h-4 w-px bg-white/10`}),(0,$.jsxs)(`div`,{className:`flex flex-col`,children:[(0,$.jsx)(`span`,{className:`text-[9px] text-zinc-500 uppercase font-bold tracking-widest`,children:`Tools`}),(0,$.jsxs)(`span`,{className:`text-xs font-semibold text-zinc-300`,children:[e.tools?.length||e.tools_count||0,` expuestas`]})]})]}),e.builtin&&(0,$.jsx)(Se,{variant:`outline`,className:`mt-3 text-[9px] border-amber-500/20 text-amber-500/70 bg-amber-500/5`,children:`BUILTIN`})]}),i&&(0,$.jsx)(`div`,{className:`absolute -bottom-6 -right-6 w-12 h-12 bg-cyan-500/10 blur-2xl rounded-full`})]})}function qe({serverId:e,serverName:t,tools:n=[]}){let[r,i]=(0,Q.useState)(``),a=n.filter(e=>e.name.toLowerCase().includes(r.toLowerCase())||e.description.toLowerCase().includes(r.toLowerCase()));return(0,$.jsxs)(`div`,{className:`space-y-4`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2 relative`,children:[(0,$.jsx)(F,{className:`absolute left-2.5 top-2.5 h-3.5 w-3.5 text-zinc-500`}),(0,$.jsx)(q,{placeholder:`Buscar herramientas...`,className:`pl-8 h-8 text-[11px] bg-white/5 border-white/10 focus:border-cyan-500/30`,value:r,onChange:e=>i(e.target.value)})]}),(0,$.jsx)(`div`,{className:`space-y-2 max-h-[300px] overflow-y-auto pr-1 custom-scrollbar`,children:a.length===0?(0,$.jsx)(`div`,{className:`py-8 text-center text-[10px] text-zinc-500 italic`,children:r?`No se encontraron herramientas que coincidan.`:`Este servidor no expone herramientas actualmente.`}):a.map(e=>(0,$.jsxs)(`div`,{className:`p-3 rounded-lg bg-zinc-900/50 border border-white/5 hover:border-cyan-500/20 transition-all group`,children:[(0,$.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`div`,{className:`p-1.5 rounded bg-cyan-500/5 text-cyan-400 group-hover:bg-cyan-500/10 transition-colors`,children:(0,$.jsx)(Fe,{className:`h-3.5 w-3.5`})}),(0,$.jsx)(`h5`,{className:`text-[11px] font-bold text-zinc-200 group-hover:text-cyan-400 transition-colors`,children:e.name})]}),e.inputSchema&&(0,$.jsx)(Se,{variant:`outline`,className:`text-[9px] border-zinc-800 text-zinc-600 h-4`,children:`JSON Schema`})]}),(0,$.jsx)(`p`,{className:`mt-1.5 text-[10px] text-zinc-500 leading-relaxed line-clamp-2`,children:e.description})]},e.name))}),(0,$.jsxs)(`div`,{className:`p-2 rounded bg-cyan-500/5 border border-cyan-500/10 flex items-center gap-2`,children:[(0,$.jsx)(E,{className:`h-3 w-3 text-cyan-500`}),(0,$.jsxs)(`span`,{className:`text-[9px] text-cyan-200/50`,children:[`Estas herramientas son gestionadas directamente por `,(0,$.jsx)(`span`,{className:`text-cyan-400 font-mono`,children:t}),`.`]})]})]})}function Je(e){return e?e[`x-api-key`]?{authType:`api-key`,authToken:e[`x-api-key`]}:e.Authorization?.startsWith(`Bearer `)?{authType:`bearer`,authToken:e.Authorization.replace(`Bearer `,``)}:Object.keys(e).length>0?{authType:`custom`,authToken:``}:{authType:`none`,authToken:``}:{authType:`none`,authToken:``}}function Ye({server:e,onClose:t}){let{updateMCPServer:n,toggleMCPServer:r,deleteMCPServer:i,fetchMCPServers:a}=fe(),[o,s]=(0,Q.useState)(e.transport||`stdio`),[c,d]=(0,Q.useState)(e.command||``),[h,g]=(0,Q.useState)(e.args?.join(` `)||``),[_,v]=(0,Q.useState)(e.url||``),[y,b]=(0,Q.useState)(()=>Je(e.headers).authType),[x,S]=(0,Q.useState)(()=>Je(e.headers).authToken),[w,T]=(0,Q.useState)(e.headers?JSON.stringify(e.headers,null,2):``),[E,A]=(0,Q.useState)(!1),[j,M]=(0,Q.useState)(!1),[N,P]=(0,Q.useState)(!1),[F,I]=(0,Q.useState)(!0),[L,R]=(0,Q.useState)(!1),[B,V]=(0,Q.useState)(`config`),[te,H]=(0,Q.useState)(e.status),[ne,re]=(0,Q.useState)(e.active),U=te===`connected`||ne===1||ne===!0;return(0,Q.useEffect)(()=>{let t=!1;return(async()=>{I(!0);try{let n=await Y(`/api/mcp/servers/${e.id}`);if(t)return;s(n.transport||`stdio`),d(n.command||``),g(Array.isArray(n.args)?n.args.join(` `):``),v(n.url||``);let r=Je(n.headers);b(r.authType),S(r.authToken),T(n.headers?JSON.stringify(n.headers,null,2):``),H(n.status||e.status),re(+!!n.enabled)}catch{}finally{t||I(!1)}})(),()=>{t=!0}},[e.id]),(0,$.jsx)(xe,{open:!0,onOpenChange:e=>!e&&t(),children:(0,$.jsxs)(ye,{className:`sm:max-w-[500px] border-cyan-500/20 bg-zinc-950/95 backdrop-blur-xl p-0 overflow-hidden`,children:[(0,$.jsx)(`div`,{className:`absolute top-0 left-0 w-full h-1 bg-gradient-to-r from-transparent via-cyan-500/50 to-transparent`}),(0,$.jsxs)(ve,{className:`p-6 pb-0`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,$.jsx)(`div`,{className:`p-2 rounded-lg ${U?`bg-cyan-500/10 text-cyan-400`:`bg-zinc-800 text-zinc-500`}`,children:(0,$.jsx)(ze,{className:`h-5 w-5`})}),(0,$.jsxs)(`div`,{children:[(0,$.jsxs)(be,{className:`text-white flex items-center gap-2`,children:[`Configurar `,e.name,U&&(0,$.jsx)(`div`,{className:`h-1.5 w-1.5 rounded-full bg-cyan-500 animate-pulse`})]}),(0,$.jsxs)(_e,{className:`text-[10px] font-mono opacity-50 uppercase tracking-widest mt-0.5`,children:[`ID: `,e.id,` • `,e.transport]})]})]}),!e.builtin&&(0,$.jsx)(W,{variant:`ghost`,size:`icon`,onClick:()=>R(!0),disabled:j||L,className:`text-zinc-600 hover:text-red-400 hover:bg-red-400/10 h-8 w-8 transition-colors`,title:`Eliminar Servidor`,children:(0,$.jsx)(ee,{className:`h-4 w-4`})})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-1 mt-6 border-b border-white/5`,children:[(0,$.jsxs)(`button`,{onClick:()=>V(`config`),className:`px-4 py-2 text-[10px] uppercase font-bold tracking-widest transition-all relative ${B===`config`?`text-cyan-400`:`text-zinc-500 hover:text-zinc-300`}`,children:[`Configuración`,B===`config`&&(0,$.jsx)(`div`,{className:`absolute bottom-0 left-0 w-full h-0.5 bg-cyan-500`})]}),(0,$.jsxs)(`button`,{onClick:()=>V(`tools`),className:`px-4 py-2 text-[10px] uppercase font-bold tracking-widest transition-all relative ${B===`tools`?`text-cyan-400`:`text-zinc-500 hover:text-zinc-300`}`,children:[`Herramientas`,B===`tools`&&(0,$.jsx)(`div`,{className:`absolute bottom-0 left-0 w-full h-0.5 bg-cyan-500`})]})]})]}),L&&(0,$.jsxs)(`div`,{className:`mx-6 mt-4 p-3 rounded-lg bg-red-500/10 border border-red-500/30 animate-in fade-in slide-in-from-top-2 duration-200`,children:[(0,$.jsxs)(`p`,{className:`text-xs text-red-400 font-medium mb-3`,children:[`¿Eliminar `,(0,$.jsx)(`span`,{className:`font-bold`,children:e.name}),`? Esta acción no se puede deshacer.`]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2 justify-end`,children:[(0,$.jsx)(W,{variant:`ghost`,size:`sm`,onClick:()=>R(!1),disabled:j,className:`h-7 px-3 text-[10px] font-bold uppercase tracking-wider text-zinc-400 hover:text-white`,children:`Cancelar`}),(0,$.jsx)(W,{size:`sm`,onClick:async()=>{M(!0);try{await Y(`/api/mcp/servers/${e.id}`,{method:`DELETE`,showLoader:`Eliminando servidor...`,showError:!0}),await a(),t()}catch{}finally{M(!1),R(!1)}},disabled:j,className:`h-7 px-3 text-[10px] font-bold uppercase tracking-wider bg-red-600 hover:bg-red-500 text-white`,children:j?(0,$.jsx)(O,{className:`h-3 w-3 animate-spin`}):`Sí, eliminar`})]})]}),(0,$.jsx)(`div`,{className:`p-6`,children:B===`config`?(0,$.jsxs)(`div`,{className:`space-y-4 animate-in fade-in duration-300`,children:[F&&(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-[10px] text-zinc-500`,children:[(0,$.jsx)(O,{className:`h-3 w-3 animate-spin`}),(0,$.jsx)(`span`,{children:`Cargando configuración...`})]}),(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(Z,{className:`text-[10px] font-bold text-zinc-500 uppercase tracking-widest`,children:`Transporte`}),(0,$.jsxs)(f,{value:o,onValueChange:s,children:[(0,$.jsx)(m,{className:`bg-white/5 border-white/10 h-9`,children:(0,$.jsx)(u,{})}),(0,$.jsxs)(p,{className:`bg-zinc-900 border-white/10`,children:[(0,$.jsx)(l,{value:`stdio`,className:`focus:bg-cyan-500/20 focus:text-cyan-400`,children:(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(z,{className:`h-3.5 w-3.5`}),(0,$.jsx)(`span`,{children:`stdio (Binario Local)`})]})}),(0,$.jsx)(l,{value:`sse`,className:`focus:bg-cyan-500/20 focus:text-cyan-400`,children:(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(C,{className:`h-3.5 w-3.5`}),(0,$.jsx)(`span`,{children:`SSE (Remote HTTP)`})]})})]})]})]}),o===`stdio`?(0,$.jsxs)(`div`,{className:`space-y-4`,children:[(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(Z,{className:`text-[10px] font-bold text-zinc-500 uppercase tracking-widest`,children:`Comando`}),(0,$.jsx)(q,{value:c,onChange:e=>d(e.target.value),className:`bg-white/5 border-white/10 focus:border-cyan-500/50 h-9`})]}),(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(Z,{className:`text-[10px] font-bold text-zinc-500 uppercase tracking-widest`,children:`Argumentos`}),(0,$.jsx)(q,{value:h,onChange:e=>g(e.target.value),className:`bg-white/5 border-white/10 focus:border-cyan-500/50 h-9`})]})]}):(0,$.jsxs)(`div`,{className:`space-y-4`,children:[(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(Z,{className:`text-[10px] font-bold text-zinc-500 uppercase tracking-widest`,children:`Endpoint URL`}),(0,$.jsx)(q,{value:_,onChange:e=>v(e.target.value),className:`bg-white/5 border-white/10 focus:border-cyan-500/50 h-9`})]}),(0,$.jsxs)(`div`,{className:`space-y-4 pt-2 border-t border-white/5`,children:[(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(Z,{className:`text-[10px] font-bold text-zinc-500 uppercase tracking-widest`,children:`Autenticación`}),(0,$.jsxs)(f,{value:y,onValueChange:b,children:[(0,$.jsx)(m,{className:`bg-white/5 border-white/10 focus:border-cyan-500/50 h-9`,children:(0,$.jsx)(u,{})}),(0,$.jsxs)(p,{className:`bg-zinc-900 border-white/10`,children:[(0,$.jsx)(l,{value:`none`,className:`focus:bg-cyan-500/20 focus:text-cyan-400`,children:(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(C,{className:`h-3.5 w-3.5`}),(0,$.jsx)(`span`,{children:`Ninguna`})]})}),(0,$.jsx)(l,{value:`api-key`,className:`focus:bg-cyan-500/20 focus:text-cyan-400`,children:(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(D,{className:`h-3.5 w-3.5`}),(0,$.jsx)(`span`,{children:`API Key (x-api-key)`})]})}),(0,$.jsx)(l,{value:`bearer`,className:`focus:bg-cyan-500/20 focus:text-cyan-400`,children:(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(Be,{className:`h-3.5 w-3.5`}),(0,$.jsx)(`span`,{children:`Bearer Token (Authorization)`})]})}),(0,$.jsx)(l,{value:`custom`,className:`focus:bg-cyan-500/20 focus:text-cyan-400`,children:(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(Me,{className:`h-3.5 w-3.5`}),(0,$.jsx)(`span`,{children:`Custom Headers (JSON)`})]})})]})]})]}),(y===`api-key`||y===`bearer`)&&(0,$.jsxs)(`div`,{className:`space-y-2 animate-in fade-in slide-in-from-top-1 duration-200`,children:[(0,$.jsx)(Z,{className:`text-[10px] font-bold text-zinc-500 uppercase tracking-widest`,children:y===`api-key`?`API Key`:`Bearer Token`}),(0,$.jsxs)(`div`,{className:`relative`,children:[(0,$.jsx)(q,{type:`password`,placeholder:`sk-...`,value:x,onChange:e=>S(e.target.value),className:`bg-white/5 border-white/10 focus:border-cyan-500/50 transition-all h-9 pl-9`}),(0,$.jsx)(k,{className:`absolute left-3 top-2.5 h-3.5 w-3.5 text-zinc-500`})]})]}),y===`custom`&&(0,$.jsxs)(`div`,{className:`space-y-2 animate-in fade-in slide-in-from-top-1 duration-200`,children:[(0,$.jsx)(`div`,{className:`flex items-center justify-between`,children:(0,$.jsx)(Z,{className:`text-[10px] font-bold text-zinc-500 uppercase tracking-widest`,children:`Headers JSON`})}),(0,$.jsx)(`textarea`,{value:w,onChange:e=>T(e.target.value),placeholder:`{ "x-custom-auth": "secret" }`,rows:3,className:`w-full bg-white/5 border border-white/10 rounded-md p-2 text-xs text-zinc-300 focus:outline-none focus:border-cyan-500/50 transition-all font-mono`})]})]})]}),(0,$.jsxs)(`div`,{className:`p-3 rounded-lg bg-zinc-900 border border-white/5 flex items-center justify-between mt-6`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,$.jsx)(`div`,{className:`p-1.5 rounded-full ${U?`bg-green-500/10 text-green-400`:`bg-zinc-800 text-zinc-500`}`,children:(0,$.jsx)(Re,{className:`h-3.5 w-3.5 ${U?`animate-pulse`:``}`})}),(0,$.jsxs)(`div`,{className:`flex flex-col`,children:[(0,$.jsx)(`span`,{className:`text-[10px] font-bold text-zinc-300 uppercase tracking-tight`,children:`Estado del Nodo`}),(0,$.jsx)(`span`,{className:`text-[9px] font-mono ${U?`text-green-500`:`text-zinc-500`}`,children:U?`ACTIVE_CONNECTION`:`INACTIVE_NODE`})]})]}),(0,$.jsx)(W,{size:`sm`,variant:U?`outline`:`default`,onClick:async()=>{P(!0),G.show(U?`Desconectando servidor...`:`Conectando servidor...`);try{await r(e.id,!U),re(+!U),H(U?`disconnected`:`connected`),J.fire({icon:`success`,title:U?`Servidor desconectado`:`Servidor conectado`}),setTimeout(a,1500)}catch{J.fire({icon:`error`,title:`Error al cambiar estado de conexión`})}finally{P(!1),G.hide()}},disabled:N,className:`h-7 px-4 text-[10px] font-bold uppercase tracking-wider ${U?`border-zinc-800 text-zinc-400 hover:bg-zinc-800`:`bg-cyan-600 hover:bg-cyan-500 text-white`}`,children:N?(0,$.jsx)(O,{className:`h-3 w-3 animate-spin`}):U?`Desconectar`:`Conectar`})]})]}):(0,$.jsx)(`div`,{className:`animate-in fade-in duration-300`,children:(0,$.jsx)(qe,{serverId:e.id,serverName:e.name,tools:e.tools||[]})})}),(0,$.jsxs)(he,{className:`p-6 bg-white/[0.02] border-t border-white/5`,children:[(0,$.jsx)(W,{variant:`ghost`,onClick:t,className:`text-zinc-500 hover:text-white`,children:`Cerrar`}),B===`config`&&(0,$.jsx)(W,{onClick:async()=>{A(!0),G.show(`Actualizando configuración...`);try{let t={transport:o};if(o===`stdio`){if(!c){J.fire({icon:`warning`,title:`El comando es obligatorio`});return}t.command=c;let e=h.trim();if(e.startsWith(`[`)&&e.endsWith(`]`))try{t.args=JSON.parse(e)}catch{t.args=e.match(/"[^"]*"|'[^']*'|[^\\s,]+/g)?.map(e=>e.replace(/^["']|["']$/g,``).replace(/,$/,``).trim()).filter(Boolean)||[]}else t.args=e.match(/"[^"]*"|'[^']*'|[^\\s,]+/g)?.map(e=>e.replace(/^["']|["']$/g,``).replace(/,$/,``).trim()).filter(Boolean)||[]}else if(o===`sse`){if(!_){J.fire({icon:`warning`,title:`La URL es obligatoria`});return}t.url=_;let e={};if(y===`api-key`&&x)e[`x-api-key`]=x;else if(y===`bearer`&&x)e.Authorization=`Bearer ${x}`;else if(y===`custom`&&w.trim())try{e=JSON.parse(w.trim())}catch{J.fire({icon:`error`,title:`JSON de Headers inválido`});return}Object.keys(e).length>0&&(t.headers=e)}await n(e.id,t),await a(),J.fire({icon:`success`,title:`Configuración actualizada`})}catch(e){J.fire({icon:`error`,title:e instanceof Error?e.message:`Error al actualizar configuración`})}finally{A(!1),G.hide()}},disabled:E,className:`bg-cyan-600 hover:bg-cyan-500 text-white min-w-[120px]`,children:E?(0,$.jsx)(O,{className:`h-4 w-4 animate-spin`}):`Guardar Cambios`})]})]})})}function Xe(){let{fetchMCPServers:e}=fe(),[t,n]=(0,Q.useState)(!1),[r,i]=(0,Q.useState)(``),[a,o]=(0,Q.useState)(``),[s,c]=(0,Q.useState)(``),[d,h]=(0,Q.useState)(`stdio`),[g,_]=(0,Q.useState)(``),[v,b]=(0,Q.useState)(`none`),[x,S]=(0,Q.useState)(``),[w,T]=(0,Q.useState)(``),[E,O]=(0,Q.useState)(!1);return(0,$.jsxs)(xe,{open:t,onOpenChange:n,children:[(0,$.jsx)(ge,{asChild:!0,children:(0,$.jsxs)(W,{className:`bg-cyan-600 hover:bg-cyan-500 text-white shadow-lg shadow-cyan-600/20 gap-2`,children:[(0,$.jsx)(N,{className:`h-4 w-4`}),`Añadir Servidor MCP`]})}),(0,$.jsxs)(ye,{className:`sm:max-w-[425px] border-cyan-500/20 bg-zinc-950/95 backdrop-blur-xl`,children:[(0,$.jsxs)(ve,{children:[(0,$.jsxs)(be,{className:`flex items-center gap-2 text-white`,children:[(0,$.jsx)(`div`,{className:`p-1.5 rounded-md bg-cyan-500/10 text-cyan-400`,children:(0,$.jsx)(se,{className:`h-4 w-4`})}),`Nuevo Servidor MCP`]}),(0,$.jsx)(_e,{className:`text-zinc-400`,children:`Conecta una nueva fuente de herramientas para tus agentes mediante el protocolo MCP.`})]}),(0,$.jsxs)(`div`,{className:`grid gap-4 py-4`,children:[(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(Z,{htmlFor:`mcp-name`,className:`text-[10px] font-bold text-zinc-500 uppercase tracking-widest`,children:`Nombre Identificador`}),(0,$.jsx)(q,{id:`mcp-name`,placeholder:`github-tools`,value:r,onChange:e=>i(e.target.value),className:`bg-white/5 border-white/10 focus:border-cyan-500/50 transition-all h-9`})]}),(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(Z,{className:`text-[10px] font-bold text-zinc-500 uppercase tracking-widest`,children:`Protocolo de Transporte`}),(0,$.jsxs)(f,{value:d,onValueChange:h,children:[(0,$.jsx)(m,{className:`bg-zinc-900/80 border-white/10 text-white focus:border-cyan-500/50 hover:bg-zinc-900 transition-all h-9 cursor-pointer`,children:(0,$.jsx)(u,{placeholder:`Seleccionar transporte`})}),(0,$.jsxs)(p,{position:`popper`,className:`bg-zinc-900 border-white/10 z-[99999]`,sideOffset:4,children:[(0,$.jsx)(l,{value:`stdio`,className:`focus:bg-cyan-500/20 focus:text-cyan-400 cursor-pointer`,children:(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(z,{className:`h-3.5 w-3.5`}),(0,$.jsx)(`span`,{children:`stdio (Binario Local)`})]})}),(0,$.jsx)(l,{value:`sse`,className:`focus:bg-cyan-500/20 focus:text-cyan-400 cursor-pointer`,children:(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(C,{className:`h-3.5 w-3.5`}),(0,$.jsx)(`span`,{children:`SSE (Remote HTTP)`})]})})]})]})]}),d===`stdio`?(0,$.jsxs)(`div`,{className:`space-y-4 animate-in fade-in slide-in-from-top-2 duration-300`,children:[(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(Z,{htmlFor:`mcp-cmd`,className:`text-[10px] font-bold text-zinc-500 uppercase tracking-widest`,children:`Comando Ejecutable`}),(0,$.jsx)(q,{id:`mcp-cmd`,placeholder:`npx`,value:a,onChange:e=>o(e.target.value),className:`bg-white/5 border-white/10 focus:border-cyan-500/50 transition-all h-9`})]}),(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(Z,{htmlFor:`mcp-args`,className:`text-[10px] font-bold text-zinc-500 uppercase tracking-widest`,children:`Argumentos`}),(0,$.jsx)(q,{id:`mcp-args`,placeholder:`-y @modelcontextprotocol/server-github`,value:s,onChange:e=>c(e.target.value),className:`bg-white/5 border-white/10 focus:border-cyan-500/50 transition-all h-9`})]})]}):(0,$.jsxs)(`div`,{className:`space-y-4 animate-in fade-in slide-in-from-top-2 duration-300`,children:[(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(Z,{htmlFor:`mcp-url`,className:`text-[10px] font-bold text-zinc-500 uppercase tracking-widest`,children:`Endpoint URL`}),(0,$.jsx)(q,{id:`mcp-url`,placeholder:`https://mcp-server.com/sse`,value:g,onChange:e=>_(e.target.value),className:`bg-white/5 border-white/10 focus:border-cyan-500/50 transition-all h-9`})]}),(0,$.jsxs)(`div`,{className:`space-y-4 pt-2 border-t border-white/5`,children:[(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(Z,{className:`text-[10px] font-bold text-zinc-500 uppercase tracking-widest`,children:`Autenticación`}),(0,$.jsxs)(f,{value:v,onValueChange:b,children:[(0,$.jsx)(m,{className:`bg-zinc-900/80 border-white/10 text-white focus:border-cyan-500/50 hover:bg-zinc-900 transition-all h-9 cursor-pointer`,children:(0,$.jsx)(u,{placeholder:`Seleccionar autenticación`})}),(0,$.jsxs)(p,{position:`popper`,className:`bg-zinc-900 border-white/10 z-[99999]`,sideOffset:4,children:[(0,$.jsx)(l,{value:`none`,className:`focus:bg-cyan-500/20 focus:text-cyan-400 cursor-pointer`,children:(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(C,{className:`h-3.5 w-3.5`}),(0,$.jsx)(`span`,{children:`Ninguna`})]})}),(0,$.jsx)(l,{value:`api-key`,className:`focus:bg-cyan-500/20 focus:text-cyan-400 cursor-pointer`,children:(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(D,{className:`h-3.5 w-3.5`}),(0,$.jsx)(`span`,{children:`API Key (x-api-key)`})]})}),(0,$.jsx)(l,{value:`bearer`,className:`focus:bg-cyan-500/20 focus:text-cyan-400 cursor-pointer`,children:(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(Be,{className:`h-3.5 w-3.5`}),(0,$.jsx)(`span`,{children:`Bearer Token (Authorization)`})]})}),(0,$.jsx)(l,{value:`google-api-key`,className:`focus:bg-cyan-500/20 focus:text-cyan-400 cursor-pointer`,children:(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(D,{className:`h-3.5 w-3.5`}),(0,$.jsx)(`span`,{children:`Google API Key (X-Goog-Api-Key)`})]})}),(0,$.jsx)(l,{value:`custom`,className:`focus:bg-cyan-500/20 focus:text-cyan-400 cursor-pointer`,children:(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(Me,{className:`h-3.5 w-3.5`}),(0,$.jsx)(`span`,{children:`Custom Headers (JSON)`})]})})]})]})]}),(v===`api-key`||v===`google-api-key`||v===`bearer`)&&(0,$.jsxs)(`div`,{className:`space-y-2 animate-in fade-in slide-in-from-top-1 duration-200`,children:[(0,$.jsx)(Z,{htmlFor:`mcp-token`,className:`text-[10px] font-bold text-zinc-500 uppercase tracking-widest`,children:v===`api-key`?`API Key`:v===`google-api-key`?`Google API Key`:`Bearer Token`}),(0,$.jsxs)(`div`,{className:`relative`,children:[(0,$.jsx)(q,{id:`mcp-token`,type:`password`,placeholder:`sk-...`,value:x,onChange:e=>S(e.target.value),className:`bg-white/5 border-white/10 focus:border-cyan-500/50 transition-all h-9 pl-9`}),(0,$.jsx)(k,{className:`absolute left-3 top-2.5 h-3.5 w-3.5 text-zinc-500`})]})]}),v===`custom`&&(0,$.jsxs)(`div`,{className:`space-y-2 animate-in fade-in slide-in-from-top-1 duration-200`,children:[(0,$.jsx)(`div`,{className:`flex items-center justify-between`,children:(0,$.jsx)(Z,{htmlFor:`mcp-headers`,className:`text-[10px] font-bold text-zinc-500 uppercase tracking-widest`,children:`Headers JSON`})}),(0,$.jsx)(`textarea`,{id:`mcp-headers`,placeholder:`{ "x-custom-auth": "secret" }`,rows:3,value:w,onChange:e=>{let t=e.target.value;T(t);try{t.trim()&&JSON.parse(t.trim()),e.target.style.borderColor=``}catch{t.trim()?e.target.style.borderColor=`rgba(239, 68, 68, 0.5)`:e.target.style.borderColor=``}},className:`w-full bg-white/5 border border-white/10 rounded-md p-2 text-xs text-zinc-300 focus:outline-none focus:border-cyan-500/50 transition-all font-mono`})]})]})]}),(0,$.jsxs)(`div`,{className:`p-3 rounded-lg bg-cyan-500/5 border border-cyan-500/10 flex items-center gap-3`,children:[(0,$.jsx)(y,{className:`h-5 w-5 text-cyan-500 shrink-0`}),(0,$.jsx)(`div`,{className:`text-[10px] text-cyan-200/70`,children:`El servidor se inicializará y validará inmediatamente después de ser añadido.`})]})]}),(0,$.jsxs)(he,{children:[(0,$.jsx)(W,{variant:`ghost`,onClick:()=>n(!1),className:`hover:bg-white/5 text-zinc-400 h-9 text-xs`,children:`Cancelar`}),(0,$.jsx)(W,{onClick:async()=>{if(!r){J.fire({icon:`error`,title:`El nombre es obligatorio`});return}O(!0);try{let t={transport:d};if(d===`stdio`){if(!a){J.fire({icon:`error`,title:`El comando es obligatorio para transporte stdio`}),O(!1);return}t.command=a;let e=s.trim();if(e.startsWith(`[`)&&e.endsWith(`]`))try{t.args=JSON.parse(e)}catch{t.args=e.match(/"[^"]*"|'[^']*'|[^\\s,]+/g)?.map(e=>e.replace(/^["']|["']$/g,``).replace(/,$/,``).trim()).filter(Boolean)||[]}else t.args=e.match(/"[^"]*"|'[^']*'|[^\\s,]+/g)?.map(e=>e.replace(/^["']|["']$/g,``).replace(/,$/,``).trim()).filter(Boolean)||[]}else{if(!g){J.fire({icon:`error`,title:`La URL es obligatoria para transporte SSE`}),O(!1);return}t.url=g;let e={};if(v===`api-key`&&x)e[`x-api-key`]=x;else if(v===`google-api-key`&&x)e[`X-Goog-Api-Key`]=x;else if(v===`bearer`&&x)e.Authorization=`Bearer ${x}`;else if(v===`custom`&&w.trim())try{e=JSON.parse(w.trim())}catch{K.fire(`Error`,`JSON de Headers inválido`,`error`),O(!1);return}Object.keys(e).length>0&&(t.headers=e)}await Y(`/api/mcp/servers`,{method:`POST`,body:{name:r,config:t},showLoader:`Conectando servidor MCP...`,showError:!0}),J.fire({icon:`success`,title:`Servidor "${r}" añadido correctamente`}),i(``),o(``),c(``),_(``),b(`none`),S(``),T(``),n(!1),await e()}catch{}finally{O(!1)}},disabled:E,className:`bg-cyan-600 hover:bg-cyan-500 text-white shadow-lg shadow-cyan-600/20 h-9 text-xs px-6`,children:E?`Conectando...`:`Conectar Servidor`})]})]})]})}function Ze(){let{servers:e,activeServers:t,isLoading:n,fetchMCPServers:r}=fe(),[i,a]=(0,Q.useState)(null),[o,s]=(0,Q.useState)(``);(0,Q.useEffect)(()=>{r()},[r]);let c=e.filter(e=>e.name.toLowerCase().includes(o.toLowerCase())),l=e=>{a({...e,args:typeof e.args==`string`?JSON.parse(e.args):e.args})};return(0,$.jsxs)(`div`,{className:`space-y-6`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between border-b border-white/5 pb-4`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,$.jsx)(`div`,{className:`p-2 rounded-lg bg-cyan-500/10 text-cyan-400`,children:(0,$.jsx)(se,{className:`h-5 w-5`})}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`h4`,{className:`text-sm font-bold text-white uppercase tracking-wider`,children:`MCP Ecosystem`}),(0,$.jsx)(`p`,{className:`text-[10px] text-zinc-500 font-mono`,children:`Model Context Protocol Servers`})]})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,$.jsxs)(`div`,{className:`relative group`,children:[(0,$.jsx)(F,{className:`absolute left-3 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-zinc-500 group-focus-within:text-cyan-400 transition-colors`}),(0,$.jsx)(q,{placeholder:`Buscar servidor...`,value:o,onChange:e=>s(e.target.value),className:`pl-9 bg-zinc-900/50 border-white/5 focus:border-cyan-500/30 transition-all h-9 w-[260px] text-xs`})]}),(0,$.jsx)(Xe,{})]})]}),c.length===0?(0,$.jsxs)(`div`,{className:`py-16 flex flex-col items-center justify-center border border-dashed border-white/10 rounded-2xl bg-zinc-950/20 group hover:border-cyan-500/20 transition-colors`,children:[(0,$.jsx)(`div`,{className:`p-4 rounded-full bg-zinc-900 mb-4 group-hover:scale-110 transition-transform`,children:(0,$.jsx)(B,{className:`h-8 w-8 text-zinc-700 group-hover:text-cyan-500/50 transition-colors`})}),(0,$.jsx)(`p`,{className:`text-xs text-zinc-500 font-medium`,children:`No se detectan servidores MCP configurados.`}),(0,$.jsx)(`p`,{className:`text-[10px] text-zinc-600 mt-1`,children:`Añade uno para expandir las capacidades de tus agentes.`})]}):(0,$.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4`,children:c.map(e=>(0,$.jsx)(Ke,{server:e,isConnected:e.status===`connected`||e.active===1,onClick:()=>l(e)},e.id))}),i&&(0,$.jsx)(Ye,{server:i,onClose:()=>a(null)})]})}var Qe=()=>(0,$.jsxs)(`svg`,{"aria-hidden":!0,className:`absolute inset-0 w-full h-full pointer-events-none`,xmlns:`http://www.w3.org/2000/svg`,style:{opacity:.05,color:`hsl(var(--hive-amber))`},children:[(0,$.jsx)(`defs`,{children:(0,$.jsx)(`pattern`,{id:`hc-profile`,x:`0`,y:`0`,width:`30`,height:`34`,patternUnits:`userSpaceOnUse`,children:(0,$.jsx)(`polygon`,{points:`15,2 28,9.5 28,24.5 15,32 2,24.5 2,9.5`,fill:`none`,stroke:`currentColor`,strokeWidth:`1`})})}),(0,$.jsx)(`rect`,{width:`100%`,height:`100%`,fill:`url(#hc-profile)`})]}),$e=({initials:e,size:t=`lg`})=>{let n=t===`sm`?`w-14 h-14`:`w-20 h-20`,r=t===`sm`?`text-lg`:`text-2xl`;return(0,$.jsxs)(`div`,{className:`relative ${n} flex-shrink-0`,children:[(0,$.jsx)(`div`,{className:`w-full h-full flex items-center justify-center text-white font-black ${r} tracking-tight select-none`,style:{clipPath:`polygon(50% 0%, 95% 25%, 95% 75%, 50% 100%, 5% 75%, 5% 25%)`,background:`linear-gradient(135deg, hsl(var(--hive-amber)) 0%, hsl(var(--hive-orange)) 100%)`,boxShadow:`0 0 24px hsl(var(--hive-amber) / 0.4)`},children:e}),(0,$.jsx)(`span`,{className:`absolute bottom-0.5 right-1 h-3.5 w-3.5 rounded-full border-2 animate-pulse`,style:{background:`hsl(var(--hive-green))`,borderColor:`hsl(var(--background))`,boxShadow:`0 0 8px hsl(var(--hive-green) / 0.6)`}})]})},et=({children:e})=>(0,$.jsxs)(`div`,{className:`flex items-center gap-2 mb-2.5`,children:[(0,$.jsx)(w,{className:`h-3 w-3 flex-shrink-0`,style:{color:`hsl(var(--hive-amber))`,fill:`hsl(var(--hive-amber) / 0.2)`}}),(0,$.jsx)(`p`,{className:`text-[10px] font-black uppercase tracking-[0.18em]`,style:{color:`hsl(var(--hive-amber) / 0.85)`},children:e})]}),tt=()=>(0,$.jsx)(`div`,{className:`h-px`,style:{background:`linear-gradient(90deg,transparent,hsl(var(--hive-amber)/0.18),transparent)`}}),nt=({icon:e,label:t,colorVar:n})=>(0,$.jsxs)(`span`,{className:`flex items-center gap-1 px-2 py-0.5 rounded-full text-[10px] font-medium border`,style:{background:`hsl(var(${n}) / 0.08)`,borderColor:`hsl(var(${n}) / 0.2)`,color:`hsl(var(${n}))`},children:[(0,$.jsx)(e,{className:`h-2.5 w-2.5 flex-shrink-0`}),t]}),rt=({label:e,icon:t,editing:n,children:r})=>(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsxs)(`label`,{className:`flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-widest transition-colors`,style:{color:n?`hsl(var(--hive-text-muted))`:`hsl(var(--hive-text-placeholder))`},children:[(0,$.jsx)(t,{className:`h-3 w-3 opacity-60`}),e]}),r]});function it(e){return e.split(` `).map(e=>e[0]).slice(0,2).join(``).toUpperCase()||`?`}function at(){let{fetchUser:e,saveUser:t,isLoading:n}=le(),{channels:r}=de(),[i,a]=(0,Q.useState)(!1),[s,c]=(0,Q.useState)({name:``,occupation:``,language:``,timezone:``,preferred_cron_channel:`auto`,notes:``}),[h,g]=(0,Q.useState)(null);(0,Q.useEffect)(()=>{e().then(e=>{if(!e)return;let t={name:e.name||``,occupation:e.occupation||``,language:e.language||``,timezone:e.timezone||``,preferred_cron_channel:e.preferred_cron_channel||`auto`,notes:e.notes||``};c(t),g(t)}).catch(console.error)},[e]);let _=(e,t)=>c(n=>({...n,[e]:t})),v=()=>{h&&c(h),a(!1)},y=async()=>{G.show(`Guardando perfil...`);try{let e=await t(s);g(s),J.fire({icon:`success`,title:e}),a(!1)}catch(e){J.fire({icon:`error`,title:e instanceof Error?e.message:`Error al guardar`})}finally{G.hide()}},b=r.filter(e=>e.active),x=s.preferred_cron_channel===`auto`?`Auto — detectar mejor canal`:b.find(e=>e.type===s.preferred_cron_channel)?.type??s.preferred_cron_channel,S=it(s.name);return(0,$.jsxs)(`div`,{className:`relative overflow-hidden rounded-2xl border flex flex-col lg:flex-row`,style:{background:`hsl(var(--hive-surface)/0.7)`,borderColor:`hsl(var(--hive-border-base))`,backdropFilter:`blur(16px)`,boxShadow:`0 0 60px hsl(var(--hive-amber)/0.05)`},children:[(0,$.jsxs)(`div`,{className:`relative overflow-hidden flex-shrink-0 lg:w-[40%] lg:flex-col lg:items-center lg:text-center
2
-
3
- /* mobile: horizontal compact row */
4
- flex flex-row items-center gap-4 p-4
5
- /* tablet: slightly more padding */
6
- sm:p-5
7
- /* desktop: vertical centered column */
8
- lg:flex-col lg:items-center lg:text-center lg:gap-4 lg:p-6`,style:{background:`hsl(220 15% 10% / 0.85)`},children:[(0,$.jsx)(Qe,{}),(0,$.jsx)(`div`,{className:`absolute -top-16 -left-16 w-48 h-48 rounded-full blur-[80px] pointer-events-none`,style:{background:`hsl(var(--hive-amber)/0.1)`}}),(0,$.jsx)(`div`,{className:`absolute bottom-0 left-0 right-0 h-px lg:hidden`,style:{background:`linear-gradient(90deg,transparent,hsl(var(--hive-amber)/0.3),transparent)`}}),(0,$.jsx)(`div`,{className:`absolute top-0 right-0 bottom-0 w-px hidden lg:block`,style:{background:`linear-gradient(to bottom,transparent,hsl(var(--hive-amber)/0.25),transparent)`}}),(0,$.jsxs)(`div`,{className:`relative w-full hidden lg:flex items-center justify-between`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,$.jsx)(`div`,{className:`h-1.5 w-1.5 rounded-full animate-pulse`,style:{background:`hsl(var(--hive-amber))`,boxShadow:`0 0 6px hsl(var(--hive-amber))`}}),(0,$.jsx)(`span`,{className:`text-[9px] font-black tracking-[0.25em] uppercase`,style:{color:`hsl(var(--hive-amber)/0.7)`},children:`HIVE OS`})]}),(0,$.jsx)(`span`,{className:`text-[8px] font-mono uppercase tracking-widest`,style:{color:`hsl(var(--hive-text-placeholder))`},children:`v1.0`})]}),(0,$.jsxs)(`div`,{className:`relative flex-shrink-0 lg:mx-auto`,children:[(0,$.jsx)(`div`,{className:`block lg:hidden`,children:(0,$.jsx)($e,{initials:S,size:`sm`})}),(0,$.jsx)(`div`,{className:`hidden lg:block`,children:(0,$.jsx)($e,{initials:S,size:`lg`})})]}),(0,$.jsxs)(`div`,{className:`relative flex-1 lg:flex-none lg:w-full space-y-1 lg:text-center`,children:[(0,$.jsx)(`h3`,{className:`text-sm sm:text-base font-bold text-white leading-tight`,children:s.name||(0,$.jsx)(`span`,{className:`text-sm font-normal italic`,style:{color:`hsl(var(--hive-text-placeholder))`},children:`Sin nombre`})}),s.occupation&&(0,$.jsx)(`p`,{className:`text-xs`,style:{color:`hsl(var(--hive-text-muted))`},children:s.occupation}),(0,$.jsxs)(`div`,{className:`flex flex-wrap gap-1 lg:justify-center pt-0.5`,children:[s.language&&(0,$.jsx)(nt,{icon:C,label:s.language,colorVar:`--hive-blue`}),s.timezone&&(0,$.jsx)(nt,{icon:X,label:s.timezone,colorVar:`--hive-blue`}),s.preferred_cron_channel!==`auto`&&(0,$.jsx)(nt,{icon:o,label:s.preferred_cron_channel,colorVar:`--hive-purple`})]})]}),(0,$.jsx)(`div`,{className:`relative hidden sm:grid sm:grid-cols-2 lg:grid-cols-1 lg:w-full gap-x-4 gap-y-2
9
- sm:mt-0 lg:mt-auto lg:pt-4 lg:border-t`,style:{borderColor:`hsl(var(--hive-border-subtle))`},children:[{icon:ce,label:`Agente`,value:`Activo`,colorVar:`--hive-green`},{icon:C,label:`Idioma`,value:s.language||`—`,colorVar:`--hive-blue`},{icon:X,label:`Zona`,value:s.timezone||`—`,colorVar:`--hive-blue`},{icon:V,label:`Canal`,value:x.split(`—`)[0].trim(),colorVar:`--hive-amber`}].map(({icon:e,label:t,value:n,colorVar:r})=>(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,$.jsx)(e,{className:`h-3 w-3 flex-shrink-0`,style:{color:`hsl(var(${r}))`}}),(0,$.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-widest`,style:{color:`hsl(var(--hive-text-placeholder))`},children:t})]}),(0,$.jsx)(`span`,{className:`text-[10px] font-semibold truncate max-w-[90px] text-right`,style:{color:`hsl(var(--hive-surface-foreground)/0.7)`},children:n})]},t))})]}),(0,$.jsxs)(`div`,{className:`relative flex-1 flex flex-col overflow-hidden`,children:[(0,$.jsx)(`div`,{className:`absolute -bottom-16 -right-16 w-48 h-48 rounded-full blur-[80px] pointer-events-none`,style:{background:`hsl(var(--hive-blue)/0.07)`}}),(0,$.jsxs)(`div`,{className:`flex items-center justify-between px-4 sm:px-5 pt-4 pb-3 border-b`,style:{borderColor:`hsl(var(--hive-border-subtle))`},children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,$.jsx)(`div`,{className:`p-1.5 rounded-lg border flex-shrink-0`,style:{background:`hsl(var(--hive-amber)/0.1)`,borderColor:`hsl(var(--hive-amber)/0.2)`,color:`hsl(var(--hive-amber))`},children:(0,$.jsx)(oe,{className:`h-3.5 w-3.5`})}),(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`p`,{className:`text-[11px] font-black uppercase tracking-[0.18em] truncate`,style:{color:`hsl(var(--hive-amber))`},children:`Perfil de usuario`}),(0,$.jsx)(`p`,{className:`text-[9px] mt-0.5 hidden sm:block`,style:{color:`hsl(var(--hive-text-placeholder))`},children:`Configuración personal y preferencias del agente`})]})]}),(0,$.jsxs)(`button`,{onClick:()=>i?v():a(!0),className:`flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-[11px] font-semibold transition-all duration-200 flex-shrink-0 ml-2`,style:i?{background:`hsl(var(--hive-red-dark)/0.15)`,border:`1px solid hsl(var(--hive-red)/0.3)`,color:`hsl(var(--hive-red))`}:{background:`hsl(var(--hive-glass))`,border:`1px solid hsl(var(--hive-border-base))`,color:`hsl(var(--hive-text-muted))`},children:[i?(0,$.jsx)(ie,{className:`h-3 w-3`}):(0,$.jsx)(j,{className:`h-3 w-3`}),(0,$.jsx)(`span`,{className:`hidden sm:inline`,children:i?`Cancelar`:`Editar`})]})]}),(0,$.jsxs)(`div`,{className:`relative flex-1 overflow-y-auto p-4 sm:p-5 space-y-4`,children:[(0,$.jsxs)(`section`,{children:[(0,$.jsx)(et,{children:`Identidad`}),(0,$.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-2.5`,children:[(0,$.jsx)(rt,{label:`Nombre completo`,icon:oe,editing:i,children:(0,$.jsx)(q,{placeholder:`John Doe`,value:s.name,disabled:!i,onChange:e=>_(`name`,e.target.value),className:`hive-input h-9 text-sm rounded-lg disabled:opacity-50 disabled:cursor-default`})}),(0,$.jsx)(rt,{label:`Ocupación`,icon:ke,editing:i,children:(0,$.jsx)(q,{placeholder:`AI Engineer`,value:s.occupation,disabled:!i,onChange:e=>_(`occupation`,e.target.value),className:`hive-input h-9 text-sm rounded-lg disabled:opacity-50 disabled:cursor-default`})})]})]}),(0,$.jsx)(tt,{}),(0,$.jsxs)(`section`,{children:[(0,$.jsx)(et,{children:`Localización`}),(0,$.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-2.5`,children:[(0,$.jsx)(rt,{label:`Idioma`,icon:C,editing:i,children:(0,$.jsx)(q,{placeholder:`Spanish`,value:s.language,disabled:!i,onChange:e=>_(`language`,e.target.value),className:`hive-input h-9 text-sm rounded-lg disabled:opacity-50 disabled:cursor-default`})}),(0,$.jsx)(rt,{label:`Zona horaria`,icon:X,editing:i,children:(0,$.jsx)(q,{placeholder:`America/Bogota`,value:s.timezone,disabled:!i,onChange:e=>_(`timezone`,e.target.value),className:`hive-input h-9 text-sm rounded-lg disabled:opacity-50 disabled:cursor-default`})})]})]}),(0,$.jsx)(tt,{}),(0,$.jsxs)(`section`,{children:[(0,$.jsx)(et,{children:`Notificaciones`}),(0,$.jsx)(rt,{label:`Canal para Cron Jobs`,icon:o,editing:i,children:(0,$.jsxs)(f,{value:s.preferred_cron_channel,onValueChange:e=>_(`preferred_cron_channel`,e),disabled:!i,children:[(0,$.jsx)(m,{className:`hive-select-trigger h-9 text-sm rounded-lg disabled:opacity-50`,children:(0,$.jsx)(u,{})}),(0,$.jsxs)(p,{className:`hive-select-content`,children:[(0,$.jsx)(l,{value:`auto`,className:`hive-select-item text-sm`,children:`Auto — detectar mejor canal`}),b.map(e=>(0,$.jsx)(l,{value:e.type,className:`hive-select-item text-sm`,children:e.type===`webchat`?`Web Chat`:e.type===`telegram`?`Telegram`:e.type===`discord`?`Discord`:e.type===`slack`?`Slack`:e.type===`whatsapp`?`WhatsApp`:e.type},e.id))]})]})})]}),(0,$.jsx)(tt,{}),(0,$.jsxs)(`section`,{children:[(0,$.jsx)(et,{children:`Contexto para el agente`}),(0,$.jsx)(L,{placeholder:`Describe tu perfil, preferencias de trabajo, estilo de comunicación...`,value:s.notes,disabled:!i,onChange:e=>_(`notes`,e.target.value),className:`hive-textarea text-sm rounded-lg min-h-[80px] disabled:opacity-50 disabled:cursor-default`})]})]}),(0,$.jsx)(`div`,{className:`px-4 sm:px-5 py-3 flex items-center justify-end gap-2 border-t`,style:{borderColor:`hsl(var(--hive-border-subtle))`},children:i?(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`button`,{onClick:v,className:`flex items-center gap-1.5 h-9 px-3 sm:px-4 rounded-lg text-xs font-semibold transition-all`,style:{background:`transparent`,border:`1px solid hsl(var(--hive-border-base))`,color:`hsl(var(--hive-text-muted))`},children:[(0,$.jsx)(ie,{className:`h-3.5 w-3.5`}),(0,$.jsx)(`span`,{className:`hidden sm:inline`,children:`Cancelar`})]}),(0,$.jsxs)(`button`,{onClick:y,disabled:n,className:`flex items-center gap-1.5 h-9 px-4 sm:px-5 rounded-lg text-xs font-bold text-white transition-all disabled:opacity-60`,style:{background:`hsl(var(--hive-blue-dark))`,boxShadow:`var(--shadow-btn-primary)`},children:[n?(0,$.jsx)(O,{className:`h-3.5 w-3.5 animate-spin`}):(0,$.jsx)(d,{className:`h-3.5 w-3.5`}),(0,$.jsx)(`span`,{className:`hidden sm:inline`,children:`Guardar cambios`}),(0,$.jsx)(`span`,{className:`sm:hidden`,children:`Guardar`})]})]}):(0,$.jsxs)(`button`,{onClick:()=>a(!0),className:`flex items-center gap-1.5 h-9 px-4 sm:px-5 rounded-lg text-xs font-bold transition-all`,style:{background:`hsl(var(--hive-amber)/0.12)`,border:`1px solid hsl(var(--hive-amber)/0.3)`,color:`hsl(var(--hive-amber))`},children:[(0,$.jsx)(j,{className:`h-3.5 w-3.5`}),(0,$.jsx)(`span`,{className:`hidden sm:inline`,children:`Editar perfil`}),(0,$.jsx)(`span`,{className:`sm:hidden`,children:`Editar`})]})}),(0,$.jsx)(`div`,{className:`absolute bottom-0 left-0 right-0 h-px`,style:{background:`linear-gradient(90deg,transparent,hsl(var(--hive-blue)/0.3),transparent)`}})]})]})}var ot=e=>{let t=e.toLowerCase();return t.includes(`code`)||t.includes(`program`)?(0,$.jsx)(je,{className:`h-5 w-5`}):t.includes(`research`)||t.includes(`investiga`)?(0,$.jsx)(F,{className:`h-5 w-5`}):t.includes(`write`)||t.includes(`escrib`)?(0,$.jsx)(re,{className:`h-5 w-5`}):t.includes(`data`)||t.includes(`anal`)||t.includes(`estad`)?(0,$.jsx)(Ae,{className:`h-5 w-5`}):t.includes(`trans`)||t.includes(`traduc`)?(0,$.jsx)(Ie,{className:`h-5 w-5`}):t.includes(`web`)||t.includes(`glob`)||t.includes(`scrape`)?(0,$.jsx)(C,{className:`h-5 w-5`}):t.includes(`tool`)||t.includes(`herram`)?(0,$.jsx)(me,{className:`h-5 w-5`}):t.includes(`cpu`)||t.includes(`proc`)?(0,$.jsx)(b,{className:`h-5 w-5`}):(0,$.jsx)(V,{className:`h-5 w-5`})},st=e=>e?e.split(`,`).filter(Boolean).length:0,ct=e=>e?e.split(`,`).filter(Boolean).length:0;function lt({skill:e,onClick:t,className:n}){let r=!!e.active,i=st(e.tools),a=ct(e.triggers);return(0,$.jsxs)(`div`,{onClick:t,className:`hive-card group cursor-pointer transition-all duration-300 hover:scale-[1.02] ${r?`hive-card--active`:`hive-card--disabled`} ${n}`,children:[(0,$.jsxs)(`div`,{className:`hive-card-body flex flex-col gap-4`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-[9px] font-black uppercase tracking-widest text-white/30 bg-white/5 border border-white/5 rounded-full px-2.5 py-1`,children:[(0,$.jsx)(`span`,{className:`h-1.5 w-1.5 rounded-full ${r?`bg-blue-400`:`bg-white/20`}`}),e.category||`GENERAL`]}),r&&(0,$.jsxs)(`span`,{className:`flex h-2 w-2`,children:[(0,$.jsx)(`span`,{className:`animate-ping absolute h-2 w-2 rounded-full bg-blue-400 opacity-40`}),(0,$.jsx)(`span`,{className:`relative h-2 w-2 rounded-full bg-blue-500`})]})]}),(0,$.jsxs)(`div`,{className:`flex items-start gap-4`,children:[(0,$.jsx)(`div`,{className:`shrink-0 h-12 w-12 rounded-xl flex items-center justify-center border transition-all duration-300 ${r?`bg-blue-500/10 border-blue-500/30 text-blue-400 shadow-[0_0_12px_hsl(217_91%_60%/0.2)]`:`bg-white/5 border-white/10 text-white/25`}`,children:ot(e.name)}),(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsx)(`h3`,{className:`text-sm font-black uppercase tracking-tight line-clamp-1 transition-colors ${r?`text-white group-hover:text-blue-400`:`text-white/40`}`,children:e.name}),(0,$.jsx)(`p`,{className:`text-[11px] text-white/30 leading-relaxed line-clamp-2 mt-1`,children:e.body?.substring(0,90)||`Sin descripción`})]})]}),(0,$.jsxs)(`div`,{className:`pt-3 border-t border-white/5 flex items-center gap-2 flex-wrap`,children:[(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-[9px] font-black tracking-widest uppercase text-amber-400/70 bg-amber-500/5 border border-amber-500/10 rounded px-2 py-0.5`,children:[`v`,e.version??1]}),i>0&&(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-[9px] font-black tracking-widest uppercase text-cyan-400/70 bg-cyan-500/5 border border-cyan-500/10 rounded px-2 py-0.5`,children:[i,` TOOLS`]}),a>0&&(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-[9px] font-black tracking-widest uppercase text-purple-400/70 bg-purple-500/5 border border-purple-500/10 rounded px-2 py-0.5`,children:[a,` TRIGGERS`]}),(0,$.jsx)(`div`,{className:`ml-auto opacity-0 group-hover:opacity-100 transition-opacity`,children:(0,$.jsx)(R,{className:`h-3 w-3 text-blue-400`})})]})]}),(0,$.jsx)(`div`,{className:`hive-strip--bottom ${r?`bg-blue-500`:`bg-white/5`}`})]})}var ut={name:``,body:``,tools:``,triggers:``,category:``,version:1,active:!0};function dt(){let{skills:e,isLoading:t,fetchSkills:n,toggleSkill:r,updateSkill:i}=ue(),[a,o]=(0,Q.useState)(``),[s,c]=(0,Q.useState)(`TODOS`),[l,u]=(0,Q.useState)(null),[d,f]=(0,Q.useState)(!1),[p,m]=(0,Q.useState)(ut),[g,_]=(0,Q.useState)(null),[v,y]=(0,Q.useState)(!1),[x,S]=(0,Q.useState)(!1),[C,w]=(0,Q.useState)(!1),T=(0,Q.useRef)(null),D=()=>{let e=T.current;e&&(e.style.height=`auto`,e.style.height=`${e.scrollHeight}px`)};(0,Q.useEffect)(()=>{(l||d)&&setTimeout(D,0)},[l,d,p.body]),(0,Q.useEffect)(()=>{n()},[n]);let k=(0,Q.useMemo)(()=>{let t=new Set(e.map(e=>(e.category||`GENERAL`).toUpperCase()));return[`TODOS`,...Array.from(t).sort()]},[e]),A=(0,Q.useMemo)(()=>{let t=a.toLowerCase();return e.filter(e=>{let n=!t||e.name.toLowerCase().includes(t)||(e.category||``).toLowerCase().includes(t)||(e.body||``).toLowerCase().includes(t),r=s===`TODOS`||(e.category||`GENERAL`).toUpperCase()===s;return n&&r})},[e,a,s]),j=e.filter(e=>e.active).length,M=async(e,t)=>{if(!g){_(e);try{await r(e,t),await n(),J.fire({icon:`success`,title:t?`Skill habilitado`:`Skill deshabilitado`})}catch{J.fire({icon:`error`,title:`Error al cambiar estado del skill`})}finally{_(null)}}},P=async()=>{if(l){w(!0);try{await Y(`/api/skills/${l.id}`,{method:`DELETE`,showError:!0}),J.fire({icon:`success`,title:`Skill eliminado`}),n(),u(null)}catch{J.fire({icon:`error`,title:`Error al eliminar skill`})}finally{w(!1),S(!1)}}},I=e=>{f(!1),S(!1),u(e),m({name:e.name,body:e.body||``,tools:e.tools||``,triggers:e.triggers||``,category:e.category||``,version:Number(e.version)||1,active:!!e.active})},z=()=>{u(null),S(!1),m(ut),f(!0)},B=()=>{u(null),f(!1),S(!1)},V=async()=>{y(!0),G.show(d?`Creando skill...`:`Guardando skill...`);try{d?(await Y(`/api/skills`,{method:`POST`,body:p,showError:!0}),J.fire({icon:`success`,title:`Skill creado correctamente`})):l&&(await i(l.id,p),J.fire({icon:`success`,title:`Skill actualizado correctamente`})),n(),B()}catch{J.fire({icon:`error`,title:d?`Error al crear skill`:`Error al actualizar skill`})}finally{y(!1),G.hide()}},te=!!l||d;return t&&e.length===0?(0,$.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-20 space-y-4`,children:[(0,$.jsxs)(`div`,{className:`relative`,children:[(0,$.jsx)(O,{className:`h-10 w-10 animate-spin text-primary/40`}),(0,$.jsx)(R,{className:`h-4 w-4 text-primary absolute -top-1 -right-1 animate-pulse`})]}),(0,$.jsx)(`p`,{className:`text-sm text-muted-foreground animate-pulse`,children:`Cargando habilidades del sistema...`})]}):(0,$.jsxs)(`div`,{className:`space-y-6 animate-in fade-in duration-500`,children:[(0,$.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-start justify-between gap-4`,children:[(0,$.jsxs)(`div`,{children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2 mb-1.5`,children:[(0,$.jsx)(ne,{className:`h-4 w-4 text-blue-400`}),(0,$.jsx)(`h3`,{className:`hive-title-section !text-lg`,children:`Habilidades del Sistema`}),(0,$.jsxs)(`span`,{className:`hive-tag bg-blue-500/10 text-blue-400 border-blue-500/20`,children:[j,` ACTIVAS`]}),(0,$.jsxs)(`span`,{className:`hive-tag bg-white/5 text-white/30 border-white/5`,children:[e.length,` TOTAL`]})]}),(0,$.jsx)(`p`,{className:`hive-subtitle !mt-0 !text-xs`,children:`Gestiona los módulos cognitivos que otorgan capacidades autónomas a tus agentes.`})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0`,children:[(0,$.jsxs)(`div`,{className:`relative`,children:[(0,$.jsx)(F,{className:`absolute left-2.5 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-white/20`}),(0,$.jsx)(q,{value:a,onChange:e=>o(e.target.value),placeholder:`Buscar habilidad...`,className:`pl-8 pr-8 h-8 w-52 bg-white/5 border-white/10 text-white text-xs placeholder:text-white/20 focus-visible:ring-blue-500/30`}),a&&(0,$.jsx)(`button`,{onClick:()=>o(``),className:`absolute right-2 top-1/2 -translate-y-1/2 text-white/20 hover:text-white/60 transition-colors`,children:(0,$.jsx)(ie,{className:`h-3 w-3`})})]}),(0,$.jsxs)(W,{onClick:z,className:`h-8 bg-blue-600 hover:bg-blue-500 text-white font-black text-[10px] tracking-widest uppercase px-4 shadow-btn-primary`,children:[(0,$.jsx)(N,{className:`h-3.5 w-3.5 mr-1.5`}),`Nueva Habilidad`]})]})]}),e.length>0&&(0,$.jsx)(`div`,{className:`flex items-center gap-2 overflow-x-auto pb-1 scrollbar-none`,children:k.map(t=>{let n=t===`TODOS`?e.length:e.filter(e=>(e.category||`GENERAL`).toUpperCase()===t).length,r=s===t;return(0,$.jsxs)(`button`,{onClick:()=>c(t),className:`shrink-0 inline-flex items-center gap-1.5 text-[9px] font-black uppercase tracking-widest px-3 py-1.5 rounded-full border transition-all duration-200 ${r?`bg-blue-500/15 border-blue-500/40 text-blue-400 shadow-[0_0_8px_hsl(217_91%_60%/0.15)]`:`bg-white/5 border-white/10 text-white/30 hover:text-white/60 hover:border-white/20`}`,children:[(0,$.jsx)(`span`,{className:`h-1.5 w-1.5 rounded-full ${r?`bg-blue-400`:`bg-white/20`}`}),t,(0,$.jsxs)(`span`,{className:`text-[8px] ${r?`text-blue-300/70`:`text-white/20`}`,children:[`(`,n,`)`]})]},t)})}),e.length===0?(0,$.jsx)(`div`,{className:`hive-card border-dashed border-white/10 bg-white/[0.02]`,children:(0,$.jsxs)(`div`,{className:`hive-card-body flex flex-col items-center justify-center py-16 px-4`,children:[(0,$.jsx)(`div`,{className:`h-16 w-16 rounded-2xl bg-white/5 flex items-center justify-center mb-6`,children:(0,$.jsx)(ne,{className:`h-8 w-8 text-white/20`})}),(0,$.jsx)(`p`,{className:`hive-title-section text-center mb-2`,children:`No se detectan habilidades`}),(0,$.jsx)(`p`,{className:`text-xs text-white/40 mb-8 max-w-[300px] mx-auto leading-relaxed text-center`,children:`El repositorio de habilidades está vacío. Crea una nueva habilidad o visita el Marketplace.`}),(0,$.jsxs)(W,{onClick:z,className:`hive-btn hive-btn--primary px-8`,children:[(0,$.jsx)(N,{className:`h-4 w-4 mr-2`}),`Crear Habilidad`]})]})}):A.length===0?(0,$.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-16 space-y-3 text-center`,children:[(0,$.jsx)(F,{className:`h-8 w-8 text-white/10`}),(0,$.jsx)(`p`,{className:`text-sm font-bold text-white/30 uppercase tracking-widest`,children:`Sin resultados`}),(0,$.jsxs)(`p`,{className:`text-xs text-white/20`,children:[`No hay habilidades que coincidan con “`,a,`”`,s!==`TODOS`&&` en la categoría ${s}`,`.`]}),(0,$.jsx)(`button`,{onClick:()=>{o(``),c(`TODOS`)},className:`text-[10px] font-black uppercase tracking-widest text-blue-400/60 hover:text-blue-400 transition-colors mt-2`,children:`Limpiar filtros`})]}):(0,$.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-5`,children:A.map(e=>(0,$.jsxs)(`div`,{className:`relative`,children:[(0,$.jsx)(lt,{skill:e,onClick:()=>I(e)}),(0,$.jsxs)(`div`,{className:`absolute top-5 right-5 z-20 pointer-events-auto flex items-center gap-2`,children:[(0,$.jsx)(`span`,{className:`text-[9px] font-black tracking-widest ${e.active?`text-blue-400`:`text-white/20`}`,children:e.active?`ON`:`OFF`}),(0,$.jsx)(h,{checked:!!e.active,disabled:g===e.id,onClick:e=>e.stopPropagation(),onCheckedChange:t=>M(e.id,t),className:`scale-75 data-[state=checked]:bg-blue-500`})]})]},e.id))}),(0,$.jsx)(xe,{open:te,onOpenChange:e=>{e||B()},children:(0,$.jsxs)(ye,{className:`max-w-3xl bg-zinc-950 border-white/10 text-white p-0 overflow-hidden shadow-2xl`,children:[(0,$.jsx)(`div`,{className:`p-6 border-b border-white/5 bg-white/[0.03]`,children:(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,$.jsx)(`div`,{className:`h-10 w-10 rounded-lg flex items-center justify-center border ${d?`bg-blue-500/10 border-blue-500/20 text-blue-400`:`bg-white/5 border-white/10 text-white/60`}`,children:d?(0,$.jsx)(N,{className:`h-5 w-5`}):(0,$.jsx)(b,{className:`h-5 w-5`})}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(be,{className:`text-sm font-black text-white uppercase tracking-tight`,children:d?`Nueva Habilidad`:`Propiedades del Nodo`}),(0,$.jsx)(_e,{className:`text-[10px] text-white/30`,children:d?`Define las propiedades del nuevo módulo cognitivo.`:`Editor granular de capacidades cognitivas y herramientas vinculadas.`})]})]}),!d&&(0,$.jsx)(W,{variant:`ghost`,size:`icon`,onClick:()=>S(!0),disabled:C||x,className:`text-zinc-600 hover:text-red-400 hover:bg-red-400/10 h-8 w-8 transition-colors shrink-0`,title:`Eliminar Skill`,children:(0,$.jsx)(ee,{className:`h-4 w-4`})})]})}),x&&(0,$.jsxs)(`div`,{className:`mx-6 mt-4 p-3 rounded-lg bg-red-500/10 border border-red-500/30 animate-in fade-in slide-in-from-top-2 duration-200`,children:[(0,$.jsxs)(`p`,{className:`text-xs text-red-400 font-medium mb-3`,children:[`¿Eliminar `,(0,$.jsx)(`span`,{className:`font-black`,children:l?.name}),`? Esta acción no se puede deshacer.`]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2 justify-end`,children:[(0,$.jsx)(W,{variant:`ghost`,size:`sm`,onClick:()=>S(!1),disabled:C,className:`h-7 px-3 text-[10px] font-black uppercase tracking-wider text-zinc-400 hover:text-white`,children:`Cancelar`}),(0,$.jsx)(W,{size:`sm`,onClick:P,disabled:C,className:`h-7 px-3 text-[10px] font-black uppercase tracking-wider bg-red-600 hover:bg-red-500 text-white`,children:C?(0,$.jsx)(O,{className:`h-3 w-3 animate-spin`}):`Sí, eliminar`})]})]}),(0,$.jsxs)(`div`,{className:`p-6 space-y-7 max-h-[65vh] overflow-y-auto custom-scrollbar`,children:[(0,$.jsxs)(`section`,{className:`space-y-4`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`div`,{className:`h-px flex-1 bg-white/5`}),(0,$.jsx)(`span`,{className:`text-[9px] font-black tracking-widest text-white/20 uppercase px-2`,children:`Información General`}),(0,$.jsx)(`div`,{className:`h-px flex-1 bg-white/5`})]}),(0,$.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-4`,children:[(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(Z,{htmlFor:`skill-name`,className:`text-[10px] uppercase tracking-widest text-white/40`,children:`Nombre del Nodo`}),(0,$.jsx)(q,{id:`skill-name`,value:p.name,onChange:e=>m(t=>({...t,name:e.target.value})),className:`bg-white/5 border-white/10 focus-visible:ring-blue-500/30 text-white font-medium`,placeholder:`Ej: canvas_dashboard`})]}),(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(Z,{htmlFor:`skill-category`,className:`text-[10px] uppercase tracking-widest text-white/40`,children:`Categoría Funcional`}),(0,$.jsx)(q,{id:`skill-category`,value:p.category,onChange:e=>m(t=>({...t,category:e.target.value})),className:`bg-white/5 border-white/10 focus-visible:ring-blue-500/30 text-white/70`,placeholder:`Ej: visualización, análisis...`})]})]})]}),(0,$.jsxs)(`section`,{className:`space-y-4`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`div`,{className:`h-px flex-1 bg-white/5`}),(0,$.jsx)(`span`,{className:`text-[9px] font-black tracking-widest text-white/20 uppercase px-2`,children:`Capacidades y Activación`}),(0,$.jsx)(`div`,{className:`h-px flex-1 bg-white/5`})]}),(0,$.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-4`,children:[(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsxs)(Z,{htmlFor:`skill-tools`,className:`text-[10px] uppercase tracking-widest text-white/40`,children:[(0,$.jsx)(`span`,{className:`text-cyan-400/60`,children:`Herramientas Vinculadas`}),` (CSV)`]}),(0,$.jsx)(q,{id:`skill-tools`,value:p.tools,onChange:e=>m(t=>({...t,tools:e.target.value})),className:`bg-white/5 border-white/10 focus-visible:ring-cyan-500/30 text-white/80 font-mono text-[11px]`,placeholder:`tool1, tool2, tool3...`})]}),(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsxs)(Z,{htmlFor:`skill-triggers`,className:`text-[10px] uppercase tracking-widest text-white/40`,children:[(0,$.jsx)(`span`,{className:`text-purple-400/60`,children:`Triggers`}),` de Activación (CSV)`]}),(0,$.jsx)(q,{id:`skill-triggers`,value:p.triggers,onChange:e=>m(t=>({...t,triggers:e.target.value})),className:`bg-white/5 border-white/10 focus-visible:ring-purple-500/30 text-white/80 font-mono text-[11px]`,placeholder:`mostrar panel, dashboard...`})]})]})]}),(0,$.jsxs)(`section`,{className:`space-y-3`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`div`,{className:`h-px flex-1 bg-white/5`}),(0,$.jsx)(`span`,{className:`text-[9px] font-black tracking-widest text-white/20 uppercase px-2`,children:`Cuerpo / Lógica del Nodo`}),(0,$.jsx)(`div`,{className:`h-px flex-1 bg-white/5`})]}),(0,$.jsx)(L,{ref:T,value:p.body,onChange:e=>{m(t=>({...t,body:e.target.value})),D()},className:`min-h-[140px] resize-none bg-white/5 border-white/10 focus-visible:ring-blue-500/30 text-white/80 text-sm overflow-hidden font-sans leading-relaxed p-4`,placeholder:`Instrucciones detalladas y lógica de ejecución del módulo cognitivo...`})]}),(0,$.jsxs)(`section`,{className:`grid grid-cols-1 md:grid-cols-2 gap-6 pt-4 border-t border-white/5`,children:[(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsxs)(Z,{htmlFor:`skill-version`,className:`text-[10px] uppercase tracking-widest text-white/40`,children:[(0,$.jsx)(`span`,{className:`text-amber-400/60`,children:`Versión`}),` del Skill`]}),(0,$.jsx)(q,{id:`skill-version`,type:`number`,step:`0.1`,min:`0.1`,value:p.version,onChange:e=>m(t=>({...t,version:Number(e.target.value)})),className:`bg-white/5 border-white/10 focus-visible:ring-amber-500/20 text-white w-32`})]}),(0,$.jsxs)(`div`,{className:`flex flex-col justify-center space-y-2`,children:[(0,$.jsx)(Z,{className:`text-[10px] uppercase tracking-widest text-white/40`,children:`Estado del Nodo`}),(0,$.jsxs)(`div`,{className:`flex items-center gap-3 bg-white/5 p-3 rounded-xl border border-white/10 w-fit`,children:[(0,$.jsx)(`div`,{className:`h-2 w-2 rounded-full transition-colors ${p.active?`bg-blue-500 shadow-[0_0_6px_hsl(217_91%_60%/0.8)] animate-pulse`:`bg-white/20`}`}),(0,$.jsx)(`span`,{className:`text-[9px] font-black tracking-widest ${p.active?`text-white`:`text-white/30`}`,children:p.active?`OPERATIVO / ACTIVO`:`FUERA DE LÍNEA / INACTIVO`}),(0,$.jsx)(h,{checked:p.active,onCheckedChange:e=>m(t=>({...t,active:e})),className:`data-[state=checked]:bg-blue-500`})]})]})]})]}),(0,$.jsxs)(he,{className:`p-5 bg-white/[0.02] flex items-center justify-between gap-3 border-t border-white/5 sm:justify-between`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[9px] font-black tracking-widest text-white/15 uppercase`,children:[(0,$.jsx)(E,{className:`h-3 w-3`}),d?`Nueva habilidad`:`ID: ${l?.id?.substring(0,8)}...`]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(W,{variant:`ghost`,className:`text-[10px] font-black tracking-widest hover:bg-white/5 hover:text-white text-white/30 uppercase`,onClick:B,children:`Cancelar`}),(0,$.jsx)(W,{className:`bg-blue-600 hover:bg-blue-500 text-white font-black text-[10px] tracking-widest px-6 rounded-lg shadow-btn-primary uppercase`,onClick:V,disabled:v||!p.name.trim(),children:v?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(O,{className:`h-3 w-3 animate-spin mr-2`}),`PROCESANDO...`]}):d?`Crear Habilidad`:`Sincronizar Propiedades`})]})]})]})})]})}var ft=H((e,t)=>({notes:[],scheduledTasks:[],taskHistory:{},cronChannels:[],cronRecommended:`webchat`,cronUserPreference:`auto`,isLoading:!1,error:null,fetchNotes:async()=>{e({isLoading:!0,error:null});try{e({notes:(await Y(`/api/notes`)).notes,isLoading:!1})}catch(t){e({error:t.message,isLoading:!1})}},fetchScheduledTasks:async t=>{e({isLoading:!0,error:null});try{e({scheduledTasks:(await Y(t?`/api/cron?status=${t}`:`/api/cron`)).tasks??[],isLoading:!1})}catch(t){e({error:t.message,isLoading:!1,scheduledTasks:[]})}},pauseTask:async t=>{try{await Y(`/api/cron/${t}/pause`,{method:`POST`}),e(e=>({scheduledTasks:e.scheduledTasks.map(e=>e.id===t?{...e,status:`paused`}:e)}))}catch(t){e({error:t.message})}},resumeTask:async t=>{try{await Y(`/api/cron/${t}/resume`,{method:`POST`}),e(e=>({scheduledTasks:e.scheduledTasks.map(e=>e.id===t?{...e,status:`active`}:e)}))}catch(t){e({error:t.message})}},deleteTask:async t=>{try{await Y(`/api/cron/${t}`,{method:`DELETE`}),e(e=>({scheduledTasks:e.scheduledTasks.filter(e=>e.id!==t)}))}catch(t){e({error:t.message})}},triggerTask:async t=>{try{await Y(`/api/cron/${t}/trigger`,{method:`POST`})}catch(t){e({error:t.message})}},fetchTaskHistory:async(t,n=10)=>{try{let r=await Y(`/api/cron/${t}/history?limit=${n}`);e(e=>({taskHistory:{...e.taskHistory,[t]:r.history??[]}}))}catch(t){e({error:t.message})}},fetchCronChannels:async()=>{try{let t=await Y(`/api/cron/channels`),n=[];Array.isArray(t.channels)&&(n=t.channels.map(e=>typeof e==`string`?{id:e,type:e,active:!0,recommended:e===`webchat`||e===`telegram`}:e)),e({cronChannels:n,cronRecommended:`webchat`,cronUserPreference:`auto`})}catch{}},saveCronChannelPreference:async t=>{try{await Y(`/api/user/settings`,{method:`PATCH`,body:{preferred_cron_channel:t}}),e({cronUserPreference:t})}catch(t){e({error:t.message})}}})),pt=()=>{let{notes:e,isLoading:t,fetchNotes:n}=ft();return(0,Q.useEffect)(()=>{n()},[n]),(0,$.jsxs)(De,{className:`border-none bg-background/50 backdrop-blur-xl shadow-2xl overflow-hidden group border border-white/10`,children:[(0,$.jsx)(Ce,{className:`pb-2`,children:(0,$.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`div`,{className:`p-2 rounded-xl bg-primary/10 text-primary`,children:(0,$.jsx)(U,{className:`w-5 h-5`})}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(Te,{className:`text-xl font-bold tracking-tight`,children:`Notas`}),(0,$.jsx)(Ee,{children:`Scratchpad del agente`})]})]}),t&&(0,$.jsx)(O,{className:`w-4 h-4 animate-spin text-muted-foreground`})]})}),(0,$.jsx)(we,{children:(0,$.jsx)(Oe,{className:`h-[350px] pr-4`,children:(0,$.jsx)(`div`,{className:`space-y-4`,children:e.length===0?(0,$.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-[250px] text-muted-foreground space-y-2`,children:[(0,$.jsx)(U,{className:`w-12 h-12 opacity-20`}),(0,$.jsx)(`p`,{className:`text-sm`,children:`No hay notas guardadas`}),(0,$.jsx)(`p`,{className:`text-[10px] opacity-70`,children:`El agente guardará notas con save_note`})]}):e.map(e=>(0,$.jsxs)(`div`,{className:`p-4 rounded-2xl border border-white/5 bg-card/40 hover:bg-card/60 transition-all duration-300 relative overflow-hidden`,children:[(0,$.jsx)(`h4`,{className:`font-semibold text-sm mb-1.5 line-clamp-1`,children:e.key}),(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground line-clamp-3 leading-relaxed`,children:e.value}),(0,$.jsxs)(`div`,{className:`mt-4 flex items-center justify-between`,children:[(0,$.jsx)(Se,{variant:`secondary`,className:`text-[10px] px-2 py-0.5 bg-primary/10 text-primary border-none font-medium font-mono truncate max-w-[120px]`,children:e.thread_id.slice(-8)}),(0,$.jsx)(`span`,{className:`text-[10px] text-muted-foreground font-mono`,children:new Date(e.updated_at*1e3).toLocaleDateString()})]})]},e.id))})})})]})};function mt(e){if(!e)return`—`;try{return new Date(e).toLocaleString([],{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})}catch{return e}}function ht({status:e}){let t={active:{label:`Activa`,className:`bg-green-500/10 text-green-400 border-green-500/20`},paused:{label:`Pausada`,className:`bg-yellow-500/10 text-yellow-400 border-yellow-500/20`},completed:{label:`Completada`,className:`bg-blue-500/10 text-blue-400 border-blue-500/20`},failed:{label:`Fallida`,className:`bg-red-500/10 text-red-400 border-red-500/20`},cancelled:{label:`Cancelada`,className:`bg-muted/30 text-muted-foreground border-white/10`}},{label:n,className:r}=t[e]??t.cancelled;return(0,$.jsx)(`span`,{className:`inline-flex items-center text-[9px] font-bold uppercase tracking-wider px-1.5 py-0.5 rounded-full border ${r}`,children:n})}function gt({type:e}){let t=e===`recurring`;return(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-[9px] font-bold uppercase tracking-wider px-1.5 py-0.5 rounded-full border ${t?`bg-violet-500/10 text-violet-400 border-violet-500/20`:`bg-teal-500/10 text-teal-400 border-teal-500/20`}`,children:[t?(0,$.jsx)(P,{className:`w-2.5 h-2.5`}):(0,$.jsx)(c,{className:`w-2.5 h-2.5`}),t?`Recurrente`:`Una vez`]})}function _t({channel:e}){return!e||e===`system`?(0,$.jsx)(`span`,{className:`inline-flex items-center gap-1 text-[9px] font-bold uppercase tracking-wider px-1.5 py-0.5 rounded-full bg-muted/30 text-muted-foreground border border-white/10`,children:`System`}):e===`webchat`?(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-[9px] font-bold uppercase tracking-wider px-1.5 py-0.5 rounded-full bg-blue-500/10 text-blue-400 border border-blue-500/20`,children:[(0,$.jsx)(Le,{className:`w-2.5 h-2.5`}),`Web`]}):e===`telegram`?(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-[9px] font-bold uppercase tracking-wider px-1.5 py-0.5 rounded-full bg-sky-500/10 text-sky-400 border border-sky-500/20`,children:[(0,$.jsx)(s,{className:`w-2.5 h-2.5`}),`Telegram`]}):(0,$.jsx)(`span`,{className:`inline-flex items-center gap-1 text-[9px] font-bold uppercase tracking-wider px-1.5 py-0.5 rounded-full bg-muted/30 text-muted-foreground border border-white/10`,children:e})}function vt({status:e}){return(0,$.jsx)(`span`,{className:`inline-block w-1.5 h-1.5 rounded-full ${{running:`bg-blue-400 animate-pulse`,success:`bg-green-400`,failed:`bg-red-400`,timeout:`bg-amber-400`}[e]??`bg-muted-foreground`}`})}function yt(e,t){let n=e===`telegram`?`Telegram`:e===`webchat`?`Web Chat`:e;return e===t?`${n} (recomendado)`:n}function bt({taskId:e,history:t}){return t?t.length===0?(0,$.jsx)(`p`,{className:`text-[10px] text-muted-foreground px-1`,children:`Sin ejecuciones registradas.`}):(0,$.jsx)(`div`,{className:`mt-2 space-y-1`,children:t.map(e=>(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-[10px] text-muted-foreground`,children:[(0,$.jsx)(vt,{status:e.status}),(0,$.jsx)(`span`,{className:`font-mono`,children:mt(e.started_at)}),e.duration_ms!=null&&(0,$.jsxs)(`span`,{className:`text-primary/70`,children:[e.duration_ms,`ms`]}),e.error_message&&(0,$.jsx)(`span`,{className:`text-red-400 truncate max-w-[160px]`,children:e.error_message})]},e.id))}):(0,$.jsx)(`p`,{className:`text-[10px] text-muted-foreground px-1`,children:`Cargando historial…`})}function xt({task:e,onPause:t,onResume:n,onDelete:r,onTrigger:i,onLoadHistory:o,history:s}){let[l,u]=(0,Q.useState)(!1),[d,f]=(0,Q.useState)(!1),p=e.status===`active`,m=e.status===`active`||e.status===`paused`;function h(){!l&&!s&&o(e.id),u(e=>!e)}function y(){d?r(e.id):(f(!0),setTimeout(()=>f(!1),3e3))}return(0,$.jsxs)(`div`,{className:`p-4 rounded-2xl border border-white/5 bg-card/40 hover:bg-card/60 transition-all duration-200`,children:[(0,$.jsxs)(`div`,{className:`flex items-start justify-between gap-2 mb-2`,children:[(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsx)(`h4`,{className:`font-semibold text-sm truncate`,children:e.name}),e.description&&(0,$.jsx)(`p`,{className:`text-[10px] text-muted-foreground truncate mt-0.5`,children:e.description})]}),(0,$.jsx)(`div`,{className:`flex items-center gap-1 shrink-0`,children:(0,$.jsx)(ht,{status:e.status})})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5 flex-wrap mb-2`,children:[(0,$.jsx)(gt,{type:e.task_type}),(0,$.jsxs)(`div`,{className:`flex items-center gap-1 text-[10px] text-primary font-bold uppercase tracking-wider bg-primary/5 px-2 py-0.5 rounded-full`,children:[(0,$.jsx)(c,{className:`w-3 h-3`}),e.task_type===`recurring`?e.cron_expression??`—`:e.fire_at?mt(e.fire_at):`—`]}),(0,$.jsx)(_t,{channel:e.channel})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-3 text-[10px] text-muted-foreground mb-2`,children:[(0,$.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,$.jsx)(a,{className:`w-3 h-3`}),e.run_count,` runs`]}),e.error_count>0&&(0,$.jsxs)(`span`,{className:`flex items-center gap-1 text-red-400`,children:[(0,$.jsx)(v,{className:`w-3 h-3`}),e.error_count,` errores`]}),e.timezone&&e.timezone!==`UTC`&&(0,$.jsx)(`span`,{className:`font-mono`,children:e.timezone})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-3 text-[10px] text-muted-foreground mb-3`,children:[e.last_run_at&&(0,$.jsxs)(`span`,{children:[`Último: `,mt(e.last_run_at)]}),e.next_run_at&&e.status===`active`&&(0,$.jsxs)(`span`,{className:`text-primary/70`,children:[`Próximo: `,mt(e.next_run_at)]})]}),e.last_error&&(0,$.jsx)(`div`,{className:`mb-2 text-[10px] text-red-400 bg-red-500/5 border border-red-500/20 rounded-lg px-2 py-1 truncate`,children:e.last_error}),(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5 flex-wrap`,children:[m&&(p?(0,$.jsxs)(W,{size:`sm`,variant:`outline`,className:`h-6 text-[10px] px-2 border-white/10 hover:bg-yellow-500/10 hover:text-yellow-400 hover:border-yellow-500/20`,onClick:()=>t(e.id),children:[(0,$.jsx)(A,{className:`w-3 h-3 mr-1`}),`Pausar`]}):(0,$.jsxs)(W,{size:`sm`,variant:`outline`,className:`h-6 text-[10px] px-2 border-white/10 hover:bg-green-500/10 hover:text-green-400 hover:border-green-500/20`,onClick:()=>n(e.id),children:[(0,$.jsx)(M,{className:`w-3 h-3 mr-1`}),`Reanudar`]})),p&&(0,$.jsxs)(W,{size:`sm`,variant:`outline`,className:`h-6 text-[10px] px-2 border-white/10 hover:bg-primary/10 hover:text-primary hover:border-primary/20`,onClick:()=>i(e.id),title:`Ejecutar ahora (sin afectar el schedule)`,children:[(0,$.jsx)(V,{className:`w-3 h-3 mr-1`}),`Ejecutar`]}),(0,$.jsxs)(W,{size:`sm`,variant:`ghost`,className:`h-6 text-[10px] px-2 text-muted-foreground hover:text-foreground`,onClick:h,children:[(0,$.jsx)(T,{className:`w-3 h-3 mr-1`}),`Historial`,l?(0,$.jsx)(_,{className:`w-3 h-3 ml-1`}):(0,$.jsx)(g,{className:`w-3 h-3 ml-1`})]}),(0,$.jsxs)(W,{size:`sm`,variant:`ghost`,className:`h-6 text-[10px] px-2 ml-auto ${d?`text-red-400 bg-red-500/10 border border-red-500/20`:`text-muted-foreground hover:text-red-400`}`,onClick:y,title:d?`Confirmar eliminación`:`Eliminar tarea`,children:[(0,$.jsx)(ee,{className:`w-3 h-3 mr-1`}),d?`Confirmar`:`Eliminar`]})]}),l&&(0,$.jsx)(`div`,{className:`mt-2 pt-2 border-t border-white/5`,children:(0,$.jsx)(bt,{taskId:e.id,history:s})})]})}var St=()=>{let{scheduledTasks:e,taskHistory:t,cronChannels:n,cronRecommended:r,cronUserPreference:i,isLoading:a,fetchScheduledTasks:o,fetchCronChannels:s,pauseTask:c,resumeTask:d,deleteTask:h,triggerTask:g,fetchTaskHistory:_,saveCronChannelPreference:v}=ft(),[y,b]=(0,Q.useState)(`all`);(0,Q.useEffect)(()=>{o(),s()},[o,s]);let x=y===`all`?e:e.filter(e=>e.status===y),S=(n??[]).filter(e=>e.active),C=x.filter(e=>!e.name.startsWith(`_hive_`));return(0,$.jsxs)(De,{className:`border-none bg-background/50 backdrop-blur-xl shadow-2xl overflow-hidden border border-white/10`,children:[(0,$.jsx)(Ce,{className:`pb-2`,children:(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-2 flex-wrap`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`div`,{className:`p-2 rounded-xl bg-primary/10 text-primary`,children:(0,$.jsx)(X,{className:`w-5 h-5`})}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(Te,{className:`text-xl font-bold tracking-tight`,children:`Tareas Programadas`}),(0,$.jsx)(Ee,{children:`Scheduler basado en Croner`})]})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[a&&(0,$.jsx)(O,{className:`w-4 h-4 animate-spin text-muted-foreground`}),(0,$.jsxs)(f,{value:y,onValueChange:b,children:[(0,$.jsx)(m,{className:`h-7 text-[10px] w-[110px] border-white/10 bg-card/40`,children:(0,$.jsx)(u,{})}),(0,$.jsxs)(p,{children:[(0,$.jsx)(l,{value:`all`,className:`text-xs`,children:`Todas`}),(0,$.jsx)(l,{value:`active`,className:`text-xs`,children:`Activas`}),(0,$.jsx)(l,{value:`paused`,className:`text-xs`,children:`Pausadas`}),(0,$.jsx)(l,{value:`completed`,className:`text-xs`,children:`Completadas`}),(0,$.jsx)(l,{value:`failed`,className:`text-xs`,children:`Fallidas`})]})]}),S.length>1&&(0,$.jsxs)(f,{value:i,onValueChange:v,children:[(0,$.jsx)(m,{className:`h-7 text-[10px] w-[130px] border-white/10 bg-card/40`,children:(0,$.jsx)(u,{placeholder:`Canal`})}),(0,$.jsxs)(p,{children:[(0,$.jsx)(l,{value:`auto`,className:`text-xs`,children:`Auto`}),S.map(e=>(0,$.jsx)(l,{value:e.id,className:`text-xs`,children:yt(e.id,r)},e.id))]})]}),(0,$.jsx)(W,{size:`sm`,variant:`ghost`,className:`h-7 w-7 p-0 text-muted-foreground hover:text-foreground`,onClick:()=>o(y===`all`?void 0:y),disabled:a,title:`Refrescar`,children:(0,$.jsx)(P,{className:`w-3.5 h-3.5`})})]})]})}),(0,$.jsx)(we,{children:(0,$.jsx)(Oe,{className:`h-[420px] pr-4`,children:(0,$.jsx)(`div`,{className:`space-y-3`,children:C.length===0?(0,$.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-[280px] text-muted-foreground space-y-2`,children:[(0,$.jsx)(X,{className:`w-12 h-12 opacity-20`}),(0,$.jsx)(`p`,{className:`text-sm`,children:`Sin tareas programadas`}),(0,$.jsxs)(`p`,{className:`text-[10px] opacity-70`,children:[`Crea tareas desde el chat o con `,(0,$.jsx)(`code`,{className:`font-mono`,children:`hive cron add`})]})]}):C.map(e=>(0,$.jsx)(xt,{task:e,onPause:c,onResume:d,onDelete:h,onTrigger:g,onLoadHistory:_,history:t[e.id]},e.id))})})})]})};function Ct(){let[e,t]=(0,Q.useState)(!1),[n,r]=(0,Q.useState)(``),[i,a]=(0,Q.useState)(!0),[o,s]=(0,Q.useState)(`status`),[c,l]=(0,Q.useState)(``),[u,f]=(0,Q.useState)(!1),[p,m]=(0,Q.useState)(``),[g,_]=(0,Q.useState)(``),[v,y]=(0,Q.useState)(``),[b,C]=(0,Q.useState)(!1),[w,T]=(0,Q.useState)(!1),[E,D]=(0,Q.useState)(``),[k,A]=(0,Q.useState)(``),[j,M]=(0,Q.useState)(``),[N,P]=(0,Q.useState)(!1),[F,I]=(0,Q.useState)(!1),[L,R]=(0,Q.useState)(!1);(0,Q.useEffect)(()=>{z(),ee()},[]);async function z(){a(!0);try{let e=await fetch(`/api/auth/status`).then(e=>e.json());t(e.hasCredentials),e.email&&r(e.email)}catch{}finally{a(!1)}}async function ee(){try{l((await Y(`/api/auth/recovery-key`)).recoveryKey)}catch{}}async function B(e){if(e.preventDefault(),g!==v){K.fire({icon:`error`,title:`Error`,text:`Las contraseñas no coinciden`});return}if(g.length<8){K.fire({icon:`error`,title:`Error`,text:`La contraseña debe tener al menos 8 caracteres`});return}T(!0);try{await Y(`/api/auth/setup-credentials`,{method:`POST`,body:{email:p,password:g}}),K.fire({icon:`success`,title:`Protección activada`,text:`La próxima vez que accedas necesitarás tu email y contraseña.`,timer:3e3,showConfirmButton:!1,toast:!0,position:`top-end`}),m(``),_(``),y(``),s(`status`),await z()}catch{}finally{T(!1)}}async function V(){if((await K.fire({title:`¿Desactivar protección?`,text:`Cualquiera con acceso a la URL podrá usar Hive sin contraseña.`,icon:`warning`,showCancelButton:!0,confirmButtonText:`Sí, desactivar`,cancelButtonText:`Cancelar`})).isConfirmed)try{await Y(`/api/auth/disable`,{method:`POST`}),K.fire({icon:`success`,title:`Protección desactivada`,timer:2e3,showConfirmButton:!1,toast:!0,position:`top-end`}),t(!1),r(``),s(`status`)}catch{}}async function te(e){if(e.preventDefault(),k!==j){K.fire({icon:`error`,title:`Error`,text:`Las contraseñas no coinciden`});return}if(k.length<8){K.fire({icon:`error`,title:`Error`,text:`La contraseña debe tener al menos 8 caracteres`});return}R(!0);try{await Y(`/api/auth/change-password`,{method:`POST`,body:{currentPassword:E,newPassword:k}}),K.fire({icon:`success`,title:`Contraseña actualizada`,timer:2e3,showConfirmButton:!1,toast:!0,position:`top-end`}),D(``),A(``),M(``),s(`status`)}catch{}finally{R(!1)}}function H(){c&&(navigator.clipboard.writeText(c),f(!0),setTimeout(()=>f(!1),2e3))}return i?(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-muted-foreground`,children:[(0,$.jsx)(O,{className:`h-4 w-4 animate-spin`}),` Cargando...`]}):(0,$.jsxs)(`div`,{className:`space-y-8 max-w-xl`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[e?(0,$.jsx)(Be,{className:`h-5 w-5 text-green-500`}):(0,$.jsx)(Ve,{className:`h-5 w-5 text-muted-foreground`}),(0,$.jsx)(`span`,{className:`font-medium`,children:`Protección con contraseña`})]}),(0,$.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:e?`Activa — ${n||`credenciales configuradas`}`:`Desactivada — acceso libre sin contraseña`})]}),(0,$.jsx)(h,{checked:e,onCheckedChange:e=>{e?s(`enable`):V()}})]}),o===`enable`&&!e&&(0,$.jsxs)(`form`,{onSubmit:B,className:`space-y-4 border rounded-lg p-4`,children:[(0,$.jsx)(`h3`,{className:`font-medium`,children:`Configurar credenciales`}),(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(Z,{htmlFor:`sec-email`,children:`Email`}),(0,$.jsx)(q,{id:`sec-email`,type:`email`,placeholder:`tu@email.com`,value:p,onChange:e=>m(e.target.value),required:!0,disabled:w})]}),(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(Z,{htmlFor:`sec-pwd`,children:`Contraseña`}),(0,$.jsxs)(`div`,{className:`relative`,children:[(0,$.jsx)(q,{id:`sec-pwd`,type:b?`text`:`password`,placeholder:`Mínimo 8 caracteres`,value:g,onChange:e=>_(e.target.value),required:!0,disabled:w,className:`pr-10`}),(0,$.jsx)(`button`,{type:`button`,className:`absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground`,onClick:()=>C(e=>!e),tabIndex:-1,children:b?(0,$.jsx)(x,{className:`h-4 w-4`}):(0,$.jsx)(S,{className:`h-4 w-4`})})]})]}),(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(Z,{htmlFor:`sec-confirm`,children:`Confirmar contraseña`}),(0,$.jsx)(q,{id:`sec-confirm`,type:b?`text`:`password`,placeholder:`Repite la contraseña`,value:v,onChange:e=>y(e.target.value),required:!0,disabled:w})]}),(0,$.jsxs)(`div`,{className:`flex gap-2`,children:[(0,$.jsxs)(W,{type:`submit`,disabled:w,children:[w&&(0,$.jsx)(O,{className:`mr-2 h-4 w-4 animate-spin`}),`Activar protección`]}),(0,$.jsx)(W,{type:`button`,variant:`ghost`,onClick:()=>s(`status`),disabled:w,children:`Cancelar`})]})]}),e&&o===`status`&&(0,$.jsx)(`div`,{className:`flex gap-2`,children:(0,$.jsx)(W,{variant:`outline`,size:`sm`,onClick:()=>s(`change-password`),children:`Cambiar contraseña`})}),o===`change-password`&&e&&(0,$.jsxs)(`form`,{onSubmit:te,className:`space-y-4 border rounded-lg p-4`,children:[(0,$.jsx)(`h3`,{className:`font-medium`,children:`Cambiar contraseña`}),(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(Z,{htmlFor:`current-pwd`,children:`Contraseña actual`}),(0,$.jsxs)(`div`,{className:`relative`,children:[(0,$.jsx)(q,{id:`current-pwd`,type:N?`text`:`password`,placeholder:`••••••••`,value:E,onChange:e=>D(e.target.value),required:!0,disabled:L,className:`pr-10`}),(0,$.jsx)(`button`,{type:`button`,className:`absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground`,onClick:()=>P(e=>!e),tabIndex:-1,children:N?(0,$.jsx)(x,{className:`h-4 w-4`}):(0,$.jsx)(S,{className:`h-4 w-4`})})]})]}),(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(Z,{htmlFor:`new-pwd`,children:`Nueva contraseña`}),(0,$.jsxs)(`div`,{className:`relative`,children:[(0,$.jsx)(q,{id:`new-pwd`,type:F?`text`:`password`,placeholder:`Mínimo 8 caracteres`,value:k,onChange:e=>A(e.target.value),required:!0,disabled:L,className:`pr-10`}),(0,$.jsx)(`button`,{type:`button`,className:`absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground`,onClick:()=>I(e=>!e),tabIndex:-1,children:F?(0,$.jsx)(x,{className:`h-4 w-4`}):(0,$.jsx)(S,{className:`h-4 w-4`})})]})]}),(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(Z,{htmlFor:`confirm-new`,children:`Confirmar nueva contraseña`}),(0,$.jsx)(q,{id:`confirm-new`,type:F?`text`:`password`,placeholder:`••••••••`,value:j,onChange:e=>M(e.target.value),required:!0,disabled:L})]}),(0,$.jsxs)(`div`,{className:`flex gap-2`,children:[(0,$.jsxs)(W,{type:`submit`,disabled:L,children:[L&&(0,$.jsx)(O,{className:`mr-2 h-4 w-4 animate-spin`}),`Actualizar contraseña`]}),(0,$.jsx)(W,{type:`button`,variant:`ghost`,onClick:()=>s(`status`),disabled:L,children:`Cancelar`})]})]}),c&&(0,$.jsxs)(`div`,{className:`space-y-2 border rounded-lg p-4 bg-muted/30`,children:[(0,$.jsx)(`div`,{className:`flex items-center justify-between`,children:(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`p`,{className:`text-sm font-medium`,children:`Recovery Key`}),(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Úsalo para recuperar el acceso si olvidas tu contraseña`})]})}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`code`,{className:`flex-1 text-xs bg-muted rounded px-3 py-2 font-mono break-all`,children:c}),(0,$.jsx)(W,{variant:`ghost`,size:`icon`,onClick:H,className:`shrink-0`,children:u?(0,$.jsx)(d,{className:`h-4 w-4 text-green-500`}):(0,$.jsx)(Ne,{className:`h-4 w-4`})})]})]})]})}function wt({panel:e}){switch(e){case`etica`:return(0,$.jsx)(`div`,{className:`p-4`,children:(0,$.jsx)(Ue,{})});case`herramientas`:return(0,$.jsx)(`div`,{className:`p-4`,children:(0,$.jsx)(Ge,{})});case`mcp`:return(0,$.jsx)(`div`,{className:`p-4`,children:(0,$.jsx)(Ze,{})});case`skills`:return(0,$.jsx)(`div`,{className:`p-4`,children:(0,$.jsx)(dt,{})});case`perfil`:return(0,$.jsx)(`div`,{className:`p-4`,children:(0,$.jsx)(at,{})});case`notas`:return(0,$.jsx)(`div`,{className:`p-4`,children:(0,$.jsx)(pt,{})});case`cron-jobs`:return(0,$.jsx)(`div`,{className:`p-4`,children:(0,$.jsx)(St,{})});case`seguridad`:return(0,$.jsx)(`div`,{className:`p-4`,children:(0,$.jsx)(Ct,{})});default:return null}}var Tt=[`etica`,`herramientas`,`mcp`,`skills`,`perfil`,`notas`,`cron-jobs`,`seguridad`];function Et({forcePanel:e}){let{panel:t}=te(),{fetchSkills:n}=ue(),{fetchTools:r}=pe(),{fetchMCPServers:i}=fe();(0,Q.useEffect)(()=>{n(),r(),i()},[n,r,i]);let a=e||(Tt.includes(t)?t:`herramientas`),{title:o,subtitle:s,eyebrow:c}={etica:{eyebrow:`PROTOCOLOS DE CONDUCTA`,title:`Ética & Alineación`,subtitle:`Configura los límites morales y el comportamiento base de tus agentes.`},herramientas:{eyebrow:`CAPACIDADES DINÁMICAS`,title:`Gestión de Herramientas`,subtitle:`Habilita y configura las funciones que tus agentes pueden ejecutar.`},mcp:{eyebrow:`CONECTIVIDAD EXTERNA`,title:`Servidores MCP`,subtitle:`Conecta Hive con fuentes de datos externas y herramientas de terceros.`},skills:{eyebrow:`HABILIDADES ESPECIALIZADAS`,title:`Galería de Skills`,subtitle:`Nodos cognitivos preconfigurados para tareas específicas de alto nivel.`},perfil:{eyebrow:`IDENTIDAD DEL OPERADOR`,title:`Perfil de Usuario`,subtitle:`Gestiona tu información personal y preferencias de la interfaz.`},notas:{eyebrow:`MEMORIA OPERATIVA`,title:`Notas del Sistema`,subtitle:`Registro de información persistente y recordatorios del enjambre.`},"cron-jobs":{eyebrow:`AUTOMATIZACIÓN TEMPORAL`,title:`Tareas Programadas`,subtitle:`Gestión de ejecuciones recurrentes y disparadores cron.`},seguridad:{eyebrow:`CONTROL DE ACCESO`,title:`Seguridad`,subtitle:`Protege tu instancia con email y contraseña. Esencial si despliegas Hive en un servidor público.`}}[a];return(0,$.jsxs)(`div`,{className:`hive-page-container`,children:[(0,$.jsx)(`div`,{className:`hive-page-header`,children:(0,$.jsxs)(`div`,{className:`relative z-10`,children:[(0,$.jsxs)(`div`,{className:`hive-page-header__eyebrow`,children:[(0,$.jsx)(`div`,{className:`hive-page-header__dot`}),(0,$.jsx)(`span`,{className:`hive-page-header__label`,children:c})]}),(0,$.jsxs)(`h2`,{className:`hive-title-page`,children:[o.split(` & `)[0],` `,o.includes(` & `)&&(0,$.jsxs)(`span`,{className:`hive-title-page__accent`,children:[`& `,o.split(` & `)[1]]}),o.includes(` `)&&!o.includes(` & `)&&(0,$.jsxs)($.Fragment,{children:[o.split(` `)[0],` `,(0,$.jsx)(`span`,{className:`hive-title-page__accent`,children:o.split(` `).slice(1).join(` `)})]}),!o.includes(` `)&&o]}),(0,$.jsx)(`p`,{className:`hive-subtitle`,children:s})]})}),(0,$.jsx)(`div`,{className:`animate-fade-in`,children:(0,$.jsx)(wt,{panel:a})})]})}export{Et as SettingsPage};