Add missing recommended and recommendedIndex optional fields to the
Provider.Model zod schema and propagate them in fromModelsDevModel and
config model construction. Also regenerate SDK types and OpenAPI spec
to include these fields.
Fixes typecheck errors in dialog-model.tsx where these properties were
referenced but not defined on the Model type.
Replace hardcoded KILO_RECOMMENDED_MODELS with dynamic data from the
API's preferredIndex field. The cloud API already returns preferredIndex
on recommended models - this change parses it and flows it through to
the TUI model picker.
Changes:
- Parse preferredIndex from API response in kilo-gateway
- Add recommended/recommendedIndex fields to ModelsDev.Model schema
- Use dynamic recommended data in TUI model dialog with fallback to
hardcoded list for backward compatibility
* docs: add MCP config file path (~/.config/kilo/opencode.json)
- README: state where MCP is configured and format (mcp object, type local, command array)
- migration.md: add config file location section for macOS/Linux/Windows and format
* docs(mcp): align with code — path, filenames, schema refs
- README: mention opencode.jsonc; optional fields (environment, enabled, timeout); link to global/index.ts and config.ts McpLocal
- migration.md: document config load order (config.json, opencode.json, opencode.jsonc); Windows note (xdg-basedir); Config.McpLocal and file refs
Disable reasoning for Claude models via Kilo Gateway until the
OpenRouter AI SDK is upgraded to v2.x (which includes the fix for
reasoning_details duplication - OpenRouterTeam/ai-sdk-provider#344).
Changes:
- Remove hardcoded reasoning effort for Claude in options()
- Return empty variants for Claude in variants()
- Remove Claude-specific reasoning.effort in smallOptions()
- Keep thinking/reasoning block stripping code (prevents corrupt
reasoning_details from being sent back to the API)
- Caching continues to work via model.api.id matching
Fixes#303
Enable the question tool for the vscode client and implement the full
question flow: SSE events, HTTP reply/reject endpoints, session state,
DataBridge wiring, and an inline QuestionDock component that replaces
the prompt input while a question is pending.
Closes#238
* Change USER_AGENT prefix from 'opencode' to 'kilo'
* fix: use KILO_VERSION/KILO_CHANNEL globals and add kilocode_change marker
---------
Co-authored-by: Marius <marius@kilocode.ai>
Previously prompt caching via applyCaching() was disabled for both
OpenRouter and Kilo Gateway to avoid modifying thinking blocks. PR #270
re-enabled it for Kilo Gateway only. This change re-enables it for both
providers by including isOpenRouterOrKilo in the caching condition.
Thinking block stripping still applies to both providers before caching
is applied, so the original concern about modified thinking blocks is
addressed.
* fix: support remote MCP server migration in mcp-migrator
The MCP migrator only handled stdio/local MCP servers. When a user
configured a remote streamable-http or sse MCP server in
.kilocode/mcp_settings.json, it failed with:
The "file" argument must be of type string. Received undefined
This happened because convertServer() always assumed local servers,
building a command array from server.command (which is undefined for
remote servers).
Changes:
- Add remote transport type detection (streamable-http, sse)
- Convert remote servers to Config.McpRemote (type: "remote")
- Pass through url and headers fields
- Make command optional in KilocodeMcpServer interface
- Add comprehensive tests for remote server migration
* fix: validate url/command before use in mcp-migrator
Add guard clauses for missing url on remote servers and missing command
on local servers instead of using non-null assertions that could crash
on malformed config files.
---------
Co-authored-by: Kilo Agent <agent@kilo.ai>
Co-authored-by: marius-kilocode <marius@kilocode.ai>
* feat: changelog generation
* refactor: rename all ENV variables to KILO prefix
* refactor: publish rework
* refactor: publish rework
* refactor: unify git commiter action
* refactor: add all kilobots to the team
* feat: add ask agent for read-only Q&A mode
Add a new primary 'ask' agent that answers questions and explains code
without making changes. Permissions are read-only: read, grep, glob,
list, question, webfetch, websearch, codesearch — edit, bash, and task
are denied. Migrators already had 'ask' in their known mode lists.
* fix: preserve .env read gating in ask agent, clarify read-only prompt
Address PR review feedback:
- Re-state *.env pattern map in ask agent permissions so the blanket
deny+allow doesn't bypass the default env file gating
- Update prompt to say 'this agent is read-only' instead of implying
edits are possible on request
- Add .env gating assertions to ask agent test
* fix: handle AbortError during kilo login and org selection
Async onSelect handlers in DialogKiloOrganization and team selection
were not wrapped in try/catch. Since DialogSelect calls onSelect
without awaiting the returned promise, any rejection (e.g. AbortError
from SDK signal) became an unhandled rejection that Bun dumped raw to
the terminal. Wrap all async SDK calls in org/team selection with
proper error handling and silently ignore AbortErrors.
* fix: log non-abort errors during fallback sync reset