mirror of
https://github.com/Kilo-Org/kilocode.git
synced 2026-10-24 01:24:18 +08:00
Merge branch 'dev' into feat/vscode-question-support
This commit is contained in:
@@ -23,7 +23,7 @@
|
||||
},
|
||||
"packages/app": {
|
||||
"name": "@opencode-ai/app",
|
||||
"version": "1.0.14",
|
||||
"version": "1.0.17",
|
||||
"dependencies": {
|
||||
"@kilocode/kilo-i18n": "workspace:*",
|
||||
"@kilocode/kilo-ui": "workspace:*",
|
||||
@@ -75,7 +75,7 @@
|
||||
},
|
||||
"packages/desktop": {
|
||||
"name": "@opencode-ai/desktop",
|
||||
"version": "1.0.14",
|
||||
"version": "1.0.17",
|
||||
"dependencies": {
|
||||
"@opencode-ai/app": "workspace:*",
|
||||
"@opencode-ai/ui": "workspace:*",
|
||||
@@ -108,7 +108,7 @@
|
||||
},
|
||||
"packages/kilo-gateway": {
|
||||
"name": "@kilocode/kilo-gateway",
|
||||
"version": "1.0.14",
|
||||
"version": "1.0.17",
|
||||
"dependencies": {
|
||||
"@clack/prompts": "1.0.0-alpha.1",
|
||||
"@kilocode/plugin": "workspace:*",
|
||||
@@ -140,7 +140,7 @@
|
||||
},
|
||||
"packages/kilo-i18n": {
|
||||
"name": "@kilocode/kilo-i18n",
|
||||
"version": "1.0.13",
|
||||
"version": "1.0.17",
|
||||
"devDependencies": {
|
||||
"@tsconfig/node22": "catalog:",
|
||||
"@types/bun": "catalog:",
|
||||
@@ -150,7 +150,7 @@
|
||||
},
|
||||
"packages/kilo-telemetry": {
|
||||
"name": "@kilocode/kilo-telemetry",
|
||||
"version": "1.0.14",
|
||||
"version": "1.0.17",
|
||||
"dependencies": {
|
||||
"@kilocode/kilo-gateway": "workspace:*",
|
||||
"@opentelemetry/api": "1.9.0",
|
||||
@@ -170,7 +170,7 @@
|
||||
},
|
||||
"packages/kilo-ui": {
|
||||
"name": "@kilocode/kilo-ui",
|
||||
"version": "1.0.14",
|
||||
"version": "1.0.17",
|
||||
"devDependencies": {
|
||||
"@tsconfig/node22": "catalog:",
|
||||
"@types/bun": "catalog:",
|
||||
@@ -183,7 +183,7 @@
|
||||
},
|
||||
"packages/kilo-vscode": {
|
||||
"name": "kilo-code",
|
||||
"version": "0.0.1",
|
||||
"version": "1.0.17",
|
||||
"dependencies": {
|
||||
"@kilocode/kilo-i18n": "workspace:*",
|
||||
"@kilocode/kilo-ui": "workspace:*",
|
||||
@@ -211,7 +211,7 @@
|
||||
},
|
||||
"packages/opencode": {
|
||||
"name": "@kilocode/cli",
|
||||
"version": "1.0.14",
|
||||
"version": "1.0.17",
|
||||
"bin": {
|
||||
"kilo": "./bin/kilo",
|
||||
"kilocode": "./bin/kilocode",
|
||||
@@ -320,7 +320,7 @@
|
||||
},
|
||||
"packages/plugin": {
|
||||
"name": "@kilocode/plugin",
|
||||
"version": "1.0.14",
|
||||
"version": "1.0.17",
|
||||
"dependencies": {
|
||||
"@kilocode/sdk": "workspace:*",
|
||||
"zod": "catalog:",
|
||||
@@ -334,14 +334,14 @@
|
||||
},
|
||||
"packages/script": {
|
||||
"name": "@opencode-ai/script",
|
||||
"version": "1.0.14",
|
||||
"version": "1.0.17",
|
||||
"devDependencies": {
|
||||
"@types/bun": "catalog:",
|
||||
},
|
||||
},
|
||||
"packages/sdk/js": {
|
||||
"name": "@kilocode/sdk",
|
||||
"version": "1.0.14",
|
||||
"version": "1.0.17",
|
||||
"devDependencies": {
|
||||
"@hey-api/openapi-ts": "0.90.10",
|
||||
"@tsconfig/node22": "catalog:",
|
||||
@@ -352,7 +352,7 @@
|
||||
},
|
||||
"packages/ui": {
|
||||
"name": "@opencode-ai/ui",
|
||||
"version": "1.0.14",
|
||||
"version": "1.0.17",
|
||||
"dependencies": {
|
||||
"@kilocode/sdk": "workspace:*",
|
||||
"@kobalte/core": "catalog:",
|
||||
@@ -394,7 +394,7 @@
|
||||
},
|
||||
"packages/util": {
|
||||
"name": "@opencode-ai/util",
|
||||
"version": "1.0.14",
|
||||
"version": "1.0.17",
|
||||
"dependencies": {
|
||||
"zod": "catalog:",
|
||||
},
|
||||
|
||||
+1
-1
@@ -17,5 +17,5 @@
|
||||
"@octokit/rest": "catalog:",
|
||||
"@kilocode/sdk": "workspace:*"
|
||||
},
|
||||
"version": "1.0.14"
|
||||
"version": "1.0.17"
|
||||
}
|
||||
|
||||
+1
-1
@@ -102,6 +102,6 @@
|
||||
"@standard-community/standard-openapi@0.2.9": "patches/@standard-community%2Fstandard-openapi@0.2.9.patch",
|
||||
"ghostty-web@0.3.0": "patches/ghostty-web@0.3.0.patch"
|
||||
},
|
||||
"version": "1.0.14",
|
||||
"version": "1.0.17",
|
||||
"peerDependencies": {}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@opencode-ai/app",
|
||||
"version": "1.0.14",
|
||||
"version": "1.0.17",
|
||||
"description": "",
|
||||
"type": "module",
|
||||
"exports": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@opencode-ai/desktop",
|
||||
"private": true,
|
||||
"version": "1.0.14",
|
||||
"version": "1.0.17",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
id = "kilo"
|
||||
name = "Kilo"
|
||||
description = "The open source coding agent."
|
||||
version = "1.1.57"
|
||||
version = "1.0.17"
|
||||
schema_version = 1
|
||||
authors = ["Anomaly"]
|
||||
repository = "https://github.com/Kilo-Org/kilo"
|
||||
@@ -11,26 +11,26 @@ name = "Kilo"
|
||||
icon = "./icons/opencode.svg"
|
||||
|
||||
[agent_servers.opencode.targets.darwin-aarch64]
|
||||
archive = "https://github.com/Kilo-Org/kilo/releases/download/v1.1.57/opencode-darwin-arm64.zip"
|
||||
archive = "https://github.com/Kilo-Org/kilo/releases/download/v1.0.17/opencode-darwin-arm64.zip"
|
||||
cmd = "./opencode"
|
||||
args = ["acp"]
|
||||
|
||||
[agent_servers.opencode.targets.darwin-x86_64]
|
||||
archive = "https://github.com/Kilo-Org/kilo/releases/download/v1.1.57/opencode-darwin-x64.zip"
|
||||
archive = "https://github.com/Kilo-Org/kilo/releases/download/v1.0.17/opencode-darwin-x64.zip"
|
||||
cmd = "./opencode"
|
||||
args = ["acp"]
|
||||
|
||||
[agent_servers.opencode.targets.linux-aarch64]
|
||||
archive = "https://github.com/Kilo-Org/kilo/releases/download/v1.1.57/opencode-linux-arm64.tar.gz"
|
||||
archive = "https://github.com/Kilo-Org/kilo/releases/download/v1.0.17/opencode-linux-arm64.tar.gz"
|
||||
cmd = "./opencode"
|
||||
args = ["acp"]
|
||||
|
||||
[agent_servers.opencode.targets.linux-x86_64]
|
||||
archive = "https://github.com/Kilo-Org/kilo/releases/download/v1.1.57/opencode-linux-x64.tar.gz"
|
||||
archive = "https://github.com/Kilo-Org/kilo/releases/download/v1.0.17/opencode-linux-x64.tar.gz"
|
||||
cmd = "./opencode"
|
||||
args = ["acp"]
|
||||
|
||||
[agent_servers.opencode.targets.windows-x86_64]
|
||||
archive = "https://github.com/Kilo-Org/kilo/releases/download/v1.1.57/opencode-windows-x64.zip"
|
||||
archive = "https://github.com/Kilo-Org/kilo/releases/download/v1.0.17/opencode-windows-x64.zip"
|
||||
cmd = "./opencode.exe"
|
||||
args = ["acp"]
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"name": "@kilocode/kilo-gateway",
|
||||
"version": "1.0.14",
|
||||
"version": "1.0.17",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"description": "Unified Kilo Gateway package for OpenCode - authentication, provider, and API integration",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"name": "@kilocode/kilo-i18n",
|
||||
"version": "1.0.13",
|
||||
"version": "1.0.17",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"description": "Kilo-specific i18n translations and overrides",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"name": "@kilocode/kilo-telemetry",
|
||||
"version": "1.0.14",
|
||||
"version": "1.0.17",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"description": "Telemetry for Kilo CLI - PostHog analytics integration",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@kilocode/kilo-ui",
|
||||
"version": "1.0.14",
|
||||
"version": "1.0.17",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"exports": {
|
||||
|
||||
@@ -24,6 +24,7 @@ The rebuild has a working foundation:
|
||||
- **Message protocol**: 28 message types in [`messages.ts`](../webview-ui/src/types/messages.ts)
|
||||
- **Build pipeline**: dual esbuild (extension + webview), CLI binary provisioning in [`esbuild.js`](../esbuild.js) and [`prepare-cli-binary.mjs`](../scripts/prepare-cli-binary.mjs)
|
||||
- **View title bar button**: ✅ Done — [#181](https://github.com/Kilo-Org/kilo/issues/181)
|
||||
- **Browser automation**: Playwright MCP integration with settings toggle, lifecycle service, and CLI MCP hub registration in [`BrowserAutomationService`](../src/services/browser-automation/browser-automation-service.ts)
|
||||
|
||||
---
|
||||
|
||||
@@ -32,7 +33,7 @@ The rebuild has a working foundation:
|
||||
| Feature | Status | Details | Backend | Priority |
|
||||
| -------------------------------------------------------------------------------------- | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | -------- |
|
||||
| [Auto-Approval Controls](chat-ui-features/auto-approval-controls.md) | ❌ Not started | No auto-approval toggle, scope selectors, or timeout config. Permission dialog exists but only supports per-request decisions. [#171](https://github.com/Kilo-Org/kilo/issues/171) | CLI owns permissions; webview needs config UI | P1 |
|
||||
| [Browser Session Controls](chat-ui-features/browser-session-controls.md) | ❌ Not started | No browser automation UI, action replay, or screenshot viewing in chat. | CLI-side (if browser tool exists) + webview | P3 |
|
||||
| [Browser Session Controls](chat-ui-features/browser-session-controls.md) | 🔨 Partial | BrowserTab settings UI implemented with enable/disable toggle, system Chrome and headless options. Missing: in-chat browser session controls, action replay, screenshot viewing. | CLI-side (if browser tool exists) + webview | P3 |
|
||||
| [Checkpoint & Task Management](chat-ui-features/checkpoint-task-management.md) | ❌ Not started | No checkpoint restore, navigation, or "See New Changes" diff buttons. | CLI session undo/redo/fork + extension git integration | P1 |
|
||||
| [Code Block Interactions](chat-ui-features/code-block-interactions.md) | ❌ Not started | No markdown rendering, syntax highlighting, copy button, expand/collapse, or sticky buttons on code blocks. Messages render as plain text. | Webview-only | P0 |
|
||||
| [Command Execution](chat-ui-features/command-execution.md) | 🔨 Partial | Tool messages render but lack expandable terminal output, abort-by-PID, exit status indicators, command pattern selectors, and syntax highlighting. | CLI executes commands; webview renders output | P0 |
|
||||
@@ -56,40 +57,40 @@ The rebuild has a working foundation:
|
||||
|
||||
## Non-Agent Feature Parity
|
||||
|
||||
| Feature | Status | Details | Backend | Priority |
|
||||
| ------------------------------------------------------------------------------------------------------- | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- | -------- |
|
||||
| [Agent Manager](non-agent-features/agent-manager.md) | 🔨 Partial | Panel exists but renders only `<h1>Agent Manager</h1>`. No session orchestration, parallel worktrees, or resumable sessions. [#178](https://github.com/Kilo-Org/kilo/issues/178) | Extension orchestrates multiple CLI sessions | P1 |
|
||||
| [Authentication & Enterprise](non-agent-features/authentication-organization-enterprise-enforcement.md) | 🔨 Partial | Device auth flow works. Missing: org feature flags, MDM policy enforcement. [#160](https://github.com/Kilo-Org/kilo/issues/160) | CLI handles its auth; extension handles org/MDM | P1 |
|
||||
| [Auto-Purge](non-agent-features/auto-purge.md) | ❌ Not started | No scheduled cleanup of old session/task storage. | Extension-side (storage ownership TBD) | P3 |
|
||||
| [Autocomplete / Ghost](non-agent-features/autocomplete-ghost.md) | ❌ Not started | No inline editor completions, fill-in-the-middle, or chat-input autocomplete. [#164](https://github.com/Kilo-Org/kilo/issues/164) | Extension-side (VS Code InlineCompletionProvider) | P1 |
|
||||
| [Browser Automation & URL Ingestion](non-agent-features/browser-automation-url-ingestion.md) | ❌ Not started | No browser control, screenshots, or URL-to-markdown extraction. | CLI (partial); extension for browser automation | P3 |
|
||||
| [Checkpoints](non-agent-features/checkpoints.md) | ❌ Not started | No shadow git repo, per-task snapshots, restore UI, or diff viewing. Settings tab is a stub. | CLI (partial: session undo/redo); extension for git snapshots | P1 |
|
||||
| [Cloud Task Support](non-agent-features/cloud-task-support.md) | ❌ Not started | No cloud sync for tasks across devices. [#168](https://github.com/Kilo-Org/kilo/issues/168) | Kilo cloud API + CLI; extension provides UI | P2 |
|
||||
| [Code Actions](non-agent-features/code-actions.md) | ❌ Not started | No VS Code lightbulb/context menu integrations (explain, fix, improve). | Extension-side (VS Code CodeActionProvider) | P2 |
|
||||
| [Code Reviews](non-agent-features/code-reviews.md) | ❌ Not started | No local review mode or automated AI review of uncommitted/branch changes. | CLI (partial); extension for VS Code review UX | P2 |
|
||||
| [Codebase Indexing & Semantic Search](non-agent-features/codebase-indexing-semantic-search.md) | ❌ Not started | No vector indexing, semantic search, or embeddings infrastructure. | CLI has grep/glob endpoints; semantic indexing is extension or cloud | P2 |
|
||||
| [Contribution Tracking](non-agent-features/contribution-tracking.md) | ❌ Not started | No AI attribution tracking, line fingerprinting, or reporting. | Extension-side | P3 |
|
||||
| [Custom Commands](non-agent-features/custom-command-system.md) | ❌ Not started | No slash commands, project-level command discovery, or YAML frontmatter support. | CLI has custom commands; extension provides UI entry points | P2 |
|
||||
| [Deploy & Secure Surfaces](non-agent-features/deploy-and-secure-surfaces.md) | ❌ Not started | No deploy workflows, managed indexing UI, or security review surfaces. | Extension-side | P3 |
|
||||
| [Fast Edits](non-agent-features/fast-edits.md) | ❌ Not started | No fast edit mode for quick inline code changes. | CLI fast-edit runtime; extension provides UI | P2 |
|
||||
| [Git Commit Message Generation](non-agent-features/git-commit-message-generation.md) | ❌ Not started | No AI commit message generation or VS Code Source Control integration. [#165](https://github.com/Kilo-Org/kilo/issues/165) | Extension-side (VS Code Git API) | P2 |
|
||||
| [Integrations](non-agent-features/integrations.md) | ❌ Not started | No external system integrations (GitHub, etc.) beyond basic auth. | CLI plugin system (partial); extension for IDE hooks | P3 |
|
||||
| [Kilo Gateway](non-agent-features/kilo-gateway.md) | 🔨 Partial | Auth flow works but no explicit gateway provider selection or default model. [#176](https://github.com/Kilo-Org/kilo/issues/176) | CLI handles gateway connection; extension provides config UI | P0 |
|
||||
| [Localization](non-agent-features/localization-and-locale-alignment.md) | ❌ Not started | No i18n or locale normalization. All UI is English-only. | Extension + webview; CLI locale mapping needed | P3 |
|
||||
| [Marketplace](non-agent-features/marketplace.md) | 🔨 Partial | Placeholder view exists but is non-functional. No catalog, install, or update capabilities. [#169](https://github.com/Kilo-Org/kilo/issues/169) | Extension-side | P2 |
|
||||
| [MCP & MCP Hub](non-agent-features/mcp-and-mcp-hub.md) | ❌ Not started | No MCP configuration UI, server management, tool allowlisting, or connection status. CLI owns MCP runtime. | CLI owns MCP lifecycle; extension provides config UI | P1 |
|
||||
| [Mode Switcher](non-agent-features/mode-switcher.md) | ❌ Not started | No mode switching UI (Code, Architect, Ask, Debug, etc.). [#162](https://github.com/Kilo-Org/kilo/issues/162) | CLI manages modes; extension provides switcher UI | P2 |
|
||||
| [Model Switcher](non-agent-features/model-switcher.md) | 🔨 Partial | No model switching UI. In progress. [#163](https://github.com/Kilo-Org/kilo/issues/163) | CLI provides model list; extension provides switcher UI | P1 |
|
||||
| [Provider Configuration](non-agent-features/provider-configuration.md) | ❌ Not started | No provider add/edit/remove or switching UI. ProvidersTab is a stub. [#175](https://github.com/Kilo-Org/kilo/issues/175) | CLI manages providers; extension provides config UI | P1 |
|
||||
| [Repository Initialization](non-agent-features/repository-initialization.md) | ❌ Not started | No /init command support for setting up agentic engineering. [#174](https://github.com/Kilo-Org/kilo/issues/174) | CLI /init endpoint; extension provides UI trigger | P3 |
|
||||
| [Rules & Workflows](non-agent-features/rules-and-workflows.md) | ❌ Not started | No rules or workflow management UI. [#173](https://github.com/Kilo-Org/kilo/issues/173) | CLI owns rules runtime; extension provides management UI | P3 |
|
||||
| [Search & Repo Scanning](non-agent-features/search-and-repo-scanning-infrastructure.md) | ❌ Not started | No search infrastructure beyond CLI grep/glob. | CLI has grep/glob; extension may add UI | P2 |
|
||||
| [Settings Sync](non-agent-features/settings-sync-integration.md) | ❌ Not started | No VS Code Settings Sync allowlist registration. Settings tabs are all stubs. | Extension-side (VS Code API) | P3 |
|
||||
| [Settings UI](non-agent-features/settings-ui.md) | 🔨 Partial | 14-tab settings shell exists, all tabs are stubs. [#170](https://github.com/Kilo-Org/kilo/issues/170) | CLI exposes config; extension provides settings forms | P1 |
|
||||
| [Skills System](non-agent-features/skills-system.md) | ❌ Not started | No skill discovery, management, or hot-reload in extension. | CLI has skills runtime; extension provides packaging/UI | P2 |
|
||||
| [Speech-to-Text](non-agent-features/speech-to-text.md) | ❌ Not started | No voice input or streaming STT. | Webview (mic capture); CLI-compatible STT optional | P3 |
|
||||
| [Task History](non-agent-features/task-history.md) | 🔨 Partial | Session list exists but lacks search, metadata, and full persistence. [#167](https://github.com/Kilo-Org/kilo/issues/167) | CLI session storage; extension provides history UI | P1 |
|
||||
| [Terminal / Shell Integration](non-agent-features/terminal-shell-integration.md) | ❌ Not started | No VS Code terminal integration for command execution display, exit code tracking, or working directory changes. | CLI executes commands; extension provides terminal UX | P1 |
|
||||
| Feature | Status | Details | Backend | Priority |
|
||||
| ------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------- | -------- |
|
||||
| [Agent Manager](non-agent-features/agent-manager.md) | 🔨 Partial | Panel exists but renders only `<h1>Agent Manager</h1>`. No session orchestration, parallel worktrees, or resumable sessions. [#178](https://github.com/Kilo-Org/kilo/issues/178) | Extension orchestrates multiple CLI sessions | P1 |
|
||||
| [Authentication & Enterprise](non-agent-features/authentication-organization-enterprise-enforcement.md) | 🔨 Partial | Device auth flow works. Missing: org feature flags, MDM policy enforcement. [#160](https://github.com/Kilo-Org/kilo/issues/160) | CLI handles its auth; extension handles org/MDM | P1 |
|
||||
| [Auto-Purge](non-agent-features/auto-purge.md) | ❌ Not started | No scheduled cleanup of old session/task storage. | Extension-side (storage ownership TBD) | P3 |
|
||||
| [Autocomplete / Ghost](non-agent-features/autocomplete-ghost.md) | ❌ Not started | No inline editor completions, fill-in-the-middle, or chat-input autocomplete. [#164](https://github.com/Kilo-Org/kilo/issues/164) | Extension-side (VS Code InlineCompletionProvider) | P1 |
|
||||
| [Browser Automation & URL Ingestion](non-agent-features/browser-automation-url-ingestion.md) | 🔨 Partial | Playwright MCP integration implemented: settings toggle, BrowserAutomationService, CLI MCP hub registration, BrowserTab settings UI. Missing: URL-to-markdown ingestion, screenshot viewing in chat. | CLI MCP hub (POST /mcp); extension manages lifecycle | P3 |
|
||||
| [Checkpoints](non-agent-features/checkpoints.md) | ❌ Not started | No shadow git repo, per-task snapshots, restore UI, or diff viewing. Settings tab is a stub. | CLI (partial: session undo/redo); extension for git snapshots | P1 |
|
||||
| [Cloud Task Support](non-agent-features/cloud-task-support.md) | ❌ Not started | No cloud sync for tasks across devices. [#168](https://github.com/Kilo-Org/kilo/issues/168) | Kilo cloud API + CLI; extension provides UI | P2 |
|
||||
| [Code Actions](non-agent-features/code-actions.md) | ❌ Not started | No VS Code lightbulb/context menu integrations (explain, fix, improve). | Extension-side (VS Code CodeActionProvider) | P2 |
|
||||
| [Code Reviews](non-agent-features/code-reviews.md) | ❌ Not started | No local review mode or automated AI review of uncommitted/branch changes. | CLI (partial); extension for VS Code review UX | P2 |
|
||||
| [Codebase Indexing & Semantic Search](non-agent-features/codebase-indexing-semantic-search.md) | ❌ Not started | No vector indexing, semantic search, or embeddings infrastructure. | CLI has grep/glob endpoints; semantic indexing is extension or cloud | P2 |
|
||||
| [Contribution Tracking](non-agent-features/contribution-tracking.md) | ❌ Not started | No AI attribution tracking, line fingerprinting, or reporting. | Extension-side | P3 |
|
||||
| [Custom Commands](non-agent-features/custom-command-system.md) | ❌ Not started | No slash commands, project-level command discovery, or YAML frontmatter support. | CLI has custom commands; extension provides UI entry points | P2 |
|
||||
| [Deploy & Secure Surfaces](non-agent-features/deploy-and-secure-surfaces.md) | ❌ Not started | No deploy workflows, managed indexing UI, or security review surfaces. | Extension-side | P3 |
|
||||
| [Fast Edits](non-agent-features/fast-edits.md) | ❌ Not started | No fast edit mode for quick inline code changes. | CLI fast-edit runtime; extension provides UI | P2 |
|
||||
| [Git Commit Message Generation](non-agent-features/git-commit-message-generation.md) | ❌ Not started | No AI commit message generation or VS Code Source Control integration. [#165](https://github.com/Kilo-Org/kilo/issues/165) | Extension-side (VS Code Git API) | P2 |
|
||||
| [Integrations](non-agent-features/integrations.md) | ❌ Not started | No external system integrations (GitHub, etc.) beyond basic auth. | CLI plugin system (partial); extension for IDE hooks | P3 |
|
||||
| [Kilo Gateway](non-agent-features/kilo-gateway.md) | 🔨 Partial | Auth flow works but no explicit gateway provider selection or default model. [#176](https://github.com/Kilo-Org/kilo/issues/176) | CLI handles gateway connection; extension provides config UI | P0 |
|
||||
| [Localization](non-agent-features/localization-and-locale-alignment.md) | ❌ Not started | No i18n or locale normalization. All UI is English-only. | Extension + webview; CLI locale mapping needed | P3 |
|
||||
| [Marketplace](non-agent-features/marketplace.md) | 🔨 Partial | Placeholder view exists but is non-functional. No catalog, install, or update capabilities. [#169](https://github.com/Kilo-Org/kilo/issues/169) | Extension-side | P2 |
|
||||
| [MCP & MCP Hub](non-agent-features/mcp-and-mcp-hub.md) | 🔨 Partial | MCP types and HTTP client methods added (getMcpStatus, addMcpServer, connectMcpServer, disconnectMcpServer). Used by BrowserAutomationService. Missing: general MCP configuration UI, server management, tool allowlisting, connection status display. | CLI owns MCP lifecycle; extension provides config UI | P1 |
|
||||
| [Mode Switcher](non-agent-features/mode-switcher.md) | ❌ Not started | No mode switching UI (Code, Architect, Ask, Debug, etc.). [#162](https://github.com/Kilo-Org/kilo/issues/162) | CLI manages modes; extension provides switcher UI | P2 |
|
||||
| [Model Switcher](non-agent-features/model-switcher.md) | 🔨 Partial | No model switching UI. In progress. [#163](https://github.com/Kilo-Org/kilo/issues/163) | CLI provides model list; extension provides switcher UI | P1 |
|
||||
| [Provider Configuration](non-agent-features/provider-configuration.md) | ❌ Not started | No provider add/edit/remove or switching UI. ProvidersTab is a stub. [#175](https://github.com/Kilo-Org/kilo/issues/175) | CLI manages providers; extension provides config UI | P1 |
|
||||
| [Repository Initialization](non-agent-features/repository-initialization.md) | ❌ Not started | No /init command support for setting up agentic engineering. [#174](https://github.com/Kilo-Org/kilo/issues/174) | CLI /init endpoint; extension provides UI trigger | P3 |
|
||||
| [Rules & Workflows](non-agent-features/rules-and-workflows.md) | ❌ Not started | No rules or workflow management UI. [#173](https://github.com/Kilo-Org/kilo/issues/173) | CLI owns rules runtime; extension provides management UI | P3 |
|
||||
| [Search & Repo Scanning](non-agent-features/search-and-repo-scanning-infrastructure.md) | ❌ Not started | No search infrastructure beyond CLI grep/glob. | CLI has grep/glob; extension may add UI | P2 |
|
||||
| [Settings Sync](non-agent-features/settings-sync-integration.md) | ❌ Not started | No VS Code Settings Sync allowlist registration. Settings tabs are all stubs. | Extension-side (VS Code API) | P3 |
|
||||
| [Settings UI](non-agent-features/settings-ui.md) | 🔨 Partial | 14-tab settings shell exists, all tabs are stubs. [#170](https://github.com/Kilo-Org/kilo/issues/170) | CLI exposes config; extension provides settings forms | P1 |
|
||||
| [Skills System](non-agent-features/skills-system.md) | ❌ Not started | No skill discovery, management, or hot-reload in extension. | CLI has skills runtime; extension provides packaging/UI | P2 |
|
||||
| [Speech-to-Text](non-agent-features/speech-to-text.md) | ❌ Not started | No voice input or streaming STT. | Webview (mic capture); CLI-compatible STT optional | P3 |
|
||||
| [Task History](non-agent-features/task-history.md) | 🔨 Partial | Session list exists but lacks search, metadata, and full persistence. [#167](https://github.com/Kilo-Org/kilo/issues/167) | CLI session storage; extension provides history UI | P1 |
|
||||
| [Terminal / Shell Integration](non-agent-features/terminal-shell-integration.md) | ❌ Not started | No VS Code terminal integration for command execution display, exit code tracking, or working directory changes. | CLI executes commands; extension provides terminal UX | P1 |
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "kilo-code",
|
||||
"displayName": "Kilo Code",
|
||||
"description": "Kilo Code AI Agent & Autocomplete",
|
||||
"version": "0.0.1",
|
||||
"version": "1.0.17",
|
||||
"engines": {
|
||||
"vscode": "^1.109.0"
|
||||
},
|
||||
@@ -166,6 +166,21 @@
|
||||
"type": "string",
|
||||
"default": "kilo/auto",
|
||||
"description": "Default model ID for new sessions"
|
||||
},
|
||||
"kilo-code.new.browserAutomation.enabled": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Enable browser automation powered by Playwright. When enabled, the AI agent can interact with web pages in a visible Chrome window."
|
||||
},
|
||||
"kilo-code.new.browserAutomation.useSystemChrome": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "Use your system's installed Chrome browser instead of downloading a separate Chromium instance."
|
||||
},
|
||||
"kilo-code.new.browserAutomation.headless": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Run browser automation in headless mode (no visible window). When disabled, you can watch the agent interact with the browser."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -220,6 +220,12 @@ export class KiloProvider implements vscode.WebviewViewProvider {
|
||||
case "renameSession":
|
||||
await this.handleRenameSession(message.sessionID, message.title)
|
||||
break
|
||||
case "updateSetting":
|
||||
await this.handleUpdateSetting(message.key, message.value)
|
||||
break
|
||||
case "requestBrowserSettings":
|
||||
this.sendBrowserSettings()
|
||||
break
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -848,6 +854,33 @@ export class KiloProvider implements vscode.WebviewViewProvider {
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle a generic setting update from the webview.
|
||||
* The key uses dot notation relative to `kilo-code.new` (e.g. "browserAutomation.enabled").
|
||||
*/
|
||||
private async handleUpdateSetting(key: string, value: unknown): Promise<void> {
|
||||
const parts = key.split(".")
|
||||
const section = parts.slice(0, -1).join(".")
|
||||
const leaf = parts[parts.length - 1]
|
||||
const config = vscode.workspace.getConfiguration(`kilo-code.new${section ? `.${section}` : ""}`)
|
||||
await config.update(leaf, value, vscode.ConfigurationTarget.Global)
|
||||
}
|
||||
|
||||
/**
|
||||
* Read the current browser automation settings and push them to the webview.
|
||||
*/
|
||||
private sendBrowserSettings(): void {
|
||||
const config = vscode.workspace.getConfiguration("kilo-code.new.browserAutomation")
|
||||
this.postMessage({
|
||||
type: "browserSettingsLoaded",
|
||||
settings: {
|
||||
enabled: config.get<boolean>("enabled", false),
|
||||
useSystemChrome: config.get<boolean>("useSystemChrome", true),
|
||||
headless: config.get<boolean>("headless", false),
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract sessionID from an SSE event, if applicable.
|
||||
* Returns undefined for global events (server.connected, server.heartbeat).
|
||||
|
||||
@@ -3,6 +3,7 @@ import { KiloProvider } from "./KiloProvider"
|
||||
import { AgentManagerProvider } from "./AgentManagerProvider"
|
||||
import { EXTENSION_DISPLAY_NAME } from "./constants"
|
||||
import { KiloConnectionService } from "./services/cli-backend"
|
||||
import { BrowserAutomationService } from "./services/browser-automation"
|
||||
|
||||
export function activate(context: vscode.ExtensionContext) {
|
||||
console.log("Kilo Code extension is now active")
|
||||
@@ -10,6 +11,17 @@ export function activate(context: vscode.ExtensionContext) {
|
||||
// Create shared connection service (one server for all webviews)
|
||||
const connectionService = new KiloConnectionService(context)
|
||||
|
||||
// Create browser automation service (manages Playwright MCP registration)
|
||||
const browserAutomationService = new BrowserAutomationService(connectionService)
|
||||
browserAutomationService.syncWithSettings()
|
||||
|
||||
// Re-register browser automation MCP server on CLI backend reconnect
|
||||
const unsubscribeStateChange = connectionService.onStateChange((state) => {
|
||||
if (state === "connected") {
|
||||
browserAutomationService.reregisterIfEnabled()
|
||||
}
|
||||
})
|
||||
|
||||
// Create the provider with shared service
|
||||
const provider = new KiloProvider(context.extensionUri, connectionService)
|
||||
|
||||
@@ -45,9 +57,11 @@ export function activate(context: vscode.ExtensionContext) {
|
||||
}),
|
||||
)
|
||||
|
||||
// Dispose service when extension deactivates (kills the server)
|
||||
// Dispose services when extension deactivates (kills the server)
|
||||
context.subscriptions.push({
|
||||
dispose: () => {
|
||||
unsubscribeStateChange()
|
||||
browserAutomationService.dispose()
|
||||
provider.dispose()
|
||||
connectionService.dispose()
|
||||
},
|
||||
|
||||
@@ -0,0 +1,183 @@
|
||||
import * as vscode from "vscode"
|
||||
import { type KiloConnectionService, type McpStatus } from "../cli-backend"
|
||||
|
||||
export type BrowserAutomationState = "disabled" | "registering" | "connected" | "failed" | "disconnected"
|
||||
|
||||
export class BrowserAutomationService implements vscode.Disposable {
|
||||
private state: BrowserAutomationState = "disabled"
|
||||
private disposables: vscode.Disposable[] = []
|
||||
private stateListeners: Array<(state: BrowserAutomationState) => void> = []
|
||||
|
||||
// MCP server name used when registering with the CLI backend
|
||||
private static readonly MCP_SERVER_NAME = "kilo-playwright"
|
||||
|
||||
constructor(private readonly connectionService: KiloConnectionService) {
|
||||
// Listen for settings changes
|
||||
this.disposables.push(
|
||||
vscode.workspace.onDidChangeConfiguration((e) => {
|
||||
if (e.affectsConfiguration("kilo-code.new.browserAutomation")) {
|
||||
this.syncWithSettings()
|
||||
}
|
||||
}),
|
||||
)
|
||||
}
|
||||
|
||||
/** Current state */
|
||||
getState(): BrowserAutomationState {
|
||||
return this.state
|
||||
}
|
||||
|
||||
/** Subscribe to state changes */
|
||||
onStateChange(listener: (state: BrowserAutomationState) => void): () => void {
|
||||
this.stateListeners.push(listener)
|
||||
return () => {
|
||||
const idx = this.stateListeners.indexOf(listener)
|
||||
if (idx >= 0) {
|
||||
this.stateListeners.splice(idx, 1)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Read settings and enable/disable accordingly.
|
||||
* Called on construction and when settings change.
|
||||
*/
|
||||
async syncWithSettings(): Promise<void> {
|
||||
const config = vscode.workspace.getConfiguration("kilo-code.new.browserAutomation")
|
||||
const enabled = config.get<boolean>("enabled", false)
|
||||
|
||||
if (enabled) {
|
||||
await this.register()
|
||||
} else {
|
||||
await this.unregister()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Re-register the MCP server after CLI backend reconnects.
|
||||
* Should be called from the connection state change handler.
|
||||
*/
|
||||
async reregisterIfEnabled(): Promise<void> {
|
||||
const config = vscode.workspace.getConfiguration("kilo-code.new.browserAutomation")
|
||||
const enabled = config.get<boolean>("enabled", false)
|
||||
if (enabled) {
|
||||
await this.register()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Register the Playwright MCP server with the CLI backend.
|
||||
*/
|
||||
private async register(): Promise<void> {
|
||||
this.setState("registering")
|
||||
|
||||
const httpClient = this.getHttpClient()
|
||||
if (!httpClient) {
|
||||
console.error("[Kilo New] BrowserAutomationService: No HTTP client available")
|
||||
this.setState("failed")
|
||||
return
|
||||
}
|
||||
|
||||
const config = vscode.workspace.getConfiguration("kilo-code.new.browserAutomation")
|
||||
const useSystemChrome = config.get<boolean>("useSystemChrome", true)
|
||||
const headless = config.get<boolean>("headless", false)
|
||||
|
||||
// Build the command for the Playwright MCP server
|
||||
const command = ["npx", "@playwright/mcp@latest"]
|
||||
if (headless) {
|
||||
command.push("--headless")
|
||||
}
|
||||
if (useSystemChrome) {
|
||||
command.push("--browser", "chrome")
|
||||
}
|
||||
|
||||
try {
|
||||
const status = await httpClient.addMcpServer(BrowserAutomationService.MCP_SERVER_NAME, {
|
||||
type: "local",
|
||||
command,
|
||||
enabled: true,
|
||||
timeout: 60000,
|
||||
})
|
||||
|
||||
const serverStatus = status[BrowserAutomationService.MCP_SERVER_NAME]
|
||||
if (serverStatus?.status === "connected") {
|
||||
this.setState("connected")
|
||||
} else if (serverStatus?.status === "failed") {
|
||||
console.error(
|
||||
"[Kilo New] BrowserAutomationService: MCP server failed:",
|
||||
(serverStatus as { error?: string }).error,
|
||||
)
|
||||
this.setState("failed")
|
||||
} else {
|
||||
this.setState("disconnected")
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("[Kilo New] BrowserAutomationService: Failed to register MCP server:", error)
|
||||
this.setState("failed")
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregister/disconnect the Playwright MCP server.
|
||||
*/
|
||||
private async unregister(): Promise<void> {
|
||||
if (this.state === "disabled") {
|
||||
return
|
||||
}
|
||||
|
||||
const httpClient = this.getHttpClient()
|
||||
if (httpClient) {
|
||||
try {
|
||||
await httpClient.disconnectMcpServer(BrowserAutomationService.MCP_SERVER_NAME)
|
||||
} catch (error) {
|
||||
console.error("[Kilo New] BrowserAutomationService: Failed to disconnect MCP server:", error)
|
||||
}
|
||||
}
|
||||
|
||||
this.setState("disabled")
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the current MCP server status from the CLI backend.
|
||||
*/
|
||||
async getServerStatus(): Promise<McpStatus | null> {
|
||||
const httpClient = this.getHttpClient()
|
||||
if (!httpClient) {
|
||||
return null
|
||||
}
|
||||
|
||||
try {
|
||||
const allStatus = await httpClient.getMcpStatus()
|
||||
return allStatus[BrowserAutomationService.MCP_SERVER_NAME] ?? null
|
||||
} catch {
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
private getHttpClient() {
|
||||
try {
|
||||
return this.connectionService.getHttpClient()
|
||||
} catch {
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
private setState(state: BrowserAutomationState): void {
|
||||
if (this.state === state) {
|
||||
return
|
||||
}
|
||||
console.log(`[Kilo New] BrowserAutomationService: State ${this.state} → ${state}`)
|
||||
this.state = state
|
||||
for (const listener of this.stateListeners) {
|
||||
listener(state)
|
||||
}
|
||||
}
|
||||
|
||||
dispose(): void {
|
||||
for (const d of this.disposables) {
|
||||
d.dispose()
|
||||
}
|
||||
this.disposables = []
|
||||
this.stateListeners = []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
export { BrowserAutomationService, type BrowserAutomationState } from "./browser-automation-service"
|
||||
@@ -7,6 +7,8 @@ import type {
|
||||
ProfileData,
|
||||
ProviderAuthAuthorization,
|
||||
ProviderListResponse,
|
||||
McpStatus,
|
||||
McpConfig,
|
||||
} from "./types"
|
||||
|
||||
/**
|
||||
@@ -321,4 +323,36 @@ export class HttpClient {
|
||||
async oauthCallback(providerId: string, method: number, directory: string): Promise<boolean> {
|
||||
return this.request<boolean>("POST", `/provider/${providerId}/oauth/callback`, { method }, { directory })
|
||||
}
|
||||
|
||||
// ============================================
|
||||
// MCP Methods
|
||||
// ============================================
|
||||
|
||||
/**
|
||||
* Get the status of all MCP servers.
|
||||
*/
|
||||
async getMcpStatus(): Promise<Record<string, McpStatus>> {
|
||||
return this.request<Record<string, McpStatus>>("GET", "/mcp")
|
||||
}
|
||||
|
||||
/**
|
||||
* Add or update an MCP server configuration.
|
||||
*/
|
||||
async addMcpServer(name: string, config: McpConfig): Promise<Record<string, McpStatus>> {
|
||||
return this.request<Record<string, McpStatus>>("POST", "/mcp", { name, config })
|
||||
}
|
||||
|
||||
/**
|
||||
* Connect an MCP server by name.
|
||||
*/
|
||||
async connectMcpServer(name: string): Promise<boolean> {
|
||||
return this.request<boolean>("POST", `/mcp/${encodeURIComponent(name)}/connect`)
|
||||
}
|
||||
|
||||
/**
|
||||
* Disconnect an MCP server by name.
|
||||
*/
|
||||
async disconnectMcpServer(name: string): Promise<boolean> {
|
||||
return this.request<boolean>("POST", `/mcp/${encodeURIComponent(name)}/disconnect`)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,6 +21,10 @@ export type {
|
||||
Provider,
|
||||
ProviderListResponse,
|
||||
ModelSelection,
|
||||
McpStatus,
|
||||
McpLocalConfig,
|
||||
McpRemoteConfig,
|
||||
McpConfig,
|
||||
} from "./types"
|
||||
|
||||
export { ServerManager } from "./server-manager"
|
||||
|
||||
@@ -196,3 +196,32 @@ export interface ProfileData {
|
||||
balance: KilocodeBalance | null
|
||||
currentOrgId: string | null
|
||||
}
|
||||
|
||||
// MCP server status — discriminated union returned by the backend
|
||||
export type McpStatus =
|
||||
| { status: "connected" }
|
||||
| { status: "disabled" }
|
||||
| { status: "failed"; error: string }
|
||||
| { status: "needs_auth" }
|
||||
| { status: "needs_client_registration"; error: string }
|
||||
|
||||
// MCP server configuration for local (stdio) servers
|
||||
export interface McpLocalConfig {
|
||||
type: "local"
|
||||
command: string[]
|
||||
environment?: Record<string, string>
|
||||
enabled?: boolean
|
||||
timeout?: number
|
||||
}
|
||||
|
||||
// MCP server configuration for remote (SSE) servers
|
||||
export interface McpRemoteConfig {
|
||||
type: "remote"
|
||||
url: string
|
||||
enabled?: boolean
|
||||
headers?: Record<string, string>
|
||||
timeout?: number
|
||||
}
|
||||
|
||||
// Union of all MCP server config types
|
||||
export type McpConfig = McpLocalConfig | McpRemoteConfig
|
||||
|
||||
@@ -16,7 +16,9 @@ import { useLanguage } from "../../context/language"
|
||||
import { formatRelativeDate } from "../../utils/date"
|
||||
import type { SessionInfo } from "../../types/messages"
|
||||
|
||||
function dateGroup(iso: string): string {
|
||||
const DATE_GROUP_KEYS = ["time.today", "time.yesterday", "time.thisWeek", "time.thisMonth", "time.older"] as const
|
||||
|
||||
function dateGroupKey(iso: string): (typeof DATE_GROUP_KEYS)[number] {
|
||||
const now = new Date()
|
||||
const then = new Date(iso)
|
||||
|
||||
@@ -25,19 +27,11 @@ function dateGroup(iso: string): string {
|
||||
const weekAgo = new Date(today.getTime() - 7 * 86400000)
|
||||
const monthAgo = new Date(today.getTime() - 30 * 86400000)
|
||||
|
||||
if (then >= today) return "Today"
|
||||
if (then >= yesterday) return "Yesterday"
|
||||
if (then >= weekAgo) return "This Week"
|
||||
if (then >= monthAgo) return "This Month"
|
||||
return "Older"
|
||||
}
|
||||
|
||||
const GROUP_ORDER: Record<string, number> = {
|
||||
Today: 0,
|
||||
Yesterday: 1,
|
||||
"This Week": 2,
|
||||
"This Month": 3,
|
||||
Older: 4,
|
||||
if (then >= today) return DATE_GROUP_KEYS[0]
|
||||
if (then >= yesterday) return DATE_GROUP_KEYS[1]
|
||||
if (then >= weekAgo) return DATE_GROUP_KEYS[2]
|
||||
if (then >= monthAgo) return DATE_GROUP_KEYS[3]
|
||||
return DATE_GROUP_KEYS[4]
|
||||
}
|
||||
|
||||
interface SessionListProps {
|
||||
@@ -90,9 +84,9 @@ const SessionList: Component<SessionListProps> = (props) => {
|
||||
function confirmDelete(s: SessionInfo) {
|
||||
dialog.show(() => (
|
||||
<Dialog title={language.t("session.delete.title")} fit>
|
||||
<div style={{ display: "flex", "flex-direction": "column", gap: "16px", padding: "0 16px 12px" }}>
|
||||
<div class="dialog-confirm-body">
|
||||
<span>{language.t("session.delete.confirm", { name: s.title || language.t("session.untitled") })}</span>
|
||||
<div style={{ display: "flex", "justify-content": "flex-end", gap: "8px" }}>
|
||||
<div class="dialog-confirm-actions">
|
||||
<Button variant="ghost" size="large" onClick={() => dialog.close()}>
|
||||
{language.t("common.cancel")}
|
||||
</Button>
|
||||
@@ -147,8 +141,11 @@ const SessionList: Component<SessionListProps> = (props) => {
|
||||
}}
|
||||
search={{ placeholder: language.t("session.search.placeholder"), autofocus: false }}
|
||||
emptyMessage={language.t("session.empty")}
|
||||
groupBy={(s) => dateGroup(s.updatedAt)}
|
||||
sortGroupsBy={(a, b) => (GROUP_ORDER[a.category] ?? 99) - (GROUP_ORDER[b.category] ?? 99)}
|
||||
groupBy={(s) => language.t(dateGroupKey(s.updatedAt))}
|
||||
sortGroupsBy={(a, b) => {
|
||||
const rank = Object.fromEntries(DATE_GROUP_KEYS.map((k, i) => [language.t(k), i]))
|
||||
return (rank[a.category] ?? 99) - (rank[b.category] ?? 99)
|
||||
}}
|
||||
itemWrapper={wrapItem}
|
||||
>
|
||||
{(s) => (
|
||||
|
||||
@@ -1,14 +1,45 @@
|
||||
import { Component } from "solid-js"
|
||||
import { Component, createSignal, onCleanup, onMount } from "solid-js"
|
||||
import { Switch } from "@kilocode/kilo-ui/switch"
|
||||
import { useVSCode } from "../../context/vscode"
|
||||
import { useLanguage } from "../../context/language"
|
||||
import type { BrowserSettings } from "../../types/messages"
|
||||
|
||||
const BrowserTab: Component = () => {
|
||||
const { postMessage, onMessage } = useVSCode()
|
||||
const { t } = useLanguage()
|
||||
|
||||
const [settings, setSettings] = createSignal<BrowserSettings>({
|
||||
enabled: false,
|
||||
useSystemChrome: true,
|
||||
headless: false,
|
||||
})
|
||||
|
||||
onMount(() => {
|
||||
postMessage({ type: "requestBrowserSettings" })
|
||||
})
|
||||
|
||||
// Subscribe outside onMount to catch early pushes (per AGENTS.md pattern)
|
||||
const unsubscribe = onMessage((msg) => {
|
||||
if (msg.type === "browserSettingsLoaded") {
|
||||
setSettings(msg.settings)
|
||||
}
|
||||
})
|
||||
onCleanup(unsubscribe)
|
||||
|
||||
const update = (key: keyof BrowserSettings, value: boolean) => {
|
||||
setSettings((prev) => ({ ...prev, [key]: value }))
|
||||
postMessage({ type: "updateSetting", key: `browserAutomation.${key}`, value })
|
||||
}
|
||||
|
||||
return (
|
||||
<div>
|
||||
<div style={{ display: "flex", "flex-direction": "column", gap: "16px" }}>
|
||||
{/* Info text */}
|
||||
<div
|
||||
style={{
|
||||
background: "var(--vscode-editor-background)",
|
||||
background: "var(--vscode-textBlockQuote-background)",
|
||||
border: "1px solid var(--vscode-panel-border)",
|
||||
"border-radius": "4px",
|
||||
padding: "16px",
|
||||
padding: "12px 16px",
|
||||
}}
|
||||
>
|
||||
<p
|
||||
@@ -19,12 +50,61 @@ const BrowserTab: Component = () => {
|
||||
"line-height": "1.5",
|
||||
}}
|
||||
>
|
||||
<strong style={{ color: "var(--vscode-foreground)" }}>This section is not implemented yet.</strong> It will
|
||||
contain configuration options and explanatory text related to the selected settings category. During
|
||||
reimplementation, use this space to validate layout, spacing, scrolling behavior, and navigation state before
|
||||
wiring up real controls.
|
||||
{t("settings.browser.description")}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
{/* Enable toggle */}
|
||||
<SettingsRow title={t("settings.browser.enable.title")} description={t("settings.browser.enable.description")}>
|
||||
<Switch checked={settings().enabled} onChange={(checked: boolean) => update("enabled", checked)} />
|
||||
</SettingsRow>
|
||||
|
||||
{/* Use System Chrome */}
|
||||
<SettingsRow
|
||||
title={t("settings.browser.systemChrome.title")}
|
||||
description={t("settings.browser.systemChrome.description")}
|
||||
>
|
||||
<Switch
|
||||
checked={settings().useSystemChrome}
|
||||
onChange={(checked: boolean) => update("useSystemChrome", checked)}
|
||||
/>
|
||||
</SettingsRow>
|
||||
|
||||
{/* Headless mode */}
|
||||
<SettingsRow
|
||||
title={t("settings.browser.headless.title")}
|
||||
description={t("settings.browser.headless.description")}
|
||||
>
|
||||
<Switch checked={settings().headless} onChange={(checked: boolean) => update("headless", checked)} />
|
||||
</SettingsRow>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
/** Reusable settings row matching the desktop app pattern. */
|
||||
const SettingsRow: Component<{ title: string; description: string; children: any }> = (props) => {
|
||||
return (
|
||||
<div
|
||||
style={{
|
||||
display: "flex",
|
||||
"align-items": "center",
|
||||
"justify-content": "space-between",
|
||||
padding: "12px 16px",
|
||||
background: "var(--vscode-editor-background)",
|
||||
border: "1px solid var(--vscode-panel-border)",
|
||||
"border-radius": "4px",
|
||||
gap: "16px",
|
||||
}}
|
||||
>
|
||||
<div style={{ display: "flex", "flex-direction": "column", gap: "2px", flex: 1 }}>
|
||||
<span style={{ "font-size": "13px", color: "var(--vscode-foreground)", "font-weight": "500" }}>
|
||||
{props.title}
|
||||
</span>
|
||||
<span style={{ "font-size": "12px", color: "var(--vscode-descriptionForeground)", "line-height": "1.4" }}>
|
||||
{props.description}
|
||||
</span>
|
||||
</div>
|
||||
<div style={{ "flex-shrink": 0 }}>{props.children}</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -773,10 +773,11 @@ export const dict = {
|
||||
"time.hoursAgo": "قبل {{count}} ساعة",
|
||||
"time.daysAgo": "قبل {{count}} يوم",
|
||||
"time.monthsAgo": "قبل {{count}} شهر",
|
||||
|
||||
"session.search.placeholder": "البحث في الجلسات...",
|
||||
"session.empty": "لا توجد جلسات بعد. انقر على + لبدء محادثة جديدة.",
|
||||
"session.untitled": "بدون عنوان",
|
||||
"time.today": "اليوم",
|
||||
"time.yesterday": "أمس",
|
||||
"time.thisWeek": "هذا الأسبوع",
|
||||
"time.thisMonth": "هذا الشهر",
|
||||
"time.older": "أقدم",
|
||||
|
||||
"settings.aboutKiloCode.status.connected": "متصل",
|
||||
"settings.aboutKiloCode.status.connecting": "جارٍ الاتصال...",
|
||||
@@ -794,6 +795,15 @@ export const dict = {
|
||||
"settings.agentBehaviour.subtab.workflows": "سير العمل",
|
||||
"settings.agentBehaviour.subtab.skills": "المهارات",
|
||||
|
||||
"settings.browser.description":
|
||||
"عند التفعيل، يمكن لوكيل الذكاء الاصطناعي التفاعل مع صفحات الويب — التنقل والنقر والكتابة والتقاط لقطات الشاشة. سيتم فتح نافذة Chrome حتى تتمكن من مشاهدة الوكيل أثناء العمل.",
|
||||
"settings.browser.enable.title": "تفعيل أتمتة المتصفح",
|
||||
"settings.browser.enable.description": "تسجيل خادم Playwright MCP مع الواجهة الخلفية لـ CLI.",
|
||||
"settings.browser.systemChrome.title": "استخدام Chrome النظام",
|
||||
"settings.browser.systemChrome.description": "استخدم متصفح Chrome المثبت لديك بدلاً من نسخة Chromium منفصلة.",
|
||||
"settings.browser.headless.title": "الوضع بدون واجهة",
|
||||
"settings.browser.headless.description": "التشغيل في الوضع بدون واجهة (بدون نافذة متصفح مرئية).",
|
||||
|
||||
"settings.language.description": 'اختر اللغة لواجهة Kilo Code. "تلقائي" يستخدم لغة عرض VS Code.',
|
||||
"settings.language.auto": "تلقائي (لغة VS Code)",
|
||||
"settings.language.current": "الحالية:",
|
||||
|
||||
@@ -780,10 +780,11 @@ export const dict = {
|
||||
"time.hoursAgo": "{{count}}h atrás",
|
||||
"time.daysAgo": "{{count}}d atrás",
|
||||
"time.monthsAgo": "{{count}} meses atrás",
|
||||
|
||||
"session.search.placeholder": "Pesquisar sessões...",
|
||||
"session.empty": "Nenhuma sessão ainda. Clique em + para iniciar uma nova conversa.",
|
||||
"session.untitled": "Sem título",
|
||||
"time.today": "Hoje",
|
||||
"time.yesterday": "Ontem",
|
||||
"time.thisWeek": "Esta semana",
|
||||
"time.thisMonth": "Este mês",
|
||||
"time.older": "Mais antigo",
|
||||
|
||||
"settings.aboutKiloCode.status.connected": "Conectado",
|
||||
"settings.aboutKiloCode.status.connecting": "Conectando...",
|
||||
@@ -801,6 +802,16 @@ export const dict = {
|
||||
"settings.agentBehaviour.subtab.workflows": "Fluxos de trabalho",
|
||||
"settings.agentBehaviour.subtab.skills": "Habilidades",
|
||||
|
||||
"settings.browser.description":
|
||||
"Quando ativado, o agente de IA pode interagir com páginas da web — navegar, clicar, digitar e capturar telas. Uma janela do Chrome será aberta para que você possa acompanhar o trabalho do agente.",
|
||||
"settings.browser.enable.title": "Ativar Automação do Navegador",
|
||||
"settings.browser.enable.description": "Registrar o servidor Playwright MCP no backend CLI.",
|
||||
"settings.browser.systemChrome.title": "Usar Chrome do Sistema",
|
||||
"settings.browser.systemChrome.description":
|
||||
"Usar o navegador Chrome instalado em vez de uma instância separada do Chromium.",
|
||||
"settings.browser.headless.title": "Modo Headless",
|
||||
"settings.browser.headless.description": "Executar em modo headless (sem janela do navegador visível).",
|
||||
|
||||
"settings.language.description":
|
||||
'Escolha o idioma da interface do Kilo Code. "Auto" usa o idioma de exibição do VS Code.',
|
||||
"settings.language.auto": "Auto (idioma do VS Code)",
|
||||
|
||||
@@ -807,10 +807,11 @@ export const dict = {
|
||||
"time.hoursAgo": "prije {{count}}h",
|
||||
"time.daysAgo": "prije {{count}}d",
|
||||
"time.monthsAgo": "prije {{count}} mj.",
|
||||
|
||||
"session.search.placeholder": "Pretraži sesije...",
|
||||
"session.empty": "Još nema sesija. Kliknite + za pokretanje novog razgovora.",
|
||||
"session.untitled": "Bez naslova",
|
||||
"time.today": "Danas",
|
||||
"time.yesterday": "Jučer",
|
||||
"time.thisWeek": "Ove sedmice",
|
||||
"time.thisMonth": "Ovog mjeseca",
|
||||
"time.older": "Starije",
|
||||
|
||||
"settings.aboutKiloCode.status.connected": "Povezano",
|
||||
"settings.aboutKiloCode.status.connecting": "Povezivanje...",
|
||||
@@ -828,6 +829,16 @@ export const dict = {
|
||||
"settings.agentBehaviour.subtab.workflows": "Tokovi rada",
|
||||
"settings.agentBehaviour.subtab.skills": "Vještine",
|
||||
|
||||
"settings.browser.description":
|
||||
"Kada je omogućeno, AI agent može komunicirati s web stranicama — navigirati, klikati, tipkati i snimati ekran. Chrome prozor će se otvoriti kako biste mogli pratiti rad agenta.",
|
||||
"settings.browser.enable.title": "Omogući automatizaciju preglednika",
|
||||
"settings.browser.enable.description": "Registriraj Playwright MCP server s CLI pozadinom.",
|
||||
"settings.browser.systemChrome.title": "Koristi sistemski Chrome",
|
||||
"settings.browser.systemChrome.description":
|
||||
"Koristite instalirani Chrome preglednik umjesto zasebne Chromium instance.",
|
||||
"settings.browser.headless.title": "Headless način",
|
||||
"settings.browser.headless.description": "Pokreni u headless načinu (bez vidljivog prozora preglednika).",
|
||||
|
||||
"settings.language.description": 'Odaberite jezik za Kilo Code sučelje. "Auto" koristi jezik prikaza VS Code-a.',
|
||||
"settings.language.auto": "Auto (VS Code jezik)",
|
||||
"settings.language.current": "Trenutni:",
|
||||
|
||||
@@ -779,10 +779,11 @@ export const dict = {
|
||||
"time.hoursAgo": "{{count}}t siden",
|
||||
"time.daysAgo": "{{count}}d siden",
|
||||
"time.monthsAgo": "{{count}} mdr. siden",
|
||||
|
||||
"session.search.placeholder": "Søg i sessioner...",
|
||||
"session.empty": "Ingen sessioner endnu. Klik + for at starte en ny samtale.",
|
||||
"session.untitled": "Uden titel",
|
||||
"time.today": "I dag",
|
||||
"time.yesterday": "I går",
|
||||
"time.thisWeek": "Denne uge",
|
||||
"time.thisMonth": "Denne måned",
|
||||
"time.older": "Ældre",
|
||||
|
||||
"settings.aboutKiloCode.status.connected": "Forbundet",
|
||||
"settings.aboutKiloCode.status.connecting": "Forbinder...",
|
||||
@@ -800,6 +801,16 @@ export const dict = {
|
||||
"settings.agentBehaviour.subtab.workflows": "Arbejdsgange",
|
||||
"settings.agentBehaviour.subtab.skills": "Færdigheder",
|
||||
|
||||
"settings.browser.description":
|
||||
"Når aktiveret kan AI-agenten interagere med websider — navigere, klikke, skrive og tage skærmbilleder. Et Chrome-vindue åbnes, så du kan se agenten arbejde.",
|
||||
"settings.browser.enable.title": "Aktivér browserautomatisering",
|
||||
"settings.browser.enable.description": "Registrér Playwright MCP-serveren hos CLI-backend'en.",
|
||||
"settings.browser.systemChrome.title": "Brug system-Chrome",
|
||||
"settings.browser.systemChrome.description":
|
||||
"Brug din installerede Chrome-browser i stedet for en separat Chromium-instans.",
|
||||
"settings.browser.headless.title": "Headless-tilstand",
|
||||
"settings.browser.headless.description": "Kør i headless-tilstand (intet synligt browservindue).",
|
||||
|
||||
"settings.language.description": 'Vælg sproget til Kilo Code-brugerfladen. "Auto" bruger VS Codes visningssprog.',
|
||||
"settings.language.auto": "Auto (VS Code-sprog)",
|
||||
"settings.language.current": "Nuværende:",
|
||||
|
||||
@@ -785,10 +785,11 @@ export const dict = {
|
||||
"time.hoursAgo": "vor {{count}} Std.",
|
||||
"time.daysAgo": "vor {{count}} T.",
|
||||
"time.monthsAgo": "vor {{count}} Mon.",
|
||||
|
||||
"session.search.placeholder": "Sitzungen durchsuchen...",
|
||||
"session.empty": "Noch keine Sitzungen. Klicken Sie auf +, um eine neue Unterhaltung zu starten.",
|
||||
"session.untitled": "Ohne Titel",
|
||||
"time.today": "Heute",
|
||||
"time.yesterday": "Gestern",
|
||||
"time.thisWeek": "Diese Woche",
|
||||
"time.thisMonth": "Diesen Monat",
|
||||
"time.older": "Älter",
|
||||
|
||||
"settings.aboutKiloCode.status.connected": "Verbunden",
|
||||
"settings.aboutKiloCode.status.connecting": "Verbindung wird hergestellt...",
|
||||
@@ -806,6 +807,16 @@ export const dict = {
|
||||
"settings.agentBehaviour.subtab.workflows": "Workflows",
|
||||
"settings.agentBehaviour.subtab.skills": "Fähigkeiten",
|
||||
|
||||
"settings.browser.description":
|
||||
"Wenn aktiviert, kann der KI-Agent mit Webseiten interagieren — navigieren, klicken, tippen und Screenshots erstellen. Ein Chrome-Fenster wird geöffnet, damit Sie dem Agenten bei der Arbeit zusehen können.",
|
||||
"settings.browser.enable.title": "Browser-Automatisierung aktivieren",
|
||||
"settings.browser.enable.description": "Den Playwright-MCP-Server beim CLI-Backend registrieren.",
|
||||
"settings.browser.systemChrome.title": "System-Chrome verwenden",
|
||||
"settings.browser.systemChrome.description":
|
||||
"Verwenden Sie Ihren installierten Chrome-Browser anstelle einer separaten Chromium-Instanz.",
|
||||
"settings.browser.headless.title": "Headless-Modus",
|
||||
"settings.browser.headless.description": "Im Headless-Modus ausführen (kein sichtbares Browserfenster).",
|
||||
|
||||
"settings.language.description":
|
||||
'Wählen Sie die Sprache für die Kilo Code Oberfläche. „Auto" verwendet die VS Code Anzeigesprache.',
|
||||
"settings.language.auto": "Auto (VS Code Sprache)",
|
||||
|
||||
@@ -812,10 +812,11 @@ export const dict = {
|
||||
"time.hoursAgo": "{{count}}h ago",
|
||||
"time.daysAgo": "{{count}}d ago",
|
||||
"time.monthsAgo": "{{count}}mo ago",
|
||||
|
||||
"session.search.placeholder": "Search sessions...",
|
||||
"session.empty": "No sessions yet. Click + to start a new conversation.",
|
||||
"session.untitled": "Untitled",
|
||||
"time.today": "Today",
|
||||
"time.yesterday": "Yesterday",
|
||||
"time.thisWeek": "This Week",
|
||||
"time.thisMonth": "This Month",
|
||||
"time.older": "Older",
|
||||
|
||||
"settings.aboutKiloCode.status.connected": "Connected",
|
||||
"settings.aboutKiloCode.status.connecting": "Connecting...",
|
||||
@@ -833,6 +834,16 @@ export const dict = {
|
||||
"settings.agentBehaviour.subtab.workflows": "Workflows",
|
||||
"settings.agentBehaviour.subtab.skills": "Skills",
|
||||
|
||||
"settings.browser.description":
|
||||
"When enabled, the AI agent can interact with web pages — navigating, clicking, typing, and taking screenshots. A Chrome window will open so you can watch the agent work.",
|
||||
"settings.browser.enable.title": "Enable Browser Automation",
|
||||
"settings.browser.enable.description": "Register the Playwright MCP server with the CLI backend.",
|
||||
"settings.browser.systemChrome.title": "Use System Chrome",
|
||||
"settings.browser.systemChrome.description":
|
||||
"Use your installed Chrome browser instead of a separate Chromium instance.",
|
||||
"settings.browser.headless.title": "Headless Mode",
|
||||
"settings.browser.headless.description": "Run in headless mode (no visible browser window).",
|
||||
|
||||
"settings.language.description":
|
||||
'Choose the language for the Kilo Code UI. "Auto" uses your VS Code display language.',
|
||||
"settings.language.auto": "Auto (VS Code language)",
|
||||
|
||||
@@ -785,10 +785,11 @@ export const dict = {
|
||||
"time.hoursAgo": "hace {{count}}h",
|
||||
"time.daysAgo": "hace {{count}}d",
|
||||
"time.monthsAgo": "hace {{count}} meses",
|
||||
|
||||
"session.search.placeholder": "Buscar sesiones...",
|
||||
"session.empty": "Aún no hay sesiones. Haz clic en + para iniciar una nueva conversación.",
|
||||
"session.untitled": "Sin título",
|
||||
"time.today": "Hoy",
|
||||
"time.yesterday": "Ayer",
|
||||
"time.thisWeek": "Esta semana",
|
||||
"time.thisMonth": "Este mes",
|
||||
"time.older": "Anterior",
|
||||
|
||||
"settings.aboutKiloCode.status.connected": "Conectado",
|
||||
"settings.aboutKiloCode.status.connecting": "Conectando...",
|
||||
@@ -806,6 +807,16 @@ export const dict = {
|
||||
"settings.agentBehaviour.subtab.workflows": "Flujos de trabajo",
|
||||
"settings.agentBehaviour.subtab.skills": "Habilidades",
|
||||
|
||||
"settings.browser.description":
|
||||
"Cuando está activado, el agente de IA puede interactuar con páginas web: navegar, hacer clic, escribir y capturar pantallas. Se abrirá una ventana de Chrome para que puedas ver al agente trabajar.",
|
||||
"settings.browser.enable.title": "Activar automatización del navegador",
|
||||
"settings.browser.enable.description": "Registrar el servidor Playwright MCP con el backend CLI.",
|
||||
"settings.browser.systemChrome.title": "Usar Chrome del sistema",
|
||||
"settings.browser.systemChrome.description":
|
||||
"Usar el navegador Chrome instalado en lugar de una instancia separada de Chromium.",
|
||||
"settings.browser.headless.title": "Modo headless",
|
||||
"settings.browser.headless.description": "Ejecutar en modo headless (sin ventana de navegador visible).",
|
||||
|
||||
"settings.language.description":
|
||||
'Elige el idioma de la interfaz de Kilo Code. "Auto" utiliza el idioma de visualización de VS Code.',
|
||||
"settings.language.auto": "Auto (idioma de VS Code)",
|
||||
|
||||
@@ -789,10 +789,11 @@ export const dict = {
|
||||
"time.hoursAgo": "il y a {{count}}h",
|
||||
"time.daysAgo": "il y a {{count}}j",
|
||||
"time.monthsAgo": "il y a {{count}} mois",
|
||||
|
||||
"session.search.placeholder": "Rechercher des sessions...",
|
||||
"session.empty": "Aucune session pour l'instant. Cliquez sur + pour démarrer une nouvelle conversation.",
|
||||
"session.untitled": "Sans titre",
|
||||
"time.today": "Aujourd'hui",
|
||||
"time.yesterday": "Hier",
|
||||
"time.thisWeek": "Cette semaine",
|
||||
"time.thisMonth": "Ce mois-ci",
|
||||
"time.older": "Plus ancien",
|
||||
|
||||
"settings.aboutKiloCode.status.connected": "Connecté",
|
||||
"settings.aboutKiloCode.status.connecting": "Connexion en cours...",
|
||||
@@ -810,6 +811,16 @@ export const dict = {
|
||||
"settings.agentBehaviour.subtab.workflows": "Flux de travail",
|
||||
"settings.agentBehaviour.subtab.skills": "Compétences",
|
||||
|
||||
"settings.browser.description":
|
||||
"Lorsqu'il est activé, l'agent IA peut interagir avec les pages web — naviguer, cliquer, saisir du texte et prendre des captures d'écran. Une fenêtre Chrome s'ouvrira pour que vous puissiez observer l'agent travailler.",
|
||||
"settings.browser.enable.title": "Activer l'automatisation du navigateur",
|
||||
"settings.browser.enable.description": "Enregistrer le serveur Playwright MCP auprès du backend CLI.",
|
||||
"settings.browser.systemChrome.title": "Utiliser le Chrome système",
|
||||
"settings.browser.systemChrome.description":
|
||||
"Utiliser votre navigateur Chrome installé au lieu d'une instance Chromium séparée.",
|
||||
"settings.browser.headless.title": "Mode headless",
|
||||
"settings.browser.headless.description": "Exécuter en mode headless (sans fenêtre de navigateur visible).",
|
||||
|
||||
"settings.language.description":
|
||||
"Choisissez la langue de l'interface de Kilo Code. \"Auto\" utilise la langue d'affichage de VS Code.",
|
||||
"settings.language.auto": "Auto (langue VS Code)",
|
||||
|
||||
@@ -773,10 +773,11 @@ export const dict = {
|
||||
"time.hoursAgo": "{{count}}時間前",
|
||||
"time.daysAgo": "{{count}}日前",
|
||||
"time.monthsAgo": "{{count}}ヶ月前",
|
||||
|
||||
"session.search.placeholder": "セッションを検索...",
|
||||
"session.empty": "セッションはまだありません。+をクリックして新しい会話を始めましょう。",
|
||||
"session.untitled": "無題",
|
||||
"time.today": "今日",
|
||||
"time.yesterday": "昨日",
|
||||
"time.thisWeek": "今週",
|
||||
"time.thisMonth": "今月",
|
||||
"time.older": "それ以前",
|
||||
|
||||
"settings.aboutKiloCode.status.connected": "接続済み",
|
||||
"settings.aboutKiloCode.status.connecting": "接続中...",
|
||||
@@ -794,6 +795,16 @@ export const dict = {
|
||||
"settings.agentBehaviour.subtab.workflows": "ワークフロー",
|
||||
"settings.agentBehaviour.subtab.skills": "スキル",
|
||||
|
||||
"settings.browser.description":
|
||||
"有効にすると、AIエージェントがWebページを操作できるようになります — ナビゲーション、クリック、入力、スクリーンショットの撮影。Chromeウィンドウが開き、エージェントの作業を確認できます。",
|
||||
"settings.browser.enable.title": "ブラウザ自動化を有効にする",
|
||||
"settings.browser.enable.description": "Playwright MCPサーバーをCLIバックエンドに登録します。",
|
||||
"settings.browser.systemChrome.title": "システムChromeを使用",
|
||||
"settings.browser.systemChrome.description":
|
||||
"別のChromiumインスタンスの代わりに、インストール済みのChromeブラウザを使用します。",
|
||||
"settings.browser.headless.title": "ヘッドレスモード",
|
||||
"settings.browser.headless.description": "ヘッドレスモードで実行します(ブラウザウィンドウは表示されません)。",
|
||||
|
||||
"settings.language.description": "Kilo Code UIの言語を選択します。「自動」はVS Codeの表示言語を使用します。",
|
||||
"settings.language.auto": "自動(VS Code言語)",
|
||||
"settings.language.current": "現在:",
|
||||
|
||||
@@ -778,10 +778,11 @@ export const dict = {
|
||||
"time.hoursAgo": "{{count}}시간 전",
|
||||
"time.daysAgo": "{{count}}일 전",
|
||||
"time.monthsAgo": "{{count}}개월 전",
|
||||
|
||||
"session.search.placeholder": "세션 검색...",
|
||||
"session.empty": "아직 세션이 없습니다. +를 클릭하여 새 대화를 시작하세요.",
|
||||
"session.untitled": "제목 없음",
|
||||
"time.today": "오늘",
|
||||
"time.yesterday": "어제",
|
||||
"time.thisWeek": "이번 주",
|
||||
"time.thisMonth": "이번 달",
|
||||
"time.older": "이전",
|
||||
|
||||
"settings.aboutKiloCode.status.connected": "연결됨",
|
||||
"settings.aboutKiloCode.status.connecting": "연결 중...",
|
||||
@@ -799,6 +800,15 @@ export const dict = {
|
||||
"settings.agentBehaviour.subtab.workflows": "워크플로",
|
||||
"settings.agentBehaviour.subtab.skills": "스킬",
|
||||
|
||||
"settings.browser.description":
|
||||
"활성화하면 AI 에이전트가 웹 페이지와 상호작용할 수 있습니다 — 탐색, 클릭, 입력, 스크린샷 촬영. Chrome 창이 열려 에이전트의 작업을 확인할 수 있습니다.",
|
||||
"settings.browser.enable.title": "브라우저 자동화 활성화",
|
||||
"settings.browser.enable.description": "Playwright MCP 서버를 CLI 백엔드에 등록합니다.",
|
||||
"settings.browser.systemChrome.title": "시스템 Chrome 사용",
|
||||
"settings.browser.systemChrome.description": "별도의 Chromium 인스턴스 대신 설치된 Chrome 브라우저를 사용합니다.",
|
||||
"settings.browser.headless.title": "헤드리스 모드",
|
||||
"settings.browser.headless.description": "헤드리스 모드로 실행합니다 (브라우저 창이 표시되지 않음).",
|
||||
|
||||
"settings.language.description": 'Kilo Code UI의 언어를 선택하세요. "자동"은 VS Code 표시 언어를 사용합니다.',
|
||||
"settings.language.auto": "자동 (VS Code 언어)",
|
||||
"settings.language.current": "현재:",
|
||||
|
||||
@@ -782,10 +782,11 @@ export const dict = {
|
||||
"time.hoursAgo": "{{count}}t siden",
|
||||
"time.daysAgo": "{{count}}d siden",
|
||||
"time.monthsAgo": "{{count}} mnd. siden",
|
||||
|
||||
"session.search.placeholder": "Søk i sesjoner...",
|
||||
"session.empty": "Ingen sesjoner ennå. Klikk + for å starte en ny samtale.",
|
||||
"session.untitled": "Uten tittel",
|
||||
"time.today": "I dag",
|
||||
"time.yesterday": "I går",
|
||||
"time.thisWeek": "Denne uken",
|
||||
"time.thisMonth": "Denne måneden",
|
||||
"time.older": "Eldre",
|
||||
|
||||
"settings.aboutKiloCode.status.connected": "Tilkoblet",
|
||||
"settings.aboutKiloCode.status.connecting": "Kobler til...",
|
||||
@@ -803,6 +804,16 @@ export const dict = {
|
||||
"settings.agentBehaviour.subtab.workflows": "Arbeidsflyter",
|
||||
"settings.agentBehaviour.subtab.skills": "Ferdigheter",
|
||||
|
||||
"settings.browser.description":
|
||||
"Når aktivert kan AI-agenten samhandle med nettsider — navigere, klikke, skrive og ta skjermbilder. Et Chrome-vindu åpnes slik at du kan se agenten jobbe.",
|
||||
"settings.browser.enable.title": "Aktiver nettleserautomatisering",
|
||||
"settings.browser.enable.description": "Registrer Playwright MCP-serveren med CLI-backend.",
|
||||
"settings.browser.systemChrome.title": "Bruk system-Chrome",
|
||||
"settings.browser.systemChrome.description":
|
||||
"Bruk den installerte Chrome-nettleseren i stedet for en separat Chromium-instans.",
|
||||
"settings.browser.headless.title": "Headless-modus",
|
||||
"settings.browser.headless.description": "Kjør i headless-modus (uten synlig nettleservindu).",
|
||||
|
||||
"settings.language.description": 'Velg språket for Kilo Code-grensesnittet. "Auto" bruker VS Codes visningsspråk.',
|
||||
"settings.language.auto": "Auto (VS Code-språk)",
|
||||
"settings.language.current": "Nåværende:",
|
||||
|
||||
@@ -781,10 +781,11 @@ export const dict = {
|
||||
"time.hoursAgo": "{{count}} godz. temu",
|
||||
"time.daysAgo": "{{count}} dn. temu",
|
||||
"time.monthsAgo": "{{count}} mies. temu",
|
||||
|
||||
"session.search.placeholder": "Szukaj sesji...",
|
||||
"session.empty": "Brak sesji. Kliknij +, aby rozpocząć nową rozmowę.",
|
||||
"session.untitled": "Bez tytułu",
|
||||
"time.today": "Dzisiaj",
|
||||
"time.yesterday": "Wczoraj",
|
||||
"time.thisWeek": "Ten tydzień",
|
||||
"time.thisMonth": "Ten miesiąc",
|
||||
"time.older": "Starsze",
|
||||
|
||||
"settings.aboutKiloCode.status.connected": "Połączono",
|
||||
"settings.aboutKiloCode.status.connecting": "Łączenie...",
|
||||
@@ -802,6 +803,16 @@ export const dict = {
|
||||
"settings.agentBehaviour.subtab.workflows": "Przepływy pracy",
|
||||
"settings.agentBehaviour.subtab.skills": "Umiejętności",
|
||||
|
||||
"settings.browser.description":
|
||||
"Po włączeniu agent AI może wchodzić w interakcję ze stronami internetowymi — nawigować, klikać, pisać i robić zrzuty ekranu. Otworzy się okno Chrome, abyś mógł obserwować pracę agenta.",
|
||||
"settings.browser.enable.title": "Włącz automatyzację przeglądarki",
|
||||
"settings.browser.enable.description": "Zarejestruj serwer Playwright MCP w backendzie CLI.",
|
||||
"settings.browser.systemChrome.title": "Użyj systemowego Chrome",
|
||||
"settings.browser.systemChrome.description":
|
||||
"Użyj zainstalowanej przeglądarki Chrome zamiast oddzielnej instancji Chromium.",
|
||||
"settings.browser.headless.title": "Tryb headless",
|
||||
"settings.browser.headless.description": "Uruchom w trybie headless (bez widocznego okna przeglądarki).",
|
||||
|
||||
"settings.language.description": 'Wybierz język interfejsu Kilo Code. „Auto" używa języka wyświetlania VS Code.',
|
||||
"settings.language.auto": "Auto (język VS Code)",
|
||||
"settings.language.current": "Bieżący:",
|
||||
|
||||
@@ -785,10 +785,11 @@ export const dict = {
|
||||
"time.hoursAgo": "{{count}} ч. назад",
|
||||
"time.daysAgo": "{{count}} дн. назад",
|
||||
"time.monthsAgo": "{{count}} мес. назад",
|
||||
|
||||
"session.search.placeholder": "Поиск сессий...",
|
||||
"session.empty": "Пока нет сессий. Нажмите +, чтобы начать новую беседу.",
|
||||
"session.untitled": "Без названия",
|
||||
"time.today": "Сегодня",
|
||||
"time.yesterday": "Вчера",
|
||||
"time.thisWeek": "На этой неделе",
|
||||
"time.thisMonth": "В этом месяце",
|
||||
"time.older": "Ранее",
|
||||
|
||||
"settings.aboutKiloCode.status.connected": "Подключено",
|
||||
"settings.aboutKiloCode.status.connecting": "Подключение...",
|
||||
@@ -806,6 +807,16 @@ export const dict = {
|
||||
"settings.agentBehaviour.subtab.workflows": "Рабочие процессы",
|
||||
"settings.agentBehaviour.subtab.skills": "Навыки",
|
||||
|
||||
"settings.browser.description":
|
||||
"При включении ИИ-агент может взаимодействовать с веб-страницами — переходить по ссылкам, нажимать, вводить текст и делать скриншоты. Откроется окно Chrome, чтобы вы могли наблюдать за работой агента.",
|
||||
"settings.browser.enable.title": "Включить автоматизацию браузера",
|
||||
"settings.browser.enable.description": "Зарегистрировать сервер Playwright MCP в CLI-бэкенде.",
|
||||
"settings.browser.systemChrome.title": "Использовать системный Chrome",
|
||||
"settings.browser.systemChrome.description":
|
||||
"Использовать установленный браузер Chrome вместо отдельного экземпляра Chromium.",
|
||||
"settings.browser.headless.title": "Безголовый режим",
|
||||
"settings.browser.headless.description": "Запуск в безголовом режиме (без видимого окна браузера).",
|
||||
|
||||
"settings.language.description": "Выберите язык интерфейса Kilo Code. «Авто» использует язык отображения VS Code.",
|
||||
"settings.language.auto": "Авто (язык VS Code)",
|
||||
"settings.language.current": "Текущий:",
|
||||
|
||||
@@ -771,10 +771,11 @@ export const dict = {
|
||||
"time.hoursAgo": "{{count}} ชม. ที่แล้ว",
|
||||
"time.daysAgo": "{{count}} วันที่แล้ว",
|
||||
"time.monthsAgo": "{{count}} เดือนที่แล้ว",
|
||||
|
||||
"session.search.placeholder": "ค้นหาเซสชัน...",
|
||||
"session.empty": "ยังไม่มีเซสชัน คลิก + เพื่อเริ่มการสนทนาใหม่",
|
||||
"session.untitled": "ไม่มีชื่อ",
|
||||
"time.today": "วันนี้",
|
||||
"time.yesterday": "เมื่อวาน",
|
||||
"time.thisWeek": "สัปดาห์นี้",
|
||||
"time.thisMonth": "เดือนนี้",
|
||||
"time.older": "เก่ากว่า",
|
||||
|
||||
"settings.aboutKiloCode.status.connected": "เชื่อมต่อแล้ว",
|
||||
"settings.aboutKiloCode.status.connecting": "กำลังเชื่อมต่อ...",
|
||||
@@ -792,6 +793,15 @@ export const dict = {
|
||||
"settings.agentBehaviour.subtab.workflows": "เวิร์กโฟลว์",
|
||||
"settings.agentBehaviour.subtab.skills": "ทักษะ",
|
||||
|
||||
"settings.browser.description":
|
||||
"เมื่อเปิดใช้งาน ตัวแทน AI สามารถโต้ตอบกับหน้าเว็บได้ — นำทาง คลิก พิมพ์ และจับภาพหน้าจอ หน้าต่าง Chrome จะเปิดขึ้นเพื่อให้คุณดูการทำงานของตัวแทน",
|
||||
"settings.browser.enable.title": "เปิดใช้งานการทำงานอัตโนมัติของเบราว์เซอร์",
|
||||
"settings.browser.enable.description": "ลงทะเบียนเซิร์ฟเวอร์ Playwright MCP กับ CLI backend",
|
||||
"settings.browser.systemChrome.title": "ใช้ Chrome ของระบบ",
|
||||
"settings.browser.systemChrome.description": "ใช้เบราว์เซอร์ Chrome ที่ติดตั้งแทนอินสแตนซ์ Chromium แยกต่างหาก",
|
||||
"settings.browser.headless.title": "โหมด Headless",
|
||||
"settings.browser.headless.description": "ทำงานในโหมด headless (ไม่มีหน้าต่างเบราว์เซอร์ที่มองเห็นได้)",
|
||||
|
||||
"settings.language.description": 'เลือกภาษาสำหรับ UI ของ Kilo Code "อัตโนมัติ" จะใช้ภาษาการแสดงผลของ VS Code',
|
||||
"settings.language.auto": "อัตโนมัติ (ภาษา VS Code)",
|
||||
"settings.language.current": "ปัจจุบัน:",
|
||||
|
||||
@@ -774,10 +774,11 @@ export const dict = {
|
||||
"time.hoursAgo": "{{count}} 小时前",
|
||||
"time.daysAgo": "{{count}} 天前",
|
||||
"time.monthsAgo": "{{count}} 个月前",
|
||||
|
||||
"session.search.placeholder": "搜索会话...",
|
||||
"session.empty": "暂无会话。点击 + 开始新对话。",
|
||||
"session.untitled": "无标题",
|
||||
"time.today": "今天",
|
||||
"time.yesterday": "昨天",
|
||||
"time.thisWeek": "本周",
|
||||
"time.thisMonth": "本月",
|
||||
"time.older": "更早",
|
||||
|
||||
"settings.aboutKiloCode.status.connected": "已连接",
|
||||
"settings.aboutKiloCode.status.connecting": "连接中...",
|
||||
@@ -795,6 +796,15 @@ export const dict = {
|
||||
"settings.agentBehaviour.subtab.workflows": "工作流",
|
||||
"settings.agentBehaviour.subtab.skills": "技能",
|
||||
|
||||
"settings.browser.description":
|
||||
"启用后,AI 代理可以与网页交互 — 导航、点击、输入和截取屏幕截图。Chrome 窗口将打开,以便您观察代理的工作。",
|
||||
"settings.browser.enable.title": "启用浏览器自动化",
|
||||
"settings.browser.enable.description": "将 Playwright MCP 服务器注册到 CLI 后端。",
|
||||
"settings.browser.systemChrome.title": "使用系统 Chrome",
|
||||
"settings.browser.systemChrome.description": "使用已安装的 Chrome 浏览器,而不是单独的 Chromium 实例。",
|
||||
"settings.browser.headless.title": "无头模式",
|
||||
"settings.browser.headless.description": "以无头模式运行(无可见浏览器窗口)。",
|
||||
|
||||
"settings.language.description": '"自动"将使用 VS Code 的显示语言。选择 Kilo Code 界面的语言。',
|
||||
"settings.language.auto": "自动(VS Code 语言)",
|
||||
"settings.language.current": "当前:",
|
||||
|
||||
@@ -771,10 +771,11 @@ export const dict = {
|
||||
"time.hoursAgo": "{{count}} 小時前",
|
||||
"time.daysAgo": "{{count}} 天前",
|
||||
"time.monthsAgo": "{{count}} 個月前",
|
||||
|
||||
"session.search.placeholder": "搜尋工作階段...",
|
||||
"session.empty": "尚無工作階段。按 + 開始新的對話。",
|
||||
"session.untitled": "未命名",
|
||||
"time.today": "今天",
|
||||
"time.yesterday": "昨天",
|
||||
"time.thisWeek": "本週",
|
||||
"time.thisMonth": "本月",
|
||||
"time.older": "更早",
|
||||
|
||||
"settings.aboutKiloCode.status.connected": "已連線",
|
||||
"settings.aboutKiloCode.status.connecting": "連線中...",
|
||||
@@ -792,6 +793,15 @@ export const dict = {
|
||||
"settings.agentBehaviour.subtab.workflows": "工作流程",
|
||||
"settings.agentBehaviour.subtab.skills": "技能",
|
||||
|
||||
"settings.browser.description":
|
||||
"啟用後,AI 代理可以與網頁互動 — 導航、點擊、輸入和擷取螢幕截圖。Chrome 視窗將開啟,以便您觀察代理的工作。",
|
||||
"settings.browser.enable.title": "啟用瀏覽器自動化",
|
||||
"settings.browser.enable.description": "將 Playwright MCP 伺服器註冊到 CLI 後端。",
|
||||
"settings.browser.systemChrome.title": "使用系統 Chrome",
|
||||
"settings.browser.systemChrome.description": "使用已安裝的 Chrome 瀏覽器,而非獨立的 Chromium 實例。",
|
||||
"settings.browser.headless.title": "無頭模式",
|
||||
"settings.browser.headless.description": "以無頭模式執行(無可見瀏覽器視窗)。",
|
||||
|
||||
"settings.language.description": "選擇 Kilo Code 介面的語言。「自動」使用 VS Code 的顯示語言。",
|
||||
"settings.language.auto": "自動(VS Code 語言)",
|
||||
"settings.language.current": "目前:",
|
||||
|
||||
@@ -346,6 +346,20 @@
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
/* Dialog Confirmation */
|
||||
.dialog-confirm-body {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 16px;
|
||||
padding: 0 24px 12px 24px;
|
||||
}
|
||||
|
||||
.dialog-confirm-actions {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
/* Session List Items */
|
||||
.session-list [data-slot="list-item-title"] {
|
||||
flex: 1;
|
||||
|
||||
@@ -345,6 +345,17 @@ export interface QuestionErrorMessage {
|
||||
requestID: string
|
||||
}
|
||||
|
||||
export interface BrowserSettings {
|
||||
enabled: boolean
|
||||
useSystemChrome: boolean
|
||||
headless: boolean
|
||||
}
|
||||
|
||||
export interface BrowserSettingsLoadedMessage {
|
||||
type: "browserSettingsLoaded"
|
||||
settings: BrowserSettings
|
||||
}
|
||||
|
||||
export type ExtensionMessage =
|
||||
| ReadyMessage
|
||||
| ConnectionStateMessage
|
||||
@@ -370,6 +381,7 @@ export type ExtensionMessage =
|
||||
| QuestionRequestMessage
|
||||
| QuestionResolvedMessage
|
||||
| QuestionErrorMessage
|
||||
| BrowserSettingsLoadedMessage
|
||||
|
||||
// ============================================
|
||||
// Messages FROM webview TO extension
|
||||
@@ -480,6 +492,16 @@ export interface RenameSessionRequest {
|
||||
title: string
|
||||
}
|
||||
|
||||
export interface UpdateSettingRequest {
|
||||
type: "updateSetting"
|
||||
key: string
|
||||
value: unknown
|
||||
}
|
||||
|
||||
export interface RequestBrowserSettingsMessage {
|
||||
type: "requestBrowserSettings"
|
||||
}
|
||||
|
||||
export type WebviewMessage =
|
||||
| SendMessageRequest
|
||||
| AbortRequest
|
||||
@@ -502,6 +524,8 @@ export type WebviewMessage =
|
||||
| QuestionRejectRequest
|
||||
| DeleteSessionRequest
|
||||
| RenameSessionRequest
|
||||
| UpdateSettingRequest
|
||||
| RequestBrowserSettingsMessage
|
||||
|
||||
// ============================================
|
||||
// VS Code API type
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"version": "1.0.14",
|
||||
"version": "1.0.17",
|
||||
"name": "@kilocode/cli",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -184,15 +184,20 @@ for (const item of targets) {
|
||||
}
|
||||
|
||||
if (Script.release) {
|
||||
const archives: string[] = [] // kilocode_change
|
||||
for (const key of Object.keys(binaries)) {
|
||||
const archive = key.replace(pkg.name, "kilo") // kilocode_change
|
||||
if (key.includes("linux")) {
|
||||
await $`tar -czf ../../${archive}.tar.gz *`.cwd(`dist/${key}/bin`) // kilocode_change
|
||||
const out = path.resolve("dist", `${archive}.tar.gz`) // kilocode_change
|
||||
await $`tar -czf ${out} *`.cwd(`dist/${key}/bin`) // kilocode_change
|
||||
archives.push(out) // kilocode_change
|
||||
} else {
|
||||
await $`zip -r ../../${archive}.zip *`.cwd(`dist/${key}/bin`) // kilocode_change
|
||||
const out = path.resolve("dist", `${archive}.zip`) // kilocode_change
|
||||
await $`zip -r ${out} *`.cwd(`dist/${key}/bin`) // kilocode_change
|
||||
archives.push(out) // kilocode_change
|
||||
}
|
||||
}
|
||||
await $`gh release upload v${Script.version} ./dist/*.zip ./dist/*.tar.gz --clobber`
|
||||
await $`gh release upload v${Script.version} ${archives} --clobber` // kilocode_change
|
||||
}
|
||||
|
||||
export { binaries }
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"name": "@kilocode/plugin",
|
||||
"version": "1.0.14",
|
||||
"version": "1.0.17",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
"exports": {
|
||||
".": "./src/index.ts"
|
||||
},
|
||||
"version": "1.0.14",
|
||||
"version": "1.0.17",
|
||||
"dependencies": {},
|
||||
"peerDependencies": {}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"name": "@kilocode/sdk",
|
||||
"version": "1.0.14",
|
||||
"version": "1.0.17",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@opencode-ai/ui",
|
||||
"version": "1.0.14",
|
||||
"version": "1.0.17",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"exports": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@opencode-ai/util",
|
||||
"version": "1.0.14",
|
||||
"version": "1.0.17",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@kilocode/upstream-merge",
|
||||
"version": "1.0.0",
|
||||
"version": "1.0.17",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"description": "Scripts for automating upstream opencode merges into Kilo",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "opencode",
|
||||
"displayName": "opencode",
|
||||
"description": "opencode for VS Code",
|
||||
"version": "1.0.14",
|
||||
"version": "1.0.17",
|
||||
"publisher": "sst-dev",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
||||
Reference in New Issue
Block a user