Commit Graph

1198 Commits

Author SHA1 Message Date
Alex Alecu a22d65e0d7 Merge branch 'main' into fix/queue-messages
Resolve conflicts in question/index.ts, session/prompt.ts, and KiloProvider.ts to pull in upstream's flattened namespace refactor while preserving the queued-messages feature: Question.dismissAll, KiloQuestion.guardFollowup on ask, and the mid-turn 'break out when a follow-up is queued' check in runLoop. VS Code abortSession keeps its queue-preserving signature (no queuedMessageIDs delete); new autocomplete settings helpers from main are wired in unchanged.
2026-04-23 16:45:54 +03:00
Imanol Maiztegui d8b9b6fb4b test(lsp): enable experimental flag in spawn tests to bypass TsClient short-circuit
Set and restore `Flag.KILO_EXPERIMENTAL_LSP_TOOL` around the two
`.live` LSP spawn tests so they actually reach the `spawn()` call
instead of being short-circuited by the TsClient guard.
2026-04-23 14:25:03 +02:00
Imanol Maiztegui f99974e9c5 Merge branch 'main' into imanolmaiztegui/kilo-opencode-v1.4.9 2026-04-23 14:15:54 +02:00
Imanol Maiztegui c7c1e17352 feat(opencode): include filediff metadata in edit tool permission ask
Add `filediff` field to the edit tool's permission-ask metadata so the
VS Code extension's PermissionDock can render inline diff previews.
Sort and deduplicate dependency entries in package.json. Include a
comprehensive test suite verifying filediff presence across new file
creation, existing file edits, and multi-line replacements.
2026-04-23 14:13:46 +02:00
Imanol Maiztegui 77566d3027 refactor: update imports, fix bugs, and align with v1.4.9 upstream changes
- Fix import paths in kilocode server instance to use routes directory
- Convert relative imports to path aliases in experimental and session routes
- Fix variable name bug in fromModelsDevModel (m -> base) for patchKiloModel
- Add null guard for VITE_KILO_CHANNEL in titlebar before calling includes
- Simplify model schema by replacing safeEnum with direct Schema.Literals
- Remove unused fullSyncedSessions set from sync context
- Add blocking option to question ask interface
- Remove FileTime dependency from read-directory and session-compaction tests
- Remove unnecessary @ts-expect-error comments for Flag overrides in tests
- Fix Account import path in config-gitignore test
- Regenerate SDK with new session list params (projectID, worktrees),
  deduplicated Console class, and updated timeout default to 300000ms
2026-04-23 13:51:49 +02:00
Imanol Maiztegui 9cde05f934 resolve merge conflicts 2026-04-23 11:25:43 +02:00
Marian Alexandru Alecu 1d0318b294 Merge branch 'main' into fix/queue-messages 2026-04-23 12:17:39 +03:00
Josh Holmer 10e8ebb5e1 fix(cli): log stream error on log rotation 2026-04-22 21:05:29 -04:00
Alex Alecu 6f5dbe050e Merge remote-tracking branch 'origin/main' into cli-suggest-non-blocking
# Conflicts:
#	packages/opencode/src/cli/cmd/tui/routes/session/index.tsx
2026-04-22 17:54:46 +03:00
Alex Alecu f4c70554e8 Merge branch 'main' into fix/queue-messages 2026-04-22 17:54:33 +03:00
Alex Alecu 6d45e33efb core: auto-dismiss suggestion and question prompts once a new user message is queued, so a queued follow-up runs immediately instead of stalling behind a tool waiting on esc 2026-04-22 17:49:44 +03:00
Imanol Maiztegui aeb800dd47 refactor: kilo compat for v1.4.9 2026-04-22 16:17:14 +02:00
Imanol Maiztegui e17c053fc8 style(imports): consolidate deep imports to use barrel re-exports
Replace granular submodule imports with their parent barrel index
across snapshot diff source and related test files. This covers
util/log, util/filesystem, config/config, provider/provider,
tool/registry, tool/truncate, and the filesystem shared package.
2026-04-22 15:58:25 +02:00
Imanol Maiztegui 5149d3edcb Merge branch 'main' into imanolmaiztegui/kilo-opencode-v1.4.7 2026-04-22 15:55:07 +02:00
Marian Alexandru Alecu 3bbe667c8c Merge pull request #9119 from Kilo-Org/fix/snapshot-diff-freeze
fix(cli): fix hanging sessions on huge-file diffs
2026-04-22 16:29:03 +03:00
Alex Alecu 5221569844 fix(cli): cover moved noReply line in kilocode_change block 2026-04-22 16:03:08 +03:00
Alex Alecu 311a73404b fix(cli): break after current stream instead of aborting on new prompt
Replace the state.cancel-based mid-turn injection with a break-after-stream
queue. When a new prompt arrives while the assistant is streaming, the current
LLM step now finishes cleanly, any pending suggest/question tool auto-dismisses
via Suggestion.dismissAll and the new Question.dismissAll, and runLoop breaks
out before the next LLM step via KiloSessionPromptQueue.hasFollowup. Queued
prompts still run in order, each getting a full turn unless a newer one
arrives during it.
2026-04-22 16:00:12 +03:00
Alex Alecu cdd5dc095d Merge remote-tracking branch 'origin/main' into cli-suggest-non-blocking 2026-04-22 15:25:33 +03:00
Alex Alecu c5ca657306 fix(cli): bind reservation owner 2026-04-22 13:49:26 +03:00
Imanol Maiztegui 27028fe292 fix(provider): update adaptive efforts, gateway support, and test corrections
Extract inline Opus 4.7 adaptive effort logic into anthropicAdaptiveEfforts
helper, extend smallOptions to recognize Kilo Gateway alongside OpenRouter,
fix LSP test file path from lsp/index.ts to lsp/lsp.ts, and update xhigh
variant assertion to include display: "summarized".
2026-04-22 10:18:05 +02:00
Imanol Maiztegui 23167b8b6a refactor(test): replace direct Config.get assignment with spyOn mocking
Swap manual save-and-restore of Config.get for bun:test spyOn/mock.restore
across session-list and recall test suites, ensuring proper mock teardown
and consistent namespace imports.
2026-04-22 10:02:40 +02:00
Imanol Maiztegui f117020215 fix(test): correct config module import to namespace import
Change named import to namespace import for the Config module in
custom-provider-delete test to align with how the module exports
its members.
2026-04-22 09:46:29 +02:00
Imanol Maiztegui 87c2b560d1 Merge branch 'main' into imanolmaiztegui/kilo-opencode-v1.4.7 2026-04-22 09:44:37 +02:00
Alex Alecu d500a983b9 fix(cli): reserve latest injected prompt 2026-04-22 09:54:17 +03:00
Alex Alecu c032fc2021 fix(cli): cap per-turn compaction attempts to stop infinite busy loop
When every compaction round still overflowed the model context, SessionPrompt.runLoop would keep calling compaction forever and report the turn as completed. Cap attempts at three per turn and surface exhaustion as a ContextOverflowError on the assistant message with TurnClose reason=error.
2026-04-22 09:54:11 +03:00
Imanol Maiztegui a314589520 fix(opencode): replace direct Env access with effect-based resolution and update test infrastructure
Remove synchronous Env.get/Env.all calls in provider, tool registry,
and model-cache modules, replacing them with effect-yielded env
lookups or direct process.env reads where appropriate. Thread resolved
env through patchCustomLoaderResult and kiloCustomLoaders dependency
type. Drop unused paste-summary import from prompt component, fix
createResource action call in session list dialog, add bell toggle KV
signal, and rewrite config-gitignore test to use proper Effect layers
instead of mocked AppRuntime. Update remaining import paths and test
module mocks to align with barrel re-exports.
2026-04-22 08:28:03 +02:00
Imanol Maiztegui 251ed67347 refactor(opencode): update internal import paths to use barrel re-exports
Migrate all deep import paths across source and test files to
reference barrel index modules instead of direct file paths. This
covers config, provider, storage, util, tool, lsp, project, and
installation modules. Also moves provider promise helpers out of the
namespace block, switches Clipboard to namespace import style, fixes a
duplicate Filesystem import, removes the deleted paste-summary test,
and corrects snapshot cache typing and indentation.
2026-04-22 07:24:09 +02:00
Imanol Maiztegui 094ebe7e74 build(deps): consolidate @opencode-ai/util and @opencode-ai/server into @opencode-ai/shared
Remove the standalone `packages/util` and `packages/server` workspace
packages, migrating all imports across app, kilo-ui, opencode, and ui
to use `@opencode-ai/shared/util/*` paths instead. Also fix the
VITE_KILO_CHANNEL env variable name in the type declaration and add a
null guard in the titlebar channel badge rendering.
2026-04-21 18:33:48 +02:00
Alex Alecu 0bda9d15ed fix(cli): restore mid-turn injection 2026-04-21 19:17:02 +03:00
Imanol Maiztegui d5357f3961 resolve merge conflicts 2026-04-21 18:03:34 +02:00
Alex Alecu b6b6802dd4 fix(cli): keep follow-up session busy during handover
Mark new plan follow-up sessions busy as soon as the tab opens so the UI
shows work is still in progress while the handover summary is generated.
Clear the temporary busy state if that pre-loop handover phase is aborted
or fails before the normal prompt loop takes over.
2026-04-21 14:46:06 +03:00
Alex Alecu e696fe6ea4 fix(cli): inject plan message immediately, append handover in-place
Show the plan text right away in the new session tab without waiting
for the handover LLM call. The message part is created with plan+todos
as soon as the session opens; the handover section is upserted onto the
same part once the slow LLM call resolves.
2026-04-21 13:28:48 +03:00
Alex Alecu a5946abe3d core: drop the JavaScript diff fallback that's no longer needed
The git-based diff path has been reliable across all tests and in production since the TUI-freeze fix shipped. Removing the JS Myers fallback eliminates ~220 lines of belt-and-suspenders code (a size-cap guard, a git cat-file blob loader, and a per-file git show fallback). If git ever fails now, callers emit an empty patch string; additions/deletions from git --numstat still come through unchanged.
2026-04-21 12:07:56 +03:00
Alex Alecu 0d0dabe598 fix(cli): start-new-session tab on slow plan handover
Create the follow-up session before running the handover LLM call so
the extension's pendingFollowup SSE gate fires inside its 30s TTL. The
handover and todos are now injected into the already-live session
after it resolves, instead of blocking session creation.
2026-04-21 11:50:13 +03:00
Alex Alecu 2ba203b6bd fix(cli): render suggest above an active input prompt
Emit suggestions as non-blocking so the main CLI input stays focused and submittable while the picker is visible, matching the VS Code extension. Submitting a new message auto-dismisses the pending suggestion.
2026-04-21 11:24:13 +03:00
Alex Alecu 94e8c788e0 core: stop TUI freeze when viewing diffs of huge files
Files over a few thousand lines no longer hang the session for minutes during
summary generation or file view. Diffs for files of any size now render with
full content in the TUI, VS Code sidebar, and web UI — previously they either
froze the event loop or were reported with empty patch text.
2026-04-21 11:24:05 +03:00
Marian Alexandru Alecu e2e89aeb8a Merge branch 'main' into fix/snapshot-diff-freeze 2026-04-21 09:58:18 +03:00
Alex Alecu 00ad8f9c87 Merge remote-tracking branch 'origin/main' into fix/plan-followup-translations
# Conflicts:
#	packages/kilo-vscode/tests/unit/question-dock-utils.test.ts
#	packages/kilo-vscode/webview-ui/src/components/chat/QuestionDock.tsx
#	packages/kilo-vscode/webview-ui/src/components/chat/question-dock-utils.ts
#	packages/opencode/src/kilocode/plan-followup.ts
#	packages/opencode/test/kilocode/plan-followup.test.ts
2026-04-20 18:09:05 +03:00
Alex Alecu df44d3847d fix(cli): keep older queued prompts hidden on retarget 2026-04-20 17:26:54 +03:00
Alex Alecu b25843962d fix(cli): restore "Type your own answer" on plan follow-up in TUI
When the plan agent pauses for the follow-up question, CLI users had no
way to send a free-text reply: the main prompt input is hidden while a
blocking question is active, and the "Type your own answer" row was
being forced off to avoid duplicating the VS Code prompt input. CLI now
shows the custom-answer row again, while VS Code keeps it hidden.
2026-04-20 17:16:48 +03:00
Alex Alecu 64e2f096c4 fix(cli): make plan follow-up "Continue here" continue the loop
The prompt queue's scope() hid the user message injected by
PlanFollowup.inject() because its ID was newer than the queue target,
so the loop saw the same plan_exit messages and re-asked the question
in an infinite cycle. Retarget the queue after inject so the new
message is visible on the next iteration.
2026-04-20 17:16:48 +03:00
Alex Alecu ec5ac2e19f fix(vscode,cli): make plan_exit "Continue here" work again
Restore custom: false on the plan follow-up question — the "Type your own answer" row was redundant because the main prompt already routes typed text as a question reply. Auto-submit single-question single-select option picks in the VS Code QuestionDock so the button behaves like the TUI instead of silently waiting for a second Submit click.
2026-04-20 17:16:48 +03:00
Alex Alecu c529142d72 feat(i18n): translate plan_exit follow-up options in the VS Code sidebar
Add optional `labelKey`/`descriptionKey` to Question.Option and `questionKey`/`headerKey` to Question.Info, annotated with `kilocode_change` markers. Populate these keys from the plan follow-up so the "Ready to implement?" question, "Start new session", and "Continue here" buttons render in the sidebar language while the canonical English labels remain on the reply wire (unchanged server-side matching).
2026-04-20 16:15:06 +03:00
Marius 2b17a7b4e8 fix: persist custom provider model and variant deletions (#9239)
* fix: persist custom provider model and variant deletions

The CLI config.update endpoint deep-merges its payload with existing
global config, so removing a model or reasoning variant from a custom
provider in the UI had no effect on disk. Save payloads now emit null
sentinels for removed IDs, and the Provider schema accepts nullable
record values so stripNulls can delete them during the merge.

Closes #9186

* chore: update kilo-vscode visual regression baselines

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-04-20 13:05:49 +00:00
Alex Alecu eca1cc7d42 Merge remote-tracking branch 'origin/main' into fix/snapshot-diff-freeze
# Conflicts:
#	packages/opencode/src/snapshot/index.ts
2026-04-20 15:56:07 +03:00
Alex Alecu f970d34278 fix(vscode,cli): make plan_exit "Continue here" work again
Restore custom: false on the plan follow-up question — the "Type your own answer" row was redundant because the main prompt already routes typed text as a question reply. Auto-submit single-question single-select option picks in the VS Code QuestionDock so the button behaves like the TUI instead of silently waiting for a second Submit click.
2026-04-20 14:56:40 +03:00
Imanol Maiztegui bf6f499b24 refactor: kilo compat for v1.4.7 2026-04-20 13:49:07 +02:00
Alex Alecu a7e06d6605 refactor(cli): narrow snapshot-diff freeze fix to caps-only
Revert the worker pool, dispatcher, flags, and related scaffolding added
on top of the initial cap guard. Post-#9046, the only remaining CLI
callers of Vcs.diff are one-shot review opens, so the worker offload is
no longer needed. The freeze repro is eliminated by the input caps in
DiffEngine.shouldSkip alone.

Shrinks the fork diff from 28 files (+1063) to 6 files (+199) and
reduces shared opencode files with kilocode_change markers to 2.
2026-04-20 14:37:19 +03:00
Evgeny Shurakov 214496f679 Merge pull request #8494 from Kilo-Org/eshurakov/nebula-chauffeur
Sessions - Add session_status ingest message for status tracking
2026-04-20 13:06:45 +02:00
Alex Alecu 58fd32937d test(cli): pin suggest tool session-status behavior to prevent stuck-busy regression
Lock in that a session with an open suggestion reports as idle (so reopening VS Code or switching worktrees does not show it stuck/running), that accepting flips it back to busy without an idle flash, and that a dismissed suggestion leaves it idle for the run loop to resume cleanly.
2026-04-20 13:57:14 +03:00