Commit Graph

1328 Commits

Author SHA1 Message Date
Marian Alexandru Alecu 5bd891cea0 Merge branch 'main' into feat/cli-local-run 2026-04-28 10:07:32 +03:00
Josh Holmer f74d54c431 feat: implement codebase indexing (#6966)
* feat(core): implement codebase indexing

* feat(core): gate indexing behind experimental flag

* fix: improvements to slow provider startups and indexing init blocking the world

* test(cli): stabilize indexing startup tests

* test(cli): avoid indexing startup hang

* test(cli): avoid CI startup leaks

* test(cli): annotate provider test change

* fix(indexing): tighten dependency surface

* refactor(cli): move indexing logic into kilocode paths

* test(cli): skip flaky shell cancel prompt cases

* fix(cli): tolerate slow Windows worktree cleanup

* fix(vscode): authenticate indexing status fetch

---------

Co-authored-by: Marius <marius@kilocode.ai>
2026-04-27 17:43:27 +02:00
Alex Alecu 034f4d4e8d Merge remote-tracking branch 'origin/main' into feat/cli-local-run
# Conflicts:
#	package.json
2026-04-27 15:08:21 +03:00
Imanol Maiztegui 93044b183b test(session): add explicit variant field to subtask cost propagation test
Include `variant: undefined` in metadata objects to match the expected
shape returned by the provider, ensuring the assertion compares all
fields accurately.
2026-04-27 13:17:40 +02:00
Imanol Maiztegui 76b53c6403 fix(opencode): resolve merge conflict in session prompt test
Remove conflict markers left from rebasing the subtask cost
propagation test, keeping the version without the extra `variant`
field.
2026-04-27 13:16:32 +02:00
Imanol Maiztegui 4267cd319b test(session): add test for handleSubtask propagating child session cost to wrapper
Verify that when a subtask completes, the child session's assistant
cost is correctly propagated to the parent wrapper message. This
covers the cost aggregation path in handleSubtask for subagent
interactions.
2026-04-27 13:15:27 +02:00
hdcode.dev 438316b09a fix(cli): stop hardcoding opencode in kilo pr (#6824)
* fix(cli): stop hardcoding opencode in kilo pr

* fix(cli): stop hardcoding opencode in kilo pr

* fix pr command cli resolution for subcommand args
2026-04-27 13:14:47 +02:00
Alex Alecu 9e419b3e86 fix(cli): count subagent stats 2026-04-27 13:14:10 +02:00
Alex Alecu 2a94a0cc11 fix(cli): ignore deleted cost sync 2026-04-27 13:14:10 +02:00
Alex Alecu af0227b1ab fix(cli): exclude subagent sessions from stats aggregate
The task tool propagates each child session's total cost into the parent's tool-wrapper assistant message. Counting both root and child sessions in `kilo stats` would double-count that contribution. Filter `getAllSessions()` to root sessions (parent_id IS NULL), matching how the TUI session list and web sidebar already treat child sessions.
2026-04-27 13:14:10 +02:00
Alex Alecu f57479c657 fix(cli): serialize concurrent subagent cost propagation 2026-04-27 13:14:10 +02:00
Alex Alecu aaaa191b76 fix(cli): include subagent costs in session total (#6321)
When a session spawned subagents via the task tool, the displayed cost reflected only the parent's own LLM steps. Propagate each subagent's total up to the invoking assistant message so every UI sums the full tree.
2026-04-27 13:14:10 +02:00
Marian Alexandru Alecu 99ffef184a Merge branch 'main' into feat/cli-local-run 2026-04-27 13:46:23 +03:00
Alex Alecu 16abe9679f chore(cli): fix type error after main merge
Add missing 'variant' property to task tool metadata in prompt-effect test, required after upstream added model variant support to the task tool's ExecuteResult type.
2026-04-27 13:11:31 +03:00
Alex Alecu bb81bca909 Merge remote-tracking branch 'origin/main' into feat/cli-local-run 2026-04-27 13:03:16 +03:00
Alex Alecu 67993d094e Merge remote-tracking branch 'origin/main' into fix/costs-of-subagents 2026-04-27 13:03:15 +03:00
Imanol Maiztegui a63a27a366 Merge branch 'main' into imanolmaiztegui/kilo-opencode-v1.14.22 2026-04-27 11:23:37 +02:00
Marius a5bca011a1 Allow ChatGPT login over OpenAI provider config (#9549)
* fix: allow ChatGPT login over OpenAI provider config

Let users with inherited or globally configured OpenAI API keys sign in with ChatGPT for Codex without first removing their existing provider setup.

* fix: satisfy provider login ci checks

Annotate Kilo-specific shared CLI changes and apply webview formatting so the existing ChatGPT login flow passes CI.
2026-04-27 11:17:04 +02:00
Marius dbf113524e fix(cli): guard external directory boundaries (#9484)
* fix(cli): guard external directory boundaries

* test(cli): move boundary regressions to kilocode tests

* fix(cli): scope root guard to permission prompts

* test(cli): isolate boundary regression fixtures

* test(cli): simplify boundary regression coverage
2026-04-27 11:15:57 +02:00
Marian Alexandru Alecu a2b72044e0 Merge branch 'main' into fix/queued-messages-test 2026-04-27 11:48:19 +03:00
Imanol Maiztegui 94f47d452e Merge branch 'main' into fix/openrouter-deepseek-reasoning 2026-04-27 09:54:31 +02:00
kiloconnect[bot] f631338576 chore(cli): add kilocode_change markers to ported shell cwd fix 2026-04-27 07:38:01 +00:00
kiloconnect[bot] e8c13e0ee8 fix(cli): preserve shell cwd after login startup 2026-04-27 07:31:57 +00:00
Alex Alecu 778c5a84e0 test(cli): guard queued prompt request tail (#9492)
Strengthen the Kilo queue integration test to capture each LLM
request body and assert the second request ends with the queued
user message, not a prior-turn assistant tail. Update the skipped
upstream prompt-effect active-run test comment to reference #9492
and point at the Kilo-specific authoritative coverage.
2026-04-27 10:22:03 +03:00
Josh Lambert 55ddf87040 Revert "fix(cli): also skip interleaved reasoning transform for @kilocode/kilo-gateway"
This reverts commit 1dd436d61a.
2026-04-26 19:55:56 -04:00
Josh Lambert 1dd436d61a fix(cli): also skip interleaved reasoning transform for @kilocode/kilo-gateway
The gateway wraps @openrouter/ai-sdk-provider internally, so the same
openrouter SDK-side reasoning handling applies. Without this, users
routing through api.kilo.ai still see DeepSeek 400 'reasoning_content
must be passed back' errors.
2026-04-26 11:29:26 -04:00
Josh Lambert a1557d1a1f chore: annotate cherry-picked upstream changes with kilocode_change markers 2026-04-26 11:09:07 -04:00
Aiden Cline c884cea5ba fix: ensure openrouter behaves correctly 2026-04-26 10:55:41 -04:00
Imanol Maiztegui 44f463fdba test: skip ripgrep-dependent tests on windows 2026-04-25 18:05:56 +02:00
Imanol Maiztegui b21778dec1 refactor(session): pass cwd as positional arg to login shells instead of capturing it
Replace the `pwd -P` approach with an explicit positional argument (`$1`)
for zsh and bash login shell invocations. Login shells source profile
scripts (`/etc/profile`, `~/.profile`, `~/.bashrc`) before the `-c`
script executes, and those scripts may change the working directory
(e.g. nvm, direnv), making both `$PWD` and `pwd -P` unreliable at
script evaluation time. By passing `ctx.directory` as `$1` and falling
back to `$PWD` when unset, the shell script always receives the correct
session directory regardless of profile side effects.

Simplify the corresponding integration test by removing verbose CI
debug probes and replacing them with a straightforward `pwd` assertion.
2026-04-25 11:09:17 +02:00
Imanol Maiztegui 7672adb18d fix(opencode): use pwd -P in shell spawns to resolve stale PWD on CI
Replace `$PWD` with `$(pwd -P)` when capturing the working directory
in zsh and bash login shell invocations. When the child shell inherits
a stale PWD environment variable — common in CI where the spawner's
cwd differs from the session directory — `$PWD` can point to the wrong
location, causing `cd "$__oc_cwd"` to silently escape the intended
directory. `pwd -P` queries the kernel via getcwd(), ensuring the
correct physical path is always used.

The corresponding test is updated with richer cwd diagnostics to
validate the fix and surface root-cause information on failure.
2026-04-25 10:09:58 +02:00
Imanol Maiztegui 2fb8052640 Merge branch 'main' into imanolmaiztegui/kilo-opencode-v1.14.22 2026-04-25 08:23:31 +02:00
Imanol Maiztegui 9fb07cac6d test(opencode): skip flaky prompt tests and update agent reference
Skip "glob tool keeps instance context during prompt runs" and
"prompt submitted during an active run" tests tracked in #9958.
Replace "build" agent assertion with "code" to align with Kilo
agent naming conventions.
2026-04-25 08:17:29 +02:00
Imanol Maiztegui 2a6c4294eb fix(opencode): remove mistral from reasoning model check and rebrand cache paths
Remove mistral from the provider reasoning variant detection list
and update bare repo test assertions to use "kilo" cache directory
naming instead of "opencode".
2026-04-24 21:59:56 +02:00
Josh Holmer a356f3a923 fix(cli): respect configured model for subagents (#7549)
* fix(cli): respect configured model for subagents

* fix(cli): also respect configured variant for subagents
2026-04-24 21:44:08 +02:00
Imanol Maiztegui 3cec1ffa87 refactor(snapshot): introduce SummaryFileDiff schema and tighten Kilo type annotations
Add a lightweight SummaryFileDiff derived from FileDiff via
Struct.omit(["patch"]) to keep session summary DB payloads small.
Replace inline anonymous object types in session.sql.ts, revert.ts,
and session.ts with the new schema. Cast SessionPrompt input in
remote-sender to satisfy narrowed PromptInput type, guard against
null in permission normalizeInput, and switch remaining bare .parse
calls to .zod.parse for Effect Schema compatibility.

Include unit tests verifying SummaryFileDiff field exclusion and
round-trip parsing behavior.
2026-04-24 19:15:13 +02:00
Alex Alecu bc90a50597 fix(cli): count subagent stats 2026-04-24 19:19:41 +03:00
Alex Alecu 1230a3af8b fix(cli): ignore deleted cost sync 2026-04-24 19:19:35 +03:00
Alex Alecu 195ef4e54f fix(cli): exclude subagent sessions from stats aggregate
The task tool propagates each child session's total cost into the parent's tool-wrapper assistant message. Counting both root and child sessions in `kilo stats` would double-count that contribution. Filter `getAllSessions()` to root sessions (parent_id IS NULL), matching how the TUI session list and web sidebar already treat child sessions.
2026-04-24 19:06:08 +03:00
Alex Alecu e04dd779e6 fix(cli): make dev-setup work from local builds and hide it in releases
The `Installation.isLocal()` gate in dev-setup rejected locally-built
binaries because KILO_CHANNEL bakes the git branch name, not "local".
`detectRepo()` also failed inside a Bun single-file executable where
`import.meta.url` resolves to a `/$bunfs/` virtual path.

Introduce a build-time `KILO_BUILD_KIND` flag (source/release) derived
from `Script.release`, guard dev-setup/dev-alias registration on it,
and rewrite `detectRepo()` to try KILO_DEV_REPO, `import.meta.url`
(skipping bunfs), `process.execPath`, then `process.cwd()`.
2026-04-24 19:02:05 +03:00
Imanol Maiztegui eea72116be fix(kilocode): update schema references to use .zod accessor after effect migration
Replace direct Zod schema calls (Config.Info.parse, Config.Info.safeParse,
Snapshot.FileDiff, WorktreeDiff.Item) with their .zod counterparts to
align with the Effect Schema migration that wraps schemas via withStatics.

Migrate WorktreeDiff.Item from Zod's z.object/extend to Effect's
Schema.Struct with annotate and zod bridge. Add missing return statement
in TsClient notify.open stub and widen waitForDiagnostics input type to
match updated upstream interface.
2026-04-24 17:26:59 +02:00
Imanol Maiztegui 5e519256d2 resolve merge conflicts 2026-04-24 16:58:05 +02:00
Imanol Maiztegui 5bd50c6fe2 refactor: kilo compat for v1.14.22 2026-04-24 14:18:25 +02:00
Imanol Maiztegui 8eb0bb3e84 fix(read): skip binary detection for UTF-16 BOM encoded files
Add a check for UTF-16 byte order marks before the NUL/control-char
heuristic so that legitimate UTF-16 encoded files are not incorrectly
classified as binary. Also update Opus 4.7 transform test to expect
the `display: "summarized"` property in xhigh reasoning config.
2026-04-24 13:49:10 +02:00
Imanol Maiztegui 258fe2c8a3 Merge branch 'main' into imanolmaiztegui/kilo-opencode-v1.14.17 2026-04-24 13:31:41 +02:00
Imanol Maiztegui a2ae026f50 test(tui): trim verbose backstory from slot reactivity test header
Remove implementation history paragraph from the test file's doc
comment, keeping only the concise description of what the test
validates.
2026-04-24 11:24:02 +02:00
Imanol Maiztegui 07024a0341 fix(tui): preserve SolidJS prop reactivity in Slot wrapper
Replace object spread (`{...props}`) with `mergeProps` when forwarding
props through the plugin Slot wrapper. Spreading props in SolidJS
evaluates each prop once at mount time, freezing reactive values like
`ref`, `visible`, `disabled`, and `on_submit`. This caused handlers to
bind against stale closures after overlay transitions, breaking Enter
submission on the session_prompt slot.

Add regression tests verifying the wrapper uses `mergeProps` (not
spread) and that reactive prop tracking is preserved at runtime.
2026-04-24 11:22:30 +02:00
Imanol Maiztegui 93a1a00361 refactor: adapt kilo compat layer for v1.14.17 API changes
- Switch ConfigCommand validation from Zod to Effect Schema using
  StandardSchemaV1 interface
- Fix toConfig permission merging to avoid mutating shared object
- Wrap saveAlwaysRules route handler with jsonRequest/Effect generator
- Update Typescript.spawn call sites to pass InstanceContext parameter
- Fix Npm import path in config-gitignore test
2026-04-24 10:30:50 +02:00
Imanol Maiztegui 7d1c046f10 resolve merge conflicts 2026-04-24 10:06:31 +02:00
Alex Alecu ae0c437791 fix(cli): serialize concurrent subagent cost propagation 2026-04-24 07:26:09 +03:00