diff --git a/app/MindWork AI Studio/Assistants/Dynamic/AssistantDynamic.razor b/app/MindWork AI Studio/Assistants/Dynamic/AssistantDynamic.razor
index b1947cc3..1859192b 100644
--- a/app/MindWork AI Studio/Assistants/Dynamic/AssistantDynamic.razor
+++ b/app/MindWork AI Studio/Assistants/Dynamic/AssistantDynamic.razor
@@ -9,19 +9,26 @@
case AssistantUiCompontentType.TEXT_AREA:
if (component is AssistantTextArea textArea)
{
-
+
}
break;
-
+
+ case AssistantUiCompontentType.DROPDOWN:
+ if (component is AssistantDropdown assistantDropdown)
+ {
+
+ }
+ break;
+
case AssistantUiCompontentType.PROVIDER_SELECTION:
if (component is AssistantProviderSelection providerSelection)
{
}
break;
-
- default:
- break;
}
-}
-
+}
\ No newline at end of file
diff --git a/app/MindWork AI Studio/Assistants/Dynamic/AssistantDynamic.razor.cs b/app/MindWork AI Studio/Assistants/Dynamic/AssistantDynamic.razor.cs
index 418ede95..cb6926ce 100644
--- a/app/MindWork AI Studio/Assistants/Dynamic/AssistantDynamic.razor.cs
+++ b/app/MindWork AI Studio/Assistants/Dynamic/AssistantDynamic.razor.cs
@@ -10,18 +10,26 @@ public partial class AssistantDynamic : AssistantBaseCore
{
[Parameter]
public AssistantForm? RootComponent { get; set; } = null!;
+
+ protected override string Title => this.title;
+ protected override string Description => this.description;
+ protected override string SystemPrompt => this.systemPrompt;
+ protected override bool AllowProfiles => this.allowProfiles;
+ protected override string SubmitText => this.submitText;
+ protected override Func SubmitAction => this.Submit;
+ public override Tools.Components Component { get; }
private string? inputText;
private string title = string.Empty;
private string description = string.Empty;
private string systemPrompt = string.Empty;
private bool allowProfiles = true;
-
- protected override string Title => this.title;
- protected override string Description => this.description;
- protected override string SystemPrompt => this.systemPrompt;
- protected override bool AllowProfiles => this.allowProfiles;
- public override Tools.Components Component { get; }
+ private string submitText = string.Empty;
+ private string selectedTargetLanguage = string.Empty;
+ private string customTargetLanguage = string.Empty;
+
+ private Dictionary inputFields = new();
+
protected override void OnInitialized()
{
var guid = Guid.Parse("958312de-a9e7-4666-901f-4d5b61647efb");
@@ -32,21 +40,63 @@ public partial class AssistantDynamic : AssistantBaseCore
this.title = assistantPlugin.AssistantTitle;
this.description = assistantPlugin.AssistantDescription;
this.systemPrompt = assistantPlugin.SystemPrompt;
+ this.submitText = assistantPlugin.SubmitText;
this.allowProfiles = assistantPlugin.AllowProfiles;
}
+
+ foreach (var component in this.RootComponent!.Children)
+ {
+ switch (component.Type)
+ {
+ case AssistantUiCompontentType.TEXT_AREA:
+ if (component is AssistantTextArea textArea)
+ {
+ this.inputFields.Add(textArea.Name, string.Empty);
+ }
+ break;
+ }
+ }
base.OnInitialized();
}
protected override void ResetForm()
{
- throw new NotImplementedException();
+ foreach (var entry in this.inputFields)
+ {
+ this.inputFields[entry.Key] = string.Empty;
+ }
}
protected override bool MightPreselectValues()
{
- throw new NotImplementedException();
+ Console.WriteLine("throw new NotImplementedException();");
+ return false;
}
- protected override string SubmitText { get; }
- protected override Func SubmitAction { get; }
+ private string? ValidateCustomLanguage(string value) => string.Empty;
+
+ private string CollectUserPrompt()
+ {
+ var prompt = string.Empty;
+ foreach (var entry in this.inputFields)
+ {
+ prompt += $"{entry.Value}{Environment.NewLine}";
+ }
+ return prompt;
+ }
+
+ private async Task Submit()
+ {
+ this.CreateChatThread();
+ var time = this.AddUserRequest(
+ $"""
+
+ The given text is:
+
+ ---
+ {this.CollectUserPrompt()}
+ """);
+
+ await this.AddAIResponseAsync(time);
+ }
}
\ No newline at end of file
diff --git a/app/MindWork AI Studio/Components/DynamicAssistantDropdown.razor b/app/MindWork AI Studio/Components/DynamicAssistantDropdown.razor
new file mode 100644
index 00000000..b826881a
--- /dev/null
+++ b/app/MindWork AI Studio/Components/DynamicAssistantDropdown.razor
@@ -0,0 +1,17 @@
+
+
+ @foreach (var item in Items)
+ {
+
+ @item.Display
+
+ }
+
+
\ No newline at end of file
diff --git a/app/MindWork AI Studio/Components/DynamicAssistantDropdown.razor.cs b/app/MindWork AI Studio/Components/DynamicAssistantDropdown.razor.cs
new file mode 100644
index 00000000..7d4a72ce
--- /dev/null
+++ b/app/MindWork AI Studio/Components/DynamicAssistantDropdown.razor.cs
@@ -0,0 +1,33 @@
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using AIStudio.Tools.PluginSystem.Assistants.DataModel;
+using Microsoft.AspNetCore.Components;
+using MudBlazor;
+
+namespace AIStudio.Components
+{
+ public partial class DynamicAssistantDropdown : ComponentBase
+ {
+ [Parameter]
+ public List Items { get; set; } = new();
+
+ [Parameter]
+ public AssistantDropdownItem Default { get; set; } = new();
+
+ [Parameter]
+ public string Value { get; set; } = string.Empty;
+
+ [Parameter]
+ public EventCallback ValueChanged { get; set; }
+
+ [Parameter]
+ public string Label { get; set; } = string.Empty;
+
+ [Parameter]
+ public Func ValidateSelection { get; set; } = _ => null;
+
+ [Parameter]
+ public string Icon { get; set; } = Icons.Material.Filled.ArrowDropDown;
+ }
+}
\ No newline at end of file
diff --git a/app/MindWork AI Studio/Tools/PluginSystem/Assistants/PluginAssistants.cs b/app/MindWork AI Studio/Tools/PluginSystem/Assistants/PluginAssistants.cs
index d0993fe1..3797001c 100644
--- a/app/MindWork AI Studio/Tools/PluginSystem/Assistants/PluginAssistants.cs
+++ b/app/MindWork AI Studio/Tools/PluginSystem/Assistants/PluginAssistants.cs
@@ -14,6 +14,7 @@ public sealed class PluginAssistants(bool isInternal, LuaState state, PluginType
public string AssistantTitle { get; set; } = string.Empty;
public string AssistantDescription { get; set; } = string.Empty;
public string SystemPrompt { get; set; } = string.Empty;
+ public string SubmitText { get; set; } = string.Empty;
public bool AllowProfiles { get; set; } = true;
public void TryLoad()
@@ -64,6 +65,13 @@ public sealed class PluginAssistants(bool isInternal, LuaState state, PluginType
return false;
}
+ if (!assistantTable.TryGetValue("SubmitText", out var assistantSubmitTextValue) ||
+ !assistantSubmitTextValue.TryRead(out var assistantSubmitText))
+ {
+ message = TB("The ASSISTANT table does not contain a valid system prompt.");
+ return false;
+ }
+
if (!assistantTable.TryGetValue("AllowProfiles", out var assistantAllowProfilesValue) ||
!assistantAllowProfilesValue.TryRead(out var assistantAllowProfiles))
{
@@ -74,6 +82,7 @@ public sealed class PluginAssistants(bool isInternal, LuaState state, PluginType
this.AssistantTitle = assistantTitle;
this.AssistantDescription = assistantDescription;
this.SystemPrompt = assistantSystemPrompt;
+ this.SubmitText = assistantSubmitText;
this.AllowProfiles = assistantAllowProfiles;
// Ensure that the UI table exists nested in the ASSISTANT table and is a valid Lua table: