Skip to content

Commit

Permalink
feat(coder): init for setting config
Browse files Browse the repository at this point in the history
  • Loading branch information
phodal committed Jan 5, 2024
1 parent 40b61f1 commit 6db0dc8
Show file tree
Hide file tree
Showing 10 changed files with 102 additions and 30 deletions.
Expand Up @@ -8,7 +8,7 @@ import cc.unitmesh.devti.recording.JsonlRecording
import cc.unitmesh.devti.recording.Recording
import cc.unitmesh.devti.recording.RecordingInstruction
import cc.unitmesh.devti.settings.AutoDevSettingsState
import cc.unitmesh.devti.settings.custom.teamPromptsSettings
import cc.unitmesh.devti.settings.coder.coderSetting
import com.fasterxml.jackson.databind.ObjectMapper
import com.intellij.openapi.components.Service
import com.intellij.openapi.components.service
Expand Down Expand Up @@ -61,7 +61,7 @@ class AzureOpenAIProvider(val project: Project) : LLMProvider {

private val recording: Recording
get() {
if (project.teamPromptsSettings.state.recordingInLocal) {
if (project.coderSetting.state.recordingInLocal) {
return project.service<JsonlRecording>()
}
return EmptyRecording()
Expand Down
Expand Up @@ -7,7 +7,7 @@ import cc.unitmesh.devti.recording.JsonlRecording
import cc.unitmesh.devti.recording.Recording
import cc.unitmesh.devti.recording.RecordingInstruction
import cc.unitmesh.devti.settings.AutoDevSettingsState
import cc.unitmesh.devti.settings.custom.teamPromptsSettings
import cc.unitmesh.devti.settings.coder.coderSetting
import com.intellij.openapi.components.Service
import com.intellij.openapi.components.service
import com.intellij.openapi.diagnostic.Logger
Expand Down Expand Up @@ -71,7 +71,7 @@ class OpenAIProvider(val project: Project) : LLMProvider {

private val recording: Recording
get() {
if (project.teamPromptsSettings.state.recordingInLocal) {
if (project.coderSetting.state.recordingInLocal) {
return project.service<JsonlRecording>()
}
return EmptyRecording()
Expand Down
4 changes: 2 additions & 2 deletions src/main/kotlin/cc/unitmesh/devti/provider/ContextPrompter.kt
Expand Up @@ -4,7 +4,7 @@ import cc.unitmesh.devti.gui.chat.ChatActionType
import cc.unitmesh.devti.provider.builtin.DefaultContextPrompter
import cc.unitmesh.devti.provider.context.ChatContextProvider
import cc.unitmesh.devti.provider.context.ChatCreationContext
import cc.unitmesh.devti.settings.custom.teamPromptsSettings
import cc.unitmesh.devti.settings.coder.coderSetting
import com.intellij.openapi.diagnostic.logger
import com.intellij.openapi.extensions.ExtensionPointName
import com.intellij.openapi.project.Project
Expand All @@ -25,7 +25,7 @@ abstract class ContextPrompter : LazyExtensionInstance<ContextPrompter>() {
private val chatContextCache: MutableMap<ChatCreationContext, String> = mutableMapOf()

suspend fun collectionContext(creationContext: ChatCreationContext): String {
if (project?.teamPromptsSettings?.state?.disableAdvanceContext == true) {
if (project?.coderSetting?.state?.disableAdvanceContext == true) {
return ""
}

Expand Down
@@ -0,0 +1,46 @@
package cc.unitmesh.devti.settings.coder

import cc.unitmesh.devti.AutoDevBundle
import cc.unitmesh.devti.fullWidthCell
import com.intellij.openapi.components.service
import com.intellij.openapi.options.BoundConfigurable
import com.intellij.openapi.project.Project
import com.intellij.openapi.ui.DialogPanel
import com.intellij.ui.dsl.builder.*
import javax.swing.JCheckBox

class AutoDevCoderConfigurable(project: Project) : BoundConfigurable(AutoDevBundle.message("settings.autodev.coder")) {
private val recordingInLocalField = JCheckBox()
private val disableAdvanceContextField = JCheckBox()

val settings = project.service<AutoDevCoderSettingService>()
val state = settings.state.copy()

override fun createPanel(): DialogPanel = panel {
row(AutoDevBundle.message("settings.external.team.prompts.recordingInLocal")) {
fullWidthCell(recordingInLocalField)
.bind(
componentGet = { it.isSelected },
componentSet = { component, value -> component.isSelected = value },
prop = state::recordingInLocal.toMutableProperty()
)
}

row(AutoDevBundle.message("settings.external.team.prompts.disableAdvanceContext")) {
fullWidthCell(disableAdvanceContextField)
.bind(
componentGet = { it.isSelected },
componentSet = { component, value -> component.isSelected = value },
prop = state::disableAdvanceContext.toMutableProperty()
)
}

onApply {
settings.modify {
it.recordingInLocal = state.recordingInLocal
it.disableAdvanceContext
}
}
}
}

@@ -0,0 +1,11 @@
package cc.unitmesh.devti.settings.coder

import com.intellij.openapi.options.Configurable
import com.intellij.openapi.options.ConfigurableProvider
import com.intellij.openapi.project.Project

class AutoDevCoderConfigurableProvider (private val project: Project) : ConfigurableProvider() {
override fun createConfigurable(): Configurable {
return AutoDevCoderConfigurable(project)
}
}
@@ -0,0 +1,31 @@
package cc.unitmesh.devti.settings.coder

import com.intellij.openapi.components.*
import com.intellij.openapi.project.Project

val Project.coderSetting: AutoDevCoderSettingService
get() = service<AutoDevCoderSettingService>()

@State(name = "AutoDevCoderSettings", storages = [Storage("autodev-coder.xml")])
class AutoDevCoderSettingService(
val project: Project,
) : SimplePersistentStateComponent<AutoDevCoderSettingService.AutoDevCoderSettings>(AutoDevCoderSettings()) {
fun modify(action: (AutoDevCoderSettings) -> Unit) {
action(state)
}

abstract class AdProjectSettingsBase<T : AdProjectSettingsBase<T>> : BaseState() {
abstract fun copy(): T
}

class AutoDevCoderSettings : AdProjectSettingsBase<AutoDevCoderSettings>() {
var recordingInLocal by property(false)
var disableAdvanceContext by property(false)

override fun copy(): AutoDevCoderSettings {
val state = AutoDevCoderSettings()
state.copyFrom(this)
return state
}
}
}
Expand Up @@ -7,14 +7,11 @@ import com.intellij.openapi.options.BoundConfigurable
import com.intellij.openapi.project.Project
import com.intellij.openapi.ui.DialogPanel
import com.intellij.ui.dsl.builder.*
import javax.swing.JCheckBox
import javax.swing.JTextField

class PromptLibraryConfigurable(project: Project) : BoundConfigurable(AutoDevBundle.message("settings.external.team.prompts.name")) {

private val teamPromptsField = JTextField()
private val recordingInLocalField = JCheckBox()
private val disableAdvanceContextField = JCheckBox()

val settings = project.service<TeamPromptsProjectSettingsService>()
val state = settings.state.copy()
Expand All @@ -29,29 +26,10 @@ class PromptLibraryConfigurable(project: Project) : BoundConfigurable(AutoDevBun
prop = state::teamPromptsDir.toMutableProperty()
)
}
row(AutoDevBundle.message("settings.external.team.prompts.recordingInLocal")) {
fullWidthCell(recordingInLocalField)
.bind(
componentGet = { it.isSelected },
componentSet = { component, value -> component.isSelected = value },
prop = state::recordingInLocal.toMutableProperty()
)
}

row(AutoDevBundle.message("settings.external.team.prompts.disableAdvanceContext")) {
fullWidthCell(disableAdvanceContextField)
.bind(
componentGet = { it.isSelected },
componentSet = { component, value -> component.isSelected = value },
prop = state::disableAdvanceContext.toMutableProperty()
)
}

onApply {
settings.modify {
it.teamPromptsDir = state.teamPromptsDir
it.recordingInLocal = state.recordingInLocal
it.disableAdvanceContext
}
}
}
Expand Down
Expand Up @@ -20,8 +20,6 @@ class TeamPromptsProjectSettingsService(

class TeamPromptsSettings : AdProjectSettingsBase<TeamPromptsSettings>() {
var teamPromptsDir by property("prompts") { it.isEmpty() }
var recordingInLocal by property(false)
var disableAdvanceContext by property(false)

override fun copy(): TeamPromptsSettings {
val state = TeamPromptsSettings()
Expand Down
7 changes: 7 additions & 0 deletions src/main/resources/META-INF/autodev-core.xml
Expand Up @@ -24,6 +24,13 @@
id="cc.unitmesh.promptLibrary"
bundle="messages.AutoDevBundle" key="settings.external.team.prompts.name"/>


<projectService serviceImplementation="cc.unitmesh.devti.settings.coder.AutoDevCoderSettingService"/>
<projectConfigurable provider="cc.unitmesh.devti.settings.coder.AutoDevCoderConfigurableProvider"
parentId="cc.unitmesh.devti.settings.AutoDevSettingsConfigurable"
id="cc.unitmesh.autodevCoder"
bundle="messages.AutoDevBundle" key="settings.external.team.prompts.name"/>

<applicationService serviceImplementation="cc.unitmesh.devti.settings.AutoDevSettingsState"/>

<runConfigurationProducer
Expand Down
1 change: 1 addition & 0 deletions src/main/resources/messages/AutoDevBundle.properties
Expand Up @@ -88,3 +88,4 @@ settings.external.team.prompts.path=Team Prompts Path
settings.external.team.prompts.name=Team Prompts
settings.external.team.prompts.recordingInLocal=Recording Instruction In Local
settings.external.team.prompts.disableAdvanceContext=Disable Advance Context (like framework context or others)
settings.autodev.coder=AutoDev Coder

0 comments on commit 6db0dc8

Please sign in to comment.