From 2bccd1f8367b8abce05c5192da2f0ec7263f9694 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADn=20Lucas=20Golini?= Date: Wed, 12 Mar 2025 01:27:20 -0300 Subject: [PATCH] More AI Assistant WIP. --- bin/assets/fonts/remixicon.ttf | Bin 525572 -> 569976 bytes .../eepp/ui/tools/uicodeeditorsplitter.hpp | 10 ++- src/eepp/ui/iconmanager.cpp | 2 + src/eepp/ui/tools/uicodeeditorsplitter.cpp | 10 ++- src/tools/ecode/appconfig.cpp | 29 +++++++- src/tools/ecode/appconfig.hpp | 27 ++++++-- src/tools/ecode/ecode.cpp | 2 + .../plugins/aiassistant/aiassistantplugin.cpp | 65 +++++++++++++++--- .../plugins/aiassistant/aiassistantplugin.hpp | 7 ++ .../ecode/plugins/aiassistant/chatui.cpp | 22 +++--- .../ecode/plugins/aiassistant/chatui.hpp | 4 +- .../ecode/plugins/plugincontextprovider.hpp | 2 +- src/tools/ecode/projectbuild.hpp | 4 +- src/tools/ecode/settingsactions.cpp | 4 +- src/tools/ecode/universallocator.cpp | 10 +-- 15 files changed, 158 insertions(+), 40 deletions(-) diff --git a/bin/assets/fonts/remixicon.ttf b/bin/assets/fonts/remixicon.ttf index 22ce6de496860da39e649c2df835e8ed89429934..1373ccd093f623183e078a7430ae703f6313b8ac 100644 GIT binary patch delta 120138 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 Mwjzj-NHp^Q0g?vfGXMYp delta 79205 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 T$Lu5K*_a(oKbz)FEY1G|k3; run ) const; + void forEachTab( std::function run ) const; + void zoomIn(); void zoomOut(); @@ -355,11 +357,15 @@ class EE_API UICodeEditorSplitter { void setOnTabWidgetCreateCb( std::function cb ); bool getVisualSplitting() const; + void setVisualSplitting( bool visualSplitting ); Float getVisualSplitEdgePercent() const; + void setVisualSplitEdgePercent( Float visualSplitEdgePercent ); + UITabWidget* splitTabWidget( SplitDirection, UITabWidget* ); + protected: UISceneNode* mUISceneNode{ nullptr }; std::shared_ptr mThreadPool; @@ -397,8 +403,6 @@ class EE_API UICodeEditorSplitter { UITabWidget* createTabWidget( Node* parent ); - UITabWidget* splitTabWidget( SplitDirection, UITabWidget* ); - void updateTabWidgetVisualSplitting(); }; diff --git a/src/eepp/ui/iconmanager.cpp b/src/eepp/ui/iconmanager.cpp index 5f66b34f3..b55300700 100644 --- a/src/eepp/ui/iconmanager.cpp +++ b/src/eepp/ui/iconmanager.cpp @@ -96,6 +96,8 @@ UIIconTheme* IconManager::init( const std::string& iconThemeName, FontTrueType* { "stop", 0xF1A0 }, { "text-wrap", 0xF200 }, { "play-filled", 0xF00A }, + { "code-ai", 0xF56F }, + { "robot-2", 0xF3D9 }, }; for ( const auto& icon : icons ) diff --git a/src/eepp/ui/tools/uicodeeditorsplitter.cpp b/src/eepp/ui/tools/uicodeeditorsplitter.cpp index bcfb5ed29..6bdaa6c15 100644 --- a/src/eepp/ui/tools/uicodeeditorsplitter.cpp +++ b/src/eepp/ui/tools/uicodeeditorsplitter.cpp @@ -856,6 +856,12 @@ void UICodeEditorSplitter::forEachTabWidgetStoppable( return; } +void UICodeEditorSplitter::forEachTab( std::function run ) const { + for ( auto tabWidget : mTabWidgets ) + for ( size_t i = 0; i < tabWidget->getTabCount(); i++ ) + run( tabWidget->getTab( i ) ); +} + void UICodeEditorSplitter::forEachEditorStoppable( std::function run ) const { for ( auto tabWidget : mTabWidgets ) { @@ -1336,7 +1342,9 @@ void UICodeEditorSplitter::focusSomeEditor( Node* searchFrom ) { : nullptr ); UITabWidget* tabW = nullptr; - if ( editor && ( tabW = tabWidgetFromEditor( editor ) ) && !tabW->isClosing() && + if ( editor && editor->getParent() && editor->getParent()->getParent() && + editor->getParent()->getParent()->isType( UI_TYPE_TABWIDGET ) && + ( tabW = tabWidgetFromEditor( editor ) ) && !tabW->isClosing() && tabW->getTabCount() > 1 ) { if ( tabW && tabW->getTabSelected()->getOwnedWidget() != editor ) { tabW->setTabSelected( tabW->getTabSelected() ); diff --git a/src/tools/ecode/appconfig.cpp b/src/tools/ecode/appconfig.cpp index 3ff4bd463..aaa8e149e 100644 --- a/src/tools/ecode/appconfig.cpp +++ b/src/tools/ecode/appconfig.cpp @@ -9,6 +9,8 @@ #include #include +#include + using namespace EE::Network; using namespace eterm::UI; using json = nlohmann::json; @@ -397,7 +399,7 @@ struct ProjectPath { } }; -json saveNode( Node* node ) { +json AppConfig::saveNode( Node* node ) { json res; if ( node->isType( UI_TYPE_SPLITTER ) ) { UISplitter* splitter = node->asType(); @@ -435,6 +437,18 @@ json saveNode( Node* node ) { if ( term->isUsingCustomTitle() ) f["title"] = term->getTitle(); files.emplace_back( f ); + } else if ( node->isWidget() ) { + UIWidget* widget = ownedWidget->asType(); + if ( widget->getClasses().size() == 1 ) { + auto found = tabWidgetTypes.find( widget->getClasses()[0] ); + if ( found != tabWidgetTypes.end() ) { + auto f = found->second.onSave( widget ); + f["type"] = found->first; + if ( !f.contains( "title" ) || !f["title"].is_string() ) + f["title"] = tabWidget->getTab( i )->getText(); + files.emplace_back( f ); + } + } } } res["type"] = "tabwidget"; @@ -675,6 +689,19 @@ void AppConfig::loadDocuments( UICodeEditorSplitter* editorSplitter, json j, if ( curTabWidget->getTabCount() == totalToLoad ) curTabWidget->setTabSelected( eeclamp( currentPage, 0, curTabWidget->getTabCount() - 1 ) ); + } else { + auto found = tabWidgetTypes.find( file["type"] ); + if ( found != tabWidgetTypes.end() ) { + auto widget = found->second.onLoad( file ); + + editorSplitter->createWidgetInTabWidget( + curTabWidget, widget, file.contains( "title" ) ? file["title"] : "" ); + editorSplitter->removeUnusedTab( curTabWidget, true, false ); + + if ( curTabWidget->getTabCount() == totalToLoad ) + curTabWidget->setTabSelected( + eeclamp( currentPage, 0, curTabWidget->getTabCount() - 1 ) ); + } } } } else if ( j["type"] == "splitter" ) { diff --git a/src/tools/ecode/appconfig.hpp b/src/tools/ecode/appconfig.hpp index 2e5f7a264..eca4de4e0 100644 --- a/src/tools/ecode/appconfig.hpp +++ b/src/tools/ecode/appconfig.hpp @@ -9,8 +9,7 @@ #include #include -#include -using json = nlohmann::json; +#include using namespace EE; using namespace EE::Math; @@ -189,6 +188,11 @@ struct SessionSnapshotFile { std::string selection; }; +struct TabWidgetCbs { + std::function onSave; + std::function onLoad; +}; + class AppConfig { public: WindowStateConfig windowState; @@ -227,14 +231,29 @@ class AppConfig { const std::string& configPath, ProjectDocumentConfig& docConfig, ecode::App* app, bool sessionSnapshot, PluginManager* pluginManager ); + void addTabWidgetType( const std::string& type, TabWidgetCbs tabWidget ) { + Lock l( tabWidgetTypesMutex ); + tabWidgetTypes[type] = tabWidget; + } + + void removeTabWidgetType( const std::string& type ) { + Lock l( tabWidgetTypesMutex ); + tabWidgetTypes.erase( type ); + } + protected: Int64 editorsToLoad{ 0 }; - void loadDocuments( UICodeEditorSplitter* editorSplitter, json j, UITabWidget* curTabWidget, - ecode::App* app, + void loadDocuments( UICodeEditorSplitter* editorSplitter, nlohmann::json j, + UITabWidget* curTabWidget, ecode::App* app, const std::vector& sessionSnapshotFiles ); void editorLoadedCounter( ecode::App* app ); + + nlohmann::json saveNode( Node* node ); + + Mutex tabWidgetTypesMutex; + std::unordered_map tabWidgetTypes; }; } // namespace ecode diff --git a/src/tools/ecode/ecode.cpp b/src/tools/ecode/ecode.cpp index 3ce52d878..91e7503a9 100644 --- a/src/tools/ecode/ecode.cpp +++ b/src/tools/ecode/ecode.cpp @@ -1959,6 +1959,8 @@ void App::closeEditors() { widget->asType()->getTab()->removeTab( true, true ); } ); + mSplitter->forEachTab( []( UITab* tab ) { tab->removeTab( true, true ); } ); + mCurrentProject = ""; mCurrentProjectName = ""; mDirTree = nullptr; diff --git a/src/tools/ecode/plugins/aiassistant/aiassistantplugin.cpp b/src/tools/ecode/plugins/aiassistant/aiassistantplugin.cpp index be7fd1a76..4e8e5e9fe 100644 --- a/src/tools/ecode/plugins/aiassistant/aiassistantplugin.cpp +++ b/src/tools/ecode/plugins/aiassistant/aiassistantplugin.cpp @@ -2,6 +2,7 @@ #include "chatui.hpp" #include "protocol.hpp" +#include "../../appconfig.hpp" #include "../../widgetcommandexecuter.hpp" #include @@ -109,6 +110,10 @@ AIAssistantPlugin::AIAssistantPlugin( PluginManager* pluginManager, bool sync ) AIAssistantPlugin::~AIAssistantPlugin() { waitUntilLoaded(); mShuttingDown = true; + if ( mStatusButton ) + mStatusButton->close(); + + getPluginContext()->getConfig().removeTabWidgetType( "llm_chatui" ); } void AIAssistantPlugin::load( PluginManager* pluginManager ) { @@ -142,6 +147,18 @@ void AIAssistantPlugin::load( PluginManager* pluginManager ) { subscribeFileSystemListener(); mReady = !mProviders.empty(); + + TabWidgetCbs config; + config.onLoad = [this]( const nlohmann::json& j ) { + return ( eeNew( ChatUI, ( getUISceneNode(), mProviders ) ) )->getChatUI(); + }; + config.onSave = []( UIWidget* widget ) { + nlohmann::json j; + return j; + }; + + getPluginContext()->getConfig().addTabWidgetType( "llm_chatui", config ); + if ( mReady ) { fireReadyCbs(); setReady( clock.getElapsedTime() ); @@ -206,16 +223,23 @@ void AIAssistantPlugin::loadAIAssistantConfig( const std::string& path, bool upd for ( const auto& [key, value] : providers ) mProviders.insert_or_assign( key, value ); } + + if ( getUISceneNode() ) + initUI(); +} + +void AIAssistantPlugin::newAIAssistant() { + auto splitter = getPluginContext()->getSplitter(); + auto chatUI = eeNew( ChatUI, ( getUISceneNode(), mProviders ) ); + auto tabName( i18n( "ai_assistant", "AI Assistant" ) ); + UITabWidget* tabWidget = splitter->getTabWidgets()[splitter->getTabWidgets().size() - 1]; + if ( !splitter->hasSplit() ) + tabWidget = splitter->splitTabWidget( SplitDirection::Right, tabWidget ); + splitter->createWidgetInTabWidget( tabWidget, chatUI->getChatUI(), tabName ); } void AIAssistantPlugin::onRegisterDocument( TextDocument* doc ) { - doc->setCommand( "new-ai-assistant", [this] { - auto splitter = getPluginContext()->getSplitter(); - auto chatUI = eeNew( ChatUI, ( getPluginContext()->getUISceneNode(), mProviders ) ); - if ( !splitter->hasSplit() ) - splitter->split( SplitDirection::Right, splitter->getCurWidget(), false ); - splitter->createWidget( chatUI->getChatUI(), i18n( "ai_assistant", "AI Assistant" ) ); - } ); + doc->setCommand( "new-ai-assistant", [this] { newAIAssistant(); } ); } void AIAssistantPlugin::onRegisterEditor( UICodeEditor* editor ) { @@ -235,8 +259,8 @@ PluginRequestHandle AIAssistantPlugin::processMessage( const PluginMessage& msg kb.first ); } - // if ( !mInitialized ) - // updateUI(); + if ( !mUIInit ) + initUI(); break; } @@ -246,4 +270,27 @@ PluginRequestHandle AIAssistantPlugin::processMessage( const PluginMessage& msg return PluginRequestHandle::empty(); } +void AIAssistantPlugin::initUI() { + mUIInit = true; + + getPluginContext()->getMainLayout()->setCommand( "new-ai-assistant", + [this] { newAIAssistant(); } ); + + if ( !mStatusBar ) + getUISceneNode()->bind( "status_bar", mStatusBar ); + if ( !mStatusBar ) + return; + + if ( !mStatusButton ) { + mStatusButton = UIPushButton::New(); + mStatusButton->setLayoutSizePolicy( SizePolicy::WrapContent, SizePolicy::MatchParent ); + mStatusButton->setParent( mStatusBar ); + mStatusButton->setId( "ai_assistant_but" ); + mStatusButton->setClass( "status_but" ); + mStatusButton->setIcon( iconDrawable( "code-ai", 14 ) ); + mStatusButton->setTooltipText( i18n( "ai_assistant", "AI Assistant" ) ); + mStatusButton->on( Event::MouseClick, [this]( const Event* event ) { newAIAssistant(); } ); + } +} + } // namespace ecode diff --git a/src/tools/ecode/plugins/aiassistant/aiassistantplugin.hpp b/src/tools/ecode/plugins/aiassistant/aiassistantplugin.hpp index 5f49a0f25..7f60b451c 100644 --- a/src/tools/ecode/plugins/aiassistant/aiassistantplugin.hpp +++ b/src/tools/ecode/plugins/aiassistant/aiassistantplugin.hpp @@ -27,6 +27,9 @@ class AIAssistantPlugin : public PluginBase { protected: LLMProviders mProviders; + bool mUIInit{ false }; + UIWidget* mStatusBar{ nullptr }; + UIPushButton* mStatusButton{ nullptr }; AIAssistantPlugin( PluginManager* pluginManager, bool sync ); @@ -41,6 +44,10 @@ class AIAssistantPlugin : public PluginBase { void onUnregisterEditor( UICodeEditor* editor ) override; void onRegisterDocument( TextDocument* doc ) override; + + void initUI(); + + void newAIAssistant(); }; } // namespace ecode diff --git a/src/tools/ecode/plugins/aiassistant/chatui.cpp b/src/tools/ecode/plugins/aiassistant/chatui.cpp index 5ce83399b..f5bc3fd73 100644 --- a/src/tools/ecode/plugins/aiassistant/chatui.cpp +++ b/src/tools/ecode/plugins/aiassistant/chatui.cpp @@ -118,7 +118,7 @@ PushButton.llm_button.primary { text-as-fallback: false; } - + @@ -146,8 +146,8 @@ static const char* DEFAULT_CHAT_GLOBE = R"xml( - @string(User, user) - @string(Assistant, assistant) + @string(user, User) + @string(assistant, Assistant) @string(system, System) @@ -162,6 +162,9 @@ ChatUI::ChatUI( UISceneNode* ui, LLMProviders providers ) { setProviders( std::move( providers ) ); mChatUI = ui->loadLayoutFromString( DEFAULT_LAYOUT ); + + mChatUI->on( Event::OnFocus, [this]( auto ) { mChatInput->setFocus(); } ); + mChatsList = mChatUI->findByClass( "llm_chats" ); mModelDDL = mChatUI->findByClass( "model_ui" ); @@ -173,6 +176,7 @@ ChatUI::ChatUI( UISceneNode* ui, LLMProviders providers ) { mChatScrollView->getVerticalScrollBar()->setValue( 1 ); mChatInput = mChatUI->findByClass( "llm_chat_input" ); + mChatInput->setData( reinterpret_cast( this ) ); mChatInput->getKeyBindings().addKeybindString( "mod+return", "prompt" ); mChatInput->getKeyBindings().addKeybindString( "mod+keypad enter", "prompt" ); @@ -362,7 +366,7 @@ void ChatUI::resizeToFit( UICodeEditor* editor ) { editor->setPixelsSize( editor->getPixelsSize().getWidth(), height ); } -nlohmann::json ChatUI::chatToJson( const std::string& /*provider*/ ) { +nlohmann::json ChatUI::chatToJson() { auto j = nlohmann::json::array(); auto chats = mChatUI->findAllByClass( "llm_conversation" ); for ( const auto& chat : chats ) { @@ -380,10 +384,9 @@ nlohmann::json ChatUI::chatToJson( const std::string& /*provider*/ ) { return j; } -nlohmann::json ChatUI::serialize( const std::string& /*provider*/ ) { - nlohmann::json j = { { "model", mCurModel.name }, - { "stream", true }, - { "messages", chatToJson( mCurModel.provider ) } }; +nlohmann::json ChatUI::serialize() { + nlohmann::json j = { + { "model", mCurModel.name }, { "stream", true }, { "messages", chatToJson() } }; if ( mCurModel.maxOutputTokens ) j["max_tokens"] = *mCurModel.maxOutputTokens; return j; @@ -446,8 +449,7 @@ void ChatUI::doRequest() { auto* editor = chat->findByClass( "data_ui" ); mRequest = std::make_unique( prepareApiUrl( apiKeyStr ), apiKeyStr, - serialize( mCurModel.provider ).dump(), - mCurModel.provider ); + serialize().dump(), mCurModel.provider ); mRequest->streamedResponseCb = [this, editor]( const std::string& chunk ) { auto conversation = chunk; editor->runOnMainThread( [this, conversation = std::move( conversation ), editor] { diff --git a/src/tools/ecode/plugins/aiassistant/chatui.hpp b/src/tools/ecode/plugins/aiassistant/chatui.hpp index 6c545aacc..5db927213 100644 --- a/src/tools/ecode/plugins/aiassistant/chatui.hpp +++ b/src/tools/ecode/plugins/aiassistant/chatui.hpp @@ -42,7 +42,7 @@ class ChatUI { public: ChatUI( UISceneNode* ui, LLMProviders providers ); - nlohmann::json serialize( const std::string& /*provider*/ ); + nlohmann::json serialize(); void unserialize( const nlohmann::json& /*payload*/ ); @@ -66,7 +66,7 @@ class ChatUI { void showMsg( String msg ); - nlohmann::json chatToJson( const std::string& /*provider*/ ); + nlohmann::json chatToJson(); std::string prepareApiUrl( const std::string& apiKey ); diff --git a/src/tools/ecode/plugins/plugincontextprovider.hpp b/src/tools/ecode/plugins/plugincontextprovider.hpp index 3b5d4b69f..63e8aa82f 100644 --- a/src/tools/ecode/plugins/plugincontextprovider.hpp +++ b/src/tools/ecode/plugins/plugincontextprovider.hpp @@ -129,7 +129,7 @@ class PluginContextProvider { virtual std::string getDefaultFileDialogFolder() const = 0; - virtual const AppConfig& getConfig() const = 0; + virtual AppConfig& getConfig() = 0; }; } // namespace ecode diff --git a/src/tools/ecode/projectbuild.hpp b/src/tools/ecode/projectbuild.hpp index 6a1d3b7d5..9e4c21620 100644 --- a/src/tools/ecode/projectbuild.hpp +++ b/src/tools/ecode/projectbuild.hpp @@ -215,9 +215,9 @@ class ProjectBuild { ProjectBuildSteps replaceVars( const ProjectBuildSteps& steps ) const; - static json serialize( const ProjectBuild::Map& builds ); + static nlohmann::json serialize( const ProjectBuild::Map& builds ); - static ProjectBuild::Map deserialize( const json& j, const std::string& projectRoot ); + static ProjectBuild::Map deserialize( const nlohmann::json& j, const std::string& projectRoot ); protected: friend class ProjectBuildManager; diff --git a/src/tools/ecode/settingsactions.cpp b/src/tools/ecode/settingsactions.cpp index 4f4a1299d..7acf76a8d 100644 --- a/src/tools/ecode/settingsactions.cpp +++ b/src/tools/ecode/settingsactions.cpp @@ -43,9 +43,9 @@ void SettingsActions::checkForUpdatesResponse( Http::Response response, bool fro } ); }; - json j; + nlohmann::json j; try { - j = json::parse( response.getBody(), nullptr, true, true ); + j = nlohmann::json::parse( response.getBody(), nullptr, true, true ); if ( j.contains( "tag_name" ) ) { auto tagName( j["tag_name"].get() ); diff --git a/src/tools/ecode/universallocator.cpp b/src/tools/ecode/universallocator.cpp index e724d6395..5887c089b 100644 --- a/src/tools/ecode/universallocator.cpp +++ b/src/tools/ecode/universallocator.cpp @@ -978,7 +978,7 @@ std::shared_ptr UniversalLocator::emptyModel( const String& } bool UniversalLocator::findCapability( PluginCapability capability ) { - json capa; + nlohmann::json capa; capa["capability"] = capability; capa["uri"] = getCurDocURI(); PluginRequestHandle resp = mApp->getPluginManager()->sendRequest( @@ -996,7 +996,7 @@ String UniversalLocator::getDefQueryText( PluginCapability capability ) { } nlohmann::json UniversalLocator::pluginID( const PluginIDType& id ) { - json r; + nlohmann::json r; r["uri"] = getCurDocURI(); if ( id.isInteger() ) r["id"] = id.asInt(); @@ -1019,13 +1019,13 @@ void UniversalLocator::requestWorkspaceSymbol() { mLocateTable->setModel( mWorkspaceSymbolModel ); if ( mQueryWorkspaceLastId.isValid() ) { - json r( pluginID( mQueryWorkspaceLastId ) ); + nlohmann::json r( pluginID( mQueryWorkspaceLastId ) ); mApp->getPluginManager()->sendBroadcast( PluginMessageType::CancelRequest, PluginMessageFormat::JSON, &r ); } mApp->getThreadPool()->run( [this] { - json j; + nlohmann::json j; j["query"] = mWorkspaceSymbolQuery; auto hdl = mApp->getPluginManager()->sendRequest( PluginMessageType::WorkspaceSymbol, PluginMessageFormat::JSON, &j ); @@ -1070,7 +1070,7 @@ void UniversalLocator::requestDocumentSymbol() { emptyModel( getDefQueryText( PluginCapability::TextDocumentSymbol ) ); mLocateTable->setModel( mTextDocumentSymbolModel ); - json j; + nlohmann::json j; j["uri"] = mCurDocURI = getCurDocURI(); auto hdl = mApp->getPluginManager()->sendRequest( PluginMessageType::TextDocumentFlattenSymbol, PluginMessageFormat::JSON, &j );