IJPL-248623 Move Agent Workbench plugin to Ultimate

Drop the obsolete standalone Gradle scaffold

IJ-MR-184958 IJ-MR-184993 IJ-MR-179029 IJ-MR-184126 IJ-MR-181153 IJ-MR-146078 IJ-MR-175479 IJ-MR-186058 IJ-MR-193195 IJ-MR-196957 IJ-MR-199124 IJ-MR-197441 IJ-MR-204135 IJ-MR-204674 IJ-MR-205883 IJ-MR-208539

GitOrigin-RevId: 18a13029becf6885a2de0ae22ac3d5e3acbf883e
This commit is contained in:
Vladimir Krivosheev
2026-07-09 18:59:28 +00:00
committed by intellij-monorepo-bot
parent 90d5ef0959
commit c38c8b9532
74 changed files with 44 additions and 4189 deletions
-2
View File
@@ -60,8 +60,6 @@
<module fileurl="file://$PROJECT_DIR$/plugins/agent-workbench/engine/intellij.agent.workbench.engine.iml" filepath="$PROJECT_DIR$/plugins/agent-workbench/engine/intellij.agent.workbench.engine.iml" />
<module fileurl="file://$PROJECT_DIR$/plugins/agent-workbench/engine/intellij.agent.workbench.engine.tests.iml" filepath="$PROJECT_DIR$/plugins/agent-workbench/engine/intellij.agent.workbench.engine.tests.iml" />
<module fileurl="file://$PROJECT_DIR$/plugins/agent-workbench/pi/awb/intellij.agent.workbench.pi.awb.iml" filepath="$PROJECT_DIR$/plugins/agent-workbench/pi/awb/intellij.agent.workbench.pi.awb.iml" />
<module fileurl="file://$PROJECT_DIR$/plugins/agent-workbench/plugin/intellij.agent.workbench.plugin.iml" filepath="$PROJECT_DIR$/plugins/agent-workbench/plugin/intellij.agent.workbench.plugin.iml" />
<module fileurl="file://$PROJECT_DIR$/plugins/agent-workbench/plugin/intellij.agent.workbench.plugin.tests.iml" filepath="$PROJECT_DIR$/plugins/agent-workbench/plugin/intellij.agent.workbench.plugin.tests.iml" />
<module fileurl="file://$PROJECT_DIR$/plugins/agent-workbench/prompt/context/intellij.agent.workbench.prompt.context.iml" filepath="$PROJECT_DIR$/plugins/agent-workbench/prompt/context/intellij.agent.workbench.prompt.context.iml" />
<module fileurl="file://$PROJECT_DIR$/plugins/agent-workbench/prompt/core/intellij.agent.workbench.prompt.core.iml" filepath="$PROJECT_DIR$/plugins/agent-workbench/prompt/core/intellij.agent.workbench.prompt.core.iml" />
<module fileurl="file://$PROJECT_DIR$/plugins/agent-workbench/prompt/core/intellij.agent.workbench.prompt.core.tests.iml" filepath="$PROJECT_DIR$/plugins/agent-workbench/prompt/core/intellij.agent.workbench.prompt.core.tests.iml" />
-2
View File
@@ -778,8 +778,6 @@ jvm_library(
"//plugins/git4idea/terminal:terminal_test_lib",
"//platform/instanceContainer:instanceContainer-tests",
"//platform/instanceContainer:instanceContainer-tests_test_lib",
"//plugins/agent-workbench/plugin:agent-workbench-plugin-tests",
"//plugins/agent-workbench/plugin:agent-workbench-plugin-tests_test_lib",
"//platform/polySymbols:polySymbols-tests",
"//platform/polySymbols:polySymbols-tests_test_lib",
"//plugins/gradle/native/tooling:gradle-native-tooling-tests",
-1
View File
@@ -1002,7 +1002,6 @@ plugins/agent-workbench/lib-agent/providers/pi/sessions-filewatch
plugins/agent-workbench/lib-agent/providers/terminal/sessions
plugins/agent-workbench/lib-agent/sessions-core
plugins/agent-workbench/pi/awb
plugins/agent-workbench/plugin
plugins/agent-workbench/prompt/context
plugins/agent-workbench/prompt/core
plugins/agent-workbench/prompt/testrunner
-1
View File
@@ -89,7 +89,6 @@
<orderEntry type="module" module-name="intellij.terminal.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.vcs.git.terminal" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.instanceContainer.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.agent.workbench.plugin.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.polySymbols.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.gradle.native.tooling.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.images.tests" scope="TEST" />
@@ -197,7 +197,7 @@ private suspend fun buildNonBundledPlugins(
json = json,
)
if (isPluginValidationEnabled && plugin.mainModule != "intellij.agent.workbench.plugin") {
if (isPluginValidationEnabled && plugin.mainModule != "intellij.air.plugin") {
spanBuilder("plugin validation").use { span ->
if (Files.notExists(destFile)) {
span.addEvent("doesn't exist, skipped", Attributes.of(AttributeKey.stringKey("path"), destFile.invariantSeparatorsPathString))
@@ -1,57 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="kotlin-language" name="Kotlin">
<configuration version="5" platform="JVM 25" allPlatforms="JVM [25]" useProjectSettings="false">
<compilerSettings>
<option name="additionalArguments" value="-Xjvm-default=all -XXLanguage:+AllowEagerSupertypeAccessibilityChecks -progressive" />
</compilerSettings>
<compilerArguments>
<stringArguments>
<stringArg name="jvmTarget" arg="25" />
<stringArg name="apiVersion" arg="2.4" />
<stringArg name="languageVersion" arg="2.4" />
</stringArguments>
<arrayArguments>
<arrayArg name="pluginClasspaths">
<args>$KOTLIN_BUNDLED$/lib/kotlinx-serialization-compiler-plugin.jar</args>
</arrayArg>
</arrayArguments>
</compilerArguments>
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" packagePrefix="com.intellij.agent.workbench.acp" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="kotlin-stdlib" level="project" />
<orderEntry type="module" module-name="intellij.libraries.kotlinx.serialization.core" />
<orderEntry type="module" module-name="intellij.libraries.kotlinx.serialization.json" />
<orderEntry type="module" module-name="intellij.platform.core" />
<orderEntry type="module" module-name="intellij.platform.core.ui" />
<orderEntry type="module" module-name="intellij.platform.editor.ui" />
<orderEntry type="module" module-name="intellij.platform.ide" />
<orderEntry type="module" module-name="intellij.platform.ide.impl" />
<orderEntry type="module" module-name="intellij.platform.ide.core" />
<orderEntry type="module" module-name="intellij.platform.execution.impl" />
<orderEntry type="module" module-name="intellij.platform.projectModel" />
<orderEntry type="module" module-name="intellij.platform.util" />
<orderEntry type="module" module-name="intellij.platform.util.ui" />
<orderEntry type="module" module-name="intellij.platform.acp" />
<orderEntry type="module" module-name="intellij.platform.eel" />
<orderEntry type="module" module-name="intellij.terminal.frontend" />
<orderEntry type="module" module-name="intellij.terminal" />
<orderEntry type="module" module-name="intellij.agent.workbench.acp.runtime" />
<orderEntry type="module" module-name="intellij.agent.workbench.engine" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.core" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.sessions.core" />
<orderEntry type="module" module-name="intellij.agent.workbench.sessions.toolwindow" />
<orderEntry type="module" module-name="intellij.agent.workbench.thread.view" />
<orderEntry type="module" module-name="intellij.agent.workbench.ui" />
</component>
</module>
-9
View File
@@ -1,9 +0,0 @@
*~
.DS_Store
.idea
.intellijPlatform
.kotlin
.gradle
gradle
build
local.properties
+3 -3
View File
@@ -5,7 +5,7 @@ This file captures development references only. Product/design decisions live in
- `pluginId`: `com.intellij.agent.workbench`
- Tool window ID: `agent.workbench.sessions`
- Tool window title: "Agent Threads"
- Main module: `intellij.agent.workbench.plugin` (plugin.xml)
- Main module: `intellij.air.plugin` (plugin.xml)
- Content module: `intellij.agent.workbench.sessions`
- Spec format (single source): `../../.ai/spec/SPEC_GUIDE.md` (specs live under `spec/`).
- Issue tracker: https://github.com/JetBrains/agent-workbench
@@ -34,11 +34,11 @@ Always pass fully-qualified test names (FQN). Simple class names do not match.
- Single test class:
`./tests.cmd --module intellij.agent.workbench.sessions.tests --test com.intellij.agent.workbench.sessions.AgentSessionCliTest`
- Plugin-wired editor/action test:
`./tests.cmd --module intellij.agent.workbench.plugin.tests --test com.intellij.agent.workbench.thread.view.AgentThreadViewEditorServiceTest`
`./tests.cmd --module intellij.air.plugin.tests --test com.intellij.agent.workbench.thread.view.AgentThreadViewEditorServiceTest`
- Whole sessions package:
`./tests.cmd --module intellij.agent.workbench.sessions.tests --test 'com.intellij.agent.workbench.sessions.*'`
- Whole Agent Workbench test suite:
`./tests.cmd --module intellij.agent.workbench.plugin.tests --test com.intellij.agent.workbench.plugin.AgentWorkbenchAllTestsSuite`
`./tests.cmd --module intellij.air.plugin.tests --test com.intellij.air.plugin.AgentWorkbenchAllTestsSuite`
Important: keep the `--test` argument quoted (single quotes) so shells like `zsh` do not expand `*` before `tests.cmd` receives it.
+1 -1
View File
@@ -83,7 +83,7 @@ Primary sources of truth:
```text
com.intellij.agent.workbench
`- intellij.agent.workbench.plugin plugin wrapper; owns plugin.xml
`- intellij.air.plugin plugin wrapper; owns plugin.xml
`- runtime content modules
|- lib-agent/* provider/runtime contracts and implementations
|- sessions, thread-view, prompt/* app services and user workflows
@@ -1,86 +0,0 @@
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
kotlin("plugin.serialization")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
val ultimateModuleDir = rootProject.file("../../../plugins/agent-workbench/ai-review-agents")
sourceSets {
main {
java { setSrcDirs(listOf(ultimateModuleDir.resolve("src"))) }
resources { setSrcDirs(listOf(ultimateModuleDir.resolve("resources"))) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
val llmPluginDir: File? = rootProject.findProperty("llmPluginPath")?.toString()?.let { rootProject.file(it) }
?: rootProject.file("../../../out/deploy/temp/non-bundled-plugins-IU/ml-llm").takeIf { it.isDirectory }
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
} else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
bundledModules(
"intellij.platform.vcs",
"intellij.platform.vcs.impl",
)
bundledPlugins(
"Git4Idea",
)
}
jetbrainsRuntime()
}
if (platformLocalPath != null) {
val ideDir = rootProject.file(platformLocalPath)
compileOnly(fileTree(ideDir.resolve("lib")) {
include("intellij.platform.vcs*.jar")
})
compileOnly(fileTree(ideDir.resolve("plugins/vcs-git/lib")) { include("**/*.jar") })
}
if (llmPluginDir != null) {
compileOnly(fileTree(llmPluginDir.resolve("lib")) { include("**/*.jar") })
}
implementation(project(":ai-review"))
implementation(project(":prompt-core"))
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -1,90 +0,0 @@
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
kotlin("plugin.serialization")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
val ultimateModuleDir = rootProject.file("../../../plugins/agent-workbench/ai-review-space")
sourceSets {
main {
java { setSrcDirs(listOf(ultimateModuleDir.resolve("src"))) }
resources { setSrcDirs(listOf(ultimateModuleDir.resolve("resources"))) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
val spacePluginDir: File? = rootProject.findProperty("spacePluginPath")?.toString()?.let { rootProject.file(it) }
?: platformLocalPath?.let { rootProject.file(it).resolve("plugins/space") }?.takeIf { it.isDirectory }
?: rootProject.file("../../../out/deploy/dist/plugins/space").takeIf { it.isDirectory }
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
} else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
bundledModules(
"intellij.platform.vcs",
"intellij.platform.vcs.impl",
"intellij.platform.collaborationTools",
"intellij.platform.diff",
)
bundledPlugins(
"Git4Idea",
)
}
jetbrainsRuntime()
}
if (platformLocalPath != null) {
val ideDir = rootProject.file(platformLocalPath)
compileOnly(fileTree(ideDir.resolve("lib")) {
include("intellij.platform.vcs*.jar")
include("intellij.platform.collaborationTools*.jar")
include("intellij.platform.diff*.jar")
})
compileOnly(fileTree(ideDir.resolve("plugins/vcs-git/lib")) { include("**/*.jar") })
}
if (spacePluginDir != null) {
compileOnly(fileTree(spacePluginDir.resolve("lib")) { include("**/*.jar") })
}
implementation(project(":ai-review"))
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -1,76 +0,0 @@
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
} else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
if (platformLocalPath == null) {
bundledModules(
"intellij.platform.vcs",
)
bundledPlugins(
"org.intellij.plugins.markdown",
)
}
}
if (platformLocalPath != null) {
val ideDir = rootProject.file(platformLocalPath)
compileOnly(fileTree(ideDir.resolve("lib")) {
include("intellij.platform.vcs*.jar")
})
compileOnly(fileTree(ideDir.resolve("plugins/markdown/lib")) { include("**/*.jar") })
}
implementation(project(":prompt-core"))
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
-160
View File
@@ -1,160 +0,0 @@
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.intellij.platform.gradle.TestFrameworkType
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
import java.io.File
import java.util.Properties
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform")
kotlin("plugin.serialization")
}
// Module JARs must be named after their IntelliJ module ID so that the IDE can resolve content module descriptors
// from lib/modules/<moduleId>.jar. The composedJar task defaults to <rootProject>.<subproject>.jar which doesn't match.
subprojects {
plugins.withId("org.jetbrains.intellij.platform.module") {
tasks.named<AbstractArchiveTask>("composedJar") {
archiveBaseName.set("intellij.agent.workbench.${project.name.replace('-', '.')}")
}
}
}
val localProperties = Properties().also { props ->
File(rootDir, "local.properties").takeIf { it.exists() }?.inputStream()?.use(props::load)
}
fun localProperty(name: String): String? = localProperties.getProperty(name)
val platformLocalPath: String? = localProperty("platformLocalPath")
val platformVersion = localProperty("platformVersion") ?: "262-SNAPSHOT"
// Export for subprojects
extra["platformLocalPath"] = platformLocalPath
extra["platformVersion"] = platformVersion
// Space plugin is required by ai-review-space at runtime. It's not in the Gradle-transformed IDE,
// so resolve it manually and add via localPlugin() to include it in the sandbox.
val spacePluginDir: File? = localProperty("spacePluginPath")?.let { file(it) }
?: platformLocalPath?.let { file(it).resolve("plugins/space") }?.takeIf { it.isDirectory }
?: file("../../../out/deploy/dist/plugins/space").takeIf { it.isDirectory }
extra["spacePluginDir"] = spacePluginDir
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
pluginConfiguration {
name = "Agent Workbench"
version = localProperty("pluginVersion") ?: "0.1.0"
ideaVersion {
sinceBuild = localProperty("pluginSinceBuild")
untilBuild = localProperty("pluginUntilBuild")
}
}
// Disable bytecode instrumentation when using a local IDE build (262.x compiler tools aren't published yet)
instrumentCode = false
}
sourceSets {
main {
java {
setSrcDirs(emptyList<String>())
}
resources {
setSrcDirs(listOf("plugin/resources"))
}
}
}
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
}
else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
bundledPlugins(
"org.jetbrains.plugins.terminal",
"org.intellij.plugins.markdown",
)
testFramework(TestFrameworkType.Platform)
testFramework(TestFrameworkType.Bundled)
}
jetbrainsRuntime()
if (spacePluginDir != null) {
localPlugin(spacePluginDir)
}
pluginModule(implementation(project(":core")))
pluginModule(implementation(project(":common")))
pluginModule(implementation(project(":json")))
pluginModule(implementation(project(":filewatch")))
pluginModule(implementation(project(":thread-view")))
pluginModule(implementation(project(":container")))
pluginModule(implementation(project(":prompt-core")))
pluginModule(implementation(project(":prompt-context")))
pluginModule(implementation(project(":prompt-ui")))
pluginModule(implementation(project(":prompt-vcs")))
pluginModule(implementation(project(":prompt-testrunner")))
pluginModule(implementation(project(":sessions")))
pluginModule(implementation(project(":sessions-jbcentral")))
pluginModule(implementation(project(":settings")))
pluginModule(implementation(project(":sessions-core")))
pluginModule(implementation(project(":ui")))
pluginModule(implementation(project(":sessions-actions")))
pluginModule(implementation(project(":sessions-toolwindow")))
pluginModule(implementation(project(":sessions-launch-config-backend")))
pluginModule(implementation(project(":claude-common")))
pluginModule(implementation(project(":claude-sessions")))
pluginModule(implementation(project(":codex-common")))
pluginModule(implementation(project(":codex-thread-view")))
pluginModule(implementation(project(":codex-ide")))
pluginModule(implementation(project(":codex-prompt-suggestions")))
pluginModule(implementation(project(":codex-sessions")))
pluginModule(implementation(project(":junie-sessions")))
pluginModule(implementation(project(":opencode-sessions")))
pluginModule(implementation(project(":terminal-sessions")))
pluginModule(implementation(project(":ai-review")))
pluginModule(implementation(project(":ai-review-agents")))
pluginModule(implementation(project(":ai-review-space")))
pluginModule(implementation(project(":vcs-merge")))
}
// When using local IDE, add bundled plugin JARs directly (bundledPlugins() has a bug with local builds)
if (platformLocalPath != null) {
val ideDir = file(platformLocalPath)
compileOnly(fileTree(ideDir.resolve("plugins/terminal/lib")) { include("**/*.jar") })
compileOnly(fileTree(ideDir.resolve("plugins/markdown/lib")) { include("**/*.jar") })
}
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
tasks {
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
wrapper {
gradleVersion = "8.14.3"
}
}
@@ -1,67 +0,0 @@
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
kotlin("plugin.serialization")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
} else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
}
implementation(project(":common"))
implementation(project(":core"))
implementation(project(":json"))
implementation(project(":sessions-core"))
implementation(project(":settings"))
implementation(project(":ui"))
runtimeOnly(project(":sessions-actions"))
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -1,59 +0,0 @@
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
kotlin("plugin.serialization")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
} else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
}
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -1,65 +0,0 @@
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
}
else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
}
implementation(project(":common"))
implementation(project(":core"))
implementation(project(":json"))
implementation(project(":codex-common"))
implementation(project(":prompt-core"))
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -1,63 +0,0 @@
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
} else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
}
implementation(project(":common"))
implementation(project(":core"))
implementation(project(":thread-view"))
implementation(project(":sessions-core"))
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -1 +0,0 @@
org.gradle.jvmargs=-Xmx1g
-248
View File
@@ -1,248 +0,0 @@
#!/bin/sh
#
# Copyright © 2015 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
#
##############################################################################
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/b631911858264c0b6e4d6603d677ff5218766cee/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
warn () {
echo "$*"
} >&2
die () {
echo
echo "$*"
echo
exit 1
} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
esac
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD=$JAVA_HOME/jre/sh/java
else
JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD=java
if ! command -v java >/dev/null 2>&1
then
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
fi
# Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done
fi
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
"$@"
# Stop when "xargs" is not available.
if ! command -v xargs >/dev/null 2>&1
then
die "xargs is not available"
fi
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@"
-93
View File
@@ -1,93 +0,0 @@
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@rem SPDX-License-Identifier: Apache-2.0
@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute
echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
:execute
@rem Setup the command line
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
:end
@rem End local scope for the variables with windows NT shell
if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
@@ -1,60 +0,0 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
} else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
}
implementation(project(":core"))
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -1,58 +0,0 @@
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
} else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
}
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -1,60 +0,0 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
} else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
}
implementation("io.methvin:directory-watcher:0.19.1")
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -1,60 +0,0 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
} else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
}
implementation(project(":filewatch"))
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -1,60 +0,0 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
} else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
}
implementation(project(":json"))
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -1,67 +0,0 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
kotlin("plugin.serialization")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
} else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
}
implementation(project(":common"))
implementation(project(":core"))
implementation(project(":json"))
implementation(project(":filewatch"))
implementation(project(":claude-common"))
implementation(project(":prompt-core"))
implementation(project(":sessions-core"))
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -1,61 +0,0 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
}
repositories {
mavenCentral()
google()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
} else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
}
implementation(project(":json"))
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -1,67 +0,0 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
kotlin("plugin.serialization")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
} else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
}
implementation(project(":common"))
implementation(project(":core"))
implementation(project(":json"))
implementation(project(":filewatch"))
implementation(project(":codex-common"))
implementation(project(":prompt-core"))
implementation(project(":sessions-core"))
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -1,58 +0,0 @@
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
} else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
}
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -1,64 +0,0 @@
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
} else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
}
implementation(project(":junie-common"))
implementation(project(":common"))
implementation(project(":core"))
implementation(project(":prompt-core"))
implementation(project(":sessions-core"))
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -1,63 +0,0 @@
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
}
else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
}
implementation(project(":common"))
implementation(project(":core"))
implementation(project(":prompt-core"))
implementation(project(":sessions-core"))
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -1,63 +0,0 @@
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
}
else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
}
implementation(project(":filewatch"))
implementation(project(":pi-sessions"))
implementation(project(":sessions-core"))
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -1,65 +0,0 @@
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
}
else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
}
implementation(project(":common"))
implementation(project(":core"))
implementation(project(":json"))
implementation(project(":prompt-core"))
implementation(project(":sessions-core"))
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -1,65 +0,0 @@
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
kotlin("plugin.serialization")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
}
else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
}
implementation(project(":common"))
implementation(project(":core"))
implementation(project(":prompt-core"))
implementation(project(":sessions-core"))
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -1,62 +0,0 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
kotlin("plugin.serialization")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
} else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
}
implementation(project(":core"))
implementation(project(":prompt-core"))
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -1,64 +0,0 @@
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
}
else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
}
implementation(project(":core"))
implementation(project(":pi-sessions"))
implementation(project(":sessions"))
implementation(project(":settings"))
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
+8 -8
View File
@@ -1,6 +1,6 @@
- name: lib/agent-workbench-sessions.jar
modules:
- name: intellij.agent.workbench.plugin
- name: intellij.air.plugin
contentModules:
- name: intellij.platform.ai.agent.cli
- name: intellij.platform.ai.agent.core
@@ -10,7 +10,7 @@
- name: intellij.platform.ai.agent.claude.sessions
- name: intellij.platform.ai.agent.codex.common
- name: intellij.agent.workbench.codex.ide
- name: intellij.agent.workbench.container
- name: intellij.air.container
- name: intellij.platform.ai.agent.filewatch
- name: intellij.platform.ai.agent.codex.sessions
- name: intellij.platform.ai.agent.junie.sessions
@@ -32,12 +32,12 @@
- name: intellij.agent.workbench.sessions.actions
- name: intellij.agent.workbench.sessions.toolwindow
- name: intellij.agent.workbench.engine
- name: intellij.agent.workbench.acp
- name: intellij.agent.workbench.acp.runtime
- name: intellij.air.acp
- name: intellij.air.acp.runtime
- name: intellij.agent.workbench
- name: lib/modules/intellij.agent.workbench.container.mcp.jar
- name: lib/modules/intellij.air.container.mcp.jar
contentModules:
- name: intellij.agent.workbench.container.mcp
- name: lib/modules/intellij.agent.workbench.container.eel.jar
- name: intellij.air.container.mcp
- name: lib/modules/intellij.air.container.eel.jar
contentModules:
- name: intellij.agent.workbench.container.eel
- name: intellij.air.container.eel
-300
View File
@@ -1,300 +0,0 @@
load("@community//build:tests-options.bzl", "jps_test")
load("@rules_jvm//:jvm.bzl", "jvm_library")
### auto-generated section `build intellij.agent.workbench.plugin` start
jvm_library(
name = "plugin",
srcs = glob(
[],
allow_empty = True,
),
module_name = "intellij.agent.workbench.plugin",
resource_strip_prefix = "resources",
resources = glob(
["resources/**/*"],
),
visibility = ["//visibility:public"],
runtime_deps = [
# do not sort,
"//plugins/agent-workbench/lib-agent/cli",
"//plugins/agent-workbench/lib-agent/core",
"//plugins/agent-workbench/lib-agent/common",
"//plugins/agent-workbench/thread-view:agent-workbench-thread-view",
"//plugins/agent-workbench/lib-agent/providers/claude/common",
"//plugins/agent-workbench/lib-agent/providers/codex/common",
"//plugins/agent-workbench/codex/thread-view:agent-workbench-codex-thread-view",
"//plugins/agent-workbench/codex/ide",
"//plugins/agent-workbench/lib-agent/providers/junie/common",
"//plugins/agent-workbench/lib-agent/sessions-core:ai-agent-sessions-core",
"//plugins/agent-workbench/prompt/core",
"//plugins/agent-workbench/prompt/context",
"//plugins/agent-workbench/prompt/ui",
"//plugins/agent-workbench/prompt/vcs",
"//plugins/agent-workbench/prompt/vcs-ui:agent-workbench-prompt-vcs-ui",
"//plugins/agent-workbench/vcs-merge:agent-workbench-vcs-merge",
"//plugins/agent-workbench/prompt/testrunner",
"//plugins/agent-workbench/sessions",
"//plugins/agent-workbench/sessions-actions:agent-workbench-sessions-actions",
"//plugins/agent-workbench/sessions-toolwindow:agent-workbench-sessions-toolwindow",
"//plugins/agent-workbench/lib-agent/providers/codex/sessions",
"//plugins/agent-workbench/lib-agent/providers/claude/sessions",
"//plugins/agent-workbench/claude/awb",
"//plugins/agent-workbench/lib-agent/providers/junie/sessions",
"//plugins/agent-workbench/lib-agent/providers/opencode/sessions",
"//plugins/agent-workbench/lib-agent/providers/pi/sessions",
"//plugins/agent-workbench/pi/awb",
"//plugins/agent-workbench/lib-agent/providers/terminal/sessions",
"//plugins/agent-workbench/sessions-launch-config/backend",
],
)
jvm_library(
name = "plugin_test_lib",
testonly = True,
srcs = glob(
[],
allow_empty = True,
),
module_name = "intellij.agent.workbench.plugin",
visibility = ["//visibility:public"],
runtime_deps = [
# do not sort,
":plugin",
"@lib//:kotlin-stdlib",
"//plugins/agent-workbench/lib-agent/cli:cli_test_lib",
"//plugins/agent-workbench/lib-agent/core:core_test_lib",
"//plugins/agent-workbench/lib-agent/common:common_test_lib",
"//plugins/agent-workbench/thread-view:agent-workbench-thread-view_test_lib",
"//plugins/agent-workbench/lib-agent/providers/claude/common:common_test_lib",
"//plugins/agent-workbench/lib-agent/providers/codex/common:common_test_lib",
"//plugins/agent-workbench/codex/thread-view:agent-workbench-codex-thread-view_test_lib",
"//plugins/agent-workbench/codex/ide:ide_test_lib",
"//plugins/agent-workbench/lib-agent/providers/junie/common:common_test_lib",
"//plugins/agent-workbench/lib-agent/sessions-core:ai-agent-sessions-core_test_lib",
"//plugins/agent-workbench/prompt/core:core_test_lib",
"//plugins/agent-workbench/prompt/context:context_test_lib",
"//plugins/agent-workbench/prompt/ui:ui_test_lib",
"//plugins/agent-workbench/prompt/vcs:vcs_test_lib",
"//plugins/agent-workbench/prompt/vcs-ui:agent-workbench-prompt-vcs-ui_test_lib",
"//plugins/agent-workbench/vcs-merge:agent-workbench-vcs-merge_test_lib",
"//plugins/agent-workbench/prompt/testrunner:testrunner_test_lib",
"//plugins/agent-workbench/sessions:sessions_test_lib",
"//plugins/agent-workbench/sessions-actions:agent-workbench-sessions-actions_test_lib",
"//plugins/agent-workbench/sessions-toolwindow:agent-workbench-sessions-toolwindow_test_lib",
"//plugins/agent-workbench/lib-agent/providers/codex/sessions:sessions_test_lib",
"//plugins/agent-workbench/lib-agent/providers/claude/sessions:sessions_test_lib",
"//plugins/agent-workbench/claude/awb:awb_test_lib",
"//plugins/agent-workbench/lib-agent/providers/junie/sessions:sessions_test_lib",
"//plugins/agent-workbench/lib-agent/providers/opencode/sessions:sessions_test_lib",
"//plugins/agent-workbench/lib-agent/providers/pi/sessions:sessions_test_lib",
"//plugins/agent-workbench/pi/awb:awb_test_lib",
"//plugins/agent-workbench/lib-agent/providers/terminal/sessions:sessions_test_lib",
"//plugins/agent-workbench/sessions-launch-config/backend:backend_test_lib",
"//libraries/junit5",
"//libraries/junit5:junit5_test_lib",
"//libraries/junit5-suites",
"//libraries/junit5-suites:junit5-suites_test_lib",
],
)
### auto-generated section `build intellij.agent.workbench.plugin` end
### auto-generated section `iml intellij.agent.workbench.plugin` start
exports_files(
[
"intellij.agent.workbench.plugin.iml",
],
visibility = ["//visibility:public"],
)
### auto-generated section `iml intellij.agent.workbench.plugin` end
### auto-generated section `build intellij.agent.workbench.plugin.tests` start
jvm_library(
name = "agent-workbench-plugin-tests",
srcs = glob(
[],
allow_empty = True,
),
module_name = "intellij.agent.workbench.plugin.tests",
visibility = ["//visibility:public"],
runtime_deps = [
# do not sort,
"//plugins/agent-workbench/lib-agent/cli",
"//plugins/agent-workbench/thread-view:agent-workbench-thread-view",
"//plugins/agent-workbench/lib-agent/providers/claude/common",
"//plugins/agent-workbench/lib-agent/providers/codex/common",
"//plugins/agent-workbench/codex/thread-view:agent-workbench-codex-thread-view",
"//plugins/agent-workbench/codex/ide",
"//plugins/agent-workbench/lib-agent/providers/junie/common",
"//plugins/agent-workbench/prompt/core",
"//plugins/agent-workbench/prompt/ui",
"//plugins/agent-workbench/prompt/vcs",
"//plugins/agent-workbench/prompt/vcs-ui:agent-workbench-prompt-vcs-ui",
"//plugins/agent-workbench/prompt/testrunner",
"//plugins/agent-workbench/sessions",
"//plugins/agent-workbench/vcs-merge:agent-workbench-vcs-merge",
"//plugins/agent-workbench/sessions-actions:agent-workbench-sessions-actions",
"//plugins/agent-workbench/sessions-toolwindow:agent-workbench-sessions-toolwindow",
"//plugins/agent-workbench/lib-agent/providers/codex/sessions",
"//plugins/agent-workbench/lib-agent/providers/claude/sessions",
"//plugins/agent-workbench/claude/awb",
"//plugins/agent-workbench/lib-agent/providers/junie/sessions",
"//plugins/agent-workbench/lib-agent/providers/opencode/sessions",
"//plugins/agent-workbench/lib-agent/providers/pi/sessions",
"//plugins/agent-workbench/pi/awb",
"//plugins/agent-workbench/lib-agent/providers/terminal/sessions",
"//plugins/agent-workbench/sessions-launch-config/backend",
],
)
jvm_library(
name = "agent-workbench-plugin-tests_test_lib",
testonly = True,
srcs = glob(
[
"testSrc/**/*.kt",
"testSrc/**/*.java",
"testSrc/**/*.form",
],
allow_empty = True,
),
associates = [
"//plugins/agent-workbench/plugin",
"//plugins/agent-workbench/plugin:plugin_test_lib",
],
visibility = ["//visibility:public"],
runtime_deps = [
# do not sort,
":agent-workbench-plugin-tests",
"//plugins/agent-workbench/lib-agent/cli:cli_test_lib",
"//plugins/agent-workbench/thread-view:agent-workbench-thread-view_test_lib",
"//plugins/agent-workbench/lib-agent/providers/claude/common:common_test_lib",
"//plugins/agent-workbench/lib-agent/providers/codex/common:common_test_lib",
"//plugins/agent-workbench/codex/thread-view:agent-workbench-codex-thread-view_test_lib",
"//plugins/agent-workbench/codex/ide:ide_test_lib",
"//plugins/agent-workbench/lib-agent/providers/junie/common:common_test_lib",
"//plugins/agent-workbench/prompt/core:core_test_lib",
"//plugins/agent-workbench/prompt/ui:ui_test_lib",
"//plugins/agent-workbench/prompt/vcs:vcs_test_lib",
"//plugins/agent-workbench/prompt/vcs-ui:agent-workbench-prompt-vcs-ui_test_lib",
"//plugins/agent-workbench/prompt/testrunner:testrunner_test_lib",
"//plugins/agent-workbench/sessions:sessions_test_lib",
"//plugins/agent-workbench/vcs-merge:agent-workbench-vcs-merge_test_lib",
"//plugins/agent-workbench/sessions-actions:agent-workbench-sessions-actions_test_lib",
"//plugins/agent-workbench/sessions-toolwindow:agent-workbench-sessions-toolwindow_test_lib",
"//plugins/agent-workbench/lib-agent/providers/codex/sessions:sessions_test_lib",
"//plugins/agent-workbench/lib-agent/providers/claude/sessions:sessions_test_lib",
"//plugins/agent-workbench/claude/awb:awb_test_lib",
"//plugins/agent-workbench/lib-agent/providers/junie/sessions:sessions_test_lib",
"//plugins/agent-workbench/lib-agent/providers/opencode/sessions:sessions_test_lib",
"//plugins/agent-workbench/lib-agent/providers/pi/sessions:sessions_test_lib",
"//plugins/agent-workbench/pi/awb:awb_test_lib",
"//plugins/agent-workbench/lib-agent/providers/terminal/sessions:sessions_test_lib",
"//plugins/agent-workbench/sessions-launch-config/backend:backend_test_lib",
],
deps = [
# do not sort,
"@lib//:kotlin-stdlib",
"//plugins/agent-workbench/lib-agent/common",
"//plugins/agent-workbench/lib-agent/common:common_test_lib",
"//plugins/agent-workbench/lib-agent/core",
"//plugins/agent-workbench/lib-agent/core:core_test_lib",
"//plugins/agent-workbench/lib-agent/sessions-core:ai-agent-sessions-core",
"//plugins/agent-workbench/lib-agent/sessions-core:ai-agent-sessions-core_test_lib",
"//libraries/assertj-core",
"//libraries/assertj-core:assertj-core_test_lib",
"//libraries/junit5",
"//libraries/junit5:junit5_test_lib",
"//libraries/junit5-suites",
"//libraries/junit5-suites:junit5-suites_test_lib",
"//platform/core-api:core",
"//platform/core-api:core_test_lib",
"//platform/editor-ui-api:editor-ui",
"//platform/editor-ui-api:editor-ui_test_lib",
"//platform/testFramework",
"//platform/testFramework:testFramework_test_lib",
"//platform/testFramework/junit5",
"//platform/testFramework/junit5:junit5_test_lib",
"//plugins/agent-workbench/lib-agent/common:ai-agent-common-tests",
"//plugins/agent-workbench/lib-agent/common:ai-agent-common-tests_test_lib",
"//plugins/agent-workbench/thread-view:agent-workbench-thread-view-tests",
"//plugins/agent-workbench/thread-view:agent-workbench-thread-view-tests_test_lib",
"//plugins/agent-workbench/codex/thread-view:agent-workbench-codex-thread-view-tests",
"//plugins/agent-workbench/codex/thread-view:agent-workbench-codex-thread-view-tests_test_lib",
"//plugins/agent-workbench/lib-agent/providers/claude/sessions:ai-agent-claude-sessions-tests",
"//plugins/agent-workbench/lib-agent/providers/claude/sessions:ai-agent-claude-sessions-tests_test_lib",
"//plugins/agent-workbench/claude/awb:agent-workbench-claude-awb-tests",
"//plugins/agent-workbench/claude/awb:agent-workbench-claude-awb-tests_test_lib",
"//plugins/agent-workbench/codex/ide:agent-workbench-codex-ide-tests",
"//plugins/agent-workbench/codex/ide:agent-workbench-codex-ide-tests_test_lib",
"//plugins/agent-workbench/lib-agent/providers/codex/sessions:ai-agent-codex-sessions-tests",
"//plugins/agent-workbench/lib-agent/providers/codex/sessions:ai-agent-codex-sessions-tests_test_lib",
"//plugins/agent-workbench/lib-agent/providers/junie/sessions:ai-agent-junie-sessions-tests",
"//plugins/agent-workbench/lib-agent/providers/junie/sessions:ai-agent-junie-sessions-tests_test_lib",
"//plugins/agent-workbench/lib-agent/providers/opencode/sessions:ai-agent-opencode-sessions-tests",
"//plugins/agent-workbench/lib-agent/providers/opencode/sessions:ai-agent-opencode-sessions-tests_test_lib",
"//plugins/agent-workbench/lib-agent/providers/pi/sessions:ai-agent-pi-sessions-tests",
"//plugins/agent-workbench/lib-agent/providers/pi/sessions:ai-agent-pi-sessions-tests_test_lib",
"//plugins/agent-workbench/lib-agent/providers/pi/sessions-filewatch:ai-agent-pi-sessions-filewatch-tests",
"//plugins/agent-workbench/lib-agent/providers/pi/sessions-filewatch:ai-agent-pi-sessions-filewatch-tests_test_lib",
"//plugins/agent-workbench/lib-agent/providers/terminal/sessions:ai-agent-terminal-sessions-tests",
"//plugins/agent-workbench/lib-agent/providers/terminal/sessions:ai-agent-terminal-sessions-tests_test_lib",
"//plugins/agent-workbench/prompt/core:agent-workbench-prompt-core-tests",
"//plugins/agent-workbench/prompt/core:agent-workbench-prompt-core-tests_test_lib",
"//plugins/agent-workbench/prompt/ui:agent-workbench-prompt-ui-tests",
"//plugins/agent-workbench/prompt/ui:agent-workbench-prompt-ui-tests_test_lib",
"//plugins/agent-workbench/prompt/vcs:agent-workbench-prompt-vcs-tests",
"//plugins/agent-workbench/prompt/vcs:agent-workbench-prompt-vcs-tests_test_lib",
"//plugins/agent-workbench/prompt/testrunner:agent-workbench-prompt-testrunner-tests",
"//plugins/agent-workbench/prompt/testrunner:agent-workbench-prompt-testrunner-tests_test_lib",
"//plugins/agent-workbench/sessions:agent-workbench-sessions-tests",
"//plugins/agent-workbench/sessions:agent-workbench-sessions-tests_test_lib",
"//plugins/agent-workbench/vcs-merge:agent-workbench-vcs-merge-tests",
"//plugins/agent-workbench/vcs-merge:agent-workbench-vcs-merge-tests_test_lib",
"//plugins/agent-workbench/sessions-actions:agent-workbench-sessions-actions-tests",
"//plugins/agent-workbench/sessions-actions:agent-workbench-sessions-actions-tests_test_lib",
"//plugins/agent-workbench/sessions-toolwindow:agent-workbench-sessions-toolwindow-tests",
"//plugins/agent-workbench/sessions-toolwindow:agent-workbench-sessions-toolwindow-tests_test_lib",
"//plugins/agent-workbench/lib-agent/filewatch:ai-agent-filewatch-tests",
"//plugins/agent-workbench/lib-agent/filewatch:ai-agent-filewatch-tests_test_lib",
"//plugins/agent-workbench/ui:agent-workbench-ui-tests",
"//plugins/agent-workbench/ui:agent-workbench-ui-tests_test_lib",
"//plugins/agent-workbench/lib-agent/cli:ai-agent-cli-tests",
"//plugins/agent-workbench/lib-agent/cli:ai-agent-cli-tests_test_lib",
"//plugins/agent-workbench/codex/prompt-suggestions:agent-workbench-codex-prompt-suggestions-tests",
"//plugins/agent-workbench/codex/prompt-suggestions:agent-workbench-codex-prompt-suggestions-tests_test_lib",
"//plugins/agent-workbench/lib-agent/core:ai-agent-core-tests",
"//plugins/agent-workbench/lib-agent/core:ai-agent-core-tests_test_lib",
"//plugins/agent-workbench/settings:agent-workbench-settings-tests",
"//plugins/agent-workbench/settings:agent-workbench-settings-tests_test_lib",
"//plugins/agent-workbench/sessions-cost:agent-workbench-sessions-cost-tests",
"//plugins/agent-workbench/sessions-cost:agent-workbench-sessions-cost-tests_test_lib",
"//plugins/agent-workbench/lib-agent/providers/codex/common:ai-agent-codex-common-tests",
"//plugins/agent-workbench/lib-agent/providers/codex/common:ai-agent-codex-common-tests_test_lib",
"//plugins/agent-workbench/sessions-launch-config/backend:agent-workbench-sessions-launch-config-backend-tests",
"//plugins/agent-workbench/sessions-launch-config/backend:agent-workbench-sessions-launch-config-backend-tests_test_lib",
"//plugins/agent-workbench/sessions-task-folders:agent-workbench-sessions-task-folders-tests",
"//plugins/agent-workbench/sessions-task-folders:agent-workbench-sessions-task-folders-tests_test_lib",
"//plugins/agent-workbench/engine:agent-workbench-engine-tests",
"//plugins/agent-workbench/engine:agent-workbench-engine-tests_test_lib",
],
)
### auto-generated section `build intellij.agent.workbench.plugin.tests` end
### auto-generated section `iml intellij.agent.workbench.plugin.tests` start
exports_files(
[
"intellij.agent.workbench.plugin.tests.iml",
],
visibility = ["//visibility:public"],
)
### auto-generated section `iml intellij.agent.workbench.plugin.tests` end
### auto-generated section `test intellij.agent.workbench.plugin.tests` start
jps_test(
name = "agent-workbench-plugin-tests_test",
runtime_deps = [":agent-workbench-plugin-tests_test_lib"],
)
### auto-generated section `test intellij.agent.workbench.plugin.tests` end
@@ -1,64 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="kotlin-language" name="Kotlin">
<configuration version="5" platform="JVM 25" allPlatforms="JVM [25]" useProjectSettings="false">
<compilerSettings>
<option name="additionalArguments" value="-Xjvm-default=all -XXLanguage:+AllowEagerSupertypeAccessibilityChecks -progressive" />
</compilerSettings>
<compilerArguments>
<stringArguments>
<stringArg name="jvmTarget" arg="25" />
<stringArg name="apiVersion" arg="2.4" />
<stringArg name="languageVersion" arg="2.4" />
</stringArguments>
<arrayArguments>
<arrayArg name="pluginClasspaths">
<args>$KOTLIN_BUNDLED$/lib/kotlinx-serialization-compiler-plugin.jar</args>
</arrayArg>
</arrayArguments>
</compilerArguments>
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/resources" type="java-resource" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" scope="TEST" name="kotlin-stdlib" level="project" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.cli" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.core" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.common" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.agent.workbench.thread.view" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.claude.common" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.codex.common" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.agent.workbench.codex.thread.view" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.agent.workbench.codex.ide" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.junie.common" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.sessions.core" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.agent.workbench.prompt.core" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.agent.workbench.prompt.context" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.agent.workbench.prompt.ui" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.agent.workbench.prompt.vcs" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.agent.workbench.prompt.vcs.ui" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.agent.workbench.vcs.merge" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.agent.workbench.prompt.testrunner" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.agent.workbench.sessions" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.agent.workbench.sessions.actions" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.agent.workbench.sessions.toolwindow" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.codex.sessions" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.claude.sessions" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.agent.workbench.claude.awb" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.junie.sessions" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.opencode.sessions" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.pi.sessions" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.agent.workbench.pi.awb" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.terminal.sessions" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.agent.workbench.sessions.launch.config.backend" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.libraries.junit5" scope="TEST" />
<orderEntry type="module" module-name="intellij.libraries.junit5.suites" scope="TEST" />
</component>
</module>
@@ -1,101 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="kotlin-language" name="Kotlin">
<configuration version="5" platform="JVM 25" allPlatforms="JVM [25]" useProjectSettings="false">
<compilerSettings>
<option name="additionalArguments" value="-Xjvm-default=all -XXLanguage:+AllowEagerSupertypeAccessibilityChecks -progressive" />
</compilerSettings>
<compilerArguments>
<stringArguments>
<stringArg name="jvmTarget" arg="25" />
<stringArg name="apiVersion" arg="2.4" />
<stringArg name="languageVersion" arg="2.4" />
</stringArguments>
<arrayArguments>
<arrayArg name="pluginClasspaths">
<args>$KOTLIN_BUNDLED$/lib/kotlinx-serialization-compiler-plugin.jar</args>
</arrayArg>
</arrayArguments>
</compilerArguments>
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$/testSrc">
<sourceFolder url="file://$MODULE_DIR$/testSrc" isTestSource="true" packagePrefix="com.intellij.agent.workbench.plugin" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" scope="TEST" name="kotlin-stdlib" level="project" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.cli" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.common" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.core" scope="TEST" />
<orderEntry type="module" module-name="intellij.agent.workbench.thread.view" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.claude.common" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.codex.common" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.agent.workbench.codex.thread.view" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.agent.workbench.codex.ide" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.junie.common" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.sessions.core" scope="TEST" />
<orderEntry type="module" module-name="intellij.agent.workbench.prompt.core" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.agent.workbench.prompt.ui" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.agent.workbench.prompt.vcs" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.agent.workbench.prompt.vcs.ui" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.agent.workbench.prompt.testrunner" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.agent.workbench.sessions" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.agent.workbench.vcs.merge" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.agent.workbench.sessions.actions" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.agent.workbench.sessions.toolwindow" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.codex.sessions" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.claude.sessions" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.agent.workbench.claude.awb" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.junie.sessions" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.opencode.sessions" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.pi.sessions" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.agent.workbench.pi.awb" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.terminal.sessions" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.agent.workbench.sessions.launch.config.backend" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.libraries.assertj.core" scope="TEST" />
<orderEntry type="module" module-name="intellij.libraries.junit5" scope="TEST" />
<orderEntry type="module" module-name="intellij.libraries.junit5.suites" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.core" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.editor.ui" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.testFramework" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.testFramework.junit5" scope="TEST" />
<orderEntry type="module" module-name="intellij.agent.workbench.plugin" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.common.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.agent.workbench.thread.view.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.agent.workbench.codex.thread.view.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.claude.sessions.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.agent.workbench.claude.awb.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.agent.workbench.codex.ide.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.codex.sessions.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.junie.sessions.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.opencode.sessions.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.pi.sessions.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.pi.sessions.filewatch.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.terminal.sessions.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.agent.workbench.prompt.core.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.agent.workbench.prompt.ui.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.agent.workbench.prompt.vcs.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.agent.workbench.prompt.testrunner.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.agent.workbench.sessions.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.agent.workbench.vcs.merge.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.agent.workbench.sessions.actions.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.agent.workbench.sessions.toolwindow.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.filewatch.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.agent.workbench.ui.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.cli.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.agent.workbench.codex.prompt.suggestions.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.core.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.agent.workbench.settings.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.agent.workbench.sessions.cost.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.ai.agent.codex.common.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.agent.workbench.sessions.launch.config.backend.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.agent.workbench.sessions.task.folders.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.agent.workbench.engine.tests" scope="TEST" />
</component>
<component name="TestModuleProperties" production-module="intellij.agent.workbench.plugin" />
</module>
@@ -1,158 +0,0 @@
- name: lib/agent-workbench-plugin.jar
modules:
- name: intellij.agent.workbench.plugin
- name: lib/modules/intellij.agent.workbench.acp.jar
contentModules:
- name: intellij.agent.workbench.acp
- name: lib/modules/intellij.agent.workbench.acp.runtime.jar
contentModules:
- name: intellij.agent.workbench.acp.runtime
- name: lib/modules/intellij.agent.workbench.ai.code.review.integration.jar
contentModules:
- name: intellij.agent.workbench.ai.code.review.integration
- name: lib/modules/intellij.agent.workbench.ai.review.agents.jar
contentModules:
- name: intellij.agent.workbench.ai.review.agents
- name: lib/modules/intellij.agent.workbench.ai.review.jar
contentModules:
- name: intellij.agent.workbench.ai.review
- name: lib/modules/intellij.agent.workbench.ai.review.llm.plugin.integration.jar
contentModules:
- name: intellij.agent.workbench.ai.review.llm.plugin.integration
- name: lib/modules/intellij.agent.workbench.ai.review.space.jar
contentModules:
- name: intellij.agent.workbench.ai.review.space
- name: lib/modules/intellij.agent.workbench.claude.awb.jar
contentModules:
- name: intellij.agent.workbench.claude.awb
- name: lib/modules/intellij.agent.workbench.codex.ide.jar
contentModules:
- name: intellij.agent.workbench.codex.ide
- name: lib/modules/intellij.agent.workbench.codex.prompt.suggestions.jar
contentModules:
- name: intellij.agent.workbench.codex.prompt.suggestions
- name: lib/modules/intellij.agent.workbench.codex.thread.view.jar
contentModules:
- name: intellij.agent.workbench.codex.thread.view
- name: lib/modules/intellij.agent.workbench.container.eel.jar
contentModules:
- name: intellij.agent.workbench.container.eel
- name: lib/modules/intellij.agent.workbench.container.jar
contentModules:
- name: intellij.agent.workbench.container
- name: lib/modules/intellij.agent.workbench.container.mcp.jar
contentModules:
- name: intellij.agent.workbench.container.mcp
library: io.modelcontextprotocol.kotlin.sdk
files:
- name: $MAVEN_REPOSITORY$/io/modelcontextprotocol/kotlin-sdk-jvm/0/kotlin-sdk-jvm-0.jar
- name: $MAVEN_REPOSITORY$/io/modelcontextprotocol/kotlin-sdk-client-jvm/0/kotlin-sdk-client-jvm-0.jar
- name: $MAVEN_REPOSITORY$/io/modelcontextprotocol/kotlin-sdk-server-jvm/0/kotlin-sdk-server-jvm-0.jar
- name: $MAVEN_REPOSITORY$/io/modelcontextprotocol/kotlin-sdk-core-jvm/0/kotlin-sdk-core-jvm-0.jar
reason: <- intellij.agent.workbench.container.mcp
- name: lib/modules/intellij.agent.workbench.engine.jar
contentModules:
- name: intellij.agent.workbench.engine
- name: lib/modules/intellij.agent.workbench.pi.awb.jar
contentModules:
- name: intellij.agent.workbench.pi.awb
- name: lib/modules/intellij.agent.workbench.prompt.context.jar
contentModules:
- name: intellij.agent.workbench.prompt.context
- name: lib/modules/intellij.agent.workbench.prompt.core.jar
contentModules:
- name: intellij.agent.workbench.prompt.core
- name: lib/modules/intellij.agent.workbench.prompt.testrunner.jar
contentModules:
- name: intellij.agent.workbench.prompt.testrunner
- name: lib/modules/intellij.agent.workbench.prompt.ui.jar
contentModules:
- name: intellij.agent.workbench.prompt.ui
- name: lib/modules/intellij.agent.workbench.prompt.vcs.jar
contentModules:
- name: intellij.agent.workbench.prompt.vcs
- name: lib/modules/intellij.agent.workbench.prompt.vcs.ui.jar
contentModules:
- name: intellij.agent.workbench.prompt.vcs.ui
- name: lib/modules/intellij.agent.workbench.sessions.actions.jar
contentModules:
- name: intellij.agent.workbench.sessions.actions
- name: lib/modules/intellij.agent.workbench.sessions.cost.jar
contentModules:
- name: intellij.agent.workbench.sessions.cost
- name: lib/modules/intellij.agent.workbench.sessions.jar
contentModules:
- name: intellij.agent.workbench.sessions
- name: lib/modules/intellij.agent.workbench.sessions.jbcentral.jar
contentModules:
- name: intellij.agent.workbench.sessions.jbcentral
- name: lib/modules/intellij.agent.workbench.sessions.launch.config.backend.jar
contentModules:
- name: intellij.agent.workbench.sessions.launch.config.backend
- name: lib/modules/intellij.agent.workbench.sessions.toolwindow.jar
contentModules:
- name: intellij.agent.workbench.sessions.toolwindow
- name: lib/modules/intellij.agent.workbench.settings.jar
contentModules:
- name: intellij.agent.workbench.settings
- name: lib/modules/intellij.agent.workbench.thread.view.jar
contentModules:
- name: intellij.agent.workbench.thread.view
- name: lib/modules/intellij.agent.workbench.ui.jar
contentModules:
- name: intellij.agent.workbench.ui
- name: lib/modules/intellij.agent.workbench.vcs.merge.jar
contentModules:
- name: intellij.agent.workbench.vcs.merge
- name: lib/modules/intellij.platform.ai.agent.claude.common.jar
contentModules:
- name: intellij.platform.ai.agent.claude.common
- name: lib/modules/intellij.platform.ai.agent.claude.sessions.jar
contentModules:
- name: intellij.platform.ai.agent.claude.sessions
- name: lib/modules/intellij.platform.ai.agent.cli.jar
contentModules:
- name: intellij.platform.ai.agent.cli
- name: lib/modules/intellij.platform.ai.agent.codex.common.jar
contentModules:
- name: intellij.platform.ai.agent.codex.common
- name: lib/modules/intellij.platform.ai.agent.codex.sessions.jar
contentModules:
- name: intellij.platform.ai.agent.codex.sessions
libraries:
night-config-toml:
- name: $MAVEN_REPOSITORY$/com/electronwill/night-config/toml/3/toml-3.jar
- name: $MAVEN_REPOSITORY$/com/electronwill/night-config/core/3/core-3.jar
- name: lib/modules/intellij.platform.ai.agent.common.jar
contentModules:
- name: intellij.platform.ai.agent.common
- name: lib/modules/intellij.platform.ai.agent.core.jar
contentModules:
- name: intellij.platform.ai.agent.core
- name: lib/modules/intellij.platform.ai.agent.filewatch.jar
contentModules:
- name: intellij.platform.ai.agent.filewatch
- name: lib/modules/intellij.platform.ai.agent.json.jar
contentModules:
- name: intellij.platform.ai.agent.json
- name: lib/modules/intellij.platform.ai.agent.junie.common.jar
contentModules:
- name: intellij.platform.ai.agent.junie.common
- name: lib/modules/intellij.platform.ai.agent.junie.sessions.jar
contentModules:
- name: intellij.platform.ai.agent.junie.sessions
- name: lib/modules/intellij.platform.ai.agent.opencode.sessions.jar
contentModules:
- name: intellij.platform.ai.agent.opencode.sessions
- name: lib/modules/intellij.platform.ai.agent.pi.sessions.filewatch.jar
contentModules:
- name: intellij.platform.ai.agent.pi.sessions.filewatch
- name: lib/modules/intellij.platform.ai.agent.pi.sessions.jar
contentModules:
- name: intellij.platform.ai.agent.pi.sessions
- name: lib/modules/intellij.platform.ai.agent.sessions.core.jar
contentModules:
- name: intellij.platform.ai.agent.sessions.core
- name: lib/modules/intellij.platform.ai.agent.terminal.sessions.jar
contentModules:
- name: intellij.platform.ai.agent.terminal.sessions
@@ -1,83 +0,0 @@
<idea-plugin>
<id>com.intellij.agent.workbench</id>
<name>Agent Workbench</name>
<description><![CDATA[
Run and manage AI coding agents — Codex, Claude, Junie, OpenCode, and more — directly inside your IDE.
<ul>
<li><b>Quick Launch</b> — press <code>Ctrl Ctrl</code> from anywhere to start a new task or continue an existing one. Your current selection, file, and symbol are attached automatically.</li>
<li><b>Launch Profiles</b> — bundle provider, model, reasoning effort, and launch mode into reusable presets (Standard, Full Auto, Brave Mode, or your own) and pick a cheaper, faster, or more careful setup per task without changing your default.</li>
<li><b>AI Review</b> — hold <code>Alt</code>/<code>Option</code> and press <code>Ctrl</code> twice to review local changes or commits with AI and catch bugs, security issues, and style problems before they reach the main branch.</li>
<li><b>All Sessions in One Place</b> — browse, reopen, and resume AI sessions across providers, grouped by project.</li>
<li><b>Terminal Sessions</b> — open regular terminal shells from the same launcher and track them alongside your agent threads; reopen, rename, and archive them just like agent sessions.</li>
<li><b>Persistent Agent Thread Views</b> — each session opens in its own editor view and survives IDE restarts.</li>
<li><b>Separate Window Mode</b> — run Agent Thread View in a dedicated frame so you can work on code and manage tasks side by side.</li>
<li><b>Automatic Context</b> — editor selections, VCS changes, project-view selections, and test results are collected and sent with your prompt so the agent has the context it needs.</li>
<li><b>Context from UI</b> — click any IDE component (tool window, editor, panel) to screenshot it and attach the image as visual context for the agent.</li>
<li><b>Context from Screen</b> — drag to select any screen area and capture it as a screenshot to share with the agent, even outside the IDE.</li>
</ul>
]]></description>
<!--suppress PluginXmlValidity -->
<vendor>Vladimir Krivosheev</vendor>
<content namespace="agent-workbench">
<module name="intellij.platform.ai.agent.cli"/>
<module name="intellij.platform.ai.agent.core"/>
<module name="intellij.platform.ai.agent.common"/>
<module name="intellij.platform.ai.agent.json"/>
<module name="intellij.platform.ai.agent.claude.common"/>
<module name="intellij.platform.ai.agent.claude.sessions"/>
<module name="intellij.agent.workbench.claude.awb"/>
<module name="intellij.platform.ai.agent.codex.common"/>
<module name="intellij.agent.workbench.codex.thread.view"/>
<module name="intellij.agent.workbench.codex.ide"/>
<module name="intellij.agent.workbench.codex.prompt.suggestions"/>
<module name="intellij.platform.ai.agent.codex.sessions"/>
<module name="intellij.platform.ai.agent.junie.common"/>
<module name="intellij.platform.ai.agent.junie.sessions"/>
<module name="intellij.platform.ai.agent.opencode.sessions"/>
<module name="intellij.platform.ai.agent.pi.sessions"/>
<module name="intellij.agent.workbench.pi.awb"/>
<module name="intellij.platform.ai.agent.pi.sessions.filewatch"/>
<module name="intellij.platform.ai.agent.terminal.sessions"/>
<module name="intellij.agent.workbench.settings"/>
<module name="intellij.platform.ai.agent.sessions.core"/>
<module name="intellij.agent.workbench.sessions.cost"/>
<module name="intellij.agent.workbench.sessions.launch.config.backend"/>
<module name="intellij.agent.workbench.prompt.core"/>
<module name="intellij.agent.workbench.prompt.context"/>
<module name="intellij.agent.workbench.prompt.ui"/>
<module name="intellij.agent.workbench.prompt.vcs"/>
<module name="intellij.agent.workbench.prompt.vcs.ui"/>
<module name="intellij.agent.workbench.prompt.testrunner"/>
<module name="intellij.agent.workbench.sessions"/>
<module name="intellij.agent.workbench.sessions.task.folders"/>
<module name="intellij.agent.workbench.sessions.jbcentral"/>
<module name="intellij.agent.workbench.ui"/>
<module name="intellij.agent.workbench.sessions.actions"/>
<module name="intellij.agent.workbench.sessions.toolwindow"/>
<module name="intellij.agent.workbench.thread.view"/>
<module name="intellij.platform.ai.agent.filewatch"/>
<module name="intellij.agent.workbench.ai.review"/>
<module name="intellij.agent.workbench.ai.review.agents"/>
<module name="intellij.agent.workbench.ai.review.llm.plugin.integration"/>
<module name="intellij.agent.workbench.ai.code.review.integration" loading="optional"/>
<module name="intellij.agent.workbench.ai.review.space"/>
<module name="intellij.agent.workbench.vcs.merge"/>
<module name="intellij.agent.workbench.container"/>
<module name="intellij.agent.workbench.container.mcp"/>
<module name="intellij.agent.workbench.container.eel"/>
<module name="intellij.agent.workbench.engine"/>
<module name="intellij.agent.workbench.acp"/>
<module name="intellij.agent.workbench.acp.runtime"/>
</content>
<extensions defaultExtensionNs="com.intellij">
<registryKey key="agent.workbench.use.monochrome.icons"
defaultValue="true"
description="Use monochrome line icons on main toolbar buttons, action buttons, and status indicators in Agent Workbench"
restartRequired="false"/>
<registryKey key="agent.workbench.new.thread.inline.prompt"
defaultValue="true"
description="Open Agent Workbench New Thread actions as an inline prompt before starting the agent session"
restartRequired="false"/>
</extensions>
</idea-plugin>
@@ -1,13 +0,0 @@
<svg version="1.1" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="bgLight" x1="7" x2="33" y1="7" y2="33" gradientUnits="userSpaceOnUse">
<stop stop-color="#955AE0" offset="0"/>
<stop stop-color="#4D67F0" offset="1"/>
</linearGradient>
</defs>
<rect x="3" y="3" width="34" height="34" rx="10" fill="url(#bgLight)"/>
<g transform="matrix(.9 0 0 .9 5.61 5.57)" fill="#fff">
<path d="m16 11.6c-6.18 0.196-6.18 9.16 1e-4 9.35 6.18-0.196 6.18-9.16-1e-4 -9.35zm0 7.35c-3.53-0.0925-3.53-5.26 8e-5 -5.35 3.53 0.0927 3.53 5.26-8e-5 5.35z"/>
<path d="m26.3 14.3c-0.826-0.0278-2.28 0.242-2.58-0.794-0.401-1.15-1.07-2.22-1.94-3.1-1.52-1.6-2.86-0.943-0.592-2.97 2.19 1.56 5.51-0.192 5.42-2.91-0.121-4.6-6.87-4.61-6.99 1.9e-4 0 0.484 0.0999 0.946 0.279 1.37-0.714 0.671-1.48 1.49-2.06 2.34-0.523-0.121-1.06-0.194-1.6-0.21-0.706-0.0181-1.39 0.083-2.07 0.249-0.48-0.726-1.18-1.51-2.09-2.37 1.01-2.22-0.756-4.93-3.21-4.87-4.61 0.124-4.61 6.86 1.5e-4 6.99 0.712 0 1.37-0.216 1.93-0.584 0.603 0.574 1.09 1.1 1.45 1.58-1.73 0.947-3.14 2.51-3.89 4.5-0.335 1.05-1.84 0.739-2.67 0.779-2.26-0.064-3.6 2.7-2.11 4.37 0.505 0.594 1.24 0.935 2.02 0.935h0.941c0.701 0 1.27 0.57 1.27 1.27v7.18c-0.0641 1.89 2.46 2.91 3.72 1.49-3e-5 1e-4 0.446-0.465 0.446-0.465 0.324-0.346 0.905-0.324 1.2 0.0401 0-1e-5 0.758 0.908 0.758 0.908 1.01 1.27 3.08 1.34 4.18 0.144 0.535-0.493 1.41-1.88 2.23-1.07 1.19 1.58 3.91 0.617 3.84-1.36 4e-5 1e-4 4e-5 -6.86 4e-5 -6.86 0-0.7 0.57-1.27 1.27-1.27h0.941c3.53-0.113 3.5-5.24-0.0884-5.31zm-3.18-11.3c1.96 0.0352 1.96 2.95-6e-5 2.99-1.96-0.035-1.96-2.95 6e-5 -2.99zm-15.7 1.49c0.0351-1.96 2.95-1.96 2.99 6e-5 -0.035 1.96-2.95 1.96-2.99-6e-5zm19.5 12.9c-0.23 0.36-1.09 0.198-1.44 0.231-1.8-1e-5 -3.27 1.47-3.27 3.27v6.86c0.0066 0.108-0.174 0.25-0.284 0.0986-1.02-1.31-3.17-1.24-4.27-0.04 0-4e-5 -0.951 0.991-0.951 0.991-0.331 0.337-0.904 0.327-1.2-0.0401 0 1e-5 -0.758-0.908-0.758-0.908-1.01-1.27-3.08-1.34-4.18-0.144 0-4e-5 -0.446 0.465-0.446 0.465-0.02 0.0225-0.0733 0.0782-0.175 0.0381-0.0992-0.04-0.0992-0.115-0.0992-0.148v-7.18c0-1.8-1.47-3.27-3.27-3.27h-0.941c-0.863-0.0193-0.881-1.31 0.0884-1.31-4e-5 -2e-5 1.51-2e-5 1.51-2e-5 1.35 0 2.58-0.836 3.04-2.08 1.95-5.56 9.71-5.51 11.6-0.0575 0.444 1.28 1.68 2.14 3.06 2.14h1.41c0.627-0.0273 0.956 0.7 0.587 1.08z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

@@ -1,48 +0,0 @@
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.agent.workbench.plugin
import com.intellij.openapi.actionSystem.ActionGroup
import com.intellij.openapi.actionSystem.ActionManager
import com.intellij.testFramework.TestActionEvent
import com.intellij.testFramework.junit5.TestApplication
import org.junit.jupiter.api.Assertions.assertNotNull
import org.junit.jupiter.api.Assertions.assertTrue
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.Timeout
import java.util.concurrent.TimeUnit
@TestApplication
@Timeout(value = 2, unit = TimeUnit.MINUTES)
class AgentWorkbenchAddToAgentContextActionRegistrationTest {
@Test
fun registersAddToAgentContextActionInSupportedPopupGroups() {
val actionManager = ActionManager.getInstance()
assertNotNull(actionManager.getAction(ADD_TO_AGENT_CONTEXT_ACTION_ID))
assertActionGroupContains(actionManager, "EditorPopupMenu")
assertActionGroupContains(actionManager, "ProjectViewPopupMenu")
assertActionGroupContains(actionManager, "EditorTabPopupMenu")
assertActionGroupContains(actionManager, "ConsoleEditorPopupMenu")
assertActionGroupContains(actionManager, "TestTreePopupMenu")
assertActionGroupContains(actionManager, "ChangesViewPopupMenu")
assertActionGroupContains(actionManager, "Vcs.Log.ContextMenu")
assertActionGroupContains(actionManager, "Vcs.Log.ChangesBrowser.Popup")
}
private fun assertActionGroupContains(actionManager: ActionManager, groupId: String) {
val group = actionManager.getAction(groupId)
assertTrue(group is ActionGroup, "Action group '$groupId' is not registered")
val childIds = (group as ActionGroup)
.getChildren(TestActionEvent.createTestEvent())
.mapNotNull { action -> actionManager.getId(action) }
assertTrue(
ADD_TO_AGENT_CONTEXT_ACTION_ID in childIds,
"Action group '$groupId' does not contain '$ADD_TO_AGENT_CONTEXT_ACTION_ID': $childIds",
)
}
private companion object {
private const val ADD_TO_AGENT_CONTEXT_ACTION_ID = "AgentWorkbenchPrompt.AddToAgentContext"
}
}
@@ -1,23 +0,0 @@
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.agent.workbench.plugin
import org.junit.platform.suite.api.SelectPackages
import org.junit.platform.suite.api.Suite
@Suite
@SelectPackages(
"com.intellij.platform.ai.agent.common",
"com.intellij.agent.workbench.thread.view",
"com.intellij.platform.ai.agent.claude.sessions",
"com.intellij.agent.workbench.codex.ide",
"com.intellij.platform.ai.agent.codex.sessions",
"com.intellij.platform.ai.agent.junie.sessions",
"com.intellij.agent.workbench.prompt.core",
"com.intellij.agent.workbench.prompt.ui",
"com.intellij.agent.workbench.prompt.vcs",
"com.intellij.agent.workbench.prompt.testrunner",
"com.intellij.agent.workbench.sessions",
"com.intellij.agent.workbench.sessions.launch.config.backend",
"com.intellij.agent.workbench.vcs.merge",
)
class AgentWorkbenchAllTestsSuite
@@ -1,72 +0,0 @@
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.agent.workbench.plugin
import com.intellij.platform.ai.agent.core.session.AgentSessionProvider
import com.intellij.platform.ai.agent.sessions.core.providers.AgentSessionProviderDescriptor
import com.intellij.platform.ai.agent.sessions.core.providers.AgentSessionProviders
import com.intellij.testFramework.junit5.TestApplication
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Assertions.assertNotNull
import org.junit.jupiter.api.Assertions.assertNull
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.Timeout
import java.util.concurrent.TimeUnit
/**
* Pins the bundle keys that built-in providers expose for the New Thread UI.
* Catches silent regressions where a future descriptor edit changes which key is referenced.
* Only descriptor-level constants are pinned here; resolved bundle messages are exercised by the
* sessions-actions tests that already build action presentations from the same keys.
*/
@TestApplication
@Timeout(value = 2, unit = TimeUnit.MINUTES)
class AgentWorkbenchProviderDescriptorKeysTest {
@Test
fun codexExposesGenericQuickStartKeys() {
val descriptor = descriptorFor(AgentSessionProvider.from("codex"))
assertEquals("toolwindow.action.new.session.codex", descriptor.newSessionLabelKey)
assertEquals("toolwindow.action.new.session.codex", descriptor.quickStartLabelKey)
assertEquals("action.AgentWorkbenchSessions.NewThreadQuick.text", descriptor.quickStartActionTextKey)
assertEquals("action.AgentWorkbenchSessions.NewThreadQuick.description", descriptor.quickStartActionDescriptionKey)
assertNull(descriptor.quickStartActionTargetDescriptionKey)
assertEquals("toolwindow.action.new.thread", descriptor.newSessionTitleKey)
}
@Test
fun claudeExposesGenericQuickStartKeys() {
val descriptor = descriptorFor(AgentSessionProvider.from("claude"))
assertEquals("toolwindow.action.new.session.claude", descriptor.newSessionLabelKey)
assertEquals("toolwindow.action.new.session.claude", descriptor.quickStartLabelKey)
assertEquals("action.AgentWorkbenchSessions.NewThreadQuick.text", descriptor.quickStartActionTextKey)
assertEquals("action.AgentWorkbenchSessions.NewThreadQuick.description", descriptor.quickStartActionDescriptionKey)
assertNull(descriptor.quickStartActionTargetDescriptionKey)
assertEquals("toolwindow.action.new.thread", descriptor.newSessionTitleKey)
}
@Test
fun junieExposesGenericQuickStartKeys() {
val descriptor = descriptorFor(AgentSessionProvider.from("junie"))
assertEquals("toolwindow.action.new.session.junie", descriptor.newSessionLabelKey)
assertEquals("toolwindow.action.new.session.junie", descriptor.quickStartLabelKey)
assertEquals("action.AgentWorkbenchSessions.NewThreadQuick.text", descriptor.quickStartActionTextKey)
assertEquals("action.AgentWorkbenchSessions.NewThreadQuick.description", descriptor.quickStartActionDescriptionKey)
assertNull(descriptor.quickStartActionTargetDescriptionKey)
assertEquals("toolwindow.action.new.thread", descriptor.newSessionTitleKey)
}
@Test
fun terminalExposesTerminalSpecificQuickStartKeys() {
val descriptor = descriptorFor(AgentSessionProvider.from("terminal"))
assertEquals("toolwindow.action.new.session.terminal", descriptor.newSessionLabelKey)
assertEquals("action.AgentWorkbenchSessions.NewTerminalSessionQuick.text", descriptor.quickStartActionTextKey)
assertEquals("action.AgentWorkbenchSessions.NewTerminalSessionQuick.description", descriptor.quickStartActionDescriptionKey)
assertEquals("action.AgentWorkbenchSessions.NewTerminalSessionQuick.target.description", descriptor.quickStartActionTargetDescriptionKey)
assertEquals("toolwindow.action.new.session.terminal.title", descriptor.newSessionTitleKey)
}
private fun descriptorFor(provider: AgentSessionProvider): AgentSessionProviderDescriptor {
val descriptor = AgentSessionProviders.find(provider)
assertNotNull(descriptor) { "Provider ${provider.value} not registered" }
return descriptor!!
}
}
@@ -1,43 +0,0 @@
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.agent.workbench.plugin
import com.intellij.platform.ai.agent.core.session.AgentSessionProvider
import com.intellij.platform.ai.agent.sessions.core.providers.AgentSessionProviders
import com.intellij.platform.ai.agent.sessions.core.providers.buildAgentSessionProviderMenuModel
import com.intellij.testFramework.junit5.TestApplication
import org.junit.jupiter.api.Assertions.assertFalse
import org.junit.jupiter.api.Assertions.assertTrue
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.Timeout
import java.util.concurrent.TimeUnit
@TestApplication
@Timeout(value = 2, unit = TimeUnit.MINUTES)
class AgentWorkbenchProviderRegistrationTest {
@Test
fun builtInProvidersAreRegisteredForProviderMenus() {
val providers = AgentSessionProviders.allProviders()
val registeredProviderIds = providers.map { it.provider }
assertTrue(AgentSessionProvider.from("codex") in registeredProviderIds)
assertTrue(AgentSessionProvider.from("claude") in registeredProviderIds)
assertTrue(AgentSessionProvider.from("junie") in registeredProviderIds)
assertTrue(AgentSessionProvider.from("opencode") in registeredProviderIds)
assertTrue(AgentSessionProvider.from("pi") in registeredProviderIds)
assertTrue(AgentSessionProvider.from("terminal") in registeredProviderIds)
val standardMenuProviders = buildAgentSessionProviderMenuModel(
providers,
providers.associate { it.provider to true },
).standardItems.map { it.bridge.provider }
assertTrue(AgentSessionProvider.from("junie") in standardMenuProviders)
assertTrue(AgentSessionProvider.from("opencode") in standardMenuProviders)
assertTrue(AgentSessionProvider.from("pi") in standardMenuProviders)
val yoloMenuProviders = buildAgentSessionProviderMenuModel(
providers,
providers.associate { it.provider to true },
).yoloItems.map { it.bridge.provider }
assertFalse(AgentSessionProvider.from("opencode") in yoloMenuProviders)
}
}
@@ -1,54 +0,0 @@
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.agent.workbench.plugin
import com.intellij.openapi.extensions.ExtensionPointName
import com.intellij.platform.ai.agent.sessions.core.providers.AgentSessionProviderDescriptor
import com.intellij.testFramework.junit5.TestApplication
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Assertions.assertNotNull
import org.junit.jupiter.api.Assertions.assertTrue
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.Timeout
import java.util.concurrent.TimeUnit
@TestApplication
@Timeout(value = 2, unit = TimeUnit.MINUTES)
class AgentWorkbenchProviderStructureTest {
@Test
fun sessionProviderExtensionIdsMatchDescriptorProviderIds() {
val registeredIds = LinkedHashSet<String>()
SESSION_PROVIDER_EP.filterableLazySequence().forEach { extension ->
val extensionId = extension.id
assertNotNull(extensionId) {
"sessionProvider registration ${extension.implementationClassName} must declare an XML id"
}
val descriptor = extension.instance
assertNotNull(descriptor) {
"sessionProvider registration $extensionId (${extension.implementationClassName}) did not instantiate"
}
registeredIds += extensionId!!
assertThat(extensionId)
.describedAs("sessionProvider XML id must match descriptor.provider for ${extension.implementationClassName}")
.isEqualTo(descriptor!!.provider.value)
}
for (providerId in BUILT_IN_PROVIDER_IDS) {
assertTrue(providerId in registeredIds, "Built-in session provider '$providerId' is not registered")
}
}
}
private val SESSION_PROVIDER_EP: ExtensionPointName<AgentSessionProviderDescriptor> =
ExtensionPointName("com.intellij.agent.workbench.sessionProvider")
private val BUILT_IN_PROVIDER_IDS = setOf(
"codex",
"claude",
"junie",
"opencode",
"pi",
"terminal",
)
@@ -1,59 +0,0 @@
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
kotlin("plugin.serialization")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
} else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
}
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -1,61 +0,0 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
kotlin("plugin.serialization")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
} else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
}
implementation(project(":core"))
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -1,61 +0,0 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
kotlin("plugin.serialization")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
} else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
}
implementation(project(":prompt-core"))
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -1,74 +0,0 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
kotlin("plugin.serialization")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
} else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
if (platformLocalPath == null) {
bundledPlugins("org.intellij.plugins.markdown")
}
}
if (platformLocalPath != null) {
val ideDir = rootProject.file(platformLocalPath)
compileOnly(fileTree(ideDir.resolve("plugins/markdown/lib")) { include("**/*.jar") })
}
implementation(project(":common"))
implementation(project(":core"))
implementation(project(":prompt-core"))
implementation(project(":settings"))
implementation(project(":sessions-core"))
implementation(project(":ui"))
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -1,77 +0,0 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
kotlin("plugin.serialization")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
} else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
if (platformLocalPath == null) {
bundledModules(
"intellij.platform.vcs",
"intellij.platform.vcs.impl.shared",
"intellij.platform.vcs.log",
"intellij.platform.vcs.log.impl",
"intellij.platform.vcs.log.graph",
)
}
}
if (platformLocalPath != null) {
val ideDir = rootProject.file(platformLocalPath)
compileOnly(fileTree(ideDir.resolve("lib")) {
include("intellij.platform.vcs*.jar", "intellij.platform.lvcs*.jar")
})
}
implementation(project(":prompt-core"))
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -1,68 +0,0 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
kotlin("plugin.serialization")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
} else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
}
implementation(project(":common"))
implementation(project(":core"))
implementation(project(":prompt-core"))
implementation(project(":settings"))
implementation(project(":sessions-core"))
implementation(project(":ui"))
implementation(project(":thread-view"))
implementation(project(":sessions"))
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -1,62 +0,0 @@
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
} else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
}
implementation(project(":common"))
implementation(project(":core"))
implementation(project(":sessions-core"))
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -1,65 +0,0 @@
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
kotlin("plugin.serialization")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
} else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
}
implementation(project(":sessions"))
implementation(project(":settings"))
implementation(project(":sessions-core"))
implementation(project(":ui"))
runtimeOnly(project(":sessions-actions"))
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -1,66 +0,0 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
kotlin("plugin.serialization")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
} else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
if (platformLocalPath == null) {
bundledModules("intellij.platform.backend")
}
}
implementation(project(":common"))
implementation(project(":core"))
implementation(project(":sessions-core"))
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -1,70 +0,0 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
kotlin("plugin.serialization")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
} else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
}
implementation(project(":common"))
implementation(project(":core"))
implementation(project(":prompt-core"))
implementation(project(":sessions-core"))
implementation(project(":ui"))
implementation(project(":thread-view"))
implementation(project(":sessions"))
implementation(project(":sessions-jbcentral"))
implementation(project(":sessions-actions"))
implementation(project(":settings"))
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -1,67 +0,0 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
kotlin("plugin.serialization")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
} else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
}
implementation(project(":common"))
implementation(project(":core"))
implementation(project(":prompt-core"))
implementation(project(":settings"))
implementation(project(":sessions-core"))
implementation(project(":ui"))
implementation(project(":thread-view"))
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -1,95 +0,0 @@
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
buildscript {
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
gradlePluginPortal()
}
pluginManagement {
repositories {
maven("https://oss.sonatype.org/content/repositories/snapshots/")
gradlePluginPortal()
}
plugins {
id("java")
id("org.jetbrains.kotlin.jvm") version "2.2.20"
kotlin("plugin.serialization") version "2.2.20"
id("org.jetbrains.intellij.platform") version "2.9.0"
id("org.jetbrains.intellij.platform.settings") version "2.9.0"
id("org.jetbrains.intellij.platform.module") version "2.9.0"
}
}
}
rootProject.name = "agent-workbench"
include(":common")
include(":core")
include(":json")
include(":filewatch")
include(":cli")
include(":thread-view")
include(":container")
include(":prompt-core")
include(":prompt-context")
include(":prompt-ui")
include(":prompt-vcs")
include(":prompt-testrunner")
include(":sessions")
include(":sessions-jbcentral")
include(":settings")
include(":sessions-core")
include(":sessions-cost")
include(":ui")
include(":sessions-actions")
include(":sessions-toolwindow")
include(":sessions-launch-config-backend")
include(":claude-common")
include(":claude-awb")
include(":claude-sessions")
include(":codex-common")
include(":codex-thread-view")
include(":codex-ide")
include(":codex-prompt-suggestions")
include(":codex-sessions")
include(":junie-common")
include(":junie-sessions")
include(":opencode-sessions")
include(":pi-awb")
include(":pi-sessions")
include(":pi-sessions-filewatch")
include(":terminal-sessions")
include(":ai-review")
include(":ai-review-agents")
include(":ai-review-space")
include(":vcs-merge")
project(":prompt-core").projectDir = file("prompt/core")
project(":prompt-context").projectDir = file("prompt/context")
project(":prompt-ui").projectDir = file("prompt/ui")
project(":prompt-vcs").projectDir = file("prompt/vcs")
project(":prompt-testrunner").projectDir = file("prompt/testrunner")
project(":common").projectDir = file("lib-agent/common")
project(":core").projectDir = file("lib-agent/core")
project(":json").projectDir = file("lib-agent/json")
project(":filewatch").projectDir = file("lib-agent/filewatch")
project(":cli").projectDir = file("lib-agent/cli")
project(":sessions-core").projectDir = file("lib-agent/sessions-core")
project(":sessions-launch-config-backend").projectDir = file("sessions-launch-config/backend")
project(":claude-common").projectDir = file("lib-agent/providers/claude/common")
project(":claude-awb").projectDir = file("claude/awb")
project(":claude-sessions").projectDir = file("lib-agent/providers/claude/sessions")
project(":codex-common").projectDir = file("lib-agent/providers/codex/common")
project(":codex-thread-view").projectDir = file("codex/thread-view")
project(":codex-ide").projectDir = file("codex/ide")
project(":codex-prompt-suggestions").projectDir = file("codex/prompt-suggestions")
project(":codex-sessions").projectDir = file("lib-agent/providers/codex/sessions")
project(":junie-common").projectDir = file("lib-agent/providers/junie/common")
project(":junie-sessions").projectDir = file("lib-agent/providers/junie/sessions")
project(":opencode-sessions").projectDir = file("lib-agent/providers/opencode/sessions")
project(":pi-awb").projectDir = file("pi/awb")
project(":pi-sessions").projectDir = file("lib-agent/providers/pi/sessions")
project(":pi-sessions-filewatch").projectDir = file("lib-agent/providers/pi/sessions-filewatch")
project(":terminal-sessions").projectDir = file("lib-agent/providers/terminal/sessions")
@@ -1,64 +0,0 @@
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
kotlin("plugin.serialization")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
}
else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
}
implementation(project(":common"))
implementation(project(":core"))
implementation(project(":sessions-core"))
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -57,7 +57,7 @@ Date: 2026-05-09
- `./tests.cmd --module intellij.agent.workbench.prompt.ui.tests --test "com.intellij.agent.workbench.prompt.ui.actions.*"`
- `./tests.cmd --module intellij.agent.workbench.prompt.ui.tests --test "com.intellij.agent.workbench.prompt.ui.AgentPromptContext*Test"`
- `./tests.cmd --module intellij.agent.workbench.prompt.core.tests --test com.intellij.agent.workbench.prompt.core.AgentPromptContextEnvelopeFormatterTest`
- `./tests.cmd --module intellij.agent.workbench.plugin.tests --test com.intellij.agent.workbench.plugin.AgentWorkbenchAddToAgentContextActionRegistrationTest`
- `./tests.cmd --module intellij.air.plugin.tests --test com.intellij.air.plugin.AgentWorkbenchAddToAgentContextActionRegistrationTest`
- `./tests.cmd --module intellij.agent.workbench.thread.view.tests --test com.intellij.agent.workbench.thread.view.AgentThreadViewOpenTopLevelDispatchTest`
## References
@@ -8,8 +8,8 @@ targets:
- ../../engine/resources/intellij.agent.workbench.engine.xml
- ../../thread-view/src/AgentThreadViewCustomContent.kt
- ../../thread-view/src/AgentThreadViewFileEditor.kt
- ../../../../../plugins/agent-workbench/acp/src/*.kt
- ../../../../../plugins/agent-workbench/acp/resources/intellij.agent.workbench.acp.xml
- ../../../../../plugins/ij-air/acp/src/*.kt
- ../../../../../plugins/ij-air/acp/resources/intellij.air.acp.xml
---
# Engine Structured Agent Thread
@@ -103,7 +103,7 @@ history format, and not a contract that terminal-backed providers must implement
attach `requested` approval state by `toolCallId`, and later replace it with `approved`, `rejected`, or
`expired` resolution state without reordering the tool-call transcript entry.
[@test] ../../engine/testSrc/EngineEventStoreTest.kt
[@test] ../../../../../plugins/agent-workbench/acp/testSrc/AcpThreadEventMapperTest.kt
[@test] ../../../../../plugins/ij-air/acp/testSrc/AcpThreadEventMapperTest.kt
- Terminal command content inside structured threads is modeled as structured tool/command content, not as
a separate Agent Thread View terminal tab. Output received before the corresponding terminal/tool entry is
@@ -123,10 +123,10 @@ history format, and not a contract that terminal-backed providers must implement
[@test] ../../sessions/testSrc/AgentSessionLoadAggregationTest.kt
[@test] ../../engine/testSrc/EngineEventStoreTest.kt
- ACP support lives in the `plugins/agent-workbench/acp` adapter. It launches/prepares ACP sessions,
- ACP support lives in the `plugins/ij-air/acp` adapter. It launches/prepares ACP sessions,
receives `SessionUpdate`s and ACP client callbacks, and records canonical Engine events. It must not
directly construct Swing rows or AUI events for Agent Workbench structured thread UI.
[@test] ../../../../../plugins/agent-workbench/acp/testSrc/AcpThreadEventMapperTest.kt
[@test] ../../../../../plugins/ij-air/acp/testSrc/AcpThreadEventMapperTest.kt
- `Acp2ToAUIConverter` and related AUI converters may be used as references for protocol edge cases
(streaming chunks, tool-call merging, permissions, diffs, MCP output, terminal metadata), but they must
@@ -311,10 +311,10 @@ and `RuntimeSessionBound` carries the *server-issued* `agentSessionId` once a se
- ACP continuation-decision tests verify that a stored `agentSessionId` with `loadSession` support resumes via
`loadSession`, that missing `loadSession` support refuses (no fallback to `resumeSession` or `newSession`), and that
no stored session id creates a fresh session (brand-new thread view, or legacy restored thread view continued by the user).
[@test] ../../../../../plugins/agent-workbench/acp/testSrc/AcpContinuationTest.kt
[@test] ../../../../../plugins/ij-air/acp/testSrc/AcpContinuationTest.kt
- ACP recovery tests verify `shouldRecoverDisconnectedAcpThread`: a `Disconnected` ACP thread (by thread or binding
`runtimeKind`) is a recovery target, while connected or non-ACP threads are not.
[@test] ../../../../../plugins/agent-workbench/acp/testSrc/AcpSessionManagerTest.kt
[@test] ../../../../../plugins/ij-air/acp/testSrc/AcpSessionManagerTest.kt
- Integration follow-ups (require a project + ACP catalog fixture, not yet implemented): the connector rehydrates
ownership from persisted binding data so `handles(threadId)` flips true and input re-enables (incl. catalog
warm-up), `sendPrompt(...)` records `ThreadDisconnected` instead of an undeliverable user message, and a
@@ -383,7 +383,7 @@ and `RuntimeSessionBound` carries the *server-issued* `agentSessionId` once a se
## Testing / Local Run
- `./tests.cmd --module intellij.agent.workbench.engine.tests --test com.intellij.agent.workbench.engine.platform.EngineEventStoreTest`
- `./tests.cmd --module intellij.agent.workbench.acp.tests --test com.intellij.agent.workbench.acp.AcpThreadEventMapperTest`
- `./tests.cmd --module intellij.air.acp.tests --test com.intellij.air.acp.AcpThreadEventMapperTest`
- `./tests.cmd --module intellij.agent.workbench.thread.view.tests --test com.intellij.agent.workbench.thread.view.AgentThreadViewFileEditorLifecycleTest`
- `./tests.cmd --module intellij.agent.workbench.sessions.tests --test com.intellij.agent.workbench.sessions.AgentSessionLaunchServiceTest`
@@ -4,8 +4,8 @@ description: Implementation plan for the minimal readable Engine/ACP thread view
targets:
- ../../engine/src/ui/AgentAcpThreadScreen.kt
- ../../engine/resources/messages/EngineBundle.properties
- ../../../../../plugins/agent-workbench/acp/src/AcpThreadEventMapper.kt
- ../../../../../plugins/agent-workbench/acp/testSrc/AcpThreadEventMapperTest.kt
- ../../../../../plugins/ij-air/acp/src/AcpThreadEventMapper.kt
- ../../../../../plugins/ij-air/acp/testSrc/AcpThreadEventMapperTest.kt
---
# Engine Thread View Rendering Plan
@@ -235,7 +235,7 @@ Add localized keys to `EngineBundle.properties` for any new visible text, for ex
Run after implementation:
```bash
./tests.cmd --module intellij.agent.workbench.acp.tests --test com.intellij.agent.workbench.acp.AcpThreadEventMapperTest
./tests.cmd --module intellij.air.acp.tests --test com.intellij.air.acp.AcpThreadEventMapperTest
```
Run Engine tests if reducer/projection code changes; this plan should avoid that:
@@ -17,9 +17,9 @@ targets:
- ../../thread-view/src/AgentThreadViewFileEditorState.kt
- ../../engine/src/ui/EngineSessionProviderDescriptor.kt
- ../../engine/src/platform/EngineLaunchAgents.kt
- ../../../../../plugins/agent-workbench/acp/src/AcpEngineLaunchAgentProvider.kt
- ../../../../../plugins/agent-workbench/acp/src/AcpOutOfBandLaunch.kt
- ../../../../../plugins/agent-workbench/acp/testSrc/**/*.kt
- ../../../../../plugins/ij-air/acp/src/AcpEngineLaunchAgentProvider.kt
- ../../../../../plugins/ij-air/acp/src/AcpOutOfBandLaunch.kt
- ../../../../../plugins/ij-air/acp/testSrc/**/*.kt
---
# ACP Agent Launch Profile Migration
@@ -93,7 +93,7 @@ switch later.
- Built-in launch-profile generation must include launchable ACP registry/local catalog entries next to the
provider-derived terminal built-ins. ACP entries that are not installed or cannot resolve their binary must
be omitted from the built-in profile list.
[@test] ../../../../../plugins/agent-workbench/acp/testSrc/AcpLaunchableAgentsTest.kt
[@test] ../../../../../plugins/ij-air/acp/testSrc/AcpLaunchableAgentsTest.kt
- Built-in profile generation must be centralized. Palette UI, Manage Profiles, New Thread menu actions,
scratch prompt actions, and `AgentSessionLaunchProfileResolverImpl` must all use the same effective built-in
profile source; adding ACP target profiles in only one UI path is not acceptable.
@@ -207,7 +207,7 @@ would preserve the original modeling error.
- Add launch-context coverage to session launch tests:
`./tests.cmd --module intellij.agent.workbench.sessions.tests --test com.intellij.agent.workbench.sessions.AgentSessionLaunchServiceTest`
- Keep ACP availability coverage in:
`./tests.cmd --module intellij.agent.workbench.acp.tests --test com.intellij.agent.workbench.acp.AcpLaunchableAgentsTest`
`./tests.cmd --module intellij.air.acp.tests --test com.intellij.air.acp.AcpLaunchableAgentsTest`
- Add an integration-style test or manual run configuration that verifies the New Task picker shows terminal
profiles and installed ACP registry profiles side by side.
@@ -18,10 +18,10 @@ targets:
- ../../thread-view/src/AgentThreadViewVirtualFile.kt
- ../../thread-view/src/AgentThreadViewTabsStateService.kt
- ../../engine/src/ui/EngineSessionProviderDescriptor.kt
- ../../../../../plugins/agent-workbench/acp/src/AcpOutOfBandLaunch.kt
- ../../../../../plugins/agent-workbench/acp/src/AcpLaunchProfileContributor.kt
- ../../../../../plugins/agent-workbench/acp/src/AcpLauncherService.kt
- ../../../../../plugins/agent-workbench/acp/src/AcpSessionManager.kt
- ../../../../../plugins/ij-air/acp/src/AcpOutOfBandLaunch.kt
- ../../../../../plugins/ij-air/acp/src/AcpLaunchProfileContributor.kt
- ../../../../../plugins/ij-air/acp/src/AcpLauncherService.kt
- ../../../../../plugins/ij-air/acp/src/AcpSessionManager.kt
---
# Agent Launch Surface Switching
@@ -7,9 +7,9 @@ targets:
- ../../sessions/src/service/AgentSessionLaunchService.kt
- ../../engine/src/ui/EngineSessionProviderDescriptor.kt
- ../../engine/src/platform/EngineLaunchAgents.kt
- ../../../../../plugins/agent-workbench/acp/src/AcpOutOfBandLaunch.kt
- ../../../../../plugins/agent-workbench/acp/src/AcpEngineLaunchAgentProvider.kt
- ../../../../../plugins/agent-workbench/acp/resources/intellij.agent.workbench.acp.xml
- ../../../../../plugins/ij-air/acp/src/AcpOutOfBandLaunch.kt
- ../../../../../plugins/ij-air/acp/src/AcpEngineLaunchAgentProvider.kt
- ../../../../../plugins/ij-air/acp/resources/intellij.air.acp.xml
---
# Engine ACP Out-of-Band Launch Profiles
@@ -70,7 +70,7 @@ a launch through its own runtime, with ACP being the first consumer.
- `AcpOutOfBandLaunch.handles` matches only the `acp` provider; `launch` resolves the catalog
entry whose display name equals the selected `modelId`, prepares the ACP session for the thread id, and
sends the prompt only when it is non-blank. An unresolved `modelId` is a no-op.
[@test] ../../../../../plugins/agent-workbench/acp/testSrc/AcpThreadEventMapperTest.kt
[@test] ../../../../../plugins/ij-air/acp/testSrc/AcpThreadEventMapperTest.kt
## User Experience
- ACP agents appear in the New-Task launch-profile generation-model picker under the Engine provider,
@@ -93,13 +93,13 @@ a launch through its own runtime, with ACP being the first consumer.
- `acp` module absent (e.g. a product build without AI Assistant): neither EP has extensions, so the
Engine provider lists no generation models and registers no out-of-band launcher; the shared pipeline
falls back to its default (terminal) behavior.
- `intellij.ml.llm.*` absent: Workbench ACP behavior must still work when `intellij.agent.workbench.acp`
and `intellij.agent.workbench.acp.runtime` are loaded. The LLM/AIA plugin must not be required for ACP
- `intellij.ml.llm.*` absent: Workbench ACP behavior must still work when `intellij.air.acp`
and `intellij.air.acp.runtime` are loaded. The LLM/AIA plugin must not be required for ACP
actions, catalog population, launch-profile visibility, or process launch.
## Testing / Local Run
- `./tests.cmd --module intellij.agent.workbench.engine.tests --test com.intellij.agent.workbench.engine.platform.EngineEventStoreTest`
- `./tests.cmd --module intellij.agent.workbench.acp.tests --test com.intellij.agent.workbench.acp.AcpThreadEventMapperTest`
- `./tests.cmd --module intellij.air.acp.tests --test com.intellij.air.acp.AcpThreadEventMapperTest`
- End-to-end launch verification uses the AIA-less `IDEA (agent workbench)` run configuration. ACP catalog
population and launch must come from AWB modules, not from `intellij.ml.llm.agents.acp`.
@@ -40,8 +40,8 @@ AI Review creates independent review sessions shown as Problems toolwindow tabs.
- `./tests.cmd --module intellij.agent.workbench.ai.review.tests --test com.intellij.agent.workbench.ai.review.prompt.AIReviewPaletteExtensionTest`
- `./tests.cmd --module intellij.agent.workbench.ai.review.tests --test com.intellij.agent.workbench.ai.review.model.AIReviewViewModelTest`
- `./bazel.cmd build @community//plugins/agent-workbench/ai-review:agent-workbench-ai-review`
- `./bazel.cmd build //plugins/agent-workbench/ai-review-agents:agent-workbench-ai-review-agents`
- `./bazel.cmd build //plugins/agent-workbench/ai-review-space:agent-workbench-ai-review-space`
- `./bazel.cmd build //plugins/ij-air/ai-review-agents:agent-workbench-ai-review-agents`
- `./bazel.cmd build //plugins/ij-air/ai-review-space:agent-workbench-ai-review-space`
## References
- `../actions/global-prompt-entry.spec.md`
@@ -123,7 +123,7 @@ Agent Workbench treats Pi as a first-class terminal-backed provider. Pi sessions
## Testing / Local Run
- `./tests.cmd --module intellij.platform.ai.agent.pi.sessions.tests --test 'com.intellij.platform.ai.agent.pi.sessions.*Test'`
- `./tests.cmd --module intellij.platform.ai.agent.pi.sessions.filewatch.tests --test 'com.intellij.platform.ai.agent.pi.sessions.*Test'`
- `./tests.cmd --module intellij.agent.workbench.plugin.tests --test com.intellij.agent.workbench.plugin.AgentWorkbenchProviderRegistrationTest`
- `./tests.cmd --module intellij.air.plugin.tests --test com.intellij.air.plugin.AgentWorkbenchProviderRegistrationTest`
## References
- `agent-sessions.spec.md`
@@ -212,8 +212,6 @@ jvm_library(
"//libraries/assertj-core:assertj-core_test_lib",
"//plugins/terminal",
"//plugins/terminal:terminal_test_lib",
"//plugins/agent-workbench/plugin",
"//plugins/agent-workbench/plugin:plugin_test_lib",
],
)
### auto-generated section `build intellij.agent.workbench.thread.view.tests` end
@@ -1,74 +0,0 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
kotlin("plugin.serialization")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
} else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
if (platformLocalPath == null) {
bundledPlugins("org.jetbrains.plugins.terminal")
}
}
if (platformLocalPath != null) {
val ideDir = rootProject.file(platformLocalPath)
compileOnly(fileTree(ideDir.resolve("plugins/terminal/lib")) { include("**/*.jar") })
}
implementation(project(":common"))
implementation(project(":core"))
implementation(project(":prompt-core"))
implementation(project(":settings"))
implementation(project(":sessions-core"))
implementation(project(":ui"))
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -59,7 +59,6 @@
<orderEntry type="module" module-name="intellij.libraries.assertj.core" scope="TEST" />
<orderEntry type="module" module-name="intellij.terminal" scope="TEST" />
<orderEntry type="module" module-name="intellij.agent.workbench.thread.view" scope="TEST" />
<orderEntry type="module" module-name="intellij.agent.workbench.plugin" scope="TEST" />
</component>
<component name="TestModuleProperties" production-module="intellij.agent.workbench.thread.view" />
</module>
@@ -1,63 +0,0 @@
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
kotlin("plugin.serialization")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
} else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
}
jetbrainsRuntime()
}
implementation(project(":common"))
implementation(project(":core"))
implementation(project(":sessions-core"))
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
@@ -1,80 +0,0 @@
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("java")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform.module")
kotlin("plugin.serialization")
}
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
intellijPlatform {
defaultRepositories()
snapshots()
nightly()
}
}
intellijPlatform {
instrumentCode = false
}
sourceSets {
main {
java { setSrcDirs(listOf("src")) }
resources { setSrcDirs(listOf("resources")) }
}
}
val platformLocalPath = rootProject.extra["platformLocalPath"] as? String
val platformVersion = rootProject.extra["platformVersion"] as String
dependencies {
intellijPlatform {
if (platformLocalPath != null) {
local(platformLocalPath)
} else {
intellijIdeaUltimate(platformVersion) { useInstaller = false }
bundledModules(
"intellij.platform.vcs",
"intellij.platform.vcs.impl.shared",
"intellij.platform.vcs.impl",
"intellij.platform.diff",
"intellij.platform.diff.impl",
)
}
jetbrainsRuntime()
}
if (platformLocalPath != null) {
val ideDir = rootProject.file(platformLocalPath)
compileOnly(fileTree(ideDir.resolve("lib")) {
include("intellij.platform.vcs*.jar", "intellij.platform.diff*.jar")
})
}
implementation(project(":common"))
implementation(project(":core"))
implementation(project(":thread-view"))
implementation(project(":prompt-core"))
implementation(project(":sessions"))
implementation(project(":sessions-core"))
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.addAll("-Xjvm-default=all")
apiVersion.set(KotlinVersion.KOTLIN_2_3)
languageVersion.set(KotlinVersion.KOTLIN_2_3)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}