The annotation CI check requires all diff lines in shared opencode
files to be inside kilocode_change marker blocks. Move the start
marker above the modified comment so every changed line is covered.
Add kilocode_change markers to the Bedrock Claude condition in
transform.ts to ease upstream merges. Move the bedrock-specific
tests to test/kilocode/ so the shared transform.test.ts stays
closer to upstream and reduces merge conflicts.
- Add runtime check to reject mode=primary agents from being used as subagents
- Add kilocode_change markers to the unconditional task deny block and task:false tool override
- Add kilocode_change markers around the primary agent mode check
Remove the allowsTask conditional that let subagents spawn further
subagents when their merged permissions contained task: allow. This
closes the infinite recursion hole where agents could create unbounded
chains of child sessions (e.g. via user config or cross-agent loops).
The task tool is now always denied in subagent sessions and always
removed from the LLM tool list, regardless of agent permissions.
Primary agents are unaffected — they retain full task tool access.
Fixes#8637
Pass -Djava.import.generatesMetadataFilesAtProjectRoot=false as a JVM
system property when spawning JDTLS. This tells JDTLS to store metadata
files (.classpath, .project, .settings/) in its workspace data directory
instead of polluting the user's project root.
Fixes#8621
Move the /allow-everything endpoint from the shared permission routes
into packages/opencode/src/kilocode/permission/routes.ts to reduce diff
with upstream and ease future merges.
The CI base SHA differs from local main, causing additional lines
in formatSessionJSON to be flagged. Wrapping the entire function
in a block annotation covers all possible diff boundaries.
Add kilocode_change markers to all Kilo-specific changes in shared
opencode files to pass the check-opencode-annotations CI check.
Also bring in the workflow and script from main.
Instead of path.basename(session.directory) which shows the working
directory name (e.g. 'opencode' for sessions in packages/opencode/),
resolve the actual worktree root by matching against WorktreeFamily.list()
directories. This shows the correct worktree folder name (e.g. 'kilocode',
'cross-session-conflict') matching git worktree list output.
Show all worktree sessions by default with directory basename labels.
ctrl+a toggles to current worktree only. Uses experimental endpoint
exclusively — no shared OpenCode code changes.
The /local-review command used git diff base...HEAD (triple-dot) which only
captured committed changes. The diff viewer uses merge-base + two-dot diff
against the working tree. This mismatch caused /local-review to show
'nothing to review' when changes were uncommitted.
Now computes merge-base explicitly and diffs the working tree against it,
matching WorktreeDiff behavior. Also includes untracked files.