@johpaz/hive-agents 0.0.34 → 0.0.36

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 (466) hide show
  1. package/README.md +64 -39
  2. package/dist/hive.js +4539 -4586
  3. package/dist/ui/assets/AgentCreateForm-tJZv9FZC.js +1 -0
  4. package/dist/ui/assets/AgentDetailPage-Du-mRcAX.js +1 -0
  5. package/dist/ui/assets/AgentNewPage-DIFYd_Ys.js +1 -0
  6. package/dist/ui/assets/{AgentsPage-DhCjvDNa.js → AgentsPage-YvSgWRiw.js} +7 -7
  7. package/dist/ui/assets/CanvasPage-DtMwGvxf.js +33 -0
  8. package/dist/ui/assets/ChannelsPage-BdBXWHjj.js +8 -0
  9. package/dist/ui/assets/DashboardPage-ghl1ZguH.js +6 -0
  10. package/dist/ui/assets/{LoginPage-B30OrEBy.js → LoginPage-CAmSI9Vy.js} +1 -1
  11. package/dist/ui/assets/LogsPage-DAPBHkwK.js +1 -0
  12. package/dist/ui/assets/MeetingPage-WjjGOqqU.js +1 -0
  13. package/dist/ui/assets/{NotFound-HD1Yp9yK.js → NotFound-BMeQSGcG.js} +1 -1
  14. package/dist/ui/assets/ProvidersPage-Ct6HsAi1.js +1 -0
  15. package/dist/ui/assets/{RecoverPage-CLF6buGP.js → RecoverPage-DpW3l-yv.js} +1 -1
  16. package/dist/ui/assets/SettingsPage-DBJ7_E6C.js +9 -0
  17. package/dist/ui/assets/SetupPage-DKmLVUaj.js +1 -0
  18. package/dist/ui/assets/{WebChatPage-Um3VANzn.js → WebChatPage-CVRcKept.js} +2 -2
  19. package/dist/ui/assets/accordion-C5d5Rm5z.js +1 -0
  20. package/dist/ui/assets/{activity-SfJ6UDF2.js → activity-c3pNngT_.js} +1 -1
  21. package/dist/ui/assets/alert-C-NE-P3s.js +1 -0
  22. package/dist/ui/assets/{alert-dialog-M893TdvF.js → alert-dialog-C5mzbHdP.js} +1 -1
  23. package/dist/ui/assets/arrow-left-CBcbX5EZ.js +1 -0
  24. package/dist/ui/assets/badge-ChpACfWO.js +1 -0
  25. package/dist/ui/assets/{calendar-CMMeWsP-.js → calendar-B-KZ9RQO.js} +1 -1
  26. package/dist/ui/assets/{card-C7P3W6_y.js → card-CNf6BS2e.js} +1 -1
  27. package/dist/ui/assets/chevron-left-D4U-5A27.js +1 -0
  28. package/dist/ui/assets/chevron-right-CR4Skrf3.js +1 -0
  29. package/dist/ui/assets/chevron-up-BYhk0K2J.js +1 -0
  30. package/dist/ui/assets/{circle-alert-7koABcbO.js → circle-alert-CyHDwUj8.js} +1 -1
  31. package/dist/ui/assets/circle-check-Bb54Ebmu.js +1 -0
  32. package/dist/ui/assets/{cpu-mBJgRJzM.js → cpu-Cdgc_B1K.js} +1 -1
  33. package/dist/ui/assets/dialog-QnZ0ad8O.js +1 -0
  34. package/dist/ui/assets/{download-oaofq4K1.js → download-C3ifGMjJ.js} +1 -1
  35. package/dist/ui/assets/dropdown-menu-BK-CO3Od.js +1 -0
  36. package/dist/ui/assets/{es-eUrU2hyB.js → es-NQNoaWDx.js} +1 -1
  37. package/dist/ui/assets/{external-link-SkkF2Z7B.js → external-link-BvxYeTP1.js} +1 -1
  38. package/dist/ui/assets/{eye-B8lq7sWG.js → eye-DqNTU_GD.js} +1 -1
  39. package/dist/ui/assets/{file-text-0oYol8Bb.js → file-text-BT_9S9SM.js} +1 -1
  40. package/dist/ui/assets/{folder-open-DVYu2lgk.js → folder-open-BhH8y9ac.js} +1 -1
  41. package/dist/ui/assets/gauge-D_TMa4i9.js +1 -0
  42. package/dist/ui/assets/{globe-BVPd5DRa.js → globe-DeCQTCDJ.js} +1 -1
  43. package/dist/ui/assets/{hexagon-BIAFUAlQ.js → hexagon-DsGOUl-H.js} +1 -1
  44. package/dist/ui/assets/{history-BUAnaMQo.js → history-BSG-Ypqf.js} +1 -1
  45. package/dist/ui/assets/index-B2fCYtTS.css +2 -0
  46. package/dist/ui/assets/index-DMCjjdqf.js +116 -0
  47. package/dist/ui/assets/{info-DWioleen.js → info-NwLoa2Mj.js} +1 -1
  48. package/dist/ui/assets/{key-BCGwSKKc.js → key-3EP0dhkT.js} +1 -1
  49. package/dist/ui/assets/label-D2H1IR_J.js +1 -0
  50. package/dist/ui/assets/loader-circle-CZNax6kS.js +1 -0
  51. package/dist/ui/assets/{lock-D7PCO7GC.js → lock-Ei1_J-Nq.js} +1 -1
  52. package/dist/ui/assets/{pause-CI1JFH6r.js → pause-BUqah9Bi.js} +1 -1
  53. package/dist/ui/assets/play-NcZ4swwL.js +1 -0
  54. package/dist/ui/assets/plus-CX1xyhp5.js +1 -0
  55. package/dist/ui/assets/progress-BherYzY6.js +1 -0
  56. package/dist/ui/assets/{refresh-cw-BLmKlO4J.js → refresh-cw-DaYdjQFk.js} +1 -1
  57. package/dist/ui/assets/{save-M1nv6H3P.js → save-CUdYyHNy.js} +1 -1
  58. package/dist/ui/assets/scroll-area-DkeyX32e.js +1 -0
  59. package/dist/ui/assets/{send-ijRfR0gp.js → send-B0H5SEIE.js} +1 -1
  60. package/dist/ui/assets/{settings-BvXhlJCF.js → settings-Ds4SqD8s.js} +1 -1
  61. package/dist/ui/assets/{slider-DrDFLwXh.js → slider-CsiUDxc3.js} +1 -1
  62. package/dist/ui/assets/{sparkles-C4MACMbE.js → sparkles-yUEb-7oH.js} +1 -1
  63. package/dist/ui/assets/{square-D_-gRT1l.js → square-BD81nFtN.js} +1 -1
  64. package/dist/ui/assets/switch-BDwN8RYV.js +1 -0
  65. package/dist/ui/assets/{table-DWEJJiuF.js → table-CSc8ubon.js} +1 -1
  66. package/dist/ui/assets/terminal-DN38Q456.js +1 -0
  67. package/dist/ui/assets/{textarea-CwPvQVAG.js → textarea-CXgXWKrT.js} +1 -1
  68. package/dist/ui/assets/{trash-2-Blkv31Dz.js → trash-2-CNjMkoq6.js} +1 -1
  69. package/dist/ui/assets/{triangle-alert-BKgbd30k.js → triangle-alert-C9Y8Ub4X.js} +1 -1
  70. package/dist/ui/assets/useProviders-C6_QHsEi.js +1 -0
  71. package/dist/ui/assets/{vendor-radix-JY4ncZrD.js → vendor-radix-cw1bQaVC.js} +4 -4
  72. package/dist/ui/assets/{vendor-react-CscwQerf.js → vendor-react-D4s9E-zj.js} +1 -1
  73. package/dist/ui/assets/{volume-2-BiUgObeI.js → volume-2-CeSXNDv4.js} +1 -1
  74. package/dist/ui/assets/{zap-CpyuQJEC.js → zap-hlXjpSeA.js} +1 -1
  75. package/dist/ui/dist/assets/AgentCreateForm-tJZv9FZC.js +1 -0
  76. package/dist/ui/dist/assets/AgentDetailPage-Du-mRcAX.js +1 -0
  77. package/dist/ui/dist/assets/AgentNewPage-DIFYd_Ys.js +1 -0
  78. package/dist/ui/dist/assets/AgentsPage-YvSgWRiw.js +10 -0
  79. package/dist/ui/dist/assets/CanvasPage-DtMwGvxf.js +33 -0
  80. package/dist/ui/dist/assets/ChannelsPage-BdBXWHjj.js +8 -0
  81. package/dist/ui/dist/assets/DashboardPage-ghl1ZguH.js +6 -0
  82. package/dist/ui/dist/assets/LoginPage-CAmSI9Vy.js +1 -0
  83. package/dist/ui/dist/assets/LogsPage-DAPBHkwK.js +1 -0
  84. package/dist/ui/dist/assets/MeetingPage-WjjGOqqU.js +1 -0
  85. package/dist/ui/dist/assets/NotFound-BMeQSGcG.js +1 -0
  86. package/dist/ui/dist/assets/ProvidersPage-Ct6HsAi1.js +1 -0
  87. package/dist/ui/dist/assets/RecoverPage-DpW3l-yv.js +1 -0
  88. package/dist/ui/dist/assets/SettingsPage-DBJ7_E6C.js +9 -0
  89. package/dist/ui/dist/assets/SetupPage-DKmLVUaj.js +1 -0
  90. package/dist/ui/dist/assets/WebChatPage-CVRcKept.js +16 -0
  91. package/dist/ui/dist/assets/accordion-C5d5Rm5z.js +1 -0
  92. package/dist/ui/dist/assets/activity-c3pNngT_.js +1 -0
  93. package/dist/ui/dist/assets/alert-C-NE-P3s.js +1 -0
  94. package/dist/ui/dist/assets/alert-dialog-C5mzbHdP.js +1 -0
  95. package/dist/ui/dist/assets/arrow-left-CBcbX5EZ.js +1 -0
  96. package/dist/ui/dist/assets/badge-ChpACfWO.js +1 -0
  97. package/dist/ui/dist/assets/calendar-B-KZ9RQO.js +1 -0
  98. package/dist/ui/dist/assets/card-CNf6BS2e.js +1 -0
  99. package/dist/ui/dist/assets/chevron-left-D4U-5A27.js +1 -0
  100. package/dist/ui/dist/assets/chevron-right-CR4Skrf3.js +1 -0
  101. package/dist/ui/dist/assets/chevron-up-BYhk0K2J.js +1 -0
  102. package/dist/ui/dist/assets/circle-alert-CyHDwUj8.js +1 -0
  103. package/dist/ui/dist/assets/circle-check-Bb54Ebmu.js +1 -0
  104. package/dist/ui/dist/assets/cpu-Cdgc_B1K.js +1 -0
  105. package/dist/ui/dist/assets/dialog-QnZ0ad8O.js +1 -0
  106. package/dist/ui/dist/assets/download-C3ifGMjJ.js +1 -0
  107. package/dist/ui/dist/assets/dropdown-menu-BK-CO3Od.js +1 -0
  108. package/dist/ui/dist/assets/es-NQNoaWDx.js +1 -0
  109. package/dist/ui/dist/assets/external-link-BvxYeTP1.js +1 -0
  110. package/dist/ui/dist/assets/eye-DqNTU_GD.js +1 -0
  111. package/dist/ui/dist/assets/file-text-BT_9S9SM.js +1 -0
  112. package/dist/ui/dist/assets/folder-open-BhH8y9ac.js +1 -0
  113. package/dist/ui/dist/assets/format-GVHeOyWI.js +1 -0
  114. package/dist/ui/dist/assets/gateway-url-COCbW0IR.js +1 -0
  115. package/dist/ui/dist/assets/gauge-D_TMa4i9.js +1 -0
  116. package/dist/ui/dist/assets/globe-DeCQTCDJ.js +1 -0
  117. package/dist/ui/dist/assets/hexagon-DsGOUl-H.js +1 -0
  118. package/dist/ui/dist/assets/history-BSG-Ypqf.js +1 -0
  119. package/dist/ui/dist/assets/index-B2fCYtTS.css +2 -0
  120. package/dist/ui/dist/assets/index-DMCjjdqf.js +116 -0
  121. package/dist/ui/dist/assets/info-NwLoa2Mj.js +1 -0
  122. package/dist/ui/dist/assets/key-3EP0dhkT.js +1 -0
  123. package/dist/ui/dist/assets/label-D2H1IR_J.js +1 -0
  124. package/dist/ui/dist/assets/loader-circle-CZNax6kS.js +1 -0
  125. package/dist/ui/dist/assets/lock-Ei1_J-Nq.js +1 -0
  126. package/dist/ui/dist/assets/pause-BUqah9Bi.js +1 -0
  127. package/dist/ui/dist/assets/play-NcZ4swwL.js +1 -0
  128. package/dist/ui/dist/assets/plus-CX1xyhp5.js +1 -0
  129. package/dist/ui/dist/assets/progress-BherYzY6.js +1 -0
  130. package/dist/ui/dist/assets/refresh-cw-DaYdjQFk.js +1 -0
  131. package/dist/ui/dist/assets/rolldown-runtime-S-ySWqyJ.js +1 -0
  132. package/dist/ui/dist/assets/save-CUdYyHNy.js +1 -0
  133. package/dist/ui/dist/assets/scroll-area-DkeyX32e.js +1 -0
  134. package/dist/ui/dist/assets/send-B0H5SEIE.js +1 -0
  135. package/dist/ui/dist/assets/settings-Ds4SqD8s.js +1 -0
  136. package/dist/ui/dist/assets/slider-CsiUDxc3.js +14 -0
  137. package/dist/ui/dist/assets/sparkles-yUEb-7oH.js +1 -0
  138. package/dist/ui/dist/assets/square-BD81nFtN.js +1 -0
  139. package/dist/ui/dist/assets/switch-BDwN8RYV.js +1 -0
  140. package/dist/ui/dist/assets/table-CSc8ubon.js +1 -0
  141. package/dist/ui/dist/assets/terminal-DN38Q456.js +1 -0
  142. package/dist/ui/dist/assets/textarea-CXgXWKrT.js +1 -0
  143. package/dist/ui/dist/assets/trash-2-CNjMkoq6.js +1 -0
  144. package/dist/ui/dist/assets/triangle-alert-C9Y8Ub4X.js +1 -0
  145. package/dist/ui/dist/assets/useProviders-C6_QHsEi.js +1 -0
  146. package/dist/ui/dist/assets/utils-3pnRFmFe.js +1 -0
  147. package/dist/ui/dist/assets/vendor-charts-Bu2lyBKP.js +65 -0
  148. package/dist/ui/dist/assets/vendor-query-DsWPbQdG.js +1 -0
  149. package/dist/ui/dist/assets/vendor-radix-cw1bQaVC.js +63 -0
  150. package/dist/ui/dist/assets/vendor-react-D4s9E-zj.js +1 -0
  151. package/dist/ui/dist/assets/vendor-router-C9pIYwbJ.js +3 -0
  152. package/dist/ui/dist/assets/volume-2-CeSXNDv4.js +1 -0
  153. package/dist/ui/dist/assets/zap-hlXjpSeA.js +1 -0
  154. package/dist/ui/dist/favicon.ico +0 -0
  155. package/dist/ui/dist/index.html +40 -0
  156. package/dist/ui/dist/placeholder.svg +1 -0
  157. package/dist/ui/index.html +7 -11
  158. package/package.json +137 -15
  159. package/packages/cli/src/adapters/binary.ts +461 -0
  160. package/packages/cli/src/adapters/bun-global.ts +378 -0
  161. package/packages/cli/src/adapters/config.ts +314 -0
  162. package/packages/cli/src/adapters/docker.ts +308 -0
  163. package/packages/cli/src/adapters/factory.ts +168 -0
  164. package/packages/cli/src/adapters/index.ts +80 -0
  165. package/packages/cli/src/adapters/types.ts +218 -0
  166. package/packages/cli/src/commands/agent-run.ts +168 -0
  167. package/packages/cli/src/commands/agents.ts +398 -0
  168. package/packages/cli/src/commands/chat.ts +142 -0
  169. package/packages/cli/src/commands/config.ts +49 -0
  170. package/packages/cli/src/commands/cron.ts +487 -0
  171. package/packages/cli/src/commands/dev.ts +58 -0
  172. package/packages/cli/src/commands/doctor.ts +320 -0
  173. package/packages/cli/src/commands/gateway.ts +719 -0
  174. package/packages/cli/src/commands/logs.ts +57 -0
  175. package/packages/cli/src/commands/mcp.ts +175 -0
  176. package/packages/cli/src/commands/message.ts +77 -0
  177. package/packages/cli/src/commands/migrate.ts +90 -0
  178. package/packages/cli/src/commands/onboard.ts +1656 -0
  179. package/packages/cli/src/commands/security.ts +144 -0
  180. package/packages/cli/src/commands/service.ts +50 -0
  181. package/packages/cli/src/commands/sessions.ts +116 -0
  182. package/packages/cli/src/commands/skills.ts +215 -0
  183. package/packages/cli/src/commands/update.ts +203 -0
  184. package/packages/cli/src/index.ts +210 -0
  185. package/packages/cli/src/ui-bundle.generated.ts +3 -0
  186. package/packages/cli/src/utils/token.ts +6 -0
  187. package/packages/core/src/agent/agent-loop.ts +691 -0
  188. package/packages/core/src/agent/compaction.ts +240 -0
  189. package/packages/core/src/agent/context-compiler.ts +467 -0
  190. package/packages/core/src/agent/context-guard.ts +91 -0
  191. package/packages/core/src/agent/conversation-store.ts +244 -0
  192. package/packages/core/src/agent/curator.ts +158 -0
  193. package/packages/core/src/agent/hooks.ts +166 -0
  194. package/packages/core/src/agent/llm-client.ts +167 -0
  195. package/packages/core/src/agent/llm-providers/anthropic.ts +212 -0
  196. package/packages/core/src/agent/llm-providers/deepseek.ts +8 -0
  197. package/packages/core/src/agent/llm-providers/gemini.ts +215 -0
  198. package/packages/core/src/agent/llm-providers/groq.ts +5 -0
  199. package/packages/core/src/agent/llm-providers/interface.ts +195 -0
  200. package/packages/core/src/agent/llm-providers/kimi.ts +8 -0
  201. package/packages/core/src/agent/llm-providers/local-llama.ts +37 -0
  202. package/packages/core/src/agent/llm-providers/mistral.ts +5 -0
  203. package/packages/core/src/agent/llm-providers/nvidia.ts +5 -0
  204. package/packages/core/src/agent/llm-providers/ollama.ts +175 -0
  205. package/packages/core/src/agent/llm-providers/openai-compat-base.ts +379 -0
  206. package/packages/core/src/agent/llm-providers/openai.ts +5 -0
  207. package/packages/core/src/agent/llm-providers/openrouter.ts +5 -0
  208. package/packages/core/src/agent/llm-providers/qwen.ts +5 -0
  209. package/packages/core/src/agent/native-tools.ts +31 -0
  210. package/packages/core/src/agent/playbook-selector.ts +147 -0
  211. package/packages/core/src/agent/prompt-builder.ts +169 -0
  212. package/packages/core/src/agent/providers/index.ts +204 -0
  213. package/packages/core/src/agent/providers.ts +1 -0
  214. package/packages/core/src/agent/reflector.ts +200 -0
  215. package/packages/core/src/agent/service.ts +267 -0
  216. package/packages/core/src/agent/skill-selector.ts +479 -0
  217. package/packages/core/src/agent/stuck-loop.ts +133 -0
  218. package/packages/core/src/agent/tool-selector.ts +569 -0
  219. package/packages/core/src/agent/tracer.ts +100 -0
  220. package/packages/core/src/auth/auth.ts +108 -0
  221. package/packages/core/src/auth/index.ts +1 -0
  222. package/packages/core/src/canvas/a2ui-tools.ts +255 -0
  223. package/packages/core/src/canvas/canvas-manager.ts +390 -0
  224. package/packages/core/src/canvas/canvas-tools.ts +448 -0
  225. package/packages/core/src/canvas/emitter.ts +149 -0
  226. package/packages/core/src/canvas/index.ts +3 -0
  227. package/packages/core/src/channels/base.ts +154 -0
  228. package/packages/core/src/channels/discord.ts +273 -0
  229. package/packages/core/src/channels/index.ts +7 -0
  230. package/packages/core/src/channels/manager.ts +450 -0
  231. package/packages/core/src/channels/slack.ts +323 -0
  232. package/packages/core/src/channels/telegram.ts +612 -0
  233. package/packages/core/src/channels/webchat.ts +139 -0
  234. package/packages/core/src/channels/whatsapp.ts +548 -0
  235. package/packages/core/src/config/index.ts +12 -0
  236. package/packages/core/src/config/loader.ts +569 -0
  237. package/packages/core/src/events/agent-bus.ts +460 -0
  238. package/packages/core/src/events/event-bus.ts +169 -0
  239. package/packages/core/src/gateway/channel-notify.ts +64 -0
  240. package/packages/core/src/gateway/helpers/cors.ts +32 -0
  241. package/packages/core/src/gateway/helpers/index.ts +4 -0
  242. package/packages/core/src/gateway/helpers/narration.ts +57 -0
  243. package/packages/core/src/gateway/helpers/path.ts +13 -0
  244. package/packages/core/src/gateway/helpers/redact.ts +61 -0
  245. package/packages/core/src/gateway/index.ts +5 -0
  246. package/packages/core/src/gateway/initializer.ts +363 -0
  247. package/packages/core/src/gateway/lane-queue.ts +169 -0
  248. package/packages/core/src/gateway/llm-local/client.ts +94 -0
  249. package/packages/core/src/gateway/llm-local/detector.ts +321 -0
  250. package/packages/core/src/gateway/llm-local/downloader.ts +216 -0
  251. package/packages/core/src/gateway/llm-local/index.ts +34 -0
  252. package/packages/core/src/gateway/llm-local/manager.ts +186 -0
  253. package/packages/core/src/gateway/llm-local/models.ts +149 -0
  254. package/packages/core/src/gateway/llm-local/server.ts +179 -0
  255. package/packages/core/src/gateway/resolver.ts +108 -0
  256. package/packages/core/src/gateway/router.ts +124 -0
  257. package/packages/core/src/gateway/routes/agents.ts +210 -0
  258. package/packages/core/src/gateway/routes/auth.ts +244 -0
  259. package/packages/core/src/gateway/routes/channels.ts +484 -0
  260. package/packages/core/src/gateway/routes/chat.ts +241 -0
  261. package/packages/core/src/gateway/routes/config.ts +12 -0
  262. package/packages/core/src/gateway/routes/cron-api.ts +544 -0
  263. package/packages/core/src/gateway/routes/ethics.ts +46 -0
  264. package/packages/core/src/gateway/routes/llm-local.ts +271 -0
  265. package/packages/core/src/gateway/routes/mcp.ts +319 -0
  266. package/packages/core/src/gateway/routes/meeting.ts +232 -0
  267. package/packages/core/src/gateway/routes/models.ts +163 -0
  268. package/packages/core/src/gateway/routes/multimodal.ts +93 -0
  269. package/packages/core/src/gateway/routes/providers.ts +220 -0
  270. package/packages/core/src/gateway/routes/setup.ts +441 -0
  271. package/packages/core/src/gateway/routes/skills.ts +115 -0
  272. package/packages/core/src/gateway/routes/system.ts +469 -0
  273. package/packages/core/src/gateway/routes/tasks.ts +44 -0
  274. package/packages/core/src/gateway/routes/tools.ts +59 -0
  275. package/packages/core/src/gateway/routes/tts-local.ts +388 -0
  276. package/packages/core/src/gateway/routes/users.ts +122 -0
  277. package/packages/core/src/gateway/routes/voice.ts +189 -0
  278. package/packages/core/src/gateway/routes/workspace.ts +281 -0
  279. package/packages/core/src/gateway/server.ts +2744 -0
  280. package/packages/core/src/gateway/session.ts +95 -0
  281. package/packages/core/src/gateway/slash-commands.ts +207 -0
  282. package/packages/core/src/gateway/tts/README.md +94 -0
  283. package/packages/core/src/gateway/tts/package.json +25 -0
  284. package/packages/core/src/gateway/tts/src/client.ts +59 -0
  285. package/packages/core/src/gateway/tts/src/detect.ts +42 -0
  286. package/packages/core/src/gateway/tts/src/index.ts +15 -0
  287. package/packages/core/src/gateway/tts/src/install.ts +129 -0
  288. package/packages/core/src/gateway/tts/src/models.ts +50 -0
  289. package/packages/core/src/gateway/tts/src/server.ts +252 -0
  290. package/packages/core/src/gateway/tts/voices/.gitkeep +0 -0
  291. package/packages/core/src/heartbeat/index.ts +157 -0
  292. package/packages/core/src/index.ts +56 -0
  293. package/packages/core/src/mcp/hot-reload.ts +148 -0
  294. package/packages/core/src/mcp/singleton.ts +21 -0
  295. package/packages/core/src/mcp/tool-sync.ts +176 -0
  296. package/packages/core/src/multimodal/index.ts +2 -0
  297. package/packages/core/src/multimodal/types.ts +28 -0
  298. package/packages/core/src/multimodal/vision-service.ts +283 -0
  299. package/packages/core/src/plugins/api.ts +128 -0
  300. package/packages/core/src/plugins/index.ts +2 -0
  301. package/packages/core/src/plugins/loader.ts +365 -0
  302. package/packages/core/src/resilience/circuit-breaker.ts +225 -0
  303. package/packages/core/src/scheduler/CronScheduler.ts +699 -0
  304. package/packages/core/src/scheduler/dag/AgentExecutor.ts +53 -0
  305. package/packages/core/src/scheduler/dag/DAGScheduler.ts +250 -0
  306. package/packages/core/src/scheduler/dag/EventBridge.ts +122 -0
  307. package/packages/core/src/scheduler/dag/TaskGraph.ts +192 -0
  308. package/packages/core/src/scheduler/dag/TaskNode.ts +97 -0
  309. package/packages/core/src/scheduler/dag/TaskResult.ts +22 -0
  310. package/packages/core/src/scheduler/dag/errors.ts +37 -0
  311. package/packages/core/src/scheduler/dag/index.ts +26 -0
  312. package/packages/core/src/scheduler/dag/presets/ResearchPreset.ts +97 -0
  313. package/packages/core/src/scheduler/dag/strategies/ParallelStrategy.ts +21 -0
  314. package/packages/core/src/scheduler/dag/strategies/PriorityStrategy.ts +46 -0
  315. package/packages/core/src/scheduler/index.ts +22 -0
  316. package/packages/core/src/scheduler/integration.ts +237 -0
  317. package/packages/core/src/scheduler/types.ts +164 -0
  318. package/packages/core/src/security/google-chat.ts +269 -0
  319. package/packages/core/src/security/index.ts +192 -0
  320. package/packages/core/src/security/pairing.ts +250 -0
  321. package/packages/core/src/security/rate-limit.ts +270 -0
  322. package/packages/core/src/security/signal.ts +321 -0
  323. package/packages/core/src/state/store.ts +312 -0
  324. package/packages/core/src/storage/crypto.ts +197 -0
  325. package/packages/core/src/storage/migrate.ts +147 -0
  326. package/packages/core/src/storage/onboarding.ts +1506 -0
  327. package/packages/core/src/storage/schema.ts +666 -0
  328. package/packages/core/src/storage/seed.ts +628 -0
  329. package/packages/core/src/storage/sqlite.ts +407 -0
  330. package/packages/core/src/storage/usage.ts +374 -0
  331. package/packages/core/src/tool-runtime/index.ts +476 -0
  332. package/packages/core/src/tool-runtime/tool-worker.ts +125 -0
  333. package/packages/core/src/tools/agents/get-available-models.ts +118 -0
  334. package/packages/core/src/tools/agents/index.ts +610 -0
  335. package/packages/core/src/tools/canvas/index.ts +420 -0
  336. package/packages/core/src/tools/cli/index.ts +142 -0
  337. package/packages/core/src/tools/core/index.ts +478 -0
  338. package/packages/core/src/tools/cron/index.ts +635 -0
  339. package/packages/core/src/tools/filesystem/fs-delete.ts +78 -0
  340. package/packages/core/src/tools/filesystem/fs-edit.ts +106 -0
  341. package/packages/core/src/tools/filesystem/fs-exists.ts +63 -0
  342. package/packages/core/src/tools/filesystem/fs-glob.ts +108 -0
  343. package/packages/core/src/tools/filesystem/fs-list.ts +129 -0
  344. package/packages/core/src/tools/filesystem/fs-read.ts +72 -0
  345. package/packages/core/src/tools/filesystem/fs-write.ts +67 -0
  346. package/packages/core/src/tools/filesystem/index.ts +34 -0
  347. package/packages/core/src/tools/filesystem/workspace-guard.ts +62 -0
  348. package/packages/core/src/tools/index.ts +197 -0
  349. package/packages/core/src/tools/meeting/index.ts +363 -0
  350. package/packages/core/src/tools/office/index.ts +47 -0
  351. package/packages/core/src/tools/office/office-escribir-docx.ts +192 -0
  352. package/packages/core/src/tools/office/office-escribir-pdf.ts +172 -0
  353. package/packages/core/src/tools/office/office-escribir-pptx.ts +174 -0
  354. package/packages/core/src/tools/office/office-escribir-xlsx.ts +116 -0
  355. package/packages/core/src/tools/office/office-leer-docx.ts +93 -0
  356. package/packages/core/src/tools/office/office-leer-pdf.ts +114 -0
  357. package/packages/core/src/tools/office/office-leer-pptx.ts +136 -0
  358. package/packages/core/src/tools/office/office-leer-xlsx.ts +124 -0
  359. package/packages/core/src/tools/types.ts +39 -0
  360. package/packages/core/src/tools/voice/index.ts +104 -0
  361. package/packages/core/src/tools/web/browser-click.ts +78 -0
  362. package/packages/core/src/tools/web/browser-extract.ts +139 -0
  363. package/packages/core/src/tools/web/browser-navigate.ts +106 -0
  364. package/packages/core/src/tools/web/browser-screenshot.ts +87 -0
  365. package/packages/core/src/tools/web/browser-script.ts +88 -0
  366. package/packages/core/src/tools/web/browser-service.ts +554 -0
  367. package/packages/core/src/tools/web/browser-type.ts +101 -0
  368. package/packages/core/src/tools/web/browser-wait.ts +136 -0
  369. package/packages/core/src/tools/web/index.ts +41 -0
  370. package/packages/core/src/tools/web/web-fetch.ts +78 -0
  371. package/packages/core/src/tools/web/web-search.ts +123 -0
  372. package/packages/core/src/utils/benchmark.ts +80 -0
  373. package/packages/core/src/utils/crypto.ts +73 -0
  374. package/packages/core/src/utils/date.ts +42 -0
  375. package/packages/core/src/utils/index.ts +5 -0
  376. package/packages/core/src/utils/logger.ts +389 -0
  377. package/packages/core/src/utils/retry.ts +70 -0
  378. package/packages/core/src/utils/toon.ts +253 -0
  379. package/packages/core/src/voice/index.ts +643 -0
  380. package/packages/mcp/src/config.ts +13 -0
  381. package/packages/mcp/src/index.ts +1 -0
  382. package/packages/mcp/src/logger.ts +47 -0
  383. package/packages/mcp/src/manager.ts +439 -0
  384. package/packages/mcp/src/transports/index.ts +67 -0
  385. package/packages/mcp/src/transports/sse.ts +238 -0
  386. package/packages/mcp/src/transports/websocket.ts +159 -0
  387. package/packages/skills/src/bundled/agents/agent_spawner/SKILL.md +167 -0
  388. package/packages/skills/src/bundled/agents/code_delegator/SKILL.md +156 -0
  389. package/packages/skills/src/bundled/agents/memory_manager/SKILL.md +143 -0
  390. package/packages/skills/src/bundled/agents/research_and_remember/SKILL.md +139 -0
  391. package/packages/skills/src/bundled/agents/task_orchestrator/SKILL.md +198 -0
  392. package/packages/skills/src/bundled/canvas/a2ui_dashboard/SKILL.md +176 -0
  393. package/packages/skills/src/bundled/canvas/a2ui_form/SKILL.md +202 -0
  394. package/packages/skills/src/bundled/canvas/a2ui_interactive/SKILL.md +206 -0
  395. package/packages/skills/src/bundled/canvas/canvas_dashboard/SKILL.md +146 -0
  396. package/packages/skills/src/bundled/canvas/canvas_interact/SKILL.md +148 -0
  397. package/packages/skills/src/bundled/canvas/canvas_report/SKILL.md +146 -0
  398. package/packages/skills/src/bundled/cli/cli_pipeline/SKILL.md +136 -0
  399. package/packages/skills/src/bundled/cli/cli_safe_exec/SKILL.md +125 -0
  400. package/packages/skills/src/bundled/cron_manager/SKILL.md +188 -0
  401. package/packages/skills/src/bundled/cron_reminder/SKILL.md +112 -0
  402. package/packages/skills/src/bundled/filesystem/file_manager/SKILL.md +118 -0
  403. package/packages/skills/src/bundled/filesystem/file_read_and_summarize/SKILL.md +108 -0
  404. package/packages/skills/src/bundled/filesystem/file_writer/SKILL.md +135 -0
  405. package/packages/skills/src/bundled/meeting/meeting_transcription/SKILL.md +213 -0
  406. package/packages/skills/src/bundled/office/office_document_manager/SKILL.md +262 -0
  407. package/packages/skills/src/bundled/search_knowledge/busqueda_fts5/SKILL.md +74 -0
  408. package/packages/skills/src/bundled/voice/voice_assistant/SKILL.md +174 -0
  409. package/packages/skills/src/bundled/voice/voice_input/SKILL.md +146 -0
  410. package/packages/skills/src/bundled/voice/voice_output/SKILL.md +151 -0
  411. package/packages/skills/src/bundled/web/browser_automate/SKILL.md +120 -0
  412. package/packages/skills/src/bundled/web/browser_scrape/SKILL.md +109 -0
  413. package/packages/skills/src/bundled/web/web_monitor/SKILL.md +127 -0
  414. package/packages/skills/src/bundled/web/web_research/SKILL.md +119 -0
  415. package/packages/skills/src/bundled-data.generated.ts +1964 -0
  416. package/packages/skills/src/index.ts +1 -0
  417. package/packages/skills/src/loader.ts +388 -0
  418. package/dist/ui/assets/AgentCreateForm-DS6yXjGV.js +0 -1
  419. package/dist/ui/assets/AgentDetailPage-Ud552U7_.js +0 -1
  420. package/dist/ui/assets/AgentNewPage-DWWs1P7s.js +0 -1
  421. package/dist/ui/assets/BridgePage-BD93aBKM.js +0 -1
  422. package/dist/ui/assets/CanvasPage-CM35yj0Q.js +0 -33
  423. package/dist/ui/assets/ChannelsPage-CtsWtJdc.js +0 -8
  424. package/dist/ui/assets/DashboardPage-BpiwR5Jg.js +0 -6
  425. package/dist/ui/assets/LogsPage-DqUsG3MW.js +0 -1
  426. package/dist/ui/assets/MeetingPage-C5B8-IzE.js +0 -1
  427. package/dist/ui/assets/ProjectsPage-zic2sjUf.js +0 -1
  428. package/dist/ui/assets/ProvidersPage-BxyIGKzh.js +0 -1
  429. package/dist/ui/assets/SettingsPage-CNFm3nun.js +0 -9
  430. package/dist/ui/assets/SetupPage-RBcjQtv7.js +0 -1
  431. package/dist/ui/assets/accordion-BEVqJf2A.js +0 -1
  432. package/dist/ui/assets/alert-BeGcM0nb.js +0 -1
  433. package/dist/ui/assets/api-q5Ax-vD2.js +0 -63
  434. package/dist/ui/assets/arrow-left-B_jlw8X_.js +0 -1
  435. package/dist/ui/assets/badge-pNhtItyt.js +0 -1
  436. package/dist/ui/assets/chevron-down-B16UVNlu.js +0 -1
  437. package/dist/ui/assets/chevron-left-_8ly7Fz0.js +0 -1
  438. package/dist/ui/assets/chevron-right-yzZLjezG.js +0 -1
  439. package/dist/ui/assets/chevron-up-CxKDQEE5.js +0 -1
  440. package/dist/ui/assets/circle-CFKiO9Ds.js +0 -1
  441. package/dist/ui/assets/circle-check-E2u7ZS2r.js +0 -1
  442. package/dist/ui/assets/circle-minus-1-TZF2pu.js +0 -1
  443. package/dist/ui/assets/circle-x-Cm3Sr-xb.js +0 -1
  444. package/dist/ui/assets/dialog-BaJbZsQF.js +0 -1
  445. package/dist/ui/assets/dist-DB-fE0Co.js +0 -1
  446. package/dist/ui/assets/dropdown-menu-DJoOchfz.js +0 -1
  447. package/dist/ui/assets/gauge-BTpFKuAj.js +0 -1
  448. package/dist/ui/assets/index-BN0875JH.css +0 -2
  449. package/dist/ui/assets/index-D4pdc0Uw.js +0 -54
  450. package/dist/ui/assets/label-C6tqnnKd.js +0 -1
  451. package/dist/ui/assets/loader-circle-CK3qRV3f.js +0 -1
  452. package/dist/ui/assets/pencil-BF2_XX-i.js +0 -1
  453. package/dist/ui/assets/play-DidATMfT.js +0 -1
  454. package/dist/ui/assets/plus-DXm1XDhQ.js +0 -1
  455. package/dist/ui/assets/progress-B1HC9cB_.js +0 -1
  456. package/dist/ui/assets/scroll-area-DKNpYkRA.js +0 -1
  457. package/dist/ui/assets/search-Co6mulZS.js +0 -1
  458. package/dist/ui/assets/switch-7AuR7x2g.js +0 -1
  459. package/dist/ui/assets/terminal-CjZu0OZ0.js +0 -1
  460. package/dist/ui/assets/useProviders-Bxsnav4y.js +0 -1
  461. package/dist/ui/assets/useWebSocketStore-ZCW_Nt1w.js +0 -1
  462. package/dist/ui/assets/x-5cXW_1ZS.js +0 -1
  463. /package/dist/ui/assets/{format-C0EOLKvf.js → format-GVHeOyWI.js} +0 -0
  464. /package/dist/ui/assets/{gateway-url-OqLaEDK-.js → gateway-url-COCbW0IR.js} +0 -0
  465. /package/dist/ui/assets/{utils-_qMjiZaF.js → utils-3pnRFmFe.js} +0 -0
  466. /package/dist/ui/assets/{vendor-router-DhLEd920.js → vendor-router-C9pIYwbJ.js} +0 -0
@@ -0,0 +1 @@
1
+ export * from "./loader.ts";
@@ -0,0 +1,388 @@
1
+ import * as fs from "node:fs";
2
+ import * as path from "node:path";
3
+ import { YAML } from "bun";
4
+
5
+ // Static bundled data generated by packages/skills/scripts/generate-bundle.ts
6
+ // Loaded at build time so it works inside dist/hive.js without FS access
7
+ let STATIC_BUNDLED_DATA: Array<{
8
+ name: string; description: string; category: string; version: string;
9
+ tools: string[]; triggers: string[]; body: string;
10
+ }> = [];
11
+ try {
12
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
13
+ STATIC_BUNDLED_DATA = require("./bundled-data.generated").BUNDLED_SKILLS_DATA ?? [];
14
+ } catch {
15
+ // Not generated yet (dev mode without running generate-bundle script) — FS scan used instead
16
+ }
17
+
18
+ export interface SkillsConfig {
19
+ allowBundled?: string[];
20
+ managedDir?: string;
21
+ extraDirs?: string[];
22
+ hotReload?: boolean;
23
+ maxSkillSizeKB?: number;
24
+ }
25
+
26
+ export interface Config {
27
+ skills?: SkillsConfig;
28
+ workspacePath?: string;
29
+ }
30
+
31
+ interface Logger {
32
+ debug: (msg: string, ...args: unknown[]) => void;
33
+ info: (msg: string, ...args: unknown[]) => void;
34
+ warn: (msg: string, ...args: unknown[]) => void;
35
+ error: (msg: string, ...args: unknown[]) => void;
36
+ }
37
+
38
+ function createLogger(): Logger {
39
+ return {
40
+ debug: (msg, ...args) => console.debug(`[skills] ${msg}`, ...args),
41
+ info: (msg, ...args) => console.info(`[skills] ${msg}`, ...args),
42
+ warn: (msg, ...args) => console.warn(`[skills] ${msg}`, ...args),
43
+ error: (msg, ...args) => console.error(`[skills] ${msg}`, ...args),
44
+ };
45
+ }
46
+
47
+ export interface SkillStep {
48
+ step: number;
49
+ action: string;
50
+ instruction: string;
51
+ output?: string;
52
+ params?: Record<string, any>;
53
+ }
54
+
55
+ export interface OutputFormat {
56
+ structure: "markdown" | "code" | "json" | "text";
57
+ language?: string;
58
+ sections?: string[];
59
+ max_length?: string;
60
+ include_diff?: boolean;
61
+ }
62
+
63
+ export interface SkillExample {
64
+ user_input: string;
65
+ expected_behavior: string;
66
+ }
67
+
68
+ export interface SkillMetadata {
69
+ name: string;
70
+ version?: string;
71
+ author?: string;
72
+ description: string;
73
+ icon?: string;
74
+ category?: string;
75
+ permissions?: string[];
76
+ dependencies?: string[];
77
+ tools?: string[];
78
+
79
+ // Structured skill fields
80
+ triggers?: string[]; // Patrones de activación explícita
81
+ steps?: SkillStep[]; // Workflow secuenciado
82
+ rules?: string[]; // Reglas de ejecución
83
+ output_format?: OutputFormat; // Estructura de output esperado
84
+ preferred_agents?: string[]; // Agents preferidos para delegación
85
+ examples?: SkillExample[]; // Ejemplos de uso
86
+
87
+ requirements?: {
88
+ os?: string[];
89
+ bins?: string[];
90
+ env?: string[];
91
+ config?: string[];
92
+ };
93
+ // Retrocompatibilidad con el campo metadata.hive previo
94
+ metadata?: {
95
+ hive?: {
96
+ emoji?: string;
97
+ bins?: string[];
98
+ userInvocable?: boolean;
99
+ requires?: {
100
+ config?: string[];
101
+ env?: string[];
102
+ };
103
+ install?: {
104
+ brew?: string;
105
+ apt?: string;
106
+ npm?: string;
107
+ };
108
+ os?: string[];
109
+ };
110
+ };
111
+ }
112
+
113
+ export interface Skill {
114
+ name: string;
115
+ description: string;
116
+ version?: string;
117
+ author?: string;
118
+ icon?: string;
119
+ category?: string;
120
+ content: string;
121
+ raw: string;
122
+ metadata: SkillMetadata;
123
+ source: "bundled" | "managed" | "workspace";
124
+ path: string;
125
+ permissions?: string[];
126
+ dependencies?: string[];
127
+ tools?: string[];
128
+ // Structured skill fields (parsed from frontmatter)
129
+ triggers?: string[];
130
+ steps?: SkillStep[];
131
+ rules?: string[];
132
+ output_format?: OutputFormat;
133
+ preferred_agents?: string[];
134
+ examples?: SkillExample[];
135
+ }
136
+
137
+ function parseFrontmatter(content: string): { frontmatter: Record<string, unknown>; body: string } {
138
+ const match = content.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);
139
+
140
+ if (!match) {
141
+ return { frontmatter: {}, body: content };
142
+ }
143
+
144
+ try {
145
+ const frontmatter = YAML.parse(match[1]!) as Record<string, unknown>;
146
+ const body = match[2]!;
147
+ return { frontmatter, body };
148
+ } catch {
149
+ return { frontmatter: {}, body: content };
150
+ }
151
+ }
152
+
153
+ export class SkillLoader {
154
+ private config: Config;
155
+ private log: Logger;
156
+ private cache: Map<string, Skill> = new Map();
157
+ private bundledDir: string;
158
+
159
+ constructor(config: Config) {
160
+ this.config = config;
161
+ this.log = createLogger();
162
+ this.bundledDir = path.join(__dirname, "bundled");
163
+ }
164
+
165
+ private expandPath(p: string): string {
166
+ if (p.startsWith("~")) {
167
+ return path.join(process.env.HOME ?? "", p.slice(1));
168
+ }
169
+ return p;
170
+ }
171
+
172
+ loadSkill(skillPath: string, source: Skill["source"]): Skill | null {
173
+ try {
174
+ const skillMdPath = path.join(skillPath, "SKILL.md");
175
+
176
+ if (!fs.existsSync(skillMdPath)) {
177
+ return null;
178
+ }
179
+
180
+ const content = fs.readFileSync(skillMdPath, "utf-8");
181
+ const { frontmatter, body } = parseFrontmatter(content);
182
+
183
+ const rawMetadata = (frontmatter.metadata as any) ?? {};
184
+ const hiveMetadata = rawMetadata.hive ?? {};
185
+
186
+ const name = (frontmatter.name as string) ?? path.basename(skillPath);
187
+ const description = (frontmatter.description as string) ?? "";
188
+ const version = (frontmatter.version as string) ?? "0.0.1";
189
+ const author = (frontmatter.author as string) ?? "Anonymous";
190
+ const icon = (frontmatter.icon as string) ?? hiveMetadata.emoji ?? "🧩";
191
+ const category = (frontmatter.category as string) ?? "general";
192
+
193
+ const permissions = (frontmatter.permissions as string[]) ?? [];
194
+ const dependencies = (frontmatter.dependencies as string[]) ?? [];
195
+ const tools = (frontmatter.tools as string[]) ?? [];
196
+
197
+ // Structured skill fields
198
+ const triggers = (frontmatter.triggers as string[]) ?? [];
199
+ const steps = (frontmatter.steps as SkillStep[]) ?? [];
200
+ const rules = (frontmatter.rules as string[]) ?? [];
201
+ const output_format = (frontmatter.output_format as OutputFormat) ?? undefined;
202
+ const preferred_agents = (frontmatter.preferred_agents as string[]) ?? [];
203
+ const examples = (frontmatter.examples as SkillExample[]) ?? [];
204
+
205
+ const metadata: SkillMetadata = {
206
+ ...(frontmatter as any),
207
+ name,
208
+ description,
209
+ version,
210
+ author,
211
+ icon,
212
+ category,
213
+ permissions,
214
+ dependencies,
215
+ tools,
216
+ triggers,
217
+ steps,
218
+ rules,
219
+ output_format,
220
+ preferred_agents,
221
+ examples
222
+ };
223
+
224
+ const skill: Skill = {
225
+ name,
226
+ description,
227
+ version,
228
+ author,
229
+ icon,
230
+ category,
231
+ content: body,
232
+ raw: content,
233
+ metadata,
234
+ source,
235
+ path: skillPath,
236
+ permissions,
237
+ dependencies,
238
+ tools,
239
+ triggers,
240
+ steps,
241
+ rules,
242
+ output_format,
243
+ preferred_agents,
244
+ examples
245
+ };
246
+
247
+ this.cache.set(name, skill);
248
+ return skill;
249
+ } catch (error) {
250
+ this.log.error(`Failed to load skill: ${skillPath}`, { error: (error as Error).message });
251
+ return null;
252
+ }
253
+ }
254
+
255
+ loadBundledSkills(): Skill[] {
256
+ // Use static pre-generated data when available (production bundle, dist/hive.js)
257
+ if (STATIC_BUNDLED_DATA.length > 0) {
258
+ const skills: Skill[] = STATIC_BUNDLED_DATA.map((entry) => ({
259
+ name: entry.name,
260
+ description: entry.description,
261
+ version: entry.version,
262
+ author: "Hive",
263
+ icon: "🧩",
264
+ category: entry.category,
265
+ content: entry.body,
266
+ raw: entry.body,
267
+ metadata: {
268
+ name: entry.name,
269
+ description: entry.description,
270
+ version: entry.version,
271
+ category: entry.category,
272
+ tools: entry.tools,
273
+ triggers: entry.triggers,
274
+ },
275
+ source: "bundled" as const,
276
+ path: "",
277
+ tools: entry.tools,
278
+ triggers: entry.triggers,
279
+ }));
280
+ this.log.debug(`Loaded ${skills.length} bundled skills from static data`);
281
+ return skills;
282
+ }
283
+
284
+ // Fallback: FS scan for development (before generate-bundle is run)
285
+ const skills: Map<string, Skill> = new Map();
286
+
287
+ if (!fs.existsSync(this.bundledDir)) {
288
+ this.log.debug(`Bundled skills directory not found: ${this.bundledDir}`);
289
+ return [];
290
+ }
291
+
292
+ const scanDir = (dir: string) => {
293
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
294
+ if (!entry.isDirectory()) continue;
295
+ const entryPath = path.join(dir, entry.name);
296
+ if (fs.existsSync(path.join(entryPath, "SKILL.md"))) {
297
+ const skill = this.loadSkill(entryPath, "bundled");
298
+ if (skill) skills.set(skill.name, skill);
299
+ } else {
300
+ // Es un directorio de categoría — bajar un nivel más
301
+ scanDir(entryPath);
302
+ }
303
+ }
304
+ };
305
+
306
+ scanDir(this.bundledDir);
307
+
308
+ this.log.debug(`Loaded ${skills.size} bundled skills from filesystem`);
309
+ return Array.from(skills.values());
310
+ }
311
+
312
+ loadAllSkills(): Skill[] {
313
+ const skills: Map<string, Skill> = new Map();
314
+ const allowBundled = this.config.skills?.allowBundled;
315
+
316
+ // 1. Load bundled skills (lowest priority)
317
+ const bundledSkills = this.loadBundledSkills();
318
+ for (const skill of bundledSkills) {
319
+ // If allowBundled is undefined, empty, or contains the skill name, include it
320
+ if (!allowBundled || allowBundled.length === 0 || allowBundled.includes(skill.name)) {
321
+ skills.set(skill.name, skill);
322
+ }
323
+ }
324
+
325
+ // 2. Load managed skills (medium priority)
326
+ const managedDir = this.expandPath(this.config.skills?.managedDir ?? "~/.hive/skills");
327
+ if (fs.existsSync(managedDir)) {
328
+ for (const entry of fs.readdirSync(managedDir, { withFileTypes: true })) {
329
+ if (entry.isDirectory()) {
330
+ const skill = this.loadSkill(path.join(managedDir, entry.name), "managed");
331
+ if (skill) {
332
+ skills.set(skill.name, skill);
333
+ }
334
+ }
335
+ }
336
+ }
337
+
338
+ // 3. Load extra directories
339
+ const extraDirs = this.config.skills?.extraDirs ?? [];
340
+ for (const extraDir of extraDirs) {
341
+ const expandedDir = this.expandPath(extraDir);
342
+ if (fs.existsSync(expandedDir)) {
343
+ for (const entry of fs.readdirSync(expandedDir, { withFileTypes: true })) {
344
+ if (entry.isDirectory()) {
345
+ const skill = this.loadSkill(path.join(expandedDir, entry.name), "managed");
346
+ if (skill) {
347
+ skills.set(skill.name, skill);
348
+ }
349
+ }
350
+ }
351
+ }
352
+ }
353
+
354
+ // 4. Load workspace skills (highest priority)
355
+ const workspacePath = this.config.workspacePath ?? process.cwd();
356
+ const workspaceSkillsDir = path.join(workspacePath, "skills");
357
+ if (fs.existsSync(workspaceSkillsDir)) {
358
+ for (const entry of fs.readdirSync(workspaceSkillsDir, { withFileTypes: true })) {
359
+ if (entry.isDirectory()) {
360
+ const skill = this.loadSkill(path.join(workspaceSkillsDir, entry.name), "workspace");
361
+ if (skill) {
362
+ skills.set(skill.name, skill);
363
+ }
364
+ }
365
+ }
366
+ }
367
+
368
+ this.log.info(`Loaded ${skills.size} total skills`);
369
+ return Array.from(skills.values());
370
+ }
371
+
372
+ getSkill(name: string): Skill | undefined {
373
+ return this.cache.get(name);
374
+ }
375
+
376
+ listSkills(): string[] {
377
+ return Array.from(this.cache.keys());
378
+ }
379
+
380
+ clearCache(): void {
381
+ this.cache.clear();
382
+ }
383
+ }
384
+
385
+ export function createSkillLoader(config: Config): SkillLoader {
386
+ return new SkillLoader(config);
387
+ }
388
+
@@ -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-_qMjiZaF.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-7AuR7x2g.js";import{t as d}from"./circle-alert-7koABcbO.js";import{t as f}from"./cpu-mBJgRJzM.js";import{t as p}from"./external-link-SkkF2Z7B.js";import{t as m}from"./folder-open-DVYu2lgk.js";import{t as h}from"./loader-circle-CK3qRV3f.js";import{t as g}from"./save-M1nv6H3P.js";import{n as _,t as v}from"./textarea-CwPvQVAG.js";import{t as y}from"./sparkles-C4MACMbE.js";import{t as b}from"./x-5cXW_1ZS.js";import{r as x,t as S}from"./api-q5Ax-vD2.js";import{E as C,T as w,c as T,t as E}from"./index-D4pdc0Uw.js";import{t as D}from"./label-C6tqnnKd.js";import{a as O,c as k,i as ee,n as A,o as j,r as M,s as N,t as P}from"./dialog-BaJbZsQF.js";import{t as F}from"./badge-pNhtItyt.js";import{a as I,n as L,o as R,r as z,t as B}from"./card-C7P3W6_y.js";import"./useProviders-Bxsnav4y.js";var V=e(t(),1),H=n();function U({selectedProviderId:e,selectedModelId:t,onProviderChange:n,onModelChange:r,disabled:o=!1,typeFilter:u}){let{providers:d,models:f}=T(),p=e=>{if(e.id===`ollama`)return!0;let t=e.base_url||e.baseUrl||``;return t.includes(`localhost`)||t.includes(`127.0.0.1`)?!0:!!e.has_api_key},m=e=>{if(e.id===`ollama`)return!0;let t=e.base_url||e.baseUrl||``;return t.includes(`localhost`)||t.includes(`127.0.0.1`)},h=d.filter(e=>(e.enabled||e.active)&&p(e)),g=d.find(t=>t.id===e),_=!!g&&!h.some(e=>e.id===g.id),v=(0,V.useMemo)(()=>e?f.filter(t=>{let n=(t.provider_id||t.providerId)===e,r=!u||t.model_type===u;return n&&r}):[],[e,f,u]),y=(0,V.useMemo)(()=>v.filter(e=>e.enabled||e.active),[v]),b=v.find(e=>e.id===t),x=!!b&&!y.some(e=>e.id===b.id);(0,V.useEffect)(()=>{t&&v.length>0&&!v.find(e=>e.id===t)&&r(``)},[v,t,r]);let S=e=>{if(!e)return[];try{return JSON.parse(e)}catch{return[]}};return(0,H.jsxs)(`div`,{className:`space-y-4`,children:[(0,H.jsxs)(`div`,{className:`space-y-2`,children:[(0,H.jsx)(D,{htmlFor:`provider`,children:`Proveedor de IA`}),(0,H.jsxs)(s,{value:e||``,onValueChange:n,disabled:o||h.length===0,children:[(0,H.jsx)(l,{id:`provider`,className:`w-full`,children:(0,H.jsx)(a,{placeholder:`Selecciona un proveedor`,children:e&&g?(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`span`,{children:g.name}),_&&(0,H.jsx)(`span`,{className:`text-[10px] text-amber-400/80`,children:`(inactivo)`}),m(g)?(0,H.jsx)(`span`,{className:`text-[9px] font-bold px-1.5 py-0.5 rounded-full bg-amber-500/20 text-amber-400`,children:`LOCAL`}):(0,H.jsx)(`span`,{className:`text-[9px] font-bold px-1.5 py-0.5 rounded-full bg-emerald-500/20 text-emerald-400`,children:`API`})]}):`Selecciona un proveedor`})}),(0,H.jsx)(c,{children:h.length===0?(0,H.jsx)(i,{value:`none`,disabled:!0,children:`No hay proveedores configurados`}):h.map(e=>(0,H.jsx)(i,{value:e.id,children:(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`span`,{children:e.name}),m(e)?(0,H.jsx)(`span`,{className:`text-[9px] font-bold px-1.5 py-0.5 rounded-full bg-amber-500/20 text-amber-400`,children:`LOCAL`}):(0,H.jsx)(`span`,{className:`text-[9px] font-bold px-1.5 py-0.5 rounded-full bg-emerald-500/20 text-emerald-400`,children:`API`})]})},e.id))})]}),_&&g&&(0,H.jsxs)(`p`,{className:`text-[10px] text-amber-400/80`,children:[`El proveedor "`,g.name,`" está inactivo. Selecciona uno activo para cambiar.`]}),h.length===0&&(0,H.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Configura un proveedor en`,` `,(0,H.jsx)(`a`,{href:`/providers`,className:`text-primary underline`,children:`Settings > Providers`})]})]}),e&&(0,H.jsxs)(`div`,{className:`space-y-2`,children:[(0,H.jsx)(D,{htmlFor:`model`,children:`Modelo`}),(0,H.jsxs)(s,{value:t||``,onValueChange:r,disabled:o||y.length===0,children:[(0,H.jsx)(l,{id:`model`,className:`w-full`,children:(0,H.jsx)(a,{placeholder:`Selecciona un modelo`,children:t&&b?(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`span`,{children:b.name}),x&&(0,H.jsx)(`span`,{className:`text-[10px] text-amber-400/80`,children:`(inactivo)`})]}):`Selecciona un modelo`})}),(0,H.jsx)(c,{children:y.length===0?(0,H.jsx)(i,{value:`none`,disabled:!0,children:`No hay modelos disponibles`}):y.map(e=>(0,H.jsx)(i,{value:e.id,children:(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`span`,{children:e.name}),e.contextWindow&&(0,H.jsxs)(F,{variant:`secondary`,className:`text-[10px]`,children:[(e.contextWindow/1e3).toFixed(0),`K ctx`]})]})},e.id))})]}),x&&b&&(0,H.jsxs)(`p`,{className:`text-[10px] text-amber-400/80`,children:[`El modelo "`,b.name,`" está inactivo. Selecciona uno activo para cambiar.`]}),t&&v.find(e=>e.id===t)&&(0,H.jsx)(B,{className:`mt-2`,children:(0,H.jsxs)(L,{className:`p-3 space-y-2`,children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,H.jsx)(`span`,{className:`text-sm font-medium`,children:v.find(e=>e.id===t)?.name}),(0,H.jsx)(F,{variant:`outline`,children:d.find(t=>t.id===e)?.name})]}),(()=>{let e=S(v.find(e=>e.id===t)?.capabilities);return e.length>0?(0,H.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:e.slice(0,5).map(e=>(0,H.jsx)(F,{variant:`secondary`,className:`text-[10px]`,children:e},e))}):null})()]})})]})]})}var W=[{value:`friendly`,label:`Amigable`},{value:`professional`,label:`Profesional`},{value:`casual`,label:`Casual`},{value:`formal`,label:`Formal`},{value:`creative`,label:`Creativo`}];function G({initialData:e,onSuccess:t,onCancel:n}){let{createAgent:F,updateAgent:G,isLoading:K,error:q}=E(),{activeProviders:te}=T(),[J,Y]=(0,V.useState)({isValidating:!1,exists:!1,accessible:!1}),[X,Z]=(0,V.useState)({name:``,description:``,tone:`professional`,provider_id:``,model_id:``,role:`coordinator`,enabled:!0,systemPrompt:``,workspace:e?.workspace||``});(0,V.useEffect)(()=>{e&&Z({...e,provider_id:e.provider_id||e.providerId||``,model_id:e.model_id||e.modelId||``})},[e]);let Q=async e=>{if(!e||e.trim()===``){Y({isValidating:!1,exists:!1,accessible:!1});return}Y({isValidating:!0,exists:!1,accessible:!1});try{let t=await S(`/api/workspace/validate`,{method:`POST`,body:{path:e}});Y({isValidating:!1,exists:t.exists,accessible:t.accessible,error:t.error,message:t.message})}catch(e){Y({isValidating:!1,exists:!1,accessible:!1,error:e.message})}},ne=async()=>{if(X.workspace)try{await S(`/api/workspace/create`,{method:`POST`,body:{path:X.workspace},showLoader:`Creando directorio...`,showSuccess:`Directorio creado exitosamente`}),await Q(X.workspace)}catch(e){x.fire(`Error`,e.message,`error`)}},re=async()=>{if(X.workspace)try{await S(`/api/workspace/open?path=${encodeURIComponent(X.workspace)}`,{method:`GET`})}catch(e){x.fire(`Error`,e.message,`error`)}},ie=async n=>{if(n.preventDefault(),!X.provider_id||!X.model_id){x.fire(`Incompleto`,`Por favor selecciona un proveedor y modelo`,`warning`);return}try{e?.id?await G(e.id,X):await F(X),t&&t()}catch(e){console.error(e)}},$=!!e?.id;return(0,H.jsxs)(B,{className:`hive-card--form group`,children:[(0,H.jsx)(`div`,{className:`hive-glow-blob--card absolute -top-24 -right-24 h-48 w-48 bg-blue-600/10 group-hover:bg-blue-600/20`,style:{borderRadius:`50%`,filter:`blur(80px)`}}),(0,H.jsx)(I,{className:`relative`,children:(0,H.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,H.jsx)(`div`,{className:`hive-icon-wrap hive-icon-wrap--primary`,children:$?(0,H.jsx)(g,{className:`h-5 w-5`}):(0,H.jsx)(y,{className:`h-5 w-5`})}),(0,H.jsxs)(`div`,{children:[(0,H.jsx)(R,{className:`text-xl font-bold text-white/90`,children:$?`Configurar Nodo`:`Desplegar Nuevo Nodo`}),(0,H.jsx)(z,{className:`text-white/40`,children:$?`Ajusta los parámetros de tu agente inteligente.`:`Crea una nueva entidad inteligente para tu colmena.`})]})]}),n&&(0,H.jsx)(C,{variant:`ghost`,size:`icon`,onClick:n,className:`text-white/40 hover:text-white hover:bg-white/5`,children:(0,H.jsx)(b,{className:`h-5 w-5`})})]})}),(0,H.jsx)(L,{className:`relative space-y-6 pt-2`,children:(0,H.jsxs)(`form`,{onSubmit:ie,className:`space-y-8`,children:[(0,H.jsxs)(`div`,{className:`grid gap-6`,children:[(0,H.jsxs)(`div`,{className:`space-y-2`,children:[(0,H.jsx)(D,{htmlFor:`name`,className:`hive-label--field`,children:`Nombre del Agente`}),(0,H.jsx)(w,{id:`name`,placeholder:`Ej: Analista de Mercado`,className:`hive-input`,value:X.name,onChange:e=>Z({...X,name:e.target.value}),disabled:K,required:!0})]}),(0,H.jsxs)(`div`,{className:`space-y-2`,children:[(0,H.jsx)(D,{htmlFor:`description`,className:`hive-label--field`,children:`Descripción / Rol`}),(0,H.jsx)(v,{id:`description`,placeholder:`Describe qué hace este agente y cuáles son sus objetivos...`,className:`hive-textarea`,value:X.description,onChange:e=>Z({...X,description:e.target.value}),disabled:K})]})]}),(0,H.jsxs)(`div`,{className:`space-y-2`,children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,H.jsx)(D,{htmlFor:`systemPrompt`,className:`hive-label--field`,children:`System Prompt`}),(0,H.jsxs)(P,{children:[(0,H.jsx)(k,{asChild:!0,children:(0,H.jsx)(C,{type:`button`,variant:`outline`,size:`sm`,className:`h-7 px-3 text-xs bg-blue-500/10 hover:bg-blue-500/20 text-blue-400 border-blue-500/30 transition-colors`,children:`Modifica acá el System Prompt`})}),(0,H.jsxs)(M,{className:`sm:max-w-3xl bg-[#0a0a0c] border-white/10 text-white shadow-2xl [&>button]:text-white/50 hover:[&>button]:text-white`,children:[(0,H.jsxs)(j,{children:[(0,H.jsx)(N,{className:`text-xl`,children:`Editar System Prompt`}),(0,H.jsx)(ee,{className:`text-sm text-white/50`,children:`El prompt base de comportamiento del agente. Se recomienda formato Markdown.`})]}),(0,H.jsx)(`div`,{className:`py-2`,children:(0,H.jsx)(v,{value:X.systemPrompt||``,onChange:e=>Z({...X,systemPrompt:e.target.value}),className:`min-h-[400px] font-mono text-sm bg-black/40 border-white/10 text-white/90 focus-visible:ring-blue-500/50 resize-y`,placeholder:`Escribe el system prompt detallado aquí...`,disabled:K})}),(0,H.jsx)(O,{children:(0,H.jsx)(A,{asChild:!0,children:(0,H.jsx)(C,{type:`button`,className:`bg-blue-600 hover:bg-blue-500 text-white shadow-[0_0_15px_rgba(37,99,235,0.3)]`,children:`Guardar Cambios`})})})]})]})]}),X.systemPrompt?(0,H.jsxs)(`p`,{className:`text-xs text-white/40 line-clamp-1 italic border border-white/5 bg-white/[0.02] p-2 rounded-md`,children:[`"`,X.systemPrompt,`"`]}):(0,H.jsx)(`p`,{className:`text-xs text-white/30 italic`,children:`Sin system prompt configurado...`})]}),(0,H.jsxs)(`div`,{className:`space-y-3`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2 mb-2`,children:[(0,H.jsx)(m,{className:`h-4 w-4 text-emerald-400`}),(0,H.jsx)(`h3`,{className:`hive-title-section`,children:`Workspace Directory`})]}),(0,H.jsxs)(`div`,{className:`space-y-2`,children:[(0,H.jsx)(D,{htmlFor:`workspace`,className:`hive-label--field`,children:`Directorio de Trabajo del Agente`}),(0,H.jsxs)(`div`,{className:`flex gap-2`,children:[(0,H.jsx)(w,{id:`workspace`,placeholder:`Ej: /home/user/proyectos, D:\\Work, /Volumes/USB`,className:`hive-input flex-1 font-mono text-sm`,value:X.workspace,onChange:e=>{Z({...X,workspace:e.target.value}),Q(e.target.value)},disabled:K}),X.workspace&&J.exists&&J.accessible&&(0,H.jsx)(C,{type:`button`,variant:`outline`,size:`icon`,onClick:re,className:`shrink-0 border-emerald-500/30 text-emerald-400 hover:bg-emerald-500/10`,title:`Abrir en el explorador`,children:(0,H.jsx)(p,{className:`h-4 w-4`})})]}),(0,H.jsx)(`p`,{className:`text-xs text-white/40 leading-relaxed`,children:`Directorio donde el agente creará archivos, carpetas y ejecutará comandos. Puede ser cualquier ubicación en tu sistema (disco duro, USB, red, etc.).`}),X.workspace&&X.workspace.trim()!==``&&(0,H.jsxs)(`div`,{className:r(`flex items-center gap-2 text-xs p-2.5 rounded-lg border backdrop-blur-md transition-all`,J.isValidating&&`bg-blue-500/10 border-blue-500/20 text-blue-400`,!J.isValidating&&J.exists&&J.accessible&&`bg-emerald-500/10 border-emerald-500/20 text-emerald-400`,!J.isValidating&&J.exists&&!J.accessible&&`bg-amber-500/10 border-amber-500/20 text-amber-400`,!J.isValidating&&!J.exists&&`bg-purple-500/10 border-purple-500/20 text-purple-400`),children:[J.isValidating&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(h,{className:`h-3.5 w-3.5 animate-spin`}),(0,H.jsx)(`span`,{children:`Validando directorio...`})]}),!J.isValidating&&J.exists&&J.accessible&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(o,{className:`h-3.5 w-3.5`}),(0,H.jsx)(`span`,{children:J.message||`Directorio válido y accesible`})]}),!J.isValidating&&J.exists&&!J.accessible&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(d,{className:`h-3.5 w-3.5`}),(0,H.jsx)(`span`,{children:J.message||`El directorio existe pero no tiene permisos de lectura/escritura`})]}),!J.isValidating&&!J.exists&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(m,{className:`h-3.5 w-3.5`}),(0,H.jsx)(`span`,{children:J.message||`El directorio no existe`}),!J.error&&(0,H.jsx)(C,{type:`button`,variant:`outline`,size:`sm`,onClick:ne,className:`ml-auto h-6 px-2 text-xs bg-purple-500/20 hover:bg-purple-500/30 text-purple-300 border-purple-500/30`,children:`Crear directorio`})]})]})]})]}),(0,H.jsx)(`div`,{className:`hive-card-divider`}),(0,H.jsxs)(`div`,{className:`space-y-4`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2 mb-2`,children:[(0,H.jsx)(f,{className:`h-4 w-4 text-blue-400`}),(0,H.jsx)(`h3`,{className:`hive-title-section`,children:`Motor de Inteligencia`})]}),(0,H.jsx)(U,{selectedProviderId:X.provider_id||void 0,selectedModelId:X.model_id||void 0,onProviderChange:e=>Z({...X,provider_id:e,model_id:``}),onModelChange:e=>Z({...X,model_id:e}),disabled:K,typeFilter:`llm`})]}),(0,H.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-6`,children:[(0,H.jsxs)(`div`,{className:`space-y-2`,children:[(0,H.jsx)(D,{htmlFor:`tone`,className:`hive-label--field`,children:`Tono de Voz`}),(0,H.jsxs)(s,{value:X.tone,onValueChange:e=>Z({...X,tone:e}),disabled:K,children:[(0,H.jsx)(l,{className:`hive-select-trigger`,children:(0,H.jsx)(a,{placeholder:`Selecciona un tono`})}),(0,H.jsx)(c,{className:`hive-select-content`,children:W.map(e=>(0,H.jsx)(i,{value:e.value,className:`hive-select-item`,children:e.label},e.value))})]})]}),(0,H.jsxs)(`div`,{className:`hive-toggle-panel`,children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(_,{className:`h-3.5 w-3.5 text-purple-400`}),(0,H.jsx)(D,{htmlFor:`role`,className:`text-xs font-medium text-white/70`,children:`Rol`})]}),(0,H.jsxs)(s,{value:X.role,onValueChange:e=>Z({...X,role:e}),disabled:K,children:[(0,H.jsx)(l,{className:`w-[120px] bg-white/5 border-white/10 text-white`,children:(0,H.jsx)(a,{})}),(0,H.jsxs)(c,{className:`bg-zinc-900 border-white/10`,children:[(0,H.jsx)(i,{value:`coordinator`,children:`Coordinador`}),(0,H.jsx)(i,{value:`worker`,children:`Worker`})]})]})]}),(0,H.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`div`,{className:`h-2 w-2 rounded-full ${X.enabled?`bg-blue-400`:`bg-zinc-600`}`}),(0,H.jsx)(D,{htmlFor:`enabled`,className:`text-xs font-medium text-white/70`,children:`Habilitado`})]}),(0,H.jsx)(u,{id:`enabled`,checked:X.enabled,onCheckedChange:e=>Z({...X,enabled:e}),disabled:K})]})]})]}),q&&(0,H.jsx)(`div`,{className:`hive-form-error`,children:q}),(0,H.jsxs)(`div`,{className:`flex items-center gap-3 pt-4`,children:[n&&(0,H.jsx)(C,{type:`button`,variant:`outline`,onClick:n,disabled:K,className:`hive-btn--form-cancel`,children:`Cancelar`}),(0,H.jsx)(C,{type:`submit`,disabled:K,className:`hive-btn--form-submit`,children:K?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(h,{className:`mr-2 h-4 w-4 animate-spin`}),`Procesando...`]}):(0,H.jsx)(H.Fragment,{children:$?`Actualizar Agente`:`Desplegar Agente`})})]})]})})]})}export{G as t};
@@ -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,t as i}from"./utils-_qMjiZaF.js";import{t as a}from"./activity-SfJ6UDF2.js";import{t as o}from"./calendar-CMMeWsP-.js";import{a as s,c,l,n as u,r as d,s as f,t as ee}from"./switch-7AuR7x2g.js";import{t as p}from"./chevron-left-_8ly7Fz0.js";import{t as te}from"./circle-alert-7koABcbO.js";import{t as m}from"./cpu-mBJgRJzM.js";import{t as ne}from"./external-link-SkkF2Z7B.js";import{t as h}from"./folder-open-DVYu2lgk.js";import{t as re}from"./globe-BVPd5DRa.js";import{t as ie}from"./loader-circle-CK3qRV3f.js";import{t as g}from"./save-M1nv6H3P.js";import{n as ae,t as _}from"./textarea-CwPvQVAG.js";import{t as oe}from"./sparkles-C4MACMbE.js";import{t as v}from"./zap-CpyuQJEC.js";import{c as y,l as b}from"./vendor-router-DhLEd920.js";import{i as x,n as S,t as C}from"./api-q5Ax-vD2.js";import{E as w,P as se,T,c as E,s as D,t as O}from"./index-D4pdc0Uw.js";import{t as k}from"./label-C6tqnnKd.js";import{a as A,c as j,i as M,n as N,o as P,r as F,s as ce,t as le}from"./dialog-BaJbZsQF.js";import{t as I}from"./badge-pNhtItyt.js";import{n as L,t as R}from"./es-eUrU2hyB.js";import{t as z}from"./format-C0EOLKvf.js";var B=r(`Fingerprint`,[[`path`,{d:`M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4`,key:`1nerag`}],[`path`,{d:`M14 13.12c0 2.38 0 6.38-1 8.88`,key:`o46ks0`}],[`path`,{d:`M17.29 21.02c.12-.6.43-2.3.5-3.02`,key:`ptglia`}],[`path`,{d:`M2 12a10 10 0 0 1 18-6`,key:`ydlgp0`}],[`path`,{d:`M2 16h.01`,key:`1gqxmh`}],[`path`,{d:`M21.8 16c.2-2 .131-5.354 0-6`,key:`drycrb`}],[`path`,{d:`M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2`,key:`1tidbn`}],[`path`,{d:`M8.65 22c.21-.66.45-1.32.57-2`,key:`13wd9y`}],[`path`,{d:`M9 6.8a6 6 0 0 1 9 5.2v2`,key:`1fr1j5`}]]),V=r(`LayoutGrid`,[[`rect`,{width:`7`,height:`7`,x:`3`,y:`3`,rx:`1`,key:`1g98yp`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`3`,rx:`1`,key:`6d4xhi`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`14`,rx:`1`,key:`nxv5o0`}],[`rect`,{width:`7`,height:`7`,x:`3`,y:`14`,rx:`1`,key:`1bb6yr`}]]),H=e(t(),1),U=n();function W({icon:e,...t}){return(0,U.jsx)(e,{...t})}function G({agentId:e}){let{agents:t,updateAgent:n,fetchAgents:r}=O(),{providers:o,fetchProviders:p}=E(),{models:m,fetchModels:v}=D();(0,H.useEffect)(()=>{r(),p(),v()},[r,p,v]);let y=t.find(t=>t.id===e),[b,I]=(0,H.useState)({name:``,description:``,provider_id:``,model_id:``,tone:``,role:`coordinator`,enabled:!0,headers:``,systemPrompt:``,workspace:``}),[L,R]=(0,H.useState)({isValidating:!1,exists:!1,accessible:!1});(0,H.useEffect)(()=>{y&&(I({name:y.name||``,description:y.description||``,provider_id:y.provider_id||y.providerId||``,model_id:y.model_id||y.modelId||``,tone:y.tone||``,role:y.role||`coordinator`,enabled:!!y.enabled,headers:``,systemPrompt:y.systemPrompt||``,workspace:y.workspace||``}),y.workspace&&z(y.workspace))},[y]);let z=async e=>{if(!e||e.trim()===``){R({isValidating:!1,exists:!1,accessible:!1});return}R({isValidating:!0,exists:!1,accessible:!1});try{let t=await C(`/api/workspace/validate`,{method:`POST`,body:{path:e}});R({isValidating:!1,exists:t.exists,accessible:t.accessible,error:t.error,message:t.message})}catch(e){R({isValidating:!1,exists:!1,accessible:!1,error:e.message})}},B=async()=>{if(b.workspace)try{await C(`/api/workspace/create`,{method:`POST`,body:{path:b.workspace},showLoader:`Creando directorio...`,showSuccess:`Directorio creado exitosamente`}),await z(b.workspace)}catch(e){S.fire({icon:`error`,title:e.message})}},V=async()=>{if(b.workspace)try{await C(`/api/workspace/open?path=${encodeURIComponent(b.workspace)}`,{method:`GET`})}catch(e){S.fire({icon:`error`,title:e.message})}},G=async()=>{x.show(`Sincronizando configuración del agente...`);try{await n(e,{...b,role:b.role,enabled:+!!b.enabled,workspace:b.workspace||null}),S.fire({icon:`success`,title:`Cambios sincronizados correctamente`})}catch(e){S.fire({icon:`error`,title:e instanceof Error?e.message:`Error al sincronizar cambios`})}finally{x.hide()}};if(!y)return(0,U.jsxs)(`div`,{className:`flex flex-col items-center justify-center p-12 text-center space-y-4 rounded-3xl border border-dashed border-white/10 bg-white/5`,children:[(0,U.jsx)(W,{icon:a,className:`h-12 w-12 text-white/10 animate-pulse`}),(0,U.jsx)(`p`,{className:`text-white/40 font-medium`,children:`Buscando nodo en la colmena...`})]});let K=e=>{if(e.id===`ollama`)return!0;let t=e.base_url||e.baseUrl||``;return t.includes(`localhost`)||t.includes(`127.0.0.1`)?!0:!!e.has_api_key},q=e=>{if(e.id===`ollama`)return!0;let t=e.base_url||e.baseUrl||``;return t.includes(`localhost`)||t.includes(`127.0.0.1`)},J=o.filter(e=>(e.enabled||e.active)&&K(e)),Y=m.filter(e=>(e.provider_id||e.providerId)===b.provider_id&&(e.enabled||e.active)),X=o.find(e=>e.id===b.provider_id),Z=!!X&&!J.some(e=>e.id===X.id),Q=m.filter(e=>(e.provider_id||e.providerId)===b.provider_id).find(e=>e.id===b.model_id),$=!!Q&&!Y.some(e=>e.id===Q.id);return(0,U.jsx)(`div`,{className:`space-y-8 animate-in fade-in slide-in-from-bottom-4 duration-500`,children:(0,U.jsxs)(`div`,{className:`grid grid-cols-1 lg:grid-cols-3 gap-8`,children:[(0,U.jsxs)(`div`,{className:`lg:col-span-1 space-y-6`,children:[(0,U.jsxs)(`div`,{className:`p-6 rounded-3xl border border-white/10 bg-black/20 backdrop-blur-md space-y-6`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,U.jsx)(`div`,{className:`p-2 rounded-xl bg-blue-500/10 border border-blue-500/20`,children:(0,U.jsx)(W,{icon:se,className:`h-4 w-4 text-blue-400`})}),(0,U.jsx)(`h3`,{className:`font-bold text-white uppercase tracking-wider text-xs`,children:`Identidad Base`})]}),(0,U.jsxs)(`div`,{className:`space-y-4`,children:[(0,U.jsxs)(`div`,{className:`space-y-2`,children:[(0,U.jsx)(k,{htmlFor:`name`,className:`text-xs text-white/40 uppercase tracking-widest pl-1`,children:`Nombre Público`}),(0,U.jsx)(T,{id:`name`,value:b.name,onChange:e=>I(t=>({...t,name:e.target.value})),className:`bg-white/5 border-white/10 focus:border-blue-500/50 rounded-xl h-11`,placeholder:`Nombre del nodo`})]}),(0,U.jsxs)(`div`,{className:`space-y-2`,children:[(0,U.jsx)(k,{htmlFor:`tone`,className:`text-xs text-white/40 uppercase tracking-widest pl-1`,children:`Tono Cognitivo`}),(0,U.jsx)(T,{id:`tone`,value:b.tone,onChange:e=>I(t=>({...t,tone:e.target.value})),className:`bg-white/5 border-white/10 focus:border-blue-500/50 rounded-xl h-11`,placeholder:`Ej: Analítico, Conciso...`})]})]})]}),(0,U.jsxs)(`div`,{className:`p-6 rounded-3xl border border-white/10 bg-black/20 backdrop-blur-md space-y-6`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,U.jsx)(`div`,{className:`p-2 rounded-xl bg-purple-500/10 border border-purple-500/20`,children:(0,U.jsx)(W,{icon:ae,className:`h-4 w-4 text-purple-400`})}),(0,U.jsx)(`h3`,{className:`font-bold text-white uppercase tracking-wider text-xs`,children:`Permisos de Red`})]}),(0,U.jsxs)(`div`,{className:`space-y-4`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between p-3 rounded-2xl bg-white/5 hover:bg-white/10 transition-colors`,children:[(0,U.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,U.jsx)(k,{className:`text-sm font-semibold`,children:`Rol`}),(0,U.jsx)(`p`,{className:`text-[10px] text-white/30`,children:`Coordinador o Worker`})]}),(0,U.jsxs)(u,{value:b.role,onValueChange:e=>I(t=>({...t,role:e})),children:[(0,U.jsx)(f,{className:`w-[120px] bg-white/5 border-white/10 text-white`,children:(0,U.jsx)(c,{})}),(0,U.jsxs)(d,{className:`bg-zinc-900 border-white/10`,children:[(0,U.jsx)(s,{value:`coordinator`,children:`Coordinador`}),(0,U.jsx)(s,{value:`worker`,children:`Worker`})]})]})]}),(0,U.jsxs)(`div`,{className:`flex items-center justify-between p-3 rounded-2xl bg-white/5 hover:bg-white/10 transition-colors`,children:[(0,U.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,U.jsx)(k,{className:`text-sm font-semibold`,children:`Nodo Activo`}),(0,U.jsx)(`p`,{className:`text-[10px] text-white/30`,children:`Disponible para la colmena`})]}),(0,U.jsx)(ee,{checked:b.enabled,onCheckedChange:e=>I(t=>({...t,enabled:e}))})]})]})]}),(0,U.jsxs)(`div`,{className:`p-6 rounded-3xl border border-white/10 bg-black/20 backdrop-blur-md space-y-6`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,U.jsx)(`div`,{className:`p-2 rounded-xl bg-emerald-500/10 border border-emerald-500/20`,children:(0,U.jsx)(W,{icon:h,className:`h-4 w-4 text-emerald-400`})}),(0,U.jsx)(`h3`,{className:`font-bold text-white uppercase tracking-wider text-xs`,children:`Workspace Directory`})]}),(0,U.jsx)(`div`,{className:`space-y-4`,children:(0,U.jsxs)(`div`,{className:`space-y-2`,children:[(0,U.jsx)(k,{htmlFor:`workspace`,className:`text-xs text-white/40 uppercase tracking-widest pl-1`,children:`Directorio de Trabajo`}),(0,U.jsxs)(`div`,{className:`flex gap-2`,children:[(0,U.jsx)(T,{id:`workspace`,value:b.workspace,onChange:e=>{I(t=>({...t,workspace:e.target.value})),z(e.target.value)},className:`bg-white/5 border-white/10 focus:border-emerald-500/50 rounded-xl h-11 font-mono text-sm flex-1`,placeholder:`Ej: /home/user/proyectos, D:\\Work`}),b.workspace&&L.exists&&L.accessible&&(0,U.jsx)(w,{type:`button`,variant:`outline`,size:`icon`,onClick:V,className:`shrink-0 border-emerald-500/30 text-emerald-400 hover:bg-emerald-500/10 h-11 w-11`,title:`Abrir en el explorador`,children:(0,U.jsx)(ne,{className:`h-4 w-4`})})]}),(0,U.jsx)(`p`,{className:`text-xs text-white/40 leading-relaxed`,children:`Directorio donde el agente operará. Puede ser cualquier ubicación (disco, USB, red).`}),b.workspace&&b.workspace.trim()!==``&&(0,U.jsxs)(`div`,{className:i(`flex items-center gap-2 text-xs p-2.5 rounded-lg border backdrop-blur-md transition-all`,L.isValidating&&`bg-blue-500/10 border-blue-500/20 text-blue-400`,!L.isValidating&&L.exists&&L.accessible&&`bg-emerald-500/10 border-emerald-500/20 text-emerald-400`,!L.isValidating&&L.exists&&!L.accessible&&`bg-amber-500/10 border-amber-500/20 text-amber-400`,!L.isValidating&&!L.exists&&`bg-purple-500/10 border-purple-500/20 text-purple-400`),children:[L.isValidating&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(ie,{className:`h-3.5 w-3.5 animate-spin`}),(0,U.jsx)(`span`,{children:`Validando directorio...`})]}),!L.isValidating&&L.exists&&L.accessible&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(l,{className:`h-3.5 w-3.5`}),(0,U.jsx)(`span`,{children:L.message||`Directorio válido y accesible`})]}),!L.isValidating&&L.exists&&!L.accessible&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(te,{className:`h-3.5 w-3.5`}),(0,U.jsx)(`span`,{children:L.message||`Sin permisos de lectura/escritura`})]}),!L.isValidating&&!L.exists&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(h,{className:`h-3.5 w-3.5`}),(0,U.jsx)(`span`,{children:L.message||`El directorio no existe`}),!L.error&&(0,U.jsx)(w,{type:`button`,variant:`outline`,size:`sm`,onClick:B,className:`ml-auto h-6 px-2 text-xs bg-purple-500/20 hover:bg-purple-500/30 text-purple-300 border-purple-500/30`,children:`Crear`})]})]})]})})]})]}),(0,U.jsx)(`div`,{className:`lg:col-span-2 space-y-6`,children:(0,U.jsxs)(`div`,{className:`p-8 rounded-3xl border border-white/10 bg-black/20 backdrop-blur-md space-y-8`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,U.jsx)(`div`,{className:`p-2 rounded-xl bg-amber-500/10 border border-amber-500/20`,children:(0,U.jsx)(W,{icon:oe,className:`h-4 w-4 text-amber-400`})}),(0,U.jsx)(`h3`,{className:`font-bold text-white uppercase tracking-wider text-xs`,children:`Configuración Cognitiva`})]}),(0,U.jsxs)(w,{onClick:G,className:`bg-blue-600 hover:bg-blue-500 text-white font-bold rounded-xl px-6 shadow-[0_4px_15px_rgba(37,99,235,0.3)] transition-all active:scale-95 gap-2`,children:[(0,U.jsx)(W,{icon:g,className:`h-4 w-4`}),`Sincronizar Cambios`]})]}),(0,U.jsxs)(`div`,{className:`space-y-6`,children:[(0,U.jsxs)(`div`,{className:`space-y-2`,children:[(0,U.jsx)(k,{htmlFor:`description`,className:`text-xs text-white/40 uppercase tracking-widest pl-1`,children:`Directiva de Misión (Descripción)`}),(0,U.jsx)(_,{id:`description`,value:b.description,onChange:e=>I(t=>({...t,description:e.target.value})),className:`bg-white/5 border-white/10 focus:border-blue-500/50 rounded-2xl min-h-[80px] resize-none`,placeholder:`Define el propósito general de este nodo...`})]}),(0,U.jsxs)(`div`,{className:`space-y-2`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between pl-1`,children:[(0,U.jsx)(k,{className:`text-xs text-white/40 uppercase tracking-widest`,children:`System Prompt (Markdown)`}),(0,U.jsxs)(le,{children:[(0,U.jsx)(j,{asChild:!0,children:(0,U.jsx)(w,{type:`button`,variant:`outline`,size:`sm`,className:`h-7 px-3 text-xs bg-blue-500/10 hover:bg-blue-500/20 text-blue-400 border-blue-500/30 transition-colors`,children:`Modifica acá el System Prompt`})}),(0,U.jsxs)(F,{className:`sm:max-w-3xl bg-[#0a0a0c] border-white/10 text-white shadow-2xl [&>button]:text-white/50 hover:[&>button]:text-white`,children:[(0,U.jsxs)(P,{children:[(0,U.jsx)(ce,{className:`text-xl`,children:`Editar System Prompt`}),(0,U.jsx)(M,{className:`text-sm text-white/50`,children:`El comportamiento principal del agente. Se recomienda usar Markdown.`})]}),(0,U.jsx)(`div`,{className:`py-2`,children:(0,U.jsx)(_,{value:b.systemPrompt,onChange:e=>I(t=>({...t,systemPrompt:e.target.value})),className:`min-h-[400px] font-mono text-sm bg-black/40 border-white/10 text-white/90 focus-visible:ring-blue-500/50 resize-y`,placeholder:`Escribe el system prompt detallado aquí...`})}),(0,U.jsx)(A,{children:(0,U.jsx)(N,{asChild:!0,children:(0,U.jsx)(w,{type:`button`,className:`bg-blue-600 hover:bg-blue-500 text-white shadow-[0_0_15px_rgba(37,99,235,0.3)]`,children:`Listo`})})})]})]})]}),b.systemPrompt?(0,U.jsx)(`div`,{className:`bg-white/[0.02] border border-white/5 rounded-2xl p-4 max-h-[120px] overflow-y-auto custom-scrollbar`,children:(0,U.jsx)(`p`,{className:`text-xs text-white/60 font-mono whitespace-pre-wrap italic`,children:b.systemPrompt})}):(0,U.jsx)(`div`,{className:`bg-white/[0.02] border border-white/5 rounded-2xl p-4`,children:(0,U.jsx)(`p`,{className:`text-xs text-white/30 italic`,children:`Sin system prompt configurado...`})})]}),(0,U.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-6`,children:[(0,U.jsxs)(`div`,{className:`space-y-2`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between pl-1`,children:[(0,U.jsx)(k,{className:`text-xs text-white/40 uppercase tracking-widest`,children:`Proveedor`}),J.length===0&&(0,U.jsx)(`span`,{className:`text-[10px] text-amber-400/80`,children:`Sin providers activos`})]}),(0,U.jsxs)(u,{value:b.provider_id,onValueChange:e=>I(t=>({...t,provider_id:e,model_id:``})),children:[(0,U.jsx)(f,{className:`bg-white/5 border-white/10 rounded-xl h-11`,children:(0,U.jsx)(c,{placeholder:`Seleccionar proveedor`,children:b.provider_id&&X?(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`span`,{children:X.name}),Z&&(0,U.jsx)(`span`,{className:`text-[10px] text-amber-400/80`,children:`(inactivo)`}),q(X)?(0,U.jsx)(`span`,{className:`text-[9px] font-bold px-1.5 py-0.5 rounded-full bg-amber-500/20 text-amber-400`,children:`LOCAL`}):(0,U.jsx)(`span`,{className:`text-[9px] font-bold px-1.5 py-0.5 rounded-full bg-emerald-500/20 text-emerald-400`,children:`API`})]}):`Seleccionar proveedor`})}),(0,U.jsxs)(d,{className:`bg-zinc-900 border-white/10 text-white`,children:[J.length===0&&(0,U.jsx)(`div`,{className:`px-3 py-4 text-center text-xs text-white/30`,children:`Activa al menos un provider con API key en la sección de Providers`}),J.map(e=>{let t=q(e);return(0,U.jsx)(s,{value:e.id,children:(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`span`,{children:e.name}),(0,U.jsx)(`span`,{className:`text-[9px] font-bold px-1.5 py-0.5 rounded-full ${t?`bg-amber-500/20 text-amber-400`:`bg-emerald-500/20 text-emerald-400`}`,children:t?`LOCAL`:`API`})]})},e.id)})]})]}),Z&&X&&(0,U.jsxs)(`p`,{className:`text-[10px] text-amber-400/80 pl-1`,children:[`El proveedor "`,X.name,`" está inactivo. Selecciona uno activo para cambiar.`]})]}),(0,U.jsxs)(`div`,{className:`space-y-2`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between pl-1`,children:[(0,U.jsx)(k,{className:`text-xs text-white/40 uppercase tracking-widest`,children:`Modelo`}),b.provider_id&&Y.length===0&&(0,U.jsx)(`span`,{className:`text-[10px] text-amber-400/80`,children:`Sin modelos activos`})]}),(0,U.jsxs)(u,{value:b.model_id,onValueChange:e=>I(t=>({...t,model_id:e})),disabled:!b.provider_id||Y.length===0,children:[(0,U.jsx)(f,{className:`bg-white/5 border-white/10 rounded-xl h-11 disabled:opacity-50`,children:(0,U.jsx)(c,{placeholder:b.provider_id?Y.length===0?`Activa modelos en el provider`:`Seleccionar modelo`:`Primero selecciona un proveedor`,children:b.model_id&&Q?(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`span`,{className:`font-mono text-sm`,children:Q.name}),$&&(0,U.jsx)(`span`,{className:`text-[10px] text-amber-400/80`,children:`(inactivo)`})]}):void 0})}),(0,U.jsx)(d,{className:`bg-zinc-900 border-white/10 text-white`,children:Y.map(e=>(0,U.jsx)(s,{value:e.id,children:(0,U.jsx)(`span`,{className:`font-mono text-sm`,children:e.name})},e.id))})]}),$&&Q&&(0,U.jsxs)(`p`,{className:`text-[10px] text-amber-400/80 pl-1`,children:[`El modelo "`,Q.name,`" está inactivo. Selecciona uno activo para cambiar.`]})]})]})]}),(0,U.jsxs)(`div`,{className:`mt-8 p-4 rounded-2xl bg-white/[0.03] border border-white/5 flex items-start gap-4 italic`,children:[(0,U.jsx)(W,{icon:re,className:`h-5 w-5 text-white/20 mt-0.5`}),(0,U.jsx)(`p`,{className:`text-[11px] text-white/30 leading-relaxed`,children:`Las credenciales de acceso y llaves de cifrado para los headers personalizados se gestionan en una capa segura y no son visibles en texto plano para mantener la integridad de la red.`})]})]})})]})})}function K({agent:e}){let{providers:t}=E(),{models:n}=D(),r=e.role===`coordinator`,i=e.provider_id||e.providerId,s=e.model_id||e.modelId,c=e.created_at||e.createdAt,l=c?z(typeof c==`string`?new Date(c):new Date(c*1e3),`PPP`,{locale:R}):`Fecha desconocida`,u=t.find(e=>e.id===i)?.name||i,d=n.find(e=>e.id===s)?.name||s;return(0,U.jsxs)(`div`,{className:`hive-card--internal group ${e.enabled?`hive-card--internal-active`:`hive-card--internal-disabled`}`,children:[e.enabled&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(`div`,{className:`absolute -top-24 -right-24 h-64 w-64 bg-blue-600/10 rounded-full blur-[100px] pointer-events-none group-hover:bg-blue-600/20 transition-all duration-700`}),(0,U.jsx)(`div`,{className:`absolute -bottom-24 -left-24 h-64 w-64 bg-purple-600/10 rounded-full blur-[100px] pointer-events-none group-hover:bg-purple-600/20 transition-all duration-700`})]}),(0,U.jsxs)(`div`,{className:`relative flex flex-col md:flex-row gap-8 items-start justify-between`,children:[(0,U.jsxs)(`div`,{className:`flex-1 space-y-6`,children:[(0,U.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,U.jsx)(`div`,{className:`hive-icon-wrap--internal ${e.enabled?`hive-icon-wrap--internal-active`:`hive-icon-wrap--internal-disabled`}`,children:(0,U.jsx)(B,{className:`h-6 w-6 ${e.enabled?`text-blue-400`:`text-white/20`}`})}),(0,U.jsxs)(`div`,{children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2 mb-1`,children:[(0,U.jsx)(`span`,{className:`hive-page-header__label ${!e.enabled&&`text-white/20`}`,children:`Identidad de Nodo`}),r&&(0,U.jsx)(I,{className:`hive-tag--coordinator ${!e.enabled&&`bg-white/5 text-white/20 border-white/10`}`,children:`Coordinador`})]}),(0,U.jsx)(`h1`,{className:`text-4xl font-black tracking-tighter ${e.enabled?`text-white`:`text-white/40`}`,children:e.name})]})]}),(0,U.jsxs)(`p`,{className:`text-lg leading-relaxed max-w-2xl font-light italic ${e.enabled?`text-white/60`:`text-white/20`}`,children:[`"`,e.description||`Este agente no tiene una descripción definida aún.`,`"`]})]}),(0,U.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-4`,children:[(0,U.jsx)(q,{icon:m,label:`Infraestructura`,value:u,subValue:d,color:e.enabled?`text-blue-400`:`text-white/20`,enabled:e.enabled}),(0,U.jsx)(q,{icon:v,label:`Personalidad`,value:e.tone||`Neutral`,color:e.enabled?`text-purple-400`:`text-white/20`,enabled:e.enabled}),(0,U.jsx)(q,{icon:o,label:`Desplegado el`,value:l,color:e.enabled?`text-emerald-400`:`text-white/20`,enabled:e.enabled})]})]}),(0,U.jsxs)(`div`,{className:`flex flex-col items-center md:items-end gap-6 min-w-[200px]`,children:[(0,U.jsxs)(`div`,{className:`text-center md:text-right space-y-2`,children:[(0,U.jsx)(`span`,{className:`hive-label block`,children:`Estado Operativo`}),(0,U.jsx)(L,{status:e.enabled?e.status:`hibernated`,className:`px-6 py-2 text-sm border-2`})]}),(0,U.jsxs)(`div`,{className:`hive-network-panel md:w-auto`,children:[(0,U.jsxs)(`div`,{className:`flex-1`,children:[(0,U.jsx)(`p`,{className:`hive-label mb-1`,children:`Carga de Red`}),(0,U.jsx)(`div`,{className:`hive-network-track`,children:e.enabled&&(0,U.jsx)(`div`,{className:`hive-network-fill`})})]}),(0,U.jsx)(a,{className:`h-5 w-5 ${e.enabled?`text-blue-400 animate-pulse`:`text-white/10`}`})]})]})]}),(0,U.jsx)(`div`,{className:`hive-strip--bottom ${!e.enabled&&`opacity-20`}`}),(0,U.jsxs)(`div`,{className:`absolute top-4 right-8 hive-mono hidden md:block`,children:[`NODE_UID: `,e.id]})]})}function q({icon:e,label:t,value:n,subValue:r,color:i,enabled:a}){return(0,U.jsxs)(`div`,{className:`hive-info-card ${a?`hive-info-card--active`:`hive-info-card--disabled`}`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2 mb-2`,children:[(0,U.jsx)(e,{className:`h-3.5 w-3.5 ${i}`}),(0,U.jsx)(`span`,{className:`hive-info-card__label`,children:t})]}),(0,U.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,U.jsx)(`p`,{className:`hive-info-card__value ${a?`text-white/80 group-hover/item:text-white`:`text-white/20`}`,children:n}),r&&(0,U.jsx)(`p`,{className:`hive-info-card__sub ${a?`text-white/40`:`text-white/10`}`,children:r})]})]})}function J(){let{id:e}=b(),t=y(),n=e??`unknown`,{agents:r,fetchAgents:i,isLoading:o}=O();(0,H.useEffect)(()=>{i()},[i]);let s=r.find(e=>e.id===n);return(0,U.jsx)(`div`,{className:`min-h-screen bg-transparent pb-20`,children:(0,U.jsxs)(`div`,{className:`max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8 animate-in fade-in slide-in-from-bottom-4 duration-700`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between mb-8`,children:[(0,U.jsxs)(w,{variant:`ghost`,onClick:()=>t(`/agents`),className:`group flex items-center gap-2 text-white/40 hover:text-white hover:bg-white/5 px-4 py-2 rounded-xl transition-all`,children:[(0,U.jsx)(p,{className:`h-4 w-4 transition-transform group-hover:-translate-x-1`}),(0,U.jsx)(`span`,{className:`text-sm font-bold uppercase tracking-widest`,children:`Volver a la Colmena`})]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-4 text-white/20`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(V,{className:`h-4 w-4`}),(0,U.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-widest`,children:`Agentes`})]}),(0,U.jsx)(`div`,{className:`h-4 w-px bg-white/10`}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(a,{className:`h-4 w-4`}),(0,U.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-widest`,children:`Detalles Operativos`})]})]})]}),s?(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(K,{agent:s}),(0,U.jsx)(`div`,{className:`grid grid-cols-1 gap-8`,children:(0,U.jsx)(G,{agentId:n})})]}):(0,U.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-[60vh] text-center space-y-6`,children:[(0,U.jsxs)(`div`,{className:`relative`,children:[(0,U.jsx)(`div`,{className:`h-24 w-24 rounded-full border-4 border-t-blue-500 border-white/5 animate-spin`}),(0,U.jsx)(a,{className:`absolute inset-0 m-auto h-8 w-8 text-blue-400 animate-pulse`})]}),(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`h3`,{className:`text-xl font-bold text-white mb-2`,children:`Sincronizando con el Nodo`}),(0,U.jsx)(`p`,{className:`text-white/40 max-w-xs mx-auto`,children:`Estamos recuperando la configuración cuántica de este agente desde la base de datos central.`})]})]})]})})}export{J as AgentDetailPage};
@@ -1 +0,0 @@
1
- import{o as e}from"./vendor-query-DsWPbQdG.js";import{t}from"./AgentCreateForm-DS6yXjGV.js";var n=e();function r(){return(0,n.jsx)(t,{})}export{r as AgentNewPage};
@@ -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-_qMjiZaF.js";import{t as i}from"./circle-check-E2u7ZS2r.js";import{t as a}from"./circle-x-Cm3Sr-xb.js";import{t as o}from"./loader-circle-CK3qRV3f.js";import{t as s}from"./refresh-cw-BLmKlO4J.js";import{t as c}from"./terminal-CjZu0OZ0.js";import{t as l}from"./trash-2-Blkv31Dz.js";import{n as u,r as d}from"./gateway-url-OqLaEDK-.js";import{E as f}from"./index-D4pdc0Uw.js";import{t as p}from"./badge-pNhtItyt.js";import{a as m,n as h,o as g,t as _}from"./card-C7P3W6_y.js";import{t as v}from"./progress-B1HC9cB_.js";import{t as y}from"./scroll-area-DKNpYkRA.js";var b=r(`CircleStop`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`rect`,{x:`9`,y:`9`,width:`6`,height:`6`,rx:`1`,key:`1ssd4o`}]]),x=e(t(),1),S=n(),C={connected:{label:`Conectado`,className:`bg-hive-connected/15 text-hive-connected border-hive-connected/30`},connecting:{label:`Conectando…`,className:`bg-hive-thinking/15 text-hive-thinking border-hive-thinking/30 animate-pulse-slow`},disconnected:{label:`Desconectado`,className:`bg-destructive/15 text-destructive border-destructive/30`},error:{label:`Error`,className:`bg-destructive/15 text-destructive border-destructive/30`}};function w({status:e}){let t=C[e];return(0,S.jsxs)(p,{variant:`outline`,className:t.className,children:[(0,S.jsx)(`span`,{className:`mr-1.5 inline-block h-1.5 w-1.5 rounded-full bg-current`}),t.label]})}var T=window.location.hostname===`0.0.0.0`?`localhost`:window.location.hostname,E=window.location.protocol===`https:`?`wss:`:`ws:`,D=`${E}//${T}:18791/ws`,O=`${u()}/bridge-events`;function k(){return Math.random().toString(36).substring(2,15)}function A(e,t,n=`system`){return{id:k(),processId:n,level:e,message:t,timestamp:new Date().toISOString()}}var j=!1,M=0,N=3,P=!1,F=null,I=null,L=d((e,t)=>({processes:[],logs:[],isConnected:!1,socket:null,gatewaySocket:null,addProcess:t=>e(e=>({processes:[...e.processes,t]})),removeProcess:t=>e(e=>({processes:e.processes.filter(e=>e.id!==t)})),updateProcess:(t,n)=>e(e=>({processes:e.processes.map(e=>e.id===t?{...e,...n}:e)})),addLog:t=>e(e=>({logs:[t,...e.logs].slice(0,500)})),clearLogs:()=>e({logs:[]}),sendCommand:e=>{let{socket:n,isConnected:r}=t();n&&r&&n.send(JSON.stringify(e))},connect:()=>{let{socket:n,isConnected:r}=t();if(!(n||r)&&E!==`wss:`){j=!0;try{let n=new WebSocket(D);n.onmessage=r=>{try{let i=JSON.parse(r.data);if(i.type===`ping`){n.send(JSON.stringify({cmd:`ping`}));return}if(i.type===`pong`)return;if(i.type===`code-bridge:status`&&Array.isArray(i.agents)&&e({processes:i.agents.map(e=>({id:e.taskId,name:e.role,command:e.cli,status:e.state,pid:e.pid,startedAt:new Date().toISOString(),output:[]}))}),i.type===`agent:started`){let e={id:i.taskId,name:i.role,command:i.cli,status:`running`,pid:i.pid,startedAt:new Date().toISOString(),output:[]};t().addProcess(e),t().addLog(A(`info`,`Agent started: ${i.role} (PID: ${i.pid})`,i.taskId))}if(i.type===`agent:output`){let e=t().processes.find(e=>e.id===i.taskId);e&&t().updateProcess(i.taskId,{output:[...e.output,i.chunk]})}i.type===`agent:finished`&&(t().updateProcess(i.taskId,{status:`completed`}),t().addLog(A(`info`,`Agent finished: ${i.role}`,i.taskId))),i.type===`agent:error`&&(t().updateProcess(i.taskId,{status:`error`}),t().addLog(A(`error`,i.message,i.taskId))),i.type===`agent:cancelled`&&(t().updateProcess(i.taskId,{status:`stopped`}),t().addLog(A(`warn`,`Agent cancelled: ${i.role}`,i.taskId)))}catch{}},n.onopen=()=>{M=0,e({isConnected:!0,socket:n}),t().addLog(A(`info`,`Connected to Code Bridge`)),t().sendCommand({cmd:`status`}),F&&clearInterval(F),F=setInterval(()=>{n.readyState===WebSocket.OPEN&&n.send(JSON.stringify({cmd:`ping`}))},15e3)},n.onerror=()=>{},n.onclose=()=>{if(F&&=(clearInterval(F),null),e({isConnected:!1,socket:null}),j){if(M++,M>N){j=!1;return}setTimeout(()=>{j&&!t().isConnected&&t().connect()},5e3)}},e({socket:n})}catch{e({isConnected:!1,socket:null})}}},connectGateway:()=>{let{gatewaySocket:n}=t();if(!n){P=!0;try{let n=new WebSocket(O);n.onopen=()=>{e({isConnected:!0}),t().addLog(A(`info`,`Connected to gateway bridge events`)),I&&clearInterval(I),I=setInterval(()=>{n.readyState===WebSocket.OPEN&&n.send(JSON.stringify({type:`ping`}))},3e4)},n.onmessage=e=>{try{let n=JSON.parse(e.data);if(n.type===`bridge:cmd_start`){let e=n.data,r={id:e.processId,name:e.name??`terminal`,command:e.command,status:`running`,pid:0,startedAt:new Date().toISOString(),output:[]};t().addProcess(r),t().addLog(A(`info`,`$ ${e.command}${e.cwd?` (in ${e.cwd})`:``}`,e.processId))}if(n.type===`bridge:cmd_output`){let e=n.data,r=t().processes.find(t=>t.id===e.processId);r&&t().updateProcess(e.processId,{output:[...r.output,e.chunk]}),t().addLog(A(e.stream===`stderr`?`warn`:`info`,e.chunk,e.processId))}if(n.type===`bridge:cmd_done`){let e=n.data;t().updateProcess(e.processId,{status:e.success?`completed`:`error`}),t().addLog(A(e.success?`info`:`error`,`Exit code: ${e.exitCode}`,e.processId))}if(n.type===`bridge:cmd_error`){let e=n.data;t().updateProcess(e.processId,{status:`error`}),t().addLog(A(`error`,e.message,e.processId))}}catch{}},n.onerror=()=>{},n.onclose=()=>{I&&=(clearInterval(I),null),e({gatewaySocket:null,isConnected:!1}),P&&setTimeout(()=>{P&&!t().gatewaySocket&&t().connectGateway()},5e3)},e({gatewaySocket:n})}catch{e({gatewaySocket:null})}}},disconnect:()=>{j=!1,P=!1,F&&=(clearInterval(F),null),I&&=(clearInterval(I),null);let{socket:n,gatewaySocket:r}=t();n&&(n.close(),e({socket:null,isConnected:!1})),r&&(r.close(),e({gatewaySocket:null}))}})),R={running:`bg-yellow-500/10 text-yellow-400 border-yellow-500/20`,completed:`bg-green-500/10 text-green-400 border-green-500/20`,finished:`bg-green-500/10 text-green-400 border-green-500/20`,error:`bg-red-500/10 text-red-400 border-red-500/20`,stopped:`bg-gray-500/10 text-gray-400 border-gray-500/20`};function z({status:e}){switch(e){case`running`:return(0,S.jsx)(o,{className:`h-3.5 w-3.5 text-yellow-400 animate-spin`});case`completed`:case`finished`:return(0,S.jsx)(i,{className:`h-3.5 w-3.5 text-green-400`});case`error`:return(0,S.jsx)(a,{className:`h-3.5 w-3.5 text-red-400`});case`stopped`:return(0,S.jsx)(b,{className:`h-3.5 w-3.5 text-gray-400`});default:return(0,S.jsx)(c,{className:`h-3.5 w-3.5 text-muted-foreground`})}}function B(){let e=L(e=>e.processes);return e.length===0?(0,S.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-8 text-center text-muted-foreground`,children:[(0,S.jsx)(c,{className:`h-8 w-8 opacity-30 mb-2`}),(0,S.jsx)(`p`,{className:`text-sm`,children:`Sin procesos activos`}),(0,S.jsx)(`p`,{className:`text-xs opacity-60 mt-1`,children:`Los comandos ejecutados por el agente aparecerán aquí`})]}):(0,S.jsx)(`div`,{className:`space-y-2 p-1`,children:e.map(e=>(0,S.jsxs)(`div`,{className:`rounded-lg border border-border bg-card/50 p-3`,children:[(0,S.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,S.jsx)(z,{status:e.status}),(0,S.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,S.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,S.jsx)(`span`,{className:`text-sm font-medium font-mono truncate`,children:e.name}),e.pid>0&&(0,S.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`PID: `,e.pid]}),(0,S.jsx)(p,{variant:`outline`,className:`text-[10px] px-1.5 py-0 ml-auto ${R[e.status]??``}`,children:e.status})]}),e.command&&(0,S.jsxs)(`p`,{className:`text-xs text-muted-foreground font-mono mt-0.5 truncate`,children:[`$ `,e.command]}),e.status===`running`&&(0,S.jsx)(v,{value:void 0,className:`h-0.5 mt-2`})]})]}),e.output.length>0&&(0,S.jsx)(`div`,{className:`mt-2 rounded bg-black/30 px-2 py-1.5 max-h-24 overflow-y-auto`,children:(0,S.jsx)(`pre`,{className:`text-[10px] font-mono text-green-400/80 whitespace-pre-wrap break-all`,children:e.output.slice(-20).join(``)})})]},e.id))})}var V={info:`text-foreground/80`,warn:`text-yellow-400`,error:`text-red-400`,debug:`text-muted-foreground/60`},H={info:` `,warn:`! `,error:`✗ `,debug:`· `};function U(){let e=L(e=>e.logs),t=L(e=>e.clearLogs);return(0,S.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,S.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2 border-b border-border`,children:[(0,S.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-muted-foreground`,children:[(0,S.jsx)(c,{className:`h-3.5 w-3.5`}),(0,S.jsx)(`span`,{className:`font-mono uppercase tracking-wider`,children:`Terminal Log`}),(0,S.jsxs)(`span`,{className:`text-muted-foreground/50`,children:[`(`,e.length,`)`]})]}),e.length>0&&(0,S.jsxs)(f,{variant:`ghost`,size:`sm`,className:`h-6 px-2 text-xs`,onClick:t,children:[(0,S.jsx)(l,{className:`h-3 w-3 mr-1`}),`Clear`]})]}),(0,S.jsx)(y,{className:`flex-1 font-mono text-xs`,children:e.length===0?(0,S.jsx)(`div`,{className:`flex items-center justify-center h-32 text-muted-foreground/50`,children:(0,S.jsx)(`p`,{children:`No logs yet — run a command to see output here`})}):(0,S.jsx)(`div`,{className:`p-3 space-y-0.5`,children:e.map(e=>(0,S.jsxs)(`div`,{className:`flex gap-2 ${V[e.level]??`text-foreground/80`}`,children:[(0,S.jsx)(`span`,{className:`text-muted-foreground/40 shrink-0 w-[72px] truncate`,children:new Date(e.timestamp).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}),(0,S.jsx)(`span`,{className:`shrink-0 w-4`,children:H[e.level]??` `}),(0,S.jsx)(`span`,{className:`break-all whitespace-pre-wrap`,children:e.message})]},e.id))})})]})}function W(){let{isConnected:e,connect:t,connectGateway:n,processes:r,logs:i}=L();(0,x.useEffect)(()=>{t(),n()},[t,n]);let a=e?`connected`:`disconnected`,o=r.filter(e=>e.status===`running`).length;return(0,S.jsx)(`div`,{className:`hive-page mt-10`,children:(0,S.jsxs)(`div`,{className:`hive-page-container`,children:[(0,S.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,S.jsxs)(`div`,{children:[(0,S.jsxs)(`h1`,{className:`text-xl font-semibold flex items-center gap-2`,children:[(0,S.jsx)(c,{className:`h-5 w-5`}),`Code Bridge`]}),(0,S.jsx)(`p`,{className:`text-sm text-muted-foreground mt-0.5`,children:`Monitoreo de comandos CLI y procesos del agente`})]}),(0,S.jsxs)(`div`,{className:`flex items-center gap-3`,children:[o>0&&(0,S.jsxs)(`span`,{className:`text-xs text-yellow-400 font-mono`,children:[o,` proceso`,o>1?`s`:``,` activo`,o>1?`s`:``]}),(0,S.jsx)(w,{status:a}),(0,S.jsxs)(f,{variant:`outline`,size:`sm`,onClick:()=>{t(),n()},children:[(0,S.jsx)(s,{className:`h-3.5 w-3.5 mr-1.5`}),`Reconectar`]})]})]}),(0,S.jsxs)(`div`,{className:`mt-4 grid grid-cols-1 lg:grid-cols-2 gap-4 h-[calc(100vh-14rem)]`,children:[(0,S.jsxs)(_,{className:`flex flex-col overflow-hidden`,children:[(0,S.jsx)(m,{className:`py-3 px-4 border-b`,children:(0,S.jsxs)(g,{className:`text-sm flex items-center justify-between`,children:[(0,S.jsx)(`span`,{children:`Procesos`}),(0,S.jsxs)(`span`,{className:`text-xs text-muted-foreground font-normal`,children:[r.length,` total`]})]})}),(0,S.jsx)(h,{className:`flex-1 overflow-y-auto p-2`,children:(0,S.jsx)(B,{})})]}),(0,S.jsxs)(_,{className:`flex flex-col overflow-hidden`,children:[(0,S.jsx)(m,{className:`py-3 px-4 border-b`,children:(0,S.jsxs)(g,{className:`text-sm flex items-center justify-between`,children:[(0,S.jsx)(`span`,{children:`Logs`}),(0,S.jsxs)(`span`,{className:`text-xs text-muted-foreground font-normal`,children:[i.length,` entradas`]})]})}),(0,S.jsx)(h,{className:`flex-1 overflow-hidden p-0`,children:(0,S.jsx)(U,{})})]})]})]})})}export{W as BridgePage};