().state
listOf(
- settings.coreActions.codeAssistant,
settings.coreActions.editCode,
settings.coreActions.fixCompileErrors,
settings.coreActions.generateCommitMessage,
diff --git a/src/main/kotlin/ee/carlrobert/codegpt/settings/prompts/form/details/CoreActionsDetailsPanel.kt b/src/main/kotlin/ee/carlrobert/codegpt/settings/prompts/form/details/CoreActionsDetailsPanel.kt
index 108a88c4..c2b02f10 100644
--- a/src/main/kotlin/ee/carlrobert/codegpt/settings/prompts/form/details/CoreActionsDetailsPanel.kt
+++ b/src/main/kotlin/ee/carlrobert/codegpt/settings/prompts/form/details/CoreActionsDetailsPanel.kt
@@ -11,7 +11,6 @@ import com.intellij.util.ui.components.BorderLayoutPanel
import ee.carlrobert.codegpt.settings.Placeholder
import ee.carlrobert.codegpt.settings.Placeholder.GIT_DIFF
import ee.carlrobert.codegpt.settings.prompts.CommitMessageTemplate
-import ee.carlrobert.codegpt.settings.prompts.CoreActionsState.Companion.DEFAULT_CODE_ASSISTANT_PROMPT
import ee.carlrobert.codegpt.settings.prompts.CoreActionsState.Companion.DEFAULT_EDIT_CODE_PROMPT
import ee.carlrobert.codegpt.settings.prompts.CoreActionsState.Companion.DEFAULT_FIX_COMPILE_ERRORS_PROMPT
import ee.carlrobert.codegpt.settings.prompts.CoreActionsState.Companion.DEFAULT_GENERATE_COMMIT_MESSAGE_PROMPT
@@ -30,26 +29,6 @@ class CoreActionsDetailsPanel : PromptDetailsPanel {
override fun create(details: CoreActionPromptDetails): JComponent {
val editorPanel = when (details.code) {
- "CODE_ASSISTANT" -> CoreActionEditorPanel(
- details,
- DEFAULT_CODE_ASSISTANT_PROMPT,
- buildString {
- append("Template for generating code assistant messages. Use the following placeholders to insert dynamic values:
\n")
- append(
- "${
- listOf(
- GIT_DIFF,
- Placeholder.OPEN_FILES,
- Placeholder.ACTIVE_CONVERSATION,
- ).joinToString("\n") {
- "- ${it.name}: ${it.description}
"
- }
- }
\n"
- )
- },
- listOf("{GIT_DIFF}", "{OPEN_FILES}", "{ACTIVE_CONVERSATION}")
- )
-
"EDIT_CODE" -> CoreActionEditorPanel(
details,
DEFAULT_EDIT_CODE_PROMPT,
@@ -91,7 +70,6 @@ class CoreActionsDetailsPanel : PromptDetailsPanel {
init {
val settings = service().state.coreActions
listOf(
- settings.codeAssistant,
settings.editCode,
settings.fixCompileErrors,
settings.generateCommitMessage,
diff --git a/src/main/kotlin/ee/carlrobert/codegpt/settings/service/codegpt/CodeGPTServiceForm.kt b/src/main/kotlin/ee/carlrobert/codegpt/settings/service/codegpt/CodeGPTServiceForm.kt
index 8092c9a4..08ab74aa 100644
--- a/src/main/kotlin/ee/carlrobert/codegpt/settings/service/codegpt/CodeGPTServiceForm.kt
+++ b/src/main/kotlin/ee/carlrobert/codegpt/settings/service/codegpt/CodeGPTServiceForm.kt
@@ -32,9 +32,9 @@ class CodeGPTServiceForm {
renderer = CustomComboBoxRenderer()
}
- private val codeAssistantEnabledCheckBox = JBCheckBox(
- CodeGPTBundle.get("shared.enableCodeAssistant"),
- service().state.codeAssistantEnabled
+ private val enableNextEditsEnabledCheckBox = JBCheckBox(
+ "Enable multi-line edits",
+ service().state.nextEditsEnabled
)
private val codeCompletionsEnabledCheckBox = JBCheckBox(
@@ -73,9 +73,9 @@ class CodeGPTServiceForm {
UIUtil.createComment("settingsConfigurable.service.codegpt.codeCompletionModel.comment")
)
.addVerticalGap(4)
- .addComponent(codeAssistantEnabledCheckBox)
+ .addComponent(enableNextEditsEnabledCheckBox)
.addComponent(
- UIUtil.createComment("settingsConfigurable.service.codegpt.enableCodeAssistant.comment", 90)
+ UIUtil.createComment("settingsConfigurable.service.codegpt.enableNextEdits.comment", 90)
)
.addVerticalGap(4)
.addComponent(codeCompletionsEnabledCheckBox)
@@ -90,14 +90,14 @@ class CodeGPTServiceForm {
fun isModified() = service().state.run {
(chatCompletionModelComboBox.selectedItem as CodeGPTModel).code != chatCompletionSettings.model
|| (codeCompletionModelComboBox.selectedItem as CodeGPTModel).code != codeCompletionSettings.model
- || codeAssistantEnabledCheckBox.isSelected != codeAssistantEnabled
+ || enableNextEditsEnabledCheckBox.isSelected != nextEditsEnabled
|| codeCompletionsEnabledCheckBox.isSelected != codeCompletionSettings.codeCompletionsEnabled
|| getApiKey() != getCredential(CodeGptApiKey)
}
fun applyChanges() {
service().state.run {
- codeAssistantEnabled = codeAssistantEnabledCheckBox.isSelected
+ nextEditsEnabled = enableNextEditsEnabledCheckBox.isSelected
chatCompletionSettings.model =
(chatCompletionModelComboBox.selectedItem as CodeGPTModel).code
codeCompletionSettings.codeCompletionsEnabled =
@@ -110,7 +110,7 @@ class CodeGPTServiceForm {
fun resetForm() {
service().state.run {
- codeAssistantEnabledCheckBox.isSelected = codeAssistantEnabled
+ enableNextEditsEnabledCheckBox.isSelected = nextEditsEnabled
chatCompletionModelComboBox.selectedItem = chatCompletionSettings.model
codeCompletionModelComboBox.selectedItem = codeCompletionSettings.model
codeCompletionsEnabledCheckBox.isSelected =
diff --git a/src/main/kotlin/ee/carlrobert/codegpt/settings/service/codegpt/CodeGPTServiceSettings.kt b/src/main/kotlin/ee/carlrobert/codegpt/settings/service/codegpt/CodeGPTServiceSettings.kt
index 9c1de08c..31259221 100644
--- a/src/main/kotlin/ee/carlrobert/codegpt/settings/service/codegpt/CodeGPTServiceSettings.kt
+++ b/src/main/kotlin/ee/carlrobert/codegpt/settings/service/codegpt/CodeGPTServiceSettings.kt
@@ -13,7 +13,7 @@ class CodeGPTServiceSettings :
class CodeGPTServiceSettingsState : BaseState() {
var chatCompletionSettings by property(CodeGPTServiceChatCompletionSettingsState())
var codeCompletionSettings by property(CodeGPTServiceCodeCompletionSettingsState())
- var codeAssistantEnabled by property(false)
+ var nextEditsEnabled by property(true)
}
class CodeGPTServiceChatCompletionSettingsState : BaseState() {
diff --git a/src/main/proto/next-edit.proto b/src/main/proto/next-edit.proto
new file mode 100644
index 00000000..1f6288f9
--- /dev/null
+++ b/src/main/proto/next-edit.proto
@@ -0,0 +1,29 @@
+// src/main/proto/edit.proto
+syntax = "proto3";
+option java_multiple_files = true;
+option java_package = "ee.carlrobert.service";
+
+import "google/protobuf/empty.proto";
+
+service NextEditServiceImpl {
+ rpc NextEdit (NextEditRequest) returns (stream NextEditResponse);
+ rpc AcceptEdit (AcceptEditRequest) returns (google.protobuf.Empty);
+}
+
+message NextEditRequest {
+ string file_content = 1;
+ string file_name = 2;
+ int32 cursor_position = 3;
+ string git_diff = 4;
+ bool enable_telemetry = 5;
+}
+
+message NextEditResponse {
+ string id = 1;
+ string next_revision = 2;
+}
+
+message AcceptEditRequest {
+ string response_id = 1;
+ string accepted_edit = 2;
+}
diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml
index 7274eb41..6c3df8c8 100644
--- a/src/main/resources/META-INF/plugin.xml
+++ b/src/main/resources/META-INF/plugin.xml
@@ -238,16 +238,16 @@
+ id="statusbar.enableNextEdits"
+ class="ee.carlrobert.codegpt.actions.EnableNextEditsAction">
+ id="statusbar.disableNextEdits"
+ class="ee.carlrobert.codegpt.actions.DisableNextEditsAction">
@@ -275,8 +275,8 @@
-
-
+
+
diff --git a/src/main/resources/messages/codegpt.properties b/src/main/resources/messages/codegpt.properties
index 8e5d0ebb..568795e5 100644
--- a/src/main/resources/messages/codegpt.properties
+++ b/src/main/resources/messages/codegpt.properties
@@ -25,12 +25,12 @@ action.statusbar.enableCompletions.MainMenu.text=Enable Completions
action.statusbar.disableCompletions.text=Disable Completions
action.statusbar.disableCompletions.description=Disable Code Completions
action.statusbar.disableCompletions.MainMenu.text=Disable Completions
-action.statusbar.enableCodeAssistant.text=Enable Code Assistant
-action.statusbar.enableCodeAssistant.description=Enable Code Assistant
-action.statusbar.enableCodeAssistant.MainMenu.text=Enable Code Assistant
-action.statusbar.disableCodeAssistant.text=Disable Code Assistant
-action.statusbar.disableCodeAssistant.description=Disable Code Assistant
-action.statusbar.disableCodeAssistant.MainMenu.text=Disable Code Assistant
+action.statusbar.enableNextEdits.text=Enable Multi-Line Edits
+action.statusbar.enableNextEdits.description=Enable Multi-Line Edits
+action.statusbar.enableNextEdits.MainMenu.text=Enable Multi-Line Edits
+action.statusbar.disableNextEdits.text=Disable Multi-Line Edits
+action.statusbar.disableNextEdits.description=Disable Multi-Line Edits
+action.statusbar.disableNextEdits.MainMenu.text=Disable Multi-Line Edits
action.compareWithOriginal.title=Compare with Original
action.applyDirectly.title=Auto Apply
action.explainGitCommit.title=Explain Commit with ProxyAI
@@ -42,7 +42,7 @@ settingsConfigurable.service.label=Selected provider:
settingsConfigurable.service.codegpt.apiKey.comment=You can find the API key in your User settings.
settingsConfigurable.service.codegpt.chatCompletionModel.comment=Choose a model optimized for conversational interactions, including assistance with general queries and explanations.
settingsConfigurable.service.codegpt.codeCompletionModel.comment=Choose a model tailored for code completion-related tasks.
-settingsConfigurable.service.codegpt.enableCodeAssistant.comment=If checked, Code Assistant will suggest related code updates as you make changes.
+settingsConfigurable.service.codegpt.enableNextEdits.comment=If checked, ProxyAI will suggest multi-line changes as you type.
settingsConfigurable.service.codegpt.enableCodeCompletion.comment=If checked, ProxyAI will suggest changes as you type.
settingsConfigurable.service.custom.openai.apiKey.comment=A secret value stored in the system's Keychain or KeePass, depending on your OS. This approach is recommended over storing the secret in the header as plain text.
settingsConfigurable.service.custom.openai.apiKey.provider.name=Custom provider name:
@@ -280,7 +280,6 @@ imageAccordion.title=Attached image
shared.image=Image
shared.chatCompletions=Chat Completions
shared.codeCompletions=Code Completions
-shared.enableCodeAssistant=Enable Code Assistant NEW
codeCompletionsForm.enableFeatureText=Enable code completions
codeCompletionsForm.parseResponseAsChatCompletions=Parse response as Chat Completions
codeCompletionsForm.overrideFimTemplate.label=Use built-in FIM template
diff --git a/src/main/resources/prompts/core/code-assistant.txt b/src/main/resources/prompts/core/code-assistant.txt
deleted file mode 100644
index 6b3294b7..00000000
--- a/src/main/resources/prompts/core/code-assistant.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-Recent changes made to the project:
-
-{GIT_DIFF}
-
-
-Currently open files:
-
-{OPEN_FILES}
-
-
-Previous chat history between the AI and user:
-
-{ACTIVE_CONVERSATION}
-
-
-Important Guidelines:
-
-- Carefully follow the instructions marked with the @AI keyword and act accordingly. Then, delete the instruction.
\ No newline at end of file
diff --git a/src/test/kotlin/ee/carlrobert/codegpt/codecompletions/CodeCompletionServiceTest.kt b/src/test/kotlin/ee/carlrobert/codegpt/codecompletions/CodeCompletionServiceTest.kt
index fbb6deb9..1ac56163 100644
--- a/src/test/kotlin/ee/carlrobert/codegpt/codecompletions/CodeCompletionServiceTest.kt
+++ b/src/test/kotlin/ee/carlrobert/codegpt/codecompletions/CodeCompletionServiceTest.kt
@@ -18,6 +18,7 @@ class CodeCompletionServiceTest : IntegrationTest() {
fun `test code completion with ProxyAI provider`() {
useCodeGPTService()
+ service().state.nextEditsEnabled = false
service().state.codeCompletionSettings.multiLineEnabled = false
myFixture.configureByText(
"CompletionTest.java",
@@ -58,6 +59,7 @@ class CodeCompletionServiceTest : IntegrationTest() {
fun `test code completion with OpenAI provider`() {
useOpenAIService()
+ service().state.nextEditsEnabled = false
service().state.codeCompletionSettings.multiLineEnabled = false
myFixture.configureByText(
"CompletionTest.java",
@@ -98,6 +100,7 @@ class CodeCompletionServiceTest : IntegrationTest() {
fun `_test apply inline suggestions without initial following text`() {
useCodeGPTService()
+ service().state.nextEditsEnabled = false
service().state.codeCompletionSettings.multiLineEnabled = false
myFixture.configureByText(
"CompletionTest.java",
@@ -215,7 +218,7 @@ class CodeCompletionServiceTest : IntegrationTest() {
fun `_test apply inline suggestions with initial following text`() {
useCodeGPTService()
- service().state.codeAssistantEnabled = false
+ service().state.nextEditsEnabled = false
service().state.codeCompletionSettings.multiLineEnabled = false
myFixture.configureByText(
"CompletionTest.java",
@@ -287,6 +290,7 @@ class CodeCompletionServiceTest : IntegrationTest() {
fun `test adjust completion line whitespaces`() {
useCodeGPTService()
+ service().state.nextEditsEnabled = false
service().state.codeCompletionSettings.multiLineEnabled = false
myFixture.configureByText(
"CompletionTest.java",