@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,524 +0,0 @@
|
|
|
1
|
-
import { useState, useEffect } from "react";
|
|
2
|
-
import { User, Save, Loader2, type LucideProps, Cpu, Sparkles, Shield, Activity, Globe, FolderOpen, ExternalLink, Check, AlertCircle } from "lucide-react";
|
|
3
|
-
import { useAgents, useProviders, useModels } from "@/stores/useGlobalConfigStore";
|
|
4
|
-
import { apiClient } from "@/lib/api";
|
|
5
|
-
import { Button } from "@/components/ui/button";
|
|
6
|
-
import { Input } from "@/components/ui/input";
|
|
7
|
-
import { Label } from "@/components/ui/label";
|
|
8
|
-
import { Textarea } from "@/components/ui/textarea";
|
|
9
|
-
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select";
|
|
10
|
-
import { Switch } from "@/components/ui/switch";
|
|
11
|
-
import { Badge } from "@/components/ui/badge";
|
|
12
|
-
import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger, DialogFooter, DialogClose } from "@/components/ui/dialog";
|
|
13
|
-
import { Toast } from "@/lib/swal";
|
|
14
|
-
import { loader } from "@/stores/useLoaderStore";
|
|
15
|
-
import type { Agent } from "@/types";
|
|
16
|
-
import { cn } from "@/lib/utils";
|
|
17
|
-
|
|
18
|
-
// Wrapper to fix React 19 + Lucide type compatibility
|
|
19
|
-
function Icon({ icon: IconComponent, ...props }: { icon: React.ComponentType<LucideProps> } & LucideProps) {
|
|
20
|
-
return <IconComponent {...props} />;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
interface AgentDetailsEditorProps {
|
|
24
|
-
agentId: string;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export function AgentDetailsEditor({ agentId }: AgentDetailsEditorProps) {
|
|
28
|
-
const { agents, updateAgent, fetchAgents } = useAgents();
|
|
29
|
-
const { providers, fetchProviders } = useProviders();
|
|
30
|
-
const { models, fetchModels } = useModels();
|
|
31
|
-
|
|
32
|
-
useEffect(() => {
|
|
33
|
-
fetchAgents();
|
|
34
|
-
fetchProviders();
|
|
35
|
-
fetchModels();
|
|
36
|
-
}, [fetchAgents, fetchProviders, fetchModels]);
|
|
37
|
-
|
|
38
|
-
const agent = agents.find(a => a.id === agentId);
|
|
39
|
-
|
|
40
|
-
const [formData, setFormData] = useState({
|
|
41
|
-
name: "",
|
|
42
|
-
description: "",
|
|
43
|
-
provider_id: "",
|
|
44
|
-
model_id: "",
|
|
45
|
-
tone: "",
|
|
46
|
-
role: "coordinator" as "coordinator" | "worker",
|
|
47
|
-
enabled: true,
|
|
48
|
-
headers: "",
|
|
49
|
-
systemPrompt: "",
|
|
50
|
-
workspace: "",
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
const [workspaceValidation, setWorkspaceValidation] = useState<{
|
|
54
|
-
isValidating: boolean;
|
|
55
|
-
exists: boolean;
|
|
56
|
-
accessible: boolean;
|
|
57
|
-
error?: string;
|
|
58
|
-
message?: string;
|
|
59
|
-
}>({ isValidating: false, exists: false, accessible: false });
|
|
60
|
-
|
|
61
|
-
useEffect(() => {
|
|
62
|
-
if (agent) {
|
|
63
|
-
setFormData({
|
|
64
|
-
name: agent.name || "",
|
|
65
|
-
description: agent.description || "",
|
|
66
|
-
provider_id: agent.provider_id || "",
|
|
67
|
-
model_id: agent.model_id || "",
|
|
68
|
-
tone: agent.tone || "",
|
|
69
|
-
role: agent.role || "coordinator",
|
|
70
|
-
enabled: !!agent.enabled,
|
|
71
|
-
headers: "",
|
|
72
|
-
systemPrompt: agent.systemPrompt || "",
|
|
73
|
-
workspace: agent.workspace || "",
|
|
74
|
-
});
|
|
75
|
-
// Validar workspace inicial si existe
|
|
76
|
-
if (agent.workspace) {
|
|
77
|
-
validateWorkspace(agent.workspace);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}, [agent]);
|
|
81
|
-
|
|
82
|
-
const validateWorkspace = async (path: string) => {
|
|
83
|
-
if (!path || path.trim() === "") {
|
|
84
|
-
setWorkspaceValidation({ isValidating: false, exists: false, accessible: false });
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
setWorkspaceValidation({ isValidating: true, exists: false, accessible: false });
|
|
89
|
-
|
|
90
|
-
try {
|
|
91
|
-
const response = await apiClient<{
|
|
92
|
-
exists: boolean;
|
|
93
|
-
accessible: boolean;
|
|
94
|
-
error?: string;
|
|
95
|
-
message?: string;
|
|
96
|
-
}>("/api/workspace/validate", {
|
|
97
|
-
method: "POST",
|
|
98
|
-
body: { path },
|
|
99
|
-
});
|
|
100
|
-
|
|
101
|
-
setWorkspaceValidation({
|
|
102
|
-
isValidating: false,
|
|
103
|
-
exists: response.exists,
|
|
104
|
-
accessible: response.accessible,
|
|
105
|
-
error: response.error,
|
|
106
|
-
message: response.message,
|
|
107
|
-
});
|
|
108
|
-
} catch (err) {
|
|
109
|
-
setWorkspaceValidation({
|
|
110
|
-
isValidating: false,
|
|
111
|
-
exists: false,
|
|
112
|
-
accessible: false,
|
|
113
|
-
error: (err as Error).message,
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
};
|
|
117
|
-
|
|
118
|
-
const handleCreateWorkspace = async () => {
|
|
119
|
-
if (!formData.workspace) return;
|
|
120
|
-
|
|
121
|
-
try {
|
|
122
|
-
await apiClient("/api/workspace/create", {
|
|
123
|
-
method: "POST",
|
|
124
|
-
body: { path: formData.workspace },
|
|
125
|
-
showLoader: "Creando directorio...",
|
|
126
|
-
showSuccess: "Directorio creado exitosamente",
|
|
127
|
-
});
|
|
128
|
-
|
|
129
|
-
await validateWorkspace(formData.workspace);
|
|
130
|
-
} catch (err) {
|
|
131
|
-
Toast.fire({ icon: "error", title: (err as Error).message });
|
|
132
|
-
}
|
|
133
|
-
};
|
|
134
|
-
|
|
135
|
-
const handleOpenWorkspace = async () => {
|
|
136
|
-
if (!formData.workspace) return;
|
|
137
|
-
|
|
138
|
-
try {
|
|
139
|
-
await apiClient(`/api/workspace/open?path=${encodeURIComponent(formData.workspace)}`, {
|
|
140
|
-
method: "GET",
|
|
141
|
-
});
|
|
142
|
-
} catch (err) {
|
|
143
|
-
Toast.fire({ icon: "error", title: (err as Error).message });
|
|
144
|
-
}
|
|
145
|
-
};
|
|
146
|
-
|
|
147
|
-
const handleSave = async () => {
|
|
148
|
-
loader.show("Sincronizando configuración del agente...");
|
|
149
|
-
try {
|
|
150
|
-
await updateAgent(agentId, {
|
|
151
|
-
...formData,
|
|
152
|
-
role: formData.role,
|
|
153
|
-
enabled: formData.enabled ? 1 : 0,
|
|
154
|
-
workspace: formData.workspace || null,
|
|
155
|
-
});
|
|
156
|
-
Toast.fire({ icon: "success", title: "Cambios sincronizados correctamente" });
|
|
157
|
-
} catch (err) {
|
|
158
|
-
Toast.fire({ icon: "error", title: err instanceof Error ? err.message : "Error al sincronizar cambios" });
|
|
159
|
-
} finally {
|
|
160
|
-
loader.hide();
|
|
161
|
-
}
|
|
162
|
-
};
|
|
163
|
-
|
|
164
|
-
if (!agent) {
|
|
165
|
-
return (
|
|
166
|
-
<div className="flex flex-col items-center justify-center p-12 text-center space-y-4 rounded-3xl border border-dashed border-white/10 bg-white/5">
|
|
167
|
-
<Icon icon={Activity as any} className="h-12 w-12 text-white/10 animate-pulse" />
|
|
168
|
-
<p className="text-white/40 font-medium">Buscando nodo en la colmena...</p>
|
|
169
|
-
</div>
|
|
170
|
-
);
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
// Providers disponibles: activos + tienen API key, o son locales (Ollama/localhost)
|
|
174
|
-
const activeProviders = providers.filter(p => {
|
|
175
|
-
if (!p.active) return false;
|
|
176
|
-
const baseUrl = p.base_url || p.baseUrl || "";
|
|
177
|
-
const isLocal = p.id === "ollama" || baseUrl.includes("localhost") || baseUrl.includes("127.0.0.1");
|
|
178
|
-
return p.has_api_key || isLocal;
|
|
179
|
-
});
|
|
180
|
-
|
|
181
|
-
// Modelos del provider seleccionado que estén activos o habilitados
|
|
182
|
-
const availableModels = models.filter(m => {
|
|
183
|
-
const pid = m.provider_id || m.providerId;
|
|
184
|
-
return pid === formData.provider_id && (m.active || m.enabled);
|
|
185
|
-
});
|
|
186
|
-
|
|
187
|
-
return (
|
|
188
|
-
<div className="space-y-8 animate-in fade-in slide-in-from-bottom-4 duration-500">
|
|
189
|
-
{/* Form Section */}
|
|
190
|
-
<div className="grid grid-cols-1 lg:grid-cols-3 gap-8">
|
|
191
|
-
{/* Identity Sidebar */}
|
|
192
|
-
<div className="lg:col-span-1 space-y-6">
|
|
193
|
-
<div className="p-6 rounded-3xl border border-white/10 bg-black/20 backdrop-blur-md space-y-6">
|
|
194
|
-
<div className="flex items-center gap-3">
|
|
195
|
-
<div className="p-2 rounded-xl bg-blue-500/10 border border-blue-500/20">
|
|
196
|
-
<Icon icon={User as any} className="h-4 w-4 text-blue-400" />
|
|
197
|
-
</div>
|
|
198
|
-
<h3 className="font-bold text-white uppercase tracking-wider text-xs">Identidad Base</h3>
|
|
199
|
-
</div>
|
|
200
|
-
|
|
201
|
-
<div className="space-y-4">
|
|
202
|
-
<div className="space-y-2">
|
|
203
|
-
<Label htmlFor="name" className="text-xs text-white/40 uppercase tracking-widest pl-1">Nombre Público</Label>
|
|
204
|
-
<Input
|
|
205
|
-
id="name"
|
|
206
|
-
value={formData.name}
|
|
207
|
-
onChange={(e) => setFormData(prev => ({ ...prev, name: e.target.value }))}
|
|
208
|
-
className="bg-white/5 border-white/10 focus:border-blue-500/50 rounded-xl h-11"
|
|
209
|
-
placeholder="Nombre del nodo"
|
|
210
|
-
/>
|
|
211
|
-
</div>
|
|
212
|
-
|
|
213
|
-
<div className="space-y-2">
|
|
214
|
-
<Label htmlFor="tone" className="text-xs text-white/40 uppercase tracking-widest pl-1">Tono Cognitivo</Label>
|
|
215
|
-
<Input
|
|
216
|
-
id="tone"
|
|
217
|
-
value={formData.tone}
|
|
218
|
-
onChange={(e) => setFormData(prev => ({ ...prev, tone: e.target.value }))}
|
|
219
|
-
className="bg-white/5 border-white/10 focus:border-blue-500/50 rounded-xl h-11"
|
|
220
|
-
placeholder="Ej: Analítico, Conciso..."
|
|
221
|
-
/>
|
|
222
|
-
</div>
|
|
223
|
-
</div>
|
|
224
|
-
</div>
|
|
225
|
-
|
|
226
|
-
<div className="p-6 rounded-3xl border border-white/10 bg-black/20 backdrop-blur-md space-y-6">
|
|
227
|
-
<div className="flex items-center gap-3">
|
|
228
|
-
<div className="p-2 rounded-xl bg-purple-500/10 border border-purple-500/20">
|
|
229
|
-
<Icon icon={Shield as any} className="h-4 w-4 text-purple-400" />
|
|
230
|
-
</div>
|
|
231
|
-
<h3 className="font-bold text-white uppercase tracking-wider text-xs">Permisos de Red</h3>
|
|
232
|
-
</div>
|
|
233
|
-
|
|
234
|
-
<div className="space-y-4">
|
|
235
|
-
<div className="flex items-center justify-between p-3 rounded-2xl bg-white/5 hover:bg-white/10 transition-colors">
|
|
236
|
-
<div className="space-y-0.5">
|
|
237
|
-
<Label className="text-sm font-semibold">Rol</Label>
|
|
238
|
-
<p className="text-[10px] text-white/30">Coordinador o Worker</p>
|
|
239
|
-
</div>
|
|
240
|
-
<Select
|
|
241
|
-
value={formData.role}
|
|
242
|
-
onValueChange={(val) => setFormData(prev => ({ ...prev, role: val as "coordinator" | "worker" }))}
|
|
243
|
-
>
|
|
244
|
-
<SelectTrigger className="w-[120px] bg-white/5 border-white/10 text-white">
|
|
245
|
-
<SelectValue />
|
|
246
|
-
</SelectTrigger>
|
|
247
|
-
<SelectContent className="bg-zinc-900 border-white/10">
|
|
248
|
-
<SelectItem value="coordinator">Coordinador</SelectItem>
|
|
249
|
-
<SelectItem value="worker">Worker</SelectItem>
|
|
250
|
-
</SelectContent>
|
|
251
|
-
</Select>
|
|
252
|
-
</div>
|
|
253
|
-
|
|
254
|
-
<div className="flex items-center justify-between p-3 rounded-2xl bg-white/5 hover:bg-white/10 transition-colors">
|
|
255
|
-
<div className="space-y-0.5">
|
|
256
|
-
<Label className="text-sm font-semibold">Nodo Activo</Label>
|
|
257
|
-
<p className="text-[10px] text-white/30">Disponible para la colmena</p>
|
|
258
|
-
</div>
|
|
259
|
-
<Switch
|
|
260
|
-
checked={formData.enabled}
|
|
261
|
-
onCheckedChange={(val) => setFormData(prev => ({ ...prev, enabled: val }))}
|
|
262
|
-
/>
|
|
263
|
-
</div>
|
|
264
|
-
</div>
|
|
265
|
-
</div>
|
|
266
|
-
|
|
267
|
-
{/* Workspace Configuration Panel */}
|
|
268
|
-
<div className="p-6 rounded-3xl border border-white/10 bg-black/20 backdrop-blur-md space-y-6">
|
|
269
|
-
<div className="flex items-center gap-3">
|
|
270
|
-
<div className="p-2 rounded-xl bg-emerald-500/10 border border-emerald-500/20">
|
|
271
|
-
<Icon icon={FolderOpen as any} className="h-4 w-4 text-emerald-400" />
|
|
272
|
-
</div>
|
|
273
|
-
<h3 className="font-bold text-white uppercase tracking-wider text-xs">Workspace Directory</h3>
|
|
274
|
-
</div>
|
|
275
|
-
|
|
276
|
-
<div className="space-y-4">
|
|
277
|
-
<div className="space-y-2">
|
|
278
|
-
<Label htmlFor="workspace" className="text-xs text-white/40 uppercase tracking-widest pl-1">
|
|
279
|
-
Directorio de Trabajo
|
|
280
|
-
</Label>
|
|
281
|
-
<div className="flex gap-2">
|
|
282
|
-
<Input
|
|
283
|
-
id="workspace"
|
|
284
|
-
value={formData.workspace}
|
|
285
|
-
onChange={(e) => {
|
|
286
|
-
setFormData(prev => ({ ...prev, workspace: e.target.value }));
|
|
287
|
-
validateWorkspace(e.target.value);
|
|
288
|
-
}}
|
|
289
|
-
className="bg-white/5 border-white/10 focus:border-emerald-500/50 rounded-xl h-11 font-mono text-sm flex-1"
|
|
290
|
-
placeholder="Ej: /home/user/proyectos, D:\Work"
|
|
291
|
-
/>
|
|
292
|
-
{formData.workspace && workspaceValidation.exists && workspaceValidation.accessible && (
|
|
293
|
-
<Button
|
|
294
|
-
type="button"
|
|
295
|
-
variant="outline"
|
|
296
|
-
size="icon"
|
|
297
|
-
onClick={handleOpenWorkspace}
|
|
298
|
-
className="shrink-0 border-emerald-500/30 text-emerald-400 hover:bg-emerald-500/10 h-11 w-11"
|
|
299
|
-
title="Abrir en el explorador"
|
|
300
|
-
>
|
|
301
|
-
<ExternalLink className="h-4 w-4" />
|
|
302
|
-
</Button>
|
|
303
|
-
)}
|
|
304
|
-
</div>
|
|
305
|
-
<p className="text-xs text-white/40 leading-relaxed">
|
|
306
|
-
Directorio donde el agente operará. Puede ser cualquier ubicación (disco, USB, red).
|
|
307
|
-
</p>
|
|
308
|
-
|
|
309
|
-
{/* Validation Status */}
|
|
310
|
-
{formData.workspace && formData.workspace.trim() !== "" && (
|
|
311
|
-
<div className={cn(
|
|
312
|
-
"flex items-center gap-2 text-xs p-2.5 rounded-lg border backdrop-blur-md transition-all",
|
|
313
|
-
workspaceValidation.isValidating && "bg-blue-500/10 border-blue-500/20 text-blue-400",
|
|
314
|
-
!workspaceValidation.isValidating && workspaceValidation.exists && workspaceValidation.accessible && "bg-emerald-500/10 border-emerald-500/20 text-emerald-400",
|
|
315
|
-
!workspaceValidation.isValidating && workspaceValidation.exists && !workspaceValidation.accessible && "bg-amber-500/10 border-amber-500/20 text-amber-400",
|
|
316
|
-
!workspaceValidation.isValidating && !workspaceValidation.exists && "bg-purple-500/10 border-purple-500/20 text-purple-400"
|
|
317
|
-
)}>
|
|
318
|
-
{workspaceValidation.isValidating && (
|
|
319
|
-
<>
|
|
320
|
-
<Loader2 className="h-3.5 w-3.5 animate-spin" />
|
|
321
|
-
<span>Validando directorio...</span>
|
|
322
|
-
</>
|
|
323
|
-
)}
|
|
324
|
-
{!workspaceValidation.isValidating && workspaceValidation.exists && workspaceValidation.accessible && (
|
|
325
|
-
<>
|
|
326
|
-
<Check className="h-3.5 w-3.5" />
|
|
327
|
-
<span>{workspaceValidation.message || "Directorio válido y accesible"}</span>
|
|
328
|
-
</>
|
|
329
|
-
)}
|
|
330
|
-
{!workspaceValidation.isValidating && workspaceValidation.exists && !workspaceValidation.accessible && (
|
|
331
|
-
<>
|
|
332
|
-
<AlertCircle className="h-3.5 w-3.5" />
|
|
333
|
-
<span>{workspaceValidation.message || "Sin permisos de lectura/escritura"}</span>
|
|
334
|
-
</>
|
|
335
|
-
)}
|
|
336
|
-
{!workspaceValidation.isValidating && !workspaceValidation.exists && (
|
|
337
|
-
<>
|
|
338
|
-
<FolderOpen className="h-3.5 w-3.5" />
|
|
339
|
-
<span>{workspaceValidation.message || "El directorio no existe"}</span>
|
|
340
|
-
{!workspaceValidation.error && (
|
|
341
|
-
<Button
|
|
342
|
-
type="button"
|
|
343
|
-
variant="outline"
|
|
344
|
-
size="sm"
|
|
345
|
-
onClick={handleCreateWorkspace}
|
|
346
|
-
className="ml-auto h-6 px-2 text-xs bg-purple-500/20 hover:bg-purple-500/30 text-purple-300 border-purple-500/30"
|
|
347
|
-
>
|
|
348
|
-
Crear
|
|
349
|
-
</Button>
|
|
350
|
-
)}
|
|
351
|
-
</>
|
|
352
|
-
)}
|
|
353
|
-
</div>
|
|
354
|
-
)}
|
|
355
|
-
</div>
|
|
356
|
-
</div>
|
|
357
|
-
</div>
|
|
358
|
-
</div>
|
|
359
|
-
|
|
360
|
-
{/* Cognitive Config */}
|
|
361
|
-
<div className="lg:col-span-2 space-y-6">
|
|
362
|
-
<div className="p-8 rounded-3xl border border-white/10 bg-black/20 backdrop-blur-md space-y-8">
|
|
363
|
-
<div className="flex items-center justify-between">
|
|
364
|
-
<div className="flex items-center gap-3">
|
|
365
|
-
<div className="p-2 rounded-xl bg-amber-500/10 border border-amber-500/20">
|
|
366
|
-
<Icon icon={Sparkles as any} className="h-4 w-4 text-amber-400" />
|
|
367
|
-
</div>
|
|
368
|
-
<h3 className="font-bold text-white uppercase tracking-wider text-xs">Configuración Cognitiva</h3>
|
|
369
|
-
</div>
|
|
370
|
-
|
|
371
|
-
<Button
|
|
372
|
-
onClick={handleSave}
|
|
373
|
-
className="bg-blue-600 hover:bg-blue-500 text-white font-bold rounded-xl px-6 shadow-[0_4px_15px_rgba(37,99,235,0.3)] transition-all active:scale-95 gap-2"
|
|
374
|
-
>
|
|
375
|
-
<Icon icon={Save as any} className="h-4 w-4" />
|
|
376
|
-
Sincronizar Cambios
|
|
377
|
-
</Button>
|
|
378
|
-
</div>
|
|
379
|
-
|
|
380
|
-
<div className="space-y-6">
|
|
381
|
-
<div className="space-y-2">
|
|
382
|
-
<Label htmlFor="description" className="text-xs text-white/40 uppercase tracking-widest pl-1">Directiva de Misión (Descripción)</Label>
|
|
383
|
-
<Textarea
|
|
384
|
-
id="description"
|
|
385
|
-
value={formData.description}
|
|
386
|
-
onChange={(e) => setFormData(prev => ({ ...prev, description: e.target.value }))}
|
|
387
|
-
className="bg-white/5 border-white/10 focus:border-blue-500/50 rounded-2xl min-h-[80px] resize-none"
|
|
388
|
-
placeholder="Define el propósito general de este nodo..."
|
|
389
|
-
/>
|
|
390
|
-
</div>
|
|
391
|
-
|
|
392
|
-
<div className="space-y-2">
|
|
393
|
-
<div className="flex items-center justify-between pl-1">
|
|
394
|
-
<Label className="text-xs text-white/40 uppercase tracking-widest">System Prompt (Markdown)</Label>
|
|
395
|
-
<Dialog>
|
|
396
|
-
<DialogTrigger asChild>
|
|
397
|
-
<Button type="button" variant="outline" size="sm" className="h-7 px-3 text-xs bg-blue-500/10 hover:bg-blue-500/20 text-blue-400 border-blue-500/30 transition-colors">
|
|
398
|
-
Modifica acá el System Prompt
|
|
399
|
-
</Button>
|
|
400
|
-
</DialogTrigger>
|
|
401
|
-
<DialogContent className="sm:max-w-3xl bg-[#0a0a0c] border-white/10 text-white shadow-2xl [&>button]:text-white/50 hover:[&>button]:text-white">
|
|
402
|
-
<DialogHeader>
|
|
403
|
-
<DialogTitle className="text-xl">Editar System Prompt</DialogTitle>
|
|
404
|
-
<p className="text-sm text-white/50">El comportamiento principal del agente. Se recomienda usar Markdown.</p>
|
|
405
|
-
</DialogHeader>
|
|
406
|
-
<div className="py-2">
|
|
407
|
-
<Textarea
|
|
408
|
-
value={formData.systemPrompt}
|
|
409
|
-
onChange={(e) => setFormData(prev => ({ ...prev, systemPrompt: e.target.value }))}
|
|
410
|
-
className="min-h-[400px] font-mono text-sm bg-black/40 border-white/10 text-white/90 focus-visible:ring-blue-500/50 resize-y"
|
|
411
|
-
placeholder="Escribe el system prompt detallado aquí..."
|
|
412
|
-
/>
|
|
413
|
-
</div>
|
|
414
|
-
<DialogFooter>
|
|
415
|
-
<DialogClose asChild>
|
|
416
|
-
<Button type="button" className="bg-blue-600 hover:bg-blue-500 text-white shadow-[0_0_15px_rgba(37,99,235,0.3)]">Listo</Button>
|
|
417
|
-
</DialogClose>
|
|
418
|
-
</DialogFooter>
|
|
419
|
-
</DialogContent>
|
|
420
|
-
</Dialog>
|
|
421
|
-
</div>
|
|
422
|
-
{formData.systemPrompt ? (
|
|
423
|
-
<div className="bg-white/[0.02] border border-white/5 rounded-2xl p-4 max-h-[120px] overflow-y-auto custom-scrollbar">
|
|
424
|
-
<p className="text-xs text-white/60 font-mono whitespace-pre-wrap italic">
|
|
425
|
-
{formData.systemPrompt}
|
|
426
|
-
</p>
|
|
427
|
-
</div>
|
|
428
|
-
) : (
|
|
429
|
-
<div className="bg-white/[0.02] border border-white/5 rounded-2xl p-4">
|
|
430
|
-
<p className="text-xs text-white/30 italic">Sin system prompt configurado...</p>
|
|
431
|
-
</div>
|
|
432
|
-
)}
|
|
433
|
-
</div>
|
|
434
|
-
|
|
435
|
-
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
|
|
436
|
-
{/* Provider selector */}
|
|
437
|
-
<div className="space-y-2">
|
|
438
|
-
<div className="flex items-center justify-between pl-1">
|
|
439
|
-
<Label className="text-xs text-white/40 uppercase tracking-widest">Proveedor</Label>
|
|
440
|
-
{activeProviders.length === 0 && (
|
|
441
|
-
<span className="text-[10px] text-amber-400/80">Sin providers activos</span>
|
|
442
|
-
)}
|
|
443
|
-
</div>
|
|
444
|
-
<Select
|
|
445
|
-
value={formData.provider_id}
|
|
446
|
-
onValueChange={(val) => setFormData(prev => ({ ...prev, provider_id: val, model_id: "" }))}
|
|
447
|
-
>
|
|
448
|
-
<SelectTrigger className="bg-white/5 border-white/10 rounded-xl h-11">
|
|
449
|
-
<SelectValue placeholder="Seleccionar proveedor" />
|
|
450
|
-
</SelectTrigger>
|
|
451
|
-
<SelectContent className="bg-zinc-900 border-white/10 text-white">
|
|
452
|
-
{activeProviders.length === 0 && (
|
|
453
|
-
<div className="px-3 py-4 text-center text-xs text-white/30">
|
|
454
|
-
Activa al menos un provider en la sección de Providers
|
|
455
|
-
</div>
|
|
456
|
-
)}
|
|
457
|
-
{activeProviders.map(p => {
|
|
458
|
-
const baseUrl = p.base_url || p.baseUrl || "";
|
|
459
|
-
const isLocal = p.id === "ollama" || baseUrl.includes("localhost") || baseUrl.includes("127.0.0.1");
|
|
460
|
-
return (
|
|
461
|
-
<SelectItem key={p.id} value={p.id}>
|
|
462
|
-
<div className="flex items-center gap-2">
|
|
463
|
-
<span>{p.name}</span>
|
|
464
|
-
<span className={`text-[9px] font-bold px-1.5 py-0.5 rounded-full ${isLocal
|
|
465
|
-
? "bg-amber-500/20 text-amber-400"
|
|
466
|
-
: "bg-emerald-500/20 text-emerald-400"
|
|
467
|
-
}`}>
|
|
468
|
-
{isLocal ? "LOCAL" : "API"}
|
|
469
|
-
</span>
|
|
470
|
-
</div>
|
|
471
|
-
</SelectItem>
|
|
472
|
-
);
|
|
473
|
-
})}
|
|
474
|
-
</SelectContent>
|
|
475
|
-
</Select>
|
|
476
|
-
</div>
|
|
477
|
-
|
|
478
|
-
{/* Model selector */}
|
|
479
|
-
<div className="space-y-2">
|
|
480
|
-
<div className="flex items-center justify-between pl-1">
|
|
481
|
-
<Label className="text-xs text-white/40 uppercase tracking-widest">Modelo</Label>
|
|
482
|
-
{formData.provider_id && availableModels.length === 0 && (
|
|
483
|
-
<span className="text-[10px] text-amber-400/80">Sin modelos activos</span>
|
|
484
|
-
)}
|
|
485
|
-
</div>
|
|
486
|
-
<Select
|
|
487
|
-
value={formData.model_id}
|
|
488
|
-
onValueChange={(val) => setFormData(prev => ({ ...prev, model_id: val }))}
|
|
489
|
-
disabled={!formData.provider_id || availableModels.length === 0}
|
|
490
|
-
>
|
|
491
|
-
<SelectTrigger className="bg-white/5 border-white/10 rounded-xl h-11 disabled:opacity-50">
|
|
492
|
-
<SelectValue placeholder={
|
|
493
|
-
!formData.provider_id
|
|
494
|
-
? "Primero selecciona un proveedor"
|
|
495
|
-
: availableModels.length === 0
|
|
496
|
-
? "Activa modelos en el provider"
|
|
497
|
-
: "Seleccionar modelo"
|
|
498
|
-
} />
|
|
499
|
-
</SelectTrigger>
|
|
500
|
-
<SelectContent className="bg-zinc-900 border-white/10 text-white">
|
|
501
|
-
{availableModels.map(m => (
|
|
502
|
-
<SelectItem key={m.id} value={m.id}>
|
|
503
|
-
<span className="font-mono text-sm">{m.name}</span>
|
|
504
|
-
</SelectItem>
|
|
505
|
-
))}
|
|
506
|
-
</SelectContent>
|
|
507
|
-
</Select>
|
|
508
|
-
</div>
|
|
509
|
-
</div>
|
|
510
|
-
</div>
|
|
511
|
-
|
|
512
|
-
{/* Security Notice */}
|
|
513
|
-
<div className="mt-8 p-4 rounded-2xl bg-white/[0.03] border border-white/5 flex items-start gap-4 italic">
|
|
514
|
-
<Icon icon={Globe as any} className="h-5 w-5 text-white/20 mt-0.5" />
|
|
515
|
-
<p className="text-[11px] text-white/30 leading-relaxed">
|
|
516
|
-
Las credenciales de acceso y llaves de cifrado para los headers personalizados se gestionan en una capa segura y no son visibles en texto plano para mantener la integridad de la red.
|
|
517
|
-
</p>
|
|
518
|
-
</div>
|
|
519
|
-
</div>
|
|
520
|
-
</div>
|
|
521
|
-
</div>
|
|
522
|
-
</div>
|
|
523
|
-
);
|
|
524
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
|
|
2
|
-
import { AlertTriangle } from "lucide-react";
|
|
3
|
-
|
|
4
|
-
export function EthicsConflictDetector() {
|
|
5
|
-
return (
|
|
6
|
-
<Card>
|
|
7
|
-
<CardHeader className="pb-2">
|
|
8
|
-
<CardTitle className="flex items-center gap-2 text-sm">
|
|
9
|
-
<AlertTriangle className="h-4 w-4 text-yellow-500" />
|
|
10
|
-
Detector de conflictos SOUL ↔ ETHICS
|
|
11
|
-
</CardTitle>
|
|
12
|
-
</CardHeader>
|
|
13
|
-
<CardContent>
|
|
14
|
-
<p className="text-xs text-muted-foreground">No se detectaron conflictos</p>
|
|
15
|
-
</CardContent>
|
|
16
|
-
</Card>
|
|
17
|
-
);
|
|
18
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { ShieldAlert } from "lucide-react";
|
|
2
|
-
import { ConfigEditorLayout } from "../shared/ConfigEditorLayout";
|
|
3
|
-
import { MarkdownEditor } from "../shared/MarkdownEditor";
|
|
4
|
-
import { useState } from "react";
|
|
5
|
-
|
|
6
|
-
interface EthicsEditorProps {
|
|
7
|
-
agentId: string;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export function EthicsEditor({ agentId }: EthicsEditorProps) {
|
|
11
|
-
const [content, setContent] = useState("");
|
|
12
|
-
|
|
13
|
-
return (
|
|
14
|
-
<ConfigEditorLayout title="ETHICS.md — Límites éticos" icon={<ShieldAlert className="h-4 w-4 text-destructive" />}>
|
|
15
|
-
<MarkdownEditor value={content} onChange={setContent} placeholder="Define los límites éticos del agente..." />
|
|
16
|
-
<p className="mt-2 text-xs text-muted-foreground">Agent: {agentId}</p>
|
|
17
|
-
</ConfigEditorLayout>
|
|
18
|
-
);
|
|
19
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
|
|
2
|
-
import { Badge } from "@/components/ui/badge";
|
|
3
|
-
import { Switch } from "@/components/ui/switch";
|
|
4
|
-
|
|
5
|
-
const mockRules = [
|
|
6
|
-
{ id: "1", name: "No divulgar datos personales", severity: "block" as const, enabled: true },
|
|
7
|
-
{ id: "2", name: "Verificar antes de eliminar", severity: "warn" as const, enabled: true },
|
|
8
|
-
{ id: "3", name: "Registrar acciones sensibles", severity: "info" as const, enabled: false },
|
|
9
|
-
];
|
|
10
|
-
|
|
11
|
-
const severityColors: Record<string, "destructive" | "secondary" | "outline"> = {
|
|
12
|
-
block: "destructive",
|
|
13
|
-
warn: "secondary",
|
|
14
|
-
info: "outline",
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
export function EthicsRulesList() {
|
|
18
|
-
return (
|
|
19
|
-
<Card>
|
|
20
|
-
<CardHeader className="pb-2">
|
|
21
|
-
<CardTitle className="text-sm">Reglas activas</CardTitle>
|
|
22
|
-
</CardHeader>
|
|
23
|
-
<CardContent className="space-y-3">
|
|
24
|
-
{mockRules.map((rule) => (
|
|
25
|
-
<div key={rule.id} className="flex items-center justify-between">
|
|
26
|
-
<div className="flex items-center gap-2">
|
|
27
|
-
<Badge variant={severityColors[rule.severity]} className="text-xs">{rule.severity}</Badge>
|
|
28
|
-
<span className="text-sm">{rule.name}</span>
|
|
29
|
-
</div>
|
|
30
|
-
<Switch defaultChecked={rule.enabled} />
|
|
31
|
-
</div>
|
|
32
|
-
))}
|
|
33
|
-
</CardContent>
|
|
34
|
-
</Card>
|
|
35
|
-
);
|
|
36
|
-
}
|