@using AIStudio.Chat
@inherits AssistantLowerBase
@typeparam TSettings
    
        
            @this.Title
        
        
        
    
    
        
            
                
                    @this.Description
                
                @if (this.Body is not null)
                {
                    
                        @this.Body
                    
                    
                    
                        
                            @this.SubmitText
                        
                        @if (this.isProcessing && this.cancellationTokenSource is not null)
                        {
                            
                                
                            
                        }
                    
                }
            
            
            @if (this.ShowDedicatedProgress && this.isProcessing)
            {
                
            }
            
            
            
            
            
            @if (this.ShowResult && !this.ShowEntireChatThread && this.resultingContentBlock is not null)
            {
                
            }
            
            @if(this.ShowResult && this.ShowEntireChatThread && this.chatThread is not null)
            {
                foreach (var block in this.chatThread.Blocks.OrderBy(n => n.Time))
                {
                    @if (!block.HideFromUser)
                    {
                        
                    }
                }
            }
            
            
            
        
        
            
                
                @if (!this.FooterButtons.Any(x => x.Type is ButtonTypes.SEND_TO))
                {
                    @if (this.ShowSendTo)
                    {
                        
                            @foreach (var assistant in Enum.GetValues().Where(n => n.AllowSendTo()).OrderBy(n => n.Name().Length))
                            {
                                
                                    @assistant.Name()
                                
                            }
                        
                    }
                }
                @foreach (var button in this.FooterButtons)
                {
                    switch (button)
                    {
                        case ButtonData buttonData when !string.IsNullOrWhiteSpace(buttonData.Tooltip):
                            
                                
                                    @buttonData.Text
                                
                            
                            break;
                        case ButtonData buttonData:
                            
                                @buttonData.Text
                            
                            break;
                        case SendToButton sendToButton:
                            
                                @foreach (var assistant in Enum.GetValues().Where(n => n.AllowSendTo()).OrderBy(n => n.Name().Length))
                                {
                                    
                                        @assistant.Name()
                                    
                                }
                            
                            break;
                    }
                }
                
                @if (this.ShowCopyResult)
                {
                    
                        @TB("Copy result")
                    
                }
                @if (this.ShowReset)
                {
                    
                        @TB("Reset")
                    
                }
                @if (this.SettingsManager.ConfigurationData.LLMProviders.ShowProviderConfidence)
                {
                    
                }
                @if (this.AllowProfiles && this.ShowProfileSelection)
                {
                    
                }