Skip to content

Commit a2e96b6

Browse files
committed
feat(devin-lang): update notification group id and add LLM support #101
The notification group id in the GUI has been updated from "AI notification group" to "AutoDev.notify" for consistency. Additionally, support for LLM (Large Language Models) has been added, including imports, a new LLMProvider class, and integration with the existing compiler and execution logic. This commit also includes changes to the run configuration producer and configuration type to better support the new LLM features.
1 parent cc8b04e commit a2e96b6

File tree

6 files changed

+34
-12
lines changed

6 files changed

+34
-12
lines changed

exts/devin-lang/src/main/kotlin/cc/unitmesh/devti/language/run/AutoDevConfigurationType.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,8 @@ class AutoDevConfigurationType : SimpleConfigurationType(
1515
AutoDevBundle.message("line.marker.run.0", DevInLanguage.INSTANCE.id),
1616
NotNullLazyValue.lazy { DevInIcons.DEFAULT }
1717
) {
18-
override fun createTemplateConfiguration(project: Project): RunConfiguration {
19-
val devConfiguration = AutoDevConfiguration(project, this, "AutoDevConfiguration")
20-
return devConfiguration
21-
}
18+
override fun createTemplateConfiguration(project: Project): RunConfiguration =
19+
AutoDevConfiguration(project, this, "AutoDevConfiguration")
2220

2321
companion object {
2422
fun getInstance(): AutoDevConfigurationType {

exts/devin-lang/src/main/kotlin/cc/unitmesh/devti/language/run/AutoDevRunConfigurationProducer.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ class AutoDevRunConfigurationProducer : LazyRunConfigurationProducer<AutoDevConf
2121

2222
configuration.name = virtualFile.presentableName
2323
configuration.setScriptPath(virtualFile.path)
24+
2425
return true
2526
}
2627

@@ -31,9 +32,8 @@ class AutoDevRunConfigurationProducer : LazyRunConfigurationProducer<AutoDevConf
3132
val psiLocation = context.psiLocation ?: return false
3233
val psiFile = psiLocation.containingFile as? DevInFile ?: return false
3334
val virtualFile = psiFile.virtualFile ?: return false
34-
val scriptPath = configuration.getScriptPath()
3535

36-
return virtualFile.path == scriptPath
36+
return virtualFile.path == configuration.getScriptPath()
3737
}
3838

3939
}

exts/devin-lang/src/main/kotlin/cc/unitmesh/devti/language/run/DevInRunConfigurationProfileState.kt

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@ package cc.unitmesh.devti.language.run
22

33
import cc.unitmesh.devti.language.compiler.DevInCompiler
44
import cc.unitmesh.devti.language.psi.DevInFile
5+
import cc.unitmesh.devti.llms.LLMProvider
6+
import cc.unitmesh.devti.llms.LlmFactory
7+
import cc.unitmesh.devti.util.LLMCoroutineScope
58
import com.intellij.build.process.BuildProcessHandler
69
import com.intellij.execution.DefaultExecutionResult
710
import com.intellij.execution.ExecutionException
@@ -15,16 +18,20 @@ import com.intellij.execution.process.ProcessTerminatedListener
1518
import com.intellij.execution.runners.ProgramRunner
1619
import com.intellij.execution.ui.ConsoleView
1720
import com.intellij.execution.ui.ConsoleViewContentType
21+
import com.intellij.openapi.application.ApplicationManager
1822
import com.intellij.openapi.project.Project
19-
import com.intellij.openapi.vfs.VirtualFile
2023
import com.intellij.openapi.vfs.VirtualFileManager
2124
import com.intellij.psi.PsiManager
25+
import kotlinx.coroutines.launch
26+
import kotlinx.coroutines.runBlocking
2227
import java.io.OutputStream
2328

2429
open class DevInRunConfigurationProfileState(
2530
private val myProject: Project,
2631
private val configuration: AutoDevConfiguration,
2732
) : RunProfileState {
33+
private val llm: LLMProvider = LlmFactory.instance.create(myProject)
34+
2835
override fun execute(executor: Executor?, runner: ProgramRunner<*>): ExecutionResult {
2936
val processHandler: ProcessHandler = createProcessHandler(configuration.name)
3037
ProcessTerminatedListener.attach(processHandler)
@@ -47,10 +54,23 @@ open class DevInRunConfigurationProfileState(
4754
val compiler = DevInCompiler(myProject, file)
4855
val output = compiler.compile()
4956

50-
console.print(output, ConsoleViewContentType.NORMAL_OUTPUT)
57+
console.print(output, ConsoleViewContentType.USER_INPUT)
58+
console.print("--------------------\n", ConsoleViewContentType.NORMAL_OUTPUT)
59+
60+
ApplicationManager.getApplication().invokeLater {
61+
LLMCoroutineScope.scope(myProject).launch {
62+
runBlocking {
63+
llm.stream(output, "").collect {
64+
console.print(it, ConsoleViewContentType.NORMAL_OUTPUT)
65+
}
66+
}
67+
68+
console.print("Done!", ConsoleViewContentType.SYSTEM_OUTPUT)
69+
// done!
70+
processHandler.detachProcess()
71+
}
72+
}
5173

52-
// done!
53-
processHandler.detachProcess()
5474

5575
val result = DefaultExecutionResult(console, processHandler)
5676

src/222/main/resources/META-INF/autodev-core.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
<!-- icon="cc.unitmesh.devti.AutoDevIcons.AI_PAIR"-->
5858
<!-- factoryClass="cc.unitmesh.devti.gui.AutoDevPairToolWindowFactory"/>-->
5959

60-
<notificationGroup id="AI notification group" displayType="STICKY_BALLOON" bundle="messages.AutoDevBundle"
60+
<notificationGroup id="AutoDev.notify" displayType="STICKY_BALLOON" bundle="messages.AutoDevBundle"
6161
key="name"/>
6262

6363
<intentionAction>

src/233/main/resources/META-INF/autodev-core.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858
<!-- icon="cc.unitmesh.devti.AutoDevIcons.AI_PAIR"-->
5959
<!-- factoryClass="cc.unitmesh.devti.gui.AutoDevPairToolWindowFactory"/>-->
6060

61-
<notificationGroup id="AI notification group" displayType="STICKY_BALLOON" bundle="messages.AutoDevBundle"
61+
<notificationGroup id="AutoDev.notify" displayType="STICKY_BALLOON" bundle="messages.AutoDevBundle"
6262
key="name"/>
6363

6464
<intentionAction>

src/main/kotlin/cc/unitmesh/devti/llms/LlmFactory.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,8 @@ class LlmFactory {
2323
AIEngines.XingHuo -> project.getService(XingHuoProvider::class.java)
2424
}
2525
}
26+
27+
companion object {
28+
val instance: LlmFactory = LlmFactory()
29+
}
2630
}

0 commit comments

Comments
 (0)