Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
pluginName=Cognotik
pluginRepositoryUrl=https://github.com/SimiaCryptus/Cognotik
libraryGroup=com.simiacryptus
libraryVersion=2.0.18
libraryVersion=2.0.19

gradleVersion=8.13
org.gradle.caching=true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,20 +128,26 @@ class TaskTypeSelectionDialog(project: Project?) : DialogWrapper(project) {

private fun getPackageGroup(taskType: TaskType<*, *>): String {
return when {
taskType.name.contains("Reasoning") ||
taskType.name in listOf(
"MultiPerspectiveAnalysis", "SocraticDialogue", "AnalogicalReasoning",
"CounterfactualAnalysis", "AbstractionLadder", "ConstraintSatisfaction",
"CausalInference", "DecompositionSynthesis", "NarrativeGeneration",
"AbductiveReasoning", "AdversarialReasoning", "ConstraintRelaxation",
"DialecticalReasoning", "LateralThinking", "NarrativeReasoning",
"ProbabilisticReasoning", "SystemsThinking", "TemporalReasoning",
"GameTheory", "FiniteStateMachine", "Brainstorming",
"ChainOfThought", "MetaCognitiveReflection", "GeneticOptimization",
"EthicalReasoning"
) -> "Reasoning"

taskType.name in listOf(
taskType.name in listOf(
"MultiPerspectiveAnalysis", "SocraticDialogue", "AnalogicalReasoning",
"CounterfactualAnalysis", "AbstractionLadder", "ConstraintSatisfaction",
"CausalInference", "DecompositionSynthesis",
"AbductiveReasoning", "AdversarialReasoning", "ConstraintRelaxation",
"DialecticalReasoning", "LateralThinking",
"ProbabilisticReasoning", "SystemsThinking", "TemporalReasoning",
"GameTheory", "FiniteStateMachine", "Brainstorming",
"ChainOfThought", "MetaCognitiveReflection", "GeneticOptimization",
"EthicalReasoning"
) -> "Reasoning"

taskType.name in listOf(
"NarrativeGeneration", "NarrativeReasoning", "ArticleGeneration",
"PersuasiveEssay", "TechnicalExplanation", "TutorialGeneration",
"BusinessProposal", "EmailCampaign", "InteractiveStory",
"ReportGeneration", "Scriptwriting", "JournalismReasoning"
) -> "Writing"

taskType.name in listOf(
"Analysis", "FileModification", "FileSearch",
"WriteHtml", "GeneratePresentation"
) -> "File Operations"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,58 +8,57 @@ import java.io.File
import java.nio.file.Path

abstract class AbstractTask<T : TaskExecutionConfig, U : TaskTypeConfig>(
val orchestrationConfig: OrchestrationConfig,
val executionConfig: T?
val orchestrationConfig: OrchestrationConfig,
val executionConfig: T?
) {
var state: TaskState? = TaskState.Pending
protected val codeFiles = mutableMapOf<Path, String>()
var state: TaskState? = TaskState.Pending

protected open val root: Path
get() = orchestrationConfig.absoluteWorkingDir?.let { File(it).toPath() }
?: throw IllegalStateException("Working directory not set")
protected open val root: Path
get() = orchestrationConfig.absoluteWorkingDir?.let { File(it).toPath() }
?: throw IllegalStateException("Working directory not set")

open val typeConfig: U?
get() = executionConfig?.task_type
?.let { task_type -> orchestrationConfig.taskSettings.values.firstOrNull { it.task_type == task_type } as? U }
open val typeConfig: U?
get() = executionConfig?.task_type
?.let { task_type -> orchestrationConfig.taskSettings.values.firstOrNull { it.task_type == task_type } as? U }

enum class TaskState {
Pending,
InProgress,
Completed,
}
enum class TaskState {
Pending,
InProgress,
Completed,
}

open fun getPriorCode(executionState: ExecutionState?) =
executionConfig?.task_dependencies?.joinToString("\n\n\n") { dependency ->
"# $dependency\n\n${executionState?.taskResult[dependency] ?: ""}"
} ?: ""
open fun getPriorCode(executionState: ExecutionState?) =
executionConfig?.task_dependencies?.joinToString("\n\n\n") { dependency ->
"# $dependency\n\n${executionState?.taskResult[dependency] ?: ""}"
} ?: ""

protected open fun acceptButtonFooter(ui: SocketManager, fn: () -> Unit): String {
val footerTask = ui.newTask(false)
lateinit var textHandle: StringBuilder
@Suppress("AssignedValueIsNeverRead")
textHandle = footerTask.complete(ui.hrefLink("Accept", classname = "href-link cmd-button") {
try {
textHandle.set("""<div class="cmd-button">Accepted</div>""")
footerTask.complete()
} catch (e: Throwable) {
log.warn("Error", e)
}
fn()
})!!
return footerTask.placeholder
}
protected open fun acceptButtonFooter(ui: SocketManager, fn: () -> Unit): String {
val footerTask = ui.newTask(false)
lateinit var textHandle: StringBuilder
@Suppress("AssignedValueIsNeverRead")
textHandle = footerTask.complete(ui.hrefLink("Accept", classname = "href-link cmd-button") {
try {
textHandle.set("""<div class="cmd-button">Accepted</div>""")
footerTask.complete()
} catch (e: Throwable) {
log.warn("Error", e)
}
fn()
})!!
return footerTask.placeholder
}

abstract fun promptSegment(): String
abstract fun promptSegment(): String

abstract fun run(
agent: TaskOrchestrator,
messages: List<String> = listOf(),
task: SessionTask,
resultFn: (String) -> Unit,
orchestrationConfig: OrchestrationConfig,
)
abstract fun run(
agent: TaskOrchestrator,
messages: List<String> = listOf(),
task: SessionTask,
resultFn: (String) -> Unit,
orchestrationConfig: OrchestrationConfig,
)

companion object {
val log = LoggerFactory.getLogger(AbstractTask::class.java)
}
companion object {
val log = LoggerFactory.getLogger(AbstractTask::class.java)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@ import com.simiacryptus.cognotik.webui.session.SessionTask
import java.util.concurrent.Future

data class ExecutionState(
val subTasks: Map<String, TaskExecutionConfig>,
val tasksByDescription: MutableMap<String?, TaskExecutionConfig> = subTasks.entries.toTypedArray()
.associate { (it.value.task_description ?: it.key) to it.value }.toMutableMap(),
val taskIdProcessingQueue: MutableList<String> = com.simiacryptus.cognotik.plan.PlanUtil.executionOrder(subTasks)
.toMutableList(),
val taskResult: MutableMap<String, String> = mutableMapOf(),
val completedTasks: MutableList<String> = mutableListOf(),
val taskFutures: MutableMap<String, Future<*>> = mutableMapOf(),
val uitaskMap: MutableMap<String, SessionTask> = mutableMapOf()
val subTasks: Map<String, TaskExecutionConfig>,
val tasksByDescription: MutableMap<String?, TaskExecutionConfig> = subTasks.entries.toTypedArray()
.associate { (it.value.task_description ?: it.key) to it.value }.toMutableMap(),
val taskIdProcessingQueue: MutableList<String> = PlanUtil.executionOrder(subTasks)
.toMutableList(),
val taskResult: MutableMap<String, String> = mutableMapOf(),
val completedTasks: MutableList<String> = mutableListOf(),
val taskFutures: MutableMap<String, Future<*>> = mutableMapOf(),
val uitaskMap: MutableMap<String, SessionTask> = mutableMapOf()
)
Loading
Loading