Files
kilocode/packages/kilo-vscode/package.json
T
kirillk 91040bcff4 fix(agent-manager): report worktree problems accurately and recover from them
Agent Manager could tell a user "Git is not installed or not found in PATH"
while git was installed and working, show a worktree as having no changes when
the status check had actually failed, and keep polling worktrees whose folder
was long gone. One unresponsive worktree was enough to slow down status updates
for every other row.

Three causes, all of them the same mistake in different places: a failure was
reported as a fact about something else.

- A failed process launch reports ENOENT whether the program or the working
  directory is missing, and the code read that as "git is missing".
- A failed or timed-out status check returned zero counts, which is
  indistinguishable from a clean worktree.
- A timed-out GitHub CLI call was recorded as a success, which reset the
  backoff that was supposed to stop retrying it.

Nothing reconciled the three views of a worktree either (the row, git's own
registration, the folder on disk), so stale rows accumulated and were polled
forever, and a timed-out `gh pr view` was retried on every cycle.

Approach: name each state and never guess between them. A worktree is healthy,
restorable, gone, not-a-worktree, or unmeasurable, and each state gets the
message and the recovery action that actually applies. Startup reconciles the
three views and repairs metadata only; deleting files is always a user's
click. Repeated failures park one worktree instead of the whole panel, and
git/gh calls get budgets sized to the work they do.

Both clients implement the same states, wording, and recovery actions.
2026-09-14 13:42:40 -04:00

1389 lines
46 KiB
JSON

{
"name": "kilo-code",
"displayName": "Kilo Code: AI Coding Agent, Copilot, and Autocomplete",
"description": "Open Source AI coding agent that generates code from natural language, automates tasks, and runs terminal commands. Features inline autocomplete, browser automation, automated refactoring, and custom modes for planning, coding, and debugging. Supports 500+ AI models including Claude (Anthropic), Gemini, Grok, GPT, Codex and GLM.",
"version": "7.6.2",
"icon": "assets/icons/logo-outline-black.png",
"galleryBanner": {
"color": "#FFFFFF",
"theme": "light"
},
"publisher": "kilocode",
"repository": {
"type": "git",
"url": "https://github.com/Kilo-Org/kilocode.git",
"directory": "packages/kilo-vscode"
},
"engines": {
"vscode": "^1.105.1"
},
"license": "MIT",
"author": {
"name": "Kilo Code"
},
"categories": [
"AI",
"Chat",
"Programming Languages",
"Education",
"Snippets",
"Testing"
],
"keywords": [
"kilo",
"Kilo Code",
"kilocode",
"ai",
"agent",
"agentic",
"coding",
"coding agent",
"coding assistant",
"autocomplete",
"code completion",
"pair programming",
"chat",
"terminal",
"chatgpt",
"claude",
"sonnet",
"anthropic",
"openai",
"zoo code",
"opencode",
"open code"
],
"activationEvents": [
"onStartupFinished",
"onUri"
],
"main": "./dist/extension.js",
"contributes": {
"configurationDefaults": {
"files.watcherExclude": {
"**/.kilo/worktrees/**": true,
"**/.kilocode/worktrees/**": true
}
},
"taskDefinitions": [
{
"type": "kilo-worktree-setup",
"properties": {
"script": {
"type": "string",
"description": "The setup script command to execute"
}
}
}
],
"icons": {
"kilo-logo": {
"description": "Kilo Code logo",
"default": {
"fontPath": "assets/icons/kilo-icon-font.woff2",
"fontCharacter": "\\F101"
}
}
},
"viewsContainers": {
"activitybar": [
{
"id": "kilo-code-ActivityBar",
"title": "Kilo Code",
"icon": "assets/icons/kilo-light.png",
"darkIcon": "assets/icons/kilo-dark.png"
}
]
},
"views": {
"kilo-code-ActivityBar": [
{
"type": "webview",
"id": "kilo-code.SidebarProvider",
"name": "Kilo Code"
}
]
},
"commands": [
{
"command": "kilo-code.new.plusButtonClicked",
"title": "New Task",
"category": "Kilo Code",
"icon": "$(add)"
},
{
"command": "kilo-code.new.agentManagerOpen",
"title": "Agent Manager",
"category": "Kilo Code",
"icon": "$(organization)"
},
{
"command": "kilo-code.new.kiloClawOpen",
"title": "KiloClaw",
"category": "Kilo Code",
"icon": "$(comment-discussion)"
},
{
"command": "kilo-code.new.marketplaceButtonClicked",
"title": "Marketplace",
"category": "Kilo Code",
"icon": "$(extensions)"
},
{
"command": "kilo-code.new.historyButtonClicked",
"title": "History",
"category": "Kilo Code",
"icon": "$(history)"
},
{
"command": "kilo-code.new.profileButtonClicked",
"title": "Profile",
"category": "Kilo Code",
"icon": "$(account)"
},
{
"command": "kilo-code.new.settingsButtonClicked",
"title": "Settings",
"category": "Kilo Code",
"icon": "$(settings-gear)"
},
{
"command": "kilo-code.new.sidebarTitle.plusButtonClicked",
"title": "New Task",
"icon": "$(add)"
},
{
"command": "kilo-code.new.sidebarTitle.agentManagerOpen",
"title": "Agent Manager",
"icon": "$(organization)"
},
{
"command": "kilo-code.new.sidebarTitle.kiloClawOpen",
"title": "KiloClaw",
"icon": "$(comment-discussion)"
},
{
"command": "kilo-code.new.sidebarTitle.marketplaceButtonClicked",
"title": "Marketplace",
"icon": "$(extensions)"
},
{
"command": "kilo-code.new.sidebarTitle.historyButtonClicked",
"title": "History",
"icon": "$(history)"
},
{
"command": "kilo-code.new.sidebarTitle.profileButtonClicked",
"title": "Profile",
"icon": "$(account)"
},
{
"command": "kilo-code.new.sidebarTitle.settingsButtonClicked",
"title": "Settings",
"icon": "$(settings-gear)"
},
{
"command": "kilo-code.new.openInTab",
"title": "Open in Tab",
"category": "Kilo Code",
"icon": {
"light": "assets/icons/kilo-light.svg",
"dark": "assets/icons/kilo-dark.svg"
}
},
{
"command": "kilo-code.new.showChanges",
"title": "Show Changes",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.showMemory",
"title": "Show Project Memory",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.toggleMemory",
"title": "Toggle Project Memory",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.toggleCaffeination",
"title": "Toggle Keep Awake",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.autocomplete.generateSuggestions",
"title": "Generate Suggested Edits",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.autocomplete.cancelSuggestions",
"title": "Cancel Suggested Edits",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.autocomplete.nextEdit.acceptOrJump",
"title": "Next Edit: Accept or Jump to Suggested Edit",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.autocomplete.nextEdit.dismiss",
"title": "Next Edit: Dismiss Pending Suggestion",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.agentManager.previousSession",
"title": "Agent Manager: Previous Session",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.agentManager.nextSession",
"title": "Agent Manager: Next Session",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.agentManager.previousTab",
"title": "Agent Manager: Previous Tab",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.agentManager.nextTab",
"title": "Agent Manager: Next Tab",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.agentManager.previousTerminal",
"title": "Agent Manager: Previous Terminal",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.agentManager.nextTerminal",
"title": "Agent Manager: Next Terminal",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.agentManager.diagnostics",
"title": "Agent Manager: Show Worktree Diagnostics",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.agentManager.search",
"title": "Agent Manager: Search Worktrees and Sessions",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.agentManager.showTerminal",
"title": "Agent Manager: Focus Terminal",
"category": "Kilo Code",
"icon": "$(terminal)"
},
{
"command": "kilo-code.new.agentManager.runScript",
"title": "Agent Manager: Run Script",
"category": "Kilo Code",
"icon": "$(play)"
},
{
"command": "kilo-code.new.agentManager.toggleDiff",
"title": "Agent Manager: Toggle Diff Panel",
"category": "Kilo Code",
"icon": "$(diff)"
},
{
"command": "kilo-code.new.agentManager.showShortcuts",
"title": "Agent Manager: Show Keyboard Shortcuts",
"category": "Kilo Code",
"icon": "$(keyboard)"
},
{
"command": "kilo-code.new.agentManager.newTab",
"title": "Agent Manager: New Tab",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.agentManager.newTerminalTab",
"title": "Agent Manager: New Terminal Tab",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.agentManager.newSideTerminal",
"title": "Agent Manager: New Sidebar Terminal Tab",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.agentManager.closeTab",
"title": "Agent Manager: Close Tab",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.agentManager.newWorktree",
"title": "Agent Manager: Configure New Worktree",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.agentManager.quickWorktree",
"title": "Agent Manager: New Worktree",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.agentManager.openWorktree",
"title": "Agent Manager: Open Worktree",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.agentManager.updateFromBase",
"title": "Agent Manager: Update from base",
"category": "Kilo Code",
"enablement": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel'"
},
{
"command": "kilo-code.new.agentManager.openPR",
"title": "Agent Manager: Open Pull Request",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.agentManager.closeWorktree",
"title": "Agent Manager: Close Worktree",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.agentManager.advancedWorktree",
"title": "Agent Manager: Configure New Worktree",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.agentManager.jumpTo1",
"title": "Agent Manager: Jump to Item 1",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.agentManager.jumpTo2",
"title": "Agent Manager: Jump to Item 2",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.agentManager.jumpTo3",
"title": "Agent Manager: Jump to Item 3",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.agentManager.jumpTo4",
"title": "Agent Manager: Jump to Item 4",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.agentManager.jumpTo5",
"title": "Agent Manager: Jump to Item 5",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.agentManager.jumpTo6",
"title": "Agent Manager: Jump to Item 6",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.agentManager.jumpTo7",
"title": "Agent Manager: Jump to Item 7",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.agentManager.jumpTo8",
"title": "Agent Manager: Jump to Item 8",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.agentManager.jumpTo9",
"title": "Agent Manager: Jump to Item 9",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.generateCommitMessage",
"title": "Generate Commit Message",
"category": "Kilo Code",
"icon": {
"light": "assets/icons/kilo-light.svg",
"dark": "assets/icons/kilo-dark.svg"
}
},
{
"command": "kilo-code.new.explainCode",
"title": "Explain Code",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.fixCode",
"title": "Fix Code",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.improveCode",
"title": "Improve Code",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.addToContext",
"title": "Add to Context",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.terminalAddToContext",
"title": "Add Terminal Content to Context",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.terminalFixCommand",
"title": "Fix This Command",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.terminalExplainCommand",
"title": "Explain This Command",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.focusChatInput",
"title": "Focus Chat Input",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.toggleChatSearch",
"title": "Toggle Chat Search",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.cycleAgentMode",
"title": "Cycle Agent Mode",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.cyclePreviousAgentMode",
"title": "Cycle Previous Agent Mode",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.toggleAutoApprove",
"title": "Toggle Auto-Approve",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.generateTerminalCommand",
"title": "Generate Terminal Command",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.takeHeapSnapshot",
"title": "Take Heap Snapshot",
"category": "Kilo Code"
},
{
"command": "kilo-code.new.reload",
"title": "Reload Config and Skills",
"category": "Kilo Code"
}
],
"submenus": [
{
"id": "kilo-code.new.editorContextMenu",
"label": "Kilo Code"
},
{
"id": "kilo-code.new.terminalContextMenu",
"label": "Kilo Code"
}
],
"menus": {
"commandPalette": [
{
"command": "kilo-code.new.sidebarTitle.plusButtonClicked",
"when": "false"
},
{
"command": "kilo-code.new.sidebarTitle.historyButtonClicked",
"when": "false"
},
{
"command": "kilo-code.new.sidebarTitle.agentManagerOpen",
"when": "false"
},
{
"command": "kilo-code.new.sidebarTitle.kiloClawOpen",
"when": "false"
},
{
"command": "kilo-code.new.agentManager.advancedWorktree",
"when": "false"
},
{
"command": "kilo-code.new.sidebarTitle.marketplaceButtonClicked",
"when": "false"
},
{
"command": "kilo-code.new.sidebarTitle.profileButtonClicked",
"when": "false"
},
{
"command": "kilo-code.new.sidebarTitle.settingsButtonClicked",
"when": "false"
}
],
"view/title": [
{
"command": "kilo-code.new.sidebarTitle.plusButtonClicked",
"group": "navigation@0",
"when": "view == kilo-code.SidebarProvider && !kilo-code.new.isCursor"
},
{
"command": "kilo-code.new.sidebarTitle.historyButtonClicked",
"group": "navigation@1",
"when": "view == kilo-code.SidebarProvider && !kilo-code.new.isCursor"
},
{
"command": "kilo-code.new.sidebarTitle.agentManagerOpen",
"group": "navigation@2",
"when": "view == kilo-code.SidebarProvider && !kilo-code.new.isCursor"
},
{
"command": "kilo-code.new.sidebarTitle.kiloClawOpen",
"group": "navigation@3",
"when": "view == kilo-code.SidebarProvider && !kilo-code.new.isCursor"
},
{
"command": "kilo-code.new.sidebarTitle.marketplaceButtonClicked",
"group": "navigation@4",
"when": "view == kilo-code.SidebarProvider && !kilo-code.new.isCursor"
},
{
"command": "kilo-code.new.sidebarTitle.profileButtonClicked",
"group": "navigation@5",
"when": "view == kilo-code.SidebarProvider && !kilo-code.new.isCursor"
},
{
"command": "kilo-code.new.sidebarTitle.settingsButtonClicked",
"group": "navigation@6",
"when": "view == kilo-code.SidebarProvider && !kilo-code.new.isCursor"
}
],
"scm/title": [
{
"command": "kilo-code.new.generateCommitMessage",
"group": "navigation",
"when": "scmProvider == git"
}
],
"scm/input": [
{
"command": "kilo-code.new.generateCommitMessage",
"group": "navigation",
"when": "scmProvider == git"
}
],
"editor/title": [
{
"command": "kilo-code.new.openInTab",
"group": "navigation",
"when": "true"
},
{
"command": "kilo-code.new.plusButtonClicked",
"group": "navigation@0",
"when": "activeWebviewPanelId == kilo-code.new.TabPanel && !kilo-code.new.isCursor"
},
{
"command": "kilo-code.new.historyButtonClicked",
"group": "navigation@1",
"when": "activeWebviewPanelId == kilo-code.new.TabPanel && !kilo-code.new.isCursor"
},
{
"command": "kilo-code.new.profileButtonClicked",
"group": "navigation@2",
"when": "activeWebviewPanelId == kilo-code.new.TabPanel && !kilo-code.new.isCursor"
},
{
"command": "kilo-code.new.settingsButtonClicked",
"group": "navigation@3",
"when": "activeWebviewPanelId == kilo-code.new.TabPanel && !kilo-code.new.isCursor"
}
],
"editor/context": [
{
"submenu": "kilo-code.new.editorContextMenu",
"group": "1_kilocode"
}
],
"kilo-code.new.editorContextMenu": [
{
"command": "kilo-code.new.explainCode",
"group": "1_actions@1"
},
{
"command": "kilo-code.new.fixCode",
"group": "1_actions@2"
},
{
"command": "kilo-code.new.improveCode",
"group": "1_actions@3"
},
{
"command": "kilo-code.new.addToContext",
"group": "1_actions@4"
}
],
"terminal/context": [
{
"submenu": "kilo-code.new.terminalContextMenu",
"group": "2_kilocode"
}
],
"kilo-code.new.terminalContextMenu": [
{
"command": "kilo-code.new.terminalAddToContext",
"group": "1_actions@1"
},
{
"command": "kilo-code.new.terminalFixCommand",
"group": "1_actions@2"
},
{
"command": "kilo-code.new.terminalExplainCommand",
"group": "1_actions@3"
}
]
},
"keybindings": [
{
"command": "kilo-code.new.focusChatInput",
"key": "ctrl+shift+a",
"mac": "cmd+shift+a"
},
{
"command": "kilo-code.new.toggleAutoApprove",
"key": "ctrl+alt+a",
"mac": "cmd+alt+a"
},
{
"command": "kilo-code.new.generateTerminalCommand",
"key": "ctrl+shift+g",
"mac": "cmd+shift+g"
},
{
"command": "-workbench.actions.view.problems",
"key": "ctrl+shift+m",
"mac": "cmd+shift+m"
},
{
"command": "kilo-code.new.agentManagerOpen",
"key": "ctrl+shift+m",
"mac": "cmd+shift+m"
},
{
"command": "kilo-code.new.addToContext",
"key": "ctrl+k ctrl+a",
"mac": "cmd+k cmd+a",
"when": "editorTextFocus && editorHasSelection"
},
{
"command": "kilo-code.new.agentManager.previousSession",
"key": "ctrl+alt+up",
"mac": "cmd+alt+up",
"when": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel'"
},
{
"command": "kilo-code.new.agentManager.nextSession",
"key": "ctrl+alt+down",
"mac": "cmd+alt+down",
"when": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel'"
},
{
"command": "kilo-code.new.agentManager.previousTab",
"key": "ctrl+alt+left",
"mac": "cmd+alt+left",
"when": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel'"
},
{
"command": "kilo-code.new.agentManager.nextTab",
"key": "ctrl+alt+right",
"mac": "cmd+alt+right",
"when": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel'"
},
{
"command": "kilo-code.new.agentManager.previousTerminal",
"key": "ctrl+shift+[",
"mac": "cmd+shift+[",
"when": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel'"
},
{
"command": "kilo-code.new.agentManager.nextTerminal",
"key": "ctrl+shift+]",
"mac": "cmd+shift+]",
"when": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel'"
},
{
"command": "kilo-code.new.agentManager.search",
"key": "ctrl+f",
"mac": "cmd+f",
"when": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel' && !terminalFocus"
},
{
"command": "kilo-code.new.agentManager.showTerminal",
"key": "ctrl+/",
"mac": "cmd+/",
"when": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel' && !kilo-code.new.sidebarFocused"
},
{
"command": "kilo-code.new.agentManager.runScript",
"key": "ctrl+e",
"mac": "cmd+e",
"when": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel' && (isMac || !terminalFocus)"
},
{
"command": "kilo-code.new.agentManager.toggleDiff",
"key": "ctrl+d",
"mac": "cmd+d",
"when": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel'"
},
{
"command": "kilo-code.new.agentManager.showShortcuts",
"key": "ctrl+shift+/",
"mac": "cmd+shift+/",
"when": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel'"
},
{
"command": "kilo-code.new.agentManager.newTab",
"key": "ctrl+t",
"mac": "cmd+t",
"when": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel' && !kilo-code.new.agentManagerSideTerminalFocused"
},
{
"command": "kilo-code.new.agentManager.newTerminalTab",
"key": "ctrl+shift+t",
"mac": "cmd+shift+t",
"when": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel' && !kilo-code.new.agentManagerSideTerminalFocused"
},
{
"command": "kilo-code.new.agentManager.newSideTerminal",
"key": "ctrl+t",
"mac": "cmd+t",
"when": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel' && kilo-code.new.agentManagerSideTerminalFocused"
},
{
"command": "kilo-code.new.agentManager.closeTab",
"key": "ctrl+w",
"mac": "cmd+w",
"when": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel'"
},
{
"command": "kilo-code.new.agentManager.newWorktree",
"key": "ctrl+n",
"mac": "cmd+n",
"when": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel'"
},
{
"command": "kilo-code.new.agentManager.quickWorktree",
"key": "ctrl+shift+n",
"mac": "cmd+shift+n",
"when": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel'"
},
{
"command": "kilo-code.new.agentManager.openWorktree",
"key": "ctrl+shift+o",
"mac": "cmd+shift+o",
"when": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel'"
},
{
"command": "kilo-code.new.agentManager.openPR",
"key": "ctrl+shift+r",
"mac": "cmd+shift+r",
"when": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel'"
},
{
"command": "kilo-code.new.agentManager.closeWorktree",
"key": "ctrl+shift+w",
"mac": "cmd+shift+w",
"when": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel'"
},
{
"command": "kilo-code.new.agentManager.jumpTo1",
"key": "ctrl+1",
"mac": "cmd+1",
"when": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel'"
},
{
"command": "kilo-code.new.agentManager.jumpTo2",
"key": "ctrl+2",
"mac": "cmd+2",
"when": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel'"
},
{
"command": "kilo-code.new.agentManager.jumpTo3",
"key": "ctrl+3",
"mac": "cmd+3",
"when": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel'"
},
{
"command": "kilo-code.new.agentManager.jumpTo4",
"key": "ctrl+4",
"mac": "cmd+4",
"when": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel'"
},
{
"command": "kilo-code.new.agentManager.jumpTo5",
"key": "ctrl+5",
"mac": "cmd+5",
"when": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel'"
},
{
"command": "kilo-code.new.agentManager.jumpTo6",
"key": "ctrl+6",
"mac": "cmd+6",
"when": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel'"
},
{
"command": "kilo-code.new.agentManager.jumpTo7",
"key": "ctrl+7",
"mac": "cmd+7",
"when": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel'"
},
{
"command": "kilo-code.new.agentManager.jumpTo8",
"key": "ctrl+8",
"mac": "cmd+8",
"when": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel'"
},
{
"command": "kilo-code.new.agentManager.jumpTo9",
"key": "ctrl+9",
"mac": "cmd+9",
"when": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel'"
},
{
"command": "kilo-code.new.cycleAgentMode",
"key": "ctrl+.",
"mac": "cmd+.",
"when": "kilo-code.new.sidebarFocused || activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel' || activeWebviewPanelId == 'kilo-code.new.TabPanel'"
},
{
"command": "kilo-code.new.cyclePreviousAgentMode",
"key": "ctrl+shift+.",
"mac": "cmd+shift+.",
"when": "kilo-code.new.sidebarFocused || activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel' || activeWebviewPanelId == 'kilo-code.new.TabPanel'"
},
{
"command": "kilo-code.new.autocomplete.cancelSuggestions",
"key": "escape",
"when": "editorTextFocus && !editorTabMovesFocus && !inSnippetMode && kilo-code.new.autocomplete.hasSuggestions"
},
{
"command": "kilo-code.new.autocomplete.generateSuggestions",
"key": "ctrl+l",
"mac": "cmd+l",
"when": "editorTextFocus && !editorTabMovesFocus && !inSnippetMode && kilocode.autocomplete.enableSmartInlineTaskKeybinding && !github.copilot.completions.enabled"
},
{
"command": "kilo-code.new.autocomplete.showIncompatibilityExtensionPopup",
"key": "ctrl+l",
"mac": "cmd+l",
"when": "editorTextFocus && !editorTabMovesFocus && !inSnippetMode && kilocode.autocomplete.enableSmartInlineTaskKeybinding && github.copilot.completions.enabled"
},
{
"command": "kilo-code.new.autocomplete.nextEdit.acceptOrJump",
"key": "tab",
"when": "editorTextFocus && !editorTabMovesFocus && !inSnippetMode && !suggestWidgetVisible && kilo-code.nextEdit.hasPendingSuggestion"
},
{
"command": "kilo-code.new.autocomplete.nextEdit.dismiss",
"key": "escape",
"when": "editorTextFocus && !editorTabMovesFocus && !inSnippetMode && kilo-code.nextEdit.hasPendingSuggestion"
}
],
"configuration": {
"title": "Kilo Code",
"properties": {
"kilo-code.new.language": {
"type": "string",
"default": "",
"description": "Override the UI language for Kilo Code (e.g. en, de, ja). Empty means use VS Code's display language.",
"enum": [
"",
"en",
"zh",
"zht",
"ko",
"de",
"es",
"fr",
"da",
"ja",
"pl",
"ru",
"ar",
"no",
"br",
"th",
"bs",
"tr",
"nl",
"uk",
"it",
"fa"
],
"enumDescriptions": [
"Auto (VS Code language)",
"English",
"简体中文",
"繁體中文",
"한국어",
"Deutsch",
"Español",
"Français",
"Dansk",
"日本語",
"Polski",
"Русский",
"العربية",
"Norsk",
"Português (Brasil)",
"ภาษาไทย",
"Bosanski",
"Türkçe",
"Nederlands",
"Українська",
"Italiano",
"فارسی"
]
},
"kilo-code.new.languageCommitMessage": {
"type": "string",
"default": "sync",
"description": "Language used for AI-generated commit messages. Choose 'sync' to follow the Kilo Code UI language, or select a specific language.",
"enum": [
"sync",
"en",
"zh",
"zht",
"ko",
"de",
"es",
"fr",
"da",
"ja",
"pl",
"ru",
"ar",
"no",
"br",
"th",
"bs",
"tr",
"nl",
"uk",
"it",
"fa"
],
"enumDescriptions": [
"跟随界面语言 (Sync with UI language)",
"English",
"简体中文",
"繁體中文",
"한국어",
"Deutsch",
"Español",
"Français",
"Dansk",
"日本語",
"Polski",
"Русский",
"العربية",
"Norsk",
"Português (Brasil)",
"ภาษาไทย",
"Bosanski",
"Türkçe",
"Nederlands",
"Українська",
"Italiano",
"فارسی"
]
},
"kilo-code.new.model.providerID": {
"type": "string",
"default": "kilo",
"description": "Default model provider ID for new sessions"
},
"kilo-code.new.model.modelID": {
"type": "string",
"default": "kilo-auto/free",
"description": "Default model ID for new sessions"
},
"kilo-code.new.autocomplete.model": {
"type": "string",
"enum": [
"mistralai/codestral-2508",
"inception/mercury-edit-2",
"inception/mercury-next-edit",
"codestral-2508",
"mercury-edit-2",
"mercury-next-edit"
],
"enumDescriptions": [
"Codestral via Kilo Gateway",
"Mercury Edit 2 (FIM) via Kilo Gateway",
"Mercury Edit 2 (Next Edit), multi-line edit predictions with jump-to-edit UX, via Kilo Gateway",
"Codestral via your connected Mistral provider API key",
"Mercury Edit 2 (FIM) via your connected Inception provider API key",
"Mercury Edit 2 (Next Edit), multi-line edit predictions with jump-to-edit UX, via your connected Inception provider API key"
],
"description": "Model to use for inline autocomplete suggestions. If unset, the recommended default is used."
},
"kilo-code.new.autocomplete.provider": {
"type": "string",
"enum": [
"kilo",
"mistral",
"inception"
],
"enumDescriptions": [
"Use autocomplete models through Kilo Gateway",
"Use autocomplete models through your connected Mistral provider API key",
"Use autocomplete models through your connected Inception provider API key"
],
"description": "Provider to use for inline autocomplete suggestions. If unset, Kilo Gateway is used."
},
"kilo-code.new.autocomplete.enableAutoTrigger": {
"type": "boolean",
"default": true,
"description": "Enable automatic inline completion suggestions"
},
"kilo-code.new.autocomplete.enableSmartInlineTaskKeybinding": {
"type": "boolean",
"default": false,
"description": "Enable smart inline task keybinding"
},
"kilo-code.new.autocomplete.enableChatAutocomplete": {
"type": "boolean",
"default": false,
"description": "Enable chat textarea autocomplete"
},
"kilo-code.new.agentManager.autoBranchNaming": {
"type": "boolean",
"default": true,
"scope": "application",
"description": "Automatically name new Agent Manager branches when the conversation describes a clear task. Explicitly named and published branches are never renamed."
},
"kilo-code.new.agentManager.branchPrefix": {
"type": "string",
"default": "",
"scope": "application",
"description": "Prefix for automatically named Agent Manager branches, for example 'marius/' or 'feature/'. Explicit branch names are unchanged."
},
"kilo-code.new.agentManager.worktreePool": {
"type": "boolean",
"default": true,
"scope": "application",
"description": "Pre-warm a ready worktree in the background so new Agent Manager sessions start faster. Uses extra disk space equal to one checkout per open project. Turn off to create worktrees only on demand."
},
"kilo-code.new.experimental.multiProject": {
"type": "boolean",
"default": false,
"scope": "application",
"description": "Allow Agent Manager to manage sessions and worktrees across multiple repositories as projects. The current workspace repository is always the default project; additional projects can be added and persist across restarts."
},
"kilo-code.new.experimental.browserAutomation": {
"type": "boolean",
"default": false,
"scope": "application",
"description": "Enable the experimental Agent Manager browser panel and browser_open tool."
},
"kilo-code.new.experimental.claudeMigration": {
"type": "boolean",
"default": false,
"scope": "application",
"description": "Experimental one-time import of supported global Claude Code instructions, simple skills, and disabled MCP definitions into Kilo. The original Claude files are never changed."
},
"kilo-code.new.agentManager.terminalButtonDestination": {
"type": "string",
"scope": "application",
"default": "agentManager",
"enum": [
"vscode",
"agentManager"
],
"enumDescriptions": [
"Open or focus the VS Code integrated terminal.",
"Open or focus an embedded terminal in the Agent Manager side panel."
],
"description": "Default destination for the Agent Manager terminal button and Focus Terminal keyboard shortcut. The terminal button's dropdown remembers its own choice per Agent Manager panel; this setting only applies to panels that never picked one."
},
"kilo-code.new.indexing.showButtonWhenDisabled": {
"type": "boolean",
"default": true,
"scope": "application",
"description": "Show the codebase indexing button below the prompt while indexing is disabled."
},
"kilo-code.new.claudeCodeCompat": {
"type": "boolean",
"default": false,
"description": "Load CLAUDE.md instructions and skills from your Claude Code configuration directory into Kilo sessions. Enable this if you want Kilo to use your Claude Code instructions and skills."
},
"kilo-code.new.extraCaCerts": {
"type": "string",
"default": "",
"description": "Absolute path to a PEM file containing extra CA certificates to trust when the Kilo backend makes HTTPS requests (sets NODE_EXTRA_CA_CERTS on the CLI process). Use this if you're behind a corporate proxy that performs SSL inspection. Leave empty to rely on the OS trust store."
},
"kilo-code.new.autoApprove.enabled": {
"type": "boolean",
"default": false,
"description": "Start Kilo Code with the main auto-approve toggle enabled. When enabled, permission prompts are approved automatically."
},
"kilo-code.new.maxCost": {
"type": "number",
"default": 0,
"minimum": 0,
"description": "Show a non-blocking alert when a session exceeds this USD amount. Use whole dollars; set to 0 to disable."
},
"kilo-code.new.fontSize": {
"type": "number",
"default": 13,
"minimum": 10,
"maximum": 24,
"description": "Font size in pixels for the Kilo Code webview UI."
},
"kilo-code.new.browserAutomation.useSystemChrome": {
"type": "boolean",
"default": true,
"description": "Use system-installed Google Chrome. Disable only when a compatible Playwright Chromium browser is already installed."
},
"kilo-code.new.attention.enabled": {
"type": "boolean",
"default": false,
"description": "Play sounds when sessions complete, error, or need input"
},
"kilo-code.new.attention.notifications": {
"type": "boolean",
"default": false,
"description": "Show VS Code notifications when Kilo completes a task or needs input. Notifications are suppressed while a Kilo panel is active."
},
"kilo-code.new.attention.OSNotifications": {
"type": "boolean",
"default": false,
"description": "Show native OS notification alerts when Kilo completes a task or needs input while VS Code is not active."
},
"kilo-code.new.attention.sound": {
"type": "string",
"default": "default",
"enum": [
"default",
"system",
"alert-01",
"alert-02",
"alert-03",
"alert-04",
"alert-05",
"alert-06",
"alert-07",
"alert-08",
"alert-09",
"alert-10",
"bip-bop-01",
"bip-bop-02",
"bip-bop-03",
"bip-bop-04",
"bip-bop-05",
"bip-bop-06",
"bip-bop-07",
"bip-bop-08",
"bip-bop-09",
"bip-bop-10",
"staplebops-01",
"staplebops-02",
"staplebops-03",
"staplebops-04",
"staplebops-05",
"staplebops-06",
"staplebops-07",
"nope-01",
"nope-02",
"nope-03",
"nope-04",
"nope-05",
"nope-06",
"nope-07",
"nope-08",
"nope-09",
"nope-10",
"nope-11",
"nope-12",
"yup-01",
"yup-02",
"yup-03",
"yup-04",
"yup-05",
"yup-06"
],
"description": "Use different sounds for completion, input, and errors, or choose one sound for every event"
},
"kilo-code.new.showTaskTimeline": {
"type": "boolean",
"default": true,
"description": "Show the task timeline graph in the chat header"
},
"kilo-code.new.showTokenThroughput": {
"type": "boolean",
"default": true,
"description": "Show tokens-per-second (prompt-processing / text-generation) badges on assistant messages and the task header"
},
"kilo-code.new.showAutoApprovalReason": {
"type": "boolean",
"default": true,
"description": "Show a line on tool calls explaining why they were auto-approved (matched rule, agent default, YOLO mode, etc.)"
},
"kilo-code.new.chat.shiftTabCyclesVariant": {
"type": "boolean",
"default": true,
"description": "Cycle through reasoning effort variants with Shift+Tab in prompt inputs. Disable to keep Shift+Tab for keyboard focus navigation."
},
"kilo-code.new.agentManager.pushFixes": {
"type": "boolean",
"default": true,
"description": "Agent Manager: when you send pull request CI failures or review comments to the agent, or update a worktree from its base, ask the agent to commit and push so the pull request updates. Permission prompts still apply. Disable to keep commits manual."
},
"kilo-code.new.agentWorkStyle": {
"type": "string",
"scope": "application",
"default": "unset",
"enum": [
"unset",
"human-in-the-loop",
"autonomous",
"skipped"
],
"enumDescriptions": [
"Show work style onboarding so you can choose again",
"Human in the Loop: review agent actions as they happen",
"High autonomy: let Kilo take most actions with fewer interruptions",
"Onboarding was skipped without changing work style settings"
],
"description": "Preferred agent work style. Set to Unset to show the onboarding flow again."
},
"kilo-code.new.diff.renderMarkdown": {
"type": "boolean",
"default": false,
"description": "Render Markdown files in Kilo diff viewers by default. Toggle this from a Markdown file header in the diff viewer."
}
}
}
},
"scripts": {
"prepare:cli-binary": "bun script/local-bin.ts",
"prepare:sdk": "bun script/prepare-sdk.ts",
"build:launch": "bun run prepare:cli-binary && bun run prepare:sdk && bun run build:check:production",
"compile": "bun run prepare:cli-binary && bun run prepare:sdk && bun run build:check",
"watch": "bun run prepare:sdk && bun run --parallel watch:esbuild watch:tsc",
"watch:esbuild": "bun run prepare:cli-binary && node esbuild.js --watch",
"watch:tsc": "tsc --noEmit --watch --project tsconfig.json",
"watch:cli": "bun script/watch-cli.ts",
"package": "bun run prepare:cli-binary && bun run prepare:sdk && bun run build:check:production",
"build:check": "bun run --parallel check-types check-types:webview lint bundle",
"build:check:production": "bun run --parallel check-types check-types:webview lint bundle:production",
"bundle": "bun esbuild.js",
"bundle:production": "bun esbuild.js --production",
"compile-tests": "tsc -p . --outDir out",
"watch-tests": "tsc -p . -w --outDir out",
"pretest": "bun run compile-tests && bun run compile && bun run lint",
"check-types": "tsgo --noEmit",
"check-types:webview": "tsgo --noEmit --project webview-ui/tsconfig.json",
"typecheck": "bun run --parallel check-types check-types:webview",
"format": "prettier --write .",
"format:check": "prettier --check .",
"knip": "knip",
"check-kilocode-change": "! grep -rIn 'kilocode_change' . ../kilo-ui/ --exclude='package.json' --exclude='*.md' --exclude-dir='node_modules' --exclude-dir='dist' | grep -v '`kilocode_change`'",
"lint": "eslint --cache --cache-strategy content --cache-location node_modules/.cache/eslint src webview-ui",
"test": "vscode-test",
"test:unit": "bun test tests/unit/ --dots",
"rebuild-sdk": "bun run --cwd ../sdk/js build",
"storybook": "storybook dev -p 6007",
"build-storybook": "storybook build -o storybook-static",
"test:a11y": "playwright test tests/accessibility.spec.ts",
"test:visual": "playwright test",
"test:visual:update": "playwright test --update-snapshots",
"snapshot:build": "bun script/dev-snapshot.ts build",
"snapshot:install": "bun script/dev-snapshot.ts install",
"extension": "bun script/launch.ts",
"extension:isolated": "bun script/launch.ts --isolated",
"extension:isolated:clean": "bun script/launch.ts --isolated --clean"
},
"devDependencies": {
"@axe-core/playwright": "4.11.3",
"@babel/core": "^7.28.4",
"@babel/preset-typescript": "^7.27.1",
"@playwright/test": "1.57.0",
"@storybook/addon-a11y": "10.2.10",
"@storybook/addon-docs": "10.2.10",
"@types/diff": "^6.0.0",
"@types/mocha": "^10.0.10",
"@types/node": "22.x",
"@types/qrcode": "^1.5.6",
"@types/vscode": "^1.105.1",
"@types/ws": "8.18.1",
"@vscode/test-cli": "^0.0.12",
"@vscode/test-electron": "^2.5.2",
"@vscode/vsce": "^3.7.1",
"babel-preset-solid": "^1.9.9",
"esbuild": "^0.27.2",
"esbuild-plugin-solid": "^0.6.0",
"eslint": "^9.39.2",
"eslint-config-prettier": "^10.1.8",
"happy-dom": "20.8.9",
"knip": "5.85.0",
"prettier": "3.6.2",
"qrcode": "^1.5.4",
"storybook": "10.2.10",
"storybook-solidjs-vite": "10.0.9",
"ts-morph": "27.0.2",
"typescript": "^5.9.3",
"typescript-eslint": "^8.54.0",
"vite": "7.3.5",
"vite-plugin-solid": "2.11.10"
},
"dependencies": {
"@anthropic-ai/sdk": "^0.39.0",
"@kilocode/kilo-gateway": "workspace:*",
"@kilocode/kilo-i18n": "workspace:*",
"@kilocode/kilo-indexing": "workspace:*",
"@kilocode/kilo-memory": "workspace:*",
"@kilocode/kilo-ui": "workspace:*",
"@kilocode/plugin": "workspace:*",
"@kilocode/sdk": "workspace:*",
"@opencode-ai/core": "workspace:*",
"@opencode-ai/ui": "workspace:*",
"@pierre/diffs": "catalog:",
"@thisbeyond/solid-dnd": "0.7.5",
"@vscode/codicons": "^0.0.44",
"@xterm/addon-clipboard": "0.2.0",
"@xterm/addon-fit": "0.11.0",
"@xterm/addon-unicode-graphemes": "0.4.0",
"@xterm/addon-web-links": "0.12.0",
"@xterm/xterm": "6.0.0",
"chromium-bidi": "0.8.0",
"diff": "8.0.4",
"fastest-levenshtein": "^1.0.16",
"friendly-words": "1.3.1",
"fuzzysort": "3.1.0",
"ignore": "^7.0.3",
"js-tiktoken": "^1.0.18",
"lru-cache": "^11.0.2",
"marked": "catalog:",
"openai": "^4.85.4",
"playwright-core": "1.57.0",
"quick-lru": "^7.0.0",
"simple-git": "3.36.0",
"solid-js": "^1.9.11",
"uri-js": "^4.4.1",
"virtua": "catalog:",
"web-tree-sitter": "^0.24.7",
"ws": "8.21.0",
"yaml": "2.8.3",
"zod": "^3.24.2"
},
"peerDependencies": {}
}