857 Commits

Author SHA1 Message Date
Imanol Maiztegui b46a40d537 Merge branch 'main' into imanolmaiztegui/kilo-opencode-v1.15.9 2026-06-18 13:09:27 +02:00
Mark IJbema 37d88a0f86 Merge pull request #11342 from Kilo-Org/ci/jetbrains-use-container
ci(jetbrains): run inside pre-built container, drop manual setup steps
2026-06-18 10:24:00 +02:00
Josh Lambert 9ec1beb6e1 ci: cache console production build 2026-06-17 17:07:10 -04:00
Josh Lambert 89b1829199 fix(cli): declare console diff dependency 2026-06-17 16:33:08 -04:00
Imanol Maiztegui 6b6b04bd96 Merge branch 'main' into imanolmaiztegui/kilo-opencode-v1.15.9 2026-06-17 20:05:58 +02:00
kirillk 05ed4b6a70 ci(jetbrains): install deps before publish build 2026-06-17 12:46:57 -04:00
markijbema 68c7755f26 ci(jetbrains): rely on image-provided JBR libraries
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-17 16:02:01 +00:00
Imanol Maiztegui d5f1495f12 refactor(build): remove sidecar models-snapshot distribution
The models snapshot is now embedded directly in the compiled binary,
eliminating the need for a separate models-snapshot.json file alongside
the CLI executable.

- Delete script/kilocode/models-snapshot.ts build-time preparation
- Delete src/kilocode/provider/models-snapshot.ts runtime loader
- Remove snapshot copy steps from vscode, jetbrains, and opencode builds
- Remove snapshot existence checks from PrepareLocalCliTask/CheckCliTask
- Remove snapshot-related .gitignore and .prettierignore entries
- Simplify watch-cli, local-bin, and build scripts
- Update smoke test error messages to say "embedded" not "sidecar"
- Simplify models-snapshot tests to validate parsing only
- Remove models-snapshot from extract-source-links skip list
2026-06-17 17:03:15 +02:00
markijbema f40302719b ci(jetbrains): refresh apt indexes before installing font libraries
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-17 14:15:24 +00:00
markijbema c1bef8604a ci(jetbrains): install font libs needed by JBR inside container
The JetBrains Runtime bundled with IntelliJ ships libfontmanager.so
but expects libfreetype.so.6 and libfontconfig1 on the host system.
The container image currently lacks these, causing UnsatisfiedLinkError
in any test that initialises Swing font metrics.

Install them explicitly until the updated container image (which will
include these packages in the Dockerfile) is available.

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-17 13:17:00 +00:00
markijbema 0b267c6bff ci(jetbrains): install bun dependencies inside container
The container image has bun pre-installed but not the project's
node_modules.  Gradle's generateOpenApiSpec task runs 'bun dev generate'
which needs drizzle-orm and other packages from node_modules.

Add an explicit 'bun install' step after checkout.

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-17 13:03:05 +00:00
markijbema af370bd56b ci(jetbrains): run inside pre-built container, drop manual setup steps
Switch the JetBrains unit job to run inside
ghcr.io/kilo-org/build/jetbrains:24.04, which already contains Bun,
Java 21, and the Gradle 9.4.1 distribution pre-cached in
GRADLE_USER_HOME.  The three manual setup steps (bun, java, gradle)
are no longer needed and are removed.

A 'Mark workspace as git-safe' step is added after checkout because
container jobs mount the workspace from the host with different file
ownership.  Git exit-128 errors otherwise occur when Gradle spawns a
'git tag' subprocess (build.gradle.kts:85).

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-17 07:21:19 +00:00
Mark IJbema ab1e5b836d ci: extract JetBrains test workflow 2026-06-17 06:34:21 +00:00
Mark IJbema cf820cdb82 Merge pull request #11306 from Kilo-Org/ci/use-prebuilt-jetbrains-container
ci: add jetbrains container image and fix containers.yml trigger
2026-06-17 08:19:12 +02:00
Mark IJbema 53102237df Merge pull request #11293 from Kilo-Org/mark/filter-jetbrains-tests
ci: skip unrelated JetBrains tests
2026-06-16 16:45:13 +02:00
Mark IJbema 38f33f1a3c ci: drop no-op docs/** filter exclusion
There is no top-level docs/ directory in the repo (docs live under
packages/kilo-docs/, already excluded), so the '!docs/**' entry never
matched anything. Remove the dead filter line.
2026-06-16 16:29:57 +02:00
markijbema 4a0117500e ci: annotate containers.yml branch change with kilocode_change
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-16 12:58:27 +00:00
markijbema 5686915e01 ci: add jetbrains container image and fix containers.yml trigger
- Add packages/containers/jetbrains/Dockerfile extending bun-node with
  Java 21 (apt-get, multi-arch safe) and Gradle 9.4.1 pre-cached in
  GRADLE_USER_HOME so the wrapper skips the network download
- Register the new image in build.ts (after bun-node, before rust) and
  update README
- Fix containers.yml branch trigger: dev → main so images are actually
  published from the default branch on every relevant push

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-16 12:55:41 +00:00
Mark IJbema e49e5fef21 ci: keep existing VS Code path filters 2026-06-16 12:35:16 +00:00
Mark IJbema dca49f29b6 chore(ci): mark VS Code workflow as Kilo-only 2026-06-16 11:37:25 +00:00
Mark IJbema 3095d990bb fix(ci): let paths-filter select event base 2026-06-16 10:13:22 +00:00
Mark IJbema 42ceb15e53 ci: filter editor-specific test suites 2026-06-16 10:06:16 +00:00
Mark IJbema e6d2994651 fix(ci): use built-in JetBrains change detection 2026-06-16 09:45:19 +00:00
Mark IJbema 8b2612fa1d ci: skip unrelated JetBrains tests 2026-06-16 09:40:51 +00:00
Mark Bema 01359fc52a ci: disable upstream issue maintenance workflows 2026-06-16 09:12:21 +00:00
Mark Bema f6fe95d529 ci: restore disabled triage workflow from upstream 2026-06-16 09:08:52 +00:00
Mark Bema a49bcb7ed8 ci: disable automatic issue triage 2026-06-16 08:54:31 +00:00
V Keerthi Vikram 8baf3e3138 fix(ci): skip watch-opencode-releases on forks (#11269)
The schedule trigger fires on every repo where the file exists,
including contributor forks. Forks don't have access to
OPENCODE_WATCH_SLACK_WEBHOOK, so the Slack step fails. The previous
vars.OPENCODE_WATCH_ENABLED guard evaluated to true on forks (empty
!= 'false'), so it didn't protect anything.

Add the same github.repository == 'Kilo-Org/kilocode' guard used by
18 other workflows in this repo.
2026-06-15 19:43:44 +02:00
Johnny Eric Amancio b90ab85c3b ci: clarify auto-close reopen message (#11163) 2026-06-12 16:18:45 +02:00
Johnny Eric Amancio 50b249e498 fix: improve auto close filter logic (#11119) 2026-06-11 20:26:37 +00:00
marius-kilocode d6cde9fc4a Merge remote-tracking branch 'origin/main' into marius-kilocode/kilo-opencode-v1.14.51 2026-06-10 10:49:54 +02:00
Johnny Eric Amancio 7f84c13bce feat: add Kilo auto close workflow isolated from upstream (#11040) 2026-06-09 16:09:09 +02:00
marius-kilocode 1d23dc2171 resolve merge conflicts 2026-06-09 10:17:21 +02:00
marius-kilocode 6ecaaab48a refactor: kilo compat for v1.14.51 2026-06-09 08:29:02 +02:00
Marius ad93990ca9 fix(ui): restore pointer cursors for clickable controls (#10999)
* fix(ui): restore pointer cursors for clickable controls

* fix(ci): raise VS Code Storybook heap limit

* fix(ci): extend heap to visual test server
2026-06-08 16:32:49 +00:00
Josh Lambert 636586a3e2 ci: apply Storybook heap limit to visual job 2026-06-08 11:58:55 -04:00
Josh Lambert 0d6f263bdd ci: raise VS Code Storybook heap limit 2026-06-08 11:52:08 -04:00
Catriel Müller 17f5619c59 refactor: flag intel mac 2026-06-05 17:57:39 -03:00
Catriel Müller f7970c99ed fix(cli): prevent Bun ESM splitter crash and Alpine musl validation
Two independent release validation failures introduced by kilo-opencode-v1.14.33 (morphsdk) and the new all-arch validation jobs.

**@morphllm/morphsdk pre-split ESM (intermittent SyntaxError on Windows)**

@morphllm/morphsdk/tools/warp-grep/client ships as a 805-byte ESM barrel that
re-exports from 13 internal chunk-*.js files (52 chunks total). When Bun 1.3.14
bundles the CLI with splitting+minify enabled, merging these external pre-split
chunks into its own chunk graph intermittently produces invalid minified ESM:

  SyntaxError: Exported binding 'G9' needs to refer to a top-level declared variable.

Non-deterministic because Bun's parallel bundler uses different orderings per run;
same build sometimes succeeds, sometimes fails on Windows x64.

Fix: load morphsdk via createRequire (forces CJS bundle, client.cjs 2292 lines,
self-contained) instead of the ESM barrel. Wrapper lives in kilocode/compat/ with
a comment explaining how to detect and fix this pattern for future third-party deps.

Scanned all 40+ third-party packages imported by packages/opencode/src — morphsdk
is the only one with pre-split ESM; all others ship single-file ESM or CJS only.

**Alpine musl validation (libstdc++/libgcc missing)**

Bun's musl target (bun-linux-{arch}-musl) is not fully static — it links against
libstdc++.so.6 and libgcc_s.so.1 (GCC C++ runtime). Alpine base does not ship
these by default. The fix adds apk add --no-cache libstdc++ libgcc at the start of
the Alpine Docker smoke test, matching the runtime requirement that any Alpine user
of the CLI would also need.
2026-06-05 15:10:16 -03:00
Catriel Müller 78117d1a25 fix: validate CLI models snapshot before release builds 2026-06-05 09:28:40 -03:00
Josh Lambert 254b070bb0 ci: limit CLI artifact validation to version 2026-06-04 22:55:22 -04:00
Josh Lambert 8295ab3096 ci: validate Linux CLI release artifacts 2026-06-04 22:52:27 -04:00
Josh Lambert 6cab5f18e7 fix(cli): isolate release target builds 2026-06-04 22:40:06 -04:00
Imanol Maiztegui 57627c2e80 ci(codeql): split Kotlin analysis into dedicated workflow (#10869)
Extract java-kotlin language analysis from the shared CodeQL Advanced
workflow into a dedicated codeql-kotlin.yml workflow. This allows the
Kotlin analysis (which requires Java, Gradle, and a manual build) to
run independently with path filtering on packages/kilo-jetbrains,
reducing unnecessary CI runs for unrelated changes.

- Add new codeql-kotlin.yml with path-scoped triggers
- Remove java-kotlin from the matrix in codeql.yml
- Simplify codeql.yml by removing conditional Java/Gradle setup steps
- Register codeql-kotlin.yml in check-workflows.ts active set
2026-06-03 10:53:05 -04:00
marius-kilocode a0c91eb07a fix(ci): restore workflow change annotation 2026-06-03 13:25:36 +02:00
marius-kilocode 02f226d418 chore(ci): remove workflow change marker 2026-06-03 13:23:24 +02:00
marius-kilocode 99407ef83b fix(ci): cap stalled unit jobs at 45 minutes 2026-06-03 13:18:18 +02:00
Emilie Lima Schario 2f7f23deac Add scanning (#10799)
* Add scanning

* ci: adjust CodeQL scanning for the repo

* ci: add bun in kotlin setup

---------

Co-authored-by: Johnny Amancio <johnnyeric@gmail.com>
2026-06-03 12:05:39 +02:00
Igor Šćekić 8aaa62c794 Session export capture (#10611)
* feat(session-export): scaffold module with config constants

* feat(session-export): add zstd compression wrapper

* feat(session-export): event and envelope type definitions

* feat(session-export): eligibility check with kill-switch

* feat(session-export): org signal collector with auth resolver

* feat(session-export): worker SQLite schema and storage helpers

* feat(session-export): content-addressed chunker with zstd dedup

* feat(session-export): client-side light scrubber

* feat(session-export): IPC contract and inbox with back-pressure

* feat(session-export): persist scrubbed events with chunked payloads

* feat(session-export): worker entry point with inbox drain loop

* feat(session-export): main-thread capture module

* feat(session-export): workspace baseline and delta fibers

* feat(session-export): sync subscriber and tool io chunking

* feat(session-export): bootstrap wiring and compaction hook

* feat(session-export): wire capture hooks into sessions

* feat(session-export): uploader and buffer cap

* chore(session-export): annotate shared session hooks

* changeset(session-export): add release note

* fix(session-export): keep bootstrap non-blocking without instance context

* feat(session-export): respawn worker after failures

* test(session-export): add performance budget assertions

* test(session-export): add worker end-to-end smoke test

* fix(session-export): strip identity and high-risk baseline paths

* test(session-export): gate perf assertions for stable sweeps

* fix(session-export): bundle worker in single-file builds

* fix(session-export): make capture envelopes cloneable

* fix(session-export): drain worker on CLI shutdown

* feat(session-export): capture workspace baseline and deltas

* fix(session-export): preserve request metadata

* test(session-export): cover request metadata capture

* feat(cli): send indexed session export batches

* feat(cli): authorize session export uploads

* fix(cli): flush session export shutdown uploads

* feat(cli): optimize session export replay payloads

* fix(cli): include session export surface metadata

* fix(session-export): decrement chunk refs after upload

decRefChunks was never called, so chunk ref_count stayed at 1 (or
higher with dedup) and DELETE FROM chunk WHERE ref_count <= 0 never
matched. Chunks accumulated in the local SQLite buffer until the 50 GB
cap. Call decRefChunks alongside markUploaded so deleteUploaded can
reclaim the rows.

* fix(session-export): add periodic uploader flush timer

flushIntervalMs and retryBackoffMaxMs were both defined in config and
neither was referenced anywhere; scheduleFlush only ran on inbound
events or reconnect. After a 5xx or network failure the row was backed
off for 1 s, but if no further event arrived the retry never fired and
the events stranded until the CLI restarted. Drive a periodic flush
from a setInterval, unref the handle so it doesn't pin the process, and
clear it from a new dispose() hook the worker calls on shutdown.

* fix(session-export): stop emitting absolute workspace root in baseline

CaptureMetadata.root was the literal absolute filesystem path
(/Users/<name>/Projects/<repo>), shipped in every
workspace_baseline_completed event and not stripped by handlers'
identity filter. The field was set but never read anywhere downstream
— file paths in the baseline are already relative, so the root added
no replay signal. Remove the field outright.

* fix(session-export): cap pendingEvents result set

The SELECT had no LIMIT clause, so under a backlog (network outage,
crashed receiver) it would materialize the full pending table into a
JavaScript array before the byte-limit truncation applied. With a
50 GB buffer cap that is hundreds of MB of heap inside the worker per
drain. Add LIMIT 500 — the drain loop already re-queries until empty,
so no events are missed.

* fix(session-export): exponential retry backoff up to retryBackoffMaxMs

Both the 5xx and network-error branches always retried after the floor
delay regardless of how many attempts had already failed, and
retryBackoffMaxMs was unreferenced. During a sustained outage every
session re-tried at roughly 1 Hz against the dead receiver. Surface
upload_attempts on EventRow and compute the next delay as
min * 2^attempts capped at max.

* fix(session-export): evict superseded workspace snapshots on remember

createWorkspaceProvider retained every captured snapshot — in-memory
and inside the persisted state file — even after the session moved on
to a newer one. For a 1k-file repo over a 100-turn session that is
~2 GB of unreachable heap plus a state file that grows monotonically.
Drop the previous snapshot for the session on remember() when no other
session still references it.

* fix(session-export): anchor aws_secret_key scrubber to key name

The bare 40-char base64 pattern matched every 40-character hex string,
including all git commit SHAs. Tool outputs, diffs, and conversation
messages were silently rewritten as <<REDACTED:aws_secret_key>>,
destroying lineage information in training data. Require the key name
context — naked secrets in unstructured text are rare and the .env /
.aws/credentials high-risk path strip already covers the common case.

* fix(session-export): preserve root linkage in SyncSubscriber events

SyncSubscriber hardcoded rootSessionId = sessionId on every tool,
permission, and feedback event, so sub-agent sessions lost their root
linkage and a future training pipeline could not reconstruct the
agent topology from these side-channel events. Expose the rootSessionId
mapping from Capture and plumb it through the same pattern as
getTurnId.

* fix(session-export): atomic chunk GC after upload

markUploaded + decRefChunks + deleteUploaded were three separate SQL
statements; a crash between markUploaded and decRefChunks would leave
events flagged uploaded (never retried) and chunks with stale
ref_count (never reclaimed by deleteUploaded). Bundle the three calls
into a single transactional commitUploaded helper so either all three
land or none of them do.

* fix(session-export): wait on transient sqlite locks

* fix(session-export): snapshot current workspace directory

* fix(cli): preserve Kilo model export metadata

* fix(cli): send anon id for session export

* fix(cli): fallback to telemetry anon id

* chore(cli): annotate session export config test

* chore: remove session export docs

* fix(cli): harden session export uploads

* fix(cli): preserve stream lifecycle for session export

* fix(kilo-docs): exclude session export ingest link

* fix(cli): restrict session export workspace sync to git repos

* chore: remove session export changeset

* fix(cli): tighten session export payload types

* fix(cli): type session export model payloads

* fix(cli): simplify session export cleanup

* fix(cli): avoid session export shutdown race

* refactor(cli): use drizzle for session export storage

* fix(cli): finalize session export sqlite statements

* fix(cli): link compaction exports to root sessions

* fix(cli): stop exporting raw stream parts

* fix(cli): prune stale workspace snapshots

* refactor(cli): clarify chunk ref counting

* test(cli): clarify dropped upload assertions

* ci: avoid visual path filter action failure

* fix(cli): preserve in-flight workspace snapshots

* fix(cli): stop uploading baseline start events

* fix(cli): trim redundant export metadata

* fix(cli): trim workspace export bookkeeping

* fix(cli): fold terminal outcome into tool exports

* fix(cli): dedupe request context in export batches

* fix(cli): normalize compaction export payloads

* fix(cli): avoid duplicate tool result exports

* test(cli): align session export expectations

* fix(cli): run secretlint during session export scrubbing

* fix(cli): keep retried export batches contiguous

* fix(cli): include agent info in session exports

* fix(cli): flush pending session exports on serve startup

* fix(cli): drop exports when scrubbing fails

* fix(cli): narrow secretlint value extraction

* fix(cli): limit exported agent info

* test(cli): remove brittle agent export source assertion

* fix(cli): ignore corrupt session export workspace state

* fix(cli): keep session export close best effort

* fix(cli): avoid following session export symlinks

* fix(cli): preserve session export chunk ref counts

* fix(cli): retry transient session export uploads

* fix(cli): validate session export ingest endpoint

* fix(cli): tolerate missing export token details

* fix(cli): fail closed on session export org lookup

* fix(cli): decode session export permission replies

* fix(cli): finalize session export on stream close

* fix(cli): bound session export baseline timeout

* fix(cli): avoid persisting workspace file contents

* fix(cli): bound workspace snapshot capture

* fix(cli): validate session export worker messages

* fix(cli): revoke stale session export eligibility

* fix(cli): scope session export workspaces

* fix(cli): extend session export shutdown flush

* fix(cli): infer free Kilo models for export

* fix(cli): avoid duplicate chunk refs

* fix(cli): throttle session export uploads

* fix(cli): harden session export capture

* feat: disclose free model data collection (#10767)

* feat: disclose free model data collection

* chore(cli): document free model footer sorting

* fix(vscode): add free model data translations

* fix: simplify free model data label

* fix: simplify data collection badges

* fix: remove duplicate model info disclosure

* fix: restore composer data tooltip

* fix: align jetbrains data collection indicator

* fix: align free model data indicators

* fix(vscode): show data collection in model preview

* fix: limit data indicators to kilo gateway

* test(cli): relax prompt cancel timeout

* test(cli): annotate prompt cancel timeout

* test(cli): classify prompt queue runtime test

* fix(cli): defer session export startup
2026-06-02 13:58:42 +00:00
marius-kilocode 0f271a39d7 resolve merge conflicts 2026-06-01 15:20:54 +02:00