* fix(cli): prevent unbounded log file growth with size-based rotation
Fix two issues causing log files to grow to 50+ GB:
1. Server middleware leaked a "started" log line for skipped endpoints
because log.time() was called unconditionally — only timer.stop()
was gated by the skipLogging flag. Restructure to early-return for
skipped paths so no logging occurs at all.
2. Log files had no size limit within a session. A long-running
kilo serve process (e.g. VS Code extension) would write a single
file indefinitely. Add rotating-file-stream (50 MB, maxFiles: 1)
to cap log file size automatically.
* fix(cli): address review feedback on log rotation
- Revert server.ts changes (handled separately in #8141)
- Add error/warning event handlers on rotating-file-stream
- Increase maxFiles from 1 to 3 for better debug headroom
- Set explicit history file path to avoid .txt side-effect
* fix(cli): revert maxFiles back to 1
maxFiles: 1 is sufficient — we only need to cap disk usage, not retain
old rotated fragments. The existing cleanup() handles session-level
file retention separately.
* fix(cli): set maxFiles to 10 for log rotation
- Add win32/arm64 target to packages/opencode/script/build.ts
- Add win32-arm64 target to packages/kilo-vscode/script/build.ts and publish.ts
- Add @parcel/watcher-win32-arm64@2.5.1 optional dev dependency to packages/opencode/package.json
- Update RELEASING.md to document win32-arm64 CLI and VSIX targets
* feat: add WarpGrep AI-powered codebase search tool
Add WarpGrep integration as a new tool for intelligent multi-step
codebase search. WarpGrep delegates search to Morph's RL-trained
search agent, which runs parallel tool calls across multiple turns
and returns only relevant code spans.
- Add WarpGrep core client with multi-turn API loop, local tool
executors (ripgrep, file read, directory list), and XML parsing
- Add tool definition gated behind KILO_ENABLE_WARPGREP flag
- Register tool in registry with feature flag gating
- Add warpgrep permission to orchestrator, ask, and explore agents
- Conditionally enhance explore agent prompt when WarpGrep available
- Add unit tests for parsing, file ops, and tool registration
* fix: align warpgrep with Morph XML protocol
* chore: drop warpgrep test changes from branch
* chore: remove warpgrep test files from branch
* refactor: replace custom WarpGrep implementation with @morphllm/morphsdk
- Delete 396-line custom warpgrep.ts, replace with SDK's WarpGrepClient
- Only check MORPH_API_KEY (drop WARPGREP_API_KEY)
- Route through Kilo proxy during free period when no API key is set
- Add actionable error message for when free period ends
- Grep for FREE_PERIOD_TODO to find what to change post-free-period
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: rename warpgrep to codebase_search, add error toast for 429/402
- Rename tool from warpgrep to codebase_search throughout
- Switch proxy URL to /api/gateway
- Detect auth/rate-limit errors (401/402/429) and show actionable
fallback message telling users to set MORPH_API_KEY
- Fire a TUI toast notification on auth/rate-limit errors so users
see a visible popup, not just hidden tool output
- Wire up GlobalBus "global.event" in TUI thread so Bus events from
tools can reach the TUI event system
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* build: bump @morphllm/morphsdk to 0.2.141
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: use Bus.publish for toast, revert global.event subscription
Address PR review: emit toast via Bus.publish(TuiEvent.ToastShow)
instead of GlobalBus.emit() so it works in both direct-RPC and
server-backed TUI modes. Revert the global.event subscription in
createEventSource since it's no longer needed and caused double
event delivery.
Also update codebase_search tool description to clarify natural
language input.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add codebase search toggle to experimental settings
Replace KILO_ENABLE_WARPGREP env var with a UI toggle in the
Experimental settings tab. The tool is now gated by the
experimental.codebase_search config field, accessible from both
VSCode settings and TUI config file.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update packages/opencode/src/tool/warpgrep.ts
Co-authored-by: Marius <marius@kilocode.ai>
* feat: limit codebase_search output to prevent context bloat
When search results exceed 45k chars (~15k tokens), degrade to showing
file paths and line ranges instead of full content. Also bumps
@morphllm/morphsdk from 0.2.129 to 0.2.147.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* build: bump @morphllm/morphsdk to 0.2.148
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix: format codebaseSearch i18n strings to respect prettier line width
* fix: only advertise codebase_search in explore prompt when feature flag is enabled
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Christiaan Arnoldus <christiaan.arnoldus@outlook.com>
Co-authored-by: Marius <marius@kilocode.ai>