Commit Graph

26380 Commits

Author SHA1 Message Date
kilo-maintainer[bot] f80ebff83b release: v7.4.16 v7.4.16 2026-07-24 15:55:31 +00:00
Igor Šćekić 1346963e59 feat: daily docs-sync bot keeping kilo-docs in sync with merged PRs (#12512)
* feat: daily docs-sync bot workflow (Kilo CLI)

Adds a scheduled workflow that keeps packages/kilo-docs in sync with PRs
merged to Kilo-Org/cloud and Kilo-Org/kilocode:

- watermark.mjs derives the processing window from the bot's own PR body
  marker (self-healing, no external state; 72h fallback, 14d cap)
- collect.mjs queries merged PRs via the GitHub API and applies a
  deterministic pre-filter (bots, chores, docs-only PRs)
- triage.mjs classifies PRs in chunks of 25 with kilo run; failed chunks
  degrade to unclassified instead of failing the run
- edit.mjs updates docs in batches of 5 PRs with kilo run, bounded per
  batch; failures surface as skipped entries in the PR body
- verify runs the kilo-docs build + test suite; one LLM fix pass on
  failure; still-red becomes a draft PR
- upsert-pr.mjs maintains one rolling auto-docs PR (appends while open,
  fresh branch after merge), with a 15-file draft cap and a
  machine-readable processed-through watermark

Also adds docs-sync.yml to the workflow allowlist in
script/check-workflows.ts.

* fix: correct kilo run invocation and auth

- message positional must come before flags: --file is multi-value and
  consumes a trailing message as a file path (File not found)
- authenticate via the existing KILO_API_KEY repo secret (the kilo
  provider reads it natively); drop the DOCS_SYNC_KILO_CONFIG config
  secret requirement
- fix default model IDs: gateway provider id is kilo/, not kilocode/
- include stderr tail in triage/edit failure logs

* fix: handle kilo run double-printed assistant output

kilo run prints the assistant message twice (streaming render + final
summary), so stdout can contain the same JSON array back-to-back. Parse
the largest valid trailing array instead of slicing first-to-last
bracket. Verified against real chunked triage output.

* fix: reviewer-pass robustness fixes

- edit.mjs: unambiguous summary file path in the batch prompt and a
  fallback read when the agent drops the docs-sync-out/ prefix, so real
  edits never report as skipped
- prepare-branch.mjs: use the open auto-docs PR's actual head.ref
  instead of assuming docs/auto-sync
- upsert-pr.mjs: compute the 15-file draft cap on the cumulative PR
  diff (origin/main...HEAD), not just the latest commit

* fix: address Kilobot review findings

Security:
- sanitize HTML-comment sequences out of agent-generated PR body values
  so a crafted value cannot forge section markers or the watermark
- draft any PR whose diff touches non-content files in packages/kilo-docs
  (outside pages/ and lib/nav/) — build-executable changes force human
  review before merge
- on merge conflict, keep the conflicted rolling branch untouched
  (preserving human commits) and continue on a fresh dated branch that
  links the old PR

Resilience:
- retry GitHub API calls on network errors and 5xx, not just 403
  rate limits
- isolate per-PR collect failures instead of aborting the run
- trust watermark markers only on bot-authored PRs and clamp future
  dates loudly
- validate chunk triage entries belong to their chunk before the shared
  dedupe
- use changed_files for files_total and skip docs-only classification
  on truncated (300+) file lists
- pipe stderr in the edit pass so failure warnings carry the real CLI
  error

* fix: address second Kilobot review round

- escape pipe characters in changeRow actions (same as skippedRow)
- sanitize agent-chosen file paths before they land in draftReasons
  and the PR body (residual marker-forgery path via filenames)
- log expected fetch misses in prepare-branch instead of silent catches

* feat: keep bot-authored PRs in the docs-sync digest

Release and dependency bots ship user-facing changes (e.g. JetBrains
release PRs from kilo-maintainer[bot]). The auto-docs label check and
docs-only path filter remain as the loop guards.
2026-07-24 15:38:39 +00:00
LCZcn96 c72817e67f fix(cli): bound skill discovery in non-git projects (#12475) 2026-07-24 16:31:31 +02:00
Joshua Lambert bada1c3890 Merge pull request #12515 from Kilo-Org/fix/silent-kilo-pass-refresh
fix(tui): silence optional Kilo Pass failures
2026-07-24 09:35:08 -04:00
Kirill Kalishev c4af7072e3 Merge pull request #12516 from Kilo-Org/jetbrains/release/v7.0.10
release(jetbrains): v7.0.10
2026-07-24 09:33:25 -04:00
Kirill Kalishev 783be6c431 docs(jetbrains): edit changelog for v7.0.10 2026-07-24 09:30:38 -04:00
kilo-maintainer[bot] 489601e5fa release(jetbrains): v7.0.10 2026-07-24 13:19:26 +00:00
Johnny Eric Amancio 9e1b54d875 fix: activate plan handoff sessions and retry recovered question replies (#12511)
Two regressions in the plan handoff flow:

Choosing "Start new session" after a plan created the session in the
background but left the UI on the completed plan. Since #10466 the
sidebar only activates sessionCreated messages that match a pending
draft tab, and followup sessions carry no draftID. registerSession now
takes an activate flag, adoptPendingFollowup passes it, and the webview
opens and focuses the tab when set.

Replying to a recovered question took two submits. The first reply hit
the recorded stale directory, got a 404, and the handler redrew the
question instead of retrying. Recovery now rediscovers the directory
and retries the reply or reject there once, and only marks the question
stale when a complete scan confirms it is gone.
jetbrains/v7.0.10
2026-07-24 15:11:28 +02:00
Marius 5bd5b90009 Merge pull request #12513 from Kilo-Org/standardize-queued-message-remove-button
fix(ui): align queued message remove button with message action buttons
2026-07-24 15:02:19 +02:00
bagatao@anaconda.com 5b866245c4 Merge pull request #12494 from Kilo-Org/feat/explain-tool-auto-approval
feat: explain tool auto-approval
2026-07-24 14:48:00 +02:00
Josh Lambert faa810f3ee test(gateway): cover Kilo Pass response failures 2026-07-24 08:45:23 -04:00
Josh Lambert f715e2f5fa fix(tui): silence optional Kilo Pass failures 2026-07-24 08:44:31 -04:00
Bruno Agatao c3a38ea1c4 Merge branch 'feat/explain-tool-auto-approval' of github.com:Kilo-Org/kilocode into feat/explain-tool-auto-approval 2026-07-24 14:29:47 +02:00
Bruno Agatao 9c16457083 Merge remote-tracking branch 'origin/main' into feat/explain-tool-auto-approval 2026-07-24 14:27:39 +02:00
marius-kilocode c1f057ad5a fix(ui): align queued message remove button with message action buttons 2026-07-24 14:17:56 +02:00
Marius e511ed74bc Merge pull request #12496 from Kilo-Org/fix/preserve-other-finish-reason
fix: preserve unexpected provider finish reasons
2026-07-24 14:14:49 +02:00
Marius 470d78bfac Merge branch 'main' into fix/preserve-other-finish-reason 2026-07-24 14:02:52 +02:00
Marius 1ea363b995 Merge pull request #12510 from Kilo-Org/docs/fix-fireworks-pricing-link
docs: fix Fireworks AI pricing link broken by bot detection
2026-07-24 13:51:17 +02:00
Marius 81e73bcf36 Merge pull request #12509 from Kilo-Org/filter-sessions-by-worktree
feat(agent-manager): filter sessions by worktree
2026-07-24 13:21:36 +02:00
marius-kilocode ce83cf6556 docs: fix Fireworks AI pricing link in ai-providers page
The https://fireworks.ai/pricing marketing page intermittently returns
500 Internal Server Error to automated link checkers (bot detection),
causing the lychee CI link-check job to fail.

Replace it with https://docs.fireworks.ai/serverless/pricing, the stable
per-model pricing page that the Fireworks marketing page itself links to
as the authoritative source for current model pricing. This URL returns
200 to link checkers and contains the actual per-token pricing details.
2026-07-24 13:20:49 +02:00
kilo-maintainer[bot] b3e6fb780b chore: update kilo-vscode visual regression baselines 2026-07-24 11:18:19 +00:00
marius-kilocode 99c04c7163 feat(agent-manager): filter sessions by worktree 2026-07-24 13:15:08 +02:00
bagatao@anaconda.com 6edf6ca7ef Merge branch 'main' into feat/explain-tool-auto-approval 2026-07-24 13:07:12 +02:00
Johnny Eric Amancio 0fe46ecb8d fix: recover from read-only database files at startup (#12508) 2026-07-24 12:51:05 +02:00
Bruno Agatao d4da7ddff6 chore(vscode): format AssistantMessage import 2026-07-24 12:50:42 +02:00
marius-kilocode 40fd27d22a fix(cli): validate persisted Vercel request IDs 2026-07-24 12:42:15 +02:00
Bruno Agatao 0eb9face86 Merge remote-tracking branch 'origin/main' into feat/explain-tool-auto-approval 2026-07-24 12:35:42 +02:00
Bruno Agatao b36b24e827 fix(cli): track auto-approval provenance per permission pattern, not per key 2026-07-24 12:32:33 +02:00
marius-kilocode 9ecdfdc19e fix(vscode): persist both response identifiers 2026-07-24 12:27:54 +02:00
marius-kilocode d29f1bdd43 fix(vscode): show both response identifiers 2026-07-24 12:21:21 +02:00
marius-kilocode 2fcb137ebc fix: preserve unexpected provider finish reasons 2026-07-24 12:20:43 +02:00
Kirill Kalishev 1a3c719175 Merge pull request #12491 from Kilo-Org/granite-anemone
feat(jetbrains): render edit tool diff previews in session view
2026-07-24 06:20:32 -04:00
Kirill Kalishev f0b3a829bf Delete .kilo/plans/1784814134016-jetbrains-session-scroll-perf.md 2026-07-24 06:16:17 -04:00
Marius e6f4216088 Merge pull request #12497 from Kilo-Org/revert/stream-stall-watchdog
revert(cli): restore opt-in stream idle timeouts
2026-07-24 12:13:37 +02:00
Bruno Agatao 7f37d015ed fix(cli): tag permission rules by origin so auto-approval provenance is accurate 2026-07-24 12:12:58 +02:00
Bruno Agatao 207feccdbc fix(ui): restore unrelated deleteQueued string dropped during i18n move 2026-07-24 11:55:41 +02:00
Bruno Agatao 75862be1d7 refactor(ui): move tool-approval provenance UI into kilo-owned packages 2026-07-24 11:49:50 +02:00
Christiaan Arnoldus a4177125b8 Merge pull request #12485 from rakshith1928/fix/12477-compaction-maxoutputtokens-leak
fix(core): strict OpenAI-compatible compaction failure caused by maxOutputTokens leak into provider options
2026-07-24 11:13:50 +02:00
Igor Šćekić aa22680fee refactor(cli): shared-process remote sessions with safe per-session exit (#12327)
* refactor(cli): run remote sessions in one process with safe per-session exit

Consolidate remote session handling into a single CLI process instead of
spawning one process per remote-created session (addresses the PR review):

- restore in-process create_session (accepts an absent sessionId and targets
  the connection directory); remove the session spawner, the
  KILO_REMOTE_ATTACH_SESSION attach-on-boot path, the child-advertisement gate,
  and their tests
- retain instance advertisement and fire one immediate out-of-band heartbeat on
  (re)connect when advertising, so a headless `kilo remote` host is discoverable
  without delay

Make /exit (wire command exit_cli, unchanged for compatibility) detach only the
target session instead of terminating the CLI:

- AttachedState.detach with a presence-suppression tombstone; detach also clears
  the target's SessionStatus so the negative-containment heartbeat fence resolves
  deterministically for busy/retry/offline sessions
- exit_cli handler verifies ownership, cancels the active prompt, detaches and
  awaits the detach heartbeat, then ACKs; the interactive RemoteExit callback is
  invoked only after the ACK when the last owned session exits; a headless
  `kilo remote` host stays alive and advertising at zero sessions
- add an optional canExitSession boolean to the list_commands v1 catalog
  (always true, independent of exitAvailable) so clients can detect safe
  session-exit semantics

History and stored sessions are preserved on exit.

* fix(cli): break module-load cycle in remote session prompt-cancel

The K1 in-process exit_cli seam added a static `import { SessionPrompt }`
to kilo-sessions.ts. @/session/prompt evaluates KiloSessionPrompt at module
load, so the new static edge raced that init and left the namespace in TDZ,
crashing unrelated test files with 'undefined is not an object (evaluating
KiloSessionPrompt.shouldAskPlanFollowup)'. Defer to a dynamic import at the
single call site, mirroring remote-command.ts.

* fix(cli): correct AttachedState announce/detach concurrency and rollback

Address review findings on the shared-process session lifecycle:

- announce/detach no longer join the OPPOSITE in-flight operation. Joining
  detach's negative-containment fence made announce resolve success for a
  detached id (and vice versa: detach joined announce and resolved success
  while still attached, which exit_cli treats as license to ACK/close). Each
  path now joins only a same-kind in-flight op and, when the opposite op is
  in flight, awaits it to settle and then performs the real work.
- Failed-detach rollback now releases the suppression tombstone, so a
  still-attached session is not dropped by the next setPresence (the tombstone
  loop would otherwise remove the still-present id and never clear).
- Both catch/rollback branches now honor the lifecycle generation guard
  (mirroring the success path); a stale in-flight op that rejects after
  reset() no longer mutates the new lifecycle's presence/pending/suppressed
  sets (reset clears the same Set instances).

Adds regression tests for each fix, plus AC6f covering the remote-ws
detachSessionId negative-containment waiter.
2026-07-24 09:39:07 +02:00
kirillk 79e606ebcb fix(jetbrains): scope transcript scroll-hover work to the hovered pane
Each prose markdown pane kept a viewport ChangeListener for its whole life, so every scroll tick fired a synthetic mouse move (native pointer query + event dispatch) on every prose block — cost that scaled with transcript size. Subscribe to viewport scrolls only while the pointer is over the pane, making per-scroll work O(1) while preserving hovered-link and cursor refresh.
2026-07-23 20:11:41 -04:00
kirillk ff2d42071f fix(jetbrains): address diff-preview review feedback
- SessionLayout: forget a turn's cached height on content change so a
  settled TurnView (its own validate root) that re-validates independently
  cannot return a stale measurement from the layout cache
- ToolSupport: remove dead setLinkText; restore patchMarkdown raw-text
  fallback for metadata-only patches (pure rename/mode change)
- EditToolView: drop redundant popup update() already done by mount()
- tests: make header-stripping assertions non-vacuous, cover the
  metadata-only patch fallback and SessionLayout.forget
2026-07-23 19:43:54 -04:00
kirillk 8228a4d049 fix(jetbrains): address diff-preview review feedback
- HeaderPopup.contentWidth: measure leaf JComponents by preferred width
  instead of the unreachable is-JComponent branch (Container matched first).
- PatchBody.applyStyle: report change when the per-file diff panes restyle,
  so a font/theme change relayouts the multi-file patch view.
- MdDiffHighlight: only treat +++/--- as file headers when followed by a
  space or end of line, so content lines like "++x;" stay colored as inserts.
- EditToolView.sync: compute editPath(item) once.
- Strengthen multi-file patch badge assertion and add MdDiffHighlight tests.
2026-07-23 19:43:54 -04:00
kirillk 95ae0e0b3b fix(jetbrains): improve chat transcript scrolling performance in large sessions
Cache width-aware preferred-size measurement in SessionLayout (reused while
a child stays valid at the same width), so streaming and scrolling no longer
re-measure the whole transcript on every event. Mark settled (non-streaming)
turns as Swing validate roots behind the kilo.session.validateRoots flag to
confine repaint churn, and skip redundant panel refreshes on no-op content
events. Narrow the follow-scroll validate pass to the transcript subtree.

Adds SessionLayout cache tests, validate-root/settled behavior + width
propagation tests, and a panel-level streaming stress/teardown test.
2026-07-23 19:43:53 -04:00
kirillk 2b13e7da2a fix(jetbrains): polish diff previews 2026-07-23 19:43:53 -04:00
kirillk dd31044008 fix(jetbrains): distinguish multi-file patches 2026-07-23 19:43:53 -04:00
kirillk b2a3a8dc10 fix(jetbrains): widen preview popovers 2026-07-23 19:43:53 -04:00
kirillk 73942c3f26 fix(jetbrains): open exact edit tool file links 2026-07-23 19:43:53 -04:00
kirillk 5c526f140b feat(jetbrains): render edit tool diffs 2026-07-23 19:43:53 -04:00
marius-kilocode 23963e32c8 chore: document stream watchdog revert 2026-07-23 19:11:08 +02:00
marius-kilocode 8e9bdaeb24 Revert "fix(cli): prevent stalled agent streams (#12249)"
This reverts commit cd205d857a.
2026-07-23 19:09:36 +02:00