Skip to content

Commit 3661163

Browse files
authored
1.3.5 (#141)
1 parent 9327da6 commit 3661163

File tree

14 files changed

+280
-2630
lines changed

14 files changed

+280
-2630
lines changed

build.gradle.kts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,14 @@ repositories {
2626
val kotlin_version = "1.9.21"
2727
val jetty_version = "11.0.18"
2828
val slf4j_version = "2.0.9"
29-
val skyenet_version = "1.0.55"
29+
val skyenet_version = "1.0.56"
3030
val remoterobot_version = "0.11.21"
3131
dependencies {
3232

3333
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0")
3434

35+
implementation("org.apache.commons:commons-text:1.11.0")
36+
3537
implementation(group = "com.simiacryptus.skyenet", name = "kotlin", version = skyenet_version)
3638
{
3739
exclude(group = "org.jetbrains.kotlin", module = "")

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
pluginName=intellij-aicoder
22
pluginRepositoryUrl=https://github.com/SimiaCryptus/intellij-aicoder
3-
pluginVersion=1.3.4
3+
pluginVersion=1.3.5
44

55
jvmArgs=-Xmx8g
66
org.gradle.jvmargs=-Xmx8g

src/main/kotlin/com/github/simiacryptus/aicoder/actions/generic/AnalogueFileAction.kt

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,19 @@ import com.github.simiacryptus.aicoder.config.AppSettingsState
55
import com.github.simiacryptus.aicoder.config.AppSettingsState.Companion.chatModel
66
import com.github.simiacryptus.aicoder.config.Name
77
import com.github.simiacryptus.aicoder.util.UITools
8+
import com.intellij.openapi.actionSystem.AnActionEvent
89
import com.intellij.openapi.application.ApplicationManager
910
import com.intellij.openapi.fileEditor.FileEditorManager
10-
import com.intellij.openapi.actionSystem.AnActionEvent
1111
import com.intellij.openapi.project.Project
1212
import com.intellij.openapi.vfs.LocalFileSystem
1313
import com.simiacryptus.jopenai.ApiModel
1414
import com.simiacryptus.jopenai.ApiModel.ChatMessage
1515
import com.simiacryptus.jopenai.ApiModel.Role
1616
import com.simiacryptus.jopenai.util.ClientUtil.toContentList
17+
import com.simiacryptus.skyenet.core.actors.CodingActor.Companion.indent
1718
import org.apache.commons.io.FileUtils
1819
import org.apache.commons.io.IOUtils
20+
import org.apache.commons.text.StringEscapeUtils.escapeHtml4
1921
import java.io.File
2022
import java.io.FileInputStream
2123
import java.nio.file.Path
@@ -106,14 +108,14 @@ class AnalogueFileAction : FileContextAction<AnalogueFileAction.Settings>() {
106108
),
107109
ChatMessage(
108110
Role.user, """
109-
Create a new file based on the following directive: $directive
110-
111-
The file should be based on `${baseFile.path}` which contains the following code:
112-
113-
```
114-
${baseFile.code}
115-
```
116-
""".trimIndent().toContentList(), null
111+
|Create a new file based on the following directive: $directive
112+
|
113+
|The file should be based on `${baseFile.path}` which contains the following code:
114+
|
115+
|```
116+
|${baseFile.code?.let { escapeHtml4(it).indent(" ") }}
117+
|```
118+
""".trimMargin().toContentList(), null
117119
)
118120

119121
)

src/main/kotlin/com/github/simiacryptus/aicoder/actions/generic/AutoDevAction.kt

Lines changed: 33 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,14 @@ import com.simiacryptus.skyenet.Acceptable
2020
import com.simiacryptus.skyenet.AgentPatterns
2121
import com.simiacryptus.skyenet.Retryable
2222
import com.simiacryptus.skyenet.core.actors.*
23+
import com.simiacryptus.skyenet.core.actors.CodingActor.Companion.indent
2324
import com.simiacryptus.skyenet.core.platform.*
2425
import com.simiacryptus.skyenet.core.platform.file.DataStorage
2526
import com.simiacryptus.skyenet.webui.application.ApplicationInterface
2627
import com.simiacryptus.skyenet.webui.application.ApplicationServer
2728
import com.simiacryptus.skyenet.webui.chat.ChatServer
2829
import com.simiacryptus.skyenet.webui.util.MarkdownUtil.renderMarkdown
30+
import org.apache.commons.text.StringEscapeUtils.escapeHtml4
2931
import org.slf4j.LoggerFactory
3032
import java.awt.Desktop
3133
import java.io.File
@@ -171,7 +173,7 @@ class AutoDevAction : BaseAction() {
171173
fun codeSummary() = codeFiles.entries.joinToString("\n\n") { (path, code) ->
172174
"# $path\n```${
173175
path.split('.').last()
174-
}\n$code\n```"
176+
}\n${code.indent(" ")}\n```"
175177
}
176178

177179
val task = ui.newTask()
@@ -181,10 +183,10 @@ class AutoDevAction : BaseAction() {
181183
userMessage = userMessage,
182184
initialResponse = { it: String -> designActor.answer(toInput(it), api = api) },
183185
outputFn = { design: ParsedResponse<TaskList> ->
184-
// renderMarkdown("${design.text}\n\n```json\n${JsonUtil.toJson(design.obj)}\n```")
186+
// renderMarkdown("${design.text}\n\n```json\n${JsonUtil.toJson(design.obj).indent(" ")}\n```")
185187
AgentPatterns.displayMapInTabs(mapOf(
186188
"Text" to renderMarkdown(design.text),
187-
"JSON" to renderMarkdown("```json\n${toJson(design.obj)}\n```"),
189+
"JSON" to renderMarkdown("```json\n${toJson(design.obj).indent(" ")}\n```"),
188190
)
189191
)
190192
},
@@ -223,36 +225,36 @@ class AutoDevAction : BaseAction() {
223225
|
224226
""".trimMargin()
225227
}
226-
renderMarkdown(
227-
ui.socketManager.addApplyDiffLinks2(
228-
code = codeFiles,
229-
response = taskActor.answer(listOf(
230-
codeSummary(),
231-
userMessage,
232-
filter.entries.joinToString("\n\n") {
233-
"# ${it.key}\n```${it.key.split('.').last()}\n${it.value}\n```"
234-
},
235-
architectureResponse.text,
236-
"Provide a change for ${paths?.joinToString(",") { it } ?: ""} ($description)"
237-
), api),
238-
task = task,
239-
handle = { newCodeMap ->
240-
newCodeMap.forEach { (path, newCode) ->
241-
val prev = codeFiles[path]
242-
if (prev != newCode) {
243-
codeFiles[path] = newCode
244-
task.complete(
245-
"<a href='${
246-
task.saveFile(
247-
path,
248-
newCode.toByteArray(Charsets.UTF_8)
249-
)
250-
}'>$path</a> Updated"
251-
)
252-
}
228+
ui.socketManager.addApplyDiffLinks2(
229+
code = codeFiles,
230+
response = taskActor.answer(listOf(
231+
codeSummary(),
232+
userMessage,
233+
filter.entries.joinToString("\n\n") {
234+
"# ${it.key}\n```${it.key.split('.').last()?.let { escapeHtml4(it).indent(" ") }}\n${it.value.indent(" ")}\n```"
235+
},
236+
architectureResponse.text,
237+
"Provide a change for ${paths?.joinToString(",") { it } ?: ""} ($description)"
238+
), api),
239+
handle = { newCodeMap ->
240+
newCodeMap.forEach { (path, newCode) ->
241+
val prev = codeFiles[path]
242+
if (prev != newCode) {
243+
codeFiles[path] = newCode
244+
task.complete(
245+
"<a href='${
246+
task.saveFile(
247+
path,
248+
newCode.toByteArray(Charsets.UTF_8)
249+
)
250+
}'>$path</a> Updated"
251+
)
253252
}
254253
}
255-
))
254+
},
255+
task = task,
256+
ui = ui
257+
)
256258
}
257259
Retryable(ui, task, process).apply { addTab(ui, process(container!!)) }
258260
})

src/main/kotlin/com/github/simiacryptus/aicoder/actions/generic/LineFilterChatAction.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import com.github.simiacryptus.aicoder.util.ComputerLanguage
99
import com.intellij.openapi.actionSystem.AnActionEvent
1010
import com.intellij.openapi.actionSystem.CommonDataKeys
1111
import com.intellij.openapi.fileEditor.FileDocumentManager
12+
import com.simiacryptus.skyenet.core.actors.CodingActor.Companion.indent
1213
import com.simiacryptus.skyenet.core.platform.ApplicationServices
1314
import com.simiacryptus.skyenet.core.platform.Session
1415
import com.simiacryptus.skyenet.core.platform.StorageInterface
@@ -19,6 +20,7 @@ import com.simiacryptus.skyenet.webui.chat.ChatSocketManager
1920
import com.simiacryptus.skyenet.webui.session.SessionTask
2021
import com.simiacryptus.skyenet.webui.session.SocketManager
2122
import com.simiacryptus.skyenet.webui.util.MarkdownUtil.renderMarkdown
23+
import org.apache.commons.text.StringEscapeUtils.escapeHtml4
2224
import org.slf4j.LoggerFactory
2325
import java.awt.Desktop
2426
import java.io.File
@@ -44,7 +46,7 @@ class LineFilterChatAction : BaseAction() {
4446
|# `$filename`
4547
|
4648
|```$language
47-
|$code
49+
|${code?.let { escapeHtml4(it).indent(" ") }}
4850
|```
4951
""".trimMargin().trim(),
5052
systemPrompt = """
@@ -53,7 +55,7 @@ class LineFilterChatAction : BaseAction() {
5355
|You will be answering questions about the following code located in `$filename`:
5456
|
5557
|```$language
56-
|$codelines
58+
|${codelines?.let { escapeHtml4(it).indent(" ") }}
5759
|```
5860
|
5961
|Responses may use markdown formatting. Lines from the prompt can be included by using the line number in a response line (e.g. `\nLINE\n`).

src/main/kotlin/com/github/simiacryptus/aicoder/actions/generic/MultiDiffChatAction.kt

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import com.intellij.openapi.actionSystem.AnActionEvent
1111
import com.intellij.openapi.actionSystem.PlatformDataKeys
1212
import com.intellij.openapi.command.WriteCommandAction
1313
import com.intellij.openapi.fileEditor.FileDocumentManager
14+
import com.simiacryptus.skyenet.core.actors.CodingActor.Companion.indent
1415
import com.simiacryptus.skyenet.core.platform.ApplicationServices
1516
import com.simiacryptus.skyenet.core.platform.Session
1617
import com.simiacryptus.skyenet.core.platform.StorageInterface
@@ -20,7 +21,7 @@ import com.simiacryptus.skyenet.webui.chat.ChatServer
2021
import com.simiacryptus.skyenet.webui.chat.ChatSocketManager
2122
import com.simiacryptus.skyenet.webui.session.SessionTask
2223
import com.simiacryptus.skyenet.webui.session.SocketManager
23-
import com.simiacryptus.skyenet.webui.util.MarkdownUtil.renderMarkdown
24+
import org.apache.commons.text.StringEscapeUtils.escapeHtml4
2425
import org.slf4j.LoggerFactory
2526
import java.awt.Desktop
2627
import java.io.File
@@ -52,8 +53,8 @@ class MultiDiffChatAction : BaseAction() {
5253

5354
fun codeSummary() = codeFiles.entries.joinToString("\n\n") { (path, code) ->
5455
"# $path\n```${
55-
path.split('.').last()
56-
}\n$code\n```"
56+
path.split('.').lastOrNull()?.let { escapeHtml4(it).indent(" ") }
57+
}\n${code?.let { escapeHtml4(it).indent(" ") }}\n```"
5758
}
5859
val session = StorageInterface.newGlobalID()
5960
//DataStorage.sessionPaths[session] = root.toFile()
@@ -63,7 +64,7 @@ class MultiDiffChatAction : BaseAction() {
6364
model = AppSettingsState.instance.smartModel.chatModel(),
6465
userInterfacePrompt = """
6566
|
66-
|${codeSummary()}
67+
|${escapeHtml4(codeSummary())}
6768
|
6869
""".trimMargin().trim(),
6970
systemPrompt = """
@@ -95,7 +96,8 @@ class MultiDiffChatAction : BaseAction() {
9596
storage = ApplicationServices.dataStorageFactory(DiffChatAction.root),
9697
) {
9798
override fun renderResponse(response: String, task: SessionTask): String {
98-
val html = renderMarkdown(addApplyDiffLinks2(codeFiles, response, handle = { newCodeMap ->
99+
val html = addApplyDiffLinks2(
100+
code = codeFiles, response = response, handle = { newCodeMap ->
99101
newCodeMap.map { (path, newCode) ->
100102
val prev = codeFiles[path]
101103
if (prev != newCode) {
@@ -115,7 +117,7 @@ class MultiDiffChatAction : BaseAction() {
115117
""
116118
}
117119
}
118-
}, task = task))
120+
}, task = task, ui = null,)
119121
return """<div>$html</div>"""
120122
}
121123
}

0 commit comments

Comments
 (0)