fix(jetbrains): use shell env for CLI PATH

This commit is contained in:
kirillk
2026-07-07 13:45:43 -04:00
parent e70b4fa9b9
commit 1f9e6a493d
3 changed files with 17 additions and 2 deletions
+5
View File
@@ -0,0 +1,5 @@
---
"@kilocode/kilo-jetbrains": patch
---
Fix the JetBrains plugin finding shell-installed tools like bun and gh when launched from Finder or Dock.
@@ -5,6 +5,7 @@ import ai.kilocode.backend.dev.KiloDevMode
import ai.kilocode.log.KiloLog
import com.intellij.openapi.application.ApplicationInfo
import com.intellij.openapi.application.PathManager
import com.intellij.util.EnvironmentUtil
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import kotlinx.coroutines.withTimeout
@@ -91,7 +92,7 @@ class KiloBackendCliManager(
}
// Must be called from a background thread — devStorageEnv() performs blocking I/O (mkdirs).
internal fun buildEnv(pwd: String, base: Map<String, String> = System.getenv()): Map<String, String> =
internal fun buildEnv(pwd: String, base: Map<String, String> = EnvironmentUtil.getEnvironmentMap()): Map<String, String> =
buildKiloCliEnv(pwd, base, log)
private suspend fun spawn(cli: File): CliServer.State =
@@ -238,7 +239,7 @@ private const val DEFAULT_CONFIG = """{"permission":{"edit":"ask","bash":"ask"}}
// Must be called from a background thread — devStorageEnv() performs blocking I/O (mkdirs).
internal fun buildKiloCliEnv(
pwd: String,
base: Map<String, String> = System.getenv(),
base: Map<String, String> = EnvironmentUtil.getEnvironmentMap(),
log: KiloLog = KiloLog.create(KiloBackendCliManager::class.java),
): Map<String, String> = buildMap {
putAll(base)
@@ -79,6 +79,15 @@ class KiloBackendCliManagerEnvTest {
assertEquals(cfg, env["KILO_CONFIG_CONTENT"])
}
@Test
fun `isolation disabled - base PATH is preserved`() {
val path = "/opt/homebrew/bin:/usr/bin"
val env = manager.buildEnv("pwd123", mapOf("PATH" to path))
assertEquals(path, env["PATH"])
}
@Test
fun `isolation disabled - no XDG storage overrides are injected`() {
val env = manager.buildEnv("pwd123", emptyMap())