diff --git a/src/DynamoAssistantViewExtension/DynamoAssistantViewExtension.cs b/src/DynamoAssistantViewExtension/DynamoAssistantViewExtension.cs
index 98c707b..637e14b 100644
--- a/src/DynamoAssistantViewExtension/DynamoAssistantViewExtension.cs
+++ b/src/DynamoAssistantViewExtension/DynamoAssistantViewExtension.cs
@@ -1,4 +1,5 @@
using System.Windows.Controls;
+using Dynamo.ViewModels;
using Dynamo.Wpf.Extensions;
namespace DynamoAssistant
@@ -47,8 +48,8 @@ public override void Loaded(ViewLoadedParams p)
// Set the owner of the window to the Dynamo window.
Owner = p.DynamoWindow
};
-
- assistantMenuItem = new MenuItem { Header = "Show Dynamo Assistant", IsCheckable = true };
+ viewModel.dynamoViewModel = p.DynamoWindow.DataContext as DynamoViewModel;
+ assistantMenuItem = new MenuItem { Header = "Open Copilot", IsCheckable = true };
assistantMenuItem.Checked += (sender, args) => p.AddToExtensionsSideBar(this, window);
assistantMenuItem.Unchecked += (sender, args) => p.CloseExtensioninInSideBar(this);
p.AddExtensionMenuItem(assistantMenuItem);
@@ -78,7 +79,7 @@ public override string Name
{
get
{
- return "Dynamo Assistant";
+ return "Copilot";
}
}
diff --git a/src/DynamoAssistantViewExtension/DynamoAssistantViewExtension.csproj b/src/DynamoAssistantViewExtension/DynamoAssistantViewExtension.csproj
index 1e86dc1..adf01cb 100644
--- a/src/DynamoAssistantViewExtension/DynamoAssistantViewExtension.csproj
+++ b/src/DynamoAssistantViewExtension/DynamoAssistantViewExtension.csproj
@@ -10,6 +10,7 @@
true
+
diff --git a/src/DynamoAssistantViewExtension/DynamoAssistantWindowViewModel.cs b/src/DynamoAssistantViewExtension/DynamoAssistantWindowViewModel.cs
index 30054fd..a5f1638 100644
--- a/src/DynamoAssistantViewExtension/DynamoAssistantWindowViewModel.cs
+++ b/src/DynamoAssistantViewExtension/DynamoAssistantWindowViewModel.cs
@@ -1,12 +1,14 @@
-using Dynamo.Core;
+using System;
+using System.Collections.ObjectModel;
+using System.Windows.Input;
+using Dynamo.Core;
using Dynamo.Extensions;
+using Dynamo.Models;
using Dynamo.UI.Commands;
+using Dynamo.ViewModels;
using OpenAI_API;
using OpenAI_API.Chat;
using OpenAI_API.Models;
-using System;
-using System.Collections.ObjectModel;
-using System.Windows.Input;
namespace DynamoAssistant
{
@@ -14,12 +16,15 @@ public class DynamoAssistantWindowViewModel : NotificationObject, IDisposable
{
private string userInput;
private readonly ReadyParams readyParams;
+ internal DynamoViewModel dynamoViewModel;
+
+ // Chat GPT related fields
private readonly OpenAIAPI chatGPTClient;
private readonly Conversation conversation;
private static readonly string apikey = "Your API Key";
///
- ///
+ /// User input to the Copilot
///
public string UserInput
{
@@ -36,6 +41,11 @@ public string UserInput
}
}
+ ///
+ /// Dynamo Model getter
+ ///
+ internal DynamoModel dynamoModel => dynamoViewModel.Model;
+
public ObservableCollection Messages { get; set; } = new ObservableCollection();
public DynamoAssistantWindowViewModel(ReadyParams p)
@@ -46,23 +56,38 @@ public DynamoAssistantWindowViewModel(ReadyParams p)
chatGPTClient = new OpenAIAPI(new APIAuthentication(apikey));
// ChatGPT lets you start a new chat.
conversation = chatGPTClient.Chat.CreateConversation();
- conversation.Model = Model.DefaultChatModel;
- conversation.RequestParameters.Temperature = 0;
+ conversation.Model = Model.GPT4_Turbo;
+ // Adjust this value for more or less "creativity" in the response
+ conversation.RequestParameters.Temperature = 0.2;
// Display a welcome message
- Messages.Add("Assistant:\nWelcome to Dynamo world and ask me anything to get started!");
+ Messages.Add("Copilot:\nWelcome to Dynamo world and ask me anything to get started!\n");
}
internal async void SendMessage(string msg)
{
// Send the user's input to the ChatGPT API and receive a response
conversation?.AppendUserInput(msg);
- string response = await conversation.GetResponseFromChatbotAsync();
// Display user message first
- Messages.Add("You:\n" + msg);
+ Messages.Add("You:\n" + msg + "\n");
+ string response = await conversation.GetResponseFromChatbotAsync();
// Display the chatbot's response
- Messages.Add("Assistant:\n" + response);
+ Messages.Add("Copilot:\n" + response + "\n");
+ //var pythonNode = new PythonNodeModels.PythonNode();
+ //dynamoModel.ExecuteCommand(new DynamoModel.CreateNodeCommand(pythonNode, 0, 0, false, false));
+
+ // create a Dynamo note example
+ CreateNote("A1BE9F01-55C4-495E-B24C-099D018A29CE", "This is a sample Note.", 0, 0, true);
+ }
+
+ internal void CreateNote(string nodeId, string noteText, double x, double y, bool defaultPosition)
+ {
+ dynamoModel.ExecuteCommand(new DynamoModel.CreateNoteCommand(nodeId, noteText, x, y, defaultPosition));
+ Messages.Add("Copilot:\nYour note has been created!\n");
}
+ ///
+ /// Dispose function
+ ///
public void Dispose()
{
// Do nothing
@@ -74,10 +99,7 @@ public ICommand EnterCommand
{
get
{
- if (enterCommand == null)
- {
- enterCommand = new DelegateCommand(Enter);
- }
+ enterCommand ??= new DelegateCommand(Enter);
return enterCommand;
}