mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-07-07 08:46:26 +00:00
Improved file attachment handling in assistants & dialogs (#840)
This commit is contained in:
parent
423330f1b9
commit
4a15ff2665
@ -1,19 +1,13 @@
|
|||||||
@attribute [Route(Routes.ASSISTANT_CODING)]
|
@attribute [Route(Routes.ASSISTANT_CODING)]
|
||||||
@inherits AssistantBaseCore<AIStudio.Dialogs.Settings.SettingsDialogCoding>
|
@inherits AssistantBaseCore<AIStudio.Dialogs.Settings.SettingsDialogCoding>
|
||||||
|
|
||||||
<MudExpansionPanels Class="mb-3">
|
<MudText Typo="Typo.h5" Class="mb-1 mt-3">@T("Context")</MudText>
|
||||||
@for (var contextIndex = 0; contextIndex < this.codingContexts.Count; contextIndex++)
|
<MudJustifiedText Typo="Typo.body1" Class="mb-2">
|
||||||
{
|
@T("You can attach source files as optional context for your coding question.")
|
||||||
var codingContext = this.codingContexts[contextIndex];
|
</MudJustifiedText>
|
||||||
var index = contextIndex;
|
<div class="mb-3">
|
||||||
<ExpansionPanel HeaderText="@codingContext.Id" HeaderIcon="@Icons.Material.Filled.Code" ShowEndButton="@true" EndButtonColor="Color.Error" EndButtonIcon="@Icons.Material.Filled.Delete" EndButtonTooltip="@T("Delete context")" EndButtonClickAsync="@(() => this.DeleteContext(index))">
|
<AttachDocuments Name="Coding Source Files" Layer="@DropLayers.ASSISTANTS" @bind-DocumentPaths="@this.loadedDocumentPaths" CatchAllDocuments="true" UseSmallForm="false" Provider="@this.ProviderSettings"/>
|
||||||
<CodingContextItem @bind-CodingContext="@codingContext"/>
|
</div>
|
||||||
</ExpansionPanel>
|
|
||||||
}
|
|
||||||
</MudExpansionPanels>
|
|
||||||
<MudButton Variant="Variant.Filled" OnClick="() => this.AddCodingContext()" Class="mb-3">
|
|
||||||
@T("Add context")
|
|
||||||
</MudButton>
|
|
||||||
|
|
||||||
<MudStack Row="@false" Class="mb-3">
|
<MudStack Row="@false" Class="mb-3">
|
||||||
<MudTextSwitch Label="@T("Do you want to provide compiler messages?")" @bind-Value="@this.provideCompilerMessages" LabelOn="@T("Yes, provide compiler messages")" LabelOff="@T("No, there are no compiler messages")" />
|
<MudTextSwitch Label="@T("Do you want to provide compiler messages?")" @bind-Value="@this.provideCompilerMessages" LabelOn="@T("Yes, provide compiler messages")" LabelOff="@T("No, there are no compiler messages")" />
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
|
using AIStudio.Chat;
|
||||||
using AIStudio.Dialogs.Settings;
|
using AIStudio.Dialogs.Settings;
|
||||||
using AIStudio.Tools.AssistantSessions;
|
using AIStudio.Tools.AssistantSessions;
|
||||||
|
|
||||||
@ -11,7 +12,7 @@ public partial class AssistantCoding : AssistantBaseCore<SettingsDialogCoding>
|
|||||||
|
|
||||||
protected override string Title => T("Coding Assistant");
|
protected override string Title => T("Coding Assistant");
|
||||||
|
|
||||||
protected override string Description => T("This coding assistant supports you in writing code. Provide some coding context by copying and pasting your code into the input fields. You might assign an ID to your code snippet to easily reference it later. When you have compiler messages, you can paste them into the input fields to get help with debugging as well.");
|
protected override string Description => T("This coding assistant supports you in writing code. Ask your coding question and optionally attach source files as context. When you have compiler messages, you can paste them into the input fields to get help with debugging as well.");
|
||||||
|
|
||||||
protected override string SystemPrompt =>
|
protected override string SystemPrompt =>
|
||||||
"""
|
"""
|
||||||
@ -21,6 +22,12 @@ public partial class AssistantCoding : AssistantBaseCore<SettingsDialogCoding>
|
|||||||
familiar with design patterns and can explain them. You are an expert of debugging and can help with compiler
|
familiar with design patterns and can explain them. You are an expert of debugging and can help with compiler
|
||||||
messages. You can also help with code refactoring and optimization.
|
messages. You can also help with code refactoring and optimization.
|
||||||
|
|
||||||
|
The user may attach source files, project files, configuration files, logs, or other documents as coding context.
|
||||||
|
Treat attached files as source context for the user's question. Use the file paths and file contents provided in
|
||||||
|
the message to reason about the code. Do not invent files or APIs that are not present in the user's question or
|
||||||
|
attached context. If the question conflicts with attached context, prioritize the user's explicit question and
|
||||||
|
explain any relevant mismatch.
|
||||||
|
|
||||||
When the user asks in a different language than English, you answer in the same language!
|
When the user asks in a different language than English, you answer in the same language!
|
||||||
""";
|
""";
|
||||||
|
|
||||||
@ -34,9 +41,58 @@ public partial class AssistantCoding : AssistantBaseCore<SettingsDialogCoding>
|
|||||||
|
|
||||||
protected override string SendToChatVisibleUserPromptContent => this.questions;
|
protected override string SendToChatVisibleUserPromptContent => this.questions;
|
||||||
|
|
||||||
|
protected override ChatThread ConvertToChatThread
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
var originalChatThread = this.ChatThread ?? new ChatThread();
|
||||||
|
if (string.IsNullOrWhiteSpace(this.SendToChatVisibleUserPromptText))
|
||||||
|
{
|
||||||
|
return originalChatThread with
|
||||||
|
{
|
||||||
|
SystemPrompt = SystemPrompts.DEFAULT,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
var earliestBlock = originalChatThread.Blocks.MinBy(x => x.Time);
|
||||||
|
var visiblePromptTime = earliestBlock is null
|
||||||
|
? DateTimeOffset.Now
|
||||||
|
: earliestBlock.Time == DateTimeOffset.MinValue
|
||||||
|
? earliestBlock.Time
|
||||||
|
: earliestBlock.Time.AddTicks(-1);
|
||||||
|
|
||||||
|
var transferredBlocks = originalChatThread.Blocks
|
||||||
|
.Select(block => block.Role is ChatRole.USER
|
||||||
|
? this.CloneHiddenUserBlockWithoutAttachments(block)
|
||||||
|
: block.DeepClone())
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
transferredBlocks.Insert(0, new ContentBlock
|
||||||
|
{
|
||||||
|
Time = visiblePromptTime,
|
||||||
|
ContentType = ContentType.TEXT,
|
||||||
|
HideFromUser = false,
|
||||||
|
Role = ChatRole.USER,
|
||||||
|
Content = new ContentText
|
||||||
|
{
|
||||||
|
Text = this.BuildVisibleChatPrompt(),
|
||||||
|
FileAttachments = this.loadedDocumentPaths.ToList(),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
return originalChatThread with
|
||||||
|
{
|
||||||
|
ChatId = Guid.NewGuid(),
|
||||||
|
Name = T("Coding Assistant Session"),
|
||||||
|
SystemPrompt = SystemPrompts.DEFAULT,
|
||||||
|
Blocks = transferredBlocks,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected override void ResetForm()
|
protected override void ResetForm()
|
||||||
{
|
{
|
||||||
this.codingContexts.Clear();
|
this.loadedDocumentPaths.Clear();
|
||||||
this.compilerMessages = string.Empty;
|
this.compilerMessages = string.Empty;
|
||||||
this.questions = string.Empty;
|
this.questions = string.Empty;
|
||||||
if (!this.MightPreselectValues())
|
if (!this.MightPreselectValues())
|
||||||
@ -56,11 +112,11 @@ public partial class AssistantCoding : AssistantBaseCore<SettingsDialogCoding>
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private readonly List<CodingContext> codingContexts = new();
|
private HashSet<FileAttachment> loadedDocumentPaths = [];
|
||||||
private bool provideCompilerMessages;
|
private bool provideCompilerMessages;
|
||||||
private string compilerMessages = string.Empty;
|
private string compilerMessages = string.Empty;
|
||||||
private string questions = string.Empty;
|
private string questions = string.Empty;
|
||||||
private static readonly AssistantSessionStateKey<List<CodingContext>> CODING_CONTEXTS_STATE_KEY = new(nameof(codingContexts));
|
private static readonly AssistantSessionStateKey<HashSet<FileAttachment>> LOADED_DOCUMENT_PATHS_STATE_KEY = new(nameof(loadedDocumentPaths));
|
||||||
private static readonly AssistantSessionStateKey<bool> PROVIDE_COMPILER_MESSAGES_STATE_KEY = new(nameof(provideCompilerMessages));
|
private static readonly AssistantSessionStateKey<bool> PROVIDE_COMPILER_MESSAGES_STATE_KEY = new(nameof(provideCompilerMessages));
|
||||||
private static readonly AssistantSessionStateKey<string> COMPILER_MESSAGES_STATE_KEY = new(nameof(compilerMessages));
|
private static readonly AssistantSessionStateKey<string> COMPILER_MESSAGES_STATE_KEY = new(nameof(compilerMessages));
|
||||||
private static readonly AssistantSessionStateKey<string> QUESTIONS_STATE_KEY = new(nameof(questions));
|
private static readonly AssistantSessionStateKey<string> QUESTIONS_STATE_KEY = new(nameof(questions));
|
||||||
@ -68,7 +124,7 @@ public partial class AssistantCoding : AssistantBaseCore<SettingsDialogCoding>
|
|||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
protected override void CaptureCustomAssistantSessionState(AssistantSessionStateWriter state)
|
protected override void CaptureCustomAssistantSessionState(AssistantSessionStateWriter state)
|
||||||
{
|
{
|
||||||
state.SetList(CODING_CONTEXTS_STATE_KEY, this.codingContexts);
|
state.SetHashSet(LOADED_DOCUMENT_PATHS_STATE_KEY, this.loadedDocumentPaths);
|
||||||
state.Set(PROVIDE_COMPILER_MESSAGES_STATE_KEY, this.provideCompilerMessages);
|
state.Set(PROVIDE_COMPILER_MESSAGES_STATE_KEY, this.provideCompilerMessages);
|
||||||
state.Set(COMPILER_MESSAGES_STATE_KEY, this.compilerMessages);
|
state.Set(COMPILER_MESSAGES_STATE_KEY, this.compilerMessages);
|
||||||
state.Set(QUESTIONS_STATE_KEY, this.questions);
|
state.Set(QUESTIONS_STATE_KEY, this.questions);
|
||||||
@ -77,7 +133,7 @@ public partial class AssistantCoding : AssistantBaseCore<SettingsDialogCoding>
|
|||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
protected override void RestoreCustomAssistantSessionState(AssistantSessionStateReader state)
|
protected override void RestoreCustomAssistantSessionState(AssistantSessionStateReader state)
|
||||||
{
|
{
|
||||||
state.RestoreList(CODING_CONTEXTS_STATE_KEY, this.codingContexts);
|
state.RestoreHashSet(LOADED_DOCUMENT_PATHS_STATE_KEY, this.loadedDocumentPaths);
|
||||||
state.Restore(PROVIDE_COMPILER_MESSAGES_STATE_KEY, value => this.provideCompilerMessages = value);
|
state.Restore(PROVIDE_COMPILER_MESSAGES_STATE_KEY, value => this.provideCompilerMessages = value);
|
||||||
state.Restore(COMPILER_MESSAGES_STATE_KEY, value => this.compilerMessages = value);
|
state.Restore(COMPILER_MESSAGES_STATE_KEY, value => this.compilerMessages = value);
|
||||||
state.Restore(QUESTIONS_STATE_KEY, value => this.questions = value);
|
state.Restore(QUESTIONS_STATE_KEY, value => this.questions = value);
|
||||||
@ -115,26 +171,30 @@ public partial class AssistantCoding : AssistantBaseCore<SettingsDialogCoding>
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AddCodingContext()
|
private ContentBlock CloneHiddenUserBlockWithoutAttachments(ContentBlock block)
|
||||||
{
|
{
|
||||||
this.codingContexts.Add(new()
|
var clone = block.DeepClone(changeHideState: true);
|
||||||
{
|
if (clone.Content is ContentText text)
|
||||||
Id = string.Format(T("Context {0}"), this.codingContexts.Count + 1),
|
text.FileAttachments = [];
|
||||||
Language = this.SettingsManager.ConfigurationData.Coding.PreselectOptions ? this.SettingsManager.ConfigurationData.Coding.PreselectedProgrammingLanguage : default,
|
|
||||||
OtherLanguage = this.SettingsManager.ConfigurationData.Coding.PreselectOptions ? this.SettingsManager.ConfigurationData.Coding.PreselectedOtherProgrammingLanguage : string.Empty,
|
return clone;
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private ValueTask DeleteContext(int index)
|
private string BuildVisibleChatPrompt()
|
||||||
{
|
{
|
||||||
if(this.codingContexts.Count < index + 1)
|
if (!this.provideCompilerMessages)
|
||||||
return ValueTask.CompletedTask;
|
return this.SendToChatVisibleUserPromptText ?? string.Empty;
|
||||||
|
|
||||||
this.codingContexts.RemoveAt(index);
|
return $"""
|
||||||
this.Form?.ResetValidation();
|
I have the following compiler messages:
|
||||||
|
|
||||||
this.StateHasChanged();
|
```
|
||||||
return ValueTask.CompletedTask;
|
{this.compilerMessages}
|
||||||
|
```
|
||||||
|
|
||||||
|
My questions are:
|
||||||
|
{this.questions}
|
||||||
|
""";
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task GetSupport()
|
private async Task GetSupport()
|
||||||
@ -143,28 +203,6 @@ public partial class AssistantCoding : AssistantBaseCore<SettingsDialogCoding>
|
|||||||
if (!this.InputIsValid)
|
if (!this.InputIsValid)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var sbContext = new StringBuilder();
|
|
||||||
if (this.codingContexts.Count > 0)
|
|
||||||
{
|
|
||||||
sbContext.AppendLine("I have the following coding context:");
|
|
||||||
sbContext.AppendLine();
|
|
||||||
foreach (var codingContext in this.codingContexts)
|
|
||||||
{
|
|
||||||
sbContext.AppendLine($"ID: {codingContext.Id}");
|
|
||||||
|
|
||||||
if(codingContext.Language is not CommonCodingLanguages.OTHER)
|
|
||||||
sbContext.AppendLine($"Language: {codingContext.Language.Name()}");
|
|
||||||
else
|
|
||||||
sbContext.AppendLine($"Language: {codingContext.OtherLanguage}");
|
|
||||||
|
|
||||||
sbContext.AppendLine("Content:");
|
|
||||||
sbContext.AppendLine("```");
|
|
||||||
sbContext.AppendLine(codingContext.Code);
|
|
||||||
sbContext.AppendLine("```");
|
|
||||||
sbContext.AppendLine();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var sbCompilerMessages = new StringBuilder();
|
var sbCompilerMessages = new StringBuilder();
|
||||||
if (this.provideCompilerMessages)
|
if (this.provideCompilerMessages)
|
||||||
{
|
{
|
||||||
@ -179,12 +217,13 @@ public partial class AssistantCoding : AssistantBaseCore<SettingsDialogCoding>
|
|||||||
this.CreateChatThread();
|
this.CreateChatThread();
|
||||||
var time = this.AddUserRequest(
|
var time = this.AddUserRequest(
|
||||||
$"""
|
$"""
|
||||||
{sbContext}
|
|
||||||
{sbCompilerMessages}
|
{sbCompilerMessages}
|
||||||
|
|
||||||
My questions are:
|
My questions are:
|
||||||
{this.questions}
|
{this.questions}
|
||||||
""");
|
""",
|
||||||
|
false,
|
||||||
|
this.loadedDocumentPaths.ToList());
|
||||||
|
|
||||||
await this.AddAIResponseAsync(time);
|
await this.AddAIResponseAsync(time);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,16 +0,0 @@
|
|||||||
namespace AIStudio.Assistants.Coding;
|
|
||||||
|
|
||||||
public sealed class CodingContext(string id, CommonCodingLanguages language, string otherLanguage, string code)
|
|
||||||
{
|
|
||||||
public CodingContext() : this(string.Empty, CommonCodingLanguages.NONE, string.Empty, string.Empty)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public string Id { get; set; } = id;
|
|
||||||
|
|
||||||
public CommonCodingLanguages Language { get; set; } = language;
|
|
||||||
|
|
||||||
public string OtherLanguage { get; set; } = otherLanguage;
|
|
||||||
|
|
||||||
public string Code { get; set; } = code;
|
|
||||||
}
|
|
||||||
@ -1,18 +0,0 @@
|
|||||||
@inherits MSGComponentBase
|
|
||||||
|
|
||||||
<MudTextField T="string" @bind-Text="@this.CodingContext.Id" AdornmentIcon="@Icons.Material.Filled.Numbers" Adornment="Adornment.Start" Label="@T("(Optional) Identifier")" Variant="Variant.Outlined" Margin="Margin.Dense" UserAttributes="@USER_INPUT_ATTRIBUTES" Class="mb-3"/>
|
|
||||||
<MudStack Row="@true" Class="mb-3">
|
|
||||||
<MudSelect T="CommonCodingLanguages" @bind-Value="@this.CodingContext.Language" AdornmentIcon="@Icons.Material.Filled.Code" Adornment="Adornment.Start" Label="@T("Language")" Variant="Variant.Outlined" Margin="Margin.Dense">
|
|
||||||
@foreach (var language in Enum.GetValues<CommonCodingLanguages>())
|
|
||||||
{
|
|
||||||
<MudSelectItem Value="@language">
|
|
||||||
@language.Name()
|
|
||||||
</MudSelectItem>
|
|
||||||
}
|
|
||||||
</MudSelect>
|
|
||||||
@if (this.CodingContext.Language is CommonCodingLanguages.OTHER)
|
|
||||||
{
|
|
||||||
<MudTextField T="string" @bind-Text="@this.CodingContext.OtherLanguage" Validation="@this.ValidatingOtherLanguage" Label="@T("Other language")" Variant="Variant.Outlined" Margin="Margin.Dense" UserAttributes="@USER_INPUT_ATTRIBUTES"/>
|
|
||||||
}
|
|
||||||
</MudStack>
|
|
||||||
<MudTextField T="string" @bind-Text="@this.CodingContext.Code" Validation="@this.ValidatingCode" AdornmentIcon="@Icons.Material.Filled.DocumentScanner" Adornment="Adornment.Start" Label="@T("Your code")" Variant="Variant.Outlined" Lines="6" AutoGrow="@true" MaxLines="12" Class="mb-3" UserAttributes="@USER_INPUT_ATTRIBUTES" />
|
|
||||||
@ -1,47 +0,0 @@
|
|||||||
using AIStudio.Components;
|
|
||||||
|
|
||||||
using Microsoft.AspNetCore.Components;
|
|
||||||
|
|
||||||
namespace AIStudio.Assistants.Coding;
|
|
||||||
|
|
||||||
public partial class CodingContextItem : MSGComponentBase
|
|
||||||
{
|
|
||||||
[Parameter]
|
|
||||||
public CodingContext CodingContext { get; set; } = new();
|
|
||||||
|
|
||||||
[Parameter]
|
|
||||||
public EventCallback<CodingContext> CodingContextChanged { get; set; }
|
|
||||||
|
|
||||||
private static readonly Dictionary<string, object?> USER_INPUT_ATTRIBUTES = new();
|
|
||||||
|
|
||||||
#region Overrides of ComponentBase
|
|
||||||
|
|
||||||
protected override async Task OnParametersSetAsync()
|
|
||||||
{
|
|
||||||
// Configure the spellchecking for the user input:
|
|
||||||
this.SettingsManager.InjectSpellchecking(USER_INPUT_ATTRIBUTES);
|
|
||||||
|
|
||||||
await base.OnParametersSetAsync();
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
private string? ValidatingCode(string code)
|
|
||||||
{
|
|
||||||
if(string.IsNullOrWhiteSpace(code))
|
|
||||||
return string.Format(T("{0}: Please provide your input."), this.CodingContext.Id);
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private string? ValidatingOtherLanguage(string language)
|
|
||||||
{
|
|
||||||
if(this.CodingContext.Language != CommonCodingLanguages.OTHER)
|
|
||||||
return null;
|
|
||||||
|
|
||||||
if(string.IsNullOrWhiteSpace(language))
|
|
||||||
return T("Please specify the language.");
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -134,7 +134,7 @@ else
|
|||||||
{
|
{
|
||||||
var fileState = this.assistantState.FileContent[fileContent.Name];
|
var fileState = this.assistantState.FileContent[fileContent.Name];
|
||||||
<div class="@fileContent.Class" style="@GetOptionalStyle(fileContent.Style)">
|
<div class="@fileContent.Class" style="@GetOptionalStyle(fileContent.Style)">
|
||||||
<ReadFileContent @bind-FileContent="@fileState.Content" />
|
<ReadFileContent @bind-FileContent="@fileState.Content" EnableDragDrop="true" Layer="@DropLayers.ASSISTANTS" CatchAllDocuments="true" />
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
@attribute [Route(Routes.ASSISTANT_GRAMMAR_SPELLING)]
|
@attribute [Route(Routes.ASSISTANT_GRAMMAR_SPELLING)]
|
||||||
@inherits AssistantBaseCore<AIStudio.Dialogs.Settings.SettingsDialogGrammarSpelling>
|
@inherits AssistantBaseCore<AIStudio.Dialogs.Settings.SettingsDialogGrammarSpelling>
|
||||||
|
|
||||||
|
<ReadFileContent Text="@T("Load text from file")" @bind-FileContent="@this.inputText" EnableDragDrop="true" Layer="@DropLayers.ASSISTANTS" CatchAllDocuments="true"/>
|
||||||
<MudTextField T="string" @bind-Text="@this.inputText" Validation="@this.ValidateText" AdornmentIcon="@Icons.Material.Filled.DocumentScanner" Adornment="Adornment.Start" Label="@T("Your input to check")" Variant="Variant.Outlined" Lines="6" AutoGrow="@true" MaxLines="12" Class="mb-3" UserAttributes="@USER_INPUT_ATTRIBUTES"/>
|
<MudTextField T="string" @bind-Text="@this.inputText" Validation="@this.ValidateText" AdornmentIcon="@Icons.Material.Filled.DocumentScanner" Adornment="Adornment.Start" Label="@T("Your input to check")" Variant="Variant.Outlined" Lines="6" AutoGrow="@true" MaxLines="12" Class="mb-3" UserAttributes="@USER_INPUT_ATTRIBUTES"/>
|
||||||
<EnumSelection T="CommonLanguages" NameFunc="@(language => language.NameSelectingOptional())" @bind-Value="@this.selectedTargetLanguage" Icon="@Icons.Material.Filled.Translate" Label="@T("Language")" AllowOther="@true" OtherValue="CommonLanguages.OTHER" @bind-OtherInput="@this.customTargetLanguage" ValidateOther="@this.ValidateCustomLanguage" LabelOther="@T("Custom language")" />
|
<EnumSelection T="CommonLanguages" NameFunc="@(language => language.NameSelectingOptional())" @bind-Value="@this.selectedTargetLanguage" Icon="@Icons.Material.Filled.Translate" Label="@T("Language")" AllowOther="@true" OtherValue="CommonLanguages.OTHER" @bind-OtherInput="@this.customTargetLanguage" ValidateOther="@this.ValidateCustomLanguage" LabelOther="@T("Custom language")" />
|
||||||
<ProviderSelection @bind-ProviderSettings="@this.ProviderSettings" ValidateProvider="@this.ValidatingProvider"/>
|
<ProviderSelection @bind-ProviderSettings="@this.ProviderSettings" ValidateProvider="@this.ValidatingProvider"/>
|
||||||
@ -682,15 +682,15 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T2479378307"] =
|
|||||||
-- Get Support
|
-- Get Support
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T2694436440"] = "Get Support"
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T2694436440"] = "Get Support"
|
||||||
|
|
||||||
-- Context {0}
|
-- Context
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T3205224990"] = "Context {0}"
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T3174137628"] = "Context"
|
||||||
|
|
||||||
-- Delete context
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T3491455017"] = "Delete context"
|
|
||||||
|
|
||||||
-- Your question(s)
|
-- Your question(s)
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T3576319998"] = "Your question(s)"
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T3576319998"] = "Your question(s)"
|
||||||
|
|
||||||
|
-- Coding Assistant Session
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T358051959"] = "Coding Assistant Session"
|
||||||
|
|
||||||
-- Please provide your questions.
|
-- Please provide your questions.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T4120171174"] = "Please provide your questions."
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T4120171174"] = "Please provide your questions."
|
||||||
|
|
||||||
@ -700,29 +700,11 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T412437274"] = "
|
|||||||
-- Please provide the compiler messages.
|
-- Please provide the compiler messages.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T4225294332"] = "Please provide the compiler messages."
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T4225294332"] = "Please provide the compiler messages."
|
||||||
|
|
||||||
-- This coding assistant supports you in writing code. Provide some coding context by copying and pasting your code into the input fields. You might assign an ID to your code snippet to easily reference it later. When you have compiler messages, you can paste them into the input fields to get help with debugging as well.
|
-- This coding assistant supports you in writing code. Ask your coding question and optionally attach source files as context. When you have compiler messages, you can paste them into the input fields to get help with debugging as well.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T566604388"] = "This coding assistant supports you in writing code. Provide some coding context by copying and pasting your code into the input fields. You might assign an ID to your code snippet to easily reference it later. When you have compiler messages, you can paste them into the input fields to get help with debugging as well."
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T464918582"] = "This coding assistant supports you in writing code. Ask your coding question and optionally attach source files as context. When you have compiler messages, you can paste them into the input fields to get help with debugging as well."
|
||||||
|
|
||||||
-- Add context
|
-- You can attach source files as optional context for your coding question.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T882607103"] = "Add context"
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T702937106"] = "You can attach source files as optional context for your coding question."
|
||||||
|
|
||||||
-- Language
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::CODINGCONTEXTITEM::T2591284123"] = "Language"
|
|
||||||
|
|
||||||
-- Your code
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::CODINGCONTEXTITEM::T3144719651"] = "Your code"
|
|
||||||
|
|
||||||
-- {0}: Please provide your input.
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::CODINGCONTEXTITEM::T3160504659"] = "{0}: Please provide your input."
|
|
||||||
|
|
||||||
-- (Optional) Identifier
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::CODINGCONTEXTITEM::T3208138853"] = "(Optional) Identifier"
|
|
||||||
|
|
||||||
-- Other language
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::CODINGCONTEXTITEM::T3374524465"] = "Other language"
|
|
||||||
|
|
||||||
-- Please specify the language.
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::CODINGCONTEXTITEM::T3406207295"] = "Please specify the language."
|
|
||||||
|
|
||||||
-- Other
|
-- Other
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::COMMONCODINGLANGUAGEEXTENSIONS::T1849229205"] = "Other"
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::COMMONCODINGLANGUAGEEXTENSIONS::T1849229205"] = "Other"
|
||||||
@ -1405,6 +1387,9 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::ERI::PROGRAMMINGLANGUAGESEXTENSIONS::T342
|
|||||||
-- Please provide a text as input. You might copy the desired text from a document or a website.
|
-- Please provide a text as input. You might copy the desired text from a document or a website.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::GRAMMARSPELLING::ASSISTANTGRAMMARSPELLING::T137304886"] = "Please provide a text as input. You might copy the desired text from a document or a website."
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::GRAMMARSPELLING::ASSISTANTGRAMMARSPELLING::T137304886"] = "Please provide a text as input. You might copy the desired text from a document or a website."
|
||||||
|
|
||||||
|
-- Load text from file
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::GRAMMARSPELLING::ASSISTANTGRAMMARSPELLING::T2210807298"] = "Load text from file"
|
||||||
|
|
||||||
-- Proofread
|
-- Proofread
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::GRAMMARSPELLING::ASSISTANTGRAMMARSPELLING::T2325568297"] = "Proofread"
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::GRAMMARSPELLING::ASSISTANTGRAMMARSPELLING::T2325568297"] = "Proofread"
|
||||||
|
|
||||||
@ -1831,6 +1816,9 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::REWRITEIMPROVE::ASSISTANTREWRITEIMPROVE::
|
|||||||
-- Improve your text
|
-- Improve your text
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::REWRITEIMPROVE::ASSISTANTREWRITEIMPROVE::T2163831433"] = "Improve your text"
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::REWRITEIMPROVE::ASSISTANTREWRITEIMPROVE::T2163831433"] = "Improve your text"
|
||||||
|
|
||||||
|
-- Load text from file
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::REWRITEIMPROVE::ASSISTANTREWRITEIMPROVE::T2210807298"] = "Load text from file"
|
||||||
|
|
||||||
-- Language
|
-- Language
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::REWRITEIMPROVE::ASSISTANTREWRITEIMPROVE::T2591284123"] = "Language"
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::REWRITEIMPROVE::ASSISTANTREWRITEIMPROVE::T2591284123"] = "Language"
|
||||||
|
|
||||||
@ -2797,6 +2785,9 @@ UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::PROVIDERSELECTION::T900237532"] = "Provid
|
|||||||
-- Failed to load file content
|
-- Failed to load file content
|
||||||
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READFILECONTENT::T1989554334"] = "Failed to load file content"
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READFILECONTENT::T1989554334"] = "Failed to load file content"
|
||||||
|
|
||||||
|
-- Drop one file here to load its content.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READFILECONTENT::T2274562398"] = "Drop one file here to load its content."
|
||||||
|
|
||||||
-- Use file content as input
|
-- Use file content as input
|
||||||
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READFILECONTENT::T3499386973"] = "Use file content as input"
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READFILECONTENT::T3499386973"] = "Use file content as input"
|
||||||
|
|
||||||
@ -5353,24 +5344,15 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T49150
|
|||||||
-- Export configuration
|
-- Export configuration
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T975426229"] = "Export configuration"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T975426229"] = "Export configuration"
|
||||||
|
|
||||||
-- Which programming language should be preselected for added contexts?
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T1073540083"] = "Which programming language should be preselected for added contexts?"
|
|
||||||
|
|
||||||
-- Compiler messages are preselected
|
-- Compiler messages are preselected
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T1110902070"] = "Compiler messages are preselected"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T1110902070"] = "Compiler messages are preselected"
|
||||||
|
|
||||||
-- Choose whether the assistant should use the app default profile, no profile, or a specific profile.
|
-- Choose whether the assistant should use the app default profile, no profile, or a specific profile.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T1766361623"] = "Choose whether the assistant should use the app default profile, no profile, or a specific profile."
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T1766361623"] = "Choose whether the assistant should use the app default profile, no profile, or a specific profile."
|
||||||
|
|
||||||
-- Preselect a programming language
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T2181567002"] = "Preselect a programming language"
|
|
||||||
|
|
||||||
-- Preselect a profile
|
-- Preselect a profile
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T2322771068"] = "Preselect a profile"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T2322771068"] = "Preselect a profile"
|
||||||
|
|
||||||
-- When enabled, you can preselect the coding options. This is might be useful when you prefer a specific programming language or LLM model.
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T2619641701"] = "When enabled, you can preselect the coding options. This is might be useful when you prefer a specific programming language or LLM model."
|
|
||||||
|
|
||||||
-- Preselect coding options?
|
-- Preselect coding options?
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T2790579667"] = "Preselect coding options?"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T2790579667"] = "Preselect coding options?"
|
||||||
|
|
||||||
@ -5383,8 +5365,8 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T3015105896"
|
|||||||
-- Coding options are preselected
|
-- Coding options are preselected
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T3567850751"] = "Coding options are preselected"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T3567850751"] = "Coding options are preselected"
|
||||||
|
|
||||||
-- Preselect another programming language
|
-- When enabled, you can preselect coding assistant options such as compiler message input, provider, and profile.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T4230412334"] = "Preselect another programming language"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T403451006"] = "When enabled, you can preselect coding assistant options such as compiler message input, provider, and profile."
|
||||||
|
|
||||||
-- Compiler messages are not preselected
|
-- Compiler messages are not preselected
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T516498299"] = "Compiler messages are not preselected"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T516498299"] = "Compiler messages are not preselected"
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
<ReadWebContent @bind-Content="@this.inputLegalDocument" ProviderSettings="@this.ProviderSettings" @bind-AgentIsRunning="@this.isAgentRunning" @bind-Preselect="@this.showWebContentReader" @bind-PreselectContentCleanerAgent="@this.useContentCleanerAgent"/>
|
<ReadWebContent @bind-Content="@this.inputLegalDocument" ProviderSettings="@this.ProviderSettings" @bind-AgentIsRunning="@this.isAgentRunning" @bind-Preselect="@this.showWebContentReader" @bind-PreselectContentCleanerAgent="@this.useContentCleanerAgent"/>
|
||||||
}
|
}
|
||||||
|
|
||||||
<ReadFileContent @bind-FileContent="@this.inputLegalDocument"/>
|
<ReadFileContent @bind-FileContent="@this.inputLegalDocument" EnableDragDrop="true" Layer="@DropLayers.ASSISTANTS" CatchAllDocuments="true"/>
|
||||||
<MudTextField T="string" Disabled="@this.isAgentRunning" @bind-Text="@this.inputLegalDocument" Validation="@this.ValidatingLegalDocument" AdornmentIcon="@Icons.Material.Filled.DocumentScanner" Adornment="Adornment.Start" Label="@T("Legal document")" Variant="Variant.Outlined" Lines="12" AutoGrow="@true" MaxLines="24" Class="mb-3" UserAttributes="@USER_INPUT_ATTRIBUTES"/>
|
<MudTextField T="string" Disabled="@this.isAgentRunning" @bind-Text="@this.inputLegalDocument" Validation="@this.ValidatingLegalDocument" AdornmentIcon="@Icons.Material.Filled.DocumentScanner" Adornment="Adornment.Start" Label="@T("Legal document")" Variant="Variant.Outlined" Lines="12" AutoGrow="@true" MaxLines="24" Class="mb-3" UserAttributes="@USER_INPUT_ATTRIBUTES"/>
|
||||||
<MudTextField T="string" Disabled="@this.isAgentRunning" @bind-Text="@this.inputQuestions" Validation="@this.ValidatingQuestions" AdornmentIcon="@Icons.Material.Filled.QuestionAnswer" Adornment="Adornment.Start" Label="@T("Your questions")" Variant="Variant.Outlined" Lines="6" AutoGrow="@true" MaxLines="12" Class="mb-3" UserAttributes="@USER_INPUT_ATTRIBUTES"/>
|
<MudTextField T="string" Disabled="@this.isAgentRunning" @bind-Text="@this.inputQuestions" Validation="@this.ValidatingQuestions" AdornmentIcon="@Icons.Material.Filled.QuestionAnswer" Adornment="Adornment.Start" Label="@T("Your questions")" Variant="Variant.Outlined" Lines="6" AutoGrow="@true" MaxLines="12" Class="mb-3" UserAttributes="@USER_INPUT_ATTRIBUTES"/>
|
||||||
<ProviderSelection @bind-ProviderSettings="@this.ProviderSettings" ValidateProvider="@this.ValidatingProvider"/>
|
<ProviderSelection @bind-ProviderSettings="@this.ProviderSettings" ValidateProvider="@this.ValidatingProvider"/>
|
||||||
@ -1,6 +1,7 @@
|
|||||||
@attribute [Route(Routes.ASSISTANT_REWRITE)]
|
@attribute [Route(Routes.ASSISTANT_REWRITE)]
|
||||||
@inherits AssistantBaseCore<AIStudio.Dialogs.Settings.SettingsDialogRewrite>
|
@inherits AssistantBaseCore<AIStudio.Dialogs.Settings.SettingsDialogRewrite>
|
||||||
|
|
||||||
|
<ReadFileContent Text="@T("Load text from file")" @bind-FileContent="@this.inputText" EnableDragDrop="true" Layer="@DropLayers.ASSISTANTS" CatchAllDocuments="true"/>
|
||||||
<MudTextField T="string" @bind-Text="@this.inputText" Validation="@this.ValidateText" AdornmentIcon="@Icons.Material.Filled.DocumentScanner" Adornment="Adornment.Start" Label="@T("Your input to improve")" Variant="Variant.Outlined" Lines="6" AutoGrow="@true" MaxLines="12" Class="mb-3" UserAttributes="@USER_INPUT_ATTRIBUTES"/>
|
<MudTextField T="string" @bind-Text="@this.inputText" Validation="@this.ValidateText" AdornmentIcon="@Icons.Material.Filled.DocumentScanner" Adornment="Adornment.Start" Label="@T("Your input to improve")" Variant="Variant.Outlined" Lines="6" AutoGrow="@true" MaxLines="12" Class="mb-3" UserAttributes="@USER_INPUT_ATTRIBUTES"/>
|
||||||
<EnumSelection T="CommonLanguages" NameFunc="@(language => language.NameSelectingOptional())" @bind-Value="@this.selectedTargetLanguage" Icon="@Icons.Material.Filled.Translate" Label="@T("Language")" AllowOther="@true" OtherValue="CommonLanguages.OTHER" @bind-OtherInput="@this.customTargetLanguage" ValidateOther="@this.ValidateCustomLanguage" LabelOther="@T("Custom language")" />
|
<EnumSelection T="CommonLanguages" NameFunc="@(language => language.NameSelectingOptional())" @bind-Value="@this.selectedTargetLanguage" Icon="@Icons.Material.Filled.Translate" Label="@T("Language")" AllowOther="@true" OtherValue="CommonLanguages.OTHER" @bind-OtherInput="@this.customTargetLanguage" ValidateOther="@this.ValidateCustomLanguage" LabelOther="@T("Custom language")" />
|
||||||
<EnumSelection T="WritingStyles" NameFunc="@(style => style.Name())" @bind-Value="@this.selectedWritingStyle" Icon="@Icons.Material.Filled.Edit" Label="@T("Writing style")" AllowOther="@false" />
|
<EnumSelection T="WritingStyles" NameFunc="@(style => style.Name())" @bind-Value="@this.selectedWritingStyle" Icon="@Icons.Material.Filled.Edit" Label="@T("Writing style")" AllowOther="@false" />
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
<ReadWebContent @bind-Content="@this.inputText" ProviderSettings="@this.ProviderSettings" @bind-AgentIsRunning="@this.isAgentRunning" @bind-Preselect="@this.showWebContentReader" @bind-PreselectContentCleanerAgent="@this.useContentCleanerAgent"/>
|
<ReadWebContent @bind-Content="@this.inputText" ProviderSettings="@this.ProviderSettings" @bind-AgentIsRunning="@this.isAgentRunning" @bind-Preselect="@this.showWebContentReader" @bind-PreselectContentCleanerAgent="@this.useContentCleanerAgent"/>
|
||||||
}
|
}
|
||||||
|
|
||||||
<ReadFileContent @bind-FileContent="@this.inputText"/>
|
<ReadFileContent @bind-FileContent="@this.inputText" EnableDragDrop="true" Layer="@DropLayers.ASSISTANTS" CatchAllDocuments="true"/>
|
||||||
<MudTextField T="string" Disabled="@this.isAgentRunning" @bind-Text="@this.inputText" Validation="@this.ValidatingText" AdornmentIcon="@Icons.Material.Filled.DocumentScanner" Adornment="Adornment.Start" Label="@T("Your input")" Variant="Variant.Outlined" Lines="6" AutoGrow="@true" MaxLines="12" Class="mb-3" UserAttributes="@USER_INPUT_ATTRIBUTES"/>
|
<MudTextField T="string" Disabled="@this.isAgentRunning" @bind-Text="@this.inputText" Validation="@this.ValidatingText" AdornmentIcon="@Icons.Material.Filled.DocumentScanner" Adornment="Adornment.Start" Label="@T("Your input")" Variant="Variant.Outlined" Lines="6" AutoGrow="@true" MaxLines="12" Class="mb-3" UserAttributes="@USER_INPUT_ATTRIBUTES"/>
|
||||||
<EnumSelection T="CommonLanguages" NameFunc="@(language => language.Name())" @bind-Value="@this.selectedTargetLanguage" Icon="@Icons.Material.Filled.Translate" Label="@T("Target language")" AllowOther="@true" @bind-OtherInput="@this.customTargetLanguage" OtherValue="CommonLanguages.OTHER" LabelOther="@T("Custom target language")" ValidateOther="@this.ValidateCustomLanguage" />
|
<EnumSelection T="CommonLanguages" NameFunc="@(language => language.Name())" @bind-Value="@this.selectedTargetLanguage" Icon="@Icons.Material.Filled.Translate" Label="@T("Target language")" AllowOther="@true" @bind-OtherInput="@this.customTargetLanguage" OtherValue="CommonLanguages.OTHER" LabelOther="@T("Custom target language")" ValidateOther="@this.ValidateCustomLanguage" />
|
||||||
<EnumSelection T="Complexity" NameFunc="@(complexity => complexity.Name())" @bind-Value="@this.selectedComplexity" Icon="@Icons.Material.Filled.Layers" Label="@T("Target complexity")" AllowOther="@true" @bind-OtherInput="@this.expertInField" OtherValue="Complexity.SCIENTIFIC_LANGUAGE_OTHER_EXPERTS" LabelOther="@T("Your expertise")" ValidateOther="@this.ValidateExpertInField" />
|
<EnumSelection T="Complexity" NameFunc="@(complexity => complexity.Name())" @bind-Value="@this.selectedComplexity" Icon="@Icons.Material.Filled.Layers" Label="@T("Target complexity")" AllowOther="@true" @bind-OtherInput="@this.expertInField" OtherValue="Complexity.SCIENTIFIC_LANGUAGE_OTHER_EXPERTS" LabelOther="@T("Your expertise")" ValidateOther="@this.ValidateExpertInField" />
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
<ReadWebContent @bind-Content="@this.inputText" ProviderSettings="@this.ProviderSettings" @bind-AgentIsRunning="@this.isAgentRunning" @bind-Preselect="@this.showWebContentReader" @bind-PreselectContentCleanerAgent="@this.useContentCleanerAgent"/>
|
<ReadWebContent @bind-Content="@this.inputText" ProviderSettings="@this.ProviderSettings" @bind-AgentIsRunning="@this.isAgentRunning" @bind-Preselect="@this.showWebContentReader" @bind-PreselectContentCleanerAgent="@this.useContentCleanerAgent"/>
|
||||||
}
|
}
|
||||||
|
|
||||||
<ReadFileContent @bind-FileContent="@this.inputText"/>
|
<ReadFileContent @bind-FileContent="@this.inputText" EnableDragDrop="true" Layer="@DropLayers.ASSISTANTS" CatchAllDocuments="true"/>
|
||||||
|
|
||||||
<MudTextSwitch Label="@T("Live translation")" @bind-Value="@this.liveTranslation" LabelOn="@T("Live translation")" LabelOff="@T("No live translation")"/>
|
<MudTextSwitch Label="@T("Live translation")" @bind-Value="@this.liveTranslation" LabelOn="@T("Live translation")" LabelOff="@T("No live translation")"/>
|
||||||
@if (this.liveTranslation)
|
@if (this.liveTranslation)
|
||||||
|
|||||||
@ -1,11 +1,23 @@
|
|||||||
@inherits MSGComponentBase
|
@inherits MSGComponentBase
|
||||||
<MudButton StartIcon="@Icons.Material.Filled.Description" OnClick="@(async () => await this.SelectFile())" Variant="Variant.Filled" Class="mb-3" Disabled="@this.Disabled">
|
|
||||||
@if (string.IsNullOrWhiteSpace(this.Text))
|
@if (this.EnableDragDrop)
|
||||||
{
|
{
|
||||||
@T("Use file content as input")
|
<div @onmouseenter="@this.OnMouseEnter" @onmouseleave="@this.OnMouseLeave">
|
||||||
|
<MudPaper Outlined="true" Class="@this.dragClass">
|
||||||
|
<MudStack Row="true" AlignItems="AlignItems.Center" StretchItems="StretchItems.None" Wrap="Wrap.Wrap">
|
||||||
|
<MudButton StartIcon="@Icons.Material.Filled.Description" OnClick="@(async () => await this.SelectFile())" Variant="Variant.Filled" Disabled="@this.Disabled">
|
||||||
|
@this.ButtonText
|
||||||
|
</MudButton>
|
||||||
|
<MudText Typo="Typo.body2">
|
||||||
|
@T("Drop one file here to load its content.")
|
||||||
|
</MudText>
|
||||||
|
</MudStack>
|
||||||
|
</MudPaper>
|
||||||
|
</div>
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@this.Text
|
<MudButton StartIcon="@Icons.Material.Filled.Description" OnClick="@(async () => await this.SelectFile())" Variant="Variant.Filled" Class="mb-3" Disabled="@this.Disabled">
|
||||||
}
|
@this.ButtonText
|
||||||
</MudButton>
|
</MudButton>
|
||||||
|
}
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
using AIStudio.Tools.Rust;
|
||||||
using AIStudio.Tools.Services;
|
using AIStudio.Tools.Services;
|
||||||
using AIStudio.Tools.Validation;
|
using AIStudio.Tools.Validation;
|
||||||
|
|
||||||
@ -19,6 +20,21 @@ public partial class ReadFileContent : MSGComponentBase
|
|||||||
[Parameter]
|
[Parameter]
|
||||||
public bool Disabled { get; set; }
|
public bool Disabled { get; set; }
|
||||||
|
|
||||||
|
[Parameter]
|
||||||
|
public bool EnableDragDrop { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// On which layer to register the drop area. Higher layers have priority over lower layers.
|
||||||
|
/// </summary>
|
||||||
|
[Parameter]
|
||||||
|
public int Layer { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Catch all documents that are hovered over the AI Studio window and not only over the drop zone.
|
||||||
|
/// </summary>
|
||||||
|
[Parameter]
|
||||||
|
public bool CatchAllDocuments { get; set; }
|
||||||
|
|
||||||
[Inject]
|
[Inject]
|
||||||
private RustService RustService { get; init; } = null!;
|
private RustService RustService { get; init; } = null!;
|
||||||
|
|
||||||
@ -31,11 +47,103 @@ public partial class ReadFileContent : MSGComponentBase
|
|||||||
[Inject]
|
[Inject]
|
||||||
private PandocAvailabilityService PandocAvailabilityService { get; init; } = null!;
|
private PandocAvailabilityService PandocAvailabilityService { get; init; } = null!;
|
||||||
|
|
||||||
|
private const string DEFAULT_DRAG_CLASS = "relative rounded-lg border-2 border-dashed pa-3 mb-3 mud-width-full";
|
||||||
|
|
||||||
|
private string ButtonText => string.IsNullOrWhiteSpace(this.Text) ? T("Use file content as input") : this.Text;
|
||||||
|
private string dragClass = DEFAULT_DRAG_CLASS;
|
||||||
|
private uint numDropAreasAboveThis;
|
||||||
|
private bool isComponentHovered;
|
||||||
|
|
||||||
|
#region Overrides of MSGComponentBase
|
||||||
|
|
||||||
|
protected override async Task OnInitializedAsync()
|
||||||
|
{
|
||||||
|
if (this.EnableDragDrop)
|
||||||
|
{
|
||||||
|
this.ApplyFilters([], [ Event.TAURI_EVENT_RECEIVED, Event.REGISTER_FILE_DROP_AREA, Event.UNREGISTER_FILE_DROP_AREA ]);
|
||||||
|
await this.MessageBus.SendMessage(this, Event.REGISTER_FILE_DROP_AREA, this.Layer);
|
||||||
|
}
|
||||||
|
|
||||||
|
await base.OnInitializedAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override async Task ProcessIncomingMessage<T>(ComponentBase? sendingComponent, Event triggeredEvent, T? data) where T : default
|
||||||
|
{
|
||||||
|
if (!this.EnableDragDrop)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (this.Disabled && triggeredEvent == Event.TAURI_EVENT_RECEIVED)
|
||||||
|
return;
|
||||||
|
|
||||||
|
switch (triggeredEvent)
|
||||||
|
{
|
||||||
|
case Event.REGISTER_FILE_DROP_AREA when sendingComponent != this:
|
||||||
|
{
|
||||||
|
if(data is int layer && layer > this.Layer)
|
||||||
|
{
|
||||||
|
this.numDropAreasAboveThis++;
|
||||||
|
this.ClearDragClass();
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case Event.UNREGISTER_FILE_DROP_AREA when sendingComponent != this:
|
||||||
|
{
|
||||||
|
if(data is int layer && layer > this.Layer && this.numDropAreasAboveThis > 0)
|
||||||
|
this.numDropAreasAboveThis--;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case Event.TAURI_EVENT_RECEIVED when data is TauriEvent { EventType: TauriEventType.FILE_DROP_HOVERED }:
|
||||||
|
if(!this.CanCatchDroppedFile())
|
||||||
|
return;
|
||||||
|
|
||||||
|
this.SetDragClass();
|
||||||
|
this.StateHasChanged();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Event.TAURI_EVENT_RECEIVED when data is TauriEvent { EventType: TauriEventType.FILE_DROP_CANCELED }:
|
||||||
|
case Event.TAURI_EVENT_RECEIVED when data is TauriEvent { EventType: TauriEventType.WINDOW_NOT_FOCUSED }:
|
||||||
|
this.isComponentHovered = false;
|
||||||
|
this.ClearDragClass();
|
||||||
|
this.StateHasChanged();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Event.TAURI_EVENT_RECEIVED when data is TauriEvent { EventType: TauriEventType.FILE_DROP_DROPPED, Payload: var paths }:
|
||||||
|
if(!this.CanCatchDroppedFile())
|
||||||
|
return;
|
||||||
|
|
||||||
|
await this.LoadFirstValidFile(paths);
|
||||||
|
this.ClearDragClass();
|
||||||
|
this.StateHasChanged();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
private async Task SelectFile()
|
private async Task SelectFile()
|
||||||
{
|
{
|
||||||
if (this.Disabled)
|
if (this.Disabled)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (!await this.EnsurePandocAvailability())
|
||||||
|
return;
|
||||||
|
|
||||||
|
var selectedFile = await this.RustService.SelectFile(T("Select file to read its content"));
|
||||||
|
if (selectedFile.UserCancelled)
|
||||||
|
{
|
||||||
|
this.Logger.LogInformation("User cancelled the file selection");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
await this.LoadFileIfValid(selectedFile.SelectedFilePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task<bool> EnsurePandocAvailability()
|
||||||
|
{
|
||||||
// Ensure that Pandoc is installed and ready:
|
// Ensure that Pandoc is installed and ready:
|
||||||
var pandocState = await this.PandocAvailabilityService.EnsureAvailabilityAsync(
|
var pandocState = await this.PandocAvailabilityService.EnsureAvailabilityAsync(
|
||||||
showSuccessMessage: false,
|
showSuccessMessage: false,
|
||||||
@ -45,38 +153,78 @@ public partial class ReadFileContent : MSGComponentBase
|
|||||||
if (!pandocState.IsAvailable)
|
if (!pandocState.IsAvailable)
|
||||||
{
|
{
|
||||||
this.Logger.LogWarning("The user cancelled the Pandoc installation or Pandoc is not available. Aborting file selection.");
|
this.Logger.LogWarning("The user cancelled the Pandoc installation or Pandoc is not available. Aborting file selection.");
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
var selectedFile = await this.RustService.SelectFile(T("Select file to read its content"));
|
return true;
|
||||||
if (selectedFile.UserCancelled)
|
|
||||||
{
|
|
||||||
this.Logger.LogInformation("User cancelled the file selection");
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!File.Exists(selectedFile.SelectedFilePath))
|
private async Task LoadFirstValidFile(List<string> paths)
|
||||||
{
|
{
|
||||||
this.Logger.LogWarning("Selected file does not exist: '{FilePath}'", selectedFile.SelectedFilePath);
|
if (!await this.EnsurePandocAvailability())
|
||||||
|
return;
|
||||||
|
|
||||||
|
foreach (var path in paths)
|
||||||
|
{
|
||||||
|
if (await this.LoadFileIfValid(path))
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!await FileExtensionValidation.IsExtensionValidWithNotifyAsync(FileExtensionValidation.UseCase.DIRECTLY_LOADING_CONTENT, selectedFile.SelectedFilePath))
|
private async Task<bool> LoadFileIfValid(string filePath)
|
||||||
{
|
{
|
||||||
this.Logger.LogWarning("User attempted to load unsupported file: {FilePath}", selectedFile.SelectedFilePath);
|
if(!File.Exists(filePath))
|
||||||
return;
|
{
|
||||||
|
this.Logger.LogWarning("Selected file does not exist: '{FilePath}'", filePath);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!await FileExtensionValidation.IsExtensionValidWithNotifyAsync(FileExtensionValidation.UseCase.DIRECTLY_LOADING_CONTENT, filePath))
|
||||||
|
{
|
||||||
|
this.Logger.LogWarning("User attempted to load unsupported file: {FilePath}", filePath);
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var fileContent = await UserFile.LoadFileData(selectedFile.SelectedFilePath, this.RustService, this.DialogService);
|
var fileContent = await UserFile.LoadFileData(filePath, this.RustService, this.DialogService);
|
||||||
await this.FileContentChanged.InvokeAsync(fileContent);
|
await this.FileContentChanged.InvokeAsync(fileContent);
|
||||||
this.Logger.LogInformation("Successfully loaded file content: {FilePath}", selectedFile.SelectedFilePath);
|
this.Logger.LogInformation("Successfully loaded file content: {FilePath}", filePath);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
this.Logger.LogError(ex, "Failed to load file content: {FilePath}", selectedFile.SelectedFilePath);
|
this.Logger.LogError(ex, "Failed to load file content: {FilePath}", filePath);
|
||||||
await MessageBus.INSTANCE.SendError(new(Icons.Material.Filled.Error, T("Failed to load file content")));
|
await MessageBus.INSTANCE.SendError(new(Icons.Material.Filled.Error, T("Failed to load file content")));
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool CanCatchDroppedFile() => this.numDropAreasAboveThis is 0 && (this.isComponentHovered || this.CatchAllDocuments);
|
||||||
|
|
||||||
|
private void SetDragClass() => this.dragClass = $"{DEFAULT_DRAG_CLASS} mud-border-primary border-2";
|
||||||
|
|
||||||
|
private void ClearDragClass() => this.dragClass = DEFAULT_DRAG_CLASS;
|
||||||
|
|
||||||
|
private void OnMouseEnter(EventArgs _)
|
||||||
|
{
|
||||||
|
if(this.Disabled || this.numDropAreasAboveThis > 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this.Logger.LogDebug("Read file content component is hovered.");
|
||||||
|
this.isComponentHovered = true;
|
||||||
|
this.SetDragClass();
|
||||||
|
this.StateHasChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnMouseLeave(EventArgs _)
|
||||||
|
{
|
||||||
|
if(this.Disabled)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this.Logger.LogDebug("Read file content component is no longer hovered.");
|
||||||
|
this.isComponentHovered = false;
|
||||||
|
this.ClearDragClass();
|
||||||
|
this.StateHasChanged();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
@if (this.Document is null)
|
@if (this.Document is null)
|
||||||
{
|
{
|
||||||
<ReadFileContent Text="@T("Load file")" @bind-FileContent="@this.FileContent"/>
|
<ReadFileContent Text="@T("Load file")" @bind-FileContent="@this.FileContent" EnableDragDrop="true" Layer="@DropLayers.DIALOGS" CatchAllDocuments="true"/>
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
@using AIStudio.Assistants.Coding
|
|
||||||
@using AIStudio.Settings
|
@using AIStudio.Settings
|
||||||
@inherits SettingsDialogBase
|
@inherits SettingsDialogBase
|
||||||
|
|
||||||
@ -11,13 +10,8 @@
|
|||||||
</TitleContent>
|
</TitleContent>
|
||||||
<DialogContent>
|
<DialogContent>
|
||||||
<MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg">
|
<MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg">
|
||||||
<ConfigurationOption OptionDescription="@T("Preselect coding options?")" LabelOn="@T("Coding options are preselected")" LabelOff="@T("No coding options are preselected")" State="@(() => this.SettingsManager.ConfigurationData.Coding.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Coding.PreselectOptions = updatedState)" OptionHelp="@T("When enabled, you can preselect the coding options. This is might be useful when you prefer a specific programming language or LLM model.")"/>
|
<ConfigurationOption OptionDescription="@T("Preselect coding options?")" LabelOn="@T("Coding options are preselected")" LabelOff="@T("No coding options are preselected")" State="@(() => this.SettingsManager.ConfigurationData.Coding.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Coding.PreselectOptions = updatedState)" OptionHelp="@T("When enabled, you can preselect coding assistant options such as compiler message input, provider, and profile.")"/>
|
||||||
<ConfigurationOption OptionDescription="@T("Preselect compiler messages?")" Disabled="@(() => !this.SettingsManager.ConfigurationData.Coding.PreselectOptions)" LabelOn="@T("Compiler messages are preselected")" LabelOff="@T("Compiler messages are not preselected")" State="@(() => this.SettingsManager.ConfigurationData.Coding.PreselectCompilerMessages)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Coding.PreselectCompilerMessages = updatedState)" />
|
<ConfigurationOption OptionDescription="@T("Preselect compiler messages?")" Disabled="@(() => !this.SettingsManager.ConfigurationData.Coding.PreselectOptions)" LabelOn="@T("Compiler messages are preselected")" LabelOff="@T("Compiler messages are not preselected")" State="@(() => this.SettingsManager.ConfigurationData.Coding.PreselectCompilerMessages)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Coding.PreselectCompilerMessages = updatedState)" />
|
||||||
<ConfigurationSelect OptionDescription="@T("Preselect a programming language")" Disabled="@(() => !this.SettingsManager.ConfigurationData.Coding.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Coding.PreselectedProgrammingLanguage)" Data="@ConfigurationSelectDataFactory.GetCommonCodingLanguagesData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Coding.PreselectedProgrammingLanguage = selectedValue)" OptionHelp="@T("Which programming language should be preselected for added contexts?")"/>
|
|
||||||
@if (this.SettingsManager.ConfigurationData.Coding.PreselectedProgrammingLanguage is CommonCodingLanguages.OTHER)
|
|
||||||
{
|
|
||||||
<ConfigurationText OptionDescription="@T("Preselect another programming language")" Disabled="@(() => !this.SettingsManager.ConfigurationData.Coding.PreselectOptions)" Icon="@Icons.Material.Filled.Code" Text="@(() => this.SettingsManager.ConfigurationData.Coding.PreselectedOtherProgrammingLanguage)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.Coding.PreselectedOtherProgrammingLanguage = updatedText)"/>
|
|
||||||
}
|
|
||||||
<ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.Coding.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Coding.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Coding.MinimumProviderConfidence = selectedValue)"/>
|
<ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.Coding.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Coding.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Coding.MinimumProviderConfidence = selectedValue)"/>
|
||||||
<ConfigurationProviderSelection Component="Components.CODING_ASSISTANT" Data="@this.AvailableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.Coding.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Coding.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Coding.PreselectedProvider = selectedValue)"/>
|
<ConfigurationProviderSelection Component="Components.CODING_ASSISTANT" Data="@this.AvailableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.Coding.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Coding.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Coding.PreselectedProvider = selectedValue)"/>
|
||||||
<ConfigurationSelect OptionDescription="@T("Preselect a profile")" Disabled="@(() => !this.SettingsManager.ConfigurationData.Coding.PreselectOptions)" SelectedValue="@(() => ProfilePreselection.FromStoredValue(this.SettingsManager.ConfigurationData.Coding.PreselectedProfile))" Data="@ConfigurationSelectDataFactory.GetComponentProfilesData(this.SettingsManager.ConfigurationData.Profiles)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Coding.PreselectedProfile = selectedValue)" OptionHelp="@T("Choose whether the assistant should use the app default profile, no profile, or a specific profile.")"/>
|
<ConfigurationSelect OptionDescription="@T("Preselect a profile")" Disabled="@(() => !this.SettingsManager.ConfigurationData.Coding.PreselectOptions)" SelectedValue="@(() => ProfilePreselection.FromStoredValue(this.SettingsManager.ConfigurationData.Coding.PreselectedProfile))" Data="@ConfigurationSelectDataFactory.GetComponentProfilesData(this.SettingsManager.ConfigurationData.Profiles)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Coding.PreselectedProfile = selectedValue)" OptionHelp="@T("Choose whether the assistant should use the app default profile, no profile, or a specific profile.")"/>
|
||||||
|
|||||||
@ -684,15 +684,15 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T2479378307"] =
|
|||||||
-- Get Support
|
-- Get Support
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T2694436440"] = "Support erhalten"
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T2694436440"] = "Support erhalten"
|
||||||
|
|
||||||
-- Context {0}
|
-- Context
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T3205224990"] = "Kontext {0}"
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T3174137628"] = "Kontext"
|
||||||
|
|
||||||
-- Delete context
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T3491455017"] = "Kontext löschen"
|
|
||||||
|
|
||||||
-- Your question(s)
|
-- Your question(s)
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T3576319998"] = "Ihre Frage(n)"
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T3576319998"] = "Ihre Frage(n)"
|
||||||
|
|
||||||
|
-- Coding Assistant Session
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T358051959"] = "Sitzung des Coding-Assistenten"
|
||||||
|
|
||||||
-- Please provide your questions.
|
-- Please provide your questions.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T4120171174"] = "Bitte stellen Sie Ihre Fragen."
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T4120171174"] = "Bitte stellen Sie Ihre Fragen."
|
||||||
|
|
||||||
@ -702,29 +702,11 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T412437274"] = "
|
|||||||
-- Please provide the compiler messages.
|
-- Please provide the compiler messages.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T4225294332"] = "Bitte geben Sie die Kompilermeldungen an."
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T4225294332"] = "Bitte geben Sie die Kompilermeldungen an."
|
||||||
|
|
||||||
-- This coding assistant supports you in writing code. Provide some coding context by pasting your code into the input fields. You might assign an ID to your code snippet to easily reference it later. When you have compiler messages, you can paste them into the input fields to get help with debugging as well.
|
-- This coding assistant supports you in writing code. Ask your coding question and optionally attach source files as context. When you have compiler messages, you can paste them into the input fields to get help with debugging as well.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T566604388"] = "Dieser Assistent zum Programmieren unterstützt Sie beim Schreiben von Code. Geben Sie den Programmierkontext an, indem Sie Ihren Code in die Eingabefelder einfügen. Sie können Ihrem Code eine ID zuweisen, um später leichter auf diesen verweisen zu können. Wenn Sie Kompilermeldungen erhalten haben, können Sie diese ebenfalls einfügen, um Unterstützung beim Debuggen zu erhalten."
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T464918582"] = "Dieser Coding-Assistent unterstützt Sie beim Schreiben von Code. Stellen Sie Ihre Programmierfrage und hängen Sie optional Quelldateien als Kontext an. Wenn Sie Compiler-Meldungen haben, können Sie sie ebenfalls in die Eingabefelder einfügen, um Hilfe beim Debugging zu erhalten."
|
||||||
|
|
||||||
-- Add context
|
-- You can attach source files as optional context for your coding question.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T882607103"] = "Kontext hinzufügen"
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T702937106"] = "Sie können Quelldateien als optionalen Kontext für Ihre Programmierfrage anhängen."
|
||||||
|
|
||||||
-- Language
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::CODINGCONTEXTITEM::T2591284123"] = "Sprache"
|
|
||||||
|
|
||||||
-- Your code
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::CODINGCONTEXTITEM::T3144719651"] = "Ihr Code"
|
|
||||||
|
|
||||||
-- {0}: Please provide your input.
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::CODINGCONTEXTITEM::T3160504659"] = "{0}: Bitte geben Sie Ihren Inhalt ein."
|
|
||||||
|
|
||||||
-- (Optional) Identifier
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::CODINGCONTEXTITEM::T3208138853"] = "(Optional) Kennung bzw. ID"
|
|
||||||
|
|
||||||
-- Other language
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::CODINGCONTEXTITEM::T3374524465"] = "Andere Sprache"
|
|
||||||
|
|
||||||
-- Please specify the language.
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::CODINGCONTEXTITEM::T3406207295"] = "Bitte geben Sie die Sprache an."
|
|
||||||
|
|
||||||
-- Other
|
-- Other
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::COMMONCODINGLANGUAGEEXTENSIONS::T1849229205"] = "Andere"
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::COMMONCODINGLANGUAGEEXTENSIONS::T1849229205"] = "Andere"
|
||||||
@ -1407,6 +1389,9 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::ERI::PROGRAMMINGLANGUAGESEXTENSIONS::T342
|
|||||||
-- Please provide a text as input. You might copy the desired text from a document or a website.
|
-- Please provide a text as input. You might copy the desired text from a document or a website.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::GRAMMARSPELLING::ASSISTANTGRAMMARSPELLING::T137304886"] = "Bitte geben Sie einen Text ein. Sie können den gewünschten Text aus einem Dokument oder einer Website kopieren."
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::GRAMMARSPELLING::ASSISTANTGRAMMARSPELLING::T137304886"] = "Bitte geben Sie einen Text ein. Sie können den gewünschten Text aus einem Dokument oder einer Website kopieren."
|
||||||
|
|
||||||
|
-- Load text from file
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::GRAMMARSPELLING::ASSISTANTGRAMMARSPELLING::T2210807298"] = "Text aus Datei laden"
|
||||||
|
|
||||||
-- Proofread
|
-- Proofread
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::GRAMMARSPELLING::ASSISTANTGRAMMARSPELLING::T2325568297"] = "Korrekturlesen"
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::GRAMMARSPELLING::ASSISTANTGRAMMARSPELLING::T2325568297"] = "Korrekturlesen"
|
||||||
|
|
||||||
@ -1833,6 +1818,9 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::REWRITEIMPROVE::ASSISTANTREWRITEIMPROVE::
|
|||||||
-- Improve your text
|
-- Improve your text
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::REWRITEIMPROVE::ASSISTANTREWRITEIMPROVE::T2163831433"] = "Verbessern Sie ihren Text"
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::REWRITEIMPROVE::ASSISTANTREWRITEIMPROVE::T2163831433"] = "Verbessern Sie ihren Text"
|
||||||
|
|
||||||
|
-- Load text from file
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::REWRITEIMPROVE::ASSISTANTREWRITEIMPROVE::T2210807298"] = "Text aus Datei laden"
|
||||||
|
|
||||||
-- Language
|
-- Language
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::REWRITEIMPROVE::ASSISTANTREWRITEIMPROVE::T2591284123"] = "Sprache"
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::REWRITEIMPROVE::ASSISTANTREWRITEIMPROVE::T2591284123"] = "Sprache"
|
||||||
|
|
||||||
@ -2799,6 +2787,9 @@ UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::PROVIDERSELECTION::T900237532"] = "Anbiet
|
|||||||
-- Failed to load file content
|
-- Failed to load file content
|
||||||
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READFILECONTENT::T1989554334"] = "Laden des Dateiinhalts fehlgeschlagen"
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READFILECONTENT::T1989554334"] = "Laden des Dateiinhalts fehlgeschlagen"
|
||||||
|
|
||||||
|
-- Drop one file here to load its content.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READFILECONTENT::T2274562398"] = "Datei hier ablegen, um ihren Inhalt zu laden."
|
||||||
|
|
||||||
-- Use file content as input
|
-- Use file content as input
|
||||||
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READFILECONTENT::T3499386973"] = "Dokumenteninhalt als Eingabe verwenden"
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READFILECONTENT::T3499386973"] = "Dokumenteninhalt als Eingabe verwenden"
|
||||||
|
|
||||||
@ -5355,24 +5346,15 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T49150
|
|||||||
-- Export configuration
|
-- Export configuration
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T975426229"] = "Konfiguration exportieren"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T975426229"] = "Konfiguration exportieren"
|
||||||
|
|
||||||
-- Which programming language should be preselected for added contexts?
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T1073540083"] = "Welche Programmiersprache soll für hinzugefügte Kontexte vorausgewählt werden?"
|
|
||||||
|
|
||||||
-- Compiler messages are preselected
|
-- Compiler messages are preselected
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T1110902070"] = "Compiler-Nachrichten sind vorausgewählt"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T1110902070"] = "Compiler-Nachrichten sind vorausgewählt"
|
||||||
|
|
||||||
-- Choose whether the assistant should use the app default profile, no profile, or a specific profile.
|
-- Choose whether the assistant should use the app default profile, no profile, or a specific profile.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T1766361623"] = "Wählen Sie aus, ob der Assistent das Standardprofil der App, kein Profil oder ein bestimmtes Profil verwenden soll."
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T1766361623"] = "Wählen Sie aus, ob der Assistent das Standardprofil der App, kein Profil oder ein bestimmtes Profil verwenden soll."
|
||||||
|
|
||||||
-- Preselect a programming language
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T2181567002"] = "Programmiersprache vorauswählen"
|
|
||||||
|
|
||||||
-- Preselect a profile
|
-- Preselect a profile
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T2322771068"] = "Profil vorauswählen"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T2322771068"] = "Profil vorauswählen"
|
||||||
|
|
||||||
-- When enabled, you can preselect the coding options. This is might be useful when you prefer a specific programming language or LLM model.
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T2619641701"] = "Wenn aktiviert, können Sie die Code-Optionen im Voraus auswählen. Das kann nützlich sein, wenn Sie eine bestimmte Programmiersprache oder ein bestimmtes LLM-Modell bevorzugen."
|
|
||||||
|
|
||||||
-- Preselect coding options?
|
-- Preselect coding options?
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T2790579667"] = "Codierungsoptionen vorauswählen?"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T2790579667"] = "Codierungsoptionen vorauswählen?"
|
||||||
|
|
||||||
@ -5385,8 +5367,8 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T3015105896"
|
|||||||
-- Coding options are preselected
|
-- Coding options are preselected
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T3567850751"] = "Codierungsoptionen sind vorausgewählt"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T3567850751"] = "Codierungsoptionen sind vorausgewählt"
|
||||||
|
|
||||||
-- Preselect another programming language
|
-- When enabled, you can preselect coding assistant options such as compiler message input, provider, and profile.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T4230412334"] = "Eine andere Programmiersprache vorauswählen"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T403451006"] = "Wenn aktiviert, können Sie Optionen für den Coding-Assistenten vorab auswählen, z. B. Compiler-Nachrichteneingabe, Anbieter und Profil."
|
||||||
|
|
||||||
-- Compiler messages are not preselected
|
-- Compiler messages are not preselected
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T516498299"] = "Compiler-Meldungen sind nicht vorausgewählt"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T516498299"] = "Compiler-Meldungen sind nicht vorausgewählt"
|
||||||
|
|||||||
@ -684,15 +684,15 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T2479378307"] =
|
|||||||
-- Get Support
|
-- Get Support
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T2694436440"] = "Get Support"
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T2694436440"] = "Get Support"
|
||||||
|
|
||||||
-- Context {0}
|
-- Context
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T3205224990"] = "Context {0}"
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T3174137628"] = "Context"
|
||||||
|
|
||||||
-- Delete context
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T3491455017"] = "Delete context"
|
|
||||||
|
|
||||||
-- Your question(s)
|
-- Your question(s)
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T3576319998"] = "Your question(s)"
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T3576319998"] = "Your question(s)"
|
||||||
|
|
||||||
|
-- Coding Assistant Session
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T358051959"] = "Coding Assistant Session"
|
||||||
|
|
||||||
-- Please provide your questions.
|
-- Please provide your questions.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T4120171174"] = "Please provide your questions."
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T4120171174"] = "Please provide your questions."
|
||||||
|
|
||||||
@ -702,29 +702,11 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T412437274"] = "
|
|||||||
-- Please provide the compiler messages.
|
-- Please provide the compiler messages.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T4225294332"] = "Please provide the compiler messages."
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T4225294332"] = "Please provide the compiler messages."
|
||||||
|
|
||||||
-- This coding assistant supports you in writing code. Provide some coding context by pasting your code into the input fields. You might assign an ID to your code snippet to easily reference it later. When you have compiler messages, you can paste them into the input fields to get help with debugging as well.
|
-- This coding assistant supports you in writing code. Ask your coding question and optionally attach source files as context. When you have compiler messages, you can paste them into the input fields to get help with debugging as well.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T566604388"] = "This coding assistant supports you in writing code. Provide some coding context by pasting your code into the input fields. You might assign an ID to your code snippet to easily reference it later. When you have compiler messages, you can paste them into the input fields to get help with debugging as well."
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T464918582"] = "This coding assistant supports you in writing code. Ask your coding question and optionally attach source files as context. When you have compiler messages, you can paste them into the input fields to get help with debugging as well."
|
||||||
|
|
||||||
-- Add context
|
-- You can attach source files as optional context for your coding question.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T882607103"] = "Add context"
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::ASSISTANTCODING::T702937106"] = "You can attach source files as optional context for your coding question."
|
||||||
|
|
||||||
-- Language
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::CODINGCONTEXTITEM::T2591284123"] = "Language"
|
|
||||||
|
|
||||||
-- Your code
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::CODINGCONTEXTITEM::T3144719651"] = "Your code"
|
|
||||||
|
|
||||||
-- {0}: Please provide your input.
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::CODINGCONTEXTITEM::T3160504659"] = "{0}: Please provide your input."
|
|
||||||
|
|
||||||
-- (Optional) Identifier
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::CODINGCONTEXTITEM::T3208138853"] = "(Optional) Identifier"
|
|
||||||
|
|
||||||
-- Other language
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::CODINGCONTEXTITEM::T3374524465"] = "Other language"
|
|
||||||
|
|
||||||
-- Please specify the language.
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::CODINGCONTEXTITEM::T3406207295"] = "Please specify the language."
|
|
||||||
|
|
||||||
-- Other
|
-- Other
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::COMMONCODINGLANGUAGEEXTENSIONS::T1849229205"] = "Other"
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::CODING::COMMONCODINGLANGUAGEEXTENSIONS::T1849229205"] = "Other"
|
||||||
@ -1407,6 +1389,9 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::ERI::PROGRAMMINGLANGUAGESEXTENSIONS::T342
|
|||||||
-- Please provide a text as input. You might copy the desired text from a document or a website.
|
-- Please provide a text as input. You might copy the desired text from a document or a website.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::GRAMMARSPELLING::ASSISTANTGRAMMARSPELLING::T137304886"] = "Please provide a text as input. You might copy the desired text from a document or a website."
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::GRAMMARSPELLING::ASSISTANTGRAMMARSPELLING::T137304886"] = "Please provide a text as input. You might copy the desired text from a document or a website."
|
||||||
|
|
||||||
|
-- Load text from file
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::GRAMMARSPELLING::ASSISTANTGRAMMARSPELLING::T2210807298"] = "Load text from file"
|
||||||
|
|
||||||
-- Proofread
|
-- Proofread
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::GRAMMARSPELLING::ASSISTANTGRAMMARSPELLING::T2325568297"] = "Proofread"
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::GRAMMARSPELLING::ASSISTANTGRAMMARSPELLING::T2325568297"] = "Proofread"
|
||||||
|
|
||||||
@ -1833,6 +1818,9 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::REWRITEIMPROVE::ASSISTANTREWRITEIMPROVE::
|
|||||||
-- Improve your text
|
-- Improve your text
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::REWRITEIMPROVE::ASSISTANTREWRITEIMPROVE::T2163831433"] = "Improve your text"
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::REWRITEIMPROVE::ASSISTANTREWRITEIMPROVE::T2163831433"] = "Improve your text"
|
||||||
|
|
||||||
|
-- Load text from file
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::REWRITEIMPROVE::ASSISTANTREWRITEIMPROVE::T2210807298"] = "Load text from file"
|
||||||
|
|
||||||
-- Language
|
-- Language
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::REWRITEIMPROVE::ASSISTANTREWRITEIMPROVE::T2591284123"] = "Language"
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::REWRITEIMPROVE::ASSISTANTREWRITEIMPROVE::T2591284123"] = "Language"
|
||||||
|
|
||||||
@ -2799,6 +2787,9 @@ UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::PROVIDERSELECTION::T900237532"] = "Provid
|
|||||||
-- Failed to load file content
|
-- Failed to load file content
|
||||||
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READFILECONTENT::T1989554334"] = "Failed to load file content"
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READFILECONTENT::T1989554334"] = "Failed to load file content"
|
||||||
|
|
||||||
|
-- Drop one file here to load its content.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READFILECONTENT::T2274562398"] = "Drop one file here to load its content."
|
||||||
|
|
||||||
-- Use file content as input
|
-- Use file content as input
|
||||||
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READFILECONTENT::T3499386973"] = "Use file content as input"
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READFILECONTENT::T3499386973"] = "Use file content as input"
|
||||||
|
|
||||||
@ -5355,24 +5346,15 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T49150
|
|||||||
-- Export configuration
|
-- Export configuration
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T975426229"] = "Export configuration"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T975426229"] = "Export configuration"
|
||||||
|
|
||||||
-- Which programming language should be preselected for added contexts?
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T1073540083"] = "Which programming language should be preselected for added contexts?"
|
|
||||||
|
|
||||||
-- Compiler messages are preselected
|
-- Compiler messages are preselected
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T1110902070"] = "Compiler messages are preselected"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T1110902070"] = "Compiler messages are preselected"
|
||||||
|
|
||||||
-- Choose whether the assistant should use the app default profile, no profile, or a specific profile.
|
-- Choose whether the assistant should use the app default profile, no profile, or a specific profile.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T1766361623"] = "Choose whether the assistant should use the app default profile, no profile, or a specific profile."
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T1766361623"] = "Choose whether the assistant should use the app default profile, no profile, or a specific profile."
|
||||||
|
|
||||||
-- Preselect a programming language
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T2181567002"] = "Preselect a programming language"
|
|
||||||
|
|
||||||
-- Preselect a profile
|
-- Preselect a profile
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T2322771068"] = "Preselect a profile"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T2322771068"] = "Preselect a profile"
|
||||||
|
|
||||||
-- When enabled, you can preselect the coding options. This is might be useful when you prefer a specific programming language or LLM model.
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T2619641701"] = "When enabled, you can preselect the coding options. This is might be useful when you prefer a specific programming language or LLM model."
|
|
||||||
|
|
||||||
-- Preselect coding options?
|
-- Preselect coding options?
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T2790579667"] = "Preselect coding options?"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T2790579667"] = "Preselect coding options?"
|
||||||
|
|
||||||
@ -5385,8 +5367,8 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T3015105896"
|
|||||||
-- Coding options are preselected
|
-- Coding options are preselected
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T3567850751"] = "Coding options are preselected"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T3567850751"] = "Coding options are preselected"
|
||||||
|
|
||||||
-- Preselect another programming language
|
-- When enabled, you can preselect coding assistant options such as compiler message input, provider, and profile.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T4230412334"] = "Preselect another programming language"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T403451006"] = "When enabled, you can preselect coding assistant options such as compiler message input, provider, and profile."
|
||||||
|
|
||||||
-- Compiler messages are not preselected
|
-- Compiler messages are not preselected
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T516498299"] = "Compiler messages are not preselected"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCODING::T516498299"] = "Compiler messages are not preselected"
|
||||||
|
|||||||
@ -1,2 +1,5 @@
|
|||||||
# v26.7.2, build 244 (2026-07-xx xx:xx UTC)
|
# v26.7.2, build 244 (2026-07-xx xx:xx UTC)
|
||||||
|
- Improved the coding assistant with a simpler context workflow. Now you can attach multiple source files directly instead of manually defining code contexts.
|
||||||
|
- Improved the grammar & spelling checking and rewrite & improve text assistants. Both assistants can now load one document into the text field using the file dialog or drag and drop.
|
||||||
|
- Improved the legal check, text summarizer, and translation assistant. These assistants can now load documents with drag and drop.
|
||||||
- Fixed the dialog for adding providers. Selecting an option could previously prevent the setup from continuing. Thanks, Dominic Neuburg (`donework`), for reporting this issue.
|
- Fixed the dialog for adding providers. Selecting an option could previously prevent the setup from continuing. Thanks, Dominic Neuburg (`donework`), for reporting this issue.
|
||||||
Loading…
Reference in New Issue
Block a user