Repository navigation
Add session-owned file attachments and require remote protocol 7 - #1290
Merged
Merged
Conversation
AnthonyRonning
force-pushed
the
codex-agent-files-maple
branch
from
October 26, 2026 04:52
fe495f1 to
cddf1c0
Compare
AnthonyRonning
marked this pull request as ready for review
October 26, 2026 07:30
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.
What changes
Agent attachments make stable, session-owned copies on the execution computer. Documents, source files and ZIPs can be attached alongside images through the picker or drag/drop. The model receives an execution-side path for ordinary files; native vision and
read_imagecontinue to work. Archives are not extracted automatically.Payloads live in one file store beside the database. SQLite retains metadata, ownership and references. Session/account deletion and store reset revoke access and retry filesystem cleanup; compaction preserves attachments. Controller drafts have separate bounded staging and cleanup. Files and images are plaintext at rest, including when the conversation database is password-protected.
Remote uploads use dedicated bounded Iroh streams, operation IDs and status/cancel requests. Sends retain the durable receipt/no-replay contract. Generic files are capped at 30 MiB, uploaded images at 10 MiB, and each send at ten attachments. Upload progress is separate from prompt admission: Stop and text steering remain usable, completed uploads wait for outstanding receipts/history recovery, and failed preparation retains accepted input in order.
Names normalize idempotently before persistence, pending quotas are per account, and cleanup uses ownership/IDs independently of display metadata. Ordinary owned read-only directories/files are handled without following links or changing external targets. Failed cleanup candidates cannot starve other sessions. Exceptional ACL, immutable-file or ownership failures remain explicit; incomplete erasure is never reported as successful.
Compatibility and existing data
Validation
The latest focused follow-up fixes the Windows migration fixture's absolute path, the ACP first-load/history-notification race, brief history-preparation contention, and cleanup of owned attachment roots whose modes were widened by archive extraction. No attachment protocol or product-scope change.
Further draft-recovery UX is explicitly deferred: restoring a cancelled upload into an occupied composer, preserving drafts across terminal reconnect/view replacement, and making pending-send status easier to retry are not addressed by this follow-up. Durable receipts still prevent automatic prompt replay.
Current candidate:
d5244d23; rebase baseline remains master9f185101.MAPLE_HOOK_FULL=1pre-commitjust cipassed: 758 runtime/store, 1,009 desktop and 307 headless tests, remaining workspace suites, all four Clippy configurations, formatting, documentation and Git-metadata checks. Existing ignores remain.fe495f12Local/forced-public-relay probes passed six filename/retry cases per path, read-only cleanup with external symlink targets preserved, a 19,922,960-byte round trip, status/cancellation/session isolation, original-receipt recovery with one user row, and actual model text/ZIP/image access. A cold vision side question read its saved image after daemon restart and before opening task history. Pending deletion drained on normal startup. The runtime, storage, transport and upload-state paths tested by those probes are unchanged by the rebase.cddf1c03source tree passed cold reopen, TXT/ZIP/PNG selection together through the OS picker, draft/transcript rendering, a new attachment send with Stop available, and explicit plaintext-storage wording. Its isolated application and daemon were quit afterward.d5244d23passed new pairing, local and forced-public-relay TXT/ZIP/PNG upload/readback, actual GLM-5.3 Flash text/ZIP/image access, and original-receipt recovery with one user row. A further native OS-picker send selected all three file types and rendered the acknowledgment in both controller and executor windows. The isolated pair is left running for the owner's manual test.All live checks are same-machine Local development evidence. Installed production applications and user sessions are untouched. Physical-device testing and a genuine signed wire-6-to-wire-7 upgrade rehearsal remain separate release work. No release or production installation is part of this PR.
Need help on this PR? Tag
@codesmith-botwith what you need.