@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,14 +1,15 @@
|
|
|
1
1
|
import { useVibeControlsStore as e } from "../../store/vibeControlsStore.js";
|
|
2
2
|
import t from "../../hooks/useCachedInitialData.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { useActiveAgentProfile as n } from "../../hooks/useActiveAgentProfile.js";
|
|
4
|
+
import { useCallback as r, useEffect as i, useMemo as a } from "react";
|
|
5
|
+
import { Check as o, ChevronDown as s, Server as c } from "lucide-react";
|
|
6
|
+
import { jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
6
7
|
//#region src/components/shared/AgentSelector.tsx
|
|
7
|
-
function
|
|
8
|
+
function d(e) {
|
|
8
9
|
return e.isActive ? e.tunnelUrl ? "bg-status-success-text" : "bg-status-warning-text" : "bg-text-placeholder";
|
|
9
10
|
}
|
|
10
|
-
function
|
|
11
|
-
let { agents:
|
|
11
|
+
function f({ label: f, className: p, style: m, onChange: h, compact: g = !1 }) {
|
|
12
|
+
let { agents: _, loading: v } = t(), y = e((e) => e.activeAgentId), b = e((e) => e.setActiveAgentId), x = a(() => [..._].sort((e, t) => {
|
|
12
13
|
let n = (e) => (e.isActive ? 0 : 2) + +!e.tunnelUrl;
|
|
13
14
|
return n(e) === n(t) ? e.name.localeCompare(t.name) : n(e) - n(t);
|
|
14
15
|
}).map((e) => ({
|
|
@@ -18,81 +19,100 @@ function d({ label: d, className: f, style: p, onChange: m, compact: h = !1 }) {
|
|
|
18
19
|
isActive: e.isActive,
|
|
19
20
|
tunnelUrl: e.tunnelUrl ?? null,
|
|
20
21
|
tunnelStatus: e.tunnelStatus ?? null
|
|
21
|
-
})), [
|
|
22
|
-
if (
|
|
23
|
-
let e =
|
|
22
|
+
})), [_]), S = a(() => {
|
|
23
|
+
if (y) {
|
|
24
|
+
let e = x.find((e) => e.id === y);
|
|
24
25
|
if (e) return e;
|
|
25
26
|
}
|
|
26
|
-
return
|
|
27
|
-
}, [
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
return x.find((e) => e.isActive && e.tunnelUrl) ?? x[0] ?? null;
|
|
28
|
+
}, [y, x]);
|
|
29
|
+
i(() => {
|
|
30
|
+
S && y !== S.id && b(S.id);
|
|
30
31
|
}, [
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
S,
|
|
33
|
+
y,
|
|
34
|
+
b
|
|
34
35
|
]);
|
|
35
|
-
let
|
|
36
|
+
let C = r((e) => {
|
|
36
37
|
let t = e.target.value || null;
|
|
37
|
-
|
|
38
|
+
b(t), h?.(t ? x.find((e) => e.id === t) ?? null : null);
|
|
38
39
|
}, [
|
|
40
|
+
x,
|
|
39
41
|
b,
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
42
|
+
h
|
|
43
|
+
]), { profiles: w, active: T, setActive: E } = n(S?.id ?? null), D = r((e) => {
|
|
44
|
+
E(e.target.value);
|
|
45
|
+
}, [E]);
|
|
46
|
+
return v && x.length === 0 ? /* @__PURE__ */ l("div", {
|
|
47
|
+
className: p,
|
|
48
|
+
style: m,
|
|
49
|
+
children: /* @__PURE__ */ u("div", {
|
|
47
50
|
className: "inline-flex items-center gap-2 rounded-md border border-border-default bg-bg-sunken px-3 py-1.5 text-xs text-text-secondary",
|
|
48
|
-
children: [/* @__PURE__ */ c
|
|
51
|
+
children: [/* @__PURE__ */ l(c, { className: "h-3.5 w-3.5" }), "Loading agents…"]
|
|
49
52
|
})
|
|
50
|
-
}) :
|
|
51
|
-
className:
|
|
52
|
-
style:
|
|
53
|
-
children: /* @__PURE__ */
|
|
53
|
+
}) : x.length === 0 ? /* @__PURE__ */ l("div", {
|
|
54
|
+
className: p,
|
|
55
|
+
style: m,
|
|
56
|
+
children: /* @__PURE__ */ u("div", {
|
|
54
57
|
className: "inline-flex items-center gap-2 rounded-md border border-border-default bg-bg-sunken px-3 py-1.5 text-xs text-text-secondary",
|
|
55
|
-
children: [/* @__PURE__ */ c
|
|
58
|
+
children: [/* @__PURE__ */ l(c, { className: "h-3.5 w-3.5" }), "No agents yet — add one from the Agents page"]
|
|
56
59
|
})
|
|
57
|
-
}) : /* @__PURE__ */
|
|
58
|
-
className:
|
|
59
|
-
style:
|
|
60
|
-
children: [
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
"
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
children:
|
|
78
|
-
e.
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
60
|
+
}) : /* @__PURE__ */ u("div", {
|
|
61
|
+
className: p,
|
|
62
|
+
style: m,
|
|
63
|
+
children: [
|
|
64
|
+
f && !g && /* @__PURE__ */ l("label", {
|
|
65
|
+
className: "block text-xs font-medium text-text-secondary mb-1",
|
|
66
|
+
children: f
|
|
67
|
+
}),
|
|
68
|
+
/* @__PURE__ */ u("div", {
|
|
69
|
+
className: "relative inline-flex items-center",
|
|
70
|
+
children: [
|
|
71
|
+
S && /* @__PURE__ */ l("span", {
|
|
72
|
+
className: `absolute left-2.5 z-10 h-2 w-2 rounded-full ${d(S)}`,
|
|
73
|
+
"aria-hidden": !0
|
|
74
|
+
}),
|
|
75
|
+
/* @__PURE__ */ l("select", {
|
|
76
|
+
value: S?.id ?? "",
|
|
77
|
+
onChange: C,
|
|
78
|
+
className: `appearance-none rounded-md border border-border-default bg-bg-surface pl-7 pr-8 text-text-primary focus:outline-none focus:ring-2 focus:ring-action-primary-bg/40 ${g ? "py-1 text-xs" : "py-2 text-sm"}`,
|
|
79
|
+
"data-testid": "agent-selector",
|
|
80
|
+
children: x.map((e) => /* @__PURE__ */ u("option", {
|
|
81
|
+
value: e.id,
|
|
82
|
+
children: [
|
|
83
|
+
e.name,
|
|
84
|
+
" (",
|
|
85
|
+
e.hostname,
|
|
86
|
+
")",
|
|
87
|
+
e.isActive ? "" : " · offline"
|
|
88
|
+
]
|
|
89
|
+
}, e.id))
|
|
90
|
+
}),
|
|
91
|
+
/* @__PURE__ */ l(s, { className: "pointer-events-none absolute right-2 h-3.5 w-3.5 text-text-secondary" }),
|
|
92
|
+
S?.tunnelUrl && /* @__PURE__ */ l(o, {
|
|
93
|
+
className: "pointer-events-none absolute -right-5 h-3.5 w-3.5 text-status-success-text",
|
|
94
|
+
"aria-label": "Tunnel reachable"
|
|
95
|
+
})
|
|
96
|
+
]
|
|
97
|
+
}),
|
|
98
|
+
S && w.length > 1 && /* @__PURE__ */ u("div", {
|
|
99
|
+
className: "relative inline-flex items-center ml-2",
|
|
100
|
+
children: [/* @__PURE__ */ l("select", {
|
|
101
|
+
value: T,
|
|
102
|
+
onChange: D,
|
|
103
|
+
className: `appearance-none rounded-md border border-border-default bg-bg-surface pl-3 pr-7 text-text-primary focus:outline-none focus:ring-2 focus:ring-action-primary-bg/40 font-mono ${g ? "py-1 text-xs" : "py-2 text-sm"}`,
|
|
104
|
+
"data-testid": "agent-profile-selector",
|
|
105
|
+
"aria-label": "Active profile",
|
|
106
|
+
children: w.map((e) => /* @__PURE__ */ u("option", {
|
|
107
|
+
value: e.name,
|
|
108
|
+
children: [e.name, e.isDefault ? " (default)" : ""]
|
|
84
109
|
}, e.id))
|
|
85
|
-
}),
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
className: "pointer-events-none absolute -right-5 h-3.5 w-3.5 text-status-success-text",
|
|
89
|
-
"aria-label": "Tunnel reachable"
|
|
90
|
-
})
|
|
91
|
-
]
|
|
92
|
-
})]
|
|
110
|
+
}), /* @__PURE__ */ l(s, { className: "pointer-events-none absolute right-2 h-3.5 w-3.5 text-text-secondary" })]
|
|
111
|
+
})
|
|
112
|
+
]
|
|
93
113
|
});
|
|
94
114
|
}
|
|
95
115
|
//#endregion
|
|
96
|
-
export {
|
|
116
|
+
export { f as AgentSelector };
|
|
97
117
|
|
|
98
118
|
//# sourceMappingURL=AgentSelector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentSelector.js","names":[],"sources":["../../../src/components/shared/AgentSelector.tsx"],"sourcesContent":["/**\n * AgentSelector — dropdown of workspace agents with selection persisted to the\n * VibeControls Zustand store. Used on the AI page and anywhere else a user\n * needs to pick \"the active agent\" explicitly rather than rely on auto-pick.\n *\n * The selector shows active agents first, then inactive/disconnected ones,\n * and surfaces the agent's tunnel/heartbeat state via a colored dot so the\n * user knows at a glance which one is actually running.\n */\n\nimport { useCallback, useEffect, useMemo, type CSSProperties } from 'react';\nimport { Check, ChevronDown, Server } from 'lucide-react';\nimport { useVibeControlsStore } from '@/store/vibeControlsStore';\nimport { useCachedInitialData } from '@/hooks/useCachedInitialData';\n\nexport interface AgentOption {\n id: string;\n name: string;\n hostname: string;\n isActive: boolean;\n tunnelUrl?: string | null;\n tunnelStatus?: string | null;\n}\n\ninterface AgentSelectorProps {\n /** Optional label above the selector. */\n label?: string;\n /** Optional className applied to the outer wrapper. */\n className?: string;\n /** Optional inline style applied to the outer wrapper. */\n style?: CSSProperties;\n /** Fired whenever the user changes the selected agent. */\n onChange?: (agent: AgentOption | null) => void;\n /** Render compact (smaller, no label). */\n compact?: boolean;\n}\n\nfunction statusDotColor(agent: AgentOption): string {\n if (!agent.isActive) return 'bg-text-placeholder';\n if (!agent.tunnelUrl) return 'bg-status-warning-text';\n return 'bg-status-success-text';\n}\n\nexport function AgentSelector({\n label,\n className,\n style,\n onChange,\n compact = false,\n}: AgentSelectorProps) {\n const { agents, loading } = useCachedInitialData();\n const activeAgentId = useVibeControlsStore((s) => s.activeAgentId);\n const setActiveAgentId = useVibeControlsStore((s) => s.setActiveAgentId);\n\n const options: AgentOption[] = useMemo(() => {\n const sorted = [...agents].sort((a, b) => {\n // Active + online first; then active but no tunnel; then inactive.\n const score = (x: (typeof agents)[number]) => (x.isActive ? 0 : 2) + (x.tunnelUrl ? 0 : 1);\n if (score(a) !== score(b)) return score(a) - score(b);\n return a.name.localeCompare(b.name);\n });\n return sorted.map((a) => ({\n id: a.id,\n name: a.name,\n hostname: a.hostname,\n isActive: a.isActive,\n tunnelUrl: a.tunnelUrl ?? null,\n tunnelStatus: a.tunnelStatus ?? null,\n }));\n }, [agents]);\n\n const selected = useMemo<AgentOption | null>(() => {\n if (activeAgentId) {\n const match = options.find((a) => a.id === activeAgentId);\n if (match) return match;\n }\n // Auto-pick the first healthy agent the first time.\n return options.find((a) => a.isActive && a.tunnelUrl) ?? options[0] ?? null;\n }, [activeAgentId, options]);\n\n // Commit the auto-picked agent into the store so downstream consumers can\n // read it directly without running the same \"first healthy\" logic.\n useEffect(() => {\n if (selected && activeAgentId !== selected.id) {\n setActiveAgentId(selected.id);\n }\n }, [selected, activeAgentId, setActiveAgentId]);\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLSelectElement>) => {\n const id = e.target.value || null;\n setActiveAgentId(id);\n onChange?.(id ? (options.find((o) => o.id === id) ?? null) : null);\n },\n [options, setActiveAgentId, onChange]\n );\n\n if (loading && options.length === 0) {\n return (\n <div className={className} style={style}>\n <div className=\"inline-flex items-center gap-2 rounded-md border border-border-default bg-bg-sunken px-3 py-1.5 text-xs text-text-secondary\">\n <Server className=\"h-3.5 w-3.5\" />\n Loading agents…\n </div>\n </div>\n );\n }\n\n if (options.length === 0) {\n return (\n <div className={className} style={style}>\n <div className=\"inline-flex items-center gap-2 rounded-md border border-border-default bg-bg-sunken px-3 py-1.5 text-xs text-text-secondary\">\n <Server className=\"h-3.5 w-3.5\" />\n No agents yet — add one from the Agents page\n </div>\n </div>\n );\n }\n\n return (\n <div className={className} style={style}>\n {label && !compact && (\n <label className=\"block text-xs font-medium text-text-secondary mb-1\">{label}</label>\n )}\n <div className=\"relative inline-flex items-center\">\n {selected && (\n <span\n className={`absolute left-2.5 z-10 h-2 w-2 rounded-full ${statusDotColor(selected)}`}\n aria-hidden\n />\n )}\n <select\n value={selected?.id ?? ''}\n onChange={handleChange}\n className={`appearance-none rounded-md border border-border-default bg-bg-surface pl-7 pr-8 text-text-primary focus:outline-none focus:ring-2 focus:ring-action-primary-bg/40 ${compact ? 'py-1 text-xs' : 'py-2 text-sm'}`}\n data-testid=\"agent-selector\"\n >\n {options.map((agent) => (\n <option key={agent.id} value={agent.id}>\n {agent.name} ({agent.hostname}){agent.isActive ? '' : ' · offline'}\n </option>\n ))}\n </select>\n <ChevronDown className=\"pointer-events-none absolute right-2 h-3.5 w-3.5 text-text-secondary\" />\n {selected?.tunnelUrl && (\n <Check\n className=\"pointer-events-none absolute -right-5 h-3.5 w-3.5 text-status-success-text\"\n aria-label=\"Tunnel reachable\"\n />\n )}\n </div>\n </div>\n );\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"AgentSelector.js","names":[],"sources":["../../../src/components/shared/AgentSelector.tsx"],"sourcesContent":["/**\n * AgentSelector — dropdown of workspace agents with selection persisted to the\n * VibeControls Zustand store. Used on the AI page and anywhere else a user\n * needs to pick \"the active agent\" explicitly rather than rely on auto-pick.\n *\n * The selector shows active agents first, then inactive/disconnected ones,\n * and surfaces the agent's tunnel/heartbeat state via a colored dot so the\n * user knows at a glance which one is actually running.\n */\n\nimport { useCallback, useEffect, useMemo, type CSSProperties } from 'react';\nimport { Check, ChevronDown, Server } from 'lucide-react';\nimport { useVibeControlsStore } from '@/store/vibeControlsStore';\nimport { useCachedInitialData } from '@/hooks/useCachedInitialData';\nimport { useActiveAgentProfile } from '@/hooks/useActiveAgentProfile';\n\nexport interface AgentOption {\n id: string;\n name: string;\n hostname: string;\n isActive: boolean;\n tunnelUrl?: string | null;\n tunnelStatus?: string | null;\n}\n\ninterface AgentSelectorProps {\n /** Optional label above the selector. */\n label?: string;\n /** Optional className applied to the outer wrapper. */\n className?: string;\n /** Optional inline style applied to the outer wrapper. */\n style?: CSSProperties;\n /** Fired whenever the user changes the selected agent. */\n onChange?: (agent: AgentOption | null) => void;\n /** Render compact (smaller, no label). */\n compact?: boolean;\n}\n\nfunction statusDotColor(agent: AgentOption): string {\n if (!agent.isActive) return 'bg-text-placeholder';\n if (!agent.tunnelUrl) return 'bg-status-warning-text';\n return 'bg-status-success-text';\n}\n\nexport function AgentSelector({\n label,\n className,\n style,\n onChange,\n compact = false,\n}: AgentSelectorProps) {\n const { agents, loading } = useCachedInitialData();\n const activeAgentId = useVibeControlsStore((s) => s.activeAgentId);\n const setActiveAgentId = useVibeControlsStore((s) => s.setActiveAgentId);\n\n const options: AgentOption[] = useMemo(() => {\n const sorted = [...agents].sort((a, b) => {\n // Active + online first; then active but no tunnel; then inactive.\n const score = (x: (typeof agents)[number]) => (x.isActive ? 0 : 2) + (x.tunnelUrl ? 0 : 1);\n if (score(a) !== score(b)) return score(a) - score(b);\n return a.name.localeCompare(b.name);\n });\n return sorted.map((a) => ({\n id: a.id,\n name: a.name,\n hostname: a.hostname,\n isActive: a.isActive,\n tunnelUrl: a.tunnelUrl ?? null,\n tunnelStatus: a.tunnelStatus ?? null,\n }));\n }, [agents]);\n\n const selected = useMemo<AgentOption | null>(() => {\n if (activeAgentId) {\n const match = options.find((a) => a.id === activeAgentId);\n if (match) return match;\n }\n // Auto-pick the first healthy agent the first time.\n return options.find((a) => a.isActive && a.tunnelUrl) ?? options[0] ?? null;\n }, [activeAgentId, options]);\n\n // Commit the auto-picked agent into the store so downstream consumers can\n // read it directly without running the same \"first healthy\" logic.\n useEffect(() => {\n if (selected && activeAgentId !== selected.id) {\n setActiveAgentId(selected.id);\n }\n }, [selected, activeAgentId, setActiveAgentId]);\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLSelectElement>) => {\n const id = e.target.value || null;\n setActiveAgentId(id);\n onChange?.(id ? (options.find((o) => o.id === id) ?? null) : null);\n },\n [options, setActiveAgentId, onChange]\n );\n\n // Profile sub-dropdown — Phase 5B (multi-profile-per-daemon).\n // Resolves the AgentProfile rows for the currently-selected agent and\n // exposes a switcher next to the agent dropdown. Hidden until profiles\n // beyond the implicit \"default\" exist so single-profile setups stay clean.\n const {\n profiles: agentProfiles,\n active: activeProfile,\n setActive: setActiveProfile,\n } = useActiveAgentProfile(selected?.id ?? null);\n const handleProfileChange = useCallback(\n (e: React.ChangeEvent<HTMLSelectElement>) => {\n setActiveProfile(e.target.value);\n },\n [setActiveProfile]\n );\n\n if (loading && options.length === 0) {\n return (\n <div className={className} style={style}>\n <div className=\"inline-flex items-center gap-2 rounded-md border border-border-default bg-bg-sunken px-3 py-1.5 text-xs text-text-secondary\">\n <Server className=\"h-3.5 w-3.5\" />\n Loading agents…\n </div>\n </div>\n );\n }\n\n if (options.length === 0) {\n return (\n <div className={className} style={style}>\n <div className=\"inline-flex items-center gap-2 rounded-md border border-border-default bg-bg-sunken px-3 py-1.5 text-xs text-text-secondary\">\n <Server className=\"h-3.5 w-3.5\" />\n No agents yet — add one from the Agents page\n </div>\n </div>\n );\n }\n\n return (\n <div className={className} style={style}>\n {label && !compact && (\n <label className=\"block text-xs font-medium text-text-secondary mb-1\">{label}</label>\n )}\n <div className=\"relative inline-flex items-center\">\n {selected && (\n <span\n className={`absolute left-2.5 z-10 h-2 w-2 rounded-full ${statusDotColor(selected)}`}\n aria-hidden\n />\n )}\n <select\n value={selected?.id ?? ''}\n onChange={handleChange}\n className={`appearance-none rounded-md border border-border-default bg-bg-surface pl-7 pr-8 text-text-primary focus:outline-none focus:ring-2 focus:ring-action-primary-bg/40 ${compact ? 'py-1 text-xs' : 'py-2 text-sm'}`}\n data-testid=\"agent-selector\"\n >\n {options.map((agent) => (\n <option key={agent.id} value={agent.id}>\n {agent.name} ({agent.hostname}){agent.isActive ? '' : ' · offline'}\n </option>\n ))}\n </select>\n <ChevronDown className=\"pointer-events-none absolute right-2 h-3.5 w-3.5 text-text-secondary\" />\n {selected?.tunnelUrl && (\n <Check\n className=\"pointer-events-none absolute -right-5 h-3.5 w-3.5 text-status-success-text\"\n aria-label=\"Tunnel reachable\"\n />\n )}\n </div>\n {selected && agentProfiles.length > 1 && (\n <div className=\"relative inline-flex items-center ml-2\">\n <select\n value={activeProfile}\n onChange={handleProfileChange}\n className={`appearance-none rounded-md border border-border-default bg-bg-surface pl-3 pr-7 text-text-primary focus:outline-none focus:ring-2 focus:ring-action-primary-bg/40 font-mono ${compact ? 'py-1 text-xs' : 'py-2 text-sm'}`}\n data-testid=\"agent-profile-selector\"\n aria-label=\"Active profile\"\n >\n {agentProfiles.map((p) => (\n <option key={p.id} value={p.name}>\n {p.name}\n {p.isDefault ? ' (default)' : ''}\n </option>\n ))}\n </select>\n <ChevronDown className=\"pointer-events-none absolute right-2 h-3.5 w-3.5 text-text-secondary\" />\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,33 +1,36 @@
|
|
|
1
1
|
import { useTr as e } from "../../shared/hooks/useTr.js";
|
|
2
2
|
import { useVibeNavigate as t } from "../../providers/VibeControlsProvider.js";
|
|
3
3
|
import { InstallTabs as n } from "./InstallTabs.js";
|
|
4
|
-
import { useCallback as r,
|
|
5
|
-
import { Check as
|
|
6
|
-
import { getProfileScopedKey as
|
|
7
|
-
import { AnimatePresence as
|
|
8
|
-
import { jsx as
|
|
4
|
+
import { useCallback as r, useMemo as i, useState as a } from "react";
|
|
5
|
+
import { Check as o, Copy as s, Download as c, ExternalLink as l, Terminal as u, X as d } from "lucide-react";
|
|
6
|
+
import { getProfileScopedKey as f } from "@burdenoff/fe-libs/shared/utils";
|
|
7
|
+
import { AnimatePresence as p, motion as m } from "framer-motion";
|
|
8
|
+
import { jsx as h, jsxs as g } from "react/jsx-runtime";
|
|
9
9
|
//#region src/components/shared/AgentSetupBanner.tsx
|
|
10
|
-
var
|
|
11
|
-
function v(
|
|
12
|
-
|
|
10
|
+
var _ = "https://www.npmjs.com/package/@vibecontrols/agent";
|
|
11
|
+
function v() {
|
|
12
|
+
return typeof window > "u" ? "curl -fsSL https://app.vibecontrols.com/install | bash" : `curl -fsSL https://${window.__VIBECONTROLS_HOST__ ?? window.location.host}/install | bash`;
|
|
13
|
+
}
|
|
14
|
+
function y({ variant: y = "compact", dismissible: b = !0, dismissKey: x = "vibecontrols-setup-banner-dismissed", className: S = "" }) {
|
|
15
|
+
let C = e(), w = t(), T = i(() => v(), []), [E, D] = a(!1), [O, k] = a(() => {
|
|
13
16
|
try {
|
|
14
|
-
return localStorage.getItem(
|
|
17
|
+
return localStorage.getItem(f(x)) === "true";
|
|
15
18
|
} catch {
|
|
16
19
|
return !1;
|
|
17
20
|
}
|
|
18
|
-
}),
|
|
21
|
+
}), A = r(async (e) => {
|
|
19
22
|
try {
|
|
20
|
-
await navigator.clipboard.writeText(e),
|
|
23
|
+
await navigator.clipboard.writeText(e), D(!0), setTimeout(() => D(!1), 2e3);
|
|
21
24
|
} catch {
|
|
22
25
|
let t = document.createElement("textarea");
|
|
23
|
-
t.value = e, document.body.appendChild(t), t.select(), document.execCommand("copy"), document.body.removeChild(t),
|
|
26
|
+
t.value = e, document.body.appendChild(t), t.select(), document.execCommand("copy"), document.body.removeChild(t), D(!0), setTimeout(() => D(!1), 2e3);
|
|
24
27
|
}
|
|
25
|
-
}, []),
|
|
26
|
-
|
|
28
|
+
}, []), j = r(() => {
|
|
29
|
+
k(!0);
|
|
27
30
|
try {
|
|
28
|
-
localStorage.setItem(
|
|
31
|
+
localStorage.setItem(f(x), "true");
|
|
29
32
|
} catch {}
|
|
30
|
-
}, [
|
|
33
|
+
}, [x]), M = {
|
|
31
34
|
duration: .3,
|
|
32
35
|
ease: [
|
|
33
36
|
.4,
|
|
@@ -36,7 +39,7 @@ function v({ variant: v = "compact", dismissible: y = !0, dismissKey: b = "vibec
|
|
|
36
39
|
1
|
|
37
40
|
]
|
|
38
41
|
};
|
|
39
|
-
return
|
|
42
|
+
return y === "compact" ? /* @__PURE__ */ h(p, { children: !O && /* @__PURE__ */ g(m.div, {
|
|
40
43
|
initial: {
|
|
41
44
|
opacity: 0,
|
|
42
45
|
y: -8,
|
|
@@ -52,46 +55,46 @@ function v({ variant: v = "compact", dismissible: y = !0, dismissKey: b = "vibec
|
|
|
52
55
|
y: -8,
|
|
53
56
|
height: 0
|
|
54
57
|
},
|
|
55
|
-
transition:
|
|
56
|
-
className: `relative flex items-center gap-3 px-4 py-3 bg-accent-purple-subtle border border-accent-purple/20 rounded-lg ${
|
|
58
|
+
transition: M,
|
|
59
|
+
className: `relative flex items-center gap-3 px-4 py-3 bg-accent-purple-subtle border border-accent-purple/20 rounded-lg ${S}`,
|
|
57
60
|
children: [
|
|
58
|
-
/* @__PURE__ */
|
|
59
|
-
/* @__PURE__ */
|
|
61
|
+
/* @__PURE__ */ h(c, { className: "w-5 h-5 text-accent-purple flex-shrink-0" }),
|
|
62
|
+
/* @__PURE__ */ g("div", {
|
|
60
63
|
className: "flex-1 min-w-0 flex flex-wrap items-center gap-x-3 gap-y-1",
|
|
61
64
|
children: [
|
|
62
|
-
/* @__PURE__ */
|
|
65
|
+
/* @__PURE__ */ h("span", {
|
|
63
66
|
className: "text-sm font-medium text-text-primary",
|
|
64
|
-
children:
|
|
67
|
+
children: C("vibecontrols.shared.agentSetupBanner.installPrompt", "Install the VibeControls Agent CLI to get started")
|
|
65
68
|
}),
|
|
66
|
-
/* @__PURE__ */
|
|
69
|
+
/* @__PURE__ */ g("code", {
|
|
67
70
|
className: "inline-flex items-center gap-1.5 px-2.5 py-1 bg-bg-sunken border border-border-default rounded text-xs font-mono text-text-primary cursor-pointer hover:bg-bg-elevated transition-colors",
|
|
68
|
-
onClick: () =>
|
|
69
|
-
title:
|
|
71
|
+
onClick: () => A(T),
|
|
72
|
+
title: C("vibecontrols.shared.agentSetupBanner.clickToCopy", "Click to copy"),
|
|
70
73
|
children: [
|
|
71
|
-
/* @__PURE__ */
|
|
72
|
-
|
|
73
|
-
|
|
74
|
+
/* @__PURE__ */ h(u, { className: "w-3 h-3" }),
|
|
75
|
+
T,
|
|
76
|
+
E ? /* @__PURE__ */ h(o, { className: "w-3 h-3 text-status-success-text" }) : /* @__PURE__ */ h(s, { className: "w-3 h-3 text-text-muted" })
|
|
74
77
|
]
|
|
75
78
|
}),
|
|
76
|
-
/* @__PURE__ */
|
|
77
|
-
onClick: () =>
|
|
79
|
+
/* @__PURE__ */ g("button", {
|
|
80
|
+
onClick: () => w("/getting-started"),
|
|
78
81
|
className: "text-sm text-accent-purple hover:underline flex items-center gap-1",
|
|
79
82
|
children: [
|
|
80
|
-
|
|
83
|
+
C("vibecontrols.shared.agentSetupBanner.setupGuide", "Setup guide"),
|
|
81
84
|
" ",
|
|
82
|
-
/* @__PURE__ */
|
|
85
|
+
/* @__PURE__ */ h(l, { className: "w-3 h-3" })
|
|
83
86
|
]
|
|
84
87
|
})
|
|
85
88
|
]
|
|
86
89
|
}),
|
|
87
|
-
|
|
88
|
-
onClick:
|
|
90
|
+
b && /* @__PURE__ */ h("button", {
|
|
91
|
+
onClick: j,
|
|
89
92
|
className: "flex-shrink-0 p-1 text-text-muted hover:text-text-secondary rounded transition-colors",
|
|
90
|
-
title:
|
|
91
|
-
children: /* @__PURE__ */
|
|
93
|
+
title: C("vibecontrols.shared.agentSetupBanner.dismiss", "Dismiss"),
|
|
94
|
+
children: /* @__PURE__ */ h(d, { className: "w-4 h-4" })
|
|
92
95
|
})
|
|
93
96
|
]
|
|
94
|
-
}) }) : /* @__PURE__ */
|
|
97
|
+
}) }) : /* @__PURE__ */ h(p, { children: !O && /* @__PURE__ */ g(m.div, {
|
|
95
98
|
initial: {
|
|
96
99
|
opacity: 0,
|
|
97
100
|
y: -8,
|
|
@@ -107,45 +110,45 @@ function v({ variant: v = "compact", dismissible: y = !0, dismissKey: b = "vibec
|
|
|
107
110
|
y: -8,
|
|
108
111
|
height: 0
|
|
109
112
|
},
|
|
110
|
-
transition:
|
|
111
|
-
className: `relative border border-accent-purple/20 bg-accent-purple-subtle rounded-lg overflow-hidden ${
|
|
112
|
-
children: [
|
|
113
|
-
onClick:
|
|
113
|
+
transition: M,
|
|
114
|
+
className: `relative border border-accent-purple/20 bg-accent-purple-subtle rounded-lg overflow-hidden ${S}`,
|
|
115
|
+
children: [b && /* @__PURE__ */ h("button", {
|
|
116
|
+
onClick: j,
|
|
114
117
|
className: "absolute top-3 right-3 p-1 text-text-muted hover:text-text-secondary rounded transition-colors z-10",
|
|
115
|
-
title:
|
|
116
|
-
children: /* @__PURE__ */
|
|
117
|
-
}), /* @__PURE__ */
|
|
118
|
+
title: C("vibecontrols.shared.agentSetupBanner.dismiss", "Dismiss"),
|
|
119
|
+
children: /* @__PURE__ */ h(d, { className: "w-4 h-4" })
|
|
120
|
+
}), /* @__PURE__ */ g("div", {
|
|
118
121
|
className: "p-5 sm:p-6",
|
|
119
122
|
children: [
|
|
120
|
-
/* @__PURE__ */
|
|
123
|
+
/* @__PURE__ */ g("div", {
|
|
121
124
|
className: "flex items-start gap-3 mb-4",
|
|
122
|
-
children: [/* @__PURE__ */
|
|
125
|
+
children: [/* @__PURE__ */ h("div", {
|
|
123
126
|
className: "flex-shrink-0 w-10 h-10 rounded-lg bg-accent-purple/10 flex items-center justify-center",
|
|
124
|
-
children: /* @__PURE__ */
|
|
125
|
-
}), /* @__PURE__ */
|
|
127
|
+
children: /* @__PURE__ */ h(c, { className: "w-5 h-5 text-accent-purple" })
|
|
128
|
+
}), /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("h3", {
|
|
126
129
|
className: "text-base font-semibold text-text-primary",
|
|
127
|
-
children:
|
|
128
|
-
}), /* @__PURE__ */
|
|
130
|
+
children: C("vibecontrols.shared.agentSetupBanner.title", "Get Started with VibeControls Agent")
|
|
131
|
+
}), /* @__PURE__ */ h("p", {
|
|
129
132
|
className: "text-sm text-text-secondary mt-0.5",
|
|
130
|
-
children:
|
|
133
|
+
children: C("vibecontrols.shared.agentSetupBanner.description", "Install the CLI on any machine you want to manage. The only prerequisite is bun — the curl script installs it for you.")
|
|
131
134
|
})] })]
|
|
132
135
|
}),
|
|
133
|
-
/* @__PURE__ */
|
|
136
|
+
/* @__PURE__ */ h("div", {
|
|
134
137
|
className: "ml-0 sm:ml-13",
|
|
135
|
-
children: /* @__PURE__ */
|
|
138
|
+
children: /* @__PURE__ */ h(n, { compact: !0 })
|
|
136
139
|
}),
|
|
137
|
-
/* @__PURE__ */
|
|
140
|
+
/* @__PURE__ */ g("div", {
|
|
138
141
|
className: "flex flex-wrap items-center gap-3 mt-5 ml-0 sm:ml-13",
|
|
139
|
-
children: [/* @__PURE__ */
|
|
140
|
-
onClick: () =>
|
|
142
|
+
children: [/* @__PURE__ */ g("button", {
|
|
143
|
+
onClick: () => w("/getting-started"),
|
|
141
144
|
className: "inline-flex items-center gap-2 px-4 py-2 text-sm bg-accent-purple text-text-inverse rounded-md hover:bg-accent-purple/90 transition-colors",
|
|
142
|
-
children: [
|
|
143
|
-
}), /* @__PURE__ */
|
|
145
|
+
children: [C("vibecontrols.shared.agentSetupBanner.viewFullSetupGuide", "View full setup guide"), /* @__PURE__ */ h(l, { className: "w-3.5 h-3.5" })]
|
|
146
|
+
}), /* @__PURE__ */ g("a", {
|
|
144
147
|
href: _,
|
|
145
148
|
target: "_blank",
|
|
146
149
|
rel: "noopener noreferrer",
|
|
147
150
|
className: "inline-flex items-center gap-2 px-4 py-2 text-sm border border-border-default text-text-primary rounded-md hover:bg-bg-sunken transition-colors",
|
|
148
|
-
children: [
|
|
151
|
+
children: [C("vibecontrols.shared.agentSetupBanner.npmPackage", "npm package"), /* @__PURE__ */ h(l, { className: "w-3.5 h-3.5" })]
|
|
149
152
|
})]
|
|
150
153
|
})
|
|
151
154
|
]
|
|
@@ -153,6 +156,6 @@ function v({ variant: v = "compact", dismissible: y = !0, dismissKey: b = "vibec
|
|
|
153
156
|
}) });
|
|
154
157
|
}
|
|
155
158
|
//#endregion
|
|
156
|
-
export {
|
|
159
|
+
export { y as AgentSetupBanner };
|
|
157
160
|
|
|
158
161
|
//# sourceMappingURL=AgentSetupBanner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentSetupBanner.js","names":[],"sources":["../../../src/components/shared/AgentSetupBanner.tsx"],"sourcesContent":["import { useState, useCallback } from 'react';\nimport { motion, AnimatePresence } from 'framer-motion';\nimport { Download, Copy, Check, ExternalLink, X, Terminal } from 'lucide-react';\nimport { useVibeNavigate } from '@/providers/VibeControlsProvider';\nimport { getProfileScopedKey } from '@burdenoff/fe-libs/shared/utils';\nimport { useTr } from '../../shared/hooks/useTr';\nimport { InstallTabs } from './InstallTabs';\n\ninterface AgentSetupBannerProps {\n /** Compact mode shows a single-line banner; full mode shows a multi-step card */\n variant?: 'compact' | 'full';\n /** Allow the banner to be dismissed */\n dismissible?: boolean;\n /** Storage key for dismissed state */\n dismissKey?: string;\n /** Additional CSS class names */\n className?: string;\n}\n\nconst QUICK_INSTALL = 'curl -fsSL https://vibecontrols.local.burdenoff.com/install | bash';\nconst NPM_URL = 'https://www.npmjs.com/package/@vibecontrols/agent';\n\n/**\n * Reusable banner/card prompting users to install the VibeControls Agent CLI.\n * Used across multiple pages (Overview, Agents, Sessions, Tunnels, SSH, etc.)\n *\n * The full variant mirrors the Getting Started page's tabbed install widget\n * (`InstallTabs`) so users see a single consistent install flow wherever\n * the banner shows up.\n */\nexport function AgentSetupBanner({\n variant = 'compact',\n dismissible = true,\n dismissKey = 'vibecontrols-setup-banner-dismissed',\n className = '',\n}: AgentSetupBannerProps) {\n const tr = useTr();\n const handleNavigate = useVibeNavigate();\n const [copied, setCopied] = useState(false);\n const [dismissed, setDismissed] = useState(() => {\n try {\n return localStorage.getItem(getProfileScopedKey(dismissKey)) === 'true';\n } catch {\n return false;\n }\n });\n\n const handleCopy = useCallback(async (text: string) => {\n try {\n await navigator.clipboard.writeText(text);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n } catch {\n const el = document.createElement('textarea');\n el.value = text;\n document.body.appendChild(el);\n el.select();\n document.execCommand('copy');\n document.body.removeChild(el);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n }\n }, []);\n\n const handleDismiss = useCallback(() => {\n setDismissed(true);\n try {\n localStorage.setItem(getProfileScopedKey(dismissKey), 'true');\n } catch {\n // ignore\n }\n }, [dismissKey]);\n\n const bannerTransition = { duration: 0.3, ease: [0.4, 0, 0.2, 1] as const };\n\n // ─── Compact variant: single-line info banner ─────────────────────────\n if (variant === 'compact') {\n return (\n <AnimatePresence>\n {!dismissed && (\n <motion.div\n initial={{ opacity: 0, y: -8, height: 0 }}\n animate={{ opacity: 1, y: 0, height: 'auto' }}\n exit={{ opacity: 0, y: -8, height: 0 }}\n transition={bannerTransition}\n className={`relative flex items-center gap-3 px-4 py-3 bg-accent-purple-subtle border border-accent-purple/20 rounded-lg ${className}`}\n >\n <Download className=\"w-5 h-5 text-accent-purple flex-shrink-0\" />\n <div className=\"flex-1 min-w-0 flex flex-wrap items-center gap-x-3 gap-y-1\">\n <span className=\"text-sm font-medium text-text-primary\">\n {tr(\n 'vibecontrols.shared.agentSetupBanner.installPrompt',\n 'Install the VibeControls Agent CLI to get started'\n )}\n </span>\n <code\n className=\"inline-flex items-center gap-1.5 px-2.5 py-1 bg-bg-sunken border border-border-default rounded text-xs font-mono text-text-primary cursor-pointer hover:bg-bg-elevated transition-colors\"\n onClick={() => handleCopy(QUICK_INSTALL)}\n title={tr('vibecontrols.shared.agentSetupBanner.clickToCopy', 'Click to copy')}\n >\n <Terminal className=\"w-3 h-3\" />\n {QUICK_INSTALL}\n {copied ? (\n <Check className=\"w-3 h-3 text-status-success-text\" />\n ) : (\n <Copy className=\"w-3 h-3 text-text-muted\" />\n )}\n </code>\n <button\n onClick={() => handleNavigate('/getting-started')}\n className=\"text-sm text-accent-purple hover:underline flex items-center gap-1\"\n >\n {tr('vibecontrols.shared.agentSetupBanner.setupGuide', 'Setup guide')}{' '}\n <ExternalLink className=\"w-3 h-3\" />\n </button>\n </div>\n {dismissible && (\n <button\n onClick={handleDismiss}\n className=\"flex-shrink-0 p-1 text-text-muted hover:text-text-secondary rounded transition-colors\"\n title={tr('vibecontrols.shared.agentSetupBanner.dismiss', 'Dismiss')}\n >\n <X className=\"w-4 h-4\" />\n </button>\n )}\n </motion.div>\n )}\n </AnimatePresence>\n );\n }\n\n // ─── Full variant: tabbed install card (mirrors Getting Started) ──────\n return (\n <AnimatePresence>\n {!dismissed && (\n <motion.div\n initial={{ opacity: 0, y: -8, height: 0 }}\n animate={{ opacity: 1, y: 0, height: 'auto' }}\n exit={{ opacity: 0, y: -8, height: 0 }}\n transition={bannerTransition}\n className={`relative border border-accent-purple/20 bg-accent-purple-subtle rounded-lg overflow-hidden ${className}`}\n >\n {dismissible && (\n <button\n onClick={handleDismiss}\n className=\"absolute top-3 right-3 p-1 text-text-muted hover:text-text-secondary rounded transition-colors z-10\"\n title={tr('vibecontrols.shared.agentSetupBanner.dismiss', 'Dismiss')}\n >\n <X className=\"w-4 h-4\" />\n </button>\n )}\n\n <div className=\"p-5 sm:p-6\">\n <div className=\"flex items-start gap-3 mb-4\">\n <div className=\"flex-shrink-0 w-10 h-10 rounded-lg bg-accent-purple/10 flex items-center justify-center\">\n <Download className=\"w-5 h-5 text-accent-purple\" />\n </div>\n <div>\n <h3 className=\"text-base font-semibold text-text-primary\">\n {tr(\n 'vibecontrols.shared.agentSetupBanner.title',\n 'Get Started with VibeControls Agent'\n )}\n </h3>\n <p className=\"text-sm text-text-secondary mt-0.5\">\n {tr(\n 'vibecontrols.shared.agentSetupBanner.description',\n 'Install the CLI on any machine you want to manage. The only prerequisite is bun — the curl script installs it for you.'\n )}\n </p>\n </div>\n </div>\n\n {/* Tabbed install widget mirrors the Getting Started page */}\n <div className=\"ml-0 sm:ml-13\">\n <InstallTabs compact />\n </div>\n\n {/* Actions */}\n <div className=\"flex flex-wrap items-center gap-3 mt-5 ml-0 sm:ml-13\">\n <button\n onClick={() => handleNavigate('/getting-started')}\n className=\"inline-flex items-center gap-2 px-4 py-2 text-sm bg-accent-purple text-text-inverse rounded-md hover:bg-accent-purple/90 transition-colors\"\n >\n {tr(\n 'vibecontrols.shared.agentSetupBanner.viewFullSetupGuide',\n 'View full setup guide'\n )}\n <ExternalLink className=\"w-3.5 h-3.5\" />\n </button>\n <a\n href={NPM_URL}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"inline-flex items-center gap-2 px-4 py-2 text-sm border border-border-default text-text-primary rounded-md hover:bg-bg-sunken transition-colors\"\n >\n {tr('vibecontrols.shared.agentSetupBanner.npmPackage', 'npm package')}\n <ExternalLink className=\"w-3.5 h-3.5\" />\n </a>\n </div>\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AgentSetupBanner.js","names":[],"sources":["../../../src/components/shared/AgentSetupBanner.tsx"],"sourcesContent":["import { useState, useCallback, useMemo } from 'react';\nimport { motion, AnimatePresence } from 'framer-motion';\nimport { Download, Copy, Check, ExternalLink, X, Terminal } from 'lucide-react';\nimport { useVibeNavigate } from '@/providers/VibeControlsProvider';\nimport { getProfileScopedKey } from '@burdenoff/fe-libs/shared/utils';\nimport { useTr } from '../../shared/hooks/useTr';\nimport { InstallTabs } from './InstallTabs';\n\ninterface AgentSetupBannerProps {\n /** Compact mode shows a single-line banner; full mode shows a multi-step card */\n variant?: 'compact' | 'full';\n /** Allow the banner to be dismissed */\n dismissible?: boolean;\n /** Storage key for dismissed state */\n dismissKey?: string;\n /** Additional CSS class names */\n className?: string;\n}\n\nconst NPM_URL = 'https://www.npmjs.com/package/@vibecontrols/agent';\n\n/**\n * Build the quick-install one-liner using the live host so the command shown\n * to the user reflects the environment they are actually on (local dev,\n * alpha, prod). InstallTabs uses the same `resolveHost()` shape — keep them\n * aligned by reading from `window.__VIBECONTROLS_HOST__` first, then\n * falling back to `window.location.host`.\n */\nfunction getQuickInstallCommand(): string {\n if (typeof window === 'undefined') {\n return 'curl -fsSL https://app.vibecontrols.com/install | bash';\n }\n const injected = (window as { __VIBECONTROLS_HOST__?: string }).__VIBECONTROLS_HOST__;\n const host = injected ?? window.location.host;\n return `curl -fsSL https://${host}/install | bash`;\n}\n\n/**\n * Reusable banner/card prompting users to install the VibeControls Agent CLI.\n * Used across multiple pages (Overview, Agents, Sessions, Tunnels, SSH, etc.)\n *\n * The full variant mirrors the Getting Started page's tabbed install widget\n * (`InstallTabs`) so users see a single consistent install flow wherever\n * the banner shows up.\n */\nexport function AgentSetupBanner({\n variant = 'compact',\n dismissible = true,\n dismissKey = 'vibecontrols-setup-banner-dismissed',\n className = '',\n}: AgentSetupBannerProps) {\n const tr = useTr();\n const handleNavigate = useVibeNavigate();\n const quickInstall = useMemo(() => getQuickInstallCommand(), []);\n const [copied, setCopied] = useState(false);\n const [dismissed, setDismissed] = useState(() => {\n try {\n return localStorage.getItem(getProfileScopedKey(dismissKey)) === 'true';\n } catch {\n return false;\n }\n });\n\n const handleCopy = useCallback(async (text: string) => {\n try {\n await navigator.clipboard.writeText(text);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n } catch {\n const el = document.createElement('textarea');\n el.value = text;\n document.body.appendChild(el);\n el.select();\n document.execCommand('copy');\n document.body.removeChild(el);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n }\n }, []);\n\n const handleDismiss = useCallback(() => {\n setDismissed(true);\n try {\n localStorage.setItem(getProfileScopedKey(dismissKey), 'true');\n } catch {\n // ignore\n }\n }, [dismissKey]);\n\n const bannerTransition = { duration: 0.3, ease: [0.4, 0, 0.2, 1] as const };\n\n // ─── Compact variant: single-line info banner ─────────────────────────\n if (variant === 'compact') {\n return (\n <AnimatePresence>\n {!dismissed && (\n <motion.div\n initial={{ opacity: 0, y: -8, height: 0 }}\n animate={{ opacity: 1, y: 0, height: 'auto' }}\n exit={{ opacity: 0, y: -8, height: 0 }}\n transition={bannerTransition}\n className={`relative flex items-center gap-3 px-4 py-3 bg-accent-purple-subtle border border-accent-purple/20 rounded-lg ${className}`}\n >\n <Download className=\"w-5 h-5 text-accent-purple flex-shrink-0\" />\n <div className=\"flex-1 min-w-0 flex flex-wrap items-center gap-x-3 gap-y-1\">\n <span className=\"text-sm font-medium text-text-primary\">\n {tr(\n 'vibecontrols.shared.agentSetupBanner.installPrompt',\n 'Install the VibeControls Agent CLI to get started'\n )}\n </span>\n <code\n className=\"inline-flex items-center gap-1.5 px-2.5 py-1 bg-bg-sunken border border-border-default rounded text-xs font-mono text-text-primary cursor-pointer hover:bg-bg-elevated transition-colors\"\n onClick={() => handleCopy(quickInstall)}\n title={tr('vibecontrols.shared.agentSetupBanner.clickToCopy', 'Click to copy')}\n >\n <Terminal className=\"w-3 h-3\" />\n {quickInstall}\n {copied ? (\n <Check className=\"w-3 h-3 text-status-success-text\" />\n ) : (\n <Copy className=\"w-3 h-3 text-text-muted\" />\n )}\n </code>\n <button\n onClick={() => handleNavigate('/getting-started')}\n className=\"text-sm text-accent-purple hover:underline flex items-center gap-1\"\n >\n {tr('vibecontrols.shared.agentSetupBanner.setupGuide', 'Setup guide')}{' '}\n <ExternalLink className=\"w-3 h-3\" />\n </button>\n </div>\n {dismissible && (\n <button\n onClick={handleDismiss}\n className=\"flex-shrink-0 p-1 text-text-muted hover:text-text-secondary rounded transition-colors\"\n title={tr('vibecontrols.shared.agentSetupBanner.dismiss', 'Dismiss')}\n >\n <X className=\"w-4 h-4\" />\n </button>\n )}\n </motion.div>\n )}\n </AnimatePresence>\n );\n }\n\n // ─── Full variant: tabbed install card (mirrors Getting Started) ──────\n return (\n <AnimatePresence>\n {!dismissed && (\n <motion.div\n initial={{ opacity: 0, y: -8, height: 0 }}\n animate={{ opacity: 1, y: 0, height: 'auto' }}\n exit={{ opacity: 0, y: -8, height: 0 }}\n transition={bannerTransition}\n className={`relative border border-accent-purple/20 bg-accent-purple-subtle rounded-lg overflow-hidden ${className}`}\n >\n {dismissible && (\n <button\n onClick={handleDismiss}\n className=\"absolute top-3 right-3 p-1 text-text-muted hover:text-text-secondary rounded transition-colors z-10\"\n title={tr('vibecontrols.shared.agentSetupBanner.dismiss', 'Dismiss')}\n >\n <X className=\"w-4 h-4\" />\n </button>\n )}\n\n <div className=\"p-5 sm:p-6\">\n <div className=\"flex items-start gap-3 mb-4\">\n <div className=\"flex-shrink-0 w-10 h-10 rounded-lg bg-accent-purple/10 flex items-center justify-center\">\n <Download className=\"w-5 h-5 text-accent-purple\" />\n </div>\n <div>\n <h3 className=\"text-base font-semibold text-text-primary\">\n {tr(\n 'vibecontrols.shared.agentSetupBanner.title',\n 'Get Started with VibeControls Agent'\n )}\n </h3>\n <p className=\"text-sm text-text-secondary mt-0.5\">\n {tr(\n 'vibecontrols.shared.agentSetupBanner.description',\n 'Install the CLI on any machine you want to manage. The only prerequisite is bun — the curl script installs it for you.'\n )}\n </p>\n </div>\n </div>\n\n {/* Tabbed install widget mirrors the Getting Started page */}\n <div className=\"ml-0 sm:ml-13\">\n <InstallTabs compact />\n </div>\n\n {/* Actions */}\n <div className=\"flex flex-wrap items-center gap-3 mt-5 ml-0 sm:ml-13\">\n <button\n onClick={() => handleNavigate('/getting-started')}\n className=\"inline-flex items-center gap-2 px-4 py-2 text-sm bg-accent-purple text-text-inverse rounded-md hover:bg-accent-purple/90 transition-colors\"\n >\n {tr(\n 'vibecontrols.shared.agentSetupBanner.viewFullSetupGuide',\n 'View full setup guide'\n )}\n <ExternalLink className=\"w-3.5 h-3.5\" />\n </button>\n <a\n href={NPM_URL}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"inline-flex items-center gap-2 px-4 py-2 text-sm border border-border-default text-text-primary rounded-md hover:bg-bg-sunken transition-colors\"\n >\n {tr('vibecontrols.shared.agentSetupBanner.npmPackage', 'npm package')}\n <ExternalLink className=\"w-3.5 h-3.5\" />\n </a>\n </div>\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expandOccurrences.js","names":[],"sources":["../../../src/components/vibecalendar/expandOccurrences.ts"],"sourcesContent":["/**\n * Expand a ScheduledJob into a list of calendar occurrences that fall\n * within the provided date range. Used by VibeCalendarPage to render\n * jobs from the scheduler (and calendar-linked tasks) as events on the\n * month/week/day/agenda grids.\n *\n * Scope-limit: CRON and RRULE jobs only emit their `nextExecutionAt`\n * as a single occurrence because full client-side cron/rrule expansion\n * is out of scope. A follow-up can add a server-side\n * `scheduledJobsInRange` query that returns pre-expanded occurrences.\n */\n\nimport type { VibeCalendarTask, VibeCalendarExecution, CalendarOccurrence } from './types';\n\nexport interface SchedulerJobLike {\n id: string;\n name?: string | null;\n description?: string | null;\n status: string;\n scheduleType: string;\n cronExpression?: string | null;\n rrule?: string | null;\n interval?: unknown;\n scheduledAt?: string | null;\n nextExecutionAt?: string | null;\n lastExecutionAt?: string | null;\n actionId?: string | null;\n timezone?: string | null;\n startDate?: string | null;\n endDate?: string | null;\n}\n\nconst INTERVAL_UNIT_MS: Record<string, number> = {\n SECONDS: 1000,\n MINUTES: 60 * 1000,\n HOURS: 60 * 60 * 1000,\n DAYS: 24 * 60 * 60 * 1000,\n WEEKS: 7 * 24 * 60 * 60 * 1000,\n};\n\n/**\n * Read the interval JSON on a ScheduledJob (stored as `{ value, unit }`\n * by the backend) and return a step in milliseconds, or null if the\n * field is missing or malformed.\n */\nfunction intervalToMs(interval: unknown): number | null {\n if (!interval || typeof interval !== 'object') return null;\n const obj = interval as { value?: unknown; unit?: unknown };\n const value = typeof obj.value === 'number' ? obj.value : Number(obj.value);\n const unit = typeof obj.unit === 'string' ? obj.unit.toUpperCase() : '';\n const unitMs = INTERVAL_UNIT_MS[unit];\n if (!unitMs || !Number.isFinite(value) || value <= 0) return null;\n return value * unitMs;\n}\n\n/**\n * Build a minimal VibeCalendarTask shape from a ScheduledJob so the\n * existing calendar view components (VibeCalMonthView, VibeTaskBlock,\n * etc.) can render it without any component changes. Unused task\n * fields are filled with safe defaults.\n */\nexport function jobToVibeCalendarTask(job: SchedulerJobLike): VibeCalendarTask {\n const fallback = job.nextExecutionAt ?? job.scheduledAt ?? new Date().toISOString();\n return {\n id: job.id,\n title: job.name || 'Untitled job',\n description: job.description ?? null,\n calendarId: '',\n calendarEventId: '',\n agentId: '',\n taskConfig: {\n taskType: 'ACTION',\n command: job.actionId ? `Action: ${job.actionId}` : null,\n script: null,\n interpreter: null,\n cwd: null,\n env: null,\n timeout: null,\n webhookUrl: null,\n webhookMethod: null,\n webhookHeaders: null,\n webhookAuthType: null,\n webhookPayload: null,\n },\n cronExpression: job.cronExpression ?? null,\n rrule: job.rrule ?? null,\n scheduledAt: job.scheduledAt ?? null,\n timezone: job.timezone ?? 'UTC',\n nextExecutionAt: job.nextExecutionAt ?? null,\n lastExecutedAt: job.lastExecutionAt ?? null,\n status: job.status,\n totalExecutions: 0,\n consecutiveFailures: 0,\n createdAt: fallback,\n updatedAt: fallback,\n };\n}\n\n/**\n * Expand a single ScheduledJob into calendar occurrences that fall\n * within [rangeStart, rangeEnd]. See file header for CRON/RRULE caveat.\n */\nexport function expandJobToOccurrences(\n job: SchedulerJobLike,\n rangeStart: Date,\n rangeEnd: Date\n): CalendarOccurrence[] {\n const task = jobToVibeCalendarTask(job);\n const execution: VibeCalendarExecution | null = null;\n const out: CalendarOccurrence[] = [];\n const now = Date.now();\n\n const pushIfInRange = (iso: string | null | undefined) => {\n if (!iso) return;\n const t = Date.parse(iso);\n if (Number.isNaN(t)) return;\n if (t < rangeStart.getTime() || t > rangeEnd.getTime()) return;\n out.push({\n task,\n occurrenceAt: new Date(t).toISOString(),\n isPast: t < now,\n execution,\n });\n };\n\n switch (job.scheduleType) {\n case 'ONE_TIME': {\n pushIfInRange(job.scheduledAt ?? job.nextExecutionAt);\n break;\n }\n case 'FIXED_INTERVAL': {\n const stepMs = intervalToMs(job.interval);\n if (stepMs === null) {\n // Missing/invalid interval — fall back to just nextExecutionAt.\n pushIfInRange(job.nextExecutionAt);\n break;\n }\n // Anchor from the scheduled start (or nextExecutionAt), whichever\n // is earlier and non-null. Jobs with startDate honor it.\n const anchorIso = job.startDate ?? job.scheduledAt ?? job.nextExecutionAt;\n if (!anchorIso) break;\n const anchor = Date.parse(anchorIso);\n if (Number.isNaN(anchor)) break;\n\n // Step forward from the anchor until we enter the range, then\n // emit until we leave it or we hit the hard cap.\n let t = anchor;\n if (t < rangeStart.getTime()) {\n const delta = rangeStart.getTime() - t;\n const skips = Math.floor(delta / stepMs);\n t = t + skips * stepMs;\n }\n const endCap = job.endDate\n ? Math.min(rangeEnd.getTime(), Date.parse(job.endDate))\n : rangeEnd.getTime();\n let count = 0;\n while (t <= endCap && count < 500) {\n if (t >= rangeStart.getTime()) {\n out.push({\n task,\n occurrenceAt: new Date(t).toISOString(),\n isPast: t < now,\n execution,\n });\n }\n t += stepMs;\n count += 1;\n }\n break;\n }\n case 'CRON':\n case 'RRULE':\n default: {\n // Fallback: render only the next scheduled run. A full client-side\n // cron/rrule expander is out of scope
|
|
1
|
+
{"version":3,"file":"expandOccurrences.js","names":[],"sources":["../../../src/components/vibecalendar/expandOccurrences.ts"],"sourcesContent":["/**\n * Expand a ScheduledJob into a list of calendar occurrences that fall\n * within the provided date range. Used by VibeCalendarPage to render\n * jobs from the scheduler (and calendar-linked tasks) as events on the\n * month/week/day/agenda grids.\n *\n * Scope-limit: CRON and RRULE jobs only emit their `nextExecutionAt`\n * as a single occurrence because full client-side cron/rrule expansion\n * is out of scope. A follow-up can add a server-side\n * `scheduledJobsInRange` query that returns pre-expanded occurrences.\n */\n\nimport type { VibeCalendarTask, VibeCalendarExecution, CalendarOccurrence } from './types';\n\nexport interface SchedulerJobLike {\n id: string;\n name?: string | null;\n description?: string | null;\n status: string;\n scheduleType: string;\n cronExpression?: string | null;\n rrule?: string | null;\n interval?: unknown;\n scheduledAt?: string | null;\n nextExecutionAt?: string | null;\n lastExecutionAt?: string | null;\n actionId?: string | null;\n timezone?: string | null;\n startDate?: string | null;\n endDate?: string | null;\n}\n\nconst INTERVAL_UNIT_MS: Record<string, number> = {\n SECONDS: 1000,\n MINUTES: 60 * 1000,\n HOURS: 60 * 60 * 1000,\n DAYS: 24 * 60 * 60 * 1000,\n WEEKS: 7 * 24 * 60 * 60 * 1000,\n};\n\n/**\n * Read the interval JSON on a ScheduledJob (stored as `{ value, unit }`\n * by the backend) and return a step in milliseconds, or null if the\n * field is missing or malformed.\n */\nfunction intervalToMs(interval: unknown): number | null {\n if (!interval || typeof interval !== 'object') return null;\n const obj = interval as { value?: unknown; unit?: unknown };\n const value = typeof obj.value === 'number' ? obj.value : Number(obj.value);\n const unit = typeof obj.unit === 'string' ? obj.unit.toUpperCase() : '';\n const unitMs = INTERVAL_UNIT_MS[unit];\n if (!unitMs || !Number.isFinite(value) || value <= 0) return null;\n return value * unitMs;\n}\n\n/**\n * Build a minimal VibeCalendarTask shape from a ScheduledJob so the\n * existing calendar view components (VibeCalMonthView, VibeTaskBlock,\n * etc.) can render it without any component changes. Unused task\n * fields are filled with safe defaults.\n */\nexport function jobToVibeCalendarTask(job: SchedulerJobLike): VibeCalendarTask {\n const fallback = job.nextExecutionAt ?? job.scheduledAt ?? new Date().toISOString();\n return {\n id: job.id,\n title: job.name || 'Untitled job',\n description: job.description ?? null,\n calendarId: '',\n calendarEventId: '',\n agentId: '',\n taskConfig: {\n taskType: 'ACTION',\n command: job.actionId ? `Action: ${job.actionId}` : null,\n script: null,\n interpreter: null,\n cwd: null,\n env: null,\n timeout: null,\n webhookUrl: null,\n webhookMethod: null,\n webhookHeaders: null,\n webhookAuthType: null,\n webhookPayload: null,\n },\n cronExpression: job.cronExpression ?? null,\n rrule: job.rrule ?? null,\n scheduledAt: job.scheduledAt ?? null,\n timezone: job.timezone ?? 'UTC',\n nextExecutionAt: job.nextExecutionAt ?? null,\n lastExecutedAt: job.lastExecutionAt ?? null,\n status: job.status,\n totalExecutions: 0,\n consecutiveFailures: 0,\n createdAt: fallback,\n updatedAt: fallback,\n };\n}\n\n/**\n * Expand a single ScheduledJob into calendar occurrences that fall\n * within [rangeStart, rangeEnd]. See file header for CRON/RRULE caveat.\n */\nexport function expandJobToOccurrences(\n job: SchedulerJobLike,\n rangeStart: Date,\n rangeEnd: Date\n): CalendarOccurrence[] {\n const task = jobToVibeCalendarTask(job);\n const execution: VibeCalendarExecution | null = null;\n const out: CalendarOccurrence[] = [];\n const now = Date.now();\n\n const pushIfInRange = (iso: string | null | undefined) => {\n if (!iso) return;\n const t = Date.parse(iso);\n if (Number.isNaN(t)) return;\n if (t < rangeStart.getTime() || t > rangeEnd.getTime()) return;\n out.push({\n task,\n occurrenceAt: new Date(t).toISOString(),\n isPast: t < now,\n execution,\n });\n };\n\n switch (job.scheduleType) {\n case 'ONE_TIME': {\n pushIfInRange(job.scheduledAt ?? job.nextExecutionAt);\n break;\n }\n case 'FIXED_INTERVAL': {\n const stepMs = intervalToMs(job.interval);\n if (stepMs === null) {\n // Missing/invalid interval — fall back to just nextExecutionAt.\n pushIfInRange(job.nextExecutionAt);\n break;\n }\n // Anchor from the scheduled start (or nextExecutionAt), whichever\n // is earlier and non-null. Jobs with startDate honor it.\n const anchorIso = job.startDate ?? job.scheduledAt ?? job.nextExecutionAt;\n if (!anchorIso) break;\n const anchor = Date.parse(anchorIso);\n if (Number.isNaN(anchor)) break;\n\n // Step forward from the anchor until we enter the range, then\n // emit until we leave it or we hit the hard cap.\n let t = anchor;\n if (t < rangeStart.getTime()) {\n const delta = rangeStart.getTime() - t;\n const skips = Math.floor(delta / stepMs);\n t = t + skips * stepMs;\n }\n const endCap = job.endDate\n ? Math.min(rangeEnd.getTime(), Date.parse(job.endDate))\n : rangeEnd.getTime();\n let count = 0;\n while (t <= endCap && count < 500) {\n if (t >= rangeStart.getTime()) {\n out.push({\n task,\n occurrenceAt: new Date(t).toISOString(),\n isPast: t < now,\n execution,\n });\n }\n t += stepMs;\n count += 1;\n }\n break;\n }\n case 'CRON':\n case 'RRULE':\n default: {\n // Fallback: render only the next scheduled run. A full client-side\n // cron/rrule expander is out of scope; full range expansion depends\n // on a server-side range query (tracked in scheduler-svc backlog)\n // that returns pre-expanded occurrences so recurring jobs show every\n // run in the visible range.\n pushIfInRange(job.nextExecutionAt);\n break;\n }\n }\n\n return out;\n}\n\n/**\n * Convenience helper: expand a list of jobs into a merged, sorted list\n * of occurrences.\n */\nexport function expandJobsToOccurrences(\n jobs: SchedulerJobLike[],\n rangeStart: Date,\n rangeEnd: Date\n): CalendarOccurrence[] {\n const all: CalendarOccurrence[] = [];\n for (const job of jobs) {\n all.push(...expandJobToOccurrences(job, rangeStart, rangeEnd));\n }\n all.sort((a, b) => a.occurrenceAt.localeCompare(b.occurrenceAt));\n return all;\n}\n"],"mappings":"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"}
|
|
@@ -3,7 +3,11 @@ var e = "@vibecontrols/vibe-plugin-ai", t = [
|
|
|
3
3
|
"@vibecontrols/vibe-plugin-ai-claude",
|
|
4
4
|
"@vibecontrols/vibe-plugin-ai-codex",
|
|
5
5
|
"@vibecontrols/vibe-plugin-ai-gemini",
|
|
6
|
-
"@vibecontrols/vibe-plugin-ai-opencode"
|
|
6
|
+
"@vibecontrols/vibe-plugin-ai-opencode",
|
|
7
|
+
"@vibecontrols/vibe-plugin-ai-cursor",
|
|
8
|
+
"@vibecontrols/vibe-plugin-ai-openrouter",
|
|
9
|
+
"@vibecontrols/vibe-plugin-ai-minimax",
|
|
10
|
+
"@vibecontrols/vibe-plugin-ai-ollama"
|
|
7
11
|
];
|
|
8
12
|
[...t];
|
|
9
13
|
var n = "@vibecontrols/vibe-plugin-session-manager", r = [
|
|
@@ -47,6 +51,30 @@ var n = "@vibecontrols/vibe-plugin-session-manager", r = [
|
|
|
47
51
|
description: "OpenCode agent provider.",
|
|
48
52
|
category: "ai-provider"
|
|
49
53
|
},
|
|
54
|
+
"@vibecontrols/vibe-plugin-ai-cursor": {
|
|
55
|
+
packageName: "@vibecontrols/vibe-plugin-ai-cursor",
|
|
56
|
+
displayName: "Cursor",
|
|
57
|
+
description: "Cursor agent provider (CLI + SDK).",
|
|
58
|
+
category: "ai-provider"
|
|
59
|
+
},
|
|
60
|
+
"@vibecontrols/vibe-plugin-ai-openrouter": {
|
|
61
|
+
packageName: "@vibecontrols/vibe-plugin-ai-openrouter",
|
|
62
|
+
displayName: "OpenRouter",
|
|
63
|
+
description: "OpenRouter aggregator (300+ models, SDK only).",
|
|
64
|
+
category: "ai-provider"
|
|
65
|
+
},
|
|
66
|
+
"@vibecontrols/vibe-plugin-ai-minimax": {
|
|
67
|
+
packageName: "@vibecontrols/vibe-plugin-ai-minimax",
|
|
68
|
+
displayName: "Minimax",
|
|
69
|
+
description: "Minimax provider (CLI + Anthropic-compatible SDK).",
|
|
70
|
+
category: "ai-provider"
|
|
71
|
+
},
|
|
72
|
+
"@vibecontrols/vibe-plugin-ai-ollama": {
|
|
73
|
+
packageName: "@vibecontrols/vibe-plugin-ai-ollama",
|
|
74
|
+
displayName: "Ollama",
|
|
75
|
+
description: "Ollama Cloud + self-hosted (CLI + SDK).",
|
|
76
|
+
category: "ai-provider"
|
|
77
|
+
},
|
|
50
78
|
"@vibecontrols/vibe-plugin-ai-aider": {
|
|
51
79
|
packageName: "@vibecontrols/vibe-plugin-ai-aider",
|
|
52
80
|
displayName: "Aider",
|