@burdenoff/microfe-vibecontrols 2026.511.1 → 2026.512.1
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/dist/_virtual/_rolldown/runtime.js +2 -5
- package/dist/components/agent-manager/AgentManagerAdminBar.js +69 -61
- package/dist/components/agent-manager/AgentManagerAdminBar.js.map +1 -1
- package/dist/components/agent-manager/AgentManagerCenter.js +56 -50
- package/dist/components/agent-manager/AgentManagerCenter.js.map +1 -1
- package/dist/components/agent-manager/AgentManagerChatPane.js +87 -74
- package/dist/components/agent-manager/AgentManagerChatPane.js.map +1 -1
- package/dist/components/agent-manager/AgentManagerDetailPanel.js +5 -5
- package/dist/components/agent-manager/AgentManagerDetailPanel.js.map +1 -1
- package/dist/components/agent-manager/AgentManagerInputArea.js +159 -157
- package/dist/components/agent-manager/AgentManagerInputArea.js.map +1 -1
- package/dist/components/agent-manager/AgentManagerMessageItem.js +32 -28
- package/dist/components/agent-manager/AgentManagerMessageItem.js.map +1 -1
- package/dist/components/agent-manager/AgentManagerSessionItem.js +24 -24
- package/dist/components/agent-manager/AgentManagerSessionItem.js.map +1 -1
- package/dist/components/agent-manager/AgentManagerSessionList.js +32 -24
- package/dist/components/agent-manager/AgentManagerSessionList.js.map +1 -1
- package/dist/components/agent-manager/AgentManagerSidebar.js +3 -3
- package/dist/components/agent-manager/AgentManagerSidebar.js.map +1 -1
- package/dist/components/agent-manager/AgentManagerTabBar.js +2 -2
- package/dist/components/agent-manager/AgentManagerTabBar.js.map +1 -1
- package/dist/components/agent-manager/BridleConfigPanel.js +1 -1
- package/dist/components/agent-manager/BridleConfigPanel.js.map +1 -1
- package/dist/components/agent-manager/ProfilesPanel.js +260 -0
- package/dist/components/agent-manager/ProfilesPanel.js.map +1 -0
- package/dist/components/agent-manager/controls/ModelSelector.js +75 -58
- package/dist/components/agent-manager/controls/ModelSelector.js.map +1 -1
- package/dist/components/agent-manager/controls/SdkSelector.js +85 -61
- package/dist/components/agent-manager/controls/SdkSelector.js.map +1 -1
- package/dist/components/agent-manager/detail/SessionConfigPanel.js +2 -2
- package/dist/components/agent-manager/detail/SessionConfigPanel.js.map +1 -1
- package/dist/components/agent-manager/detail/SessionLogsPanel.js +1 -1
- package/dist/components/agent-manager/detail/SessionLogsPanel.js.map +1 -1
- package/dist/components/agent-manager/detail/SessionStatsPanel.js +1 -1
- package/dist/components/agent-manager/detail/SessionStatsPanel.js.map +1 -1
- package/dist/components/agent-manager/detail/SessionToolsPanel.js +1 -1
- package/dist/components/agent-manager/detail/SessionToolsPanel.js.map +1 -1
- package/dist/components/agent-manager/dialogs/ExportSessionDialog.js +1 -1
- package/dist/components/agent-manager/dialogs/ExportSessionDialog.js.map +1 -1
- package/dist/components/agent-manager/dialogs/NewSessionDialog.js +129 -108
- package/dist/components/agent-manager/dialogs/NewSessionDialog.js.map +1 -1
- package/dist/components/agent-manager/dialogs/SessionSearchDialog.js +1 -1
- package/dist/components/agent-manager/dialogs/SessionSearchDialog.js.map +1 -1
- package/dist/components/agent-manager/index.js +16 -0
- package/dist/components/agent-manager/modelDefaults.js +10 -0
- package/dist/components/agent-manager/modelDefaults.js.map +1 -0
- package/dist/components/agents/AgentCard.js +33 -30
- package/dist/components/agents/AgentCard.js.map +1 -1
- package/dist/components/agents/AgentForm.js +277 -239
- package/dist/components/agents/AgentForm.js.map +1 -1
- package/dist/components/agents/AgentStatusBadge.js +19 -8
- package/dist/components/agents/AgentStatusBadge.js.map +1 -1
- package/dist/components/agents/OpenInBrowserEditorButton.js +67 -65
- package/dist/components/agents/OpenInBrowserEditorButton.js.map +1 -1
- package/dist/components/agents/backup/AgentBackupTab.js +186 -185
- package/dist/components/agents/backup/AgentBackupTab.js.map +1 -1
- package/dist/components/ai/AIContextsTab.js +1 -1
- package/dist/components/ai/AIContextsTab.js.map +1 -1
- package/dist/components/ai/AIOverviewTab.js +2 -2
- package/dist/components/ai/AIOverviewTab.js.map +1 -1
- package/dist/components/ai/AIPlaygroundTab.js +97 -97
- package/dist/components/ai/AIPlaygroundTab.js.map +1 -1
- package/dist/components/ai/AIPromptsTab.js +4 -4
- package/dist/components/ai/AIPromptsTab.js.map +1 -1
- package/dist/components/ai/AIProviderCredentialsCard.js +234 -0
- package/dist/components/ai/AIProviderCredentialsCard.js.map +1 -0
- package/dist/components/ai/AISessionsTab.js +17 -1
- package/dist/components/ai/AISessionsTab.js.map +1 -1
- package/dist/components/ai/AIStatsTab.js +1 -1
- package/dist/components/ai/AIStatsTab.js.map +1 -1
- package/dist/components/ai/ClaudeCredentialsCard.js +1 -1
- package/dist/components/ai/ClaudeCredentialsCard.js.map +1 -1
- package/dist/components/ai/PluginHarnessPicker.js +84 -53
- package/dist/components/ai/PluginHarnessPicker.js.map +1 -1
- package/dist/components/aliases/AliasManager.js +386 -0
- package/dist/components/aliases/AliasManager.js.map +1 -0
- package/dist/components/aliases/aliasReservedNames.js +32 -0
- package/dist/components/aliases/aliasReservedNames.js.map +1 -0
- package/dist/components/gitops/CIDurationChart.js +11 -11
- package/dist/components/gitops/VibeGitOpsTab.js +128 -100
- package/dist/components/gitops/VibeGitOpsTab.js.map +1 -1
- package/dist/components/graph/AgentGraphView.js +61 -62
- package/dist/components/graph/AgentGraphView.js.map +1 -1
- package/dist/components/graph/AgentNode.js +17 -18
- package/dist/components/graph/AgentNode.js.map +1 -1
- package/dist/components/graph/TargetNode.js +31 -32
- package/dist/components/graph/TargetNode.js.map +1 -1
- package/dist/components/logs/LogViewer.js +121 -119
- package/dist/components/logs/LogViewer.js.map +1 -1
- package/dist/components/sessions/TerminalPanel.js +449 -458
- package/dist/components/sessions/TerminalPanel.js.map +1 -1
- package/dist/components/shared/AgentSelector.js +87 -67
- package/dist/components/shared/AgentSelector.js.map +1 -1
- package/dist/components/shared/AgentSetupBanner.js +64 -61
- package/dist/components/shared/AgentSetupBanner.js.map +1 -1
- package/dist/components/vibecalendar/expandOccurrences.js.map +1 -1
- package/dist/constants/pluginCatalog.js +29 -1
- package/dist/constants/pluginCatalog.js.map +1 -1
- package/dist/generated/wspace-operations.js +126 -103
- package/dist/generated/wspace-operations.js.map +1 -1
- package/dist/generated/wspace-types.js.map +1 -1
- package/dist/hooks/useActiveAgentProfile.js +51 -0
- package/dist/hooks/useActiveAgentProfile.js.map +1 -0
- package/dist/hooks/useAgentEvents.js +1 -0
- package/dist/hooks/useAgentEvents.js.map +1 -1
- package/dist/hooks/useAgentManagerStreaming.js +1 -1
- package/dist/hooks/useAgentManagerStreaming.js.map +1 -1
- package/dist/hooks/useCachedInitialData.js +4 -2
- package/dist/hooks/useCachedInitialData.js.map +1 -1
- package/dist/hooks/usePluginAvailability.js +93 -61
- package/dist/hooks/usePluginAvailability.js.map +1 -1
- package/dist/index.js +10 -10
- package/dist/microfe-vibecontrols.css +1 -1
- package/dist/node_modules/d3-scale/src/continuous.js +20 -20
- package/dist/node_modules/d3-scale/src/diverging.js +30 -30
- package/dist/node_modules/d3-scale/src/sequential.js +25 -25
- package/dist/pages/AgentDetailsPage.js +801 -736
- package/dist/pages/AgentDetailsPage.js.map +1 -1
- package/dist/pages/AgentsLandingPage.js +4 -4
- package/dist/pages/AgentsLandingPage.js.map +1 -1
- package/dist/pages/AgentsPage.js +351 -295
- package/dist/pages/AgentsPage.js.map +1 -1
- package/dist/pages/SessionsPage.js +618 -615
- package/dist/pages/SessionsPage.js.map +1 -1
- package/dist/pages/TargetsPage.js +5 -2
- package/dist/pages/TargetsPage.js.map +1 -1
- package/dist/pages/VibeDetailsPage.js +582 -555
- package/dist/pages/VibeDetailsPage.js.map +1 -1
- package/dist/pages/ai/AIPage.js +107 -103
- package/dist/pages/ai/AIPage.js.map +1 -1
- package/dist/pages/ai/AISessionDetailPage.js +167 -163
- package/dist/pages/ai/AISessionDetailPage.js.map +1 -1
- package/dist/pages/ai/AgentManagerPage.js +94 -90
- package/dist/pages/ai/AgentManagerPage.js.map +1 -1
- package/dist/pages/tunnels/TunnelDetailsPage.js.map +1 -1
- package/dist/services/aiApi.js +119 -112
- package/dist/services/aiApi.js.map +1 -1
- package/dist/services/iframeToken.js +29 -0
- package/dist/services/iframeToken.js.map +1 -0
- package/dist/services/schedulerApi.js +14 -13
- package/dist/services/schedulerApi.js.map +1 -1
- package/dist/store/agentManagerStore.js +61 -14
- package/dist/store/agentManagerStore.js.map +1 -1
- package/dist/store/vibeControlsStore.js +21 -1
- package/dist/store/vibeControlsStore.js.map +1 -1
- package/dist/translations/en.js.map +1 -1
- package/dist/utils/agentApiPath.js +9 -0
- package/dist/utils/agentApiPath.js.map +1 -0
- package/package.json +3 -3
- package/dist/VibeControlsRoot.d.ts +0 -36
- package/dist/VibeControlsRoot.d.ts.map +0 -1
- package/dist/VibeControlsRoutes.d.ts +0 -2
- package/dist/VibeControlsRoutes.d.ts.map +0 -1
- package/dist/components/actions/ActionCard.d.ts +0 -32
- package/dist/components/actions/ActionCard.d.ts.map +0 -1
- package/dist/components/actions/ActionForm.d.ts +0 -39
- package/dist/components/actions/ActionForm.d.ts.map +0 -1
- package/dist/components/actions/ActionTypeBadge.d.ts +0 -9
- package/dist/components/actions/ActionTypeBadge.d.ts.map +0 -1
- package/dist/components/actions/ExecutionHistory.d.ts +0 -23
- package/dist/components/actions/ExecutionHistory.d.ts.map +0 -1
- package/dist/components/actions/index.d.ts +0 -6
- package/dist/components/actions/index.d.ts.map +0 -1
- package/dist/components/agent-manager/AgentManagerAdminBar.d.ts +0 -13
- package/dist/components/agent-manager/AgentManagerAdminBar.d.ts.map +0 -1
- package/dist/components/agent-manager/AgentManagerBulkActions.d.ts +0 -13
- package/dist/components/agent-manager/AgentManagerBulkActions.d.ts.map +0 -1
- package/dist/components/agent-manager/AgentManagerCenter.d.ts +0 -8
- package/dist/components/agent-manager/AgentManagerCenter.d.ts.map +0 -1
- package/dist/components/agent-manager/AgentManagerChatPane.d.ts +0 -9
- package/dist/components/agent-manager/AgentManagerChatPane.d.ts.map +0 -1
- package/dist/components/agent-manager/AgentManagerDetailPanel.d.ts +0 -13
- package/dist/components/agent-manager/AgentManagerDetailPanel.d.ts.map +0 -1
- package/dist/components/agent-manager/AgentManagerInputArea.d.ts +0 -14
- package/dist/components/agent-manager/AgentManagerInputArea.d.ts.map +0 -1
- package/dist/components/agent-manager/AgentManagerLayout.d.ts +0 -10
- package/dist/components/agent-manager/AgentManagerLayout.d.ts.map +0 -1
- package/dist/components/agent-manager/AgentManagerMessageItem.d.ts +0 -10
- package/dist/components/agent-manager/AgentManagerMessageItem.d.ts.map +0 -1
- package/dist/components/agent-manager/AgentManagerMessageList.d.ts +0 -12
- package/dist/components/agent-manager/AgentManagerMessageList.d.ts.map +0 -1
- package/dist/components/agent-manager/AgentManagerSessionItem.d.ts +0 -12
- package/dist/components/agent-manager/AgentManagerSessionItem.d.ts.map +0 -1
- package/dist/components/agent-manager/AgentManagerSessionList.d.ts +0 -16
- package/dist/components/agent-manager/AgentManagerSessionList.d.ts.map +0 -1
- package/dist/components/agent-manager/AgentManagerSidebar.d.ts +0 -14
- package/dist/components/agent-manager/AgentManagerSidebar.d.ts.map +0 -1
- package/dist/components/agent-manager/AgentManagerStreamingIndicator.d.ts +0 -8
- package/dist/components/agent-manager/AgentManagerStreamingIndicator.d.ts.map +0 -1
- package/dist/components/agent-manager/AgentManagerTab.d.ts +0 -15
- package/dist/components/agent-manager/AgentManagerTab.d.ts.map +0 -1
- package/dist/components/agent-manager/AgentManagerTabBar.d.ts +0 -10
- package/dist/components/agent-manager/AgentManagerTabBar.d.ts.map +0 -1
- package/dist/components/agent-manager/BridleConfigPanel.d.ts +0 -13
- package/dist/components/agent-manager/BridleConfigPanel.d.ts.map +0 -1
- package/dist/components/agent-manager/PluginInstallModal.d.ts +0 -9
- package/dist/components/agent-manager/PluginInstallModal.d.ts.map +0 -1
- package/dist/components/agent-manager/controls/ContextLevelToggle.d.ts +0 -23
- package/dist/components/agent-manager/controls/ContextLevelToggle.d.ts.map +0 -1
- package/dist/components/agent-manager/controls/FileAttachButton.d.ts +0 -13
- package/dist/components/agent-manager/controls/FileAttachButton.d.ts.map +0 -1
- package/dist/components/agent-manager/controls/McpServerSelector.d.ts +0 -10
- package/dist/components/agent-manager/controls/McpServerSelector.d.ts.map +0 -1
- package/dist/components/agent-manager/controls/ModelSelector.d.ts +0 -10
- package/dist/components/agent-manager/controls/ModelSelector.d.ts.map +0 -1
- package/dist/components/agent-manager/controls/SdkSelector.d.ts +0 -13
- package/dist/components/agent-manager/controls/SdkSelector.d.ts.map +0 -1
- package/dist/components/agent-manager/controls/VoiceToggle.d.ts +0 -13
- package/dist/components/agent-manager/controls/VoiceToggle.d.ts.map +0 -1
- package/dist/components/agent-manager/detail/SessionConfigPanel.d.ts +0 -14
- package/dist/components/agent-manager/detail/SessionConfigPanel.d.ts.map +0 -1
- package/dist/components/agent-manager/detail/SessionLogsPanel.d.ts +0 -13
- package/dist/components/agent-manager/detail/SessionLogsPanel.d.ts.map +0 -1
- package/dist/components/agent-manager/detail/SessionStatsPanel.d.ts +0 -12
- package/dist/components/agent-manager/detail/SessionStatsPanel.d.ts.map +0 -1
- package/dist/components/agent-manager/detail/SessionToolsPanel.d.ts +0 -12
- package/dist/components/agent-manager/detail/SessionToolsPanel.d.ts.map +0 -1
- package/dist/components/agent-manager/dialogs/ExportSessionDialog.d.ts +0 -15
- package/dist/components/agent-manager/dialogs/ExportSessionDialog.d.ts.map +0 -1
- package/dist/components/agent-manager/dialogs/NewSessionDialog.d.ts +0 -14
- package/dist/components/agent-manager/dialogs/NewSessionDialog.d.ts.map +0 -1
- package/dist/components/agent-manager/dialogs/RenameSessionDialog.d.ts +0 -15
- package/dist/components/agent-manager/dialogs/RenameSessionDialog.d.ts.map +0 -1
- package/dist/components/agent-manager/dialogs/SessionSearchDialog.d.ts +0 -15
- package/dist/components/agent-manager/dialogs/SessionSearchDialog.d.ts.map +0 -1
- package/dist/components/agent-manager/index.d.ts +0 -16
- package/dist/components/agent-manager/index.d.ts.map +0 -1
- package/dist/components/agents/AgentCard.d.ts +0 -30
- package/dist/components/agents/AgentCard.d.ts.map +0 -1
- package/dist/components/agents/AgentForm.d.ts +0 -29
- package/dist/components/agents/AgentForm.d.ts.map +0 -1
- package/dist/components/agents/AgentList.d.ts +0 -19
- package/dist/components/agents/AgentList.d.ts.map +0 -1
- package/dist/components/agents/AgentStatusBadge.d.ts +0 -12
- package/dist/components/agents/AgentStatusBadge.d.ts.map +0 -1
- package/dist/components/agents/OpenInBrowserEditorButton.d.ts +0 -16
- package/dist/components/agents/OpenInBrowserEditorButton.d.ts.map +0 -1
- package/dist/components/agents/PluginUIPanel.d.ts +0 -38
- package/dist/components/agents/PluginUIPanel.d.ts.map +0 -1
- package/dist/components/agents/backup/AgentBackupTab.d.ts +0 -11
- package/dist/components/agents/backup/AgentBackupTab.d.ts.map +0 -1
- package/dist/components/agents/index.d.ts +0 -8
- package/dist/components/agents/index.d.ts.map +0 -1
- package/dist/components/agents/types.d.ts +0 -72
- package/dist/components/agents/types.d.ts.map +0 -1
- package/dist/components/ai/AIAssistantPanel.d.ts +0 -8
- package/dist/components/ai/AIAssistantPanel.d.ts.map +0 -1
- package/dist/components/ai/AIContextsTab.d.ts +0 -6
- package/dist/components/ai/AIContextsTab.d.ts.map +0 -1
- package/dist/components/ai/AIOverviewTab.d.ts +0 -7
- package/dist/components/ai/AIOverviewTab.d.ts.map +0 -1
- package/dist/components/ai/AIPlaygroundTab.d.ts +0 -6
- package/dist/components/ai/AIPlaygroundTab.d.ts.map +0 -1
- package/dist/components/ai/AIPromptsTab.d.ts +0 -6
- package/dist/components/ai/AIPromptsTab.d.ts.map +0 -1
- package/dist/components/ai/AISessionsTab.d.ts +0 -7
- package/dist/components/ai/AISessionsTab.d.ts.map +0 -1
- package/dist/components/ai/AIStatsTab.d.ts +0 -6
- package/dist/components/ai/AIStatsTab.d.ts.map +0 -1
- package/dist/components/ai/AITasksTab.d.ts +0 -5
- package/dist/components/ai/AITasksTab.d.ts.map +0 -1
- package/dist/components/ai/AITemplatesTab.d.ts +0 -6
- package/dist/components/ai/AITemplatesTab.d.ts.map +0 -1
- package/dist/components/ai/ClaudeCredentialsCard.d.ts +0 -6
- package/dist/components/ai/ClaudeCredentialsCard.d.ts.map +0 -1
- package/dist/components/ai/PluginHarnessPicker.d.ts +0 -31
- package/dist/components/ai/PluginHarnessPicker.d.ts.map +0 -1
- package/dist/components/analytics/AnalyticsBreakdownChart.d.ts +0 -12
- package/dist/components/analytics/AnalyticsBreakdownChart.d.ts.map +0 -1
- package/dist/components/analytics/AnalyticsBreakdownTable.d.ts +0 -13
- package/dist/components/analytics/AnalyticsBreakdownTable.d.ts.map +0 -1
- package/dist/components/analytics/AnalyticsEntityTabs.d.ts +0 -9
- package/dist/components/analytics/AnalyticsEntityTabs.d.ts.map +0 -1
- package/dist/components/analytics/AnalyticsFilterBar.d.ts +0 -15
- package/dist/components/analytics/AnalyticsFilterBar.d.ts.map +0 -1
- package/dist/components/analytics/AnalyticsKpiGrid.d.ts +0 -10
- package/dist/components/analytics/AnalyticsKpiGrid.d.ts.map +0 -1
- package/dist/components/analytics/AnalyticsTimeSeriesChart.d.ts +0 -16
- package/dist/components/analytics/AnalyticsTimeSeriesChart.d.ts.map +0 -1
- package/dist/components/analytics/SandboxAnalyticsSection.d.ts +0 -9
- package/dist/components/analytics/SandboxAnalyticsSection.d.ts.map +0 -1
- package/dist/components/analytics/index.d.ts +0 -9
- package/dist/components/analytics/index.d.ts.map +0 -1
- package/dist/components/analytics/types.d.ts +0 -28
- package/dist/components/analytics/types.d.ts.map +0 -1
- package/dist/components/assistant/AIAssistantPanel.d.ts +0 -5
- package/dist/components/assistant/AIAssistantPanel.d.ts.map +0 -1
- package/dist/components/assistant/AssistantChatArea.d.ts +0 -4
- package/dist/components/assistant/AssistantChatArea.d.ts.map +0 -1
- package/dist/components/assistant/AssistantChatInput.d.ts +0 -10
- package/dist/components/assistant/AssistantChatInput.d.ts.map +0 -1
- package/dist/components/assistant/AssistantConversationList.d.ts +0 -4
- package/dist/components/assistant/AssistantConversationList.d.ts.map +0 -1
- package/dist/components/assistant/AssistantExportMenu.d.ts +0 -4
- package/dist/components/assistant/AssistantExportMenu.d.ts.map +0 -1
- package/dist/components/assistant/AssistantMarkdownRenderer.d.ts +0 -8
- package/dist/components/assistant/AssistantMarkdownRenderer.d.ts.map +0 -1
- package/dist/components/assistant/AssistantMessageItem.d.ts +0 -10
- package/dist/components/assistant/AssistantMessageItem.d.ts.map +0 -1
- package/dist/components/assistant/AssistantMessageList.d.ts +0 -10
- package/dist/components/assistant/AssistantMessageList.d.ts.map +0 -1
- package/dist/components/assistant/AssistantModeSelector.d.ts +0 -10
- package/dist/components/assistant/AssistantModeSelector.d.ts.map +0 -1
- package/dist/components/assistant/AssistantWelcome.d.ts +0 -10
- package/dist/components/assistant/AssistantWelcome.d.ts.map +0 -1
- package/dist/components/assistant/index.d.ts +0 -11
- package/dist/components/assistant/index.d.ts.map +0 -1
- package/dist/components/audit/AuditDeleteDialog.d.ts +0 -12
- package/dist/components/audit/AuditDeleteDialog.d.ts.map +0 -1
- package/dist/components/audit/AuditExportButton.d.ts +0 -8
- package/dist/components/audit/AuditExportButton.d.ts.map +0 -1
- package/dist/components/audit/AuditLogDetail.d.ts +0 -9
- package/dist/components/audit/AuditLogDetail.d.ts.map +0 -1
- package/dist/components/audit/AuditLogFilters.d.ts +0 -15
- package/dist/components/audit/AuditLogFilters.d.ts.map +0 -1
- package/dist/components/audit/AuditLogStats.d.ts +0 -9
- package/dist/components/audit/AuditLogStats.d.ts.map +0 -1
- package/dist/components/audit/AuditLogTable.d.ts +0 -21
- package/dist/components/audit/AuditLogTable.d.ts.map +0 -1
- package/dist/components/audit/index.d.ts +0 -7
- package/dist/components/audit/index.d.ts.map +0 -1
- package/dist/components/catalog/CatalogCard.d.ts +0 -22
- package/dist/components/catalog/CatalogCard.d.ts.map +0 -1
- package/dist/components/catalog/CatalogForm.d.ts +0 -18
- package/dist/components/catalog/CatalogForm.d.ts.map +0 -1
- package/dist/components/catalog/index.d.ts +0 -5
- package/dist/components/catalog/index.d.ts.map +0 -1
- package/dist/components/docs/DocsCompileStatus.d.ts +0 -9
- package/dist/components/docs/DocsCompileStatus.d.ts.map +0 -1
- package/dist/components/docs/DocsEditPanel.d.ts +0 -26
- package/dist/components/docs/DocsEditPanel.d.ts.map +0 -1
- package/dist/components/docs/DocsEmptyState.d.ts +0 -7
- package/dist/components/docs/DocsEmptyState.d.ts.map +0 -1
- package/dist/components/docs/DocsPageEditor.d.ts +0 -13
- package/dist/components/docs/DocsPageEditor.d.ts.map +0 -1
- package/dist/components/docs/DocsPageTree.d.ts +0 -12
- package/dist/components/docs/DocsPageTree.d.ts.map +0 -1
- package/dist/components/docs/DocsPreviewPanel.d.ts +0 -17
- package/dist/components/docs/DocsPreviewPanel.d.ts.map +0 -1
- package/dist/components/docs/DocsSettingsPanel.d.ts +0 -15
- package/dist/components/docs/DocsSettingsPanel.d.ts.map +0 -1
- package/dist/components/docs/DocsTabPanel.d.ts +0 -8
- package/dist/components/docs/DocsTabPanel.d.ts.map +0 -1
- package/dist/components/docs/index.d.ts +0 -10
- package/dist/components/docs/index.d.ts.map +0 -1
- package/dist/components/docs/previewHtml.d.ts +0 -2
- package/dist/components/docs/previewHtml.d.ts.map +0 -1
- package/dist/components/docs/types.d.ts +0 -59
- package/dist/components/docs/types.d.ts.map +0 -1
- package/dist/components/gitops/CIDurationChart.d.ts +0 -12
- package/dist/components/gitops/CIDurationChart.d.ts.map +0 -1
- package/dist/components/gitops/CIFailedRuns.d.ts +0 -13
- package/dist/components/gitops/CIFailedRuns.d.ts.map +0 -1
- package/dist/components/gitops/CIPipelineRunsTable.d.ts +0 -13
- package/dist/components/gitops/CIPipelineRunsTable.d.ts.map +0 -1
- package/dist/components/gitops/CISuccessRateChart.d.ts +0 -13
- package/dist/components/gitops/CISuccessRateChart.d.ts.map +0 -1
- package/dist/components/gitops/CITab.d.ts +0 -15
- package/dist/components/gitops/CITab.d.ts.map +0 -1
- package/dist/components/gitops/CIWorkflowList.d.ts +0 -13
- package/dist/components/gitops/CIWorkflowList.d.ts.map +0 -1
- package/dist/components/gitops/GitOpsProviderCard.d.ts +0 -14
- package/dist/components/gitops/GitOpsProviderCard.d.ts.map +0 -1
- package/dist/components/gitops/GitOpsSetup.d.ts +0 -16
- package/dist/components/gitops/GitOpsSetup.d.ts.map +0 -1
- package/dist/components/gitops/GitOpsSkeleton.d.ts +0 -12
- package/dist/components/gitops/GitOpsSkeleton.d.ts.map +0 -1
- package/dist/components/gitops/GitOpsStatusBadge.d.ts +0 -14
- package/dist/components/gitops/GitOpsStatusBadge.d.ts.map +0 -1
- package/dist/components/gitops/ProviderIcon.d.ts +0 -14
- package/dist/components/gitops/ProviderIcon.d.ts.map +0 -1
- package/dist/components/gitops/RepoActivityCard.d.ts +0 -12
- package/dist/components/gitops/RepoActivityCard.d.ts.map +0 -1
- package/dist/components/gitops/RepoIssuesCard.d.ts +0 -12
- package/dist/components/gitops/RepoIssuesCard.d.ts.map +0 -1
- package/dist/components/gitops/RepoLanguagesCard.d.ts +0 -13
- package/dist/components/gitops/RepoLanguagesCard.d.ts.map +0 -1
- package/dist/components/gitops/RepoOverviewCard.d.ts +0 -13
- package/dist/components/gitops/RepoOverviewCard.d.ts.map +0 -1
- package/dist/components/gitops/RepoPullRequestsCard.d.ts +0 -12
- package/dist/components/gitops/RepoPullRequestsCard.d.ts.map +0 -1
- package/dist/components/gitops/RepoSecurityCard.d.ts +0 -12
- package/dist/components/gitops/RepoSecurityCard.d.ts.map +0 -1
- package/dist/components/gitops/RepoStatsTab.d.ts +0 -15
- package/dist/components/gitops/RepoStatsTab.d.ts.map +0 -1
- package/dist/components/gitops/VibeGitOpsTab.d.ts +0 -12
- package/dist/components/gitops/VibeGitOpsTab.d.ts.map +0 -1
- package/dist/components/gitops/index.d.ts +0 -21
- package/dist/components/gitops/index.d.ts.map +0 -1
- package/dist/components/gitops/types.d.ts +0 -90
- package/dist/components/gitops/types.d.ts.map +0 -1
- package/dist/components/graph/AgentGraphView.d.ts +0 -44
- package/dist/components/graph/AgentGraphView.d.ts.map +0 -1
- package/dist/components/graph/AgentNode.d.ts +0 -6
- package/dist/components/graph/AgentNode.d.ts.map +0 -1
- package/dist/components/graph/ConnectionPermissionsDialog.d.ts +0 -26
- package/dist/components/graph/ConnectionPermissionsDialog.d.ts.map +0 -1
- package/dist/components/graph/TargetNode.d.ts +0 -6
- package/dist/components/graph/TargetNode.d.ts.map +0 -1
- package/dist/components/health/AgentHealthCard.d.ts +0 -9
- package/dist/components/health/AgentHealthCard.d.ts.map +0 -1
- package/dist/components/health/HealthDashboard.d.ts +0 -10
- package/dist/components/health/HealthDashboard.d.ts.map +0 -1
- package/dist/components/health/SystemStatus.d.ts +0 -11
- package/dist/components/health/SystemStatus.d.ts.map +0 -1
- package/dist/components/health/index.d.ts +0 -5
- package/dist/components/health/index.d.ts.map +0 -1
- package/dist/components/health/types.d.ts +0 -50
- package/dist/components/health/types.d.ts.map +0 -1
- package/dist/components/idp-components/ComponentCard.d.ts +0 -24
- package/dist/components/idp-components/ComponentCard.d.ts.map +0 -1
- package/dist/components/idp-components/ComponentForm.d.ts +0 -22
- package/dist/components/idp-components/ComponentForm.d.ts.map +0 -1
- package/dist/components/idp-components/index.d.ts +0 -5
- package/dist/components/idp-components/index.d.ts.map +0 -1
- package/dist/components/logs/LogViewer.d.ts +0 -13
- package/dist/components/logs/LogViewer.d.ts.map +0 -1
- package/dist/components/notes/NoteCard.d.ts +0 -13
- package/dist/components/notes/NoteCard.d.ts.map +0 -1
- package/dist/components/notes/NoteEditor.d.ts +0 -31
- package/dist/components/notes/NoteEditor.d.ts.map +0 -1
- package/dist/components/notes/NoteList.d.ts +0 -15
- package/dist/components/notes/NoteList.d.ts.map +0 -1
- package/dist/components/notes/NotesTabPanel.d.ts +0 -18
- package/dist/components/notes/NotesTabPanel.d.ts.map +0 -1
- package/dist/components/notes/index.d.ts +0 -7
- package/dist/components/notes/index.d.ts.map +0 -1
- package/dist/components/notes/types.d.ts +0 -58
- package/dist/components/notes/types.d.ts.map +0 -1
- package/dist/components/scorecard/ScorecardPanel.d.ts +0 -9
- package/dist/components/scorecard/ScorecardPanel.d.ts.map +0 -1
- package/dist/components/scorecard/index.d.ts +0 -3
- package/dist/components/scorecard/index.d.ts.map +0 -1
- package/dist/components/sessions/CollaboratorsList.d.ts +0 -18
- package/dist/components/sessions/CollaboratorsList.d.ts.map +0 -1
- package/dist/components/sessions/ControlStatusBar.d.ts +0 -31
- package/dist/components/sessions/ControlStatusBar.d.ts.map +0 -1
- package/dist/components/sessions/SessionCard.d.ts +0 -24
- package/dist/components/sessions/SessionCard.d.ts.map +0 -1
- package/dist/components/sessions/SessionForm.d.ts +0 -20
- package/dist/components/sessions/SessionForm.d.ts.map +0 -1
- package/dist/components/sessions/SessionList.d.ts +0 -25
- package/dist/components/sessions/SessionList.d.ts.map +0 -1
- package/dist/components/sessions/SessionShareDialog.d.ts +0 -15
- package/dist/components/sessions/SessionShareDialog.d.ts.map +0 -1
- package/dist/components/sessions/SessionStatusBadge.d.ts +0 -9
- package/dist/components/sessions/SessionStatusBadge.d.ts.map +0 -1
- package/dist/components/sessions/SharedTerminalPanel.d.ts +0 -72
- package/dist/components/sessions/SharedTerminalPanel.d.ts.map +0 -1
- package/dist/components/sessions/TerminalPanel.d.ts +0 -69
- package/dist/components/sessions/TerminalPanel.d.ts.map +0 -1
- package/dist/components/sessions/index.d.ts +0 -11
- package/dist/components/sessions/index.d.ts.map +0 -1
- package/dist/components/sessions/types.d.ts +0 -67
- package/dist/components/sessions/types.d.ts.map +0 -1
- package/dist/components/settings/AdvancedSection.d.ts +0 -22
- package/dist/components/settings/AdvancedSection.d.ts.map +0 -1
- package/dist/components/settings/ConfigEditor.d.ts +0 -14
- package/dist/components/settings/ConfigEditor.d.ts.map +0 -1
- package/dist/components/settings/ConfigSection.d.ts +0 -12
- package/dist/components/settings/ConfigSection.d.ts.map +0 -1
- package/dist/components/settings/NotificationsSection.d.ts +0 -14
- package/dist/components/settings/NotificationsSection.d.ts.map +0 -1
- package/dist/components/settings/PreferencesSection.d.ts +0 -14
- package/dist/components/settings/PreferencesSection.d.ts.map +0 -1
- package/dist/components/settings/ProfileSection.d.ts +0 -14
- package/dist/components/settings/ProfileSection.d.ts.map +0 -1
- package/dist/components/settings/SecuritySection.d.ts +0 -11
- package/dist/components/settings/SecuritySection.d.ts.map +0 -1
- package/dist/components/settings/SettingsForm.d.ts +0 -58
- package/dist/components/settings/SettingsForm.d.ts.map +0 -1
- package/dist/components/settings/WorkspaceDefaultsSection.d.ts +0 -27
- package/dist/components/settings/WorkspaceDefaultsSection.d.ts.map +0 -1
- package/dist/components/settings/index.d.ts +0 -4
- package/dist/components/settings/index.d.ts.map +0 -1
- package/dist/components/settings/types.d.ts +0 -55
- package/dist/components/settings/types.d.ts.map +0 -1
- package/dist/components/shared/AgentEventsConnector.d.ts +0 -6
- package/dist/components/shared/AgentEventsConnector.d.ts.map +0 -1
- package/dist/components/shared/AgentSelector.d.ts +0 -25
- package/dist/components/shared/AgentSelector.d.ts.map +0 -1
- package/dist/components/shared/AgentSetupBanner.d.ts +0 -21
- package/dist/components/shared/AgentSetupBanner.d.ts.map +0 -1
- package/dist/components/shared/Card.d.ts +0 -29
- package/dist/components/shared/Card.d.ts.map +0 -1
- package/dist/components/shared/ConfirmDialog.d.ts +0 -14
- package/dist/components/shared/ConfirmDialog.d.ts.map +0 -1
- package/dist/components/shared/EmptyState.d.ts +0 -11
- package/dist/components/shared/EmptyState.d.ts.map +0 -1
- package/dist/components/shared/EntityTagPicker.d.ts +0 -8
- package/dist/components/shared/EntityTagPicker.d.ts.map +0 -1
- package/dist/components/shared/ErrorState.d.ts +0 -11
- package/dist/components/shared/ErrorState.d.ts.map +0 -1
- package/dist/components/shared/FilterDropdown.d.ts +0 -20
- package/dist/components/shared/FilterDropdown.d.ts.map +0 -1
- package/dist/components/shared/GetHelpButton.d.ts +0 -27
- package/dist/components/shared/GetHelpButton.d.ts.map +0 -1
- package/dist/components/shared/InstallTabs.d.ts +0 -18
- package/dist/components/shared/InstallTabs.d.ts.map +0 -1
- package/dist/components/shared/LoadingState.d.ts +0 -7
- package/dist/components/shared/LoadingState.d.ts.map +0 -1
- package/dist/components/shared/NotificationToast.d.ts +0 -40
- package/dist/components/shared/NotificationToast.d.ts.map +0 -1
- package/dist/components/shared/PageHeader.d.ts +0 -14
- package/dist/components/shared/PageHeader.d.ts.map +0 -1
- package/dist/components/shared/PluginGate.d.ts +0 -35
- package/dist/components/shared/PluginGate.d.ts.map +0 -1
- package/dist/components/shared/QuotaExhaustedDialog.d.ts +0 -12
- package/dist/components/shared/QuotaExhaustedDialog.d.ts.map +0 -1
- package/dist/components/shared/RequireAgentReachable.d.ts +0 -14
- package/dist/components/shared/RequireAgentReachable.d.ts.map +0 -1
- package/dist/components/shared/SearchInput.d.ts +0 -9
- package/dist/components/shared/SearchInput.d.ts.map +0 -1
- package/dist/components/shared/SearchableSelect.d.ts +0 -48
- package/dist/components/shared/SearchableSelect.d.ts.map +0 -1
- package/dist/components/shared/SelectionCheckbox.d.ts +0 -11
- package/dist/components/shared/SelectionCheckbox.d.ts.map +0 -1
- package/dist/components/shared/SessionNotificationBanner.d.ts +0 -47
- package/dist/components/shared/SessionNotificationBanner.d.ts.map +0 -1
- package/dist/components/shared/StatCard.d.ts +0 -17
- package/dist/components/shared/StatCard.d.ts.map +0 -1
- package/dist/components/shared/StatusBadge.d.ts +0 -11
- package/dist/components/shared/StatusBadge.d.ts.map +0 -1
- package/dist/components/shared/TagFilter.d.ts +0 -11
- package/dist/components/shared/TagFilter.d.ts.map +0 -1
- package/dist/components/shared/index.d.ts +0 -32
- package/dist/components/shared/index.d.ts.map +0 -1
- package/dist/components/targets/TargetCard.d.ts +0 -45
- package/dist/components/targets/TargetCard.d.ts.map +0 -1
- package/dist/components/targets/index.d.ts +0 -3
- package/dist/components/targets/index.d.ts.map +0 -1
- package/dist/components/templates/TemplateCard.d.ts +0 -19
- package/dist/components/templates/TemplateCard.d.ts.map +0 -1
- package/dist/components/templates/index.d.ts +0 -3
- package/dist/components/templates/index.d.ts.map +0 -1
- package/dist/components/tunnels/DomainVerificationBadge.d.ts +0 -6
- package/dist/components/tunnels/DomainVerificationBadge.d.ts.map +0 -1
- package/dist/components/tunnels/ProviderBadge.d.ts +0 -6
- package/dist/components/tunnels/ProviderBadge.d.ts.map +0 -1
- package/dist/components/tunnels/TunnelCard.d.ts +0 -13
- package/dist/components/tunnels/TunnelCard.d.ts.map +0 -1
- package/dist/components/tunnels/TunnelCreateWizard.d.ts +0 -2
- package/dist/components/tunnels/TunnelCreateWizard.d.ts.map +0 -1
- package/dist/components/tunnels/TunnelStatusBadge.d.ts +0 -6
- package/dist/components/tunnels/TunnelStatusBadge.d.ts.map +0 -1
- package/dist/components/vibe/VibeAgentEmptyState.d.ts +0 -8
- package/dist/components/vibe/VibeAgentEmptyState.d.ts.map +0 -1
- package/dist/components/vibecalendar/LogsDrawer.d.ts +0 -12
- package/dist/components/vibecalendar/LogsDrawer.d.ts.map +0 -1
- package/dist/components/vibecalendar/ScheduleTaskModal.d.ts +0 -33
- package/dist/components/vibecalendar/ScheduleTaskModal.d.ts.map +0 -1
- package/dist/components/vibecalendar/VibeCalAgendaView.d.ts +0 -11
- package/dist/components/vibecalendar/VibeCalAgendaView.d.ts.map +0 -1
- package/dist/components/vibecalendar/VibeCalDayView.d.ts +0 -12
- package/dist/components/vibecalendar/VibeCalDayView.d.ts.map +0 -1
- package/dist/components/vibecalendar/VibeCalMonthView.d.ts +0 -12
- package/dist/components/vibecalendar/VibeCalMonthView.d.ts.map +0 -1
- package/dist/components/vibecalendar/VibeCalWeekView.d.ts +0 -12
- package/dist/components/vibecalendar/VibeCalWeekView.d.ts.map +0 -1
- package/dist/components/vibecalendar/VibeCalendarHeader.d.ts +0 -12
- package/dist/components/vibecalendar/VibeCalendarHeader.d.ts.map +0 -1
- package/dist/components/vibecalendar/VibeTaskBlock.d.ts +0 -12
- package/dist/components/vibecalendar/VibeTaskBlock.d.ts.map +0 -1
- package/dist/components/vibecalendar/expandOccurrences.d.ts +0 -37
- package/dist/components/vibecalendar/expandOccurrences.d.ts.map +0 -1
- package/dist/components/vibecalendar/index.d.ts +0 -11
- package/dist/components/vibecalendar/index.d.ts.map +0 -1
- package/dist/components/vibecalendar/types.d.ts +0 -53
- package/dist/components/vibecalendar/types.d.ts.map +0 -1
- package/dist/components/vibedeck/VibeDeckButtonForm.d.ts +0 -54
- package/dist/components/vibedeck/VibeDeckButtonForm.d.ts.map +0 -1
- package/dist/components/vibedeck/VibeDeckButtonTile.d.ts +0 -48
- package/dist/components/vibedeck/VibeDeckButtonTile.d.ts.map +0 -1
- package/dist/components/vibedeck/VibeDeckExecutionLog.d.ts +0 -25
- package/dist/components/vibedeck/VibeDeckExecutionLog.d.ts.map +0 -1
- package/dist/components/vibedeck/VibeDeckForm.d.ts +0 -21
- package/dist/components/vibedeck/VibeDeckForm.d.ts.map +0 -1
- package/dist/components/vibedeck/VibeDeckGrid.d.ts +0 -51
- package/dist/components/vibedeck/VibeDeckGrid.d.ts.map +0 -1
- package/dist/components/vibedeck/VibeDeckShareDialog.d.ts +0 -10
- package/dist/components/vibedeck/VibeDeckShareDialog.d.ts.map +0 -1
- package/dist/components/vibedeck/VibeDeckSwitcher.d.ts +0 -28
- package/dist/components/vibedeck/VibeDeckSwitcher.d.ts.map +0 -1
- package/dist/components/vibedeck/index.d.ts +0 -9
- package/dist/components/vibedeck/index.d.ts.map +0 -1
- package/dist/components/vibes/VibeCard.d.ts +0 -19
- package/dist/components/vibes/VibeCard.d.ts.map +0 -1
- package/dist/components/vibes/VibeForm.d.ts +0 -15
- package/dist/components/vibes/VibeForm.d.ts.map +0 -1
- package/dist/components/vibes/VibeList.d.ts +0 -20
- package/dist/components/vibes/VibeList.d.ts.map +0 -1
- package/dist/components/vibes/icons.d.ts +0 -6
- package/dist/components/vibes/icons.d.ts.map +0 -1
- package/dist/components/vibes/index.d.ts +0 -5
- package/dist/components/vibes/index.d.ts.map +0 -1
- package/dist/components/vibes/types.d.ts +0 -71
- package/dist/components/vibes/types.d.ts.map +0 -1
- package/dist/components/webhooks/WebhookCard.d.ts +0 -12
- package/dist/components/webhooks/WebhookCard.d.ts.map +0 -1
- package/dist/components/webhooks/WebhookForm.d.ts +0 -11
- package/dist/components/webhooks/WebhookForm.d.ts.map +0 -1
- package/dist/components/webhooks/WebhookList.d.ts +0 -14
- package/dist/components/webhooks/WebhookList.d.ts.map +0 -1
- package/dist/components/webhooks/index.d.ts +0 -5
- package/dist/components/webhooks/index.d.ts.map +0 -1
- package/dist/components/webhooks/types.d.ts +0 -58
- package/dist/components/webhooks/types.d.ts.map +0 -1
- package/dist/config/assistantUsecases.d.ts +0 -18
- package/dist/config/assistantUsecases.d.ts.map +0 -1
- package/dist/config/index.d.ts +0 -24
- package/dist/config/index.d.ts.map +0 -1
- package/dist/constants/permissions.d.ts +0 -112
- package/dist/constants/permissions.d.ts.map +0 -1
- package/dist/constants/pluginCatalog.d.ts +0 -36
- package/dist/constants/pluginCatalog.d.ts.map +0 -1
- package/dist/dev/main.d.ts +0 -2
- package/dist/dev/main.d.ts.map +0 -1
- package/dist/generated/global-operations.d.ts +0 -2
- package/dist/generated/global-operations.d.ts.map +0 -1
- package/dist/generated/global-types.d.ts +0 -21253
- package/dist/generated/global-types.d.ts.map +0 -1
- package/dist/generated/wspace-operations.d.ts +0 -15218
- package/dist/generated/wspace-operations.d.ts.map +0 -1
- package/dist/generated/wspace-types.d.ts +0 -55252
- package/dist/generated/wspace-types.d.ts.map +0 -1
- package/dist/hooks/index.d.ts +0 -7
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/hooks/useAgentConnectivity.d.ts +0 -47
- package/dist/hooks/useAgentConnectivity.d.ts.map +0 -1
- package/dist/hooks/useAgentEvents.d.ts +0 -36
- package/dist/hooks/useAgentEvents.d.ts.map +0 -1
- package/dist/hooks/useAgentManagerKeyboard.d.ts +0 -17
- package/dist/hooks/useAgentManagerKeyboard.d.ts.map +0 -1
- package/dist/hooks/useAgentManagerStreaming.d.ts +0 -19
- package/dist/hooks/useAgentManagerStreaming.d.ts.map +0 -1
- package/dist/hooks/useAssistantHeartbeat.d.ts +0 -4
- package/dist/hooks/useAssistantHeartbeat.d.ts.map +0 -1
- package/dist/hooks/useAssistantKeyboardShortcuts.d.ts +0 -18
- package/dist/hooks/useAssistantKeyboardShortcuts.d.ts.map +0 -1
- package/dist/hooks/useCachedInitialData.d.ts +0 -120
- package/dist/hooks/useCachedInitialData.d.ts.map +0 -1
- package/dist/hooks/useEntityTags.d.ts +0 -24
- package/dist/hooks/useEntityTags.d.ts.map +0 -1
- package/dist/hooks/useFileUpload.d.ts +0 -15
- package/dist/hooks/useFileUpload.d.ts.map +0 -1
- package/dist/hooks/useInitialDataLoader.d.ts +0 -48
- package/dist/hooks/useInitialDataLoader.d.ts.map +0 -1
- package/dist/hooks/useMcpServers.d.ts +0 -14
- package/dist/hooks/useMcpServers.d.ts.map +0 -1
- package/dist/hooks/useOpenAssistantHelp.d.ts +0 -2
- package/dist/hooks/useOpenAssistantHelp.d.ts.map +0 -1
- package/dist/hooks/usePluginAvailability.d.ts +0 -35
- package/dist/hooks/usePluginAvailability.d.ts.map +0 -1
- package/dist/hooks/useQueryBackedTab.d.ts +0 -2
- package/dist/hooks/useQueryBackedTab.d.ts.map +0 -1
- package/dist/hooks/useSessionSearch.d.ts +0 -24
- package/dist/hooks/useSessionSearch.d.ts.map +0 -1
- package/dist/hooks/useVoiceMode.d.ts +0 -17
- package/dist/hooks/useVoiceMode.d.ts.map +0 -1
- package/dist/index.d.ts +0 -17
- package/dist/index.d.ts.map +0 -1
- package/dist/lib/vibeFeatures.d.ts +0 -29
- package/dist/lib/vibeFeatures.d.ts.map +0 -1
- package/dist/node_modules/@xyflow/react/dist/esm/index.js +0 -3281
- package/dist/node_modules/@xyflow/react/dist/esm/index.js.map +0 -1
- package/dist/node_modules/@xyflow/system/dist/esm/index.js +0 -1845
- package/dist/node_modules/@xyflow/system/dist/esm/index.js.map +0 -1
- package/dist/node_modules/classcat/index.js +0 -12
- package/dist/node_modules/classcat/index.js.map +0 -1
- package/dist/node_modules/d3-dispatch/src/dispatch.js +0 -67
- package/dist/node_modules/d3-dispatch/src/dispatch.js.map +0 -1
- package/dist/node_modules/d3-drag/src/constant.js +0 -6
- package/dist/node_modules/d3-drag/src/constant.js.map +0 -1
- package/dist/node_modules/d3-drag/src/drag.js +0 -116
- package/dist/node_modules/d3-drag/src/drag.js.map +0 -1
- package/dist/node_modules/d3-drag/src/event.js +0 -64
- package/dist/node_modules/d3-drag/src/event.js.map +0 -1
- package/dist/node_modules/d3-drag/src/nodrag.js +0 -17
- package/dist/node_modules/d3-drag/src/nodrag.js.map +0 -1
- package/dist/node_modules/d3-drag/src/noevent.js +0 -15
- package/dist/node_modules/d3-drag/src/noevent.js.map +0 -1
- package/dist/node_modules/d3-ease/src/cubic.js +0 -8
- package/dist/node_modules/d3-ease/src/cubic.js.map +0 -1
- package/dist/node_modules/d3-interpolate/src/transform/decompose.js +0 -24
- package/dist/node_modules/d3-interpolate/src/transform/decompose.js.map +0 -1
- package/dist/node_modules/d3-interpolate/src/transform/index.js +0 -56
- package/dist/node_modules/d3-interpolate/src/transform/index.js.map +0 -1
- package/dist/node_modules/d3-interpolate/src/transform/parse.js +0 -14
- package/dist/node_modules/d3-interpolate/src/transform/parse.js.map +0 -1
- package/dist/node_modules/d3-interpolate/src/zoom.js +0 -43
- package/dist/node_modules/d3-interpolate/src/zoom.js.map +0 -1
- package/dist/node_modules/d3-selection/src/array.js +0 -8
- package/dist/node_modules/d3-selection/src/array.js.map +0 -1
- package/dist/node_modules/d3-selection/src/constant.js +0 -10
- package/dist/node_modules/d3-selection/src/constant.js.map +0 -1
- package/dist/node_modules/d3-selection/src/creator.js +0 -22
- package/dist/node_modules/d3-selection/src/creator.js.map +0 -1
- package/dist/node_modules/d3-selection/src/matcher.js +0 -15
- package/dist/node_modules/d3-selection/src/matcher.js.map +0 -1
- package/dist/node_modules/d3-selection/src/namespace.js +0 -13
- package/dist/node_modules/d3-selection/src/namespace.js.map +0 -1
- package/dist/node_modules/d3-selection/src/namespaces.js +0 -12
- package/dist/node_modules/d3-selection/src/namespaces.js.map +0 -1
- package/dist/node_modules/d3-selection/src/pointer.js +0 -20
- package/dist/node_modules/d3-selection/src/pointer.js.map +0 -1
- package/dist/node_modules/d3-selection/src/select.js +0 -9
- package/dist/node_modules/d3-selection/src/select.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/append.js +0 -12
- package/dist/node_modules/d3-selection/src/selection/append.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/attr.js +0 -46
- package/dist/node_modules/d3-selection/src/selection/attr.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/call.js +0 -9
- package/dist/node_modules/d3-selection/src/selection/call.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/classed.js +0 -55
- package/dist/node_modules/d3-selection/src/selection/classed.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/clone.js +0 -16
- package/dist/node_modules/d3-selection/src/selection/clone.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/data.js +0 -38
- package/dist/node_modules/d3-selection/src/selection/data.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/datum.js +0 -8
- package/dist/node_modules/d3-selection/src/selection/datum.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/dispatch.js +0 -23
- package/dist/node_modules/d3-selection/src/selection/dispatch.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/each.js +0 -9
- package/dist/node_modules/d3-selection/src/selection/each.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/empty.js +0 -8
- package/dist/node_modules/d3-selection/src/selection/empty.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/enter.js +0 -28
- package/dist/node_modules/d3-selection/src/selection/enter.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/exit.js +0 -10
- package/dist/node_modules/d3-selection/src/selection/exit.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/filter.js +0 -12
- package/dist/node_modules/d3-selection/src/selection/filter.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/html.js +0 -21
- package/dist/node_modules/d3-selection/src/selection/html.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/index.js +0 -87
- package/dist/node_modules/d3-selection/src/selection/index.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/insert.js +0 -16
- package/dist/node_modules/d3-selection/src/selection/insert.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/iterator.js +0 -8
- package/dist/node_modules/d3-selection/src/selection/iterator.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/join.js +0 -9
- package/dist/node_modules/d3-selection/src/selection/join.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/lower.js +0 -11
- package/dist/node_modules/d3-selection/src/selection/lower.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/merge.js +0 -11
- package/dist/node_modules/d3-selection/src/selection/merge.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/node.js +0 -12
- package/dist/node_modules/d3-selection/src/selection/node.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/nodes.js +0 -8
- package/dist/node_modules/d3-selection/src/selection/nodes.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/on.js +0 -58
- package/dist/node_modules/d3-selection/src/selection/on.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/order.js +0 -9
- package/dist/node_modules/d3-selection/src/selection/order.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/property.js +0 -24
- package/dist/node_modules/d3-selection/src/selection/property.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/raise.js +0 -11
- package/dist/node_modules/d3-selection/src/selection/raise.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/remove.js +0 -12
- package/dist/node_modules/d3-selection/src/selection/remove.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/select.js +0 -12
- package/dist/node_modules/d3-selection/src/selection/select.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/selectAll.js +0 -18
- package/dist/node_modules/d3-selection/src/selection/selectAll.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/selectChild.js +0 -18
- package/dist/node_modules/d3-selection/src/selection/selectChild.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/selectChildren.js +0 -18
- package/dist/node_modules/d3-selection/src/selection/selectChildren.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/size.js +0 -10
- package/dist/node_modules/d3-selection/src/selection/size.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/sort.js +0 -20
- package/dist/node_modules/d3-selection/src/selection/sort.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/sparse.js +0 -8
- package/dist/node_modules/d3-selection/src/selection/sparse.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/style.js +0 -28
- package/dist/node_modules/d3-selection/src/selection/style.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selection/text.js +0 -21
- package/dist/node_modules/d3-selection/src/selection/text.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selector.js +0 -11
- package/dist/node_modules/d3-selection/src/selector.js.map +0 -1
- package/dist/node_modules/d3-selection/src/selectorAll.js +0 -13
- package/dist/node_modules/d3-selection/src/selectorAll.js.map +0 -1
- package/dist/node_modules/d3-selection/src/sourceEvent.js +0 -10
- package/dist/node_modules/d3-selection/src/sourceEvent.js.map +0 -1
- package/dist/node_modules/d3-selection/src/window.js +0 -8
- package/dist/node_modules/d3-selection/src/window.js.map +0 -1
- package/dist/node_modules/d3-timer/src/timeout.js +0 -12
- package/dist/node_modules/d3-timer/src/timeout.js.map +0 -1
- package/dist/node_modules/d3-timer/src/timer.js +0 -55
- package/dist/node_modules/d3-timer/src/timer.js.map +0 -1
- package/dist/node_modules/d3-transition/src/index.js +0 -3
- package/dist/node_modules/d3-transition/src/interrupt.js +0 -18
- package/dist/node_modules/d3-transition/src/interrupt.js.map +0 -1
- package/dist/node_modules/d3-transition/src/selection/index.js +0 -7
- package/dist/node_modules/d3-transition/src/selection/index.js.map +0 -1
- package/dist/node_modules/d3-transition/src/selection/interrupt.js +0 -11
- package/dist/node_modules/d3-transition/src/selection/interrupt.js.map +0 -1
- package/dist/node_modules/d3-transition/src/selection/transition.js +0 -25
- package/dist/node_modules/d3-transition/src/selection/transition.js.map +0 -1
- package/dist/node_modules/d3-transition/src/transition/attr.js +0 -51
- package/dist/node_modules/d3-transition/src/transition/attr.js.map +0 -1
- package/dist/node_modules/d3-transition/src/transition/attrTween.js +0 -40
- package/dist/node_modules/d3-transition/src/transition/attrTween.js.map +0 -1
- package/dist/node_modules/d3-transition/src/transition/delay.js +0 -20
- package/dist/node_modules/d3-transition/src/transition/delay.js.map +0 -1
- package/dist/node_modules/d3-transition/src/transition/duration.js +0 -20
- package/dist/node_modules/d3-transition/src/transition/duration.js.map +0 -1
- package/dist/node_modules/d3-transition/src/transition/ease.js +0 -16
- package/dist/node_modules/d3-transition/src/transition/ease.js.map +0 -1
- package/dist/node_modules/d3-transition/src/transition/easeVarying.js +0 -17
- package/dist/node_modules/d3-transition/src/transition/easeVarying.js.map +0 -1
- package/dist/node_modules/d3-transition/src/transition/end.js +0 -18
- package/dist/node_modules/d3-transition/src/transition/end.js.map +0 -1
- package/dist/node_modules/d3-transition/src/transition/filter.js +0 -12
- package/dist/node_modules/d3-transition/src/transition/filter.js.map +0 -1
- package/dist/node_modules/d3-transition/src/transition/index.js +0 -69
- package/dist/node_modules/d3-transition/src/transition/index.js.map +0 -1
- package/dist/node_modules/d3-transition/src/transition/interpolate.js +0 -13
- package/dist/node_modules/d3-transition/src/transition/interpolate.js.map +0 -1
- package/dist/node_modules/d3-transition/src/transition/merge.js +0 -12
- package/dist/node_modules/d3-transition/src/transition/merge.js.map +0 -1
- package/dist/node_modules/d3-transition/src/transition/on.js +0 -23
- package/dist/node_modules/d3-transition/src/transition/on.js.map +0 -1
- package/dist/node_modules/d3-transition/src/transition/remove.js +0 -15
- package/dist/node_modules/d3-transition/src/transition/remove.js.map +0 -1
- package/dist/node_modules/d3-transition/src/transition/schedule.js +0 -71
- package/dist/node_modules/d3-transition/src/transition/schedule.js.map +0 -1
- package/dist/node_modules/d3-transition/src/transition/select.js +0 -14
- package/dist/node_modules/d3-transition/src/transition/select.js.map +0 -1
- package/dist/node_modules/d3-transition/src/transition/selectAll.js +0 -17
- package/dist/node_modules/d3-transition/src/transition/selectAll.js.map +0 -1
- package/dist/node_modules/d3-transition/src/transition/selection.js +0 -10
- package/dist/node_modules/d3-transition/src/transition/selection.js.map +0 -1
- package/dist/node_modules/d3-transition/src/transition/style.js +0 -47
- package/dist/node_modules/d3-transition/src/transition/style.js.map +0 -1
- package/dist/node_modules/d3-transition/src/transition/styleTween.js +0 -25
- package/dist/node_modules/d3-transition/src/transition/styleTween.js.map +0 -1
- package/dist/node_modules/d3-transition/src/transition/text.js +0 -19
- package/dist/node_modules/d3-transition/src/transition/text.js.map +0 -1
- package/dist/node_modules/d3-transition/src/transition/textTween.js +0 -25
- package/dist/node_modules/d3-transition/src/transition/textTween.js.map +0 -1
- package/dist/node_modules/d3-transition/src/transition/transition.js +0 -19
- package/dist/node_modules/d3-transition/src/transition/transition.js.map +0 -1
- package/dist/node_modules/d3-transition/src/transition/tween.js +0 -56
- package/dist/node_modules/d3-transition/src/transition/tween.js.map +0 -1
- package/dist/node_modules/d3-zoom/src/constant.js +0 -6
- package/dist/node_modules/d3-zoom/src/constant.js.map +0 -1
- package/dist/node_modules/d3-zoom/src/event.js +0 -30
- package/dist/node_modules/d3-zoom/src/event.js.map +0 -1
- package/dist/node_modules/d3-zoom/src/index.js +0 -2
- package/dist/node_modules/d3-zoom/src/noevent.js +0 -11
- package/dist/node_modules/d3-zoom/src/noevent.js.map +0 -1
- package/dist/node_modules/d3-zoom/src/transform.js +0 -50
- package/dist/node_modules/d3-zoom/src/transform.js.map +0 -1
- package/dist/node_modules/d3-zoom/src/zoom.js +0 -219
- package/dist/node_modules/d3-zoom/src/zoom.js.map +0 -1
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +0 -56
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +0 -1
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js +0 -54
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js.map +0 -1
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +0 -54
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +0 -1
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js +0 -46
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js.map +0 -1
- package/dist/node_modules/use-sync-external-store/shim/index.js +0 -12
- package/dist/node_modules/use-sync-external-store/shim/index.js.map +0 -1
- package/dist/node_modules/use-sync-external-store/shim/with-selector.js +0 -12
- package/dist/node_modules/use-sync-external-store/shim/with-selector.js.map +0 -1
- package/dist/node_modules/zustand/esm/traditional.js +0 -17
- package/dist/node_modules/zustand/esm/traditional.js.map +0 -1
- package/dist/node_modules/zustand/esm/vanilla/shallow.js +0 -21
- package/dist/node_modules/zustand/esm/vanilla/shallow.js.map +0 -1
- package/dist/node_modules/zustand/esm/vanilla.js +0 -20
- package/dist/node_modules/zustand/esm/vanilla.js.map +0 -1
- package/dist/pages/ActionsPage.d.ts +0 -2
- package/dist/pages/ActionsPage.d.ts.map +0 -1
- package/dist/pages/AgentDetailsPage.d.ts +0 -5
- package/dist/pages/AgentDetailsPage.d.ts.map +0 -1
- package/dist/pages/AgentGraphPage.d.ts +0 -9
- package/dist/pages/AgentGraphPage.d.ts.map +0 -1
- package/dist/pages/AgentsLandingPage.d.ts +0 -12
- package/dist/pages/AgentsLandingPage.d.ts.map +0 -1
- package/dist/pages/AgentsPage.d.ts +0 -5
- package/dist/pages/AgentsPage.d.ts.map +0 -1
- package/dist/pages/AnalyticsPage.d.ts +0 -2
- package/dist/pages/AnalyticsPage.d.ts.map +0 -1
- package/dist/pages/CatalogDetailPage.d.ts +0 -2
- package/dist/pages/CatalogDetailPage.d.ts.map +0 -1
- package/dist/pages/CatalogDocsPage.d.ts +0 -2
- package/dist/pages/CatalogDocsPage.d.ts.map +0 -1
- package/dist/pages/CatalogPage.d.ts +0 -2
- package/dist/pages/CatalogPage.d.ts.map +0 -1
- package/dist/pages/ComponentDetailPage.d.ts +0 -2
- package/dist/pages/ComponentDetailPage.d.ts.map +0 -1
- package/dist/pages/ComponentDocsPage.d.ts +0 -2
- package/dist/pages/ComponentDocsPage.d.ts.map +0 -1
- package/dist/pages/ComponentsPage.d.ts +0 -2
- package/dist/pages/ComponentsPage.d.ts.map +0 -1
- package/dist/pages/GettingStartedPage.d.ts +0 -16
- package/dist/pages/GettingStartedPage.d.ts.map +0 -1
- package/dist/pages/HealthPage.d.ts +0 -2
- package/dist/pages/HealthPage.d.ts.map +0 -1
- package/dist/pages/LogsPage.d.ts +0 -2
- package/dist/pages/LogsPage.d.ts.map +0 -1
- package/dist/pages/NoteDetailsPage.d.ts +0 -2
- package/dist/pages/NoteDetailsPage.d.ts.map +0 -1
- package/dist/pages/OverviewPage.d.ts +0 -9
- package/dist/pages/OverviewPage.d.ts.map +0 -1
- package/dist/pages/SessionDetailsPage.d.ts +0 -6
- package/dist/pages/SessionDetailsPage.d.ts.map +0 -1
- package/dist/pages/SessionsPage.d.ts +0 -6
- package/dist/pages/SessionsPage.d.ts.map +0 -1
- package/dist/pages/SettingsPage.d.ts +0 -2
- package/dist/pages/SettingsPage.d.ts.map +0 -1
- package/dist/pages/SharedSessionPage.d.ts +0 -13
- package/dist/pages/SharedSessionPage.d.ts.map +0 -1
- package/dist/pages/SharedVibeDeckPage.d.ts +0 -8
- package/dist/pages/SharedVibeDeckPage.d.ts.map +0 -1
- package/dist/pages/TargetDetailsPage.d.ts +0 -13
- package/dist/pages/TargetDetailsPage.d.ts.map +0 -1
- package/dist/pages/TargetsPage.d.ts +0 -8
- package/dist/pages/TargetsPage.d.ts.map +0 -1
- package/dist/pages/TemplateDetailPage.d.ts +0 -2
- package/dist/pages/TemplateDetailPage.d.ts.map +0 -1
- package/dist/pages/TemplatesPage.d.ts +0 -2
- package/dist/pages/TemplatesPage.d.ts.map +0 -1
- package/dist/pages/TunnelsLandingPage.d.ts +0 -8
- package/dist/pages/TunnelsLandingPage.d.ts.map +0 -1
- package/dist/pages/VibeAuditPage.d.ts +0 -2
- package/dist/pages/VibeAuditPage.d.ts.map +0 -1
- package/dist/pages/VibeCalendarPage.d.ts +0 -9
- package/dist/pages/VibeCalendarPage.d.ts.map +0 -1
- package/dist/pages/VibeDeckPage.d.ts +0 -2
- package/dist/pages/VibeDeckPage.d.ts.map +0 -1
- package/dist/pages/VibeDetailsPage.d.ts +0 -5
- package/dist/pages/VibeDetailsPage.d.ts.map +0 -1
- package/dist/pages/VibeDocsPage.d.ts +0 -2
- package/dist/pages/VibeDocsPage.d.ts.map +0 -1
- package/dist/pages/VibeTaskDetailPage.d.ts +0 -9
- package/dist/pages/VibeTaskDetailPage.d.ts.map +0 -1
- package/dist/pages/VibesPage.d.ts +0 -5
- package/dist/pages/VibesPage.d.ts.map +0 -1
- package/dist/pages/WebhooksPage.d.ts +0 -5
- package/dist/pages/WebhooksPage.d.ts.map +0 -1
- package/dist/pages/ai/AIPage.d.ts +0 -6
- package/dist/pages/ai/AIPage.d.ts.map +0 -1
- package/dist/pages/ai/AISessionDetailPage.d.ts +0 -5
- package/dist/pages/ai/AISessionDetailPage.d.ts.map +0 -1
- package/dist/pages/ai/AgentManagerPage.d.ts +0 -9
- package/dist/pages/ai/AgentManagerPage.d.ts.map +0 -1
- package/dist/pages/index.d.ts +0 -17
- package/dist/pages/index.d.ts.map +0 -1
- package/dist/pages/tunnels/AuditTab.d.ts +0 -8
- package/dist/pages/tunnels/AuditTab.d.ts.map +0 -1
- package/dist/pages/tunnels/DomainsTab.d.ts +0 -2
- package/dist/pages/tunnels/DomainsTab.d.ts.map +0 -1
- package/dist/pages/tunnels/ProvidersTab.d.ts +0 -2
- package/dist/pages/tunnels/ProvidersTab.d.ts.map +0 -1
- package/dist/pages/tunnels/SessionsTab.d.ts +0 -8
- package/dist/pages/tunnels/SessionsTab.d.ts.map +0 -1
- package/dist/pages/tunnels/TunnelDetailsPage.d.ts +0 -2
- package/dist/pages/tunnels/TunnelDetailsPage.d.ts.map +0 -1
- package/dist/pages/tunnels/TunnelsTab.d.ts +0 -2
- package/dist/pages/tunnels/TunnelsTab.d.ts.map +0 -1
- package/dist/pages/tunnels/UsageTab.d.ts +0 -8
- package/dist/pages/tunnels/UsageTab.d.ts.map +0 -1
- package/dist/pages/tunnels/tabs/TunnelAuditTab.d.ts +0 -4
- package/dist/pages/tunnels/tabs/TunnelAuditTab.d.ts.map +0 -1
- package/dist/pages/tunnels/tabs/TunnelCliTab.d.ts +0 -8
- package/dist/pages/tunnels/tabs/TunnelCliTab.d.ts.map +0 -1
- package/dist/pages/tunnels/tabs/TunnelDomainsTab.d.ts +0 -8
- package/dist/pages/tunnels/tabs/TunnelDomainsTab.d.ts.map +0 -1
- package/dist/pages/tunnels/tabs/TunnelEndpointsTab.d.ts +0 -8
- package/dist/pages/tunnels/tabs/TunnelEndpointsTab.d.ts.map +0 -1
- package/dist/pages/tunnels/tabs/TunnelOverviewTab.d.ts +0 -8
- package/dist/pages/tunnels/tabs/TunnelOverviewTab.d.ts.map +0 -1
- package/dist/pages/tunnels/tabs/TunnelSessionsTab.d.ts +0 -4
- package/dist/pages/tunnels/tabs/TunnelSessionsTab.d.ts.map +0 -1
- package/dist/pages/tunnels/tabs/TunnelSettingsTab.d.ts +0 -9
- package/dist/pages/tunnels/tabs/TunnelSettingsTab.d.ts.map +0 -1
- package/dist/pages/tunnels/tabs/TunnelUsageTab.d.ts +0 -4
- package/dist/pages/tunnels/tabs/TunnelUsageTab.d.ts.map +0 -1
- package/dist/plugin.d.ts +0 -4
- package/dist/plugin.d.ts.map +0 -1
- package/dist/providers/AgentEventsProvider.d.ts +0 -79
- package/dist/providers/AgentEventsProvider.d.ts.map +0 -1
- package/dist/providers/VibeControlsProvider.d.ts +0 -29
- package/dist/providers/VibeControlsProvider.d.ts.map +0 -1
- package/dist/services/aiApi.d.ts +0 -310
- package/dist/services/aiApi.d.ts.map +0 -1
- package/dist/services/assistantApi.d.ts +0 -71
- package/dist/services/assistantApi.d.ts.map +0 -1
- package/dist/services/assistantExportService.d.ts +0 -9
- package/dist/services/assistantExportService.d.ts.map +0 -1
- package/dist/services/schedulerApi.d.ts +0 -18
- package/dist/services/schedulerApi.d.ts.map +0 -1
- package/dist/shared/hooks/useTr.d.ts +0 -17
- package/dist/shared/hooks/useTr.d.ts.map +0 -1
- package/dist/store/agentManagerStore.d.ts +0 -65
- package/dist/store/agentManagerStore.d.ts.map +0 -1
- package/dist/store/assistantStore.d.ts +0 -56
- package/dist/store/assistantStore.d.ts.map +0 -1
- package/dist/store/vibeControlsStore.d.ts +0 -68
- package/dist/store/vibeControlsStore.d.ts.map +0 -1
- package/dist/translations/en.d.ts +0 -2174
- package/dist/translations/en.d.ts.map +0 -1
- package/dist/types/agentManager.d.ts +0 -72
- package/dist/types/agentManager.d.ts.map +0 -1
- package/dist/types/assistant.d.ts +0 -58
- package/dist/types/assistant.d.ts.map +0 -1
- package/dist/types/index.d.ts +0 -134
- package/dist/types/index.d.ts.map +0 -1
- package/dist/utils/agentStatus.d.ts +0 -42
- package/dist/utils/agentStatus.d.ts.map +0 -1
- package/dist/utils/aiSessionNotFound.d.ts +0 -2
- package/dist/utils/aiSessionNotFound.d.ts.map +0 -1
- package/dist/utils/nativeBridge.d.ts +0 -3
- package/dist/utils/nativeBridge.d.ts.map +0 -1
- package/dist/utils/pageContext.d.ts +0 -23
- package/dist/utils/pageContext.d.ts.map +0 -1
- package/dist/utils/quotaUtils.d.ts +0 -8
- package/dist/utils/quotaUtils.d.ts.map +0 -1
- package/dist/utils/relativeTime.d.ts +0 -3
- package/dist/utils/relativeTime.d.ts.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { useCallback as e, useEffect as t, useRef as n, useState as r } from "react";
|
|
2
|
-
import { Bird as i, Brain as a, ChevronDown as o,
|
|
3
|
-
import { jsx as
|
|
2
|
+
import { Bird as i, Brain as a, ChevronDown as o, CloudCog as s, Code as c, Cpu as l, Github as u, Hammer as d, Map as f, MousePointerClick as p, Network as m, PenTool as h, Sparkles as g, Terminal as _, Wand2 as v, Zap as y } from "lucide-react";
|
|
3
|
+
import { jsx as b, jsxs as x } from "react/jsx-runtime";
|
|
4
4
|
//#region src/components/agent-manager/controls/SdkSelector.tsx
|
|
5
|
-
var
|
|
5
|
+
var S = [
|
|
6
6
|
{
|
|
7
7
|
value: "claude",
|
|
8
8
|
label: "Claude",
|
|
@@ -11,18 +11,38 @@ var v = [
|
|
|
11
11
|
{
|
|
12
12
|
value: "codex",
|
|
13
13
|
label: "Codex",
|
|
14
|
-
icon:
|
|
14
|
+
icon: c
|
|
15
15
|
},
|
|
16
16
|
{
|
|
17
17
|
value: "gemini",
|
|
18
18
|
label: "Gemini",
|
|
19
|
-
icon:
|
|
19
|
+
icon: g
|
|
20
20
|
},
|
|
21
21
|
{
|
|
22
22
|
value: "opencode",
|
|
23
23
|
label: "OpenCode",
|
|
24
|
+
icon: _
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
value: "cursor",
|
|
28
|
+
label: "Cursor",
|
|
29
|
+
icon: p
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
value: "openrouter",
|
|
33
|
+
label: "OpenRouter",
|
|
24
34
|
icon: m
|
|
25
35
|
},
|
|
36
|
+
{
|
|
37
|
+
value: "minimax",
|
|
38
|
+
label: "Minimax",
|
|
39
|
+
icon: v
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
value: "ollama",
|
|
43
|
+
label: "Ollama",
|
|
44
|
+
icon: s
|
|
45
|
+
},
|
|
26
46
|
{
|
|
27
47
|
value: "openai-compat",
|
|
28
48
|
label: "OpenAI-compatible",
|
|
@@ -36,38 +56,42 @@ var v = [
|
|
|
36
56
|
{
|
|
37
57
|
value: "amp",
|
|
38
58
|
label: "Amp",
|
|
39
|
-
icon:
|
|
59
|
+
icon: y
|
|
40
60
|
},
|
|
41
61
|
{
|
|
42
62
|
value: "copilot",
|
|
43
63
|
label: "Copilot",
|
|
44
|
-
icon:
|
|
64
|
+
icon: u
|
|
45
65
|
},
|
|
46
66
|
{
|
|
47
67
|
value: "crush",
|
|
48
68
|
label: "Crush",
|
|
49
|
-
icon:
|
|
69
|
+
icon: d
|
|
50
70
|
},
|
|
51
71
|
{
|
|
52
72
|
value: "pi",
|
|
53
73
|
label: "Pi",
|
|
54
|
-
icon:
|
|
74
|
+
icon: l
|
|
55
75
|
},
|
|
56
76
|
{
|
|
57
77
|
value: "aider",
|
|
58
78
|
label: "Aider",
|
|
59
|
-
icon:
|
|
79
|
+
icon: h
|
|
60
80
|
},
|
|
61
81
|
{
|
|
62
82
|
value: "plandex",
|
|
63
83
|
label: "Plandex",
|
|
64
|
-
icon:
|
|
84
|
+
icon: f
|
|
65
85
|
}
|
|
66
|
-
],
|
|
86
|
+
], C = {
|
|
67
87
|
claude: ["sdk", "cli"],
|
|
68
88
|
codex: ["sdk", "cli"],
|
|
69
89
|
gemini: ["sdk", "cli"],
|
|
70
90
|
opencode: ["sdk", "cli"],
|
|
91
|
+
cursor: ["sdk", "cli"],
|
|
92
|
+
openrouter: ["sdk"],
|
|
93
|
+
minimax: ["sdk", "cli"],
|
|
94
|
+
ollama: ["sdk", "cli"],
|
|
71
95
|
"openai-compat": ["sdk"],
|
|
72
96
|
goose: ["cli"],
|
|
73
97
|
amp: ["cli"],
|
|
@@ -76,36 +100,36 @@ var v = [
|
|
|
76
100
|
pi: ["cli"],
|
|
77
101
|
aider: ["cli"],
|
|
78
102
|
plandex: ["cli"]
|
|
79
|
-
},
|
|
80
|
-
function
|
|
103
|
+
}, w = ["sdk", "cli"], T = new Set(S.map((e) => e.value));
|
|
104
|
+
function E(e) {
|
|
81
105
|
return e === "sdk" || e === "cli";
|
|
82
106
|
}
|
|
83
|
-
function
|
|
107
|
+
function D(e) {
|
|
84
108
|
let t = (e.name || e.pluginName).replace(/^ai-/, "");
|
|
85
|
-
return
|
|
109
|
+
return T.has(t) ? t : null;
|
|
86
110
|
}
|
|
87
|
-
function
|
|
88
|
-
let n = e?.supportedModes?.filter(
|
|
89
|
-
return n && n.length > 0 ? n :
|
|
111
|
+
function O(e, t) {
|
|
112
|
+
let n = e?.supportedModes?.filter(E);
|
|
113
|
+
return n && n.length > 0 ? n : C[t];
|
|
90
114
|
}
|
|
91
|
-
function
|
|
92
|
-
let r =
|
|
115
|
+
function k(e, t, n) {
|
|
116
|
+
let r = O(e, t);
|
|
93
117
|
return r.includes(n) ? n : e?.defaultMode && r.includes(e.defaultMode) ? e.defaultMode : e?.currentMode && r.includes(e.currentMode) ? e.currentMode : r[0] ?? "cli";
|
|
94
118
|
}
|
|
95
|
-
function
|
|
96
|
-
let [u, d] = r(!1), [f, p] = r(""), m = n(null), h = n(null), [
|
|
119
|
+
function A({ sdk: i, mode: a, providers: s = [], onSdkChange: c, onModeChange: l }) {
|
|
120
|
+
let [u, d] = r(!1), [f, p] = r(""), m = n(null), h = n(null), [g, _] = r({
|
|
97
121
|
bottom: 0,
|
|
98
122
|
left: 0,
|
|
99
123
|
width: 0
|
|
100
|
-
}),
|
|
124
|
+
}), v = /* @__PURE__ */ new Map();
|
|
101
125
|
for (let e of s) {
|
|
102
|
-
let t =
|
|
103
|
-
t &&
|
|
126
|
+
let t = D(e);
|
|
127
|
+
t && v.set(t, e);
|
|
104
128
|
}
|
|
105
|
-
let
|
|
129
|
+
let y = (v.size > 0 ? S.filter((e) => v.has(e.value)) : S).map((e) => ({
|
|
106
130
|
...e,
|
|
107
|
-
label:
|
|
108
|
-
})),
|
|
131
|
+
label: v.get(e.value)?.displayName ?? e.label
|
|
132
|
+
})), C = y.find((e) => e.value === i) ?? S[0], T = C.icon, E = O(v.get(i), i), A = e((e) => {
|
|
109
133
|
m.current && !m.current.contains(e.target) && d(!1);
|
|
110
134
|
}, []);
|
|
111
135
|
t(() => {
|
|
@@ -113,17 +137,17 @@ function E({ sdk: i, mode: a, providers: s = [], onSdkChange: c, onModeChange: l
|
|
|
113
137
|
}, [u, A]), t(() => {
|
|
114
138
|
u || p("");
|
|
115
139
|
}, [u]);
|
|
116
|
-
let j =
|
|
117
|
-
return /* @__PURE__ */
|
|
140
|
+
let j = y.filter((e) => e.label.toLowerCase().includes(f.toLowerCase()));
|
|
141
|
+
return /* @__PURE__ */ x("div", {
|
|
118
142
|
ref: m,
|
|
119
143
|
className: "relative",
|
|
120
|
-
children: [/* @__PURE__ */
|
|
144
|
+
children: [/* @__PURE__ */ x("button", {
|
|
121
145
|
ref: h,
|
|
122
146
|
type: "button",
|
|
123
147
|
onClick: () => {
|
|
124
148
|
if (!u && h.current) {
|
|
125
149
|
let e = h.current.getBoundingClientRect();
|
|
126
|
-
|
|
150
|
+
_({
|
|
127
151
|
bottom: window.innerHeight - e.top + 4,
|
|
128
152
|
left: e.left,
|
|
129
153
|
width: Math.max(e.width, 192)
|
|
@@ -132,21 +156,21 @@ function E({ sdk: i, mode: a, providers: s = [], onSdkChange: c, onModeChange: l
|
|
|
132
156
|
d((e) => !e);
|
|
133
157
|
},
|
|
134
158
|
className: "flex items-center gap-1.5 px-2 py-1 text-xs font-medium rounded border border-border-default bg-bg-surface text-text-secondary hover:text-text-primary hover:border-border-strong transition-colors",
|
|
135
|
-
title: `${
|
|
159
|
+
title: `${C.label} (${a.toUpperCase()})`,
|
|
136
160
|
children: [
|
|
137
|
-
/* @__PURE__ */
|
|
138
|
-
/* @__PURE__ */
|
|
139
|
-
/* @__PURE__ */
|
|
161
|
+
/* @__PURE__ */ b(T, { className: "w-3.5 h-3.5" }),
|
|
162
|
+
/* @__PURE__ */ b("span", { children: C.label }),
|
|
163
|
+
/* @__PURE__ */ b(o, { className: "w-3 h-3" })
|
|
140
164
|
]
|
|
141
|
-
}), u && /* @__PURE__ */
|
|
165
|
+
}), u && /* @__PURE__ */ x("div", {
|
|
142
166
|
className: "fixed rounded-lg border border-border-default bg-bg-surface shadow-lg z-[100]",
|
|
143
167
|
style: {
|
|
144
|
-
bottom:
|
|
145
|
-
left:
|
|
146
|
-
minWidth:
|
|
168
|
+
bottom: g.bottom,
|
|
169
|
+
left: g.left,
|
|
170
|
+
minWidth: g.width
|
|
147
171
|
},
|
|
148
172
|
children: [
|
|
149
|
-
/* @__PURE__ */
|
|
173
|
+
/* @__PURE__ */ b("input", {
|
|
150
174
|
type: "text",
|
|
151
175
|
value: f,
|
|
152
176
|
onChange: (e) => p(e.target.value),
|
|
@@ -154,23 +178,23 @@ function E({ sdk: i, mode: a, providers: s = [], onSdkChange: c, onModeChange: l
|
|
|
154
178
|
className: "w-full px-3 py-1.5 text-xs border-b border-border-default bg-transparent text-text-primary placeholder:text-text-tertiary focus:outline-none",
|
|
155
179
|
autoFocus: !0
|
|
156
180
|
}),
|
|
157
|
-
/* @__PURE__ */
|
|
181
|
+
/* @__PURE__ */ b("div", {
|
|
158
182
|
className: "py-1 max-h-48 overflow-y-auto",
|
|
159
183
|
children: j.map((e) => {
|
|
160
|
-
let t = e.icon, n =
|
|
161
|
-
return /* @__PURE__ */
|
|
184
|
+
let t = e.icon, n = v.get(e.value), r = O(n, e.value);
|
|
185
|
+
return /* @__PURE__ */ x("button", {
|
|
162
186
|
type: "button",
|
|
163
187
|
onClick: () => {
|
|
164
|
-
let t =
|
|
188
|
+
let t = k(n, e.value, a);
|
|
165
189
|
c(e.value), t !== a && l(t), d(!1);
|
|
166
190
|
},
|
|
167
191
|
className: `w-full flex items-center gap-2 px-3 py-2 text-sm hover:bg-bg-elevated transition-colors ${e.value === i ? "text-action-primary-text bg-action-primary-bg/10" : "text-text-primary"}`,
|
|
168
192
|
children: [
|
|
169
|
-
/* @__PURE__ */
|
|
170
|
-
/* @__PURE__ */
|
|
171
|
-
/* @__PURE__ */
|
|
193
|
+
/* @__PURE__ */ b(t, { className: "w-4 h-4" }),
|
|
194
|
+
/* @__PURE__ */ b("span", { children: e.label }),
|
|
195
|
+
/* @__PURE__ */ b("span", {
|
|
172
196
|
className: "ml-auto flex items-center gap-1",
|
|
173
|
-
children:
|
|
197
|
+
children: w.map((e) => /* @__PURE__ */ b("span", {
|
|
174
198
|
className: `rounded px-1 py-0.5 text-[10px] font-semibold uppercase ${r.includes(e) ? "bg-bg-sunken text-text-secondary" : "border border-border-default text-text-tertiary opacity-50"}`,
|
|
175
199
|
children: e
|
|
176
200
|
}, e))
|
|
@@ -179,23 +203,23 @@ function E({ sdk: i, mode: a, providers: s = [], onSdkChange: c, onModeChange: l
|
|
|
179
203
|
}, e.value);
|
|
180
204
|
})
|
|
181
205
|
}),
|
|
182
|
-
/* @__PURE__ */
|
|
206
|
+
/* @__PURE__ */ b("div", {
|
|
183
207
|
className: "border-t border-border-default px-3 py-2",
|
|
184
|
-
children: /* @__PURE__ */
|
|
208
|
+
children: /* @__PURE__ */ x("div", {
|
|
185
209
|
className: "flex items-center rounded-md bg-bg-sunken p-0.5",
|
|
186
|
-
children: [/* @__PURE__ */
|
|
210
|
+
children: [/* @__PURE__ */ b("button", {
|
|
187
211
|
type: "button",
|
|
188
|
-
onClick: () =>
|
|
189
|
-
disabled: !
|
|
212
|
+
onClick: () => E.includes("sdk") && l("sdk"),
|
|
213
|
+
disabled: !E.includes("sdk"),
|
|
190
214
|
className: `flex-1 px-2 py-1 text-xs font-medium rounded transition-colors disabled:cursor-not-allowed disabled:opacity-40 ${a === "sdk" ? "bg-bg-surface text-text-primary shadow-sm" : "text-text-tertiary hover:text-text-secondary"}`,
|
|
191
|
-
title:
|
|
215
|
+
title: E.includes("sdk") ? "Use SDK mode" : `${C.label} does not support SDK mode`,
|
|
192
216
|
children: "SDK"
|
|
193
|
-
}), /* @__PURE__ */
|
|
217
|
+
}), /* @__PURE__ */ b("button", {
|
|
194
218
|
type: "button",
|
|
195
|
-
onClick: () =>
|
|
196
|
-
disabled: !
|
|
219
|
+
onClick: () => E.includes("cli") && l("cli"),
|
|
220
|
+
disabled: !E.includes("cli"),
|
|
197
221
|
className: `flex-1 px-2 py-1 text-xs font-medium rounded transition-colors disabled:cursor-not-allowed disabled:opacity-40 ${a === "cli" ? "bg-bg-surface text-text-primary shadow-sm" : "text-text-tertiary hover:text-text-secondary"}`,
|
|
198
|
-
title:
|
|
222
|
+
title: E.includes("cli") ? "Use CLI mode" : `${C.label} does not support CLI mode`,
|
|
199
223
|
children: "CLI"
|
|
200
224
|
})]
|
|
201
225
|
})
|
|
@@ -205,6 +229,6 @@ function E({ sdk: i, mode: a, providers: s = [], onSdkChange: c, onModeChange: l
|
|
|
205
229
|
});
|
|
206
230
|
}
|
|
207
231
|
//#endregion
|
|
208
|
-
export {
|
|
232
|
+
export { A as SdkSelector };
|
|
209
233
|
|
|
210
234
|
//# sourceMappingURL=SdkSelector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SdkSelector.js","names":[],"sources":["../../../../src/components/agent-manager/controls/SdkSelector.tsx"],"sourcesContent":["/**\n * SDK + mode selector dropdown.\n *\n * Shows the active SDK with an icon. The dropdown lists all available SDKs\n * and includes a mode toggle (SDK / CLI) at the bottom.\n */\n\nimport { useState, useRef, useEffect, useCallback } from 'react';\nimport {\n Brain,\n Code,\n Sparkles,\n Terminal,\n Bird,\n Zap,\n Github,\n Hammer,\n Cpu,\n PenTool,\n Map as MapIcon,\n ChevronDown,\n} from 'lucide-react';\nimport type { AgentSdkType, ProviderMode } from '@/types/agentManager';\nimport type { AIProvider } from '@/services/aiApi';\n\ninterface SdkSelectorProps {\n sdk: AgentSdkType;\n mode: ProviderMode;\n providers?: AIProvider[];\n onSdkChange: (sdk: AgentSdkType) => void;\n onModeChange: (mode: ProviderMode) => void;\n}\n\nconst SDK_OPTIONS: Array<{ value: AgentSdkType; label: string; icon: typeof Brain }> = [\n { value: 'claude', label: 'Claude', icon: Brain },\n { value: 'codex', label: 'Codex', icon: Code },\n { value: 'gemini', label: 'Gemini', icon: Sparkles },\n { value: 'opencode', label: 'OpenCode', icon: Terminal },\n { value: 'openai-compat', label: 'OpenAI-compatible', icon: Brain },\n { value: 'goose', label: 'Goose', icon: Bird },\n { value: 'amp', label: 'Amp', icon: Zap },\n { value: 'copilot', label: 'Copilot', icon: Github },\n { value: 'crush', label: 'Crush', icon: Hammer },\n { value: 'pi', label: 'Pi', icon: Cpu },\n { value: 'aider', label: 'Aider', icon: PenTool },\n { value: 'plandex', label: 'Plandex', icon: MapIcon },\n];\n\nconst STATIC_MODE_SUPPORT: Record<AgentSdkType, ProviderMode[]> = {\n claude: ['sdk', 'cli'],\n codex: ['sdk', 'cli'],\n gemini: ['sdk', 'cli'],\n opencode: ['sdk', 'cli'],\n 'openai-compat': ['sdk'],\n goose: ['cli'],\n amp: ['cli'],\n copilot: ['cli'],\n crush: ['cli'],\n pi: ['cli'],\n aider: ['cli'],\n plandex: ['cli'],\n};\n\nconst ALL_MODES: ProviderMode[] = ['sdk', 'cli'];\nconst SDK_VALUES = new Set(SDK_OPTIONS.map((option) => option.value));\n\nfunction isProviderMode(mode: unknown): mode is ProviderMode {\n return mode === 'sdk' || mode === 'cli';\n}\n\nfunction normalizeProviderSdk(provider: AIProvider): AgentSdkType | null {\n const value = (provider.name || provider.pluginName).replace(/^ai-/, '');\n return SDK_VALUES.has(value as AgentSdkType) ? (value as AgentSdkType) : null;\n}\n\nfunction providerModes(provider: AIProvider | undefined, sdk: AgentSdkType): ProviderMode[] {\n const modes = provider?.supportedModes?.filter(isProviderMode);\n return modes && modes.length > 0 ? modes : STATIC_MODE_SUPPORT[sdk];\n}\n\nfunction nextSupportedMode(\n provider: AIProvider | undefined,\n sdk: AgentSdkType,\n currentMode: ProviderMode\n): ProviderMode {\n const supported = providerModes(provider, sdk);\n if (supported.includes(currentMode)) return currentMode;\n if (provider?.defaultMode && supported.includes(provider.defaultMode))\n return provider.defaultMode;\n if (provider?.currentMode && supported.includes(provider.currentMode))\n return provider.currentMode;\n return supported[0] ?? 'cli';\n}\n\nexport function SdkSelector({\n sdk,\n mode,\n providers = [],\n onSdkChange,\n onModeChange,\n}: SdkSelectorProps) {\n const [open, setOpen] = useState(false);\n const [search, setSearch] = useState('');\n const containerRef = useRef<HTMLDivElement>(null);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const [pos, setPos] = useState({ bottom: 0, left: 0, width: 0 });\n\n const providerBySdk = new Map<AgentSdkType, AIProvider>();\n for (const provider of providers) {\n const providerSdk = normalizeProviderSdk(provider);\n if (providerSdk) providerBySdk.set(providerSdk, provider);\n }\n\n const options = (\n providerBySdk.size > 0\n ? SDK_OPTIONS.filter((option) => providerBySdk.has(option.value))\n : SDK_OPTIONS\n ).map((option) => ({\n ...option,\n label: providerBySdk.get(option.value)?.displayName ?? option.label,\n }));\n\n const current = options.find((o) => o.value === sdk) ?? SDK_OPTIONS[0];\n const CurrentIcon = current.icon;\n const currentProvider = providerBySdk.get(sdk);\n const currentModes = providerModes(currentProvider, sdk);\n\n const handleClickOutside = useCallback((e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n }, []);\n\n useEffect(() => {\n if (open) {\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }\n }, [open, handleClickOutside]);\n\n useEffect(() => {\n if (!open) setSearch('');\n }, [open]);\n\n const filtered = options.filter((o) => o.label.toLowerCase().includes(search.toLowerCase()));\n\n const handleToggle = () => {\n if (!open && buttonRef.current) {\n const rect = buttonRef.current.getBoundingClientRect();\n setPos({\n bottom: window.innerHeight - rect.top + 4,\n left: rect.left,\n width: Math.max(rect.width, 192),\n });\n }\n setOpen((prev) => !prev);\n };\n\n return (\n <div ref={containerRef} className=\"relative\">\n <button\n ref={buttonRef}\n type=\"button\"\n onClick={handleToggle}\n className=\"flex items-center gap-1.5 px-2 py-1 text-xs font-medium rounded border border-border-default bg-bg-surface text-text-secondary hover:text-text-primary hover:border-border-strong transition-colors\"\n title={`${current.label} (${mode.toUpperCase()})`}\n >\n <CurrentIcon className=\"w-3.5 h-3.5\" />\n <span>{current.label}</span>\n <ChevronDown className=\"w-3 h-3\" />\n </button>\n\n {open && (\n <div\n className=\"fixed rounded-lg border border-border-default bg-bg-surface shadow-lg z-[100]\"\n style={{ bottom: pos.bottom, left: pos.left, minWidth: pos.width }}\n >\n {/* Search */}\n <input\n type=\"text\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n placeholder=\"Search...\"\n className=\"w-full px-3 py-1.5 text-xs border-b border-border-default bg-transparent text-text-primary placeholder:text-text-tertiary focus:outline-none\"\n autoFocus\n />\n {/* SDK list */}\n <div className=\"py-1 max-h-48 overflow-y-auto\">\n {filtered.map((option) => {\n const Icon = option.icon;\n const optionProvider = providerBySdk.get(option.value);\n const modes = providerModes(optionProvider, option.value);\n return (\n <button\n key={option.value}\n type=\"button\"\n onClick={() => {\n const nextMode = nextSupportedMode(optionProvider, option.value, mode);\n onSdkChange(option.value);\n if (nextMode !== mode) onModeChange(nextMode);\n setOpen(false);\n }}\n className={`w-full flex items-center gap-2 px-3 py-2 text-sm hover:bg-bg-elevated transition-colors ${\n option.value === sdk\n ? 'text-action-primary-text bg-action-primary-bg/10'\n : 'text-text-primary'\n }`}\n >\n <Icon className=\"w-4 h-4\" />\n <span>{option.label}</span>\n <span className=\"ml-auto flex items-center gap-1\">\n {ALL_MODES.map((optionMode) => (\n <span\n key={optionMode}\n className={`rounded px-1 py-0.5 text-[10px] font-semibold uppercase ${\n modes.includes(optionMode)\n ? 'bg-bg-sunken text-text-secondary'\n : 'border border-border-default text-text-tertiary opacity-50'\n }`}\n >\n {optionMode}\n </span>\n ))}\n </span>\n </button>\n );\n })}\n </div>\n\n {/* Mode toggle */}\n <div className=\"border-t border-border-default px-3 py-2\">\n <div className=\"flex items-center rounded-md bg-bg-sunken p-0.5\">\n <button\n type=\"button\"\n onClick={() => currentModes.includes('sdk') && onModeChange('sdk')}\n disabled={!currentModes.includes('sdk')}\n className={`flex-1 px-2 py-1 text-xs font-medium rounded transition-colors disabled:cursor-not-allowed disabled:opacity-40 ${\n mode === 'sdk'\n ? 'bg-bg-surface text-text-primary shadow-sm'\n : 'text-text-tertiary hover:text-text-secondary'\n }`}\n title={\n currentModes.includes('sdk')\n ? 'Use SDK mode'\n : `${current.label} does not support SDK mode`\n }\n >\n SDK\n </button>\n <button\n type=\"button\"\n onClick={() => currentModes.includes('cli') && onModeChange('cli')}\n disabled={!currentModes.includes('cli')}\n className={`flex-1 px-2 py-1 text-xs font-medium rounded transition-colors disabled:cursor-not-allowed disabled:opacity-40 ${\n mode === 'cli'\n ? 'bg-bg-surface text-text-primary shadow-sm'\n : 'text-text-tertiary hover:text-text-secondary'\n }`}\n title={\n currentModes.includes('cli')\n ? 'Use CLI mode'\n : `${current.label} does not support CLI mode`\n }\n >\n CLI\n </button>\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SdkSelector.js","names":[],"sources":["../../../../src/components/agent-manager/controls/SdkSelector.tsx"],"sourcesContent":["/**\n * SDK + mode selector dropdown.\n *\n * Shows the active SDK with an icon. The dropdown lists all available SDKs\n * and includes a mode toggle (SDK / CLI) at the bottom.\n */\n\nimport { useState, useRef, useEffect, useCallback } from 'react';\nimport {\n Brain,\n Code,\n Sparkles,\n Terminal,\n Bird,\n Zap,\n Github,\n Hammer,\n Cpu,\n PenTool,\n Map as MapIcon,\n ChevronDown,\n MousePointerClick,\n Network,\n Wand2,\n CloudCog,\n} from 'lucide-react';\nimport type { AgentSdkType, ProviderMode } from '@/types/agentManager';\nimport type { AIProvider } from '@/services/aiApi';\n\ninterface SdkSelectorProps {\n sdk: AgentSdkType;\n mode: ProviderMode;\n providers?: AIProvider[];\n onSdkChange: (sdk: AgentSdkType) => void;\n onModeChange: (mode: ProviderMode) => void;\n}\n\nconst SDK_OPTIONS: Array<{ value: AgentSdkType; label: string; icon: typeof Brain }> = [\n { value: 'claude', label: 'Claude', icon: Brain },\n { value: 'codex', label: 'Codex', icon: Code },\n { value: 'gemini', label: 'Gemini', icon: Sparkles },\n { value: 'opencode', label: 'OpenCode', icon: Terminal },\n { value: 'cursor', label: 'Cursor', icon: MousePointerClick },\n { value: 'openrouter', label: 'OpenRouter', icon: Network },\n { value: 'minimax', label: 'Minimax', icon: Wand2 },\n { value: 'ollama', label: 'Ollama', icon: CloudCog },\n { value: 'openai-compat', label: 'OpenAI-compatible', icon: Brain },\n { value: 'goose', label: 'Goose', icon: Bird },\n { value: 'amp', label: 'Amp', icon: Zap },\n { value: 'copilot', label: 'Copilot', icon: Github },\n { value: 'crush', label: 'Crush', icon: Hammer },\n { value: 'pi', label: 'Pi', icon: Cpu },\n { value: 'aider', label: 'Aider', icon: PenTool },\n { value: 'plandex', label: 'Plandex', icon: MapIcon },\n];\n\n// Fallback when the agent-side `provider.supportedModes` isn't available\n// (offline / fresh install / older meta-plugin). The runtime path through\n// `providerModes()` below prefers the live value when present so adding\n// a new provider here is only a fallback affordance.\nconst STATIC_MODE_SUPPORT: Record<AgentSdkType, ProviderMode[]> = {\n claude: ['sdk', 'cli'],\n codex: ['sdk', 'cli'],\n gemini: ['sdk', 'cli'],\n opencode: ['sdk', 'cli'],\n cursor: ['sdk', 'cli'],\n openrouter: ['sdk'],\n minimax: ['sdk', 'cli'],\n ollama: ['sdk', 'cli'],\n 'openai-compat': ['sdk'],\n goose: ['cli'],\n amp: ['cli'],\n copilot: ['cli'],\n crush: ['cli'],\n pi: ['cli'],\n aider: ['cli'],\n plandex: ['cli'],\n};\n\nconst ALL_MODES: ProviderMode[] = ['sdk', 'cli'];\nconst SDK_VALUES = new Set(SDK_OPTIONS.map((option) => option.value));\n\nfunction isProviderMode(mode: unknown): mode is ProviderMode {\n return mode === 'sdk' || mode === 'cli';\n}\n\nfunction normalizeProviderSdk(provider: AIProvider): AgentSdkType | null {\n const value = (provider.name || provider.pluginName).replace(/^ai-/, '');\n return SDK_VALUES.has(value as AgentSdkType) ? (value as AgentSdkType) : null;\n}\n\nfunction providerModes(provider: AIProvider | undefined, sdk: AgentSdkType): ProviderMode[] {\n const modes = provider?.supportedModes?.filter(isProviderMode);\n return modes && modes.length > 0 ? modes : STATIC_MODE_SUPPORT[sdk];\n}\n\nfunction nextSupportedMode(\n provider: AIProvider | undefined,\n sdk: AgentSdkType,\n currentMode: ProviderMode\n): ProviderMode {\n const supported = providerModes(provider, sdk);\n if (supported.includes(currentMode)) return currentMode;\n if (provider?.defaultMode && supported.includes(provider.defaultMode))\n return provider.defaultMode;\n if (provider?.currentMode && supported.includes(provider.currentMode))\n return provider.currentMode;\n return supported[0] ?? 'cli';\n}\n\nexport function SdkSelector({\n sdk,\n mode,\n providers = [],\n onSdkChange,\n onModeChange,\n}: SdkSelectorProps) {\n const [open, setOpen] = useState(false);\n const [search, setSearch] = useState('');\n const containerRef = useRef<HTMLDivElement>(null);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const [pos, setPos] = useState({ bottom: 0, left: 0, width: 0 });\n\n const providerBySdk = new Map<AgentSdkType, AIProvider>();\n for (const provider of providers) {\n const providerSdk = normalizeProviderSdk(provider);\n if (providerSdk) providerBySdk.set(providerSdk, provider);\n }\n\n const options = (\n providerBySdk.size > 0\n ? SDK_OPTIONS.filter((option) => providerBySdk.has(option.value))\n : SDK_OPTIONS\n ).map((option) => ({\n ...option,\n label: providerBySdk.get(option.value)?.displayName ?? option.label,\n }));\n\n const current = options.find((o) => o.value === sdk) ?? SDK_OPTIONS[0];\n const CurrentIcon = current.icon;\n const currentProvider = providerBySdk.get(sdk);\n const currentModes = providerModes(currentProvider, sdk);\n\n const handleClickOutside = useCallback((e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n }, []);\n\n useEffect(() => {\n if (open) {\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }\n }, [open, handleClickOutside]);\n\n useEffect(() => {\n if (!open) setSearch('');\n }, [open]);\n\n const filtered = options.filter((o) => o.label.toLowerCase().includes(search.toLowerCase()));\n\n const handleToggle = () => {\n if (!open && buttonRef.current) {\n const rect = buttonRef.current.getBoundingClientRect();\n setPos({\n bottom: window.innerHeight - rect.top + 4,\n left: rect.left,\n width: Math.max(rect.width, 192),\n });\n }\n setOpen((prev) => !prev);\n };\n\n return (\n <div ref={containerRef} className=\"relative\">\n <button\n ref={buttonRef}\n type=\"button\"\n onClick={handleToggle}\n className=\"flex items-center gap-1.5 px-2 py-1 text-xs font-medium rounded border border-border-default bg-bg-surface text-text-secondary hover:text-text-primary hover:border-border-strong transition-colors\"\n title={`${current.label} (${mode.toUpperCase()})`}\n >\n <CurrentIcon className=\"w-3.5 h-3.5\" />\n <span>{current.label}</span>\n <ChevronDown className=\"w-3 h-3\" />\n </button>\n\n {open && (\n <div\n className=\"fixed rounded-lg border border-border-default bg-bg-surface shadow-lg z-[100]\"\n style={{ bottom: pos.bottom, left: pos.left, minWidth: pos.width }}\n >\n {/* Search */}\n <input\n type=\"text\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n placeholder=\"Search...\"\n className=\"w-full px-3 py-1.5 text-xs border-b border-border-default bg-transparent text-text-primary placeholder:text-text-tertiary focus:outline-none\"\n autoFocus\n />\n {/* SDK list */}\n <div className=\"py-1 max-h-48 overflow-y-auto\">\n {filtered.map((option) => {\n const Icon = option.icon;\n const optionProvider = providerBySdk.get(option.value);\n const modes = providerModes(optionProvider, option.value);\n return (\n <button\n key={option.value}\n type=\"button\"\n onClick={() => {\n const nextMode = nextSupportedMode(optionProvider, option.value, mode);\n onSdkChange(option.value);\n if (nextMode !== mode) onModeChange(nextMode);\n setOpen(false);\n }}\n className={`w-full flex items-center gap-2 px-3 py-2 text-sm hover:bg-bg-elevated transition-colors ${\n option.value === sdk\n ? 'text-action-primary-text bg-action-primary-bg/10'\n : 'text-text-primary'\n }`}\n >\n <Icon className=\"w-4 h-4\" />\n <span>{option.label}</span>\n <span className=\"ml-auto flex items-center gap-1\">\n {ALL_MODES.map((optionMode) => (\n <span\n key={optionMode}\n className={`rounded px-1 py-0.5 text-[10px] font-semibold uppercase ${\n modes.includes(optionMode)\n ? 'bg-bg-sunken text-text-secondary'\n : 'border border-border-default text-text-tertiary opacity-50'\n }`}\n >\n {optionMode}\n </span>\n ))}\n </span>\n </button>\n );\n })}\n </div>\n\n {/* Mode toggle */}\n <div className=\"border-t border-border-default px-3 py-2\">\n <div className=\"flex items-center rounded-md bg-bg-sunken p-0.5\">\n <button\n type=\"button\"\n onClick={() => currentModes.includes('sdk') && onModeChange('sdk')}\n disabled={!currentModes.includes('sdk')}\n className={`flex-1 px-2 py-1 text-xs font-medium rounded transition-colors disabled:cursor-not-allowed disabled:opacity-40 ${\n mode === 'sdk'\n ? 'bg-bg-surface text-text-primary shadow-sm'\n : 'text-text-tertiary hover:text-text-secondary'\n }`}\n title={\n currentModes.includes('sdk')\n ? 'Use SDK mode'\n : `${current.label} does not support SDK mode`\n }\n >\n SDK\n </button>\n <button\n type=\"button\"\n onClick={() => currentModes.includes('cli') && onModeChange('cli')}\n disabled={!currentModes.includes('cli')}\n className={`flex-1 px-2 py-1 text-xs font-medium rounded transition-colors disabled:cursor-not-allowed disabled:opacity-40 ${\n mode === 'cli'\n ? 'bg-bg-surface text-text-primary shadow-sm'\n : 'text-text-tertiary hover:text-text-secondary'\n }`}\n title={\n currentModes.includes('cli')\n ? 'Use CLI mode'\n : `${current.label} does not support CLI mode`\n }\n >\n CLI\n </button>\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -26,7 +26,7 @@ function h(e, t) {
|
|
|
26
26
|
let r = { ...n };
|
|
27
27
|
return t.model ? r.model = t.model : delete r.model, t.systemPrompt ? r.systemPrompt = t.systemPrompt : delete r.systemPrompt, t.maxTokens === null ? delete r.maxTokens : r.maxTokens = t.maxTokens, r.temperature = t.temperature, JSON.stringify(r, null, 2);
|
|
28
28
|
}
|
|
29
|
-
function g({ sessionId: g,
|
|
29
|
+
function g({ sessionId: g, agent: _ }) {
|
|
30
30
|
let v = e(), [y, b] = l(null), [x, S] = l(""), [C, w] = l(m({})), [T, E] = l(!0), [D, O] = l(!1), [k, A] = l(null), [j, M] = l(null), [N, P] = l(!1), [F, I] = l(!1), L = s((e) => {
|
|
31
31
|
try {
|
|
32
32
|
w(m(JSON.parse(e)));
|
|
@@ -135,7 +135,7 @@ function g({ sessionId: g, agentId: _ }) {
|
|
|
135
135
|
type: "text",
|
|
136
136
|
value: C.model,
|
|
137
137
|
onChange: (e) => z("model", e.target.value),
|
|
138
|
-
placeholder: "
|
|
138
|
+
placeholder: v("vibecontrols.agentManager.config.modelPlaceholder", "Model ID"),
|
|
139
139
|
disabled: H,
|
|
140
140
|
className: "w-full px-2 py-1.5 text-sm rounded border border-border-default bg-bg-primary text-text-primary disabled:opacity-50"
|
|
141
141
|
})] }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionConfigPanel.js","names":[],"sources":["../../../../src/components/agent-manager/detail/SessionConfigPanel.tsx"],"sourcesContent":["/**\n * Session configuration panel.\n *\n * Displays Quick Settings fields for common config options (model,\n * system prompt, max tokens, temperature) above an editable JSON\n * editor. Provides save and terminate actions with a confirmation dialog.\n */\n\nimport { useState, useEffect, useCallback } from 'react';\nimport { Save, Trash2 } from 'lucide-react';\nimport { LoadingState, ErrorState, ConfirmDialog } from '@/components/shared';\nimport {\n fetchSessions,\n updateSessionConfig,\n terminateSession,\n type AISession,\n} from '@/services/aiApi';\nimport { useTr } from '../../../shared/hooks/useTr';\n\ninterface SessionConfigFields {\n model: string;\n systemPrompt: string;\n maxTokens: number | null;\n temperature: number;\n [key: string]: unknown;\n}\n\nfunction parseConfigFields(raw: Record<string, unknown>): SessionConfigFields {\n return {\n model: typeof raw.model === 'string' ? raw.model : '',\n systemPrompt: typeof raw.systemPrompt === 'string' ? raw.systemPrompt : '',\n maxTokens: typeof raw.maxTokens === 'number' ? raw.maxTokens : null,\n temperature: typeof raw.temperature === 'number' ? raw.temperature : 0.7,\n };\n}\n\nfunction mergeFieldsIntoConfig(configText: string, fields: SessionConfigFields): string {\n let parsed: Record<string, unknown>;\n try {\n parsed = JSON.parse(configText) as Record<string, unknown>;\n } catch {\n parsed = {};\n }\n const merged = { ...parsed };\n if (fields.model) {\n merged.model = fields.model;\n } else {\n delete merged.model;\n }\n if (fields.systemPrompt) {\n merged.systemPrompt = fields.systemPrompt;\n } else {\n delete merged.systemPrompt;\n }\n if (fields.maxTokens !== null) {\n merged.maxTokens = fields.maxTokens;\n } else {\n delete merged.maxTokens;\n }\n merged.temperature = fields.temperature;\n return JSON.stringify(merged, null, 2);\n}\n\ninterface SessionConfigPanelProps {\n sessionId: string;\n agentId: string;\n}\n\nexport function SessionConfigPanel({ sessionId, agentId }: SessionConfigPanelProps) {\n const tr = useTr();\n const [session, setSession] = useState<AISession | null>(null);\n const [configText, setConfigText] = useState('');\n const [configFields, setConfigFields] = useState<SessionConfigFields>(parseConfigFields({}));\n const [loading, setLoading] = useState(true);\n const [saving, setSaving] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [parseError, setParseError] = useState<string | null>(null);\n const [showTerminate, setShowTerminate] = useState(false);\n const [terminating, setTerminating] = useState(false);\n\n const syncFieldsFromJson = useCallback((json: string) => {\n try {\n const parsed = JSON.parse(json) as Record<string, unknown>;\n setConfigFields(parseConfigFields(parsed));\n } catch {\n // Don't update fields if JSON is invalid\n }\n }, []);\n\n const loadConfig = useCallback(async () => {\n try {\n const sessions = await fetchSessions(agentId);\n const found = sessions.find((s) => s.id === sessionId);\n if (found) {\n setSession(found);\n const json = JSON.stringify(found.config ?? {}, null, 2);\n setConfigText(json);\n syncFieldsFromJson(json);\n } else {\n // Session row exists in the platform DB but the agent-side\n // session object only materialises after the first message.\n // Treat as empty defaults instead of error so the user can\n // still pre-edit config; the form save flow creates the\n // agent-side row on submit.\n setSession(null);\n setConfigText('{}');\n syncFieldsFromJson('{}');\n }\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to load config');\n } finally {\n setLoading(false);\n }\n }, [agentId, sessionId, syncFieldsFromJson]);\n\n useEffect(() => {\n setLoading(true);\n loadConfig();\n }, [loadConfig]);\n\n const updateConfigField = useCallback(\n (field: keyof SessionConfigFields, value: string | number | null) => {\n setConfigFields((prev) => {\n const next = { ...prev, [field]: value };\n setConfigText(mergeFieldsIntoConfig(configText, next));\n return next;\n });\n },\n [configText]\n );\n\n const handleSave = useCallback(async () => {\n setParseError(null);\n let parsed: Record<string, unknown>;\n try {\n parsed = JSON.parse(configText) as Record<string, unknown>;\n } catch {\n setParseError('Invalid JSON');\n return;\n }\n\n setSaving(true);\n try {\n const updated = await updateSessionConfig(agentId, sessionId, parsed);\n setSession(updated);\n const json = JSON.stringify(updated.config ?? {}, null, 2);\n setConfigText(json);\n syncFieldsFromJson(json);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to save config');\n } finally {\n setSaving(false);\n }\n }, [agentId, sessionId, configText, syncFieldsFromJson]);\n\n const handleTerminate = useCallback(async () => {\n setTerminating(true);\n try {\n await terminateSession(agentId, sessionId);\n setShowTerminate(false);\n // Reload to reflect terminated status\n await loadConfig();\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to terminate session');\n } finally {\n setTerminating(false);\n }\n }, [agentId, sessionId, loadConfig]);\n\n if (loading) return <LoadingState message=\"Loading config...\" />;\n if (error && !session) return <ErrorState message={error} onRetry={loadConfig} />;\n\n const isTerminated = session?.status === 'terminated';\n\n return (\n <div className=\"flex flex-col h-full\">\n <div className=\"flex-1 p-3 overflow-y-auto\">\n {/* Status */}\n {session && (\n <div className=\"mb-3 flex items-center gap-2\">\n <span className=\"text-xs text-text-tertiary\">Status:</span>\n <span\n className={`px-2 py-0.5 text-xs font-medium rounded-full ${\n session.status === 'active'\n ? 'bg-status-success-bg/10 text-status-success-text'\n : session.status === 'error'\n ? 'bg-status-error-bg/10 text-status-error-text'\n : session.status === 'terminated'\n ? 'bg-bg-sunken text-text-tertiary'\n : 'bg-status-warning-bg/10 text-status-warning-text'\n }`}\n >\n {session.status}\n </span>\n </div>\n )}\n\n {/* Quick Settings */}\n <div className=\"space-y-3 mb-4\">\n <h4 className=\"text-xs font-semibold text-text-secondary uppercase tracking-wider\">\n {tr('vibecontrols.agentManager.config.quickSettings', 'Quick Settings')}\n </h4>\n\n {/* Model */}\n <div>\n <label className=\"block text-xs text-text-secondary mb-1\">\n {tr('vibecontrols.agentManager.config.model', 'Model')}\n </label>\n <input\n type=\"text\"\n value={configFields.model}\n onChange={(e) => updateConfigField('model', e.target.value)}\n placeholder=\"e.g., claude-sonnet-4-20250514\"\n disabled={isTerminated}\n className=\"w-full px-2 py-1.5 text-sm rounded border border-border-default bg-bg-primary text-text-primary disabled:opacity-50\"\n />\n </div>\n\n {/* System Prompt */}\n <div>\n <label className=\"block text-xs text-text-secondary mb-1\">\n {tr('vibecontrols.agentManager.config.systemPrompt', 'System Prompt')}\n </label>\n <textarea\n value={configFields.systemPrompt}\n onChange={(e) => updateConfigField('systemPrompt', e.target.value)}\n placeholder=\"Instructions for the AI...\"\n rows={2}\n disabled={isTerminated}\n className=\"w-full px-2 py-1.5 text-sm rounded border border-border-default bg-bg-primary text-text-primary resize-none disabled:opacity-50\"\n />\n </div>\n\n {/* Max Tokens */}\n <div>\n <label className=\"block text-xs text-text-secondary mb-1\">\n {tr('vibecontrols.agentManager.config.maxTokens', 'Max Tokens')}\n </label>\n <input\n type=\"number\"\n value={configFields.maxTokens ?? ''}\n onChange={(e) =>\n updateConfigField('maxTokens', e.target.value ? Number(e.target.value) : null)\n }\n placeholder=\"4096\"\n disabled={isTerminated}\n className=\"w-full px-2 py-1.5 text-sm rounded border border-border-default bg-bg-primary text-text-primary disabled:opacity-50\"\n />\n </div>\n\n {/* Temperature */}\n <div>\n <label className=\"block text-xs text-text-secondary mb-1\">\n {tr('vibecontrols.agentManager.config.temperature', 'Temperature (0-1)')}\n </label>\n <input\n type=\"range\"\n min=\"0\"\n max=\"1\"\n step=\"0.1\"\n value={configFields.temperature}\n onChange={(e) => updateConfigField('temperature', Number(e.target.value))}\n disabled={isTerminated}\n className=\"w-full\"\n />\n <span className=\"text-xs text-text-tertiary\">{configFields.temperature}</span>\n </div>\n </div>\n\n <div className=\"border-t border-border-default pt-3\">\n <h4 className=\"text-xs font-semibold text-text-secondary uppercase tracking-wider mb-2\">\n {tr('vibecontrols.agentManager.config.advancedJson', 'Advanced (JSON)')}\n </h4>\n\n {/* JSON editor */}\n <textarea\n value={configText}\n onChange={(e) => {\n setConfigText(e.target.value);\n setParseError(null);\n syncFieldsFromJson(e.target.value);\n }}\n disabled={isTerminated}\n className=\"w-full h-48 rounded-lg border border-border-default bg-bg-primary px-3 py-2 text-xs font-mono text-text-primary placeholder:text-text-tertiary focus:outline-none focus:border-border-strong transition-colors resize-y disabled:opacity-50\"\n spellCheck={false}\n />\n {parseError && <p className=\"mt-1 text-xs text-status-error-text\">{parseError}</p>}\n {error && session && <p className=\"mt-1 text-xs text-status-error-text\">{error}</p>}\n </div>\n </div>\n\n {/* Action buttons */}\n <div className=\"flex items-center gap-2 p-3 border-t border-border-default\">\n <button\n type=\"button\"\n onClick={handleSave}\n disabled={saving || isTerminated}\n className=\"flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium rounded-md bg-action-primary-bg text-action-primary-text hover:bg-action-primary-bg-hover disabled:opacity-40 disabled:cursor-not-allowed transition-colors\"\n >\n <Save className=\"w-3.5 h-3.5\" />\n {saving\n ? tr('vibecontrols.agentManager.config.saving', 'Saving...')\n : tr('vibecontrols.agentManager.config.save', 'Save')}\n </button>\n <div className=\"flex-1\" />\n <button\n type=\"button\"\n onClick={() => setShowTerminate(true)}\n disabled={isTerminated}\n className=\"flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium rounded-md bg-status-error-bg/10 text-status-error-text hover:bg-status-error-bg/20 disabled:opacity-40 disabled:cursor-not-allowed transition-colors\"\n >\n <Trash2 className=\"w-3.5 h-3.5\" />\n {tr('vibecontrols.agentManager.config.terminate', 'Terminate')}\n </button>\n </div>\n\n <ConfirmDialog\n isOpen={showTerminate}\n onClose={() => setShowTerminate(false)}\n onConfirm={handleTerminate}\n title={tr('vibecontrols.agentManager.config.terminateSessionTitle', 'Terminate Session')}\n message={tr(\n 'vibecontrols.agentManager.config.terminateConfirm',\n 'Are you sure you want to terminate this session? This action cannot be undone.'\n )}\n confirmLabel={tr('vibecontrols.agentManager.config.terminate', 'Terminate')}\n variant=\"danger\"\n isLoading={terminating}\n />\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;AA2BA,SAAS,EAAkB,GAAmD;AAC5E,QAAO;EACL,OAAO,OAAO,EAAI,SAAU,WAAW,EAAI,QAAQ;EACnD,cAAc,OAAO,EAAI,gBAAiB,WAAW,EAAI,eAAe;EACxE,WAAW,OAAO,EAAI,aAAc,WAAW,EAAI,YAAY;EAC/D,aAAa,OAAO,EAAI,eAAgB,WAAW,EAAI,cAAc;EACtE;;AAGH,SAAS,EAAsB,GAAoB,GAAqC;CACtF,IAAI;AACJ,KAAI;AACF,MAAS,KAAK,MAAM,EAAW;SACzB;AACN,MAAS,EAAE;;CAEb,IAAM,IAAS,EAAE,GAAG,GAAQ;AAiB5B,QAhBI,EAAO,QACT,EAAO,QAAQ,EAAO,QAEtB,OAAO,EAAO,OAEZ,EAAO,eACT,EAAO,eAAe,EAAO,eAE7B,OAAO,EAAO,cAEZ,EAAO,cAAc,OAGvB,OAAO,EAAO,YAFd,EAAO,YAAY,EAAO,WAI5B,EAAO,cAAc,EAAO,aACrB,KAAK,UAAU,GAAQ,MAAM,EAAE;;AAQxC,SAAgB,EAAmB,EAAE,cAAW,cAAoC;CAClF,IAAM,IAAK,GAAO,EACZ,CAAC,GAAS,KAAc,EAA2B,KAAK,EACxD,CAAC,GAAY,KAAiB,EAAS,GAAG,EAC1C,CAAC,GAAc,KAAmB,EAA8B,EAAkB,EAAE,CAAC,CAAC,EACtF,CAAC,GAAS,KAAc,EAAS,GAAK,EACtC,CAAC,GAAQ,KAAa,EAAS,GAAM,EACrC,CAAC,GAAO,KAAY,EAAwB,KAAK,EACjD,CAAC,GAAY,KAAiB,EAAwB,KAAK,EAC3D,CAAC,GAAe,KAAoB,EAAS,GAAM,EACnD,CAAC,GAAa,KAAkB,EAAS,GAAM,EAE/C,IAAqB,GAAa,MAAiB;AACvD,MAAI;AAEF,KAAgB,EADD,KAAK,MAAM,EAAK,CACU,CAAC;UACpC;IAGP,EAAE,CAAC,EAEA,IAAa,EAAY,YAAY;AACzC,MAAI;GAEF,IAAM,KADW,MAAM,EAAc,EAAQ,EACtB,MAAM,MAAM,EAAE,OAAO,EAAU;AACtD,OAAI,GAAO;AACT,MAAW,EAAM;IACjB,IAAM,IAAO,KAAK,UAAU,EAAM,UAAU,EAAE,EAAE,MAAM,EAAE;AAExD,IADA,EAAc,EAAK,EACnB,EAAmB,EAAK;SASxB,CAFA,EAAW,KAAK,EAChB,EAAc,KAAK,EACnB,EAAmB,KAAK;WAEnB,GAAK;AACZ,KAAS,aAAe,QAAQ,EAAI,UAAU,wBAAwB;YAC9D;AACR,KAAW,GAAM;;IAElB;EAAC;EAAS;EAAW;EAAmB,CAAC;AAE5C,SAAgB;AAEd,EADA,EAAW,GAAK,EAChB,GAAY;IACX,CAAC,EAAW,CAAC;CAEhB,IAAM,IAAoB,GACvB,GAAkC,MAAkC;AACnE,KAAiB,MAAS;GACxB,IAAM,IAAO;IAAE,GAAG;KAAO,IAAQ;IAAO;AAExC,UADA,EAAc,EAAsB,GAAY,EAAK,CAAC,EAC/C;IACP;IAEJ,CAAC,EAAW,CACb,EAEK,IAAa,EAAY,YAAY;AACzC,IAAc,KAAK;EACnB,IAAI;AACJ,MAAI;AACF,OAAS,KAAK,MAAM,EAAW;UACzB;AACN,KAAc,eAAe;AAC7B;;AAGF,IAAU,GAAK;AACf,MAAI;GACF,IAAM,IAAU,MAAM,EAAoB,GAAS,GAAW,EAAO;AACrE,KAAW,EAAQ;GACnB,IAAM,IAAO,KAAK,UAAU,EAAQ,UAAU,EAAE,EAAE,MAAM,EAAE;AAE1D,GADA,EAAc,EAAK,EACnB,EAAmB,EAAK;WACjB,GAAK;AACZ,KAAS,aAAe,QAAQ,EAAI,UAAU,wBAAwB;YAC9D;AACR,KAAU,GAAM;;IAEjB;EAAC;EAAS;EAAW;EAAY;EAAmB,CAAC,EAElD,IAAkB,EAAY,YAAY;AAC9C,IAAe,GAAK;AACpB,MAAI;AAIF,GAHA,MAAM,EAAiB,GAAS,EAAU,EAC1C,EAAiB,GAAM,EAEvB,MAAM,GAAY;WACX,GAAK;AACZ,KAAS,aAAe,QAAQ,EAAI,UAAU,8BAA8B;YACpE;AACR,KAAe,GAAM;;IAEtB;EAAC;EAAS;EAAW;EAAW,CAAC;AAEpC,KAAI,EAAS,QAAO,kBAAC,GAAD,EAAc,SAAQ,qBAAsB,CAAA;AAChE,KAAI,KAAS,CAAC,EAAS,QAAO,kBAAC,GAAD;EAAY,SAAS;EAAO,SAAS;EAAc,CAAA;CAEjF,IAAM,IAAe,GAAS,WAAW;AAEzC,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,OAAD;IAAK,WAAU;cAAf;KAEG,KACC,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,QAAD;OAAM,WAAU;iBAA6B;OAAc,CAAA,EAC3D,kBAAC,QAAD;OACE,WAAW,gDACT,EAAQ,WAAW,WACf,qDACA,EAAQ,WAAW,UACjB,iDACA,EAAQ,WAAW,eACjB,oCACA;iBAGT,EAAQ;OACJ,CAAA,CACH;;KAIR,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACE,kBAAC,MAAD;QAAI,WAAU;kBACX,EAAG,kDAAkD,iBAAiB;QACpE,CAAA;OAGL,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;QAAO,WAAU;kBACd,EAAG,0CAA0C,QAAQ;QAChD,CAAA,EACR,kBAAC,SAAD;QACE,MAAK;QACL,OAAO,EAAa;QACpB,WAAW,MAAM,EAAkB,SAAS,EAAE,OAAO,MAAM;QAC3D,aAAY;QACZ,UAAU;QACV,WAAU;QACV,CAAA,CACE,EAAA,CAAA;OAGN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;QAAO,WAAU;kBACd,EAAG,iDAAiD,gBAAgB;QAC/D,CAAA,EACR,kBAAC,YAAD;QACE,OAAO,EAAa;QACpB,WAAW,MAAM,EAAkB,gBAAgB,EAAE,OAAO,MAAM;QAClE,aAAY;QACZ,MAAM;QACN,UAAU;QACV,WAAU;QACV,CAAA,CACE,EAAA,CAAA;OAGN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;QAAO,WAAU;kBACd,EAAG,8CAA8C,aAAa;QACzD,CAAA,EACR,kBAAC,SAAD;QACE,MAAK;QACL,OAAO,EAAa,aAAa;QACjC,WAAW,MACT,EAAkB,aAAa,EAAE,OAAO,QAAQ,OAAO,EAAE,OAAO,MAAM,GAAG,KAAK;QAEhF,aAAY;QACZ,UAAU;QACV,WAAU;QACV,CAAA,CACE,EAAA,CAAA;OAGN,kBAAC,OAAD,EAAA,UAAA;QACE,kBAAC,SAAD;SAAO,WAAU;mBACd,EAAG,gDAAgD,oBAAoB;SAClE,CAAA;QACR,kBAAC,SAAD;SACE,MAAK;SACL,KAAI;SACJ,KAAI;SACJ,MAAK;SACL,OAAO,EAAa;SACpB,WAAW,MAAM,EAAkB,eAAe,OAAO,EAAE,OAAO,MAAM,CAAC;SACzE,UAAU;SACV,WAAU;SACV,CAAA;QACF,kBAAC,QAAD;SAAM,WAAU;mBAA8B,EAAa;SAAmB,CAAA;QAC1E,EAAA,CAAA;OACF;;KAEN,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACE,kBAAC,MAAD;QAAI,WAAU;kBACX,EAAG,iDAAiD,kBAAkB;QACpE,CAAA;OAGL,kBAAC,YAAD;QACE,OAAO;QACP,WAAW,MAAM;AAGf,SAFA,EAAc,EAAE,OAAO,MAAM,EAC7B,EAAc,KAAK,EACnB,EAAmB,EAAE,OAAO,MAAM;;QAEpC,UAAU;QACV,WAAU;QACV,YAAY;QACZ,CAAA;OACD,KAAc,kBAAC,KAAD;QAAG,WAAU;kBAAuC;QAAe,CAAA;OACjF,KAAS,KAAW,kBAAC,KAAD;QAAG,WAAU;kBAAuC;QAAU,CAAA;OAC/E;;KACF;;GAGN,kBAAC,OAAD;IAAK,WAAU;cAAf;KACE,kBAAC,UAAD;MACE,MAAK;MACL,SAAS;MACT,UAAU,KAAU;MACpB,WAAU;gBAJZ,CAME,kBAAC,GAAD,EAAM,WAAU,eAAgB,CAAA,EAC/B,IACG,EAAG,2CAA2C,YAAY,GAC1D,EAAG,yCAAyC,OAAO,CAChD;;KACT,kBAAC,OAAD,EAAK,WAAU,UAAW,CAAA;KAC1B,kBAAC,UAAD;MACE,MAAK;MACL,eAAe,EAAiB,GAAK;MACrC,UAAU;MACV,WAAU;gBAJZ,CAME,kBAAC,GAAD,EAAQ,WAAU,eAAgB,CAAA,EACjC,EAAG,8CAA8C,YAAY,CACvD;;KACL;;GAEN,kBAAC,GAAD;IACE,QAAQ;IACR,eAAe,EAAiB,GAAM;IACtC,WAAW;IACX,OAAO,EAAG,0DAA0D,oBAAoB;IACxF,SAAS,EACP,qDACA,iFACD;IACD,cAAc,EAAG,8CAA8C,YAAY;IAC3E,SAAQ;IACR,WAAW;IACX,CAAA;GACE"}
|
|
1
|
+
{"version":3,"file":"SessionConfigPanel.js","names":[],"sources":["../../../../src/components/agent-manager/detail/SessionConfigPanel.tsx"],"sourcesContent":["/**\n * Session configuration panel.\n *\n * Displays Quick Settings fields for common config options (model,\n * system prompt, max tokens, temperature) above an editable JSON\n * editor. Provides save and terminate actions with a confirmation dialog.\n */\n\nimport { useState, useEffect, useCallback } from 'react';\nimport { Save, Trash2 } from 'lucide-react';\nimport { LoadingState, ErrorState, ConfirmDialog } from '@/components/shared';\nimport {\n fetchSessions,\n updateSessionConfig,\n terminateSession,\n type AISession,\n type AgentRef,\n} from '@/services/aiApi';\nimport { useTr } from '../../../shared/hooks/useTr';\n\ninterface SessionConfigFields {\n model: string;\n systemPrompt: string;\n maxTokens: number | null;\n temperature: number;\n [key: string]: unknown;\n}\n\nfunction parseConfigFields(raw: Record<string, unknown>): SessionConfigFields {\n return {\n model: typeof raw.model === 'string' ? raw.model : '',\n systemPrompt: typeof raw.systemPrompt === 'string' ? raw.systemPrompt : '',\n maxTokens: typeof raw.maxTokens === 'number' ? raw.maxTokens : null,\n temperature: typeof raw.temperature === 'number' ? raw.temperature : 0.7,\n };\n}\n\nfunction mergeFieldsIntoConfig(configText: string, fields: SessionConfigFields): string {\n let parsed: Record<string, unknown>;\n try {\n parsed = JSON.parse(configText) as Record<string, unknown>;\n } catch {\n parsed = {};\n }\n const merged = { ...parsed };\n if (fields.model) {\n merged.model = fields.model;\n } else {\n delete merged.model;\n }\n if (fields.systemPrompt) {\n merged.systemPrompt = fields.systemPrompt;\n } else {\n delete merged.systemPrompt;\n }\n if (fields.maxTokens !== null) {\n merged.maxTokens = fields.maxTokens;\n } else {\n delete merged.maxTokens;\n }\n merged.temperature = fields.temperature;\n return JSON.stringify(merged, null, 2);\n}\n\ninterface SessionConfigPanelProps {\n sessionId: string;\n agent: AgentRef;\n}\n\nexport function SessionConfigPanel({ sessionId, agent }: SessionConfigPanelProps) {\n const tr = useTr();\n const [session, setSession] = useState<AISession | null>(null);\n const [configText, setConfigText] = useState('');\n const [configFields, setConfigFields] = useState<SessionConfigFields>(parseConfigFields({}));\n const [loading, setLoading] = useState(true);\n const [saving, setSaving] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [parseError, setParseError] = useState<string | null>(null);\n const [showTerminate, setShowTerminate] = useState(false);\n const [terminating, setTerminating] = useState(false);\n\n const syncFieldsFromJson = useCallback((json: string) => {\n try {\n const parsed = JSON.parse(json) as Record<string, unknown>;\n setConfigFields(parseConfigFields(parsed));\n } catch {\n // Don't update fields if JSON is invalid\n }\n }, []);\n\n const loadConfig = useCallback(async () => {\n try {\n const sessions = await fetchSessions(agent);\n const found = sessions.find((s) => s.id === sessionId);\n if (found) {\n setSession(found);\n const json = JSON.stringify(found.config ?? {}, null, 2);\n setConfigText(json);\n syncFieldsFromJson(json);\n } else {\n // Session row exists in the platform DB but the agent-side\n // session object only materialises after the first message.\n // Treat as empty defaults instead of error so the user can\n // still pre-edit config; the form save flow creates the\n // agent-side row on submit.\n setSession(null);\n setConfigText('{}');\n syncFieldsFromJson('{}');\n }\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to load config');\n } finally {\n setLoading(false);\n }\n }, [agent, sessionId, syncFieldsFromJson]);\n\n useEffect(() => {\n setLoading(true);\n loadConfig();\n }, [loadConfig]);\n\n const updateConfigField = useCallback(\n (field: keyof SessionConfigFields, value: string | number | null) => {\n setConfigFields((prev) => {\n const next = { ...prev, [field]: value };\n setConfigText(mergeFieldsIntoConfig(configText, next));\n return next;\n });\n },\n [configText]\n );\n\n const handleSave = useCallback(async () => {\n setParseError(null);\n let parsed: Record<string, unknown>;\n try {\n parsed = JSON.parse(configText) as Record<string, unknown>;\n } catch {\n setParseError('Invalid JSON');\n return;\n }\n\n setSaving(true);\n try {\n const updated = await updateSessionConfig(agent, sessionId, parsed);\n setSession(updated);\n const json = JSON.stringify(updated.config ?? {}, null, 2);\n setConfigText(json);\n syncFieldsFromJson(json);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to save config');\n } finally {\n setSaving(false);\n }\n }, [agent, sessionId, configText, syncFieldsFromJson]);\n\n const handleTerminate = useCallback(async () => {\n setTerminating(true);\n try {\n await terminateSession(agent, sessionId);\n setShowTerminate(false);\n // Reload to reflect terminated status\n await loadConfig();\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to terminate session');\n } finally {\n setTerminating(false);\n }\n }, [agent, sessionId, loadConfig]);\n\n if (loading) return <LoadingState message=\"Loading config...\" />;\n if (error && !session) return <ErrorState message={error} onRetry={loadConfig} />;\n\n const isTerminated = session?.status === 'terminated';\n\n return (\n <div className=\"flex flex-col h-full\">\n <div className=\"flex-1 p-3 overflow-y-auto\">\n {/* Status */}\n {session && (\n <div className=\"mb-3 flex items-center gap-2\">\n <span className=\"text-xs text-text-tertiary\">Status:</span>\n <span\n className={`px-2 py-0.5 text-xs font-medium rounded-full ${\n session.status === 'active'\n ? 'bg-status-success-bg/10 text-status-success-text'\n : session.status === 'error'\n ? 'bg-status-error-bg/10 text-status-error-text'\n : session.status === 'terminated'\n ? 'bg-bg-sunken text-text-tertiary'\n : 'bg-status-warning-bg/10 text-status-warning-text'\n }`}\n >\n {session.status}\n </span>\n </div>\n )}\n\n {/* Quick Settings */}\n <div className=\"space-y-3 mb-4\">\n <h4 className=\"text-xs font-semibold text-text-secondary uppercase tracking-wider\">\n {tr('vibecontrols.agentManager.config.quickSettings', 'Quick Settings')}\n </h4>\n\n {/* Model */}\n <div>\n <label className=\"block text-xs text-text-secondary mb-1\">\n {tr('vibecontrols.agentManager.config.model', 'Model')}\n </label>\n <input\n type=\"text\"\n value={configFields.model}\n onChange={(e) => updateConfigField('model', e.target.value)}\n placeholder={tr('vibecontrols.agentManager.config.modelPlaceholder', 'Model ID')}\n disabled={isTerminated}\n className=\"w-full px-2 py-1.5 text-sm rounded border border-border-default bg-bg-primary text-text-primary disabled:opacity-50\"\n />\n </div>\n\n {/* System Prompt */}\n <div>\n <label className=\"block text-xs text-text-secondary mb-1\">\n {tr('vibecontrols.agentManager.config.systemPrompt', 'System Prompt')}\n </label>\n <textarea\n value={configFields.systemPrompt}\n onChange={(e) => updateConfigField('systemPrompt', e.target.value)}\n placeholder=\"Instructions for the AI...\"\n rows={2}\n disabled={isTerminated}\n className=\"w-full px-2 py-1.5 text-sm rounded border border-border-default bg-bg-primary text-text-primary resize-none disabled:opacity-50\"\n />\n </div>\n\n {/* Max Tokens */}\n <div>\n <label className=\"block text-xs text-text-secondary mb-1\">\n {tr('vibecontrols.agentManager.config.maxTokens', 'Max Tokens')}\n </label>\n <input\n type=\"number\"\n value={configFields.maxTokens ?? ''}\n onChange={(e) =>\n updateConfigField('maxTokens', e.target.value ? Number(e.target.value) : null)\n }\n placeholder=\"4096\"\n disabled={isTerminated}\n className=\"w-full px-2 py-1.5 text-sm rounded border border-border-default bg-bg-primary text-text-primary disabled:opacity-50\"\n />\n </div>\n\n {/* Temperature */}\n <div>\n <label className=\"block text-xs text-text-secondary mb-1\">\n {tr('vibecontrols.agentManager.config.temperature', 'Temperature (0-1)')}\n </label>\n <input\n type=\"range\"\n min=\"0\"\n max=\"1\"\n step=\"0.1\"\n value={configFields.temperature}\n onChange={(e) => updateConfigField('temperature', Number(e.target.value))}\n disabled={isTerminated}\n className=\"w-full\"\n />\n <span className=\"text-xs text-text-tertiary\">{configFields.temperature}</span>\n </div>\n </div>\n\n <div className=\"border-t border-border-default pt-3\">\n <h4 className=\"text-xs font-semibold text-text-secondary uppercase tracking-wider mb-2\">\n {tr('vibecontrols.agentManager.config.advancedJson', 'Advanced (JSON)')}\n </h4>\n\n {/* JSON editor */}\n <textarea\n value={configText}\n onChange={(e) => {\n setConfigText(e.target.value);\n setParseError(null);\n syncFieldsFromJson(e.target.value);\n }}\n disabled={isTerminated}\n className=\"w-full h-48 rounded-lg border border-border-default bg-bg-primary px-3 py-2 text-xs font-mono text-text-primary placeholder:text-text-tertiary focus:outline-none focus:border-border-strong transition-colors resize-y disabled:opacity-50\"\n spellCheck={false}\n />\n {parseError && <p className=\"mt-1 text-xs text-status-error-text\">{parseError}</p>}\n {error && session && <p className=\"mt-1 text-xs text-status-error-text\">{error}</p>}\n </div>\n </div>\n\n {/* Action buttons */}\n <div className=\"flex items-center gap-2 p-3 border-t border-border-default\">\n <button\n type=\"button\"\n onClick={handleSave}\n disabled={saving || isTerminated}\n className=\"flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium rounded-md bg-action-primary-bg text-action-primary-text hover:bg-action-primary-bg-hover disabled:opacity-40 disabled:cursor-not-allowed transition-colors\"\n >\n <Save className=\"w-3.5 h-3.5\" />\n {saving\n ? tr('vibecontrols.agentManager.config.saving', 'Saving...')\n : tr('vibecontrols.agentManager.config.save', 'Save')}\n </button>\n <div className=\"flex-1\" />\n <button\n type=\"button\"\n onClick={() => setShowTerminate(true)}\n disabled={isTerminated}\n className=\"flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium rounded-md bg-status-error-bg/10 text-status-error-text hover:bg-status-error-bg/20 disabled:opacity-40 disabled:cursor-not-allowed transition-colors\"\n >\n <Trash2 className=\"w-3.5 h-3.5\" />\n {tr('vibecontrols.agentManager.config.terminate', 'Terminate')}\n </button>\n </div>\n\n <ConfirmDialog\n isOpen={showTerminate}\n onClose={() => setShowTerminate(false)}\n onConfirm={handleTerminate}\n title={tr('vibecontrols.agentManager.config.terminateSessionTitle', 'Terminate Session')}\n message={tr(\n 'vibecontrols.agentManager.config.terminateConfirm',\n 'Are you sure you want to terminate this session? This action cannot be undone.'\n )}\n confirmLabel={tr('vibecontrols.agentManager.config.terminate', 'Terminate')}\n variant=\"danger\"\n isLoading={terminating}\n />\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;AA4BA,SAAS,EAAkB,GAAmD;AAC5E,QAAO;EACL,OAAO,OAAO,EAAI,SAAU,WAAW,EAAI,QAAQ;EACnD,cAAc,OAAO,EAAI,gBAAiB,WAAW,EAAI,eAAe;EACxE,WAAW,OAAO,EAAI,aAAc,WAAW,EAAI,YAAY;EAC/D,aAAa,OAAO,EAAI,eAAgB,WAAW,EAAI,cAAc;EACtE;;AAGH,SAAS,EAAsB,GAAoB,GAAqC;CACtF,IAAI;AACJ,KAAI;AACF,MAAS,KAAK,MAAM,EAAW;SACzB;AACN,MAAS,EAAE;;CAEb,IAAM,IAAS,EAAE,GAAG,GAAQ;AAiB5B,QAhBI,EAAO,QACT,EAAO,QAAQ,EAAO,QAEtB,OAAO,EAAO,OAEZ,EAAO,eACT,EAAO,eAAe,EAAO,eAE7B,OAAO,EAAO,cAEZ,EAAO,cAAc,OAGvB,OAAO,EAAO,YAFd,EAAO,YAAY,EAAO,WAI5B,EAAO,cAAc,EAAO,aACrB,KAAK,UAAU,GAAQ,MAAM,EAAE;;AAQxC,SAAgB,EAAmB,EAAE,cAAW,YAAkC;CAChF,IAAM,IAAK,GAAO,EACZ,CAAC,GAAS,KAAc,EAA2B,KAAK,EACxD,CAAC,GAAY,KAAiB,EAAS,GAAG,EAC1C,CAAC,GAAc,KAAmB,EAA8B,EAAkB,EAAE,CAAC,CAAC,EACtF,CAAC,GAAS,KAAc,EAAS,GAAK,EACtC,CAAC,GAAQ,KAAa,EAAS,GAAM,EACrC,CAAC,GAAO,KAAY,EAAwB,KAAK,EACjD,CAAC,GAAY,KAAiB,EAAwB,KAAK,EAC3D,CAAC,GAAe,KAAoB,EAAS,GAAM,EACnD,CAAC,GAAa,KAAkB,EAAS,GAAM,EAE/C,IAAqB,GAAa,MAAiB;AACvD,MAAI;AAEF,KAAgB,EADD,KAAK,MAAM,EAAK,CACU,CAAC;UACpC;IAGP,EAAE,CAAC,EAEA,IAAa,EAAY,YAAY;AACzC,MAAI;GAEF,IAAM,KADW,MAAM,EAAc,EAAM,EACpB,MAAM,MAAM,EAAE,OAAO,EAAU;AACtD,OAAI,GAAO;AACT,MAAW,EAAM;IACjB,IAAM,IAAO,KAAK,UAAU,EAAM,UAAU,EAAE,EAAE,MAAM,EAAE;AAExD,IADA,EAAc,EAAK,EACnB,EAAmB,EAAK;SASxB,CAFA,EAAW,KAAK,EAChB,EAAc,KAAK,EACnB,EAAmB,KAAK;WAEnB,GAAK;AACZ,KAAS,aAAe,QAAQ,EAAI,UAAU,wBAAwB;YAC9D;AACR,KAAW,GAAM;;IAElB;EAAC;EAAO;EAAW;EAAmB,CAAC;AAE1C,SAAgB;AAEd,EADA,EAAW,GAAK,EAChB,GAAY;IACX,CAAC,EAAW,CAAC;CAEhB,IAAM,IAAoB,GACvB,GAAkC,MAAkC;AACnE,KAAiB,MAAS;GACxB,IAAM,IAAO;IAAE,GAAG;KAAO,IAAQ;IAAO;AAExC,UADA,EAAc,EAAsB,GAAY,EAAK,CAAC,EAC/C;IACP;IAEJ,CAAC,EAAW,CACb,EAEK,IAAa,EAAY,YAAY;AACzC,IAAc,KAAK;EACnB,IAAI;AACJ,MAAI;AACF,OAAS,KAAK,MAAM,EAAW;UACzB;AACN,KAAc,eAAe;AAC7B;;AAGF,IAAU,GAAK;AACf,MAAI;GACF,IAAM,IAAU,MAAM,EAAoB,GAAO,GAAW,EAAO;AACnE,KAAW,EAAQ;GACnB,IAAM,IAAO,KAAK,UAAU,EAAQ,UAAU,EAAE,EAAE,MAAM,EAAE;AAE1D,GADA,EAAc,EAAK,EACnB,EAAmB,EAAK;WACjB,GAAK;AACZ,KAAS,aAAe,QAAQ,EAAI,UAAU,wBAAwB;YAC9D;AACR,KAAU,GAAM;;IAEjB;EAAC;EAAO;EAAW;EAAY;EAAmB,CAAC,EAEhD,IAAkB,EAAY,YAAY;AAC9C,IAAe,GAAK;AACpB,MAAI;AAIF,GAHA,MAAM,EAAiB,GAAO,EAAU,EACxC,EAAiB,GAAM,EAEvB,MAAM,GAAY;WACX,GAAK;AACZ,KAAS,aAAe,QAAQ,EAAI,UAAU,8BAA8B;YACpE;AACR,KAAe,GAAM;;IAEtB;EAAC;EAAO;EAAW;EAAW,CAAC;AAElC,KAAI,EAAS,QAAO,kBAAC,GAAD,EAAc,SAAQ,qBAAsB,CAAA;AAChE,KAAI,KAAS,CAAC,EAAS,QAAO,kBAAC,GAAD;EAAY,SAAS;EAAO,SAAS;EAAc,CAAA;CAEjF,IAAM,IAAe,GAAS,WAAW;AAEzC,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,OAAD;IAAK,WAAU;cAAf;KAEG,KACC,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,QAAD;OAAM,WAAU;iBAA6B;OAAc,CAAA,EAC3D,kBAAC,QAAD;OACE,WAAW,gDACT,EAAQ,WAAW,WACf,qDACA,EAAQ,WAAW,UACjB,iDACA,EAAQ,WAAW,eACjB,oCACA;iBAGT,EAAQ;OACJ,CAAA,CACH;;KAIR,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACE,kBAAC,MAAD;QAAI,WAAU;kBACX,EAAG,kDAAkD,iBAAiB;QACpE,CAAA;OAGL,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;QAAO,WAAU;kBACd,EAAG,0CAA0C,QAAQ;QAChD,CAAA,EACR,kBAAC,SAAD;QACE,MAAK;QACL,OAAO,EAAa;QACpB,WAAW,MAAM,EAAkB,SAAS,EAAE,OAAO,MAAM;QAC3D,aAAa,EAAG,qDAAqD,WAAW;QAChF,UAAU;QACV,WAAU;QACV,CAAA,CACE,EAAA,CAAA;OAGN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;QAAO,WAAU;kBACd,EAAG,iDAAiD,gBAAgB;QAC/D,CAAA,EACR,kBAAC,YAAD;QACE,OAAO,EAAa;QACpB,WAAW,MAAM,EAAkB,gBAAgB,EAAE,OAAO,MAAM;QAClE,aAAY;QACZ,MAAM;QACN,UAAU;QACV,WAAU;QACV,CAAA,CACE,EAAA,CAAA;OAGN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;QAAO,WAAU;kBACd,EAAG,8CAA8C,aAAa;QACzD,CAAA,EACR,kBAAC,SAAD;QACE,MAAK;QACL,OAAO,EAAa,aAAa;QACjC,WAAW,MACT,EAAkB,aAAa,EAAE,OAAO,QAAQ,OAAO,EAAE,OAAO,MAAM,GAAG,KAAK;QAEhF,aAAY;QACZ,UAAU;QACV,WAAU;QACV,CAAA,CACE,EAAA,CAAA;OAGN,kBAAC,OAAD,EAAA,UAAA;QACE,kBAAC,SAAD;SAAO,WAAU;mBACd,EAAG,gDAAgD,oBAAoB;SAClE,CAAA;QACR,kBAAC,SAAD;SACE,MAAK;SACL,KAAI;SACJ,KAAI;SACJ,MAAK;SACL,OAAO,EAAa;SACpB,WAAW,MAAM,EAAkB,eAAe,OAAO,EAAE,OAAO,MAAM,CAAC;SACzE,UAAU;SACV,WAAU;SACV,CAAA;QACF,kBAAC,QAAD;SAAM,WAAU;mBAA8B,EAAa;SAAmB,CAAA;QAC1E,EAAA,CAAA;OACF;;KAEN,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACE,kBAAC,MAAD;QAAI,WAAU;kBACX,EAAG,iDAAiD,kBAAkB;QACpE,CAAA;OAGL,kBAAC,YAAD;QACE,OAAO;QACP,WAAW,MAAM;AAGf,SAFA,EAAc,EAAE,OAAO,MAAM,EAC7B,EAAc,KAAK,EACnB,EAAmB,EAAE,OAAO,MAAM;;QAEpC,UAAU;QACV,WAAU;QACV,YAAY;QACZ,CAAA;OACD,KAAc,kBAAC,KAAD;QAAG,WAAU;kBAAuC;QAAe,CAAA;OACjF,KAAS,KAAW,kBAAC,KAAD;QAAG,WAAU;kBAAuC;QAAU,CAAA;OAC/E;;KACF;;GAGN,kBAAC,OAAD;IAAK,WAAU;cAAf;KACE,kBAAC,UAAD;MACE,MAAK;MACL,SAAS;MACT,UAAU,KAAU;MACpB,WAAU;gBAJZ,CAME,kBAAC,GAAD,EAAM,WAAU,eAAgB,CAAA,EAC/B,IACG,EAAG,2CAA2C,YAAY,GAC1D,EAAG,yCAAyC,OAAO,CAChD;;KACT,kBAAC,OAAD,EAAK,WAAU,UAAW,CAAA;KAC1B,kBAAC,UAAD;MACE,MAAK;MACL,eAAe,EAAiB,GAAK;MACrC,UAAU;MACV,WAAU;gBAJZ,CAME,kBAAC,GAAD,EAAQ,WAAU,eAAgB,CAAA,EACjC,EAAG,8CAA8C,YAAY,CACvD;;KACL;;GAEN,kBAAC,GAAD;IACE,QAAQ;IACR,eAAe,EAAiB,GAAM;IACtC,WAAW;IACX,OAAO,EAAG,0DAA0D,oBAAoB;IACxF,SAAS,EACP,qDACA,iFACD;IACD,cAAc,EAAG,8CAA8C,YAAY;IAC3E,SAAQ;IACR,WAAW;IACX,CAAA;GACE"}
|
|
@@ -23,7 +23,7 @@ var f = [
|
|
|
23
23
|
error: "bg-status-error-bg/10 text-status-error-text",
|
|
24
24
|
metadata: "bg-bg-sunken text-text-tertiary"
|
|
25
25
|
};
|
|
26
|
-
function m({ sessionId: m,
|
|
26
|
+
function m({ sessionId: m, agent: h }) {
|
|
27
27
|
let g = e(), [_, v] = c([]), [y, b] = c(!0), [x, S] = c(null), [C, w] = c(new Set(f)), [T, E] = c(!1), D = s(null), O = a(async () => {
|
|
28
28
|
try {
|
|
29
29
|
v(await r(h, m, { limit: 100 })), S(null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionLogsPanel.js","names":[],"sources":["../../../../src/components/agent-manager/detail/SessionLogsPanel.tsx"],"sourcesContent":["/**\n * Session logs viewer panel.\n *\n * Fetches and displays logs for a session with type filtering\n * and optional auto-refresh.\n */\n\nimport { useState, useEffect, useCallback, useRef } from 'react';\nimport { RefreshCw } from 'lucide-react';\nimport { LoadingState, ErrorState } from '@/components/shared';\nimport { fetchSessionLogs, type AISessionLog } from '@/services/aiApi';\nimport { isSessionNotFoundError } from '@/utils/aiSessionNotFound';\nimport { useTr } from '../../../shared/hooks/useTr';\n\ninterface SessionLogsPanelProps {\n sessionId: string;\n
|
|
1
|
+
{"version":3,"file":"SessionLogsPanel.js","names":[],"sources":["../../../../src/components/agent-manager/detail/SessionLogsPanel.tsx"],"sourcesContent":["/**\n * Session logs viewer panel.\n *\n * Fetches and displays logs for a session with type filtering\n * and optional auto-refresh.\n */\n\nimport { useState, useEffect, useCallback, useRef } from 'react';\nimport { RefreshCw } from 'lucide-react';\nimport { LoadingState, ErrorState } from '@/components/shared';\nimport { fetchSessionLogs, type AISessionLog, type AgentRef } from '@/services/aiApi';\nimport { isSessionNotFoundError } from '@/utils/aiSessionNotFound';\nimport { useTr } from '../../../shared/hooks/useTr';\n\ninterface SessionLogsPanelProps {\n sessionId: string;\n agent: AgentRef;\n}\n\nconst LOG_TYPES = ['input', 'output', 'thinking', 'event', 'error', 'metadata'] as const;\n\nconst TYPE_COLORS: Record<string, string> = {\n input: 'bg-action-primary-bg/10 text-action-primary-text',\n output: 'bg-status-success-bg/10 text-status-success-text',\n thinking: 'bg-status-warning-bg/10 text-status-warning-text',\n event: 'bg-bg-elevated text-text-secondary',\n error: 'bg-status-error-bg/10 text-status-error-text',\n metadata: 'bg-bg-sunken text-text-tertiary',\n};\n\nexport function SessionLogsPanel({ sessionId, agent }: SessionLogsPanelProps) {\n const tr = useTr();\n const [logs, setLogs] = useState<AISessionLog[]>([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n const [activeTypes, setActiveTypes] = useState<Set<string>>(new Set(LOG_TYPES));\n const [autoRefresh, setAutoRefresh] = useState(false);\n const intervalRef = useRef<ReturnType<typeof setInterval> | null>(null);\n\n const loadLogs = useCallback(async () => {\n try {\n const data = await fetchSessionLogs(agent, sessionId, { limit: 100 });\n setLogs(data);\n setError(null);\n } catch (err) {\n // Until the user sends the first message the agent has no\n // record of this session, so /api/ai/sessions/:id/logs 404s.\n // Render that as an empty list with a hint, not as an error.\n if (isSessionNotFoundError(err)) {\n setLogs([]);\n setError(null);\n } else {\n setError(err instanceof Error ? err.message : 'Failed to load logs');\n }\n } finally {\n setLoading(false);\n }\n }, [agent, sessionId]);\n\n useEffect(() => {\n setLoading(true);\n loadLogs();\n }, [loadLogs]);\n\n useEffect(() => {\n if (autoRefresh) {\n intervalRef.current = setInterval(loadLogs, 5000);\n }\n return () => {\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n };\n }, [autoRefresh, loadLogs]);\n\n const toggleType = useCallback((type: string) => {\n setActiveTypes((prev) => {\n const next = new Set(prev);\n if (next.has(type)) {\n next.delete(type);\n } else {\n next.add(type);\n }\n return next;\n });\n }, []);\n\n const filteredLogs = logs.filter((log) => activeTypes.has(log.type));\n\n if (loading) return <LoadingState message=\"Loading logs...\" />;\n if (error) return <ErrorState message={error} onRetry={loadLogs} />;\n\n return (\n <div className=\"flex flex-col h-full\">\n {/* Filter bar */}\n <div className=\"flex items-center gap-1.5 p-2 border-b border-border-default flex-wrap\">\n {LOG_TYPES.map((type) => (\n <button\n key={type}\n type=\"button\"\n onClick={() => toggleType(type)}\n className={`px-2 py-0.5 text-[10px] font-medium rounded-full transition-colors ${\n activeTypes.has(type)\n ? TYPE_COLORS[type]\n : 'bg-bg-sunken text-text-tertiary opacity-50'\n }`}\n >\n {type}\n </button>\n ))}\n <div className=\"flex-1\" />\n <button\n type=\"button\"\n onClick={() => setAutoRefresh((prev) => !prev)}\n className={`p-1 rounded transition-colors ${\n autoRefresh\n ? 'text-action-primary-text bg-action-primary-bg/10'\n : 'text-text-tertiary hover:text-text-secondary'\n }`}\n title={\n autoRefresh\n ? tr('vibecontrols.agentManager.logs.disableAutoRefresh', 'Disable auto-refresh')\n : tr('vibecontrols.agentManager.logs.enableAutoRefresh', 'Enable auto-refresh')\n }\n >\n <RefreshCw className={`w-3.5 h-3.5 ${autoRefresh ? 'animate-spin' : ''}`} />\n </button>\n </div>\n\n {/* Logs list */}\n <div className=\"flex-1 overflow-y-auto\">\n {filteredLogs.length === 0 ? (\n <div className=\"p-4 text-center text-sm text-text-tertiary\">\n {logs.length === 0\n ? tr(\n 'vibecontrols.agentManager.logs.empty',\n 'Logs will appear here after you send the first message.'\n )\n : tr(\n 'vibecontrols.agentManager.logs.noLogsMatch',\n 'No logs match the selected filters'\n )}\n </div>\n ) : (\n <div className=\"divide-y divide-border-default\">\n {filteredLogs.map((log) => (\n <div key={log.id} className=\"px-3 py-2\">\n <div className=\"flex items-center gap-2 mb-1\">\n <span\n className={`px-1.5 py-0.5 text-[10px] font-medium rounded ${TYPE_COLORS[log.type] ?? 'bg-bg-sunken text-text-tertiary'}`}\n >\n {log.type}\n </span>\n <span className=\"text-[10px] text-text-tertiary\">\n {new Date(log.timestamp).toLocaleTimeString()}\n </span>\n {log.tokenCount != null && (\n <span className=\"text-[10px] text-text-tertiary ml-auto\">\n {log.tokenCount} tokens\n </span>\n )}\n </div>\n <p className=\"text-xs text-text-secondary break-words line-clamp-3\">\n {log.message || log.content}\n </p>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ import { useCallback as o, useEffect as s, useState as c } from "react";
|
|
|
9
9
|
import { ArrowDownToLine as l, ArrowUpFromLine as u, Clock as d, Hash as f, Zap as p } from "lucide-react";
|
|
10
10
|
import { jsx as m, jsxs as h } from "react/jsx-runtime";
|
|
11
11
|
//#region src/components/agent-manager/detail/SessionStatsPanel.tsx
|
|
12
|
-
function g({ sessionId: g,
|
|
12
|
+
function g({ sessionId: g, agent: _ }) {
|
|
13
13
|
let v = e(), [y, b] = c(null), [x, S] = c(!0), [C, w] = c(null), T = o(async () => {
|
|
14
14
|
try {
|
|
15
15
|
b(await i(_, g)), w(null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionStatsPanel.js","names":[],"sources":["../../../../src/components/agent-manager/detail/SessionStatsPanel.tsx"],"sourcesContent":["/**\n * Session token usage statistics panel.\n *\n * Fetches stats via fetchSessionStats and renders them as StatCards.\n */\n\nimport { useState, useEffect, useCallback } from 'react';\nimport { Zap, ArrowDownToLine, ArrowUpFromLine, Clock, Hash } from 'lucide-react';\nimport { LoadingState, ErrorState, StatCard } from '@/components/shared';\nimport { fetchSessionStats, type AISessionStats } from '@/services/aiApi';\nimport { isSessionNotFoundError } from '@/utils/aiSessionNotFound';\nimport { useTr } from '../../../shared/hooks/useTr';\n\ninterface SessionStatsPanelProps {\n sessionId: string;\n
|
|
1
|
+
{"version":3,"file":"SessionStatsPanel.js","names":[],"sources":["../../../../src/components/agent-manager/detail/SessionStatsPanel.tsx"],"sourcesContent":["/**\n * Session token usage statistics panel.\n *\n * Fetches stats via fetchSessionStats and renders them as StatCards.\n */\n\nimport { useState, useEffect, useCallback } from 'react';\nimport { Zap, ArrowDownToLine, ArrowUpFromLine, Clock, Hash } from 'lucide-react';\nimport { LoadingState, ErrorState, StatCard } from '@/components/shared';\nimport { fetchSessionStats, type AISessionStats, type AgentRef } from '@/services/aiApi';\nimport { isSessionNotFoundError } from '@/utils/aiSessionNotFound';\nimport { useTr } from '../../../shared/hooks/useTr';\n\ninterface SessionStatsPanelProps {\n sessionId: string;\n agent: AgentRef;\n}\n\nexport function SessionStatsPanel({ sessionId, agent }: SessionStatsPanelProps) {\n const tr = useTr();\n const [stats, setStats] = useState<AISessionStats | null>(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n\n const loadStats = useCallback(async () => {\n try {\n const data = await fetchSessionStats(agent, sessionId);\n setStats(data);\n setError(null);\n } catch (err) {\n // Pre-first-message: session not yet known to the agent — render\n // an empty/zero state instead of an error toast.\n if (isSessionNotFoundError(err)) {\n setStats(null);\n setError(null);\n } else {\n setError(err instanceof Error ? err.message : 'Failed to load stats');\n }\n } finally {\n setLoading(false);\n }\n }, [agent, sessionId]);\n\n useEffect(() => {\n setLoading(true);\n loadStats();\n }, [loadStats]);\n\n if (loading) return <LoadingState message=\"Loading stats...\" />;\n if (error) return <ErrorState message={error} onRetry={loadStats} />;\n if (!stats) {\n return (\n <div className=\"p-4 text-center text-sm text-text-tertiary\">\n {tr(\n 'vibecontrols.agentManager.stats.empty',\n 'Stats will appear here after you send the first message.'\n )}\n </div>\n );\n }\n\n const avgLatencyMs = stats.averageLatency ?? 0;\n const avgLatencyDisplay =\n avgLatencyMs > 1000 ? `${(avgLatencyMs / 1000).toFixed(1)}s` : `${Math.round(avgLatencyMs)}ms`;\n\n return (\n <div className=\"p-3 space-y-3\">\n <StatCard\n title={tr('vibecontrols.agentManager.stats.totalTokens', 'Total Tokens')}\n value={stats.totalTokens}\n icon={<Zap />}\n />\n <StatCard\n title={tr('vibecontrols.agentManager.stats.inputTokens', 'Input Tokens')}\n value={stats.inputTokens}\n icon={<ArrowDownToLine />}\n />\n <StatCard\n title={tr('vibecontrols.agentManager.stats.outputTokens', 'Output Tokens')}\n value={stats.outputTokens}\n icon={<ArrowUpFromLine />}\n />\n <StatCard\n title={tr('vibecontrols.agentManager.stats.requests', 'Requests')}\n value={stats.promptCount}\n icon={<Hash />}\n />\n <StatCard\n title={tr('vibecontrols.agentManager.stats.avgLatency', 'Avg Latency')}\n value={avgLatencyDisplay}\n icon={<Clock />}\n />\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;AAkBA,SAAgB,EAAkB,EAAE,cAAW,YAAiC;CAC9E,IAAM,IAAK,GAAO,EACZ,CAAC,GAAO,KAAY,EAAgC,KAAK,EACzD,CAAC,GAAS,KAAc,EAAS,GAAK,EACtC,CAAC,GAAO,KAAY,EAAwB,KAAK,EAEjD,IAAY,EAAY,YAAY;AACxC,MAAI;AAGF,GADA,EADa,MAAM,EAAkB,GAAO,EAAU,CACxC,EACd,EAAS,KAAK;WACP,GAAK;AAGZ,GAAI,EAAuB,EAAI,IAC7B,EAAS,KAAK,EACd,EAAS,KAAK,IAEd,EAAS,aAAe,QAAQ,EAAI,UAAU,uBAAuB;YAE/D;AACR,KAAW,GAAM;;IAElB,CAAC,GAAO,EAAU,CAAC;AAOtB,KALA,QAAgB;AAEd,EADA,EAAW,GAAK,EAChB,GAAW;IACV,CAAC,EAAU,CAAC,EAEX,EAAS,QAAO,kBAAC,GAAD,EAAc,SAAQ,oBAAqB,CAAA;AAC/D,KAAI,EAAO,QAAO,kBAAC,GAAD;EAAY,SAAS;EAAO,SAAS;EAAa,CAAA;AACpE,KAAI,CAAC,EACH,QACE,kBAAC,OAAD;EAAK,WAAU;YACZ,EACC,yCACA,2DACD;EACG,CAAA;CAIV,IAAM,IAAe,EAAM,kBAAkB,GACvC,IACJ,IAAe,MAAO,IAAI,IAAe,KAAM,QAAQ,EAAE,CAAC,KAAK,GAAG,KAAK,MAAM,EAAa,CAAC;AAE7F,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,GAAD;IACE,OAAO,EAAG,+CAA+C,eAAe;IACxE,OAAO,EAAM;IACb,MAAM,kBAAC,GAAD,EAAO,CAAA;IACb,CAAA;GACF,kBAAC,GAAD;IACE,OAAO,EAAG,+CAA+C,eAAe;IACxE,OAAO,EAAM;IACb,MAAM,kBAAC,GAAD,EAAmB,CAAA;IACzB,CAAA;GACF,kBAAC,GAAD;IACE,OAAO,EAAG,gDAAgD,gBAAgB;IAC1E,OAAO,EAAM;IACb,MAAM,kBAAC,GAAD,EAAmB,CAAA;IACzB,CAAA;GACF,kBAAC,GAAD;IACE,OAAO,EAAG,4CAA4C,WAAW;IACjE,OAAO,EAAM;IACb,MAAM,kBAAC,GAAD,EAAQ,CAAA;IACd,CAAA;GACF,kBAAC,GAAD;IACE,OAAO,EAAG,8CAA8C,cAAc;IACtE,OAAO;IACP,MAAM,kBAAC,GAAD,EAAS,CAAA;IACf,CAAA;GACE"}
|
|
@@ -7,7 +7,7 @@ import { useCallback as i, useEffect as a, useState as o } from "react";
|
|
|
7
7
|
import { CheckCircle as s, Circle as c, Wrench as l } from "lucide-react";
|
|
8
8
|
import { jsx as u, jsxs as d } from "react/jsx-runtime";
|
|
9
9
|
//#region src/components/agent-manager/detail/SessionToolsPanel.tsx
|
|
10
|
-
function f({
|
|
10
|
+
function f({ agent: f }) {
|
|
11
11
|
let p = e(), [m, h] = o([]), [g, _] = o(!0), [v, y] = o(null), b = i(async () => {
|
|
12
12
|
try {
|
|
13
13
|
h(await r(f)), y(null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionToolsPanel.js","names":[],"sources":["../../../../src/components/agent-manager/detail/SessionToolsPanel.tsx"],"sourcesContent":["/**\n * Session tools list panel.\n *\n * Fetches available tools from the agent and renders them as a list\n * with installed status badges and version info.\n */\n\nimport { useState, useEffect, useCallback } from 'react';\nimport { Wrench, CheckCircle, Circle } from 'lucide-react';\nimport { LoadingState, ErrorState } from '@/components/shared';\nimport { fetchTools, type AITool } from '@/services/aiApi';\nimport { useTr } from '../../../shared/hooks/useTr';\n\ninterface SessionToolsPanelProps {\n
|
|
1
|
+
{"version":3,"file":"SessionToolsPanel.js","names":[],"sources":["../../../../src/components/agent-manager/detail/SessionToolsPanel.tsx"],"sourcesContent":["/**\n * Session tools list panel.\n *\n * Fetches available tools from the agent and renders them as a list\n * with installed status badges and version info.\n */\n\nimport { useState, useEffect, useCallback } from 'react';\nimport { Wrench, CheckCircle, Circle } from 'lucide-react';\nimport { LoadingState, ErrorState } from '@/components/shared';\nimport { fetchTools, type AITool, type AgentRef } from '@/services/aiApi';\nimport { useTr } from '../../../shared/hooks/useTr';\n\ninterface SessionToolsPanelProps {\n agent: AgentRef;\n}\n\nexport function SessionToolsPanel({ agent }: SessionToolsPanelProps) {\n const tr = useTr();\n const [tools, setTools] = useState<AITool[]>([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n\n const loadTools = useCallback(async () => {\n try {\n const data = await fetchTools(agent);\n setTools(data);\n setError(null);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to load tools');\n } finally {\n setLoading(false);\n }\n }, [agent]);\n\n useEffect(() => {\n setLoading(true);\n loadTools();\n }, [loadTools]);\n\n if (loading) return <LoadingState message=\"Loading tools...\" />;\n if (error) return <ErrorState message={error} onRetry={loadTools} />;\n\n if (tools.length === 0) {\n return (\n <div className=\"flex flex-col items-center justify-center p-6 text-center\">\n <Wrench className=\"w-8 h-8 text-text-tertiary mb-2\" />\n <p className=\"text-sm text-text-tertiary\">\n {tr('vibecontrols.agentManager.tools.noToolsAvailable', 'No tools available')}\n </p>\n </div>\n );\n }\n\n return (\n <div className=\"divide-y divide-border-default\">\n {tools.map((tool) => (\n <div key={tool.name} className=\"px-3 py-2.5\">\n <div className=\"flex items-center gap-2\">\n <span className=\"flex-1 text-sm font-medium text-text-primary truncate\">\n {tool.displayName || tool.name}\n </span>\n {tool.installed ? (\n <span className=\"flex items-center gap-1 px-1.5 py-0.5 text-[10px] font-medium rounded-full bg-status-success-bg/10 text-status-success-text\">\n <CheckCircle className=\"w-3 h-3\" />\n {tr('vibecontrols.agentManager.tools.installed', 'Installed')}\n </span>\n ) : (\n <span className=\"flex items-center gap-1 px-1.5 py-0.5 text-[10px] font-medium rounded-full bg-bg-sunken text-text-tertiary\">\n <Circle className=\"w-3 h-3\" />\n {tr('vibecontrols.agentManager.tools.notInstalled', 'Not installed')}\n </span>\n )}\n </div>\n <p className=\"text-xs text-text-secondary mt-0.5 line-clamp-2\">{tool.description}</p>\n {tool.version && (\n <span className=\"text-[10px] text-text-tertiary mt-0.5 inline-block\">\n v{tool.version}\n </span>\n )}\n </div>\n ))}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;AAiBA,SAAgB,EAAkB,EAAE,YAAiC;CACnE,IAAM,IAAK,GAAO,EACZ,CAAC,GAAO,KAAY,EAAmB,EAAE,CAAC,EAC1C,CAAC,GAAS,KAAc,EAAS,GAAK,EACtC,CAAC,GAAO,KAAY,EAAwB,KAAK,EAEjD,IAAY,EAAY,YAAY;AACxC,MAAI;AAGF,GADA,EADa,MAAM,EAAW,EAAM,CACtB,EACd,EAAS,KAAK;WACP,GAAK;AACZ,KAAS,aAAe,QAAQ,EAAI,UAAU,uBAAuB;YAC7D;AACR,KAAW,GAAM;;IAElB,CAAC,EAAM,CAAC;AAqBX,QAnBA,QAAgB;AAEd,EADA,EAAW,GAAK,EAChB,GAAW;IACV,CAAC,EAAU,CAAC,EAEX,IAAgB,kBAAC,GAAD,EAAc,SAAQ,oBAAqB,CAAA,GAC3D,IAAc,kBAAC,GAAD;EAAY,SAAS;EAAO,SAAS;EAAa,CAAA,GAEhE,EAAM,WAAW,IAEjB,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,GAAD,EAAQ,WAAU,mCAAoC,CAAA,EACtD,kBAAC,KAAD;GAAG,WAAU;aACV,EAAG,oDAAoD,qBAAqB;GAC3E,CAAA,CACA;MAKR,kBAAC,OAAD;EAAK,WAAU;YACZ,EAAM,KAAK,MACV,kBAAC,OAAD;GAAqB,WAAU;aAA/B;IACE,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,QAAD;MAAM,WAAU;gBACb,EAAK,eAAe,EAAK;MACrB,CAAA,EACN,EAAK,YACJ,kBAAC,QAAD;MAAM,WAAU;gBAAhB,CACE,kBAAC,GAAD,EAAa,WAAU,WAAY,CAAA,EAClC,EAAG,6CAA6C,YAAY,CACxD;UAEP,kBAAC,QAAD;MAAM,WAAU;gBAAhB,CACE,kBAAC,GAAD,EAAQ,WAAU,WAAY,CAAA,EAC7B,EAAG,gDAAgD,gBAAgB,CAC/D;QAEL;;IACN,kBAAC,KAAD;KAAG,WAAU;eAAmD,EAAK;KAAgB,CAAA;IACpF,EAAK,WACJ,kBAAC,QAAD;KAAM,WAAU;eAAhB,CAAqE,KACjE,EAAK,QACF;;IAEL;KAvBI,EAAK,KAuBT,CACN;EACE,CAAA"}
|
|
@@ -5,7 +5,7 @@ import { Download as i, X as a } from "lucide-react";
|
|
|
5
5
|
import { AnimatePresence as o, motion as s, useReducedMotion as c } from "framer-motion";
|
|
6
6
|
import { jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
7
7
|
//#region src/components/agent-manager/dialogs/ExportSessionDialog.tsx
|
|
8
|
-
function d({ isOpen: d, sessionId: f,
|
|
8
|
+
function d({ isOpen: d, sessionId: f, agent: p, onClose: m }) {
|
|
9
9
|
let [h, g] = r("json"), [_, v] = r(!1), [y, b] = r(null), x = c(), S = e(), C = n(async () => {
|
|
10
10
|
v(!0), b(null);
|
|
11
11
|
try {
|