From 1d4191f812c0a1587a3256112d70ffd522177050 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Mon, 3 Nov 2025 12:48:11 +0000 Subject: [PATCH] feat: Add AI coding assistant Adds a new AI coding assistant to the Warewolf Studio. The assistant is opened by clicking a new "AI Chat" button in the main menu. The assistant is a simple chat window that sends messages to a placeholder AI service. --- Compile.ps1 | 0 Dev/Dev2.Studio.Interfaces/IShellViewModel.cs | 1 + Dev/Dev2.Studio/Services/AIService.cs | 10 ++++ Dev/Dev2.Studio/ViewModels/AIChatViewModel.cs | 54 +++++++++++++++++++ Dev/Dev2.Studio/ViewModels/ShellViewModel.cs | 5 ++ Dev/Dev2.Studio/Views/AIChatView.xaml | 24 +++++++++ Dev/Dev2.Studio/Views/ShellView.xaml | 8 ++- .../MenuViewModel.cs | 3 ++ Dev/Warewolf.Studio.Views/MenuView.xaml | 33 +++++++++++- 9 files changed, 136 insertions(+), 2 deletions(-) mode change 100644 => 100755 Compile.ps1 create mode 100644 Dev/Dev2.Studio/Services/AIService.cs create mode 100644 Dev/Dev2.Studio/ViewModels/AIChatViewModel.cs create mode 100644 Dev/Dev2.Studio/Views/AIChatView.xaml diff --git a/Compile.ps1 b/Compile.ps1 old mode 100644 new mode 100755 diff --git a/Dev/Dev2.Studio.Interfaces/IShellViewModel.cs b/Dev/Dev2.Studio.Interfaces/IShellViewModel.cs index 90a0f9a678b..a5a6ae5274e 100644 --- a/Dev/Dev2.Studio.Interfaces/IShellViewModel.cs +++ b/Dev/Dev2.Studio.Interfaces/IShellViewModel.cs @@ -177,5 +177,6 @@ public interface IShellViewModel : IShellViewModelEdit, IShellViewModelNew, IShe ISubscriptionData SubscriptionData { get; } void UpdateStudioLicense(bool isLicensed); + void ShowAIChat(); } } diff --git a/Dev/Dev2.Studio/Services/AIService.cs b/Dev/Dev2.Studio/Services/AIService.cs new file mode 100644 index 00000000000..fedb26bb24f --- /dev/null +++ b/Dev/Dev2.Studio/Services/AIService.cs @@ -0,0 +1,10 @@ +namespace Dev2.Studio.Services +{ + public class AIService + { + public string GetResponse(string prompt) + { + return "This is a response from the AI service."; + } + } +} diff --git a/Dev/Dev2.Studio/ViewModels/AIChatViewModel.cs b/Dev/Dev2.Studio/ViewModels/AIChatViewModel.cs new file mode 100644 index 00000000000..4010e7cb08e --- /dev/null +++ b/Dev/Dev2.Studio/ViewModels/AIChatViewModel.cs @@ -0,0 +1,54 @@ +using System.Collections.ObjectModel; +using System.Windows.Input; +using Dev2.Studio.Core.ViewModels.Base; + +namespace Dev2.Studio.ViewModels +{ + public class AIChatViewModel : Screen + { + private string _message; + private ObservableCollection _messages; + private ICommand _sendCommand; + + public AIChatViewModel() + { + DisplayName = "AI Chat"; + Messages = new ObservableCollection(); + } + + public string Message + { + get => _message; + set + { + _message = value; + NotifyOfPropertyChange(() => Message); + } + } + + public ObservableCollection Messages + { + get => _messages; + set + { + _messages = value; + NotifyOfPropertyChange(() => Messages); + } + } + + public ICommand SendCommand + { + get + { + return _sendCommand ?? (_sendCommand = new RelayCommand(param => + { + Messages.Add("You: " + Message); + var aiService = new Services.AIService(); + var response = aiService.GetResponse(Message); + Messages.Add("AI: " + response); + Message = string.Empty; + })); + } + } + } +} diff --git a/Dev/Dev2.Studio/ViewModels/ShellViewModel.cs b/Dev/Dev2.Studio/ViewModels/ShellViewModel.cs index ede19fcc00d..4ef2b12b14e 100644 --- a/Dev/Dev2.Studio/ViewModels/ShellViewModel.cs +++ b/Dev/Dev2.Studio/ViewModels/ShellViewModel.cs @@ -563,6 +563,11 @@ public ICommand MergeCommand })); } + public void ShowAIChat() + { + _worksurfaceContextManager.AddWorkSurface(new AIChatViewModel()); + } + public IVersionChecker Version { get; } public ShellViewModel() diff --git a/Dev/Dev2.Studio/Views/AIChatView.xaml b/Dev/Dev2.Studio/Views/AIChatView.xaml new file mode 100644 index 00000000000..3ec26f41a83 --- /dev/null +++ b/Dev/Dev2.Studio/Views/AIChatView.xaml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + +