feat(jetbrains): support prompt and transcript attachments - #11077
Merged
Conversation
# Conflicts: # packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/SessionUi.kt # packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/ui/SessionMessageListPanel.kt # packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/views/MessageView.kt # packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/views/TurnView.kt # packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/views/ViewFactory.kt
# Conflicts: # packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/SessionUi.kt # packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/controller/SessionController.kt # packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/ui/SessionMessageListPanel.kt # packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/views/MessageView.kt # packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/views/TurnView.kt # packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/views/ViewFactory.kt # packages/kilo-jetbrains/frontend/src/main/resources/messages/KiloBundle.properties # packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ui/PromptPanelTest.kt
…-backpack # Conflicts: # packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/views/MessageView.kt # packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/views/ViewFactory.kt # packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ui/SessionUiUpdateTest.kt
# Conflicts: # packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/controller/SessionController.kt # packages/kilo-jetbrains/frontend/src/main/resources/messages/KiloBundle.properties # packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ui/PromptPanelTest.kt
…-backpack # Conflicts: # packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/SessionUi.kt # packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/controller/SessionController.kt # packages/kilo-jetbrains/frontend/src/main/resources/messages/KiloBundle.properties # packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ui/PromptPanelTest.kt
kirillk
marked this pull request as ready for review
June 14, 2026 19:55
Contributor
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Previously Flagged Issues — Now Resolved
Files Reviewed (4 changed files)
Fix these issues in Kilo Cloud Reviewed by claude-4.6-sonnet-20260217 · 739,956 tokens Review guidance: REVIEW.md from base branch |
| return URLDecoder.decode(raw, StandardCharsets.UTF_8) | ||
| } | ||
| } | ||
| } |
Collaborator
There was a problem hiding this comment.
Should the attachment icons not be closer to the once we have in vscode?
Contributor
Author
There was a problem hiding this comment.
Could you pls clarify, I'm not sure I'm getting this. I will merge this one since there're other PRs piling and and will address it there.
marius-kilocode
approved these changes
Jun 15, 2026
t7tran
pushed a commit
to t7tran/kilocode
that referenced
this pull request
Aug 14, 2026
feat(jetbrains): support prompt and transcript attachments
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Issue
No linked issue. This is a JetBrains attachment UX follow-up branch.
Context
This adds first-class prompt and transcript attachment support to the JetBrains plugin so users can attach files/images, see those attachments in chat, and reopen embedded transcript attachments in Kilo-owned editor tabs.
Features introduced in this PR:
file:transcript attachments to normal workspace file opening.data:transcript attachments in Kilo editor tabs.partIddistinct by matching/opening with an attachment key.Implementation
Prompt attachments flow through the shared chat DTOs and session model, with prompt paste/drop handling, attachment cards, and model capability gating.
Transcript file parts render as attachment cards. Attachment clicks preserve the existing routing behavior for blank URLs, invalid URLs,
file:URLs, and browser URLs. Embeddeddata:attachments now open through a frontend-managedkilo://virtual filesystem instead of writing physical.kiloattachmentdescriptor files through backend RPC.The VFS compromise for this iteration is intentional: Kilo VFS identity is project-neutral and stable for de-duping tabs, but attachment tabs are not added to Recent Files and are not persisted across IDE restarts. That avoids stale launch-local/session-local attachment entries while preserving a reusable VFS/editor abstraction for future Kilo virtual file kinds.
The attachment editor remains independent from
SessionUi:SessionUionly opens a Kilo virtual file with self-describing params, while the editor owns CLI connection, retry UI, message lookup,attachmentKeymatching, and rendering. Backend descriptor-file handoff and backend placeholder editor registration were removed.Screenshots / Video
DnD to the prompt
Open from the session
How to Test
Manual/local verification
./gradlew :frontend:test --tests "ai.kilocode.client.session.ui.attachment.AttachmentEditorKindTest" --tests "ai.kilocode.client.app.KiloWorkspaceServiceTest"frompackages/kilo-jetbrains/passed../gradlew typecheckfrompackages/kilo-jetbrains/passed.bun turbo typecheckfrom repo root passed duringgit push.Reviewer test steps
file:transcript attachment and confirm it opens the workspace file.partIdbut have different content and confirm they open as distinct Kilo tabs.Blocked checks and substitute verification
Checklist
Get in Touch