@page "/assistant" @attribute [Authorize] @inject IOllamaService OllamaService @inject ISettingsService SettingsService @inject NavigationManager Navigation @rendermode InteractiveServer @T("Assistent - Author Buddy", "Assistant - Author Buddy")
@if (!string.IsNullOrEmpty(outputText)) { } @statusText @if (isRunning) { }

@T("Eingabetext", "Input text")

@T("Ergebnis", "Result")

@if (!string.IsNullOrEmpty(outputText)) {
@outputText
} else if (!string.IsNullOrEmpty(errorMessage)) {
@errorMessage
} else { @T("Ergebnis erscheint hier nach der Ausführung.", "Result appears here after execution.") }
@code { private string _language = "de"; private string selectedMode = "lektorat"; private string inputText = string.Empty; private string outputText = string.Empty; private string errorMessage = string.Empty; private string statusText = string.Empty; private bool isRunning; private double progress; private string T(string de, string en) => _language == "en" ? en : de; protected override async Task OnInitializedAsync() { _language = await SettingsService.GetLanguageAsync() ?? "de"; statusText = T("Bereit", "Ready"); var pending = SettingsService.PendingAssistantInput; if (!string.IsNullOrEmpty(pending)) { inputText = pending; SettingsService.PendingAssistantInput = null; } } private async Task RunAssistant() { if (string.IsNullOrWhiteSpace(inputText)) return; isRunning = true; progress = 50; outputText = string.Empty; errorMessage = string.Empty; statusText = T("Verarbeite...", "Processing..."); try { var systemPrompt = selectedMode switch { "lektorat" => await SettingsService.GetLektorSystemPromptAsync() ?? string.Empty, "advocatus" => await SettingsService.GetAdvocatusDiaboliPromptAsync() ?? string.Empty, "hookfinder" => await SettingsService.GetHookFinderPromptAsync() ?? string.Empty, "eli5" => await SettingsService.GetEli5PromptAsync() ?? string.Empty, _ => string.Empty }; if (string.IsNullOrEmpty(systemPrompt)) { errorMessage = T("Kein System-Prompt für diesen Modus konfiguriert. Bitte in den Einstellungen hinterlegen.", "No system prompt configured for this mode. Please configure in settings."); return; } var model = await SettingsService.GetStyleModelAsync() ?? "llama3.2"; outputText = await OllamaService.Chat(model, inputText, systemPrompt); statusText = T("Fertig.", "Done."); } catch (Exception ex) { errorMessage = $"{T("Fehler:", "Error:")} {ex.Message}"; statusText = T("Fehler", "Error"); } finally { isRunning = false; progress = 0; } } private void SendToEditor() { SettingsService.PendingAssistantOutput = outputText; Navigation.NavigateTo("/editor"); } }