mirror of
https://github.com/Kilo-Org/kilocode.git
synced 2026-08-28 19:11:03 +08:00
fix(vscode): launch fully isolated dev instance
This commit is contained in:
Vendored
+6
-28
@@ -26,39 +26,17 @@
|
||||
},
|
||||
{
|
||||
"name": "VSCode - Run Extension (Isolated)",
|
||||
"type": "extensionHost",
|
||||
"type": "node-terminal",
|
||||
"request": "launch",
|
||||
"args": [
|
||||
"--profile=Kilo Dev Isolated",
|
||||
"--extensionDevelopmentPath=${workspaceFolder}/packages/kilo-vscode",
|
||||
"${workspaceFolder}"
|
||||
],
|
||||
"outFiles": ["${workspaceFolder}/packages/kilo-vscode/dist/**/*.js"],
|
||||
"preLaunchTask": "VSCode - Compile",
|
||||
"env": {
|
||||
"XDG_DATA_HOME": "${workspaceFolder}/.kilo-dev/data",
|
||||
"XDG_CONFIG_HOME": "${workspaceFolder}/.kilo-dev/config",
|
||||
"XDG_STATE_HOME": "${workspaceFolder}/.kilo-dev/state",
|
||||
"XDG_CACHE_HOME": "${workspaceFolder}/.kilo-dev/cache"
|
||||
}
|
||||
"command": "bun script/launch.ts --state-dir \"${workspaceFolder}/.kilo-dev/vscode\" --kilo-storage-dir \"${workspaceFolder}/.kilo-dev\" --workspace \"${workspaceFolder}\"",
|
||||
"cwd": "${workspaceFolder}/packages/kilo-vscode"
|
||||
},
|
||||
{
|
||||
"name": "VSCode - Run Extension (Isolated Clean)",
|
||||
"type": "extensionHost",
|
||||
"type": "node-terminal",
|
||||
"request": "launch",
|
||||
"args": [
|
||||
"--profile-temp",
|
||||
"--extensionDevelopmentPath=${workspaceFolder}/packages/kilo-vscode",
|
||||
"${workspaceFolder}"
|
||||
],
|
||||
"outFiles": ["${workspaceFolder}/packages/kilo-vscode/dist/**/*.js"],
|
||||
"preLaunchTask": "VSCode - Compile (Clean Isolated)",
|
||||
"env": {
|
||||
"XDG_DATA_HOME": "${workspaceFolder}/.kilo-dev/data",
|
||||
"XDG_CONFIG_HOME": "${workspaceFolder}/.kilo-dev/config",
|
||||
"XDG_STATE_HOME": "${workspaceFolder}/.kilo-dev/state",
|
||||
"XDG_CACHE_HOME": "${workspaceFolder}/.kilo-dev/cache"
|
||||
}
|
||||
"command": "bun script/launch.ts --clean --state-dir \"${workspaceFolder}/.kilo-dev/vscode\" --kilo-storage-dir \"${workspaceFolder}/.kilo-dev\" --workspace \"${workspaceFolder}\"",
|
||||
"cwd": "${workspaceFolder}/packages/kilo-vscode"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Vendored
+2
-2
@@ -95,7 +95,7 @@
|
||||
"problemMatcher": ["$tsc", "$eslint-stylish"]
|
||||
},
|
||||
{
|
||||
"label": "VSCode - Clear Isolated Kilo State",
|
||||
"label": "VSCode - Clear Isolated State",
|
||||
"type": "process",
|
||||
"command": "bun",
|
||||
"args": [
|
||||
@@ -113,7 +113,7 @@
|
||||
},
|
||||
{
|
||||
"label": "VSCode - Compile (Clean Isolated)",
|
||||
"dependsOn": ["VSCode - Clear Isolated Kilo State", "VSCode - Compile"],
|
||||
"dependsOn": ["VSCode - Clear Isolated State", "VSCode - Compile"],
|
||||
"dependsOrder": "sequence",
|
||||
"problemMatcher": []
|
||||
},
|
||||
|
||||
@@ -10,9 +10,11 @@
|
||||
* --workspace PATH Folder to open in VS Code (default: repo root)
|
||||
* --mode dev|vsix "dev" uses --extensionDevelopmentPath, "vsix" packages a VSIX (default: dev)
|
||||
* --app-path PATH Explicit path to the VS Code executable (auto-detected if omitted)
|
||||
* --state-dir PATH Directory for isolated VS Code user-data/extensions (default: OS temp per repo)
|
||||
* --kilo-storage-dir PATH Directory for isolated Kilo XDG storage
|
||||
* --insiders Prefer VS Code Insiders over stable
|
||||
* --wait Block until the VS Code window is closed
|
||||
* --clean Wipe the user-data and extensions dirs before launching
|
||||
* --clean Wipe isolated VS Code dirs and Kilo storage before launching
|
||||
* --preserve-settings Merge defaults into existing VS Code user settings
|
||||
* --accessible Enable VS Code accessibility support for assistive-technology testing
|
||||
*
|
||||
@@ -35,12 +37,6 @@ const win = process.platform === "win32"
|
||||
const root = join(import.meta.dir, "..")
|
||||
const repo = resolve(root, "..", "..")
|
||||
|
||||
// Stable per-repo directory under OS temp — no accumulation
|
||||
const hash = createHash("sha256").update(repo).digest("hex").slice(0, 12)
|
||||
const base = join(tmpdir(), `kilo-vscode-dev-${hash}`)
|
||||
const userDir = join(base, "user-data")
|
||||
const extDir = join(base, "extensions")
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Argument parsing
|
||||
// ---------------------------------------------------------------------------
|
||||
@@ -79,6 +75,14 @@ function parse(argv: string[]) {
|
||||
}
|
||||
|
||||
const opts = parse(process.argv.slice(2))
|
||||
|
||||
// Stable per-repo directory under OS temp — no accumulation
|
||||
const hash = createHash("sha256").update(repo).digest("hex").slice(0, 12)
|
||||
const base = opts["state-dir"] ? resolve(opts["state-dir"] as string) : join(tmpdir(), `kilo-vscode-dev-${hash}`)
|
||||
const userDir = join(base, "user-data")
|
||||
const extDir = join(base, "extensions")
|
||||
const kilo = opts["kilo-storage-dir"] ? resolve(opts["kilo-storage-dir"] as string) : undefined
|
||||
|
||||
const shouldBuild = opts["build"] !== false
|
||||
const mode = (opts["mode"] as string) ?? "dev"
|
||||
const workspace = opts["workspace"] ? resolve(opts["workspace"] as string) : repo
|
||||
@@ -305,6 +309,7 @@ async function launch() {
|
||||
if (clean) {
|
||||
console.log("[launch] Cleaning previous state...")
|
||||
rmSync(base, { recursive: true, force: true })
|
||||
if (kilo) rmSync(kilo, { recursive: true, force: true })
|
||||
}
|
||||
|
||||
mkdirSync(userDir, { recursive: true })
|
||||
@@ -336,6 +341,12 @@ async function launch() {
|
||||
// Strip Electron/VS Code env vars so the spawned instance doesn't attach
|
||||
// to the current Electron process (e.g. when launched from a VS Code task).
|
||||
const env = cleanEnv(process.env)
|
||||
if (kilo) {
|
||||
env.XDG_DATA_HOME = join(kilo, "data")
|
||||
env.XDG_CONFIG_HOME = join(kilo, "config")
|
||||
env.XDG_STATE_HOME = join(kilo, "state")
|
||||
env.XDG_CACHE_HOME = join(kilo, "cache")
|
||||
}
|
||||
for (const key of Object.keys(env)) {
|
||||
if (key.startsWith("ELECTRON_") || key.startsWith("VSCODE_")) delete env[key]
|
||||
}
|
||||
@@ -344,6 +355,7 @@ async function launch() {
|
||||
console.log(`[launch] Executable: ${app}`)
|
||||
console.log(`[launch] Workspace: ${workspace}`)
|
||||
console.log(`[launch] State: ${base}`)
|
||||
if (kilo) console.log(`[launch] Kilo state: ${kilo}`)
|
||||
console.log(`[launch] Accessibility support: ${accessible ? "on" : "off"}`)
|
||||
|
||||
if (blocking) {
|
||||
|
||||
Reference in New Issue
Block a user