Merge branch 'main' into bittersweet-height

Resolved conflicts in sandbox/session-inheritance code (both branches
independently fixed the same cross-directory parent-snapshot leak):
- policy.ts: keep sourceDirectory read-from-source plus main's no-write-back
  (secure() was removed upstream).
- session.ts: keep both imports, both create-input fields (sourceDirectory +
  sandboxFallback), pass both to SandboxPolicy.inherit.
- agent-manager.ts: keep both imports.
- session.test.ts: union imports, keep all three tests; update HEAD's test
  config from experimental.sandbox to sandbox.enabled.
- agent-manager-tool-start.test.ts: keep both tests.
This commit is contained in:
marius-kilocode
2026-07-13 11:44:19 +02:00
1329 changed files with 79925 additions and 14810 deletions
+1 -1
View File
@@ -4,7 +4,7 @@ This directory contains changeset files used to track changes for the next relea
## Adding a changeset
When making a user-facing change, run:
When making a user-facing change, prefer one concise changeset per PR, grouping related changes when possible. Run:
```sh
bunx changeset add
@@ -1,7 +0,0 @@
---
"@kilocode/cli": minor
"@kilocode/sdk": minor
"kilo-code": minor
---
Connect to a local Anaconda Desktop text-generation model server from the CLI or VS Code.
-5
View File
@@ -1,5 +0,0 @@
---
"kilo-code": minor
---
Support NVIDIA Parakeet TDT 0.6B v3 for speech-to-text input.
@@ -0,0 +1,5 @@
---
"@kilocode/cli": patch
---
Inherit the current model and reasoning variant when Agent Manager starts sessions without explicit overrides.
@@ -1,5 +0,0 @@
---
"kilo-code": patch
---
Color Agent Manager PR badges by pull request state (open, draft, merged, closed) and show CI and review status as a separate icon, so a failing check is no longer mistaken for a closed PR.
@@ -1,5 +0,0 @@
---
"kilo-code": patch
---
Remember the Agent Manager new-worktree sandbox toggle for future sessions.
-7
View File
@@ -1,7 +0,0 @@
---
"@kilocode/cli": minor
"@kilocode/sdk": minor
"kilo-code": minor
---
Allow Agent Manager chat tools to discover available models and reasoning variants by model name, then start each session with the chosen model and reasoning effort. Agent Manager resolves the provider for a named model automatically, preferring the provider behind the current default model and falling back to the Kilo Gateway.
@@ -1,5 +0,0 @@
---
"kilo-code": minor
---
Add a sandbox toggle to the Agent Manager New Worktree modal so each worktree session can start sandboxed
-6
View File
@@ -1,6 +0,0 @@
---
"@kilocode/cli": patch
"kilo-code": patch
---
Gate experimental agents on their declared skill, MCP, and VS Code extension requirements. VS Code shows requirement groups with Marketplace shortcuts, and the CLI stops before sending when requirements are unmet.
@@ -1,5 +0,0 @@
---
"kilo-code": patch
---
Translate the Anaconda Desktop provider strings into all supported languages instead of falling back to English.
-5
View File
@@ -1,5 +0,0 @@
---
"kilo-code": patch
---
Animate tool-call and reasoning details when expanding and collapsing.
-5
View File
@@ -1,5 +0,0 @@
---
"kilo-code": patch
---
Open the model picker expanded by default, keep the preview pinned while hovering, separate Kilo Auto models into their own marked group with summary tooltips, and show backend-provided Auto Efficient model choices.
-5
View File
@@ -1,5 +0,0 @@
---
"@kilocode/cli": patch
---
Keep turns responsive when snapshot infrastructure stalls and prevent transient snapshot progress from appearing in forked sessions.
-5
View File
@@ -1,5 +0,0 @@
---
"kilo-code": minor
---
Enable autocomplete in Jupyter notebooks.
-6
View File
@@ -1,6 +0,0 @@
---
"@kilocode/cli": patch
"kilo-code": patch
---
Run Windows PowerShell tool commands without `-EncodedCommand` to reduce antivirus false positives.
-6
View File
@@ -1,6 +0,0 @@
---
"kilo-code": patch
"@kilocode/kilo-gateway": patch
---
Use the matching FIM model for chat autocomplete when Next Edit is selected.
+5
View File
@@ -0,0 +1,5 @@
---
"kilo-code": minor
---
Add in-chat search to the VS Code sidebar and editor tabs. Click the search icon in the session header to find text across the current conversation, with match case, whole word, and regular expression options, then step through highlighted matches with the next/previous controls.
-5
View File
@@ -1,5 +0,0 @@
---
"kilo-code": patch
---
Explain Marketplace item types, installation scopes, destination files, and MCP security before installation.
+5
View File
@@ -0,0 +1,5 @@
---
"@kilocode/cli": patch
---
Make session model usage easier to scan with collapsible summary rows and aligned steps and cost columns.
-5
View File
@@ -1,5 +0,0 @@
---
"@kilocode/cli": minor
---
Show personal credits, team credits, and Kilo Pass in the CLI sidebar, and refresh the balance immediately after switching teams.
-5
View File
@@ -1,5 +0,0 @@
---
"@kilocode/cli": patch
---
Create the default `.kilo/plans` directory automatically when Plan mode starts.
-5
View File
@@ -1,5 +0,0 @@
---
"kilo-code": patch
---
Show experimental sandbox controls by default for non-Windows users.
@@ -0,0 +1,6 @@
---
"kilo-code": patch
"@kilocode/cli": patch
---
Speed up VS Code settings saves by draining pending prompts and disposing worktree instances concurrently.
@@ -1,5 +0,0 @@
---
"kilo-code": minor
---
Filter marketplace items to those relevant to the current workspace's files and installed VS Code extensions.
@@ -1,7 +0,0 @@
---
"kilo-code": patch
---
Improve autocomplete error messages to clarify BYOK and credits issues
When autocomplete is paused due to a payment or auth error, the messages now explain all possible causes: no Kilo credits, API key (BYOK) quota exhausted, not signed in, or invalid/missing API key.
+5
View File
@@ -0,0 +1,5 @@
---
"@kilocode/cli": patch
---
Resolve AWS Bedrock credentials from SSO profiles in packaged CLI builds.
+5
View File
@@ -0,0 +1,5 @@
---
"@kilocode/cli": patch
---
Use the correct `filePath` argument name in the Gemini system prompt.
+5
View File
@@ -0,0 +1,5 @@
---
"@kilocode/cli": patch
---
Install the latest stable CLI release when newer non-CLI or prerelease releases exist.
-7
View File
@@ -1,7 +0,0 @@
---
"@kilocode/cli": patch
"@kilocode/kilo-gateway": patch
"kilo-code": patch
---
Fix opening KiloClaw from the CLI and VS Code slash commands.
+5
View File
@@ -0,0 +1,5 @@
---
"@kilocode/cli": patch
---
Show the Kilo Gateway rate-limit message when login has too many pending authorization requests.
+6
View File
@@ -0,0 +1,6 @@
---
"@kilocode/cli": patch
"kilo-code": patch
---
Hide gpt-5.5-pro from the model picker when using ChatGPT OAuth login, since Codex rejects it with HTTP 400.
-5
View File
@@ -1,5 +0,0 @@
---
"@kilocode/cli": patch
---
Allow the default TUI to import cloud-only sessions without rejecting their IDs as missing locally.
-6
View File
@@ -1,6 +0,0 @@
---
"@kilocode/cli": minor
"kilo-code": minor
---
Enforce the sandbox network restriction for agent commands on Linux, including TCP, UDP, IPv4, IPv6, and descendant processes.
@@ -1,5 +0,0 @@
---
"@kilocode/kilo-jetbrains": patch
---
Highlight rendered prompt file mentions and open them on click.
@@ -0,0 +1,5 @@
---
"@kilocode/kilo-jetbrains": patch
---
Return keyboard focus to the JetBrains prompt after clicking inline session dialog actions.
@@ -1,5 +0,0 @@
---
"@kilocode/kilo-jetbrains": patch
---
Show JetBrains file mention suggestions immediately for empty `@` mentions and keep the completion popup stable while typing quickly.
@@ -1,5 +0,0 @@
---
"@kilocode/kilo-jetbrains": patch
---
Hide raw file contents from mentioned files in JetBrains chat messages.
@@ -1,5 +0,0 @@
---
"@kilocode/kilo-jetbrains": patch
---
Fix @git-changes mentions causing JetBrains chat sessions to fail.
@@ -1,5 +0,0 @@
---
"@kilocode/kilo-jetbrains": patch
---
Show file type icons and keep predefined mentions first in JetBrains mention completions.
@@ -0,0 +1,5 @@
---
"@kilocode/kilo-jetbrains": patch
---
Stop orphaned Kilo CLI processes when JetBrains IDEs close, including binaries that ignore graceful shutdown.
@@ -1,5 +0,0 @@
---
"@kilocode/kilo-jetbrains": minor
---
Add `/` slash commands and `@` file/git-changes mentions to the JetBrains chat prompt with native completion.
-5
View File
@@ -1,5 +0,0 @@
---
"@kilocode/kilo-jetbrains": patch
---
Show a concise single-line hint in the JetBrains prompt placeholder.
@@ -1,5 +0,0 @@
---
"@kilocode/kilo-jetbrains": patch
---
Fix prompt undo/redo, clean mid-token mention completion, and show unresolved file mentions in the JetBrains chat prompt.
+5
View File
@@ -0,0 +1,5 @@
---
"@kilocode/kilo-jetbrains": patch
---
Refresh the JetBrains prompt input chrome when switching IDE themes.
@@ -0,0 +1,5 @@
---
"@kilocode/kilo-jetbrains": patch
---
Polish JetBrains prompt focus and copy toolbar positioning.
+5
View File
@@ -0,0 +1,5 @@
---
"@kilocode/kilo-jetbrains": patch
---
Show rollback/redo progress inline (on the message and redo controls) with a cancel action instead of a full-screen loading overlay.
+6
View File
@@ -0,0 +1,6 @@
---
"@kilocode/kilo-jetbrains": patch
"kilo-code": patch
---
Support rollback and redo controls in JetBrains sessions and clarify when reverted changes can be redone.
@@ -0,0 +1,5 @@
---
"@kilocode/kilo-jetbrains": patch
---
Clarify in JetBrains rollback that only the conversation was reverted when snapshots are disabled.
@@ -1,5 +0,0 @@
---
"@kilocode/kilo-jetbrains": patch
---
Attach hand-typed prompt file mentions when sending immediately.
@@ -1,5 +0,0 @@
---
"@kilocode/kilo-jetbrains": patch
---
Improve JetBrains session error logs so nested CLI error messages are visible.
@@ -1,5 +0,0 @@
---
"@kilocode/kilo-jetbrains": patch
---
Restore prompt focus after returning from session history in JetBrains.
-5
View File
@@ -1,5 +0,0 @@
---
"@kilocode/kilo-jetbrains": patch
---
Support VS Code slash-command aliases in the JetBrains prompt.
@@ -1,5 +0,0 @@
---
"@kilocode/kilo-jetbrains": patch
---
Reconnect the JetBrains plugin when its event stream stalls during startup.
@@ -1,5 +0,0 @@
---
"@kilocode/kilo-jetbrains": patch
---
Keep JetBrains prompt mention suggestions stable while typing fuzzy file matches.
+5
View File
@@ -0,0 +1,5 @@
---
"@kilocode/kilo-jetbrains": patch
---
Polish JetBrains session message toolbar alignment, rollback icon, and copy tooltips.
+5
View File
@@ -0,0 +1,5 @@
---
"@kilocode/kilo-jetbrains": patch
---
Increase spacing before non-initial user prompts in the JetBrains session transcript.
-5
View File
@@ -1,5 +0,0 @@
---
"kilo-code": patch
---
Preserve new-chat prompts, attachments, and scroll position when toggling sandbox, and keep sandbox status stable while switching sessions.
-7
View File
@@ -1,7 +0,0 @@
---
"@kilocode/cli": patch
"@kilocode/kilo-gateway": patch
"@kilocode/sdk": patch
---
Expose Kilo Pass state on the Kilo profile API contract.
+5
View File
@@ -0,0 +1,5 @@
---
"kilo-code": patch
---
Load expanded diff previews consistently when opening a review.
-6
View File
@@ -1,6 +0,0 @@
---
"@kilocode/cli": minor
"kilo-code": minor
---
Block outbound network access from agent commands and in-process HTTP tools with the optional macOS sandbox, with a Sandboxing setting to allow network access when needed.
@@ -1,5 +0,0 @@
---
"kilo-code": minor
---
Notify when a marketplace item matches your workspace, with a one-click install button and a "Don't show again" option per suggestion.
-5
View File
@@ -1,5 +0,0 @@
---
"kilo-code": minor
---
Browse skills, agents, and MCP servers together and filter them by category.
-5
View File
@@ -1,5 +0,0 @@
---
"kilo-code": minor
---
Support safely reading, editing, and executing Jupyter notebook cells directly from Kilo in VS Code, including absolute workspace paths and content-based edit conflict detection.
-5
View File
@@ -1,5 +0,0 @@
---
"kilo-code": minor
---
Let the notebook tools create a new empty notebook.
-5
View File
@@ -1,5 +0,0 @@
---
"kilo-code": patch
---
Show sandbox state changes as concise VS Code notifications.
-5
View File
@@ -1,5 +0,0 @@
---
"kilo-code": patch
---
Open the model selector instantly, even with large model catalogs.
-5
View File
@@ -1,5 +0,0 @@
---
"kilo-code": patch
---
Preserve unchanged codebase indexes when extension or VS Code updates interrupt an incremental scan.
-5
View File
@@ -1,5 +0,0 @@
---
"@kilocode/cli": patch
---
Stop loading `.opencode` config directories and use `.kilo` instead, while retaining `.kilocode` as a legacy fallback.
@@ -1,5 +0,0 @@
---
"kilo-code": patch
---
Keep attention sounds silent for permission requests handled by auto-approve.
+5
View File
@@ -0,0 +1,5 @@
---
"kilo-code": patch
---
Show effective permission defaults and clarify external-directory approvals in VS Code.
@@ -1,5 +0,0 @@
---
"@kilocode/cli": patch
---
Release disconnected event streams so long-running servers do not retain queued session diffs.
-7
View File
@@ -1,7 +0,0 @@
---
"@kilocode/cli": patch
"@kilocode/sdk": patch
"kilo-code": patch
---
Remember sandbox choices per session and start new sessions with the last selected sandbox state.
+5
View File
@@ -0,0 +1,5 @@
---
"@kilocode/cli": patch
---
Stop explicitly directing GPT and Codex models to delegate tasks to subagents.
-5
View File
@@ -1,5 +0,0 @@
---
"kilo-code": patch
---
Support resetting read notifications from the VS Code extension settings.
-6
View File
@@ -1,6 +0,0 @@
---
"@kilocode/cli": minor
"kilo-code": minor
---
Confine agent shell and file-tool writes to project and Kilo state directories with the optional macOS and Linux sandboxes.
+5
View File
@@ -0,0 +1,5 @@
---
"kilo-code": patch
---
Show sandbox controls only after sandboxing is enabled in settings.
@@ -0,0 +1,7 @@
---
"kilo-code": minor
"@kilocode/cli": minor
"@kilocode/sdk": minor
---
Support configuring network destinations that sandboxed tools can reach while network access is otherwise restricted.
-5
View File
@@ -1,5 +0,0 @@
---
"@kilocode/cli": patch
---
Prevent confined sessions and delegated agents from weakening their sandbox policy through configuration changes or unauthenticated server control.
-5
View File
@@ -1,5 +0,0 @@
---
"@kilocode/cli": patch
---
Prevent sandboxed file tools from escaping project write roots through concurrent symlink replacement on macOS.
-5
View File
@@ -1,5 +0,0 @@
---
"@kilocode/cli": patch
---
Confine sandboxed worktree sessions to their active worktree instead of allowing writes to sibling or primary checkouts.
+6
View File
@@ -0,0 +1,6 @@
---
"@kilocode/cli": patch
"kilo-code": patch
---
Shut down the headless `kilo serve` process automatically when the editor client that launched it exits without a clean signal, preventing orphaned CLI processes.
@@ -1,5 +0,0 @@
---
"kilo-code": patch
---
Show full external directory paths in permission auto-approve rules.
-7
View File
@@ -1,7 +0,0 @@
---
"@kilocode/cli": patch
"@kilocode/sdk": patch
"kilo-code": patch
---
Show the concrete model reported for routed Kilo auto-model steps in CLI and VS Code session timelines, and break down TUI sidebar token usage, cache rate, and cost by model across subagent sessions.
-5
View File
@@ -1,5 +0,0 @@
---
"kilo-code": patch
---
Show filesystem and network restriction states in the sandbox tooltip.
-4
View File
@@ -1,4 +0,0 @@
---
"kilo-code": patch
---
Sort slash-command dropdown results by relevance. Exact matches now appear first, followed by prefix matches, then substring matches.
+6
View File
@@ -0,0 +1,6 @@
---
"@kilocode/cli": patch
"@kilocode/kilo-ui": patch
---
Show detailed GPT-5.6 reasoning summaries and avoid expandable blank panels when a provider returns only a summary title.
-5
View File
@@ -1,5 +0,0 @@
---
"kilo-code": minor
---
Let users hide the codebase indexing button while indexing is off.
-5
View File
@@ -1,5 +0,0 @@
---
"kilo-code": minor
---
Toggle the current session sandbox with `/sandbox` in the sidebar and Agent Manager.
-7
View File
@@ -1,7 +0,0 @@
---
"@kilocode/cli": minor
"@kilocode/sdk": minor
"kilo-code": patch
---
Add session-local macOS sandbox controls, show the effective active state, and confirm toggles in the CLI and VS Code extension.
@@ -1,5 +0,0 @@
---
"kilo-code": patch
---
Stop shipping the local-only `.cli-version` build marker in packaged VSIX installs, which previously made production installs detect as local builds and inject a dev-only bwrap fallback.
+5
View File
@@ -0,0 +1,5 @@
---
"kilo-code": minor
---
Add a "Browse files..." option to the @ mention dropdown in the VS Code extension prompt input. Selecting it opens a native file picker and mentions the chosen file, so you can point Kilo Code at files outside the current workspace. Files outside the workspace are not auto-attached; Kilo Code reads them on request through the normal Read tool, respecting your file access permissions.
-7
View File
@@ -1,7 +0,0 @@
---
"@kilocode/cli": patch
"@kilocode/sdk": patch
"kilo-code": patch
---
Include session-tree IDs in model usage API responses and show full task token usage with a provider-grouped model breakdown in the VS Code session header.
@@ -0,0 +1,5 @@
---
"kilo-code": patch
---
Start Agent Manager local sessions on Windows when workspace drive-letter casing differs.
+7
View File
@@ -13,14 +13,21 @@ packages/kilo-docs/public/img/screenshot-tests/**/*.png filter=lfs diff=lfs merg
# Hide most localization files by default in GitHub PR diffs. Show English as the source
# language and German so reviewers can catch untranslated copy-pasted English strings.
**/i18n/*.ts linguist-generated=true
**/i18n/**/*.ts linguist-generated=true
**/i18n/en.ts linguist-generated=false
**/i18n/en*.ts linguist-generated=false
**/i18n/**/en.ts linguist-generated=false
**/i18n/**/en*.ts linguist-generated=false
**/i18n/de.ts linguist-generated=false
**/i18n/de*.ts linguist-generated=false
**/i18n/**/de.ts linguist-generated=false
**/i18n/**/de*.ts linguist-generated=false
**/i18n/package-nls-en.ts linguist-generated=false
**/i18n/package-nls-de.ts linguist-generated=false
**/i18n/index.ts linguist-generated=false
**/i18n/**/index.ts linguist-generated=false
**/i18n/parity.test.ts linguist-generated=false
**/i18n/**/parity.test.ts linguist-generated=false
packages/kilo-i18n/src/*.ts linguist-generated=true
packages/kilo-i18n/src/en.ts linguist-generated=false
packages/kilo-i18n/src/de.ts linguist-generated=false
+49 -4
View File
@@ -33,7 +33,10 @@ runs:
shell: bash
run: echo "dir=$(bun pm cache)" >> "$GITHUB_OUTPUT"
# Restoring and extracting the ~1 GB cache took 2m23s on Windows, while a # kilocode_change
# fresh install took 1m27s. Keep Windows off this cache until that reverses. # kilocode_change
- name: Restore Bun dependencies
if: runner.os != 'Windows' # kilocode_change
id: bun-cache
uses: actions/cache/restore@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
@@ -42,24 +45,66 @@ runs:
restore-keys: |
${{ runner.os }}-bun-
# kilocode_change start
- name: Setup Node for native dependency builds
if: runner.os != 'Windows'
uses: actions/setup-node@v6
with:
node-version: "24"
package-manager-cache: false
- name: Configure node-gyp Node headers
if: runner.os != 'Windows'
id: node-gyp
run: |
node <<'NODE'
const fs = require("node:fs")
const path = require("node:path")
const exe = path.dirname(fs.realpathSync(process.execPath))
const dirs = [exe, path.dirname(exe)]
const root = dirs.find((dir) => fs.existsSync(path.join(dir, "include", "node", "node.h")))
if (!root) {
throw new Error(`Node headers not found under ${dirs.join(", ")}`)
}
fs.appendFileSync(process.env.GITHUB_OUTPUT, `nodedir=${root}\n`)
NODE
shell: bash
# kilocode_change end
- name: Install setuptools for distutils compatibility
run: python3 -m pip install setuptools || pip install setuptools || true
shell: bash
- name: Install dependencies
run: |
# kilocode_change start
if [ "$RUNNER_OS" != "Windows" ]; then
export npm_config_nodedir="${{ steps.node-gyp.outputs.nodedir }}"
fi
# kilocode_change end
# Workaround for patched peer variants
# e.g. ./patches/ for standard-openapi
# https://github.com/oven-sh/bun/issues/28147
# https://github.com/oven-sh/bun/issues/28147 # kilocode_change
if [ "$RUNNER_OS" = "Windows" ]; then
bun install --linker hoisted ${{ inputs.install-flags }}
# kilocode_change start
if ! bun install --frozen-lockfile --linker hoisted ${{ inputs.install-flags }}; then
echo "::warning::Bun install failed on Windows; retrying with conservative extraction"
sleep 5
BUN_FEATURE_FLAG_DISABLE_STREAMING_INSTALL=1 \
bun install --frozen-lockfile --linker hoisted --network-concurrency 16 ${{ inputs.install-flags }}
fi
# kilocode_change end
else
bun install ${{ inputs.install-flags }}
bun install --frozen-lockfile ${{ inputs.install-flags }} # kilocode_change
fi
shell: bash
# Do not upload a Windows cache that Windows jobs intentionally never restore. # kilocode_change
- name: Save Bun dependencies
if: steps.bun-cache.outputs.cache-hit != 'true' && github.event_name != 'pull_request' && github.event_name != 'pull_request_target'
if: runner.os != 'Windows' && steps.bun-cache.outputs.cache-hit != 'true' && github.event_name != 'pull_request' && github.event_name != 'pull_request_target' # kilocode_change
uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: ${{ steps.cache.outputs.dir }}
@@ -0,0 +1,21 @@
# kilocode_change - new file
name: "Setup Linux Sandbox"
description: "Build the Linux bubblewrap helper"
runs:
using: "composite"
steps:
- name: Setup Zig
run: |
curl --fail --location --retry 3 \
https://ziglang.org/download/0.14.0/zig-linux-x86_64-0.14.0.tar.xz \
--output "$RUNNER_TEMP/zig.tar.xz"
echo "473ec26806133cf4d1918caf1a410f8403a13d979726a9045b421b685031a982 $RUNNER_TEMP/zig.tar.xz" | sha256sum --check --status
tar -xJf "$RUNNER_TEMP/zig.tar.xz" -C "$RUNNER_TEMP"
echo "$RUNNER_TEMP/zig-linux-x86_64-0.14.0" >> "$GITHUB_PATH"
shell: bash
- name: Build bubblewrap helper
run: |
bun packages/opencode/script/kilocode/bubblewrap.ts --arch x64 --output "$RUNNER_TEMP/bwrap"
echo "KILO_BWRAP_PATH=$RUNNER_TEMP/bwrap" >> "$GITHUB_ENV"
shell: bash
+6
View File
@@ -39,6 +39,12 @@ jobs:
distribution: temurin
java-version: "21"
- name: Free disk space for CodeQL
shell: bash
run: |
sudo rm -rf /usr/share/dotnet /opt/ghc /usr/local/lib/android /usr/local/share/boost
docker system prune --all --force || true
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
with:
+30 -16
View File
@@ -7,9 +7,19 @@ on:
- closed
branches:
- main
workflow_dispatch:
inputs:
pr:
description: Merged JetBrains release PR number to publish
required: true
type: string
merge_commit:
description: Merge commit SHA from the reviewed release PR
required: true
type: string
concurrency:
group: publish-jetbrains-pr-${{ github.event.pull_request.number }}
group: publish-jetbrains-pr-${{ github.event.pull_request.number || inputs.pr }}
cancel-in-progress: false
permissions:
@@ -23,17 +33,23 @@ jobs:
publish:
if: >-
github.repository == 'Kilo-Org/kilocode' &&
github.event.pull_request.merged == true &&
startsWith(github.event.pull_request.head.ref, 'jetbrains/release/') &&
contains(github.event.pull_request.labels.*.name, 'jetbrains-release') &&
github.event.pull_request.head.repo.full_name == github.repository
(
(
github.event_name == 'pull_request' &&
github.event.pull_request.merged == true &&
startsWith(github.event.pull_request.head.ref, 'jetbrains/release/') &&
contains(github.event.pull_request.labels.*.name, 'jetbrains-release') &&
github.event.pull_request.head.repo.full_name == github.repository
) ||
github.event_name == 'workflow_dispatch'
)
runs-on: blacksmith-8vcpu-ubuntu-2404
steps:
- name: Checkout merged release PR
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.merge_commit_sha }}
ref: ${{ github.event.pull_request.merge_commit_sha || inputs.merge_commit }}
- name: Setup Bun for validation
uses: ./.github/actions/setup-bun
@@ -44,7 +60,7 @@ jobs:
env:
GH_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
PR_NUMBER: ${{ github.event.pull_request.number }}
PR_NUMBER: ${{ github.event.pull_request.number || inputs.pr }}
- name: Save reviewed release metadata
run: |
@@ -86,6 +102,12 @@ jobs:
run: |
sudo apt-get update
sudo apt-get install -y patchelf zip
curl --fail --location \
https://ziglang.org/download/0.14.0/zig-linux-x86_64-0.14.0.tar.xz \
--output "$RUNNER_TEMP/zig.tar.xz"
echo "473ec26806133cf4d1918caf1a410f8403a13d979726a9045b421b685031a982 $RUNNER_TEMP/zig.tar.xz" | sha256sum --check --status
tar -xJf "$RUNNER_TEMP/zig.tar.xz" -C "$RUNNER_TEMP"
echo "$RUNNER_TEMP/zig-linux-x86_64-0.14.0" >> "$GITHUB_PATH"
- name: Validate publishing secrets
run: |
@@ -103,19 +125,11 @@ jobs:
JETBRAINS_PRIVATE_KEY: ${{ secrets.JETBRAINS_PRIVATE_KEY }}
JETBRAINS_PRIVATE_KEY_PASSWORD: ${{ secrets.JETBRAINS_PRIVATE_KEY_PASSWORD }}
- name: Prepare CLI resources
working-directory: packages/kilo-jetbrains
run: bun script/build.ts --production --prepare-cli
env:
KILO_VERSION: ${{ steps.release.outputs.version }}
KILO_CHANNEL: ${{ steps.release.outputs.cli_channel }}
GH_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
- name: Verify plugin
working-directory: packages/kilo-jetbrains
run: ./gradlew verifyPlugin -Pproduction=true -Pkilo.channel="$CHANNEL"
env:
GH_TOKEN: ${{ github.token }}
VERSION: ${{ steps.release.outputs.version }}
CHANNEL: ${{ steps.release.outputs.marketplace_channel }}
+8 -2
View File
@@ -35,7 +35,9 @@ concurrency: ${{ github.workflow }}-${{ github.ref }}-${{ inputs.version || inpu
permissions:
id-token: write
contents: write
issues: write # kilocode_change - label automated JetBrains CLI pin bump PRs
packages: write
pull-requests: write # kilocode_change - create automated JetBrains CLI pin bump PRs
jobs:
version:
@@ -194,8 +196,12 @@ jobs:
test -x "$helper"
grep -q '^SPDX-License-Identifier: LGPL-2.0-or-later$' "$(dirname "$binary")/licenses/bubblewrap/NOTICE"
"$helper" --version
# The live user-namespace bootstrap depends on the runner's kernel/AppArmor policy
# (GitHub-hosted Ubuntu 24.04 sets kernel.apparmor_restrict_unprivileged_userns=1), not on
# the shipped artifact. The runtime probe degrades gracefully, so keep this check non-fatal.
"$helper" --unshare-user --disable-userns --unshare-pid --die-with-parent --new-session \
--ro-bind / / --dev /dev --proc /proc -- "$helper" --version
--ro-bind / / --dev /dev --proc /proc -- "$helper" --version \
|| echo "unprivileged user namespaces unavailable on this runner; skipping live sandbox check"
fi
root="$(mktemp -d)"
trap 'rm -rf "$root"' RETURN
@@ -233,7 +239,7 @@ jobs:
binary="/dist/$PACKAGE/bin/kilo" # kilocode_change
"$binary" --version # kilocode_change
"/dist/$PACKAGE/bin/bwrap" --version # kilocode_change
grep -q '^SPDX-License-Identifier: LGPL-2.0-or-later$' "/dist/$PACKAGE/bin/licenses/bubblewrap/NOTICE" # kilocode_change
grep -q '\''^SPDX-License-Identifier: LGPL-2.0-or-later$'\'' "/dist/$PACKAGE/bin/licenses/bubblewrap/NOTICE" # kilocode_change
root="$(mktemp -d)"
trap '\''rm -rf "$root"'\'' EXIT
unset KILO_MODELS_PATH KILO_MODELS_URL KILO_CONFIG KILO_CONFIG_DIR
+82 -33
View File
@@ -30,6 +30,7 @@ jobs:
pull-requests: read
outputs:
settings: ${{ steps.matrix.outputs.settings }}
general: ${{ steps.matrix.outputs.general }}
steps:
- name: Checkout repository
if: github.event_name != 'workflow_dispatch'
@@ -57,14 +58,16 @@ jobs:
env:
GENERAL: ${{ github.event_name != 'pull_request' || steps.filter.outputs.general == 'true' }}
run: |
if [ "$GENERAL" = "true" ]; then
echo 'settings=[{"name":"linux","host":"blacksmith-4vcpu-ubuntu-2404","run":true},{"name":"macos","host":"macos-15","run":true},{"name":"windows","host":"blacksmith-4vcpu-windows-2025","run":true}]' >> "$GITHUB_OUTPUT"
if [ "$GENERAL" != "true" ]; then
echo 'general=false' >> "$GITHUB_OUTPUT"
echo 'settings=[{"os":"linux","index":1,"total":1,"host":"blacksmith-4vcpu-ubuntu-2404","run":false,"packages":false}]' >> "$GITHUB_OUTPUT"
exit 0
fi
echo 'settings=[{"name":"linux","host":"blacksmith-4vcpu-ubuntu-2404","run":false}]' >> "$GITHUB_OUTPUT"
echo 'general=true' >> "$GITHUB_OUTPUT"
echo 'settings=[{"os":"linux","index":1,"total":2,"host":"blacksmith-4vcpu-ubuntu-2404","run":true,"packages":true},{"os":"linux","index":2,"total":2,"host":"blacksmith-4vcpu-ubuntu-2404","run":true,"packages":false},{"os":"macos","index":1,"total":1,"host":"macos-15","run":true,"packages":true},{"os":"windows","index":1,"total":4,"host":"blacksmith-4vcpu-windows-2025","run":true,"packages":true},{"os":"windows","index":2,"total":4,"host":"blacksmith-4vcpu-windows-2025","run":true,"packages":false},{"os":"windows","index":3,"total":4,"host":"blacksmith-4vcpu-windows-2025","run":true,"packages":false},{"os":"windows","index":4,"total":4,"host":"blacksmith-4vcpu-windows-2025","run":true,"packages":false}]' >> "$GITHUB_OUTPUT"
unit:
name: unit (${{ matrix.settings.name }})
name: ${{ !matrix.settings.run && 'unit (unchanged)' || matrix.settings.total > 1 && format('unit ({0}, {1}/{2})', matrix.settings.os, matrix.settings.index, matrix.settings.total) || format('unit ({0})', matrix.settings.os) }}
needs: changes
strategy:
fail-fast: false
@@ -107,21 +110,9 @@ jobs:
uses: ./.github/actions/setup-bun
# kilocode_change start
- name: Setup Zig for Linux sandbox helper
- name: Setup Linux sandbox helper
if: matrix.settings.run && runner.os == 'Linux'
run: |
curl --fail --location --retry 3 \
https://ziglang.org/download/0.14.0/zig-linux-x86_64-0.14.0.tar.xz \
--output "$RUNNER_TEMP/zig.tar.xz"
echo "473ec26806133cf4d1918caf1a410f8403a13d979726a9045b421b685031a982 $RUNNER_TEMP/zig.tar.xz" | sha256sum --check --status
tar -xJf "$RUNNER_TEMP/zig.tar.xz" -C "$RUNNER_TEMP"
echo "$RUNNER_TEMP/zig-linux-x86_64-0.14.0" >> "$GITHUB_PATH"
- name: Build Linux sandbox helper
if: matrix.settings.run && runner.os == 'Linux'
run: |
bun packages/opencode/script/kilocode/bubblewrap.ts --arch x64 --output "$RUNNER_TEMP/bwrap"
echo "KILO_BWRAP_PATH=$RUNNER_TEMP/bwrap" >> "$GITHUB_ENV"
uses: ./.github/actions/setup-linux-sandbox
# kilocode_change end
- name: Configure git identity
if: matrix.settings.run
@@ -133,32 +124,31 @@ jobs:
if: matrix.settings.run
uses: actions/cache@v5 # kilocode_change
with:
path: node_modules/.cache/turbo
key: turbo-${{ runner.os }}-${{ hashFiles('turbo.json', '**/package.json') }}-${{ github.sha }}
path: .turbo/cache # kilocode_change
key: turbo-${{ runner.os }}-${{ hashFiles('turbo.json', 'bun.lock') }}-${{ matrix.settings.os }}-${{ matrix.settings.index }}-${{ github.sha }}
restore-keys: |
turbo-${{ runner.os }}-${{ hashFiles('turbo.json', '**/package.json') }}-
turbo-${{ runner.os }}-${{ hashFiles('turbo.json', 'bun.lock') }}-${{ matrix.settings.os }}-${{ matrix.settings.index }}-
turbo-${{ runner.os }}-${{ hashFiles('turbo.json', 'bun.lock') }}-
turbo-${{ runner.os }}-
- name: Run unit tests
- name: Run non-CLI unit tests
if: matrix.settings.run && matrix.settings.packages
run: bun turbo test:ci --filter='!@kilocode/cli' --filter='!@kilocode/kilo-jetbrains'
- name: Run CLI unit tests
if: matrix.settings.run
run: bun turbo test:ci --filter='!@kilocode/kilo-jetbrains'
run: bun turbo test:ci --filter='@kilocode/cli'
env:
KILO_EXPERIMENTAL_DISABLE_FILEWATCHER: ${{ runner.os == 'Windows' && 'true' || 'false' }}
KILO_TEST_PROFILE: ${{ runner.os == 'macOS' && github.event_name == 'pull_request' && 'darwin' || '' }} # kilocode_change
# kilocode_change start
- name: Run HttpApi exerciser gates
if: matrix.settings.run && runner.os == 'Linux'
working-directory: packages/opencode
run: bun run test:httpapi
# kilocode_change end
KILO_TEST_PROFILE: ${{ matrix.settings.os == 'macos' && 'darwin' || '' }}
KILO_TEST_SHARD: ${{ format('{0}/{1}', matrix.settings.index, matrix.settings.total) }}
- name: Publish unit reports # kilocode_change
if: always() && matrix.settings.run
uses: mikepenz/action-junit-report@bccf2e31636835cf0874589931c4116687171386 # v6.4.0
with:
report_paths: packages/*/.artifacts/unit/junit.xml
check_name: "unit results (${{ matrix.settings.name }})"
annotate_only: true
detailed_summary: true
include_time_in_summary: true
fail_on_failure: false
@@ -167,13 +157,52 @@ jobs:
if: always() && matrix.settings.run
uses: actions/upload-artifact@v7 # kilocode_change
with:
name: unit-${{ matrix.settings.name }}-${{ github.run_attempt }}
name: unit-${{ matrix.settings.os }}-${{ matrix.settings.index }}-${{ github.run_attempt }}
include-hidden-files: true
if-no-files-found: ignore
retention-days: 7
path: packages/*/.artifacts/unit/junit.xml
# kilocode_change end
# kilocode_change start
httpapi:
name: HttpApi exerciser
needs: changes
if: needs.changes.outputs.general == 'true'
runs-on: blacksmith-4vcpu-ubuntu-2404
timeout-minutes: 15
defaults:
run:
shell: bash
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Setup Bun
uses: ./.github/actions/setup-bun
- name: Setup Linux sandbox helper
uses: ./.github/actions/setup-linux-sandbox
- name: Configure git identity
run: |
git config --global user.email "kilo-maintainer[bot]@users.noreply.github.com"
git config --global user.name "kilo-maintainer[bot]"
- name: Cache Turbo
uses: actions/cache@v5
with:
path: .turbo/cache
key: turbo-${{ runner.os }}-${{ hashFiles('turbo.json', 'bun.lock') }}-httpapi-${{ github.sha }}
restore-keys: |
turbo-${{ runner.os }}-${{ hashFiles('turbo.json', 'bun.lock') }}-httpapi-
turbo-${{ runner.os }}-${{ hashFiles('turbo.json', 'bun.lock') }}-
turbo-${{ runner.os }}-
- name: Run HttpApi exerciser gates
run: bun turbo test:httpapi --filter='@kilocode/cli'
# kilocode_change end
# kilocode_change start
jetbrains:
name: jetbrains
@@ -185,18 +214,38 @@ jobs:
# kilocode_change end
# kilocode_change start
unit-required:
name: unit (linux)
runs-on: blacksmith-4vcpu-ubuntu-2404
needs:
- unit
if: always()
steps:
- name: Verify unit matrix passed
run: |
echo "unit=${{ needs.unit.result }}"
test "${{ needs.unit.result }}" = "success"
required:
name: test (linux)
runs-on: blacksmith-4vcpu-ubuntu-2404
needs:
- changes
- unit
- httpapi
- jetbrains
if: always()
steps:
- name: Verify upstream test jobs passed
run: |
echo "unit=${{ needs.unit.result }}"
echo "httpapi=${{ needs.httpapi.result }}"
echo "jetbrains=${{ needs.jetbrains.result }}"
test "${{ needs.unit.result }}" = "success"
if [ "${{ needs.changes.outputs.general }}" = "true" ]; then
test "${{ needs.httpapi.result }}" = "success"
else
test "${{ needs.httpapi.result }}" = "skipped"
fi
test "${{ needs.jetbrains.result }}" = "success"
# kilocode_change end

Some files were not shown because too many files have changed in this diff Show More