@johpaz/hive 1.7.2 → 1.7.3
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 +178 -36
- package/dist/hive.js +315124 -0
- package/package.json +11 -3
- package/packages/core/src/index.ts +0 -1
- package/.dockerignore +0 -9
- package/CONTRIBUTING.md +0 -44
- package/Dockerfile +0 -67
- package/docker-compose.yml +0 -19
- package/packages/cli/package.json +0 -28
- package/packages/cli/src/commands/agent-run.ts +0 -168
- package/packages/cli/src/commands/agents.ts +0 -398
- package/packages/cli/src/commands/chat.ts +0 -142
- package/packages/cli/src/commands/config.ts +0 -50
- package/packages/cli/src/commands/cron.ts +0 -161
- package/packages/cli/src/commands/dev.ts +0 -95
- package/packages/cli/src/commands/doctor.ts +0 -133
- package/packages/cli/src/commands/gateway.ts +0 -422
- package/packages/cli/src/commands/logs.ts +0 -57
- package/packages/cli/src/commands/mcp.ts +0 -175
- package/packages/cli/src/commands/message.ts +0 -77
- package/packages/cli/src/commands/onboard.ts +0 -1696
- package/packages/cli/src/commands/security.ts +0 -144
- package/packages/cli/src/commands/service.ts +0 -50
- package/packages/cli/src/commands/sessions.ts +0 -116
- package/packages/cli/src/commands/skills.ts +0 -187
- package/packages/cli/src/commands/update.ts +0 -25
- package/packages/cli/src/index.ts +0 -190
- package/packages/cli/src/utils/token.ts +0 -6
- package/packages/code-bridge/README.md +0 -78
- package/packages/code-bridge/package.json +0 -18
- package/packages/code-bridge/src/index.ts +0 -95
- package/packages/code-bridge/src/process-manager.ts +0 -212
- package/packages/code-bridge/src/schemas.ts +0 -133
- package/packages/core/package.json +0 -55
- package/packages/core/src/agent/agent-loop.ts +0 -520
- package/packages/core/src/agent/compaction.ts +0 -183
- package/packages/core/src/agent/context-compiler.ts +0 -544
- package/packages/core/src/agent/context-guard.ts +0 -91
- package/packages/core/src/agent/conversation-store.ts +0 -193
- package/packages/core/src/agent/curator.ts +0 -158
- package/packages/core/src/agent/hooks.ts +0 -166
- package/packages/core/src/agent/llm-client.ts +0 -503
- package/packages/core/src/agent/native-tools.ts +0 -31
- package/packages/core/src/agent/playbook-selector.ts +0 -143
- package/packages/core/src/agent/prompt-builder.ts +0 -167
- package/packages/core/src/agent/providers/index.ts +0 -186
- package/packages/core/src/agent/providers.ts +0 -1
- package/packages/core/src/agent/reflector.ts +0 -200
- package/packages/core/src/agent/service.ts +0 -266
- package/packages/core/src/agent/skill-selector.ts +0 -413
- package/packages/core/src/agent/stuck-loop.ts +0 -133
- package/packages/core/src/agent/tool-selector.ts +0 -623
- package/packages/core/src/agent/tracer.ts +0 -102
- package/packages/core/src/canvas/canvas-manager.ts +0 -319
- package/packages/core/src/canvas/canvas-tools.ts +0 -420
- package/packages/core/src/canvas/emitter.ts +0 -119
- package/packages/core/src/canvas/index.ts +0 -2
- package/packages/core/src/channels/base.ts +0 -140
- package/packages/core/src/channels/discord.ts +0 -260
- package/packages/core/src/channels/index.ts +0 -7
- package/packages/core/src/channels/manager.ts +0 -383
- package/packages/core/src/channels/slack.ts +0 -287
- package/packages/core/src/channels/telegram.ts +0 -552
- package/packages/core/src/channels/webchat.ts +0 -139
- package/packages/core/src/channels/whatsapp.ts +0 -375
- package/packages/core/src/config/index.ts +0 -12
- package/packages/core/src/config/loader.ts +0 -529
- package/packages/core/src/events/agent-bus.ts +0 -460
- package/packages/core/src/events/event-bus.ts +0 -169
- package/packages/core/src/gateway/helpers/cors.ts +0 -32
- package/packages/core/src/gateway/helpers/index.ts +0 -4
- package/packages/core/src/gateway/helpers/narration.ts +0 -60
- package/packages/core/src/gateway/helpers/path.ts +0 -13
- package/packages/core/src/gateway/helpers/redact.ts +0 -61
- package/packages/core/src/gateway/index.ts +0 -5
- package/packages/core/src/gateway/initializer.ts +0 -332
- package/packages/core/src/gateway/lane-queue.ts +0 -169
- package/packages/core/src/gateway/resolver.ts +0 -108
- package/packages/core/src/gateway/router.ts +0 -124
- package/packages/core/src/gateway/routes/agents.ts +0 -187
- package/packages/core/src/gateway/routes/channels.ts +0 -203
- package/packages/core/src/gateway/routes/chat.ts +0 -241
- package/packages/core/src/gateway/routes/config.ts +0 -12
- package/packages/core/src/gateway/routes/cron.ts +0 -42
- package/packages/core/src/gateway/routes/ethics.ts +0 -46
- package/packages/core/src/gateway/routes/mcp.ts +0 -346
- package/packages/core/src/gateway/routes/models.ts +0 -93
- package/packages/core/src/gateway/routes/projects.ts +0 -179
- package/packages/core/src/gateway/routes/providers.ts +0 -192
- package/packages/core/src/gateway/routes/setup.ts +0 -267
- package/packages/core/src/gateway/routes/skills.ts +0 -70
- package/packages/core/src/gateway/routes/system.ts +0 -165
- package/packages/core/src/gateway/routes/tasks.ts +0 -44
- package/packages/core/src/gateway/routes/tools.ts +0 -35
- package/packages/core/src/gateway/routes/users.ts +0 -118
- package/packages/core/src/gateway/routes/voice.ts +0 -73
- package/packages/core/src/gateway/routes/workspace.ts +0 -281
- package/packages/core/src/gateway/server.ts +0 -1978
- package/packages/core/src/gateway/session.ts +0 -95
- package/packages/core/src/gateway/slash-commands.ts +0 -193
- package/packages/core/src/heartbeat/index.ts +0 -157
- package/packages/core/src/mcp/hot-reload.ts +0 -213
- package/packages/core/src/mcp/singleton.ts +0 -21
- package/packages/core/src/memory/index.ts +0 -1
- package/packages/core/src/memory/notes.ts +0 -68
- package/packages/core/src/plugins/api.ts +0 -128
- package/packages/core/src/plugins/index.ts +0 -2
- package/packages/core/src/plugins/loader.ts +0 -365
- package/packages/core/src/resilience/circuit-breaker.ts +0 -225
- package/packages/core/src/security/google-chat.ts +0 -269
- package/packages/core/src/security/index.ts +0 -192
- package/packages/core/src/security/pairing.ts +0 -250
- package/packages/core/src/security/rate-limit.ts +0 -270
- package/packages/core/src/security/signal.ts +0 -321
- package/packages/core/src/state/store.ts +0 -312
- package/packages/core/src/storage/crypto.ts +0 -101
- package/packages/core/src/storage/onboarding.ts +0 -1609
- package/packages/core/src/storage/schema.ts +0 -567
- package/packages/core/src/storage/seed.ts +0 -608
- package/packages/core/src/storage/sqlite.ts +0 -363
- package/packages/core/src/storage/usage.ts +0 -270
- package/packages/core/src/tools/agents/index.ts +0 -607
- package/packages/core/src/tools/bridge-events.ts +0 -26
- package/packages/core/src/tools/canvas/index.ts +0 -281
- package/packages/core/src/tools/cli/index.ts +0 -142
- package/packages/core/src/tools/codebridge/index.ts +0 -179
- package/packages/core/src/tools/core/index.ts +0 -257
- package/packages/core/src/tools/cron/index.ts +0 -373
- package/packages/core/src/tools/filesystem/fs-delete.ts +0 -78
- package/packages/core/src/tools/filesystem/fs-edit.ts +0 -106
- package/packages/core/src/tools/filesystem/fs-exists.ts +0 -63
- package/packages/core/src/tools/filesystem/fs-glob.ts +0 -108
- package/packages/core/src/tools/filesystem/fs-list.ts +0 -129
- package/packages/core/src/tools/filesystem/fs-read.ts +0 -72
- package/packages/core/src/tools/filesystem/fs-write.ts +0 -67
- package/packages/core/src/tools/filesystem/index.ts +0 -34
- package/packages/core/src/tools/filesystem/workspace-guard.ts +0 -62
- package/packages/core/src/tools/index.ts +0 -197
- package/packages/core/src/tools/projects/index.ts +0 -37
- package/packages/core/src/tools/projects/project-create.ts +0 -94
- package/packages/core/src/tools/projects/project-done.ts +0 -66
- package/packages/core/src/tools/projects/project-fail.ts +0 -66
- package/packages/core/src/tools/projects/project-list.ts +0 -96
- package/packages/core/src/tools/projects/project-update.ts +0 -72
- package/packages/core/src/tools/projects/task-create.ts +0 -68
- package/packages/core/src/tools/projects/task-evaluate.ts +0 -93
- package/packages/core/src/tools/projects/task-update.ts +0 -93
- package/packages/core/src/tools/search-knowledge/search-knowledge.ts +0 -155
- package/packages/core/src/tools/types.ts +0 -39
- package/packages/core/src/tools/voice/index.ts +0 -104
- package/packages/core/src/tools/web/browser-click.ts +0 -54
- package/packages/core/src/tools/web/browser-navigate.ts +0 -84
- package/packages/core/src/tools/web/browser-screenshot.ts +0 -54
- package/packages/core/src/tools/web/browser-type.ts +0 -60
- package/packages/core/src/tools/web/index.ts +0 -31
- package/packages/core/src/tools/web/web-fetch.ts +0 -78
- package/packages/core/src/tools/web/web-search.ts +0 -123
- package/packages/core/src/utils/benchmark.ts +0 -80
- package/packages/core/src/utils/crypto.ts +0 -73
- package/packages/core/src/utils/date.ts +0 -42
- package/packages/core/src/utils/index.ts +0 -5
- package/packages/core/src/utils/logger.ts +0 -389
- package/packages/core/src/utils/retry.ts +0 -70
- package/packages/core/src/utils/toon.ts +0 -356
- package/packages/core/src/voice/index.ts +0 -583
- package/packages/hive-ui/README.md +0 -52
- package/packages/hive-ui/components.json +0 -20
- package/packages/hive-ui/index.html +0 -30
- package/packages/hive-ui/package.json +0 -90
- package/packages/hive-ui/public/favicon.ico +0 -0
- package/packages/hive-ui/public/placeholder.svg +0 -1
- package/packages/hive-ui/src/App.tsx +0 -115
- package/packages/hive-ui/src/components/CronJobsPanel.tsx +0 -200
- package/packages/hive-ui/src/components/NavLink.tsx +0 -34
- package/packages/hive-ui/src/components/NotesPanel.tsx +0 -79
- package/packages/hive-ui/src/components/SystemMonitor.tsx +0 -270
- package/packages/hive-ui/src/components/UsageStatsPanel.tsx +0 -334
- package/packages/hive-ui/src/components/WelcomeDialog.tsx +0 -279
- package/packages/hive-ui/src/components/ui/accordion.tsx +0 -52
- package/packages/hive-ui/src/components/ui/alert-dialog.tsx +0 -104
- package/packages/hive-ui/src/components/ui/alert.tsx +0 -45
- package/packages/hive-ui/src/components/ui/aspect-ratio.tsx +0 -5
- package/packages/hive-ui/src/components/ui/avatar.tsx +0 -38
- package/packages/hive-ui/src/components/ui/badge.tsx +0 -29
- package/packages/hive-ui/src/components/ui/bee-loader.tsx +0 -68
- package/packages/hive-ui/src/components/ui/breadcrumb.tsx +0 -90
- package/packages/hive-ui/src/components/ui/button.tsx +0 -47
- package/packages/hive-ui/src/components/ui/calendar.tsx +0 -54
- package/packages/hive-ui/src/components/ui/card.tsx +0 -45
- package/packages/hive-ui/src/components/ui/carousel.tsx +0 -224
- package/packages/hive-ui/src/components/ui/chart.tsx +0 -303
- package/packages/hive-ui/src/components/ui/checkbox.tsx +0 -26
- package/packages/hive-ui/src/components/ui/collapsible.tsx +0 -9
- package/packages/hive-ui/src/components/ui/command.tsx +0 -133
- package/packages/hive-ui/src/components/ui/context-menu.tsx +0 -178
- package/packages/hive-ui/src/components/ui/dialog.tsx +0 -95
- package/packages/hive-ui/src/components/ui/drawer.tsx +0 -87
- package/packages/hive-ui/src/components/ui/dropdown-menu.tsx +0 -179
- package/packages/hive-ui/src/components/ui/form.tsx +0 -129
- package/packages/hive-ui/src/components/ui/hover-card.tsx +0 -27
- package/packages/hive-ui/src/components/ui/input-otp.tsx +0 -61
- package/packages/hive-ui/src/components/ui/input.tsx +0 -22
- package/packages/hive-ui/src/components/ui/label.tsx +0 -17
- package/packages/hive-ui/src/components/ui/menubar.tsx +0 -207
- package/packages/hive-ui/src/components/ui/navigation-menu.tsx +0 -120
- package/packages/hive-ui/src/components/ui/pagination.tsx +0 -80
- package/packages/hive-ui/src/components/ui/popover.tsx +0 -29
- package/packages/hive-ui/src/components/ui/progress.tsx +0 -23
- package/packages/hive-ui/src/components/ui/radio-group.tsx +0 -36
- package/packages/hive-ui/src/components/ui/resizable.tsx +0 -37
- package/packages/hive-ui/src/components/ui/scroll-area.tsx +0 -38
- package/packages/hive-ui/src/components/ui/select.tsx +0 -143
- package/packages/hive-ui/src/components/ui/separator.tsx +0 -20
- package/packages/hive-ui/src/components/ui/sheet.tsx +0 -107
- package/packages/hive-ui/src/components/ui/sidebar.tsx +0 -636
- package/packages/hive-ui/src/components/ui/skeleton.tsx +0 -7
- package/packages/hive-ui/src/components/ui/slider.tsx +0 -23
- package/packages/hive-ui/src/components/ui/sonner.tsx +0 -27
- package/packages/hive-ui/src/components/ui/switch.tsx +0 -27
- package/packages/hive-ui/src/components/ui/table.tsx +0 -72
- package/packages/hive-ui/src/components/ui/tabs.tsx +0 -53
- package/packages/hive-ui/src/components/ui/textarea.tsx +0 -21
- package/packages/hive-ui/src/components/ui/toast.tsx +0 -111
- package/packages/hive-ui/src/components/ui/toaster.tsx +0 -24
- package/packages/hive-ui/src/components/ui/toggle-group.tsx +0 -49
- package/packages/hive-ui/src/components/ui/toggle.tsx +0 -37
- package/packages/hive-ui/src/components/ui/tooltip.tsx +0 -28
- package/packages/hive-ui/src/components/ui/use-toast.ts +0 -3
- package/packages/hive-ui/src/hooks/use-mobile.tsx +0 -19
- package/packages/hive-ui/src/hooks/use-toast.ts +0 -186
- package/packages/hive-ui/src/hooks/useAgentConfig.ts +0 -25
- package/packages/hive-ui/src/hooks/useAgents.ts +0 -38
- package/packages/hive-ui/src/hooks/useBridge.ts +0 -38
- package/packages/hive-ui/src/hooks/useCanvas.ts +0 -24
- package/packages/hive-ui/src/hooks/useChannels.ts +0 -2
- package/packages/hive-ui/src/hooks/useEthics.ts +0 -51
- package/packages/hive-ui/src/hooks/useProviders.ts +0 -14
- package/packages/hive-ui/src/hooks/useTheme.ts +0 -29
- package/packages/hive-ui/src/hooks/useUserConfig.ts +0 -17
- package/packages/hive-ui/src/hooks/useWebSocket.ts +0 -12
- package/packages/hive-ui/src/index.css +0 -620
- package/packages/hive-ui/src/lib/api.ts +0 -100
- package/packages/hive-ui/src/lib/constants.ts +0 -6
- package/packages/hive-ui/src/lib/models.ts +0 -64
- package/packages/hive-ui/src/lib/swal.ts +0 -30
- package/packages/hive-ui/src/lib/utils.ts +0 -6
- package/packages/hive-ui/src/lib/websocket.ts +0 -7
- package/packages/hive-ui/src/main.tsx +0 -5
- package/packages/hive-ui/src/modules/agent-config/details/AgentDetailsEditor.tsx +0 -524
- package/packages/hive-ui/src/modules/agent-config/ethics/EthicsConflictDetector.tsx +0 -18
- package/packages/hive-ui/src/modules/agent-config/ethics/EthicsEditor.tsx +0 -19
- package/packages/hive-ui/src/modules/agent-config/ethics/EthicsRulesList.tsx +0 -36
- package/packages/hive-ui/src/modules/agent-config/ethics/EthicsTemplateGallery.tsx +0 -361
- package/packages/hive-ui/src/modules/agent-config/ethics/index.ts +0 -4
- package/packages/hive-ui/src/modules/agent-config/index.ts +0 -6
- package/packages/hive-ui/src/modules/agent-config/mcp/MCPServerAdd.tsx +0 -322
- package/packages/hive-ui/src/modules/agent-config/mcp/MCPServerCard.tsx +0 -93
- package/packages/hive-ui/src/modules/agent-config/mcp/MCPServerConfig.tsx +0 -427
- package/packages/hive-ui/src/modules/agent-config/mcp/MCPServerList.tsx +0 -85
- package/packages/hive-ui/src/modules/agent-config/mcp/MCPToolExplorer.tsx +0 -79
- package/packages/hive-ui/src/modules/agent-config/mcp/index.ts +0 -5
- package/packages/hive-ui/src/modules/agent-config/shared/ConfigEditorLayout.tsx +0 -30
- package/packages/hive-ui/src/modules/agent-config/shared/ConfigExporter.tsx +0 -26
- package/packages/hive-ui/src/modules/agent-config/shared/ConfigImporter.tsx +0 -25
- package/packages/hive-ui/src/modules/agent-config/shared/DiffViewer.tsx +0 -31
- package/packages/hive-ui/src/modules/agent-config/shared/MarkdownEditor.tsx +0 -32
- package/packages/hive-ui/src/modules/agent-config/shared/SaveStatusIndicator.tsx +0 -23
- package/packages/hive-ui/src/modules/agent-config/shared/ValidationPanel.tsx +0 -36
- package/packages/hive-ui/src/modules/agent-config/shared/index.ts +0 -7
- package/packages/hive-ui/src/modules/agent-config/skills/SkillCard.tsx +0 -81
- package/packages/hive-ui/src/modules/agent-config/skills/SkillConfigEditor.tsx +0 -22
- package/packages/hive-ui/src/modules/agent-config/skills/SkillCreator.tsx +0 -60
- package/packages/hive-ui/src/modules/agent-config/skills/SkillInstaller.tsx +0 -23
- package/packages/hive-ui/src/modules/agent-config/skills/SkillList.tsx +0 -72
- package/packages/hive-ui/src/modules/agent-config/skills/SkillsTab.tsx +0 -202
- package/packages/hive-ui/src/modules/agent-config/skills/index.ts +0 -5
- package/packages/hive-ui/src/modules/agent-config/tools/ToolCard.tsx +0 -27
- package/packages/hive-ui/src/modules/agent-config/tools/ToolConfigPanel.tsx +0 -22
- package/packages/hive-ui/src/modules/agent-config/tools/ToolManager.tsx +0 -266
- package/packages/hive-ui/src/modules/agent-config/tools/ToolPermissions.tsx +0 -287
- package/packages/hive-ui/src/modules/agent-config/tools/ToolRegistry.tsx +0 -84
- package/packages/hive-ui/src/modules/agent-config/tools/ToolUsageStats.tsx +0 -52
- package/packages/hive-ui/src/modules/agent-config/tools/index.ts +0 -4
- package/packages/hive-ui/src/modules/agent-config/user/ActiveAgentsList.tsx +0 -109
- package/packages/hive-ui/src/modules/agent-config/user/GlobalConfigOverview.tsx +0 -119
- package/packages/hive-ui/src/modules/agent-config/user/UserMemoryManager.tsx +0 -54
- package/packages/hive-ui/src/modules/agent-config/user/UserPreferencesForm.tsx +0 -163
- package/packages/hive-ui/src/modules/agent-config/user/UserProfileEditor.tsx +0 -261
- package/packages/hive-ui/src/modules/agent-config/user/index.ts +0 -3
- package/packages/hive-ui/src/modules/agents/AgentActivityLog.tsx +0 -25
- package/packages/hive-ui/src/modules/agents/AgentCard.tsx +0 -305
- package/packages/hive-ui/src/modules/agents/AgentCreateForm.tsx +0 -446
- package/packages/hive-ui/src/modules/agents/AgentDetail.tsx +0 -28
- package/packages/hive-ui/src/modules/agents/AgentInternalCard.tsx +0 -162
- package/packages/hive-ui/src/modules/agents/AgentList.tsx +0 -29
- package/packages/hive-ui/src/modules/agents/AgentStatusBadge.tsx +0 -34
- package/packages/hive-ui/src/modules/agents/ModelSelector.tsx +0 -151
- package/packages/hive-ui/src/modules/bridge/BridgeLogViewer.tsx +0 -61
- package/packages/hive-ui/src/modules/bridge/BridgeProcessList.tsx +0 -77
- package/packages/hive-ui/src/modules/bridge/BridgeStatus.tsx +0 -23
- package/packages/hive-ui/src/modules/bridge/BridgeTerminal.tsx +0 -7
- package/packages/hive-ui/src/modules/canvas/CanvasButton.tsx +0 -3
- package/packages/hive-ui/src/modules/canvas/CanvasChart.tsx +0 -3
- package/packages/hive-ui/src/modules/canvas/CanvasComponentMap.tsx +0 -605
- package/packages/hive-ui/src/modules/canvas/CanvasContainer.tsx +0 -360
- package/packages/hive-ui/src/modules/canvas/CanvasForm.tsx +0 -3
- package/packages/hive-ui/src/modules/canvas/CanvasMarkdown.tsx +0 -3
- package/packages/hive-ui/src/modules/canvas/CanvasTable.tsx +0 -3
- package/packages/hive-ui/src/modules/canvas/ComponentRenderer.tsx +0 -30
- package/packages/hive-ui/src/modules/canvas/DynamicRenderer.tsx +0 -3
- package/packages/hive-ui/src/modules/channels/available/AvailableChannelsGrid.tsx +0 -89
- package/packages/hive-ui/src/modules/channels/available/ChannelAuthForm.tsx +0 -33
- package/packages/hive-ui/src/modules/channels/available/ChannelSetupWizard.tsx +0 -48
- package/packages/hive-ui/src/modules/channels/available/ChannelTestConnection.tsx +0 -37
- package/packages/hive-ui/src/modules/channels/available/ChannelTypeCard.tsx +0 -30
- package/packages/hive-ui/src/modules/channels/available/ChannelWebhookConfig.tsx +0 -30
- package/packages/hive-ui/src/modules/channels/available/index.ts +0 -6
- package/packages/hive-ui/src/modules/channels/connected/ChannelCard.tsx +0 -95
- package/packages/hive-ui/src/modules/channels/connected/ChannelConfigPanel.tsx +0 -260
- package/packages/hive-ui/src/modules/channels/connected/ChannelDisconnectButton.tsx +0 -21
- package/packages/hive-ui/src/modules/channels/connected/ChannelLogsViewer.tsx +0 -42
- package/packages/hive-ui/src/modules/channels/connected/ChannelQRCode.tsx +0 -32
- package/packages/hive-ui/src/modules/channels/connected/ChannelReconnectButton.tsx +0 -16
- package/packages/hive-ui/src/modules/channels/connected/ChannelStatusBadge.tsx +0 -26
- package/packages/hive-ui/src/modules/channels/connected/ConnectedChannelsList.tsx +0 -40
- package/packages/hive-ui/src/modules/channels/connected/index.ts +0 -8
- package/packages/hive-ui/src/modules/channels/shared/ChannelCard.tsx +0 -84
- package/packages/hive-ui/src/modules/channels/shared/ChannelConfigDialog.tsx +0 -279
- package/packages/hive-ui/src/modules/channels/shared/ChannelIcon.tsx +0 -40
- package/packages/hive-ui/src/modules/channels/shared/ChannelStats.tsx +0 -37
- package/packages/hive-ui/src/modules/channels/shared/ChannelTypeBadge.tsx +0 -23
- package/packages/hive-ui/src/modules/channels/shared/ConnectionHealthIndicator.tsx +0 -20
- package/packages/hive-ui/src/modules/channels/shared/MessagePreview.tsx +0 -19
- package/packages/hive-ui/src/modules/channels/shared/index.ts +0 -5
- package/packages/hive-ui/src/modules/chat/ChatContainer.tsx +0 -268
- package/packages/hive-ui/src/modules/chat/ChatHistory.tsx +0 -101
- package/packages/hive-ui/src/modules/chat/ChatInput.tsx +0 -108
- package/packages/hive-ui/src/modules/chat/ChatMessage.tsx +0 -137
- package/packages/hive-ui/src/modules/chat/ThinkingIndicator.tsx +0 -10
- package/packages/hive-ui/src/modules/layout/AppLayout.tsx +0 -45
- package/packages/hive-ui/src/modules/layout/ConnectionStatus.tsx +0 -19
- package/packages/hive-ui/src/modules/layout/Header.tsx +0 -20
- package/packages/hive-ui/src/modules/layout/HiveSidebar.tsx +0 -173
- package/packages/hive-ui/src/modules/layout/ThemeToggle.tsx +0 -18
- package/packages/hive-ui/src/modules/providers/ProviderCard.tsx +0 -319
- package/packages/hive-ui/src/modules/providers/ProviderConfigForm.tsx +0 -146
- package/packages/hive-ui/src/modules/providers/ProviderFailoverConfig.tsx +0 -110
- package/packages/hive-ui/src/modules/providers/ProviderList.tsx +0 -33
- package/packages/hive-ui/src/modules/providers/ProviderStatusIndicator.tsx +0 -23
- package/packages/hive-ui/src/modules/providers/configs/ProviderAPIKeyManager.tsx +0 -39
- package/packages/hive-ui/src/modules/providers/configs/ProviderEndpointConfig.tsx +0 -27
- package/packages/hive-ui/src/modules/providers/configs/ProviderRateLimits.tsx +0 -37
- package/packages/hive-ui/src/modules/providers/configs/ProviderRetryPolicy.tsx +0 -46
- package/packages/hive-ui/src/modules/providers/configs/index.ts +0 -4
- package/packages/hive-ui/src/modules/providers/index.ts +0 -5
- package/packages/hive-ui/src/modules/providers/models/ModelBenchmarkBadge.tsx +0 -21
- package/packages/hive-ui/src/modules/providers/models/ModelCapabilities.tsx +0 -44
- package/packages/hive-ui/src/modules/providers/models/ModelCard.tsx +0 -36
- package/packages/hive-ui/src/modules/providers/models/ModelComparisonTable.tsx +0 -47
- package/packages/hive-ui/src/modules/providers/models/ModelList.tsx +0 -51
- package/packages/hive-ui/src/modules/providers/models/ModelPricingInfo.tsx +0 -17
- package/packages/hive-ui/src/modules/providers/models/ModelSelector.tsx +0 -32
- package/packages/hive-ui/src/modules/providers/models/index.ts +0 -7
- package/packages/hive-ui/src/pages/AgentDetailPage.tsx +0 -74
- package/packages/hive-ui/src/pages/AgentNewPage.tsx +0 -5
- package/packages/hive-ui/src/pages/AgentsPage.tsx +0 -147
- package/packages/hive-ui/src/pages/BridgePage.tsx +0 -83
- package/packages/hive-ui/src/pages/CanvasPage.tsx +0 -32
- package/packages/hive-ui/src/pages/ChannelsPage.tsx +0 -176
- package/packages/hive-ui/src/pages/DashboardPage.tsx +0 -321
- package/packages/hive-ui/src/pages/Index.tsx +0 -14
- package/packages/hive-ui/src/pages/LogsPage.tsx +0 -252
- package/packages/hive-ui/src/pages/NotFound.tsx +0 -24
- package/packages/hive-ui/src/pages/ProjectsPage.tsx +0 -241
- package/packages/hive-ui/src/pages/ProvidersPage.tsx +0 -111
- package/packages/hive-ui/src/pages/SettingsPage.tsx +0 -147
- package/packages/hive-ui/src/pages/SetupPage.tsx +0 -1177
- package/packages/hive-ui/src/pages/WebChatPage.tsx +0 -15
- package/packages/hive-ui/src/stores/agentConfigStore.ts +0 -32
- package/packages/hive-ui/src/stores/agentStore.ts +0 -5
- package/packages/hive-ui/src/stores/bridgeStore.ts +0 -237
- package/packages/hive-ui/src/stores/canvasStore.ts +0 -250
- package/packages/hive-ui/src/stores/channelStore.ts +0 -5
- package/packages/hive-ui/src/stores/chatStore.ts +0 -42
- package/packages/hive-ui/src/stores/ethicsStore.ts +0 -141
- package/packages/hive-ui/src/stores/mcpStore.ts +0 -5
- package/packages/hive-ui/src/stores/modelStore.ts +0 -2
- package/packages/hive-ui/src/stores/projectsStore.ts +0 -141
- package/packages/hive-ui/src/stores/providerStore.ts +0 -2
- package/packages/hive-ui/src/stores/skillStore.ts +0 -5
- package/packages/hive-ui/src/stores/toolStore.ts +0 -5
- package/packages/hive-ui/src/stores/useGlobalConfigStore.ts +0 -937
- package/packages/hive-ui/src/stores/useLoaderStore.ts +0 -21
- package/packages/hive-ui/src/stores/useNotesAndCronsStore.ts +0 -144
- package/packages/hive-ui/src/stores/useWebSocketStore.ts +0 -152
- package/packages/hive-ui/src/stores/useWelcomeStore.ts +0 -37
- package/packages/hive-ui/src/stores/userConfigStore.ts +0 -23
- package/packages/hive-ui/src/stores/userStore.ts +0 -82
- package/packages/hive-ui/src/test/setup.ts +0 -15
- package/packages/hive-ui/src/types/agent-config.ts +0 -33
- package/packages/hive-ui/src/types/agent.ts +0 -65
- package/packages/hive-ui/src/types/bridge.ts +0 -27
- package/packages/hive-ui/src/types/canvas.ts +0 -76
- package/packages/hive-ui/src/types/channels.ts +0 -109
- package/packages/hive-ui/src/types/chat.ts +0 -25
- package/packages/hive-ui/src/types/connections.ts +0 -17
- package/packages/hive-ui/src/types/ethics.ts +0 -41
- package/packages/hive-ui/src/types/index.ts +0 -15
- package/packages/hive-ui/src/types/mcp.ts +0 -36
- package/packages/hive-ui/src/types/notes-crons.ts +0 -31
- package/packages/hive-ui/src/types/providers.ts +0 -145
- package/packages/hive-ui/src/types/skill.ts +0 -12
- package/packages/hive-ui/src/types/tool.ts +0 -44
- package/packages/hive-ui/src/types/user.ts +0 -26
- package/packages/hive-ui/src/types/websocket.ts +0 -14
- package/packages/hive-ui/src/vite-env.d.ts +0 -1
- package/packages/mcp/package.json +0 -26
- package/packages/mcp/src/config.ts +0 -13
- package/packages/mcp/src/index.ts +0 -1
- package/packages/mcp/src/logger.ts +0 -42
- package/packages/mcp/src/manager.ts +0 -439
- package/packages/mcp/src/transports/index.ts +0 -67
- package/packages/mcp/src/transports/sse.ts +0 -241
- package/packages/mcp/src/transports/websocket.ts +0 -159
- package/packages/skills/package.json +0 -21
- package/packages/skills/src/index.ts +0 -1
- package/packages/skills/src/loader.ts +0 -346
|
@@ -1,261 +0,0 @@
|
|
|
1
|
-
import { User, Save, Loader2, Globe, Clock, Briefcase, Bell, Pencil, X } from "lucide-react";
|
|
2
|
-
import { useState, useEffect } from "react";
|
|
3
|
-
import { useUserStore } from "@/stores/userStore";
|
|
4
|
-
import { Button } from "@/components/ui/button";
|
|
5
|
-
import { Input } from "@/components/ui/input";
|
|
6
|
-
import { Textarea } from "@/components/ui/textarea";
|
|
7
|
-
import { Label } from "@/components/ui/label";
|
|
8
|
-
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select";
|
|
9
|
-
import { Toast } from "@/lib/swal";
|
|
10
|
-
import { loader } from "@/stores/useLoaderStore";
|
|
11
|
-
|
|
12
|
-
const CRON_CHANNEL_OPTIONS = [
|
|
13
|
-
{ value: "auto", label: "Auto — detectar mejor canal" },
|
|
14
|
-
{ value: "webchat", label: "Web Chat" },
|
|
15
|
-
{ value: "telegram", label: "Telegram" },
|
|
16
|
-
{ value: "discord", label: "Discord" },
|
|
17
|
-
];
|
|
18
|
-
|
|
19
|
-
function getInitials(name: string) {
|
|
20
|
-
return name.split(" ").map(w => w[0]).slice(0, 2).join("").toUpperCase() || "?";
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export function UserProfileEditor() {
|
|
24
|
-
const { fetchUser, saveUser, isLoading } = useUserStore();
|
|
25
|
-
const [editing, setEditing] = useState(false);
|
|
26
|
-
|
|
27
|
-
const [formData, setFormData] = useState({
|
|
28
|
-
name: "", occupation: "", language: "",
|
|
29
|
-
timezone: "", preferred_cron_channel: "auto", notes: "",
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
useEffect(() => {
|
|
33
|
-
fetchUser().then((user: any) => {
|
|
34
|
-
if (user) setFormData({
|
|
35
|
-
name: user.name || "",
|
|
36
|
-
occupation: user.occupation || "",
|
|
37
|
-
language: user.language || "",
|
|
38
|
-
timezone: user.timezone || "",
|
|
39
|
-
preferred_cron_channel: user.preferred_cron_channel || "auto",
|
|
40
|
-
notes: user.notes || "",
|
|
41
|
-
});
|
|
42
|
-
}).catch(console.error);
|
|
43
|
-
}, [fetchUser]);
|
|
44
|
-
|
|
45
|
-
const update = (field: keyof typeof formData, value: string) =>
|
|
46
|
-
setFormData(prev => ({ ...prev, [field]: value }));
|
|
47
|
-
|
|
48
|
-
const handleSave = async () => {
|
|
49
|
-
loader.show("Guardando perfil de usuario...");
|
|
50
|
-
try {
|
|
51
|
-
const message = await saveUser(formData);
|
|
52
|
-
Toast.fire({ icon: "success", title: message });
|
|
53
|
-
setEditing(false);
|
|
54
|
-
} catch (err) {
|
|
55
|
-
Toast.fire({ icon: "error", title: err instanceof Error ? err.message : "Error al guardar el perfil" });
|
|
56
|
-
} finally {
|
|
57
|
-
loader.hide();
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
return (
|
|
62
|
-
<div className="space-y-4">
|
|
63
|
-
|
|
64
|
-
{/* ── Premium profile card ─────────────────────────────────────────── */}
|
|
65
|
-
<div className="relative overflow-hidden rounded-2xl border border-white/10 bg-zinc-950/60 backdrop-blur-xl shadow-2xl">
|
|
66
|
-
<div className="absolute inset-0 pointer-events-none">
|
|
67
|
-
<div className="absolute -top-10 -left-10 w-48 h-48 bg-blue-600/20 rounded-full blur-3xl" />
|
|
68
|
-
<div className="absolute -bottom-10 -right-10 w-48 h-48 bg-indigo-600/15 rounded-full blur-3xl" />
|
|
69
|
-
</div>
|
|
70
|
-
|
|
71
|
-
<div className="relative h-20 bg-gradient-to-r from-blue-600/30 via-indigo-600/20 to-violet-600/10">
|
|
72
|
-
<div className="absolute inset-0 bg-[repeating-linear-gradient(45deg,transparent,transparent_12px,rgba(255,255,255,0.015)_12px,rgba(255,255,255,0.015)_13px)]" />
|
|
73
|
-
</div>
|
|
74
|
-
|
|
75
|
-
<div className="relative px-6 pb-6">
|
|
76
|
-
<div className="relative -mt-8 mb-4 w-fit">
|
|
77
|
-
<div className="h-16 w-16 rounded-2xl bg-gradient-to-br from-blue-500 to-indigo-600 flex items-center justify-center shadow-lg shadow-blue-500/30 ring-2 ring-zinc-950 text-white font-bold text-xl tracking-tight">
|
|
78
|
-
{getInitials(formData.name)}
|
|
79
|
-
</div>
|
|
80
|
-
<span className="absolute -bottom-1 -right-1 h-4 w-4 rounded-full bg-emerald-500 border-2 border-zinc-950 shadow" />
|
|
81
|
-
</div>
|
|
82
|
-
|
|
83
|
-
<div className="flex items-start justify-between gap-4">
|
|
84
|
-
<div className="space-y-1 min-w-0">
|
|
85
|
-
<h3 className="text-lg font-bold text-white leading-tight truncate">
|
|
86
|
-
{formData.name || <span className="text-zinc-500 italic text-sm font-normal">Sin nombre</span>}
|
|
87
|
-
</h3>
|
|
88
|
-
{formData.occupation && (
|
|
89
|
-
<p className="text-sm text-zinc-400">{formData.occupation}</p>
|
|
90
|
-
)}
|
|
91
|
-
<div className="flex flex-wrap items-center gap-2 pt-1">
|
|
92
|
-
{formData.language && (
|
|
93
|
-
<span className="flex items-center gap-1 text-[11px] text-zinc-400 bg-white/5 border border-white/10 rounded-full px-2.5 py-0.5">
|
|
94
|
-
<Globe className="h-3 w-3" />{formData.language}
|
|
95
|
-
</span>
|
|
96
|
-
)}
|
|
97
|
-
{formData.timezone && (
|
|
98
|
-
<span className="flex items-center gap-1 text-[11px] text-zinc-400 bg-white/5 border border-white/10 rounded-full px-2.5 py-0.5">
|
|
99
|
-
<Clock className="h-3 w-3" />{formData.timezone}
|
|
100
|
-
</span>
|
|
101
|
-
)}
|
|
102
|
-
{formData.preferred_cron_channel !== "auto" && (
|
|
103
|
-
<span className="flex items-center gap-1 text-[11px] text-zinc-400 bg-white/5 border border-white/10 rounded-full px-2.5 py-0.5">
|
|
104
|
-
<Bell className="h-3 w-3" />{formData.preferred_cron_channel}
|
|
105
|
-
</span>
|
|
106
|
-
)}
|
|
107
|
-
</div>
|
|
108
|
-
</div>
|
|
109
|
-
|
|
110
|
-
<Button
|
|
111
|
-
variant="outline"
|
|
112
|
-
size="sm"
|
|
113
|
-
onClick={() => setEditing(v => !v)}
|
|
114
|
-
className="shrink-0 border-white/10 bg-white/5 hover:bg-white/10 text-zinc-300 gap-1.5 h-8 text-xs"
|
|
115
|
-
>
|
|
116
|
-
{editing ? <X className="h-3 w-3" /> : <Pencil className="h-3 w-3" />}
|
|
117
|
-
{editing ? "Cancelar" : "Editar"}
|
|
118
|
-
</Button>
|
|
119
|
-
</div>
|
|
120
|
-
</div>
|
|
121
|
-
</div>
|
|
122
|
-
|
|
123
|
-
{/* ── Premium edit form ────────────────────────────────────────────── */}
|
|
124
|
-
{editing && (
|
|
125
|
-
<div className="relative overflow-hidden rounded-2xl border border-white/10 bg-zinc-950/60 backdrop-blur-xl shadow-2xl animate-in fade-in slide-in-from-top-2 duration-200">
|
|
126
|
-
|
|
127
|
-
{/* Subtle glow */}
|
|
128
|
-
<div className="absolute inset-0 pointer-events-none">
|
|
129
|
-
<div className="absolute -top-8 -right-8 w-40 h-40 bg-blue-600/10 rounded-full blur-3xl" />
|
|
130
|
-
</div>
|
|
131
|
-
|
|
132
|
-
{/* Form header */}
|
|
133
|
-
<div className="relative flex items-center gap-3 px-6 pt-5 pb-4 border-b border-white/5">
|
|
134
|
-
<div className="p-2 rounded-lg bg-blue-500/10 text-blue-400">
|
|
135
|
-
<User className="h-4 w-4" />
|
|
136
|
-
</div>
|
|
137
|
-
<div>
|
|
138
|
-
<p className="text-sm font-bold text-white uppercase tracking-wider">Editar perfil</p>
|
|
139
|
-
<p className="text-[10px] text-zinc-500">Datos personales y preferencias</p>
|
|
140
|
-
</div>
|
|
141
|
-
</div>
|
|
142
|
-
|
|
143
|
-
<div className="relative p-6 space-y-6">
|
|
144
|
-
|
|
145
|
-
{/* Identity section */}
|
|
146
|
-
<div className="space-y-3">
|
|
147
|
-
<p className="text-[10px] font-bold text-zinc-500 uppercase tracking-widest">Identidad</p>
|
|
148
|
-
<div className="grid grid-cols-1 md:grid-cols-2 gap-3">
|
|
149
|
-
<div className="space-y-1.5">
|
|
150
|
-
<Label className="text-[10px] text-zinc-500 flex items-center gap-1.5">
|
|
151
|
-
<User className="h-3 w-3" /> Nombre completo
|
|
152
|
-
</Label>
|
|
153
|
-
<Input
|
|
154
|
-
placeholder="John Doe"
|
|
155
|
-
value={formData.name}
|
|
156
|
-
onChange={e => update("name", e.target.value)}
|
|
157
|
-
className="bg-white/5 border-white/10 focus:border-blue-500/50 h-9 text-sm transition-all"
|
|
158
|
-
/>
|
|
159
|
-
</div>
|
|
160
|
-
<div className="space-y-1.5">
|
|
161
|
-
<Label className="text-[10px] text-zinc-500 flex items-center gap-1.5">
|
|
162
|
-
<Briefcase className="h-3 w-3" /> Ocupación
|
|
163
|
-
</Label>
|
|
164
|
-
<Input
|
|
165
|
-
placeholder="AI Engineer"
|
|
166
|
-
value={formData.occupation}
|
|
167
|
-
onChange={e => update("occupation", e.target.value)}
|
|
168
|
-
className="bg-white/5 border-white/10 focus:border-blue-500/50 h-9 text-sm transition-all"
|
|
169
|
-
/>
|
|
170
|
-
</div>
|
|
171
|
-
</div>
|
|
172
|
-
</div>
|
|
173
|
-
|
|
174
|
-
{/* Locale section */}
|
|
175
|
-
<div className="space-y-3">
|
|
176
|
-
<p className="text-[10px] font-bold text-zinc-500 uppercase tracking-widest">Localización</p>
|
|
177
|
-
<div className="grid grid-cols-1 md:grid-cols-2 gap-3">
|
|
178
|
-
<div className="space-y-1.5">
|
|
179
|
-
<Label className="text-[10px] text-zinc-500 flex items-center gap-1.5">
|
|
180
|
-
<Globe className="h-3 w-3" /> Idioma
|
|
181
|
-
</Label>
|
|
182
|
-
<Input
|
|
183
|
-
placeholder="Spanish"
|
|
184
|
-
value={formData.language}
|
|
185
|
-
onChange={e => update("language", e.target.value)}
|
|
186
|
-
className="bg-white/5 border-white/10 focus:border-blue-500/50 h-9 text-sm transition-all"
|
|
187
|
-
/>
|
|
188
|
-
</div>
|
|
189
|
-
<div className="space-y-1.5">
|
|
190
|
-
<Label className="text-[10px] text-zinc-500 flex items-center gap-1.5">
|
|
191
|
-
<Clock className="h-3 w-3" /> Zona horaria
|
|
192
|
-
</Label>
|
|
193
|
-
<Input
|
|
194
|
-
placeholder="America/Bogota"
|
|
195
|
-
value={formData.timezone}
|
|
196
|
-
onChange={e => update("timezone", e.target.value)}
|
|
197
|
-
className="bg-white/5 border-white/10 focus:border-blue-500/50 h-9 text-sm transition-all"
|
|
198
|
-
/>
|
|
199
|
-
</div>
|
|
200
|
-
</div>
|
|
201
|
-
</div>
|
|
202
|
-
|
|
203
|
-
{/* Notifications section */}
|
|
204
|
-
<div className="space-y-3">
|
|
205
|
-
<p className="text-[10px] font-bold text-zinc-500 uppercase tracking-widest">Notificaciones</p>
|
|
206
|
-
<div className="space-y-1.5">
|
|
207
|
-
<Label className="text-[10px] text-zinc-500 flex items-center gap-1.5">
|
|
208
|
-
<Bell className="h-3 w-3" /> Canal preferido para Cron Jobs
|
|
209
|
-
</Label>
|
|
210
|
-
<Select value={formData.preferred_cron_channel} onValueChange={v => update("preferred_cron_channel", v)}>
|
|
211
|
-
<SelectTrigger className="bg-white/5 border-white/10 focus:border-blue-500/50 h-9 text-sm">
|
|
212
|
-
<SelectValue />
|
|
213
|
-
</SelectTrigger>
|
|
214
|
-
<SelectContent className="bg-zinc-900 border-white/10">
|
|
215
|
-
{CRON_CHANNEL_OPTIONS.map(opt => (
|
|
216
|
-
<SelectItem key={opt.value} value={opt.value} className="text-sm focus:bg-blue-500/20 focus:text-blue-400">
|
|
217
|
-
{opt.label}
|
|
218
|
-
</SelectItem>
|
|
219
|
-
))}
|
|
220
|
-
</SelectContent>
|
|
221
|
-
</Select>
|
|
222
|
-
</div>
|
|
223
|
-
</div>
|
|
224
|
-
|
|
225
|
-
{/* Notes section */}
|
|
226
|
-
<div className="space-y-3">
|
|
227
|
-
<p className="text-[10px] font-bold text-zinc-500 uppercase tracking-widest">Contexto para el agente</p>
|
|
228
|
-
<Textarea
|
|
229
|
-
placeholder="Describe tu perfil, preferencias de trabajo, estilo de comunicación..."
|
|
230
|
-
value={formData.notes}
|
|
231
|
-
onChange={e => update("notes", e.target.value)}
|
|
232
|
-
className="bg-white/5 border-white/10 focus:border-blue-500/50 text-sm resize-none min-h-[100px] transition-all"
|
|
233
|
-
/>
|
|
234
|
-
</div>
|
|
235
|
-
|
|
236
|
-
{/* Actions */}
|
|
237
|
-
<div className="flex items-center justify-end gap-2 pt-1 border-t border-white/5">
|
|
238
|
-
<Button
|
|
239
|
-
variant="ghost"
|
|
240
|
-
size="sm"
|
|
241
|
-
onClick={() => setEditing(false)}
|
|
242
|
-
className="text-zinc-400 hover:bg-white/5 h-9 text-xs"
|
|
243
|
-
>
|
|
244
|
-
Cancelar
|
|
245
|
-
</Button>
|
|
246
|
-
<Button
|
|
247
|
-
onClick={handleSave}
|
|
248
|
-
disabled={isLoading}
|
|
249
|
-
className="bg-blue-600 hover:bg-blue-500 text-white shadow-lg shadow-blue-600/20 gap-2 h-9 text-xs px-6"
|
|
250
|
-
>
|
|
251
|
-
{isLoading ? <Loader2 className="h-4 w-4 animate-spin" /> : <Save className="h-4 w-4" />}
|
|
252
|
-
Guardar cambios
|
|
253
|
-
</Button>
|
|
254
|
-
</div>
|
|
255
|
-
</div>
|
|
256
|
-
</div>
|
|
257
|
-
)}
|
|
258
|
-
|
|
259
|
-
</div>
|
|
260
|
-
);
|
|
261
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { ScrollArea } from "@/components/ui/scroll-area";
|
|
2
|
-
import type { AgentActivity } from "@/types";
|
|
3
|
-
|
|
4
|
-
interface AgentActivityLogProps {
|
|
5
|
-
activities: AgentActivity[];
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export function AgentActivityLog({ activities }: AgentActivityLogProps) {
|
|
9
|
-
if (activities.length === 0) {
|
|
10
|
-
return <p className="text-sm text-muted-foreground">Sin actividad reciente</p>;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
return (
|
|
14
|
-
<ScrollArea className="h-60">
|
|
15
|
-
<div className="space-y-2">
|
|
16
|
-
{activities.map((activity) => (
|
|
17
|
-
<div key={activity.id} className="rounded-md border px-3 py-2 text-xs">
|
|
18
|
-
<span className="font-medium">{activity.action}</span>
|
|
19
|
-
<span className="ml-2 text-muted-foreground">{activity.details}</span>
|
|
20
|
-
</div>
|
|
21
|
-
))}
|
|
22
|
-
</div>
|
|
23
|
-
</ScrollArea>
|
|
24
|
-
);
|
|
25
|
-
}
|
|
@@ -1,305 +0,0 @@
|
|
|
1
|
-
import { AgentStatusBadge } from "./AgentStatusBadge";
|
|
2
|
-
import type { Agent } from "@/types";
|
|
3
|
-
import { useNavigate } from "react-router-dom";
|
|
4
|
-
import {
|
|
5
|
-
Cpu,
|
|
6
|
-
MoreVertical,
|
|
7
|
-
Edit2,
|
|
8
|
-
Trash2,
|
|
9
|
-
Shield,
|
|
10
|
-
Activity,
|
|
11
|
-
FileText,
|
|
12
|
-
Wrench,
|
|
13
|
-
Zap,
|
|
14
|
-
Gauge,
|
|
15
|
-
Lock,
|
|
16
|
-
GitBranch,
|
|
17
|
-
Calendar,
|
|
18
|
-
FolderOpen
|
|
19
|
-
} from "lucide-react";
|
|
20
|
-
import {
|
|
21
|
-
DropdownMenu,
|
|
22
|
-
DropdownMenuContent,
|
|
23
|
-
DropdownMenuItem,
|
|
24
|
-
DropdownMenuTrigger,
|
|
25
|
-
} from "@/components/ui/dropdown-menu";
|
|
26
|
-
import { Button } from "@/components/ui/button";
|
|
27
|
-
import { useAgents, useProviders, useModels } from "@/stores/useGlobalConfigStore";
|
|
28
|
-
import { swal } from "@/lib/swal";
|
|
29
|
-
import { format } from "date-fns";
|
|
30
|
-
import { es } from "date-fns/locale";
|
|
31
|
-
|
|
32
|
-
interface AgentCardProps {
|
|
33
|
-
agent: Agent;
|
|
34
|
-
onEdit?: (agent: Agent) => void;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export function AgentCard({ agent, onEdit }: AgentCardProps) {
|
|
38
|
-
const navigate = useNavigate();
|
|
39
|
-
const { deleteAgent } = useAgents();
|
|
40
|
-
const { providers } = useProviders();
|
|
41
|
-
const { models } = useModels();
|
|
42
|
-
|
|
43
|
-
const handleCardClick = (e: React.MouseEvent) => {
|
|
44
|
-
if ((e.target as HTMLElement).closest('[role="menuitem"]') || (e.target as HTMLElement).closest('button')) {
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
navigate(`/agents/${agent.id}`);
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
const handleDelete = async (e: React.MouseEvent) => {
|
|
51
|
-
e.stopPropagation();
|
|
52
|
-
const result = await swal.fire({
|
|
53
|
-
title: "¿Eliminar Agente?",
|
|
54
|
-
text: `¿Estás seguro de que deseas eliminar al agente "${agent.name}"? Esta acción eliminará permanentemente su configuración.`,
|
|
55
|
-
icon: "warning",
|
|
56
|
-
showCancelButton: true,
|
|
57
|
-
confirmButtonText: "Sí, eliminar",
|
|
58
|
-
cancelButtonText: "Cancelar",
|
|
59
|
-
reverseButtons: true,
|
|
60
|
-
background: "#09090b",
|
|
61
|
-
color: "#fff",
|
|
62
|
-
customClass: {
|
|
63
|
-
popup: "border border-white/10 rounded-xl",
|
|
64
|
-
confirmButton: "bg-red-500 hover:bg-red-600 text-white",
|
|
65
|
-
cancelButton: "bg-white/10 hover:bg-white/20 text-white"
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
if (result.isConfirmed) {
|
|
69
|
-
try { await deleteAgent(agent.id); } catch (err) { console.error(err); }
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
const isCoordinator = agent.role === 'coordinator';
|
|
74
|
-
const providerId = agent.provider_id || agent.providerId;
|
|
75
|
-
const modelId = agent.model_id || agent.modelId;
|
|
76
|
-
const providerName = providers.find(p => p.id === providerId)?.name || providerId;
|
|
77
|
-
const modelName = models.find(m => m.id === modelId)?.name || modelId;
|
|
78
|
-
const displayStatus = agent.enabled ? agent.status : "hibernated";
|
|
79
|
-
|
|
80
|
-
// Parse tools and skills from JSON
|
|
81
|
-
const tools = agent.toolsJson ? JSON.parse(agent.toolsJson) as any[] : [];
|
|
82
|
-
const skills = agent.skillsJson ? JSON.parse(agent.skillsJson) as any[] : [];
|
|
83
|
-
const toolsCount = tools.length || 0;
|
|
84
|
-
const skillsCount = skills.length || 0;
|
|
85
|
-
const hasSystemPrompt = !!agent.systemPrompt;
|
|
86
|
-
const maxIterations = agent.maxIterations || 10;
|
|
87
|
-
|
|
88
|
-
const formatDate = (val?: string | number) => {
|
|
89
|
-
if (!val) return null;
|
|
90
|
-
try {
|
|
91
|
-
return format(new Date(val), "dd MMM yyyy", { locale: es });
|
|
92
|
-
} catch (e) {
|
|
93
|
-
return null;
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
const createdAt = formatDate(agent.created_at || agent.createdAt);
|
|
98
|
-
|
|
99
|
-
return (
|
|
100
|
-
<div
|
|
101
|
-
role="button"
|
|
102
|
-
tabIndex={0}
|
|
103
|
-
className={`group relative overflow-hidden rounded-2xl border bg-black/40 backdrop-blur-xl transition-all duration-500 cursor-pointer flex flex-col h-full
|
|
104
|
-
${agent.enabled
|
|
105
|
-
? "border-white/10 hover:border-blue-500/50 hover:bg-white/[0.03] hover:shadow-[0_0_30px_rgba(59,130,246,0.15)]"
|
|
106
|
-
: "border-white/5 opacity-70 grayscale hover:grayscale-0"}
|
|
107
|
-
`}
|
|
108
|
-
onClick={handleCardClick}
|
|
109
|
-
onKeyDown={(e) => { if (e.key === "Enter" || e.key === " ") navigate(`/agents/${agent.id}`); }}
|
|
110
|
-
>
|
|
111
|
-
{/* Background Gradient Effect */}
|
|
112
|
-
{agent.enabled && (
|
|
113
|
-
<div className="absolute inset-0 bg-gradient-to-br from-blue-500/10 via-transparent to-purple-500/10 opacity-0 transition-opacity duration-500 group-hover:opacity-100 pointer-events-none" />
|
|
114
|
-
)}
|
|
115
|
-
|
|
116
|
-
{/* Top subtle glow */}
|
|
117
|
-
{agent.enabled && (
|
|
118
|
-
<div className="absolute -top-px left-10 right-10 h-px bg-gradient-to-r from-transparent via-blue-500/50 to-transparent opacity-0 transition-opacity duration-500 group-hover:opacity-100" />
|
|
119
|
-
)}
|
|
120
|
-
|
|
121
|
-
<div className="p-5 flex flex-col flex-1 relative z-10">
|
|
122
|
-
<div className="flex items-start justify-between gap-4">
|
|
123
|
-
{/* Name + Description */}
|
|
124
|
-
<div className="flex-1 min-w-0">
|
|
125
|
-
<div className="flex items-center gap-2 mb-1">
|
|
126
|
-
<h3 className={`text-lg font-bold tracking-tight transition-colors truncate ${agent.enabled ? "text-white/95 group-hover:text-blue-400" : "text-white/40"}`}>
|
|
127
|
-
{agent.name}
|
|
128
|
-
</h3>
|
|
129
|
-
{isCoordinator && (
|
|
130
|
-
<span title="Coordinador: Habilita gestión de sub-tareas" className="flex items-center justify-center p-1 rounded-md bg-purple-500/10 border border-purple-500/20">
|
|
131
|
-
<Shield className="h-3.5 w-3.5 text-purple-400" />
|
|
132
|
-
</span>
|
|
133
|
-
)}
|
|
134
|
-
{agent.hasHeaders && (
|
|
135
|
-
<span title="Credenciales Mapeadas" className="flex items-center justify-center p-1 rounded-md bg-emerald-500/10 border border-emerald-500/20">
|
|
136
|
-
<Lock className="h-3.5 w-3.5 text-emerald-400" />
|
|
137
|
-
</span>
|
|
138
|
-
)}
|
|
139
|
-
{agent.parentId && (
|
|
140
|
-
<span title="Sub-agente" className="flex items-center justify-center p-1 rounded-md bg-amber-500/10 border border-amber-500/20">
|
|
141
|
-
<GitBranch className="h-3.5 w-3.5 text-amber-400" />
|
|
142
|
-
</span>
|
|
143
|
-
)}
|
|
144
|
-
</div>
|
|
145
|
-
<p className="text-xs text-white/50 line-clamp-2 leading-relaxed h-8 font-light">
|
|
146
|
-
{agent.description || "Sin descripción"}
|
|
147
|
-
</p>
|
|
148
|
-
</div>
|
|
149
|
-
|
|
150
|
-
{/* Status + Actions */}
|
|
151
|
-
<div className="flex flex-col items-end gap-2 shrink-0">
|
|
152
|
-
<AgentStatusBadge status={displayStatus} />
|
|
153
|
-
<DropdownMenu>
|
|
154
|
-
<DropdownMenuTrigger asChild>
|
|
155
|
-
<Button variant="ghost" size="icon" className="h-8 w-8 text-white/40 hover:text-white hover:bg-white/10 rounded-full transition-colors">
|
|
156
|
-
<MoreVertical className="h-4 w-4" />
|
|
157
|
-
</Button>
|
|
158
|
-
</DropdownMenuTrigger>
|
|
159
|
-
<DropdownMenuContent align="end" className="w-48 bg-black/90 backdrop-blur-xl border-white/10 text-white p-1 rounded-xl shadow-2xl">
|
|
160
|
-
<DropdownMenuItem onClick={() => onEdit?.(agent)} className="gap-2 cursor-pointer focus:bg-white/10 focus:text-white rounded-lg px-3 py-2 text-sm transition-colors">
|
|
161
|
-
<Edit2 className="h-4 w-4 text-blue-400" />
|
|
162
|
-
<span>Editar Configuración</span>
|
|
163
|
-
</DropdownMenuItem>
|
|
164
|
-
<DropdownMenuItem onClick={handleDelete} className="gap-2 cursor-pointer focus:bg-red-500/20 focus:text-red-400 rounded-lg px-3 py-2 text-sm text-red-400 transition-colors">
|
|
165
|
-
<Trash2 className="h-4 w-4" />
|
|
166
|
-
<span>Eliminar Agente</span>
|
|
167
|
-
</DropdownMenuItem>
|
|
168
|
-
</DropdownMenuContent>
|
|
169
|
-
</DropdownMenu>
|
|
170
|
-
</div>
|
|
171
|
-
</div>
|
|
172
|
-
|
|
173
|
-
{/* Tags */}
|
|
174
|
-
<div className="mt-5 flex flex-wrap gap-2">
|
|
175
|
-
{providerId && (
|
|
176
|
-
<div className={`px-2.5 py-1 rounded-md text-[10px] font-medium uppercase tracking-wider flex items-center gap-1.5 border backdrop-blur-md transition-colors
|
|
177
|
-
${agent.enabled ? "bg-white/5 border-white/10 text-white/80 group-hover:bg-white/10 group-hover:border-white/20" : "bg-transparent border-white/5 text-white/30"}`}>
|
|
178
|
-
<Cpu className="h-3 w-3" />
|
|
179
|
-
{providerName}
|
|
180
|
-
</div>
|
|
181
|
-
)}
|
|
182
|
-
{modelId && (
|
|
183
|
-
<div className={`px-2.5 py-1 rounded-md text-[10px] font-medium tracking-wider border backdrop-blur-md transition-colors truncate max-w-[120px]
|
|
184
|
-
${agent.enabled ? "bg-white/5 border-white/10 text-white/80 group-hover:bg-white/10 group-hover:border-white/20" : "bg-transparent border-white/5 text-white/30"}`}
|
|
185
|
-
title={modelName}>
|
|
186
|
-
{modelName}
|
|
187
|
-
</div>
|
|
188
|
-
)}
|
|
189
|
-
{agent.tone && (
|
|
190
|
-
<div className={`px-2.5 py-1 rounded-md text-[10px] font-medium uppercase tracking-wider flex items-center gap-1.5 border backdrop-blur-md transition-colors
|
|
191
|
-
${agent.enabled ? "bg-white/5 border-white/10 text-white/80 group-hover:bg-white/10 group-hover:border-white/20" : "bg-transparent border-white/5 text-white/30"}`}>
|
|
192
|
-
<Activity className="h-3 w-3" />
|
|
193
|
-
{agent.tone}
|
|
194
|
-
</div>
|
|
195
|
-
)}
|
|
196
|
-
{agent.workspace && (
|
|
197
|
-
<div className={`px-2.5 py-1 rounded-md text-[10px] font-medium uppercase tracking-wider flex items-center gap-1.5 border backdrop-blur-md transition-colors
|
|
198
|
-
${agent.enabled ? "bg-emerald-500/5 border-emerald-500/20 text-emerald-300 group-hover:bg-emerald-500/10 group-hover:border-emerald-500/30" : "bg-transparent border-white/5 text-white/30"}`}
|
|
199
|
-
title={`Workspace: ${agent.workspace}`}>
|
|
200
|
-
<FolderOpen className="h-3 w-3" />
|
|
201
|
-
<span className="truncate max-w-[100px]">Workspace</span>
|
|
202
|
-
</div>
|
|
203
|
-
)}
|
|
204
|
-
</div>
|
|
205
|
-
|
|
206
|
-
{/* Dynamic configuration stats based on availability */}
|
|
207
|
-
<div className="mt-6 pt-5 border-t border-white/5 grid grid-cols-4 gap-2">
|
|
208
|
-
<div className="flex flex-col gap-1 items-start bg-white/[0.02] rounded-lg p-2.5 border border-white/5 group-hover:border-white/10 transition-colors">
|
|
209
|
-
<span className="text-[10px] font-medium uppercase tracking-wider text-white/40 flex items-center gap-1.5">
|
|
210
|
-
<Wrench className="h-3 w-3 text-emerald-400/70" />
|
|
211
|
-
Tools
|
|
212
|
-
</span>
|
|
213
|
-
<span className={`text-sm font-semibold font-mono ${agent.enabled ? "text-white/90" : "text-white/30"}`}>
|
|
214
|
-
{toolsCount}
|
|
215
|
-
</span>
|
|
216
|
-
</div>
|
|
217
|
-
<div className="flex flex-col gap-1 items-start bg-white/[0.02] rounded-lg p-2.5 border border-white/5 group-hover:border-white/10 transition-colors">
|
|
218
|
-
<span className="text-[10px] font-medium uppercase tracking-wider text-white/40 flex items-center gap-1.5">
|
|
219
|
-
<Zap className="h-3 w-3 text-amber-400/70" />
|
|
220
|
-
Skills
|
|
221
|
-
</span>
|
|
222
|
-
<span className={`text-sm font-semibold font-mono ${agent.enabled ? "text-white/90" : "text-white/30"}`}>
|
|
223
|
-
{skillsCount}
|
|
224
|
-
</span>
|
|
225
|
-
</div>
|
|
226
|
-
<div className="flex flex-col gap-1 items-start bg-white/[0.02] rounded-lg p-2.5 border border-white/5 group-hover:border-white/10 transition-colors">
|
|
227
|
-
<span className="text-[10px] font-medium uppercase tracking-wider text-white/40 flex items-center gap-1.5">
|
|
228
|
-
<FileText className="h-3 w-3 text-blue-400/70" />
|
|
229
|
-
Prompt
|
|
230
|
-
</span>
|
|
231
|
-
<span className={`text-sm font-bold ${agent.enabled ? (hasSystemPrompt ? "text-emerald-400" : "text-white/30") : "text-white/20"}`}>
|
|
232
|
-
{hasSystemPrompt ? "✓" : "—"}
|
|
233
|
-
</span>
|
|
234
|
-
</div>
|
|
235
|
-
<div className="flex flex-col gap-1 items-start bg-white/[0.02] rounded-lg p-2.5 border border-white/5 group-hover:border-white/10 transition-colors">
|
|
236
|
-
<span className="text-[10px] font-medium uppercase tracking-wider text-white/40 flex items-center gap-1.5">
|
|
237
|
-
<Gauge className="h-3 w-3 text-purple-400/70" />
|
|
238
|
-
Iters
|
|
239
|
-
</span>
|
|
240
|
-
<span className={`text-sm font-semibold font-mono ${agent.enabled ? "text-white/90" : "text-white/30"}`}>
|
|
241
|
-
{maxIterations}
|
|
242
|
-
</span>
|
|
243
|
-
</div>
|
|
244
|
-
</div>
|
|
245
|
-
|
|
246
|
-
{/* System Prompt */}
|
|
247
|
-
{agent.systemPrompt && (
|
|
248
|
-
<div className="mt-3 bg-white/[0.02] rounded-lg p-3 border border-white/5 group-hover:border-white/10 transition-colors">
|
|
249
|
-
<span className="text-[10px] font-medium tracking-wider text-white/40 uppercase mb-1.5 flex items-center gap-1.5">
|
|
250
|
-
<FileText className="h-3 w-3 text-blue-400/70" />
|
|
251
|
-
System Prompt
|
|
252
|
-
</span>
|
|
253
|
-
<p className="text-xs text-white/60 font-mono line-clamp-2 leading-relaxed italic">
|
|
254
|
-
"{agent.systemPrompt}"
|
|
255
|
-
</p>
|
|
256
|
-
</div>
|
|
257
|
-
)}
|
|
258
|
-
|
|
259
|
-
{/* Extended Stats */}
|
|
260
|
-
<div className="mt-3 grid grid-cols-2 gap-2">
|
|
261
|
-
<div className="flex items-center justify-between bg-white/[0.02] rounded-lg p-2.5 border border-white/5 group-hover:border-white/10 transition-colors">
|
|
262
|
-
<span className="text-[10px] font-medium tracking-wider text-white/40 uppercase">
|
|
263
|
-
Tareas
|
|
264
|
-
</span>
|
|
265
|
-
<span className={`text-sm font-semibold font-mono ${agent.enabled ? "text-white/90" : "text-white/30"}`}>
|
|
266
|
-
{agent.taskCount || 0}
|
|
267
|
-
</span>
|
|
268
|
-
</div>
|
|
269
|
-
<div className="flex items-center justify-between bg-white/[0.02] rounded-lg p-2.5 border border-white/5 group-hover:border-white/10 transition-colors">
|
|
270
|
-
<span className="text-[10px] font-medium tracking-wider text-white/40 uppercase">
|
|
271
|
-
Éxito
|
|
272
|
-
</span>
|
|
273
|
-
<span className={`text-sm font-semibold font-mono ${agent.enabled ? "text-emerald-400/90" : "text-white/30"}`}>
|
|
274
|
-
{agent.successRate || 0}%
|
|
275
|
-
</span>
|
|
276
|
-
</div>
|
|
277
|
-
</div>
|
|
278
|
-
|
|
279
|
-
{/* Footer: status indicator + Dates */}
|
|
280
|
-
<div className="mt-auto pt-5 flex items-center justify-between">
|
|
281
|
-
<div className="flex items-center gap-3">
|
|
282
|
-
<div className="flex items-center gap-2">
|
|
283
|
-
<div className={`h-2 w-2 rounded-full ${agent.enabled ? "bg-blue-400 shadow-[0_0_8px_rgba(96,165,250,0.8)] animate-pulse" : "bg-white/20"}`} />
|
|
284
|
-
<span className={`text-[10px] font-bold tracking-widest uppercase ${agent.enabled ? "text-blue-400" : "text-white/30"}`}>
|
|
285
|
-
{agent.enabled ? "ACTIVO" : "INACTIVO"}
|
|
286
|
-
</span>
|
|
287
|
-
</div>
|
|
288
|
-
{createdAt && (
|
|
289
|
-
<div className="flex items-center gap-1.5 text-[10px] text-white/30 font-medium tracking-wider pl-3 border-l border-white/10">
|
|
290
|
-
<Calendar className="h-3 w-3" />
|
|
291
|
-
{createdAt}
|
|
292
|
-
</div>
|
|
293
|
-
)}
|
|
294
|
-
</div>
|
|
295
|
-
|
|
296
|
-
<div className={`text-xs font-semibold tracking-wide flex items-center gap-1.5 transition-all
|
|
297
|
-
${agent.enabled ? "text-white/70 group-hover:text-blue-400 translate-x-1 group-hover:translate-x-0" : "text-white/20"}`}>
|
|
298
|
-
INGRESAR
|
|
299
|
-
<span className="transition-transform group-hover:translate-x-1 opacity-0 group-hover:opacity-100 hidden sm:inline-block">→</span>
|
|
300
|
-
</div>
|
|
301
|
-
</div>
|
|
302
|
-
</div>
|
|
303
|
-
</div>
|
|
304
|
-
);
|
|
305
|
-
}
|