- Add POST /telemetry/capture endpoint to CLI server
- Add TelemetryProxy singleton in extension (forwards to CLI)
- Add webview telemetry helper (postMessage → extension → CLI)
- Pass telemetry env vars (level, editor_name, platform, machineId) to CLI
- Wire up KiloProvider as TelemetryPropertiesProvider
- Replace TelemetryStub with real TelemetryProxy in autocomplete
- 53 telemetry events covering tasks, LLM, tools, UI, autocomplete, etc.
Replace opencode-ai with @kilocode/cli and opencode with kilo in all
package manager uninstall commands (npm, pnpm, bun, yarn, brew, choco,
scoop). Also update shell config detection and cleanup to handle both
legacy opencode and kilo path markers for backward compatibility.
Add a new X-KILOCODE-MACHINEID header to API requests sent to the Kilo
gateway. The machine ID is a persistent UUID that uniquely identifies
the machine, reusing the existing telemetry identity system which stores
the ID in the global XDG data directory (~/.local/share/kilo/telemetry-id).
Changes:
- Add HEADER_MACHINEID constant to kilo-gateway constants
- Add machineId option to buildKiloHeaders function
- Export HEADER_MACHINEID from kilo-gateway package
- Send machine ID header on kilo provider API requests in session/llm.ts
using Identity.getMachineId() from kilo-telemetry
* 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