1704 Commits
Author SHA1 Message Date
marius-kilocode a3769d83de fix(cli): keep prompt enhancement in rewrite mode 2026-05-15 10:10:34 +02:00
Catriel Müller 7bc46c54d8 Merge pull request #10263 from Kilo-Org/axiomatic-gouda
fix(cli): chunk oversized compactions
2026-05-14 15:16:26 -03:00
Catriel Müller c1a797c1f1 fix(cli): chunk oversized compactions 2026-05-14 11:26:28 -03:00
Marius e4e3a36174 Merge pull request #10218 from Kilo-Org/perpetual-parmesan
Configure auto compaction threshold
2026-05-13 21:33:16 +02:00
Catriel Müller 7f6fe7feac refactor: fix exit status code 2026-05-13 13:54:51 -03:00
Catriel Müller aab35c9d18 refactor: fix test // typecheck 2026-05-13 13:17:09 -03:00
marius-kilocode 4860e654ca feat: configure auto compaction threshold 2026-05-13 18:09:54 +02:00
Catriel Müller dbf938841b Merge branch 'main' into feat/roll-call-command 2026-05-13 12:40:24 -03:00
Catriel Müller e8078b88b9 refactor: fix test types 2026-05-13 12:24:12 -03:00
Catriel Müller 54916e9c44 refactor: address the comments 2026-05-13 12:19:15 -03:00
Catriel Müller 2886183aaf refactor: move the command to the kilo folder 2026-05-13 11:33:00 -03:00
Alex Alecu 4f13e85913 fix(cli): track /review completions in telemetry 2026-05-13 11:38:57 +03:00
Catriel Müller 2d5f6f3478 refactor: rebase from main 2026-05-13 00:23:04 -03:00
Catriel Müller 109d59a312 refactor: add support for all markdown files 2026-05-12 23:54:43 -03:00
Catriel Müller 8d23e17141 refactor: isolate kilochange 2026-05-12 23:47:46 -03:00
Maksym Mospanenko 3ca9941bbf feat(config): add escapeJson parameter to substitute for raw content handling
Add optional `escapeJson` parameter to `ConfigPaths.substitute` to control
whether file content should be JSON-escaped. When `false`, multiline content
and special characters are preserved as-is, which is required for agent
markdown prompts that need raw file content rather than escaped strings.

Update agent config processing to pass `escapeJson: false` when substituting
file content into markdown prompts, ensuring proper handling of multiline
files without unwanted escape sequences.

Add comprehensive test coverage for the new parameter and existing
substitution functionality.
2026-05-12 23:44:06 -03:00
Maksym Mospanenko 80edeee58f feat(config): add {file:...} syntax support for agent markdown prompts
Enable file content substitution in agent configuration prompts using the
existing `ConfigPaths.substitute` utility. This allows agent markdown files
to reference external file contents via `{file:path}` syntax, with missing
files resolving to empty strings.

Export `substitute` function from ConfigPaths to support agent config
processing.
2026-05-12 23:39:07 -03:00
Kirill Kalishev 55abf13cfa Merge pull request #10095 from Kilo-Org/ionized-emmental
fix(vscode,cli): sync mode model selection and restore plan follow-up picker
2026-05-12 17:52:31 -04:00
Catriel Müller 305ec5c107 Merge branch 'main' into issue-7861 2026-05-12 11:21:32 -03:00
af902eb359 fix: catch EEXIST from recursive mkdir on Windows (#9794)
* fix: catch EEXIST from recursive mkdir on Windows

fs.mkdir with { recursive: true } can still throw EEXIST on Windows
when the target directory is backed by an NTFS reparse point (OneDrive),
a directory junction, or a WSL-served path. libuv's recursive walk
doesn't treat these as regular directories, so mkdir with recursive:true
attempts to create an already-existing path segment and fails.

This adds a defensive EEXIST catch at both directory-creation origins:
- AppFileSystem.ensureDir / writeWithDirs (snapshots, config, plans)
- Encoding.write (all tool writes and edits)

No functional change on Linux/macOS where EEXIST is never thrown from
recursive mkdir.

Fixes #9618, #9755

* fix: remove extra arg from mkdirSafe call, add unit tests

* docs(kilo-docs): update auto-generated source links

Add 2 new GitHub issue references (9618, 9755) from encoding.ts
and update URL count from 84 to 86.

---------

Co-authored-by: nimgrim <nimgrim@users.noreply.github.com>
Co-authored-by: Imanol Maiztegui <imanol.mzd@gmail.com>
2026-05-12 13:17:49 +00:00
Marius 8af638e7e2 Fix expired Codex auth recovery (#10136)
* fix: recover expired Codex auth

* fix: minimize Codex auth shared changes

* fix: format Codex auth prompt
2026-05-12 09:27:32 +02:00
Kirill Kalishev 9c554f0330 Merge branch 'main' into ionized-emmental 2026-05-11 12:55:04 -04:00
Catriel Müller 41596c5565 Merge pull request #10152 from Kilo-Org/glittery-writer
fix(cli): normalize IDN hostnames to punycode in permission dialogs
2026-05-11 13:39:23 -03:00
Catriel Müller a0dcf76177 fix(cli): strip trailing sentence punctuation from URL matches in normalizeUrls
\S+ was greedily consuming trailing punctuation (. ! , ;) into the URL
match, causing new URL() to mutate clean ASCII URLs — e.g.
"see https://example.com." became "see https://example.com./".

Fix: strip trailing sentence punctuation before parsing, extract and
replace only the hostname (not href) to avoid adding trailing slashes to
bare origins, and restore the stripped tail afterward.
2026-05-11 13:18:49 -03:00
Catriel Müller 9064478949 test(cli): add unit tests for normalizeUrls homograph protection 2026-05-11 12:55:08 -03:00
Truffleandmarius-kilocode 00313bfcd4 fix(tool): clarify semantic_search returns snippets not file paths (#10142)
* fix(tool): clarify semantic_search returns snippets not file paths

The first description bullet read "Find files most relevant to the
search query using semantic search.", which led an AI agent to tell a
user that the tool returns file paths only. The tool actually returns
matching content with file paths, line ranges, and relevance scores.

Updates the first two description bullets to name the output shape
directly. No runtime change.

Closes #9767.

* test(cli): cover semantic_search description

---------

Co-authored-by: marius-kilocode <marius@kilocode.ai>
2026-05-11 14:15:41 +00:00
Catriel Müller f383258f80 Merge pull request #10121 from shssoichiro/apply-auto-to-subagents
fix(cli): apply `--auto` flag to subagents from Task tool
2026-05-11 11:02:53 -03:00
Marius 33a233fd11 fix(cli): prevent nested subagent delegation (#10137) 2026-05-11 15:13:08 +02:00
Catriel Müller 8e90f29695 fix(cli): improve model info panel scrollbar padding and capabilities display 2026-05-11 09:50:01 -03:00
Josh Holmer 9963b0271a fix(cli): apply --auto flag to subagents from Task tool 2026-05-10 00:50:32 -04:00
kirillk 931b803068 test(cli): update QuestionOption wire-shape snapshot to include mode field 2026-05-09 22:16:53 -04:00
kirillk c7fa827662 test(cli): add contract tests for QuestionOption Kilo-specific fields 2026-05-09 21:30:16 -04:00
kirillk b539c6920e fix(vscode): add mode field to plan follow-up Continue here option so picker updates instantly 2026-05-09 20:50:12 -04:00
Catriel Müller 86287939e6 Merge pull request #10080 from Kilo-Org/foam-log
fix: robust provider handling when credentials are misconfigured
2026-05-08 16:46:22 -03:00
kiloconnect[bot] 8651bdceac test(cli): assert apply_patch returns non-mojibake diff for non-UTF-8 files
The existing apply_patch encoding test only checked final file bytes,
which were correct because Patch.deriveNewContentsFromChunks does its
own encoding-aware read. The diff and additions/deletions counts
returned to the user (and shown in the permission prompt) were
nonetheless garbled because the surrounding tool reused a hard-coded
UTF-8 decoder. Pin the diff metadata to catch that regression.
2026-05-08 18:00:29 +00:00
Catriel Müller cd67db9501 fix: kilocode markers 2026-05-08 14:54:30 -03:00
Catriel Müller 11297e4c5a fix: fix providers with wrong credentials 2026-05-08 13:32:35 -03:00
Catriel Müller 875f414ab7 Merge pull request #10036 from Kilo-Org/catrielmuller/prompt-flaky-test
test(cli): fix flaky prompt.test.ts timing races
2026-05-08 09:27:32 -03:00
Marius eb8334db01 fix(agent-manager): preserve promoted session worktree context (#10058)
* fix(agent-manager): preserve promoted session worktree context

* fix(cli): guard worktree context outside instance scope
2026-05-08 13:45:47 +02:00
Christiaan Arnoldus 0397767075 Merge pull request #10014 from Kilo-Org/fix/kilo-provider-cost-anthropic-messages
fix(cli): extract Kilo provider cost from Anthropic Messages and OpenAI Responses APIs (OpenRouter)
2026-05-08 10:51:01 +02:00
kiloconnect[bot] c8446f5231 docs(cli): clarify why Kilo prefers upstream cost over gateway cost
Kilo isn't always BYOK; what matters here is that Kilo doesn't charge a
per-request fee on top of the upstream inference cost. So for the Kilo
provider, the gateway/marketplace `cost` would understate the user's true
spend — always prefer the upstream/market cost when present.
2026-05-08 08:19:44 +00:00
Catriel Müller 8308d9b5de fix: fix flasky test 2026-05-07 15:46:56 -03:00
Marius 9de7c986e7 Support Kilo-hosted indexing embeddings (#9851)
* feat: support Kilo-hosted indexing embeddings

* fix: format indexing settings

* fix: serialize local model persistence

* fix: annotate local model persistence

* fix: stabilize MCP OAuth browser test

* fix: annotate MCP OAuth test wait

* fix: keep KiloProvider under line cap

* fix: align Kilo indexing auth defaults

* fix(vscode): add missing indexing translations

* feat(indexing): fetch Kilo embedding model catalog

* fix(indexing): align Kilo embedding metadata fallback

* fix(gateway): remove unused indexing dependency

* fix(indexing): keep fallback catalog webview safe

* fix(agent-manager): include embedding model provider

* fix(vscode): provide embedding models in stories

* refactor(indexing): rely on Cloud embedding catalog

* fix(indexing): hydrate Kilo model metadata from Cloud

* fix(indexing): clear model when switching provider
2026-05-07 17:14:26 +02:00
kiloconnect[bot] 2f3068e18d test(cli): move new providerCost tests into test/kilocode/
Move the new Anthropic Messages, OpenAI Responses and Vercel AI Gateway
cost-extraction tests out of the shared upstream `test/session/compaction.test.ts`
file into `test/kilocode/provider-cost.test.ts` to keep Kilo-specific test
coverage in a Kilo-owned location and minimize merge conflicts with upstream.
2026-05-07 14:56:24 +00:00
kiloconnect[bot] c8073d9014 fix(cli): also extract Kilo cost from OpenAI Responses API responses
Refactor providerCost to read `usage.raw.cost_details.upstream_inference_cost`,
which both `@ai-sdk/anthropic` (`convertAnthropicUsage`) and `@ai-sdk/openai`
(`convertOpenAIResponsesUsage`) populate with the verbatim OpenRouter usage
object. This unifies the Anthropic Messages and OpenAI Responses cost paths
through a single branch and removes the redundant `metadata.anthropic.usage`
branch (the SDK exposes the same data under both keys for Anthropic, and only
under `raw` for Responses).
2026-05-07 14:51:18 +00:00
kiloconnect[bot] d3a8f83bd2 test(cli): extract Kilo-specific instruction tests to own file
Move KILO_CONFIG_DIR profile fallback tests out of the shared upstream
instruction.test.ts into packages/opencode/test/kilocode/instruction.test.ts
to reduce future merge conflicts with opencode.
2026-05-07 14:46:53 +00:00
kiloconnect[bot] 861eb522ad fix(cli): never use gateway-fee cost for Anthropic Messages paths
For the Anthropic Messages API (via OpenRouter or Vercel AI Gateway), the
top-level `cost` field is the gateway fee that Kilo paid (typically 0 for
BYOK), not the user's true spend. Only use `upstream_inference_cost` /
`marketCost`; fall back to the token-based calculation when those are
absent.
2026-05-07 14:27:14 +00:00
Marius 03630064ad fix(cli): recover compaction from payload limits (#10012) 2026-05-07 16:01:25 +02:00
kiloconnect[bot] 3423870eea fix(cli): extract Kilo provider cost from Anthropic Messages API responses
Cost reporting already worked when Kilo used OpenRouter chat completions
internally. Extend providerCost to also read cost from the Anthropic
Messages API stream metadata, covering both OpenRouter (Anthropic-style
`usage.cost` / `cost_details.upstream_inference_cost`) and Vercel AI
Gateway (`gateway.cost` / `gateway.marketCost`).
2026-05-07 13:07:52 +00:00
Marius 9e17137870 fix(cli): recover provider finish errors (#10006) 2026-05-07 14:21:01 +02:00