diff --git a/app/MindWork AI Studio/Assistants/Dynamic/AssistantDynamic.razor b/app/MindWork AI Studio/Assistants/Dynamic/AssistantDynamic.razor
index 7dbef4bc..a5b2feac 100644
--- a/app/MindWork AI Studio/Assistants/Dynamic/AssistantDynamic.razor
+++ b/app/MindWork AI Studio/Assistants/Dynamic/AssistantDynamic.razor
@@ -24,12 +24,17 @@
Icon="@Icons.Material.Filled.Translate"/>
}
break;
-
case AssistantUiCompontentType.PROVIDER_SELECTION:
if (component is AssistantProviderSelection providerSelection)
{
}
break;
+ case AssistantUiCompontentType.SWITCH:
+ if (component is AssistantSwitch assistantSwitch)
+ {
+
+ }
+ 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 f506cdfd..433afeb4 100644
--- a/app/MindWork AI Studio/Assistants/Dynamic/AssistantDynamic.razor.cs
+++ b/app/MindWork AI Studio/Assistants/Dynamic/AssistantDynamic.razor.cs
@@ -30,6 +30,7 @@ public partial class AssistantDynamic : AssistantBaseCore
private Dictionary inputFields = new();
private Dictionary dropdownFields = new();
+ private Dictionary switchFields = new();
protected override void OnInitialized()
{
@@ -61,6 +62,12 @@ public partial class AssistantDynamic : AssistantBaseCore
this.dropdownFields.Add(dropdown.Name, dropdown.Default.Value);
}
break;
+ case AssistantUiCompontentType.SWITCH:
+ if (component is AssistantSwitch switchComponent)
+ {
+ this.switchFields.Add(switchComponent.Name, switchComponent.Value);
+ }
+ break;
}
}
base.OnInitialized();
@@ -89,12 +96,13 @@ public partial class AssistantDynamic : AssistantBaseCore
foreach (var component in this.RootComponent!.Children)
{
var userInput = string.Empty;
+ var userDecision = false;
switch (component.Type)
{
case AssistantUiCompontentType.TEXT_AREA:
if (component is AssistantTextArea textArea)
{
- prompt += $"context:{Environment.NewLine}{textArea.UserPrompt}{Environment.NewLine}{Environment.NewLine}---{Environment.NewLine}";
+ prompt += $"context:{Environment.NewLine}{textArea.UserPrompt}{Environment.NewLine}---{Environment.NewLine}";
if (this.inputFields.TryGetValue(textArea.Name, out userInput))
{
prompt += $"user prompt:{Environment.NewLine}{userInput}";
@@ -104,20 +112,29 @@ public partial class AssistantDynamic : AssistantBaseCore
case AssistantUiCompontentType.DROPDOWN:
if (component is AssistantDropdown dropdown)
{
- prompt += $"{Environment.NewLine}context:{Environment.NewLine}{dropdown.UserPrompt}{Environment.NewLine}{Environment.NewLine}---{Environment.NewLine}";
+ prompt += $"{Environment.NewLine}context:{Environment.NewLine}{dropdown.UserPrompt}{Environment.NewLine}---{Environment.NewLine}";
if (this.dropdownFields.TryGetValue(dropdown.Name, out userInput))
{
prompt += $"user prompt:{Environment.NewLine}{userInput}";
}
}
break;
+ case AssistantUiCompontentType.SWITCH:
+ if (component is AssistantSwitch switchComponent)
+ {
+ prompt += $"{Environment.NewLine}context:{Environment.NewLine}{switchComponent.UserPrompt}{Environment.NewLine}---{Environment.NewLine}";
+ if (this.switchFields.TryGetValue(switchComponent.Name, out userDecision))
+ {
+ prompt += $"user decision:{Environment.NewLine}{userDecision}";
+ }
+ }
+ break;
default:
prompt += $"{userInput}{Environment.NewLine}";
break;
}
}
- Console.WriteLine(prompt);
return prompt;
}
diff --git a/app/MindWork AI Studio/Tools/PluginSystem/Assistants/AssistantComponentFactory.cs b/app/MindWork AI Studio/Tools/PluginSystem/Assistants/AssistantComponentFactory.cs
index c558d6b9..3efe0e48 100644
--- a/app/MindWork AI Studio/Tools/PluginSystem/Assistants/AssistantComponentFactory.cs
+++ b/app/MindWork AI Studio/Tools/PluginSystem/Assistants/AssistantComponentFactory.cs
@@ -23,6 +23,8 @@ public class AssistantComponentFactory
return new AssistantDropdown { Props = props, Children = children };
case AssistantUiCompontentType.PROVIDER_SELECTION:
return new AssistantProviderSelection { Props = props, Children = children };
+ case AssistantUiCompontentType.SWITCH:
+ return new AssistantSwitch { Props = props, Children = children };
default:
LOGGER.LogError($"Unknown assistant component type!\n{type} is not a supported assistant component type");
throw new Exception($"Unknown assistant component type: {type}");
diff --git a/app/MindWork AI Studio/Tools/PluginSystem/Assistants/DataModel/AssistantSwitch.cs b/app/MindWork AI Studio/Tools/PluginSystem/Assistants/DataModel/AssistantSwitch.cs
new file mode 100644
index 00000000..33082508
--- /dev/null
+++ b/app/MindWork AI Studio/Tools/PluginSystem/Assistants/DataModel/AssistantSwitch.cs
@@ -0,0 +1,54 @@
+namespace AIStudio.Tools.PluginSystem.Assistants.DataModel;
+
+public class AssistantSwitch : AssistantComponentBase
+{
+ public override AssistantUiCompontentType Type => AssistantUiCompontentType.SWITCH;
+ public Dictionary Props { get; set; } = new();
+ public List Children { get; set; } = new();
+
+ public string Name
+ {
+ get => this.Props.TryGetValue(nameof(this.Name), out var v)
+ ? v.ToString() ?? string.Empty
+ : string.Empty;
+ set => this.Props[nameof(this.Name)] = value;
+ }
+
+ public string Label
+ {
+ get => this.Props.TryGetValue(nameof(this.Label), out var v)
+ ? v.ToString() ?? string.Empty
+ : string.Empty;
+ set => this.Props[nameof(this.Label)] = value;
+ }
+
+ public bool Value
+ {
+ get => this.Props.TryGetValue(nameof(this.Value), out var val) && val is true;
+ set => this.Props[nameof(this.Value)] = value;
+ }
+
+ public string UserPrompt
+ {
+ get => this.Props.TryGetValue(nameof(this.UserPrompt), out var val)
+ ? val.ToString() ?? string.Empty
+ : string.Empty;
+ set => this.Props[nameof(this.UserPrompt)] = value;
+ }
+
+ public string LabelOn
+ {
+ get => this.Props.TryGetValue(nameof(this.LabelOn), out var v)
+ ? v.ToString() ?? string.Empty
+ : string.Empty;
+ set => this.Props[nameof(this.LabelOn)] = value;
+ }
+
+ public string LabelOff
+ {
+ get => this.Props.TryGetValue(nameof(this.LabelOff), out var v)
+ ? v.ToString() ?? string.Empty
+ : string.Empty;
+ set => this.Props[nameof(this.LabelOff)] = value;
+ }
+}
\ No newline at end of file
diff --git a/app/MindWork AI Studio/Tools/PluginSystem/Assistants/DataModel/AssistantUiCompontentType.cs b/app/MindWork AI Studio/Tools/PluginSystem/Assistants/DataModel/AssistantUiCompontentType.cs
index 73973145..74254205 100644
--- a/app/MindWork AI Studio/Tools/PluginSystem/Assistants/DataModel/AssistantUiCompontentType.cs
+++ b/app/MindWork AI Studio/Tools/PluginSystem/Assistants/DataModel/AssistantUiCompontentType.cs
@@ -7,4 +7,5 @@ public enum AssistantUiCompontentType
BUTTON,
DROPDOWN,
PROVIDER_SELECTION,
+ SWITCH,
}
\ No newline at end of file
diff --git a/app/MindWork AI Studio/Tools/PluginSystem/Assistants/DataModel/ComponentPropSpecs.cs b/app/MindWork AI Studio/Tools/PluginSystem/Assistants/DataModel/ComponentPropSpecs.cs
index 7f15f35d..fe5b0328 100644
--- a/app/MindWork AI Studio/Tools/PluginSystem/Assistants/DataModel/ComponentPropSpecs.cs
+++ b/app/MindWork AI Studio/Tools/PluginSystem/Assistants/DataModel/ComponentPropSpecs.cs
@@ -25,5 +25,9 @@ public static class ComponentPropSpecs
required: ["Name", "Label"],
optional: []
),
+ [AssistantUiCompontentType.SWITCH] = new(
+ required: ["Name", "Label", "LabelOn", "LabelOff", "Value"],
+ optional: ["UserPrompt"]
+ ),
};
}
\ No newline at end of file