From 22c9179739521d0cc431f126667b0d45337151be Mon Sep 17 00:00:00 2001 From: Andrew Charneski Date: Mon, 9 Dec 2024 20:58:55 -0500 Subject: [PATCH] wip --- .../skyenet/apps/plan/CommandAutoFixTask.kt | 14 ++++++++++++-- .../simiacryptus/skyenet/apps/plan/PlanSettings.kt | 3 --- .../com/simiacryptus/skyenet/apps/plan/TaskType.kt | 2 +- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/webui/src/main/kotlin/com/simiacryptus/skyenet/apps/plan/CommandAutoFixTask.kt b/webui/src/main/kotlin/com/simiacryptus/skyenet/apps/plan/CommandAutoFixTask.kt index fbe1096f..7c4793d7 100644 --- a/webui/src/main/kotlin/com/simiacryptus/skyenet/apps/plan/CommandAutoFixTask.kt +++ b/webui/src/main/kotlin/com/simiacryptus/skyenet/apps/plan/CommandAutoFixTask.kt @@ -3,6 +3,7 @@ package com.simiacryptus.skyenet.apps.plan import com.simiacryptus.jopenai.ChatClient import com.simiacryptus.jopenai.OpenAIClient import com.simiacryptus.jopenai.describe.Description +import com.simiacryptus.jopenai.models.ChatModel import com.simiacryptus.skyenet.Retryable import com.simiacryptus.skyenet.apps.general.CmdPatchApp import com.simiacryptus.skyenet.apps.general.PatchApp @@ -18,6 +19,14 @@ class CommandAutoFixTask( planSettings: PlanSettings, planTask: CommandAutoFixTaskConfigData? ) : AbstractTask(planSettings, planTask) { + class CommandAutoFixTaskSettings( + task_type: String, + enabled: Boolean = false, + model: ChatModel? = null, + @Description("List of command executables that can be used for auto-fixing") + var commandAutoFixCommands: List? = listOf() + ) : TaskSettingsBase(task_type, enabled, model) + class CommandAutoFixTaskConfigData( @Description("The commands to be executed with their respective working directories") @@ -40,6 +49,7 @@ class CommandAutoFixTask( ) override fun promptSegment(): String { + val settings = planSettings.getTaskSettings(TaskType.CommandAutoFix) as CommandAutoFixTaskSettings return """ CommandAutoFix - Run a command and automatically fix any issues that arise ** Specify the commands to be executed along with their working directories @@ -47,7 +57,7 @@ CommandAutoFix - Run a command and automatically fix any issues that arise ** Provide the commands and their arguments in the 'commands' field ** Each command should be a list of strings ** Available commands: -${planSettings.commandAutoFixCommands?.joinToString("\n") { " * ${File(it).name}" }} +${settings.commandAutoFixCommands?.joinToString("\n") { " * ${File(it).name}" }} """.trim() } @@ -69,7 +79,7 @@ ${planSettings.commandAutoFixCommands?.joinToString("\n") { " * ${File(it).na val task = agent.ui.newTask(false).apply { it.append(placeholder) } this.taskConfig?.commands?.forEachIndexed { index, commandWithDir -> val alias = commandWithDir.command.firstOrNull() - val commandAutoFixCommands = agent.planSettings.commandAutoFixCommands + val commandAutoFixCommands = taskConfig.commands.map { it.command.firstOrNull() } val cmds = commandAutoFixCommands ?.map { File(it) }?.associateBy { it.name } ?.filterKeys { it.startsWith(alias ?: "") } diff --git a/webui/src/main/kotlin/com/simiacryptus/skyenet/apps/plan/PlanSettings.kt b/webui/src/main/kotlin/com/simiacryptus/skyenet/apps/plan/PlanSettings.kt index 94d68aa9..defa454e 100644 --- a/webui/src/main/kotlin/com/simiacryptus/skyenet/apps/plan/PlanSettings.kt +++ b/webui/src/main/kotlin/com/simiacryptus/skyenet/apps/plan/PlanSettings.kt @@ -29,7 +29,6 @@ open class PlanSettings( }.mapKeys { it.key.name }.toMutableMap(), var autoFix: Boolean = false, var allowBlocking: Boolean = true, - var commandAutoFixCommands: List? = listOf(), val env: Map? = mapOf(), val workingDir: String? = ".", val language: String? = if (isWindows) "powershell" else "bash", @@ -54,7 +53,6 @@ open class PlanSettings( taskSettings: MutableMap = this.taskSettings, autoFix: Boolean = this.autoFix, allowBlocking: Boolean = this.allowBlocking, - commandAutoFixCommands: List? = this.commandAutoFixCommands, env: Map? = this.env, workingDir: String? = this.workingDir, language: String? = this.language, @@ -67,7 +65,6 @@ open class PlanSettings( taskSettings = taskSettings, autoFix = autoFix, allowBlocking = allowBlocking, - commandAutoFixCommands = commandAutoFixCommands, env = env, workingDir = workingDir, language = language, diff --git a/webui/src/main/kotlin/com/simiacryptus/skyenet/apps/plan/TaskType.kt b/webui/src/main/kotlin/com/simiacryptus/skyenet/apps/plan/TaskType.kt index 9c3da8ee..05bffda2 100644 --- a/webui/src/main/kotlin/com/simiacryptus/skyenet/apps/plan/TaskType.kt +++ b/webui/src/main/kotlin/com/simiacryptus/skyenet/apps/plan/TaskType.kt @@ -49,7 +49,7 @@ class TaskType( val PerformanceAnalysis = TaskType("PerformanceAnalysis", PerformanceAnalysisTaskConfigData::class.java, TaskSettingsBase::class.java) val RefactorTask = TaskType("RefactorTask", RefactorTaskConfigData::class.java, TaskSettingsBase::class.java) val RunShellCommand = TaskType("RunShellCommand", RunShellCommandTaskConfigData::class.java, TaskSettingsBase::class.java) - val CommandAutoFix = TaskType("CommandAutoFix", CommandAutoFixTaskConfigData::class.java, TaskSettingsBase::class.java) + val CommandAutoFix = TaskType("CommandAutoFix", CommandAutoFixTaskConfigData::class.java, CommandAutoFixTask.CommandAutoFixTaskSettings::class.java) val ForeachTask = TaskType("ForeachTask", ForeachTaskConfigData::class.java, TaskSettingsBase::class.java) val GitHubSearch = TaskType("GitHubSearch", GitHubSearchTask.GitHubSearchTaskConfigData::class.java, TaskSettingsBase::class.java) val GoogleSearch = TaskType("GoogleSearch", GoogleSearchTaskConfigData::class.java, TaskSettingsBase::class.java)