@johpaz/hive-agents 0.0.38 → 0.0.40
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.
- package/README.md +31 -71
- package/dist/hive.js +4318 -2898
- package/dist/tool-worker.js +2691 -1969
- package/dist/ui/assets/AgentCreateForm-b7xHyfNc.js +1 -0
- package/dist/ui/assets/AgentDetailPage-VHy3M7mI.js +1 -0
- package/dist/ui/assets/AgentNewPage-BnWImQMx.js +1 -0
- package/dist/ui/{dist/assets/AgentsPage-DGNLDXjR.js → assets/AgentsPage-WFy5abqx.js} +5 -5
- package/dist/ui/assets/ApiClientPage-BV7zLIL7.js +3 -0
- package/dist/ui/assets/{CanvasPage-CnMO1FN8.js → CanvasPage-B9zuIrTm.js} +7 -7
- package/dist/ui/assets/ChannelsPage-DiN3NvIM.js +8 -0
- package/dist/ui/{dist/assets/DashboardPage-VyXXp3U1.js → assets/DashboardPage-CHjARjVK.js} +2 -2
- package/dist/ui/assets/{LoginPage-DPj2s2Qq.js → LoginPage-Dwd_XxoU.js} +1 -1
- package/dist/ui/assets/LogsPage-DW8Nnqe6.js +1 -0
- package/dist/ui/assets/MeetingPage-D3bkiKYt.js +1 -0
- package/dist/ui/assets/{NotFound-BMeQSGcG.js → NotFound-BIUDlIXU.js} +1 -1
- package/dist/ui/assets/ProvidersPage-UqsDAxPQ.js +1 -0
- package/dist/ui/{dist/assets/RecoverPage-B-hDZUM2.js → assets/RecoverPage-8hTjr_JU.js} +1 -1
- package/dist/ui/assets/SettingsPage-DNa0jOkA.js +9 -0
- package/dist/ui/assets/SetupPage-Bdm2irQG.js +1 -0
- package/dist/ui/assets/WebChatPage-DElJg6P2.js +16 -0
- package/dist/ui/assets/accordion-CnLzKNHK.js +1 -0
- package/dist/ui/{dist/assets/alert-Bq6awLlW.js → assets/alert-DylmSCDJ.js} +1 -1
- package/dist/ui/{dist/assets/alert-dialog-DQvltYmf.js → assets/alert-dialog-DNNWN_SI.js} +1 -1
- package/dist/ui/assets/{badge-DXUDdTed.js → badge-ChENFgkC.js} +1 -1
- package/dist/ui/assets/bell-8BqRYmzf.js +1 -0
- package/dist/ui/assets/chevron-down-DIosfU_U.js +1 -0
- package/dist/ui/assets/chevron-up-CI-W21Fy.js +1 -0
- package/dist/ui/assets/circle-x-DjLkFDO8.js +1 -0
- package/dist/ui/assets/copy-Bu5d7C-0.js +1 -0
- package/dist/ui/{dist/assets/dialog-bI9jImCS.js → assets/dialog-BJ-npIv8.js} +1 -1
- package/dist/ui/{dist/assets/dropdown-menu-BK-CO3Od.js → assets/dropdown-menu-DDiaHg5y.js} +1 -1
- package/dist/ui/assets/{es-Cg8zdT52.js → es-ecSKCyB6.js} +1 -1
- package/dist/ui/assets/index-CawKP29y.js +116 -0
- package/dist/ui/assets/index-DIcsEkyd.css +2 -0
- package/dist/ui/{dist/assets/label-CrH0Jj3v.js → assets/label-Bi6udtSd.js} +1 -1
- package/dist/ui/assets/progress-D5c-Eilm.js +1 -0
- package/dist/ui/assets/scroll-area-CihOx0cb.js +1 -0
- package/dist/ui/assets/search-DzDptO9s.js +1 -0
- package/dist/ui/assets/select-BQCOjM2j.js +1 -0
- package/dist/ui/assets/send-BPk9XbIq.js +1 -0
- package/dist/ui/assets/shield-CxhcUT39.js +1 -0
- package/dist/ui/assets/{slider-CsiUDxc3.js → slider-bcUiUfx0.js} +1 -1
- package/dist/ui/assets/switch-BR30E4ej.js +1 -0
- package/dist/ui/assets/table-B3aGEaVp.js +1 -0
- package/dist/ui/assets/tabs-LQidMKRS.js +1 -0
- package/dist/ui/assets/textarea-B6Z1Zc6W.js +1 -0
- package/dist/ui/assets/useProviders-Dlizq_8q.js +1 -0
- package/dist/ui/{dist/assets/vendor-radix-cw1bQaVC.js → assets/vendor-radix-D6rA7xKY.js} +4 -4
- package/dist/ui/assets/{vendor-react-D4s9E-zj.js → vendor-react-BU5iQU4f.js} +1 -1
- package/dist/ui/dist/assets/AgentCreateForm-b7xHyfNc.js +1 -0
- package/dist/ui/dist/assets/AgentDetailPage-VHy3M7mI.js +1 -0
- package/dist/ui/dist/assets/AgentNewPage-BnWImQMx.js +1 -0
- package/dist/ui/{assets/AgentsPage-DGNLDXjR.js → dist/assets/AgentsPage-WFy5abqx.js} +5 -5
- package/dist/ui/dist/assets/ApiClientPage-BV7zLIL7.js +3 -0
- package/dist/ui/dist/assets/{CanvasPage-CnMO1FN8.js → CanvasPage-B9zuIrTm.js} +7 -7
- package/dist/ui/dist/assets/ChannelsPage-DiN3NvIM.js +8 -0
- package/dist/ui/{assets/DashboardPage-VyXXp3U1.js → dist/assets/DashboardPage-CHjARjVK.js} +2 -2
- package/dist/ui/dist/assets/{LoginPage-DPj2s2Qq.js → LoginPage-Dwd_XxoU.js} +1 -1
- package/dist/ui/dist/assets/LogsPage-DW8Nnqe6.js +1 -0
- package/dist/ui/dist/assets/MeetingPage-D3bkiKYt.js +1 -0
- package/dist/ui/dist/assets/{NotFound-BMeQSGcG.js → NotFound-BIUDlIXU.js} +1 -1
- package/dist/ui/dist/assets/ProvidersPage-UqsDAxPQ.js +1 -0
- package/dist/ui/{assets/RecoverPage-B-hDZUM2.js → dist/assets/RecoverPage-8hTjr_JU.js} +1 -1
- package/dist/ui/dist/assets/SettingsPage-DNa0jOkA.js +9 -0
- package/dist/ui/dist/assets/SetupPage-Bdm2irQG.js +1 -0
- package/dist/ui/dist/assets/WebChatPage-DElJg6P2.js +16 -0
- package/dist/ui/dist/assets/accordion-CnLzKNHK.js +1 -0
- package/dist/ui/{assets/alert-Bq6awLlW.js → dist/assets/alert-DylmSCDJ.js} +1 -1
- package/dist/ui/{assets/alert-dialog-DQvltYmf.js → dist/assets/alert-dialog-DNNWN_SI.js} +1 -1
- package/dist/ui/dist/assets/{badge-DXUDdTed.js → badge-ChENFgkC.js} +1 -1
- package/dist/ui/dist/assets/bell-8BqRYmzf.js +1 -0
- package/dist/ui/dist/assets/chevron-down-DIosfU_U.js +1 -0
- package/dist/ui/dist/assets/chevron-up-CI-W21Fy.js +1 -0
- package/dist/ui/dist/assets/circle-x-DjLkFDO8.js +1 -0
- package/dist/ui/dist/assets/copy-Bu5d7C-0.js +1 -0
- package/dist/ui/{assets/dialog-bI9jImCS.js → dist/assets/dialog-BJ-npIv8.js} +1 -1
- package/dist/ui/{assets/dropdown-menu-BK-CO3Od.js → dist/assets/dropdown-menu-DDiaHg5y.js} +1 -1
- package/dist/ui/dist/assets/{es-Cg8zdT52.js → es-ecSKCyB6.js} +1 -1
- package/dist/ui/dist/assets/index-CawKP29y.js +116 -0
- package/dist/ui/dist/assets/index-DIcsEkyd.css +2 -0
- package/dist/ui/{assets/label-CrH0Jj3v.js → dist/assets/label-Bi6udtSd.js} +1 -1
- package/dist/ui/dist/assets/progress-D5c-Eilm.js +1 -0
- package/dist/ui/dist/assets/scroll-area-CihOx0cb.js +1 -0
- package/dist/ui/dist/assets/search-DzDptO9s.js +1 -0
- package/dist/ui/dist/assets/select-BQCOjM2j.js +1 -0
- package/dist/ui/dist/assets/send-BPk9XbIq.js +1 -0
- package/dist/ui/dist/assets/shield-CxhcUT39.js +1 -0
- package/dist/ui/dist/assets/{slider-CsiUDxc3.js → slider-bcUiUfx0.js} +1 -1
- package/dist/ui/dist/assets/switch-BR30E4ej.js +1 -0
- package/dist/ui/dist/assets/table-B3aGEaVp.js +1 -0
- package/dist/ui/dist/assets/tabs-LQidMKRS.js +1 -0
- package/dist/ui/dist/assets/textarea-B6Z1Zc6W.js +1 -0
- package/dist/ui/dist/assets/useProviders-Dlizq_8q.js +1 -0
- package/dist/ui/{assets/vendor-radix-cw1bQaVC.js → dist/assets/vendor-radix-D6rA7xKY.js} +4 -4
- package/dist/ui/dist/assets/{vendor-react-D4s9E-zj.js → vendor-react-BU5iQU4f.js} +1 -1
- package/dist/ui/dist/index.html +6 -6
- package/dist/ui/index.html +6 -6
- package/package.json +1 -1
- package/packages/cli/src/adapters/binary.ts +8 -4
- package/packages/cli/src/adapters/bun-global.ts +5 -1
- package/packages/cli/src/adapters/config.ts +4 -3
- package/packages/cli/src/adapters/docker.ts +2 -1
- package/packages/cli/src/commands/gateway.ts +123 -9
- package/packages/cli/src/commands/logs.ts +2 -1
- package/packages/cli/src/commands/onboard.ts +27 -1
- package/packages/cli/src/commands/sessions.ts +2 -1
- package/packages/cli/src/commands/skills.ts +2 -1
- package/packages/core/src/agent/agent-loop.ts +104 -2
- package/packages/core/src/agent/context-compiler.ts +6 -0
- package/packages/core/src/agent/llm-client.ts +6 -0
- package/packages/core/src/agent/llm-providers/anthropic.ts +23 -8
- package/packages/core/src/agent/llm-providers/hiveagents.ts +248 -0
- package/packages/core/src/agent/llm-providers/interface.ts +7 -1
- package/packages/core/src/agent/llm-providers/minimax.ts +13 -0
- package/packages/core/src/agent/llm-providers/openai-compat-base.ts +49 -25
- package/packages/core/src/agent/llm-providers/opencode-go.ts +9 -0
- package/packages/core/src/agent/providers/index.ts +3 -2
- package/packages/core/src/agent/stuck-loop.ts +90 -14
- package/packages/core/src/channels/base.ts +7 -1
- package/packages/core/src/channels/whatsapp.ts +13 -1
- package/packages/core/src/config/loader.ts +8 -8
- package/packages/core/src/gateway/helpers/path.ts +2 -1
- package/packages/core/src/gateway/initializer.ts +4 -4
- package/packages/core/src/gateway/llm-local/downloader.ts +130 -11
- package/packages/core/src/gateway/llm-local/index.ts +2 -0
- package/packages/core/src/gateway/llm-local/models.ts +4 -3
- package/packages/core/src/gateway/router.ts +7 -5
- package/packages/core/src/gateway/routes/http-client.ts +16 -0
- package/packages/core/src/gateway/routes/llm-local.ts +51 -5
- package/packages/core/src/gateway/routes/providers.ts +99 -2
- package/packages/core/src/gateway/server.ts +131 -57
- package/packages/core/src/gateway/slash-commands.ts +7 -1
- package/packages/core/src/gateway/tts/src/install.ts +17 -9
- package/packages/core/src/storage/crypto.ts +152 -20
- package/packages/core/src/storage/migrate.ts +51 -18
- package/packages/core/src/storage/onboarding.ts +28 -0
- package/packages/core/src/storage/seed.ts +52 -2
- package/packages/core/src/tool-runtime/index.ts +22 -1
- package/packages/core/src/tools/api/api-request.ts +174 -0
- package/packages/core/src/tools/api/index.ts +16 -0
- package/packages/core/src/tools/index.ts +12 -0
- package/packages/core/src/tools/web/browser-click.ts +2 -2
- package/packages/core/src/tools/web/browser-extract.ts +22 -6
- package/packages/core/src/tools/web/browser-navigate.ts +34 -18
- package/packages/core/src/tools/web/browser-screenshot.ts +40 -8
- package/packages/core/src/tools/web/browser-script.ts +2 -2
- package/packages/core/src/tools/web/browser-service.ts +295 -341
- package/packages/core/src/tools/web/browser-type.ts +5 -10
- package/packages/core/src/tools/web/browser-wait.ts +2 -2
- package/packages/core/src/tools/web/index.ts +1 -1
- package/packages/core/src/utils/logger.ts +2 -1
- package/packages/mcp/src/manager.ts +2 -1
- package/packages/skills/src/bundled/api/api_client/SKILL.md +132 -0
- package/packages/skills/src/bundled-data.generated.ts +1191 -1134
- package/packages/skills/src/loader.ts +2 -1
- package/dist/ui/assets/AgentCreateForm-0oFbN3gj.js +0 -1
- package/dist/ui/assets/AgentDetailPage-BJ4L2fNJ.js +0 -1
- package/dist/ui/assets/AgentNewPage-B3n0LUck.js +0 -1
- package/dist/ui/assets/ChannelsPage-fbF8K4MR.js +0 -8
- package/dist/ui/assets/LogsPage-B2lY9maY.js +0 -1
- package/dist/ui/assets/MeetingPage-2ky_hKiG.js +0 -1
- package/dist/ui/assets/ProvidersPage-CEyUM2tD.js +0 -1
- package/dist/ui/assets/SettingsPage-eO0i3g8p.js +0 -9
- package/dist/ui/assets/SetupPage-ByYqTELb.js +0 -1
- package/dist/ui/assets/WebChatPage-BuGT2AL0.js +0 -16
- package/dist/ui/assets/accordion-C5d5Rm5z.js +0 -1
- package/dist/ui/assets/chevron-up-BYhk0K2J.js +0 -1
- package/dist/ui/assets/globe-DeCQTCDJ.js +0 -1
- package/dist/ui/assets/index-B2fCYtTS.css +0 -2
- package/dist/ui/assets/index-CQ7fn00w.js +0 -116
- package/dist/ui/assets/progress-BherYzY6.js +0 -1
- package/dist/ui/assets/scroll-area-DkeyX32e.js +0 -1
- package/dist/ui/assets/send-B0H5SEIE.js +0 -1
- package/dist/ui/assets/switch-BDwN8RYV.js +0 -1
- package/dist/ui/assets/table-CSc8ubon.js +0 -1
- package/dist/ui/assets/textarea-CXgXWKrT.js +0 -1
- package/dist/ui/assets/useProviders-CnlC_qCS.js +0 -1
- package/dist/ui/dist/assets/AgentCreateForm-0oFbN3gj.js +0 -1
- package/dist/ui/dist/assets/AgentDetailPage-BJ4L2fNJ.js +0 -1
- package/dist/ui/dist/assets/AgentNewPage-B3n0LUck.js +0 -1
- package/dist/ui/dist/assets/ChannelsPage-fbF8K4MR.js +0 -8
- package/dist/ui/dist/assets/LogsPage-B2lY9maY.js +0 -1
- package/dist/ui/dist/assets/MeetingPage-2ky_hKiG.js +0 -1
- package/dist/ui/dist/assets/ProvidersPage-CEyUM2tD.js +0 -1
- package/dist/ui/dist/assets/SettingsPage-eO0i3g8p.js +0 -9
- package/dist/ui/dist/assets/SetupPage-ByYqTELb.js +0 -1
- package/dist/ui/dist/assets/WebChatPage-BuGT2AL0.js +0 -16
- package/dist/ui/dist/assets/accordion-C5d5Rm5z.js +0 -1
- package/dist/ui/dist/assets/chevron-up-BYhk0K2J.js +0 -1
- package/dist/ui/dist/assets/globe-DeCQTCDJ.js +0 -1
- package/dist/ui/dist/assets/index-B2fCYtTS.css +0 -2
- package/dist/ui/dist/assets/index-CQ7fn00w.js +0 -116
- package/dist/ui/dist/assets/progress-BherYzY6.js +0 -1
- package/dist/ui/dist/assets/scroll-area-DkeyX32e.js +0 -1
- package/dist/ui/dist/assets/send-B0H5SEIE.js +0 -1
- package/dist/ui/dist/assets/switch-BDwN8RYV.js +0 -1
- package/dist/ui/dist/assets/table-CSc8ubon.js +0 -1
- package/dist/ui/dist/assets/textarea-CXgXWKrT.js +0 -1
- package/dist/ui/dist/assets/useProviders-CnlC_qCS.js +0 -1
- /package/dist/ui/assets/{card-CNf6BS2e.js → card-DFKnZ6ky.js} +0 -0
- /package/dist/ui/assets/{circle-alert-CyHDwUj8.js → circle-alert-KuAm2FWh.js} +0 -0
- /package/dist/ui/assets/{circle-check-Bb54Ebmu.js → circle-check-6Ard1-2z.js} +0 -0
- /package/dist/ui/assets/{cpu-Cdgc_B1K.js → cpu-KDy6-FAI.js} +0 -0
- /package/dist/ui/assets/{download-C3ifGMjJ.js → download-Cjbk4Rek.js} +0 -0
- /package/dist/ui/assets/{external-link-BvxYeTP1.js → external-link-6sTlRDUR.js} +0 -0
- /package/dist/ui/assets/{eye-DqNTU_GD.js → eye-Df8o0tkC.js} +0 -0
- /package/dist/ui/assets/{file-text-BT_9S9SM.js → file-text-lnxnjBp0.js} +0 -0
- /package/dist/ui/assets/{folder-open-BhH8y9ac.js → folder-open-DJBLDFjv.js} +0 -0
- /package/dist/ui/assets/{format-GVHeOyWI.js → format-BwdV8bB5.js} +0 -0
- /package/dist/ui/assets/{gateway-url-COCbW0IR.js → gateway-url-DwzPmoc8.js} +0 -0
- /package/dist/ui/assets/{gauge-D_TMa4i9.js → gauge-B8Tj43rC.js} +0 -0
- /package/dist/ui/assets/{hexagon-DsGOUl-H.js → hexagon-6L79pgVK.js} +0 -0
- /package/dist/ui/assets/{history-BSG-Ypqf.js → history-CAF_R34_.js} +0 -0
- /package/dist/ui/assets/{info-NwLoa2Mj.js → info-WjromB4Y.js} +0 -0
- /package/dist/ui/assets/{key-3EP0dhkT.js → key-DyKOoQh5.js} +0 -0
- /package/dist/ui/assets/{loader-circle-CZNax6kS.js → loader-circle-BmBOgYze.js} +0 -0
- /package/dist/ui/assets/{lock-Ei1_J-Nq.js → lock-BS6OLXPv.js} +0 -0
- /package/dist/ui/assets/{pause-BUqah9Bi.js → pause-VqeUmp2Z.js} +0 -0
- /package/dist/ui/assets/{play-NcZ4swwL.js → play-zJpWuhrr.js} +0 -0
- /package/dist/ui/assets/{plus-CX1xyhp5.js → plus-BZQX26Dr.js} +0 -0
- /package/dist/ui/assets/{refresh-cw-DaYdjQFk.js → refresh-cw-CCzDCAuz.js} +0 -0
- /package/dist/ui/assets/{save-CUdYyHNy.js → save-hUmZhceG.js} +0 -0
- /package/dist/ui/assets/{settings-Ds4SqD8s.js → settings-BGfrZ_zM.js} +0 -0
- /package/dist/ui/assets/{sparkles-yUEb-7oH.js → sparkles-BhwlS1pc.js} +0 -0
- /package/dist/ui/assets/{square-BD81nFtN.js → square-DMNWw4Hi.js} +0 -0
- /package/dist/ui/assets/{terminal-DN38Q456.js → terminal--7G943As.js} +0 -0
- /package/dist/ui/assets/{trash-2-CNjMkoq6.js → trash-2-xD2o4SgX.js} +0 -0
- /package/dist/ui/assets/{triangle-alert-C9Y8Ub4X.js → triangle-alert-pVIJGjga.js} +0 -0
- /package/dist/ui/assets/{vendor-router-C9pIYwbJ.js → vendor-router-gqiZ7xhx.js} +0 -0
- /package/dist/ui/assets/{volume-2-CeSXNDv4.js → volume-2-BekVQl6P.js} +0 -0
- /package/dist/ui/assets/{zap-hlXjpSeA.js → zap-B4RaNNO5.js} +0 -0
- /package/dist/ui/dist/assets/{card-CNf6BS2e.js → card-DFKnZ6ky.js} +0 -0
- /package/dist/ui/dist/assets/{circle-alert-CyHDwUj8.js → circle-alert-KuAm2FWh.js} +0 -0
- /package/dist/ui/dist/assets/{circle-check-Bb54Ebmu.js → circle-check-6Ard1-2z.js} +0 -0
- /package/dist/ui/dist/assets/{cpu-Cdgc_B1K.js → cpu-KDy6-FAI.js} +0 -0
- /package/dist/ui/dist/assets/{download-C3ifGMjJ.js → download-Cjbk4Rek.js} +0 -0
- /package/dist/ui/dist/assets/{external-link-BvxYeTP1.js → external-link-6sTlRDUR.js} +0 -0
- /package/dist/ui/dist/assets/{eye-DqNTU_GD.js → eye-Df8o0tkC.js} +0 -0
- /package/dist/ui/dist/assets/{file-text-BT_9S9SM.js → file-text-lnxnjBp0.js} +0 -0
- /package/dist/ui/dist/assets/{folder-open-BhH8y9ac.js → folder-open-DJBLDFjv.js} +0 -0
- /package/dist/ui/dist/assets/{format-GVHeOyWI.js → format-BwdV8bB5.js} +0 -0
- /package/dist/ui/dist/assets/{gateway-url-COCbW0IR.js → gateway-url-DwzPmoc8.js} +0 -0
- /package/dist/ui/dist/assets/{gauge-D_TMa4i9.js → gauge-B8Tj43rC.js} +0 -0
- /package/dist/ui/dist/assets/{hexagon-DsGOUl-H.js → hexagon-6L79pgVK.js} +0 -0
- /package/dist/ui/dist/assets/{history-BSG-Ypqf.js → history-CAF_R34_.js} +0 -0
- /package/dist/ui/dist/assets/{info-NwLoa2Mj.js → info-WjromB4Y.js} +0 -0
- /package/dist/ui/dist/assets/{key-3EP0dhkT.js → key-DyKOoQh5.js} +0 -0
- /package/dist/ui/dist/assets/{loader-circle-CZNax6kS.js → loader-circle-BmBOgYze.js} +0 -0
- /package/dist/ui/dist/assets/{lock-Ei1_J-Nq.js → lock-BS6OLXPv.js} +0 -0
- /package/dist/ui/dist/assets/{pause-BUqah9Bi.js → pause-VqeUmp2Z.js} +0 -0
- /package/dist/ui/dist/assets/{play-NcZ4swwL.js → play-zJpWuhrr.js} +0 -0
- /package/dist/ui/dist/assets/{plus-CX1xyhp5.js → plus-BZQX26Dr.js} +0 -0
- /package/dist/ui/dist/assets/{refresh-cw-DaYdjQFk.js → refresh-cw-CCzDCAuz.js} +0 -0
- /package/dist/ui/dist/assets/{save-CUdYyHNy.js → save-hUmZhceG.js} +0 -0
- /package/dist/ui/dist/assets/{settings-Ds4SqD8s.js → settings-BGfrZ_zM.js} +0 -0
- /package/dist/ui/dist/assets/{sparkles-yUEb-7oH.js → sparkles-BhwlS1pc.js} +0 -0
- /package/dist/ui/dist/assets/{square-BD81nFtN.js → square-DMNWw4Hi.js} +0 -0
- /package/dist/ui/dist/assets/{terminal-DN38Q456.js → terminal--7G943As.js} +0 -0
- /package/dist/ui/dist/assets/{trash-2-CNjMkoq6.js → trash-2-xD2o4SgX.js} +0 -0
- /package/dist/ui/dist/assets/{triangle-alert-C9Y8Ub4X.js → triangle-alert-pVIJGjga.js} +0 -0
- /package/dist/ui/dist/assets/{vendor-router-C9pIYwbJ.js → vendor-router-gqiZ7xhx.js} +0 -0
- /package/dist/ui/dist/assets/{volume-2-CeSXNDv4.js → volume-2-BekVQl6P.js} +0 -0
- /package/dist/ui/dist/assets/{zap-hlXjpSeA.js → zap-B4RaNNO5.js} +0 -0
package/dist/ui/dist/index.html
CHANGED
|
@@ -21,16 +21,16 @@
|
|
|
21
21
|
<meta name="twitter:title" content="Hive">
|
|
22
22
|
<meta property="og:description" content="Hive Agents">
|
|
23
23
|
<meta name="twitter:description" content="Hive Agents">
|
|
24
|
-
<script type="module" crossorigin src="/assets/index-
|
|
24
|
+
<script type="module" crossorigin src="/assets/index-CawKP29y.js"></script>
|
|
25
25
|
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-S-ySWqyJ.js">
|
|
26
26
|
<link rel="modulepreload" crossorigin href="/assets/vendor-charts-Bu2lyBKP.js">
|
|
27
|
-
<link rel="modulepreload" crossorigin href="/assets/vendor-router-
|
|
27
|
+
<link rel="modulepreload" crossorigin href="/assets/vendor-router-gqiZ7xhx.js">
|
|
28
28
|
<link rel="modulepreload" crossorigin href="/assets/vendor-query-DsWPbQdG.js">
|
|
29
|
-
<link rel="modulepreload" crossorigin href="/assets/vendor-radix-
|
|
29
|
+
<link rel="modulepreload" crossorigin href="/assets/vendor-radix-D6rA7xKY.js">
|
|
30
30
|
<link rel="modulepreload" crossorigin href="/assets/utils-3pnRFmFe.js">
|
|
31
|
-
<link rel="modulepreload" crossorigin href="/assets/vendor-react-
|
|
32
|
-
<link rel="modulepreload" crossorigin href="/assets/gateway-url-
|
|
33
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
31
|
+
<link rel="modulepreload" crossorigin href="/assets/vendor-react-BU5iQU4f.js">
|
|
32
|
+
<link rel="modulepreload" crossorigin href="/assets/gateway-url-DwzPmoc8.js">
|
|
33
|
+
<link rel="stylesheet" crossorigin href="/assets/index-DIcsEkyd.css">
|
|
34
34
|
</head>
|
|
35
35
|
|
|
36
36
|
<body>
|
package/dist/ui/index.html
CHANGED
|
@@ -21,16 +21,16 @@
|
|
|
21
21
|
<meta name="twitter:title" content="Hive">
|
|
22
22
|
<meta property="og:description" content="Hive Agents">
|
|
23
23
|
<meta name="twitter:description" content="Hive Agents">
|
|
24
|
-
<script type="module" crossorigin src="/assets/index-
|
|
24
|
+
<script type="module" crossorigin src="/assets/index-CawKP29y.js"></script>
|
|
25
25
|
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-S-ySWqyJ.js">
|
|
26
26
|
<link rel="modulepreload" crossorigin href="/assets/vendor-charts-Bu2lyBKP.js">
|
|
27
|
-
<link rel="modulepreload" crossorigin href="/assets/vendor-router-
|
|
27
|
+
<link rel="modulepreload" crossorigin href="/assets/vendor-router-gqiZ7xhx.js">
|
|
28
28
|
<link rel="modulepreload" crossorigin href="/assets/vendor-query-DsWPbQdG.js">
|
|
29
|
-
<link rel="modulepreload" crossorigin href="/assets/vendor-radix-
|
|
29
|
+
<link rel="modulepreload" crossorigin href="/assets/vendor-radix-D6rA7xKY.js">
|
|
30
30
|
<link rel="modulepreload" crossorigin href="/assets/utils-3pnRFmFe.js">
|
|
31
|
-
<link rel="modulepreload" crossorigin href="/assets/vendor-react-
|
|
32
|
-
<link rel="modulepreload" crossorigin href="/assets/gateway-url-
|
|
33
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
31
|
+
<link rel="modulepreload" crossorigin href="/assets/vendor-react-BU5iQU4f.js">
|
|
32
|
+
<link rel="modulepreload" crossorigin href="/assets/gateway-url-DwzPmoc8.js">
|
|
33
|
+
<link rel="stylesheet" crossorigin href="/assets/index-DIcsEkyd.css">
|
|
34
34
|
</head>
|
|
35
35
|
|
|
36
36
|
<body>
|
package/package.json
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
import { spawn, execSync } from "node:child_process";
|
|
10
10
|
import * as path from "node:path";
|
|
11
|
+
import { homedir } from "node:os";
|
|
11
12
|
import { existsSync, readFileSync, unlinkSync, chmodSync } from "node:fs";
|
|
12
13
|
import type {
|
|
13
14
|
InstallationAdapter,
|
|
@@ -93,8 +94,8 @@ export class BinaryAdapter implements InstallationAdapter {
|
|
|
93
94
|
path.join(process.cwd(), "dist", "hive.exe"),
|
|
94
95
|
"/usr/local/bin/hive",
|
|
95
96
|
"/usr/bin/hive",
|
|
96
|
-
path.join(
|
|
97
|
-
path.join(
|
|
97
|
+
path.join(homedir(), ".local", "bin", "hive"),
|
|
98
|
+
path.join(homedir(), ".bun", "bin", "hive"),
|
|
98
99
|
];
|
|
99
100
|
|
|
100
101
|
for (const binaryPath of commonPaths) {
|
|
@@ -279,8 +280,11 @@ export class BinaryAdapter implements InstallationAdapter {
|
|
|
279
280
|
} else {
|
|
280
281
|
// Try to kill by process name
|
|
281
282
|
try {
|
|
282
|
-
|
|
283
|
-
|
|
283
|
+
if (process.platform === "win32") {
|
|
284
|
+
execSync("taskkill /IM hive.exe /F", { stdio: "ignore" });
|
|
285
|
+
} else {
|
|
286
|
+
execSync('pkill -f "hive"', { stdio: "ignore" });
|
|
287
|
+
}
|
|
284
288
|
console.log("✅ Hive Gateway detenido");
|
|
285
289
|
} catch {
|
|
286
290
|
console.log("⚠️ Hive Gateway no está corriendo");
|
|
@@ -202,7 +202,11 @@ export class BunGlobalAdapter implements InstallationAdapter {
|
|
|
202
202
|
} else {
|
|
203
203
|
// Try to kill by process name
|
|
204
204
|
try {
|
|
205
|
-
|
|
205
|
+
if (process.platform === "win32") {
|
|
206
|
+
execSync("taskkill /IM bun.exe /F", { stdio: "ignore" });
|
|
207
|
+
} else {
|
|
208
|
+
execSync("pkill -f 'bun.*hive.*start'", { stdio: "ignore" });
|
|
209
|
+
}
|
|
206
210
|
console.log("✅ Hive Gateway detenido");
|
|
207
211
|
} catch {
|
|
208
212
|
console.log("⚠️ Hive Gateway no está corriendo");
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import { z } from "zod";
|
|
9
9
|
import * as path from "node:path";
|
|
10
|
+
import { homedir } from "node:os";
|
|
10
11
|
import { existsSync, readFileSync } from "node:fs";
|
|
11
12
|
import type { GatewayConfig, InstallationConfig, InstallationPaths } from "./types";
|
|
12
13
|
import { DEFAULT_GATEWAY_CONFIG, PORTS, gatewayConfigSchema, installationConfigSchema } from "./types";
|
|
@@ -26,11 +27,11 @@ export function getHiveDir(customDir?: string): string {
|
|
|
26
27
|
|
|
27
28
|
// Development mode
|
|
28
29
|
if (process.env.HIVE_DEV === "true") {
|
|
29
|
-
return path.join(
|
|
30
|
+
return path.join(homedir(), ".hive-dev");
|
|
30
31
|
}
|
|
31
32
|
|
|
32
33
|
// Default production location
|
|
33
|
-
return path.join(
|
|
34
|
+
return path.join(homedir(), ".hive");
|
|
34
35
|
}
|
|
35
36
|
|
|
36
37
|
/**
|
|
@@ -230,7 +231,7 @@ export function expandPath(input: string): string {
|
|
|
230
231
|
|
|
231
232
|
// Expand ~ to home directory
|
|
232
233
|
if (input.startsWith("~/")) {
|
|
233
|
-
return path.join(
|
|
234
|
+
return path.join(homedir(), input.slice(2));
|
|
234
235
|
}
|
|
235
236
|
|
|
236
237
|
// Expand environment variables ${VAR} or $VAR
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import { spawn, execSync } from "node:child_process";
|
|
9
9
|
import * as path from "node:path";
|
|
10
|
+
import { homedir } from "node:os";
|
|
10
11
|
import { existsSync } from "node:fs";
|
|
11
12
|
import type {
|
|
12
13
|
InstallationAdapter,
|
|
@@ -55,7 +56,7 @@ export class DockerAdapter implements InstallationAdapter {
|
|
|
55
56
|
const standardPaths = [
|
|
56
57
|
"/opt/hive/docker-compose.yml",
|
|
57
58
|
"/usr/local/share/hive/docker-compose.yml",
|
|
58
|
-
path.join(
|
|
59
|
+
path.join(homedir(), ".hive", "docker-compose.yml"),
|
|
59
60
|
];
|
|
60
61
|
|
|
61
62
|
for (const composePath of standardPaths) {
|
|
@@ -113,7 +113,11 @@ function cleanup() {
|
|
|
113
113
|
for (const child of children) {
|
|
114
114
|
if (child.pid) {
|
|
115
115
|
try {
|
|
116
|
-
process.
|
|
116
|
+
if (process.platform !== "win32") {
|
|
117
|
+
process.kill(-child.pid, "SIGTERM");
|
|
118
|
+
} else {
|
|
119
|
+
child.kill("SIGTERM");
|
|
120
|
+
}
|
|
117
121
|
} catch {
|
|
118
122
|
child.kill("SIGTERM");
|
|
119
123
|
}
|
|
@@ -212,10 +216,52 @@ async function isSetupMode(): Promise<boolean> {
|
|
|
212
216
|
return !existsSync(dbPath);
|
|
213
217
|
}
|
|
214
218
|
|
|
219
|
+
/**
|
|
220
|
+
* Kill any process listening on a given TCP port (cross-platform)
|
|
221
|
+
*/
|
|
222
|
+
async function killPortProcess(port: number): Promise<void> {
|
|
223
|
+
try {
|
|
224
|
+
if (process.platform === "win32") {
|
|
225
|
+
const result = Bun.spawnSync(["netstat", "-ano"], { stderr: "pipe" });
|
|
226
|
+
for (const line of result.stdout.toString().split("\n")) {
|
|
227
|
+
if (line.includes(`:${port} `) && line.includes("LISTENING")) {
|
|
228
|
+
const pid = line.trim().split(/\s+/).pop();
|
|
229
|
+
if (pid && !isNaN(parseInt(pid, 10))) {
|
|
230
|
+
Bun.spawnSync(["taskkill", "/PID", pid, "/F"], { stderr: "pipe" });
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
} else {
|
|
235
|
+
const result = Bun.spawnSync(["fuser", "-k", `${port}/tcp`], { stderr: "pipe" });
|
|
236
|
+
if (result.exitCode !== 0) {
|
|
237
|
+
const lsof = Bun.spawnSync(["lsof", "-ti", `tcp:${port}`], { stderr: "pipe" });
|
|
238
|
+
const pids = lsof.stdout.toString().trim().split("\n").filter(Boolean);
|
|
239
|
+
for (const pid of pids) {
|
|
240
|
+
try { process.kill(parseInt(pid, 10), "SIGTERM"); } catch { }
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
await Bun.sleep(500);
|
|
245
|
+
} catch { }
|
|
246
|
+
}
|
|
247
|
+
|
|
215
248
|
/**
|
|
216
249
|
* Check if gateway is running using the adapter
|
|
217
250
|
*/
|
|
218
251
|
async function isRunning(): Promise<boolean> {
|
|
252
|
+
// HTTP health check first — if the port responds, something is running
|
|
253
|
+
// regardless of PID file or adapter state
|
|
254
|
+
try {
|
|
255
|
+
const coreConfig = await loadConfig().catch(() => null);
|
|
256
|
+
const port = coreConfig?.gateway?.port ?? 18790;
|
|
257
|
+
const res = await fetch(`http://127.0.0.1:${port}/health`, {
|
|
258
|
+
signal: AbortSignal.timeout(600),
|
|
259
|
+
});
|
|
260
|
+
if (res.ok) return true;
|
|
261
|
+
} catch {
|
|
262
|
+
// Nothing listening on the port — continue to other checks
|
|
263
|
+
}
|
|
264
|
+
|
|
219
265
|
try {
|
|
220
266
|
// Try adapter first
|
|
221
267
|
const adapter = await getAdapter();
|
|
@@ -319,7 +365,7 @@ export async function start(flags: string[]): Promise<void> {
|
|
|
319
365
|
║ ██║ ██║██║ ╚████╔╝ ███████╗ ║
|
|
320
366
|
║ ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚══════╝ ║
|
|
321
367
|
║ ║
|
|
322
|
-
║ Personal Swarm AI Gateway — v0.0.
|
|
368
|
+
║ Personal Swarm AI Gateway — v0.0.40 ║
|
|
323
369
|
╚════════════════════════════════════════════╝
|
|
324
370
|
|
|
325
371
|
📦 Installation: ${adapter.name}
|
|
@@ -405,7 +451,40 @@ async function handleDevMode(
|
|
|
405
451
|
}
|
|
406
452
|
}
|
|
407
453
|
|
|
454
|
+
// Verify port is free before spawning children
|
|
455
|
+
{
|
|
456
|
+
const portBusy = await (async () => {
|
|
457
|
+
try {
|
|
458
|
+
const r = await fetch(`http://127.0.0.1:${gatewayConfig.port}/health`, { signal: AbortSignal.timeout(500) });
|
|
459
|
+
return r.ok;
|
|
460
|
+
} catch { return false; }
|
|
461
|
+
})();
|
|
462
|
+
if (portBusy) {
|
|
463
|
+
// Try to free it (works for local processes; silently fails for Docker/root processes)
|
|
464
|
+
await killPortProcess(gatewayConfig.port);
|
|
465
|
+
await Bun.sleep(800);
|
|
466
|
+
const stillBusy = await (async () => {
|
|
467
|
+
try {
|
|
468
|
+
const r = await fetch(`http://127.0.0.1:${gatewayConfig.port}/health`, { signal: AbortSignal.timeout(500) });
|
|
469
|
+
return r.ok;
|
|
470
|
+
} catch { return false; }
|
|
471
|
+
})();
|
|
472
|
+
if (stillBusy) {
|
|
473
|
+
const manualCmd = process.platform === "win32"
|
|
474
|
+
? `netstat -ano | findstr :${gatewayConfig.port} → taskkill /PID <pid> /F`
|
|
475
|
+
: `sudo fuser -k ${gatewayConfig.port}/tcp`;
|
|
476
|
+
console.error(`\n❌ El puerto ${gatewayConfig.port} está ocupado por otro proceso (Docker u otro servicio).`);
|
|
477
|
+
console.error(` Detén el servicio antes de iniciar el modo dev:`);
|
|
478
|
+
console.error(` • Docker: docker stop $(docker ps -q --filter publish=${gatewayConfig.port})`);
|
|
479
|
+
console.error(` • Hive: hive stop`);
|
|
480
|
+
console.error(` • Manual: ${manualCmd}\n`);
|
|
481
|
+
return;
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
|
|
408
486
|
// Spawn Gateway child process
|
|
487
|
+
let gwExitedEarly = false;
|
|
409
488
|
const spawnGateway = (): ReturnType<typeof spawn> => {
|
|
410
489
|
const gw = spawn(process.execPath, [process.argv[1] || "", "start", "--skip-check", "--dev-internal"], {
|
|
411
490
|
detached: true,
|
|
@@ -437,6 +516,8 @@ async function handleDevMode(
|
|
|
437
516
|
const newGw = spawnGateway();
|
|
438
517
|
const idx = children.indexOf(gw);
|
|
439
518
|
if (idx !== -1) children.splice(idx, 1, newGw);
|
|
519
|
+
} else if (code !== null) {
|
|
520
|
+
gwExitedEarly = true;
|
|
440
521
|
}
|
|
441
522
|
});
|
|
442
523
|
|
|
@@ -458,6 +539,19 @@ async function handleDevMode(
|
|
|
458
539
|
waitForHttpPort(18790, "/health", 30000),
|
|
459
540
|
]);
|
|
460
541
|
|
|
542
|
+
// Give the child a moment to potentially fail before we declare success
|
|
543
|
+
await Bun.sleep(600);
|
|
544
|
+
|
|
545
|
+
if (gwExitedEarly) {
|
|
546
|
+
const portCheckCmd = process.platform === "win32"
|
|
547
|
+
? `netstat -ano | findstr :${gatewayConfig.port}`
|
|
548
|
+
: `sudo fuser ${gatewayConfig.port}/tcp`;
|
|
549
|
+
console.error(`\n❌ El proceso Gateway terminó inesperadamente.`);
|
|
550
|
+
console.error(` El puerto ${gatewayConfig.port} puede estar ocupado por otro servicio.`);
|
|
551
|
+
console.error(` Revisa con: ${portCheckCmd}\n`);
|
|
552
|
+
return;
|
|
553
|
+
}
|
|
554
|
+
|
|
461
555
|
if (!viteReady && hasVite) {
|
|
462
556
|
console.error("⚠️ Vite no respondió a tiempo");
|
|
463
557
|
}
|
|
@@ -466,15 +560,30 @@ async function handleDevMode(
|
|
|
466
560
|
return;
|
|
467
561
|
}
|
|
468
562
|
|
|
469
|
-
// Additional wait: ensure Gateway is fully initialized and serving UI
|
|
470
|
-
// In dev mode, Gateway needs a moment to set up HMR proxy
|
|
471
|
-
await Bun.sleep(500);
|
|
472
|
-
|
|
473
563
|
console.log("✅ Servicios listos\n");
|
|
474
564
|
|
|
475
|
-
// Open browser - en desarrollo, Gateway sirve la UI igual que en producción
|
|
476
|
-
|
|
477
|
-
|
|
565
|
+
// Open browser - en desarrollo, Gateway sirve la UI igual que en producción.
|
|
566
|
+
// Poll /api/setup/status (same as production mode) so the decision is based on
|
|
567
|
+
// the gateway's own check (users count == 0), not just whether the DB file exists.
|
|
568
|
+
const browserPort = gatewayConfig.port;
|
|
569
|
+
let setupMode = await isSetupMode(); // fallback default
|
|
570
|
+
{
|
|
571
|
+
const deadline = Date.now() + 10_000;
|
|
572
|
+
while (Date.now() < deadline) {
|
|
573
|
+
try {
|
|
574
|
+
const res = await fetch(`http://127.0.0.1:${browserPort}/api/setup/status`, {
|
|
575
|
+
signal: AbortSignal.timeout(1000),
|
|
576
|
+
});
|
|
577
|
+
if (res.ok) {
|
|
578
|
+
const body = await res.json() as { setupMode?: boolean };
|
|
579
|
+
setupMode = body.setupMode === true;
|
|
580
|
+
break;
|
|
581
|
+
}
|
|
582
|
+
// 503 = gateway still initializing ("starting" phase) — retry
|
|
583
|
+
} catch { }
|
|
584
|
+
await Bun.sleep(300);
|
|
585
|
+
}
|
|
586
|
+
}
|
|
478
587
|
const url = setupMode ? `http://localhost:${browserPort}/setup` : `http://localhost:${browserPort}`;
|
|
479
588
|
|
|
480
589
|
console.log(`
|
|
@@ -707,6 +816,11 @@ export async function reload(): Promise<void> {
|
|
|
707
816
|
return;
|
|
708
817
|
}
|
|
709
818
|
|
|
819
|
+
if (process.platform === "win32") {
|
|
820
|
+
console.log("⚠️ Recarga en caliente no disponible en Windows. Reinicia el gateway para aplicar cambios.");
|
|
821
|
+
return;
|
|
822
|
+
}
|
|
823
|
+
|
|
710
824
|
const pidFile = await getPidFile();
|
|
711
825
|
const pid = parseInt(readFileSync(pidFile, "utf-8").trim(), 10);
|
|
712
826
|
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import * as fs from "fs";
|
|
2
2
|
import * as path from "path";
|
|
3
|
+
import { homedir } from "os";
|
|
3
4
|
import { spawn } from "child_process";
|
|
4
5
|
|
|
5
|
-
const LOG_DIR = path.join(
|
|
6
|
+
const LOG_DIR = path.join(homedir(), ".hive", "logs");
|
|
6
7
|
const LOG_FILE = path.join(LOG_DIR, "gateway.log");
|
|
7
8
|
|
|
8
9
|
export async function logs(flags: string[]): Promise<void> {
|
|
@@ -50,7 +50,7 @@ function reloadEnvToProcess(hiveDir: string): void {
|
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
const VERSION = "0.0.
|
|
53
|
+
const VERSION = "0.0.40";
|
|
54
54
|
|
|
55
55
|
const DEFAULT_MODELS: Record<string, string> = {
|
|
56
56
|
anthropic: "claude-sonnet-4-6",
|
|
@@ -62,6 +62,7 @@ const DEFAULT_MODELS: Record<string, string> = {
|
|
|
62
62
|
openrouter: "meta-llama/llama-3.3-70b-instruct",
|
|
63
63
|
ollama: "llama3.3:8b",
|
|
64
64
|
nvidia: "meta/llama-3.3-70b-instruct",
|
|
65
|
+
hiveagents: "Qwen3.6-35B-A3B-UD-Q4_K_M.gguf",
|
|
65
66
|
};
|
|
66
67
|
|
|
67
68
|
const PROVIDER_BASE_URLS: Record<string, string> = {
|
|
@@ -74,6 +75,7 @@ const PROVIDER_BASE_URLS: Record<string, string> = {
|
|
|
74
75
|
openrouter: "https://openrouter.ai/api",
|
|
75
76
|
ollama: "http://localhost:11434",
|
|
76
77
|
nvidia: "https://integrate.api.nvidia.com/v1",
|
|
78
|
+
hiveagents: "https://llm.hiveagents.io/v1",
|
|
77
79
|
};
|
|
78
80
|
|
|
79
81
|
const API_KEY_PLACEHOLDERS: Record<string, string> = {
|
|
@@ -86,6 +88,7 @@ const API_KEY_PLACEHOLDERS: Record<string, string> = {
|
|
|
86
88
|
openrouter: "sk-or-...",
|
|
87
89
|
ollama: "",
|
|
88
90
|
nvidia: "nvapi-...",
|
|
91
|
+
hiveagents: "Bearer token...",
|
|
89
92
|
};
|
|
90
93
|
|
|
91
94
|
const API_KEY_LINKS: Record<string, string> = {
|
|
@@ -98,6 +101,7 @@ const API_KEY_LINKS: Record<string, string> = {
|
|
|
98
101
|
openrouter: "https://openrouter.ai/keys",
|
|
99
102
|
ollama: "",
|
|
100
103
|
nvidia: "https://build.nvidia.com/",
|
|
104
|
+
hiveagents: "",
|
|
101
105
|
};
|
|
102
106
|
|
|
103
107
|
const AVAILABLE_MODELS: Record<string, Array<{ value: string; label: string; hint?: string }>> = {
|
|
@@ -154,6 +158,17 @@ const AVAILABLE_MODELS: Record<string, Array<{ value: string; label: string; hin
|
|
|
154
158
|
{ value: "google/gemma-4-31b-it", label: "Gemma 4 31B", hint: "Multimodal — 256K contexto" },
|
|
155
159
|
{ value: "moonshotai/kimi-k2-thinking", label: "Kimi K2 Thinking", hint: "Razonamiento profundo — 256K" },
|
|
156
160
|
],
|
|
161
|
+
hiveagents: [
|
|
162
|
+
{ value: "Qwen3.6-35B-A3B-UD-Q4_K_M.gguf", label: "Qwen3.6 35B MoE Q4 (Recomendado)", hint: "MoE 22.7GB — 62.8 t/s, el más rápido" },
|
|
163
|
+
{ value: "Qwen3.6-35B-A3B-UD-Q6_K.gguf", label: "Qwen3.6 35B MoE Q6", hint: "MoE 30GB — 57.7 t/s" },
|
|
164
|
+
{ value: "Qwen3-Coder-Next-UD-Q4_K_M.gguf", label: "Qwen3 Coder Next MoE Q4", hint: "MoE 49.3GB — 50.9 t/s, ocupa toda la VRAM" },
|
|
165
|
+
{ value: "gemma-4-26B-A4B-UD-Q4_K_M.gguf", label: "Gemma 4 26B MoE Q4", hint: "MoE 16.9GB — 51.5 t/s" },
|
|
166
|
+
{ value: "gemma-4-26B-A4B-UD-Q6_K_XL.gguf", label: "Gemma 4 26B MoE Q6", hint: "MoE 23.3GB — 47.8 t/s" },
|
|
167
|
+
{ value: "gemma-4-12b-it-UD-Q4_K_XL.gguf", label: "Gemma 4 12B Dense Q4", hint: "Dense 7.4GB — 27.7 t/s" },
|
|
168
|
+
{ value: "Qwopus3.6-27B-v2-MTP-Q6_K.gguf", label: "Qwopus 27B Dense+MTP Q6", hint: "Dense+MTP 22.4GB — 17.9 t/s" },
|
|
169
|
+
{ value: "Qwen3.6-27B-UD-Q6_K_XL.gguf", label: "Qwen3.6 27B Dense+MTP Q6", hint: "Dense+MTP 26GB — 16 t/s" },
|
|
170
|
+
{ value: "gemma-4-31B-it-UD-Q6_K_XL.gguf", label: "Gemma 4 31B Dense Q6", hint: "Dense 27.5GB — 7.6 t/s, mayor calidad" },
|
|
171
|
+
],
|
|
157
172
|
};
|
|
158
173
|
|
|
159
174
|
const BUNDLED_SKILLS = [
|
|
@@ -390,6 +405,15 @@ async function testLLMConnection(provider: string, apiKey: string, model: string
|
|
|
390
405
|
return response.ok;
|
|
391
406
|
}
|
|
392
407
|
|
|
408
|
+
if (provider === "hiveagents") {
|
|
409
|
+
try {
|
|
410
|
+
const response = await fetch("https://llm.hiveagents.io/health");
|
|
411
|
+
return response.ok;
|
|
412
|
+
} catch {
|
|
413
|
+
return false;
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
|
|
393
417
|
return false;
|
|
394
418
|
} catch {
|
|
395
419
|
return false;
|
|
@@ -542,6 +566,7 @@ async function runUpdateWizard(existing: ExistingConfig): Promise<void> {
|
|
|
542
566
|
{ value: "nvidia", label: "NVIDIA NIM", hint: "Modelos gratuitos" },
|
|
543
567
|
{ value: "openrouter", label: "OpenRouter", hint: "Multi-modelo" },
|
|
544
568
|
{ value: "ollama", label: "Ollama (local)", hint: "Sin costo" },
|
|
569
|
+
{ value: "hiveagents", label: "HiveAgents LLM", hint: "Qwen3.6 / Gemma4 vía Cloudflare" },
|
|
545
570
|
],
|
|
546
571
|
}) as string;
|
|
547
572
|
|
|
@@ -1057,6 +1082,7 @@ async function runFullWizard(): Promise<void> {
|
|
|
1057
1082
|
{ value: "ollama", label: "Ollama (Local)", hint: "Gratis, corre localmente" },
|
|
1058
1083
|
{ value: "nvidia", label: "NVIDIA NIM", hint: "Modelos gratuitos en build.nvidia.com" },
|
|
1059
1084
|
{ value: "openrouter", label: "OpenRouter", hint: "Múltiples proveedores" },
|
|
1085
|
+
{ value: "hiveagents", label: "HiveAgents LLM", hint: "Local — Qwen3.6 / Gemma4 vía Cloudflare" },
|
|
1060
1086
|
],
|
|
1061
1087
|
initialValue: state.provider,
|
|
1062
1088
|
});
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import * as fs from "fs";
|
|
2
2
|
import * as path from "path";
|
|
3
|
+
import { homedir } from "os";
|
|
3
4
|
|
|
4
|
-
const HIVE_DIR = path.join(
|
|
5
|
+
const HIVE_DIR = path.join(homedir(), ".hive");
|
|
5
6
|
const SESSIONS_DIR = path.join(HIVE_DIR, "sessions");
|
|
6
7
|
|
|
7
8
|
export async function sessions(subcommand: string | undefined, args: string[]): Promise<void> {
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import * as p from "@clack/prompts";
|
|
2
2
|
import * as fs from "fs";
|
|
3
3
|
import * as path from "path";
|
|
4
|
+
import { homedir } from "os";
|
|
4
5
|
|
|
5
|
-
const SKILLS_DIR = path.join(
|
|
6
|
+
const SKILLS_DIR = path.join(homedir(), ".hive", "skills");
|
|
6
7
|
const BUNDLED_SKILLS: Array<{ slug: string; name: string; description: string }> = [
|
|
7
8
|
{ slug: "web-search", name: "Web Search", description: "Search the web using multiple search engines" },
|
|
8
9
|
{ slug: "code-exec", name: "Code Execution", description: "Execute code snippets safely" },
|