feat(attachments): add remote CLI file delivery - #12747
Conversation
Code Review SummaryStatus: 1 Issue Found | Recommendation: Address before merge Overview
Issue Details (click to expand)SUGGESTION
Files Reviewed (1 file changed since last review)
Resolved since the previous review: Notes / assumptions: The only PR-owned commit since Fix these issues in Kilo Cloud Previous Review Summaries (5 snapshots, latest commit 518be2a)Current summary above is authoritative. Previous snapshots are kept for context only. Previous review (commit 518be2a)Status: 3 Issues Found | Recommendation: Address before merge Overview
Issue Details (click to expand)WARNING
SUGGESTION
Files Reviewed (2 files changed since last review)
Resolved since the previous review: the blanket Author-declined (not re-raised): the 20 MiB per-attachment cap and 60s timeout in Notes / assumptions: Fix these issues in Kilo Cloud Previous review (commit 7620632)Status: 8 Issues Found | Recommendation: Address before merge Overview
Issue Details (click to expand)WARNING
SUGGESTION
Files Reviewed (4 files changed since last review)
Resolved since the previous review: the non-image replay into model context ( Notes / assumptions: carried-forward findings were re-verified against current HEAD ( Fix these issues in Kilo Cloud Previous review (commit a2b8605)Status: 6 Issues Found | Recommendation: Address before merge Overview
Issue Details (click to expand)WARNING
SUGGESTION
Files Reviewed (2 files changed since last review)
Notes / assumptions: the incremental diff since Fix these issues in Kilo Cloud Previous review (commit d0ab34a)Status: 6 Issues Found | Recommendation: Address before merge Overview
Issue Details (click to expand)WARNING
SUGGESTION
Resolved since the previous review
Files Reviewed (12 files)
Notes / assumptions: the new Fix these issues in Kilo Cloud Previous review (commit d89bb4f)Status: 10 Issues Found | Recommendation: Address before merge Overview
Issue Details (click to expand)CRITICAL
WARNING
SUGGESTION
Files Reviewed (10 files)
Notes / assumptions: cloud-side caps referenced in the Reviewed by claude-opus-5 · Input: 32 · Output: 7.1K · Cached: 898.9K Review guidance: REVIEW.md from base branch |
|
(bot) BLOCKED: required paired iOS bot-E2E could not complete. The locally built current-branch CLI and remote relay were live, its TUI proved Auto Efficient Kilo Gateway, and the mobile remote session was writable; however the mobile accessibility tree did not expose the required Auto Efficient model control. After the capped verifier attempts and direct takeover, sending a real prompt without that required observable assertion would violate the E2E contract. All E2E resources and the slot were released. Full evidence is retained in the workflow scratch final report. |
|
(bot) BLOCKED: required bot E2E cannot complete. A fresh direct iOS phase used the branch-built CLI, confirmed the CLI TUI header |
* fix(cli): clarify remote binary attachment notice * feat(cli): add remote send_file tool * docs(mobile): explain remote session attachments * fix(cli): keep delivered files out of model context * fix(cli): mark delivery filter as kilocode change * fix(cli): preserve delivered image files * test(cli): narrow delivery attachment state * fix(send-file): preserve filesystem failures * test(send-file): assert propagated file read error
What
send_filetool for one local file delivery to the Kilo mobile app.Why
Phone attachments need 20 MiB inbound support. A remote CLI needs a bounded file delivery path back to the phone.
How
send_fileuses the tool-attachment transport, read-style authorization, MIME sniffing, basename filename, and a 4 MiB cap.Verification
0.0.0-attachments-cli-f31a-202608021745; IOS-1 pass, IOS-2 pass, IOS-3 pass, IOS-4 pass, IOS-5 pass through the planned unit-only fallback.send_file; the real model delivereddelivery.txt; the mobile app rendered and shared the file chip.send-filetest passed.packages/opencodetypecheck passed.bun run lintcompleted with existing repository warnings and no errors.The native share sheet opens from that chip with the delivered MIME type. Sheet opens for the chip, chip shows the MIME, and the named unit test asserts the forwarded
mimeType. iOS never renders a MIME string in the sheet, so this is the full bar. Do not invent UI MIME text.AC7 (unavailable row) is covered by unit tests, not by this E2E run: on cold open the delivered part returned a non-empty attachment URL, so the empty state was not reachable without faking it. Coverage:
apps/mobile/src/components/agents/tool-card-image-cache.test.ts(cache miss leaves no URI, which is the condition the row renders on) and theFileChipunavailable branch inapps/mobile/src/components/agents/tool-card-file-attachments.tsx:28-36.Visual Changes
N/A