Repository navigation
Land Depot agents CLI 3/6: files and chat in attach (DEP-7264) - #616
Closed
robstolarz wants to merge 16 commits into
Closed
robstolarz wants to merge 16 commits into
robstolarz wants to merge 16 commits into
Conversation
The transcript prints above an input line that stays editable while output streams. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
`--file` (repeatable) on `session create` and `session send`, and `/file <path> [message]` in attach, hash each file locally, upload only the contents Depot does not already store, and send the attachments with the message. The size shows before upload, and a file over the server's limit is refused before anything is uploaded. The transcript names the sender of each user message and queued input, including people on connected services such as Slack, and lists attached files. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… upload Directories send the files git would track, so .gitignore applies; --stdin-file names piped input; media types are sniffed so piped images reach the model as images. Every path is checked against the server's count, per-file and total limits before anything uploads. DEP-7247 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…for every hash Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…input by what the message has left Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ashed, and fit names in 255 bytes Inside a work tree a git failure no longer falls back to a plain walk that would send ignored files. Each file is read once, so a file that changes mid-attach cannot upload under the wrong hash. Flattened names keep their tail and extension. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ders A send that fails after retries leaves attach unable to send while the bad file stays queued, so the chat drops the queue and says so. Subagent reports render as "name (subagent)" like other non-user senders. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ent notices Part of DEP-7247. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NdhqP6oGqJMRJLwBU5Zepm
Linux maps .log to text/x-log; macOS to text/plain. Part of DEP-7247. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NdhqP6oGqJMRJLwBU5Zepm
Matches the API's numbering. Part of DEP-7247. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NdhqP6oGqJMRJLwBU5Zepm
The system MIME table varies by machine and can label TypeScript as video/mp2t, so the extension is consulted only for bytes the sniffer cannot place. Part of DEP-7247. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NdhqP6oGqJMRJLwBU5Zepm
A .docx still sniffs as a zip and an .svg or .md as text, so the extension's type wins when it refines what the bytes say, and is ignored when it contradicts them. Part of DEP-7247. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NdhqP6oGqJMRJLwBU5Zepm
RTF and other text-based application formats sniff as text, so a text sniff now keeps the extension's type unless it names binary media. Part of DEP-7247. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NdhqP6oGqJMRJLwBU5Zepm
Go sniffs any MP4 container as video/mp4, so .m4a audio lost its type. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NdhqP6oGqJMRJLwBU5Zepm
Refs DEP-7264 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NdhqP6oGqJMRJLwBU5Zepm
This was referenced Oct 3, 2026
Contributor
Author
|
Superseded by #613 (single cli landing PR) |
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.


Sends files and directories to an agent (
session create --file/--stdin-file,/filein attach) and adds an interactive chat mode toattach. This PR lands approved #607 (head 741e8d3) as a--no-ffmerge ontorob/depot-agents-cli-land-02-hide, as part of the per-feature landing stack for DEP-7264. Review:git show --remerge-diff cef3d9bshows only what the merge changed beyond #607's approved diff.Stack
Test plan
go build ./...andgo test ./...pass at this tip, includingTestUploadAttachments*(limits, ignores, symlinks, stdin, unique names),TestAttachQueuesAFileForTheNextMessage,TestAttachCountsQueuedFilesAgainstTheLimit,TestAttachDropsQueuedFilesWhenASendIsRejected,TestAttachDoesNotSendAMessageWhoseFileFailed,TestMediaTypeTrustsTheBytesOverTheName,TestChatModel*,TestUniqueNameFitsTheNameLimit,TestRendererNamesSendersAndAttachmentsMerge resolutions
Clean merge; no conflicts.
🤖 Generated with Claude Code
https://claude.ai/code/session_01NdhqP6oGqJMRJLwBU5Zepm