From 34d4f2c517a51a1c94dba9f309fc64073c61a516 Mon Sep 17 00:00:00 2001 From: Petr Mironychev <9195189+Palm1r@users.noreply.github.com> Date: Tue, 14 Jul 2026 02:50:43 +0200 Subject: [PATCH] refactor: Restructure project into sources/tests layout and dissolve PluginLLMCore --- .github/workflows/build_cmake.yml | 2 +- CMakeLists.txt | 201 +++++++++--------- pluginllmcore/CMakeLists.txt | 29 --- sources/CMakeLists.txt | 5 + .../ChatView}/AgentRoleController.cpp | 0 .../ChatView}/AgentRoleController.hpp | 0 {ChatView => sources/ChatView}/CMakeLists.txt | 3 +- .../ChatView}/ChatCompressor.cpp | 20 +- .../ChatView}/ChatCompressor.hpp | 11 +- .../ChatView}/ChatConfigurationController.cpp | 0 .../ChatView}/ChatConfigurationController.hpp | 0 {ChatView => sources/ChatView}/ChatData.hpp | 0 .../ChatView}/ChatFileManager.cpp | 0 .../ChatView}/ChatFileManager.hpp | 0 .../ChatView}/ChatHistoryStore.cpp | 0 .../ChatView}/ChatHistoryStore.hpp | 0 {ChatView => sources/ChatView}/ChatModel.cpp | 0 {ChatView => sources/ChatView}/ChatModel.hpp | 2 +- .../ChatView}/ChatRootView.cpp | 22 +- .../ChatView}/ChatRootView.hpp | 4 +- .../ChatView}/ChatSerializer.cpp | 0 .../ChatView}/ChatSerializer.hpp | 0 {ChatView => sources/ChatView}/ChatUtils.cpp | 0 {ChatView => sources/ChatView}/ChatUtils.h | 0 {ChatView => sources/ChatView}/ChatView.cpp | 4 +- {ChatView => sources/ChatView}/ChatView.hpp | 0 {ChatView => sources/ChatView}/ChatWidget.cpp | 4 +- {ChatView => sources/ChatView}/ChatWidget.hpp | 0 .../ChatView}/ClientInterface.cpp | 50 ++--- .../ChatView}/ClientInterface.hpp | 12 +- .../ChatView}/FileEditController.cpp | 0 .../ChatView}/FileEditController.hpp | 0 {ChatView => sources/ChatView}/FileItem.cpp | 0 {ChatView => sources/ChatView}/FileItem.hpp | 0 .../ChatView}/FileMentionItem.cpp | 0 .../ChatView}/FileMentionItem.hpp | 0 .../ChatView}/InputTokenCounter.cpp | 6 +- .../ChatView}/InputTokenCounter.hpp | 0 .../ChatView}/MessagePart.hpp | 0 .../ChatView}/SessionFileRegistry.cpp | 0 .../ChatView}/SessionFileRegistry.hpp | 0 .../ChatView}/icons/apply-changes-button.svg | 0 .../ChatView}/icons/attach-file-dark.svg | 0 .../ChatView}/icons/attach-file-light.svg | 0 .../ChatView}/icons/chat-icon.svg | 0 .../ChatView}/icons/chat-pause-icon.svg | 0 .../ChatView}/icons/clean-icon-dark.svg | 0 .../ChatView}/icons/close-dark.svg | 0 .../ChatView}/icons/close-light.svg | 0 .../ChatView}/icons/compress-icon.svg | 0 .../ChatView}/icons/context-icon.svg | 0 .../ChatView}/icons/file-in-system.svg | 0 .../ChatView}/icons/image-dark.svg | 0 .../ChatView}/icons/link-file-dark.svg | 0 .../ChatView}/icons/link-file-light.svg | 0 .../ChatView}/icons/load-chat-dark.svg | 0 .../ChatView}/icons/new-chat-icon.svg | 0 .../ChatView}/icons/open-in-code.svg | 0 .../ChatView}/icons/open-in-editor.svg | 0 .../ChatView}/icons/open-in-window.svg | 0 .../ChatView}/icons/reject-changes-button.svg | 0 .../ChatView}/icons/rules-icon.svg | 0 .../ChatView}/icons/save-chat-dark.svg | 0 .../ChatView}/icons/settings-icon.svg | 0 .../ChatView}/icons/thinking-icon-off.svg | 0 .../ChatView}/icons/thinking-icon-on.svg | 0 .../ChatView}/icons/tools-icon-off.svg | 0 .../ChatView}/icons/tools-icon-on.svg | 0 .../ChatView}/icons/undo-changes-button.svg | 0 .../ChatView}/icons/warning-icon.svg | 0 .../ChatView}/icons/window-lock.svg | 0 .../ChatView}/icons/window-unlock.svg | 0 .../ChatView}/qml/RootItem.qml | 0 .../ChatView}/qml/chatparts/ChatItem.qml | 0 .../ChatView}/qml/chatparts/CodeBlock.qml | 0 .../ChatView}/qml/chatparts/FileEditBlock.qml | 0 .../ChatView}/qml/chatparts/TextBlock.qml | 0 .../ChatView}/qml/chatparts/ThinkingBlock.qml | 0 .../ChatView}/qml/chatparts/ToolBlock.qml | 0 .../qml/controls/AttachedFilesPlace.qml | 0 .../ChatView}/qml/controls/BottomBar.qml | 0 .../ChatView}/qml/controls/ContextViewer.qml | 0 .../qml/controls/FileEditsActionBar.qml | 0 .../qml/controls/FileMentionPopup.qml | 0 .../qml/controls/MessageNavigator.qml | 0 .../qml/controls/SkillCommandPopup.qml | 0 .../ChatView}/qml/controls/SplitDropZone.qml | 0 .../ChatView}/qml/controls/Toast.qml | 0 .../ChatView}/qml/controls/TopBar.qml | 0 .../UIControls}/CMakeLists.txt | 0 .../UIControls}/icons/dropdown-arrow-dark.svg | 0 .../icons/dropdown-arrow-light.svg | 0 .../UIControls}/qml/Badge.qml | 0 .../UIControls}/qml/FadeListItemAnimation.qml | 0 .../UIControls}/qml/QoABusyIndicator.qml | 0 .../UIControls}/qml/QoABusyOverlay.qml | 0 .../UIControls}/qml/QoAButton.qml | 0 .../UIControls}/qml/QoAComboBox.qml | 0 .../UIControls}/qml/QoASeparator.qml | 0 .../UIControls}/qml/QoATextSlider.qml | 0 .../UIControls}/qml/QoAToolTip.qml | 0 {chat => sources/chat}/ChatDocument.cpp | 4 +- {chat => sources/chat}/ChatDocument.hpp | 0 {chat => sources/chat}/ChatEditor.cpp | 4 +- {chat => sources/chat}/ChatEditor.hpp | 0 {chat => sources/chat}/ChatEditorFactory.cpp | 4 +- {chat => sources/chat}/ChatEditorFactory.hpp | 0 {chat => sources/chat}/ChatOutputPane.cpp | 2 +- {chat => sources/chat}/ChatOutputPane.h | 0 {chat => sources/chat}/NavigationPanel.cpp | 4 +- {chat => sources/chat}/NavigationPanel.hpp | 0 .../completion/CodeHandler.cpp | 2 +- .../completion/CodeHandler.hpp | 0 .../completion/LLMClientInterface.cpp | 32 +-- .../completion/LLMClientInterface.hpp | 20 +- .../completion/LLMSuggestion.cpp | 2 +- .../completion/LLMSuggestion.hpp | 0 .../completion/LSPCompletion.hpp | 0 .../completion/QodeAssistClient.cpp | 12 +- .../completion/QodeAssistClient.hpp | 12 +- {context => sources/context}/CMakeLists.txt | 5 +- .../context}/ChangesManager.cpp | 0 {context => sources/context}/ChangesManager.h | 0 {context => sources/context}/ContentFile.hpp | 0 .../context}/ContextManager.cpp | 0 .../context}/ContextManager.hpp | 0 .../context}/DocumentContextReader.cpp | 2 +- .../context}/DocumentContextReader.hpp | 4 +- .../context}/DocumentReaderQtCreator.hpp | 0 .../context}/IContextManager.hpp | 0 .../context}/IDocumentReader.hpp | 0 .../context}/IgnoreManager.cpp | 0 .../context}/IgnoreManager.hpp | 0 .../context}/ProgrammingLanguage.cpp | 0 .../context}/ProgrammingLanguage.hpp | 0 {context => sources/context}/ProjectUtils.cpp | 0 {context => sources/context}/ProjectUtils.hpp | 0 .../context}/RulesLoader.cpp | 6 +- .../context}/RulesLoader.hpp | 4 +- {context => sources/context}/TokenUtils.cpp | 0 {context => sources/context}/TokenUtils.hpp | 0 {context => sources/context}/Utils.hpp | 0 .../llmcore}/ContextData.hpp | 4 +- .../llmcore}/RequestType.hpp | 2 +- {logger => sources/logger}/CMakeLists.txt | 0 .../logger}/IRequestPerformanceLogger.hpp | 0 {logger => sources/logger}/Logger.cpp | 0 {logger => sources/logger}/Logger.hpp | 0 .../logger}/RequestPerformanceLogger.cpp | 0 .../logger}/RequestPerformanceLogger.hpp | 0 {mcp => sources/mcp}/McpClientsManager.cpp | 12 +- {mcp => sources/mcp}/McpClientsManager.hpp | 2 +- {mcp => sources/mcp}/McpServerConnection.cpp | 8 +- {mcp => sources/mcp}/McpServerConnection.hpp | 6 +- {mcp => sources/mcp}/McpServerManager.cpp | 0 {mcp => sources/mcp}/McpServerManager.hpp | 0 .../plugin/ConfigurationManager.cpp | 12 +- .../plugin/ConfigurationManager.hpp | 8 +- .../plugin/QodeAssistConstants.hpp | 0 .../plugin/QodeAssisttr.h | 0 .../plugin/UpdateStatusWidget.cpp | 0 .../plugin/UpdateStatusWidget.hpp | 0 Version.hpp => sources/plugin/Version.hpp | 0 .../plugin/qodeassist.cpp | 22 +- .../providers}/ClaudeCacheControl.hpp | 0 .../providers}/ClaudeProvider.cpp | 26 +-- .../providers}/ClaudeProvider.hpp | 14 +- .../providers}/CodestralProvider.cpp | 4 +- .../providers}/CodestralProvider.hpp | 2 +- .../providers}/DeepSeekProvider.cpp | 24 +-- .../providers}/DeepSeekProvider.hpp | 14 +- .../providers}/GoogleAIProvider.cpp | 26 +-- .../providers}/GoogleAIProvider.hpp | 14 +- .../providers}/IProviderRegistry.hpp | 6 +- .../providers}/LMStudioProvider.cpp | 26 +-- .../providers}/LMStudioProvider.hpp | 14 +- .../providers}/LMStudioResponsesProvider.cpp | 26 +-- .../providers}/LMStudioResponsesProvider.hpp | 14 +- .../providers}/LlamaCppProvider.cpp | 24 +-- .../providers}/LlamaCppProvider.hpp | 14 +- .../providers}/MistralAIProvider.cpp | 24 +-- .../providers}/MistralAIProvider.hpp | 14 +- .../providers}/OllamaCompatProvider.cpp | 26 +-- .../providers}/OllamaCompatProvider.hpp | 14 +- .../providers}/OllamaProvider.cpp | 24 +-- .../providers}/OllamaProvider.hpp | 14 +- .../providers}/OpenAICompatProvider.cpp | 22 +- .../providers}/OpenAICompatProvider.hpp | 14 +- .../providers}/OpenAIProvider.cpp | 24 +-- .../providers}/OpenAIProvider.hpp | 14 +- .../providers}/OpenAIResponsesProvider.cpp | 24 +-- .../providers}/OpenAIResponsesProvider.hpp | 14 +- .../providers}/OpenRouterAIProvider.cpp | 4 +- .../providers}/OpenRouterAIProvider.hpp | 2 +- .../providers}/Provider.cpp | 8 +- .../providers}/Provider.hpp | 16 +- .../providers}/ProviderID.hpp | 2 +- .../providers}/ProviderUrlUtils.hpp | 0 .../providers}/Providers.hpp | 4 +- .../providers}/ProvidersManager.cpp | 6 +- .../providers}/ProvidersManager.hpp | 6 +- .../providers}/QwenProvider.cpp | 24 +-- .../providers}/QwenProvider.hpp | 14 +- .../providers}/QwenResponsesProvider.cpp | 22 +- .../providers}/QwenResponsesProvider.hpp | 14 +- .../refactor/QuickRefactorHandler.cpp | 32 +-- .../refactor/QuickRefactorHandler.hpp | 8 +- .../refactor/RefactorContextHelper.hpp | 0 .../refactor/RefactorSuggestion.cpp | 4 +- .../refactor/RefactorSuggestion.hpp | 0 .../RefactorSuggestionHoverHandler.cpp | 4 +- .../RefactorSuggestionHoverHandler.hpp | 0 .../refactor}/ResponseCleaner.hpp | 4 +- {settings => sources/settings}/AgentRole.cpp | 0 {settings => sources/settings}/AgentRole.hpp | 0 .../settings}/AgentRoleDialog.cpp | 0 .../settings}/AgentRoleDialog.hpp | 0 .../settings}/AgentRolesWidget.cpp | 0 .../settings}/AgentRolesWidget.hpp | 0 {settings => sources/settings}/Assisttr.h | 0 .../settings}/ButtonAspect.hpp | 0 {settings => sources/settings}/CMakeLists.txt | 5 +- .../settings}/ChatAssistantSettings.cpp | 0 .../settings}/ChatAssistantSettings.hpp | 0 .../settings}/CodeCompletionSettings.cpp | 0 .../settings}/CodeCompletionSettings.hpp | 0 .../settings}/ConfigurationManager.cpp | 0 .../settings}/ConfigurationManager.hpp | 0 .../settings}/GeneralSettings.cpp | 2 +- .../settings}/GeneralSettings.hpp | 2 +- .../settings}/McpClientsListAspect.cpp | 0 .../settings}/McpClientsListAspect.hpp | 0 .../settings}/McpSettings.cpp | 0 .../settings}/McpSettings.hpp | 0 .../settings}/PluginUpdater.cpp | 0 .../settings}/PluginUpdater.hpp | 0 .../settings}/ProjectSettings.cpp | 0 .../settings}/ProjectSettings.hpp | 0 .../settings}/ProjectSettingsPanel.cpp | 4 +- .../settings}/ProjectSettingsPanel.hpp | 0 .../settings}/ProviderNameMigration.hpp | 0 .../settings}/ProviderSettings.cpp | 0 .../settings}/ProviderSettings.hpp | 0 .../settings}/QuickRefactorSettings.cpp | 0 .../settings}/QuickRefactorSettings.hpp | 0 .../settings}/SettingsConstants.hpp | 0 .../settings}/SettingsDialog.cpp | 0 .../settings}/SettingsDialog.hpp | 0 {settings => sources/settings}/SettingsTr.hpp | 0 .../settings}/SettingsUtils.hpp | 0 .../settings}/SkillsSettings.cpp | 2 +- .../settings}/SkillsSettings.hpp | 0 {settings => sources/settings}/StatusDot.hpp | 0 .../settings}/ToolsSettings.cpp | 0 .../settings}/ToolsSettings.hpp | 0 .../settings}/UpdateDialog.cpp | 0 .../settings}/UpdateDialog.hpp | 0 sources/skills/CMakeLists.txt | 2 +- {templates => sources/templates}/Alpaca.hpp | 20 +- {templates => sources/templates}/ChatML.hpp | 20 +- {templates => sources/templates}/Claude.hpp | 12 +- .../templates}/CodeLlamaFim.hpp | 12 +- .../templates}/CodeLlamaQMLFim.hpp | 12 +- {templates => sources/templates}/GoogleAI.hpp | 12 +- .../templates}/IPromptProvider.hpp | 8 +- {templates => sources/templates}/Llama2.hpp | 20 +- {templates => sources/templates}/Llama3.hpp | 20 +- .../templates}/LlamaCppFim.hpp | 12 +- .../templates}/MistralAI.hpp | 22 +- {templates => sources/templates}/Ollama.hpp | 22 +- {templates => sources/templates}/OpenAI.hpp | 12 +- .../templates}/OpenAICompatible.hpp | 22 +- .../templates}/OpenAIResponses.hpp | 14 +- .../templates}/PromptProviderChat.hpp | 12 +- .../templates}/PromptProviderFim.hpp | 10 +- .../templates}/PromptTemplate.hpp | 12 +- .../templates}/PromptTemplateManager.cpp | 10 +- .../templates}/PromptTemplateManager.hpp | 10 +- .../templates}/Qwen25CoderFIM.hpp | 12 +- .../templates}/Qwen3CoderFIM.hpp | 20 +- .../templates}/StarCoder2Fim.hpp | 12 +- .../templates}/Templates.hpp | 4 +- .../templates}/ToolMessages.hpp | 4 +- {tools => sources/tools}/BuildProjectTool.cpp | 2 +- {tools => sources/tools}/BuildProjectTool.hpp | 0 .../tools}/CreateNewFileTool.cpp | 0 .../tools}/CreateNewFileTool.hpp | 0 {tools => sources/tools}/EditFileTool.cpp | 0 {tools => sources/tools}/EditFileTool.hpp | 0 .../tools}/ExecuteTerminalCommandTool.cpp | 0 .../tools}/ExecuteTerminalCommandTool.hpp | 0 {tools => sources/tools}/FileSearchUtils.cpp | 0 {tools => sources/tools}/FileSearchUtils.hpp | 0 {tools => sources/tools}/FindFileTool.cpp | 0 {tools => sources/tools}/FindFileTool.hpp | 0 .../tools}/GetIssuesListTool.cpp | 2 +- .../tools}/GetIssuesListTool.hpp | 0 .../tools}/ListProjectFilesTool.cpp | 0 .../tools}/ListProjectFilesTool.hpp | 0 .../tools}/ProjectSearchTool.cpp | 0 .../tools}/ProjectSearchTool.hpp | 0 {tools => sources/tools}/ReadFileTool.cpp | 0 {tools => sources/tools}/ReadFileTool.hpp | 0 .../tools}/ReadOriginalHistoryTool.cpp | 0 .../tools}/ReadOriginalHistoryTool.hpp | 0 {tools => sources/tools}/SkillTool.cpp | 4 +- {tools => sources/tools}/SkillTool.hpp | 0 {tools => sources/tools}/TodoTool.cpp | 0 {tools => sources/tools}/TodoTool.hpp | 0 {tools => sources/tools}/ToolExceptions.hpp | 0 .../tools}/ToolsRegistration.cpp | 0 .../tools}/ToolsRegistration.hpp | 0 .../widgets}/AddCustomInstructionDialog.cpp | 2 +- .../widgets}/AddCustomInstructionDialog.hpp | 0 .../widgets}/CompletionErrorHandler.cpp | 0 .../widgets}/CompletionErrorHandler.hpp | 0 .../widgets}/CompletionHintHandler.cpp | 0 .../widgets}/CompletionHintHandler.hpp | 0 .../widgets}/CompletionHintWidget.cpp | 0 .../widgets}/CompletionHintWidget.hpp | 0 .../widgets}/CompletionProgressHandler.cpp | 0 .../widgets}/CompletionProgressHandler.hpp | 0 .../widgets}/ContextExtractor.hpp | 0 .../widgets}/CustomInstructionsManager.cpp | 0 .../widgets}/CustomInstructionsManager.hpp | 0 .../widgets}/DiffStatistics.hpp | 0 .../widgets}/EditorChatButton.cpp | 0 .../widgets}/EditorChatButton.hpp | 0 .../widgets}/EditorChatButtonHandler.cpp | 0 .../widgets}/EditorChatButtonHandler.hpp | 0 {widgets => sources/widgets}/ErrorWidget.cpp | 0 {widgets => sources/widgets}/ErrorWidget.hpp | 0 .../widgets}/ProgressWidget.cpp | 0 .../widgets}/ProgressWidget.hpp | 0 .../widgets}/QuickRefactorDialog.cpp | 2 +- .../widgets}/QuickRefactorDialog.hpp | 0 .../widgets}/RefactorWidget.cpp | 0 .../widgets}/RefactorWidget.hpp | 0 .../widgets}/RefactorWidgetHandler.cpp | 0 .../widgets}/RefactorWidgetHandler.hpp | 0 templates/DeepSeekCoderFim.hpp | 33 --- {test => tests}/CMakeLists.txt | 11 +- {test => tests}/ClaudeCacheControlTest.cpp | 0 {test => tests}/CodeHandlerTest.cpp | 2 +- {test => tests}/DocumentContextReaderTest.cpp | 12 +- {test => tests}/LLMSuggestionTest.cpp | 2 +- {test => tests}/TestUtils.hpp | 6 +- {test => tests}/unittest_main.cpp | 0 348 files changed, 809 insertions(+), 852 deletions(-) delete mode 100644 pluginllmcore/CMakeLists.txt rename {ChatView => sources/ChatView}/AgentRoleController.cpp (100%) rename {ChatView => sources/ChatView}/AgentRoleController.hpp (100%) rename {ChatView => sources/ChatView}/CMakeLists.txt (97%) rename {ChatView => sources/ChatView}/ChatCompressor.cpp (93%) rename {ChatView => sources/ChatView}/ChatCompressor.hpp (85%) rename {ChatView => sources/ChatView}/ChatConfigurationController.cpp (100%) rename {ChatView => sources/ChatView}/ChatConfigurationController.hpp (100%) rename {ChatView => sources/ChatView}/ChatData.hpp (100%) rename {ChatView => sources/ChatView}/ChatFileManager.cpp (100%) rename {ChatView => sources/ChatView}/ChatFileManager.hpp (100%) rename {ChatView => sources/ChatView}/ChatHistoryStore.cpp (100%) rename {ChatView => sources/ChatView}/ChatHistoryStore.hpp (100%) rename {ChatView => sources/ChatView}/ChatModel.cpp (100%) rename {ChatView => sources/ChatView}/ChatModel.hpp (99%) rename {ChatView => sources/ChatView}/ChatRootView.cpp (98%) rename {ChatView => sources/ChatView}/ChatRootView.hpp (99%) rename {ChatView => sources/ChatView}/ChatSerializer.cpp (100%) rename {ChatView => sources/ChatView}/ChatSerializer.hpp (100%) rename {ChatView => sources/ChatView}/ChatUtils.cpp (100%) rename {ChatView => sources/ChatView}/ChatUtils.h (100%) rename {ChatView => sources/ChatView}/ChatView.cpp (97%) rename {ChatView => sources/ChatView}/ChatView.hpp (100%) rename {ChatView => sources/ChatView}/ChatWidget.cpp (97%) rename {ChatView => sources/ChatView}/ChatWidget.hpp (100%) rename {ChatView => sources/ChatView}/ClientInterface.cpp (93%) rename {ChatView => sources/ChatView}/ClientInterface.hpp (88%) rename {ChatView => sources/ChatView}/FileEditController.cpp (100%) rename {ChatView => sources/ChatView}/FileEditController.hpp (100%) rename {ChatView => sources/ChatView}/FileItem.cpp (100%) rename {ChatView => sources/ChatView}/FileItem.hpp (100%) rename {ChatView => sources/ChatView}/FileMentionItem.cpp (100%) rename {ChatView => sources/ChatView}/FileMentionItem.hpp (100%) rename {ChatView => sources/ChatView}/InputTokenCounter.cpp (96%) rename {ChatView => sources/ChatView}/InputTokenCounter.hpp (100%) rename {ChatView => sources/ChatView}/MessagePart.hpp (100%) rename {ChatView => sources/ChatView}/SessionFileRegistry.cpp (100%) rename {ChatView => sources/ChatView}/SessionFileRegistry.hpp (100%) rename {ChatView => sources/ChatView}/icons/apply-changes-button.svg (100%) rename {ChatView => sources/ChatView}/icons/attach-file-dark.svg (100%) rename {ChatView => sources/ChatView}/icons/attach-file-light.svg (100%) rename {ChatView => sources/ChatView}/icons/chat-icon.svg (100%) rename {ChatView => sources/ChatView}/icons/chat-pause-icon.svg (100%) rename {ChatView => sources/ChatView}/icons/clean-icon-dark.svg (100%) rename {ChatView => sources/ChatView}/icons/close-dark.svg (100%) rename {ChatView => sources/ChatView}/icons/close-light.svg (100%) rename {ChatView => sources/ChatView}/icons/compress-icon.svg (100%) rename {ChatView => sources/ChatView}/icons/context-icon.svg (100%) rename {ChatView => sources/ChatView}/icons/file-in-system.svg (100%) rename {ChatView => sources/ChatView}/icons/image-dark.svg (100%) rename {ChatView => sources/ChatView}/icons/link-file-dark.svg (100%) rename {ChatView => sources/ChatView}/icons/link-file-light.svg (100%) rename {ChatView => sources/ChatView}/icons/load-chat-dark.svg (100%) rename {ChatView => sources/ChatView}/icons/new-chat-icon.svg (100%) rename {ChatView => sources/ChatView}/icons/open-in-code.svg (100%) rename {ChatView => sources/ChatView}/icons/open-in-editor.svg (100%) rename {ChatView => sources/ChatView}/icons/open-in-window.svg (100%) rename {ChatView => sources/ChatView}/icons/reject-changes-button.svg (100%) rename {ChatView => sources/ChatView}/icons/rules-icon.svg (100%) rename {ChatView => sources/ChatView}/icons/save-chat-dark.svg (100%) rename {ChatView => sources/ChatView}/icons/settings-icon.svg (100%) rename {ChatView => sources/ChatView}/icons/thinking-icon-off.svg (100%) rename {ChatView => sources/ChatView}/icons/thinking-icon-on.svg (100%) rename {ChatView => sources/ChatView}/icons/tools-icon-off.svg (100%) rename {ChatView => sources/ChatView}/icons/tools-icon-on.svg (100%) rename {ChatView => sources/ChatView}/icons/undo-changes-button.svg (100%) rename {ChatView => sources/ChatView}/icons/warning-icon.svg (100%) rename {ChatView => sources/ChatView}/icons/window-lock.svg (100%) rename {ChatView => sources/ChatView}/icons/window-unlock.svg (100%) rename {ChatView => sources/ChatView}/qml/RootItem.qml (100%) rename {ChatView => sources/ChatView}/qml/chatparts/ChatItem.qml (100%) rename {ChatView => sources/ChatView}/qml/chatparts/CodeBlock.qml (100%) rename {ChatView => sources/ChatView}/qml/chatparts/FileEditBlock.qml (100%) rename {ChatView => sources/ChatView}/qml/chatparts/TextBlock.qml (100%) rename {ChatView => sources/ChatView}/qml/chatparts/ThinkingBlock.qml (100%) rename {ChatView => sources/ChatView}/qml/chatparts/ToolBlock.qml (100%) rename {ChatView => sources/ChatView}/qml/controls/AttachedFilesPlace.qml (100%) rename {ChatView => sources/ChatView}/qml/controls/BottomBar.qml (100%) rename {ChatView => sources/ChatView}/qml/controls/ContextViewer.qml (100%) rename {ChatView => sources/ChatView}/qml/controls/FileEditsActionBar.qml (100%) rename {ChatView => sources/ChatView}/qml/controls/FileMentionPopup.qml (100%) rename {ChatView => sources/ChatView}/qml/controls/MessageNavigator.qml (100%) rename {ChatView => sources/ChatView}/qml/controls/SkillCommandPopup.qml (100%) rename {ChatView => sources/ChatView}/qml/controls/SplitDropZone.qml (100%) rename {ChatView => sources/ChatView}/qml/controls/Toast.qml (100%) rename {ChatView => sources/ChatView}/qml/controls/TopBar.qml (100%) rename {UIControls => sources/UIControls}/CMakeLists.txt (100%) rename {UIControls => sources/UIControls}/icons/dropdown-arrow-dark.svg (100%) rename {UIControls => sources/UIControls}/icons/dropdown-arrow-light.svg (100%) rename {UIControls => sources/UIControls}/qml/Badge.qml (100%) rename {UIControls => sources/UIControls}/qml/FadeListItemAnimation.qml (100%) rename {UIControls => sources/UIControls}/qml/QoABusyIndicator.qml (100%) rename {UIControls => sources/UIControls}/qml/QoABusyOverlay.qml (100%) rename {UIControls => sources/UIControls}/qml/QoAButton.qml (100%) rename {UIControls => sources/UIControls}/qml/QoAComboBox.qml (100%) rename {UIControls => sources/UIControls}/qml/QoASeparator.qml (100%) rename {UIControls => sources/UIControls}/qml/QoATextSlider.qml (100%) rename {UIControls => sources/UIControls}/qml/QoAToolTip.qml (100%) rename {chat => sources/chat}/ChatDocument.cpp (92%) rename {chat => sources/chat}/ChatDocument.hpp (100%) rename {chat => sources/chat}/ChatEditor.cpp (96%) rename {chat => sources/chat}/ChatEditor.hpp (100%) rename {chat => sources/chat}/ChatEditorFactory.cpp (90%) rename {chat => sources/chat}/ChatEditorFactory.hpp (100%) rename {chat => sources/chat}/ChatOutputPane.cpp (97%) rename {chat => sources/chat}/ChatOutputPane.h (100%) rename {chat => sources/chat}/NavigationPanel.cpp (92%) rename {chat => sources/chat}/NavigationPanel.hpp (100%) rename CodeHandler.cpp => sources/completion/CodeHandler.cpp (99%) rename CodeHandler.hpp => sources/completion/CodeHandler.hpp (100%) rename LLMClientInterface.cpp => sources/completion/LLMClientInterface.cpp (93%) rename LLMClientInterface.hpp => sources/completion/LLMClientInterface.hpp (83%) rename LLMSuggestion.cpp => sources/completion/LLMSuggestion.cpp (99%) rename LLMSuggestion.hpp => sources/completion/LLMSuggestion.hpp (100%) rename LSPCompletion.hpp => sources/completion/LSPCompletion.hpp (100%) rename QodeAssistClient.cpp => sources/completion/QodeAssistClient.cpp (98%) rename QodeAssistClient.hpp => sources/completion/QodeAssistClient.hpp (90%) rename {context => sources/context}/CMakeLists.txt (88%) rename {context => sources/context}/ChangesManager.cpp (100%) rename {context => sources/context}/ChangesManager.h (100%) rename {context => sources/context}/ContentFile.hpp (100%) rename {context => sources/context}/ContextManager.cpp (100%) rename {context => sources/context}/ContextManager.hpp (100%) rename {context => sources/context}/DocumentContextReader.cpp (99%) rename {context => sources/context}/DocumentContextReader.hpp (96%) rename {context => sources/context}/DocumentReaderQtCreator.hpp (100%) rename {context => sources/context}/IContextManager.hpp (100%) rename {context => sources/context}/IDocumentReader.hpp (100%) rename {context => sources/context}/IgnoreManager.cpp (100%) rename {context => sources/context}/IgnoreManager.hpp (100%) rename {context => sources/context}/ProgrammingLanguage.cpp (100%) rename {context => sources/context}/ProgrammingLanguage.hpp (100%) rename {context => sources/context}/ProjectUtils.cpp (100%) rename {context => sources/context}/ProjectUtils.hpp (100%) rename {pluginllmcore => sources/context}/RulesLoader.cpp (97%) rename {pluginllmcore => sources/context}/RulesLoader.hpp (94%) rename {context => sources/context}/TokenUtils.cpp (100%) rename {context => sources/context}/TokenUtils.hpp (100%) rename {context => sources/context}/Utils.hpp (100%) rename {pluginllmcore => sources/llmcore}/ContextData.hpp (95%) rename {pluginllmcore => sources/llmcore}/RequestType.hpp (87%) rename {logger => sources/logger}/CMakeLists.txt (100%) rename {logger => sources/logger}/IRequestPerformanceLogger.hpp (100%) rename {logger => sources/logger}/Logger.cpp (100%) rename {logger => sources/logger}/Logger.hpp (100%) rename {logger => sources/logger}/RequestPerformanceLogger.cpp (100%) rename {logger => sources/logger}/RequestPerformanceLogger.hpp (100%) rename {mcp => sources/mcp}/McpClientsManager.cpp (96%) rename {mcp => sources/mcp}/McpClientsManager.hpp (95%) rename {mcp => sources/mcp}/McpServerConnection.cpp (98%) rename {mcp => sources/mcp}/McpServerConnection.hpp (93%) rename {mcp => sources/mcp}/McpServerManager.cpp (100%) rename {mcp => sources/mcp}/McpServerManager.hpp (100%) rename ConfigurationManager.cpp => sources/plugin/ConfigurationManager.cpp (95%) rename ConfigurationManager.hpp => sources/plugin/ConfigurationManager.hpp (83%) rename QodeAssistConstants.hpp => sources/plugin/QodeAssistConstants.hpp (100%) rename QodeAssisttr.h => sources/plugin/QodeAssisttr.h (100%) rename UpdateStatusWidget.cpp => sources/plugin/UpdateStatusWidget.cpp (100%) rename UpdateStatusWidget.hpp => sources/plugin/UpdateStatusWidget.hpp (100%) rename Version.hpp => sources/plugin/Version.hpp (100%) rename qodeassist.cpp => sources/plugin/qodeassist.cpp (97%) rename {providers => sources/providers}/ClaudeCacheControl.hpp (100%) rename {providers => sources/providers}/ClaudeProvider.cpp (85%) rename {providers => sources/providers}/ClaudeProvider.hpp (68%) rename {providers => sources/providers}/CodestralProvider.cpp (79%) rename {providers => sources/providers}/CodestralProvider.hpp (87%) rename {providers => sources/providers}/DeepSeekProvider.cpp (80%) rename {providers => sources/providers}/DeepSeekProvider.hpp (68%) rename {providers => sources/providers}/GoogleAIProvider.cpp (84%) rename {providers => sources/providers}/GoogleAIProvider.hpp (71%) rename {pluginllmcore => sources/providers}/IProviderRegistry.hpp (79%) rename {providers => sources/providers}/LMStudioProvider.cpp (80%) rename {providers => sources/providers}/LMStudioProvider.hpp (71%) rename {providers => sources/providers}/LMStudioResponsesProvider.cpp (82%) rename {providers => sources/providers}/LMStudioResponsesProvider.hpp (71%) rename {providers => sources/providers}/LlamaCppProvider.cpp (83%) rename {providers => sources/providers}/LlamaCppProvider.hpp (68%) rename {providers => sources/providers}/MistralAIProvider.cpp (80%) rename {providers => sources/providers}/MistralAIProvider.hpp (68%) rename {providers => sources/providers}/OllamaCompatProvider.cpp (80%) rename {providers => sources/providers}/OllamaCompatProvider.hpp (71%) rename {providers => sources/providers}/OllamaProvider.cpp (84%) rename {providers => sources/providers}/OllamaProvider.hpp (68%) rename {providers => sources/providers}/OpenAICompatProvider.cpp (81%) rename {providers => sources/providers}/OpenAICompatProvider.hpp (68%) rename {providers => sources/providers}/OpenAIProvider.cpp (85%) rename {providers => sources/providers}/OpenAIProvider.hpp (68%) rename {providers => sources/providers}/OpenAIResponsesProvider.cpp (84%) rename {providers => sources/providers}/OpenAIResponsesProvider.hpp (68%) rename {providers => sources/providers}/OpenRouterAIProvider.cpp (87%) rename {providers => sources/providers}/OpenRouterAIProvider.hpp (90%) rename {pluginllmcore => sources/providers}/Provider.cpp (89%) rename {pluginllmcore => sources/providers}/Provider.hpp (83%) rename {pluginllmcore => sources/providers}/ProviderID.hpp (90%) rename {providers => sources/providers}/ProviderUrlUtils.hpp (100%) rename {providers => sources/providers}/Providers.hpp (94%) rename {pluginllmcore => sources/providers}/ProvidersManager.cpp (84%) rename {pluginllmcore => sources/providers}/ProvidersManager.hpp (89%) rename {providers => sources/providers}/QwenProvider.cpp (80%) rename {providers => sources/providers}/QwenProvider.hpp (68%) rename {providers => sources/providers}/QwenResponsesProvider.cpp (83%) rename {providers => sources/providers}/QwenResponsesProvider.hpp (69%) rename QuickRefactorHandler.cpp => sources/refactor/QuickRefactorHandler.cpp (94%) rename QuickRefactorHandler.hpp => sources/refactor/QuickRefactorHandler.hpp (92%) rename RefactorContextHelper.hpp => sources/refactor/RefactorContextHelper.hpp (100%) rename RefactorSuggestion.cpp => sources/refactor/RefactorSuggestion.cpp (98%) rename RefactorSuggestion.hpp => sources/refactor/RefactorSuggestion.hpp (100%) rename RefactorSuggestionHoverHandler.cpp => sources/refactor/RefactorSuggestionHoverHandler.cpp (98%) rename RefactorSuggestionHoverHandler.hpp => sources/refactor/RefactorSuggestionHoverHandler.hpp (100%) rename {pluginllmcore => sources/refactor}/ResponseCleaner.hpp (97%) rename {settings => sources/settings}/AgentRole.cpp (100%) rename {settings => sources/settings}/AgentRole.hpp (100%) rename {settings => sources/settings}/AgentRoleDialog.cpp (100%) rename {settings => sources/settings}/AgentRoleDialog.hpp (100%) rename {settings => sources/settings}/AgentRolesWidget.cpp (100%) rename {settings => sources/settings}/AgentRolesWidget.hpp (100%) rename {settings => sources/settings}/Assisttr.h (100%) rename {settings => sources/settings}/ButtonAspect.hpp (100%) rename {settings => sources/settings}/CMakeLists.txt (89%) rename {settings => sources/settings}/ChatAssistantSettings.cpp (100%) rename {settings => sources/settings}/ChatAssistantSettings.hpp (100%) rename {settings => sources/settings}/CodeCompletionSettings.cpp (100%) rename {settings => sources/settings}/CodeCompletionSettings.hpp (100%) rename {settings => sources/settings}/ConfigurationManager.cpp (100%) rename {settings => sources/settings}/ConfigurationManager.hpp (100%) rename {settings => sources/settings}/GeneralSettings.cpp (99%) rename {settings => sources/settings}/GeneralSettings.hpp (99%) rename {settings => sources/settings}/McpClientsListAspect.cpp (100%) rename {settings => sources/settings}/McpClientsListAspect.hpp (100%) rename {settings => sources/settings}/McpSettings.cpp (100%) rename {settings => sources/settings}/McpSettings.hpp (100%) rename {settings => sources/settings}/PluginUpdater.cpp (100%) rename {settings => sources/settings}/PluginUpdater.hpp (100%) rename {settings => sources/settings}/ProjectSettings.cpp (100%) rename {settings => sources/settings}/ProjectSettings.hpp (100%) rename {settings => sources/settings}/ProjectSettingsPanel.cpp (97%) rename {settings => sources/settings}/ProjectSettingsPanel.hpp (100%) rename {settings => sources/settings}/ProviderNameMigration.hpp (100%) rename {settings => sources/settings}/ProviderSettings.cpp (100%) rename {settings => sources/settings}/ProviderSettings.hpp (100%) rename {settings => sources/settings}/QuickRefactorSettings.cpp (100%) rename {settings => sources/settings}/QuickRefactorSettings.hpp (100%) rename {settings => sources/settings}/SettingsConstants.hpp (100%) rename {settings => sources/settings}/SettingsDialog.cpp (100%) rename {settings => sources/settings}/SettingsDialog.hpp (100%) rename {settings => sources/settings}/SettingsTr.hpp (100%) rename {settings => sources/settings}/SettingsUtils.hpp (100%) rename {settings => sources/settings}/SkillsSettings.cpp (99%) rename {settings => sources/settings}/SkillsSettings.hpp (100%) rename {settings => sources/settings}/StatusDot.hpp (100%) rename {settings => sources/settings}/ToolsSettings.cpp (100%) rename {settings => sources/settings}/ToolsSettings.hpp (100%) rename {settings => sources/settings}/UpdateDialog.cpp (100%) rename {settings => sources/settings}/UpdateDialog.hpp (100%) rename {templates => sources/templates}/Alpaca.hpp (74%) rename {templates => sources/templates}/ChatML.hpp (75%) rename {templates => sources/templates}/Claude.hpp (92%) rename {templates => sources/templates}/CodeLlamaFim.hpp (74%) rename {templates => sources/templates}/CodeLlamaQMLFim.hpp (75%) rename {templates => sources/templates}/GoogleAI.hpp (92%) rename {pluginllmcore => sources/templates}/IPromptProvider.hpp (68%) rename {templates => sources/templates}/Llama2.hpp (74%) rename {templates => sources/templates}/Llama3.hpp (76%) rename {templates => sources/templates}/LlamaCppFim.hpp (76%) rename {templates => sources/templates}/MistralAI.hpp (81%) rename {templates => sources/templates}/Ollama.hpp (83%) rename {templates => sources/templates}/OpenAI.hpp (86%) rename {templates => sources/templates}/OpenAICompatible.hpp (80%) rename {templates => sources/templates}/OpenAIResponses.hpp (88%) rename {pluginllmcore => sources/templates}/PromptProviderChat.hpp (74%) rename {pluginllmcore => sources/templates}/PromptProviderFim.hpp (77%) rename {pluginllmcore => sources/templates}/PromptTemplate.hpp (67%) rename {pluginllmcore => sources/templates}/PromptTemplateManager.cpp (92%) rename {pluginllmcore => sources/templates}/PromptTemplateManager.hpp (83%) rename {templates => sources/templates}/Qwen25CoderFIM.hpp (74%) rename {templates => sources/templates}/Qwen3CoderFIM.hpp (71%) rename {templates => sources/templates}/StarCoder2Fim.hpp (75%) rename {templates => sources/templates}/Templates.hpp (93%) rename {templates => sources/templates}/ToolMessages.hpp (95%) rename {tools => sources/tools}/BuildProjectTool.cpp (99%) rename {tools => sources/tools}/BuildProjectTool.hpp (100%) rename {tools => sources/tools}/CreateNewFileTool.cpp (100%) rename {tools => sources/tools}/CreateNewFileTool.hpp (100%) rename {tools => sources/tools}/EditFileTool.cpp (100%) rename {tools => sources/tools}/EditFileTool.hpp (100%) rename {tools => sources/tools}/ExecuteTerminalCommandTool.cpp (100%) rename {tools => sources/tools}/ExecuteTerminalCommandTool.hpp (100%) rename {tools => sources/tools}/FileSearchUtils.cpp (100%) rename {tools => sources/tools}/FileSearchUtils.hpp (100%) rename {tools => sources/tools}/FindFileTool.cpp (100%) rename {tools => sources/tools}/FindFileTool.hpp (100%) rename {tools => sources/tools}/GetIssuesListTool.cpp (99%) rename {tools => sources/tools}/GetIssuesListTool.hpp (100%) rename {tools => sources/tools}/ListProjectFilesTool.cpp (100%) rename {tools => sources/tools}/ListProjectFilesTool.hpp (100%) rename {tools => sources/tools}/ProjectSearchTool.cpp (100%) rename {tools => sources/tools}/ProjectSearchTool.hpp (100%) rename {tools => sources/tools}/ReadFileTool.cpp (100%) rename {tools => sources/tools}/ReadFileTool.hpp (100%) rename {tools => sources/tools}/ReadOriginalHistoryTool.cpp (100%) rename {tools => sources/tools}/ReadOriginalHistoryTool.hpp (100%) rename {tools => sources/tools}/SkillTool.cpp (96%) rename {tools => sources/tools}/SkillTool.hpp (100%) rename {tools => sources/tools}/TodoTool.cpp (100%) rename {tools => sources/tools}/TodoTool.hpp (100%) rename {tools => sources/tools}/ToolExceptions.hpp (100%) rename {tools => sources/tools}/ToolsRegistration.cpp (100%) rename {tools => sources/tools}/ToolsRegistration.hpp (100%) rename {widgets => sources/widgets}/AddCustomInstructionDialog.cpp (98%) rename {widgets => sources/widgets}/AddCustomInstructionDialog.hpp (100%) rename {widgets => sources/widgets}/CompletionErrorHandler.cpp (100%) rename {widgets => sources/widgets}/CompletionErrorHandler.hpp (100%) rename {widgets => sources/widgets}/CompletionHintHandler.cpp (100%) rename {widgets => sources/widgets}/CompletionHintHandler.hpp (100%) rename {widgets => sources/widgets}/CompletionHintWidget.cpp (100%) rename {widgets => sources/widgets}/CompletionHintWidget.hpp (100%) rename {widgets => sources/widgets}/CompletionProgressHandler.cpp (100%) rename {widgets => sources/widgets}/CompletionProgressHandler.hpp (100%) rename {widgets => sources/widgets}/ContextExtractor.hpp (100%) rename {widgets => sources/widgets}/CustomInstructionsManager.cpp (100%) rename {widgets => sources/widgets}/CustomInstructionsManager.hpp (100%) rename {widgets => sources/widgets}/DiffStatistics.hpp (100%) rename {widgets => sources/widgets}/EditorChatButton.cpp (100%) rename {widgets => sources/widgets}/EditorChatButton.hpp (100%) rename {widgets => sources/widgets}/EditorChatButtonHandler.cpp (100%) rename {widgets => sources/widgets}/EditorChatButtonHandler.hpp (100%) rename {widgets => sources/widgets}/ErrorWidget.cpp (100%) rename {widgets => sources/widgets}/ErrorWidget.hpp (100%) rename {widgets => sources/widgets}/ProgressWidget.cpp (100%) rename {widgets => sources/widgets}/ProgressWidget.hpp (100%) rename {widgets => sources/widgets}/QuickRefactorDialog.cpp (99%) rename {widgets => sources/widgets}/QuickRefactorDialog.hpp (100%) rename {widgets => sources/widgets}/RefactorWidget.cpp (100%) rename {widgets => sources/widgets}/RefactorWidget.hpp (100%) rename {widgets => sources/widgets}/RefactorWidgetHandler.cpp (100%) rename {widgets => sources/widgets}/RefactorWidgetHandler.hpp (100%) delete mode 100644 templates/DeepSeekCoderFim.hpp rename {test => tests}/CMakeLists.txt (74%) rename {test => tests}/ClaudeCacheControlTest.cpp (100%) rename {test => tests}/CodeHandlerTest.cpp (99%) rename {test => tests}/DocumentContextReaderTest.cpp (98%) rename {test => tests}/LLMSuggestionTest.cpp (98%) rename {test => tests}/TestUtils.hpp (92%) rename {test => tests}/unittest_main.cpp (100%) diff --git a/.github/workflows/build_cmake.yml b/.github/workflows/build_cmake.yml index 8261658..7bf7b2f 100644 --- a/.github/workflows/build_cmake.yml +++ b/.github/workflows/build_cmake.yml @@ -285,7 +285,7 @@ jobs: - name: Run unit tests if: startsWith(matrix.config.os, 'ubuntu') run: | - xvfb-run ./build/build/test/QodeAssistTest + xvfb-run ./build/build/tests/QodeAssistTest release: if: contains(github.ref, 'tags/v') diff --git a/CMakeLists.txt b/CMakeLists.txt index d406c7e..00b6b4d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,14 +37,8 @@ add_definitions( ) add_subdirectory(sources) -add_subdirectory(logger) -add_subdirectory(pluginllmcore) -add_subdirectory(settings) -add_subdirectory(UIControls) -add_subdirectory(ChatView) -add_subdirectory(context) if(GTest_FOUND) - add_subdirectory(test) + add_subdirectory(tests) endif() add_qtc_plugin(QodeAssist @@ -65,105 +59,118 @@ add_qtc_plugin(QodeAssist QtCreator::Utils QtCreator::CPlusPlus LLMQore - PluginLLMCore Skills QodeAssistChatViewplugin SOURCES .github/workflows/build_cmake.yml .github/workflows/README.md README.md - qodeassist.cpp - QodeAssistConstants.hpp - QodeAssisttr.h - LLMClientInterface.hpp LLMClientInterface.cpp - RefactorContextHelper.hpp - templates/Templates.hpp - templates/CodeLlamaFim.hpp - templates/Ollama.hpp - templates/Claude.hpp - templates/OpenAI.hpp - templates/MistralAI.hpp - templates/StarCoder2Fim.hpp - templates/Qwen25CoderFIM.hpp - templates/OpenAICompatible.hpp - templates/Llama3.hpp - templates/ChatML.hpp - templates/Alpaca.hpp - templates/Llama2.hpp - templates/CodeLlamaQMLFim.hpp - templates/GoogleAI.hpp - templates/LlamaCppFim.hpp - templates/Qwen3CoderFIM.hpp - templates/OpenAIResponses.hpp - providers/Providers.hpp - providers/ProviderUrlUtils.hpp - providers/OllamaProvider.hpp providers/OllamaProvider.cpp - providers/OllamaCompatProvider.hpp providers/OllamaCompatProvider.cpp - providers/ClaudeProvider.hpp providers/ClaudeProvider.cpp - providers/OpenAIProvider.hpp providers/OpenAIProvider.cpp - providers/MistralAIProvider.hpp providers/MistralAIProvider.cpp - providers/LMStudioProvider.hpp providers/LMStudioProvider.cpp - providers/LMStudioResponsesProvider.hpp providers/LMStudioResponsesProvider.cpp - providers/OpenAICompatProvider.hpp providers/OpenAICompatProvider.cpp - providers/OpenRouterAIProvider.hpp providers/OpenRouterAIProvider.cpp - providers/GoogleAIProvider.hpp providers/GoogleAIProvider.cpp - providers/LlamaCppProvider.hpp providers/LlamaCppProvider.cpp - providers/CodestralProvider.hpp providers/CodestralProvider.cpp - providers/OpenAIResponsesProvider.hpp providers/OpenAIResponsesProvider.cpp - providers/QwenProvider.hpp providers/QwenProvider.cpp - providers/QwenResponsesProvider.hpp providers/QwenResponsesProvider.cpp - providers/DeepSeekProvider.hpp providers/DeepSeekProvider.cpp + sources/plugin/qodeassist.cpp + sources/plugin/QodeAssistConstants.hpp + sources/plugin/QodeAssisttr.h + sources/plugin/Version.hpp + sources/plugin/ConfigurationManager.hpp sources/plugin/ConfigurationManager.cpp + sources/plugin/UpdateStatusWidget.hpp sources/plugin/UpdateStatusWidget.cpp + sources/llmcore/ContextData.hpp + sources/llmcore/RequestType.hpp + sources/completion/LLMClientInterface.hpp sources/completion/LLMClientInterface.cpp + sources/completion/LSPCompletion.hpp + sources/completion/LLMSuggestion.hpp sources/completion/LLMSuggestion.cpp + sources/completion/QodeAssistClient.hpp sources/completion/QodeAssistClient.cpp + sources/completion/CodeHandler.hpp sources/completion/CodeHandler.cpp + sources/refactor/QuickRefactorHandler.hpp sources/refactor/QuickRefactorHandler.cpp + sources/refactor/RefactorContextHelper.hpp + sources/refactor/RefactorSuggestion.hpp sources/refactor/RefactorSuggestion.cpp + sources/refactor/RefactorSuggestionHoverHandler.hpp sources/refactor/RefactorSuggestionHoverHandler.cpp + sources/refactor/ResponseCleaner.hpp + sources/templates/PromptTemplate.hpp + sources/templates/PromptTemplateManager.hpp sources/templates/PromptTemplateManager.cpp + sources/templates/IPromptProvider.hpp + sources/templates/PromptProviderChat.hpp + sources/templates/PromptProviderFim.hpp + sources/templates/Templates.hpp + sources/templates/CodeLlamaFim.hpp + sources/templates/Ollama.hpp + sources/templates/Claude.hpp + sources/templates/OpenAI.hpp + sources/templates/MistralAI.hpp + sources/templates/StarCoder2Fim.hpp + sources/templates/Qwen25CoderFIM.hpp + sources/templates/OpenAICompatible.hpp + sources/templates/Llama3.hpp + sources/templates/ChatML.hpp + sources/templates/Alpaca.hpp + sources/templates/Llama2.hpp + sources/templates/CodeLlamaQMLFim.hpp + sources/templates/GoogleAI.hpp + sources/templates/LlamaCppFim.hpp + sources/templates/Qwen3CoderFIM.hpp + sources/templates/OpenAIResponses.hpp + sources/providers/Provider.hpp sources/providers/Provider.cpp + sources/providers/ProvidersManager.hpp sources/providers/ProvidersManager.cpp + sources/providers/IProviderRegistry.hpp + sources/providers/ProviderID.hpp + sources/providers/Providers.hpp + sources/providers/ProviderUrlUtils.hpp + sources/providers/OllamaProvider.hpp sources/providers/OllamaProvider.cpp + sources/providers/OllamaCompatProvider.hpp sources/providers/OllamaCompatProvider.cpp + sources/providers/ClaudeProvider.hpp sources/providers/ClaudeProvider.cpp + sources/providers/OpenAIProvider.hpp sources/providers/OpenAIProvider.cpp + sources/providers/MistralAIProvider.hpp sources/providers/MistralAIProvider.cpp + sources/providers/LMStudioProvider.hpp sources/providers/LMStudioProvider.cpp + sources/providers/LMStudioResponsesProvider.hpp sources/providers/LMStudioResponsesProvider.cpp + sources/providers/OpenAICompatProvider.hpp sources/providers/OpenAICompatProvider.cpp + sources/providers/OpenRouterAIProvider.hpp sources/providers/OpenRouterAIProvider.cpp + sources/providers/GoogleAIProvider.hpp sources/providers/GoogleAIProvider.cpp + sources/providers/LlamaCppProvider.hpp sources/providers/LlamaCppProvider.cpp + sources/providers/CodestralProvider.hpp sources/providers/CodestralProvider.cpp + sources/providers/OpenAIResponsesProvider.hpp sources/providers/OpenAIResponsesProvider.cpp + sources/providers/QwenProvider.hpp sources/providers/QwenProvider.cpp + sources/providers/QwenResponsesProvider.hpp sources/providers/QwenResponsesProvider.cpp + sources/providers/DeepSeekProvider.hpp sources/providers/DeepSeekProvider.cpp QodeAssist.qrc - LSPCompletion.hpp - LLMSuggestion.hpp LLMSuggestion.cpp - RefactorSuggestion.hpp RefactorSuggestion.cpp - RefactorSuggestionHoverHandler.hpp RefactorSuggestionHoverHandler.cpp - QodeAssistClient.hpp QodeAssistClient.cpp - chat/ChatOutputPane.h chat/ChatOutputPane.cpp - chat/NavigationPanel.hpp chat/NavigationPanel.cpp - chat/ChatDocument.hpp chat/ChatDocument.cpp - chat/ChatEditor.hpp chat/ChatEditor.cpp - chat/ChatEditorFactory.hpp chat/ChatEditorFactory.cpp - ConfigurationManager.hpp ConfigurationManager.cpp - CodeHandler.hpp CodeHandler.cpp - UpdateStatusWidget.hpp UpdateStatusWidget.cpp - widgets/CompletionProgressHandler.hpp widgets/CompletionProgressHandler.cpp - widgets/CompletionErrorHandler.hpp widgets/CompletionErrorHandler.cpp - widgets/CompletionHintWidget.hpp widgets/CompletionHintWidget.cpp - widgets/CompletionHintHandler.hpp widgets/CompletionHintHandler.cpp - widgets/ProgressWidget.hpp widgets/ProgressWidget.cpp - widgets/ErrorWidget.hpp widgets/ErrorWidget.cpp - widgets/EditorChatButton.hpp widgets/EditorChatButton.cpp - widgets/EditorChatButtonHandler.hpp widgets/EditorChatButtonHandler.cpp - widgets/QuickRefactorDialog.hpp widgets/QuickRefactorDialog.cpp - widgets/CustomInstructionsManager.hpp widgets/CustomInstructionsManager.cpp - widgets/AddCustomInstructionDialog.hpp widgets/AddCustomInstructionDialog.cpp - widgets/RefactorWidget.hpp widgets/RefactorWidget.cpp - widgets/RefactorWidgetHandler.hpp widgets/RefactorWidgetHandler.cpp - widgets/ContextExtractor.hpp - widgets/DiffStatistics.hpp - - QuickRefactorHandler.hpp QuickRefactorHandler.cpp - tools/ToolsRegistration.hpp tools/ToolsRegistration.cpp - tools/ListProjectFilesTool.hpp tools/ListProjectFilesTool.cpp - tools/GetIssuesListTool.hpp tools/GetIssuesListTool.cpp - tools/CreateNewFileTool.hpp tools/CreateNewFileTool.cpp - tools/EditFileTool.hpp tools/EditFileTool.cpp - tools/BuildProjectTool.hpp tools/BuildProjectTool.cpp - tools/ExecuteTerminalCommandTool.hpp tools/ExecuteTerminalCommandTool.cpp - tools/ProjectSearchTool.hpp tools/ProjectSearchTool.cpp - tools/FindFileTool.hpp tools/FindFileTool.cpp - tools/ReadFileTool.hpp tools/ReadFileTool.cpp - tools/FileSearchUtils.hpp tools/FileSearchUtils.cpp - tools/TodoTool.hpp tools/TodoTool.cpp - tools/ReadOriginalHistoryTool.hpp tools/ReadOriginalHistoryTool.cpp - tools/SkillTool.hpp tools/SkillTool.cpp - mcp/McpServerManager.hpp mcp/McpServerManager.cpp - mcp/McpServerConnection.hpp mcp/McpServerConnection.cpp - mcp/McpClientsManager.hpp mcp/McpClientsManager.cpp - settings/McpClientsListAspect.hpp settings/McpClientsListAspect.cpp + sources/chat/ChatOutputPane.h sources/chat/ChatOutputPane.cpp + sources/chat/NavigationPanel.hpp sources/chat/NavigationPanel.cpp + sources/chat/ChatDocument.hpp sources/chat/ChatDocument.cpp + sources/chat/ChatEditor.hpp sources/chat/ChatEditor.cpp + sources/chat/ChatEditorFactory.hpp sources/chat/ChatEditorFactory.cpp + sources/widgets/CompletionProgressHandler.hpp sources/widgets/CompletionProgressHandler.cpp + sources/widgets/CompletionErrorHandler.hpp sources/widgets/CompletionErrorHandler.cpp + sources/widgets/CompletionHintWidget.hpp sources/widgets/CompletionHintWidget.cpp + sources/widgets/CompletionHintHandler.hpp sources/widgets/CompletionHintHandler.cpp + sources/widgets/ProgressWidget.hpp sources/widgets/ProgressWidget.cpp + sources/widgets/ErrorWidget.hpp sources/widgets/ErrorWidget.cpp + sources/widgets/EditorChatButton.hpp sources/widgets/EditorChatButton.cpp + sources/widgets/EditorChatButtonHandler.hpp sources/widgets/EditorChatButtonHandler.cpp + sources/widgets/QuickRefactorDialog.hpp sources/widgets/QuickRefactorDialog.cpp + sources/widgets/CustomInstructionsManager.hpp sources/widgets/CustomInstructionsManager.cpp + sources/widgets/AddCustomInstructionDialog.hpp sources/widgets/AddCustomInstructionDialog.cpp + sources/widgets/RefactorWidget.hpp sources/widgets/RefactorWidget.cpp + sources/widgets/RefactorWidgetHandler.hpp sources/widgets/RefactorWidgetHandler.cpp + sources/widgets/ContextExtractor.hpp + sources/widgets/DiffStatistics.hpp + sources/tools/ToolsRegistration.hpp sources/tools/ToolsRegistration.cpp + sources/tools/ListProjectFilesTool.hpp sources/tools/ListProjectFilesTool.cpp + sources/tools/GetIssuesListTool.hpp sources/tools/GetIssuesListTool.cpp + sources/tools/CreateNewFileTool.hpp sources/tools/CreateNewFileTool.cpp + sources/tools/EditFileTool.hpp sources/tools/EditFileTool.cpp + sources/tools/BuildProjectTool.hpp sources/tools/BuildProjectTool.cpp + sources/tools/ExecuteTerminalCommandTool.hpp sources/tools/ExecuteTerminalCommandTool.cpp + sources/tools/ProjectSearchTool.hpp sources/tools/ProjectSearchTool.cpp + sources/tools/FindFileTool.hpp sources/tools/FindFileTool.cpp + sources/tools/ReadFileTool.hpp sources/tools/ReadFileTool.cpp + sources/tools/FileSearchUtils.hpp sources/tools/FileSearchUtils.cpp + sources/tools/TodoTool.hpp sources/tools/TodoTool.cpp + sources/tools/ReadOriginalHistoryTool.hpp sources/tools/ReadOriginalHistoryTool.cpp + sources/tools/SkillTool.hpp sources/tools/SkillTool.cpp + sources/mcp/McpServerManager.hpp sources/mcp/McpServerManager.cpp + sources/mcp/McpServerConnection.hpp sources/mcp/McpServerConnection.cpp + sources/mcp/McpClientsManager.hpp sources/mcp/McpClientsManager.cpp + sources/settings/McpClientsListAspect.hpp sources/settings/McpClientsListAspect.cpp ) +target_include_directories(QodeAssist PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/sources) + get_target_property(QtCreatorCorePath QtCreator::Core LOCATION) find_program(QtCreatorExecutable NAMES diff --git a/pluginllmcore/CMakeLists.txt b/pluginllmcore/CMakeLists.txt deleted file mode 100644 index 55a85d8..0000000 --- a/pluginllmcore/CMakeLists.txt +++ /dev/null @@ -1,29 +0,0 @@ -add_library(PluginLLMCore STATIC - RequestType.hpp - Provider.hpp Provider.cpp - ProvidersManager.hpp ProvidersManager.cpp - ContextData.hpp - IPromptProvider.hpp - IProviderRegistry.hpp - PromptProviderChat.hpp - PromptProviderFim.hpp - PromptTemplate.hpp - PromptTemplateManager.hpp PromptTemplateManager.cpp - ProviderID.hpp - RulesLoader.hpp RulesLoader.cpp - ResponseCleaner.hpp -) - -target_link_libraries(PluginLLMCore - PUBLIC - Qt::Core - Qt::Network - QtCreator::Core - QtCreator::Utils - QtCreator::ExtensionSystem - LLMQore - PRIVATE - QodeAssistLogger -) - -target_include_directories(PluginLLMCore PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/sources/CMakeLists.txt b/sources/CMakeLists.txt index 13bade1..3cf965d 100644 --- a/sources/CMakeLists.txt +++ b/sources/CMakeLists.txt @@ -1,2 +1,7 @@ add_subdirectory(external) add_subdirectory(skills) +add_subdirectory(logger) +add_subdirectory(settings) +add_subdirectory(context) +add_subdirectory(UIControls) +add_subdirectory(ChatView) diff --git a/ChatView/AgentRoleController.cpp b/sources/ChatView/AgentRoleController.cpp similarity index 100% rename from ChatView/AgentRoleController.cpp rename to sources/ChatView/AgentRoleController.cpp diff --git a/ChatView/AgentRoleController.hpp b/sources/ChatView/AgentRoleController.hpp similarity index 100% rename from ChatView/AgentRoleController.hpp rename to sources/ChatView/AgentRoleController.hpp diff --git a/ChatView/CMakeLists.txt b/sources/ChatView/CMakeLists.txt similarity index 97% rename from ChatView/CMakeLists.txt rename to sources/ChatView/CMakeLists.txt index b913035..a8c66b5 100644 --- a/ChatView/CMakeLists.txt +++ b/sources/ChatView/CMakeLists.txt @@ -92,7 +92,6 @@ target_link_libraries(QodeAssistChatView Qt::Network QtCreator::Core QtCreator::Utils - PluginLLMCore QodeAssistSettings Context QodeAssistUIControlsplugin @@ -102,5 +101,5 @@ target_link_libraries(QodeAssistChatView ) target_include_directories(QodeAssistChatView - PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR} + PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/sources ) diff --git a/ChatView/ChatCompressor.cpp b/sources/ChatView/ChatCompressor.cpp similarity index 93% rename from ChatView/ChatCompressor.cpp rename to sources/ChatView/ChatCompressor.cpp index e655b33..494374c 100644 --- a/ChatView/ChatCompressor.cpp +++ b/sources/ChatView/ChatCompressor.cpp @@ -7,8 +7,8 @@ #include #include "ChatModel.hpp" #include "GeneralSettings.hpp" -#include "PromptTemplateManager.hpp" -#include "ProvidersManager.hpp" +#include "templates/PromptTemplateManager.hpp" +#include "providers/ProvidersManager.hpp" #include "logger/Logger.hpp" #include @@ -43,7 +43,7 @@ void ChatCompressor::startCompression(const QString &chatFilePath, ChatModel *ch } auto providerName = Settings::generalSettings().caProvider(); - m_provider = PluginLLMCore::ProvidersManager::instance().getProviderByName(providerName); + m_provider = Providers::ProvidersManager::instance().getProviderByName(providerName); if (!m_provider) { emit compressionFailed(tr("No provider available")); @@ -51,7 +51,7 @@ void ChatCompressor::startCompression(const QString &chatFilePath, ChatModel *ch } auto templateName = Settings::generalSettings().caTemplate(); - auto promptTemplate = PluginLLMCore::PromptTemplateManager::instance().getChatTemplateByName( + auto promptTemplate = Templates::PromptTemplateManager::instance().getChatTemplateByName( templateName); if (!promptTemplate) { @@ -169,28 +169,28 @@ QString ChatCompressor::buildCompressionPrompt() const } void ChatCompressor::buildRequestPayload( - QJsonObject &payload, PluginLLMCore::PromptTemplate *promptTemplate) + QJsonObject &payload, Templates::PromptTemplate *promptTemplate) { - PluginLLMCore::ContextData context; + LLMCore::ContextData context; context.systemPrompt = QStringLiteral( "You are a helpful assistant that creates concise summaries of conversations. " "Your summaries preserve key information, technical details, and the flow of discussion."); - QVector messages; + QVector messages; for (const auto &msg : m_chatModel->getChatHistory()) { if (msg.role == ChatModel::ChatRole::Tool || msg.role == ChatModel::ChatRole::FileEdit || msg.role == ChatModel::ChatRole::Thinking) continue; - PluginLLMCore::Message apiMessage; + LLMCore::Message apiMessage; apiMessage.role = (msg.role == ChatModel::ChatRole::User) ? "user" : "assistant"; apiMessage.content = msg.content; messages.append(apiMessage); } - PluginLLMCore::Message compressionRequest; + LLMCore::Message compressionRequest; compressionRequest.role = "user"; compressionRequest.content = buildCompressionPrompt(); messages.append(compressionRequest); @@ -198,7 +198,7 @@ void ChatCompressor::buildRequestPayload( context.history = messages; m_provider->prepareRequest( - payload, promptTemplate, context, PluginLLMCore::RequestType::Chat, false, false); + payload, promptTemplate, context, LLMCore::RequestType::Chat, false, false); } bool ChatCompressor::createCompressedChatFile( diff --git a/ChatView/ChatCompressor.hpp b/sources/ChatView/ChatCompressor.hpp similarity index 85% rename from ChatView/ChatCompressor.hpp rename to sources/ChatView/ChatCompressor.hpp index d9587f9..fbe79a3 100644 --- a/ChatView/ChatCompressor.hpp +++ b/sources/ChatView/ChatCompressor.hpp @@ -9,10 +9,13 @@ #include #include -namespace QodeAssist::PluginLLMCore { +namespace QodeAssist::Providers { class Provider; +} // namespace QodeAssist::Providers + +namespace QodeAssist::Templates { class PromptTemplate; -} // namespace QodeAssist::PluginLLMCore +} // namespace QodeAssist::Templates namespace QodeAssist::Chat { @@ -49,13 +52,13 @@ private: void disconnectAllSignals(); void cleanupState(); void handleCompressionError(const QString &error); - void buildRequestPayload(QJsonObject &payload, PluginLLMCore::PromptTemplate *promptTemplate); + void buildRequestPayload(QJsonObject &payload, Templates::PromptTemplate *promptTemplate); bool m_isCompressing = false; QString m_currentRequestId; QString m_originalChatPath; QString m_accumulatedSummary; - PluginLLMCore::Provider *m_provider = nullptr; + Providers::Provider *m_provider = nullptr; ChatModel *m_chatModel = nullptr; QList m_connections; diff --git a/ChatView/ChatConfigurationController.cpp b/sources/ChatView/ChatConfigurationController.cpp similarity index 100% rename from ChatView/ChatConfigurationController.cpp rename to sources/ChatView/ChatConfigurationController.cpp diff --git a/ChatView/ChatConfigurationController.hpp b/sources/ChatView/ChatConfigurationController.hpp similarity index 100% rename from ChatView/ChatConfigurationController.hpp rename to sources/ChatView/ChatConfigurationController.hpp diff --git a/ChatView/ChatData.hpp b/sources/ChatView/ChatData.hpp similarity index 100% rename from ChatView/ChatData.hpp rename to sources/ChatView/ChatData.hpp diff --git a/ChatView/ChatFileManager.cpp b/sources/ChatView/ChatFileManager.cpp similarity index 100% rename from ChatView/ChatFileManager.cpp rename to sources/ChatView/ChatFileManager.cpp diff --git a/ChatView/ChatFileManager.hpp b/sources/ChatView/ChatFileManager.hpp similarity index 100% rename from ChatView/ChatFileManager.hpp rename to sources/ChatView/ChatFileManager.hpp diff --git a/ChatView/ChatHistoryStore.cpp b/sources/ChatView/ChatHistoryStore.cpp similarity index 100% rename from ChatView/ChatHistoryStore.cpp rename to sources/ChatView/ChatHistoryStore.cpp diff --git a/ChatView/ChatHistoryStore.hpp b/sources/ChatView/ChatHistoryStore.hpp similarity index 100% rename from ChatView/ChatHistoryStore.hpp rename to sources/ChatView/ChatHistoryStore.hpp diff --git a/ChatView/ChatModel.cpp b/sources/ChatView/ChatModel.cpp similarity index 100% rename from ChatView/ChatModel.cpp rename to sources/ChatView/ChatModel.cpp diff --git a/ChatView/ChatModel.hpp b/sources/ChatView/ChatModel.hpp similarity index 99% rename from ChatView/ChatModel.hpp rename to sources/ChatView/ChatModel.hpp index 0da2fac..79c7db7 100644 --- a/ChatView/ChatModel.hpp +++ b/sources/ChatView/ChatModel.hpp @@ -4,7 +4,7 @@ #pragma once -#include "ContextData.hpp" +#include "llmcore/ContextData.hpp" #include "MessagePart.hpp" #include diff --git a/ChatView/ChatRootView.cpp b/sources/ChatView/ChatRootView.cpp similarity index 98% rename from ChatView/ChatRootView.cpp rename to sources/ChatView/ChatRootView.cpp index d040ec2..1223655 100644 --- a/ChatView/ChatRootView.cpp +++ b/sources/ChatView/ChatRootView.cpp @@ -26,7 +26,7 @@ #include #include -#include "QodeAssistConstants.hpp" +#include "plugin/QodeAssistConstants.hpp" #include "AgentRoleController.hpp" #include "ChatAssistantSettings.hpp" @@ -38,13 +38,13 @@ #include "InputTokenCounter.hpp" #include "SettingsConstants.hpp" #include "Logger.hpp" -#include "ProvidersManager.hpp" +#include "providers/ProvidersManager.hpp" #include "SessionFileRegistry.hpp" #include "context/ContextManager.hpp" -#include "pluginllmcore/RulesLoader.hpp" +#include "context/RulesLoader.hpp" #include "ProjectSettings.hpp" #include "SkillsSettings.hpp" -#include "sources/skills/SkillsManager.hpp" +#include "skills/SkillsManager.hpp" namespace QodeAssist::Chat { @@ -74,7 +74,7 @@ QKeySequence sendMessageKeySequence() ChatRootView::ChatRootView(QQuickItem *parent) : QQuickItem(parent) , m_chatModel(new ChatModel(this)) - , m_promptProvider(PluginLLMCore::PromptTemplateManager::instance()) + , m_promptProvider(Templates::PromptTemplateManager::instance()) , m_clientInterface(new ClientInterface(m_chatModel, &m_promptProvider, this)) , m_fileManager(new ChatFileManager(this)) , m_isRequestInProgress(false) @@ -380,7 +380,7 @@ QVariantList ChatRootView::searchSkills(const QString &query) const if (!manager || !Settings::skillsSettings().enableSkills()) return results; - auto *project = PluginLLMCore::RulesLoader::getActiveProject(); + auto *project = Context::RulesLoader::getActiveProject(); QStringList projectSkillDirs; if (project) { Settings::ProjectSettings projectSettings(project); @@ -1135,7 +1135,7 @@ QString ChatRootView::getRuleContent(int index) if (index < 0 || index >= m_activeRules.size()) return QString(); - return PluginLLMCore::RulesLoader::loadRuleFileContent( + return Context::RulesLoader::loadRuleFileContent( m_activeRules[index].toMap()["filePath"].toString()); } @@ -1143,7 +1143,7 @@ void ChatRootView::refreshRules() { m_activeRules.clear(); - auto project = PluginLLMCore::RulesLoader::getActiveProject(); + auto project = Context::RulesLoader::getActiveProject(); if (!project) { emit activeRulesChanged(); emit activeRulesCountChanged(); @@ -1151,7 +1151,7 @@ void ChatRootView::refreshRules() } auto ruleFiles - = PluginLLMCore::RulesLoader::getRuleFilesForProject(project, PluginLLMCore::RulesContext::Chat); + = Context::RulesLoader::getRuleFilesForProject(project, Context::RulesContext::Chat); for (const auto &ruleFile : ruleFiles) { QVariantMap ruleMap; @@ -1250,9 +1250,9 @@ QString ChatRootView::lastInfoMessage() const bool ChatRootView::isThinkingSupport() const { auto providerName = Settings::generalSettings().caProvider(); - auto provider = PluginLLMCore::ProvidersManager::instance().getProviderByName(providerName); + auto provider = Providers::ProvidersManager::instance().getProviderByName(providerName); - return provider && provider->capabilities().testFlag(PluginLLMCore::ProviderCapability::Thinking); + return provider && provider->capabilities().testFlag(Providers::ProviderCapability::Thinking); } bool ChatRootView::hasImageAttachments(const QStringList &attachments) const diff --git a/ChatView/ChatRootView.hpp b/sources/ChatView/ChatRootView.hpp similarity index 99% rename from ChatView/ChatRootView.hpp rename to sources/ChatView/ChatRootView.hpp index 7403872..c56f617 100644 --- a/ChatView/ChatRootView.hpp +++ b/sources/ChatView/ChatRootView.hpp @@ -11,7 +11,7 @@ #include "ChatFileManager.hpp" #include "ChatModel.hpp" #include "ClientInterface.hpp" -#include "pluginllmcore/PromptProviderChat.hpp" +#include "templates/PromptProviderChat.hpp" #include namespace QodeAssist::Skills { @@ -271,7 +271,7 @@ private: Skills::SkillsManager *skillsManager() const; ChatModel *m_chatModel; - PluginLLMCore::PromptProviderChat m_promptProvider; + Templates::PromptProviderChat m_promptProvider; ClientInterface *m_clientInterface; ChatFileManager *m_fileManager; QString m_currentTemplate; diff --git a/ChatView/ChatSerializer.cpp b/sources/ChatView/ChatSerializer.cpp similarity index 100% rename from ChatView/ChatSerializer.cpp rename to sources/ChatView/ChatSerializer.cpp diff --git a/ChatView/ChatSerializer.hpp b/sources/ChatView/ChatSerializer.hpp similarity index 100% rename from ChatView/ChatSerializer.hpp rename to sources/ChatView/ChatSerializer.hpp diff --git a/ChatView/ChatUtils.cpp b/sources/ChatView/ChatUtils.cpp similarity index 100% rename from ChatView/ChatUtils.cpp rename to sources/ChatView/ChatUtils.cpp diff --git a/ChatView/ChatUtils.h b/sources/ChatView/ChatUtils.h similarity index 100% rename from ChatView/ChatUtils.h rename to sources/ChatView/ChatUtils.h diff --git a/ChatView/ChatView.cpp b/sources/ChatView/ChatView.cpp similarity index 97% rename from ChatView/ChatView.cpp rename to sources/ChatView/ChatView.cpp index 7cc8ec7..637457b 100644 --- a/ChatView/ChatView.cpp +++ b/sources/ChatView/ChatView.cpp @@ -16,9 +16,9 @@ #include #include "ChatRootView.hpp" -#include "QodeAssistConstants.hpp" +#include "plugin/QodeAssistConstants.hpp" #include "SessionFileRegistry.hpp" -#include "sources/skills/SkillsManager.hpp" +#include "skills/SkillsManager.hpp" namespace { constexpr Qt::WindowFlags baseFlags = Qt::Window | Qt::WindowTitleHint | Qt::WindowSystemMenuHint diff --git a/ChatView/ChatView.hpp b/sources/ChatView/ChatView.hpp similarity index 100% rename from ChatView/ChatView.hpp rename to sources/ChatView/ChatView.hpp diff --git a/ChatView/ChatWidget.cpp b/sources/ChatView/ChatWidget.cpp similarity index 97% rename from ChatView/ChatWidget.cpp rename to sources/ChatView/ChatWidget.cpp index 00f3039..e55a91a 100644 --- a/ChatView/ChatWidget.cpp +++ b/sources/ChatView/ChatWidget.cpp @@ -13,9 +13,9 @@ #include #include -#include "QodeAssistConstants.hpp" +#include "plugin/QodeAssistConstants.hpp" #include "SessionFileRegistry.hpp" -#include "sources/skills/SkillsManager.hpp" +#include "skills/SkillsManager.hpp" namespace QodeAssist::Chat { diff --git a/ChatView/ChatWidget.hpp b/sources/ChatView/ChatWidget.hpp similarity index 100% rename from ChatView/ChatWidget.hpp rename to sources/ChatView/ChatWidget.hpp diff --git a/ChatView/ClientInterface.cpp b/sources/ChatView/ClientInterface.cpp similarity index 93% rename from ChatView/ClientInterface.cpp rename to sources/ChatView/ClientInterface.cpp index 365233f..d7275ec 100644 --- a/ChatView/ClientInterface.cpp +++ b/sources/ChatView/ClientInterface.cpp @@ -38,17 +38,17 @@ #include "GeneralSettings.hpp" #include "Logger.hpp" #include "ProjectSettings.hpp" -#include "ProvidersManager.hpp" +#include "providers/ProvidersManager.hpp" #include "SkillsSettings.hpp" #include "ToolsSettings.hpp" -#include +#include "context/RulesLoader.hpp" #include -#include +#include "skills/SkillsManager.hpp" namespace QodeAssist::Chat { ClientInterface::ClientInterface( - ChatModel *chatModel, PluginLLMCore::IPromptProvider *promptProvider, QObject *parent) + ChatModel *chatModel, Templates::IPromptProvider *promptProvider, QObject *parent) : QObject(parent) , m_promptProvider(promptProvider) , m_chatModel(chatModel) @@ -143,7 +143,7 @@ void ClientInterface::sendMessage( auto &chatAssistantSettings = Settings::chatAssistantSettings(); auto providerName = Settings::generalSettings().caProvider(); - auto provider = PluginLLMCore::ProvidersManager::instance().getProviderByName(providerName); + auto provider = Providers::ProvidersManager::instance().getProviderByName(providerName); if (!provider) { LOG_MESSAGE(QString("No provider found with name: %1").arg(providerName)); @@ -158,7 +158,7 @@ void ClientInterface::sendMessage( return; } - PluginLLMCore::ContextData context; + LLMCore::ContextData context; const bool isToolsEnabled = useTools; @@ -172,7 +172,7 @@ void ClientInterface::sendMessage( systemPrompt = systemPrompt + "\n\n" + role.systemPrompt; } - auto project = PluginLLMCore::RulesLoader::getActiveProject(); + auto project = Context::RulesLoader::getActiveProject(); if (project) { systemPrompt += QString("\n# Active project: %1").arg(project->displayName()); @@ -194,7 +194,7 @@ void ClientInterface::sendMessage( } QString projectRules - = PluginLLMCore::RulesLoader::loadRulesForProject(project, PluginLLMCore::RulesContext::Chat); + = Context::RulesLoader::loadRulesForProject(project, Context::RulesContext::Chat); if (!projectRules.isEmpty()) { systemPrompt += QString("\n# Project Rules\n\n") + projectRules; @@ -249,7 +249,7 @@ void ClientInterface::sendMessage( const bool toolHistory = promptTemplate->supportsToolHistory(); - QVector messages; + QVector messages; int toolCallMsgIdx = -1; for (const auto &msg : m_chatModel->getChatHistory()) { if (msg.role == ChatModel::ChatRole::Tool) { @@ -258,19 +258,19 @@ void ClientInterface::sendMessage( } if (toolCallMsgIdx < 0) { - PluginLLMCore::Message assistantCall; + LLMCore::Message assistantCall; assistantCall.role = "assistant"; messages.append(assistantCall); toolCallMsgIdx = messages.size() - 1; } - PluginLLMCore::ToolCall call; + LLMCore::ToolCall call; call.id = msg.id; call.name = msg.toolName; call.arguments = msg.toolArguments; messages[toolCallMsgIdx].toolCalls.append(call); - PluginLLMCore::Message toolResult; + LLMCore::Message toolResult; toolResult.role = "tool"; toolResult.toolCallId = msg.id; toolResult.toolName = msg.toolName; @@ -285,7 +285,7 @@ void ClientInterface::sendMessage( continue; } - PluginLLMCore::Message apiMessage; + LLMCore::Message apiMessage; apiMessage.role = msg.role == ChatModel::ChatRole::User ? "user" : "assistant"; apiMessage.content = msg.content; @@ -305,7 +305,7 @@ void ClientInterface::sendMessage( apiMessage.isRedacted = msg.isRedacted; apiMessage.signature = msg.signature; - if (provider->capabilities().testFlag(PluginLLMCore::ProviderCapability::Image) + if (provider->capabilities().testFlag(Providers::ProviderCapability::Image) && !m_chatFilePath.isEmpty() && !msg.images.isEmpty()) { auto apiImages = loadImagesFromStorage(msg.images); if (!apiImages.isEmpty()) { @@ -317,7 +317,7 @@ void ClientInterface::sendMessage( } if (!imageFiles.isEmpty() - && !provider->capabilities().testFlag(PluginLLMCore::ProviderCapability::Image)) { + && !provider->capabilities().testFlag(Providers::ProviderCapability::Image)) { LOG_MESSAGE(QString("Provider %1 doesn't support images, %2 ignored") .arg(provider->name(), QString::number(imageFiles.size()))); } @@ -331,7 +331,7 @@ void ClientInterface::sendMessage( payload, promptTemplate, context, - PluginLLMCore::RequestType::Chat, + LLMCore::RequestType::Chat, useTools, useThinking); @@ -395,7 +395,7 @@ void ClientInterface::sendMessage( emit requestStarted(requestId); - if (provider->capabilities().testFlag(PluginLLMCore::ProviderCapability::Tools) + if (provider->capabilities().testFlag(Providers::ProviderCapability::Tools) && provider->toolsManager()) { if (auto *todoTool = qobject_cast( provider->toolsManager()->tool("todo_tool"))) { @@ -411,10 +411,10 @@ void ClientInterface::sendMessage( void ClientInterface::clearMessages() { const auto providerName = Settings::generalSettings().caProvider(); - auto *provider = PluginLLMCore::ProvidersManager::instance().getProviderByName(providerName); + auto *provider = Providers::ProvidersManager::instance().getProviderByName(providerName); if (provider && !m_chatFilePath.isEmpty() - && provider->capabilities().testFlag(PluginLLMCore::ProviderCapability::Tools) + && provider->capabilities().testFlag(Providers::ProviderCapability::Tools) && provider->toolsManager()) { if (auto *todoTool = qobject_cast( provider->toolsManager()->tool("todo_tool"))) { @@ -427,7 +427,7 @@ void ClientInterface::clearMessages() void ClientInterface::cancelRequest() { - QSet providers; + QSet providers; for (auto it = m_activeRequests.begin(); it != m_activeRequests.end(); ++it) { if (it.value().provider) { providers.insert(it.value().provider); @@ -693,10 +693,10 @@ QString ClientInterface::encodeImageToBase64(const QString &filePath) const return imageData.toBase64(); } -QVector ClientInterface::loadImagesFromStorage( +QVector ClientInterface::loadImagesFromStorage( const QList &storedImages) const { - QVector apiImages; + QVector apiImages; for (const auto &storedImage : storedImages) { QString base64Data @@ -706,7 +706,7 @@ QVector ClientInterface::loadImagesFromStorage( continue; } - PluginLLMCore::ImageAttachment apiImage; + LLMCore::ImageAttachment apiImage; apiImage.data = base64Data; apiImage.mediaType = storedImage.mediaType; apiImage.isUrl = false; @@ -721,10 +721,10 @@ void ClientInterface::setChatFilePath(const QString &filePath) { if (!m_chatFilePath.isEmpty() && m_chatFilePath != filePath) { const auto providerName = Settings::generalSettings().caProvider(); - auto *provider = PluginLLMCore::ProvidersManager::instance().getProviderByName(providerName); + auto *provider = Providers::ProvidersManager::instance().getProviderByName(providerName); if (provider - && provider->capabilities().testFlag(PluginLLMCore::ProviderCapability::Tools) + && provider->capabilities().testFlag(Providers::ProviderCapability::Tools) && provider->toolsManager()) { if (auto *todoTool = qobject_cast( provider->toolsManager()->tool("todo_tool"))) { diff --git a/ChatView/ClientInterface.hpp b/sources/ChatView/ClientInterface.hpp similarity index 88% rename from ChatView/ClientInterface.hpp rename to sources/ChatView/ClientInterface.hpp index 843a706..c272f3d 100644 --- a/ChatView/ClientInterface.hpp +++ b/sources/ChatView/ClientInterface.hpp @@ -10,8 +10,8 @@ #include #include "ChatModel.hpp" -#include "Provider.hpp" -#include "pluginllmcore/IPromptProvider.hpp" +#include "providers/Provider.hpp" +#include "templates/IPromptProvider.hpp" #include #include @@ -27,7 +27,7 @@ class ClientInterface : public QObject public: explicit ClientInterface( - ChatModel *chatModel, PluginLLMCore::IPromptProvider *promptProvider, QObject *parent = nullptr); + ChatModel *chatModel, Templates::IPromptProvider *promptProvider, QObject *parent = nullptr); ~ClientInterface(); void setSkillsManager(Skills::SkillsManager *skillsManager); @@ -79,16 +79,16 @@ private: bool isImageFile(const QString &filePath) const; QString getMediaTypeForImage(const QString &filePath) const; QString encodeImageToBase64(const QString &filePath) const; - QVector loadImagesFromStorage(const QList &storedImages) const; + QVector loadImagesFromStorage(const QList &storedImages) const; struct RequestContext { QJsonObject originalRequest; - PluginLLMCore::Provider *provider; + Providers::Provider *provider; bool dropPreToolText = false; }; - PluginLLMCore::IPromptProvider *m_promptProvider = nullptr; + Templates::IPromptProvider *m_promptProvider = nullptr; ChatModel *m_chatModel; Context::ContextManager *m_contextManager; Skills::SkillsManager *m_skillsManager = nullptr; diff --git a/ChatView/FileEditController.cpp b/sources/ChatView/FileEditController.cpp similarity index 100% rename from ChatView/FileEditController.cpp rename to sources/ChatView/FileEditController.cpp diff --git a/ChatView/FileEditController.hpp b/sources/ChatView/FileEditController.hpp similarity index 100% rename from ChatView/FileEditController.hpp rename to sources/ChatView/FileEditController.hpp diff --git a/ChatView/FileItem.cpp b/sources/ChatView/FileItem.cpp similarity index 100% rename from ChatView/FileItem.cpp rename to sources/ChatView/FileItem.cpp diff --git a/ChatView/FileItem.hpp b/sources/ChatView/FileItem.hpp similarity index 100% rename from ChatView/FileItem.hpp rename to sources/ChatView/FileItem.hpp diff --git a/ChatView/FileMentionItem.cpp b/sources/ChatView/FileMentionItem.cpp similarity index 100% rename from ChatView/FileMentionItem.cpp rename to sources/ChatView/FileMentionItem.cpp diff --git a/ChatView/FileMentionItem.hpp b/sources/ChatView/FileMentionItem.hpp similarity index 100% rename from ChatView/FileMentionItem.hpp rename to sources/ChatView/FileMentionItem.hpp diff --git a/ChatView/InputTokenCounter.cpp b/sources/ChatView/InputTokenCounter.cpp similarity index 96% rename from ChatView/InputTokenCounter.cpp rename to sources/ChatView/InputTokenCounter.cpp index dd0d395..d4af4ab 100644 --- a/ChatView/InputTokenCounter.cpp +++ b/sources/ChatView/InputTokenCounter.cpp @@ -16,7 +16,7 @@ #include "ChatModel.hpp" #include "GeneralSettings.hpp" #include "Logger.hpp" -#include "ProvidersManager.hpp" +#include "providers/ProvidersManager.hpp" #include "context/ContextManager.hpp" #include "context/TokenUtils.hpp" @@ -81,7 +81,7 @@ void InputTokenCounter::rewireToolsChangedConnection() m_toolsChangedConn = {}; const auto providerName = Settings::generalSettings().caProvider(); - auto *provider = PluginLLMCore::ProvidersManager::instance().getProviderByName(providerName); + auto *provider = Providers::ProvidersManager::instance().getProviderByName(providerName); if (!provider) return; auto *tm = provider->toolsManager(); @@ -138,7 +138,7 @@ void InputTokenCounter::recompute() if (settings.enableChatTools()) { const auto providerName = Settings::generalSettings().caProvider(); - if (auto *provider = PluginLLMCore::ProvidersManager::instance().getProviderByName( + if (auto *provider = Providers::ProvidersManager::instance().getProviderByName( providerName)) { if (auto *tm = provider->toolsManager()) { const QJsonArray toolDefs = tm->getToolsDefinitions(); diff --git a/ChatView/InputTokenCounter.hpp b/sources/ChatView/InputTokenCounter.hpp similarity index 100% rename from ChatView/InputTokenCounter.hpp rename to sources/ChatView/InputTokenCounter.hpp diff --git a/ChatView/MessagePart.hpp b/sources/ChatView/MessagePart.hpp similarity index 100% rename from ChatView/MessagePart.hpp rename to sources/ChatView/MessagePart.hpp diff --git a/ChatView/SessionFileRegistry.cpp b/sources/ChatView/SessionFileRegistry.cpp similarity index 100% rename from ChatView/SessionFileRegistry.cpp rename to sources/ChatView/SessionFileRegistry.cpp diff --git a/ChatView/SessionFileRegistry.hpp b/sources/ChatView/SessionFileRegistry.hpp similarity index 100% rename from ChatView/SessionFileRegistry.hpp rename to sources/ChatView/SessionFileRegistry.hpp diff --git a/ChatView/icons/apply-changes-button.svg b/sources/ChatView/icons/apply-changes-button.svg similarity index 100% rename from ChatView/icons/apply-changes-button.svg rename to sources/ChatView/icons/apply-changes-button.svg diff --git a/ChatView/icons/attach-file-dark.svg b/sources/ChatView/icons/attach-file-dark.svg similarity index 100% rename from ChatView/icons/attach-file-dark.svg rename to sources/ChatView/icons/attach-file-dark.svg diff --git a/ChatView/icons/attach-file-light.svg b/sources/ChatView/icons/attach-file-light.svg similarity index 100% rename from ChatView/icons/attach-file-light.svg rename to sources/ChatView/icons/attach-file-light.svg diff --git a/ChatView/icons/chat-icon.svg b/sources/ChatView/icons/chat-icon.svg similarity index 100% rename from ChatView/icons/chat-icon.svg rename to sources/ChatView/icons/chat-icon.svg diff --git a/ChatView/icons/chat-pause-icon.svg b/sources/ChatView/icons/chat-pause-icon.svg similarity index 100% rename from ChatView/icons/chat-pause-icon.svg rename to sources/ChatView/icons/chat-pause-icon.svg diff --git a/ChatView/icons/clean-icon-dark.svg b/sources/ChatView/icons/clean-icon-dark.svg similarity index 100% rename from ChatView/icons/clean-icon-dark.svg rename to sources/ChatView/icons/clean-icon-dark.svg diff --git a/ChatView/icons/close-dark.svg b/sources/ChatView/icons/close-dark.svg similarity index 100% rename from ChatView/icons/close-dark.svg rename to sources/ChatView/icons/close-dark.svg diff --git a/ChatView/icons/close-light.svg b/sources/ChatView/icons/close-light.svg similarity index 100% rename from ChatView/icons/close-light.svg rename to sources/ChatView/icons/close-light.svg diff --git a/ChatView/icons/compress-icon.svg b/sources/ChatView/icons/compress-icon.svg similarity index 100% rename from ChatView/icons/compress-icon.svg rename to sources/ChatView/icons/compress-icon.svg diff --git a/ChatView/icons/context-icon.svg b/sources/ChatView/icons/context-icon.svg similarity index 100% rename from ChatView/icons/context-icon.svg rename to sources/ChatView/icons/context-icon.svg diff --git a/ChatView/icons/file-in-system.svg b/sources/ChatView/icons/file-in-system.svg similarity index 100% rename from ChatView/icons/file-in-system.svg rename to sources/ChatView/icons/file-in-system.svg diff --git a/ChatView/icons/image-dark.svg b/sources/ChatView/icons/image-dark.svg similarity index 100% rename from ChatView/icons/image-dark.svg rename to sources/ChatView/icons/image-dark.svg diff --git a/ChatView/icons/link-file-dark.svg b/sources/ChatView/icons/link-file-dark.svg similarity index 100% rename from ChatView/icons/link-file-dark.svg rename to sources/ChatView/icons/link-file-dark.svg diff --git a/ChatView/icons/link-file-light.svg b/sources/ChatView/icons/link-file-light.svg similarity index 100% rename from ChatView/icons/link-file-light.svg rename to sources/ChatView/icons/link-file-light.svg diff --git a/ChatView/icons/load-chat-dark.svg b/sources/ChatView/icons/load-chat-dark.svg similarity index 100% rename from ChatView/icons/load-chat-dark.svg rename to sources/ChatView/icons/load-chat-dark.svg diff --git a/ChatView/icons/new-chat-icon.svg b/sources/ChatView/icons/new-chat-icon.svg similarity index 100% rename from ChatView/icons/new-chat-icon.svg rename to sources/ChatView/icons/new-chat-icon.svg diff --git a/ChatView/icons/open-in-code.svg b/sources/ChatView/icons/open-in-code.svg similarity index 100% rename from ChatView/icons/open-in-code.svg rename to sources/ChatView/icons/open-in-code.svg diff --git a/ChatView/icons/open-in-editor.svg b/sources/ChatView/icons/open-in-editor.svg similarity index 100% rename from ChatView/icons/open-in-editor.svg rename to sources/ChatView/icons/open-in-editor.svg diff --git a/ChatView/icons/open-in-window.svg b/sources/ChatView/icons/open-in-window.svg similarity index 100% rename from ChatView/icons/open-in-window.svg rename to sources/ChatView/icons/open-in-window.svg diff --git a/ChatView/icons/reject-changes-button.svg b/sources/ChatView/icons/reject-changes-button.svg similarity index 100% rename from ChatView/icons/reject-changes-button.svg rename to sources/ChatView/icons/reject-changes-button.svg diff --git a/ChatView/icons/rules-icon.svg b/sources/ChatView/icons/rules-icon.svg similarity index 100% rename from ChatView/icons/rules-icon.svg rename to sources/ChatView/icons/rules-icon.svg diff --git a/ChatView/icons/save-chat-dark.svg b/sources/ChatView/icons/save-chat-dark.svg similarity index 100% rename from ChatView/icons/save-chat-dark.svg rename to sources/ChatView/icons/save-chat-dark.svg diff --git a/ChatView/icons/settings-icon.svg b/sources/ChatView/icons/settings-icon.svg similarity index 100% rename from ChatView/icons/settings-icon.svg rename to sources/ChatView/icons/settings-icon.svg diff --git a/ChatView/icons/thinking-icon-off.svg b/sources/ChatView/icons/thinking-icon-off.svg similarity index 100% rename from ChatView/icons/thinking-icon-off.svg rename to sources/ChatView/icons/thinking-icon-off.svg diff --git a/ChatView/icons/thinking-icon-on.svg b/sources/ChatView/icons/thinking-icon-on.svg similarity index 100% rename from ChatView/icons/thinking-icon-on.svg rename to sources/ChatView/icons/thinking-icon-on.svg diff --git a/ChatView/icons/tools-icon-off.svg b/sources/ChatView/icons/tools-icon-off.svg similarity index 100% rename from ChatView/icons/tools-icon-off.svg rename to sources/ChatView/icons/tools-icon-off.svg diff --git a/ChatView/icons/tools-icon-on.svg b/sources/ChatView/icons/tools-icon-on.svg similarity index 100% rename from ChatView/icons/tools-icon-on.svg rename to sources/ChatView/icons/tools-icon-on.svg diff --git a/ChatView/icons/undo-changes-button.svg b/sources/ChatView/icons/undo-changes-button.svg similarity index 100% rename from ChatView/icons/undo-changes-button.svg rename to sources/ChatView/icons/undo-changes-button.svg diff --git a/ChatView/icons/warning-icon.svg b/sources/ChatView/icons/warning-icon.svg similarity index 100% rename from ChatView/icons/warning-icon.svg rename to sources/ChatView/icons/warning-icon.svg diff --git a/ChatView/icons/window-lock.svg b/sources/ChatView/icons/window-lock.svg similarity index 100% rename from ChatView/icons/window-lock.svg rename to sources/ChatView/icons/window-lock.svg diff --git a/ChatView/icons/window-unlock.svg b/sources/ChatView/icons/window-unlock.svg similarity index 100% rename from ChatView/icons/window-unlock.svg rename to sources/ChatView/icons/window-unlock.svg diff --git a/ChatView/qml/RootItem.qml b/sources/ChatView/qml/RootItem.qml similarity index 100% rename from ChatView/qml/RootItem.qml rename to sources/ChatView/qml/RootItem.qml diff --git a/ChatView/qml/chatparts/ChatItem.qml b/sources/ChatView/qml/chatparts/ChatItem.qml similarity index 100% rename from ChatView/qml/chatparts/ChatItem.qml rename to sources/ChatView/qml/chatparts/ChatItem.qml diff --git a/ChatView/qml/chatparts/CodeBlock.qml b/sources/ChatView/qml/chatparts/CodeBlock.qml similarity index 100% rename from ChatView/qml/chatparts/CodeBlock.qml rename to sources/ChatView/qml/chatparts/CodeBlock.qml diff --git a/ChatView/qml/chatparts/FileEditBlock.qml b/sources/ChatView/qml/chatparts/FileEditBlock.qml similarity index 100% rename from ChatView/qml/chatparts/FileEditBlock.qml rename to sources/ChatView/qml/chatparts/FileEditBlock.qml diff --git a/ChatView/qml/chatparts/TextBlock.qml b/sources/ChatView/qml/chatparts/TextBlock.qml similarity index 100% rename from ChatView/qml/chatparts/TextBlock.qml rename to sources/ChatView/qml/chatparts/TextBlock.qml diff --git a/ChatView/qml/chatparts/ThinkingBlock.qml b/sources/ChatView/qml/chatparts/ThinkingBlock.qml similarity index 100% rename from ChatView/qml/chatparts/ThinkingBlock.qml rename to sources/ChatView/qml/chatparts/ThinkingBlock.qml diff --git a/ChatView/qml/chatparts/ToolBlock.qml b/sources/ChatView/qml/chatparts/ToolBlock.qml similarity index 100% rename from ChatView/qml/chatparts/ToolBlock.qml rename to sources/ChatView/qml/chatparts/ToolBlock.qml diff --git a/ChatView/qml/controls/AttachedFilesPlace.qml b/sources/ChatView/qml/controls/AttachedFilesPlace.qml similarity index 100% rename from ChatView/qml/controls/AttachedFilesPlace.qml rename to sources/ChatView/qml/controls/AttachedFilesPlace.qml diff --git a/ChatView/qml/controls/BottomBar.qml b/sources/ChatView/qml/controls/BottomBar.qml similarity index 100% rename from ChatView/qml/controls/BottomBar.qml rename to sources/ChatView/qml/controls/BottomBar.qml diff --git a/ChatView/qml/controls/ContextViewer.qml b/sources/ChatView/qml/controls/ContextViewer.qml similarity index 100% rename from ChatView/qml/controls/ContextViewer.qml rename to sources/ChatView/qml/controls/ContextViewer.qml diff --git a/ChatView/qml/controls/FileEditsActionBar.qml b/sources/ChatView/qml/controls/FileEditsActionBar.qml similarity index 100% rename from ChatView/qml/controls/FileEditsActionBar.qml rename to sources/ChatView/qml/controls/FileEditsActionBar.qml diff --git a/ChatView/qml/controls/FileMentionPopup.qml b/sources/ChatView/qml/controls/FileMentionPopup.qml similarity index 100% rename from ChatView/qml/controls/FileMentionPopup.qml rename to sources/ChatView/qml/controls/FileMentionPopup.qml diff --git a/ChatView/qml/controls/MessageNavigator.qml b/sources/ChatView/qml/controls/MessageNavigator.qml similarity index 100% rename from ChatView/qml/controls/MessageNavigator.qml rename to sources/ChatView/qml/controls/MessageNavigator.qml diff --git a/ChatView/qml/controls/SkillCommandPopup.qml b/sources/ChatView/qml/controls/SkillCommandPopup.qml similarity index 100% rename from ChatView/qml/controls/SkillCommandPopup.qml rename to sources/ChatView/qml/controls/SkillCommandPopup.qml diff --git a/ChatView/qml/controls/SplitDropZone.qml b/sources/ChatView/qml/controls/SplitDropZone.qml similarity index 100% rename from ChatView/qml/controls/SplitDropZone.qml rename to sources/ChatView/qml/controls/SplitDropZone.qml diff --git a/ChatView/qml/controls/Toast.qml b/sources/ChatView/qml/controls/Toast.qml similarity index 100% rename from ChatView/qml/controls/Toast.qml rename to sources/ChatView/qml/controls/Toast.qml diff --git a/ChatView/qml/controls/TopBar.qml b/sources/ChatView/qml/controls/TopBar.qml similarity index 100% rename from ChatView/qml/controls/TopBar.qml rename to sources/ChatView/qml/controls/TopBar.qml diff --git a/UIControls/CMakeLists.txt b/sources/UIControls/CMakeLists.txt similarity index 100% rename from UIControls/CMakeLists.txt rename to sources/UIControls/CMakeLists.txt diff --git a/UIControls/icons/dropdown-arrow-dark.svg b/sources/UIControls/icons/dropdown-arrow-dark.svg similarity index 100% rename from UIControls/icons/dropdown-arrow-dark.svg rename to sources/UIControls/icons/dropdown-arrow-dark.svg diff --git a/UIControls/icons/dropdown-arrow-light.svg b/sources/UIControls/icons/dropdown-arrow-light.svg similarity index 100% rename from UIControls/icons/dropdown-arrow-light.svg rename to sources/UIControls/icons/dropdown-arrow-light.svg diff --git a/UIControls/qml/Badge.qml b/sources/UIControls/qml/Badge.qml similarity index 100% rename from UIControls/qml/Badge.qml rename to sources/UIControls/qml/Badge.qml diff --git a/UIControls/qml/FadeListItemAnimation.qml b/sources/UIControls/qml/FadeListItemAnimation.qml similarity index 100% rename from UIControls/qml/FadeListItemAnimation.qml rename to sources/UIControls/qml/FadeListItemAnimation.qml diff --git a/UIControls/qml/QoABusyIndicator.qml b/sources/UIControls/qml/QoABusyIndicator.qml similarity index 100% rename from UIControls/qml/QoABusyIndicator.qml rename to sources/UIControls/qml/QoABusyIndicator.qml diff --git a/UIControls/qml/QoABusyOverlay.qml b/sources/UIControls/qml/QoABusyOverlay.qml similarity index 100% rename from UIControls/qml/QoABusyOverlay.qml rename to sources/UIControls/qml/QoABusyOverlay.qml diff --git a/UIControls/qml/QoAButton.qml b/sources/UIControls/qml/QoAButton.qml similarity index 100% rename from UIControls/qml/QoAButton.qml rename to sources/UIControls/qml/QoAButton.qml diff --git a/UIControls/qml/QoAComboBox.qml b/sources/UIControls/qml/QoAComboBox.qml similarity index 100% rename from UIControls/qml/QoAComboBox.qml rename to sources/UIControls/qml/QoAComboBox.qml diff --git a/UIControls/qml/QoASeparator.qml b/sources/UIControls/qml/QoASeparator.qml similarity index 100% rename from UIControls/qml/QoASeparator.qml rename to sources/UIControls/qml/QoASeparator.qml diff --git a/UIControls/qml/QoATextSlider.qml b/sources/UIControls/qml/QoATextSlider.qml similarity index 100% rename from UIControls/qml/QoATextSlider.qml rename to sources/UIControls/qml/QoATextSlider.qml diff --git a/UIControls/qml/QoAToolTip.qml b/sources/UIControls/qml/QoAToolTip.qml similarity index 100% rename from UIControls/qml/QoAToolTip.qml rename to sources/UIControls/qml/QoAToolTip.qml diff --git a/chat/ChatDocument.cpp b/sources/chat/ChatDocument.cpp similarity index 92% rename from chat/ChatDocument.cpp rename to sources/chat/ChatDocument.cpp index 1905253..3ffdee2 100644 --- a/chat/ChatDocument.cpp +++ b/sources/chat/ChatDocument.cpp @@ -6,8 +6,8 @@ #include -#include "QodeAssistConstants.hpp" -#include "QodeAssisttr.h" +#include "plugin/QodeAssistConstants.hpp" +#include "plugin/QodeAssisttr.h" namespace QodeAssist::Chat { diff --git a/chat/ChatDocument.hpp b/sources/chat/ChatDocument.hpp similarity index 100% rename from chat/ChatDocument.hpp rename to sources/chat/ChatDocument.hpp diff --git a/chat/ChatEditor.cpp b/sources/chat/ChatEditor.cpp similarity index 96% rename from chat/ChatEditor.cpp rename to sources/chat/ChatEditor.cpp index 2625951..9975386 100644 --- a/chat/ChatEditor.cpp +++ b/sources/chat/ChatEditor.cpp @@ -9,8 +9,8 @@ #include "ChatDocument.hpp" #include "ChatView/ChatRootView.hpp" #include "ChatView/ChatWidget.hpp" -#include "QodeAssistConstants.hpp" -#include "QodeAssisttr.h" +#include "plugin/QodeAssistConstants.hpp" +#include "plugin/QodeAssisttr.h" namespace QodeAssist::Chat { diff --git a/chat/ChatEditor.hpp b/sources/chat/ChatEditor.hpp similarity index 100% rename from chat/ChatEditor.hpp rename to sources/chat/ChatEditor.hpp diff --git a/chat/ChatEditorFactory.cpp b/sources/chat/ChatEditorFactory.cpp similarity index 90% rename from chat/ChatEditorFactory.cpp rename to sources/chat/ChatEditorFactory.cpp index 2427074..fcdebff 100644 --- a/chat/ChatEditorFactory.cpp +++ b/sources/chat/ChatEditorFactory.cpp @@ -5,8 +5,8 @@ #include "ChatEditorFactory.hpp" #include "ChatEditor.hpp" -#include "QodeAssistConstants.hpp" -#include "QodeAssisttr.h" +#include "plugin/QodeAssistConstants.hpp" +#include "plugin/QodeAssisttr.h" namespace QodeAssist::Chat { diff --git a/chat/ChatEditorFactory.hpp b/sources/chat/ChatEditorFactory.hpp similarity index 100% rename from chat/ChatEditorFactory.hpp rename to sources/chat/ChatEditorFactory.hpp diff --git a/chat/ChatOutputPane.cpp b/sources/chat/ChatOutputPane.cpp similarity index 97% rename from chat/ChatOutputPane.cpp rename to sources/chat/ChatOutputPane.cpp index 216e0e1..cc55479 100644 --- a/chat/ChatOutputPane.cpp +++ b/sources/chat/ChatOutputPane.cpp @@ -4,7 +4,7 @@ #include "ChatOutputPane.h" -#include "QodeAssisttr.h" +#include "plugin/QodeAssisttr.h" namespace QodeAssist::Chat { diff --git a/chat/ChatOutputPane.h b/sources/chat/ChatOutputPane.h similarity index 100% rename from chat/ChatOutputPane.h rename to sources/chat/ChatOutputPane.h diff --git a/chat/NavigationPanel.cpp b/sources/chat/NavigationPanel.cpp similarity index 92% rename from chat/NavigationPanel.cpp rename to sources/chat/NavigationPanel.cpp index 1bdacb7..fa52781 100644 --- a/chat/NavigationPanel.cpp +++ b/sources/chat/NavigationPanel.cpp @@ -6,8 +6,8 @@ #include "ChatView/ChatWidget.hpp" #include "ChatView/SessionFileRegistry.hpp" -#include "QodeAssistConstants.hpp" -#include "sources/skills/SkillsManager.hpp" +#include "plugin/QodeAssistConstants.hpp" +#include "skills/SkillsManager.hpp" namespace QodeAssist::Chat { diff --git a/chat/NavigationPanel.hpp b/sources/chat/NavigationPanel.hpp similarity index 100% rename from chat/NavigationPanel.hpp rename to sources/chat/NavigationPanel.hpp diff --git a/CodeHandler.cpp b/sources/completion/CodeHandler.cpp similarity index 99% rename from CodeHandler.cpp rename to sources/completion/CodeHandler.cpp index 22dccea..fe4a6b5 100644 --- a/CodeHandler.cpp +++ b/sources/completion/CodeHandler.cpp @@ -3,7 +3,7 @@ // SPDX-License-Identifier: GPL-3.0-or-later // Additional attribution terms under GPLv3 §7(b) apply — see LICENSE -#include "CodeHandler.hpp" +#include "completion/CodeHandler.hpp" #include #include #include diff --git a/CodeHandler.hpp b/sources/completion/CodeHandler.hpp similarity index 100% rename from CodeHandler.hpp rename to sources/completion/CodeHandler.hpp diff --git a/LLMClientInterface.cpp b/sources/completion/LLMClientInterface.cpp similarity index 93% rename from LLMClientInterface.cpp rename to sources/completion/LLMClientInterface.cpp index 4938f4e..8207e76 100644 --- a/LLMClientInterface.cpp +++ b/sources/completion/LLMClientInterface.cpp @@ -2,28 +2,28 @@ // SPDX-License-Identifier: GPL-3.0-or-later // Additional attribution terms under GPLv3 §7(b) apply — see LICENSE -#include "LLMClientInterface.hpp" +#include "completion/LLMClientInterface.hpp" #include #include #include #include -#include "CodeHandler.hpp" +#include "completion/CodeHandler.hpp" #include "context/DocumentContextReader.hpp" #include "context/Utils.hpp" #include "logger/Logger.hpp" #include "settings/CodeCompletionSettings.hpp" #include "settings/GeneralSettings.hpp" -#include +#include "context/RulesLoader.hpp" namespace QodeAssist { LLMClientInterface::LLMClientInterface( const Settings::GeneralSettings &generalSettings, const Settings::CodeCompletionSettings &completeSettings, - PluginLLMCore::IProviderRegistry &providerRegistry, - PluginLLMCore::IPromptProvider *promptProvider, + Providers::IProviderRegistry &providerRegistry, + Templates::IPromptProvider *promptProvider, Context::IDocumentReader &documentReader, IRequestPerformanceLogger &performanceLogger) : m_generalSettings(generalSettings) @@ -135,7 +135,7 @@ void LLMClientInterface::sendData(const QByteArray &data) void LLMClientInterface::handleCancelRequest() { - QSet providers; + QSet providers; for (auto it = m_activeRequests.begin(); it != m_activeRequests.end(); ++it) { if (it.value().provider) { providers.insert(it.value().provider); @@ -279,14 +279,14 @@ void LLMClientInterface::handleCompletion(const QJsonObject &request) if (m_completeSettings.useSystemPrompt()) systemPrompt.append( m_completeSettings.useUserMessageTemplateForCC() - && promptTemplate->type() == PluginLLMCore::TemplateType::Chat + && promptTemplate->type() == Templates::TemplateType::Chat ? m_completeSettings.systemPromptForNonFimModels() : m_completeSettings.systemPrompt()); - auto project = PluginLLMCore::RulesLoader::getActiveProject(); + auto project = Context::RulesLoader::getActiveProject(); if (project) { QString projectRules - = PluginLLMCore::RulesLoader::loadRulesForProject(project, PluginLLMCore::RulesContext::Completions); + = Context::RulesLoader::loadRulesForProject(project, Context::RulesContext::Completions); if (!projectRules.isEmpty()) { systemPrompt += "\n\n# Project Rules\n\n" + projectRules; @@ -298,10 +298,10 @@ void LLMClientInterface::handleCompletion(const QJsonObject &request) systemPrompt.append(updatedContext.fileContext.value()); if (m_completeSettings.useOpenFilesContext()) { - if (provider->providerID() == PluginLLMCore::ProviderID::LlamaCpp) { + if (provider->providerID() == Providers::ProviderID::LlamaCpp) { for (const auto openedFilePath : m_contextManager->openedFiles({filePath})) { if (!updatedContext.filesMetadata) { - updatedContext.filesMetadata = QList(); + updatedContext.filesMetadata = QList(); } updatedContext.filesMetadata->append({openedFilePath.first, openedFilePath.second}); } @@ -312,7 +312,7 @@ void LLMClientInterface::handleCompletion(const QJsonObject &request) updatedContext.systemPrompt = systemPrompt; - if (promptTemplate->type() == PluginLLMCore::TemplateType::Chat) { + if (promptTemplate->type() == Templates::TemplateType::Chat) { QString userMessage; if (m_completeSettings.useUserMessageTemplateForCC()) { userMessage = m_completeSettings.processMessageToFIM( @@ -322,7 +322,7 @@ void LLMClientInterface::handleCompletion(const QJsonObject &request) } // TODO refactor add message - QVector messages; + QVector messages; messages.append({"user", userMessage}); updatedContext.history = messages; } @@ -331,7 +331,7 @@ void LLMClientInterface::handleCompletion(const QJsonObject &request) payload, promptTemplate, updatedContext, - PluginLLMCore::RequestType::CodeCompletion, + LLMCore::RequestType::CodeCompletion, false, false); @@ -363,7 +363,7 @@ void LLMClientInterface::handleCompletion(const QJsonObject &request) m_performanceLogger.startTimeMeasurement(requestId); } -PluginLLMCore::ContextData LLMClientInterface::prepareContext( +LLMCore::ContextData LLMClientInterface::prepareContext( const QJsonObject &request, const Context::DocumentInfo &documentInfo) { QJsonObject params = request["params"].toObject(); @@ -378,7 +378,7 @@ PluginLLMCore::ContextData LLMClientInterface::prepareContext( } QString LLMClientInterface::resolveEndpoint( - PluginLLMCore::PromptTemplate *promptTemplate, bool isLanguageSpecify) const + Templates::PromptTemplate *promptTemplate, bool isLanguageSpecify) const { const QString custom = isLanguageSpecify ? m_generalSettings.ccPreset1CustomEndpoint() : m_generalSettings.ccCustomEndpoint(); diff --git a/LLMClientInterface.hpp b/sources/completion/LLMClientInterface.hpp similarity index 83% rename from LLMClientInterface.hpp rename to sources/completion/LLMClientInterface.hpp index 5eb223e..53f046f 100644 --- a/LLMClientInterface.hpp +++ b/sources/completion/LLMClientInterface.hpp @@ -11,9 +11,9 @@ #include #include #include -#include -#include -#include +#include "llmcore/ContextData.hpp" +#include "templates/IPromptProvider.hpp" +#include "providers/IProviderRegistry.hpp" #include #include #include @@ -31,8 +31,8 @@ public: LLMClientInterface( const Settings::GeneralSettings &generalSettings, const Settings::CodeCompletionSettings &completeSettings, - PluginLLMCore::IProviderRegistry &providerRegistry, - PluginLLMCore::IPromptProvider *promptProvider, + Providers::IProviderRegistry &providerRegistry, + Templates::IPromptProvider *promptProvider, Context::IDocumentReader &documentReader, IRequestPerformanceLogger &performanceLogger); ~LLMClientInterface() override; @@ -70,19 +70,19 @@ private: struct RequestContext { QJsonObject originalRequest; - PluginLLMCore::Provider *provider; + Providers::Provider *provider; }; - PluginLLMCore::ContextData prepareContext( + LLMCore::ContextData prepareContext( const QJsonObject &request, const Context::DocumentInfo &documentInfo); QString resolveEndpoint( - PluginLLMCore::PromptTemplate *promptTemplate, bool isLanguageSpecify) const; + Templates::PromptTemplate *promptTemplate, bool isLanguageSpecify) const; const Settings::CodeCompletionSettings &m_completeSettings; const Settings::GeneralSettings &m_generalSettings; - PluginLLMCore::IPromptProvider *m_promptProvider = nullptr; - PluginLLMCore::IProviderRegistry &m_providerRegistry; + Templates::IPromptProvider *m_promptProvider = nullptr; + Providers::IProviderRegistry &m_providerRegistry; Context::IDocumentReader &m_documentReader; IRequestPerformanceLogger &m_performanceLogger; QElapsedTimer m_completionTimer; diff --git a/LLMSuggestion.cpp b/sources/completion/LLMSuggestion.cpp similarity index 99% rename from LLMSuggestion.cpp rename to sources/completion/LLMSuggestion.cpp index 3db553d..4b0a328 100644 --- a/LLMSuggestion.cpp +++ b/sources/completion/LLMSuggestion.cpp @@ -3,7 +3,7 @@ // SPDX-License-Identifier: GPL-3.0-or-later // Additional attribution terms under GPLv3 §7(b) apply — see LICENSE -#include "LLMSuggestion.hpp" +#include "completion/LLMSuggestion.hpp" #include #include #include diff --git a/LLMSuggestion.hpp b/sources/completion/LLMSuggestion.hpp similarity index 100% rename from LLMSuggestion.hpp rename to sources/completion/LLMSuggestion.hpp diff --git a/LSPCompletion.hpp b/sources/completion/LSPCompletion.hpp similarity index 100% rename from LSPCompletion.hpp rename to sources/completion/LSPCompletion.hpp diff --git a/QodeAssistClient.cpp b/sources/completion/QodeAssistClient.cpp similarity index 98% rename from QodeAssistClient.cpp rename to sources/completion/QodeAssistClient.cpp index 4980632..ca67562 100644 --- a/QodeAssistClient.cpp +++ b/sources/completion/QodeAssistClient.cpp @@ -24,7 +24,7 @@ * Additional attribution terms under GPLv3 §7(b) apply — see LICENSE */ -#include "QodeAssistClient.hpp" +#include "completion/QodeAssistClient.hpp" #include #include @@ -35,16 +35,16 @@ #include #include -#include "LLMClientInterface.hpp" -#include "LLMSuggestion.hpp" -#include "RefactorSuggestion.hpp" -#include "RefactorSuggestionHoverHandler.hpp" +#include "completion/LLMClientInterface.hpp" +#include "completion/LLMSuggestion.hpp" +#include "refactor/RefactorSuggestion.hpp" +#include "refactor/RefactorSuggestionHoverHandler.hpp" #include "settings/CodeCompletionSettings.hpp" #include "settings/GeneralSettings.hpp" #include "settings/ProjectSettings.hpp" #include "settings/QuickRefactorSettings.hpp" #include "widgets/RefactorWidgetHandler.hpp" -#include "RefactorContextHelper.hpp" +#include "refactor/RefactorContextHelper.hpp" #include #include diff --git a/QodeAssistClient.hpp b/sources/completion/QodeAssistClient.hpp similarity index 90% rename from QodeAssistClient.hpp rename to sources/completion/QodeAssistClient.hpp index d828ec1..a8f6e9d 100644 --- a/QodeAssistClient.hpp +++ b/sources/completion/QodeAssistClient.hpp @@ -7,17 +7,17 @@ #include -#include "LLMClientInterface.hpp" -#include "LSPCompletion.hpp" -#include "QuickRefactorHandler.hpp" -#include "RefactorSuggestionHoverHandler.hpp" +#include "completion/LLMClientInterface.hpp" +#include "completion/LSPCompletion.hpp" +#include "refactor/QuickRefactorHandler.hpp" +#include "refactor/RefactorSuggestionHoverHandler.hpp" #include "widgets/CompletionProgressHandler.hpp" #include "widgets/CompletionErrorHandler.hpp" #include "widgets/EditorChatButtonHandler.hpp" #include "widgets/RefactorWidgetHandler.hpp" #include -#include -#include +#include "templates/IPromptProvider.hpp" +#include "providers/IProviderRegistry.hpp" namespace QodeAssist { diff --git a/context/CMakeLists.txt b/sources/context/CMakeLists.txt similarity index 88% rename from context/CMakeLists.txt rename to sources/context/CMakeLists.txt index 0ef3d9f..26dff41 100644 --- a/context/CMakeLists.txt +++ b/sources/context/CMakeLists.txt @@ -10,6 +10,7 @@ add_library(Context STATIC IContextManager.hpp IgnoreManager.hpp IgnoreManager.cpp ProjectUtils.hpp ProjectUtils.cpp + RulesLoader.hpp RulesLoader.cpp ) target_link_libraries(Context @@ -21,8 +22,8 @@ target_link_libraries(Context QtCreator::Utils QtCreator::ProjectExplorer PRIVATE - PluginLLMCore + QodeAssistLogger QodeAssistSettings ) -target_include_directories(Context PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR}) +target_include_directories(Context PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/sources) diff --git a/context/ChangesManager.cpp b/sources/context/ChangesManager.cpp similarity index 100% rename from context/ChangesManager.cpp rename to sources/context/ChangesManager.cpp diff --git a/context/ChangesManager.h b/sources/context/ChangesManager.h similarity index 100% rename from context/ChangesManager.h rename to sources/context/ChangesManager.h diff --git a/context/ContentFile.hpp b/sources/context/ContentFile.hpp similarity index 100% rename from context/ContentFile.hpp rename to sources/context/ContentFile.hpp diff --git a/context/ContextManager.cpp b/sources/context/ContextManager.cpp similarity index 100% rename from context/ContextManager.cpp rename to sources/context/ContextManager.cpp diff --git a/context/ContextManager.hpp b/sources/context/ContextManager.hpp similarity index 100% rename from context/ContextManager.hpp rename to sources/context/ContextManager.hpp diff --git a/context/DocumentContextReader.cpp b/sources/context/DocumentContextReader.cpp similarity index 99% rename from context/DocumentContextReader.cpp rename to sources/context/DocumentContextReader.cpp index cc4db07..a1629cf 100644 --- a/context/DocumentContextReader.cpp +++ b/sources/context/DocumentContextReader.cpp @@ -254,7 +254,7 @@ CopyrightInfo DocumentContextReader::copyrightInfo() const return m_copyrightInfo; } -PluginLLMCore::ContextData DocumentContextReader::prepareContext( +LLMCore::ContextData DocumentContextReader::prepareContext( int lineNumber, int cursorPosition, const Settings::CodeCompletionSettings &settings) const { QString contextBefore; diff --git a/context/DocumentContextReader.hpp b/sources/context/DocumentContextReader.hpp similarity index 96% rename from context/DocumentContextReader.hpp rename to sources/context/DocumentContextReader.hpp index 8361eef..dd623d2 100644 --- a/context/DocumentContextReader.hpp +++ b/sources/context/DocumentContextReader.hpp @@ -7,7 +7,7 @@ #include #include -#include +#include "llmcore/ContextData.hpp" #include namespace QodeAssist::Context { @@ -58,7 +58,7 @@ public: CopyrightInfo copyrightInfo() const; - PluginLLMCore::ContextData prepareContext( + LLMCore::ContextData prepareContext( int lineNumber, int cursorPosition, const Settings::CodeCompletionSettings &settings) const; private: diff --git a/context/DocumentReaderQtCreator.hpp b/sources/context/DocumentReaderQtCreator.hpp similarity index 100% rename from context/DocumentReaderQtCreator.hpp rename to sources/context/DocumentReaderQtCreator.hpp diff --git a/context/IContextManager.hpp b/sources/context/IContextManager.hpp similarity index 100% rename from context/IContextManager.hpp rename to sources/context/IContextManager.hpp diff --git a/context/IDocumentReader.hpp b/sources/context/IDocumentReader.hpp similarity index 100% rename from context/IDocumentReader.hpp rename to sources/context/IDocumentReader.hpp diff --git a/context/IgnoreManager.cpp b/sources/context/IgnoreManager.cpp similarity index 100% rename from context/IgnoreManager.cpp rename to sources/context/IgnoreManager.cpp diff --git a/context/IgnoreManager.hpp b/sources/context/IgnoreManager.hpp similarity index 100% rename from context/IgnoreManager.hpp rename to sources/context/IgnoreManager.hpp diff --git a/context/ProgrammingLanguage.cpp b/sources/context/ProgrammingLanguage.cpp similarity index 100% rename from context/ProgrammingLanguage.cpp rename to sources/context/ProgrammingLanguage.cpp diff --git a/context/ProgrammingLanguage.hpp b/sources/context/ProgrammingLanguage.hpp similarity index 100% rename from context/ProgrammingLanguage.hpp rename to sources/context/ProgrammingLanguage.hpp diff --git a/context/ProjectUtils.cpp b/sources/context/ProjectUtils.cpp similarity index 100% rename from context/ProjectUtils.cpp rename to sources/context/ProjectUtils.cpp diff --git a/context/ProjectUtils.hpp b/sources/context/ProjectUtils.hpp similarity index 100% rename from context/ProjectUtils.hpp rename to sources/context/ProjectUtils.hpp diff --git a/pluginllmcore/RulesLoader.cpp b/sources/context/RulesLoader.cpp similarity index 97% rename from pluginllmcore/RulesLoader.cpp rename to sources/context/RulesLoader.cpp index 4947cf7..c2a40be 100644 --- a/pluginllmcore/RulesLoader.cpp +++ b/sources/context/RulesLoader.cpp @@ -2,7 +2,7 @@ // SPDX-License-Identifier: GPL-3.0-or-later // Additional attribution terms under GPLv3 §7(b) apply — see LICENSE -#include "RulesLoader.hpp" +#include "context/RulesLoader.hpp" #include #include @@ -11,7 +11,7 @@ #include #include -namespace QodeAssist::PluginLLMCore { +namespace QodeAssist::Context { QString RulesLoader::loadRules(const QString &projectPath, RulesContext context) { @@ -163,4 +163,4 @@ QVector RulesLoader::collectMarkdownFiles( return result; } -} // namespace QodeAssist::PluginLLMCore +} // namespace QodeAssist::Context diff --git a/pluginllmcore/RulesLoader.hpp b/sources/context/RulesLoader.hpp similarity index 94% rename from pluginllmcore/RulesLoader.hpp rename to sources/context/RulesLoader.hpp index 9b17323..55b5f30 100644 --- a/pluginllmcore/RulesLoader.hpp +++ b/sources/context/RulesLoader.hpp @@ -10,7 +10,7 @@ namespace ProjectExplorer { class Project; } -namespace QodeAssist::PluginLLMCore { +namespace QodeAssist::Context { enum class RulesContext { Completions, Chat, QuickRefactor }; @@ -39,4 +39,4 @@ private: static QString getProjectPath(ProjectExplorer::Project *project); }; -} // namespace QodeAssist::PluginLLMCore +} // namespace QodeAssist::Context diff --git a/context/TokenUtils.cpp b/sources/context/TokenUtils.cpp similarity index 100% rename from context/TokenUtils.cpp rename to sources/context/TokenUtils.cpp diff --git a/context/TokenUtils.hpp b/sources/context/TokenUtils.hpp similarity index 100% rename from context/TokenUtils.hpp rename to sources/context/TokenUtils.hpp diff --git a/context/Utils.hpp b/sources/context/Utils.hpp similarity index 100% rename from context/Utils.hpp rename to sources/context/Utils.hpp diff --git a/pluginllmcore/ContextData.hpp b/sources/llmcore/ContextData.hpp similarity index 95% rename from pluginllmcore/ContextData.hpp rename to sources/llmcore/ContextData.hpp index 11fea58..1ea4b3c 100644 --- a/pluginllmcore/ContextData.hpp +++ b/sources/llmcore/ContextData.hpp @@ -8,7 +8,7 @@ #include #include -namespace QodeAssist::PluginLLMCore { +namespace QodeAssist::LLMCore { struct ImageAttachment { @@ -65,4 +65,4 @@ struct ContextData bool operator==(const ContextData &) const = default; }; -} // namespace QodeAssist::PluginLLMCore +} // namespace QodeAssist::LLMCore diff --git a/pluginllmcore/RequestType.hpp b/sources/llmcore/RequestType.hpp similarity index 87% rename from pluginllmcore/RequestType.hpp rename to sources/llmcore/RequestType.hpp index 5dffc48..cb925c6 100644 --- a/pluginllmcore/RequestType.hpp +++ b/sources/llmcore/RequestType.hpp @@ -6,7 +6,7 @@ #pragma once -namespace QodeAssist::PluginLLMCore { +namespace QodeAssist::LLMCore { enum RequestType { CodeCompletion, Chat, Embedding, QuickRefactoring }; diff --git a/logger/CMakeLists.txt b/sources/logger/CMakeLists.txt similarity index 100% rename from logger/CMakeLists.txt rename to sources/logger/CMakeLists.txt diff --git a/logger/IRequestPerformanceLogger.hpp b/sources/logger/IRequestPerformanceLogger.hpp similarity index 100% rename from logger/IRequestPerformanceLogger.hpp rename to sources/logger/IRequestPerformanceLogger.hpp diff --git a/logger/Logger.cpp b/sources/logger/Logger.cpp similarity index 100% rename from logger/Logger.cpp rename to sources/logger/Logger.cpp diff --git a/logger/Logger.hpp b/sources/logger/Logger.hpp similarity index 100% rename from logger/Logger.hpp rename to sources/logger/Logger.hpp diff --git a/logger/RequestPerformanceLogger.cpp b/sources/logger/RequestPerformanceLogger.cpp similarity index 100% rename from logger/RequestPerformanceLogger.cpp rename to sources/logger/RequestPerformanceLogger.cpp diff --git a/logger/RequestPerformanceLogger.hpp b/sources/logger/RequestPerformanceLogger.hpp similarity index 100% rename from logger/RequestPerformanceLogger.hpp rename to sources/logger/RequestPerformanceLogger.hpp diff --git a/mcp/McpClientsManager.cpp b/sources/mcp/McpClientsManager.cpp similarity index 96% rename from mcp/McpClientsManager.cpp rename to sources/mcp/McpClientsManager.cpp index 0c9975a..43a9175 100644 --- a/mcp/McpClientsManager.cpp +++ b/sources/mcp/McpClientsManager.cpp @@ -16,8 +16,8 @@ #include #include -#include -#include +#include "providers/Provider.hpp" +#include "providers/ProvidersManager.hpp" #include namespace QodeAssist::Mcp { @@ -176,15 +176,15 @@ QList McpClientsManager::connections() const return m_connections; } -QList McpClientsManager::toolsCapableProviders() const +QList McpClientsManager::toolsCapableProviders() const { - QList out; - auto &pm = PluginLLMCore::ProvidersManager::instance(); + QList out; + auto &pm = Providers::ProvidersManager::instance(); for (const QString &name : pm.providersNames()) { auto *p = pm.getProviderByName(name); if (!p) continue; - if (p->capabilities().testFlag(PluginLLMCore::ProviderCapability::Tools)) + if (p->capabilities().testFlag(Providers::ProviderCapability::Tools)) out.append(p); } return out; diff --git a/mcp/McpClientsManager.hpp b/sources/mcp/McpClientsManager.hpp similarity index 95% rename from mcp/McpClientsManager.hpp rename to sources/mcp/McpClientsManager.hpp index 31aa079..d499c9f 100644 --- a/mcp/McpClientsManager.hpp +++ b/sources/mcp/McpClientsManager.hpp @@ -50,7 +50,7 @@ private: void setupWatcher(); void updateWatchedPaths(); - QList toolsCapableProviders() const; + QList toolsCapableProviders() const; static QJsonObject builtinServers(); QJsonObject readRoot() const; bool writeRoot(const QJsonObject &root); diff --git a/mcp/McpServerConnection.cpp b/sources/mcp/McpServerConnection.cpp similarity index 98% rename from mcp/McpServerConnection.cpp rename to sources/mcp/McpServerConnection.cpp index 736cad7..ad4c013 100644 --- a/mcp/McpServerConnection.cpp +++ b/sources/mcp/McpServerConnection.cpp @@ -23,7 +23,7 @@ #include #include -#include +#include "providers/Provider.hpp" #include namespace QodeAssist::Mcp { @@ -35,11 +35,11 @@ QString transportToString(McpTransportKind k) return k == McpTransportKind::Http ? QStringLiteral("http") : QStringLiteral("stdio"); } -bool providerSupportsTools(PluginLLMCore::Provider *p) +bool providerSupportsTools(Providers::Provider *p) { if (!p) return false; - return p->capabilities().testFlag(PluginLLMCore::ProviderCapability::Tools); + return p->capabilities().testFlag(Providers::ProviderCapability::Tools); } } // namespace @@ -133,7 +133,7 @@ McpServerConnection::~McpServerConnection() disconnectFromServer(); } -void McpServerConnection::setProviders(const QList &providers) +void McpServerConnection::setProviders(const QList &providers) { m_providers.clear(); for (auto *p : providers) { diff --git a/mcp/McpServerConnection.hpp b/sources/mcp/McpServerConnection.hpp similarity index 93% rename from mcp/McpServerConnection.hpp rename to sources/mcp/McpServerConnection.hpp index 4b31adc..6f12d55 100644 --- a/mcp/McpServerConnection.hpp +++ b/sources/mcp/McpServerConnection.hpp @@ -19,7 +19,7 @@ class McpClient; class McpTransport; } // namespace LLMQore::Mcp -namespace QodeAssist::PluginLLMCore { +namespace QodeAssist::Providers { class Provider; } @@ -64,7 +64,7 @@ public: int toolCount() const { return m_toolIds.size(); } QStringList toolNames() const { return m_toolIds; } - void setProviders(const QList &providers); + void setProviders(const QList &providers); void connectToServer(); void disconnectFromServer(); @@ -87,7 +87,7 @@ private: QPointer<::LLMQore::Mcp::McpTransport> m_transport; QPointer m_listToolsWatchdog; - QList> m_providers; + QList> m_providers; QStringList m_toolIds; }; diff --git a/mcp/McpServerManager.cpp b/sources/mcp/McpServerManager.cpp similarity index 100% rename from mcp/McpServerManager.cpp rename to sources/mcp/McpServerManager.cpp diff --git a/mcp/McpServerManager.hpp b/sources/mcp/McpServerManager.hpp similarity index 100% rename from mcp/McpServerManager.hpp rename to sources/mcp/McpServerManager.hpp diff --git a/ConfigurationManager.cpp b/sources/plugin/ConfigurationManager.cpp similarity index 95% rename from ConfigurationManager.cpp rename to sources/plugin/ConfigurationManager.cpp index 4bdfc18..89a8f30 100644 --- a/ConfigurationManager.cpp +++ b/sources/plugin/ConfigurationManager.cpp @@ -7,7 +7,7 @@ #include #include -#include "QodeAssisttr.h" +#include "plugin/QodeAssisttr.h" namespace QodeAssist { @@ -26,7 +26,7 @@ void ConfigurationManager::init() void ConfigurationManager::updateTemplateDescription(const Utils::StringAspect &templateAspect) { - PluginLLMCore::PromptTemplate *templ = m_templateManger.getFimTemplateByName(templateAspect.value()); + Templates::PromptTemplate *templ = m_templateManger.getFimTemplateByName(templateAspect.value()); if (!templ) { return; @@ -50,7 +50,7 @@ void ConfigurationManager::updateAllTemplateDescriptions() void ConfigurationManager::checkTemplate(const Utils::StringAspect &templateAspect) { - PluginLLMCore::PromptTemplate *templ = m_templateManger.getFimTemplateByName(templateAspect.value()); + Templates::PromptTemplate *templ = m_templateManger.getFimTemplateByName(templateAspect.value()); if (templ->name() == templateAspect.value()) return; @@ -71,8 +71,8 @@ void ConfigurationManager::checkAllTemplate() ConfigurationManager::ConfigurationManager(QObject *parent) : QObject(parent) , m_generalSettings(Settings::generalSettings()) - , m_providersManager(PluginLLMCore::ProvidersManager::instance()) - , m_templateManger(PluginLLMCore::PromptTemplateManager::instance()) + , m_providersManager(Providers::ProvidersManager::instance()) + , m_templateManger(Templates::PromptTemplateManager::instance()) {} void ConfigurationManager::setupConnections() @@ -161,7 +161,7 @@ void ConfigurationManager::selectModel() : m_generalSettings.caModel); if (auto provider = m_providersManager.getProviderByName(providerName)) { - if (!provider->capabilities().testFlag(PluginLLMCore::ProviderCapability::ModelListing)) { + if (!provider->capabilities().testFlag(Providers::ProviderCapability::ModelListing)) { m_generalSettings.showModelsNotSupportedDialog(*targetSettings); return; } diff --git a/ConfigurationManager.hpp b/sources/plugin/ConfigurationManager.hpp similarity index 83% rename from ConfigurationManager.hpp rename to sources/plugin/ConfigurationManager.hpp index 0cd10b1..f4e04c7 100644 --- a/ConfigurationManager.hpp +++ b/sources/plugin/ConfigurationManager.hpp @@ -6,8 +6,8 @@ #include -#include "pluginllmcore/PromptTemplateManager.hpp" -#include "pluginllmcore/ProvidersManager.hpp" +#include "templates/PromptTemplateManager.hpp" +#include "providers/ProvidersManager.hpp" #include "settings/GeneralSettings.hpp" namespace QodeAssist { @@ -39,8 +39,8 @@ private: ConfigurationManager &operator=(const ConfigurationManager &) = delete; Settings::GeneralSettings &m_generalSettings; - PluginLLMCore::ProvidersManager &m_providersManager; - PluginLLMCore::PromptTemplateManager &m_templateManger; + Providers::ProvidersManager &m_providersManager; + Templates::PromptTemplateManager &m_templateManger; void setupConnections(); }; diff --git a/QodeAssistConstants.hpp b/sources/plugin/QodeAssistConstants.hpp similarity index 100% rename from QodeAssistConstants.hpp rename to sources/plugin/QodeAssistConstants.hpp diff --git a/QodeAssisttr.h b/sources/plugin/QodeAssisttr.h similarity index 100% rename from QodeAssisttr.h rename to sources/plugin/QodeAssisttr.h diff --git a/UpdateStatusWidget.cpp b/sources/plugin/UpdateStatusWidget.cpp similarity index 100% rename from UpdateStatusWidget.cpp rename to sources/plugin/UpdateStatusWidget.cpp diff --git a/UpdateStatusWidget.hpp b/sources/plugin/UpdateStatusWidget.hpp similarity index 100% rename from UpdateStatusWidget.hpp rename to sources/plugin/UpdateStatusWidget.hpp diff --git a/Version.hpp b/sources/plugin/Version.hpp similarity index 100% rename from Version.hpp rename to sources/plugin/Version.hpp diff --git a/qodeassist.cpp b/sources/plugin/qodeassist.cpp similarity index 97% rename from qodeassist.cpp rename to sources/plugin/qodeassist.cpp index 1964f7e..f8c2200 100644 --- a/qodeassist.cpp +++ b/sources/plugin/qodeassist.cpp @@ -4,8 +4,8 @@ #include -#include "QodeAssistConstants.hpp" -#include "QodeAssisttr.h" +#include "plugin/QodeAssistConstants.hpp" +#include "plugin/QodeAssisttr.h" #include "settings/PluginUpdater.hpp" #include "settings/UpdateDialog.hpp" @@ -35,20 +35,20 @@ #include #include "ConfigurationManager.hpp" -#include "QodeAssistClient.hpp" +#include "completion/QodeAssistClient.hpp" #include "UpdateStatusWidget.hpp" -#include "Version.hpp" +#include "plugin/Version.hpp" #include "chat/ChatEditor.hpp" #include "chat/ChatEditorFactory.hpp" #include "chat/ChatOutputPane.h" #include "chat/NavigationPanel.hpp" #include "context/DocumentReaderQtCreator.hpp" -#include "pluginllmcore/PromptProviderFim.hpp" -#include "pluginllmcore/ProvidersManager.hpp" +#include "templates/PromptProviderFim.hpp" +#include "providers/ProvidersManager.hpp" #include "logger/RequestPerformanceLogger.hpp" #include "mcp/McpClientsManager.hpp" #include "mcp/McpServerManager.hpp" -#include "sources/skills/SkillsManager.hpp" +#include "skills/SkillsManager.hpp" #include "tools/ToolsRegistration.hpp" #include "providers/Providers.hpp" #include "settings/ChatAssistantSettings.hpp" @@ -87,7 +87,7 @@ class QodeAssistPlugin final : public ExtensionSystem::IPlugin public: QodeAssistPlugin() : m_updater(new PluginUpdater(this)) - , m_promptProvider(PluginLLMCore::PromptTemplateManager::instance()) + , m_promptProvider(Templates::PromptTemplateManager::instance()) {} ~QodeAssistPlugin() final @@ -174,7 +174,7 @@ public: m_skillsManager = new Skills::SkillsManager{this}; { - auto &providers = PluginLLMCore::ProvidersManager::instance(); + auto &providers = Providers::ProvidersManager::instance(); for (const QString &providerName : providers.providersNames()) { if (auto *provider = providers.getProviderByName(providerName)) { if (auto *toolsManager = provider->toolsManager()) @@ -315,7 +315,7 @@ public: m_qodeAssistClient = new QodeAssistClient(new LLMClientInterface( Settings::generalSettings(), Settings::codeCompletionSettings(), - PluginLLMCore::ProvidersManager::instance(), + Providers::ProvidersManager::instance(), &m_promptProvider, m_documentReader, m_performanceLogger)); @@ -476,7 +476,7 @@ private: } QPointer m_qodeAssistClient; - PluginLLMCore::PromptProviderFim m_promptProvider; + Templates::PromptProviderFim m_promptProvider; Context::DocumentReaderQtCreator m_documentReader; RequestPerformanceLogger m_performanceLogger; QPointer m_chatOutputPane; diff --git a/providers/ClaudeCacheControl.hpp b/sources/providers/ClaudeCacheControl.hpp similarity index 100% rename from providers/ClaudeCacheControl.hpp rename to sources/providers/ClaudeCacheControl.hpp diff --git a/providers/ClaudeProvider.cpp b/sources/providers/ClaudeProvider.cpp similarity index 85% rename from providers/ClaudeProvider.cpp rename to sources/providers/ClaudeProvider.cpp index 4c1bedf..ff14b9c 100644 --- a/providers/ClaudeProvider.cpp +++ b/sources/providers/ClaudeProvider.cpp @@ -22,7 +22,7 @@ namespace QodeAssist::Providers { ClaudeProvider::ClaudeProvider(QObject *parent) - : PluginLLMCore::Provider(parent) + : Providers::Provider(parent) , m_client(new ::LLMQore::ClaudeClient(QString(), QString(), QString(), this)) { Tools::registerQodeAssistTools(m_client->tools()); @@ -45,9 +45,9 @@ QString ClaudeProvider::url() const void ClaudeProvider::prepareRequest( QJsonObject &request, - PluginLLMCore::PromptTemplate *prompt, - PluginLLMCore::ContextData context, - PluginLLMCore::RequestType type, + Templates::PromptTemplate *prompt, + LLMCore::ContextData context, + LLMCore::RequestType type, bool isToolsEnabled, bool isThinkingEnabled) { @@ -94,10 +94,10 @@ void ClaudeProvider::prepareRequest( request["temperature"] = 1.0; }; - if (type == PluginLLMCore::RequestType::CodeCompletion) { + if (type == LLMCore::RequestType::CodeCompletion) { applyModelParams(Settings::codeCompletionSettings()); request["temperature"] = Settings::codeCompletionSettings().temperature(); - } else if (type == PluginLLMCore::RequestType::QuickRefactoring) { + } else if (type == LLMCore::RequestType::QuickRefactoring) { const auto &qrSettings = Settings::quickRefactorSettings(); applyModelParams(qrSettings); @@ -128,7 +128,7 @@ void ClaudeProvider::prepareRequest( const auto &ps = Settings::providerSettings(); const bool cachingOn = ps.claudeEnablePromptCaching() - && type != PluginLLMCore::RequestType::CodeCompletion; + && type != LLMCore::RequestType::CodeCompletion; m_client->setUseExtendedCacheTTL(cachingOn && ps.claudeUseExtendedCacheTTL()); if (cachingOn) { ClaudeCacheControl::apply(request, ps.claudeUseExtendedCacheTTL()); @@ -142,16 +142,16 @@ QFuture> ClaudeProvider::getInstalledModels(const QString &baseUr return m_client->listModels(); } -PluginLLMCore::ProviderID ClaudeProvider::providerID() const +Providers::ProviderID ClaudeProvider::providerID() const { - return PluginLLMCore::ProviderID::Claude; + return Providers::ProviderID::Claude; } -PluginLLMCore::ProviderCapabilities ClaudeProvider::capabilities() const +Providers::ProviderCapabilities ClaudeProvider::capabilities() const { - return PluginLLMCore::ProviderCapability::Tools | PluginLLMCore::ProviderCapability::Thinking - | PluginLLMCore::ProviderCapability::Image - | PluginLLMCore::ProviderCapability::ModelListing; + return Providers::ProviderCapability::Tools | Providers::ProviderCapability::Thinking + | Providers::ProviderCapability::Image + | Providers::ProviderCapability::ModelListing; } ::LLMQore::BaseClient *ClaudeProvider::client() const diff --git a/providers/ClaudeProvider.hpp b/sources/providers/ClaudeProvider.hpp similarity index 68% rename from providers/ClaudeProvider.hpp rename to sources/providers/ClaudeProvider.hpp index d0c6015..7dd0888 100644 --- a/providers/ClaudeProvider.hpp +++ b/sources/providers/ClaudeProvider.hpp @@ -4,13 +4,13 @@ #pragma once -#include +#include "providers/Provider.hpp" #include namespace QodeAssist::Providers { -class ClaudeProvider : public PluginLLMCore::Provider +class ClaudeProvider : public Providers::Provider { Q_OBJECT public: @@ -20,14 +20,14 @@ public: QString url() const override; void prepareRequest( QJsonObject &request, - PluginLLMCore::PromptTemplate *prompt, - PluginLLMCore::ContextData context, - PluginLLMCore::RequestType type, + Templates::PromptTemplate *prompt, + LLMCore::ContextData context, + LLMCore::RequestType type, bool isToolsEnabled, bool isThinkingEnabled) override; QFuture> getInstalledModels(const QString &url) override; - PluginLLMCore::ProviderID providerID() const override; - PluginLLMCore::ProviderCapabilities capabilities() const override; + Providers::ProviderID providerID() const override; + Providers::ProviderCapabilities capabilities() const override; ::LLMQore::BaseClient *client() const override; QString apiKey() const override; diff --git a/providers/CodestralProvider.cpp b/sources/providers/CodestralProvider.cpp similarity index 79% rename from providers/CodestralProvider.cpp rename to sources/providers/CodestralProvider.cpp index 624bcef..e52c65f 100644 --- a/providers/CodestralProvider.cpp +++ b/sources/providers/CodestralProvider.cpp @@ -27,9 +27,9 @@ QString CodestralProvider::url() const return "https://codestral.mistral.ai"; } -PluginLLMCore::ProviderCapabilities CodestralProvider::capabilities() const +Providers::ProviderCapabilities CodestralProvider::capabilities() const { - return PluginLLMCore::ProviderCapability::Tools | PluginLLMCore::ProviderCapability::Image; + return Providers::ProviderCapability::Tools | Providers::ProviderCapability::Image; } } // namespace QodeAssist::Providers diff --git a/providers/CodestralProvider.hpp b/sources/providers/CodestralProvider.hpp similarity index 87% rename from providers/CodestralProvider.hpp rename to sources/providers/CodestralProvider.hpp index 8d5b4f6..315e8fe 100644 --- a/providers/CodestralProvider.hpp +++ b/sources/providers/CodestralProvider.hpp @@ -16,7 +16,7 @@ public: QString name() const override; QString url() const override; QString apiKey() const override; - PluginLLMCore::ProviderCapabilities capabilities() const override; + Providers::ProviderCapabilities capabilities() const override; }; } // namespace QodeAssist::Providers diff --git a/providers/DeepSeekProvider.cpp b/sources/providers/DeepSeekProvider.cpp similarity index 80% rename from providers/DeepSeekProvider.cpp rename to sources/providers/DeepSeekProvider.cpp index ccf9dca..8b8a4dd 100644 --- a/providers/DeepSeekProvider.cpp +++ b/sources/providers/DeepSeekProvider.cpp @@ -20,7 +20,7 @@ namespace QodeAssist::Providers { DeepSeekProvider::DeepSeekProvider(QObject *parent) - : PluginLLMCore::Provider(parent) + : Providers::Provider(parent) , m_client(new ::LLMQore::OpenAIClient(QString(), QString(), QString(), this)) { Tools::registerQodeAssistTools(m_client->tools()); @@ -48,23 +48,23 @@ QFuture> DeepSeekProvider::getInstalledModels(const QString &url) return m_client->listModels(); } -PluginLLMCore::ProviderID DeepSeekProvider::providerID() const +Providers::ProviderID DeepSeekProvider::providerID() const { - return PluginLLMCore::ProviderID::DeepSeek; + return Providers::ProviderID::DeepSeek; } -PluginLLMCore::ProviderCapabilities DeepSeekProvider::capabilities() const +Providers::ProviderCapabilities DeepSeekProvider::capabilities() const { - return PluginLLMCore::ProviderCapability::Tools - | PluginLLMCore::ProviderCapability::Thinking - | PluginLLMCore::ProviderCapability::ModelListing; + return Providers::ProviderCapability::Tools + | Providers::ProviderCapability::Thinking + | Providers::ProviderCapability::ModelListing; } void DeepSeekProvider::prepareRequest( QJsonObject &request, - PluginLLMCore::PromptTemplate *prompt, - PluginLLMCore::ContextData context, - PluginLLMCore::RequestType type, + Templates::PromptTemplate *prompt, + LLMCore::ContextData context, + LLMCore::RequestType type, bool isToolsEnabled, bool isThinkingEnabled) { @@ -86,9 +86,9 @@ void DeepSeekProvider::prepareRequest( request["presence_penalty"] = settings.presencePenalty(); }; - if (type == PluginLLMCore::RequestType::CodeCompletion) { + if (type == LLMCore::RequestType::CodeCompletion) { applyModelParams(Settings::codeCompletionSettings()); - } else if (type == PluginLLMCore::RequestType::QuickRefactoring) { + } else if (type == LLMCore::RequestType::QuickRefactoring) { applyModelParams(Settings::quickRefactorSettings()); } else { applyModelParams(Settings::chatAssistantSettings()); diff --git a/providers/DeepSeekProvider.hpp b/sources/providers/DeepSeekProvider.hpp similarity index 68% rename from providers/DeepSeekProvider.hpp rename to sources/providers/DeepSeekProvider.hpp index ab09232..6189ea0 100644 --- a/providers/DeepSeekProvider.hpp +++ b/sources/providers/DeepSeekProvider.hpp @@ -5,11 +5,11 @@ #pragma once #include -#include +#include "providers/Provider.hpp" namespace QodeAssist::Providers { -class DeepSeekProvider : public PluginLLMCore::Provider +class DeepSeekProvider : public Providers::Provider { Q_OBJECT public: @@ -19,14 +19,14 @@ public: QString url() const override; void prepareRequest( QJsonObject &request, - PluginLLMCore::PromptTemplate *prompt, - PluginLLMCore::ContextData context, - PluginLLMCore::RequestType type, + Templates::PromptTemplate *prompt, + LLMCore::ContextData context, + LLMCore::RequestType type, bool isToolsEnabled, bool isThinkingEnabled) override; QFuture> getInstalledModels(const QString &url) override; - PluginLLMCore::ProviderID providerID() const override; - PluginLLMCore::ProviderCapabilities capabilities() const override; + Providers::ProviderID providerID() const override; + Providers::ProviderCapabilities capabilities() const override; ::LLMQore::BaseClient *client() const override; QString apiKey() const override; diff --git a/providers/GoogleAIProvider.cpp b/sources/providers/GoogleAIProvider.cpp similarity index 84% rename from providers/GoogleAIProvider.cpp rename to sources/providers/GoogleAIProvider.cpp index b47cfa0..43a6b41 100644 --- a/providers/GoogleAIProvider.cpp +++ b/sources/providers/GoogleAIProvider.cpp @@ -22,7 +22,7 @@ namespace QodeAssist::Providers { GoogleAIProvider::GoogleAIProvider(QObject *parent) - : PluginLLMCore::Provider(parent) + : Providers::Provider(parent) , m_client(new ::LLMQore::GoogleAIClient(QString(), QString(), QString(), this)) { Tools::registerQodeAssistTools(m_client->tools()); @@ -45,9 +45,9 @@ QString GoogleAIProvider::url() const void GoogleAIProvider::prepareRequest( QJsonObject &request, - PluginLLMCore::PromptTemplate *prompt, - PluginLLMCore::ContextData context, - PluginLLMCore::RequestType type, + Templates::PromptTemplate *prompt, + LLMCore::ContextData context, + LLMCore::RequestType type, bool isToolsEnabled, bool isThinkingEnabled) { @@ -92,9 +92,9 @@ void GoogleAIProvider::prepareRequest( request["generationConfig"] = generationConfig; }; - if (type == PluginLLMCore::RequestType::CodeCompletion) { + if (type == LLMCore::RequestType::CodeCompletion) { applyModelParams(Settings::codeCompletionSettings()); - } else if (type == PluginLLMCore::RequestType::QuickRefactoring) { + } else if (type == LLMCore::RequestType::QuickRefactoring) { const auto &qrSettings = Settings::quickRefactorSettings(); if (isThinkingEnabled) { @@ -128,16 +128,16 @@ QFuture> GoogleAIProvider::getInstalledModels(const QString &base return m_client->listModels(); } -PluginLLMCore::ProviderID GoogleAIProvider::providerID() const +Providers::ProviderID GoogleAIProvider::providerID() const { - return PluginLLMCore::ProviderID::GoogleAI; + return Providers::ProviderID::GoogleAI; } -PluginLLMCore::ProviderCapabilities GoogleAIProvider::capabilities() const +Providers::ProviderCapabilities GoogleAIProvider::capabilities() const { - return PluginLLMCore::ProviderCapability::Tools | PluginLLMCore::ProviderCapability::Thinking - | PluginLLMCore::ProviderCapability::Image - | PluginLLMCore::ProviderCapability::ModelListing; + return Providers::ProviderCapability::Tools | Providers::ProviderCapability::Thinking + | Providers::ProviderCapability::Image + | Providers::ProviderCapability::ModelListing; } LLMQore::RequestID GoogleAIProvider::sendRequest( @@ -150,7 +150,7 @@ LLMQore::RequestID GoogleAIProvider::sendRequest( } cleaned.remove("stream"); - return PluginLLMCore::Provider::sendRequest(url, cleaned, endpoint); + return Providers::Provider::sendRequest(url, cleaned, endpoint); } ::LLMQore::BaseClient *GoogleAIProvider::client() const diff --git a/providers/GoogleAIProvider.hpp b/sources/providers/GoogleAIProvider.hpp similarity index 71% rename from providers/GoogleAIProvider.hpp rename to sources/providers/GoogleAIProvider.hpp index beb866d..4614aba 100644 --- a/providers/GoogleAIProvider.hpp +++ b/sources/providers/GoogleAIProvider.hpp @@ -4,13 +4,13 @@ #pragma once -#include +#include "providers/Provider.hpp" #include namespace QodeAssist::Providers { -class GoogleAIProvider : public PluginLLMCore::Provider +class GoogleAIProvider : public Providers::Provider { Q_OBJECT public: @@ -20,14 +20,14 @@ public: QString url() const override; void prepareRequest( QJsonObject &request, - PluginLLMCore::PromptTemplate *prompt, - PluginLLMCore::ContextData context, - PluginLLMCore::RequestType type, + Templates::PromptTemplate *prompt, + LLMCore::ContextData context, + LLMCore::RequestType type, bool isToolsEnabled, bool isThinkingEnabled) override; QFuture> getInstalledModels(const QString &url) override; - PluginLLMCore::ProviderID providerID() const override; - PluginLLMCore::ProviderCapabilities capabilities() const override; + Providers::ProviderID providerID() const override; + Providers::ProviderCapabilities capabilities() const override; LLMQore::RequestID sendRequest( const QUrl &url, const QJsonObject &payload, const QString &endpoint) override; diff --git a/pluginllmcore/IProviderRegistry.hpp b/sources/providers/IProviderRegistry.hpp similarity index 79% rename from pluginllmcore/IProviderRegistry.hpp rename to sources/providers/IProviderRegistry.hpp index d5df8d1..df1aea9 100644 --- a/pluginllmcore/IProviderRegistry.hpp +++ b/sources/providers/IProviderRegistry.hpp @@ -4,9 +4,9 @@ #pragma once -#include "Provider.hpp" +#include "providers/Provider.hpp" -namespace QodeAssist::PluginLLMCore { +namespace QodeAssist::Providers { class IProviderRegistry { @@ -18,4 +18,4 @@ public: virtual QStringList providersNames() const = 0; }; -} // namespace QodeAssist::PluginLLMCore +} // namespace QodeAssist::Providers diff --git a/providers/LMStudioProvider.cpp b/sources/providers/LMStudioProvider.cpp similarity index 80% rename from providers/LMStudioProvider.cpp rename to sources/providers/LMStudioProvider.cpp index a93a77c..fe6ad0a 100644 --- a/providers/LMStudioProvider.cpp +++ b/sources/providers/LMStudioProvider.cpp @@ -22,7 +22,7 @@ namespace QodeAssist::Providers { LMStudioProvider::LMStudioProvider(QObject *parent) - : PluginLLMCore::Provider(parent) + : Providers::Provider(parent) , m_client(new ::LLMQore::OpenAIClient(QString(), QString(), QString(), this)) { Tools::registerQodeAssistTools(m_client->tools()); @@ -50,23 +50,23 @@ QFuture> LMStudioProvider::getInstalledModels(const QString &url) return m_client->listModels(); } -PluginLLMCore::ProviderID LMStudioProvider::providerID() const +Providers::ProviderID LMStudioProvider::providerID() const { - return PluginLLMCore::ProviderID::LMStudio; + return Providers::ProviderID::LMStudio; } -PluginLLMCore::ProviderCapabilities LMStudioProvider::capabilities() const +Providers::ProviderCapabilities LMStudioProvider::capabilities() const { - return PluginLLMCore::ProviderCapability::Tools | PluginLLMCore::ProviderCapability::Image - | PluginLLMCore::ProviderCapability::ModelListing - | PluginLLMCore::ProviderCapability::Thinking; + return Providers::ProviderCapability::Tools | Providers::ProviderCapability::Image + | Providers::ProviderCapability::ModelListing + | Providers::ProviderCapability::Thinking; } void LMStudioProvider::prepareRequest( QJsonObject &request, - PluginLLMCore::PromptTemplate *prompt, - PluginLLMCore::ContextData context, - PluginLLMCore::RequestType type, + Templates::PromptTemplate *prompt, + LLMCore::ContextData context, + LLMCore::RequestType type, bool isToolsEnabled, bool isThinkingEnabled) { @@ -90,9 +90,9 @@ void LMStudioProvider::prepareRequest( request["presence_penalty"] = settings.presencePenalty(); }; - if (type == PluginLLMCore::RequestType::CodeCompletion) { + if (type == LLMCore::RequestType::CodeCompletion) { applyModelParams(Settings::codeCompletionSettings()); - } else if (type == PluginLLMCore::RequestType::QuickRefactoring) { + } else if (type == LLMCore::RequestType::QuickRefactoring) { applyModelParams(Settings::quickRefactorSettings()); } else { applyModelParams(Settings::chatAssistantSettings()); @@ -110,7 +110,7 @@ void LMStudioProvider::prepareRequest( LLMQore::RequestID LMStudioProvider::sendRequest( const QUrl &url, const QJsonObject &payload, const QString &endpoint) { - return PluginLLMCore::Provider::sendRequest( + return Providers::Provider::sendRequest( QUrl(ensureOpenAIV1Base(url.toString())), payload, endpoint); } diff --git a/providers/LMStudioProvider.hpp b/sources/providers/LMStudioProvider.hpp similarity index 71% rename from providers/LMStudioProvider.hpp rename to sources/providers/LMStudioProvider.hpp index 197250b..81ca9b5 100644 --- a/providers/LMStudioProvider.hpp +++ b/sources/providers/LMStudioProvider.hpp @@ -5,11 +5,11 @@ #pragma once #include -#include +#include "providers/Provider.hpp" namespace QodeAssist::Providers { -class LMStudioProvider : public PluginLLMCore::Provider +class LMStudioProvider : public Providers::Provider { Q_OBJECT public: @@ -19,14 +19,14 @@ public: QString url() const override; void prepareRequest( QJsonObject &request, - PluginLLMCore::PromptTemplate *prompt, - PluginLLMCore::ContextData context, - PluginLLMCore::RequestType type, + Templates::PromptTemplate *prompt, + LLMCore::ContextData context, + LLMCore::RequestType type, bool isToolsEnabled, bool isThinkingEnabled) override; QFuture> getInstalledModels(const QString &url) override; - PluginLLMCore::ProviderID providerID() const override; - PluginLLMCore::ProviderCapabilities capabilities() const override; + Providers::ProviderID providerID() const override; + Providers::ProviderCapabilities capabilities() const override; ::LLMQore::BaseClient *client() const override; QString apiKey() const override; diff --git a/providers/LMStudioResponsesProvider.cpp b/sources/providers/LMStudioResponsesProvider.cpp similarity index 82% rename from providers/LMStudioResponsesProvider.cpp rename to sources/providers/LMStudioResponsesProvider.cpp index 7a5f176..b681267 100644 --- a/providers/LMStudioResponsesProvider.cpp +++ b/sources/providers/LMStudioResponsesProvider.cpp @@ -22,7 +22,7 @@ namespace QodeAssist::Providers { LMStudioResponsesProvider::LMStudioResponsesProvider(QObject *parent) - : PluginLLMCore::Provider(parent) + : Providers::Provider(parent) , m_client(new ::LLMQore::OpenAIResponsesClient(QString(), QString(), QString(), this)) { Tools::registerQodeAssistTools(m_client->tools()); @@ -45,9 +45,9 @@ QString LMStudioResponsesProvider::url() const void LMStudioResponsesProvider::prepareRequest( QJsonObject &request, - PluginLLMCore::PromptTemplate *prompt, - PluginLLMCore::ContextData context, - PluginLLMCore::RequestType type, + Templates::PromptTemplate *prompt, + LLMCore::ContextData context, + LLMCore::RequestType type, bool isToolsEnabled, bool isThinkingEnabled) { @@ -82,9 +82,9 @@ void LMStudioResponsesProvider::prepareRequest( request["include"] = include; }; - if (type == PluginLLMCore::RequestType::CodeCompletion) { + if (type == LLMCore::RequestType::CodeCompletion) { applyModelParams(Settings::codeCompletionSettings()); - } else if (type == PluginLLMCore::RequestType::QuickRefactoring) { + } else if (type == LLMCore::RequestType::QuickRefactoring) { const auto &qrSettings = Settings::quickRefactorSettings(); applyModelParams(qrSettings); @@ -122,20 +122,20 @@ QFuture> LMStudioResponsesProvider::getInstalledModels(const QStr LLMQore::RequestID LMStudioResponsesProvider::sendRequest( const QUrl &url, const QJsonObject &payload, const QString &endpoint) { - return PluginLLMCore::Provider::sendRequest( + return Providers::Provider::sendRequest( QUrl(ensureOpenAIV1Base(url.toString())), payload, endpoint); } -PluginLLMCore::ProviderID LMStudioResponsesProvider::providerID() const +Providers::ProviderID LMStudioResponsesProvider::providerID() const { - return PluginLLMCore::ProviderID::OpenAIResponses; + return Providers::ProviderID::OpenAIResponses; } -PluginLLMCore::ProviderCapabilities LMStudioResponsesProvider::capabilities() const +Providers::ProviderCapabilities LMStudioResponsesProvider::capabilities() const { - return PluginLLMCore::ProviderCapability::Tools | PluginLLMCore::ProviderCapability::Thinking - | PluginLLMCore::ProviderCapability::Image - | PluginLLMCore::ProviderCapability::ModelListing; + return Providers::ProviderCapability::Tools | Providers::ProviderCapability::Thinking + | Providers::ProviderCapability::Image + | Providers::ProviderCapability::ModelListing; } ::LLMQore::BaseClient *LMStudioResponsesProvider::client() const diff --git a/providers/LMStudioResponsesProvider.hpp b/sources/providers/LMStudioResponsesProvider.hpp similarity index 71% rename from providers/LMStudioResponsesProvider.hpp rename to sources/providers/LMStudioResponsesProvider.hpp index c2b47e4..834bf6d 100644 --- a/providers/LMStudioResponsesProvider.hpp +++ b/sources/providers/LMStudioResponsesProvider.hpp @@ -5,11 +5,11 @@ #pragma once #include -#include +#include "providers/Provider.hpp" namespace QodeAssist::Providers { -class LMStudioResponsesProvider : public PluginLLMCore::Provider +class LMStudioResponsesProvider : public Providers::Provider { Q_OBJECT public: @@ -19,14 +19,14 @@ public: QString url() const override; void prepareRequest( QJsonObject &request, - PluginLLMCore::PromptTemplate *prompt, - PluginLLMCore::ContextData context, - PluginLLMCore::RequestType type, + Templates::PromptTemplate *prompt, + LLMCore::ContextData context, + LLMCore::RequestType type, bool isToolsEnabled, bool isThinkingEnabled) override; QFuture> getInstalledModels(const QString &url) override; - PluginLLMCore::ProviderID providerID() const override; - PluginLLMCore::ProviderCapabilities capabilities() const override; + Providers::ProviderID providerID() const override; + Providers::ProviderCapabilities capabilities() const override; ::LLMQore::BaseClient *client() const override; QString apiKey() const override; diff --git a/providers/LlamaCppProvider.cpp b/sources/providers/LlamaCppProvider.cpp similarity index 83% rename from providers/LlamaCppProvider.cpp rename to sources/providers/LlamaCppProvider.cpp index 301bb32..43b58f4 100644 --- a/providers/LlamaCppProvider.cpp +++ b/sources/providers/LlamaCppProvider.cpp @@ -20,7 +20,7 @@ namespace QodeAssist::Providers { LlamaCppProvider::LlamaCppProvider(QObject *parent) - : PluginLLMCore::Provider(parent) + : Providers::Provider(parent) , m_client(new ::LLMQore::LlamaCppClient(QString(), QString(), QString(), this)) { Tools::registerQodeAssistTools(m_client->tools()); @@ -43,9 +43,9 @@ QString LlamaCppProvider::url() const void LlamaCppProvider::prepareRequest( QJsonObject &request, - PluginLLMCore::PromptTemplate *prompt, - PluginLLMCore::ContextData context, - PluginLLMCore::RequestType type, + Templates::PromptTemplate *prompt, + LLMCore::ContextData context, + LLMCore::RequestType type, bool isToolsEnabled, bool isThinkingEnabled) { @@ -75,9 +75,9 @@ void LlamaCppProvider::prepareRequest( request["chat_template_kwargs"] = chatTemplateKwargs; }; - if (type == PluginLLMCore::RequestType::CodeCompletion) { + if (type == LLMCore::RequestType::CodeCompletion) { applyModelParams(Settings::codeCompletionSettings()); - } else if (type == PluginLLMCore::RequestType::QuickRefactoring) { + } else if (type == LLMCore::RequestType::QuickRefactoring) { applyModelParams(Settings::quickRefactorSettings()); if (isThinkingEnabled) { applyThinkingMode(); @@ -107,16 +107,16 @@ QFuture> LlamaCppProvider::getInstalledModels(const QString &base return m_client->listModels(); } -PluginLLMCore::ProviderID LlamaCppProvider::providerID() const +Providers::ProviderID LlamaCppProvider::providerID() const { - return PluginLLMCore::ProviderID::LlamaCpp; + return Providers::ProviderID::LlamaCpp; } -PluginLLMCore::ProviderCapabilities LlamaCppProvider::capabilities() const +Providers::ProviderCapabilities LlamaCppProvider::capabilities() const { - return PluginLLMCore::ProviderCapability::Tools | PluginLLMCore::ProviderCapability::Thinking - | PluginLLMCore::ProviderCapability::Image - | PluginLLMCore::ProviderCapability::ModelListing; + return Providers::ProviderCapability::Tools | Providers::ProviderCapability::Thinking + | Providers::ProviderCapability::Image + | Providers::ProviderCapability::ModelListing; } ::LLMQore::BaseClient *LlamaCppProvider::client() const diff --git a/providers/LlamaCppProvider.hpp b/sources/providers/LlamaCppProvider.hpp similarity index 68% rename from providers/LlamaCppProvider.hpp rename to sources/providers/LlamaCppProvider.hpp index 6f42126..7ccdbc6 100644 --- a/providers/LlamaCppProvider.hpp +++ b/sources/providers/LlamaCppProvider.hpp @@ -4,13 +4,13 @@ #pragma once -#include +#include "providers/Provider.hpp" #include namespace QodeAssist::Providers { -class LlamaCppProvider : public PluginLLMCore::Provider +class LlamaCppProvider : public Providers::Provider { Q_OBJECT public: @@ -20,14 +20,14 @@ public: QString url() const override; void prepareRequest( QJsonObject &request, - PluginLLMCore::PromptTemplate *prompt, - PluginLLMCore::ContextData context, - PluginLLMCore::RequestType type, + Templates::PromptTemplate *prompt, + LLMCore::ContextData context, + LLMCore::RequestType type, bool isToolsEnabled, bool isThinkingEnabled) override; QFuture> getInstalledModels(const QString &url) override; - PluginLLMCore::ProviderID providerID() const override; - PluginLLMCore::ProviderCapabilities capabilities() const override; + Providers::ProviderID providerID() const override; + Providers::ProviderCapabilities capabilities() const override; ::LLMQore::BaseClient *client() const override; QString apiKey() const override; diff --git a/providers/MistralAIProvider.cpp b/sources/providers/MistralAIProvider.cpp similarity index 80% rename from providers/MistralAIProvider.cpp rename to sources/providers/MistralAIProvider.cpp index d166713..1f6477a 100644 --- a/providers/MistralAIProvider.cpp +++ b/sources/providers/MistralAIProvider.cpp @@ -20,7 +20,7 @@ namespace QodeAssist::Providers { MistralAIProvider::MistralAIProvider(QObject *parent) - : PluginLLMCore::Provider(parent) + : Providers::Provider(parent) , m_client(new ::LLMQore::MistralClient(QString(), QString(), QString(), this)) { Tools::registerQodeAssistTools(m_client->tools()); @@ -48,23 +48,23 @@ QFuture> MistralAIProvider::getInstalledModels(const QString &url return m_client->listModels(); } -PluginLLMCore::ProviderID MistralAIProvider::providerID() const +Providers::ProviderID MistralAIProvider::providerID() const { - return PluginLLMCore::ProviderID::MistralAI; + return Providers::ProviderID::MistralAI; } -PluginLLMCore::ProviderCapabilities MistralAIProvider::capabilities() const +Providers::ProviderCapabilities MistralAIProvider::capabilities() const { - return PluginLLMCore::ProviderCapability::Tools | PluginLLMCore::ProviderCapability::Image - | PluginLLMCore::ProviderCapability::ModelListing - | PluginLLMCore::ProviderCapability::Thinking; + return Providers::ProviderCapability::Tools | Providers::ProviderCapability::Image + | Providers::ProviderCapability::ModelListing + | Providers::ProviderCapability::Thinking; } void MistralAIProvider::prepareRequest( QJsonObject &request, - PluginLLMCore::PromptTemplate *prompt, - PluginLLMCore::ContextData context, - PluginLLMCore::RequestType type, + Templates::PromptTemplate *prompt, + LLMCore::ContextData context, + LLMCore::RequestType type, bool isToolsEnabled, bool isThinkingEnabled) { @@ -88,9 +88,9 @@ void MistralAIProvider::prepareRequest( request["presence_penalty"] = settings.presencePenalty(); }; - if (type == PluginLLMCore::RequestType::CodeCompletion) { + if (type == LLMCore::RequestType::CodeCompletion) { applyModelParams(Settings::codeCompletionSettings()); - } else if (type == PluginLLMCore::RequestType::QuickRefactoring) { + } else if (type == LLMCore::RequestType::QuickRefactoring) { applyModelParams(Settings::quickRefactorSettings()); } else { applyModelParams(Settings::chatAssistantSettings()); diff --git a/providers/MistralAIProvider.hpp b/sources/providers/MistralAIProvider.hpp similarity index 68% rename from providers/MistralAIProvider.hpp rename to sources/providers/MistralAIProvider.hpp index 71295ad..1fa90f3 100644 --- a/providers/MistralAIProvider.hpp +++ b/sources/providers/MistralAIProvider.hpp @@ -5,11 +5,11 @@ #pragma once #include -#include +#include "providers/Provider.hpp" namespace QodeAssist::Providers { -class MistralAIProvider : public PluginLLMCore::Provider +class MistralAIProvider : public Providers::Provider { Q_OBJECT public: @@ -19,14 +19,14 @@ public: QString url() const override; void prepareRequest( QJsonObject &request, - PluginLLMCore::PromptTemplate *prompt, - PluginLLMCore::ContextData context, - PluginLLMCore::RequestType type, + Templates::PromptTemplate *prompt, + LLMCore::ContextData context, + LLMCore::RequestType type, bool isToolsEnabled, bool isThinkingEnabled) override; QFuture> getInstalledModels(const QString &url) override; - PluginLLMCore::ProviderID providerID() const override; - PluginLLMCore::ProviderCapabilities capabilities() const override; + Providers::ProviderID providerID() const override; + Providers::ProviderCapabilities capabilities() const override; ::LLMQore::BaseClient *client() const override; QString apiKey() const override; diff --git a/providers/OllamaCompatProvider.cpp b/sources/providers/OllamaCompatProvider.cpp similarity index 80% rename from providers/OllamaCompatProvider.cpp rename to sources/providers/OllamaCompatProvider.cpp index c960d3d..d7302d0 100644 --- a/providers/OllamaCompatProvider.cpp +++ b/sources/providers/OllamaCompatProvider.cpp @@ -21,7 +21,7 @@ namespace QodeAssist::Providers { OllamaCompatProvider::OllamaCompatProvider(QObject *parent) - : PluginLLMCore::Provider(parent) + : Providers::Provider(parent) , m_client(new ::LLMQore::OpenAIClient(QString(), QString(), QString(), this)) { Tools::registerQodeAssistTools(m_client->tools()); @@ -44,9 +44,9 @@ QString OllamaCompatProvider::url() const void OllamaCompatProvider::prepareRequest( QJsonObject &request, - PluginLLMCore::PromptTemplate *prompt, - PluginLLMCore::ContextData context, - PluginLLMCore::RequestType type, + Templates::PromptTemplate *prompt, + LLMCore::ContextData context, + LLMCore::RequestType type, bool isToolsEnabled, bool isThinkingEnabled) { @@ -70,9 +70,9 @@ void OllamaCompatProvider::prepareRequest( request["presence_penalty"] = settings.presencePenalty(); }; - if (type == PluginLLMCore::RequestType::CodeCompletion) { + if (type == LLMCore::RequestType::CodeCompletion) { applyModelParams(Settings::codeCompletionSettings()); - } else if (type == PluginLLMCore::RequestType::QuickRefactoring) { + } else if (type == LLMCore::RequestType::QuickRefactoring) { applyModelParams(Settings::quickRefactorSettings()); } else { applyModelParams(Settings::chatAssistantSettings()); @@ -103,19 +103,19 @@ LLMQore::RequestID OllamaCompatProvider::sendRequest( { const QString effectiveEndpoint = endpoint.isEmpty() ? QStringLiteral("/v1/chat/completions") : endpoint; - return PluginLLMCore::Provider::sendRequest(url, payload, effectiveEndpoint); + return Providers::Provider::sendRequest(url, payload, effectiveEndpoint); } -PluginLLMCore::ProviderID OllamaCompatProvider::providerID() const +Providers::ProviderID OllamaCompatProvider::providerID() const { - return PluginLLMCore::ProviderID::OpenAICompatible; + return Providers::ProviderID::OpenAICompatible; } -PluginLLMCore::ProviderCapabilities OllamaCompatProvider::capabilities() const +Providers::ProviderCapabilities OllamaCompatProvider::capabilities() const { - return PluginLLMCore::ProviderCapability::Tools | PluginLLMCore::ProviderCapability::Image - | PluginLLMCore::ProviderCapability::ModelListing - | PluginLLMCore::ProviderCapability::Thinking; + return Providers::ProviderCapability::Tools | Providers::ProviderCapability::Image + | Providers::ProviderCapability::ModelListing + | Providers::ProviderCapability::Thinking; } ::LLMQore::BaseClient *OllamaCompatProvider::client() const diff --git a/providers/OllamaCompatProvider.hpp b/sources/providers/OllamaCompatProvider.hpp similarity index 71% rename from providers/OllamaCompatProvider.hpp rename to sources/providers/OllamaCompatProvider.hpp index 83b2959..0ebd993 100644 --- a/providers/OllamaCompatProvider.hpp +++ b/sources/providers/OllamaCompatProvider.hpp @@ -5,11 +5,11 @@ #pragma once #include -#include +#include "providers/Provider.hpp" namespace QodeAssist::Providers { -class OllamaCompatProvider : public PluginLLMCore::Provider +class OllamaCompatProvider : public Providers::Provider { Q_OBJECT public: @@ -19,14 +19,14 @@ public: QString url() const override; void prepareRequest( QJsonObject &request, - PluginLLMCore::PromptTemplate *prompt, - PluginLLMCore::ContextData context, - PluginLLMCore::RequestType type, + Templates::PromptTemplate *prompt, + LLMCore::ContextData context, + LLMCore::RequestType type, bool isToolsEnabled, bool isThinkingEnabled) override; QFuture> getInstalledModels(const QString &url) override; - PluginLLMCore::ProviderID providerID() const override; - PluginLLMCore::ProviderCapabilities capabilities() const override; + Providers::ProviderID providerID() const override; + Providers::ProviderCapabilities capabilities() const override; ::LLMQore::BaseClient *client() const override; QString apiKey() const override; diff --git a/providers/OllamaProvider.cpp b/sources/providers/OllamaProvider.cpp similarity index 84% rename from providers/OllamaProvider.cpp rename to sources/providers/OllamaProvider.cpp index f3658cc..57dacc2 100644 --- a/providers/OllamaProvider.cpp +++ b/sources/providers/OllamaProvider.cpp @@ -21,7 +21,7 @@ namespace QodeAssist::Providers { OllamaProvider::OllamaProvider(QObject *parent) - : PluginLLMCore::Provider(parent) + : Providers::Provider(parent) , m_client(new ::LLMQore::OllamaClient(QString(), QString(), QString(), this)) { Tools::registerQodeAssistTools(m_client->tools()); @@ -44,9 +44,9 @@ QString OllamaProvider::url() const void OllamaProvider::prepareRequest( QJsonObject &request, - PluginLLMCore::PromptTemplate *prompt, - PluginLLMCore::ContextData context, - PluginLLMCore::RequestType type, + Templates::PromptTemplate *prompt, + LLMCore::ContextData context, + LLMCore::RequestType type, bool isToolsEnabled, bool isThinkingEnabled) { @@ -82,9 +82,9 @@ void OllamaProvider::prepareRequest( request["options"] = options; }; - if (type == PluginLLMCore::RequestType::CodeCompletion) { + if (type == LLMCore::RequestType::CodeCompletion) { applySettings(Settings::codeCompletionSettings()); - } else if (type == PluginLLMCore::RequestType::QuickRefactoring) { + } else if (type == LLMCore::RequestType::QuickRefactoring) { const auto &qrSettings = Settings::quickRefactorSettings(); applySettings(qrSettings); @@ -119,16 +119,16 @@ QFuture> OllamaProvider::getInstalledModels(const QString &baseUr return m_client->listModels(); } -PluginLLMCore::ProviderID OllamaProvider::providerID() const +Providers::ProviderID OllamaProvider::providerID() const { - return PluginLLMCore::ProviderID::Ollama; + return Providers::ProviderID::Ollama; } -PluginLLMCore::ProviderCapabilities OllamaProvider::capabilities() const +Providers::ProviderCapabilities OllamaProvider::capabilities() const { - return PluginLLMCore::ProviderCapability::Tools | PluginLLMCore::ProviderCapability::Thinking - | PluginLLMCore::ProviderCapability::Image - | PluginLLMCore::ProviderCapability::ModelListing; + return Providers::ProviderCapability::Tools | Providers::ProviderCapability::Thinking + | Providers::ProviderCapability::Image + | Providers::ProviderCapability::ModelListing; } ::LLMQore::BaseClient *OllamaProvider::client() const diff --git a/providers/OllamaProvider.hpp b/sources/providers/OllamaProvider.hpp similarity index 68% rename from providers/OllamaProvider.hpp rename to sources/providers/OllamaProvider.hpp index a4ae748..7ab3c92 100644 --- a/providers/OllamaProvider.hpp +++ b/sources/providers/OllamaProvider.hpp @@ -4,13 +4,13 @@ #pragma once -#include +#include "providers/Provider.hpp" #include namespace QodeAssist::Providers { -class OllamaProvider : public PluginLLMCore::Provider +class OllamaProvider : public Providers::Provider { Q_OBJECT public: @@ -20,14 +20,14 @@ public: QString url() const override; void prepareRequest( QJsonObject &request, - PluginLLMCore::PromptTemplate *prompt, - PluginLLMCore::ContextData context, - PluginLLMCore::RequestType type, + Templates::PromptTemplate *prompt, + LLMCore::ContextData context, + LLMCore::RequestType type, bool isToolsEnabled, bool isThinkingEnabled) override; QFuture> getInstalledModels(const QString &url) override; - PluginLLMCore::ProviderID providerID() const override; - PluginLLMCore::ProviderCapabilities capabilities() const override; + Providers::ProviderID providerID() const override; + Providers::ProviderCapabilities capabilities() const override; ::LLMQore::BaseClient *client() const override; QString apiKey() const override; diff --git a/providers/OpenAICompatProvider.cpp b/sources/providers/OpenAICompatProvider.cpp similarity index 81% rename from providers/OpenAICompatProvider.cpp rename to sources/providers/OpenAICompatProvider.cpp index 6f9fe62..21a1be1 100644 --- a/providers/OpenAICompatProvider.cpp +++ b/sources/providers/OpenAICompatProvider.cpp @@ -20,7 +20,7 @@ namespace QodeAssist::Providers { OpenAICompatProvider::OpenAICompatProvider(QObject *parent) - : PluginLLMCore::Provider(parent) + : Providers::Provider(parent) , m_client(new ::LLMQore::OpenAIClient(QString(), QString(), QString(), this)) { Tools::registerQodeAssistTools(m_client->tools()); @@ -43,9 +43,9 @@ QString OpenAICompatProvider::url() const void OpenAICompatProvider::prepareRequest( QJsonObject &request, - PluginLLMCore::PromptTemplate *prompt, - PluginLLMCore::ContextData context, - PluginLLMCore::RequestType type, + Templates::PromptTemplate *prompt, + LLMCore::ContextData context, + LLMCore::RequestType type, bool isToolsEnabled, bool isThinkingEnabled) { @@ -69,9 +69,9 @@ void OpenAICompatProvider::prepareRequest( request["presence_penalty"] = settings.presencePenalty(); }; - if (type == PluginLLMCore::RequestType::CodeCompletion) { + if (type == LLMCore::RequestType::CodeCompletion) { applyModelParams(Settings::codeCompletionSettings()); - } else if (type == PluginLLMCore::RequestType::QuickRefactoring) { + } else if (type == LLMCore::RequestType::QuickRefactoring) { applyModelParams(Settings::quickRefactorSettings()); } else { applyModelParams(Settings::chatAssistantSettings()); @@ -92,15 +92,15 @@ QFuture> OpenAICompatProvider::getInstalledModels(const QString & return QtFuture::makeReadyFuture(QList{}); } -PluginLLMCore::ProviderID OpenAICompatProvider::providerID() const +Providers::ProviderID OpenAICompatProvider::providerID() const { - return PluginLLMCore::ProviderID::OpenAICompatible; + return Providers::ProviderID::OpenAICompatible; } -PluginLLMCore::ProviderCapabilities OpenAICompatProvider::capabilities() const +Providers::ProviderCapabilities OpenAICompatProvider::capabilities() const { - return PluginLLMCore::ProviderCapability::Tools | PluginLLMCore::ProviderCapability::Image - | PluginLLMCore::ProviderCapability::Thinking; + return Providers::ProviderCapability::Tools | Providers::ProviderCapability::Image + | Providers::ProviderCapability::Thinking; } ::LLMQore::BaseClient *OpenAICompatProvider::client() const diff --git a/providers/OpenAICompatProvider.hpp b/sources/providers/OpenAICompatProvider.hpp similarity index 68% rename from providers/OpenAICompatProvider.hpp rename to sources/providers/OpenAICompatProvider.hpp index ed68ea0..df113c5 100644 --- a/providers/OpenAICompatProvider.hpp +++ b/sources/providers/OpenAICompatProvider.hpp @@ -5,11 +5,11 @@ #pragma once #include -#include +#include "providers/Provider.hpp" namespace QodeAssist::Providers { -class OpenAICompatProvider : public PluginLLMCore::Provider +class OpenAICompatProvider : public Providers::Provider { Q_OBJECT public: @@ -19,14 +19,14 @@ public: QString url() const override; void prepareRequest( QJsonObject &request, - PluginLLMCore::PromptTemplate *prompt, - PluginLLMCore::ContextData context, - PluginLLMCore::RequestType type, + Templates::PromptTemplate *prompt, + LLMCore::ContextData context, + LLMCore::RequestType type, bool isToolsEnabled, bool isThinkingEnabled) override; QFuture> getInstalledModels(const QString &url) override; - PluginLLMCore::ProviderID providerID() const override; - PluginLLMCore::ProviderCapabilities capabilities() const override; + Providers::ProviderID providerID() const override; + Providers::ProviderCapabilities capabilities() const override; ::LLMQore::BaseClient *client() const override; QString apiKey() const override; diff --git a/providers/OpenAIProvider.cpp b/sources/providers/OpenAIProvider.cpp similarity index 85% rename from providers/OpenAIProvider.cpp rename to sources/providers/OpenAIProvider.cpp index 322f666..6fcba58 100644 --- a/providers/OpenAIProvider.cpp +++ b/sources/providers/OpenAIProvider.cpp @@ -20,7 +20,7 @@ namespace QodeAssist::Providers { OpenAIProvider::OpenAIProvider(QObject *parent) - : PluginLLMCore::Provider(parent) + : Providers::Provider(parent) , m_client(new ::LLMQore::OpenAIClient(QString(), QString(), QString(), this)) { Tools::registerQodeAssistTools(m_client->tools()); @@ -43,9 +43,9 @@ QString OpenAIProvider::url() const void OpenAIProvider::prepareRequest( QJsonObject &request, - PluginLLMCore::PromptTemplate *prompt, - PluginLLMCore::ContextData context, - PluginLLMCore::RequestType type, + Templates::PromptTemplate *prompt, + LLMCore::ContextData context, + LLMCore::RequestType type, bool isToolsEnabled, bool isThinkingEnabled) { @@ -88,9 +88,9 @@ void OpenAIProvider::prepareRequest( request["presence_penalty"] = settings.presencePenalty(); }; - if (type == PluginLLMCore::RequestType::CodeCompletion) { + if (type == LLMCore::RequestType::CodeCompletion) { applyModelParams(Settings::codeCompletionSettings()); - } else if (type == PluginLLMCore::RequestType::QuickRefactoring) { + } else if (type == LLMCore::RequestType::QuickRefactoring) { applyModelParams(Settings::quickRefactorSettings()); } else { applyModelParams(Settings::chatAssistantSettings()); @@ -122,16 +122,16 @@ QFuture> OpenAIProvider::getInstalledModels(const QString &baseUr }); } -PluginLLMCore::ProviderID OpenAIProvider::providerID() const +Providers::ProviderID OpenAIProvider::providerID() const { - return PluginLLMCore::ProviderID::OpenAI; + return Providers::ProviderID::OpenAI; } -PluginLLMCore::ProviderCapabilities OpenAIProvider::capabilities() const +Providers::ProviderCapabilities OpenAIProvider::capabilities() const { - return PluginLLMCore::ProviderCapability::Tools | PluginLLMCore::ProviderCapability::Image - | PluginLLMCore::ProviderCapability::ModelListing - | PluginLLMCore::ProviderCapability::Thinking; + return Providers::ProviderCapability::Tools | Providers::ProviderCapability::Image + | Providers::ProviderCapability::ModelListing + | Providers::ProviderCapability::Thinking; } ::LLMQore::BaseClient *OpenAIProvider::client() const diff --git a/providers/OpenAIProvider.hpp b/sources/providers/OpenAIProvider.hpp similarity index 68% rename from providers/OpenAIProvider.hpp rename to sources/providers/OpenAIProvider.hpp index 570c50d..381fc21 100644 --- a/providers/OpenAIProvider.hpp +++ b/sources/providers/OpenAIProvider.hpp @@ -5,11 +5,11 @@ #pragma once #include -#include +#include "providers/Provider.hpp" namespace QodeAssist::Providers { -class OpenAIProvider : public PluginLLMCore::Provider +class OpenAIProvider : public Providers::Provider { Q_OBJECT public: @@ -19,14 +19,14 @@ public: QString url() const override; void prepareRequest( QJsonObject &request, - PluginLLMCore::PromptTemplate *prompt, - PluginLLMCore::ContextData context, - PluginLLMCore::RequestType type, + Templates::PromptTemplate *prompt, + LLMCore::ContextData context, + LLMCore::RequestType type, bool isToolsEnabled, bool isThinkingEnabled) override; QFuture> getInstalledModels(const QString &url) override; - PluginLLMCore::ProviderID providerID() const override; - PluginLLMCore::ProviderCapabilities capabilities() const override; + Providers::ProviderID providerID() const override; + Providers::ProviderCapabilities capabilities() const override; ::LLMQore::BaseClient *client() const override; QString apiKey() const override; diff --git a/providers/OpenAIResponsesProvider.cpp b/sources/providers/OpenAIResponsesProvider.cpp similarity index 84% rename from providers/OpenAIResponsesProvider.cpp rename to sources/providers/OpenAIResponsesProvider.cpp index 455b61d..f6d5c7e 100644 --- a/providers/OpenAIResponsesProvider.cpp +++ b/sources/providers/OpenAIResponsesProvider.cpp @@ -20,7 +20,7 @@ namespace QodeAssist::Providers { OpenAIResponsesProvider::OpenAIResponsesProvider(QObject *parent) - : PluginLLMCore::Provider(parent) + : Providers::Provider(parent) , m_client(new ::LLMQore::OpenAIResponsesClient(QString(), QString(), QString(), this)) { Tools::registerQodeAssistTools(m_client->tools()); @@ -43,9 +43,9 @@ QString OpenAIResponsesProvider::url() const void OpenAIResponsesProvider::prepareRequest( QJsonObject &request, - PluginLLMCore::PromptTemplate *prompt, - PluginLLMCore::ContextData context, - PluginLLMCore::RequestType type, + Templates::PromptTemplate *prompt, + LLMCore::ContextData context, + LLMCore::RequestType type, bool isToolsEnabled, bool isThinkingEnabled) { @@ -80,9 +80,9 @@ void OpenAIResponsesProvider::prepareRequest( request["include"] = include; }; - if (type == PluginLLMCore::RequestType::CodeCompletion) { + if (type == LLMCore::RequestType::CodeCompletion) { applyModelParams(Settings::codeCompletionSettings()); - } else if (type == PluginLLMCore::RequestType::QuickRefactoring) { + } else if (type == LLMCore::RequestType::QuickRefactoring) { const auto &qrSettings = Settings::quickRefactorSettings(); applyModelParams(qrSettings); @@ -129,16 +129,16 @@ QFuture> OpenAIResponsesProvider::getInstalledModels(const QStrin }); } -PluginLLMCore::ProviderID OpenAIResponsesProvider::providerID() const +Providers::ProviderID OpenAIResponsesProvider::providerID() const { - return PluginLLMCore::ProviderID::OpenAIResponses; + return Providers::ProviderID::OpenAIResponses; } -PluginLLMCore::ProviderCapabilities OpenAIResponsesProvider::capabilities() const +Providers::ProviderCapabilities OpenAIResponsesProvider::capabilities() const { - return PluginLLMCore::ProviderCapability::Tools | PluginLLMCore::ProviderCapability::Thinking - | PluginLLMCore::ProviderCapability::Image - | PluginLLMCore::ProviderCapability::ModelListing; + return Providers::ProviderCapability::Tools | Providers::ProviderCapability::Thinking + | Providers::ProviderCapability::Image + | Providers::ProviderCapability::ModelListing; } ::LLMQore::BaseClient *OpenAIResponsesProvider::client() const diff --git a/providers/OpenAIResponsesProvider.hpp b/sources/providers/OpenAIResponsesProvider.hpp similarity index 68% rename from providers/OpenAIResponsesProvider.hpp rename to sources/providers/OpenAIResponsesProvider.hpp index 3d9a1d0..30c57be 100644 --- a/providers/OpenAIResponsesProvider.hpp +++ b/sources/providers/OpenAIResponsesProvider.hpp @@ -5,11 +5,11 @@ #pragma once #include -#include +#include "providers/Provider.hpp" namespace QodeAssist::Providers { -class OpenAIResponsesProvider : public PluginLLMCore::Provider +class OpenAIResponsesProvider : public Providers::Provider { Q_OBJECT public: @@ -19,14 +19,14 @@ public: QString url() const override; void prepareRequest( QJsonObject &request, - PluginLLMCore::PromptTemplate *prompt, - PluginLLMCore::ContextData context, - PluginLLMCore::RequestType type, + Templates::PromptTemplate *prompt, + LLMCore::ContextData context, + LLMCore::RequestType type, bool isToolsEnabled, bool isThinkingEnabled) override; QFuture> getInstalledModels(const QString &url) override; - PluginLLMCore::ProviderID providerID() const override; - PluginLLMCore::ProviderCapabilities capabilities() const override; + Providers::ProviderID providerID() const override; + Providers::ProviderCapabilities capabilities() const override; ::LLMQore::BaseClient *client() const override; QString apiKey() const override; diff --git a/providers/OpenRouterAIProvider.cpp b/sources/providers/OpenRouterAIProvider.cpp similarity index 87% rename from providers/OpenRouterAIProvider.cpp rename to sources/providers/OpenRouterAIProvider.cpp index 6f528ca..3981e8d 100644 --- a/providers/OpenRouterAIProvider.cpp +++ b/sources/providers/OpenRouterAIProvider.cpp @@ -32,9 +32,9 @@ QString OpenRouterProvider::url() const return "https://openrouter.ai/api"; } -PluginLLMCore::ProviderID OpenRouterProvider::providerID() const +Providers::ProviderID OpenRouterProvider::providerID() const { - return PluginLLMCore::ProviderID::OpenRouter; + return Providers::ProviderID::OpenRouter; } } // namespace QodeAssist::Providers diff --git a/providers/OpenRouterAIProvider.hpp b/sources/providers/OpenRouterAIProvider.hpp similarity index 90% rename from providers/OpenRouterAIProvider.hpp rename to sources/providers/OpenRouterAIProvider.hpp index 092caa0..2a91d4b 100644 --- a/providers/OpenRouterAIProvider.hpp +++ b/sources/providers/OpenRouterAIProvider.hpp @@ -16,7 +16,7 @@ public: QString name() const override; QString url() const override; QString apiKey() const override; - PluginLLMCore::ProviderID providerID() const override; + Providers::ProviderID providerID() const override; }; } // namespace QodeAssist::Providers diff --git a/pluginllmcore/Provider.cpp b/sources/providers/Provider.cpp similarity index 89% rename from pluginllmcore/Provider.cpp rename to sources/providers/Provider.cpp index e9be5a1..66279f8 100644 --- a/pluginllmcore/Provider.cpp +++ b/sources/providers/Provider.cpp @@ -2,16 +2,16 @@ // SPDX-License-Identifier: GPL-3.0-or-later // Additional attribution terms under GPLv3 §7(b) apply — see LICENSE -#include "Provider.hpp" +#include "providers/Provider.hpp" #include #include #include -#include +#include "logger/Logger.hpp" -namespace QodeAssist::PluginLLMCore { +namespace QodeAssist::Providers { Provider::Provider(QObject *parent) : QObject(parent) @@ -47,4 +47,4 @@ void Provider::cancelRequest(const LLMQore::RequestID &requestId) return client()->tools(); } -} // namespace QodeAssist::PluginLLMCore +} // namespace QodeAssist::Providers diff --git a/pluginllmcore/Provider.hpp b/sources/providers/Provider.hpp similarity index 83% rename from pluginllmcore/Provider.hpp rename to sources/providers/Provider.hpp index 5063d57..c7ca5c9 100644 --- a/pluginllmcore/Provider.hpp +++ b/sources/providers/Provider.hpp @@ -10,10 +10,10 @@ #include #include -#include "ContextData.hpp" -#include "PromptTemplate.hpp" +#include "llmcore/ContextData.hpp" +#include "templates/PromptTemplate.hpp" #include "LLMQore/BaseClient.hpp" -#include "RequestType.hpp" +#include "llmcore/RequestType.hpp" namespace LLMQore { class BaseClient; @@ -22,7 +22,7 @@ class ToolsManager; class QJsonObject; -namespace QodeAssist::PluginLLMCore { +namespace QodeAssist::Providers { enum class ProviderCapability { Tools = 0x1, @@ -45,9 +45,9 @@ public: virtual QString url() const = 0; virtual void prepareRequest( QJsonObject &request, - PluginLLMCore::PromptTemplate *prompt, - PluginLLMCore::ContextData context, - PluginLLMCore::RequestType type, + Templates::PromptTemplate *prompt, + LLMCore::ContextData context, + LLMCore::RequestType type, bool isToolsEnabled, bool isThinkingEnabled) = 0; @@ -64,4 +64,4 @@ public: ::LLMQore::ToolsManager *toolsManager() const; }; -} // namespace QodeAssist::PluginLLMCore +} // namespace QodeAssist::Providers diff --git a/pluginllmcore/ProviderID.hpp b/sources/providers/ProviderID.hpp similarity index 90% rename from pluginllmcore/ProviderID.hpp rename to sources/providers/ProviderID.hpp index 6fefb23..ef42796 100644 --- a/pluginllmcore/ProviderID.hpp +++ b/sources/providers/ProviderID.hpp @@ -2,7 +2,7 @@ // SPDX-License-Identifier: GPL-3.0-or-later // Additional attribution terms under GPLv3 §7(b) apply — see LICENSE -namespace QodeAssist::PluginLLMCore { +namespace QodeAssist::Providers { enum class ProviderID { Any, diff --git a/providers/ProviderUrlUtils.hpp b/sources/providers/ProviderUrlUtils.hpp similarity index 100% rename from providers/ProviderUrlUtils.hpp rename to sources/providers/ProviderUrlUtils.hpp diff --git a/providers/Providers.hpp b/sources/providers/Providers.hpp similarity index 94% rename from providers/Providers.hpp rename to sources/providers/Providers.hpp index 9358622..49b199e 100644 --- a/providers/Providers.hpp +++ b/sources/providers/Providers.hpp @@ -4,7 +4,7 @@ #pragma once -#include "pluginllmcore/ProvidersManager.hpp" +#include "providers/ProvidersManager.hpp" #include "providers/ClaudeProvider.hpp" #include "providers/DeepSeekProvider.hpp" #include "providers/CodestralProvider.hpp" @@ -26,7 +26,7 @@ namespace QodeAssist::Providers { inline void registerProviders() { - auto &providerManager = PluginLLMCore::ProvidersManager::instance(); + auto &providerManager = Providers::ProvidersManager::instance(); providerManager.registerProvider(); providerManager.registerProvider(); providerManager.registerProvider(); diff --git a/pluginllmcore/ProvidersManager.cpp b/sources/providers/ProvidersManager.cpp similarity index 84% rename from pluginllmcore/ProvidersManager.cpp rename to sources/providers/ProvidersManager.cpp index a2b0898..5a2f536 100644 --- a/pluginllmcore/ProvidersManager.cpp +++ b/sources/providers/ProvidersManager.cpp @@ -2,9 +2,9 @@ // SPDX-License-Identifier: GPL-3.0-or-later // Additional attribution terms under GPLv3 §7(b) apply — see LICENSE -#include "ProvidersManager.hpp" +#include "providers/ProvidersManager.hpp" -namespace QodeAssist::PluginLLMCore { +namespace QodeAssist::Providers { ProvidersManager &ProvidersManager::instance() { @@ -29,4 +29,4 @@ Provider *ProvidersManager::getProviderByName(const QString &providerName) return m_providers[providerName]; } -} // namespace QodeAssist::PluginLLMCore +} // namespace QodeAssist::Providers diff --git a/pluginllmcore/ProvidersManager.hpp b/sources/providers/ProvidersManager.hpp similarity index 89% rename from pluginllmcore/ProvidersManager.hpp rename to sources/providers/ProvidersManager.hpp index 21dced4..c0c60e7 100644 --- a/pluginllmcore/ProvidersManager.hpp +++ b/sources/providers/ProvidersManager.hpp @@ -6,10 +6,10 @@ #include -#include "IProviderRegistry.hpp" +#include "providers/IProviderRegistry.hpp" #include -namespace QodeAssist::PluginLLMCore { +namespace QodeAssist::Providers { class ProvidersManager : public IProviderRegistry { @@ -38,4 +38,4 @@ private: QMap m_providers; }; -} // namespace QodeAssist::PluginLLMCore +} // namespace QodeAssist::Providers diff --git a/providers/QwenProvider.cpp b/sources/providers/QwenProvider.cpp similarity index 80% rename from providers/QwenProvider.cpp rename to sources/providers/QwenProvider.cpp index b82b4bc..2fc8b07 100644 --- a/providers/QwenProvider.cpp +++ b/sources/providers/QwenProvider.cpp @@ -20,7 +20,7 @@ namespace QodeAssist::Providers { QwenProvider::QwenProvider(QObject *parent) - : PluginLLMCore::Provider(parent) + : Providers::Provider(parent) , m_client(new ::LLMQore::OpenAIClient(QString(), QString(), QString(), this)) { Tools::registerQodeAssistTools(m_client->tools()); @@ -48,23 +48,23 @@ QFuture> QwenProvider::getInstalledModels(const QString &url) return m_client->listModels(); } -PluginLLMCore::ProviderID QwenProvider::providerID() const +Providers::ProviderID QwenProvider::providerID() const { - return PluginLLMCore::ProviderID::Qwen; + return Providers::ProviderID::Qwen; } -PluginLLMCore::ProviderCapabilities QwenProvider::capabilities() const +Providers::ProviderCapabilities QwenProvider::capabilities() const { - return PluginLLMCore::ProviderCapability::Tools | PluginLLMCore::ProviderCapability::Image - | PluginLLMCore::ProviderCapability::Thinking - | PluginLLMCore::ProviderCapability::ModelListing; + return Providers::ProviderCapability::Tools | Providers::ProviderCapability::Image + | Providers::ProviderCapability::Thinking + | Providers::ProviderCapability::ModelListing; } void QwenProvider::prepareRequest( QJsonObject &request, - PluginLLMCore::PromptTemplate *prompt, - PluginLLMCore::ContextData context, - PluginLLMCore::RequestType type, + Templates::PromptTemplate *prompt, + LLMCore::ContextData context, + LLMCore::RequestType type, bool isToolsEnabled, bool isThinkingEnabled) { @@ -88,9 +88,9 @@ void QwenProvider::prepareRequest( request["presence_penalty"] = settings.presencePenalty(); }; - if (type == PluginLLMCore::RequestType::CodeCompletion) { + if (type == LLMCore::RequestType::CodeCompletion) { applyModelParams(Settings::codeCompletionSettings()); - } else if (type == PluginLLMCore::RequestType::QuickRefactoring) { + } else if (type == LLMCore::RequestType::QuickRefactoring) { applyModelParams(Settings::quickRefactorSettings()); } else { applyModelParams(Settings::chatAssistantSettings()); diff --git a/providers/QwenProvider.hpp b/sources/providers/QwenProvider.hpp similarity index 68% rename from providers/QwenProvider.hpp rename to sources/providers/QwenProvider.hpp index a7d5d49..159eb4f 100644 --- a/providers/QwenProvider.hpp +++ b/sources/providers/QwenProvider.hpp @@ -5,11 +5,11 @@ #pragma once #include -#include +#include "providers/Provider.hpp" namespace QodeAssist::Providers { -class QwenProvider : public PluginLLMCore::Provider +class QwenProvider : public Providers::Provider { Q_OBJECT public: @@ -19,14 +19,14 @@ public: QString url() const override; void prepareRequest( QJsonObject &request, - PluginLLMCore::PromptTemplate *prompt, - PluginLLMCore::ContextData context, - PluginLLMCore::RequestType type, + Templates::PromptTemplate *prompt, + LLMCore::ContextData context, + LLMCore::RequestType type, bool isToolsEnabled, bool isThinkingEnabled) override; QFuture> getInstalledModels(const QString &url) override; - PluginLLMCore::ProviderID providerID() const override; - PluginLLMCore::ProviderCapabilities capabilities() const override; + Providers::ProviderID providerID() const override; + Providers::ProviderCapabilities capabilities() const override; ::LLMQore::BaseClient *client() const override; QString apiKey() const override; diff --git a/providers/QwenResponsesProvider.cpp b/sources/providers/QwenResponsesProvider.cpp similarity index 83% rename from providers/QwenResponsesProvider.cpp rename to sources/providers/QwenResponsesProvider.cpp index 1c7a31c..f54e17b 100644 --- a/providers/QwenResponsesProvider.cpp +++ b/sources/providers/QwenResponsesProvider.cpp @@ -20,7 +20,7 @@ namespace QodeAssist::Providers { QwenResponsesProvider::QwenResponsesProvider(QObject *parent) - : PluginLLMCore::Provider(parent) + : Providers::Provider(parent) , m_client(new ::LLMQore::OpenAIResponsesClient(QString(), QString(), QString(), this)) { Tools::registerQodeAssistTools(m_client->tools()); @@ -43,9 +43,9 @@ QString QwenResponsesProvider::url() const void QwenResponsesProvider::prepareRequest( QJsonObject &request, - PluginLLMCore::PromptTemplate *prompt, - PluginLLMCore::ContextData context, - PluginLLMCore::RequestType type, + Templates::PromptTemplate *prompt, + LLMCore::ContextData context, + LLMCore::RequestType type, bool isToolsEnabled, bool isThinkingEnabled) { @@ -80,9 +80,9 @@ void QwenResponsesProvider::prepareRequest( request["include"] = include; }; - if (type == PluginLLMCore::RequestType::CodeCompletion) { + if (type == LLMCore::RequestType::CodeCompletion) { applyModelParams(Settings::codeCompletionSettings()); - } else if (type == PluginLLMCore::RequestType::QuickRefactoring) { + } else if (type == LLMCore::RequestType::QuickRefactoring) { const auto &qrSettings = Settings::quickRefactorSettings(); applyModelParams(qrSettings); @@ -117,15 +117,15 @@ QFuture> QwenResponsesProvider::getInstalledModels(const QString return m_client->listModels(); } -PluginLLMCore::ProviderID QwenResponsesProvider::providerID() const +Providers::ProviderID QwenResponsesProvider::providerID() const { - return PluginLLMCore::ProviderID::OpenAIResponses; + return Providers::ProviderID::OpenAIResponses; } -PluginLLMCore::ProviderCapabilities QwenResponsesProvider::capabilities() const +Providers::ProviderCapabilities QwenResponsesProvider::capabilities() const { - return PluginLLMCore::ProviderCapability::Tools | PluginLLMCore::ProviderCapability::Thinking - | PluginLLMCore::ProviderCapability::Image | PluginLLMCore::ProviderCapability::ModelListing; + return Providers::ProviderCapability::Tools | Providers::ProviderCapability::Thinking + | Providers::ProviderCapability::Image | Providers::ProviderCapability::ModelListing; } ::LLMQore::BaseClient *QwenResponsesProvider::client() const diff --git a/providers/QwenResponsesProvider.hpp b/sources/providers/QwenResponsesProvider.hpp similarity index 69% rename from providers/QwenResponsesProvider.hpp rename to sources/providers/QwenResponsesProvider.hpp index 271716a..f377069 100644 --- a/providers/QwenResponsesProvider.hpp +++ b/sources/providers/QwenResponsesProvider.hpp @@ -5,11 +5,11 @@ #pragma once #include -#include +#include "providers/Provider.hpp" namespace QodeAssist::Providers { -class QwenResponsesProvider : public PluginLLMCore::Provider +class QwenResponsesProvider : public Providers::Provider { Q_OBJECT public: @@ -19,14 +19,14 @@ public: QString url() const override; void prepareRequest( QJsonObject &request, - PluginLLMCore::PromptTemplate *prompt, - PluginLLMCore::ContextData context, - PluginLLMCore::RequestType type, + Templates::PromptTemplate *prompt, + LLMCore::ContextData context, + LLMCore::RequestType type, bool isToolsEnabled, bool isThinkingEnabled) override; QFuture> getInstalledModels(const QString &url) override; - PluginLLMCore::ProviderID providerID() const override; - PluginLLMCore::ProviderCapabilities capabilities() const override; + Providers::ProviderID providerID() const override; + Providers::ProviderCapabilities capabilities() const override; ::LLMQore::BaseClient *client() const override; QString apiKey() const override; diff --git a/QuickRefactorHandler.cpp b/sources/refactor/QuickRefactorHandler.cpp similarity index 94% rename from QuickRefactorHandler.cpp rename to sources/refactor/QuickRefactorHandler.cpp index 3eccf10..b6cfc10 100644 --- a/QuickRefactorHandler.cpp +++ b/sources/refactor/QuickRefactorHandler.cpp @@ -2,7 +2,7 @@ // SPDX-License-Identifier: GPL-3.0-or-later // Additional attribution terms under GPLv3 §7(b) apply — see LICENSE -#include "QuickRefactorHandler.hpp" +#include "refactor/QuickRefactorHandler.hpp" #include #include @@ -10,12 +10,12 @@ #include #include -#include +#include "refactor/ResponseCleaner.hpp" #include #include -#include -#include -#include +#include "templates/PromptTemplateManager.hpp" +#include "providers/ProvidersManager.hpp" +#include "context/RulesLoader.hpp" #include #include #include @@ -95,8 +95,8 @@ void QuickRefactorHandler::prepareAndSendRequest( { auto &settings = Settings::generalSettings(); - auto &providerRegistry = PluginLLMCore::ProvidersManager::instance(); - auto &promptManager = PluginLLMCore::PromptTemplateManager::instance(); + auto &providerRegistry = Providers::ProvidersManager::instance(); + auto &promptManager = Templates::PromptTemplateManager::instance(); const auto providerName = settings.qrProvider(); auto provider = providerRegistry.getProviderByName(providerName); @@ -129,7 +129,7 @@ void QuickRefactorHandler::prepareAndSendRequest( QJsonObject payload{ {"model", Settings::generalSettings().qrModel()}, {"stream", true}}; - PluginLLMCore::ContextData context = prepareContext(editor, range, instructions); + LLMCore::ContextData context = prepareContext(editor, range, instructions); bool enableTools = Settings::quickRefactorSettings().useTools(); bool enableThinking = Settings::quickRefactorSettings().useThinking(); @@ -137,7 +137,7 @@ void QuickRefactorHandler::prepareAndSendRequest( payload, promptTemplate, context, - PluginLLMCore::RequestType::QuickRefactoring, + LLMCore::RequestType::QuickRefactoring, enableTools, enableThinking); @@ -181,12 +181,12 @@ void QuickRefactorHandler::prepareAndSendRequest( m_activeRequests[requestId] = {request, provider}; } -PluginLLMCore::ContextData QuickRefactorHandler::prepareContext( +LLMCore::ContextData QuickRefactorHandler::prepareContext( TextEditor::TextEditorWidget *editor, const Utils::Text::Range &range, const QString &instructions) { - PluginLLMCore::ContextData context; + LLMCore::ContextData context; auto textDocument = editor->textDocument(); Context::DocumentReaderQtCreator documentReader; @@ -270,10 +270,10 @@ PluginLLMCore::ContextData QuickRefactorHandler::prepareContext( QString systemPrompt = Settings::quickRefactorSettings().systemPrompt(); - auto project = PluginLLMCore::RulesLoader::getActiveProject(); + auto project = Context::RulesLoader::getActiveProject(); if (project) { - QString projectRules = PluginLLMCore::RulesLoader::loadRulesForProject( - project, PluginLLMCore::RulesContext::QuickRefactor); + QString projectRules = Context::RulesLoader::loadRulesForProject( + project, Context::RulesContext::QuickRefactor); if (!projectRules.isEmpty()) { systemPrompt += "\n\n# Project Rules\n\n" + projectRules; @@ -351,7 +351,7 @@ PluginLLMCore::ContextData QuickRefactorHandler::prepareContext( context.systemPrompt = systemPrompt; - QVector messages; + QVector messages; messages.append( {"user", instructions.isEmpty() ? "Refactor the code to improve its quality and maintainability." @@ -370,7 +370,7 @@ void QuickRefactorHandler::handleLLMResponse( if (isComplete) { m_isRefactoringInProgress = false; - QString cleanedResponse = PluginLLMCore::ResponseCleaner::clean(response); + QString cleanedResponse = ResponseCleaner::clean(response); RefactorResult result; result.newText = cleanedResponse; diff --git a/QuickRefactorHandler.hpp b/sources/refactor/QuickRefactorHandler.hpp similarity index 92% rename from QuickRefactorHandler.hpp rename to sources/refactor/QuickRefactorHandler.hpp index 8d58b73..e95d434 100644 --- a/QuickRefactorHandler.hpp +++ b/sources/refactor/QuickRefactorHandler.hpp @@ -13,8 +13,8 @@ #include #include -#include -#include +#include "llmcore/ContextData.hpp" +#include "providers/Provider.hpp" namespace QodeAssist { @@ -56,7 +56,7 @@ private: const Utils::Text::Range &range); void handleLLMResponse(const QString &response, const QJsonObject &request, bool isComplete); - PluginLLMCore::ContextData prepareContext( + LLMCore::ContextData prepareContext( TextEditor::TextEditorWidget *editor, const Utils::Text::Range &range, const QString &instructions); @@ -64,7 +64,7 @@ private: struct RequestContext { QJsonObject originalRequest; - PluginLLMCore::Provider *provider; + Providers::Provider *provider; }; QHash m_activeRequests; diff --git a/RefactorContextHelper.hpp b/sources/refactor/RefactorContextHelper.hpp similarity index 100% rename from RefactorContextHelper.hpp rename to sources/refactor/RefactorContextHelper.hpp diff --git a/RefactorSuggestion.cpp b/sources/refactor/RefactorSuggestion.cpp similarity index 98% rename from RefactorSuggestion.cpp rename to sources/refactor/RefactorSuggestion.cpp index 87e8c7e..9918334 100644 --- a/RefactorSuggestion.cpp +++ b/sources/refactor/RefactorSuggestion.cpp @@ -2,8 +2,8 @@ // SPDX-License-Identifier: GPL-3.0-or-later // Additional attribution terms under GPLv3 §7(b) apply — see LICENSE -#include "RefactorSuggestion.hpp" -#include "LLMSuggestion.hpp" +#include "refactor/RefactorSuggestion.hpp" +#include "completion/LLMSuggestion.hpp" #include #include diff --git a/RefactorSuggestion.hpp b/sources/refactor/RefactorSuggestion.hpp similarity index 100% rename from RefactorSuggestion.hpp rename to sources/refactor/RefactorSuggestion.hpp diff --git a/RefactorSuggestionHoverHandler.cpp b/sources/refactor/RefactorSuggestionHoverHandler.cpp similarity index 98% rename from RefactorSuggestionHoverHandler.cpp rename to sources/refactor/RefactorSuggestionHoverHandler.cpp index 1f392c8..d90fd41 100644 --- a/RefactorSuggestionHoverHandler.cpp +++ b/sources/refactor/RefactorSuggestionHoverHandler.cpp @@ -2,8 +2,8 @@ // SPDX-License-Identifier: GPL-3.0-or-later // Additional attribution terms under GPLv3 §7(b) apply — see LICENSE -#include "RefactorSuggestionHoverHandler.hpp" -#include "RefactorSuggestion.hpp" +#include "refactor/RefactorSuggestionHoverHandler.hpp" +#include "refactor/RefactorSuggestion.hpp" #include #include diff --git a/RefactorSuggestionHoverHandler.hpp b/sources/refactor/RefactorSuggestionHoverHandler.hpp similarity index 100% rename from RefactorSuggestionHoverHandler.hpp rename to sources/refactor/RefactorSuggestionHoverHandler.hpp diff --git a/pluginllmcore/ResponseCleaner.hpp b/sources/refactor/ResponseCleaner.hpp similarity index 97% rename from pluginllmcore/ResponseCleaner.hpp rename to sources/refactor/ResponseCleaner.hpp index 74f4c30..e40fc09 100644 --- a/pluginllmcore/ResponseCleaner.hpp +++ b/sources/refactor/ResponseCleaner.hpp @@ -8,7 +8,7 @@ #include #include -namespace QodeAssist::PluginLLMCore { +namespace QodeAssist { class ResponseCleaner { @@ -100,5 +100,5 @@ private: } }; -} // namespace QodeAssist::PluginLLMCore +} // namespace QodeAssist diff --git a/settings/AgentRole.cpp b/sources/settings/AgentRole.cpp similarity index 100% rename from settings/AgentRole.cpp rename to sources/settings/AgentRole.cpp diff --git a/settings/AgentRole.hpp b/sources/settings/AgentRole.hpp similarity index 100% rename from settings/AgentRole.hpp rename to sources/settings/AgentRole.hpp diff --git a/settings/AgentRoleDialog.cpp b/sources/settings/AgentRoleDialog.cpp similarity index 100% rename from settings/AgentRoleDialog.cpp rename to sources/settings/AgentRoleDialog.cpp diff --git a/settings/AgentRoleDialog.hpp b/sources/settings/AgentRoleDialog.hpp similarity index 100% rename from settings/AgentRoleDialog.hpp rename to sources/settings/AgentRoleDialog.hpp diff --git a/settings/AgentRolesWidget.cpp b/sources/settings/AgentRolesWidget.cpp similarity index 100% rename from settings/AgentRolesWidget.cpp rename to sources/settings/AgentRolesWidget.cpp diff --git a/settings/AgentRolesWidget.hpp b/sources/settings/AgentRolesWidget.hpp similarity index 100% rename from settings/AgentRolesWidget.hpp rename to sources/settings/AgentRolesWidget.hpp diff --git a/settings/Assisttr.h b/sources/settings/Assisttr.h similarity index 100% rename from settings/Assisttr.h rename to sources/settings/Assisttr.h diff --git a/settings/ButtonAspect.hpp b/sources/settings/ButtonAspect.hpp similarity index 100% rename from settings/ButtonAspect.hpp rename to sources/settings/ButtonAspect.hpp diff --git a/settings/CMakeLists.txt b/sources/settings/CMakeLists.txt similarity index 89% rename from settings/CMakeLists.txt rename to sources/settings/CMakeLists.txt index 757bb64..4f8160b 100644 --- a/settings/CMakeLists.txt +++ b/sources/settings/CMakeLists.txt @@ -33,4 +33,7 @@ target_link_libraries(QodeAssistSettings QodeAssistLogger Skills ) -target_include_directories(QodeAssistSettings PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) +target_include_directories(QodeAssistSettings + PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} + PRIVATE ${CMAKE_SOURCE_DIR}/sources +) diff --git a/settings/ChatAssistantSettings.cpp b/sources/settings/ChatAssistantSettings.cpp similarity index 100% rename from settings/ChatAssistantSettings.cpp rename to sources/settings/ChatAssistantSettings.cpp diff --git a/settings/ChatAssistantSettings.hpp b/sources/settings/ChatAssistantSettings.hpp similarity index 100% rename from settings/ChatAssistantSettings.hpp rename to sources/settings/ChatAssistantSettings.hpp diff --git a/settings/CodeCompletionSettings.cpp b/sources/settings/CodeCompletionSettings.cpp similarity index 100% rename from settings/CodeCompletionSettings.cpp rename to sources/settings/CodeCompletionSettings.cpp diff --git a/settings/CodeCompletionSettings.hpp b/sources/settings/CodeCompletionSettings.hpp similarity index 100% rename from settings/CodeCompletionSettings.hpp rename to sources/settings/CodeCompletionSettings.hpp diff --git a/settings/ConfigurationManager.cpp b/sources/settings/ConfigurationManager.cpp similarity index 100% rename from settings/ConfigurationManager.cpp rename to sources/settings/ConfigurationManager.cpp diff --git a/settings/ConfigurationManager.hpp b/sources/settings/ConfigurationManager.hpp similarity index 100% rename from settings/ConfigurationManager.hpp rename to sources/settings/ConfigurationManager.hpp diff --git a/settings/GeneralSettings.cpp b/sources/settings/GeneralSettings.cpp similarity index 99% rename from settings/GeneralSettings.cpp rename to sources/settings/GeneralSettings.cpp index 8f7df30..3de38b4 100644 --- a/settings/GeneralSettings.cpp +++ b/sources/settings/GeneralSettings.cpp @@ -25,7 +25,7 @@ #include #include -#include "../Version.hpp" +#include "plugin/Version.hpp" #include "ConfigurationManager.hpp" #include "Logger.hpp" #include "ProviderNameMigration.hpp" diff --git a/settings/GeneralSettings.hpp b/sources/settings/GeneralSettings.hpp similarity index 99% rename from settings/GeneralSettings.hpp rename to sources/settings/GeneralSettings.hpp index abc1cd0..97a1712 100644 --- a/settings/GeneralSettings.hpp +++ b/sources/settings/GeneralSettings.hpp @@ -14,7 +14,7 @@ namespace Utils { class DetailsWidget; } -namespace QodeAssist::PluginLLMCore { +namespace QodeAssist::Providers { class Provider; } namespace QodeAssist::Settings { diff --git a/settings/McpClientsListAspect.cpp b/sources/settings/McpClientsListAspect.cpp similarity index 100% rename from settings/McpClientsListAspect.cpp rename to sources/settings/McpClientsListAspect.cpp diff --git a/settings/McpClientsListAspect.hpp b/sources/settings/McpClientsListAspect.hpp similarity index 100% rename from settings/McpClientsListAspect.hpp rename to sources/settings/McpClientsListAspect.hpp diff --git a/settings/McpSettings.cpp b/sources/settings/McpSettings.cpp similarity index 100% rename from settings/McpSettings.cpp rename to sources/settings/McpSettings.cpp diff --git a/settings/McpSettings.hpp b/sources/settings/McpSettings.hpp similarity index 100% rename from settings/McpSettings.hpp rename to sources/settings/McpSettings.hpp diff --git a/settings/PluginUpdater.cpp b/sources/settings/PluginUpdater.cpp similarity index 100% rename from settings/PluginUpdater.cpp rename to sources/settings/PluginUpdater.cpp diff --git a/settings/PluginUpdater.hpp b/sources/settings/PluginUpdater.hpp similarity index 100% rename from settings/PluginUpdater.hpp rename to sources/settings/PluginUpdater.hpp diff --git a/settings/ProjectSettings.cpp b/sources/settings/ProjectSettings.cpp similarity index 100% rename from settings/ProjectSettings.cpp rename to sources/settings/ProjectSettings.cpp diff --git a/settings/ProjectSettings.hpp b/sources/settings/ProjectSettings.hpp similarity index 100% rename from settings/ProjectSettings.hpp rename to sources/settings/ProjectSettings.hpp diff --git a/settings/ProjectSettingsPanel.cpp b/sources/settings/ProjectSettingsPanel.cpp similarity index 97% rename from settings/ProjectSettingsPanel.cpp rename to sources/settings/ProjectSettingsPanel.cpp index 0f37f71..a0b081d 100644 --- a/settings/ProjectSettingsPanel.cpp +++ b/sources/settings/ProjectSettingsPanel.cpp @@ -16,8 +16,8 @@ #include "SettingsConstants.hpp" #include "SettingsTr.hpp" #include "SkillsSettings.hpp" -#include "sources/skills/SkillsLoader.hpp" -#include "sources/skills/SkillsManager.hpp" +#include "skills/SkillsLoader.hpp" +#include "skills/SkillsManager.hpp" using namespace ProjectExplorer; diff --git a/settings/ProjectSettingsPanel.hpp b/sources/settings/ProjectSettingsPanel.hpp similarity index 100% rename from settings/ProjectSettingsPanel.hpp rename to sources/settings/ProjectSettingsPanel.hpp diff --git a/settings/ProviderNameMigration.hpp b/sources/settings/ProviderNameMigration.hpp similarity index 100% rename from settings/ProviderNameMigration.hpp rename to sources/settings/ProviderNameMigration.hpp diff --git a/settings/ProviderSettings.cpp b/sources/settings/ProviderSettings.cpp similarity index 100% rename from settings/ProviderSettings.cpp rename to sources/settings/ProviderSettings.cpp diff --git a/settings/ProviderSettings.hpp b/sources/settings/ProviderSettings.hpp similarity index 100% rename from settings/ProviderSettings.hpp rename to sources/settings/ProviderSettings.hpp diff --git a/settings/QuickRefactorSettings.cpp b/sources/settings/QuickRefactorSettings.cpp similarity index 100% rename from settings/QuickRefactorSettings.cpp rename to sources/settings/QuickRefactorSettings.cpp diff --git a/settings/QuickRefactorSettings.hpp b/sources/settings/QuickRefactorSettings.hpp similarity index 100% rename from settings/QuickRefactorSettings.hpp rename to sources/settings/QuickRefactorSettings.hpp diff --git a/settings/SettingsConstants.hpp b/sources/settings/SettingsConstants.hpp similarity index 100% rename from settings/SettingsConstants.hpp rename to sources/settings/SettingsConstants.hpp diff --git a/settings/SettingsDialog.cpp b/sources/settings/SettingsDialog.cpp similarity index 100% rename from settings/SettingsDialog.cpp rename to sources/settings/SettingsDialog.cpp diff --git a/settings/SettingsDialog.hpp b/sources/settings/SettingsDialog.hpp similarity index 100% rename from settings/SettingsDialog.hpp rename to sources/settings/SettingsDialog.hpp diff --git a/settings/SettingsTr.hpp b/sources/settings/SettingsTr.hpp similarity index 100% rename from settings/SettingsTr.hpp rename to sources/settings/SettingsTr.hpp diff --git a/settings/SettingsUtils.hpp b/sources/settings/SettingsUtils.hpp similarity index 100% rename from settings/SettingsUtils.hpp rename to sources/settings/SettingsUtils.hpp diff --git a/settings/SkillsSettings.cpp b/sources/settings/SkillsSettings.cpp similarity index 99% rename from settings/SkillsSettings.cpp rename to sources/settings/SkillsSettings.cpp index a51beb7..bc26d2a 100644 --- a/settings/SkillsSettings.cpp +++ b/sources/settings/SkillsSettings.cpp @@ -14,7 +14,7 @@ #include "SettingsConstants.hpp" #include "SettingsTr.hpp" -#include "sources/skills/SkillsLoader.hpp" +#include "skills/SkillsLoader.hpp" namespace QodeAssist::Settings { diff --git a/settings/SkillsSettings.hpp b/sources/settings/SkillsSettings.hpp similarity index 100% rename from settings/SkillsSettings.hpp rename to sources/settings/SkillsSettings.hpp diff --git a/settings/StatusDot.hpp b/sources/settings/StatusDot.hpp similarity index 100% rename from settings/StatusDot.hpp rename to sources/settings/StatusDot.hpp diff --git a/settings/ToolsSettings.cpp b/sources/settings/ToolsSettings.cpp similarity index 100% rename from settings/ToolsSettings.cpp rename to sources/settings/ToolsSettings.cpp diff --git a/settings/ToolsSettings.hpp b/sources/settings/ToolsSettings.hpp similarity index 100% rename from settings/ToolsSettings.hpp rename to sources/settings/ToolsSettings.hpp diff --git a/settings/UpdateDialog.cpp b/sources/settings/UpdateDialog.cpp similarity index 100% rename from settings/UpdateDialog.cpp rename to sources/settings/UpdateDialog.cpp diff --git a/settings/UpdateDialog.hpp b/sources/settings/UpdateDialog.hpp similarity index 100% rename from settings/UpdateDialog.hpp rename to sources/settings/UpdateDialog.hpp diff --git a/sources/skills/CMakeLists.txt b/sources/skills/CMakeLists.txt index 7d4aa9e..5f9a4b8 100644 --- a/sources/skills/CMakeLists.txt +++ b/sources/skills/CMakeLists.txt @@ -9,4 +9,4 @@ target_link_libraries(Skills Qt::Core ) -target_include_directories(Skills PUBLIC ${CMAKE_SOURCE_DIR}) +target_include_directories(Skills PUBLIC ${CMAKE_SOURCE_DIR}/sources) diff --git a/templates/Alpaca.hpp b/sources/templates/Alpaca.hpp similarity index 74% rename from templates/Alpaca.hpp rename to sources/templates/Alpaca.hpp index 6e96c92..be74ed4 100644 --- a/templates/Alpaca.hpp +++ b/sources/templates/Alpaca.hpp @@ -4,21 +4,21 @@ #pragma once -#include "pluginllmcore/PromptTemplate.hpp" +#include "templates/PromptTemplate.hpp" #include namespace QodeAssist::Templates { -class Alpaca : public PluginLLMCore::PromptTemplate +class Alpaca : public Templates::PromptTemplate { public: QString name() const override { return "Alpaca"; } - PluginLLMCore::TemplateType type() const override { return PluginLLMCore::TemplateType::Chat; } + Templates::TemplateType type() const override { return Templates::TemplateType::Chat; } QStringList stopWords() const override { return QStringList() << "### Instruction:" << "### Response:"; } - void prepareRequest(QJsonObject &request, const PluginLLMCore::ContextData &context) const override + void prepareRequest(QJsonObject &request, const LLMCore::ContextData &context) const override { QJsonArray messages; @@ -57,14 +57,14 @@ public: "}\n\n" "Combines all messages into a single formatted prompt."; } - bool isSupportProvider(PluginLLMCore::ProviderID id) const override + bool isSupportProvider(Providers::ProviderID id) const override { switch (id) { - case PluginLLMCore::ProviderID::Ollama: - case PluginLLMCore::ProviderID::LMStudio: - case PluginLLMCore::ProviderID::OpenRouter: - case PluginLLMCore::ProviderID::OpenAICompatible: - case PluginLLMCore::ProviderID::LlamaCpp: + case Providers::ProviderID::Ollama: + case Providers::ProviderID::LMStudio: + case Providers::ProviderID::OpenRouter: + case Providers::ProviderID::OpenAICompatible: + case Providers::ProviderID::LlamaCpp: return true; default: return false; diff --git a/templates/ChatML.hpp b/sources/templates/ChatML.hpp similarity index 75% rename from templates/ChatML.hpp rename to sources/templates/ChatML.hpp index b4e0b7f..fa96f0b 100644 --- a/templates/ChatML.hpp +++ b/sources/templates/ChatML.hpp @@ -6,20 +6,20 @@ #include -#include "pluginllmcore/PromptTemplate.hpp" +#include "templates/PromptTemplate.hpp" namespace QodeAssist::Templates { -class ChatML : public PluginLLMCore::PromptTemplate +class ChatML : public Templates::PromptTemplate { public: QString name() const override { return "ChatML"; } - PluginLLMCore::TemplateType type() const override { return PluginLLMCore::TemplateType::Chat; } + Templates::TemplateType type() const override { return Templates::TemplateType::Chat; } QStringList stopWords() const override { return QStringList() << "<|im_start|>" << "<|im_end|>"; } - void prepareRequest(QJsonObject &request, const PluginLLMCore::ContextData &context) const override + void prepareRequest(QJsonObject &request, const LLMCore::ContextData &context) const override { QJsonArray messages; @@ -58,14 +58,14 @@ public: "}\n\n" "Compatible with multiple providers supporting the ChatML token format."; } - bool isSupportProvider(PluginLLMCore::ProviderID id) const override + bool isSupportProvider(Providers::ProviderID id) const override { switch (id) { - case PluginLLMCore::ProviderID::Ollama: - case PluginLLMCore::ProviderID::LMStudio: - case PluginLLMCore::ProviderID::OpenRouter: - case PluginLLMCore::ProviderID::OpenAICompatible: - case PluginLLMCore::ProviderID::LlamaCpp: + case Providers::ProviderID::Ollama: + case Providers::ProviderID::LMStudio: + case Providers::ProviderID::OpenRouter: + case Providers::ProviderID::OpenAICompatible: + case Providers::ProviderID::LlamaCpp: return true; default: return false; diff --git a/templates/Claude.hpp b/sources/templates/Claude.hpp similarity index 92% rename from templates/Claude.hpp rename to sources/templates/Claude.hpp index d549fd0..7be7eaf 100644 --- a/templates/Claude.hpp +++ b/sources/templates/Claude.hpp @@ -6,18 +6,18 @@ #include -#include "pluginllmcore/PromptTemplate.hpp" +#include "templates/PromptTemplate.hpp" namespace QodeAssist::Templates { -class Claude : public PluginLLMCore::PromptTemplate +class Claude : public Templates::PromptTemplate { public: - PluginLLMCore::TemplateType type() const override { return PluginLLMCore::TemplateType::Chat; } + Templates::TemplateType type() const override { return Templates::TemplateType::Chat; } QString name() const override { return "Claude"; } QStringList stopWords() const override { return QStringList(); } bool supportsToolHistory() const override { return true; } - void prepareRequest(QJsonObject &request, const PluginLLMCore::ContextData &context) const override + void prepareRequest(QJsonObject &request, const LLMCore::ContextData &context) const override { QJsonArray messages; @@ -136,10 +136,10 @@ public: "}\n\n" "Formats content according to Claude API specifications."; } - bool isSupportProvider(PluginLLMCore::ProviderID id) const override + bool isSupportProvider(Providers::ProviderID id) const override { switch (id) { - case QodeAssist::PluginLLMCore::ProviderID::Claude: + case QodeAssist::Providers::ProviderID::Claude: return true; default: return false; diff --git a/templates/CodeLlamaFim.hpp b/sources/templates/CodeLlamaFim.hpp similarity index 74% rename from templates/CodeLlamaFim.hpp rename to sources/templates/CodeLlamaFim.hpp index 8162df0..f389f23 100644 --- a/templates/CodeLlamaFim.hpp +++ b/sources/templates/CodeLlamaFim.hpp @@ -4,21 +4,21 @@ #pragma once -#include "pluginllmcore/PromptTemplate.hpp" +#include "templates/PromptTemplate.hpp" namespace QodeAssist::Templates { -class CodeLlamaFim : public PluginLLMCore::PromptTemplate +class CodeLlamaFim : public Templates::PromptTemplate { public: - PluginLLMCore::TemplateType type() const override { return PluginLLMCore::TemplateType::FIM; } + Templates::TemplateType type() const override { return Templates::TemplateType::FIM; } QString name() const override { return "CodeLlama FIM"; } QString endpoint() const override { return QStringLiteral("/api/generate"); } QStringList stopWords() const override { return QStringList() << "" << "
" << "";
     }
-    void prepareRequest(QJsonObject &request, const PluginLLMCore::ContextData &context) const override
+    void prepareRequest(QJsonObject &request, const LLMCore::ContextData &context) const override
     {
         request["prompt"] = QString("
 %1 %2 ")
                                 .arg(context.prefix.value_or(""), context.suffix.value_or(""));
@@ -33,10 +33,10 @@ public:
                "}\n\n"
                "Optimized for code completion with CodeLlama models.";
     }
-    bool isSupportProvider(PluginLLMCore::ProviderID id) const override
+    bool isSupportProvider(Providers::ProviderID id) const override
     {
         switch (id) {
-        case QodeAssist::PluginLLMCore::ProviderID::Ollama:
+        case QodeAssist::Providers::ProviderID::Ollama:
             return true;
         default:
             return false;
diff --git a/templates/CodeLlamaQMLFim.hpp b/sources/templates/CodeLlamaQMLFim.hpp
similarity index 75%
rename from templates/CodeLlamaQMLFim.hpp
rename to sources/templates/CodeLlamaQMLFim.hpp
index 7732570..d12ba32 100644
--- a/templates/CodeLlamaQMLFim.hpp
+++ b/sources/templates/CodeLlamaQMLFim.hpp
@@ -4,14 +4,14 @@
 
 #pragma once
 
-#include "pluginllmcore/PromptTemplate.hpp"
+#include "templates/PromptTemplate.hpp"
 
 namespace QodeAssist::Templates {
 
-class CodeLlamaQMLFim : public PluginLLMCore::PromptTemplate
+class CodeLlamaQMLFim : public Templates::PromptTemplate
 {
 public:
-    PluginLLMCore::TemplateType type() const override { return PluginLLMCore::TemplateType::FIM; }
+    Templates::TemplateType type() const override { return Templates::TemplateType::FIM; }
     QString name() const override { return "CodeLlama QML FIM"; }
     QString endpoint() const override { return QStringLiteral("/api/generate"); }
     QStringList stopWords() const override
@@ -19,7 +19,7 @@ public:
         return QStringList() << "" << "
" << "
" << "
" << "< EOT >" << "\\end" << "" << "" << "##"; } - void prepareRequest(QJsonObject &request, const PluginLLMCore::ContextData &context) const override + void prepareRequest(QJsonObject &request, const LLMCore::ContextData &context) const override { request["prompt"] = QString("%1
%2")
                                 .arg(context.suffix.value_or(""), context.prefix.value_or(""));
@@ -34,10 +34,10 @@ public:
                "}\n\n"
                "Specifically optimized for QML/JavaScript code completion.";
     }
-    bool isSupportProvider(PluginLLMCore::ProviderID id) const override
+    bool isSupportProvider(Providers::ProviderID id) const override
     {
         switch (id) {
-        case QodeAssist::PluginLLMCore::ProviderID::Ollama:
+        case QodeAssist::Providers::ProviderID::Ollama:
             return true;
         default:
             return false;
diff --git a/templates/GoogleAI.hpp b/sources/templates/GoogleAI.hpp
similarity index 92%
rename from templates/GoogleAI.hpp
rename to sources/templates/GoogleAI.hpp
index 8e21622..b57414a 100644
--- a/templates/GoogleAI.hpp
+++ b/sources/templates/GoogleAI.hpp
@@ -7,19 +7,19 @@
 #include 
 #include 
 
-#include "pluginllmcore/PromptTemplate.hpp"
+#include "templates/PromptTemplate.hpp"
 
 namespace QodeAssist::Templates {
 
-class GoogleAI : public PluginLLMCore::PromptTemplate
+class GoogleAI : public Templates::PromptTemplate
 {
 public:
-    PluginLLMCore::TemplateType type() const override { return PluginLLMCore::TemplateType::Chat; }
+    Templates::TemplateType type() const override { return Templates::TemplateType::Chat; }
     QString name() const override { return "Google AI"; }
     QStringList stopWords() const override { return QStringList(); }
     bool supportsToolHistory() const override { return true; }
 
-    void prepareRequest(QJsonObject &request, const PluginLLMCore::ContextData &context) const override
+    void prepareRequest(QJsonObject &request, const LLMCore::ContextData &context) const override
     {
         QJsonArray contents;
 
@@ -152,9 +152,9 @@ public:
                "Supports proper role mapping (model/user roles), images, and thinking blocks.";
     }
 
-    bool isSupportProvider(PluginLLMCore::ProviderID id) const override
+    bool isSupportProvider(Providers::ProviderID id) const override
     {
-        return id == QodeAssist::PluginLLMCore::ProviderID::GoogleAI;
+        return id == QodeAssist::Providers::ProviderID::GoogleAI;
     }
 };
 
diff --git a/pluginllmcore/IPromptProvider.hpp b/sources/templates/IPromptProvider.hpp
similarity index 68%
rename from pluginllmcore/IPromptProvider.hpp
rename to sources/templates/IPromptProvider.hpp
index 120e3e1..6ef19a1 100644
--- a/pluginllmcore/IPromptProvider.hpp
+++ b/sources/templates/IPromptProvider.hpp
@@ -4,10 +4,10 @@
 
 #pragma once
 
-#include "PromptTemplate.hpp"
+#include "templates/PromptTemplate.hpp"
 #include 
 
-namespace QodeAssist::PluginLLMCore {
+namespace QodeAssist::Templates {
 
 class IPromptProvider
 {
@@ -18,7 +18,7 @@ public:
 
     virtual QStringList templatesNames() const = 0;
 
-    virtual QStringList getTemplatesForProvider(ProviderID id) const = 0;
+    virtual QStringList getTemplatesForProvider(Providers::ProviderID id) const = 0;
 };
 
-} // namespace QodeAssist::PluginLLMCore
+} // namespace QodeAssist::Templates
diff --git a/templates/Llama2.hpp b/sources/templates/Llama2.hpp
similarity index 74%
rename from templates/Llama2.hpp
rename to sources/templates/Llama2.hpp
index 39cfc11..b3fdce5 100644
--- a/templates/Llama2.hpp
+++ b/sources/templates/Llama2.hpp
@@ -4,18 +4,18 @@
 
 #pragma once
 
-#include "pluginllmcore/PromptTemplate.hpp"
+#include "templates/PromptTemplate.hpp"
 #include 
 
 namespace QodeAssist::Templates {
 
-class Llama2 : public PluginLLMCore::PromptTemplate
+class Llama2 : public Templates::PromptTemplate
 {
 public:
     QString name() const override { return "Llama 2"; }
-    PluginLLMCore::TemplateType type() const override { return PluginLLMCore::TemplateType::Chat; }
+    Templates::TemplateType type() const override { return Templates::TemplateType::Chat; }
     QStringList stopWords() const override { return QStringList() << "[INST]"; }
-    void prepareRequest(QJsonObject &request, const PluginLLMCore::ContextData &context) const override
+    void prepareRequest(QJsonObject &request, const LLMCore::ContextData &context) const override
     {
         QJsonArray messages;
 
@@ -55,14 +55,14 @@ public:
                "}\n\n"
                "Compatible with Ollama, LM Studio, and other services for Llama 2.";
     }
-    bool isSupportProvider(PluginLLMCore::ProviderID id) const override
+    bool isSupportProvider(Providers::ProviderID id) const override
     {
         switch (id) {
-        case PluginLLMCore::ProviderID::Ollama:
-        case PluginLLMCore::ProviderID::LMStudio:
-        case PluginLLMCore::ProviderID::OpenRouter:
-        case PluginLLMCore::ProviderID::OpenAICompatible:
-        case PluginLLMCore::ProviderID::LlamaCpp:
+        case Providers::ProviderID::Ollama:
+        case Providers::ProviderID::LMStudio:
+        case Providers::ProviderID::OpenRouter:
+        case Providers::ProviderID::OpenAICompatible:
+        case Providers::ProviderID::LlamaCpp:
             return true;
         default:
             return false;
diff --git a/templates/Llama3.hpp b/sources/templates/Llama3.hpp
similarity index 76%
rename from templates/Llama3.hpp
rename to sources/templates/Llama3.hpp
index 9b591bd..91364c7 100644
--- a/templates/Llama3.hpp
+++ b/sources/templates/Llama3.hpp
@@ -6,20 +6,20 @@
 
 #include 
 
-#include "pluginllmcore/PromptTemplate.hpp"
+#include "templates/PromptTemplate.hpp"
 
 namespace QodeAssist::Templates {
 
-class Llama3 : public PluginLLMCore::PromptTemplate
+class Llama3 : public Templates::PromptTemplate
 {
 public:
     QString name() const override { return "Llama 3"; }
-    PluginLLMCore::TemplateType type() const override { return PluginLLMCore::TemplateType::Chat; }
+    Templates::TemplateType type() const override { return Templates::TemplateType::Chat; }
     QStringList stopWords() const override
     {
         return QStringList() << "<|start_header_id|>" << "<|end_header_id|>" << "<|eot_id|>";
     }
-    void prepareRequest(QJsonObject &request, const PluginLLMCore::ContextData &context) const override
+    void prepareRequest(QJsonObject &request, const LLMCore::ContextData &context) const override
     {
         QJsonArray messages;
 
@@ -62,14 +62,14 @@ public:
                "}\n\n"
                "Compatible with Ollama, LM Studio, and OpenAI-compatible services for Llama 3.";
     }
-    bool isSupportProvider(PluginLLMCore::ProviderID id) const override
+    bool isSupportProvider(Providers::ProviderID id) const override
     {
         switch (id) {
-        case PluginLLMCore::ProviderID::Ollama:
-        case PluginLLMCore::ProviderID::LMStudio:
-        case PluginLLMCore::ProviderID::OpenRouter:
-        case PluginLLMCore::ProviderID::OpenAICompatible:
-        case PluginLLMCore::ProviderID::LlamaCpp:
+        case Providers::ProviderID::Ollama:
+        case Providers::ProviderID::LMStudio:
+        case Providers::ProviderID::OpenRouter:
+        case Providers::ProviderID::OpenAICompatible:
+        case Providers::ProviderID::LlamaCpp:
             return true;
         default:
             return false;
diff --git a/templates/LlamaCppFim.hpp b/sources/templates/LlamaCppFim.hpp
similarity index 76%
rename from templates/LlamaCppFim.hpp
rename to sources/templates/LlamaCppFim.hpp
index 7f80d69..4da1c8d 100644
--- a/templates/LlamaCppFim.hpp
+++ b/sources/templates/LlamaCppFim.hpp
@@ -6,19 +6,19 @@
 
 #include 
 
-#include "pluginllmcore/PromptTemplate.hpp"
+#include "templates/PromptTemplate.hpp"
 
 namespace QodeAssist::Templates {
 
-class LlamaCppFim : public PluginLLMCore::PromptTemplate
+class LlamaCppFim : public Templates::PromptTemplate
 {
 public:
-    PluginLLMCore::TemplateType type() const override { return PluginLLMCore::TemplateType::FIM; }
+    Templates::TemplateType type() const override { return Templates::TemplateType::FIM; }
     QString name() const override { return "llama.cpp FIM"; }
     QString endpoint() const override { return QStringLiteral("/infill"); }
     QStringList stopWords() const override { return {}; }
 
-    void prepareRequest(QJsonObject &request, const PluginLLMCore::ContextData &context) const override
+    void prepareRequest(QJsonObject &request, const LLMCore::ContextData &context) const override
     {
         request["input_prefix"] = context.prefix.value_or("");
         request["input_suffix"] = context.suffix.value_or("");
@@ -46,9 +46,9 @@ public:
                "Recommended for models with FIM capability.";
     }
 
-    bool isSupportProvider(PluginLLMCore::ProviderID id) const override
+    bool isSupportProvider(Providers::ProviderID id) const override
     {
-        return id == QodeAssist::PluginLLMCore::ProviderID::LlamaCpp;
+        return id == QodeAssist::Providers::ProviderID::LlamaCpp;
     }
 };
 
diff --git a/templates/MistralAI.hpp b/sources/templates/MistralAI.hpp
similarity index 81%
rename from templates/MistralAI.hpp
rename to sources/templates/MistralAI.hpp
index e396325..5e867aa 100644
--- a/templates/MistralAI.hpp
+++ b/sources/templates/MistralAI.hpp
@@ -6,19 +6,19 @@
 
 #include 
 
-#include "pluginllmcore/PromptTemplate.hpp"
+#include "templates/PromptTemplate.hpp"
 #include "templates/ToolMessages.hpp"
 
 namespace QodeAssist::Templates {
 
-class MistralAIFim : public PluginLLMCore::PromptTemplate
+class MistralAIFim : public Templates::PromptTemplate
 {
 public:
-    PluginLLMCore::TemplateType type() const override { return PluginLLMCore::TemplateType::FIM; }
+    Templates::TemplateType type() const override { return Templates::TemplateType::FIM; }
     QString name() const override { return "Mistral AI FIM"; }
     QString endpoint() const override { return QStringLiteral("/v1/fim/completions"); }
     QStringList stopWords() const override { return QStringList(); }
-    void prepareRequest(QJsonObject &request, const PluginLLMCore::ContextData &context) const override
+    void prepareRequest(QJsonObject &request, const LLMCore::ContextData &context) const override
     {
         request["prompt"] = context.prefix.value_or("");
         request["suffix"] = context.suffix.value_or("");
@@ -32,10 +32,10 @@ public:
                "}\n\n"
                "Optimized for code completion with MistralAI models.";
     }
-    bool isSupportProvider(PluginLLMCore::ProviderID id) const override
+    bool isSupportProvider(Providers::ProviderID id) const override
     {
         switch (id) {
-        case QodeAssist::PluginLLMCore::ProviderID::MistralAI:
+        case QodeAssist::Providers::ProviderID::MistralAI:
             return true;
         default:
             return false;
@@ -43,15 +43,15 @@ public:
     }
 };
 
-class MistralAIChat : public PluginLLMCore::PromptTemplate
+class MistralAIChat : public Templates::PromptTemplate
 {
 public:
-    PluginLLMCore::TemplateType type() const override { return PluginLLMCore::TemplateType::Chat; }
+    Templates::TemplateType type() const override { return Templates::TemplateType::Chat; }
     QString name() const override { return "Mistral AI Chat"; }
     QStringList stopWords() const override { return QStringList(); }
     bool supportsToolHistory() const override { return true; }
 
-    void prepareRequest(QJsonObject &request, const PluginLLMCore::ContextData &context) const override
+    void prepareRequest(QJsonObject &request, const LLMCore::ContextData &context) const override
     {
         QJsonArray messages;
 
@@ -107,10 +107,10 @@ public:
                "}\n\n"
                "Supports system messages, conversation history, and images.";
     }
-    bool isSupportProvider(PluginLLMCore::ProviderID id) const override
+    bool isSupportProvider(Providers::ProviderID id) const override
     {
         switch (id) {
-        case QodeAssist::PluginLLMCore::ProviderID::MistralAI:
+        case QodeAssist::Providers::ProviderID::MistralAI:
             return true;
         default:
             return false;
diff --git a/templates/Ollama.hpp b/sources/templates/Ollama.hpp
similarity index 83%
rename from templates/Ollama.hpp
rename to sources/templates/Ollama.hpp
index a711c24..5e34d21 100644
--- a/templates/Ollama.hpp
+++ b/sources/templates/Ollama.hpp
@@ -6,18 +6,18 @@
 
 #include 
 
-#include "pluginllmcore/PromptTemplate.hpp"
+#include "templates/PromptTemplate.hpp"
 
 namespace QodeAssist::Templates {
 
-class OllamaFim : public PluginLLMCore::PromptTemplate
+class OllamaFim : public Templates::PromptTemplate
 {
 public:
-    PluginLLMCore::TemplateType type() const override { return PluginLLMCore::TemplateType::FIM; }
+    Templates::TemplateType type() const override { return Templates::TemplateType::FIM; }
     QString name() const override { return "Ollama FIM"; }
     QString endpoint() const override { return QStringLiteral("/api/generate"); }
     QStringList stopWords() const override { return QStringList() << ""; }
-    void prepareRequest(QJsonObject &request, const PluginLLMCore::ContextData &context) const override
+    void prepareRequest(QJsonObject &request, const LLMCore::ContextData &context) const override
     {
         request["prompt"] = context.prefix.value_or("");
         request["suffix"] = context.suffix.value_or("");
@@ -33,10 +33,10 @@ public:
                "}\n\n"
                "Recommended for Ollama models with FIM capability.";
     }
-    bool isSupportProvider(PluginLLMCore::ProviderID id) const override
+    bool isSupportProvider(Providers::ProviderID id) const override
     {
         switch (id) {
-        case QodeAssist::PluginLLMCore::ProviderID::Ollama:
+        case QodeAssist::Providers::ProviderID::Ollama:
             return true;
         default:
             return false;
@@ -44,15 +44,15 @@ public:
     }
 };
 
-class OllamaChat : public PluginLLMCore::PromptTemplate
+class OllamaChat : public Templates::PromptTemplate
 {
 public:
-    PluginLLMCore::TemplateType type() const override { return PluginLLMCore::TemplateType::Chat; }
+    Templates::TemplateType type() const override { return Templates::TemplateType::Chat; }
     QString name() const override { return "Ollama Chat"; }
     QStringList stopWords() const override { return QStringList(); }
     bool supportsToolHistory() const override { return true; }
 
-    void prepareRequest(QJsonObject &request, const PluginLLMCore::ContextData &context) const override
+    void prepareRequest(QJsonObject &request, const LLMCore::ContextData &context) const override
     {
         QJsonArray messages;
 
@@ -114,10 +114,10 @@ public:
                "Recommended for Ollama models with chat capability.\n"
                "Supports images for multimodal models (e.g., llava).";
     }
-    bool isSupportProvider(PluginLLMCore::ProviderID id) const override
+    bool isSupportProvider(Providers::ProviderID id) const override
     {
         switch (id) {
-        case QodeAssist::PluginLLMCore::ProviderID::Ollama:
+        case QodeAssist::Providers::ProviderID::Ollama:
             return true;
         default:
             return false;
diff --git a/templates/OpenAI.hpp b/sources/templates/OpenAI.hpp
similarity index 86%
rename from templates/OpenAI.hpp
rename to sources/templates/OpenAI.hpp
index 6762b3f..e0d58c7 100644
--- a/templates/OpenAI.hpp
+++ b/sources/templates/OpenAI.hpp
@@ -6,19 +6,19 @@
 
 #include 
 
-#include "pluginllmcore/PromptTemplate.hpp"
+#include "templates/PromptTemplate.hpp"
 #include "templates/ToolMessages.hpp"
 
 namespace QodeAssist::Templates {
 
-class OpenAI : public PluginLLMCore::PromptTemplate
+class OpenAI : public Templates::PromptTemplate
 {
 public:
-    PluginLLMCore::TemplateType type() const override { return PluginLLMCore::TemplateType::Chat; }
+    Templates::TemplateType type() const override { return Templates::TemplateType::Chat; }
     QString name() const override { return "OpenAI"; }
     QStringList stopWords() const override { return QStringList(); }
     bool supportsToolHistory() const override { return true; }
-    void prepareRequest(QJsonObject &request, const PluginLLMCore::ContextData &context) const override
+    void prepareRequest(QJsonObject &request, const LLMCore::ContextData &context) const override
     {
         QJsonArray messages;
 
@@ -74,10 +74,10 @@ public:
                "}\n\n"
                "Standard Chat API format for OpenAI.";
     }
-    bool isSupportProvider(PluginLLMCore::ProviderID id) const override
+    bool isSupportProvider(Providers::ProviderID id) const override
     {
         switch (id) {
-        case QodeAssist::PluginLLMCore::ProviderID::OpenAI:
+        case QodeAssist::Providers::ProviderID::OpenAI:
             return true;
         default:
             return false;
diff --git a/templates/OpenAICompatible.hpp b/sources/templates/OpenAICompatible.hpp
similarity index 80%
rename from templates/OpenAICompatible.hpp
rename to sources/templates/OpenAICompatible.hpp
index 7ef4b14..2e59664 100644
--- a/templates/OpenAICompatible.hpp
+++ b/sources/templates/OpenAICompatible.hpp
@@ -6,19 +6,19 @@
 
 #include 
 
-#include "pluginllmcore/PromptTemplate.hpp"
+#include "templates/PromptTemplate.hpp"
 #include "templates/ToolMessages.hpp"
 
 namespace QodeAssist::Templates {
 
-class OpenAICompatible : public PluginLLMCore::PromptTemplate
+class OpenAICompatible : public Templates::PromptTemplate
 {
 public:
-    PluginLLMCore::TemplateType type() const override { return PluginLLMCore::TemplateType::Chat; }
+    Templates::TemplateType type() const override { return Templates::TemplateType::Chat; }
     QString name() const override { return "OpenAI Compatible"; }
     QStringList stopWords() const override { return QStringList(); }
     bool supportsToolHistory() const override { return true; }
-    void prepareRequest(QJsonObject &request, const PluginLLMCore::ContextData &context) const override
+    void prepareRequest(QJsonObject &request, const LLMCore::ContextData &context) const override
     {
         QJsonArray messages;
 
@@ -75,15 +75,15 @@ public:
                "Works with any service implementing the OpenAI Chat API specification.\n"
                "Supports images.";
     }
-    bool isSupportProvider(PluginLLMCore::ProviderID id) const override
+    bool isSupportProvider(Providers::ProviderID id) const override
     {
         switch (id) {
-        case PluginLLMCore::ProviderID::OpenAICompatible:
-        case PluginLLMCore::ProviderID::OpenRouter:
-        case PluginLLMCore::ProviderID::LMStudio:
-        case PluginLLMCore::ProviderID::LlamaCpp:
-        case PluginLLMCore::ProviderID::Qwen:
-        case PluginLLMCore::ProviderID::DeepSeek:
+        case Providers::ProviderID::OpenAICompatible:
+        case Providers::ProviderID::OpenRouter:
+        case Providers::ProviderID::LMStudio:
+        case Providers::ProviderID::LlamaCpp:
+        case Providers::ProviderID::Qwen:
+        case Providers::ProviderID::DeepSeek:
             return true;
         default:
             return false;
diff --git a/templates/OpenAIResponses.hpp b/sources/templates/OpenAIResponses.hpp
similarity index 88%
rename from templates/OpenAIResponses.hpp
rename to sources/templates/OpenAIResponses.hpp
index e1b417c..71a139c 100644
--- a/templates/OpenAIResponses.hpp
+++ b/sources/templates/OpenAIResponses.hpp
@@ -4,7 +4,7 @@
 
 #pragma once
 
-#include "pluginllmcore/PromptTemplate.hpp"
+#include "templates/PromptTemplate.hpp"
 
 #include 
 #include 
@@ -12,12 +12,12 @@
 
 namespace QodeAssist::Templates {
 
-class OpenAIResponses : public PluginLLMCore::PromptTemplate
+class OpenAIResponses : public Templates::PromptTemplate
 {
 public:
-    PluginLLMCore::TemplateType type() const noexcept override
+    Templates::TemplateType type() const noexcept override
     {
-        return PluginLLMCore::TemplateType::Chat;
+        return Templates::TemplateType::Chat;
     }
 
     QString name() const override { return "OpenAI Responses"; }
@@ -27,7 +27,7 @@ public:
     bool supportsToolHistory() const override { return true; }
 
     void prepareRequest(
-        QJsonObject &request, const PluginLLMCore::ContextData &context) const override
+        QJsonObject &request, const LLMCore::ContextData &context) const override
     {
         if (context.systemPrompt) {
             request["instructions"] = context.systemPrompt.value();
@@ -117,9 +117,9 @@ public:
                "}";
     }
 
-    bool isSupportProvider(PluginLLMCore::ProviderID id) const noexcept override
+    bool isSupportProvider(Providers::ProviderID id) const noexcept override
     {
-        return id == QodeAssist::PluginLLMCore::ProviderID::OpenAIResponses;
+        return id == QodeAssist::Providers::ProviderID::OpenAIResponses;
     }
 };
 
diff --git a/pluginllmcore/PromptProviderChat.hpp b/sources/templates/PromptProviderChat.hpp
similarity index 74%
rename from pluginllmcore/PromptProviderChat.hpp
rename to sources/templates/PromptProviderChat.hpp
index 84a73c7..1a04005 100644
--- a/pluginllmcore/PromptProviderChat.hpp
+++ b/sources/templates/PromptProviderChat.hpp
@@ -4,11 +4,11 @@
 
 #pragma once
 
-#include "IPromptProvider.hpp"
-#include "PromptTemplate.hpp"
-#include "PromptTemplateManager.hpp"
+#include "templates/IPromptProvider.hpp"
+#include "templates/PromptTemplate.hpp"
+#include "templates/PromptTemplateManager.hpp"
 
-namespace QodeAssist::PluginLLMCore {
+namespace QodeAssist::Templates {
 
 class PromptProviderChat : public IPromptProvider
 {
@@ -26,7 +26,7 @@ public:
 
     QStringList templatesNames() const override { return m_templateManager.chatTemplatesNames(); }
 
-    QStringList getTemplatesForProvider(ProviderID id) const override
+    QStringList getTemplatesForProvider(Providers::ProviderID id) const override
     {
         return m_templateManager.getChatTemplatesForProvider(id);
     }
@@ -35,4 +35,4 @@ private:
     PromptTemplateManager &m_templateManager;
 };
 
-} // namespace QodeAssist::PluginLLMCore
+} // namespace QodeAssist::Templates
diff --git a/pluginllmcore/PromptProviderFim.hpp b/sources/templates/PromptProviderFim.hpp
similarity index 77%
rename from pluginllmcore/PromptProviderFim.hpp
rename to sources/templates/PromptProviderFim.hpp
index a8c96c6..bd43f7d 100644
--- a/pluginllmcore/PromptProviderFim.hpp
+++ b/sources/templates/PromptProviderFim.hpp
@@ -4,10 +4,10 @@
 
 #pragma once
 
-#include "IPromptProvider.hpp"
-#include "PromptTemplateManager.hpp"
+#include "templates/IPromptProvider.hpp"
+#include "templates/PromptTemplateManager.hpp"
 
-namespace QodeAssist::PluginLLMCore {
+namespace QodeAssist::Templates {
 
 class PromptProviderFim : public IPromptProvider
 {
@@ -25,7 +25,7 @@ public:
 
     QStringList templatesNames() const override { return m_templateManager.fimTemplatesNames(); }
 
-    QStringList getTemplatesForProvider(ProviderID id) const override
+    QStringList getTemplatesForProvider(Providers::ProviderID id) const override
     {
         return m_templateManager.getFimTemplatesForProvider(id);
     }
@@ -34,4 +34,4 @@ private:
     PromptTemplateManager &m_templateManager;
 };
 
-} // namespace QodeAssist::PluginLLMCore
+} // namespace QodeAssist::Templates
diff --git a/pluginllmcore/PromptTemplate.hpp b/sources/templates/PromptTemplate.hpp
similarity index 67%
rename from pluginllmcore/PromptTemplate.hpp
rename to sources/templates/PromptTemplate.hpp
index 89e0d33..a828430 100644
--- a/pluginllmcore/PromptTemplate.hpp
+++ b/sources/templates/PromptTemplate.hpp
@@ -8,10 +8,10 @@
 #include 
 #include 
 
-#include "ContextData.hpp"
-#include "ProviderID.hpp"
+#include "llmcore/ContextData.hpp"
+#include "providers/ProviderID.hpp"
 
-namespace QodeAssist::PluginLLMCore {
+namespace QodeAssist::Templates {
 
 enum class TemplateType { Chat, FIM, FIMOnChat };
 
@@ -22,12 +22,12 @@ public:
     virtual TemplateType type() const = 0;
     virtual QString name() const = 0;
     virtual QStringList stopWords() const = 0;
-    virtual void prepareRequest(QJsonObject &request, const ContextData &context) const = 0;
+    virtual void prepareRequest(QJsonObject &request, const LLMCore::ContextData &context) const = 0;
     virtual QString description() const = 0;
-    virtual bool isSupportProvider(ProviderID id) const = 0;
+    virtual bool isSupportProvider(Providers::ProviderID id) const = 0;
 
     virtual QString endpoint() const { return {}; }
 
     virtual bool supportsToolHistory() const { return false; }
 };
-} // namespace QodeAssist::PluginLLMCore
+} // namespace QodeAssist::Templates
diff --git a/pluginllmcore/PromptTemplateManager.cpp b/sources/templates/PromptTemplateManager.cpp
similarity index 92%
rename from pluginllmcore/PromptTemplateManager.cpp
rename to sources/templates/PromptTemplateManager.cpp
index 0e314f3..fdf0658 100644
--- a/pluginllmcore/PromptTemplateManager.cpp
+++ b/sources/templates/PromptTemplateManager.cpp
@@ -2,11 +2,11 @@
 // SPDX-License-Identifier: GPL-3.0-or-later
 // Additional attribution terms under GPLv3 §7(b) apply — see LICENSE
 
-#include "PromptTemplateManager.hpp"
+#include "templates/PromptTemplateManager.hpp"
 
 #include 
 
-namespace QodeAssist::PluginLLMCore {
+namespace QodeAssist::Templates {
 
 PromptTemplateManager &PromptTemplateManager::instance()
 {
@@ -24,7 +24,7 @@ QStringList PromptTemplateManager::chatTemplatesNames() const
     return m_chatTemplates.keys();
 }
 
-QStringList PromptTemplateManager::getFimTemplatesForProvider(ProviderID id)
+QStringList PromptTemplateManager::getFimTemplatesForProvider(Providers::ProviderID id)
 {
     QStringList templateList;
 
@@ -37,7 +37,7 @@ QStringList PromptTemplateManager::getFimTemplatesForProvider(ProviderID id)
     return templateList;
 }
 
-QStringList PromptTemplateManager::getChatTemplatesForProvider(ProviderID id)
+QStringList PromptTemplateManager::getChatTemplatesForProvider(Providers::ProviderID id)
 {
     QStringList templateList;
 
@@ -81,4 +81,4 @@ PromptTemplate *PromptTemplateManager::getChatTemplateByName(const QString &temp
     return m_chatTemplates[templateName];
 }
 
-} // namespace QodeAssist::PluginLLMCore
+} // namespace QodeAssist::Templates
diff --git a/pluginllmcore/PromptTemplateManager.hpp b/sources/templates/PromptTemplateManager.hpp
similarity index 83%
rename from pluginllmcore/PromptTemplateManager.hpp
rename to sources/templates/PromptTemplateManager.hpp
index 3040d83..5378aea 100644
--- a/pluginllmcore/PromptTemplateManager.hpp
+++ b/sources/templates/PromptTemplateManager.hpp
@@ -7,9 +7,9 @@
 #include 
 #include 
 
-#include "PromptTemplate.hpp"
+#include "templates/PromptTemplate.hpp"
 
-namespace QodeAssist::PluginLLMCore {
+namespace QodeAssist::Templates {
 
 class PromptTemplateManager
 {
@@ -35,8 +35,8 @@ public:
     QStringList fimTemplatesNames() const;
     QStringList chatTemplatesNames() const;
 
-    QStringList getFimTemplatesForProvider(ProviderID id);
-    QStringList getChatTemplatesForProvider(ProviderID id);
+    QStringList getFimTemplatesForProvider(Providers::ProviderID id);
+    QStringList getChatTemplatesForProvider(Providers::ProviderID id);
 
 private:
     PromptTemplateManager() = default;
@@ -47,4 +47,4 @@ private:
     QMap m_chatTemplates;
 };
 
-} // namespace QodeAssist::PluginLLMCore
+} // namespace QodeAssist::Templates
diff --git a/templates/Qwen25CoderFIM.hpp b/sources/templates/Qwen25CoderFIM.hpp
similarity index 74%
rename from templates/Qwen25CoderFIM.hpp
rename to sources/templates/Qwen25CoderFIM.hpp
index 08e7e9a..43ad1a8 100644
--- a/templates/Qwen25CoderFIM.hpp
+++ b/sources/templates/Qwen25CoderFIM.hpp
@@ -4,19 +4,19 @@
 
 #pragma once
 
-#include "pluginllmcore/PromptTemplate.hpp"
+#include "templates/PromptTemplate.hpp"
 #include 
 
 namespace QodeAssist::Templates {
 
-class Qwen25CoderFIM : public PluginLLMCore::PromptTemplate
+class Qwen25CoderFIM : public Templates::PromptTemplate
 {
 public:
     QString name() const override { return "Qwen2.5 Coder FIM"; }
-    PluginLLMCore::TemplateType type() const override { return PluginLLMCore::TemplateType::FIM; }
+    Templates::TemplateType type() const override { return Templates::TemplateType::FIM; }
     QString endpoint() const override { return QStringLiteral("/api/generate"); }
     QStringList stopWords() const override { return QStringList() << "<|endoftext|>" << "<|EOT|>"; }
-    void prepareRequest(QJsonObject &request, const PluginLLMCore::ContextData &context) const override
+    void prepareRequest(QJsonObject &request, const LLMCore::ContextData &context) const override
     {
         request["prompt"] = QString("<|fim_prefix|>%1<|fim_suffix|>%2<|fim_middle|>")
                                 .arg(context.prefix.value_or(""), context.suffix.value_or(""));
@@ -32,10 +32,10 @@ public:
                "}\n\n"
                "Ideal for code completion with Qwen models.";
     }
-    bool isSupportProvider(PluginLLMCore::ProviderID id) const override
+    bool isSupportProvider(Providers::ProviderID id) const override
     {
         switch (id) {
-        case QodeAssist::PluginLLMCore::ProviderID::Ollama:
+        case QodeAssist::Providers::ProviderID::Ollama:
             return true;
         default:
             return false;
diff --git a/templates/Qwen3CoderFIM.hpp b/sources/templates/Qwen3CoderFIM.hpp
similarity index 71%
rename from templates/Qwen3CoderFIM.hpp
rename to sources/templates/Qwen3CoderFIM.hpp
index d4dceee..4540712 100644
--- a/templates/Qwen3CoderFIM.hpp
+++ b/sources/templates/Qwen3CoderFIM.hpp
@@ -6,17 +6,17 @@
 
 #include 
 
-#include "pluginllmcore/PromptTemplate.hpp"
+#include "templates/PromptTemplate.hpp"
 
 namespace QodeAssist::Templates {
 
-class Qwen3CoderFIM : public PluginLLMCore::PromptTemplate
+class Qwen3CoderFIM : public Templates::PromptTemplate
 {
 public:
     QString name() const override { return "Qwen3 Coder FIM"; }
-    PluginLLMCore::TemplateType type() const override { return PluginLLMCore::TemplateType::FIMOnChat; }
+    Templates::TemplateType type() const override { return Templates::TemplateType::FIMOnChat; }
     QStringList stopWords() const override { return QStringList() << "<|im_end|>"; }
-    void prepareRequest(QJsonObject &request, const PluginLLMCore::ContextData &context) const override
+    void prepareRequest(QJsonObject &request, const LLMCore::ContextData &context) const override
     {
         QJsonArray messages;
 
@@ -47,14 +47,14 @@ public:
                "  ]\n"
                "}\n\n";
     }
-    bool isSupportProvider(PluginLLMCore::ProviderID id) const override
+    bool isSupportProvider(Providers::ProviderID id) const override
     {
         switch (id) {
-        case PluginLLMCore::ProviderID::Ollama:
-        case PluginLLMCore::ProviderID::LMStudio:
-        case PluginLLMCore::ProviderID::OpenRouter:
-        case PluginLLMCore::ProviderID::OpenAICompatible:
-        case PluginLLMCore::ProviderID::LlamaCpp:
+        case Providers::ProviderID::Ollama:
+        case Providers::ProviderID::LMStudio:
+        case Providers::ProviderID::OpenRouter:
+        case Providers::ProviderID::OpenAICompatible:
+        case Providers::ProviderID::LlamaCpp:
             return true;
         default:
             return false;
diff --git a/templates/StarCoder2Fim.hpp b/sources/templates/StarCoder2Fim.hpp
similarity index 75%
rename from templates/StarCoder2Fim.hpp
rename to sources/templates/StarCoder2Fim.hpp
index 8ebb02f..c025664 100644
--- a/templates/StarCoder2Fim.hpp
+++ b/sources/templates/StarCoder2Fim.hpp
@@ -4,14 +4,14 @@
 
 #pragma once
 
-#include "pluginllmcore/PromptTemplate.hpp"
+#include "templates/PromptTemplate.hpp"
 
 namespace QodeAssist::Templates {
 
-class StarCoder2Fim : public PluginLLMCore::PromptTemplate
+class StarCoder2Fim : public Templates::PromptTemplate
 {
 public:
-    PluginLLMCore::TemplateType type() const override { return PluginLLMCore::TemplateType::FIM; }
+    Templates::TemplateType type() const override { return Templates::TemplateType::FIM; }
     QString name() const override { return "StarCoder2 FIM"; }
     QString endpoint() const override { return QStringLiteral("/api/generate"); }
     QStringList stopWords() const override
@@ -19,7 +19,7 @@ public:
         return QStringList() << "<|endoftext|>" << "" << "" << ""
                              << "";
     }
-    void prepareRequest(QJsonObject &request, const PluginLLMCore::ContextData &context) const override
+    void prepareRequest(QJsonObject &request, const LLMCore::ContextData &context) const override
     {
         request["prompt"] = QString("%1%2")
                                 .arg(context.prefix.value_or(""), context.suffix.value_or(""));
@@ -34,10 +34,10 @@ public:
                "}\n\n"
                "Includes stop words to prevent token duplication.";
     }
-    bool isSupportProvider(PluginLLMCore::ProviderID id) const override
+    bool isSupportProvider(Providers::ProviderID id) const override
     {
         switch (id) {
-        case QodeAssist::PluginLLMCore::ProviderID::Ollama:
+        case QodeAssist::Providers::ProviderID::Ollama:
             return true;
         default:
             return false;
diff --git a/templates/Templates.hpp b/sources/templates/Templates.hpp
similarity index 93%
rename from templates/Templates.hpp
rename to sources/templates/Templates.hpp
index a35c9a1..b63b695 100644
--- a/templates/Templates.hpp
+++ b/sources/templates/Templates.hpp
@@ -4,7 +4,7 @@
 
 #pragma once
 
-#include "pluginllmcore/PromptTemplateManager.hpp"
+#include "templates/PromptTemplateManager.hpp"
 #include "templates/Alpaca.hpp"
 #include "templates/ChatML.hpp"
 #include "templates/Claude.hpp"
@@ -27,7 +27,7 @@ namespace QodeAssist::Templates {
 
 inline void registerTemplates()
 {
-    auto &templateManager = PluginLLMCore::PromptTemplateManager::instance();
+    auto &templateManager = Templates::PromptTemplateManager::instance();
     templateManager.registerTemplate();
     templateManager.registerTemplate();
     templateManager.registerTemplate();
diff --git a/templates/ToolMessages.hpp b/sources/templates/ToolMessages.hpp
similarity index 95%
rename from templates/ToolMessages.hpp
rename to sources/templates/ToolMessages.hpp
index 9bc4f21..e25ec54 100644
--- a/templates/ToolMessages.hpp
+++ b/sources/templates/ToolMessages.hpp
@@ -9,11 +9,11 @@
 #include 
 #include 
 
-#include "pluginllmcore/ContextData.hpp"
+#include "llmcore/ContextData.hpp"
 
 namespace QodeAssist::Templates {
 
-inline bool appendOpenAIToolMessage(QJsonArray &messages, const PluginLLMCore::Message &msg)
+inline bool appendOpenAIToolMessage(QJsonArray &messages, const LLMCore::Message &msg)
 {
     if (!msg.toolCalls.isEmpty()) {
         QJsonArray toolCalls;
diff --git a/tools/BuildProjectTool.cpp b/sources/tools/BuildProjectTool.cpp
similarity index 99%
rename from tools/BuildProjectTool.cpp
rename to sources/tools/BuildProjectTool.cpp
index 1ffd333..522ac1d 100644
--- a/tools/BuildProjectTool.cpp
+++ b/sources/tools/BuildProjectTool.cpp
@@ -6,7 +6,7 @@
 
 #include "GetIssuesListTool.hpp"
 
-#include 
+#include "plugin/Version.hpp"
 #include 
 #include 
 #include 
diff --git a/tools/BuildProjectTool.hpp b/sources/tools/BuildProjectTool.hpp
similarity index 100%
rename from tools/BuildProjectTool.hpp
rename to sources/tools/BuildProjectTool.hpp
diff --git a/tools/CreateNewFileTool.cpp b/sources/tools/CreateNewFileTool.cpp
similarity index 100%
rename from tools/CreateNewFileTool.cpp
rename to sources/tools/CreateNewFileTool.cpp
diff --git a/tools/CreateNewFileTool.hpp b/sources/tools/CreateNewFileTool.hpp
similarity index 100%
rename from tools/CreateNewFileTool.hpp
rename to sources/tools/CreateNewFileTool.hpp
diff --git a/tools/EditFileTool.cpp b/sources/tools/EditFileTool.cpp
similarity index 100%
rename from tools/EditFileTool.cpp
rename to sources/tools/EditFileTool.cpp
diff --git a/tools/EditFileTool.hpp b/sources/tools/EditFileTool.hpp
similarity index 100%
rename from tools/EditFileTool.hpp
rename to sources/tools/EditFileTool.hpp
diff --git a/tools/ExecuteTerminalCommandTool.cpp b/sources/tools/ExecuteTerminalCommandTool.cpp
similarity index 100%
rename from tools/ExecuteTerminalCommandTool.cpp
rename to sources/tools/ExecuteTerminalCommandTool.cpp
diff --git a/tools/ExecuteTerminalCommandTool.hpp b/sources/tools/ExecuteTerminalCommandTool.hpp
similarity index 100%
rename from tools/ExecuteTerminalCommandTool.hpp
rename to sources/tools/ExecuteTerminalCommandTool.hpp
diff --git a/tools/FileSearchUtils.cpp b/sources/tools/FileSearchUtils.cpp
similarity index 100%
rename from tools/FileSearchUtils.cpp
rename to sources/tools/FileSearchUtils.cpp
diff --git a/tools/FileSearchUtils.hpp b/sources/tools/FileSearchUtils.hpp
similarity index 100%
rename from tools/FileSearchUtils.hpp
rename to sources/tools/FileSearchUtils.hpp
diff --git a/tools/FindFileTool.cpp b/sources/tools/FindFileTool.cpp
similarity index 100%
rename from tools/FindFileTool.cpp
rename to sources/tools/FindFileTool.cpp
diff --git a/tools/FindFileTool.hpp b/sources/tools/FindFileTool.hpp
similarity index 100%
rename from tools/FindFileTool.hpp
rename to sources/tools/FindFileTool.hpp
diff --git a/tools/GetIssuesListTool.cpp b/sources/tools/GetIssuesListTool.cpp
similarity index 99%
rename from tools/GetIssuesListTool.cpp
rename to sources/tools/GetIssuesListTool.cpp
index baef375..52a561c 100644
--- a/tools/GetIssuesListTool.cpp
+++ b/sources/tools/GetIssuesListTool.cpp
@@ -4,7 +4,7 @@
 
 #include "GetIssuesListTool.hpp"
 
-#include 
+#include "plugin/Version.hpp"
 #include 
 #include 
 #include 
diff --git a/tools/GetIssuesListTool.hpp b/sources/tools/GetIssuesListTool.hpp
similarity index 100%
rename from tools/GetIssuesListTool.hpp
rename to sources/tools/GetIssuesListTool.hpp
diff --git a/tools/ListProjectFilesTool.cpp b/sources/tools/ListProjectFilesTool.cpp
similarity index 100%
rename from tools/ListProjectFilesTool.cpp
rename to sources/tools/ListProjectFilesTool.cpp
diff --git a/tools/ListProjectFilesTool.hpp b/sources/tools/ListProjectFilesTool.hpp
similarity index 100%
rename from tools/ListProjectFilesTool.hpp
rename to sources/tools/ListProjectFilesTool.hpp
diff --git a/tools/ProjectSearchTool.cpp b/sources/tools/ProjectSearchTool.cpp
similarity index 100%
rename from tools/ProjectSearchTool.cpp
rename to sources/tools/ProjectSearchTool.cpp
diff --git a/tools/ProjectSearchTool.hpp b/sources/tools/ProjectSearchTool.hpp
similarity index 100%
rename from tools/ProjectSearchTool.hpp
rename to sources/tools/ProjectSearchTool.hpp
diff --git a/tools/ReadFileTool.cpp b/sources/tools/ReadFileTool.cpp
similarity index 100%
rename from tools/ReadFileTool.cpp
rename to sources/tools/ReadFileTool.cpp
diff --git a/tools/ReadFileTool.hpp b/sources/tools/ReadFileTool.hpp
similarity index 100%
rename from tools/ReadFileTool.hpp
rename to sources/tools/ReadFileTool.hpp
diff --git a/tools/ReadOriginalHistoryTool.cpp b/sources/tools/ReadOriginalHistoryTool.cpp
similarity index 100%
rename from tools/ReadOriginalHistoryTool.cpp
rename to sources/tools/ReadOriginalHistoryTool.cpp
diff --git a/tools/ReadOriginalHistoryTool.hpp b/sources/tools/ReadOriginalHistoryTool.hpp
similarity index 100%
rename from tools/ReadOriginalHistoryTool.hpp
rename to sources/tools/ReadOriginalHistoryTool.hpp
diff --git a/tools/SkillTool.cpp b/sources/tools/SkillTool.cpp
similarity index 96%
rename from tools/SkillTool.cpp
rename to sources/tools/SkillTool.cpp
index 1a3e588..d97b032 100644
--- a/tools/SkillTool.cpp
+++ b/sources/tools/SkillTool.cpp
@@ -11,8 +11,8 @@
 #include 
 #include 
 
-#include "sources/skills/AgentSkill.hpp"
-#include "sources/skills/SkillsManager.hpp"
+#include "skills/AgentSkill.hpp"
+#include "skills/SkillsManager.hpp"
 
 namespace QodeAssist::Tools {
 
diff --git a/tools/SkillTool.hpp b/sources/tools/SkillTool.hpp
similarity index 100%
rename from tools/SkillTool.hpp
rename to sources/tools/SkillTool.hpp
diff --git a/tools/TodoTool.cpp b/sources/tools/TodoTool.cpp
similarity index 100%
rename from tools/TodoTool.cpp
rename to sources/tools/TodoTool.cpp
diff --git a/tools/TodoTool.hpp b/sources/tools/TodoTool.hpp
similarity index 100%
rename from tools/TodoTool.hpp
rename to sources/tools/TodoTool.hpp
diff --git a/tools/ToolExceptions.hpp b/sources/tools/ToolExceptions.hpp
similarity index 100%
rename from tools/ToolExceptions.hpp
rename to sources/tools/ToolExceptions.hpp
diff --git a/tools/ToolsRegistration.cpp b/sources/tools/ToolsRegistration.cpp
similarity index 100%
rename from tools/ToolsRegistration.cpp
rename to sources/tools/ToolsRegistration.cpp
diff --git a/tools/ToolsRegistration.hpp b/sources/tools/ToolsRegistration.hpp
similarity index 100%
rename from tools/ToolsRegistration.hpp
rename to sources/tools/ToolsRegistration.hpp
diff --git a/widgets/AddCustomInstructionDialog.cpp b/sources/widgets/AddCustomInstructionDialog.cpp
similarity index 98%
rename from widgets/AddCustomInstructionDialog.cpp
rename to sources/widgets/AddCustomInstructionDialog.cpp
index 14b57d6..9793201 100644
--- a/widgets/AddCustomInstructionDialog.cpp
+++ b/sources/widgets/AddCustomInstructionDialog.cpp
@@ -3,7 +3,7 @@
 // Additional attribution terms under GPLv3 §7(b) apply — see LICENSE
 
 #include "AddCustomInstructionDialog.hpp"
-#include "QodeAssisttr.h"
+#include "plugin/QodeAssisttr.h"
 
 #include 
 #include 
diff --git a/widgets/AddCustomInstructionDialog.hpp b/sources/widgets/AddCustomInstructionDialog.hpp
similarity index 100%
rename from widgets/AddCustomInstructionDialog.hpp
rename to sources/widgets/AddCustomInstructionDialog.hpp
diff --git a/widgets/CompletionErrorHandler.cpp b/sources/widgets/CompletionErrorHandler.cpp
similarity index 100%
rename from widgets/CompletionErrorHandler.cpp
rename to sources/widgets/CompletionErrorHandler.cpp
diff --git a/widgets/CompletionErrorHandler.hpp b/sources/widgets/CompletionErrorHandler.hpp
similarity index 100%
rename from widgets/CompletionErrorHandler.hpp
rename to sources/widgets/CompletionErrorHandler.hpp
diff --git a/widgets/CompletionHintHandler.cpp b/sources/widgets/CompletionHintHandler.cpp
similarity index 100%
rename from widgets/CompletionHintHandler.cpp
rename to sources/widgets/CompletionHintHandler.cpp
diff --git a/widgets/CompletionHintHandler.hpp b/sources/widgets/CompletionHintHandler.hpp
similarity index 100%
rename from widgets/CompletionHintHandler.hpp
rename to sources/widgets/CompletionHintHandler.hpp
diff --git a/widgets/CompletionHintWidget.cpp b/sources/widgets/CompletionHintWidget.cpp
similarity index 100%
rename from widgets/CompletionHintWidget.cpp
rename to sources/widgets/CompletionHintWidget.cpp
diff --git a/widgets/CompletionHintWidget.hpp b/sources/widgets/CompletionHintWidget.hpp
similarity index 100%
rename from widgets/CompletionHintWidget.hpp
rename to sources/widgets/CompletionHintWidget.hpp
diff --git a/widgets/CompletionProgressHandler.cpp b/sources/widgets/CompletionProgressHandler.cpp
similarity index 100%
rename from widgets/CompletionProgressHandler.cpp
rename to sources/widgets/CompletionProgressHandler.cpp
diff --git a/widgets/CompletionProgressHandler.hpp b/sources/widgets/CompletionProgressHandler.hpp
similarity index 100%
rename from widgets/CompletionProgressHandler.hpp
rename to sources/widgets/CompletionProgressHandler.hpp
diff --git a/widgets/ContextExtractor.hpp b/sources/widgets/ContextExtractor.hpp
similarity index 100%
rename from widgets/ContextExtractor.hpp
rename to sources/widgets/ContextExtractor.hpp
diff --git a/widgets/CustomInstructionsManager.cpp b/sources/widgets/CustomInstructionsManager.cpp
similarity index 100%
rename from widgets/CustomInstructionsManager.cpp
rename to sources/widgets/CustomInstructionsManager.cpp
diff --git a/widgets/CustomInstructionsManager.hpp b/sources/widgets/CustomInstructionsManager.hpp
similarity index 100%
rename from widgets/CustomInstructionsManager.hpp
rename to sources/widgets/CustomInstructionsManager.hpp
diff --git a/widgets/DiffStatistics.hpp b/sources/widgets/DiffStatistics.hpp
similarity index 100%
rename from widgets/DiffStatistics.hpp
rename to sources/widgets/DiffStatistics.hpp
diff --git a/widgets/EditorChatButton.cpp b/sources/widgets/EditorChatButton.cpp
similarity index 100%
rename from widgets/EditorChatButton.cpp
rename to sources/widgets/EditorChatButton.cpp
diff --git a/widgets/EditorChatButton.hpp b/sources/widgets/EditorChatButton.hpp
similarity index 100%
rename from widgets/EditorChatButton.hpp
rename to sources/widgets/EditorChatButton.hpp
diff --git a/widgets/EditorChatButtonHandler.cpp b/sources/widgets/EditorChatButtonHandler.cpp
similarity index 100%
rename from widgets/EditorChatButtonHandler.cpp
rename to sources/widgets/EditorChatButtonHandler.cpp
diff --git a/widgets/EditorChatButtonHandler.hpp b/sources/widgets/EditorChatButtonHandler.hpp
similarity index 100%
rename from widgets/EditorChatButtonHandler.hpp
rename to sources/widgets/EditorChatButtonHandler.hpp
diff --git a/widgets/ErrorWidget.cpp b/sources/widgets/ErrorWidget.cpp
similarity index 100%
rename from widgets/ErrorWidget.cpp
rename to sources/widgets/ErrorWidget.cpp
diff --git a/widgets/ErrorWidget.hpp b/sources/widgets/ErrorWidget.hpp
similarity index 100%
rename from widgets/ErrorWidget.hpp
rename to sources/widgets/ErrorWidget.hpp
diff --git a/widgets/ProgressWidget.cpp b/sources/widgets/ProgressWidget.cpp
similarity index 100%
rename from widgets/ProgressWidget.cpp
rename to sources/widgets/ProgressWidget.cpp
diff --git a/widgets/ProgressWidget.hpp b/sources/widgets/ProgressWidget.hpp
similarity index 100%
rename from widgets/ProgressWidget.hpp
rename to sources/widgets/ProgressWidget.hpp
diff --git a/widgets/QuickRefactorDialog.cpp b/sources/widgets/QuickRefactorDialog.cpp
similarity index 99%
rename from widgets/QuickRefactorDialog.cpp
rename to sources/widgets/QuickRefactorDialog.cpp
index 50f5306..f3e6650 100644
--- a/widgets/QuickRefactorDialog.cpp
+++ b/sources/widgets/QuickRefactorDialog.cpp
@@ -5,7 +5,7 @@
 #include "QuickRefactorDialog.hpp"
 #include "AddCustomInstructionDialog.hpp"
 #include "CustomInstructionsManager.hpp"
-#include "QodeAssisttr.h"
+#include "plugin/QodeAssisttr.h"
 
 #include "settings/ConfigurationManager.hpp"
 #include "settings/GeneralSettings.hpp"
diff --git a/widgets/QuickRefactorDialog.hpp b/sources/widgets/QuickRefactorDialog.hpp
similarity index 100%
rename from widgets/QuickRefactorDialog.hpp
rename to sources/widgets/QuickRefactorDialog.hpp
diff --git a/widgets/RefactorWidget.cpp b/sources/widgets/RefactorWidget.cpp
similarity index 100%
rename from widgets/RefactorWidget.cpp
rename to sources/widgets/RefactorWidget.cpp
diff --git a/widgets/RefactorWidget.hpp b/sources/widgets/RefactorWidget.hpp
similarity index 100%
rename from widgets/RefactorWidget.hpp
rename to sources/widgets/RefactorWidget.hpp
diff --git a/widgets/RefactorWidgetHandler.cpp b/sources/widgets/RefactorWidgetHandler.cpp
similarity index 100%
rename from widgets/RefactorWidgetHandler.cpp
rename to sources/widgets/RefactorWidgetHandler.cpp
diff --git a/widgets/RefactorWidgetHandler.hpp b/sources/widgets/RefactorWidgetHandler.hpp
similarity index 100%
rename from widgets/RefactorWidgetHandler.hpp
rename to sources/widgets/RefactorWidgetHandler.hpp
diff --git a/templates/DeepSeekCoderFim.hpp b/templates/DeepSeekCoderFim.hpp
deleted file mode 100644
index 2a8b64f..0000000
--- a/templates/DeepSeekCoderFim.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (C) 2024-2026 Petr Mironychev
-// SPDX-License-Identifier: GPL-3.0-or-later
-// Additional attribution terms under GPLv3 §7(b) apply — see LICENSE
-
-#pragma once
-
-#include "llmcore/PromptTemplate.hpp"
-
-namespace QodeAssist::Templates {
-
-class DeepSeekCoderFim : public LLMQore::PromptTemplate
-{
-public:
-    LLMQore::TemplateType type() const override { return LLMQore::TemplateType::Fim; }
-    QString name() const override { return "DeepSeekCoder FIM"; }
-    QString promptTemplate() const override
-    {
-        return "<|fim▁begin|>%1<|fim▁hole|>%2<|fim▁end|>";
-    }
-    QStringList stopWords() const override { return QStringList(); }
-    void prepareRequest(QJsonObject &request, const LLMQore::ContextData &context) const override
-    {
-        QString formattedPrompt = promptTemplate().arg(context.prefix, context.suffix);
-        request["prompt"] = formattedPrompt;
-    }
-    QString description() const override
-    {
-        return "The message will contain the following tokens: "
-               "<|fim▁begin|>%1<|fim▁hole|>%2<|fim▁end|>";
-    }
-};
-
-} // namespace QodeAssist::Templates
diff --git a/test/CMakeLists.txt b/tests/CMakeLists.txt
similarity index 74%
rename from test/CMakeLists.txt
rename to tests/CMakeLists.txt
index 3659261..91c5890 100644
--- a/test/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -1,7 +1,8 @@
 add_executable(QodeAssistTest
-    ../CodeHandler.cpp
-    ../LLMClientInterface.cpp
-    ../LLMSuggestion.cpp
+    ../sources/completion/CodeHandler.cpp
+    ../sources/completion/LLMClientInterface.cpp
+    ../sources/completion/LLMSuggestion.cpp
+    ../sources/providers/Provider.cpp
     CodeHandlerTest.cpp
     ClaudeCacheControlTest.cpp
     DocumentContextReaderTest.cpp
@@ -18,11 +19,11 @@ target_link_libraries(QodeAssistTest PRIVATE
     GTest::Main
     QtCreator::LanguageClient
     Context
-    PluginLLMCore
+    QodeAssistLogger
     LLMQore
 )
 
-target_include_directories(QodeAssistTest PRIVATE ${CMAKE_SOURCE_DIR})
+target_include_directories(QodeAssistTest PRIVATE ${CMAKE_SOURCE_DIR}/sources)
 
 target_compile_definitions(QodeAssistTest PRIVATE CMAKE_CURRENT_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}")
 
diff --git a/test/ClaudeCacheControlTest.cpp b/tests/ClaudeCacheControlTest.cpp
similarity index 100%
rename from test/ClaudeCacheControlTest.cpp
rename to tests/ClaudeCacheControlTest.cpp
diff --git a/test/CodeHandlerTest.cpp b/tests/CodeHandlerTest.cpp
similarity index 99%
rename from test/CodeHandlerTest.cpp
rename to tests/CodeHandlerTest.cpp
index 0f6140e..9622849 100644
--- a/test/CodeHandlerTest.cpp
+++ b/tests/CodeHandlerTest.cpp
@@ -2,7 +2,7 @@
 // SPDX-License-Identifier: GPL-3.0-or-later
 // Additional attribution terms under GPLv3 §7(b) apply — see LICENSE
 
-#include "CodeHandler.hpp"
+#include "completion/CodeHandler.hpp"
 #include "TestUtils.hpp"
 
 #include 
diff --git a/test/DocumentContextReaderTest.cpp b/tests/DocumentContextReaderTest.cpp
similarity index 98%
rename from test/DocumentContextReaderTest.cpp
rename to tests/DocumentContextReaderTest.cpp
index 390e258..b837a6d 100644
--- a/test/DocumentContextReaderTest.cpp
+++ b/tests/DocumentContextReaderTest.cpp
@@ -9,7 +9,7 @@
 #include 
 #include 
 
-namespace QodeAssist::PluginLLMCore {
+namespace QodeAssist::LLMCore {
 
 void PrintTo(const ContextData &data, std::ostream *os)
 {
@@ -20,10 +20,10 @@ void PrintTo(const ContextData &data, std::ostream *os)
         << "}";
 }
 
-} // namespace QodeAssist::PluginLLMCore
+} // namespace QodeAssist::LLMCore
 
 using namespace QodeAssist::Context;
-using namespace QodeAssist::PluginLLMCore;
+using namespace QodeAssist::LLMCore;
 using namespace QodeAssist::Settings;
 
 class DocumentContextReaderTest : public QObject, public testing::Test
@@ -367,7 +367,7 @@ TEST_F(DocumentContextReaderTest, testPrepareContext)
 
     EXPECT_EQ(
         reader.prepareContext(2, 3, *createSettingsForWholeFile()),
-        (QodeAssist::PluginLLMCore::ContextData{
+        (QodeAssist::LLMCore::ContextData{
             .prefix = "Line 0\nLine 1\nLin",
             .suffix = "e 2\nLine 3\nLine 4",
             .fileContext = "\n Language:  (MIME: text/python) filepath: /path/to/file()\n\n"
@@ -375,7 +375,7 @@ TEST_F(DocumentContextReaderTest, testPrepareContext)
 
     EXPECT_EQ(
         reader.prepareContext(2, 3, *createSettingsForLines(1, 1)),
-        (QodeAssist::PluginLLMCore::ContextData{
+        (QodeAssist::LLMCore::ContextData{
             .prefix = "Line 1\nLin",
             .suffix = "e 2\nLine 3",
             .fileContext = "\n Language:  (MIME: text/python) filepath: /path/to/file()\n\n"
@@ -383,7 +383,7 @@ TEST_F(DocumentContextReaderTest, testPrepareContext)
 
     EXPECT_EQ(
         reader.prepareContext(2, 3, *createSettingsForLines(2, 2)),
-        (QodeAssist::PluginLLMCore::ContextData{
+        (QodeAssist::LLMCore::ContextData{
             .prefix = "Line 0\nLine 1\nLin",
             .suffix = "e 2\nLine 3\nLine 4",
             .fileContext = "\n Language:  (MIME: text/python) filepath: /path/to/file()\n\n"
diff --git a/test/LLMSuggestionTest.cpp b/tests/LLMSuggestionTest.cpp
similarity index 98%
rename from test/LLMSuggestionTest.cpp
rename to tests/LLMSuggestionTest.cpp
index 21a1e57..e482170 100644
--- a/test/LLMSuggestionTest.cpp
+++ b/tests/LLMSuggestionTest.cpp
@@ -2,7 +2,7 @@
 // SPDX-License-Identifier: GPL-3.0-or-later
 // Additional attribution terms under GPLv3 §7(b) apply — see LICENSE
 
-#include "LLMSuggestion.hpp"
+#include "completion/LLMSuggestion.hpp"
 #include "TestUtils.hpp"
 
 #include 
diff --git a/test/TestUtils.hpp b/tests/TestUtils.hpp
similarity index 92%
rename from test/TestUtils.hpp
rename to tests/TestUtils.hpp
index 1fbb61c..387cbe7 100644
--- a/test/TestUtils.hpp
+++ b/tests/TestUtils.hpp
@@ -3,7 +3,7 @@
 // Additional attribution terms under GPLv3 §7(b) apply — see LICENSE
 
 #include 
-#include 
+#include "llmcore/ContextData.hpp"
 #include 
 
 QT_BEGIN_NAMESPACE
@@ -44,7 +44,7 @@ std::ostream &operator<<(std::ostream &out, const std::optional &value)
     return out;
 }
 
-namespace QodeAssist::PluginLLMCore {
+namespace QodeAssist::LLMCore {
 
 inline std::ostream &operator<<(std::ostream &out, const Message &value)
 {
@@ -62,4 +62,4 @@ inline std::ostream &operator<<(std::ostream &out, const ContextData &value)
     return out;
 }
 
-} // namespace QodeAssist::PluginLLMCore
+} // namespace QodeAssist::LLMCore
diff --git a/test/unittest_main.cpp b/tests/unittest_main.cpp
similarity index 100%
rename from test/unittest_main.cpp
rename to tests/unittest_main.cpp