@burdenoff/microfe-vibecontrols 2026.511.1 → 2026.513.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 +60 -47
- 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
|
@@ -4,74 +4,74 @@ import { ErrorState as n } from "../shared/ErrorState.js";
|
|
|
4
4
|
import { EmptyState as r } from "../shared/EmptyState.js";
|
|
5
5
|
import { Card as i } from "../shared/Card.js";
|
|
6
6
|
import "../shared/index.js";
|
|
7
|
-
import {
|
|
8
|
-
import { useCallback as
|
|
9
|
-
import { Check as
|
|
10
|
-
import { getStoredAuthToken as
|
|
11
|
-
import { Fragment as
|
|
7
|
+
import { agentApiPath as a, fetchApiDescriptor as o } from "../../services/aiApi.js";
|
|
8
|
+
import { useCallback as s, useEffect as c, useState as l } from "react";
|
|
9
|
+
import { Check as u, Copy as d, Play as f, Terminal as p } from "lucide-react";
|
|
10
|
+
import { getStoredAuthToken as m, getStoredWorkspaceToken as h } from "@burdenoff/fe-libs/shared/graphql";
|
|
11
|
+
import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
|
|
12
12
|
//#region src/components/ai/AIPlaygroundTab.tsx
|
|
13
|
-
function
|
|
14
|
-
let
|
|
15
|
-
|
|
13
|
+
function y({ agent: y }) {
|
|
14
|
+
let b = e(), [x, S] = l([]), [C, w] = l(!0), [T, E] = l(null), [D, O] = l(null), [k, A] = l({}), [j, M] = l(!1), [N, P] = l(null), [F, I] = l(null), [L, R] = l(!1), z = s(async () => {
|
|
15
|
+
w(!0), E(null);
|
|
16
16
|
try {
|
|
17
|
-
let e = await
|
|
18
|
-
|
|
17
|
+
let e = await o(y);
|
|
18
|
+
S(e), e.length > 0 && B(e[0]);
|
|
19
19
|
} catch (e) {
|
|
20
|
-
|
|
20
|
+
E(e instanceof Error ? e.message : "Failed to load API descriptor");
|
|
21
21
|
} finally {
|
|
22
|
-
|
|
22
|
+
w(!1);
|
|
23
23
|
}
|
|
24
|
-
}, [
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}, [
|
|
28
|
-
let
|
|
29
|
-
|
|
24
|
+
}, [y]);
|
|
25
|
+
c(() => {
|
|
26
|
+
z();
|
|
27
|
+
}, [z]);
|
|
28
|
+
let B = (e) => {
|
|
29
|
+
O(e);
|
|
30
30
|
let t = {};
|
|
31
31
|
e.parameters?.forEach((e) => {
|
|
32
32
|
t[e.name] = "";
|
|
33
|
-
}),
|
|
34
|
-
},
|
|
35
|
-
if (
|
|
36
|
-
|
|
33
|
+
}), A(t), P(null), I(null);
|
|
34
|
+
}, V = async () => {
|
|
35
|
+
if (D) {
|
|
36
|
+
M(!0), P(null), I(null);
|
|
37
37
|
try {
|
|
38
|
-
let e =
|
|
39
|
-
for (let [n, r] of Object.entries(
|
|
40
|
-
let n =
|
|
38
|
+
let e = D.path, t = {};
|
|
39
|
+
for (let [n, r] of Object.entries(k)) e.includes(`:${n}`) ? e = e.replace(`:${n}`, encodeURIComponent(r)) : r && (t[n] = r);
|
|
40
|
+
let n = D.method.toUpperCase(), r = n === "POST" || n === "PATCH" || n === "PUT", i = m(), o = h(), s = new URLSearchParams(window.location.search).get("workspace") || "", c = await (await fetch("/workspaces/graphql", {
|
|
41
41
|
method: "POST",
|
|
42
42
|
headers: {
|
|
43
43
|
"Content-Type": "application/json",
|
|
44
44
|
...i ? { Authorization: `Bearer ${i}` } : {},
|
|
45
|
-
...
|
|
46
|
-
...
|
|
45
|
+
...o ? { "X-Workspace-Authorization": `Bearer ${o}` } : {},
|
|
46
|
+
...s ? { "x-workspace-id": s } : {}
|
|
47
47
|
},
|
|
48
48
|
body: JSON.stringify({
|
|
49
49
|
query: "mutation AgentAiMutate($agentId: ID!, $path: String!, $method: String!, $body: JSON) {\n agentAiMutate(agentId: $agentId, path: $path, method: $method, body: $body) {\n ok\n status\n data\n text\n error\n }\n }",
|
|
50
50
|
variables: {
|
|
51
|
-
agentId:
|
|
52
|
-
path: e,
|
|
51
|
+
agentId: y.id,
|
|
52
|
+
path: a(y.profile, e),
|
|
53
53
|
method: n,
|
|
54
54
|
body: r && Object.keys(t).length > 0 ? t : null
|
|
55
55
|
}
|
|
56
56
|
})
|
|
57
|
-
})).json(),
|
|
58
|
-
if (!
|
|
59
|
-
|
|
57
|
+
})).json(), l = c.data?.agentAiMutate;
|
|
58
|
+
if (!l) throw Error(c.errors?.[0]?.message || "Request failed");
|
|
59
|
+
I(l.status), P(JSON.stringify(l.data ?? (l.text ? { text: l.text } : { error: l.error }), null, 2));
|
|
60
60
|
} catch (e) {
|
|
61
|
-
|
|
61
|
+
P(`Error: ${e instanceof Error ? e.message : "Request failed"}`), I(0);
|
|
62
62
|
} finally {
|
|
63
|
-
|
|
63
|
+
M(!1);
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
|
-
},
|
|
67
|
-
if (!
|
|
68
|
-
let e =
|
|
69
|
-
for (let [n, r] of Object.entries(
|
|
70
|
-
let n =
|
|
66
|
+
}, H = () => {
|
|
67
|
+
if (!D) return "";
|
|
68
|
+
let e = D.path, t = {};
|
|
69
|
+
for (let [n, r] of Object.entries(k)) e.includes(`:${n}`) ? e = e.replace(`:${n}`, encodeURIComponent(r || `{${n}}`)) : r && (t[n] = r);
|
|
70
|
+
let n = D.method.toUpperCase(), r = a(y.profile, e);
|
|
71
71
|
return `mutation AgentAiMutate {
|
|
72
72
|
agentAiMutate(
|
|
73
|
-
agentId: "${
|
|
74
|
-
path: "${
|
|
73
|
+
agentId: "${y.id}"
|
|
74
|
+
path: "${r}"
|
|
75
75
|
method: "${n}"
|
|
76
76
|
body: ${Object.keys(t).length > 0 ? JSON.stringify(t) : "null"}
|
|
77
77
|
) {
|
|
@@ -82,34 +82,34 @@ function v({ agentId: v }) {
|
|
|
82
82
|
}
|
|
83
83
|
}`;
|
|
84
84
|
};
|
|
85
|
-
return
|
|
86
|
-
title:
|
|
87
|
-
message:
|
|
88
|
-
onRetry:
|
|
89
|
-
}) :
|
|
90
|
-
icon: /* @__PURE__ */
|
|
91
|
-
title:
|
|
92
|
-
description:
|
|
93
|
-
}) : /* @__PURE__ */
|
|
85
|
+
return C ? /* @__PURE__ */ _(t, { message: b("vibecontrols.ai.playground.loading", "Loading API descriptor...") }) : T ? /* @__PURE__ */ _(n, {
|
|
86
|
+
title: b("vibecontrols.ai.playground.loadFailed", "Failed to load API"),
|
|
87
|
+
message: T,
|
|
88
|
+
onRetry: z
|
|
89
|
+
}) : x.length === 0 ? /* @__PURE__ */ _(r, {
|
|
90
|
+
icon: /* @__PURE__ */ _(p, { className: "w-8 h-8 text-text-secondary" }),
|
|
91
|
+
title: b("vibecontrols.ai.playground.noEndpoints", "No API endpoints"),
|
|
92
|
+
description: b("vibecontrols.ai.playground.noEndpointsDesc", "The agent does not expose any AI API endpoints")
|
|
93
|
+
}) : /* @__PURE__ */ v("div", {
|
|
94
94
|
className: "grid grid-cols-1 lg:grid-cols-2 gap-6",
|
|
95
|
-
children: [/* @__PURE__ */
|
|
95
|
+
children: [/* @__PURE__ */ v("div", {
|
|
96
96
|
className: "space-y-4",
|
|
97
97
|
children: [
|
|
98
|
-
/* @__PURE__ */
|
|
98
|
+
/* @__PURE__ */ v(i, {
|
|
99
99
|
className: "p-4",
|
|
100
100
|
children: [
|
|
101
|
-
/* @__PURE__ */
|
|
101
|
+
/* @__PURE__ */ _("h3", {
|
|
102
102
|
className: "font-semibold text-text-primary mb-3",
|
|
103
|
-
children:
|
|
103
|
+
children: b("vibecontrols.ai.playground.endpoint", "Endpoint")
|
|
104
104
|
}),
|
|
105
|
-
/* @__PURE__ */
|
|
106
|
-
value:
|
|
105
|
+
/* @__PURE__ */ _("select", {
|
|
106
|
+
value: D?.id ?? "",
|
|
107
107
|
onChange: (e) => {
|
|
108
|
-
let t =
|
|
109
|
-
t &&
|
|
108
|
+
let t = x.find((t) => t.id === e.target.value);
|
|
109
|
+
t && B(t);
|
|
110
110
|
},
|
|
111
111
|
className: "w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary text-sm",
|
|
112
|
-
children:
|
|
112
|
+
children: x.map((e) => /* @__PURE__ */ v("option", {
|
|
113
113
|
value: e.id,
|
|
114
114
|
children: [
|
|
115
115
|
e.method.toUpperCase(),
|
|
@@ -120,29 +120,29 @@ function v({ agentId: v }) {
|
|
|
120
120
|
]
|
|
121
121
|
}, e.id))
|
|
122
122
|
}),
|
|
123
|
-
|
|
123
|
+
D?.description && /* @__PURE__ */ _("p", {
|
|
124
124
|
className: "mt-2 text-xs text-text-secondary",
|
|
125
|
-
children:
|
|
125
|
+
children: D.description
|
|
126
126
|
})
|
|
127
127
|
]
|
|
128
128
|
}),
|
|
129
|
-
|
|
129
|
+
D?.parameters && D.parameters.length > 0 && /* @__PURE__ */ v(i, {
|
|
130
130
|
className: "p-4",
|
|
131
|
-
children: [/* @__PURE__ */
|
|
131
|
+
children: [/* @__PURE__ */ _("h3", {
|
|
132
132
|
className: "font-semibold text-text-primary mb-3",
|
|
133
|
-
children:
|
|
134
|
-
}), /* @__PURE__ */
|
|
133
|
+
children: b("vibecontrols.ai.playground.parameters", "Parameters")
|
|
134
|
+
}), /* @__PURE__ */ _("div", {
|
|
135
135
|
className: "space-y-3",
|
|
136
|
-
children:
|
|
137
|
-
/* @__PURE__ */
|
|
136
|
+
children: D.parameters.map((e) => /* @__PURE__ */ v("div", { children: [
|
|
137
|
+
/* @__PURE__ */ v("label", {
|
|
138
138
|
className: "flex items-center gap-1.5 text-sm font-medium text-text-primary mb-1",
|
|
139
139
|
children: [
|
|
140
140
|
e.name,
|
|
141
|
-
e.required && /* @__PURE__ */
|
|
141
|
+
e.required && /* @__PURE__ */ _("span", {
|
|
142
142
|
className: "text-status-error-text text-xs",
|
|
143
143
|
children: "*"
|
|
144
144
|
}),
|
|
145
|
-
/* @__PURE__ */
|
|
145
|
+
/* @__PURE__ */ v("span", {
|
|
146
146
|
className: "text-xs text-text-muted font-normal",
|
|
147
147
|
children: [
|
|
148
148
|
"(",
|
|
@@ -152,14 +152,14 @@ function v({ agentId: v }) {
|
|
|
152
152
|
})
|
|
153
153
|
]
|
|
154
154
|
}),
|
|
155
|
-
e.description && /* @__PURE__ */
|
|
155
|
+
e.description && /* @__PURE__ */ _("p", {
|
|
156
156
|
className: "text-xs text-text-secondary mb-1",
|
|
157
157
|
children: e.description
|
|
158
158
|
}),
|
|
159
|
-
/* @__PURE__ */
|
|
159
|
+
/* @__PURE__ */ _("input", {
|
|
160
160
|
type: "text",
|
|
161
|
-
value:
|
|
162
|
-
onChange: (t) =>
|
|
161
|
+
value: k[e.name] ?? "",
|
|
162
|
+
onChange: (t) => A((n) => ({
|
|
163
163
|
...n,
|
|
164
164
|
[e.name]: t.target.value
|
|
165
165
|
})),
|
|
@@ -169,54 +169,54 @@ function v({ agentId: v }) {
|
|
|
169
169
|
] }, e.name))
|
|
170
170
|
})]
|
|
171
171
|
}),
|
|
172
|
-
/* @__PURE__ */
|
|
173
|
-
onClick:
|
|
174
|
-
disabled:
|
|
172
|
+
/* @__PURE__ */ v("button", {
|
|
173
|
+
onClick: V,
|
|
174
|
+
disabled: j,
|
|
175
175
|
className: "w-full flex items-center justify-center gap-2 px-4 py-2.5 bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50 text-sm font-medium",
|
|
176
|
-
children: [/* @__PURE__ */
|
|
176
|
+
children: [/* @__PURE__ */ _(f, { className: "w-4 h-4" }), j ? b("vibecontrols.ai.playground.executing", "Executing...") : b("vibecontrols.ai.playground.execute", "Execute")]
|
|
177
177
|
}),
|
|
178
|
-
/* @__PURE__ */
|
|
178
|
+
/* @__PURE__ */ v(i, {
|
|
179
179
|
className: "p-4",
|
|
180
|
-
children: [/* @__PURE__ */
|
|
180
|
+
children: [/* @__PURE__ */ v("div", {
|
|
181
181
|
className: "mb-2 flex flex-wrap items-center justify-between gap-2",
|
|
182
|
-
children: [/* @__PURE__ */
|
|
182
|
+
children: [/* @__PURE__ */ _("h3", {
|
|
183
183
|
className: "text-xs font-semibold text-text-secondary uppercase tracking-wide",
|
|
184
184
|
children: "cURL"
|
|
185
|
-
}), /* @__PURE__ */
|
|
185
|
+
}), /* @__PURE__ */ _("button", {
|
|
186
186
|
onClick: () => {
|
|
187
|
-
navigator.clipboard.writeText(
|
|
187
|
+
navigator.clipboard.writeText(H()), R(!0), setTimeout(() => R(!1), 2e3);
|
|
188
188
|
},
|
|
189
189
|
className: "flex items-center gap-1 px-2 py-1 text-xs text-text-secondary hover:bg-bg-sunken rounded transition-colors",
|
|
190
|
-
children:
|
|
190
|
+
children: L ? /* @__PURE__ */ v(g, { children: [/* @__PURE__ */ _(u, { className: "w-3 h-3 text-status-success-text" }), " Copied"] }) : /* @__PURE__ */ v(g, { children: [/* @__PURE__ */ _(d, { className: "w-3 h-3" }), " Copy"] })
|
|
191
191
|
})]
|
|
192
|
-
}), /* @__PURE__ */
|
|
192
|
+
}), /* @__PURE__ */ _("pre", {
|
|
193
193
|
className: "text-xs text-text-primary bg-bg-sunken rounded p-3 overflow-x-auto whitespace-pre-wrap font-mono",
|
|
194
|
-
children:
|
|
194
|
+
children: H()
|
|
195
195
|
})]
|
|
196
196
|
})
|
|
197
197
|
]
|
|
198
|
-
}), /* @__PURE__ */
|
|
198
|
+
}), /* @__PURE__ */ _("div", { children: /* @__PURE__ */ v(i, {
|
|
199
199
|
className: "p-4 h-full",
|
|
200
|
-
children: [/* @__PURE__ */
|
|
200
|
+
children: [/* @__PURE__ */ v("div", {
|
|
201
201
|
className: "mb-3 flex flex-wrap items-center justify-between gap-2",
|
|
202
|
-
children: [/* @__PURE__ */
|
|
202
|
+
children: [/* @__PURE__ */ _("h3", {
|
|
203
203
|
className: "font-semibold text-text-primary",
|
|
204
|
-
children:
|
|
205
|
-
}),
|
|
206
|
-
className: `px-2 py-0.5 text-xs rounded font-mono ${
|
|
207
|
-
children:
|
|
204
|
+
children: b("vibecontrols.ai.playground.response", "Response")
|
|
205
|
+
}), F !== null && /* @__PURE__ */ _("span", {
|
|
206
|
+
className: `px-2 py-0.5 text-xs rounded font-mono ${F >= 200 && F < 300 ? "bg-status-success-bg text-status-success-text" : F >= 400 ? "bg-status-error-bg text-status-error-text" : "bg-status-warning-bg text-status-warning-text"}`,
|
|
207
|
+
children: F
|
|
208
208
|
})]
|
|
209
|
-
}),
|
|
209
|
+
}), N === null ? /* @__PURE__ */ _("div", {
|
|
210
210
|
className: "flex items-center justify-center h-48 text-sm text-text-secondary",
|
|
211
|
-
children:
|
|
212
|
-
}) : /* @__PURE__ */
|
|
211
|
+
children: b("vibecontrols.ai.playground.executeToSee", "Execute a request to see the response")
|
|
212
|
+
}) : /* @__PURE__ */ _("pre", {
|
|
213
213
|
className: "text-xs text-text-primary bg-bg-sunken rounded p-3 overflow-auto max-h-[60vh] whitespace-pre-wrap font-mono",
|
|
214
|
-
children:
|
|
214
|
+
children: N
|
|
215
215
|
})]
|
|
216
216
|
}) })]
|
|
217
217
|
});
|
|
218
218
|
}
|
|
219
219
|
//#endregion
|
|
220
|
-
export {
|
|
220
|
+
export { y as AIPlaygroundTab };
|
|
221
221
|
|
|
222
222
|
//# sourceMappingURL=AIPlaygroundTab.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AIPlaygroundTab.js","names":[],"sources":["../../../src/components/ai/AIPlaygroundTab.tsx"],"sourcesContent":["import { useState, useEffect, useCallback } from 'react';\nimport { Play, Copy, Check, Terminal } from 'lucide-react';\nimport { Card, LoadingState, ErrorState, EmptyState } from '@/components/shared';\nimport type { AIApiEndpoint } from '@/services/aiApi';\nimport { fetchApiDescriptor } from '@/services/aiApi';\nimport { getStoredAuthToken, getStoredWorkspaceToken } from '@burdenoff/fe-libs/shared/graphql';\nimport { useTr } from '../../shared/hooks/useTr';\n\ninterface AIPlaygroundTabProps {\n agentId: string;\n}\n\nexport function AIPlaygroundTab({ agentId }: AIPlaygroundTabProps) {\n const tr = useTr();\n const [endpoints, setEndpoints] = useState<AIApiEndpoint[]>([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n const [selectedEndpoint, setSelectedEndpoint] = useState<AIApiEndpoint | null>(null);\n const [params, setParams] = useState<Record<string, string>>({});\n const [executing, setExecuting] = useState(false);\n const [response, setResponse] = useState<string | null>(null);\n const [responseStatus, setResponseStatus] = useState<number | null>(null);\n const [copied, setCopied] = useState(false);\n\n const loadEndpoints = useCallback(async () => {\n setLoading(true);\n setError(null);\n try {\n const result = await fetchApiDescriptor(agentId);\n setEndpoints(result);\n if (result.length > 0) {\n selectEndpoint(result[0]);\n }\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to load API descriptor');\n } finally {\n setLoading(false);\n }\n }, [agentId]);\n\n useEffect(() => {\n loadEndpoints();\n }, [loadEndpoints]);\n\n const selectEndpoint = (ep: AIApiEndpoint) => {\n setSelectedEndpoint(ep);\n const newParams: Record<string, string> = {};\n ep.parameters?.forEach((p) => {\n newParams[p.name] = '';\n });\n setParams(newParams);\n setResponse(null);\n setResponseStatus(null);\n };\n\n const handleExecute = async () => {\n if (!selectedEndpoint) return;\n setExecuting(true);\n setResponse(null);\n setResponseStatus(null);\n try {\n // Build path with path params replaced\n let path = selectedEndpoint.path;\n const bodyParams: Record<string, string> = {};\n\n for (const [key, value] of Object.entries(params)) {\n if (path.includes(`:${key}`)) {\n path = path.replace(`:${key}`, encodeURIComponent(value));\n } else if (value) {\n bodyParams[key] = value;\n }\n }\n\n const method = selectedEndpoint.method.toUpperCase();\n const hasBody = method === 'POST' || method === 'PATCH' || method === 'PUT';\n\n const authToken = getStoredAuthToken();\n const workspaceToken = getStoredWorkspaceToken();\n const workspaceId = new URLSearchParams(window.location.search).get('workspace') || '';\n const graphRes = await fetch('/workspaces/graphql', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...(authToken ? { Authorization: `Bearer ${authToken}` } : {}),\n ...(workspaceToken ? { 'X-Workspace-Authorization': `Bearer ${workspaceToken}` } : {}),\n ...(workspaceId ? { 'x-workspace-id': workspaceId } : {}),\n },\n body: JSON.stringify({\n query: `mutation AgentAiMutate($agentId: ID!, $path: String!, $method: String!, $body: JSON) {\n agentAiMutate(agentId: $agentId, path: $path, method: $method, body: $body) {\n ok\n status\n data\n text\n error\n }\n }`,\n variables: {\n agentId,\n path,\n method,\n body: hasBody && Object.keys(bodyParams).length > 0 ? bodyParams : null,\n },\n }),\n });\n\n const graphJson = await graphRes.json();\n const proxy = graphJson.data?.agentAiMutate;\n if (!proxy) throw new Error(graphJson.errors?.[0]?.message || 'Request failed');\n\n setResponseStatus(proxy.status);\n setResponse(\n JSON.stringify(\n proxy.data ?? (proxy.text ? { text: proxy.text } : { error: proxy.error }),\n null,\n 2\n )\n );\n } catch (err) {\n setResponse(`Error: ${err instanceof Error ? err.message : 'Request failed'}`);\n setResponseStatus(0);\n } finally {\n setExecuting(false);\n }\n };\n\n const getCurlCommand = (): string => {\n if (!selectedEndpoint) return '';\n let path = selectedEndpoint.path;\n const bodyParams: Record<string, string> = {};\n\n for (const [key, value] of Object.entries(params)) {\n if (path.includes(`:${key}`)) {\n path = path.replace(`:${key}`, encodeURIComponent(value || `{${key}}`));\n } else if (value) {\n bodyParams[key] = value;\n }\n }\n\n const method = selectedEndpoint.method.toUpperCase();\n return `mutation AgentAiMutate {\n agentAiMutate(\n agentId: \"${agentId}\"\n path: \"${path}\"\n method: \"${method}\"\n body: ${Object.keys(bodyParams).length > 0 ? JSON.stringify(bodyParams) : 'null'}\n ) {\n ok\n status\n data\n error\n }\n}`;\n };\n\n const handleCopy = () => {\n navigator.clipboard.writeText(getCurlCommand());\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n };\n\n if (loading)\n return (\n <LoadingState\n message={tr('vibecontrols.ai.playground.loading', 'Loading API descriptor...')}\n />\n );\n if (error)\n return (\n <ErrorState\n title={tr('vibecontrols.ai.playground.loadFailed', 'Failed to load API')}\n message={error}\n onRetry={loadEndpoints}\n />\n );\n if (endpoints.length === 0) {\n return (\n <EmptyState\n icon={<Terminal className=\"w-8 h-8 text-text-secondary\" />}\n title={tr('vibecontrols.ai.playground.noEndpoints', 'No API endpoints')}\n description={tr(\n 'vibecontrols.ai.playground.noEndpointsDesc',\n 'The agent does not expose any AI API endpoints'\n )}\n />\n );\n }\n\n return (\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-6\">\n {/* Left: Endpoint selection and params */}\n <div className=\"space-y-4\">\n <Card className=\"p-4\">\n <h3 className=\"font-semibold text-text-primary mb-3\">\n {tr('vibecontrols.ai.playground.endpoint', 'Endpoint')}\n </h3>\n <select\n value={selectedEndpoint?.id ?? ''}\n onChange={(e) => {\n const ep = endpoints.find((ep) => ep.id === e.target.value);\n if (ep) selectEndpoint(ep);\n }}\n className=\"w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary text-sm\"\n >\n {endpoints.map((ep) => (\n <option key={ep.id} value={ep.id}>\n {ep.method.toUpperCase()} {ep.path} - {ep.description}\n </option>\n ))}\n </select>\n\n {selectedEndpoint?.description && (\n <p className=\"mt-2 text-xs text-text-secondary\">{selectedEndpoint.description}</p>\n )}\n </Card>\n\n {/* Parameters */}\n {selectedEndpoint?.parameters && selectedEndpoint.parameters.length > 0 && (\n <Card className=\"p-4\">\n <h3 className=\"font-semibold text-text-primary mb-3\">\n {tr('vibecontrols.ai.playground.parameters', 'Parameters')}\n </h3>\n <div className=\"space-y-3\">\n {selectedEndpoint.parameters.map((p) => (\n <div key={p.name}>\n <label className=\"flex items-center gap-1.5 text-sm font-medium text-text-primary mb-1\">\n {p.name}\n {p.required && <span className=\"text-status-error-text text-xs\">*</span>}\n <span className=\"text-xs text-text-muted font-normal\">({p.type})</span>\n </label>\n {p.description && (\n <p className=\"text-xs text-text-secondary mb-1\">{p.description}</p>\n )}\n <input\n type=\"text\"\n value={params[p.name] ?? ''}\n onChange={(e) => setParams((prev) => ({ ...prev, [p.name]: e.target.value }))}\n className=\"w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary text-sm font-mono focus:outline-none focus:border-border-strong\"\n placeholder={p.required ? 'Required' : 'Optional'}\n />\n </div>\n ))}\n </div>\n </Card>\n )}\n\n <button\n onClick={handleExecute}\n disabled={executing}\n className=\"w-full flex items-center justify-center gap-2 px-4 py-2.5 bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50 text-sm font-medium\"\n >\n <Play className=\"w-4 h-4\" />\n {executing\n ? tr('vibecontrols.ai.playground.executing', 'Executing...')\n : tr('vibecontrols.ai.playground.execute', 'Execute')}\n </button>\n\n {/* Curl Command */}\n <Card className=\"p-4\">\n <div className=\"mb-2 flex flex-wrap items-center justify-between gap-2\">\n <h3 className=\"text-xs font-semibold text-text-secondary uppercase tracking-wide\">\n cURL\n </h3>\n <button\n onClick={handleCopy}\n className=\"flex items-center gap-1 px-2 py-1 text-xs text-text-secondary hover:bg-bg-sunken rounded transition-colors\"\n >\n {copied ? (\n <>\n <Check className=\"w-3 h-3 text-status-success-text\" /> Copied\n </>\n ) : (\n <>\n <Copy className=\"w-3 h-3\" /> Copy\n </>\n )}\n </button>\n </div>\n <pre className=\"text-xs text-text-primary bg-bg-sunken rounded p-3 overflow-x-auto whitespace-pre-wrap font-mono\">\n {getCurlCommand()}\n </pre>\n </Card>\n </div>\n\n {/* Right: Response */}\n <div>\n <Card className=\"p-4 h-full\">\n <div className=\"mb-3 flex flex-wrap items-center justify-between gap-2\">\n <h3 className=\"font-semibold text-text-primary\">\n {tr('vibecontrols.ai.playground.response', 'Response')}\n </h3>\n {responseStatus !== null && (\n <span\n className={`px-2 py-0.5 text-xs rounded font-mono ${\n responseStatus >= 200 && responseStatus < 300\n ? 'bg-status-success-bg text-status-success-text'\n : responseStatus >= 400\n ? 'bg-status-error-bg text-status-error-text'\n : 'bg-status-warning-bg text-status-warning-text'\n }`}\n >\n {responseStatus}\n </span>\n )}\n </div>\n {response === null ? (\n <div className=\"flex items-center justify-center h-48 text-sm text-text-secondary\">\n {tr(\n 'vibecontrols.ai.playground.executeToSee',\n 'Execute a request to see the response'\n )}\n </div>\n ) : (\n <pre className=\"text-xs text-text-primary bg-bg-sunken rounded p-3 overflow-auto max-h-[60vh] whitespace-pre-wrap font-mono\">\n {response}\n </pre>\n )}\n </Card>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AIPlaygroundTab.js","names":[],"sources":["../../../src/components/ai/AIPlaygroundTab.tsx"],"sourcesContent":["import { useState, useEffect, useCallback } from 'react';\nimport { Play, Copy, Check, Terminal } from 'lucide-react';\nimport { Card, LoadingState, ErrorState, EmptyState } from '@/components/shared';\nimport type { AIApiEndpoint, AgentRef } from '@/services/aiApi';\nimport { fetchApiDescriptor, agentApiPath } from '@/services/aiApi';\nimport { getStoredAuthToken, getStoredWorkspaceToken } from '@burdenoff/fe-libs/shared/graphql';\nimport { useTr } from '../../shared/hooks/useTr';\n\ninterface AIPlaygroundTabProps {\n agent: AgentRef;\n}\n\nexport function AIPlaygroundTab({ agent }: AIPlaygroundTabProps) {\n const tr = useTr();\n const [endpoints, setEndpoints] = useState<AIApiEndpoint[]>([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n const [selectedEndpoint, setSelectedEndpoint] = useState<AIApiEndpoint | null>(null);\n const [params, setParams] = useState<Record<string, string>>({});\n const [executing, setExecuting] = useState(false);\n const [response, setResponse] = useState<string | null>(null);\n const [responseStatus, setResponseStatus] = useState<number | null>(null);\n const [copied, setCopied] = useState(false);\n\n const loadEndpoints = useCallback(async () => {\n setLoading(true);\n setError(null);\n try {\n const result = await fetchApiDescriptor(agent);\n setEndpoints(result);\n if (result.length > 0) {\n selectEndpoint(result[0]);\n }\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to load API descriptor');\n } finally {\n setLoading(false);\n }\n }, [agent]);\n\n useEffect(() => {\n loadEndpoints();\n }, [loadEndpoints]);\n\n const selectEndpoint = (ep: AIApiEndpoint) => {\n setSelectedEndpoint(ep);\n const newParams: Record<string, string> = {};\n ep.parameters?.forEach((p) => {\n newParams[p.name] = '';\n });\n setParams(newParams);\n setResponse(null);\n setResponseStatus(null);\n };\n\n const handleExecute = async () => {\n if (!selectedEndpoint) return;\n setExecuting(true);\n setResponse(null);\n setResponseStatus(null);\n try {\n // Build path with path params replaced\n let path = selectedEndpoint.path;\n const bodyParams: Record<string, string> = {};\n\n for (const [key, value] of Object.entries(params)) {\n if (path.includes(`:${key}`)) {\n path = path.replace(`:${key}`, encodeURIComponent(value));\n } else if (value) {\n bodyParams[key] = value;\n }\n }\n\n const method = selectedEndpoint.method.toUpperCase();\n const hasBody = method === 'POST' || method === 'PATCH' || method === 'PUT';\n\n const authToken = getStoredAuthToken();\n const workspaceToken = getStoredWorkspaceToken();\n const workspaceId = new URLSearchParams(window.location.search).get('workspace') || '';\n const graphRes = await fetch('/workspaces/graphql', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...(authToken ? { Authorization: `Bearer ${authToken}` } : {}),\n ...(workspaceToken ? { 'X-Workspace-Authorization': `Bearer ${workspaceToken}` } : {}),\n ...(workspaceId ? { 'x-workspace-id': workspaceId } : {}),\n },\n body: JSON.stringify({\n query: `mutation AgentAiMutate($agentId: ID!, $path: String!, $method: String!, $body: JSON) {\n agentAiMutate(agentId: $agentId, path: $path, method: $method, body: $body) {\n ok\n status\n data\n text\n error\n }\n }`,\n variables: {\n agentId: agent.id,\n path: agentApiPath(agent.profile, path),\n method,\n body: hasBody && Object.keys(bodyParams).length > 0 ? bodyParams : null,\n },\n }),\n });\n\n const graphJson = await graphRes.json();\n const proxy = graphJson.data?.agentAiMutate;\n if (!proxy) throw new Error(graphJson.errors?.[0]?.message || 'Request failed');\n\n setResponseStatus(proxy.status);\n setResponse(\n JSON.stringify(\n proxy.data ?? (proxy.text ? { text: proxy.text } : { error: proxy.error }),\n null,\n 2\n )\n );\n } catch (err) {\n setResponse(`Error: ${err instanceof Error ? err.message : 'Request failed'}`);\n setResponseStatus(0);\n } finally {\n setExecuting(false);\n }\n };\n\n const getCurlCommand = (): string => {\n if (!selectedEndpoint) return '';\n let path = selectedEndpoint.path;\n const bodyParams: Record<string, string> = {};\n\n for (const [key, value] of Object.entries(params)) {\n if (path.includes(`:${key}`)) {\n path = path.replace(`:${key}`, encodeURIComponent(value || `{${key}}`));\n } else if (value) {\n bodyParams[key] = value;\n }\n }\n\n const method = selectedEndpoint.method.toUpperCase();\n const canonicalPath = agentApiPath(agent.profile, path);\n return `mutation AgentAiMutate {\n agentAiMutate(\n agentId: \"${agent.id}\"\n path: \"${canonicalPath}\"\n method: \"${method}\"\n body: ${Object.keys(bodyParams).length > 0 ? JSON.stringify(bodyParams) : 'null'}\n ) {\n ok\n status\n data\n error\n }\n}`;\n };\n\n const handleCopy = () => {\n navigator.clipboard.writeText(getCurlCommand());\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n };\n\n if (loading)\n return (\n <LoadingState\n message={tr('vibecontrols.ai.playground.loading', 'Loading API descriptor...')}\n />\n );\n if (error)\n return (\n <ErrorState\n title={tr('vibecontrols.ai.playground.loadFailed', 'Failed to load API')}\n message={error}\n onRetry={loadEndpoints}\n />\n );\n if (endpoints.length === 0) {\n return (\n <EmptyState\n icon={<Terminal className=\"w-8 h-8 text-text-secondary\" />}\n title={tr('vibecontrols.ai.playground.noEndpoints', 'No API endpoints')}\n description={tr(\n 'vibecontrols.ai.playground.noEndpointsDesc',\n 'The agent does not expose any AI API endpoints'\n )}\n />\n );\n }\n\n return (\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-6\">\n {/* Left: Endpoint selection and params */}\n <div className=\"space-y-4\">\n <Card className=\"p-4\">\n <h3 className=\"font-semibold text-text-primary mb-3\">\n {tr('vibecontrols.ai.playground.endpoint', 'Endpoint')}\n </h3>\n <select\n value={selectedEndpoint?.id ?? ''}\n onChange={(e) => {\n const ep = endpoints.find((ep) => ep.id === e.target.value);\n if (ep) selectEndpoint(ep);\n }}\n className=\"w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary text-sm\"\n >\n {endpoints.map((ep) => (\n <option key={ep.id} value={ep.id}>\n {ep.method.toUpperCase()} {ep.path} - {ep.description}\n </option>\n ))}\n </select>\n\n {selectedEndpoint?.description && (\n <p className=\"mt-2 text-xs text-text-secondary\">{selectedEndpoint.description}</p>\n )}\n </Card>\n\n {/* Parameters */}\n {selectedEndpoint?.parameters && selectedEndpoint.parameters.length > 0 && (\n <Card className=\"p-4\">\n <h3 className=\"font-semibold text-text-primary mb-3\">\n {tr('vibecontrols.ai.playground.parameters', 'Parameters')}\n </h3>\n <div className=\"space-y-3\">\n {selectedEndpoint.parameters.map((p) => (\n <div key={p.name}>\n <label className=\"flex items-center gap-1.5 text-sm font-medium text-text-primary mb-1\">\n {p.name}\n {p.required && <span className=\"text-status-error-text text-xs\">*</span>}\n <span className=\"text-xs text-text-muted font-normal\">({p.type})</span>\n </label>\n {p.description && (\n <p className=\"text-xs text-text-secondary mb-1\">{p.description}</p>\n )}\n <input\n type=\"text\"\n value={params[p.name] ?? ''}\n onChange={(e) => setParams((prev) => ({ ...prev, [p.name]: e.target.value }))}\n className=\"w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary text-sm font-mono focus:outline-none focus:border-border-strong\"\n placeholder={p.required ? 'Required' : 'Optional'}\n />\n </div>\n ))}\n </div>\n </Card>\n )}\n\n <button\n onClick={handleExecute}\n disabled={executing}\n className=\"w-full flex items-center justify-center gap-2 px-4 py-2.5 bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50 text-sm font-medium\"\n >\n <Play className=\"w-4 h-4\" />\n {executing\n ? tr('vibecontrols.ai.playground.executing', 'Executing...')\n : tr('vibecontrols.ai.playground.execute', 'Execute')}\n </button>\n\n {/* Curl Command */}\n <Card className=\"p-4\">\n <div className=\"mb-2 flex flex-wrap items-center justify-between gap-2\">\n <h3 className=\"text-xs font-semibold text-text-secondary uppercase tracking-wide\">\n cURL\n </h3>\n <button\n onClick={handleCopy}\n className=\"flex items-center gap-1 px-2 py-1 text-xs text-text-secondary hover:bg-bg-sunken rounded transition-colors\"\n >\n {copied ? (\n <>\n <Check className=\"w-3 h-3 text-status-success-text\" /> Copied\n </>\n ) : (\n <>\n <Copy className=\"w-3 h-3\" /> Copy\n </>\n )}\n </button>\n </div>\n <pre className=\"text-xs text-text-primary bg-bg-sunken rounded p-3 overflow-x-auto whitespace-pre-wrap font-mono\">\n {getCurlCommand()}\n </pre>\n </Card>\n </div>\n\n {/* Right: Response */}\n <div>\n <Card className=\"p-4 h-full\">\n <div className=\"mb-3 flex flex-wrap items-center justify-between gap-2\">\n <h3 className=\"font-semibold text-text-primary\">\n {tr('vibecontrols.ai.playground.response', 'Response')}\n </h3>\n {responseStatus !== null && (\n <span\n className={`px-2 py-0.5 text-xs rounded font-mono ${\n responseStatus >= 200 && responseStatus < 300\n ? 'bg-status-success-bg text-status-success-text'\n : responseStatus >= 400\n ? 'bg-status-error-bg text-status-error-text'\n : 'bg-status-warning-bg text-status-warning-text'\n }`}\n >\n {responseStatus}\n </span>\n )}\n </div>\n {response === null ? (\n <div className=\"flex items-center justify-center h-48 text-sm text-text-secondary\">\n {tr(\n 'vibecontrols.ai.playground.executeToSee',\n 'Execute a request to see the response'\n )}\n </div>\n ) : (\n <pre className=\"text-xs text-text-primary bg-bg-sunken rounded p-3 overflow-auto max-h-[60vh] whitespace-pre-wrap font-mono\">\n {response}\n </pre>\n )}\n </Card>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -9,12 +9,12 @@ import { useCallback as d, useEffect as f, useState as p } from "react";
|
|
|
9
9
|
import { Clock as te, FileText as m, Send as h, Wand2 as g } from "lucide-react";
|
|
10
10
|
import { jsx as _, jsxs as v } from "react/jsx-runtime";
|
|
11
11
|
//#region src/components/ai/AIPromptsTab.tsx
|
|
12
|
-
function y({
|
|
12
|
+
function y({ agent: y }) {
|
|
13
13
|
let b = e(), [x, S] = p(""), [C, w] = p([]), [T, E] = p(""), [D, O] = p(!1), [k, A] = p(null), [j, M] = p(!1), [N, P] = p(""), [F, I] = p(null), [L, R] = p({}), [z, B] = p(!1), [V, H] = p([]), [U, W] = p([]), [G, K] = p([]), [q, J] = p([]), [Y, X] = p(!0), [Z, Q] = p(null), $ = d(async () => {
|
|
14
14
|
X(!0), Q(null);
|
|
15
15
|
try {
|
|
16
16
|
let [e, t, n, r] = await Promise.all([
|
|
17
|
-
s(y),
|
|
17
|
+
s(y.id),
|
|
18
18
|
ee(y),
|
|
19
19
|
o(y),
|
|
20
20
|
a(y, { limit: 20 })
|
|
@@ -41,7 +41,7 @@ function y({ agentId: y }) {
|
|
|
41
41
|
if (N) {
|
|
42
42
|
B(!0);
|
|
43
43
|
try {
|
|
44
|
-
S((await l(y, N, L)).rendered), I(N), M(!1);
|
|
44
|
+
S((await l(y.id, N, L)).rendered), I(N), M(!1);
|
|
45
45
|
} catch (e) {
|
|
46
46
|
console.error("Failed to render template:", e);
|
|
47
47
|
} finally {
|
|
@@ -160,7 +160,7 @@ function y({ agentId: y }) {
|
|
|
160
160
|
prompt: x,
|
|
161
161
|
sessionId: T,
|
|
162
162
|
contextIds: C.length > 0 ? C : void 0
|
|
163
|
-
}), F && await c(y, F), A("Prompt dispatched successfully"), S(""), I(null), w([]), setTimeout(() => A(null), 3e3), J(await a(y, { limit: 20 }));
|
|
163
|
+
}), F && await c(y.id, F), A("Prompt dispatched successfully"), S(""), I(null), w([]), setTimeout(() => A(null), 3e3), J(await a(y, { limit: 20 }));
|
|
164
164
|
} catch (e) {
|
|
165
165
|
console.error("Failed to dispatch prompt:", e);
|
|
166
166
|
} finally {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AIPromptsTab.js","names":[],"sources":["../../../src/components/ai/AIPromptsTab.tsx"],"sourcesContent":["import { useState, useEffect, useCallback } from 'react';\nimport { Send, FileText, Wand2, Clock } from 'lucide-react';\nimport { Card, LoadingState, ErrorState, EmptyState } from '@/components/shared';\nimport type { AITemplate, AIContext, AISession, AIDispatch } from '@/services/aiApi';\nimport {\n fetchTemplates,\n fetchContexts,\n fetchSessions,\n fetchDispatchHistory,\n renderTemplate,\n recordTemplateUsage,\n sendDispatch,\n} from '@/services/aiApi';\nimport { useTr } from '../../shared/hooks/useTr';\n\ninterface AIPromptsTabProps {\n agentId: string;\n}\n\nexport function AIPromptsTab({ agentId }: AIPromptsTabProps) {\n const tr = useTr();\n const [promptContent, setPromptContent] = useState('');\n const [selectedContextIds, setSelectedContextIds] = useState<string[]>([]);\n const [targetSessionId, setTargetSessionId] = useState('');\n const [sending, setSending] = useState(false);\n const [successMsg, setSuccessMsg] = useState<string | null>(null);\n\n // Generate from template state\n const [showTemplateGen, setShowTemplateGen] = useState(false);\n const [selectedTemplateId, setSelectedTemplateId] = useState('');\n const [sourceTemplateId, setSourceTemplateId] = useState<string | null>(null);\n const [templateVars, setTemplateVars] = useState<Record<string, string>>({});\n const [rendering, setRendering] = useState(false);\n\n // Data\n const [templates, setTemplates] = useState<AITemplate[]>([]);\n const [contexts, setContexts] = useState<AIContext[]>([]);\n const [sessions, setSessions] = useState<AISession[]>([]);\n const [history, setHistory] = useState<AIDispatch[]>([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n\n const loadData = useCallback(async () => {\n setLoading(true);\n setError(null);\n try {\n const [t, c, s, h] = await Promise.all([\n fetchTemplates(agentId),\n fetchContexts(agentId),\n fetchSessions(agentId),\n fetchDispatchHistory(agentId, { limit: 20 }),\n ]);\n setTemplates(t);\n setContexts(c);\n setSessions(s);\n setHistory(h);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to load data');\n } finally {\n setLoading(false);\n }\n }, [agentId]);\n\n useEffect(() => {\n loadData();\n }, [loadData]);\n\n const handleTemplateSelect = (templateId: string) => {\n setSelectedTemplateId(templateId);\n const template = templates.find((t) => t.id === templateId);\n if (template?.variables) {\n const vars: Record<string, string> = {};\n for (const key of Object.keys(template.variables)) {\n vars[key] = String(template.variables[key] ?? '');\n }\n setTemplateVars(vars);\n } else {\n setTemplateVars({});\n }\n };\n\n const handleGenerateFromTemplate = async () => {\n if (!selectedTemplateId) return;\n setRendering(true);\n try {\n const result = await renderTemplate(agentId, selectedTemplateId, templateVars);\n setPromptContent(result.rendered);\n setSourceTemplateId(selectedTemplateId);\n setShowTemplateGen(false);\n } catch (err) {\n console.error('Failed to render template:', err);\n } finally {\n setRendering(false);\n }\n };\n\n const toggleContext = (contextId: string) => {\n setSelectedContextIds((prev) =>\n prev.includes(contextId) ? prev.filter((id) => id !== contextId) : [...prev, contextId]\n );\n };\n\n const handleSendToSession = async () => {\n if (!promptContent.trim() || !targetSessionId) return;\n setSending(true);\n setSuccessMsg(null);\n try {\n await sendDispatch(agentId, {\n prompt: promptContent,\n sessionId: targetSessionId,\n contextIds: selectedContextIds.length > 0 ? selectedContextIds : undefined,\n });\n if (sourceTemplateId) {\n await recordTemplateUsage(agentId, sourceTemplateId);\n }\n setSuccessMsg('Prompt dispatched successfully');\n setPromptContent('');\n setSourceTemplateId(null);\n setSelectedContextIds([]);\n setTimeout(() => setSuccessMsg(null), 3000);\n // Refresh history\n const h = await fetchDispatchHistory(agentId, { limit: 20 });\n setHistory(h);\n } catch (err) {\n console.error('Failed to dispatch prompt:', err);\n } finally {\n setSending(false);\n }\n };\n\n if (loading)\n return <LoadingState message={tr('vibecontrols.ai.prompts.loading', 'Loading prompts...')} />;\n if (error)\n return (\n <ErrorState\n title={tr('vibecontrols.ai.prompts.loadFailed', 'Failed to load data')}\n message={error}\n onRetry={loadData}\n />\n );\n\n return (\n <div className=\"space-y-6\">\n {successMsg && (\n <div className=\"bg-status-success-bg text-status-success-text px-4 py-2 rounded-md text-sm\">\n {successMsg}\n </div>\n )}\n\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-6\">\n {/* Prompt Editor */}\n <div className=\"lg:col-span-2 space-y-4\">\n <Card className=\"p-4\">\n <div className=\"flex items-center justify-between mb-3\">\n <h3 className=\"font-semibold text-text-primary\">\n {tr('vibecontrols.ai.prompts.composePrompt', 'Compose Prompt')}\n </h3>\n <button\n onClick={() => setShowTemplateGen(!showTemplateGen)}\n className=\"flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium text-action-primary-bg bg-action-primary-bg/10 rounded-md hover:bg-action-primary-bg/20 transition-colors\"\n >\n <Wand2 className=\"w-3.5 h-3.5\" />\n {tr('vibecontrols.ai.prompts.generateFromTemplate', 'Generate from Template')}\n </button>\n </div>\n\n {/* Template Generator */}\n {showTemplateGen && (\n <div className=\"mb-4 p-3 bg-bg-sunken rounded-md space-y-3\">\n <select\n value={selectedTemplateId}\n onChange={(e) => handleTemplateSelect(e.target.value)}\n className=\"w-full px-3 py-2 bg-bg-surface border border-border-default rounded-md text-text-primary text-sm\"\n >\n <option value=\"\">\n {tr('vibecontrols.ai.prompts.selectTemplate', 'Select a template...')}\n </option>\n {templates.map((t) => (\n <option key={t.id} value={t.id}>\n {t.name}\n </option>\n ))}\n </select>\n {Object.keys(templateVars).length > 0 && (\n <div className=\"space-y-2\">\n {Object.entries(templateVars).map(([key, val]) => (\n <div key={key}>\n <label className=\"block text-xs font-medium text-text-secondary mb-0.5\">\n {key}\n </label>\n <input\n type=\"text\"\n value={val}\n onChange={(e) =>\n setTemplateVars((prev) => ({ ...prev, [key]: e.target.value }))\n }\n className=\"w-full px-2 py-1.5 bg-bg-surface border border-border-default rounded text-sm text-text-primary focus:outline-none focus:border-border-strong\"\n />\n </div>\n ))}\n </div>\n )}\n <button\n onClick={handleGenerateFromTemplate}\n disabled={rendering || !selectedTemplateId}\n className=\"w-full px-3 py-2 text-sm bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50\"\n >\n {rendering\n ? tr('vibecontrols.ai.prompts.generating', 'Generating...')\n : tr('vibecontrols.ai.prompts.generate', 'Generate')}\n </button>\n </div>\n )}\n\n <textarea\n value={promptContent}\n onChange={(e) => {\n setPromptContent(e.target.value);\n setSourceTemplateId(null);\n }}\n rows={8}\n className=\"w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary text-sm font-mono focus:outline-none focus:border-border-strong\"\n placeholder={tr(\n 'vibecontrols.ai.prompts.promptPlaceholder',\n 'Write your prompt here... (Markdown supported)'\n )}\n />\n\n {/* Session Target & Send */}\n <div className=\"flex flex-col sm:flex-row items-stretch sm:items-end gap-3 mt-3\">\n <div className=\"flex-1\">\n <label className=\"block text-xs font-medium text-text-secondary mb-1\">\n {tr('vibecontrols.ai.prompts.targetSession', 'Target Session')}\n </label>\n <select\n value={targetSessionId}\n onChange={(e) => setTargetSessionId(e.target.value)}\n className=\"w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary text-sm\"\n >\n <option value=\"\">\n {tr('vibecontrols.ai.prompts.selectSession', 'Select session...')}\n </option>\n {sessions\n .filter((s) => s.status !== 'terminated')\n .map((s) => (\n <option key={s.id} value={s.id}>\n {s.name} ({s.status})\n </option>\n ))}\n </select>\n </div>\n <button\n onClick={handleSendToSession}\n disabled={sending || !promptContent.trim() || !targetSessionId}\n className=\"flex items-center justify-center gap-2 px-4 py-2 bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50 text-sm\"\n >\n <Send className=\"w-4 h-4\" />\n {sending\n ? tr('vibecontrols.ai.prompts.sending', 'Sending...')\n : tr('vibecontrols.ai.prompts.sendToSession', 'Send to Session')}\n </button>\n </div>\n </Card>\n </div>\n\n {/* Context Picker */}\n <div className=\"space-y-4\">\n <Card className=\"p-4\">\n <h3 className=\"font-semibold text-text-primary mb-3\">\n {tr('vibecontrols.ai.prompts.attachContexts', 'Attach Contexts')}\n </h3>\n {contexts.length === 0 ? (\n <p className=\"text-sm text-text-secondary\">\n {tr('vibecontrols.ai.prompts.noContexts', 'No contexts available')}\n </p>\n ) : (\n <div className=\"space-y-2 max-h-64 overflow-y-auto\">\n {contexts.map((ctx) => (\n <label\n key={ctx.id}\n className=\"flex items-start gap-2 p-2 rounded hover:bg-bg-sunken cursor-pointer\"\n >\n <input\n type=\"checkbox\"\n checked={selectedContextIds.includes(ctx.id)}\n onChange={() => toggleContext(ctx.id)}\n className=\"mt-0.5 rounded border-border-default\"\n />\n <div className=\"min-w-0 flex-1\">\n <div className=\"text-sm font-medium text-text-primary truncate\">\n {ctx.name}\n </div>\n <div className=\"text-xs text-text-secondary\">{ctx.type}</div>\n </div>\n </label>\n ))}\n </div>\n )}\n </Card>\n </div>\n </div>\n\n {/* Dispatch History */}\n <Card className=\"p-0\">\n <div className=\"px-4 py-3 border-b border-border-default flex items-center gap-2\">\n <Clock className=\"w-4 h-4 text-text-secondary\" />\n <h3 className=\"font-semibold text-text-primary\">\n {tr('vibecontrols.ai.prompts.dispatchHistory', 'Dispatch History')}\n </h3>\n </div>\n <div className=\"divide-y divide-border-default\">\n {history.length === 0 ? (\n <EmptyState\n icon={<FileText className=\"w-6 h-6 text-text-secondary\" />}\n title={tr('vibecontrols.ai.prompts.noDispatched', 'No dispatched prompts')}\n description={tr(\n 'vibecontrols.ai.prompts.noDispatchedDesc',\n 'Send a prompt to a session to see history here'\n )}\n />\n ) : (\n history.map((d) => (\n <div key={d.id} className=\"px-4 py-3\">\n <div className=\"text-sm text-text-primary line-clamp-2\">{d.prompt}</div>\n <div className=\"mt-1 flex items-center gap-3 text-xs text-text-secondary\">\n <span className=\"font-medium\">{d.status}</span>\n <span>Session: {d.sessionId ? `${d.sessionId.substring(0, 8)}...` : '—'}</span>\n {d.createdAt && <span>{new Date(d.createdAt).toLocaleString()}</span>}\n </div>\n </div>\n ))\n )}\n </div>\n </Card>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;AAmBA,SAAgB,EAAa,EAAE,cAA8B;CAC3D,IAAM,IAAK,GAAO,EACZ,CAAC,GAAe,KAAoB,EAAS,GAAG,EAChD,CAAC,GAAoB,KAAyB,EAAmB,EAAE,CAAC,EACpE,CAAC,GAAiB,KAAsB,EAAS,GAAG,EACpD,CAAC,GAAS,KAAc,EAAS,GAAM,EACvC,CAAC,GAAY,KAAiB,EAAwB,KAAK,EAG3D,CAAC,GAAiB,KAAsB,EAAS,GAAM,EACvD,CAAC,GAAoB,KAAyB,EAAS,GAAG,EAC1D,CAAC,GAAkB,KAAuB,EAAwB,KAAK,EACvE,CAAC,GAAc,KAAmB,EAAiC,EAAE,CAAC,EACtE,CAAC,GAAW,KAAgB,EAAS,GAAM,EAG3C,CAAC,GAAW,KAAgB,EAAuB,EAAE,CAAC,EACtD,CAAC,GAAU,KAAe,EAAsB,EAAE,CAAC,EACnD,CAAC,GAAU,KAAe,EAAsB,EAAE,CAAC,EACnD,CAAC,GAAS,KAAc,EAAuB,EAAE,CAAC,EAClD,CAAC,GAAS,KAAc,EAAS,GAAK,EACtC,CAAC,GAAO,KAAY,EAAwB,KAAK,EAEjD,IAAW,EAAY,YAAY;AAEvC,EADA,EAAW,GAAK,EAChB,EAAS,KAAK;AACd,MAAI;GACF,IAAM,CAAC,GAAG,GAAG,GAAG,KAAK,MAAM,QAAQ,IAAI;IACrC,EAAe,EAAQ;IACvB,GAAc,EAAQ;IACtB,EAAc,EAAQ;IACtB,EAAqB,GAAS,EAAE,OAAO,IAAI,CAAC;IAC7C,CAAC;AAIF,GAHA,EAAa,EAAE,EACf,EAAY,EAAE,EACd,EAAY,EAAE,EACd,EAAW,EAAE;WACN,GAAK;AACZ,KAAS,aAAe,QAAQ,EAAI,UAAU,sBAAsB;YAC5D;AACR,KAAW,GAAM;;IAElB,CAAC,EAAQ,CAAC;AAEb,SAAgB;AACd,KAAU;IACT,CAAC,EAAS,CAAC;CAEd,IAAM,MAAwB,MAAuB;AACnD,IAAsB,EAAW;EACjC,IAAM,IAAW,EAAU,MAAM,MAAM,EAAE,OAAO,EAAW;AAC3D,MAAI,GAAU,WAAW;GACvB,IAAM,IAA+B,EAAE;AACvC,QAAK,IAAM,KAAO,OAAO,KAAK,EAAS,UAAU,CAC/C,GAAK,KAAO,OAAO,EAAS,UAAU,MAAQ,GAAG;AAEnD,KAAgB,EAAK;QAErB,GAAgB,EAAE,CAAC;IAIjB,KAA6B,YAAY;AACxC,SACL;KAAa,GAAK;AAClB,OAAI;AAIF,IAFA,GADe,MAAM,EAAe,GAAS,GAAoB,EAAa,EACtD,SAAS,EACjC,EAAoB,EAAmB,EACvC,EAAmB,GAAM;YAClB,GAAK;AACZ,YAAQ,MAAM,8BAA8B,EAAI;aACxC;AACR,MAAa,GAAM;;;IAIjB,MAAiB,MAAsB;AAC3C,KAAuB,MACrB,EAAK,SAAS,EAAU,GAAG,EAAK,QAAQ,MAAO,MAAO,EAAU,GAAG,CAAC,GAAG,GAAM,EAAU,CACxF;;AA0CH,QAXI,IACK,kBAAC,GAAD,EAAc,SAAS,EAAG,mCAAmC,qBAAqB,EAAI,CAAA,GAC3F,IAEA,kBAAC,GAAD;EACE,OAAO,EAAG,sCAAsC,sBAAsB;EACtE,SAAS;EACT,SAAS;EACT,CAAA,GAIJ,kBAAC,OAAD;EAAK,WAAU;YAAf;GACG,KACC,kBAAC,OAAD;IAAK,WAAU;cACZ;IACG,CAAA;GAGR,kBAAC,OAAD;IAAK,WAAU;cAAf,CAEE,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,GAAD;MAAM,WAAU;gBAAhB;OACE,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,MAAD;SAAI,WAAU;mBACX,EAAG,yCAAyC,iBAAiB;SAC3D,CAAA,EACL,kBAAC,UAAD;SACE,eAAe,EAAmB,CAAC,EAAgB;SACnD,WAAU;mBAFZ,CAIE,kBAAC,GAAD,EAAO,WAAU,eAAgB,CAAA,EAChC,EAAG,gDAAgD,yBAAyB,CACtE;WACL;;OAGL,KACC,kBAAC,OAAD;QAAK,WAAU;kBAAf;SACE,kBAAC,UAAD;UACE,OAAO;UACP,WAAW,MAAM,GAAqB,EAAE,OAAO,MAAM;UACrD,WAAU;oBAHZ,CAKE,kBAAC,UAAD;WAAQ,OAAM;qBACX,EAAG,0CAA0C,uBAAuB;WAC9D,CAAA,EACR,EAAU,KAAK,MACd,kBAAC,UAAD;WAAmB,OAAO,EAAE;qBACzB,EAAE;WACI,EAFI,EAAE,GAEN,CACT,CACK;;SACR,OAAO,KAAK,EAAa,CAAC,SAAS,KAClC,kBAAC,OAAD;UAAK,WAAU;oBACZ,OAAO,QAAQ,EAAa,CAAC,KAAK,CAAC,GAAK,OACvC,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;WAAO,WAAU;qBACd;WACK,CAAA,EACR,kBAAC,SAAD;WACE,MAAK;WACL,OAAO;WACP,WAAW,MACT,GAAiB,OAAU;YAAE,GAAG;aAAO,IAAM,EAAE,OAAO;YAAO,EAAE;WAEjE,WAAU;WACV,CAAA,CACE,EAAA,EAZI,EAYJ,CACN;UACE,CAAA;SAER,kBAAC,UAAD;UACE,SAAS;UACT,UAAU,KAAa,CAAC;UACxB,WAAU;oBAET,IACG,EAAG,sCAAsC,gBAAgB,GACzD,EAAG,oCAAoC,WAAW;UAC/C,CAAA;SACL;;OAGR,kBAAC,YAAD;QACE,OAAO;QACP,WAAW,MAAM;AAEf,SADA,EAAiB,EAAE,OAAO,MAAM,EAChC,EAAoB,KAAK;;QAE3B,MAAM;QACN,WAAU;QACV,aAAa,EACX,6CACA,iDACD;QACD,CAAA;OAGF,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,OAAD;SAAK,WAAU;mBAAf,CACE,kBAAC,SAAD;UAAO,WAAU;oBACd,EAAG,yCAAyC,iBAAiB;UACxD,CAAA,EACR,kBAAC,UAAD;UACE,OAAO;UACP,WAAW,MAAM,EAAmB,EAAE,OAAO,MAAM;UACnD,WAAU;oBAHZ,CAKE,kBAAC,UAAD;WAAQ,OAAM;qBACX,EAAG,yCAAyC,oBAAoB;WAC1D,CAAA,EACR,EACE,QAAQ,MAAM,EAAE,WAAW,aAAa,CACxC,KAAK,MACJ,kBAAC,UAAD;WAAmB,OAAO,EAAE;qBAA5B;YACG,EAAE;YAAK;YAAG,EAAE;YAAO;YACb;aAFI,EAAE,GAEN,CACT,CACG;YACL;YACN,kBAAC,UAAD;SACE,SAtJc,YAAY;AAClC,iBAAC,EAAc,MAAM,IAAI,CAAC,IAE9B;WADA,EAAW,GAAK,EAChB,EAAc,KAAK;AACnB,eAAI;AAgBF,YAfA,MAAM,EAAa,GAAS;aAC1B,QAAQ;aACR,WAAW;aACX,YAAY,EAAmB,SAAS,IAAI,IAAqB,KAAA;aAClE,CAAC,EACE,KACF,MAAM,EAAoB,GAAS,EAAiB,EAEtD,EAAc,iCAAiC,EAC/C,EAAiB,GAAG,EACpB,EAAoB,KAAK,EACzB,EAAsB,EAAE,CAAC,EACzB,iBAAiB,EAAc,KAAK,EAAE,IAAK,EAG3C,EADU,MAAM,EAAqB,GAAS,EAAE,OAAO,IAAI,CAAC,CAC/C;oBACN,GAAK;AACZ,oBAAQ,MAAM,8BAA8B,EAAI;qBACxC;AACR,cAAW,GAAM;;;;SA+HP,UAAU,KAAW,CAAC,EAAc,MAAM,IAAI,CAAC;SAC/C,WAAU;mBAHZ,CAKE,kBAAC,GAAD,EAAM,WAAU,WAAY,CAAA,EAC3B,IACG,EAAG,mCAAmC,aAAa,GACnD,EAAG,yCAAyC,kBAAkB,CAC3D;WACL;;OACD;;KACH,CAAA,EAGN,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,GAAD;MAAM,WAAU;gBAAhB,CACE,kBAAC,MAAD;OAAI,WAAU;iBACX,EAAG,0CAA0C,kBAAkB;OAC7D,CAAA,EACJ,EAAS,WAAW,IACnB,kBAAC,KAAD;OAAG,WAAU;iBACV,EAAG,sCAAsC,wBAAwB;OAChE,CAAA,GAEJ,kBAAC,OAAD;OAAK,WAAU;iBACZ,EAAS,KAAK,MACb,kBAAC,SAAD;QAEE,WAAU;kBAFZ,CAIE,kBAAC,SAAD;SACE,MAAK;SACL,SAAS,EAAmB,SAAS,EAAI,GAAG;SAC5C,gBAAgB,GAAc,EAAI,GAAG;SACrC,WAAU;SACV,CAAA,EACF,kBAAC,OAAD;SAAK,WAAU;mBAAf,CACE,kBAAC,OAAD;UAAK,WAAU;oBACZ,EAAI;UACD,CAAA,EACN,kBAAC,OAAD;UAAK,WAAU;oBAA+B,EAAI;UAAW,CAAA,CACzD;WACA;UAfD,EAAI,GAeH,CACR;OACE,CAAA,CAEH;;KACH,CAAA,CACF;;GAGN,kBAAC,GAAD;IAAM,WAAU;cAAhB,CACE,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,IAAD,EAAO,WAAU,+BAAgC,CAAA,EACjD,kBAAC,MAAD;MAAI,WAAU;gBACX,EAAG,2CAA2C,mBAAmB;MAC/D,CAAA,CACD;QACN,kBAAC,OAAD;KAAK,WAAU;eACZ,EAAQ,WAAW,IAClB,kBAAC,GAAD;MACE,MAAM,kBAAC,GAAD,EAAU,WAAU,+BAAgC,CAAA;MAC1D,OAAO,EAAG,wCAAwC,wBAAwB;MAC1E,aAAa,EACX,4CACA,iDACD;MACD,CAAA,GAEF,EAAQ,KAAK,MACX,kBAAC,OAAD;MAAgB,WAAU;gBAA1B,CACE,kBAAC,OAAD;OAAK,WAAU;iBAA0C,EAAE;OAAa,CAAA,EACxE,kBAAC,OAAD;OAAK,WAAU;iBAAf;QACE,kBAAC,QAAD;SAAM,WAAU;mBAAe,EAAE;SAAc,CAAA;QAC/C,kBAAC,QAAD,EAAA,UAAA,CAAM,aAAU,EAAE,YAAY,GAAG,EAAE,UAAU,UAAU,GAAG,EAAE,CAAC,OAAO,IAAW,EAAA,CAAA;QAC9E,EAAE,aAAa,kBAAC,QAAD,EAAA,UAAO,IAAI,KAAK,EAAE,UAAU,CAAC,gBAAgB,EAAQ,CAAA;QACjE;SACF;QAPI,EAAE,GAON,CACN;KAEA,CAAA,CACD;;GACH"}
|
|
1
|
+
{"version":3,"file":"AIPromptsTab.js","names":[],"sources":["../../../src/components/ai/AIPromptsTab.tsx"],"sourcesContent":["import { useState, useEffect, useCallback } from 'react';\nimport { Send, FileText, Wand2, Clock } from 'lucide-react';\nimport { Card, LoadingState, ErrorState, EmptyState } from '@/components/shared';\nimport type { AITemplate, AIContext, AISession, AIDispatch, AgentRef } from '@/services/aiApi';\nimport {\n fetchTemplates,\n fetchContexts,\n fetchSessions,\n fetchDispatchHistory,\n renderTemplate,\n recordTemplateUsage,\n sendDispatch,\n} from '@/services/aiApi';\nimport { useTr } from '../../shared/hooks/useTr';\n\ninterface AIPromptsTabProps {\n agent: AgentRef;\n}\n\nexport function AIPromptsTab({ agent }: AIPromptsTabProps) {\n const tr = useTr();\n const [promptContent, setPromptContent] = useState('');\n const [selectedContextIds, setSelectedContextIds] = useState<string[]>([]);\n const [targetSessionId, setTargetSessionId] = useState('');\n const [sending, setSending] = useState(false);\n const [successMsg, setSuccessMsg] = useState<string | null>(null);\n\n // Generate from template state\n const [showTemplateGen, setShowTemplateGen] = useState(false);\n const [selectedTemplateId, setSelectedTemplateId] = useState('');\n const [sourceTemplateId, setSourceTemplateId] = useState<string | null>(null);\n const [templateVars, setTemplateVars] = useState<Record<string, string>>({});\n const [rendering, setRendering] = useState(false);\n\n // Data\n const [templates, setTemplates] = useState<AITemplate[]>([]);\n const [contexts, setContexts] = useState<AIContext[]>([]);\n const [sessions, setSessions] = useState<AISession[]>([]);\n const [history, setHistory] = useState<AIDispatch[]>([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n\n const loadData = useCallback(async () => {\n setLoading(true);\n setError(null);\n try {\n const [t, c, s, h] = await Promise.all([\n fetchTemplates(agent.id),\n fetchContexts(agent),\n fetchSessions(agent),\n fetchDispatchHistory(agent, { limit: 20 }),\n ]);\n setTemplates(t);\n setContexts(c);\n setSessions(s);\n setHistory(h);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to load data');\n } finally {\n setLoading(false);\n }\n }, [agent]);\n\n useEffect(() => {\n loadData();\n }, [loadData]);\n\n const handleTemplateSelect = (templateId: string) => {\n setSelectedTemplateId(templateId);\n const template = templates.find((t) => t.id === templateId);\n if (template?.variables) {\n const vars: Record<string, string> = {};\n for (const key of Object.keys(template.variables)) {\n vars[key] = String(template.variables[key] ?? '');\n }\n setTemplateVars(vars);\n } else {\n setTemplateVars({});\n }\n };\n\n const handleGenerateFromTemplate = async () => {\n if (!selectedTemplateId) return;\n setRendering(true);\n try {\n const result = await renderTemplate(agent.id, selectedTemplateId, templateVars);\n setPromptContent(result.rendered);\n setSourceTemplateId(selectedTemplateId);\n setShowTemplateGen(false);\n } catch (err) {\n console.error('Failed to render template:', err);\n } finally {\n setRendering(false);\n }\n };\n\n const toggleContext = (contextId: string) => {\n setSelectedContextIds((prev) =>\n prev.includes(contextId) ? prev.filter((id) => id !== contextId) : [...prev, contextId]\n );\n };\n\n const handleSendToSession = async () => {\n if (!promptContent.trim() || !targetSessionId) return;\n setSending(true);\n setSuccessMsg(null);\n try {\n await sendDispatch(agent, {\n prompt: promptContent,\n sessionId: targetSessionId,\n contextIds: selectedContextIds.length > 0 ? selectedContextIds : undefined,\n });\n if (sourceTemplateId) {\n await recordTemplateUsage(agent.id, sourceTemplateId);\n }\n setSuccessMsg('Prompt dispatched successfully');\n setPromptContent('');\n setSourceTemplateId(null);\n setSelectedContextIds([]);\n setTimeout(() => setSuccessMsg(null), 3000);\n // Refresh history\n const h = await fetchDispatchHistory(agent, { limit: 20 });\n setHistory(h);\n } catch (err) {\n console.error('Failed to dispatch prompt:', err);\n } finally {\n setSending(false);\n }\n };\n\n if (loading)\n return <LoadingState message={tr('vibecontrols.ai.prompts.loading', 'Loading prompts...')} />;\n if (error)\n return (\n <ErrorState\n title={tr('vibecontrols.ai.prompts.loadFailed', 'Failed to load data')}\n message={error}\n onRetry={loadData}\n />\n );\n\n return (\n <div className=\"space-y-6\">\n {successMsg && (\n <div className=\"bg-status-success-bg text-status-success-text px-4 py-2 rounded-md text-sm\">\n {successMsg}\n </div>\n )}\n\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-6\">\n {/* Prompt Editor */}\n <div className=\"lg:col-span-2 space-y-4\">\n <Card className=\"p-4\">\n <div className=\"flex items-center justify-between mb-3\">\n <h3 className=\"font-semibold text-text-primary\">\n {tr('vibecontrols.ai.prompts.composePrompt', 'Compose Prompt')}\n </h3>\n <button\n onClick={() => setShowTemplateGen(!showTemplateGen)}\n className=\"flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium text-action-primary-bg bg-action-primary-bg/10 rounded-md hover:bg-action-primary-bg/20 transition-colors\"\n >\n <Wand2 className=\"w-3.5 h-3.5\" />\n {tr('vibecontrols.ai.prompts.generateFromTemplate', 'Generate from Template')}\n </button>\n </div>\n\n {/* Template Generator */}\n {showTemplateGen && (\n <div className=\"mb-4 p-3 bg-bg-sunken rounded-md space-y-3\">\n <select\n value={selectedTemplateId}\n onChange={(e) => handleTemplateSelect(e.target.value)}\n className=\"w-full px-3 py-2 bg-bg-surface border border-border-default rounded-md text-text-primary text-sm\"\n >\n <option value=\"\">\n {tr('vibecontrols.ai.prompts.selectTemplate', 'Select a template...')}\n </option>\n {templates.map((t) => (\n <option key={t.id} value={t.id}>\n {t.name}\n </option>\n ))}\n </select>\n {Object.keys(templateVars).length > 0 && (\n <div className=\"space-y-2\">\n {Object.entries(templateVars).map(([key, val]) => (\n <div key={key}>\n <label className=\"block text-xs font-medium text-text-secondary mb-0.5\">\n {key}\n </label>\n <input\n type=\"text\"\n value={val}\n onChange={(e) =>\n setTemplateVars((prev) => ({ ...prev, [key]: e.target.value }))\n }\n className=\"w-full px-2 py-1.5 bg-bg-surface border border-border-default rounded text-sm text-text-primary focus:outline-none focus:border-border-strong\"\n />\n </div>\n ))}\n </div>\n )}\n <button\n onClick={handleGenerateFromTemplate}\n disabled={rendering || !selectedTemplateId}\n className=\"w-full px-3 py-2 text-sm bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50\"\n >\n {rendering\n ? tr('vibecontrols.ai.prompts.generating', 'Generating...')\n : tr('vibecontrols.ai.prompts.generate', 'Generate')}\n </button>\n </div>\n )}\n\n <textarea\n value={promptContent}\n onChange={(e) => {\n setPromptContent(e.target.value);\n setSourceTemplateId(null);\n }}\n rows={8}\n className=\"w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary text-sm font-mono focus:outline-none focus:border-border-strong\"\n placeholder={tr(\n 'vibecontrols.ai.prompts.promptPlaceholder',\n 'Write your prompt here... (Markdown supported)'\n )}\n />\n\n {/* Session Target & Send */}\n <div className=\"flex flex-col sm:flex-row items-stretch sm:items-end gap-3 mt-3\">\n <div className=\"flex-1\">\n <label className=\"block text-xs font-medium text-text-secondary mb-1\">\n {tr('vibecontrols.ai.prompts.targetSession', 'Target Session')}\n </label>\n <select\n value={targetSessionId}\n onChange={(e) => setTargetSessionId(e.target.value)}\n className=\"w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary text-sm\"\n >\n <option value=\"\">\n {tr('vibecontrols.ai.prompts.selectSession', 'Select session...')}\n </option>\n {sessions\n .filter((s) => s.status !== 'terminated')\n .map((s) => (\n <option key={s.id} value={s.id}>\n {s.name} ({s.status})\n </option>\n ))}\n </select>\n </div>\n <button\n onClick={handleSendToSession}\n disabled={sending || !promptContent.trim() || !targetSessionId}\n className=\"flex items-center justify-center gap-2 px-4 py-2 bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50 text-sm\"\n >\n <Send className=\"w-4 h-4\" />\n {sending\n ? tr('vibecontrols.ai.prompts.sending', 'Sending...')\n : tr('vibecontrols.ai.prompts.sendToSession', 'Send to Session')}\n </button>\n </div>\n </Card>\n </div>\n\n {/* Context Picker */}\n <div className=\"space-y-4\">\n <Card className=\"p-4\">\n <h3 className=\"font-semibold text-text-primary mb-3\">\n {tr('vibecontrols.ai.prompts.attachContexts', 'Attach Contexts')}\n </h3>\n {contexts.length === 0 ? (\n <p className=\"text-sm text-text-secondary\">\n {tr('vibecontrols.ai.prompts.noContexts', 'No contexts available')}\n </p>\n ) : (\n <div className=\"space-y-2 max-h-64 overflow-y-auto\">\n {contexts.map((ctx) => (\n <label\n key={ctx.id}\n className=\"flex items-start gap-2 p-2 rounded hover:bg-bg-sunken cursor-pointer\"\n >\n <input\n type=\"checkbox\"\n checked={selectedContextIds.includes(ctx.id)}\n onChange={() => toggleContext(ctx.id)}\n className=\"mt-0.5 rounded border-border-default\"\n />\n <div className=\"min-w-0 flex-1\">\n <div className=\"text-sm font-medium text-text-primary truncate\">\n {ctx.name}\n </div>\n <div className=\"text-xs text-text-secondary\">{ctx.type}</div>\n </div>\n </label>\n ))}\n </div>\n )}\n </Card>\n </div>\n </div>\n\n {/* Dispatch History */}\n <Card className=\"p-0\">\n <div className=\"px-4 py-3 border-b border-border-default flex items-center gap-2\">\n <Clock className=\"w-4 h-4 text-text-secondary\" />\n <h3 className=\"font-semibold text-text-primary\">\n {tr('vibecontrols.ai.prompts.dispatchHistory', 'Dispatch History')}\n </h3>\n </div>\n <div className=\"divide-y divide-border-default\">\n {history.length === 0 ? (\n <EmptyState\n icon={<FileText className=\"w-6 h-6 text-text-secondary\" />}\n title={tr('vibecontrols.ai.prompts.noDispatched', 'No dispatched prompts')}\n description={tr(\n 'vibecontrols.ai.prompts.noDispatchedDesc',\n 'Send a prompt to a session to see history here'\n )}\n />\n ) : (\n history.map((d) => (\n <div key={d.id} className=\"px-4 py-3\">\n <div className=\"text-sm text-text-primary line-clamp-2\">{d.prompt}</div>\n <div className=\"mt-1 flex items-center gap-3 text-xs text-text-secondary\">\n <span className=\"font-medium\">{d.status}</span>\n <span>Session: {d.sessionId ? `${d.sessionId.substring(0, 8)}...` : '—'}</span>\n {d.createdAt && <span>{new Date(d.createdAt).toLocaleString()}</span>}\n </div>\n </div>\n ))\n )}\n </div>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}
|