Commit Graph
19803 Commits
Author SHA1 Message Date
kilo-maintainer[bot] 30e45c7366 chore: update kilo-vscode visual regression baselines 2026-07-09 15:49:19 +00:00
marius-kilocode 39468b0441 fix(vscode): clarify effective permissions 2026-07-09 17:44:05 +02:00
kilo-maintainer[bot] 3cddd07ad4 release: v7.4.5 2026-07-09 14:31:42 +00:00
Marius 18513e357b Merge pull request #12073 from Kilo-Org/research-agent-manager-default-model
fix(agent-manager): inherit model and variant in tool sessions
2026-07-09 16:23:43 +02:00
marius-kilocode 71aa54e413 fix(agent-manager): inherit model and variant in tool sessions 2026-07-09 15:38:44 +02:00
marius-kilocode b7700a82ef fix(cli): retry transient npm publish failures 2026-07-09 15:32:20 +02:00
kilo-maintainer[bot] 2c175fbd25 release: v7.4.4 2026-07-09 13:13:38 +00:00
Kirill Kalishev 7e1d2339aa Merge pull request #12047 from Kilo-Org/dark-shield
feat(jetbrains): add repo CLI dev mode
2026-07-09 08:50:57 -04:00
Marius 323ec11576 Merge pull request #12049 from Kilo-Org/configure-network-sandbox-settings
feat: promote sandbox configuration
2026-07-09 14:10:03 +02:00
kilo-maintainer[bot] 2464bfe475 release: v7.4.3 2026-07-09 11:55:41 +00:00
marius-kilocode ba06d772ae docs: address sandbox review feedback 2026-07-09 13:52:10 +02:00
marius-kilocode e55ded1941 fix(cli): clarify SWE-Pruner usage guidance 2026-07-09 13:02:33 +02:00
MariusandJoshua Lambert 5697e7169a Update packages/kilo-docs/pages/getting-started/settings/sandboxing.md
Co-authored-by: Joshua Lambert <25085430+lambertjosh@users.noreply.github.com>
2026-07-09 12:59:51 +02:00
marius-kilocode 2aba150983 refactor(cli): generalize SWE-Pruner focus guidance 2026-07-09 12:59:04 +02:00
marius-kilocode ed36326b1f feat(cli): prune large bash outputs with SWE-Pruner 2026-07-09 12:26:37 +02:00
Marius 833d78b99c Merge pull request #12054 from Kilo-Org/fix/prompt-active-run-test-timeout
test(cli): stabilize active-run prompt test
2026-07-09 11:41:20 +02:00
Evgeny Shurakovandkiloconnect[bot] 047364eb3c feat: add dev:local script to run CLI against local cloud dev server (#12055)
* feat: add dev:local script to run CLI against local cloud dev server

* fix(cli): validate --cloud flag has a value in dev-local.ts

---------

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-07-09 11:00:01 +02:00
Marius 61d90f166a fix(cli): exclude scoped instructions from SWE-Pruner (#12052)
* fix(cli): preserve scoped instructions during pruning

* test(cli): cover CRLF scoped instructions
2026-07-09 10:50:05 +02:00
Marius 78ac5ffc91 Merge pull request #12045 from Kilo-Org/investigate-darwin-test-failures
test(cli): stabilize process-heavy integration tests
2026-07-09 10:49:23 +02:00
kilo-maintainer[bot] 6509c66b4b release: v7.4.2 2026-07-08 20:39:16 +00:00
kirillk 86a02bfd6c fix(jetbrains): address repo CLI review feedback 2026-07-08 15:59:44 -04:00
marius-kilocode b33e28ceb2 test(cli): stabilize active-run prompt test 2026-07-08 21:25:28 +02:00
kirillk df0fdb63fa chore(jetbrains): open CLI pin bump PR after release 2026-07-08 15:10:34 -04:00
kilo-maintainer[bot] 4ebfea867f chore: update kilo-vscode visual regression baselines 2026-07-08 18:52:21 +00:00
marius-kilocode fe7eff7e27 feat: promote sandbox configuration 2026-07-08 20:48:27 +02:00
Kirill Kalishev 7e7455982e Merge pull request #12044 from Kilo-Org/investigate-jetbrains-test-flakiness
fix(jetbrains): stabilize workspace reload state
2026-07-08 14:48:14 -04:00
kirillk 616012edf3 Merge remote-tracking branch 'origin/dark-shield' into dark-shield 2026-07-08 13:52:41 -04:00
kirillk b88175f6ec docs(jetbrains): add CLI pin release helpers 2026-07-08 13:51:54 -04:00
marius-kilocode 74b6534bea docs: clarify sandbox security boundaries 2026-07-08 19:31:38 +02:00
Josh Holmer 22b9f7fd93 fix(indexing): respect nested ignore files during codebase indexing (#12042) 2026-07-08 19:15:20 +02:00
marius-kilocode 394af39c64 fix(vscode): move sandbox toggle into sandbox settings 2026-07-08 19:13:20 +02:00
Kirill Kalishev 65ed7aaadb Merge branch 'main' into dark-shield 2026-07-08 12:48:33 -04:00
kirillk 98d8d22ae8 feat(jetbrains): add repo CLI dev mode 2026-07-08 12:31:37 -04:00
Marius d5c75b7da9 Merge pull request #12043 from Kilo-Org/fix/10361-dismissed-question-visibility-vr2
fix: show dismissed question content in chat history
2026-07-08 18:25:45 +02:00
marius-kilocode 57e2734071 test(cli): stabilize process-heavy integration tests 2026-07-08 18:22:48 +02:00
Johnny Eric Amancio 0bac434f3c fix(memory): drop filename allowlist from diff durability check (#12041)
* fix(memory): drop filename allowlist from diff durability check

hasDurableDiff mixed two signals in one bit: did the turn do real work,
and should it skip the consolidation throttle. The allowlist deciding
both was filename and extension based, so small edits outside the listed
patterns could be dropped as echo or trivial.

Split it: hasUserEdit (any non-generated file change) now gates echo and
trivial, hasSubstantialDiff (20+ lines churn, any language) decides the
throttle bypass. The filename allowlist and its English word list are
gone.

* refactor(memory): keep single-word name for generated regex
2026-07-08 18:20:52 +02:00
Marius 885a994106 fix(agent-manager): defer automatic branch naming until intent is clear (#12002)
* fix(agent-manager): defer automatic branch naming until intent is clear

Agent Manager auto branch naming (PR #11741) renamed the placeholder
branch on the first user message, so a read-only question like "check if
issue #11903 was fixed?" locked the branch to investigate-issue-11903
immediately. Renaming is one-shot, so a later pivot to actually fixing the
issue could not recover the branch name.

Defer naming until there is evidence of a durable workstream:
- The first user message never triggers a rename via the send path;
  prompts 2-4 may, and after four prompts without a rename the worktree
  disarms permanently (fixing an unbounded-retry bug where null responses
  re-fired an LLM call on every message forever).
- A new idle trigger renames once when the armed session goes idle and the
  worktree already has work (dirty files or commits ahead of base), so a
  single detailed first prompt that produces edits still gets named without
  naming on message 1.
- The rename itself only runs while the session is idle: names generated
  while the agent is busy are held and applied on the next idle transition
  with all guards re-checked, removing mid-turn name-capture races.

Also tighten the CLI branch-name prompt to return null for read-only
status/verification questions as a second layer behind the structural
gates.

* fix(agent-manager): address review on branch naming

- generateOnIdle now checks the auto-naming setting before dispatching,
  matching prompt(), so a setting toggled off after arming disarms without
  a wasted LLM roundtrip.
- prompt() also suppresses dispatch while a rename is pending, closing the
  redundant-generation window the busy path left open; the generate comment
  now accurately describes both the immediate and pending rename paths.
- Expose forget(worktreeId) and call it from both worktree-removal handlers
  so the controller's pending/model/idleAttempted entries are reclaimed when
  a worktree is deleted mid-flight.
- hasWork logs the rev-list error instead of silently swallowing it, while
  still failing safe to false (placeholder name kept).
- Reword the CLI prompt's null condition to a clear "only ask a question and
  do not describe work to perform", dropping the vague temporal clause.

* fix(agent-manager): clean busySessions in forget and call before worktree removal
2026-07-08 18:08:58 +02:00
Marius 81c7bd18ee Merge branch 'main' into fix/10361-dismissed-question-visibility-vr2 2026-07-08 18:05:56 +02:00
V Keerthi Vikram dfa712d989 feat: add AI image generation tool (#11826)
* feat: add AI image generation tool

Port the legacy generate_image tool to the opencode-based CLI as a
Kilo-owned tool gated by experimental.image_generation config flag.

- New generate_image tool with prompt/path/image/model params
- Routes through Kilo Gateway (zero-config) or BYO OpenRouter key
- Supports text-to-image generation and image editing
- Dynamic model discovery via GET /kilo/models/images endpoint
- VS Code settings toggle + live model dropdown in Experimental tab
- Writes image to disk and returns inline FilePart attachment
- Fallback model catalog for offline resilience

* refactor: change default image model to openrouter/auto

* fix: address bot review feedback

- Remove unused fetchKiloImageModels import in tool
- Normalize jpg→jpeg MIME in parser, input image, and attachment
- Replace mismatched extensions in ensureExtension (not just append)
- Add assertExternalDirectoryEffect for output path traversal guard
- Map unauthorized errors to 401 (not 400) in image models handler
- Keep last known model list on fetch failure (don't overwrite with empty)
- Fix tool description (remove false web search claim, fix grammar)
- Remove duplicated provider resolver tests

* fix: add retry for image models request to handle backend startup race

* fix(image-generation): address kilo bot review comments

- ensureExtension replaces mismatched image extensions instead of
  appending (photo.jpg + PNG -> photo.png, not photo.jpg.png)
- Gateway /models/images normalizes errors to 400/401 matching every
  other gateway route (was leaking undeclared upstream statuses)
- Add 401 response to openapi.json + SDK types for /kilo/models/images
  to match the gateway's errors(400, 401) declaration

* fix(gateway): align /models/images error handling with other gateway routes

* refactor: switch image generation to effect HttpClient

* test: cover kilo models images endpoint in httpapi exercise scenarios

* Exclude POST-only and parameterized API endpoints from link checker

* Add ImageModelsProvider to agent manager context tree

* chore(deps): bump @openrouter/ai-sdk-provider to 2.10.0

Switches imageModel() to OpenRouter's POST /api/v1/images endpoint for
proper image usage/billing and image-specific params.

* fix: address image generation PR review feedback

- revert @openrouter/ai-sdk-provider 2.9.0->2.10.0 bump (image tool uses raw HTTP, not the SDK)
- translate image generation settings strings across all locales
- use central KILO_OPENROUTER_BASE instead of hardcoded URL fallback
- remove completed plan file

* chore: refresh source-links.md after URL refactor
2026-07-08 18:01:01 +02:00
kirillk 71b2c3a5d8 fix(jetbrains): stabilize workspace reload state 2026-07-08 11:11:02 -04:00
github-actions[bot] bdb71652d5 chore: update kilo-vscode visual regression baselines 2026-07-08 14:52:13 +00:00
Thomas Brugman 8ff2a163af fix: show dismissed question content in chat history (#10361) 2026-07-08 16:46:46 +02:00
Christiaan Arnoldus b27c1dd832 Merge pull request #11825 from jackson-zhou/fix/11709-custom-model-input-modalities
fix(vscode): expose custom model image modality
2026-07-08 16:21:10 +02:00
Kirill Kalishev 2b8d19617d Merge pull request #12023 from Kilo-Org/docs/jetbrains-installation-docs
docs(jetbrains): update plugin installation docs
2026-07-08 09:45:46 -04:00
Drilmoandmarius-kilocode adcbe0f373 feat(opencode): experimental SWE-Pruner for task-aware tool output pruning (#11980)
* feat(opencode): experimental SWE-Pruner for task-aware tool output pruning

Adds an experimental.swe_pruner config flag (default off). When enabled,
the read and grep tools advertise an optional context_focus_question
parameter; when the agent provides it, large outputs are skimmed by the
small model down to the lines relevant to the question, with omitted
sections marked inline. Failures fall back to the full output.

Based on SWE-Pruner (arXiv:2601.16746).

* chore: regenerate source-links for swe-pruner arxiv reference

* fix(opencode): address swe-pruner review suggestions

Harden the skimmer instruction against prompt injection from untrusted
tool output, and document that pruning runs before the tool.execute.after
hook so plugins observe the model-facing output.

* feat(ui): surface SWE-Pruner activity on read/grep tool rows

The read renderer hides tool output entirely, so pruning was invisible in
the webview even though the model received the pruned output. Show a
'SWE-Pruner · kept/total' row driven by the swePruner tool metadata.

* chore: retrigger CI (flaky windows/jetbrains tests, review service delivery error)

* feat(opencode): configurable SWE-Pruner skimming model

Adds experimental.swe_pruner_model (provider/model format) with a model
selector in the VS Code Experimental tab, shown when SWE-Pruner is
enabled. Falls back to the configured small model when unset or when the
configured model is unavailable.

* fix(ui): localize the SWE-Pruner pruning indicator

Replace the hardcoded label with a ui.tool.swePruned i18n key
(interpolated kept/total) added to all 20 shared UI locales.

* chore: retrigger CI (windows bun install network timeout on tree-sitter-powershell)

---------

Co-authored-by: marius-kilocode <marius@kilocode.ai>
2026-07-08 13:44:57 +00:00
Christiaan Arnoldus d13ca70435 Merge branch 'main' into fix/11709-custom-model-input-modalities 2026-07-08 14:47:09 +02:00
Mark IJbema 86498df2a7 Merge pull request #11631 from Kilo-Org/mark/multilingual-notebook-autocomplete
feat(vscode): support multilingual notebook autocomplete
2026-07-08 14:05:59 +02:00
Mark IJbema 5c96360202 Merge pull request #12034 from Kilo-Org/mark/warn-leftover-opencode-config
feat(opencode): warn users about leftover opencode configuration
2026-07-08 13:51:50 +02:00
markijbemaandkiloconnect[bot] 98bf848027 docs(cli): link opencode config notice to client-neutral settings page
Point the notification at getting-started/settings instead of the CLI
platform page, and add the opencode migration callout there so the
neutral page is self-contained for VS Code and JetBrains users too.

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-07-08 11:33:36 +00:00
markijbemaandkiloconnect[bot] d3b8ae6ec5 refactor(cli): surface opencode config notice via dismissible notifications
Move the leftover-.opencode-directory detection off the always-on config
warning and into the cloud notifications list (client.kilo.notifications),
so it flows through each client's per-id dismissal: dismiss it once and it
won't return unless the directory is still present.

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-07-08 11:12:03 +00:00